예제 #1
0
 def __get_category(self):
     s = self.combo_category.get_active_text()
     from install_remove_pane import Category
     for c in Category.all():
         if c.text == s:
             return c.category
     return 'Other'   
예제 #2
0
    def __init__(self,dict={}):
        gtk.Dialog.__init__(self,title = _('Your Custom Application'),
                     flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                     )
        self.dict = dict
        self.set_position(gtk.WIN_POS_CENTER)
        label_name = gtk.Label(_('Name') + ': ')
        label_name.set_alignment(0,0.5)
        label_pkgs_to_install = gtk.Label(_('Packages to install') + ': ')
        label_pkgs_to_install.set_alignment(0,0.5)
        label_add_pkg_to_list = gtk.Label(_('Add package to list') + ': ')
        label_add_pkg_to_list.set_alignment(0,0.5)
        self.entry_pkgs = entry_pkgs = gtk.Entry()
        if dict.has_key(get_desktop_environment()):
            entry_pkgs.set_text(dict[get_desktop_environment()] + ' ')
        label_detail = gtk.Label(_('Detail') + ': ')
        label_detail.set_alignment(0,0.5)
        label_category = gtk.Label(_('Category') + ': ')
        label_category.set_alignment(0,0.5)
        self.entry_name = entry_name = gtk.Entry()
        if dict.has_key('__doc__'):
            entry_name.set_text(dict['__doc__'])
        entry_name.set_max_length(50)
        self.entry_pkg = entry_pkg = gtk.Entry()
        pkg_completion = gtk.EntryCompletion()
        entry_pkg.set_completion(pkg_completion)
        if len(self.liststore_all_pkg) == 0:
            for pkg in BACKEND.get_existing_pkgs_set():
                self.liststore_all_pkg.append([pkg])
        liststore_pkgs = self.liststore_all_pkg
        pkg_completion.set_model(liststore_pkgs)
        pkg_completion.set_text_column(0)
        pkg_completion.set_minimum_key_length(3)

        
        entry_pkg.connect("activate",self.__pkgname_callback)
       
        button_add_pkg = stock_image_only_button(gtk.STOCK_ADD)
        button_add_pkg.connect("clicked",self.__add_pkg,self.entry_pkgs,entry_pkg)
        self.entry_detail = entry_detail = gtk.Entry()
        entry_detail.set_max_length(50)
        if dict.has_key('detail'):
            entry_detail.set_text(dict['detail'])
        
        button_submit = image_stock_button(gtk.STOCK_APPLY, _('Submit'))
        button_submit.connect('clicked', self.__submit)
        button_cancel = image_stock_button(gtk.STOCK_CANCEL, _('Cancel'))
        button_cancel.connect('clicked', self.__cancel)

        table = gtk.Table(5,2,False)
        table.attach(label_name, 0, 1, 0, 1, xoptions = gtk.FILL, yoptions = 0)
        table.attach(label_detail, 0, 1, 1, 2, xoptions = gtk.FILL, yoptions = 0)
        table.attach(entry_name, 1, 2, 0, 1, xoptions = gtk.FILL, yoptions = 0)
        table.attach(entry_detail, 1, 2, 1, 2, xoptions = gtk.FILL, yoptions = 0)
        hbox_bottom = gtk.HBox()
        hbox_bottom.pack_end(button_cancel, False, False, 0)
        hbox_bottom.pack_end(button_submit, False, False, 0)
        
        self.combo_category = combo_category = gtk.combo_box_entry_new_text()
        from install_remove_pane import Category
        index = 0
        target = ''
        if dict.has_key('category'):
            target = dict['category']
        
        for i in range(0,len(Category.all())):
            c = Category.all()[i]
            if len(target.split()) == 1:
                if c.category == target:
                    index = i
                
            else:
                if c.category in target.split() and not c.category in ['favourite','dustbin']:
                    index = i
            combo_category.append_text(c.text)
        
        combo_category.set_active(index)
        
        hbox_add_pkg = gtk.HBox()
        hbox_add_pkg.set_homogeneous(False)

        hbox_add_pkg.pack_start(entry_pkg, False, False, 0)
        hbox_add_pkg.pack_start(button_add_pkg, False, False, 0)
        table.attach(label_pkgs_to_install, 0, 1, 2, 3, xoptions = gtk.FILL, yoptions = 0)
        table.attach(entry_pkgs, 1, 2, 2, 3, xoptions = gtk.FILL, yoptions = 0)
        table.attach(label_category, 0, 1, 4, 5, xoptions = gtk.FILL, yoptions = 0)
        table.attach(combo_category, 1, 2, 4, 5, xoptions = gtk.FILL, yoptions = 0)
        table.attach(label_add_pkg_to_list, 0, 1, 3, 4, xoptions = gtk.FILL, yoptions = 0)
        table.attach(hbox_add_pkg, 1, 2, 3, 4, xoptions = gtk.FILL, yoptions = 0)
        table.set_homogeneous(False)
        
        from libsetting import ImageChooser
        self.icon_chooser = icon_chooser = ImageChooser('/usr/share/pixmaps/', 48, 48)
        icon_chooser.connect('changed',self.__choose_icon)
        if self.dict.has_key('appname'):       
            pixbuf = self.dict['appobj'].logo_pixbuf
        else:
            pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(D + 'sora_icons/default_application_icon.png', 48, 48)
        icon_chooser.display_pixbuf(pixbuf)
        hbox_icon_and_table = gtk.HBox()
        tmp_vbox = gtk.VBox()
        tmp_vbox.pack_start(icon_chooser, False, False, 0)
        hbox_icon_and_table.set_homogeneous(False)
        hbox_icon_and_table.pack_start(tmp_vbox, False, False, 0)
        hbox_icon_and_table.pack_start(table, False, False, 0)
        self.vbox.pack_start(hbox_icon_and_table, False, False, 0)
        self.vbox.pack_end(hbox_bottom, False, False, 0)
        
        self.origin_category = self.__get_category()