def __init__(self, parent=None): DownloadDialog.__init__( self, url=TweakSettings.get_url(), title=_("Download Ubuntu Tweak %s") % TweakSettings.get_version(), parent=parent, )
def check_version(self): gtk.gdk.threads_enter() version = TweakSettings.get_version() if version > VERSION: dialog = QuestionDialog( _( "A newer version: %s is available online.\nWould you like to update?\n\nNote: if you prefer to update from the source code, you can disable this feature in Preferences." ) % version, title=_("Software Update"), ) update = False if dialog.run() == gtk.RESPONSE_YES: update = True dialog.destroy() if update: dialog = UpdateDialog(parent=self.get_toplevel()) dialog.run() dialog.destroy() gtk.gdk.threads_leave()
def __init__(self): TweakModule.__init__(self, 'appcenter.ui') set_label_for_stock_button(self.sync_button, _('_Sync')) self.to_add = [] self.to_rm = [] self.package_worker = PACKAGE_WORKER self.url = APP_VERSION_URL self.cateview = CategoryView(os.path.join(APPCENTER_ROOT, 'cates.json')) self.cate_selection = self.cateview.get_selection() self.cate_selection.connect('changed', self.on_category_changed) self.left_sw.add(self.cateview) self.appview = AppView() self.appview.update_model() self.appview.sort_model() self.appview.connect('changed', self.on_app_status_changed) self.right_sw.add(self.appview) self.update_timestamp() self.show_all() UPDATE_SETTING.set_value(False) UPDATE_SETTING.connect_notify(self.on_have_update, data=None) if TweakSettings.get_sync_notify(): thread.start_new_thread(self.check_update, ()) gobject.timeout_add(60000, self.update_timestamp) self.reparent(self.main_vbox)
def setup_window_preference(self): table = self.worker.get_object('table1') height, width = TweakSettings.get_window_size() win_width = WidgetFactory.create('GconfSpinButton', key = 'window_width', min = 640, max = 1280, step = 1) win_width.show() win_width.connect('value-changed', self.on_value_changed) table.attach(win_width, 1, 3, 0, 1) win_height = WidgetFactory.create('GconfSpinButton', key = 'window_height', min = 480, max = 1280, step = 1) win_height.show() win_height.connect('value-changed', self.on_value_changed) table.attach(win_height, 1, 3, 1, 2) toolbar_size = WidgetFactory.create('GconfSpinButton', key = 'toolbar_size', min = 100, max = 500, step = 1) toolbar_size.show() toolbar_size.connect('value-changed', self.on_value_changed) table.attach(toolbar_size, 1, 3, 2, 3)
def set_enable(self, key, enable): # To make other module use the source enable feature, move the logical to here # So that other module can call gpg_key = self.get_key(key) url = self.get_url(key) distro = self.get_distro(key) comps = self.get_comps(key) comment = self.get_name(key) package = self.get_slug(key) if gpg_key: proxy.add_apt_key_from_content(gpg_key) if not comps and distro: distro = distro + '/' elif not comps and not distro: distro = './' if TweakSettings.get_separated_sources(): result = proxy.set_separated_entry(url, distro, comps, comment, enable, package) else: result = proxy.set_entry(url, distro, comps, comment, enable) return str(result)
def set_enable(self, key, enable): # To make other module use the source enable feature, move the logical to here # So that other module can call gpg_key = self.get_key(key) url = self.get_url(key) distro = self.get_distro(key) comps = self.get_comps(key) comment = self.get_name(key) if ppa.is_ppa(url): file_name = '%s-%s' % (ppa.get_source_file_name(url), distro) else: file_name = self.get_slug(key) if gpg_key: proxy.add_apt_key_from_content(gpg_key) if not comps and distro: distro = distro + '/' elif not comps and not distro: distro = './' if TweakSettings.get_separated_sources(): result = proxy.set_separated_entry(url, distro, comps, comment, enable, file_name) else: result = proxy.set_entry(url, distro, comps, comment, enable) return str(result)
def __init__(self): TweakModule.__init__(self) self.__setting = TweakSettings() changeicon_hbox = self.create_change_icon_hbox() box = ListPack(_("Panel Settings"), ( WidgetFactory.create("GconfCheckButton", label=_("Display warning when removing a panel"), enable_reset=True, key="confirm_panel_remove"), WidgetFactory.create("GconfCheckButton", label=_("Complete lockdown of all panels"), enable_reset=True, key="locked_down"), WidgetFactory.create("GconfCheckButton", label=_("Enable panel animations"), enable_reset=True, key="enable_animations"), )) self.add_start(box, False, False, 0) box = ListPack(_("Menu Settings"), ( WidgetFactory.create("GconfCheckButton", label=_("Show Input Method menu in the context menu"), enable_reset=True, key="show_input_method_menu"), WidgetFactory.create("GconfCheckButton", label=_("Show Unicode Control Character menu in the context menu"), enable_reset=True, key="show_unicode_menu"), WidgetFactory.create("GconfCheckButton", label=_('Show icons in menus'), enable_reset=True, key='/desktop/gnome/interface/menus_have_icons'), WidgetFactory.create("GconfCheckButton", label=_('Show icons on buttons'), enable_reset=True, key='/desktop/gnome/interface/buttons_have_icons'), changeicon_hbox, )) self.add_start(box, False, False, 0) box = ListPack(_("Screensaver"), ( WidgetFactory.create("GconfCheckButton", label=_("Enable user switching whilst screen is locked."), enable_reset=True, key="user_switch_enabled"), )) self.add_start(box, False, False, 0) self.recently_used = gtk.CheckButton(_('Enable system-wide "Recent Documents" list')) self.recently_used.connect('toggled', self.colleague_changed) self.recently_used.set_active(self.get_state()) box = ListPack(_("History"), ( self.recently_used, )) self.add_start(box, False, False, 0)
def CheckVersion(): server = ServerProxy("http://ubuntu-tweak.appspot.com/xmlrpc") settings = TweakSettings() try: version = server.version() url = server.get_url() except Error, e: print "Error:", e
def __init__(self): TweakModule.__init__(self, 'appcenter.ui') set_label_for_stock_button(self.sync_button, _('_Sync')) self.to_add = [] self.to_rm = [] self.package_worker = PACKAGE_WORKER self.url = APP_VERSION_URL self.appview = AppView() self.appview.set_status_active(TweakSettings.get_enable_new_item()) self.appview.update_model() self.appview.sort_model() self.appview.connect('changed', self.on_app_status_changed) self.app_selection = self.appview.get_selection() self.app_selection.connect('changed', self.on_app_selection) self.right_sw.add(self.appview) self.cateview = CategoryView(os.path.join(APPCENTER_ROOT, 'cates.json')) self.cateview.set_status_from_view(self.appview) self.cateview.update_model() self.cate_selection = self.cateview.get_selection() self.cate_selection.connect('changed', self.on_category_changed) self.left_sw.add(self.cateview) self.update_timestamp() self.show_all() UPDATE_SETTING.set_value(False) UPDATE_SETTING.connect_notify(self.on_have_update, data=None) if TweakSettings.get_sync_notify(): thread.start_new_thread(self.check_update, ()) gobject.timeout_add(60000, self.update_timestamp) self.reparent(self.main_vbox)
def __init__(self): TweakModule.__init__(self, 'sourcecenter.ui') self.url = SOURCE_VERSION_URL set_label_for_stock_button(self.sync_button, _('_Sync')) self.cateview = CategoryView(os.path.join(SOURCE_ROOT, 'cates.json')) self.cate_selection = self.cateview.get_selection() self.cate_selection.connect('changed', self.on_category_changed) self.left_sw.add(self.cateview) self.sourceview = SourcesView() self.sourceview.connect('sourcechanged', self.on_source_changed) self.sourceview.selection.connect('changed', self.on_selection_changed) self.sourceview.set_sensitive(False) self.sourceview.set_rules_hint(True) self.right_sw.add(self.sourceview) self.expander = gtk.Expander(_('Details')) self.vbox1.pack_start(self.expander, False, False, 0) self.sourcedetail = SourceDetail() self.expander.set_sensitive(False) self.expander.add(self.sourcedetail) un_lock = PolkitButton() un_lock.connect('changed', self.on_polkit_action) self.hbox2.pack_end(un_lock, False, False, 0) self.hbox2.reorder_child(un_lock, 0) #TODO when server is ready, work on it again # try: # if os.getenv('LANG').startswith('zh_CN'): # if TweakSettings.get_use_mirror_ppa(): # gobject.idle_add(self.start_check_cn_ppa) # else: # self.sourceview.unconver_ubuntu_cn_mirror() # except AttributeError: # pass # CONFIG.get_client().notify_add('/apps/ubuntu-tweak/use_mirror_ppa', # self.value_changed) self.update_timestamp() UPDATE_SETTING.set_value(False) UPDATE_SETTING.connect_notify(self.on_have_update, data=None) if TweakSettings.get_sync_notify(): thread.start_new_thread(self.check_update, ()) gobject.timeout_add(60000, self.update_timestamp) self.reparent(self.main_vbox)
def do_source_enable(self, iter, enable): """ Do the really source enable or disable action by iter Only emmit signal when source is changed """ model = self.modelfilter.get_model() url = model.get_value(iter, self.COLUMN_URL) icon = model.get_value(iter, self.COLUMN_LOGO) distro = model.get_value(iter, self.COLUMN_DISTRO) comment = model.get_value(iter, self.COLUMN_NAME) package = model.get_value(iter, self.COLUMN_SLUG) comps = model.get_value(iter, self.COLUMN_COMPS) key = model.get_value(iter, self.COLUMN_KEY) pre_status = self.get_sourcelist_status(url) if key: proxy.add_apt_key_from_content(key) if not comps and distro: distro = distro + "/" elif not comps and not distro: distro = "./" if TweakSettings.get_separated_sources(): result = proxy.set_separated_entry(url, distro, comps, comment, enable, package) else: result = proxy.set_entry(url, distro, comps, comment, enable) if str(result) == "enabled": model.set(iter, self.COLUMN_ENABLED, True) else: model.set(iter, self.COLUMN_ENABLED, False) if pre_status != enable: self.emit("sourcechanged") if enable: notify = pynotify.Notification( _("New source has been enabled"), _("%s is enabled now, Please click the refresh button to update the application cache.") % comment, ) notify.set_icon_from_pixbuf(icon) notify.set_hint_string("x-canonical-append", "") notify.show()
def do_source_enable(self, iter, enable): ''' Do the really source enable or disable action by iter Only emmit signal when source is changed ''' model = self.modelfilter.get_model() url = model.get_value(iter, self.COLUMN_URL) icon = model.get_value(iter, self.COLUMN_LOGO) distro = model.get_value(iter, self.COLUMN_DISTRO) comment = model.get_value(iter, self.COLUMN_NAME) package = model.get_value(iter, self.COLUMN_SLUG) comps = model.get_value(iter, self.COLUMN_COMPS) key = model.get_value(iter, self.COLUMN_KEY) pre_status = self.get_sourcelist_status(url) if key: proxy.add_apt_key_from_content(key) if not comps and distro: distro = distro + '/' elif not comps and not distro: distro = './' if TweakSettings.get_separated_sources(): result = proxy.set_separated_entry(url, distro, comps, comment, enable, package) else: result = proxy.set_entry(url, distro, comps, comment, enable) if str(result) == 'enabled': model.set(iter, self.COLUMN_ENABLED, True) else: model.set(iter, self.COLUMN_ENABLED, False) if pre_status != enable: self.emit('sourcechanged') if enable: notify.update(_('New source has been enabled'), _('%s is enabled now, Please click the refresh button to update the application cache.') % comment) notify.set_icon_from_pixbuf(icon) notify.show()
def setup_launch_function(self): from mainwindow import module_loader from mainwindow import ID_COLUMN, LOGO_COLUMN, TITLE_COLUMN function_box = self.worker.get_object('function_box') model = gtk.ListStore( gobject.TYPE_STRING, gtk.gdk.Pixbuf, gobject.TYPE_STRING) iter = model.append(None) model.set(iter, ID_COLUMN, 0, LOGO_COLUMN, None, TITLE_COLUMN, _('None') ) for module in module_loader.get_all_module(): iter = model.append(None) pixbuf = module_loader.get_pixbuf(module.__name__) model.set(iter, ID_COLUMN, module.__name__, LOGO_COLUMN, pixbuf, TITLE_COLUMN, module.__title__, ) function_box.set_model(model) textcell = gtk.CellRendererText() pixbufcell = gtk.CellRendererPixbuf() function_box.pack_start(pixbufcell, False) function_box.pack_start(textcell, True) function_box.add_attribute(textcell, 'text', TITLE_COLUMN) function_box.add_attribute(pixbufcell, 'pixbuf', LOGO_COLUMN) id = TweakSettings.get_default_launch() for i, row in enumerate(model): _id = model.get_value(row.iter, ID_COLUMN) if id == _id: function_box.set_active(i) function_box.connect('changed', self.on_launch_changed)
def check_version(self): gtk.gdk.threads_enter() version = TweakSettings.get_version() if version > VERSION: dialog = QuestionDialog(_( 'A newer version: %s is available online.\nWould you like to update?\n\nNote: if you prefer to update from the source code, you can disable this feature in Preferences.' ) % version, title=_('Software Update')) update = False if dialog.run() == gtk.RESPONSE_YES: update = True dialog.destroy() if update: dialog = UpdateDialog(parent=self.get_toplevel()) dialog.run() dialog.destroy() gtk.gdk.threads_leave()
def setup_launch_function(self): from ubuntutweak.mainwindow import MLOADER from ubuntutweak.mainwindow import MainWindow as MW function_box = self.worker.get_object('function_box') model = gtk.ListStore( gobject.TYPE_STRING, gtk.gdk.Pixbuf, gobject.TYPE_STRING) iter = model.append(None) model.set(iter, MW.ID_COLUMN, '', MW.LOGO_COLUMN, None, MW.TITLE_COLUMN, _('None') ) for module in MLOADER.get_all_module(): iter = model.append(None) model.set(iter, MW.ID_COLUMN, module.get_name(), MW.LOGO_COLUMN, module.get_pixbuf(), MW.TITLE_COLUMN, module.get_title(), ) function_box.set_model(model) textcell = gtk.CellRendererText() pixbufcell = gtk.CellRendererPixbuf() function_box.pack_start(pixbufcell, False) function_box.pack_start(textcell, True) function_box.add_attribute(textcell, 'text', MW.TITLE_COLUMN) function_box.add_attribute(pixbufcell, 'pixbuf', MW.LOGO_COLUMN) id = TweakSettings.get_default_launch() for i, row in enumerate(model): _id = model.get_value(row.iter, MW.ID_COLUMN) if id == _id: function_box.set_active(i) function_box.connect('changed', self.on_launch_changed)
def setup_launch_function(self): from ubuntutweak.mainwindow import MLOADER from ubuntutweak.mainwindow import MainWindow as MW function_box = self.worker.get_object('function_box') model = gtk.ListStore(gobject.TYPE_STRING, gtk.gdk.Pixbuf, gobject.TYPE_STRING) iter = model.append(None) model.set(iter, MW.ID_COLUMN, '', MW.LOGO_COLUMN, None, MW.TITLE_COLUMN, _('None')) for module in MLOADER.get_all_module(): iter = model.append(None) model.set( iter, MW.ID_COLUMN, module.get_name(), MW.LOGO_COLUMN, module.get_pixbuf(), MW.TITLE_COLUMN, module.get_title(), ) function_box.set_model(model) textcell = gtk.CellRendererText() pixbufcell = gtk.CellRendererPixbuf() function_box.pack_start(pixbufcell, False) function_box.pack_start(textcell, True) function_box.add_attribute(textcell, 'text', MW.TITLE_COLUMN) function_box.add_attribute(pixbufcell, 'pixbuf', MW.LOGO_COLUMN) id = TweakSettings.get_default_launch() for i, row in enumerate(model): _id = model.get_value(row.iter, MW.ID_COLUMN) if id == _id: function_box.set_active(i) function_box.connect('changed', self.on_launch_changed)
def __init__(self): TweakModule.__init__(self, 'thirdsoft.ui') self.cateview = CategoryView(os.path.join(SOURCE_ROOT, 'cates.json')) self.cate_selection = self.cateview.get_selection() self.cate_selection.connect('changed', self.on_category_changed) self.left_sw.add(self.cateview) self.sourceview = SourcesView() self.sourceview.connect('sourcechanged', self.colleague_changed) self.sourceview.selection.connect('changed', self.on_selection_changed) self.sourceview.set_sensitive(False) self.sourceview.set_rules_hint(True) self.right_sw.add(self.sourceview) self.expander = gtk.Expander(_('Details')) self.vbox1.pack_start(self.expander, False, False, 0) self.sourcedetail = SourceDetail() self.expander.set_sensitive(False) self.expander.add(self.sourcedetail) un_lock = PolkitButton() un_lock.connect('changed', self.on_polkit_action) self.hbox2.pack_end(un_lock, False, False, 0) self.hbox2.reorder_child(un_lock, 0) #FIXME China mirror hack if os.getenv('LANG').startswith('zh_CN'): if TweakSettings.get_use_mirror_ppa(): gobject.idle_add(self.start_check_cn_ppa) else: self.sourceview.unconver_ubuntu_cn_mirror() config.get_client().notify_add('/apps/ubuntu-tweak/use_mirror_ppa', self.value_changed) gobject.idle_add(self.on_idle_check)
def get_gui_state(self): self.set_default_size(*TweakSettings.get_window_size()) self.hpaned.set_position(TweakSettings.get_paned_size())
def save_gui_state(self): if TweakSettings.need_save: TweakSettings.set_window_size(*self.get_size()) TweakSettings.set_paned_size(self.hpaned.get_position())
def __init__(self): gtk.Window.__init__(self) self.notify_func = None self.connect("destroy", self.destroy) self.set_title(APP) self.set_default_size(740, 480) self.set_position(gtk.WIN_POS_CENTER) self.set_border_width(10) vbox = gtk.VBox(False, 6) self.add(vbox) self.hpaned = gtk.HPaned() vbox.pack_start(self.hpaned, True, True, 0) swindow = gtk.ScrolledWindow() swindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) swindow.set_size_request(150, -1) self.hpaned.pack1(swindow) self.model = self.__create_model() self.update_model() self.treeview = gtk.TreeView(self.model) self.treeview.set_enable_tree_lines(True) self.__add_columns(self.treeview) selection = self.treeview.get_selection() selection.connect("changed", self.selection_cb) self.treeview.expand_all() swindow.add(self.treeview) self.notebook = self.create_notebook() self.moduletable = {'0': 0} self.modules = {} self.hpaned.pack2(self.notebook) hbox = gtk.HBox(False, 12) vbox.pack_start(hbox, False, False, 0) button = gtk.Button(stock=gtk.STOCK_ABOUT) button.connect("clicked", self.show_about) hbox.pack_start(button, False, False, 0) d_button = gtk.Button(stock=gtk.STOCK_YES) set_label_for_stock_button(d_button, _('_Donate')) d_button.connect("clicked", self.on_d_clicked) hbox.pack_start(d_button, False, False, 0) button = gtk.Button(stock=gtk.STOCK_QUIT) button.connect("clicked", self.destroy) hbox.pack_end(button, False, False, 0) button = gtk.Button(stock=gtk.STOCK_PREFERENCES) button.connect('clicked', self.on_preferences_clicked) hbox.pack_end(button, False, False, 0) self.get_gui_state() self.set_icon(icon.get_from_name('ubuntu-tweak', size=48)) self.show_all() if TweakSettings.get_check_update(): log.debug("get_check_update will start after 5 seconds") gobject.timeout_add(5000, self.on_timeout) launch = TweakSettings.get_default_launch() try: if launch and not launch.isdigit(): self.__create_newpage(launch) except: pass # Only check if the distribution is supported if module_check.get_codename(): gobject.idle_add(self.notify_stable_source)
class Gnome(TweakModule): __title__ = _('GNOME Settings') __desc__ = _('A lot of GNOME settings for panels, menus and other desktop elements') __icon__ = ['gnome-desktop-config', 'control-center2'] __category__ = 'desktop' __desktop__ = ['gnome', 'une'] def __init__(self): TweakModule.__init__(self) self.__setting = TweakSettings() changeicon_hbox = self.create_change_icon_hbox() box = ListPack(_("Panel Settings"), ( WidgetFactory.create("GconfCheckButton", label=_("Display warning when removing a panel"), enable_reset=True, key="confirm_panel_remove"), WidgetFactory.create("GconfCheckButton", label=_("Complete lockdown of all panels"), enable_reset=True, key="locked_down"), WidgetFactory.create("GconfCheckButton", label=_("Enable panel animations"), enable_reset=True, key="enable_animations"), )) self.add_start(box, False, False, 0) box = ListPack(_("Menu Settings"), ( WidgetFactory.create("GconfCheckButton", label=_("Show Input Method menu in the context menu"), enable_reset=True, key="show_input_method_menu"), WidgetFactory.create("GconfCheckButton", label=_("Show Unicode Control Character menu in the context menu"), enable_reset=True, key="show_unicode_menu"), WidgetFactory.create("GconfCheckButton", label=_('Show icons in menus'), enable_reset=True, key='/desktop/gnome/interface/menus_have_icons'), WidgetFactory.create("GconfCheckButton", label=_('Show icons on buttons'), enable_reset=True, key='/desktop/gnome/interface/buttons_have_icons'), changeicon_hbox, )) self.add_start(box, False, False, 0) box = ListPack(_("Screensaver"), ( WidgetFactory.create("GconfCheckButton", label=_("Enable user switching whilst screen is locked."), enable_reset=True, key="user_switch_enabled"), )) self.add_start(box, False, False, 0) current_terminal_profile_key = GconfSetting('/apps/gnome-terminal/global/default_profile') current_terminal_profile = current_terminal_profile_key.get_value() default_show_menubar_key = '/apps/gnome-terminal/profiles/%s/default_show_menubar' % current_terminal_profile box = ListPack(_("Terminal"), ( WidgetFactory.create("GconfCheckButton", label=_("Display menubar when Terminal starts up (for current profile)"), enable_reset=True, key=default_show_menubar_key), )) self.add_start(box, False, False, 0) self.recently_used = gtk.CheckButton(_('Enable system-wide "Recent Documents" list')) self.recently_used.connect('toggled', self.colleague_changed) self.recently_used.set_active(self.get_state()) box = ListPack(_("History"), ( self.recently_used, )) self.add_start(box, False, False, 0) def create_change_icon_hbox(self): hbox = gtk.HBox(False, 10) label = gtk.Label(_('Click this button to change the menu logo image')) 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(icon.get_from_name('start-here')) 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 image'), 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 images with 24x24 size or SVG images")) filter.add_pattern('*.png') filter.add_pattern('*.svg') dialog.set_current_folder(os.path.expanduser('~')) dialog.add_filter(filter) if module_check.get_codename() == 'karmic': dest = os.path.expanduser('~/.icons/%s/places/24/start-here' % self.__setting.get_icon_theme()) else: dest = os.path.expanduser('~/.icons/%s/apps/24/start-here' % self.__setting.get_icon_theme()) revert_button = dialog.action_area.get_children()[-1] HAVE_ICON = os.path.exists(dest + '.png') or os.path.exists(dest + '.svg') if not HAVE_ICON: revert_button.set_sensitive(False) filename = '' response = dialog.run() if response == gtk.RESPONSE_ACCEPT: filename = dialog.get_filename() dialog.destroy() if filename: ext = os.path.splitext(filename)[1] log.debug('The select file name is: %s' % ext) pixbuf = gtk.gdk.pixbuf_new_from_file(filename) w, h = pixbuf.get_width(), pixbuf.get_height() dest = dest + ext if ext == '.png' and (w != 24 or h != 24): ErrorDialog(_("This image size isn't suitable for the panel.\nIt should measure 24x24.")).launch() return else: os.system('mkdir -p %s' % os.path.dirname(dest)) os.system('cp %s %s' % (filename, dest)) if ext == '.svg': pixbuf = pixbuf.scale_simple(24, 24, gtk.gdk.INTERP_BILINEAR) image = gtk.image_new_from_pixbuf(pixbuf) widget.set_image(image) elif response == gtk.RESPONSE_DELETE_EVENT: dialog.destroy() for dest in glob.glob(dest + '*'): os.remove(dest) image = gtk.image_new_from_pixbuf(icon.get_from_name('start-here', force_reload=True)) widget.set_image(image) 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() def get_state(self): file = os.path.join(os.path.expanduser("~"), ".recently-used.xbel") if os.path.exists(file): if os.path.isdir(file): return False elif os.path.isfile(file): return True else: return True def colleague_changed(self, widget): enabled = self.recently_used.get_active() file = os.path.expanduser("~/.recently-used.xbel") if enabled: os.system('rm -r %s' % file) os.system('touch %s' % file) else: dialog = WarningDialog(_('Disabling "Recent Documents" may break other software, for example the history feature in VMware Player.'), title=_("Warning")) if dialog.run() == gtk.RESPONSE_YES: os.system('rm -r %s' % file) os.system('mkdir %s' % file) else: widget.set_active(True) dialog.destroy()
def __init__(self): TweakModule.__init__(self, 'sourcecenter.ui') self.url = SOURCE_VERSION_URL set_label_for_stock_button(self.sync_button, _('_Sync')) self.sourceview = SourcesView() self.sourceview.set_status_active(TweakSettings.get_enable_new_item()) self.sourceview.update_model() self.sourceview.connect('sourcechanged', self.on_source_changed) self.sourceview.selection.connect('changed', self.on_selection_changed) self.sourceview.set_sensitive(False) self.sourceview.set_rules_hint(True) self.source_selection = self.sourceview.get_selection() self.source_selection.connect('changed', self.on_source_selection) self.right_sw.add(self.sourceview) self.cateview = CategoryView(os.path.join(SOURCE_ROOT, 'cates.json')) self.cateview.set_status_from_view(self.sourceview) self.cateview.update_model() self.cate_selection = self.cateview.get_selection() self.cate_selection.connect('changed', self.on_category_changed) self.left_sw.add(self.cateview) self.expander = gtk.Expander(_('Details')) self.vbox1.pack_start(self.expander, False, False, 0) self.sourcedetail = SourceDetail() self.expander.set_sensitive(False) self.expander.add(self.sourcedetail) un_lock = PolkitButton() un_lock.connect('changed', self.on_polkit_action) self.hbuttonbox1.pack_end(un_lock, False, False, 0) #TODO when server is ready, work on it again # try: # if os.getenv('LANG').startswith('zh_CN'): # if TweakSettings.get_use_mirror_ppa(): # gobject.idle_add(self.start_check_cn_ppa) # else: # self.sourceview.unconver_ubuntu_cn_mirror() # except AttributeError: # pass # CONFIG.get_client().notify_add('/apps/ubuntu-tweak/use_mirror_ppa', # self.value_changed) self.update_timestamp() UPDATE_SETTING.set_value(False) UPDATE_SETTING.connect_notify(self.on_have_update, data=None) if TweakSettings.get_sync_notify(): log.debug('Start check update') thread.start_new_thread(self.check_update, ()) gobject.timeout_add(60000, self.update_timestamp) if self.check_source_upgradable() and UPGRADE_DICT: gobject.idle_add(self.upgrade_sources) self.reparent(self.main_vbox)
def on_font_color_set(self, widget): TweakSettings.set_toolbar_font_color(widget.get_color().to_string())
def on_launch_changed(self, widget): index = widget.get_active() liststore = widget.get_model() iter = liststore.get_iter(index) id = liststore.get_value(iter, 0) TweakSettings.set_default_launch(id)
def __init__(self): gtk.Window.__init__(self) self.notify_func = None self.connect("destroy", self.destroy) self.set_title(APP) self.set_default_size(740, 480) self.set_position(gtk.WIN_POS_CENTER) self.set_border_width(10) vbox = gtk.VBox(False, 6) self.add(vbox) self.hpaned = gtk.HPaned() vbox.pack_start(self.hpaned, True, True, 0) swindow = gtk.ScrolledWindow() swindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) swindow.set_size_request(150, -1) self.hpaned.pack1(swindow) self.model = self.__create_model() self.update_model() self.treeview = gtk.TreeView(self.model) self.treeview.set_enable_tree_lines(True) self.__add_columns(self.treeview) selection = self.treeview.get_selection() selection.connect("changed", self.selection_cb) self.treeview.expand_all() swindow.add(self.treeview) self.notebook = self.create_notebook() self.moduletable = {'0': 0} self.modules = {} self.hpaned.pack2(self.notebook) hbox = gtk.HBox(False, 12) vbox.pack_start(hbox, False, False, 0) l_hbutton_box = gtk.HButtonBox() l_hbutton_box.set_spacing(12) hbox.pack_start(l_hbutton_box, False, False, 0) button = gtk.Button(stock=gtk.STOCK_ABOUT) button.connect("clicked", self.show_about) l_hbutton_box.pack_start(button, False, False, 0) d_button = gtk.Button(stock=gtk.STOCK_YES) set_label_for_stock_button(d_button, _('_Donate')) d_button.connect("clicked", self.on_d_clicked) l_hbutton_box.pack_start(d_button, False, False, 0) r_hbutton_box = gtk.HButtonBox() r_hbutton_box.set_spacing(12) hbox.pack_end(r_hbutton_box, False, False, 0) button = gtk.Button(stock=gtk.STOCK_PREFERENCES) button.connect('clicked', self.on_preferences_clicked) r_hbutton_box.pack_end(button, False, False, 0) button = gtk.Button(stock=gtk.STOCK_QUIT) button.connect("clicked", self.destroy) r_hbutton_box.pack_end(button, False, False, 0) self.get_gui_state() self.set_icon(icon.get_from_name('ubuntu-tweak', size=48)) self.show_all() if TweakSettings.get_check_update(): log.debug("get_check_update will start after 5 seconds") gobject.timeout_add(5000, self.on_timeout) launch = TweakSettings.get_default_launch() try: if launch and not launch.isdigit(): self.__create_newpage(launch) except: pass # Only check if the distribution is supported if system.is_supported(): gobject.idle_add(self.notify_stable_source) try: log.debug("Check the sources list to make it valid") valid, disabled_list = proxy.check_sources_is_valid( TweakSettings.get_separated_sources()) if not valid: gobject.idle_add(self.notify_invalid_sources, disabled_list) except Exception, e: log.error(e)
def on_never_show(self, widget, action): TweakSettings.set_show_donate_notify(False)
def has_mirror_ppa(self, url): if TweakSettings.get_use_mirror_ppa(): return LAUNCHPAD_STR in url and url.split("/")[3] in PPA_MIRROR else: return False
def on_launch_changed(self, widget, data=None): index = widget.get_active() liststore = widget.get_model() iter = liststore.get_iter(index) id = liststore.get_value(iter, 0) TweakSettings.set_default_launch(id)
class Gnome(TweakModule): __title__ = _('GNOME Settings') __desc__ = _('A lot of GNOME settings about panel, menu and others') __icon__ = ['gnome-desktop-config', 'control-center2'] __category__ = 'desktop' __desktop__ = 'gnome' def __init__(self): TweakModule.__init__(self) self.__setting = TweakSettings() changeicon_hbox = self.create_change_icon_hbox() box = ListPack(_("Panel Settings"), ( WidgetFactory.create("GconfCheckButton", label=_("Display warning when removing a panel"), key="confirm_panel_remove"), WidgetFactory.create("GconfCheckButton", label=_("Complete lockdown of all panels"), key="locked_down"), WidgetFactory.create("GconfCheckButton", label=_("Enable panel animations"), key="enable_animations"), )) self.add_start(box, False, False, 0) box = ListPack(_("Menu Settings"), ( WidgetFactory.create("GconfCheckButton", label=_("Show Input Method menu on the context menu"), key="show_input_method_menu"), WidgetFactory.create("GconfCheckButton", label=_("Show Unicode Method menu on the context menu"), key="show_unicode_menu"), WidgetFactory.create("GconfCheckButton", label=_('Menus have icons'), key='/desktop/gnome/interface/menus_have_icons'), WidgetFactory.create("GconfCheckButton", label=_('Buttons have icons'), key='/desktop/gnome/interface/buttons_have_icons'), changeicon_hbox, )) self.add_start(box, False, False, 0) box = ListPack(_("Screensaver"), ( WidgetFactory.create("GconfCheckButton", label=_("Enable user switching when screen is locked."), key="user_switch_enabled"), )) self.add_start(box, False, False, 0) self.recently_used = gtk.CheckButton(_('Enable system-wide "Recently Documents" list')) self.recently_used.connect('toggled', self.colleague_changed) self.recently_used.set_active(self.get_state()) box = ListPack(_("History"), ( self.recently_used, )) self.add_start(box, False, False, 0) 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/places/24/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() dialog.destroy() 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() return 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) elif response == gtk.RESPONSE_DELETE_EVENT: dialog.destroy() os.remove(dest) image = gtk.image_new_from_pixbuf(get_icon_with_name('start-here', 24)) widget.set_image(image) else: 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() def get_state(self): file = os.path.join(os.path.expanduser("~"), ".recently-used.xbel") if os.path.exists(file): if os.path.isdir(file): return False elif os.path.isfile(file): return True else: return True def colleague_changed(self, widget): enabled = self.recently_used.get_active() file = os.path.expanduser("~/.recently-used.xbel") if enabled: os.system('rm -r %s' % file) os.system('touch %s' % file) else: os.system('rm -r %s' % file) os.system('mkdir %s' % file)
def on_reset_clicked(self, widget, colorbutton): color = gtk.gdk.Color(32767, 32767, 32767) colorbutton.set_color(color) TweakSettings.set_toolbar_color(color.to_string())
def on_font_reset_clicked(self, widget, colorbutton): color = gtk.gdk.Color(65535, 65535, 65535) colorbutton.set_color(color) TweakSettings.set_toolbar_font_color(color.to_string())
def has_mirror_ppa(self, url): if TweakSettings.get_use_mirror_ppa(): return ppa.is_ppa(url) and url.split('/')[3] in PPA_MIRROR else: return False
def __init__(self): TweakModule.__init__(self) self.__setting = TweakSettings() changeicon_hbox = self.create_change_icon_hbox() box = TablePack(_("Panel Settings"), ( WidgetFactory.create("GconfCheckButton", label=_("Display warning when removing a panel"), enable_reset=True, key="confirm_panel_remove"), WidgetFactory.create("GconfCheckButton", label=_("Complete lockdown of all panels"), enable_reset=True, key="locked_down"), WidgetFactory.create("GconfCheckButton", label=_("Enable panel animations"), enable_reset=True, key="enable_animations"), WidgetFactory.create('GconfComboBox', label=_('Me Menu Setting'), key='/system/indicator/me/display', texts=[_("Don't Display"), _('Display user name'), _('Display real name')], values=[0, 1, 2], type='int') )) self.add_start(box, False, False, 0) box = ListPack(_("Menu Settings"), ( WidgetFactory.create("GconfCheckButton", label=_("Show Input Method menu in the context menu"), enable_reset=True, key="show_input_method_menu"), WidgetFactory.create("GconfCheckButton", label=_("Show Unicode Control Character menu in the context menu"), enable_reset=True, key="show_unicode_menu"), WidgetFactory.create("GconfCheckButton", label=_('Show icons in menus'), enable_reset=True, key='/desktop/gnome/interface/menus_have_icons'), WidgetFactory.create("GconfCheckButton", label=_('Show icons on buttons'), enable_reset=True, key='/desktop/gnome/interface/buttons_have_icons'), changeicon_hbox, )) self.add_start(box, False, False, 0) box = ListPack(_("Screensaver"), ( WidgetFactory.create("GconfCheckButton", label=_("Enable user switching whilst screen is locked."), enable_reset=True, key="user_switch_enabled"), )) self.add_start(box, False, False, 0) current_terminal_profile_key = GconfSetting('/apps/gnome-terminal/global/default_profile') current_terminal_profile = current_terminal_profile_key.get_value() default_show_menubar_key = '/apps/gnome-terminal/profiles/%s/default_show_menubar' % current_terminal_profile box = ListPack(_("Terminal"), ( WidgetFactory.create("GconfCheckButton", label=_("Display menubar when Terminal starts up (for current profile)"), enable_reset=True, key=default_show_menubar_key), )) self.add_start(box, False, False, 0) self.recently_used = gtk.CheckButton(_('Enable system-wide "Recent Documents" list')) self.recently_used.connect('toggled', self.colleague_changed) self.recently_used.set_active(self.get_state()) box = ListPack(_("History"), ( self.recently_used, )) self.add_start(box, False, False, 0)
def __init__(self, parent=None): DownloadDialog.__init__(self, url=TweakSettings.get_url(), title=_('Download Ubuntu Tweak %s') % TweakSettings.get_version(), parent=parent)
def has_mirror_ppa(self, url): if TweakSettings.get_use_mirror_ppa(): return PPA_URL in url and url.split('/')[3] in PPA_MIRROR else: return False
def __init__(self): gtk.Window.__init__(self) self.connect("destroy", self.destroy) self.set_title(APP) self.set_default_size(740, 480) self.set_position(gtk.WIN_POS_CENTER) self.set_border_width(10) vbox = gtk.VBox(False, 0) self.add(vbox) self.hpaned = gtk.HPaned() vbox.pack_start(self.hpaned, True, True, 0) sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) sw.set_size_request(150, -1) self.hpaned.pack1(sw) self.model = self.__create_model() self.update_model() self.treeview = gtk.TreeView(self.model) self.treeview.set_enable_tree_lines(True) self.__add_columns(self.treeview) selection = self.treeview.get_selection() selection.connect("changed", self.selection_cb) self.treeview.expand_all() sw.add(self.treeview) self.notebook = self.create_notebook() self.moduletable = {'0': 0} self.modules = {} self.hpaned.pack2(self.notebook) hbox = gtk.HBox(False, 5) vbox.pack_start(hbox, False, False, 5) button = gtk.Button(stock = gtk.STOCK_ABOUT) button.connect("clicked", self.show_about) hbox.pack_start(button, False, False, 0) d_button = gtk.Button(stock = gtk.STOCK_YES) set_label_for_stock_button(d_button, _('_Donate')) d_button.connect("clicked", self.on_d_clicked) hbox.pack_start(d_button, False, False, 0) button = gtk.Button(stock = gtk.STOCK_QUIT) button.connect("clicked", self.destroy); hbox.pack_end(button, False, False, 0) button = gtk.Button(stock = gtk.STOCK_PREFERENCES) button.connect('clicked', self.on_preferences_clicked) hbox.pack_end(button, False, False, 0) self.get_gui_state() self.set_icon(icon.get_with_name('ubuntu-tweak', size=48)) self.show_all() if TweakSettings.get_check_update(): gobject.timeout_add(5000, self.on_timeout) launch = TweakSettings.get_default_launch() if launch and launch != '0': self.__create_newpage(launch)