def load_colourschemes(self): colourschemes = {} # global colourschemes global_dir = GLOBAL_COLOURSCHEMES_DIR if os.path.exists(global_dir) and os.path.isdir(global_dir): global_colourschemes = load_colourschemes_from_dir(global_dir) colourschemes.update(global_colourschemes) # user colourschemes settings_dir = self.settings_dir user_dir = os.path.join(settings_dir, 'colourschemes') if os.path.exists(user_dir) and os.path.isdir(user_dir): user_colourschemes = load_colourschemes_from_dir(user_dir) # merge them in so that per-user colourschemes override # system-wide ones colourschemes.update(user_colourschemes) # fake default one just in case if not colourschemes: colourschemes['none.colourscheme'] = Colourscheme('None') # maintain alphabetical order scheme_order = colourschemes.keys() scheme_order.sort() scheme_list = [colourschemes[k] for k in scheme_order] return scheme_list
def load_colourschemes_from_dir(self): filenames = [] dirpath = tempfile.mkdtemp() num = 5 content = '\n'.join(self.lines) try: # just setup some files for x in xrange(num): #fle = tempfile.NamedTemporaryFile(suffix='.colourscheme', dir=dirpath, mode='w', delete=False) fid, filename = tempfile.mkstemp(suffix='.colourscheme', dir=dirpath, text=True) filenames.append(filename) fle = open(filename, 'w') fle.write(content) fle.close() colourschemes = load_colourschemes_from_dir(dirpath) # checking if the colourschemes loaded is a bit messy: # make sure we have as many as wrote assert len(colourschemes) == num for c in colourschemes: # just make sure it at least has a name name = c.name colours = c.get_colours_for_mode('python') # check that the colours loaded assert colours['keyword']['hex'] == '#223344' finally: for filename in filenames: os.unlink(filename) os.rmdir(dirpath)