Esempio n. 1
0
    def __init__(self, setting_widget=None):
        gtk.VBox.__init__(self, False)
        self.setting_widget = setting_widget
        self.wrong_keys = []    # a list of not valid values

        scw = gtk.ScrolledWindow()
        scw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)

        self.sw_vbox = gtk.VBox(False)
        self.sw_vbox.set_border_width(5)
        # due to scrolled window sw_vbox must not be empty
        # the label will be removed
        self.sw_vbox.pack_start(gtk.Label())
        scw.add_with_viewport(self.sw_vbox)
        self.sw_vbox.show()
        self.pack_start(scw, True, True)
        scw.show()

        self.label_msg = gtk.Label()
        self.infobar = gtk.InfoBar()
        self.infobar.set_message_type(gtk.MESSAGE_WARNING)
        self.infobar.get_content_area().add(self.label_msg)
        self.pack_start(self.infobar, False, False)

        self.set_setting_widget(self.setting_widget)
Esempio n. 2
0
  def __init__(self, selected_account=None, condition=None, message=None):
    self.selected_account = selected_account
    self.condition = condition
    self.message = message
    self.gwibber = GwibberPublic()
    self.services = json.loads(self.gwibber.GetServices())
    self.ui = gtk.Builder()
    self.ui.set_translation_domain("gwibber")
    self.ui.add_from_file(resources.get_ui_asset("gwibber-accounts-dialog.ui"))
    self.ui.connect_signals(self)

    dialog = self.ui.get_object("accounts_dialog")
    dialog.resize(640,400)
    dialog.set_icon_from_file(resources.get_ui_asset("gwibber.svg"))
    dialog.show_all()
    if hasattr(gtk, "InfoBar"):
      self.alignment_infobar = self.ui.get_object("alignment_infobar")
      self.infobar = gtk.InfoBar()
      self.alignment_infobar.add(self.infobar)
      self.infobar.hide()

    # Hide the help button until we have help :)
    button_help = self.ui.get_object("button_help")
    button_help.hide()

    # This should check for configured accounts, and if there are any hide this
    self.ui.get_object('frame_new_account').hide()
    self.ui.get_object('vbox_save').hide()
    self.ui.get_object('vbox_create').hide()
    
    self.setup_account_tree()
    self.populate_account_tree()
    self.select_account()
Esempio n. 3
0
    def register_thread_with_dialog (self, description, thread):
        threadbox = gtk.InfoBar()
        threadbox.set_message_type(gtk.MESSAGE_INFO)
        pb = gtk.ProgressBar()
        pb.set_ellipsize(pango.ELLIPSIZE_MIDDLE)
        pause_button = gtk.ToggleButton(label=_('Pause'))
        threadbox.add_action_widget(pause_button, self.PAUSE)
        dlab = gtk.Label(description)
        dlab.set_ellipsize(pango.ELLIPSIZE_MIDDLE)
        cancel_button = threadbox.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
        vbox = gtk.VBox()
        vbox.pack_start(dlab, expand=True, fill=True)
        vbox.pack_start(pb, expand=True, fill=True)
        threadbox.get_content_area().add(vbox)
        threadbox.show_all()
        self.messagebox.pack_start(threadbox)
        self.messagebox.show()

        #for b in threadbox.buttons: b.show()
        thread.connect('completed',self.thread_done,threadbox)
        thread.connect('error',self.thread_error,threadbox)
        thread.connect('stopped',self.thread_stopped,threadbox)
        thread.connect('pause',self.thread_pause,threadbox)
        thread.connect('resume',self.thread_resume,threadbox)
        thread.connect('progress',self.progress_update,pb)
        pause_button.connect('clicked',self.pause_cb,thread)
        cancel_button.connect('clicked',self.cancel_cb,thread)
Esempio n. 4
0
    def add_info_bar(self, message_type, label, action_widget=None):
        """Show an information bar to the user.

        :param message_type: message type, a gtk.MessageType
        :param label: label to display
        :param action_widget: optional, most likely a button
        :returns: the infobar
        """
        label = gtk.Label(label)
        label.set_use_markup(True)
        label.set_line_wrap(True)
        label.set_width_chars(100)
        label.set_alignment(0, 0)
        label.set_padding(12, 0)
        label.show()

        infobar = gtk.InfoBar()
        infobar.get_content_area().add(label)
        if action_widget:
            infobar.add_action_widget(action_widget, 0)
            action_widget.show()
        infobar.set_message_type(message_type)
        infobar.show()

        self.main_vbox.pack_start(infobar, False, False, 0)
        self.main_vbox.reorder_child(infobar, 2)

        return infobar
Esempio n. 5
0
    def __init__(self, parent=None):
        gtk.Window.__init__(self)
        try:
            self.set_screen(parent.get_screen())
        except AttributeError:
            self.connect('destroy', lambda *w: gtk.main_quit())

        self.set_title(self.__class__.__name__)
        self.set_default_size(500, 250)
        self.set_icon_from_file(ICON_IMAGE)
        self.set_geometry_hints(min_width=100, min_height=100)
        rootbox = gtk.VBox()
        self.add(rootbox)
        #region TextView
        textview = gtk.TextView()
        textbuffer = textview.get_buffer()
        textbuffer.set_text(text)
        textview.set_wrap_mode(gtk.WRAP_WORD)
        #endregion
        line_count = textbuffer.get_line_count()
        char_count = textbuffer.get_char_count()
        Label_text = "Lines: " + str(line_count) + ", Chars: " + str(
            char_count)
        rootbox.pack_start(textview)
        status_bar = gtk.InfoBar()
        rootbox.pack_start(status_bar, False, False)
        status_bar.set_message_type(gtk.MESSAGE_INFO)
        status_bar.get_content_area().pack_start(gtk.Label(Label_text), False,
                                                 False)
        iter = textbuffer.get_iter_at_line(2)
        textbuffer.place_cursor(iter)
        self.show_all()
Esempio n. 6
0
    def create_info_bar(self):
        self.info_label = gtk.Label()

        self.info_bar = gtk.InfoBar()
        self.info_bar.get_content_area().pack_start(self.info_label, False,
                                                    False)
        self.info_bar.add_button(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)
        self.info_bar.connect('response', lambda i, r: i.hide())
