def update_model(self): for title, cate, icon in MIMETYPE: pixbuf = get_icon_with_name(icon, 24) iter = self.model.append(None) self.model.set(iter, COLUMN_ICON, pixbuf, COLUMN_TITLE, title, COLUMN_CATE, cate)
def create_change_icon_hbox(self): hbox = gtk.HBox(False, 10) label = gtk.Label(_('Click the button to change the menu logo')) label.set_alignment(0, 0.5) hbox.pack_start(label, False, False, 0) button = gtk.Button() button.connect('clicked', self.on_change_icon_clicked) image = gtk.image_new_from_pixbuf(get_icon_with_name('start-here', 24)) button.set_image(image) hbox.pack_end(button, False, False, 0) return hbox
def on_change_icon_clicked(self, widget): dialog = gtk.FileChooserDialog(_('Choose a new logo'),action = gtk.FILE_CHOOSER_ACTION_OPEN, buttons = (gtk.STOCK_REVERT_TO_SAVED, gtk.RESPONSE_DELETE_EVENT, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_ACCEPT)) filter = gtk.FileFilter() filter.set_name(_("PNG image (*.png)")) filter.add_mime_type("image/png") dialog.set_current_folder(os.path.expanduser('~')) dialog.add_filter(filter) dest = os.path.expanduser('~/.icons/%s/24x24/places/start-here.png' % self.__setting.get_icon_theme()) revert_button = dialog.action_area.get_children()[-1] if not os.path.exists(dest): revert_button.set_sensitive(False) filename = '' response = dialog.run() if response == gtk.RESPONSE_ACCEPT: filename = dialog.get_filename() if filename: pixbuf = gtk.gdk.pixbuf_new_from_file(filename) w, h = pixbuf.get_width(), pixbuf.get_height() if w != 24 or h != 24: ErrorDialog(_("The size isn't suitable for the panel.\nIt should be 24x24.")).launch() else: os.system('mkdir -p %s' % os.path.dirname(dest)) os.system('cp %s %s' % (filename, dest)) image = gtk.image_new_from_file(dest) widget.set_image(image) dialog.destroy() elif response == gtk.RESPONSE_DELETE_EVENT: os.remove(dest) image = gtk.image_new_from_pixbuf(get_icon_with_name('start-here', 24)) widget.set_image(image) dialog.destroy() else: dialog.destroy() return dialog = QuestionDialog(_('Do you want your changes to take effect immediately?')) if dialog.run() == gtk.RESPONSE_YES: os.system('killall gnome-panel') dialog.destroy()