Example #1
0
    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)
Example #2
0
    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)
Example #3
0
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)
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
    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)
Example #7
0
    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)
Example #8
0
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()
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()