Esempio n. 7
0
    def __init__(self, parent=None):
        gtk.Window.__init__(self)
        try:
            self.set_screen(parent.get_screen())
        except AttributeError:
            self.connect('destroy', lambda *w: gtk.main_quit())

        self.set_title(self.__class__.__name__)
        self.set_default_size(500, 250)
        self.set_icon_from_file(ICON_IMAGE)
        self.set_geometry_hints(min_width=100, min_height=100)
        rootbox = gtk.VBox()
        self.add(rootbox)
        #region TextView
        textview = gtk.TextView()
        textbuffer = textview.get_buffer()
        textbuffer.set_text(text)
        textview.set_wrap_mode(gtk.WRAP_WORD)
        #endregion
        line_count = textbuffer.get_line_count()
        char_count = textbuffer.get_char_count()

        iter = textbuffer.get_iter_at_line(2)
        textbuffer.place_cursor(iter)

        table = textbuffer.get_tag_table()
        tag_red = gtk.TextTag(name="red")
        tag_red.set_property("foreground", "red")
        table.add(tag_red)

        tag_blue = gtk.TextTag(name="blue")
        tag_blue.set_property("foreground", "blue")
        table.add(tag_blue)

        tag_green = gtk.TextTag(name="green")
        tag_green.set_property("foreground", "green")
        table.add(tag_green)

        size = table.get_size()

        start, end = textbuffer.get_bounds()
        textbuffer.apply_tag(tag_red, start, end)

        Label_text = "Table contains: " + str(size) + " Tags"
        rootbox.pack_start(textview)
        status_bar = gtk.InfoBar()
        rootbox.pack_start(status_bar, False, False)
        status_bar.set_message_type(gtk.MESSAGE_INFO)
        status_bar.get_content_area().pack_start(gtk.Label(Label_text), False,
                                                 False)
        tagtable = textbuffer.props.tag_table

        def foreach_func(tag, data):
            print tag.props.name

        tagtable.foreach(foreach_func, None)

        self.show_all()
Esempio n. 8
0
 def show(self, label=None):
     if label:
         messagebox = self.ui.get_object('messagebox')
         l = gtk.Label(label)
         l.set_line_wrap(True)
         infobar = gtk.InfoBar()
         infobar.set_message_type(gtk.MESSAGE_INFO)
         infobar.get_content_area().add(l)
         infobar.show_all()
         messagebox.pack_start(infobar, True, False)
     self.ui.get_object('window1').show()
Esempio n. 9
0
 def _add_info_box(self):
     self.__infobar = gtk.InfoBar()
     self.__infobar.set_size_request(-1, 32)
     self.__warning_label = gtk.Label()
     self.__warning_label.set_size_request(400, -1)
     self.__warning_label.set_line_wrap(True)
     self.__warning_label.set_alignment(0.0, 0.0)
     self.__warning_image = gtk.Image()
     content = self.__infobar.get_content_area()
     content.pack_start(self.__warning_image, False, False)
     content.pack_start(self.__warning_label, True, True)
     self.__info_box_area.pack_start(self.__infobar, False, False)
     self.__infobar.hide_all()
Esempio n. 10
0
    def addInfoBar(self, text):
        info_bar = gtk.InfoBar()

        label = gtk.Label()
        label.set_padding(PADDING, PADDING)
        label.set_line_wrap(True)
        label.set_line_wrap_mode(pango.WRAP_WORD)
        label.set_justify(gtk.JUSTIFY_CENTER)
        label.set_markup(text)

        info_bar.add(label)
        self.info_bar_box.pack_start(info_bar, expand=False, fill=False)

        return label, info_bar
Esempio n. 11
0
    def notification_thread_done(self, thread, message):
        infobox = gtk.InfoBar()
        infobox.set_message_type(gtk.MESSAGE_INFO)
        infobox.add_button(gtk.STOCK_DISCARD, gtk.RESPONSE_CLOSE)
        infobox.connect('response', lambda ib, response_id: ib.hide())
        infobox.show_all()
        self.messagebox.pack_start(infobox)

        from gourmet.gglobals import launch_url
        l = gtk.Label()
        l.set_markup(message)
        l.connect('activate-link',lambda lbl, uri: launch_url(uri))
        l.show()
        infobox.get_content_area().add(l)
        self.messagebox.show()
    def on_grammer_changed(self, buffer, data=None):
        print 'TODO: show infobar'
        #self.reload_grammer()
        if not self.grammer_changed:
            self.grammer_changed = True
            self.infobar = gtk.InfoBar()
            self.infobar.add_button(gtk.STOCK_REFRESH, gtk.RESPONSE_OK)
            self.infobar.set_message_type(
                gtk.MESSAGE_WARNING)  #FIXME: is this needed?
            self.infobar_set_text_and_icon(
                self.infobar, gtk.STOCK_REFRESH, 'Grammer Changed',
                'TreeView & GrammerView needs refresh')
            self.vboxGrammer.pack_start(self.infobar, False, False, 0)

            self.infobar.connect("response", self.do_reload_grammer)
            self.vboxGrammer.show_all()
Esempio n. 13
0
    def __create_macro_info_bar(self):
        """
        Creates a component for display information about the current 
        macro, such as conflicts. The component is added to a placeholder in
        the Glade file
        """
        self.__macro_infobar = gtk.InfoBar()
        self.__macro_infobar.set_size_request(-1, -1)
        self.__macro_warning_label = gtk.Label()
        self.__macro_warning_label.set_line_wrap(True)
        self.__macro_warning_label.set_width_chars(60)
        content = self.__macro_infobar.get_content_area()
        content.pack_start(self.__macro_warning_label, True, True)

        self.__macro_warning_box.pack_start(self.__macro_infobar, True, True)
        self.__macro_infobar.set_visible(False)
Esempio n. 14
0
    def show_error(self, message1, message2):

        bar = gtk.InfoBar()
        bar.props.message_type = gtk.MESSAGE_ERROR
        box = bar.get_content_area()

        markup = "<b>%s</b> %s" % (
            glib.markup_escape_text(message1),
            glib.markup_escape_text(message2),
        )
        label = gtk.Label()
        label.props.use_markup = True
        label.props.label = markup
        label.props.selectable = True
        box.pack_start(label, False, False, 0)

        self.show_info(bar)
Esempio n. 15
0
 def initialize_network(self):
     self.upnpc = Upnp_client()
     if self.upnpc.is_ip6():
         self.write2log('IPv6 detected!')
         self.write2log('IP: ' + self.upnpc.local_ip)
     else:
         self.write2log('Local IP: ' + self.upnpc.local_ip)
         self.write2log('External IP: ' + self.upnpc.external_ip)
         if self.upnpc.is_working():
             self.write2log('UPnP support working!')
         else:
             self.write2log('UPnP support not working!')
     values = {
         'version': self.PYSTREAM_VERSION,
         'machine': platform.uname(),
         'upnp': self.upnpc.is_working()
     }
     self.write2log("Sending hello...")
     try:
         data = urllib.urlencode(values)
         response = urllib2.urlopen(self.PYSTREAM_URL + '/api/hello',
                                    data,
                                    timeout=5)
         resp_code = response.getcode()
         if resp_code == 200:
             lines = response.read().splitlines()
             if lines:
                 if lines[0] == 'Bad version!':
                     self.write2log("Bad version!")
                     lb_update = gtk.LinkButton(
                         self.PYSTREAM_URL + '/download',
                         label='Download a new version!')
                     lb_update.show()
                     infobar = gtk.InfoBar()
                     infobar.get_content_area().add(lb_update)
                     infobar.show()
                     self.vbox1.pack_start(infobar, False)
                     self.b_start.set_sensitive(False)
             else:
                 self.write2log("Hello!")
                 self.cb_visibility.set_active(0)
         else:
             self.write2log("Error: " + str(resp_code))
     except urllib2.HTTPError, e:
         self.write2log('Response code: ' + str(e.code))
