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

Reply via email to