def test10(self): '''Default paths for tools are resolved correctly''' self.assertTrue( PathPreferences.pathDefaultToolsPath().endswith('/Path/Tools/')) self.assertTrue( PathPreferences.pathDefaultToolsPath('Bit').endswith( '/Path/Tools/Bit')) self.assertTrue( PathPreferences.pathDefaultToolsPath('Library').endswith( '/Path/Tools/Library')) self.assertTrue( PathPreferences.pathDefaultToolsPath('Template').endswith( '/Path/Tools/Template'))
def checkWorkingDir(self): # 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()) 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()) PathPreferences.setLastPathToolLibrary("{}/Library".format(workingdir)) subdirlist = ['Bit', 'Library', 'Shape'] mode = 0o777 for dir in subdirlist: subdir = "{}/{}".format(workingdir, dir) if not os.path.exists(subdir): qm = PySide.QtGui.QMessageBox ret = qm.question( None, '', "Toolbit Working directory {} should contain a '{}' subdirectory. Create it?" .format(workingdir, dir), qm.Yes | qm.No) if ret == qm.Yes: os.mkdir(subdir, mode) 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, 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) 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_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