Esempio n. 16
0
    def __init__(self, window, title=""):

        bar = gtk.InfoBar()
        bar.props.message_type = gtk.MESSAGE_INFO
        bar.connect("response", self.__handle_info_bar_response)
        bar.add_button(gtk.STOCK_CANCEL, 1)
        area_box = bar.get_content_area()
        box = gtk.HBox(spacing=8)

        box.pack_start(gtk.Label(title), False, False, 0)

        progress = gtk.ProgressBar()
        box.pack_start(progress, False, False, 0)

        area_box.pack_start(box, False, False, 0)

        self.widget = bar
        self.__progress_bar = progress
Esempio n. 17
0
    def infobar(self, id, filename=None, customtext=None):
        """Popup a new auto-hiding InfoBar."""

        # CB for destroy timeout
        def destroy_ibar():
            self.ibar_timeout = 0
            self.ibar.destroy()
            self.window.resize(1, 1)

        # If infobar already active: delete old timeout, destroy old ibar
        if self.ibar_timeout > 0:
            glib.source_remove(self.ibar_timeout)
            destroy_ibar()

        # Find the needed dictionary inside our message dict, by id
        MSG = MESSAGE_DICT[id]
        # Use value from MSG type & icon to lookup Gtk constant, e.g. gtk.MESSAGE_INFO
        msgtype = cfg.MSGTYPES[MSG['type']]
        imgtype = cfg.IMGTYPES[MSG['icon']]
        # Replace variables in message text & change text color
        message = ("<span foreground='#2E2E2E'>" + MSG['text'].format(
            filename=filename, customtext=customtext) + "</span>")

        # Now that we have all the data we need, START creating!
        self.ibar = gtk.InfoBar()
        self.ibar.set_message_type(msgtype)
        self.vbox_ib.pack_end(self.ibar, False, False)
        img = gtk.Image()
        img.set_from_stock(imgtype, gtk.ICON_SIZE_LARGE_TOOLBAR)
        label = gtk.Label()
        label.set_markup(message)
        content = self.ibar.get_content_area()
        content.pack_start(img, False, False)
        content.pack_start(label, False, False)
        img.show()
        label.show()
        self.ibar.show()
        self.ibar_timeout = glib.timeout_add_seconds(MSG['timeout'],
                                                     destroy_ibar)
Esempio n. 18
0
 def gui_start_button(self, widget, data=False):
     self.b_start.set_sensitive(False)
     self.fcb_folder.set_sensitive(False)
     self.sb_port.set_sensitive(False)
     self.cb_visibility.set_sensitive(False)
     if self.is_stream_lan_only():
         self.lb_lan.set_uri('http://' + self.upnpc.local_ip + ':' +
                             str(int(self.sb_port.get_value())))
         self.lb_lan.set_label('http://' + self.upnpc.local_ip + ':' +
                               str(int(self.sb_port.get_value())))
         self.lb_lan.set_sensitive(True)
         thread.start_new_thread(self.run_webserver, ())
         self.write2log('Serving...')
     else:
         thread.start_new_thread(self.run_webserver, ())
         self.upnpc.add_port_mapping(int(self.sb_port.get_value()))
         self.write2log('Serving...')
         if self.new_stream(self.fcb_folder.get_filename()):
             self.lb_online.set_uri(self.PYSTREAM_URL + self.stream_link)
             self.lb_online.set_label(self.PYSTREAM_URL + self.stream_link)
             self.lb_online.set_sensitive(True)
             self.lb_lan.set_uri('http://' + self.upnpc.local_ip + ':' +
                                 str(int(self.sb_port.get_value())))
             self.lb_lan.set_label('http://' + self.upnpc.local_ip + ':' +
                                   str(int(self.sb_port.get_value())))
             self.lb_lan.set_sensitive(True)
             # edition password
             label = gtk.Label('Edition password: ' + self.stream_edit_pass)
             label.show()
             infobar = gtk.InfoBar()
             infobar.show()
             infobar.get_content_area().add(label)
             self.vbox1.pack_start(infobar, False)
             # adding files and more info to stream
             thread.start_new_thread(self.add_files_background, ())
             # adding send_alive work
             gobject.timeout_add_seconds(600, self.send_alive)
