def func_wrapper(self, *args, **kwargs): launcher_setting = GSetting('com.canonical.Unity.Launcher.favorites') is_user_desktop_file = self.is_user_desktop_file() if not is_user_desktop_file: log.debug("Copy %s to user folder, then write it" % self.filename) shutil.copy(self.get_system_desktop_file(), self.get_user_desktop_file()) self.filename = self.get_user_desktop_file() self.parse(self.filename) func(self, *args, **kwargs) if not is_user_desktop_file: current_list = launcher_setting.get_value() try: index = current_list.index(self.get_system_desktop_file()) except Exception, e: log.debug(e) index = current_list.index(os.path.basename(self.get_system_desktop_file())) current_list[index] = self.filename launcher_setting.set_value(current_list) log.debug("current_list: %s" % current_list) log.debug("Now set the current list")
class Entry(Gtk.Entry): def __init__(self, key=None, default=None, backend=GConf): gobject.GObject.__init__(self) if backend == GConf: self.setting = GconfSetting(key=key, default=default, type=str) else: self.setting = GSetting(key=key, default=default, type=str) string = self.setting.get_value() if string: self.set_text(str(string)) else: self.set_text(_("Unset")) self.connect('activate', self.on_edit_finished_cb) def is_changed(self): return self.setting.get_value() != self.get_text() def get_gsetting(self): return self.setting def on_edit_finished_cb(self, widget): if self.get_text(): print self.get_text() self.setting.set_value(self.get_text()) else: self.setting.client.unset(self.setting.key) self.set_text(_("Unset"))
class Entry(Gtk.Entry): def __init__(self, key=None, default=None, backend='gconf'): GObject.GObject.__init__(self) if backend == 'gconf': self._setting = GconfSetting(key=key, default=default, type=str) else: self._setting = GSetting(key=key, default=default, type=str) string = self._setting.get_value() if string: self.set_text(str(string)) text_buffer = self.get_buffer() text_buffer.connect('inserted-text', self.on_edit_finished_cb) text_buffer.connect('deleted-text', self.on_edit_finished_cb) self.connect('activate', self.on_edit_finished_cb) def is_changed(self): return self._setting.get_value() != self.get_text() def get_gsetting(self): return self._setting def on_edit_finished_cb(self, widget, *args): log.debug('Entry: on_edit_finished_cb: %s' % self.get_text()) self._setting.set_value(self.get_text())
class QuickLists(TweakModule): __title__ = _('QuickLists Editor') __desc__ = _('Unity Launcher QuickLists Editor') __icon__ = 'plugin-unityshell' __category__ = 'desktop' __desktop__ = ['ubuntu', 'ubuntu-2d'] __utactive__ = True (DESKTOP_FILE, DESKTOP_ICON, DESKTOP_NAME, DESKTOP_ENTRY) = range(4) (ACTION_NAME, ACTION_FULLNAME, ACTION_EXEC, ACTION_ENABLED, ACTION_ENTRY) = range(5) def __init__(self): TweakModule.__init__(self, 'quicklists.ui') self.launcher_setting = GSetting('com.canonical.Unity.Launcher.favorites') self.launcher_setting.connect_notify(self.update_launch_icon_model) self.action_view.get_selection().connect('changed', self.on_action_selection_changed) self.update_launch_icon_model() self.add_start(self.main_paned) @log_func(log) def update_launch_icon_model(self, *args): self.icon_model.clear() for desktop_file in self.launcher_setting.get_value(): log.debug('Processing with "%s"...' % desktop_file) if desktop_file.startswith('/') and os.path.exists(desktop_file): path = desktop_file else: if os.path.exists('/usr/share/applications/%s' % desktop_file): path = '/usr/share/applications/%s' % desktop_file else: log.debug("No desktop file avaialbe in for %s" % desktop_file) continue try: entry = NewDesktopEntry(path) except Exception, e: log_traceback(log) continue self.icon_model.append((path,\ icon.get_from_name(entry.getIcon(), size=32),\ entry.getName(), entry)) first_iter = self.icon_model.get_iter_first() if first_iter: self.icon_view.get_selection().select_iter(first_iter)
def on_wallpaper_downloaded(self, downloader): os.rename(downloader.get_downloaded_file(), self.wallpaper_path) wallpaper_setting = GSetting('org.gnome.desktop.background.picture-uri') wallpaper_setting.set_value(GLib.filename_to_uri(self.wallpaper_path, None)) n = Notify.Notification.new(self.__title__, "Set wallpaper successfully!", 'ubuntu-tweak') n.show()
def __init__(self, key, min=0, max=0, step=0, backend='gconf'): if backend == 'gconf': self._setting = GconfSetting(key=key, type=int) else: self._setting = GSetting(key=key, type=int) adjust = Gtk.Adjustment(self._setting.get_value(), min, max, step) GObject.GObject.__init__(self, adjustment=adjust) self.connect('value-changed', self.on_value_changed)
class QuickLists(TweakModule): __title__ = _("QuickLists Editor") __desc__ = _("Unity Launcher QuickLists Editor") __icon__ = "plugin-unityshell" __category__ = "desktop" __desktop__ = ["ubuntu", "ubuntu-2d"] __utactive__ = True (DESKTOP_FILE, DESKTOP_ICON, DESKTOP_NAME, DESKTOP_ENTRY) = range(4) (ACTION_NAME, ACTION_FULLNAME, ACTION_EXEC, ACTION_ENABLED, ACTION_ENTRY) = range(5) def __init__(self): TweakModule.__init__(self, "quicklists.ui") self.launcher_setting = GSetting("com.canonical.Unity.Launcher.favorites") self.launcher_setting.connect_notify(self.update_launch_icon_model) self.action_view.get_selection().connect("changed", self.on_action_selection_changed) self.update_launch_icon_model() self.add_start(self.main_paned) @log_func(log) def update_launch_icon_model(self, *args): self.icon_model.clear() for desktop_file in self.launcher_setting.get_value(): log.debug('Processing with "%s"...' % desktop_file) if desktop_file.startswith("/") and os.path.exists(desktop_file): path = desktop_file else: user_path = os.path.join(NewDesktopEntry.user_folder, desktop_file) system_path = os.path.join(NewDesktopEntry.system_folder, desktop_file) if os.path.exists(user_path): path = user_path elif os.path.exists(system_path): path = system_path else: log.debug("No desktop file avaialbe in for %s" % desktop_file) continue try: entry = NewDesktopEntry(path) except Exception, e: log_traceback(log) continue self.icon_model.append((path, icon.get_from_name(entry.getIcon(), size=32), entry.getName(), entry)) first_iter = self.icon_model.get_iter_first() if first_iter: self.icon_view.get_selection().select_iter(first_iter)
def __init__(self): TweakModule.__init__(self, 'quicklists.ui') self.launcher_setting = GSetting('com.canonical.Unity.Launcher.favorites') self.launcher_setting.connect_notify(self.update_launch_icon_model) self.action_view.get_selection().connect('changed', self.on_action_selection_changed) self.update_launch_icon_model() self.add_start(self.main_paned)
def __init__(self, key, backend=GConf): gobject.GObject.__init__(self) if backend == GConf: self.setting = GconfSetting(key=key, type=bool) else: self.setting = GSetting(key=key, type=bool) self.set_property('image', Gtk.Image.new_from_stock(Gtk.STOCK_REVERT_TO_SAVED, Gtk.IconSize.MENU)) self.set_tooltip_text(_('Reset setting to default value: %s') % self.get_default_value())
def on_wallpaper_downloaded(self, downloader): os.rename(downloader.get_downloaded_file(), self.wallpaper_path) wallpaper_setting = GSetting( 'org.gnome.desktop.background.picture-uri') wallpaper_setting.set_value( GLib.filename_to_uri(self.wallpaper_path, None)) n = Notify.Notification.new(self.__title__, "Set wallpaper successfully!", 'ubuntu-tweak') n.show()
def __init__(self, key=None, default=None, backend='gconf'): GObject.GObject.__init__(self) self.set_use_font(True) self.set_use_size(True) if backend == 'gconf': self._setting = GconfSetting(key=key, default=default, type=str) else: self._setting = GSetting(key=key, default=default, type=str) self.on_value_changed() self.connect('font-set', self.on_font_set) self._setting.connect_notify(self.on_value_changed)
def __init__(self, label=None, key=None, default=None, tooltip=None, backend=GConf): gobject.GObject.__init__(self, label=label) if backend == GConf: self.setting = GconfSetting(key=key, default=default, type=bool) elif backend == Gio: self.setting = GSetting(key=key, default=default, type=bool) self.set_active(self.setting.get_value()) if tooltip: self.set_tooltip_text(tooltip) self.setting.connect_notify(self.on_value_changed) self.connect('toggled', self.on_button_toggled)
class ClipPage(Gtk.VBox, GuiBuilder): __gsignals__ = { 'load_module': (GObject.SignalFlags.RUN_FIRST, None, (GObject.TYPE_STRING,)), 'load_feature': (GObject.SignalFlags.RUN_FIRST, None, (GObject.TYPE_STRING,)) } def __init__(self): GObject.GObject.__init__(self) GuiBuilder.__init__(self, 'clippage.ui') self.recently_used_settings = GSetting('com.ubuntu-tweak.tweak.recently-used') self.clips_settings = GSetting('com.ubuntu-tweak.tweak.clips') self.load_cips() self.setup_recently_used() self.pack_start(self.get_object('hbox1'), True, True, 0) self.recently_used_settings.connect_notify(self.setup_recently_used) self.clips_settings.connect_notify(self.load_cips, True) self.show() def load_cips(self, a=None, b=None, do_remove=False): log.debug("Load clips, do_remove: %s" % do_remove) if do_remove: for child in self.clipvbox.get_children(): log.debug("Remove clip: %s" % child) self.clipvbox.remove(child) clips = self.clips_settings.get_value() log.debug("All clips to load: %s" % clips) if clips and clips != ['']: loader = ModuleLoader('clips') for name in clips: try: ClipClass = loader.get_module(name) log.debug("Load clip: %s" % name) clip = ClipClass() clip.connect('load_module', self._on_module_button_clicked) clip.connect('load_feature', self.on_clip_load_feature) clip.show_all() self.clipvbox.pack_start(clip, False, False, 0) except Exception, e: log.error(traceback.print_exc()) if name in self.clips_settings.get_value(): new_list = self.clips_settings.get_value().remove(name) self.clips_settings.set_value(new_list)
def __init__(self): GObject.GObject.__init__(self) GuiBuilder.__init__(self, 'clippage.ui') self.recently_used_settings = GSetting('com.ubuntu-tweak.tweak.recently-used') self.clips_settings = GSetting('com.ubuntu-tweak.tweak.clips') self.load_cips() self.setup_recently_used() self.pack_start(self.get_object('hbox1'), True, True, 0) self.recently_used_settings.connect_notify(self.setup_recently_used) self.clips_settings.connect_notify(self.load_cips, True) self.show()
def __init__(self, key=None, default=None, backend=GConf): gobject.GObject.__init__(self) if backend == GConf: self.setting = GconfSetting(key=key, default=default, type=str) else: self.setting = GSetting(key=key, default=default, type=str) string = self.setting.get_value() if string: self.set_text(str(string)) else: self.set_text(_("Unset")) self.connect('activate', self.on_edit_finished_cb)
class ClipPage(Gtk.VBox, GuiBuilder): __gsignals__ = { 'load_module': (GObject.SignalFlags.RUN_FIRST, None, (GObject.TYPE_STRING, )), 'load_feature': (GObject.SignalFlags.RUN_FIRST, None, (GObject.TYPE_STRING, )) } def __init__(self): GObject.GObject.__init__(self) GuiBuilder.__init__(self, 'clippage.ui') self.recently_used_settings = GSetting( 'com.ubuntu-tweak.tweak.recently-used') self.clips_settings = GSetting('com.ubuntu-tweak.tweak.clips') self.load_cips() self.setup_recently_used() self.pack_start(self.get_object('hbox1'), True, True, 0) self.recently_used_settings.connect_notify(self.setup_recently_used) self.clips_settings.connect_notify(self.load_cips, True) self.show() def load_cips(self, a=None, b=None, do_remove=False): log.debug("Load clips, do_remove: %s" % do_remove) if do_remove: for child in self.clipvbox.get_children(): log.debug("Remove clip: %s" % child) self.clipvbox.remove(child) clips = self.clips_settings.get_value() log.debug("All clips to load: %s" % clips) if clips and clips != ['']: loader = ModuleLoader('clips') for name in clips: try: ClipClass = loader.get_module(name) log.debug("Load clip: %s" % name) clip = ClipClass() clip.connect('load_module', self._on_module_button_clicked) clip.connect('load_feature', self.on_clip_load_feature) clip.show_all() self.clipvbox.pack_start(clip, False, False, 0) except Exception, e: log.error(traceback.print_exc()) if name in self.clips_settings.get_value(): new_list = self.clips_settings.get_value().remove(name) self.clips_settings.set_value(new_list)
def __init__(self): GObject.GObject.__init__(self) GuiBuilder.__init__(self, 'clippage.ui') self.recently_used_settings = GSetting( 'com.ubuntu-tweak.tweak.recently-used') self.clips_settings = GSetting('com.ubuntu-tweak.tweak.clips') self.load_cips() self.setup_recently_used() self.pack_start(self.get_object('hbox1'), True, True, 0) self.recently_used_settings.connect_notify(self.setup_recently_used) self.clips_settings.connect_notify(self.load_cips, True) self.show()
def __init__(self, key=None, default=None, backend='gconf'): GObject.GObject.__init__(self) if backend == 'gconf': self._setting = GconfSetting(key=key, default=default, type=str) else: self._setting = GSetting(key=key, default=default, type=str) string = self._setting.get_value() if string: self.set_text(str(string)) text_buffer = self.get_buffer() text_buffer.connect('inserted-text', self.on_edit_finished_cb) text_buffer.connect('deleted-text', self.on_edit_finished_cb) self.connect('activate', self.on_edit_finished_cb)
def __init__(self): gobject.GObject.__init__(self) GuiBuilder.__init__(self, 'clippage.ui') self.rencently_used_settings = GSetting('com.ubuntu-tweak.tweak.rencently-used') self.clips_settings = GSetting('com.ubuntu-tweak.tweak.clips') self._up_clips = [] self._showed_clips = [] self._down_clips = [] self.load_cips() self.setup_rencently_used() self.pack_start(self.get_object('hbox1'), True, True, 0) self.connect('expose-event', self.on_expose_event) self.rencently_used_settings.connect_notify(self.setup_rencently_used) self.clips_settings.connect_notify(self.load_cips, True) self.show()
class FontButton(Gtk.FontButton): def __init__(self, key=None, default=None, backend='gconf'): GObject.GObject.__init__(self) self.set_use_font(True) self.set_use_size(True) if backend == 'gconf': self._setting = GconfSetting(key=key, default=default, type=str) else: self._setting = GSetting(key=key, default=default, type=str) self.on_value_changed() self.connect('font-set', self.on_font_set) self._setting.connect_notify(self.on_value_changed) def on_font_set(self, widget): self._setting.set_value(self.get_font_name()) def on_value_changed(self, *args): string = self._setting.get_value() if string: self.set_font_name(string)
def create_edge_setting(self): hbox = Gtk.HBox(spacing=12) left_vbox = Gtk.VBox(spacing=6) self.TopLeft = EdgeComboBox("TopLeft") left_vbox.pack_start(self.TopLeft, False, False, 0) self.BottomLeft = EdgeComboBox("BottomLeft") left_vbox.pack_end(self.BottomLeft, False, False, 0) wallpaper = get_local_path( GSetting('org.gnome.desktop.background.picture-uri').get_value()) if wallpaper: try: pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size( wallpaper, 160, 100) except GObject.GError: pixbuf = icon.get_from_name('ubuntu-tweak', size=128) else: pixbuf = icon.get_from_name('ubuntu-tweak', size=128) image = Gtk.Image.new_from_pixbuf(pixbuf) right_vbox = Gtk.VBox(spacing=6) self.TopRight = EdgeComboBox("TopRight") right_vbox.pack_start(self.TopRight, False, False, 0) self.BottomRight = EdgeComboBox("BottomRight") right_vbox.pack_end(self.BottomRight, False, False, 0) if self.is_arabic: hbox.pack_start(right_vbox, False, False, 0) hbox.pack_start(image, False, False, 0) hbox.pack_start(left_vbox, False, False, 0) else: hbox.pack_start(left_vbox, False, False, 0) hbox.pack_start(image, False, False, 0) hbox.pack_start(right_vbox, False, False, 0) for edge in ('TopLeft', 'TopRight', 'BottomLeft', 'BottomRight'): getattr(self, edge).connect('edge_changed', self.on_edge_changed) return hbox
class ResetButton(Gtk.Button): def __init__(self, key, backend='gconf'): GObject.GObject.__init__(self) if backend == 'gconf': self._setting = GconfSetting(key=key, type=bool) elif backend == 'compiz': self._setting = CompizSetting(key=key) else: self._setting = GSetting(key=key, type=bool) self.set_property('image', Gtk.Image.new_from_stock(Gtk.STOCK_REVERT_TO_SAVED, Gtk.IconSize.MENU)) self.set_tooltip_text(_('Reset setting to default value: %s') % self.get_default_value()) def get_default_value(self): return self._setting.get_schema_value()
def __init__(self, **kwargs): key = kwargs['key'] backend = kwargs['backend'] default = kwargs['default'] type = kwargs['type'] if backend == 'gconf': self._setting = GconfSetting(key=key, default=default, type=type) elif backend == 'gsettings': self._setting = GSetting(key=key, default=default, type=type) elif backend == 'config': self._setting = ConfigSetting(key=key, type=type) elif backend == 'compiz': self._setting = CompizSetting(key=key) elif backend == 'systemconfig': self._setting = SystemConfigSetting(key=key, default=default, type=type) if hasattr(self._setting, 'connect_notify') and \ hasattr(self, 'on_value_changed'): log.debug("Connect the setting notify to on_value_changed: %s" % key) self.get_setting().connect_notify(self.on_value_changed)
class TestRencently(unittest.TestCase): def setUp(self): self.window = UbuntuTweakWindow() self.window.loaded_modules = {} self.window.modules_index = {} self.window.navigation_dict = {'tweaks': [None, None]} self.setting = GSetting('com.ubuntu-tweak.tweak.rencently-used') def test_rencetly(self): self.setting.set_value([]) self.assertEqual(self.setting.get_value(), []) self.window.load_module('Icon') self.assertEqual(self.setting.get_value(), ['Icon']) self.window.load_module('Nautilus') self.assertEqual(self.setting.get_value(), ['Nautilus', 'Icon']) def tearDown(self): self.setting.set_value([]) del self.window
class TestRecently(unittest.TestCase): def setUp(self): self.window = UbuntuTweakWindow() self.window.loaded_modules = {} self.window.modules_index = {} self.window.navigation_dict = {'tweaks': [None, None]} self.setting = GSetting('com.ubuntu-tweak.tweak.recently-used') def test_recently(self): self.setting.set_value([]) self.assertEqual(self.setting.get_value(), []) self.window._load_module('Icons') self.assertEqual(self.setting.get_value(), ['Icons']) self.window._load_module('Nautilus') self.assertEqual(self.setting.get_value(), ['Nautilus', 'Icons']) def tearDown(self): self.setting.set_value([]) del self.window
class CheckButton(Gtk.CheckButton): def __str__(self): return '<CheckButton with key: %s>' % self.setting.key def __init__(self, label=None, key=None, default=None, tooltip=None, backend=GConf): gobject.GObject.__init__(self, label=label) if backend == GConf: self.setting = GconfSetting(key=key, default=default, type=bool) elif backend == Gio: self.setting = GSetting(key=key, default=default, type=bool) self.set_active(self.setting.get_value()) if tooltip: self.set_tooltip_text(tooltip) self.setting.connect_notify(self.on_value_changed) self.connect('toggled', self.on_button_toggled) def on_value_changed(self, *args): self.set_active(self.setting.get_value()) def on_button_toggled(self, widget): self.setting.set_value(self.get_active())
from ubuntutweak.settings.gsettings import GSetting from ubuntutweak.utils import set_label_for_stock_button from ubuntutweak.utils import ppa, icon from ubuntutweak.utils.package import AptWorker from ubuntutweak.apps import CategoryView from ubuntutweak.admins.appcenter import AppView, AppParser, StatusProvider from ubuntutweak.admins.appcenter import CheckUpdateDialog, FetchingDialog, PackageInfo log = logging.getLogger("SourceCenter") APP_PARSER = AppParser() PPA_MIRROR = [] UNCONVERT = False WARNING_KEY = 'com.ubuntu-tweak.apps.disable-warning' CONFIG = GSetting(key=WARNING_KEY) UPDATE_SETTING = GSetting(key='com.ubuntu-tweak.apps.sources-can-update', type=bool) VERSION_SETTING = GSetting(key='com.ubuntu-tweak.apps.sources-version', type=str) SOURCE_ROOT = os.path.join(consts.CONFIG_ROOT, 'sourcecenter') SOURCE_VERSION_URL = utdata.get_version_url('/sourcecenter_version/') UPGRADE_DICT = {} def get_source_data_url(): return utdata.get_download_url('/media/utdata/sourcecenter-%s.tar.gz' % VERSION_SETTING.get_value())
class QuickLists(TweakModule): __title__ = _('QuickLists Editor') __desc__ = _('Unity Launcher QuickLists Editor') __icon__ = 'plugin-unityshell' __category__ = 'desktop' __desktop__ = ['ubuntu', 'ubuntu-2d'] __utactive__ = True (DESKTOP_FILE, DESKTOP_ICON, DESKTOP_NAME, DESKTOP_ENTRY) = range(4) (ACTION_NAME, ACTION_FULLNAME, ACTION_EXEC, ACTION_ENABLED, ACTION_ENTRY) = range(5) QUANTAL_SPECIFIC_ITEMS = { 'unity://running-apps': _('Running Apps'), 'unity://expo-icon': _('Workspace Switcher'), 'unity://devices': _('Devices') } UNITY_WEBAPPS_ACTION_PATTERN = re.compile('^S\d{1}$') def __init__(self): TweakModule.__init__(self, 'quicklists.ui') self.launcher_setting = GSetting('com.canonical.Unity.Launcher.favorites') self.launcher_setting.connect_notify(self.update_launch_icon_model) self.action_view.get_selection().connect('changed', self.on_action_selection_changed) self.update_launch_icon_model() self.add_start(self.main_paned) @log_func(log) def update_launch_icon_model(self, *args): self.icon_model.clear() for desktop_file in self.launcher_setting.get_value(): log.debug('Processing with "%s"...' % desktop_file) if desktop_file.startswith('/') and os.path.exists(desktop_file): path = desktop_file else: if desktop_file.startswith('application://'): desktop_file = desktop_file.split('application://')[1] log.debug("Desktop file for quantal: %s" % desktop_file) user_path = os.path.join(NewDesktopEntry.user_folder, desktop_file) system_path = os.path.join(NewDesktopEntry.system_folder, desktop_file) if os.path.exists(user_path): path = user_path elif os.path.exists(system_path): path = system_path else: path = desktop_file try: entry = NewDesktopEntry(path) self.icon_model.append((path, icon.get_from_name(entry.getIcon(), size=32), entry.getName(), entry)) except Exception, e: log_traceback(log) if path in self.QUANTAL_SPECIFIC_ITEMS.keys(): self.icon_model.append((path, icon.get_from_name('plugin-unityshell', size=32), self.QUANTAL_SPECIFIC_ITEMS[path], None)) first_iter = self.icon_model.get_iter_first() if first_iter: self.icon_view.get_selection().select_iter(first_iter)
class ClipPage(Gtk.VBox, GuiBuilder): __gsignals__ = { 'load_module': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,)), 'load_feature': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,)) } max_recently_used_size = 200 (DIRECTION_UP, DIRECTION_DOWN) = ('UP', 'DOWN') direction = None def __init__(self): gobject.GObject.__init__(self) GuiBuilder.__init__(self, 'clippage.ui') self.rencently_used_settings = GSetting('com.ubuntu-tweak.tweak.rencently-used') self.clips_settings = GSetting('com.ubuntu-tweak.tweak.clips') self._up_clips = [] self._showed_clips = [] self._down_clips = [] self.load_cips() self.setup_rencently_used() self.pack_start(self.get_object('hbox1'), True, True, 0) self.connect('expose-event', self.on_expose_event) self.rencently_used_settings.connect_notify(self.setup_rencently_used) self.clips_settings.connect_notify(self.load_cips, True) self.show() def on_expose_event(self, widget, event): frame_width = int(self.get_allocation().width / 4.5) if frame_width > self.max_recently_used_size: frame_width = self.max_recently_used_size self.rencently_frame.set_size_request(frame_width, -1) self.slide_clips() def load_cips(self, a=None, b=None, do_remove=False): log.debug("Load clips, do_remove: %s" % do_remove) if do_remove: for child in self.clipvbox.get_children(): log.debug("Remove clip: %s" % child) self.clipvbox.remove(child) clips = self.clips_settings.get_value() if clips != ['']: loader = ModuleLoader('clips') self._up_clips = [] self._showed_clips = [] self._down_clips = [] self.clipvbox.set_data('direction', 0) for name in clips: try: ClipClass = loader.get_module(name) log.debug("Load clip: %s" % name) clip = ClipClass() clip.connect('load_module', self._on_module_button_clicked) clip.connect('load_feature', self.on_clip_load_feature) clip.show() self.clipvbox.pack_start(clip, False, False, 0) except Exception, e: log.error(traceback.print_exc()) if name in self.clips_settings.get_value(): new_list = self.clips_settings.get_value().remove(name) self.clips_settings.set_value(new_list)
class ClipPage(Gtk.VBox, GuiBuilder): __gsignals__ = { 'load_module': (GObject.SignalFlags.RUN_FIRST, None, (GObject.TYPE_STRING,)), 'load_feature': (GObject.SignalFlags.RUN_FIRST, None, (GObject.TYPE_STRING,)) } (DIRECTION_UP, DIRECTION_DOWN) = ('UP', 'DOWN') direction = None def __init__(self): GObject.GObject.__init__(self) GuiBuilder.__init__(self, 'clippage.ui') self.rencently_used_settings = GSetting('com.ubuntu-tweak.tweak.rencently-used') self.clips_settings = GSetting('com.ubuntu-tweak.tweak.clips') self._up_clips = [] self._showed_clips = [] self._down_clips = [] self.load_cips() self.setup_rencently_used() self.pack_start(self.get_object('hbox1'), True, True, 0) self.connect('draw', self.on_draw_event) self.rencently_used_settings.connect_notify(self.setup_rencently_used) self.clips_settings.connect_notify(self.load_cips, True) self.show() def on_draw_event(self, widget, event): self.slide_clips() def load_cips(self, a=None, b=None, do_remove=False): log.debug("Load clips, do_remove: %s" % do_remove) if do_remove: for child in self.clipvbox.get_children(): log.debug("Remove clip: %s" % child) self.clipvbox.remove(child) clips = self.clips_settings.get_value() if clips and clips != ['']: loader = ModuleLoader('clips') self._clips = [] self._up_clips = [] self._showed_clips = [] self._down_clips = [] self.clipvbox.set_data('direction', 0) for name in clips: try: ClipClass = loader.get_module(name) log.debug("Load clip: %s" % name) clip = ClipClass() clip.connect('load_module', self._on_module_button_clicked) clip.connect('load_feature', self.on_clip_load_feature) self._clips.append(clip) except Exception, e: log.error(traceback.print_exc()) if name in self.clips_settings.get_value(): new_list = self.clips_settings.get_value().remove(name) self.clips_settings.set_value(new_list)
def setUp(self): self.window = UbuntuTweakWindow() self.window.loaded_modules = {} self.window.modules_index = {} self.window.navigation_dict = {'tweaks': [None, None]} self.setting = GSetting('com.ubuntu-tweak.tweak.recently-used')
def setUp(self): self.window = UbuntuTweakWindow() self.window.loaded_modules = {} self.window.modules_index = {} self.window.navigation_dict = {'tweaks': [None, None]} self.setting = GSetting('com.ubuntu-tweak.tweak.rencently-used')
class Window(TweakModule): __title__ = _('Window') __desc__ = _('Manage Window Manager settings') __icon__ = 'preferences-system-windows' __category__ = 'desktop' __desktop__ = [ 'ubuntu', 'ubuntu-2d', 'gnome', 'gnome-classic', 'gnome-shell', 'gnome-fallback' ] left_default = 'close,minimize,maximize:' right_default = ':minimize,maximize,close' if system.DESKTOP in ('gnome', 'gnome-shell'): config = GSetting(key='org.gnome.shell.overrides.button-layout') else: if system.CODENAME == 'quantal': config = GSetting( key='org.gnome.desktop.wm.preferences.button-layout') else: config = GconfSetting(key='/apps/metacity/general/button_layout') utext_window_button = _('Window control button position:') utext_only_close_button = _('"Close" button only') utext_titlebar_wheel = _('Titlebar mouse wheel action:') utext_titlebar_double = _('Titlebar double-click action:') utext_titlebar_middle = _('Titlebar middle-click action:') utext_titlebar_right = _('Titlebar right-click action:') def __init__(self): TweakModule.__init__(self, 'window.ui') close_pattern = re.compile('\w+') only_close_switch = Gtk.Switch() only_close_switch.connect('notify::active', self.on_switch_activate) button_value = self.config.get_value() if len(close_pattern.findall( button_value)) == 1 and 'close' in button_value: only_close_switch.set_active(True) only_close_label = Gtk.Label(self.utext_only_close_button) if system.CODENAME == 'quantal' and system.DESKTOP == 'ubuntu': box = GridPack( (Gtk.Label(self.utext_window_button), self.place_hbox), (only_close_label, only_close_switch), Gtk.Separator(), WidgetFactory.create('ComboBox', label=self.utext_titlebar_wheel, key='org.compiz.gwd.mouse-wheel-action', enable_reset=True, backend='gsettings', texts=[_('None'), _('Roll up')], values=['none', 'shade']), WidgetFactory.create('ComboBox', label=self.utext_titlebar_double, key='org.gnome.desktop.wm.preferences.action-double-click-titlebar', enable_reset=True, backend='gsettings', texts=[_('None'), _('Maximize'), \ _('Minimize'), _('Roll up'), \ _('Lower'), _('Menu')], values=['none', 'toggle-maximize', \ 'minimize', 'toggle-shade', \ 'lower', 'menu']), WidgetFactory.create('ComboBox', label=self.utext_titlebar_middle, key='org.gnome.desktop.wm.preferences.action-middle-click-titlebar', enable_reset=True, backend="gsettings", texts=[_('None'), _('Maximize'), \ _('Minimize'), _('Roll up'), \ _('Lower'), _('Menu')], values=['none', 'toggle-maximize', \ 'minimize', 'toggle-shade', \ 'lower', 'menu']), WidgetFactory.create('ComboBox', label=self.utext_titlebar_right, key='org.gnome.desktop.wm.preferences.action-right-click-titlebar', enable_reset=True, backend="gsettings", texts=[_('None'), _('Maximize'), \ _('Minimize'), _('Roll up'), \ _('Lower'), _('Menu')], values=['none', 'toggle-maximize', \ 'minimize', 'toggle-shade', \ 'lower', 'menu']), ) self.add_start(box) else: box = GridPack( (Gtk.Label(self.utext_window_button), self.place_hbox), (only_close_label, only_close_switch), Gtk.Separator(), WidgetFactory.create('ComboBox', label=self.utext_titlebar_wheel, key='/apps/gwd/mouse_wheel_action', enable_reset=True, backend='gconf', texts=[_('None'), _('Roll up')], values=['none', 'shade']), WidgetFactory.create('ComboBox', label=self.utext_titlebar_double, key='/apps/metacity/general/action_double_click_titlebar', enable_reset=True, backend='gconf', texts=[_('None'), _('Maximize'), \ _('Minimize'), _('Roll up'), \ _('Lower'), _('Menu')], values=['none', 'toggle_maximize', \ 'minimize', 'toggle_shade', \ 'lower', 'menu']), WidgetFactory.create('ComboBox', label=self.utext_titlebar_middle, key='/apps/metacity/general/action_middle_click_titlebar', enable_reset=True, backend="gconf", texts=[_('None'), _('Maximize'), \ _('Maximize Horizontally'), \ _('Maximize Vertically'), \ _('Minimize'), _('Roll up'), \ _('Lower'), _('Menu')], values=['none', 'toggle_maximize', \ 'toggle_maximize_horizontally', \ 'toggle_maximize_vertically', \ 'minimize', 'toggle_shade', \ 'lower', 'menu']), WidgetFactory.create('ComboBox', label=self.utext_titlebar_right, key='/apps/metacity/general/action_right_click_titlebar', enable_reset=True, backend="gconf", texts=[_('None'), _('Maximize'), \ _('Maximize Horizontally'), \ _('Maximize Vertically'), \ _('Minimize'), _('Roll up'), \ _('Lower'), _('Menu')], values=['none', 'toggle_maximize', \ 'toggle_maximize_horizontally', \ 'toggle_maximize_vertically', \ 'minimize', 'toggle_shade', \ 'lower', 'menu']), ) self.add_start(box) def on_switch_activate(self, widget, value): if widget.get_active(): self.left_default = 'close:' self.right_default = ':close' else: self.left_default = 'close,minimize,maximize:' self.right_default = ':minimize,maximize,close' self.on_right_radio_toggled(self.right_radio) self.on_left_radio_toggled(self.left_radio) def on_right_radio_toggled(self, widget): if widget.get_active(): self.config.set_value(self.right_default) def on_left_radio_toggled(self, widget): if widget.get_active(): self.config.set_value(self.left_default)
def _get_desktop_background_path(self): return get_local_path(GSetting('org.gnome.desktop.background.picture-uri').get_value())
from ubuntutweak.gui.dialogs import ErrorDialog, InfoDialog, QuestionDialog from ubuntutweak.gui.dialogs import ProcessDialog from ubuntutweak.gui.gtk import post_ui, set_busy, unset_busy from ubuntutweak.utils.parser import Parser from ubuntutweak.network import utdata from ubuntutweak.network.downloadmanager import DownloadDialog from ubuntutweak.settings.gsettings import GSetting from ubuntutweak.utils import set_label_for_stock_button, icon from ubuntutweak.utils.package import AptWorker from ubuntutweak.apps import CategoryView log = logging.getLogger("AppCenter") APPCENTER_ROOT = os.path.join(consts.CONFIG_ROOT, 'appcenter') APP_VERSION_URL = utdata.get_version_url('/appcenter_version/') UPDATE_SETTING = GSetting(key='com.ubuntu-tweak.tweak.appcenter-has-update', type=bool) VERSION_SETTING = GSetting(key='com.ubuntu-tweak.tweak.appcenter-version', type=str) def get_app_data_url(): return utdata.get_download_url('/media/utdata/appcenter-%s.tar.gz' % VERSION_SETTING.get_value()) if not os.path.exists(APPCENTER_ROOT): os.mkdir(APPCENTER_ROOT) class PackageInfo: DESKTOP_DIR = '/usr/share/app-install/desktop/'
class QuickLists(TweakModule): __title__ = _('QuickLists Editor') __desc__ = _('Unity Launcher QuickLists Editor') __icon__ = 'plugin-unityshell' __category__ = 'desktop' __desktop__ = ['ubuntu', 'ubuntu-2d'] __utactive__ = True (DESKTOP_FILE, DESKTOP_ICON, DESKTOP_NAME, DESKTOP_ENTRY) = range(4) (ACTION_NAME, ACTION_FULLNAME, ACTION_EXEC, ACTION_ENABLED, ACTION_ENTRY) = range(5) def __init__(self): TweakModule.__init__(self, 'quicklists.ui') self.launcher_setting = GSetting('com.canonical.Unity.Launcher.favorites') self.launcher_setting.connect_notify(self.update_launch_icon_model) self.action_view.get_selection().connect('changed', self.on_action_selection_changed) self.update_launch_icon_model() self.add_start(self.main_paned) @log_func(log) def update_launch_icon_model(self, *args): self.icon_model.clear() for desktop_file in self.launcher_setting.get_value(): log.debug('Processing with "%s"...' % desktop_file) if desktop_file.startswith('/') and os.path.exists(desktop_file): path = desktop_file else: user_path = os.path.join(NewDesktopEntry.user_folder, desktop_file) system_path = os.path.join(NewDesktopEntry.system_folder, desktop_file) if os.path.exists(user_path): path = user_path elif os.path.exists(system_path): path = system_path else: log.debug("No desktop file avaialbe in for %s" % desktop_file) continue try: entry = NewDesktopEntry(path) except Exception, e: log_traceback(log) continue self.icon_model.append((path,\ icon.get_from_name(entry.getIcon(), size=32),\ entry.getName(), entry)) first_iter = self.icon_model.get_iter_first() if first_iter: self.icon_view.get_selection().select_iter(first_iter)