Author: waldi Date: Thu Mar 13 08:46:09 2008 New Revision: 10819 Log: * lib/kconfigeditor/kconfig/menu/file.py: Support choice. * lib/kconfigeditor/kconfig/package/files.py: Dump choice correctly.
Modified: people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py Modified: people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py ============================================================================== --- people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py (original) +++ people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py Thu Mar 13 08:46:09 2008 @@ -4,10 +4,16 @@ def __init__(self, filename): self.filename = filename +class FileChoice(list): + def __init__(self, prompt = None): + self.prompt = prompt + + def __repr__(self): + return "<%s(%r)>" % (self.__class__.__name__, self.prompt) + class FileConfig(object): - def __init__(self, name): - self.name = name - self.prompt = None + def __init__(self, name, prompt = None): + self.name, self.prompt = name, prompt def __repr__(self): return "<%s(%r, %r)>" % (self.__class__.__name__, self.name, self.prompt) @@ -35,8 +41,8 @@ else: try: stack.top().process_line(line) - except: - raise Exception("Can't parse: '%s' (%d)" % (line, lineno)) + except Exception, e: + raise Exception("Can't parse: '%s' (%d): %s" % (line, lineno, e)) lineno += 1 return stack.top().process_stop(lineno, 0) @@ -178,9 +184,9 @@ class _BlockChoice(_BlockObject, _BlockContainerCommon): def __init__(self, parent): super(_BlockChoice, self).__init__(parent) - # TODO - self.entry = parent.entry - _BlockConfigData(self, FileConfig(None)) + self.entry = FileChoice() + parent.entry.append(self.entry) + _BlockConfigData(self, self.entry) def process_default(self, text, ind): _BlockType(self, text, ind) Modified: people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py ============================================================================== --- people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py (original) +++ people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py Thu Mar 13 08:46:09 2008 @@ -2,7 +2,7 @@ from debian_linux.config import ConfigCoreHierarchy -from kconfigeditor.kconfig.menu.file import FileConfig +from kconfigeditor.kconfig.menu.file import FileChoice, FileConfig class Files(dict): def __init__(self, root): @@ -110,19 +110,36 @@ self.read(fd) + def _dump_file_choice(self, processed, ignored, f): + ret = [] + for i in f: + if isinstance(i, FileConfig): + ret.extend(self._dump_file_config(processed, ignored, i)) + if ret: + ret.insert(0, "## choice: %s" % f.prompt) + ret.insert(-1, '## end choice') + return ret + + def _dump_file_config(self, processed, ignored, i): + ret = [] + e = self.get(i.name, None) + if e is not None: + if i.name in processed: + pass + elif i.prompt: + processed.add(i.name) + ret.append(e) + else: + ignored.add(i.name) + return ret + def _dump_file(self, processed, ignored, f): ret = [] for i in f: if isinstance(i, FileConfig): - e = self.get(i.name, None) - if e is not None: - if i.name in processed: - pass - elif i.prompt: - processed.add(i.name) - ret.append(e) - else: - ignored.add(i.name) + ret.extend(self._dump_file_config(processed, ignored, i)) + elif isinstance(i, FileChoice): + ret.extend(self._dump_file_choice(processed, ignored, i)) if ret: ret[0:0] = ["##", "## file: %s" % f.filename, "##"] ret.append('') _______________________________________________ Kernel-svn-changes mailing list Kernel-svn-changes@lists.alioth.debian.org http://lists.alioth.debian.org/mailman/listinfo/kernel-svn-changes