Esempio n. 19
0
    def __init__(self, instance, uiman):
        gtk.VBox.__init__(self)
        Loggable.__init__(self)

        self.app = instance
        self.settings = instance.settings
        self._errors = []

        # Store
        # icon, infotext, objectfactory, uri, length
        self.storemodel = gtk.ListStore(gtk.gdk.Pixbuf, gtk.gdk.Pixbuf, str,
                                        object, str, str, str, str)

        # Scrolled Windows
        self.treeview_scrollwin = gtk.ScrolledWindow()
        self.treeview_scrollwin.set_policy(gtk.POLICY_NEVER,
                                           gtk.POLICY_AUTOMATIC)
        self.treeview_scrollwin.set_shadow_type(gtk.SHADOW_ETCHED_IN)

        self.iconview_scrollwin = gtk.ScrolledWindow()
        self.iconview_scrollwin.set_policy(gtk.POLICY_AUTOMATIC,
                                           gtk.POLICY_AUTOMATIC)
        self.iconview_scrollwin.set_shadow_type(gtk.SHADOW_ETCHED_IN)

        # Popup Menu
        self.popup = gtk.Menu()
        self.popup_importitem = gtk.ImageMenuItem(_("Import Files..."))
        image = gtk.Image()
        image.set_from_stock(gtk.STOCK_ADD, gtk.ICON_SIZE_MENU)
        self.popup_importitem.set_image(image)

        self.popup_remitem = gtk.ImageMenuItem(_("Remove Clip"))
        image = gtk.Image()
        image.set_from_stock(gtk.STOCK_REMOVE, gtk.ICON_SIZE_MENU)
        self.popup_remitem.set_image(image)
        self.popup_playmenuitem = gtk.MenuItem(_("Play Clip"))
        self.popup_importitem.connect("activate", self._importButtonClickedCb)
        self.popup_remitem.connect("activate", self._removeButtonClickedCb)
        self.popup_playmenuitem.connect("activate", self._playButtonClickedCb)
        self.popup_importitem.show()
        self.popup_remitem.show()
        self.popup_playmenuitem.show()
        self.popup.append(self.popup_importitem)
        self.popup.append(self.popup_remitem)
        self.popup.append(self.popup_playmenuitem)

        # import sources dialogbox
        self._importDialog = None

        # Search/filter box
        self.search_hbox = gtk.HBox()
        self.search_hbox.set_spacing(SPACING)
        self.search_hbox.set_border_width(
            3)  # Prevents being flush against the notebook
        searchLabel = gtk.Label(_("Search:"))
        searchEntry = gtk.Entry()
        searchEntry.set_icon_from_stock(gtk.ENTRY_ICON_SECONDARY, "gtk-clear")
        searchEntry.connect("changed", self.searchEntryChangedCb)
        searchEntry.connect("button-press-event", self.searchEntryActivateCb)
        searchEntry.connect("focus-out-event", self.searchEntryDeactivateCb)
        searchEntry.connect("icon-press", self.searchEntryIconClickedCb)
        self.search_hbox.pack_start(searchLabel, expand=False)
        self.search_hbox.pack_end(searchEntry, expand=True)
        # Filtering model for the search box.
        # Use this instead of using self.storemodel directly
        self.modelFilter = self.storemodel.filter_new()
        self.modelFilter.set_visible_func(self._setRowVisible,
                                          data=searchEntry)

        # TreeView
        # Displays icon, name, type, length
        self.treeview = gtk.TreeView(self.modelFilter)
        self.treeview_scrollwin.add(self.treeview)
        self.treeview.connect("button-press-event",
                              self._treeViewButtonPressEventCb)
        self.treeview.connect("row-activated", self._rowActivatedCb)
        self.treeview.set_property("rules_hint", True)
        self.treeview.set_headers_visible(False)
        self.treeview.set_property("search_column", COL_SEARCH_TEXT)
        tsel = self.treeview.get_selection()
        tsel.set_mode(gtk.SELECTION_MULTIPLE)
        tsel.connect("changed", self._viewSelectionChangedCb)

        pixbufcol = gtk.TreeViewColumn(_("Icon"))
        pixbufcol.set_expand(False)
        pixbufcol.set_spacing(SPACING)
        self.treeview.append_column(pixbufcol)
        pixcell = gtk.CellRendererPixbuf()
        pixcell.props.xpad = 6
        pixbufcol.pack_start(pixcell)
        pixbufcol.add_attribute(pixcell, 'pixbuf', COL_ICON)

        namecol = gtk.TreeViewColumn(_("Information"))
        self.treeview.append_column(namecol)
        namecol.set_expand(True)
        namecol.set_spacing(SPACING)
        namecol.set_sizing(gtk.TREE_VIEW_COLUMN_GROW_ONLY)
        namecol.set_min_width(150)
        txtcell = gtk.CellRendererText()
        txtcell.set_property("ellipsize", pango.ELLIPSIZE_END)
        namecol.pack_start(txtcell)
        namecol.add_attribute(txtcell, "markup", COL_INFOTEXT)

        namecol = gtk.TreeViewColumn(_("Duration"))
        namecol.set_expand(False)
        self.treeview.append_column(namecol)
        txtcell = gtk.CellRendererText()
        txtcell.set_property("yalign", 0.0)
        namecol.pack_start(txtcell)
        namecol.add_attribute(txtcell, "markup", COL_LENGTH)

        # IconView
        self.iconview = gtk.IconView(self.modelFilter)
        self.iconview_scrollwin.add(self.iconview)
        self.iconview.connect("button-press-event",
                              self._iconViewButtonPressEventCb)
        self.iconview.connect("selection-changed",
                              self._viewSelectionChangedCb)
        self.iconview.set_orientation(gtk.ORIENTATION_VERTICAL)
        self.iconview.set_property("has_tooltip", True)
        self.iconview.set_tooltip_column(COL_INFOTEXT)
        self.iconview.set_text_column(COL_SHORT_TEXT)
        self.iconview.set_pixbuf_column(COL_ICON_LARGE)
        self.iconview.set_selection_mode(gtk.SELECTION_MULTIPLE)
        self.iconview.set_item_width(106)

        # Explanatory message InfoBar
        self.infobar = gtk.InfoBar()

        txtlabel = gtk.Label()
        txtlabel.set_padding(PADDING, PADDING)
        txtlabel.set_line_wrap(True)
        txtlabel.set_line_wrap_mode(pango.WRAP_WORD)
        txtlabel.set_justify(gtk.JUSTIFY_CENTER)
        txtlabel.set_text(
            _('Add media to your project by dragging files and folders here or '
              'by using the "Import Files..." button.'))
        self.infobar.add(txtlabel)
        self.txtlabel = txtlabel

        # The infobar that shows up if there are _errors when importing clips
        self._import_warning_infobar = gtk.InfoBar()
        self._import_warning_infobar.set_message_type(gtk.MESSAGE_WARNING)
        content_area = self._import_warning_infobar.get_content_area()
        actions_area = self._import_warning_infobar.get_action_area()
        self._warning_label = gtk.Label()
        self._warning_label.set_line_wrap(True)
        self._warning_label.set_line_wrap_mode(pango.WRAP_WORD)
        self._warning_label.set_justify(gtk.JUSTIFY_CENTER)
        self._view_error_btn = gtk.Button()
        self._hide_infobar_btn = gtk.Button()
        self._hide_infobar_btn.set_label(_("Hide"))
        self._view_error_btn.connect("clicked",
                                     self._viewErrorsButtonClickedCb)
        self._hide_infobar_btn.connect("clicked", self._hideInfoBarClickedCb)
        content_area.add(self._warning_label)
        actions_area.add(self._view_error_btn)
        actions_area.add(self._hide_infobar_btn)

        # The _progressbar that shows up when importing clips
        self._progressbar = gtk.ProgressBar()

        # Connect to project.  We must remove and reset the callbacks when
        # changing project.
        self.project_signals = SignalGroup()
        self.app.connect("new-project-created", self._newProjectCreatedCb)
        self.app.connect("new-project-loaded", self._newProjectLoadedCb)
        self.app.connect("new-project-failed", self._newProjectFailedCb)

        # default pixbufs
        self.audiofilepixbuf = self._getIcon("audio-x-generic",
                                             "pitivi-sound.png")
        self.videofilepixbuf = self._getIcon("video-x-generic",
                                             "pitivi-video.png")

        # Drag and Drop
        self.drag_dest_set(gtk.DEST_DEFAULT_DROP | gtk.DEST_DEFAULT_MOTION,
                           [dnd.URI_TUPLE, dnd.FILE_TUPLE],
                           gtk.gdk.ACTION_COPY)
        self.connect("drag_data_received", self._dndDataReceivedCb)

        self.treeview.drag_source_set(0, [], gtk.gdk.ACTION_COPY)
        self.treeview.connect("motion-notify-event",
                              self._treeViewMotionNotifyEventCb)
        self.treeview.connect("button-release-event",
                              self._treeViewButtonReleaseCb)
        self.treeview.connect("drag_begin", self._dndDragBeginCb)
        self.treeview.connect("drag_data_get", self._dndDataGetCb)

        self.iconview.drag_source_set(0, [], gtk.gdk.ACTION_COPY)
        self.iconview.connect("motion-notify-event",
                              self._iconViewMotionNotifyEventCb)
        self.iconview.connect("button-release-event",
                              self._iconViewButtonReleaseCb)
        self.iconview.connect("drag_begin", self._dndDragBeginCb)
        self.iconview.connect("drag_data_get", self._dndDataGetCb)

        # Hack so that the views have the same method as self
        self.treeview.getSelectedItems = self.getSelectedItems

        # always available
        actions = (
            ("ImportSources", gtk.STOCK_ADD, _("_Import Files..."), None,
             _("Add media files to your project"), self._importSourcesCb),
            ("ImportSourcesFolder", gtk.STOCK_ADD, _("Import _Folders..."),
             None, _("Add the contents of a folder as clips in your project"),
             self._importSourcesFolderCb),
            ("SelectUnusedSources", None, _("Select Unused Media"), None,
             _("Select clips that have not been used in the project"),
             self._selectUnusedSourcesCb),
        )

        # only available when selection is non-empty
        selection_actions = (
            ("RemoveSources", gtk.STOCK_DELETE, _("_Remove from Project"),
             "<Control>Delete", None, self._removeSourcesCb),
            ("InsertEnd", gtk.STOCK_COPY, _("Insert at _End of Timeline"),
             "Insert", None, self._insertEndCb),
        )

        actiongroup = gtk.ActionGroup("sourcelistpermanent")
        actiongroup.add_actions(actions)
        actiongroup.get_action("ImportSources").props.is_important = True
        uiman.insert_action_group(actiongroup, 0)

        self.selection_actions = gtk.ActionGroup("sourcelistselection")
        self.selection_actions.add_actions(selection_actions)
        self.selection_actions.set_sensitive(False)
        uiman.insert_action_group(self.selection_actions, 0)
        uiman.add_ui_from_string(ui)

        # clip view menu items
        view_menu_item = uiman.get_widget('/MainMenuBar/View')
        view_menu = view_menu_item.get_submenu()
        seperator = gtk.SeparatorMenuItem()
        self.treeview_menuitem = gtk.RadioMenuItem(None,
                                                   _("Show Clips as a List"))
        self.iconview_menuitem = gtk.RadioMenuItem(self.treeview_menuitem,
                                                   _("Show Clips as Icons"))

        # update menu items with current clip view before we connect to item
        # signals
        if self.settings.lastClipView == SHOW_TREEVIEW:
            self.treeview_menuitem.set_active(True)
            self.iconview_menuitem.set_active(False)
        else:
            self.treeview_menuitem.set_active(False)
            self.iconview_menuitem.set_active(True)

        # we only need to connect to one menu item because we get a signal
        # from each radio item in the group
        self.treeview_menuitem.connect("toggled",
                                       self._treeViewMenuItemToggledCb)

        view_menu.append(seperator)
        view_menu.append(self.treeview_menuitem)
        view_menu.append(self.iconview_menuitem)
        self.treeview_menuitem.show()
        self.iconview_menuitem.show()
        seperator.show()

        # add all child widgets
        self.pack_start(self.infobar, expand=False, fill=False)
        self.pack_start(self._import_warning_infobar, expand=False, fill=False)
        self.pack_start(self.search_hbox, expand=False)
        self.pack_start(self.iconview_scrollwin)
        self.pack_start(self.treeview_scrollwin)
        self.pack_start(self._progressbar, expand=False)

        # display the help text
        self.clip_view = self.settings.lastClipView
        self._displayClipView()
