def _setup_remove_button(self): if self._remove_btn: return self._remove_btn = remove_btn = Gtk.Button(hexpand=False) bin_open_img = "{}/icons/trashbin-open.png".format(media_dir()) self._res_bin_open = Gtk.Image.new_from_file(bin_open_img) bin_closed_img = "{}/icons/trashbin-closed.png".format(media_dir()) self._res_bin_closed = Gtk.Image.new_from_file(bin_closed_img) remove_btn.set_image(self._res_bin_closed) remove_btn.props.margin_right = 21 remove_btn.get_style_context().add_class('more-button') remove_btn.connect("clicked", self._uninstall_cb) remove_btn.set_tooltip_text(_("Remove")) remove_btn.connect("realize", self._set_cursor_to_hand_cb) remove_btn.connect("enter-notify-event", self._open_bin_cb) remove_btn.connect("leave-notify-event", self._close_bin_cb) self._entry.pack_start(remove_btn, False, False, 0) if self._update_btn and self._more_btn: self._entry.reorder_child(remove_btn, 4) elif self._update_btn or self._more_btn: self._entry.reorder_child(remove_btn, 3) else: self._entry.reorder_child(remove_btn, 2)
class DesktopButton(Gtk.Button): _ADD_IMG_PATH = "{}/icons/desktop-add.png".format(media_dir()) _RM_IMG_PATH = "{}/icons/desktop-rm.png".format(media_dir()) def __init__(self, app, apps_obj): Gtk.Button.__init__(self, hexpand=False) self._app = app self._apps = apps_obj self.get_style_context().add_class('desktop-button') self.props.margin_right = 21 self.connect("clicked", self._desktop_cb) self.refresh() self.show_all() def refresh(self): img = self.get_image() if img: img.destroy() if self._is_on_desktop(): self.set_image(Gtk.Image.new_from_file(self._RM_IMG_PATH)) self.set_tooltip_text(_("Remove from desktop")) else: self.set_image(Gtk.Image.new_from_file(self._ADD_IMG_PATH)) self.set_tooltip_text(_("Add to desktop")) self.show_all() def _is_on_desktop(self): kdesk_dir = os.path.expanduser('~/.kdesktop/') file_name = re.sub(' ', '-', self._app["title"]) + ".lnk" return os.path.exists(kdesk_dir + file_name) def _desktop_cb(self, event): if not self._is_on_desktop(): if add_to_desktop(self._app): self._apps.update_app(self._app) else: if remove_from_desktop(self._app): self._apps.update_app(self._app)
def _setup_update_button(self): if self._update_btn: return self._update_btn = update_btn = Gtk.Button(hexpand=False) img = Gtk.Image.new_from_file("{}/icons/update.png".format(media_dir())) update_btn.set_image(img) update_btn.props.margin_right = 21 update_btn.get_style_context().add_class('more-button') update_btn.connect("clicked", self._update_cb) update_btn.set_tooltip_text(_("Update app")) update_btn.connect("realize", self._set_cursor_to_hand_cb) self._entry.pack_start(update_btn, False, False, 0) self._entry.reorder_child(update_btn, 2)
def _setup_desc_button(self): if self._more_btn: return self._more_btn = more_btn = Gtk.Button(hexpand=False) more = Gtk.Image.new_from_file("{}/icons/more.png".format(media_dir())) more_btn.set_image(more) more_btn.props.margin_right = 21 more_btn.get_style_context().add_class('more-button') more_btn.connect("clicked", self._show_more_cb) more_btn.set_tooltip_text(_("More information")) more_btn.connect("realize", self._set_cursor_to_hand_cb) self._entry.pack_start(more_btn, False, False, 0) if self._update_btn: self._entry.reorder_child(more_btn, 3) else: self._entry.reorder_child(more_btn, 2)
def _create_kdesk_icon(app): icon_theme = Gtk.IconTheme.get_default() icon_info = icon_theme.lookup_icon(app["icon"], 66, 0) icon = app["icon"] if icon_info is not None: icon = icon_info.get_filename() cmd = app["launch_command"] if type(app["launch_command"]) is dict: args = map(lambda s: "\"{}\"".format(s) if s.find(" ") >= 0 else s, app["launch_command"]["args"]) cmd = app["launch_command"]["cmd"] if len(args) > 0: cmd += " " + " ".join(args) kdesk_entry = 'table Icon\n' kdesk_entry += ' Caption:\n' kdesk_entry += ' AppID:\n' kdesk_entry += ' Command: {}\n'.format(cmd) kdesk_entry += ' Singleton: true\n' kdesk_entry += ' Icon: {}\n'.format(icon) kdesk_entry += ' IconHover: {}\n'.format(media_dir() + "icons/generic-hover.png") kdesk_entry += ' HoverXOffset: 0\n' kdesk_entry += ' Relative-To: grid\n' kdesk_entry += ' X: 0\n' kdesk_entry += ' Y: 0\n' kdesk_entry += 'end\n' kdesk_dir = os.path.expanduser(KDESK_DIR) if not os.path.exists(kdesk_dir): os.makedirs(kdesk_dir) icon_f = open(_get_kdesk_icon_path(app), 'w') icon_f.write(kdesk_entry) icon_f.close()