def create_button_chooser(self, settings, key, path_prefix, path_suffix, button_picture_size, menu_pictures_size, num_cols): if self is None: return chooser = PictureChooserButton(num_cols=num_cols, button_picture_size=button_picture_size, menu_pictures_size=menu_pictures_size, \ has_button_label=True) theme = settings.get_string(key) chooser.set_button_label(theme) chooser.set_tooltip_text(theme) if path_suffix == "cinnamon" and theme == "cinnamon": chooser.set_picture_from_file("/usr/share/cinnamon/theme/thumbnail.png") elif path_suffix == "icons": current_theme = IconTheme.get_default() folder = current_theme.lookup_icon("folder", button_picture_size, 0) if folder is not None: path = folder.get_filename() chooser.set_picture_from_file(path) else: try: for path in ["/usr/share/%s/%s/%s/thumbnail.png" % (path_prefix, theme, path_suffix), os.path.expanduser("~/.%s/%s/%s/thumbnail.png" % (path_prefix, theme, path_suffix)), "/usr/share/cinnamon/thumbnails/%s/%s.png" % (path_suffix, theme), "/usr/share/cinnamon/thumbnails/%s/unknown.png" % path_suffix]: if os.path.exists(path): chooser.set_picture_from_file(path) break except Exception: chooser.set_picture_from_file("/usr/share/cinnamon/thumbnails/%s/unknown.png" % path_suffix) return chooser
def add_launchers(self): command_icon = Pixbuf.new_from_file_at_size( "{base_path}/res/command.svg".format(base_path=os.path.dirname(os.path.realpath(__file__))), 16, 16 ) theme = IconTheme() for launcher_directory in ["/home/wouter/.local/share/applications", "/usr/share/applications"]: for launcher in os.listdir(launcher_directory): try: config = ConfigParser.ConfigParser() config.read("%s/%s" % (launcher_directory, launcher)) if not config.has_section("Desktop Entry"): continue if not config.get("Desktop Entry", "type") == "Application": continue icon_name = config.get("Desktop Entry", "icon") icon = command_icon if icon_name != "eclipse.png": print icon_name try: icon = theme.load_icon(icon_name, 20, 0) except: pass self.append( { "type": "command", "name": config.get("Desktop Entry", "name"), "keyword": "", "command": config.get("Desktop Entry", "exec"), "icon": icon, } ) except ConfigParser.Error: pass
def __init__(self, *args, entities=[], quit_cb=None, max_pages=10, **kwargs): """Editor class Args: entities (list): of dict having keys"Label", "URI", "Description"; max_pages (int): maximum number of pages kept in RAM """ ApplicationWindow.__init__(self, *args, **kwargs) self.quit_cb = quit_cb self.open_dialogs = [] # Set window icon icon = lambda x: IconTheme.get_default().load_icon((name), x, 0) icons = [icon(size) for size in [32, 48, 64, 96]]; self.set_icon_list(icons); # Set shortcuts accelerators = AccelGroup() self.add_accel_group(accelerators) add_accelerator(accelerators, self.entity_open, "<Control>o", signal="clicked") add_accelerator(accelerators, self.entity_search, "<Control>f", signal="clicked") add_accelerator(accelerators, self.entity_discussion_open_external, "<Control>d", signal="clicked") add_accelerator(accelerators, self.entity_history_open_external, "<Control>h", signal="clicked") add_accelerator(accelerators, self.entities_select, "<Control>s", signal="clicked") add_accelerator(accelerators, self.cancel_entities_selection, "<Control><Shift>s", signal="clicked") add_accelerator(accelerators, self.entities_search, "<Control><Shift>f", signal="activate") # Init sidebar self.sidebar_list = SidebarList() self.sidebar_list.connect("entity-selected", self.sidebar_row_selected_cb) self.sidebar_viewport.add(self.sidebar_list) # Init pages loading = LoadingPage() self.pages.add_titled(loading, "loading", "Loading") # Parse args self.max_pages = max_pages if entities: self.load(entities) else: entities_open_dialog = Open(quit_cb=self.quit_cb, new_session=True) entities_open_dialog.connect("new-window-clicked", self.new_window_clicked_cb) entities_open_dialog.connect("window-new", self.open_window_new_clicked_cb) self.open_dialogs.append(entities_open_dialog) entities_open_dialog.get_focus()
def __init__(self, languages, *args, **kwargs): Window.__init__(self, *args, **kwargs) icon = lambda x: IconTheme.get_default().load_icon((name), x, 0) icons = [icon(size) for size in [32, 48, 64, 96]] self.set_icon_list(icons) self.languages.set_header_func(self.update_header) for language in languages: row = ListBoxRow() label = Label() label.set_text(language['itemLabel']['value']) label.code = language['c']['value'] row.child = label row.add(label) self.languages.add(row) self.languages.show_all()
def get_deluge_icon(): """The deluge icon for use in dialogs. It will first attempt to get the icon from the theme and will fallback to using an image that is distributed with the package. Returns: Pixbuf: the deluge icon """ if windows_check(): return get_logo(32) else: try: icon_theme = IconTheme.get_default() return icon_theme.load_icon('deluge', 64, 0) except GError: return get_logo(64)
def __init__(self, *args, new_session=True, quit_cb=None, verbose=False): Window.__init__(self, *args) # Set window icon icon = lambda x: IconTheme.get_default().load_icon((name), x, 0) icons = [icon(size) for size in [32, 48, 64, 96]]; self.set_icon_list(icons); self.verbose = verbose self.new_session = new_session self.results_listbox.selected = EntitySet() self.filtered_results = EntitySet() self.entities = self.results_listbox.selected self.variables = EntitySet(triplet=False) self.hb_title = self.header_bar.get_title() self.hb_subtitle = self.header_bar.get_subtitle() self.search_entry_connection = self.search_entry.connect("search-changed", self.search_entry_search_changed_cb) self.filters_listbox = FiltersList() self.filters_viewport.add(self.filters_listbox) if quit_cb: self.quit_cb = quit_cb self.connect("delete-event", self.on_quit) self.show() if new_session: self.header_bar.set_show_close_button(True) else: self.header_bar.set_show_close_button(False) self.back.set_visible(True) self.open_button.connect('clicked', self.open_button_clicked_cb) text = """<b>Search for an <a href="url">entity</a> in the database</b>""" if system() == 'Linux': url = "help:daty/daty-entities" if system() == 'Windows': url = "http://daty.prevete.ml/daty-entities.html" text = sub('url', url, text) set_text(self.subtitle, text, url, markup=True)
def __init__(self, *args, **kwargs): Window.__init__(self, *args, **kwargs) icon = lambda x: IconTheme.get_default().load_icon((name), x, 0) icons = [icon(size) for size in [32, 48, 64, 96]] self.set_icon_list(icons) self.credentials.set_header_func(self.update_header) self.languages.set_header_func(self.update_header) for key in self.config.data['credentials']: row = ListBoxRow() grid = Grid() grid.props.column_homogeneous = True label = Label() label.set_text(key) label.props.halign = Align(1) context = label.get_style_context() resource = "/ml/prevete/Daty/gtk/value.css" set_style(context, resource, "dim-label", True) entry = Entry() entry.set_text(self.config.data['credentials'][key]) context = entry.get_style_context() set_style(context, resource, "flat", True) grid.attach(label, 0, 0, 1, 1) grid.attach(entry, 1, 0, 2, 1) row.add(grid) self.credentials.add(row) self.credentials.show_all() query = """SELECT ?item ?itemLabel ?c { ?item wdt:P424 ?c . MINUS{?item wdt:P31/wdt:P279* wd:Q14827288} #exclude Wikimedia projects MINUS{?item wdt:P31/wdt:P279* wd:Q17442446} #exclude Wikimedia internal stuff SERVICE wikibase:label { bd:serviceParam wikibase:language "your_first_language". } } """ query = sub("your_first_language", self.config.data['languages'][0], query) self.retrieve(query, self.languages_callback)
def __init__(self, config, *args, **kwargs): Assistant.__init__(self) icon = lambda x: IconTheme.get_default().load_icon((name), x, 0) icons = [icon(size) for size in [32, 48, 64, 96]]; self.set_icon_list(icons); self.config = config self.credentials.set_header_func(self.update_header) elements = [("user", self.username_label, self.username), ("bot_user", self.bot_username_label, self.bot_username), ("bot_password", self.bot_password_label, self.bot_password)] for key, label, entry in elements: row = ListBoxRow() grid = Grid() grid.props.column_homogeneous = True label.props.halign = Align(1) grid.attach(label, 0, 0, 1, 1) grid.attach(entry, 1, 0, 2, 1) row.add(grid) self.credentials.add(row) self.credentials.show_all() lc, encoding = getdefaultlocale() if (lc): language = lc.split("_")[0] else: language = environ.get("LANGUAGE", None) if language: language = language.split(":")[0] self.config.data['languages'] = [language] self.connect('destroy', main_quit) self.show_all()
def __init__(self, **kwargs): gtk.Dialog.__init__(self, **kwargs) self.set_title(_("Adjust System Date & Time")) # FIXME self.set_keep_above(True) try: self.set_icon(IconTheme.get_default().load_icon( icon_name = "preferences-system-time", size = 32, flags = 0, )) except Exception: pass # render_icon: Deprecated since version 3.0: Use Gtk.Widget.render_icon_pixbuf() instead. # render_icon_pixbuf: Deprecated since version 3.10: Use Gtk.IconTheme.load_icon() instead. ######### self.buttonCancel = self.add_button(gtk.STOCK_CANCEL, 0) #self.buttonCancel.connect("clicked", lambda w: sys.exit(0)) self.buttonSet = self.add_button(_("Set System Time"), 1) #self.buttonSet.connect("clicked", self.setSysTimeClicked) ######### hbox = gtk.HBox() self.label_cur = gtk.Label(label=_("Current:")) pack(hbox, self.label_cur) pack(self.vbox, hbox) ######### hbox = gtk.HBox() self.radioMan = gtk.RadioButton.new_with_mnemonic( group=None, label=_("Set _Manully:"), ) self.radioMan.connect("clicked", self.radioManClicked) pack(hbox, self.radioMan) pack(self.vbox, hbox) ###### vb = gtk.VBox() sg = gtk.SizeGroup(mode=gtk.SizeGroupMode.HORIZONTAL) ### hbox = gtk.HBox() ## l = gtk.Label() l.set_property("width-request", self.xpad) pack(hbox, l) ## self.ckeckbEditTime = gtk.CheckButton.new_with_mnemonic(_("Edit _Time")) self.editTime = False self.ckeckbEditTime.connect("clicked", self.ckeckbEditTimeClicked) pack(hbox, self.ckeckbEditTime) sg.add_widget(self.ckeckbEditTime) self.timeInput = TimeButton() ## ??????? options pack(hbox, self.timeInput) pack(vb, hbox) ### hbox = gtk.HBox() ## l = gtk.Label() l.set_property("width-request", self.xpad) pack(hbox, l) ## self.ckeckbEditDate = gtk.CheckButton.new_with_mnemonic(_("Edit _Date")) self.editDate = False self.ckeckbEditDate.connect("clicked", self.ckeckbEditDateClicked) pack(hbox, self.ckeckbEditDate) sg.add_widget(self.ckeckbEditDate) self.dateInput = DateButton() ## ??????? options pack(hbox, self.dateInput) pack(vb, hbox) ### pack(self.vbox, vb, 0, 0, 10)#????? self.vboxMan = vb ###### hbox = gtk.HBox() self.radioNtp = gtk.RadioButton.new_with_mnemonic_from_widget( radio_group_member=self.radioMan, label=_("Set from _NTP:"), ) self.radioNtp.connect("clicked", self.radioNtpClicked) pack(hbox, self.radioNtp) pack(self.vbox, hbox) ### hbox = gtk.HBox() ## l = gtk.Label() l.set_property("width-request", self.xpad) pack(hbox, l) ## pack(hbox, gtk.Label(label=_("Server:") + " ")) combo = gtk.ComboBoxText.new_with_entry() combo.get_child().connect("changed", self.updateSetButtonSensitive) pack(hbox, combo, 1, 1) self.ntpServerEntry = combo.get_child() for s in ui.ntpServers: combo.append_text(s) combo.set_active(0) self.hboxNtp = hbox pack(self.vbox, hbox) ###### self.radioManClicked() #self.radioNtpClicked() self.ckeckbEditTimeClicked() self.ckeckbEditDateClicked() ###### self.updateTimes() self.vbox.show_all()
def refresh_chooser(self, payload): (chooser, path_suffix, themes, callback) = payload inc = 1.0 if len(themes) > 0: inc = 1.0 / len(themes) if path_suffix == 'icons': cache_folder = GLib.get_user_cache_dir() + '/cs_themes/' #print("cache_folder =", cache_folder) icon_cache_path = os.path.join(cache_folder, 'icons') # Retrieve list of known themes/locations for faster loading (icon theme loading and lookup are very slow) if os.path.exists(icon_cache_path): read_path = icon_cache_path elif os.path.exists('/usr/share/cinnamon/cinnamon-settings/icons'): read_path = '/usr/share/cinnamon/cinnamon-settings/icons' else: read_path = os.path.join(os.path.dirname('..'), 'icons') icon_paths = {} with open(read_path, 'r') as cache_file: for line in cache_file: theme_name, icon_path = line.strip().split(':') icon_paths[theme_name] = icon_path dump = False for theme in themes: theme_path = None if theme in icon_paths: # loop through all possible locations until we find a match # (user folders should override system ones) for theme_folder in ICON_FOLDERS: possible_path = os.path.join(theme_folder, icon_paths[theme]) if os.path.exists(possible_path): theme_path = possible_path break if theme_path is None: icon_theme = IconTheme() icon_theme.set_custom_theme(theme) folder = icon_theme.lookup_icon('folder', ICON_SIZE, IconLookupFlags.FORCE_SVG) if folder: theme_path = folder.get_filename() # we need to get the relative path for storage for theme_folder in ICON_FOLDERS: if os.path.commonpath([theme_folder, theme_path]) == theme_folder: icon_paths[theme] = os.path.relpath(theme_path, start=theme_folder) break dump = True if os.path.exists(theme_path): chooser.add_picture(theme_path, callback, title=theme, id=theme) GLib.timeout_add(5, self.increment_progress, (chooser, inc)) if dump: if not os.path.exists(cache_folder): os.mkdir(cache_folder) with open(icon_cache_path, 'w') as cache_file: for theme_name, icon_path in icon_paths.items(): cache_file.write('%s:%s\n' % (theme_name, icon_path)) else: if path_suffix == "cinnamon": chooser.add_picture("/usr/share/cinnamon/theme/thumbnail.png", callback, title="cinnamon", id="cinnamon") for theme in themes: theme_name = theme[0] theme_path = theme[1] try: for path in ["%s/%s/%s/thumbnail.png" % (theme_path, theme_name, path_suffix), "/usr/share/cinnamon/thumbnails/%s/%s.png" % (path_suffix, theme_name), "/usr/share/cinnamon/thumbnails/%s/unknown.png" % path_suffix]: if os.path.exists(path): chooser.add_picture(path, callback, title=theme_name, id=theme_name) break except Exception: chooser.add_picture("/usr/share/cinnamon/thumbnails/%s/unknown.png" % path_suffix, callback, title=theme_name, id=theme_name) GLib.timeout_add(5, self.increment_progress, (chooser, inc)) GLib.timeout_add(500, self.hide_progress, chooser)
Notify.uninit() DBusGMainLoop(set_as_default=True) bus = dbus.SessionBus() string = "eavesdrop=true, interface='org.freedesktop.Notifications', member='Notify'" bus.add_match_string_non_blocking(string) bus.add_message_filter(notifications) engine = create_engine('sqlite:///' + dir + progname + '.db', echo=True) metadata = MetaData(engine) metadata.reflect(bind=engine) Session = sessionmaker(bind=engine) #icon_theme = IconTheme.get_default() # wayland compat icon_theme = IconTheme() icon_theme.set_custom_theme("hicolor") mappings = {} session_= Session() try: for t in metadata.tables.keys(): table = metadata.tables[t] (message,indicator) = get_mapping(t, Message_) mapper(message, table) messages = session_.query(message) i = 0 for m in messages: menu_item(m, indicator) i += 1
# this work to /opt /usr /usr/local prefixes if exists(join(bin_path, share_path)): return join(bin_path, share_path) if exists(join(bin_path, icons_path)): return join(bin_path, icons_path) bin_path = split(bin_path)[0] ICON_PATH = get_path() if ICON_PATH: icon_16 = Pixbuf.new_from_file_at_scale(ICON_PATH, 16, 16, True) icon_32 = Pixbuf.new_from_file_at_scale(ICON_PATH, 32, 32, True) icon_48 = Pixbuf.new_from_file_at_scale(ICON_PATH, 48, 48, True) icon_64 = Pixbuf.new_from_file_at_scale(ICON_PATH, 64, 64, True) icon_128 = Pixbuf.new_from_file_at_scale(ICON_PATH, 128, 128, True) else: from gi.repository.Gtk import IconTheme from gi.repository.GLib import log_default_handler, LogLevelFlags log_default_handler(None, LogLevelFlags.LEVEL_FATAL, "Formiko icon not found", 0) icon_theme = IconTheme.get_default() icon_16 = icon_theme.load_icon("text-editor-symbolic", 16, 0) icon_32 = icon_theme.load_icon("text-editor-symbolic", 32, 0) icon_48 = icon_theme.load_icon("text-editor-symbolic", 48, 0) icon_64 = icon_theme.load_icon("text-editor-symbolic", 64, 0) icon_128 = icon_theme.load_icon("text-editor-symbolic", 128, 0) icon_list = [icon_16, icon_32, icon_48, icon_64, icon_128]
def __init__(self, **kwargs): gtk.Dialog.__init__(self, **kwargs) self.set_title(_("Adjust System Date & Time")) # FIXME self.set_keep_above(True) self.set_icon(IconTheme.get_default().load_icon( icon_name = "preferences-system-time", size = 32, flags = 0, )) # render_icon: Deprecated since version 3.0: Use Gtk.Widget.render_icon_pixbuf() instead. # render_icon_pixbuf: Deprecated since version 3.10: Use Gtk.IconTheme.load_icon() instead. ######### self.buttonCancel = self.add_button(gtk.STOCK_CANCEL, 0) #self.buttonCancel.connect("clicked", lambda w: sys.exit(0)) self.buttonSet = self.add_button(_("Set System Time"), 1) #self.buttonSet.connect("clicked", self.setSysTimeClicked) ######### hbox = gtk.HBox() self.label_cur = gtk.Label(label=_("Current:")) pack(hbox, self.label_cur) pack(self.vbox, hbox) ######### hbox = gtk.HBox() self.radioMan = gtk.RadioButton.new_with_mnemonic( group=None, label=_("Set _Manully:"), ) self.radioMan.connect("clicked", self.radioManClicked) pack(hbox, self.radioMan) pack(self.vbox, hbox) ###### vb = gtk.VBox() sg = gtk.SizeGroup(mode=gtk.SizeGroupMode.HORIZONTAL) ### hbox = gtk.HBox() ## l = gtk.Label() l.set_property("width-request", self.xpad) pack(hbox, l) ## self.ckeckbEditTime = gtk.CheckButton.new_with_mnemonic(_("Edit _Time")) self.editTime = False self.ckeckbEditTime.connect("clicked", self.ckeckbEditTimeClicked) pack(hbox, self.ckeckbEditTime) sg.add_widget(self.ckeckbEditTime) self.timeInput = TimeButton() ## ??????? options pack(hbox, self.timeInput) pack(vb, hbox) ### hbox = gtk.HBox() ## l = gtk.Label() l.set_property("width-request", self.xpad) pack(hbox, l) ## self.ckeckbEditDate = gtk.CheckButton.new_with_mnemonic(_("Edit _Date")) self.editDate = False self.ckeckbEditDate.connect("clicked", self.ckeckbEditDateClicked) pack(hbox, self.ckeckbEditDate) sg.add_widget(self.ckeckbEditDate) self.dateInput = DateButton() ## ??????? options pack(hbox, self.dateInput) pack(vb, hbox) ### pack(self.vbox, vb, 0, 0, 10)#????? self.vboxMan = vb ###### hbox = gtk.HBox() self.radioNtp = gtk.RadioButton.new_with_mnemonic_from_widget( radio_group_member=self.radioMan, label=_("Set from _NTP:"), ) self.radioNtp.connect("clicked", self.radioNtpClicked) pack(hbox, self.radioNtp) pack(self.vbox, hbox) ### hbox = gtk.HBox() ## l = gtk.Label() l.set_property("width-request", self.xpad) pack(hbox, l) ## pack(hbox, gtk.Label(label=_("Server:") + " ")) combo = gtk.ComboBoxText.new_with_entry() combo.get_child().connect("changed", self.updateSetButtonSensitive) pack(hbox, combo, 1, 1) self.ntpServerEntry = combo.get_child() for s in ui.ntpServers: combo.append_text(s) combo.set_active(0) self.hboxNtp = hbox pack(self.vbox, hbox) ###### self.radioManClicked() #self.radioNtpClicked() self.ckeckbEditTimeClicked() self.ckeckbEditDateClicked() ###### self.updateTimes() self.vbox.show_all()
# this work to /opt /usr /usr/local prefixes if exists(join(bin_path, share_path)): return join(bin_path, share_path) if exists(join(bin_path, icons_path)): return join(bin_path, icons_path) bin_path = split(bin_path)[0] ICON_PATH = get_path() if ICON_PATH: icon_16 = Pixbuf.new_from_file_at_scale(ICON_PATH, 16, 16, True) icon_32 = Pixbuf.new_from_file_at_scale(ICON_PATH, 32, 32, True) icon_48 = Pixbuf.new_from_file_at_scale(ICON_PATH, 48, 48, True) icon_64 = Pixbuf.new_from_file_at_scale(ICON_PATH, 64, 64, True) icon_128 = Pixbuf.new_from_file_at_scale(ICON_PATH, 128, 128, True) else: from gi.repository.Gtk import IconTheme from gi.repository.GLib import log_default_handler, LogLevelFlags log_default_handler("Application", LogLevelFlags.LEVEL_ERROR, "Formiko icon not found", 0) icon_theme = IconTheme.get_default() icon_16 = icon_theme.load_icon("text-editor-symbolic", 16, 0) icon_32 = icon_theme.load_icon("text-editor-symbolic", 32, 0) icon_48 = icon_theme.load_icon("text-editor-symbolic", 48, 0) icon_64 = icon_theme.load_icon("text-editor-symbolic", 64, 0) icon_128 = icon_theme.load_icon("text-editor-symbolic", 128, 0) icon_list = [icon_16, icon_32, icon_48, icon_64, icon_128]