From 1dab9452ab6e734c4e80b7df4b863d1a9f9ef0be Mon Sep 17 00:00:00 2001 From: Christopher Harvey Date: Mon, 5 Jul 2010 03:46:13 -0400 Subject: Changed the code that adds new nodes to the tree, so that it respects the order in the module xml files. --- src/ventoo/main.py | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/ventoo/main.py b/src/ventoo/main.py index 00a2dee..68b1c23 100644 --- a/src/ventoo/main.py +++ b/src/ventoo/main.py @@ -103,20 +103,30 @@ class MainWindow(gtk.Window): else: augPath = osp.join('files', augeas_utils.stripBothSlashes(self.currentConfigFilePath), self.edit_tv.get_label_path(thisIter)) if enabled: #this row was just added, update augeas tree. - indexes = path.split(':') - beforeIndex = int(indexes[len(indexes)-1])-1 - if beforeIndex >= 0: - beforePath = "" - for i in indexes[0:len(indexes)-1]: - beforePath = beforePath + str(i) + ":" - beforePath = beforePath + str(beforeIndex) - augBeforePath = self.edit_tv.get_label_path_str(beforePath) + parentIter = model.iter_parent(thisIter) + if parentIter == None: + siblingIter = model.get_iter_root() + else: + siblingIter = model.iter_children(parentIter) + labelPath = self.edit_tv.get_label_path_str(path) + newLabel = osp.split(labelPath)[1] + while siblingIter != None: + try: + if model.get_string_from_iter(thisIter) != model.get_string_from_iter(siblingIter) and not self.currentModule.comesBefore(model.get_value(siblingIter, 1), + re.match('^.+/(.+?)(?:\\[[0-9]+\\])?$', augPath).group(1)): + break + except ValueError: + pass #Don't know about either the first or second arg, so order shouldn't matter for this one. try next. + siblingIter = model.iter_next(siblingIter) + augBeforePath = osp.split(labelPath)[0] + if siblingIter != None: + augBeforePath = osp.join(augBeforePath, model.get_value(siblingIter, 1)) if not aug_root == '/': augBeforePath = osp.join('files', osp.relpath(self.currentConfigFilePath, aug_root), augBeforePath) else: augBeforePath = osp.join('files', augeas_utils.stripBothSlashes(self.currentConfigFilePath), augBeforePath) - self.a.insert(augBeforePath, re.match('^.+/(.+?)(?:\\[[0-9]+\\])?$', augPath).group(1), False) - print("ins "+re.match('^.+/(.+?)(?:\\[[0-9]+\\])?$', augPath).group(1)+" after "+augBeforePath) + self.a.insert(augBeforePath, re.match('^.+/(.+?)(?:\\[[0-9]+\\])?$', augPath).group(1), True) + print("ins "+re.match('^.+/(.+?)(?:\\[[0-9]+\\])?$', augPath).group(1)+" before "+augBeforePath) self.a.set(augPath, '') print("set "+augPath+" ''") else: #this row was deleted, update augeas tree in the refresh -- cgit v1.2.3-65-gdbad