Esempio n. 20
0
    def __init__(self, instance, uiman):
        gtk.VBox.__init__(self)
        Loggable.__init__(self)

        self.app = instance
        self.settings = instance.settings

        # Store
        # icon, infotext, objectfactory, uri, length
        self.storemodel = gtk.ListStore(gtk.gdk.Pixbuf, gtk.gdk.Pixbuf, str,
                                        object, str, str, str, str)

        # Scrolled Windows
        self.treeview_scrollwin = gtk.ScrolledWindow()
        self.treeview_scrollwin.set_policy(gtk.POLICY_NEVER,
                                           gtk.POLICY_AUTOMATIC)
        self.treeview_scrollwin.set_shadow_type(gtk.SHADOW_ETCHED_IN)

        self.iconview_scrollwin = gtk.ScrolledWindow()
        self.iconview_scrollwin.set_policy(gtk.POLICY_AUTOMATIC,
                                           gtk.POLICY_AUTOMATIC)
        self.iconview_scrollwin.set_shadow_type(gtk.SHADOW_ETCHED_IN)

        # Popup Menu
        self.popup = gtk.Menu()
        self.popup_importitem = gtk.ImageMenuItem(_("Import clips..."))
        image = gtk.Image()
        image.set_from_stock(gtk.STOCK_ADD, gtk.ICON_SIZE_MENU)
        self.popup_importitem.set_image(image)

        self.popup_remitem = gtk.ImageMenuItem(_("Remove Clip"))
        image = gtk.Image()
        image.set_from_stock(gtk.STOCK_REMOVE, gtk.ICON_SIZE_MENU)
        self.popup_remitem.set_image(image)
        self.popup_playmenuitem = gtk.MenuItem(_("Play Clip"))
        self.popup_importitem.connect("activate", self._importButtonClickedCb)
        self.popup_remitem.connect("activate", self._removeButtonClickedCb)
        self.popup_playmenuitem.connect("activate", self._playButtonClickedCb)
        self.popup_importitem.show()
        self.popup_remitem.show()
        self.popup_playmenuitem.show()
        self.popup.append(self.popup_importitem)
        self.popup.append(self.popup_remitem)
        self.popup.append(self.popup_playmenuitem)

        # import sources dialogbox
        self._importDialog = None

        # TreeView
        # Displays icon, name, type, length
        self.treeview = gtk.TreeView(self.storemodel)
        self.treeview_scrollwin.add(self.treeview)
        self.treeview.connect("button-press-event",
                              self._treeViewButtonPressEventCb)
        self.treeview.connect("row-activated", self._rowActivatedCb)
        self.treeview.set_property("rules_hint", True)
        self.treeview.set_headers_visible(False)
        self.treeview.set_property("search_column", COL_SEARCH_TEXT)
        tsel = self.treeview.get_selection()
        tsel.set_mode(gtk.SELECTION_MULTIPLE)
        tsel.connect("changed", self._viewSelectionChangedCb)

        pixbufcol = gtk.TreeViewColumn(_("Icon"))
        pixbufcol.set_expand(False)
        pixbufcol.set_spacing(5)
        self.treeview.append_column(pixbufcol)
        pixcell = gtk.CellRendererPixbuf()
        pixcell.props.xpad = 6
        pixbufcol.pack_start(pixcell)
        pixbufcol.add_attribute(pixcell, 'pixbuf', COL_ICON)

        namecol = gtk.TreeViewColumn(_("Information"))
        self.treeview.append_column(namecol)
        namecol.set_expand(True)
        namecol.set_spacing(5)
        namecol.set_sizing(gtk.TREE_VIEW_COLUMN_GROW_ONLY)
        namecol.set_min_width(150)
        txtcell = gtk.CellRendererText()
        txtcell.set_property("ellipsize", pango.ELLIPSIZE_END)
        namecol.pack_start(txtcell)
        namecol.add_attribute(txtcell, "markup", COL_INFOTEXT)

        namecol = gtk.TreeViewColumn(_("Duration"))
        namecol.set_expand(False)
        self.treeview.append_column(namecol)
        txtcell = gtk.CellRendererText()
        txtcell.set_property("yalign", 0.0)
        namecol.pack_start(txtcell)
        namecol.add_attribute(txtcell, "markup", COL_LENGTH)

        # IconView
        self.iconview = gtk.IconView(self.storemodel)
        self.iconview_scrollwin.add(self.iconview)
        self.iconview.connect("button-press-event",
                              self._iconViewButtonPressEventCb)
        self.iconview.connect("selection-changed",
                              self._viewSelectionChangedCb)
        self.iconview.set_orientation(gtk.ORIENTATION_VERTICAL)
        self.iconview.set_text_column(COL_SHORT_TEXT)
        self.iconview.set_pixbuf_column(COL_ICON_LARGE)
        self.iconview.set_selection_mode(gtk.SELECTION_MULTIPLE)
        self.iconview.set_item_width(106)

        # Explanatory message InfoBar
        infobar = gtk.InfoBar()

        txtlabel = gtk.Label()
        txtlabel.set_padding(PADDING, PADDING)
        txtlabel.set_line_wrap(True)
        txtlabel.set_line_wrap_mode(pango.WRAP_WORD)
        txtlabel.set_justify(gtk.JUSTIFY_CENTER)
        txtlabel.set_markup(
            _("<span>Import your clips by dragging them here or "
              "by using the buttons above.</span>"))
        infobar.add(txtlabel)
        self.infobar = infobar
        self.txtlabel = txtlabel

        self.infostub = InfoStub()
        self.infostub.connect("remove-me", self._removeInfoStub)

        # Connect to project.  We must remove and reset the callbacks when
        # changing project.
        self.project_signals = SignalGroup()
        self.app.connect("new-project-created", self._newProjectCreatedCb)
        self.app.connect("new-project-loaded", self._newProjectLoadedCb)
        self.app.connect("new-project-failed", self._newProjectFailedCb)

        # default pixbufs
        self.audiofilepixbuf = self._getIcon("audio-x-generic",
                                             "pitivi-sound.png")
        self.videofilepixbuf = self._getIcon("video-x-generic",
                                             "pitivi-video.png")

        # Drag and Drop
        self.drag_dest_set(gtk.DEST_DEFAULT_DROP | gtk.DEST_DEFAULT_MOTION,
                           [dnd.URI_TUPLE, dnd.FILE_TUPLE],
                           gtk.gdk.ACTION_COPY)
        self.connect("drag_data_received", self._dndDataReceivedCb)

        self.treeview.drag_source_set(0, [], gtk.gdk.ACTION_COPY)
        self.treeview.connect("motion-notify-event",
                              self._treeViewMotionNotifyEventCb)
        self.treeview.connect("button-release-event",
                              self._treeViewButtonReleaseCb)
        self.treeview.connect("drag_begin", self._dndDragBeginCb)
        self.treeview.connect("drag_data_get", self._dndDataGetCb)

        self.iconview.drag_source_set(0, [], gtk.gdk.ACTION_COPY)
        self.iconview.connect("motion-notify-event",
                              self._iconViewMotionNotifyEventCb)
        self.iconview.connect("button-release-event",
                              self._iconViewButtonReleaseCb)
        self.iconview.connect("drag_begin", self._dndDragBeginCb)
        self.iconview.connect("drag_data_get", self._dndDataGetCb)

        # Hack so that the views have the same method as self
        self.treeview.getSelectedItems = self.getSelectedItems

        # Error dialog box
        self.errorDialogBox = None

        # always available
        actions = (
            ("ImportSources", gtk.STOCK_ADD, _("_Import clips..."), None,
             _("Import clips to use"), self._importSourcesCb),
            ("ImportSourcesFolder", gtk.STOCK_ADD,
             _("Import _folder of clips..."), None,
             _("Import folder of clips to use"), self._importSourcesFolderCb),
        )

        # only available when selection is non-empty
        selection_actions = (
            ("RemoveSources", gtk.STOCK_DELETE, _("_Remove from project"),
             "<Control>Delete", None, self._removeSourcesCb),
            ("InsertEnd", gtk.STOCK_COPY, _("Insert at _end of timeline"),
             "Insert", None, self._insertEndCb),
        )

        actiongroup = gtk.ActionGroup("sourcelistpermanent")
        actiongroup.add_actions(actions)
        actiongroup.get_action("ImportSources").props.is_important = True
        uiman.insert_action_group(actiongroup, 0)

        self.selection_actions = gtk.ActionGroup("sourcelistselection")
        self.selection_actions.add_actions(selection_actions)
        self.selection_actions.set_sensitive(False)
        uiman.insert_action_group(self.selection_actions, 0)
        uiman.add_ui_from_string(ui)

        # clip view menu items
        view_menu_item = uiman.get_widget('/MainMenuBar/View')
        view_menu = view_menu_item.get_submenu()
        seperator = gtk.SeparatorMenuItem()
        self.treeview_menuitem = gtk.RadioMenuItem(None,
                                                   "Show Clips as a List")
        self.iconview_menuitem = gtk.RadioMenuItem(self.treeview_menuitem,
                                                   "Show Clips as Icons")

        # update menu items with current clip view before we connect to item
        # signals
        if self.settings.lastClipView == SHOW_TREEVIEW:
            self.treeview_menuitem.set_active(True)
            self.iconview_menuitem.set_active(False)
        else:
            self.treeview_menuitem.set_active(False)
            self.iconview_menuitem.set_active(True)

        # we only need to connect to one menu item because we get a signal
        # from each radio item in the group
        self.treeview_menuitem.connect("toggled",
                                       self._treeViewMenuItemToggledCb)

        view_menu.append(seperator)
        view_menu.append(self.treeview_menuitem)
        view_menu.append(self.iconview_menuitem)
        self.treeview_menuitem.show()
        self.iconview_menuitem.show()
        seperator.show()

        # add all child widgets
        self.pack_start(self.infobar, expand=False, fill=False)
        self.pack_start(self.iconview_scrollwin)
        self.pack_start(self.treeview_scrollwin)

        # display the help text
        self.clip_view = self.settings.lastClipView
        self._displayClipView()
