def applyTheme(theme): ''' @summary: check if theme is valid and apply it into kdeglobals ''' assert theme in KIconTheme.list() config = KConfig('kdeglobals') gr = config.group('Icons') gr.writeEntry('Theme', theme) config.sync() KGlobalSettings.emitChange(KGlobalSettings.IconChanged)
def setHandedness(self, item): mapMouse = {} if self.ui.radioButtonRightHand.isChecked(): handed = RIGHT_HANDED else: handed = LEFT_HANDED mapMouse = display.Display().get_pointer_mapping() num_buttons = len(mapMouse) if num_buttons == 1: mapMouse[0] = 1 elif num_buttons == 2: if handed == RIGHT_HANDED: mapMouse[0], mapMouse[1] = 1, 3 else: mapMouse[0], mapMouse[1] = 3, 1 else: if handed == RIGHT_HANDED: mapMouse[0], mapMouse[2] = 1, 3 else: mapMouse[0], mapMouse[2] = 3, 1 if num_buttons >= 5: pos = 0 for pos in range(num_buttons): if mapMouse[pos] == 4 or mapMouse[pos] == 5: break if pos < num_buttons - 1: if self.ui.checkReverse.isChecked(): mapMouse[pos], mapMouse[pos + 1] = 5, 4 else: mapMouse[pos], mapMouse[pos + 1] = 4, 5 display.Display().set_pointer_mapping(mapMouse) config = KConfig("kcminputrc") group = config.group("Mouse") if handed == RIGHT_HANDED: group.writeEntry("MouseButtonMapping", QString("RightHanded")) self.__class__.screenSettings["selectedMouse"] = "RightHanded" else: group.writeEntry("MouseButtonMapping", QString("LeftHanded")) self.__class__.screenSettings["selectedMouse"] = "LeftHanded" group.writeEntry("ReverseScrollPolarity", QString(str(self.ui.checkReverse.isChecked()))) config.sync() KGlobalSettings.self().emitChange(KGlobalSettings.SettingsChanged, KGlobalSettings.SETTINGS_MOUSE)
def applyStyle(styleName): ''' Apply style to KDE globals @param styleName: Qt style name ''' config = KConfig('kdeglobals') #assert gr = config.group('General') gr.writeEntry('widgetStyle', styleName.lower()) config.sync() KGlobalSettings.emitChange(KGlobalSettings.StyleChanged)
def applyIconTheme(themeName): ''' @summary: apply emoticon theme themeName @raise AssertionError: if not themeName is vaild ''' assert themeName in listIconThemes() config = KConfig('kdeglobals') gr = config.group('Emoticons') gr.writeEntry('emoticonsTheme', themeName) config.sync() KGlobalSettings.emitChange(KGlobalSettings.IconChanged)
def setHandedness(self, item): mapMouse = {} if self.ui.radioButtonRightHand.isChecked(): handed = RIGHT_HANDED else: handed = LEFT_HANDED mapMouse = display.Display().get_pointer_mapping() num_buttons = len(mapMouse) if num_buttons == 1: mapMouse[0] = 1 elif num_buttons == 2: if handed == RIGHT_HANDED: mapMouse[0], mapMouse[1] = 1, 3 else: mapMouse[0], mapMouse[1] = 3, 1 else: if handed == RIGHT_HANDED: mapMouse[0], mapMouse[2] = 1, 3 else: mapMouse[0], mapMouse[2] = 3, 1 if num_buttons >= 5: pos = 0 for pos in range(num_buttons): if mapMouse[pos] == 4 or mapMouse[pos] == 5: break if pos < num_buttons -1: if self.ui.checkReverse.isChecked(): mapMouse[pos], mapMouse[pos + 1] = 5, 4 else: mapMouse[pos], mapMouse[pos + 1] = 4, 5 display.Display().set_pointer_mapping(mapMouse) config = KConfig("kcminputrc") group = config.group("Mouse") if handed == RIGHT_HANDED: group.writeEntry("MouseButtonMapping", QString("RightHanded")) self.__class__.screenSettings["selectedMouse"] = "RightHanded" else: group.writeEntry("MouseButtonMapping", QString("LeftHanded")) self.__class__.screenSettings["selectedMouse"] = "LeftHanded" group.writeEntry("ReverseScrollPolarity", QString(str(self.ui.checkReverse.isChecked()))) config.sync() KGlobalSettings.self().emitChange(KGlobalSettings.SettingsChanged, KGlobalSettings.SETTINGS_MOUSE)
def execute(self): self.__class__.screenSettings["summaryMessage"] ={} self.__class__.screenSettings["summaryMessage"].update({"selectedMouse": ki18n("Left Handed") if self.__class__.screenSettings["selectedMouse"] == "LeftHanded" else ki18n("Right Handed")}) self.__class__.screenSettings["summaryMessage"].update({"clickBehaviour": ki18n("Single Click ") if self.clickBehaviour == "True" else ki18n("Double Click")}) config = KConfig("kdeglobals") group = config.group("KDE") group.writeEntry("SingleClick", QString(self.clickBehaviour)) config.sync() KGlobalSettings.self().emitChange(KGlobalSettings.SettingsChanged, KGlobalSettings.SETTINGS_MOUSE) return True
def setHandedness(self, item): self.getMouseMap() # mouse has 1 button if self.num_buttons == 1: self.mapMouse[0] = 1 # mouse has 2 buttons elif self.num_buttons == 2: if self.handed == RIGHT_HANDED: self.mapMouse[0], self.mapMouse[1] = 1, 3 else: self.mapMouse[0], self.mapMouse[1] = 3, 1 # mouse has 3 or more buttons else: if self.handed == RIGHT_HANDED: self.mapMouse[0], self.mapMouse[2] = 1, 3 else: self.mapMouse[0], self.mapMouse[2] = 3, 1 if self.num_buttons >= 5: # get wheel position for pos in range(0, self.num_buttons): if self.mapMouse[pos] in (4, 5): break if pos < self.num_buttons - 1: if self.ui.checkReverse.isChecked(): self.mapMouse[pos], self.mapMouse[pos + 1] = 5, 4 else: self.mapMouse[pos], self.mapMouse[pos + 1] = 4, 5 display.Display().set_pointer_mapping(self.mapMouse) config = KConfig("kcminputrc") group = config.group("Mouse") if self.handed == RIGHT_HANDED: group.writeEntry("MouseButtonMapping", "RightHanded") self.__class__.screenSettings["selectedMouse"] = "RightHanded" else: group.writeEntry("MouseButtonMapping", "LeftHanded") self.__class__.screenSettings["selectedMouse"] = "LeftHanded" group.writeEntry("ReverseScrollPolarity", str(self.ui.checkReverse.isChecked())) config.sync() KGlobalSettings.self().emitChange(KGlobalSettings.SettingsChanged, KGlobalSettings.SETTINGS_MOUSE)
def applyColorScheme(schemeFile): """Applies the color scheme to KDE globals""" scheme = KConfig(schemeFile, KConfig.NoGlobals) kdeglobals = KConfig("kdeglobals") for groupName in scheme.groupList(): group = scheme.group(groupName) global_group = kdeglobals.group(groupName) for (k, v) in group.entryMap().items(): if groupName == "General" and k == "Name": k = "ColorScheme" global_group.writeEntry(k, v) kdeglobals.sync() KGlobalSettings.emitChange(KGlobalSettings.PaletteChanged)
def init(self): #TODO: have a configuration interface to set keybroad shortcut #self.setHasConfigurationInterface(True) self.setAspectRatioMode(Plasma.ConstrainedSquare) self.setBackgroundHints(self.NoBackground) self.sessionBus = dbus.SessionBus() self.powerdevil = self.sessionBus.get_object( 'org.freedesktop.PowerManagement', '/modules/powerdevil') self.icon = Plasma.IconWidget(KIcon('preferences-desktop-screensaver'), '', self.applet) if KGlobalSettings.singleClick(): self.connect(self.icon, SIGNAL('clicked()'), self.turn_off_screen) else: self.connect(self.icon, SIGNAL('doubleClicked()'), self.turn_off_screen) self.connect(self, SIGNAL('active()'), self.turn_off_screen) self.layout = QGraphicsLinearLayout(self.applet) self.layout.setContentsMargins(0, 0, 0, 0) self.layout.setSpacing(0) self.layout.addItem(self.icon) self.setLayout(self.layout) self.resize(25, 25)
def __init__ (self, collaggr=None, songs=None, view=None): QAbstractTableModel.__init__ (self, view) # TODO: different delegate for editing tags: one with completion self.view_= view self.playlist= view.playlist self.edited= False if songs is None: self.collaggr= collaggr self.collections= self.collaggr.collections self.signalMapper= QSignalMapper () for collNo, collection in enumerate (self.collections): collection.newSongs.connect (self.signalMapper.map) self.signalMapper.setMapping (collection, collNo) self.signalMapper.mapped.connect (self.addRows) else: self.collaggr= CollectionAggregator (self, songs=songs) self.attrNames= ('artist', 'year', 'collection', 'diskno', 'album', 'trackno', 'title', 'length', 'filepath') self.headers= (u'Artist', u'Year', u'Collection', u'CD', u'Album', u'Track', u'Title', u'Length', u'Path') # FIXME: kinda hacky self.fontMetrics= QFontMetrics (KGlobalSettings.generalFont ()) # FIXME: (even more) hackish self.columnWidths= ("M"*15, "M"*4, "M"*15, "M"*3, "M"*20, "M"*3, "M"*25, "M"*5, "M"*200) logger.debug ("QPLM: ", self)
def pathToDocumentsDir(): if operating_system.isWindows(): from win32com.shell import shell, shellcon try: return shell.SHGetSpecialFolderPath(None, shellcon.CSIDL_PERSONAL) except: # Yes, one of the documented ways to get this sometimes fail with "Unspecified error". Not sure # this will work either. # Update: There are cases when it doesn't work either; see support request #410... try: return shell.SHGetFolderPath(None, shellcon.CSIDL_PERSONAL, None, 0) # SHGFP_TYPE_CURRENT not in shellcon except: return os.getcwd() # F**k this elif operating_system.isMac(): import Carbon.Folder, Carbon.Folders, Carbon.File pathRef = Carbon.Folder.FSFindFolder(Carbon.Folders.kUserDomain, Carbon.Folders.kDocumentsFolderType, True) return Carbon.File.pathname(pathRef) elif operating_system.isGTK(): try: from PyKDE4.kdeui import KGlobalSettings except ImportError: pass else: return unicode(KGlobalSettings.documentPath()) # Assuming Unix-like return os.path.expanduser('~')
def connectUi (self, player): self.player= player self.playlist= player.playlist # connect buttons! self.ui.prevButton.clicked.connect (self.player.prev) # the QPushButton.clicked() emits a bool, # and it's False on normal (non-checkable) buttons # no, it's not false, it's 0, which is indistinguishable from play(0) # so lambda the 'bool' away self.ui.playButton.clicked.connect (lambda b: self.player.play ()) self.ui.pauseButton.clicked.connect (self.player.pause) self.ui.stopButton.clicked.connect (self.player.stop) self.ui.nextButton.clicked.connect (self.player.next) self.ui.randomCheck.setChecked (self.playlist.random) self.ui.randomCheck.clicked.connect (self.playlist.toggleRandom) self.playlist.randomChanged.connect (self.ui.randomCheck.setChecked) self.ui.stopAfterCheck.setChecked (self.player.stopAfter) self.ui.stopAfterCheck.clicked.connect (self.player.toggleStopAfter) self.player.stopAfterChanged.connect (self.ui.stopAfterCheck.setChecked) self.ui.searchEntry.textChanged.connect (self.search) majV, minV, patchL= utils.phononVersion () if (majV>4) or (majV==4 and minV>3) or (majV==4 and minV==3 and patchL>1): # each second self.player.media.setTickInterval (1000); self.player.media.tick.connect (self.updateTimes) self.ui.seekSlider.setMediaObject (self.player.media) # TODO: self.ui.volumeSlider # TODO: better name? self.appModel= QPlayListModel (collaggr=self.playlist.collaggr, view=self) # TODO: connect after the collection has been scanned/populated self.appModel.dataChanged.connect (self.copyEditToSelection) self.copying= False self.setModel (self.appModel) self.renamer= Renamer (self.model.collaggr) self.playlist.songChanged.connect (self.showSong) self.playlist.queued.connect (self.appModel.dirtyRow) self.playlist.dequeued.connect (self.appModel.dirtyRow) self.ui.songsList.activated.connect (self.changeSong) self.player.songChanged.connect (self.nowPlaying) # FIXME: kinda hacky self.fontMetrics= QFontMetrics (KGlobalSettings.generalFont ()) for i, w in enumerate (self.model.columnWidths): self.ui.songsList.setColumnWidth (i, self.fontMetrics.width (w)) # this is much much slower! # self.ui.songsList.verticalHeader ().setResizeMode (QHeaderView.ResizeToContents) # FIXME: temporarily until I resolve the showSong() at boot time self.modelIndex= None self.songIndexSelectedByUser= None actions.create (self, self.actionCollection ())
def start(main_window): # https://projects.kde.org/projects/kde/kde-workspace/repository/revisions/master/entry/kcontrol/style/kcmstyle.cpp kGlobalSettings = KGlobalSettings.self() main_window.print_html( '<b style="color:green">Notifying all KDE applications about the ' 'global settings change.</b>') kGlobalSettings.emitChange(KGlobalSettings.StyleChanged) kGlobalSettings.emitChange(KGlobalSettings.SettingsChanged) kGlobalSettings.emitChange(KGlobalSettings.ToolbarStyleChanged) kGlobalSettings.emitChange(KGlobalSettings.PaletteChanged) kGlobalSettings.emitChange(KGlobalSettings.FontChanged) kGlobalSettings.emitChange(KGlobalSettings.IconChanged) kGlobalSettings.emitChange(KGlobalSettings.CursorChanged)
def __init__(self, backend, img=None, persistent=True, allow_system_internal=False): QObject.__init__(self) #our passed vars - keep them private self.__persistent = persistent self.__img = img self.__allow_system_internal = allow_system_internal # Perform some initialization self.__initPrivateVars() self.__initUI() #enable the backend self.__backend = backend # Connect to backend signals. self.__backend.source_added_cb = self.add_source self.__backend.target_added_cb = self.add_target self.__backend.source_removed_cb = self.remove_source self.__backend.target_removed_cb = self.remove_target self.__backend.failure_cb = self.failure self.__backend.success_cb = self.success self.__backend.install_progress_cb = self.progress self.__backend.install_progress_message_cb = self.progress_message self.__backend.retry_cb = self.retry self.__backend.target_changed_cb = self.update_target self.__backend.format_ended_cb = self.format_ended self.__backend.format_failed_cb = self.format_failed #add any file sources passed if self.__img is not None: self.__backend.add_image(misc.text_type(self.__img)) downloadsDir = QDir(KGlobalSettings.self().downloadPath()) isoFilter = [] isoFilter.append("*.iso") for iso in downloadsDir.entryList(isoFilter, QDir.Files): self.__backend.add_image(misc.text_type(downloadsDir.absoluteFilePath(iso))) def test_func(*a): if not queue.empty(): func = queue.get_nowait() func() queue.task_done() return True self.queue_processor = self.add_timeout(500, test_func, None) self.__backend.detect_devices() self.update_loop = self.add_timeout(2000, self.__backend.update_free)
def init(self): #TODO: have a configuration interface to set keybroad shortcut #self.setHasConfigurationInterface(True) self.setAspectRatioMode(Plasma.ConstrainedSquare) self.setBackgroundHints(self.NoBackground) self.sessionBus = dbus.SessionBus() self.powerdevil = self.sessionBus.get_object('org.freedesktop.PowerManagement', '/modules/powerdevil') self.icon= Plasma.IconWidget(KIcon('preferences-desktop-screensaver'), '', self.applet) if KGlobalSettings.singleClick(): self.connect(self.icon, SIGNAL('clicked()'), self.turn_off_screen) else: self.connect(self.icon, SIGNAL('doubleClicked()'), self.turn_off_screen) self.connect(self, SIGNAL('active()'), self.turn_off_screen) self.layout = QGraphicsLinearLayout(self.applet) self.layout.setContentsMargins(0, 0, 0, 0) self.layout.setSpacing(0) self.layout.addItem(self.icon) self.setLayout(self.layout) self.resize(25, 25)
def getUserDesktopPath(): desktopPath = None if isActivePyKDE4: from PyKDE4.kdeui import KGlobalSettings desktopPath = str(KGlobalSettings.desktopPath()) elif isAvailableKDE4(): from Core import Execute desktopPath = Execute.getCommandResult(["kde4-config", "--userpath", "desktop"])[:-2] elif isWindows: from win32com.shell import shell, shellcon desktopPath = shell.SHGetFolderPath(0, shellcon.CSIDL_DESKTOP, 0, 0) else: desktopNames = [str(translate("Variables", "Desktop")), "Desktop"] for dirName in desktopNames: if fu.isDir(fu.joinPath(fu.userDirectoryPath, dirName)): desktopPath = fu.joinPath(fu.userDirectoryPath, dirName) break else: desktopPath = fu.userDirectoryPath return desktopPath
def getUserDesktopPath(): desktopPath = None if isActivePyKDE4: from PyKDE4.kdeui import KGlobalSettings desktopPath = str(KGlobalSettings.desktopPath()) elif isAvailableKDE4(): from Core import Execute desktopPath = Execute.getCommandResult( ["kde4-config", "--userpath", "desktop"])[:-2] elif isWindows: from win32com.shell import shell, shellcon desktopPath = shell.SHGetFolderPath(0, shellcon.CSIDL_DESKTOP, 0, 0) else: desktopNames = [str(translate("Variables", "Desktop")), "Desktop"] for dirName in desktopNames: if fu.isDir(fu.joinPath(fu.userDirectoryPath, dirName)): desktopPath = fu.joinPath(fu.userDirectoryPath, dirName) break else: desktopPath = fu.userDirectoryPath return desktopPath
def emitChange(self): '''emit that mouse settings has changed''' KGlobalSettings.self().emitChange(KGlobalSettings.SettingsChanged,KGlobalSettings.SETTINGS_MOUSE)
#!/usr/bin/env python import os, sys, datetime from dbus import SessionBus from PyKDE4.kdecore import KConfig, KConfigGroup from PyKDE4.kdeui import KGlobalSettings kGlobalSettings = KGlobalSettings.self() # tell all KDE apps to recreate their styles to apply the setitngs kGlobalSettings.emitChange(KGlobalSettings.StyleChanged) kGlobalSettings.emitChange(KGlobalSettings.SettingsChanged) kGlobalSettings.emitChange(KGlobalSettings.ToolbarStyleChanged) kGlobalSettings.emitChange(KGlobalSettings.PaletteChanged) kGlobalSettings.emitChange(KGlobalSettings.FontChanged) kGlobalSettings.emitChange(KGlobalSettings.IconChanged) kGlobalSettings.emitChange(KGlobalSettings.CursorChanged) print 'Telling Kwin to reload its config' os.system("dbus-send --dest=org.kde.kwin /KWin org.kde.KWin.reloadConfig") print 'Telling plasma to reload its config' plasma = SessionBus().get_object('org.kde.plasma-desktop','/MainApplication') plasma.reparseConfiguration()
def emitChange(self): '''emit that mouse settings has changed''' KGlobalSettings.self().emitChange(KGlobalSettings.SettingsChanged, KGlobalSettings.SETTINGS_MOUSE)