def curLib(self): libfile = PathPreferences.lastFileToolLibrary() if libfile is None or libfile == "": return "" else: libfile = os.path.split(PathPreferences.lastFileToolLibrary())[1] libfile = os.path.splitext(libfile)[0] return libfile
def currentLibrary(self, shortNameOnly): libfile = PathPreferences.lastFileToolLibrary() if libfile is None or libfile == "": return "" elif shortNameOnly: return os.path.splitext(os.path.basename(libfile))[0] return libfile
def libraryOpen(self, model, lib=""): """ opens the tools in library Returns a QStandardItemModel """ PathLog.track(lib) if lib == "": lib = PathPreferences.lastFileToolLibrary() if lib == "" or lib is None: return model if os.path.isfile(lib): # An individual library is wanted self.__libraryLoad(lib, model) PathLog.debug("model rows: {}".format(model.rowCount())) return model
def libPaths(self): lib = PathPreferences.lastFileToolLibrary() loc = PathPreferences.lastPathToolLibrary() PathLog.track("lib: {} loc: {}".format(lib, loc)) return lib, loc
def checkWorkingDir(): # users shouldn't use the example toolbits and libraries. # working directory should be writable PathLog.track() workingdir = os.path.dirname(PathPreferences.lastPathToolLibrary()) defaultdir = os.path.dirname(PathPreferences.pathDefaultToolsPath()) PathLog.debug("workingdir: {} defaultdir: {}".format( workingdir, defaultdir)) dirOK = lambda: workingdir != defaultdir and (os.access( workingdir, os.W_OK)) if dirOK(): return True qm = PySide.QtGui.QMessageBox ret = qm.question(None, "", "Toolbit working directory not set up. Do that now?", qm.Yes | qm.No) if ret == qm.No: return False msg = translate("Path_ToolBit", "Choose a writable location for your toolbits") while not dirOK(): workingdir = PySide.QtGui.QFileDialog.getExistingDirectory( None, msg, PathPreferences.filePath()) if workingdir[-8:] == os.path.sep + "Library": workingdir = workingdir[: -8] # trim off trailing /Library if user chose it PathPreferences.setLastPathToolLibrary("{}{}Library".format( workingdir, os.path.sep)) PathPreferences.setLastPathToolBit("{}{}Bit".format( workingdir, os.path.sep)) PathLog.debug("setting workingdir to: {}".format(workingdir)) # Copy only files of default Path\Tools folder to working directory (targeting the README.md help file) src_toolfiles = os.listdir(defaultdir) for file_name in src_toolfiles: if file_name in ["README.md"]: full_file_name = os.path.join(defaultdir, file_name) if os.path.isfile(full_file_name): shutil.copy(full_file_name, workingdir) # Determine which subdirectories are missing subdirlist = ["Bit", "Library", "Shape"] mode = 0o777 for dir in subdirlist.copy(): subdir = "{}{}{}".format(workingdir, os.path.sep, dir) if os.path.exists(subdir): subdirlist.remove(dir) # Query user for creation permission of any missing subdirectories if len(subdirlist) >= 1: needed = ", ".join([str(d) for d in subdirlist]) qm = PySide.QtGui.QMessageBox ret = qm.question( None, "", "Toolbit Working directory {} needs these sudirectories:\n {} \n Create them?" .format(workingdir, needed), qm.Yes | qm.No, ) if ret == qm.No: return False else: # Create missing subdirectories if user agrees to creation for dir in subdirlist: subdir = "{}{}{}".format(workingdir, os.path.sep, dir) os.mkdir(subdir, mode) # Query user to copy example files into subdirectories created if dir != "Shape": qm = PySide.QtGui.QMessageBox ret = qm.question( None, "", "Copy example files to new {} directory?".format(dir), qm.Yes | qm.No, ) if ret == qm.Yes: src = "{}{}{}".format(defaultdir, os.path.sep, dir) src_files = os.listdir(src) for file_name in src_files: full_file_name = os.path.join(src, file_name) if os.path.isfile(full_file_name): shutil.copy(full_file_name, subdir) # if no library is set, choose the first one in the Library directory if PathPreferences.lastFileToolLibrary() is None: libFiles = [ f for f in glob.glob(PathPreferences.lastPathToolLibrary() + os.path.sep + "*.fctl") ] PathPreferences.setLastFileToolLibrary(libFiles[0]) return True
def checkWorkingDir(): # users shouldn't use the example toolbits and libraries. # working directory should be writable PathLog.track() workingdir = os.path.dirname(PathPreferences.lastPathToolLibrary()) defaultdir = os.path.dirname(PathPreferences.pathDefaultToolsPath()) PathLog.debug('workingdir: {} defaultdir: {}'.format( workingdir, defaultdir)) dirOK = lambda: workingdir != defaultdir and (os.access( workingdir, os.W_OK)) if dirOK(): return True qm = PySide.QtGui.QMessageBox ret = qm.question(None, '', "Toolbit working directory not set up. Do that now?", qm.Yes | qm.No) if ret == qm.No: return False msg = translate("Path", "Choose a writable location for your toolbits", None) while not dirOK(): workingdir = PySide.QtGui.QFileDialog.getExistingDirectory( None, msg, PathPreferences.filePath()) if workingdir[-8:] == os.path.sep + 'Library': workingdir = workingdir[: -8] # trim off trailing /Library if user chose it PathPreferences.setLastPathToolLibrary("{}{}Library".format( workingdir, os.path.sep)) PathPreferences.setLastPathToolBit("{}{}Bit".format( workingdir, os.path.sep)) PathLog.debug('setting workingdir to: {}'.format(workingdir)) subdirlist = ['Bit', 'Library', 'Shape'] mode = 0o777 for dir in subdirlist.copy(): subdir = "{}{}{}".format(workingdir, os.path.sep, dir) if os.path.exists(subdir): subdirlist.remove(dir) if len(subdirlist) >= 1: needed = ', '.join([str(d) for d in subdirlist]) qm = PySide.QtGui.QMessageBox ret = qm.question( None, '', "Toolbit Working directory {} needs these sudirectories:\n {} \n Create them?" .format(workingdir, needed), qm.Yes | qm.No) if ret == qm.No: return False else: for dir in subdirlist: subdir = "{}{}{}".format(workingdir, os.path.sep, dir) os.mkdir(subdir, mode) if dir != 'Shape': qm = PySide.QtGui.QMessageBox ret = qm.question( None, '', "Copy example files to new {} directory?".format(dir), qm.Yes | qm.No) if ret == qm.Yes: src = "{}{}{}".format(defaultdir, os.path.sep, dir) src_files = os.listdir(src) for file_name in src_files: full_file_name = os.path.join(src, file_name) if os.path.isfile(full_file_name): shutil.copy(full_file_name, subdir) # if no library is set, choose the first one in the Library directory if PathPreferences.lastFileToolLibrary() is None: libFiles = [ f for f in glob.glob(PathPreferences.lastPathToolLibrary() + os.path.sep + '*.fctl') ] PathPreferences.setLastFileToolLibrary(libFiles[0]) return True