Esempio n. 21
0
def build_window(message_type,
                 stock_id,
                 message,
                 widget,
                 top_label=None,
                 bottom_label=None):
    image = gtk.Image()
    image.set_from_stock(stock_id, gtk.ICON_SIZE_LARGE_TOOLBAR)
    image.show()

    label = gtk.Label()
    label.set_markup('<b>%s</b>' % message)
    label.set_alignment(0., .5)
    label.show()

    info_bar = gtk.InfoBar()
    info_bar.set_message_type(message_type)

    content_area = info_bar.get_content_area()
    content_area.pack_start(image, False, False, 0)
    content_area.pack_start(label, True, True, 0)

    info_bar.show()

    scrolled_window = gtk.ScrolledWindow()
    scrolled_window.add(widget)
    scrolled_window.set_shadow_type(gtk.SHADOW_IN)
    scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
    scrolled_window.show()

    close_button = gtk.Button(gtk.STOCK_CLOSE)
    close_button.set_use_stock(True)
    close_button.set_can_default(True)
    close_button.connect('clicked', gtk.main_quit)
    close_button.show()

    button_hbox = gtk.HBox(False, 4)
    button_hbox.pack_end(close_button, False, False, 0)
    button_hbox.show()

    dialog_vbox = gtk.VBox(False, 8)
    dialog_vbox.set_border_width(8)
    if top_label is not None:
        dialog_vbox.pack_start(top_label, False, False, 0)
    dialog_vbox.pack_start(scrolled_window, True, True, 0)
    if bottom_label is not None:
        dialog_vbox.pack_start(bottom_label, False, False, 0)
    dialog_vbox.pack_start(button_hbox, False, False, 0)
    dialog_vbox.show()

    top_vbox = gtk.VBox(False, 0)
    top_vbox.pack_start(info_bar, False, False, 0)
    top_vbox.pack_start(dialog_vbox, True, True, 0)
    top_vbox.show()

    def key_press_event(window, event):
        if event.keyval == gtk.keysyms.Escape:
            gtk.main_quit()

    window = gtk.Window(gtk.WINDOW_TOPLEVEL)
    window.set_title('gnetlist')
    window.set_default_size(600, 400)
    window.set_position(gtk.WIN_POS_CENTER)
    window.connect('key-press-event', key_press_event)
    window.connect('destroy', gtk.main_quit)
    window.add(top_vbox)
    window.show()
