1#!/usr/local/bin/python3.8 2 3from ExtensionCore import ManageSpicesPage, DownloadSpicesPage 4from Spices import Spice_Harvester 5from SettingsWidgets import SidePage 6from xapp.GSettingsWidgets import * 7from gi.repository import GLib, Gtk 8 9class Module: 10 comment = _("Manage your Cinnamon desklets") 11 name = "desklets" 12 category = "prefs" 13 14 def __init__(self, content_box): 15 self.window = None 16 self.sidePage = DeskletsViewSidePage(content_box, self) 17 18 def on_module_selected(self): 19 if not self.loaded: 20 print("Loading Desklets module") 21 self.sidePage.load(self.window) 22 23 def _setParentRef(self, window): 24 self.window = window 25 26class DeskletsViewSidePage(SidePage): 27 collection_type = "desklet" 28 29 def __init__(self, content_box, module): 30 self.RemoveString = _("You can remove specific instances from the desktop via that desklet's context menu") 31 keywords = _("desklet, desktop, slideshow") 32 33 super(DeskletsViewSidePage, self).__init__(_("Desklets"), "cs-desklets", keywords, content_box, module=module) 34 35 def load(self, window): 36 self.window = window 37 38 self.spices = Spice_Harvester(self.collection_type, self.window) 39 40 self.stack = SettingsStack() 41 self.add_widget(self.stack) 42 self.stack.expand = True 43 44 manage_extensions_page = ManageDeskletsPage(self, self.spices, self.window) 45 self.stack.add_titled(manage_extensions_page, 'installed', _("Manage")) 46 47 download_desklets_page = DownloadSpicesPage(self, self.collection_type, self.spices, self.window) 48 self.stack.add_titled(download_desklets_page, 'more', _("Download")) 49 50 page = SettingsPage() 51 self.stack.add_titled(page, 'general', _("General Settings")) 52 53 settings = page.add_section(_("General Desklets Settings")) 54 55 dec = [[0, _("No decoration")], [1, _("Border only")], [2, _("Border and header")]] 56 widget = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) 57 combo_box = GSettingsComboBox(_("Decoration of desklets"), "org.cinnamon", "desklet-decorations", dec, valtype=int) 58 widget.pack_start(combo_box, False, False, 0) 59 line1 = Gtk.Label() 60 line1.set_markup("<i><small>%s</small></i>" % _("Note: Some desklets require the border/header to be always present")) 61 line1.get_style_context().add_class("dim-label") 62 widget.pack_start(line1, True, True, 0) 63 line2 = Gtk.Label() 64 line2.set_markup("<i><small>%s</small></i>" % _("Such requirements override the settings selected here")) 65 line2.get_style_context().add_class("dim-label") 66 widget.pack_start(line2, True, True, 0) 67 settings.add_row(widget) 68 69 settings.add_row(GSettingsSwitch(_("Snap desklets to grid"), "org.cinnamon", "desklet-snap")) 70 settings.add_reveal_row(GSettingsSpinButton(_("Width of desklet snap grid"), "org.cinnamon", "desklet-snap-interval", "", 0, 100, 1, 5), "org.cinnamon", "desklet-snap") 71 72class ManageDeskletsPage(ManageSpicesPage): 73 directories = [("%s/.local/share/cinnamon/desklets") % GLib.get_home_dir(), "/usr/local/share/cinnamon/desklets"] 74 collection_type = "desklet" 75 installed_page_title = _("Installed desklets") 76 instance_button_text = _("Add") 77 remove_button_text = _("Remove") 78 uninstall_button_text = _("Uninstall") 79 restore_button_text = _("Remove all") 80 81 def __init__(self, parent, spices, window): 82 super(ManageDeskletsPage, self).__init__(parent, self.collection_type, spices, window) 83