def getTagger(_isAlertIfNotExist=False, _isReloadAgain=False): global loaddedTagger try: if not _isReloadAgain and loaddedTagger is not None: return loaddedTagger preferedTaggerModule = uni.MySettings["preferedTaggerModule"] taggerModule = __import__("Taggers." + preferedTaggerModule, globals(), locals(), ["isAvailable", "Tagger", preferedTaggerModule], 0) if taggerModule.isAvailable: loaddedTagger = taggerModule.Tagger() return loaddedTagger taggersNames = uni.getTaggersMachineNames() for tagger in taggersNames: taggerModule = __import__("Taggers." + tagger, globals(), locals(), ["isAvailable", "Tagger", tagger], 0) if taggerModule.isAvailable: uni.setMySetting("preferedTaggerModule", tagger) loaddedTagger = taggerModule.Tagger() return loaddedTagger if _isAlertIfNotExist: Dialogs.show(translate("Taggers", "You Have Not Any Tagger"), translate("Taggers", "Not found any tagger in your system. " "Please install a tagger module. " "Now supporting only eyeD3 module (python-eyed3).")) return None except: ReportBug.ReportBug()
def valueChanged(self, _action=None): try: senderAction = self.sender() if senderAction.parent().objectName() in self.keysOfSettings: indexNo = self.keysOfSettings.index( senderAction.parent().objectName()) else: indexNo = self.keysOfSettings.index(senderAction.objectName()) selectedValue = None if self.typesOfValues[indexNo] == "Yes/No": if senderAction.isChecked(): selectedValue = True else: selectedValue = False elif self.typesOfValues[indexNo][0] == "options": valueIndex = int(_action.objectName().split(";")[1]) selectedValue = self.valuesOfOptionsKeys[ self.typesOfValues[indexNo][1]][valueIndex] uni.setMySetting(self.keysOfSettings[indexNo], selectedValue) self.checkEnableStates() getMainWindow().StatusBar.fillSelectionInfo() if getMainTable() is not None: getMainTable().fillSelectionInfo() except: ReportBug.ReportBug()
def closeEvent(self, _event): try: self.player.stop() uni.setMySetting("isPlayNow", self.isPlayNow.isChecked()) except: pass self.closeCurrenctImageDialogs()
def closeEvent(self, _event): try: self.player.stop() uni.setMySetting("isPlayNow", self.isPlayNow.isChecked()) except: pass self.closeCurrenctImageDialogs()
def changeTableTypeByType(_tableType): try: if uni.tableType != _tableType: if getMainTable().checkUnSavedValues() is False: return False uni.setMySetting(getMainTable().hiddenTableColumnsSettingKey, getMainTable().hiddenTableColumns) if uni.tableType in ["2", "6", "8", "9"]: getMainWindow().removeToolBar(getMainWindow().PlayerBar) getMainWindow().PlayerBar.deleteLater() getMainWindow().PlayerBar = None try: getMainWindow().removeDockWidget( getMainWindow().dckSpecialTools) except: pass getMainWindow().resetCentralWidget() uni.tableType = _tableType refreshBars() getMainWindow().FileManager.makeRefresh() MApplication.processEvents() return True else: return False except: ReportBug.ReportBug() return False
def installKDE4Languages(): if uni.isAvailableKDE4(): for langCode in uni.getInstalledLanguagesCodes(): installKDE4Language(langCode) uni.setMySetting("isInstalledKDE4Language", True) return True return False
def checkAmarok(_isAlertIfNotAvailable=True, _isUseReadOnly=True): global isAskEmbeddedDBConfiguration if isLoadedMysql and uni.isAvailableKDE4(): if uni.getBoolValue("amarokIsUseHost"): if _isUseReadOnly or uni.getBoolValue( "isReadOnlyAmarokDBHost") is False: return True else: if _isAlertIfNotAvailable: answer = Dialogs.ask( translate("Amarok", "This Feature Is Not Usable"), translate( "Amarok", "This feature is not usable with read only Amarok database. <br>Are you want to give permission to read and write for Amarok database?" )) if answer == Dialogs.Yes: uni.setMySetting("isReadOnlyAmarokDBHost", False) return True else: isAskEmbeddedDBConfiguration = True return checkEmbeddedDB() else: if _isAlertIfNotAvailable: Dialogs.showError( translate("Amarok", "Amarok Module Is Not Usable"), translate("Amarok", "Please run Amarok once.")) return False return False
def cckbMStateChanged(self, _index=None): if self.settingKey is not None: if self.checkState() == Mt.Checked: uni.setMySetting(self.settingKey, True) else: uni.setMySetting(self.settingKey, False) if self.stateChanged is not None: self.stateChanged()
def subDirectoryDeepChanged(self, _action=None): try: selectedDeep = str(self.SubDirectoryDeeps[_action]) if self.checkUnSavedValues(): uni.setMySetting("subDirectoryDeep", int(selectedDeep)) self.refreshForColumns() getMainWindow().SpecialTools.refreshForColumns() self.refresh(getMainWindow().FileManager.getCurrentDirectoryPath()) self.cbSubDirectoryDeep.setCurrentIndex( self.cbSubDirectoryDeep.findText(str(uni.MySettings["subDirectoryDeep"]))) except: ReportBug.ReportBug()
def cbTaggerChanged(self, _action=None): try: tagger = self.cbTagger.currentData() if self.checkUnSavedValues(): uni.setMySetting("preferedTaggerModule", tagger) t = Taggers.getTagger(True, True) self.refreshForColumns() getMainWindow().SpecialTools.refreshForColumns() self.refresh(getMainWindow().FileManager.getCurrentDirectoryPath()) self.cbTagger.setCurrentIndex( self.cbTagger.findText(Taggers.getTaggerName(uni.MySettings["preferedTaggerModule"]))) except: ReportBug.ReportBug()
def cbTaggerChanged(self, _action=None): try: tagger = self.cbTagger.currentData() if self.checkUnSavedValues(): uni.setMySetting("preferedTaggerModule", tagger) t = Taggers.getTagger(True, True) self.refreshForColumns() getMainWindow().SpecialTools.refreshForColumns() self.refresh(getMainWindow().FileManager.getCurrentDirectoryPath()) self.cbTagger.setCurrentIndex( self.cbTagger.findText(Taggers.getTaggerName(uni.MySettings["preferedTaggerModule"]))) except: ReportBug.ReportBug()
def changeReNamerType(_action): try: if getMainTable().checkUnSavedValues() is False: _action.setChecked(False) for x, typeName in enumerate(uni.fileReNamerTypeNamesKeys): if typeName == uni.MySettings["fileReNamerType"]: getMainWindow().TableToolsBar.actsFileReNamerTypes[x].setChecked(True) return False for x, typeName in enumerate(uni.fileReNamerTypeNamesKeys): if getMainWindow().TableToolsBar.actsFileReNamerTypes[x].isChecked(): uni.setMySetting("fileReNamerType", typeName) getMainWindow().FileManager.makeRefresh() MApplication.processEvents() except: ReportBug.ReportBug()
def changeReNamerType(_action): try: if getMainTable().checkUnSavedValues() is False: _action.setChecked(False) for x, typeName in enumerate(uni.fileReNamerTypeNamesKeys): if typeName == uni.MySettings["fileReNamerType"]: getMainWindow( ).TableToolsBar.actsFileReNamerTypes[x].setChecked(True) return False for x, typeName in enumerate(uni.fileReNamerTypeNamesKeys): if getMainWindow().TableToolsBar.actsFileReNamerTypes[x].isChecked( ): uni.setMySetting("fileReNamerType", typeName) getMainWindow().FileManager.makeRefresh() MApplication.processEvents() except: ReportBug.ReportBug()
def setAllBarsStyleToMySettings(): uni.setMySetting("TableToolsBarButtonStyle", getMainWindow().TableToolsBar.toolButtonStyle()) uni.setMySetting("ToolsBarButtonStyle", getMainWindow().ToolsBar.toolButtonStyle()) if uni.tableType in ["2", "6", "8", "9"]: uni.setMySetting("PlayerBarButtonStyle", getMainWindow().PlayerBar.toolButtonStyle())
def tabChanged(self, _index): uni.setMySetting("activeTabNoOfSpecialTools", str(_index)) self.pbtnApply.setEnabled(True) self.tbAddToBefore.setEnabled(True) self.tbAddToAfter.setEnabled(True) if _index == 0: self.cbInformationSection.setCurrentIndex(0) self.cbInformationSection.setEnabled(False) elif _index == 1: self.cbInformationSection.setEnabled(True) self.clearChangeTypes() self.btChange.setChecked(True) elif _index == 2: self.cbInformationSection.setCurrentIndex(0) self.cbInformationSection.setEnabled(False) elif _index == 3: self.cbInformationSection.setEnabled(True) self.clearChangeTypes() self.btChange.setChecked(True) self.tbAddToBefore.setEnabled(False) self.tbAddToAfter.setEnabled(False) elif _index == 4: self.cbInformationSection.setEnabled(True) self.clearChangeTypes() self.btChange.setChecked(True) self.tbAddToBefore.setEnabled(False) self.tbAddToAfter.setEnabled(False) elif _index == 5: self.cbInformationSection.setCurrentIndex(0) self.cbInformationSection.setEnabled(False) self.clearChangeTypes() self.btChange.setChecked(True) self.tbAddToBefore.setEnabled(False) self.tbAddToAfter.setEnabled(False) elif _index == 6: self.cbInformationSection.setCurrentIndex(0) self.cbInformationSection.setEnabled(False) self.pbtnApply.setEnabled(False)
def tabChanged(self, _index): uni.setMySetting("activeTabNoOfSpecialTools", str(_index)) self.pbtnApply.setEnabled(True) self.tbAddToBefore.setEnabled(True) self.tbAddToAfter.setEnabled(True) if _index == 0: self.cbInformationSection.setCurrentIndex(0) self.cbInformationSection.setEnabled(False) elif _index == 1: self.cbInformationSection.setEnabled(True) self.clearChangeTypes() self.btChange.setChecked(True) elif _index == 2: self.cbInformationSection.setCurrentIndex(0) self.cbInformationSection.setEnabled(False) elif _index == 3: self.cbInformationSection.setEnabled(True) self.clearChangeTypes() self.btChange.setChecked(True) self.tbAddToBefore.setEnabled(False) self.tbAddToAfter.setEnabled(False) elif _index == 4: self.cbInformationSection.setEnabled(True) self.clearChangeTypes() self.btChange.setChecked(True) self.tbAddToBefore.setEnabled(False) self.tbAddToAfter.setEnabled(False) elif _index == 5: self.cbInformationSection.setCurrentIndex(0) self.cbInformationSection.setEnabled(False) self.clearChangeTypes() self.btChange.setChecked(True) self.tbAddToBefore.setEnabled(False) self.tbAddToAfter.setEnabled(False) elif _index == 6: self.cbInformationSection.setCurrentIndex(0) self.cbInformationSection.setEnabled(False) self.pbtnApply.setEnabled(False)
def checkAmarok(_isAlertIfNotAvailable=True, _isUseReadOnly=True): global isAskEmbeddedDBConfiguration if isLoadedMysql and uni.isAvailableKDE4(): if uni.getBoolValue("amarokIsUseHost"): if _isUseReadOnly or uni.getBoolValue("isReadOnlyAmarokDBHost") is False: return True else: if _isAlertIfNotAvailable: answer = Dialogs.ask(translate("Amarok", "This Feature Is Not Usable"), translate("Amarok", "This feature is not usable with read only Amarok database. <br>Are you want to give permission to read and write for Amarok database?")) if answer == Dialogs.Yes: uni.setMySetting("isReadOnlyAmarokDBHost", False) return True else: isAskEmbeddedDBConfiguration = True return checkEmbeddedDB() else: if _isAlertIfNotAvailable: Dialogs.showError(translate("Amarok", "Amarok Module Is Not Usable"), translate("Amarok", "Please run Amarok once.")) return False return False
def valueChanged(self, _action=None): try: senderAction = self.sender() if senderAction.parent().objectName() in self.keysOfSettings: indexNo = self.keysOfSettings.index(senderAction.parent().objectName()) else: indexNo = self.keysOfSettings.index(senderAction.objectName()) selectedValue = None if self.typesOfValues[indexNo] == "Yes/No": if senderAction.isChecked(): selectedValue = True else: selectedValue = False elif self.typesOfValues[indexNo][0] == "options": valueIndex = int(_action.objectName().split(";")[1]) selectedValue = self.valuesOfOptionsKeys[self.typesOfValues[indexNo][1]][valueIndex] uni.setMySetting(self.keysOfSettings[indexNo], selectedValue) self.checkEnableStates() getMainWindow().StatusBar.fillSelectionInfo() if getMainTable() is not None: getMainTable().fillSelectionInfo() except: ReportBug.ReportBug()
def changeTableTypeByType(_tableType): try: if uni.tableType != _tableType: if getMainTable().checkUnSavedValues() is False: return False uni.setMySetting(getMainTable().hiddenTableColumnsSettingKey, getMainTable().hiddenTableColumns) if uni.tableType in ["2", "6", "8", "9"]: getMainWindow().removeToolBar(getMainWindow().PlayerBar) getMainWindow().PlayerBar.deleteLater() getMainWindow().PlayerBar = None try: getMainWindow().removeDockWidget(getMainWindow().dckSpecialTools) except: pass getMainWindow().resetCentralWidget() uni.tableType = _tableType refreshBars() getMainWindow().FileManager.makeRefresh() MApplication.processEvents() return True else: return False except: ReportBug.ReportBug() return False
def doAfterRunProcessesStep1(self): if str(fu.defaultFileSystemEncoding) != str(uni.MySettings["fileSystemEncoding"]): answer = Dialogs.ask( translate("HamsiManager", "Your System's \"File System Encoding\" Type Different"), translate("HamsiManager", "Your system's \"File System Encoding\" type different from the settings you select. Are you sure you want to continue?If you are not sure press the \"No\"."), False, "Your System's \"File System Encoding\" Type Different") if answer == Dialogs.No: OptionsForm.OptionsForm(self, _focusTo="fileSystemEncoding") if uni.getBoolValue("isMakeAutoDesign"): self.TableToolsBar.setVisible(False) self.ToolsBar.setVisible(False) if isActivePyKDE4: self.Browser.setVisible(False) self.TreeBrowser.setVisible(False) self.FileManager.urlNavigator.setMinimumWidth(150) self.FileManager.tbarBrowserToolsFull.setVisible(False) self.tabifyDockWidget(self.Browser, self.Places) self.tabifyDockWidget(self.Browser, self.TreeBrowser) self.tabifyDockWidget(self.Browser, self.DirOperator) geometries = uni.getListValue("MainWindowGeometries") self.setGeometry(int(geometries[0]), int(geometries[1]), 900, 600) uni.setMySetting("isMakeAutoDesign", "False") if uni.isShowVerifySettings and (uni.changedDefaultValuesKeys != [] or uni.newSettingsKeys != []): answer = Dialogs.ask(translate("HamsiManager", "Added New Options And New Features"), translate("HamsiManager", "New options and new features added to Hamsi Manager. Are you want to change or verify new options?"), False, "Added New Options And New Features") if answer == Dialogs.Yes: newOrChangedKeys = uni.newSettingsKeys + uni.changedDefaultValuesKeys OptionsForm.OptionsForm(self, "Normal", None, newOrChangedKeys) elif uni.getBoolValue("isShowReconfigureWizard") and uni.isBuilt() is False: from Tools import Configurator Configurator.Configurator() uni.setMySetting("isShowReconfigureWizard", "False")
def apply(self): try: uni.setMySetting(self.filterKeyName, str(self.leFilter.text())) getMainTable().refresh(getMainWindow().FileManager.getCurrentDirectoryPath()) except: ReportBug.ReportBug()
def remindMeLaterAndClose(self): uni.setMySetting("remindMeLaterForUpdate", self.cbRemindMeLater.value()) uni.saveSettings() self.close()
def setSelectedTagTargetType(_type, _tableName="AmarokMusicTable"): uni.setMySetting("AmarokTagTargetType" + _tableName, _type)
def checkCommandLineOptions(): global isQuickMake, QuickMakeParameters, myArgvs, parser, optionList myArgvs = sys.argv isDontRun = False optionList = [] parser = OptionParser(usage="%prog [options] [<arg1>...]", version="HamsiManager " + uni.version, epilog="""\ Copyright (c) 2010 - 2015 Murat Demir <*****@*****.**> , HamsiManager is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.""") parser.add_option('-d', '--debug', help='Enable debugging output. ' 'Chatty', action='store_const', const=logging.DEBUG, dest='loggingLevel') optionList.append("d") optionList.append("debug") parser.add_option('-v', '--verbose', help='Enable informative output', action='store_const', const=logging.INFO, dest='loggingLevel') optionList.append("v") optionList.append("verbose") parser.add_option('--directory', help='The current directory path. ' 'Example : /home/yourname/someDirectory ') optionList.append("directory <directory>") parser.add_option( '-s', '--sFileName', help='The setting file name(or path). ' '"The settings directory path" + "/" + "YourEnteredName" ' 'Example : enteredName.ini ') optionList.append("s <settingFile>") optionList.append("sFileName <settingFile>") parser.add_option('--sDirectoryPath', help='The settings directory path. ' 'Example : /home/yourname/.HamsiApps/HamsiManager ') optionList.append("sDirectoryPath <settingDirectory>") parser.add_option('-t', '--tableType', help='Table Type Name. ' 'Example : "0" for Folder Table ' 'Example : "1" for File Table ' 'Example : "2" for Music Table ' 'Example : "3" for Subfolder Table ' 'Example : "4" for Cover Table ') optionList.append("t <tableTypeNo>") optionList.append("tableType <tableTypeNo>") parser.add_option('-f', '--fileReNamerType', help='File Renamer Type. ' 'Example : "Personal Computer" ' 'Example : "Web Server" ' 'Example : "Removable Media" ') optionList.append("f <fileReNamerTypeNo>") optionList.append("fileReNamerType <fileReNamerTypeNo>") qmgroup = OptionGroup(parser, "Quick Make Options", "You can make quickly what are you want.") qmgroup.add_option('--qmw', help='Are you want to show Quick Make Window. ' 'Example : "1" or "True" for Yes ' 'Example : "0" or "False" for No ') optionList.append("qmw <o>") qmgroup.add_option( '--qm', help='Are you want to run Quick Make by some parameters?', action='store_const', const=True) optionList.append("qm") qmgroup.add_option('--configurator', help='Open Hamsi Manager Configurator', action='store_const', const=True) optionList.append("configurator") qmgroup.add_option('--plugins', help='Show plugins', action='store_const', const=True) optionList.append("plugins") qmgroup.add_option('--pack', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("pack <directory>") qmgroup.add_option('--hash', help='The file path. ' 'Example : /home/yourname/someFile') optionList.append("hash <file>") qmgroup.add_option('--checkIcon', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("checkIcon <directory>") qmgroup.add_option('--clearEmptyDirectories', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("clearEmptyDirectories <directory>") qmgroup.add_option('--clearUnneededs', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("clearUnneededs <directory>") qmgroup.add_option('--clearIgnoreds', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("clearIgnoreds <directory>") qmgroup.add_option('--emendFile', help='The file path. ' 'Example : /home/yourname/someFile') optionList.append("emendFile <file>") qmgroup.add_option('--emendDirectory', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("emendDirectory <directory>") qmgroup.add_option('--emendDirectoryWithContents', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("emendDirectoryWithContents <directory>") qmgroup.add_option('--copyPath', help='The file/directory path. ' 'Example : /home/yourname/somePath') optionList.append("copyPath <fileOrDirectory>") qmgroup.add_option('--fileTree', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("fileTree <directory>") qmgroup.add_option('--removeOnlySubFiles', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("removeOnlySubFiles <directory>") qmgroup.add_option('--clear', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("clear <directory>") qmgroup.add_option('--textCorrector', help='The file path. ' 'Example : /home/yourname/someFile') optionList.append("textCorrector <file>") qmgroup.add_option('--search', help='The file/directory path. ' 'Example : /home/yourname/somePath') optionList.append("search <fileOrDirectory>") dgroup = OptionGroup( parser, "Dangerous Options", "Caution: use these options at your own risk. " "It is believed that some of them bite.") dgroup.add_option('--runAsRoot', help='Are you want to run as root?', action='store_const', const=True) optionList.append("runAsRoot") optionList.append("+[optionalFileOrDirectory]") parser.add_option_group(qmgroup) parser.add_option_group(dgroup) parser.set_defaults(loggingLevel=logging.WARNING, runAsRoot=False, qm=False, plugins=False) options, remainderParameters = parser.parse_args() if len(remainderParameters) == 1: try: uni.setMySetting( "lastDirectory", uni.trDecode(str(remainderParameters[0]), fu.defaultFileSystemEncoding)) except: uni.setMySetting("lastDirectory", str(remainderParameters[0])) if options.directory: try: uni.setMySetting( "lastDirectory", uni.trDecode(str(options.directory), fu.defaultFileSystemEncoding)) except: uni.setMySetting("lastDirectory", str(options.directory)) if options.loggingLevel: uni.loggingLevel = options.loggingLevel if options.sFileName: uni.fileOfSettings = options.sFileName if options.sDirectoryPath: uni.setPathOfSettingsDirectory(options.sDirectoryPath) if options.tableType: import Tables uni.setMySetting("tableType", Tables.Tables.getThisTableType(options.tableType)) if options.fileReNamerType: uni.setMySetting("fileReNamerType", options.fileReNamerType) if options.qm: if options.qmw: if options.qmw.lower() == "false" or options.qmw == "0": uni.setMySetting("isShowQuickMakeWindow", False) else: uni.setMySetting("isShowQuickMakeWindow", True) if options.configurator: QuickMakeParameters.append("configurator") isQuickMake = True elif options.plugins: QuickMakeParameters.append("plugins") isQuickMake = True elif options.pack: QuickMakeParameters.append("pack") QuickMakeParameters.append(options.pack) isQuickMake = True elif options.hash: QuickMakeParameters.append("hash") QuickMakeParameters.append(options.hash) isQuickMake = True elif options.checkIcon: QuickMakeParameters.append("checkIcon") QuickMakeParameters.append(options.checkIcon) isQuickMake = True elif options.clearEmptyDirectories: QuickMakeParameters.append("clearEmptyDirectories") QuickMakeParameters.append(options.clearEmptyDirectories) isQuickMake = True elif options.clearUnneededs: QuickMakeParameters.append("clearUnneededs") QuickMakeParameters.append(options.clearUnneededs) isQuickMake = True elif options.clearIgnoreds: QuickMakeParameters.append("clearIgnoreds") QuickMakeParameters.append(options.clearIgnoreds) isQuickMake = True elif options.emendFile: QuickMakeParameters.append("emendFile") QuickMakeParameters.append(options.emendFile) isQuickMake = True elif options.emendDirectory: QuickMakeParameters.append("emendDirectory") QuickMakeParameters.append(options.emendDirectory) isQuickMake = True elif options.emendDirectoryWithContents: QuickMakeParameters.append("emendDirectoryWithContents") QuickMakeParameters.append(options.emendDirectoryWithContents) isQuickMake = True elif options.copyPath: QuickMakeParameters.append("copyPath") QuickMakeParameters.append(options.copyPath) isQuickMake = True elif options.fileTree: QuickMakeParameters.append("fileTree") QuickMakeParameters.append(options.fileTree) isQuickMake = True elif options.removeOnlySubFiles: QuickMakeParameters.append("removeOnlySubFiles") QuickMakeParameters.append(options.removeOnlySubFiles) isQuickMake = True elif options.clear: QuickMakeParameters.append("clear") QuickMakeParameters.append(options.clear) isQuickMake = True elif options.textCorrector: QuickMakeParameters.append("textCorrector") QuickMakeParameters.append(options.textCorrector) isQuickMake = True elif options.search: QuickMakeParameters.append("search") QuickMakeParameters.append(options.search) isQuickMake = True QuickMakeParameters.append(remainderParameters) if options.runAsRoot: from Core import Execute if uni.isRunningAsRoot() is False: strArgvs = [] for tempArg in sys.argv: if (tempArg.find("-runAsRoot") == -1 and tempArg.find( Execute.findExecutablePath("HamsiManager")) == -1 and tempArg != "./" + Execute.findExecutableBaseName("HamsiManager") and tempArg != Execute.findExecutableBaseName("HamsiManager")): strArgvs.append(tempArg) if Execute.executeAsRootWithThread(strArgvs, "HamsiManager"): isDontRun = True if isDontRun: return False return True
def checkCommandLineOptions(): global isQuickMake, QuickMakeParameters, myArgvs, parser, optionList myArgvs = sys.argv isDontRun = False optionList = [] parser = OptionParser( usage="%prog [options] [<arg1>...]", version="HamsiManager " + uni.version, epilog="""\ Copyright (c) 2010 - 2015 Murat Demir <*****@*****.**> , HamsiManager is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.""") parser.add_option('-d', '--debug', help='Enable debugging output. ' 'Chatty', action='store_const', const=logging.DEBUG, dest='loggingLevel') optionList.append("d") optionList.append("debug") parser.add_option('-v', '--verbose', help='Enable informative output', action='store_const', const=logging.INFO, dest='loggingLevel') optionList.append("v") optionList.append("verbose") parser.add_option('--directory', help='The current directory path. ' 'Example : /home/yourname/someDirectory ') optionList.append("directory <directory>") parser.add_option('-s', '--sFileName', help='The setting file name(or path). ' '"The settings directory path" + "/" + "YourEnteredName" ' 'Example : enteredName.ini ') optionList.append("s <settingFile>") optionList.append("sFileName <settingFile>") parser.add_option('--sDirectoryPath', help='The settings directory path. ' 'Example : /home/yourname/.HamsiApps/HamsiManager ') optionList.append("sDirectoryPath <settingDirectory>") parser.add_option('-t', '--tableType', help='Table Type Name. ' 'Example : "0" for Folder Table ' 'Example : "1" for File Table ' 'Example : "2" for Music Table ' 'Example : "3" for Subfolder Table ' 'Example : "4" for Cover Table ') optionList.append("t <tableTypeNo>") optionList.append("tableType <tableTypeNo>") parser.add_option('-f', '--fileReNamerType', help='File Renamer Type. ' 'Example : "Personal Computer" ' 'Example : "Web Server" ' 'Example : "Removable Media" ') optionList.append("f <fileReNamerTypeNo>") optionList.append("fileReNamerType <fileReNamerTypeNo>") qmgroup = OptionGroup(parser, "Quick Make Options", "You can make quickly what are you want.") qmgroup.add_option('--qmw', help='Are you want to show Quick Make Window. ' 'Example : "1" or "True" for Yes ' 'Example : "0" or "False" for No ') optionList.append("qmw <o>") qmgroup.add_option('--qm', help='Are you want to run Quick Make by some parameters?', action='store_const', const=True) optionList.append("qm") qmgroup.add_option('--configurator', help='Open Hamsi Manager Configurator', action='store_const', const=True) optionList.append("configurator") qmgroup.add_option('--plugins', help='Show plugins', action='store_const', const=True) optionList.append("plugins") qmgroup.add_option('--pack', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("pack <directory>") qmgroup.add_option('--hash', help='The file path. ' 'Example : /home/yourname/someFile') optionList.append("hash <file>") qmgroup.add_option('--checkIcon', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("checkIcon <directory>") qmgroup.add_option('--clearEmptyDirectories', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("clearEmptyDirectories <directory>") qmgroup.add_option('--clearUnneededs', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("clearUnneededs <directory>") qmgroup.add_option('--clearIgnoreds', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("clearIgnoreds <directory>") qmgroup.add_option('--emendFile', help='The file path. ' 'Example : /home/yourname/someFile') optionList.append("emendFile <file>") qmgroup.add_option('--emendDirectory', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("emendDirectory <directory>") qmgroup.add_option('--emendDirectoryWithContents', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("emendDirectoryWithContents <directory>") qmgroup.add_option('--copyPath', help='The file/directory path. ' 'Example : /home/yourname/somePath') optionList.append("copyPath <fileOrDirectory>") qmgroup.add_option('--fileTree', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("fileTree <directory>") qmgroup.add_option('--removeOnlySubFiles', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("removeOnlySubFiles <directory>") qmgroup.add_option('--clear', help='The directory path. ' 'Example : /home/yourname/someDirectory') optionList.append("clear <directory>") qmgroup.add_option('--textCorrector', help='The file path. ' 'Example : /home/yourname/someFile') optionList.append("textCorrector <file>") qmgroup.add_option('--search', help='The file/directory path. ' 'Example : /home/yourname/somePath') optionList.append("search <fileOrDirectory>") dgroup = OptionGroup(parser, "Dangerous Options", "Caution: use these options at your own risk. " "It is believed that some of them bite.") dgroup.add_option('--runAsRoot', help='Are you want to run as root?', action='store_const', const=True) optionList.append("runAsRoot") optionList.append("+[optionalFileOrDirectory]") parser.add_option_group(qmgroup) parser.add_option_group(dgroup) parser.set_defaults(loggingLevel=logging.WARNING, runAsRoot=False, qm=False, plugins=False) options, remainderParameters = parser.parse_args() if len(remainderParameters) == 1: try: uni.setMySetting("lastDirectory", uni.trDecode(str(remainderParameters[0]), fu.defaultFileSystemEncoding)) except: uni.setMySetting("lastDirectory", str(remainderParameters[0])) if options.directory: try: uni.setMySetting("lastDirectory", uni.trDecode(str(options.directory), fu.defaultFileSystemEncoding)) except: uni.setMySetting("lastDirectory", str(options.directory)) if options.loggingLevel: uni.loggingLevel = options.loggingLevel if options.sFileName: uni.fileOfSettings = options.sFileName if options.sDirectoryPath: uni.setPathOfSettingsDirectory(options.sDirectoryPath) if options.tableType: import Tables uni.setMySetting("tableType", Tables.Tables.getThisTableType(options.tableType)) if options.fileReNamerType: uni.setMySetting("fileReNamerType", options.fileReNamerType) if options.qm: if options.qmw: if options.qmw.lower() == "false" or options.qmw == "0": uni.setMySetting("isShowQuickMakeWindow", False) else: uni.setMySetting("isShowQuickMakeWindow", True) if options.configurator: QuickMakeParameters.append("configurator") isQuickMake = True elif options.plugins: QuickMakeParameters.append("plugins") isQuickMake = True elif options.pack: QuickMakeParameters.append("pack") QuickMakeParameters.append(options.pack) isQuickMake = True elif options.hash: QuickMakeParameters.append("hash") QuickMakeParameters.append(options.hash) isQuickMake = True elif options.checkIcon: QuickMakeParameters.append("checkIcon") QuickMakeParameters.append(options.checkIcon) isQuickMake = True elif options.clearEmptyDirectories: QuickMakeParameters.append("clearEmptyDirectories") QuickMakeParameters.append(options.clearEmptyDirectories) isQuickMake = True elif options.clearUnneededs: QuickMakeParameters.append("clearUnneededs") QuickMakeParameters.append(options.clearUnneededs) isQuickMake = True elif options.clearIgnoreds: QuickMakeParameters.append("clearIgnoreds") QuickMakeParameters.append(options.clearIgnoreds) isQuickMake = True elif options.emendFile: QuickMakeParameters.append("emendFile") QuickMakeParameters.append(options.emendFile) isQuickMake = True elif options.emendDirectory: QuickMakeParameters.append("emendDirectory") QuickMakeParameters.append(options.emendDirectory) isQuickMake = True elif options.emendDirectoryWithContents: QuickMakeParameters.append("emendDirectoryWithContents") QuickMakeParameters.append(options.emendDirectoryWithContents) isQuickMake = True elif options.copyPath: QuickMakeParameters.append("copyPath") QuickMakeParameters.append(options.copyPath) isQuickMake = True elif options.fileTree: QuickMakeParameters.append("fileTree") QuickMakeParameters.append(options.fileTree) isQuickMake = True elif options.removeOnlySubFiles: QuickMakeParameters.append("removeOnlySubFiles") QuickMakeParameters.append(options.removeOnlySubFiles) isQuickMake = True elif options.clear: QuickMakeParameters.append("clear") QuickMakeParameters.append(options.clear) isQuickMake = True elif options.textCorrector: QuickMakeParameters.append("textCorrector") QuickMakeParameters.append(options.textCorrector) isQuickMake = True elif options.search: QuickMakeParameters.append("search") QuickMakeParameters.append(options.search) isQuickMake = True QuickMakeParameters.append(remainderParameters) if options.runAsRoot: from Core import Execute if uni.isRunningAsRoot() is False: strArgvs = [] for tempArg in sys.argv: if (tempArg.find("-runAsRoot") == -1 and tempArg.find(Execute.findExecutablePath("HamsiManager")) == -1 and tempArg != "./" + Execute.findExecutableBaseName("HamsiManager") and tempArg != Execute.findExecutableBaseName("HamsiManager")): strArgvs.append(tempArg) if Execute.executeAsRootWithThread(strArgvs, "HamsiManager"): isDontRun = True if isDontRun: return False return True
def closeEvent(self, _event): try: if uni.isRaisedAnError is False: if uni.isContinueThreadAction(): uni.cancelThreadAction() _event.ignore() uni.isStartedCloseProcess = True uni.printForDevelopers("Started closeEvent") MApplication.setQuitOnLastWindowClosed(True) try: self.PlayerBar.MusicPlayer.stop() except: pass Details.closeAllDialogs() uni.printForDevelopers("Closed Dialogs") if uni.isRaisedAnError is False: if self.Table.checkUnSavedValues() is False: uni.isStartedCloseProcess = False uni.printForDevelopers("Close ignored") _event.ignore() uni.printForDevelopers("Before self.doBeforeCloseProcesses") if self.doBeforeCloseProcesses() is False: _event.ignore() return None uni.printForDevelopers("After self.doBeforeCloseProcesses") if isActivePyKDE4: uni.printForDevelopers("Before Save KDE Configs") kconf = MGlobal.config() kconfGroup = MConfigGroup(kconf, "DirectoryOperator") self.FileManager.dirOperator.writeConfig(kconfGroup) self.FileManager.actCollection.writeSettings(kconfGroup) uni.printForDevelopers("After Save KDE Configs") uni.printForDevelopers("Before Save Configs") uni.setMySetting(self.Table.hiddenTableColumnsSettingKey, self.Table.hiddenTableColumns) Bars.setAllBarsStyleToMySettings() Records.setRecordType(1) fu.writeToBinaryFile( fu.joinPath(fu.pathOfSettingsDirectory, "LastState"), self.saveState()) Records.restoreRecordType() geometry = [self.geometry().x(), self.geometry().y(), self.geometry().width(), self.geometry().height()] uni.setMySetting("MainWindowGeometries", geometry) uni.setMySetting("lastDirectory", self.FileManager.currentDirectory) uni.setMySetting("isMainWindowMaximized", self.isMaximized()) uni.setMySetting("isShowAdvancedSelections", self.SpecialTools.isShowAdvancedSelections) uni.setMySetting("tableType", uni.tableType) uni.setMySetting("activeTabNoOfSpecialTools", self.SpecialTools.tabwTabs.currentIndex()) uni.saveSettings() Settings.saveUniversalSettings() if uni.isActiveAmarok and uni.getBoolValue("amarokIsUseHost") is False: import Amarok uni.printForDevelopers("Before Amarok.stopEmbeddedDB") Amarok.stopEmbeddedDB() uni.printForDevelopers("After Amarok.stopEmbeddedDB") uni.printForDevelopers("After Save Configs") uni.printForDevelopers("Before self.doAfterCloseProcesses") self.doAfterCloseProcesses() uni.printForDevelopers("After self.doAfterCloseProcesses") except: if ReportBug.isClose is False: ReportBug.ReportBug() _event.ignore()
def cbMCurrentRowChanged(self, _index=None): if self.settingKey is not None: uni.setMySetting(self.settingKey, self.items[self.currentRow()]) if self.currentRowChanged is not None: self.currentRowChanged()
def setAllBarsStyleToMySettings(): uni.setMySetting("TableToolsBarButtonStyle", getMainWindow().TableToolsBar.toolButtonStyle()) uni.setMySetting("ToolsBarButtonStyle", getMainWindow().ToolsBar.toolButtonStyle()) if uni.tableType in ["2", "6", "8", "9"]: uni.setMySetting("PlayerBarButtonStyle", getMainWindow().PlayerBar.toolButtonStyle())
def setSelectedTagTargetType(_type, _tableName="AmarokMusicTable"): uni.setMySetting("AmarokTagTargetType" + _tableName, _type)
def remindMeLaterAndClose(self): uni.setMySetting("remindMeLaterForUpdate", self.cbRemindMeLater.value()) uni.saveSettings() self.close()
def loadFinished(self, _bitti): try: if (_bitti): if self.isDownloading is False: self.setFixedHeight(170) self.prgbState.setVisible(False) self.lblInfo.setVisible(True) self.updateInformations = str( self.wvWeb.page().mainFrame().toPlainText()).split( "\n") if len(self.updateInformations) != 0: if self.updateInformations[0][0] == "V": self.pbtnRemindMeLater.setVisible(False) self.cbRemindMeLater.setVisible(False) self.pbtnDownloadAndInstall.setVisible(False) self.pbtnCheckForDeveloperVersion.setVisible(False) uni.setMySetting("remindMeLaterForUpdate", "-1") uni.setMySetting( "remindMeLaterShowDateForUpdate", datetime.now().strftime("%Y %m %d %H %M %S")) uni.saveSettings() try: lastVersion = int( self.updateInformations[0].replace( "V", "").replace(".", "")) except: lastVersion = uni.intversion - 1 if lastVersion > uni.intversion: self.pbtnDownloadAndInstall.setVisible(True) self.pbtnRemindMeLater.setVisible(True) self.cbRemindMeLater.setVisible(True) details = "" for detail in self.updateInformations[4:]: details += detail + "<br>" self.lblInfo.setText( str( translate( "UpdateControl", "Version %s is available. Please download and install the new release.<br>" + "%s For detailed information: <a href='%s' target='_blank'>Hamsi Manager</a><br>You can download from <a href='%s' target='_blank'>Hamsi Manager %s</a>" )) % (self.updateInformations[0] + self.updateInformations[3], details, self.updateInformations[2], self.updateInformations[1], self.updateInformations[0])) self.setFixedHeight(330) elif lastVersion < uni.intversion: self.pbtnDownloadAndInstall.setVisible(True) if self.isNotInstall is False: self.pbtnDownloadAndInstall.setText( translate("UpdateControl", "Download and Install") + " (!)") else: self.pbtnDownloadAndInstall.setText( translate("UpdateControl", "Download") + " (!)") self.pbtnRemindMeLater.setVisible(True) self.cbRemindMeLater.setVisible(True) details = "" for detail in self.updateInformations[4:]: details += detail + "<br>" self.lblInfo.setText( str( str( translate( "UpdateControl", "Lastest stable version is %s. You currently are using the version for developers.You can continue to use the current version.<br>If you want a more accurate version, please download and install this version.<br>%s For detailed information: <a href='%s' target='_blank'>Hamsi Manager</a><br>You can download from <a href='%s' target='_blank'>Hamsi Manager %s</a>" )) % (self.updateInformations[0] + self.updateInformations[3], details, self.updateInformations[2], self.updateInformations[1], self.updateInformations[0]))) self.pbtnCancel.setText( translate("UpdateControl", "Ok")) self.pbtnCheckForDeveloperVersion.setVisible( True) self.setFixedHeight(330) else: self.lblInfo.setText( str( translate( "UpdateControl", "You are already using the latest release.<br>For detailed information: <a href='%s' target='_blank'>Hamsi Manager</a>" )) % (self.updateInformations[2])) self.pbtnCancel.setText( translate("UpdateControl", "Ok")) uni.setMySetting( "lastUpdateControlDate", datetime.now().strftime("%Y %m %d %H %M %S")) else: uni.setMySetting( "lastUpdateControlDate", datetime.now().strftime("%Y %m %d %H %M %S")) Dialogs.showError( translate("UpdateControl", "Cannot Fetch Release Information"), translate( "UpdateControl", "Cannot fetch release information. Please retry later.<br>If you are constantly receiving this error, please visit \"http://hamsiapps.com/HamsiManager\"." )) self.close() else: uni.setMySetting( "lastUpdateControlDate", datetime.now().strftime("%Y %m %d %H %M %S")) Dialogs.showError( translate("UpdateControl", "Cannot Fetch Release Information"), translate( "UpdateControl", "Cannot fetch release information. Please retry later.<br>If you are constantly receiving this error, please visit \"http://hamsiapps.com/HamsiManager\"." )) self.close() else: self.lblInfo.setText( translate("UpdateControl", "Download complete.")) else: uni.setMySetting("lastUpdateControlDate", datetime.now().strftime("%Y %m %d %H %M %S")) Dialogs.showError( translate("UpdateControl", "Cannot Fetch Release Information"), translate( "UpdateControl", "Cannot fetch release information. Please retry later.<br>If you are constantly receiving this error, please visit \"http://hamsiapps.com/HamsiManager\"." )) self.close() except: ReportBug.ReportBug()
def loadFinished(self, _bitti): try: if (_bitti): if self.isDownloading is False: self.setFixedHeight(170) self.prgbState.setVisible(False) self.lblInfo.setVisible(True) self.updateInformations = str(self.wvWeb.page().mainFrame().toPlainText()).split("\n") if len(self.updateInformations) != 0: if self.updateInformations[0][0] == "V": self.pbtnRemindMeLater.setVisible(False) self.cbRemindMeLater.setVisible(False) self.pbtnDownloadAndInstall.setVisible(False) self.pbtnCheckForDeveloperVersion.setVisible(False) uni.setMySetting("remindMeLaterForUpdate", "-1") uni.setMySetting("remindMeLaterShowDateForUpdate", datetime.now().strftime("%Y %m %d %H %M %S")) uni.saveSettings() try: lastVersion = int(self.updateInformations[0].replace("V", "").replace(".", "")) except: lastVersion = uni.intversion - 1 if lastVersion > uni.intversion: self.pbtnDownloadAndInstall.setVisible(True) self.pbtnRemindMeLater.setVisible(True) self.cbRemindMeLater.setVisible(True) details = "" for detail in self.updateInformations[4:]: details += detail + "<br>" self.lblInfo.setText(str(translate("UpdateControl", "Version %s is available. Please download and install the new release.<br>" + "%s For detailed information: <a href='%s' target='_blank'>Hamsi Manager</a><br>You can download from <a href='%s' target='_blank'>Hamsi Manager %s</a>")) % ( self.updateInformations[0] + self.updateInformations[3], details, self.updateInformations[2], self.updateInformations[1], self.updateInformations[0])) self.setFixedHeight(330) elif lastVersion < uni.intversion: self.pbtnDownloadAndInstall.setVisible(True) if self.isNotInstall is False: self.pbtnDownloadAndInstall.setText( translate("UpdateControl", "Download and Install") + " (!)") else: self.pbtnDownloadAndInstall.setText(translate("UpdateControl", "Download") + " (!)") self.pbtnRemindMeLater.setVisible(True) self.cbRemindMeLater.setVisible(True) details = "" for detail in self.updateInformations[4:]: details += detail + "<br>" self.lblInfo.setText(str(str(translate("UpdateControl", "Lastest stable version is %s. You currently are using the version for developers.You can continue to use the current version.<br>If you want a more accurate version, please download and install this version.<br>%s For detailed information: <a href='%s' target='_blank'>Hamsi Manager</a><br>You can download from <a href='%s' target='_blank'>Hamsi Manager %s</a>")) % ( self.updateInformations[0] + self.updateInformations[3], details, self.updateInformations[2], self.updateInformations[1], self.updateInformations[0]))) self.pbtnCancel.setText(translate("UpdateControl", "Ok")) self.pbtnCheckForDeveloperVersion.setVisible(True) self.setFixedHeight(330) else: self.lblInfo.setText(str(translate("UpdateControl", "You are already using the latest release.<br>For detailed information: <a href='%s' target='_blank'>Hamsi Manager</a>")) % ( self.updateInformations[2])) self.pbtnCancel.setText(translate("UpdateControl", "Ok")) uni.setMySetting("lastUpdateControlDate", datetime.now().strftime("%Y %m %d %H %M %S")) else: uni.setMySetting("lastUpdateControlDate", datetime.now().strftime("%Y %m %d %H %M %S")) Dialogs.showError(translate("UpdateControl", "Cannot Fetch Release Information"), translate("UpdateControl", "Cannot fetch release information. Please retry later.<br>If you are constantly receiving this error, please visit \"http://hamsiapps.com/HamsiManager\".")) self.close() else: uni.setMySetting("lastUpdateControlDate", datetime.now().strftime("%Y %m %d %H %M %S")) Dialogs.showError(translate("UpdateControl", "Cannot Fetch Release Information"), translate("UpdateControl", "Cannot fetch release information. Please retry later.<br>If you are constantly receiving this error, please visit \"http://hamsiapps.com/HamsiManager\".")) self.close() else: self.lblInfo.setText(translate("UpdateControl", "Download complete.")) else: uni.setMySetting("lastUpdateControlDate", datetime.now().strftime("%Y %m %d %H %M %S")) Dialogs.showError(translate("UpdateControl", "Cannot Fetch Release Information"), translate("UpdateControl", "Cannot fetch release information. Please retry later.<br>If you are constantly receiving this error, please visit \"http://hamsiapps.com/HamsiManager\".")) self.close() except: ReportBug.ReportBug()
def organizeWithHamsiManager(self, _oldPath): uni.setMySetting("lastDirectory", fu.getRealDirName(_oldPath, True)) CommandLineOptions.isQuickMake = False self.close()