本文整理汇总了Python中ubuntutweak.settings.GSetting.connect_notify方法的典型用法代码示例。如果您正苦于以下问题:Python GSetting.connect_notify方法的具体用法?Python GSetting.connect_notify怎么用?Python GSetting.connect_notify使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ubuntutweak.settings.GSetting
的用法示例。
在下文中一共展示了GSetting.connect_notify方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: FeaturePage
# 需要导入模块: from ubuntutweak.settings import GSetting [as 别名]
# 或者: from ubuntutweak.settings.GSetting import connect_notify [as 别名]
class FeaturePage(Gtk.ScrolledWindow):
__gsignals__ = {
'module_selected': (GObject.SignalFlags.RUN_FIRST,
None,
(GObject.TYPE_STRING,))
}
_categories = None
_boxes = []
def __str__(self):
return '<FeaturePage: %s>' % self._feature
def __init__(self, feature_name):
GObject.GObject.__init__(self,
hscrollbar_policy=Gtk.PolicyType.NEVER,
vscrollbar_policy=Gtk.PolicyType.AUTOMATIC)
self.set_property('shadow-type', Gtk.ShadowType.NONE)
self.set_border_width(12)
self._feature = feature_name
self._setting = GSetting('com.ubuntu-tweak.tweak.%s' % feature_name)
self._categories = {}
self._boxes = []
self._box = Gtk.VBox(spacing=6)
viewport = Gtk.Viewport()
viewport.set_property('shadow-type', Gtk.ShadowType.NONE)
viewport.add(self._box)
self.add(viewport)
self.load_modules()
self.connect('size-allocate', self.rebuild_boxes)
self._setting.connect_notify(self.load_modules)
self.show_all()
def load_modules(self, *args, **kwargs):
log.debug("Loading modules...")
loader = ModuleLoader(self._feature)
self._boxes = []
for child in self._box.get_children():
self._box.remove(child)
for category, category_name in loader.get_categories():
modules = loader.get_modules_by_category(category)
if modules:
module_to_loads = self._setting.get_value()
for module in modules:
if module.is_user_extension() and module.get_name() not in module_to_loads:
modules.remove(module)
category_box = CategoryBox(modules=modules, category_name=category_name)
self._connect_signals(category_box)
self._boxes.append(category_box)
self._box.pack_start(category_box, False, False, 0)
self.rebuild_boxes()
def _connect_signals(self, category_box):
for button in category_box.get_buttons():
button.connect('clicked', self.on_button_clicked)
def on_button_clicked(self, widget):
log.info('Button clicked')
module = widget.get_module()
self.emit('module_selected', module.get_name())
@log_func(log)
def rebuild_boxes(self, widget=None, event=None):
request = self.get_allocation()
ncols = request.width / 164 # 32 + 120 + 6 + 4
width = ncols * (164 + 2 * 4) + 40
if width > request.width:
ncols -= 1
pos = 0
children = self._box.get_children()
for box in self._boxes:
modules = box.get_modules()
if len (modules) == 0:
if box in children:
self._box.remove(box)
else:
if box not in children:
self._box.pack_start(box, False, False, 0)
self._box.reorder_child(box, pos)
box.rebuild_table(ncols)
pos += 1
示例2: JanitorPage
# 需要导入模块: from ubuntutweak.settings import GSetting [as 别名]
# 或者: from ubuntutweak.settings.GSetting import connect_notify [as 别名]
class JanitorPage(Gtk.VBox, GuiBuilder):
(JANITOR_CHECK,
JANITOR_ICON,
JANITOR_NAME,
JANITOR_DISPLAY,
JANITOR_PLUGIN,
JANITOR_SPINNER_ACTIVE,
JANITOR_SPINNER_PULSE) = range(7)
(RESULT_CHECK,
RESULT_ICON,
RESULT_NAME,
RESULT_DISPLAY,
RESULT_DESC,
RESULT_PLUGIN,
RESULT_CRUFT) = range(7)
max_janitor_view_width = 0
def __init__(self):
GObject.GObject.__init__(self)
self.scan_tasks = []
self.clean_tasks = []
self._total_count = 0
self.set_border_width(6)
GuiBuilder.__init__(self, 'janitorpage.ui')
self.autoscan_setting = GSetting('com.ubuntu-tweak.janitor.auto-scan')
self.autoscan_setting.connect_notify(self.on_autoscan_button_toggled)
self.plugins_setting = GSetting('com.ubuntu-tweak.janitor.plugins')
self.view_width_setting = GSetting('com.ubuntu-tweak.janitor.janitor-view-width')
self.pack_start(self.vbox1, True, True, 0)
self.connect('realize', self.setup_ui_tasks)
self.janitor_view.get_selection().connect('changed', self.on_janitor_selection_changed)
self.plugins_setting.connect_notify(self.update_model, True)
self.show()
def on_move_handle(self, widget, gproperty):
log.debug("on_move_handle: %d", widget.get_property('position'))
self.view_width_setting.set_value(widget.get_property('position'))
# cancel the size request, or it will fail to resize
# TODO why the first scan will make it fail?
self.janitor_view.set_size_request(self.max_janitor_view_width, -1)
def is_auto_scan(self):
return self.autoscan_setting.get_value()
@log_func(log)
def on_result_view_row_activated(self, treeview, path, column):
iter = self.result_model.get_iter(path)
cruft = self.result_model[iter][self.RESULT_CRUFT]
display = self.result_model[iter][self.RESULT_DISPLAY]
if 'red' in display:
plugin = self.result_model[iter][self.RESULT_PLUGIN]
error = plugin.get_property('error')
self.result_model[iter][self.RESULT_DISPLAY] = '<span color="red"><b>%s</b></span>' % error
elif hasattr(cruft, 'get_path'):
path = cruft.get_path()
if not os.path.isdir(path):
path = os.path.dirname(path)
os.system("xdg-open '%s' &" % path)
def setup_ui_tasks(self, widget):
self.janitor_model.set_sort_column_id(self.JANITOR_NAME, Gtk.SortType.ASCENDING)
#add janitor columns
janitor_column = Gtk.TreeViewColumn()
renderer = Gtk.CellRendererToggle()
renderer.connect('toggled', self.on_janitor_check_button_toggled)
janitor_column.pack_start(renderer, False)
janitor_column.add_attribute(renderer, 'active', self.JANITOR_CHECK)
self.janitor_view.append_column(janitor_column)
janitor_column = Gtk.TreeViewColumn()
renderer = Gtk.CellRendererPixbuf()
janitor_column.pack_start(renderer, False)
janitor_column.add_attribute(renderer, 'pixbuf', self.JANITOR_ICON)
janitor_column.set_cell_data_func(renderer,
self.icon_column_view_func,
self.JANITOR_ICON)
renderer = Gtk.CellRendererText()
renderer.set_property('ellipsize', Pango.EllipsizeMode.END)
janitor_column.pack_start(renderer, True)
janitor_column.add_attribute(renderer, 'markup', self.JANITOR_DISPLAY)
renderer = Gtk.CellRendererSpinner()
janitor_column.pack_start(renderer, False)
janitor_column.add_attribute(renderer, 'active', self.JANITOR_SPINNER_ACTIVE)
janitor_column.add_attribute(renderer, 'pulse', self.JANITOR_SPINNER_PULSE)
#.........这里部分代码省略.........
示例3: JanitorPage
# 需要导入模块: from ubuntutweak.settings import GSetting [as 别名]
# 或者: from ubuntutweak.settings.GSetting import connect_notify [as 别名]
class JanitorPage(Gtk.VBox, GuiBuilder):
(JANITOR_CHECK,
JANITOR_ICON,
JANITOR_NAME,
JANITOR_DISPLAY,
JANITOR_PLUGIN,
JANITOR_SPINNER_ACTIVE,
JANITOR_SPINNER_PULSE) = range(7)
(RESULT_CHECK,
RESULT_ICON,
RESULT_NAME,
RESULT_DISPLAY,
RESULT_DESC,
RESULT_PLUGIN,
RESULT_CRUFT) = range(7)
max_janitor_view_width = 0
def __init__(self):
GObject.GObject.__init__(self)
self.scan_tasks = []
self.clean_tasks = []
self.set_border_width(6)
GuiBuilder.__init__(self, 'janitorpage.ui')
self.autoscan_setting = GSetting('com.ubuntu-tweak.tweak.auto-scan')
self.janitor_setting = GSetting('com.ubuntu-tweak.tweak.janitor')
self.pack_start(self.vbox1, True, True, 0)
self.connect('realize', self.setup_ui_tasks)
self.janitor_view.get_selection().connect('changed', self.on_janitor_selection_changed)
self.janitor_setting.connect_notify(self.update_model, True)
self.show()
def is_auto_scan(self):
return self.autoscan_button.get_active()
def setup_ui_tasks(self, widget):
self.janitor_model.set_sort_column_id(self.JANITOR_NAME, Gtk.SortType.ASCENDING)
#add janitor columns
janitor_column = Gtk.TreeViewColumn()
renderer = Gtk.CellRendererToggle()
renderer.connect('toggled', self.on_janitor_check_button_toggled)
janitor_column.pack_start(renderer, False)
janitor_column.add_attribute(renderer, 'active', self.JANITOR_CHECK)
self.janitor_view.append_column(janitor_column)
janitor_column = Gtk.TreeViewColumn()
renderer = Gtk.CellRendererPixbuf()
janitor_column.pack_start(renderer, False)
janitor_column.add_attribute(renderer, 'pixbuf', self.JANITOR_ICON)
janitor_column.set_cell_data_func(renderer,
self.icon_column_view_func,
self.JANITOR_ICON)
renderer = Gtk.CellRendererText()
renderer.set_property('ellipsize', Pango.EllipsizeMode.MIDDLE)
janitor_column.pack_start(renderer, True)
janitor_column.add_attribute(renderer, 'markup', self.JANITOR_DISPLAY)
renderer = Gtk.CellRendererSpinner()
janitor_column.pack_start(renderer, False)
janitor_column.add_attribute(renderer, 'active', self.JANITOR_SPINNER_ACTIVE)
janitor_column.add_attribute(renderer, 'pulse', self.JANITOR_SPINNER_PULSE)
self.janitor_view.append_column(janitor_column)
#end janitor columns
#add result columns
result_column = Gtk.TreeViewColumn()
renderer = Gtk.CellRendererToggle()
renderer.connect('toggled', self.on_result_check_renderer_toggled)
result_column.pack_start(renderer, False)
result_column.add_attribute(renderer, 'active', self.RESULT_CHECK)
renderer = Gtk.CellRendererPixbuf()
result_column.pack_start(renderer, False)
result_column.add_attribute(renderer, 'pixbuf', self.RESULT_ICON)
result_column.set_cell_data_func(renderer,
self.icon_column_view_func,
self.RESULT_ICON)
renderer = Gtk.CellRendererText()
renderer.set_property('ellipsize', Pango.EllipsizeMode.END)
result_column.pack_start(renderer, True)
result_column.add_attribute(renderer, 'markup', self.RESULT_DISPLAY)
renderer = Gtk.CellRendererText()
result_column.pack_start(renderer, False)
result_column.add_attribute(renderer, 'text', self.RESULT_DESC)
#.........这里部分代码省略.........