Esempio n. 22
0
    def __init__(self, parent=None):
        gtk.Window.__init__(self)
        try:
            self.set_screen(parent.get_screen())
        except AttributeError:
            self.connect('destroy', lambda *w: gtk.main_quit())
        self.set_title(self.__class__.__name__)
        self.set_border_width(8)

        vb = gtk.VBox()
        self.add(vb)

        bar = gtk.InfoBar()
        vb.pack_start(bar, False, False)
        bar.set_message_type(gtk.MESSAGE_INFO)
        bar.get_content_area().pack_start(
            gtk.Label(
                "This is an info bar with message type GTK_MESSAGE_INFO"),
            False, False)

        bar = gtk.InfoBar()
        vb.pack_start(bar, False, False)
        bar.set_message_type(gtk.MESSAGE_WARNING)
        bar.get_content_area().pack_start(
            gtk.Label(
                "This is an info bar with message type GTK_MESSAGE_WARNING"),
            False, False)

        bar = gtk.InfoBar()
        bar.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
        bar.connect("response", self._on_bar_response)
        vb.pack_start(bar, False, False)
        bar.set_message_type(gtk.MESSAGE_QUESTION)
        bar.get_content_area().pack_start(
            gtk.Label(
                "This is an info bar with message type GTK_MESSAGE_QUESTION"),
            False, False)

        bar = gtk.InfoBar()
        vb.pack_start(bar, False, False)
        bar.set_message_type(gtk.MESSAGE_ERROR)
        bar.get_content_area().pack_start(
            gtk.Label(
                "This is an info bar with message type GTK_MESSAGE_ERROR"),
            False, False)

        bar = gtk.InfoBar()
        vb.pack_start(bar, False, False)
        bar.set_message_type(gtk.MESSAGE_OTHER)
        bar.get_content_area().pack_start(
            gtk.Label(
                "This is an info bar with message type GTK_MESSAGE_OTHER"),
            False, False)

        frame = gtk.Frame("Info bars")
        vb.pack_start(frame, False, False, 8)
        vb2 = gtk.VBox(spacing=8)
        vb2.set_border_width(8)
        frame.add(vb2)
        vb2.pack_start(gtk.Label("An example of different info bars"), False,
                       False)

        self.show_all()
Esempio n. 23
0
    def on_save_clicked(self, button):
        id = self.selected_id

        msg = ''
        account_name = self.builder.get_object('account_name').get_text()
        account_number = self.builder.get_object('account_number').get_text()
        account_type = self.builder.get_object(
            'account_types_combo').get_active()
        account_owner = self.builder.get_object('account_owner').get_text()
        bank_name = self.builder.get_object(
            'bank_names_combo').get_active_text()

        if len(account_name) == 0:
            msg += 'Account Name Can not be empty\n'
        if len(account_number) == 0:
            msg += 'Account Number Can not be empty\n'
        if len(account_owner) == 0:
            msg += 'Account Owner Can not be empty\n'
        if account_type == -1:
            msg += 'Select an account type\n'
        if bank_name == None:
            msg += 'Select a Bank\n'

        if len(msg):
            dialog = gtk.MessageDialog(None, 0, gtk.MESSAGE_ERROR,
                                       gtk.BUTTONS_OK, msg)
            dialog.run()
            dialog.destroy()
            return

        result = self.bankaccounts_class.add_account(
            id, account_name, account_number, account_type, account_owner,
            bank_name,
            self.builder.get_object('bank_branch').get_text(),
            self.builder.get_object('bank_address').get_text(),
            self.builder.get_object('bank_phone').get_text(),
            self.builder.get_object('bank_webpage').get_text(),
            self.builder.get_object('desc').get_text())
        if result > 0:
            window = self.builder.get_object('add_window').hide_all()
            infobar = gtk.InfoBar()
            label = gtk.Label('successfully added.')
            infobar.get_content_area().add(label)
            width, height = self.main_window_background.window.get_size()
            infobar.set_size_request(width, -1)
            self.main_window_background.put(infobar, 0, 0)
            infobar.show_all()

            model = self.builder.get_object('treeview').get_model()
            if id == -1:
                iter = model.append()
            else:
                iter = model.get_iter_first()
                while iter != None:
                    if model.get_value(iter, 0) == id:
                        break
                    else:
                        iter = model.iter_next(iter)
            if account_type == 0:
                accType = 'جاری'
            else:
                accType = 'حساب پس انداز'
            model.set(iter, 0, result, 1, account_name, 2, account_number, 3,
                      account_owner, 4, accType, 5, bank_name)
            glib.timeout_add_seconds(3, lambda w: w.destroy(), infobar)
