def initDataFolder(): """ Finds the first directory that contains a folder named SETTINGS_FOLDER. """ global _dataFolderInitDone if _dataFolderInitDone: return BugUtil.debug("BugPath - initializing data folder") # K-Mod. If it doesn't already exist, create the folder in the user directory. dir = join(getRootDir(), getModName(), SETTINGS_FOLDER) if dir != None: if not isdir(dir): # copy the default settings from the K-Mod folder. default_dir = join(getModDir(), SETTINGS_FOLDER) if isdir(default_dir): try: safeInfoPath("BugPath - copying settings to '%s'", dir) # copytree is suppose to create the missing parent directores, but apparently it doesn't work. So I need to do this: try: os.makedirs(join(getRootDir(), getModName())) except OSError: pass # sucks. shutil.copytree(default_dir, dir) except: BugUtil.trace("Failed to copy settings") if not isdir(dir): # Second attempt: create the directory manually try: safeInfoPath("BugPath - creating '%s'", dir) os.makedirs(dir) except OSError: BugUtil.trace("Failed to create directory '%s'", dir) # K-Mod end dataDirs = ( join(getRootDir(), getModName()), # My Games\BTS\BUG Mod join(getUserDir(), getModName()), # My Games\BUG Mod join(getAppDir(), getModName()), # Civ4\BTS\BUG Mod join(getModDir(), DATA_FOLDER), # Civ4\BTS\Mods\BUG Mod 3.6\Data join(getModDir()), # Civ4\BTS\Mods\BUG Mod 3.6 ) for dir in dataDirs: if setDataDir(dir): break else: BugUtil.error("No valid data directory containing %s found", SETTINGS_FOLDER) _dataFolderInitDone = True # <advc.009> setDataDir tries to locate INFO_FOLDER in the same place # as SETTINGS_FOLDER, but settings need to be in \My Games\, whereas # info is in the program folder. I don't see how this can work in standalone # BUG (same code there) either - perhaps it doesn't; haven't tried it. global _infoDir for dir in dataDirs: _infoDir = join(dir, INFO_FOLDER) if isdir(_infoDir): # Show the troublesome path in the System tab too BugConfigTracker.add("Info_Directory", _infoDir) break
def setRootDir(dir): safeDebugPath("BugPath - Checking root dir '%s'", dir) if isdir(dir) and isfile(join(dir, "CivilizationIV.ini")): global _rootDir _rootDir = dir safeInfoPath("BugPath - root dir is '%s'", dir) BugConfigTracker.add("Root_Directory", _rootDir) return True return False
def openSDFile(self): szPath = BugAutolog.getFilePath() if (not szPath or szPath == "Default"): szPath = BugPath.findOrMakeDir("Autolog") if (not os.path.isdir(szPath)): os.makedirs(szPath) szFile = os.path.join(szPath, self.FileName) self.SDFile = codecs.open(szFile, 'a', 'utf-8') BugConfigTracker.add("SDFile_Log", szFile)
def openSDFile(self): szPath = BugAutolog.getFilePath() if (not szPath or szPath == "Default"): szPath = SP.joinModDir("Autolog") if (not os.path.isdir(szPath)): os.makedirs(szPath) szFile = os.path.join(szPath, self.FileName) self.SDFile = codecs.open(szFile, 'a', 'utf-8') BugConfigTracker.add("SDFile_Log", szFile)
def setModDir(dir): safeDebugPath("BugPath - checking mod dir '%s'", dir) if isdir(dir): global _isMod, _modDir, _modFolder _isMod = True _modDir = dir _modFolder = basename(dir) safeInfoPath("BugPath - mod dir is '%s'", dir) safeDebugPath("BugPath - mod folder is '%s'", _modFolder) BugConfigTracker.add("Mod_Directory", _modDir) return True return False
def openFile(self, bForce=False, sWrite='a'): if (self.HoldOpen and not bForce): return szPath = BugFile.getFilePath() if (not szPath or szPath == "Default"): szPath = BugPath.findOrMakeDir("Autolog") if (not os.path.isdir(szPath)): os.makedirs(szPath) szFile = os.path.join(szPath, self.FileName) self.File = codecs.open(szFile, sWrite, 'utf-8') BugConfigTracker.add("Autolog_Log", szFile)
def setDataDir(dir): if isdir(dir): safeDebugPath("BugPath - Checking data dir '%s'", dir) settingsDir = join(dir, SETTINGS_FOLDER) if isdir(settingsDir): safeInfoPath("BugPath - data dir is '%s'", dir) global _dataDir, _settingsDir, _infoDir _dataDir = dir _settingsDir = settingsDir _infoDir = join(dir, INFO_FOLDER) BugConfigTracker.add("Settings_Directory", _settingsDir) return True return False
def create(self, screen): tab = self.createTab(screen) panel = self.createMainPanel(screen) column = self.addOneColumnLayout(screen, panel) left, right = self.addTwoColumnLayout(screen, column, "Bottom", False) screen.setLayoutFlag(right, "LAYOUT_RIGHT") screen.setLayoutFlag(right, "LAYOUT_SIZE_HPREFERREDEXPANDING") import SystemPaths as SP self.addLabel(screen, left, "Version", "%s %s" % (SP.modName, GC.getGame().getC2CVersion())) screen.attachHSeparator(column, column + "Sep2") self.addLabel(screen, column, "Debug_Logging", "Debugging Output:") left, center, right = self.addThreeColumnLayout(screen, column) self.addTextDropdown(screen, left, left, "Core__ScreenLogLevel") self.addTextDropdown(screen, center, center, "Core__FileLogLevel") self.addCheckbox(screen, right, "Core__LogTime") screen.attachHSeparator(column, column + "Sep3") items = BugConfigTracker.combine() itemNum = 0 for item in items: itemNum += 1 subitemNum = 0 self.addLabel(screen, column, item[0], item[0]) for value in item[1]: subitemNum += 1 self.addLabel(screen, column, "ConfigSubitem-%d-%d" % (itemNum, subitemNum), " - " + value)
def initSearchPaths(): """ Adds the CustomAssets, mod Assets and BTS Assets directories to a list of search paths. """ global _searchPathsInitDone if _searchPathsInitDone: return BugUtil.debug("BugPath - initializing asset search paths") assetDirs = [join(getModDir(), ASSETS_FOLDER), join(getAppDir(), ASSETS_FOLDER)] # EF: Mod's no longer access CustomAssets folder; too many issues if not isNoCustomAssets() and not isMod(): assetDirs.insert(0, join(getRootDir(), CUSTOM_ASSETS_FOLDER)) for dir in assetDirs: addAssetFileSearchPath(dir) if _assetFileSearchPaths: BugConfigTracker.add("Asset_Search_Paths", _assetFileSearchPaths) else: BugUtil.error("No asset directories found") _searchPathsInitDone = True
def create(self, screen): _ = self.createTab(screen) panel = self.createMainPanel(screen) column = self.addOneColumnLayout(screen, panel) # Flunky PAE remove OptionsKey and OptionsButton options # left, right = self.addTwoColumnLayout(screen, column, "Bottom", False) # self.addCheckbox(screen, left, "MainInterface__OptionsKey") # self.addCheckbox(screen, left, "MainInterface__OptionsButton") # screen.setLayoutFlag(right, "LAYOUT_RIGHT") # screen.setLayoutFlag(right, "LAYOUT_SIZE_HPREFERREDEXPANDING") # self.addLabel(screen, right, "Version", # CvModName.getDisplayNameAndVersion() + " (" + CvModName.getCivNameAndVersion() + ")") screen.setLayoutFlag(column, "LAYOUT_RIGHT") screen.setLayoutFlag(column, "LAYOUT_SIZE_HPREFERREDEXPANDING") self.addLabel( screen, column, "Version", CvModName.getDisplayNameAndVersion() + " (" + CvModName.getCivNameAndVersion() + ")") # screen.attachHSeparator(column, column + "Sep1") # self.addLabel(screen, column, "Subversion", "Subversion (SVN):") # self.addCheckbox(screen, column, "Core__CheckForUpdates") # columnL, columnR = self.addTwoColumnLayout(screen, column, "Core") # self.addTextEdit(screen, columnL, columnR, "Core__LocalRoot") # self.addTextEdit(screen, columnL, columnR, "Core__RepositoryUrl") screen.attachHSeparator(column, column + "Sep2") self.addLabel(screen, column, "Debug_Logging", "Debugging Output:") left, center, right = self.addThreeColumnLayout(screen, column) self.addTextDropdown(screen, left, left, "Core__ScreenLogLevel") self.addTextDropdown(screen, center, center, "Core__FileLogLevel") self.addCheckbox(screen, right, "Core__LogTime") screen.attachHSeparator(column, column + "Sep3") items = BugConfigTracker.combine() itemNum = 0 # first = True for item in items: itemNum += 1 subitemNum = 0 # if not first: # screen.attachHSeparator(column, "ItemSep-%d" % itemNum) # else: # first = False self.addLabel(screen, column, item[0], item[0]) for value in item[1]: subitemNum += 1 self.addLabel(screen, column, "ConfigSubitem-%d-%d" % (itemNum, subitemNum), " - " + value)
def initSearchPaths(): """ Adds the CustomAssets, mod Assets and BTS Assets directories to a list of search paths. """ global _searchPathsInitDone if _searchPathsInitDone: return BugUtil.debug("BugPath - initializing asset search paths") assetDirs = [ join(getModDir(), ASSETS_FOLDER), join(getAppDir(), ASSETS_FOLDER), ] # EF: Mod's no longer access CustomAssets folder; too many issues if not isNoCustomAssets() and not isMod(): assetDirs.insert(0, join(getRootDir(), CUSTOM_ASSETS_FOLDER)) for dir in assetDirs: addAssetFileSearchPath(dir) if _assetFileSearchPaths: BugConfigTracker.add("Asset_Search_Paths", _assetFileSearchPaths) else: BugUtil.error("No asset directories found") _searchPathsInitDone = True
def create(self, screen): tab = self.createTab(screen) panel = self.createMainPanel(screen) column = self.addOneColumnLayout(screen, panel) items = BugConfigTracker.combine() itemNum = 0 # first = True for item in items: itemNum += 1 subitemNum = 0 # if not first: # screen.attachHSeparator(column, "ItemSep-%d" % itemNum) # else: # first = False self.addLabel(screen, column, item[0], item[0]) for value in item[1]: subitemNum += 1 self.addLabel(screen, column, "ConfigSubitem-%d-%d" % (itemNum, subitemNum), " - " + value)
def create(self, screen): _ = self.createTab(screen) panel = self.createMainPanel(screen) column = self.addOneColumnLayout(screen, panel) items = BugConfigTracker.combine() itemNum = 0 # first = True for item in items: itemNum += 1 subitemNum = 0 # if not first: # screen.attachHSeparator(column, "ItemSep-%d" % itemNum) # else: # first = False self.addLabel(screen, column, item[0], item[0]) for value in item[1]: subitemNum += 1 self.addLabel(screen, column, "ConfigSubitem-%d-%d" % (itemNum, subitemNum), " - " + value)
def create(self, screen): tab = self.createTab(screen) panel = self.createMainPanel(screen) column = self.addOneColumnLayout(screen, panel) left, right = self.addTwoColumnLayout(screen, column, "Bottom", False) self.addCheckbox(screen, left, "MainInterface__OptionsKey") self.addCheckbox(screen, left, "MainInterface__OptionsButton") screen.setLayoutFlag(right, "LAYOUT_RIGHT") screen.setLayoutFlag(right, "LAYOUT_SIZE_HPREFERREDEXPANDING") self.addLabel(screen, right, "Version", CvModName.getDisplayNameAndVersion() + " (" + CvModName.getCivNameAndVersion() + ")") # screen.attachHSeparator(column, column + "Sep1") # self.addLabel(screen, column, "Subversion", "Subversion (SVN):") # self.addCheckbox(screen, column, "Core__CheckForUpdates") # columnL, columnR = self.addTwoColumnLayout(screen, column, "Core") # self.addTextEdit(screen, columnL, columnR, "Core__LocalRoot") # self.addTextEdit(screen, columnL, columnR, "Core__RepositoryUrl") screen.attachHSeparator(column, column + "Sep2") self.addLabel(screen, column, "Debug_Logging", "Debugging Output:") left, center, right = self.addThreeColumnLayout(screen, column) self.addTextDropdown(screen, left, left, "Core__ScreenLogLevel") self.addTextDropdown(screen, center, center, "Core__FileLogLevel") self.addCheckbox(screen, right, "Core__LogTime") screen.attachHSeparator(column, column + "Sep3") items = BugConfigTracker.combine() itemNum = 0 # first = True for item in items: itemNum += 1 subitemNum = 0 # if not first: # screen.attachHSeparator(column, "ItemSep-%d" % itemNum) # else: # first = False self.addLabel(screen, column, item[0], item[0]) for value in item[1]: subitemNum += 1 self.addLabel(screen, column, "ConfigSubitem-%d-%d" % (itemNum, subitemNum), " - " + value)
def init(): print "[BugPath] initializing..." import SystemPaths as SP import BugConfigTracker global _modDir, _settingsDir _modDir = SP.modDir _settingsDir = SP.userSettingsDir BugConfigTracker.add("Mod_Directory", _modDir) BugConfigTracker.add("Settings_Directory", _settingsDir) global _assetFileSearchPaths _assetFileSearchPaths = _modDir + "\Assets" BugConfigTracker.add("Asset_Search_Paths", _assetFileSearchPaths) print "[BugPath] initialized."
def updateLogFile(self): if self.LogFileName and self.LogFilePath: self.bStarted = False self.RealLogFile = os.path.join(self.LogFilePath, self.LogFileName) BugConfigTracker.add("Autolog_Log", self.RealLogFile)