Esempio n. 24
0
def test():

    def set_message_area_text_and_icon (message_area,
                                        icon_stock_id,
                                        primary_text,
                                        secondary_text=None):
	hbox_content = gtk.HBox(False, 8)

	image = gtk.image_new_from_stock(icon_stock_id, gtk.ICON_SIZE_DIALOG)
	hbox_content.pack_start(image, False, False, 0)
	image.set_alignment(0.5, 0)

	vbox = gtk.VBox(False, 6)
	hbox_content.pack_start(vbox, True, True, 0)

	primary_markup = "<b>%s</b>" % primary_text
	primary_label = gtk.Label(primary_markup)

	vbox.pack_start(primary_label, True, True, 0)
	primary_label.set_use_markup(True)
	primary_label.set_line_wrap(True)
	primary_label.set_alignment(0, 0.5)
	primary_label.set_flags(gtk.CAN_FOCUS)
	primary_label.set_selectable(True)

        if secondary_text:	
            secondary_markup = "<small>%s</small>" % secondary_text
            secondary_label = gtk.Label(secondary_markup)

            vbox.pack_start(secondary_label, True, True, 0)
            secondary_label.set_flags(gtk.CAN_FOCUS)
            secondary_label.set_use_markup(True)
            secondary_label.set_line_wrap(True)
            secondary_label.set_selectable(True)
            secondary_label.set_alignment(0, 0.5)
                                                

	hbox_content.show_all()
        ca = message_area.get_content_area()
        ca.add(hbox_content)
    
    window = gtk.Window()
    window.connect("delete-event", gtk.main_quit)

    if False:
        widget = MessageArea()
        widget.add_stock_button_with_text('hello', gtk.STOCK_REFRESH, gtk.RESPONSE_OK)

        widget.add_button (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
    else:
        infobar = gtk.InfoBar()
        infobar.add_button('hello', gtk.RESPONSE_OK)
        infobar.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)

        widget = infobar
        infobar.set_message_type(gtk.MESSAGE_WARNING)

    set_message_area_text_and_icon(widget, gtk.STOCK_REFRESH, 'hello world', 'example')
    
    window.add(widget)
    window.show_all()
    gtk.main()
Esempio n. 25
0
	def __init__(self, path="ExportVideo.ui", root="frmExportVideo", domain="LibreShot", form=None, project=None, **kwargs):
		SimpleGtkBuilderApp.__init__(self, os.path.join(project.UI_DIR, path), root, domain, **kwargs)

		# Add language support
		_ = Language_Init.Translator(project).lang.gettext
		self._ = _

		# set important vars
		self.form = form
		self.project = project
		self.original_project_type = self.project.project_type		# remember the original project type (i.e. mlt_profile)
		
		# Show all controls on this screen
		self.frmExportVideo.show_all()
		
		# set window as MODAL (so they can't mess up the export)
		self.frmExportVideo.set_modal(True)
		
		self.invalid_codecs = []
		
		# init the project type properties
		self.init_properties(self.cmbProjectType.get_active_text())
		
		# set the export file name
		self.txtFileName.set_text(self.project.name)

		# set the export folder as the project folder (if any)
		if ".libreshot" in self.project.folder:
			# This is the libreshot default project (set the folder to 'DESKTOP')
			self.fileExportFolder.set_current_folder(self.project.DESKTOP)
		else:
			# Set project folder
			self.fileExportFolder.set_current_folder(self.project.folder)
		
		# init the list of possible project types / profiles
		self.profile_list = profiles.mlt_profiles(self.project).get_profile_list()
		
		# loop through each profile, and add it to the dropdown
		for file_name, p in self.profile_list:
			# append profile to list
			self.cmbProjectType.append_text(p.description())
					
		export_options = [_("Video & Audio"), _("Image Sequence")]
		# loop through export to options
		for option in export_options:
			# append profile to list
			self.cboExportTo.append_text(option)


		export_types_model = self.cboExportType.get_model()
		export_types_model.clear()
		
		export_types = [_("Export to Folder"), _("Upload to Web")]
		# loop through export to options
		for option in export_types:
			# append profile to list
			self.cboExportType.append_text(option)
		self.set_dropdown_values(_("Export to Folder"), self.cboExportType)
		
		
		upload_model = self.cboUploadServices.get_model()
		upload_model.clear()
		
		self.upload_manager = UploadManager(project, self.form.settings)
		self.upload_services = self.upload_manager.get_services()
		upload_types = self.upload_services.keys()
		upload_types.sort()
		# loop through export to options
		for option in upload_types:
			# append profile to list
			self.cboUploadServices.append_text(option)
		self.set_dropdown_values(_("YouTube"), self.cboUploadServices)
		

		#populate the format/codec drop downs 
		#formats
		format_model = self.cboVIdeoFormat.get_model()
		format_model.clear()
		
		for format in self.form.vformats:
			self.cboVIdeoFormat.append_text(format)
			
		#video codecs
		vcodecs_model = self.cboVideoCodec.get_model()
		vcodecs_model.clear()
		
		for vcodec in self.form.vcodecs:
			self.cboVideoCodec.append_text(vcodec)
			
		#audio codecs
		acodecs_model = self.cboAudioCodec.get_model()
		acodecs_model.clear()
		
		# Add 'none' audio codec
		self.cboAudioCodec.append_text( "none" )
		for acodec in self.form.acodecs:
			# Add the rest of the audio codecs
			self.cboAudioCodec.append_text(acodec)
			
			
		# set the dropdown boxes
		self.set_project_type_dropdown()
		self.set_export_to_dropdown()
		
		#load the simple project type dropdown
		presets = []
		for file in os.listdir(self.project.EXPORT_PRESETS_DIR):
			xmldoc = xml.parse(os.path.join(self.project.EXPORT_PRESETS_DIR,file))
			type = xmldoc.getElementsByTagName("type")
			presets.append(_(type[0].childNodes[0].data))
		#exclude duplicates
		presets = list(set(presets))
		for item in sorted(presets):
			self.cboSimpleProjectType.append_text(item)
			
		#indicate that exporting cancelled
		self.cancelled = False
		
		# create the infobar displaying the missing codec message
		self.use_infobar = True
		self.last_error = None
		try:
			self.infobar = gtk.InfoBar()
			self.content = self.infobar.get_content_area()
			self.label = gtk.Label()
			
			self.image = gtk.Image()
			self.image.set_from_stock(gtk.STOCK_DIALOG_WARNING, gtk.ICON_SIZE_DIALOG)
			
			self.content.add(self.image)
			self.content.add(self.label)
			self.vbox1.pack_start(self.infobar)
			self.vbox1.reorder_child(self.infobar, 3)
			self.infobar.set_message_type(gtk.MESSAGE_WARNING)
		except:
			# older version of pygtk can not create an InfoBar
			self.use_infobar = False