From 53ba1ae4c103d6ed5dbc328f60ef5e150ce4e930 Mon Sep 17 00:00:00 2001 From: lizhi-rocky Date: Fri, 30 Jul 2010 17:36:54 +0800 Subject: [PATCH] a little re-arrangement. --- python/mine/ri_cmd.py | 3 +++ python/mine/ri_data.py | 20 ++++++++++++++++---- python/mine/ri_tk.py | 14 ++++++++++++++ python/mine/ri_widget.py | 14 -------------- python/mine/test.py | 4 ++-- xml/install_ng.xml | 1 + 6 files changed, 36 insertions(+), 20 deletions(-) diff --git a/python/mine/ri_cmd.py b/python/mine/ri_cmd.py index 1e60ef8..59eab62 100644 --- a/python/mine/ri_cmd.py +++ b/python/mine/ri_cmd.py @@ -53,6 +53,9 @@ def mount_list_init(): for m in ri_data.MountPoint.list: # get size from Partition info sz = ri_data.Partition.get_size(m.device) + if not sz: + sz = ri_data.Raid.get_size(m.device) + print m.device, m.directory, m.filesystem, m.format, sz s = m.device.ljust(10) + m.directory.ljust(10) + m.filesystem.ljust(10) + m.format.ljust(4) + sz.ljust(6) l.append(s) display.var_dict['mount.list'].set(value=tuple([str(i) for i in l])) diff --git a/python/mine/ri_data.py b/python/mine/ri_data.py index 4cdeb0b..49db81c 100644 --- a/python/mine/ri_data.py +++ b/python/mine/ri_data.py @@ -120,10 +120,11 @@ p_node - xml node (parent node)''' class Raid: ''' raid information ''' list = [] - def __init__(self, raid_dev, raid_type, raw_devs): + def __init__(self, raid_dev, raid_type, raid_size, raw_devs): ''' Raid init function ''' self.raid_device = raid_dev self.raid_type = raid_type + self.raid_size = raid_size self.raw_devices = raw_devs Raid.list.append(self) @@ -149,7 +150,7 @@ class Raid: raw_devs =[] for ss in dev_res[3].split(): raw_devs.append(ss[:ss.index('[')]) - Raid(raid_dev, raid_type, raw_devs) + Raid(raid_dev, raid_type, '-1', raw_devs) @staticmethod def init_from_xml(node): @@ -158,11 +159,12 @@ class Raid: if e.nodeType == e.ELEMENT_NODE and e.nodeName == 'raid': raid_dev = e.attributes['raid-device'].value raid_type = e.attributes['raid-type'].value + raid_size = e.attributes['raid-size'].value raw_devs = [] for sub_e in e.childNodes: if sub_e.nodeType == sub_e.ELEMENT_NODE and sub_e.nodeName == 'raw-device': raw_devs.append(sub_e.firstChild.data.encode('ascii')) - Raid(raid_dev, raid_type, raw_devs) + Raid(raid_dev, raid_type, raid_size, raw_devs) @staticmethod def to_xml(doc, p_node): @@ -181,6 +183,10 @@ p_node - xml node (parent node) ''' rd_type_attr.value = r.raid_type rd.setAttributeNode(rd_type_attr) + rd_size_attr = doc.createAttribute('raid-size') + rd_size_attr.value = r.raid_size + rd.setAttributeNode(rd_size_attr) + for raw_dev in r.raw_devices: raw_dev_e = doc.createElement('raw-device') raw_dev_tn = doc.createTextNode(raw_dev) @@ -190,7 +196,13 @@ p_node - xml node (parent node) ''' raids.appendChild(rd) p_node.appendChild(raids) - + + @staticmethod + def get_size(dev): + for r in Raid.list: + if r.raid_device == dev: + return r.raid_size + class MountPoint: ''' mount-points ''' list=[] diff --git a/python/mine/ri_tk.py b/python/mine/ri_tk.py index 7959272..75c6ed4 100644 --- a/python/mine/ri_tk.py +++ b/python/mine/ri_tk.py @@ -118,8 +118,22 @@ def create_widget_sub(w, p_win): return w_win +# When creating widget, I have to create each sub widget. +# while destroying a widget, only destroy one. Tk functions will +# destroy all descendant. +# so init is a little different from quit. +def process_action_quit(w): + ''' process action quit ''' + if 'action' in dir(w) and 'quit' in w.action.dict: + getattr(sys.modules['ri_cmd'], w.action.dict['quit'])() + + if 'widgets' in dir(w): + for sub_w in w.widgets: + process_action_quit(sub_w) + def destroy_widget(w): ''' w - Widget instance ''' + process_action_quit(w) w.tk_widget.destroy() def create_message_box(w): diff --git a/python/mine/ri_widget.py b/python/mine/ri_widget.py index 144fc50..ce4ba81 100644 --- a/python/mine/ri_widget.py +++ b/python/mine/ri_widget.py @@ -92,21 +92,7 @@ class Widget: Widget.current_widget = self display.create_widget(self) - # When creating widget, I have to create each sub widget. - # while destroying a widget, only destroy one. Tk functions will - # destroy all descendant. - # so init is a little different from quit. - def process_action_quit(self): - ''' process action quit ''' - if 'action' in dir(self) and 'quit' in self.action.dict: - getattr(sys.modules['ri_cmd'], self.action.dict['quit'])() - - if 'widgets' in dir(self): - for sub_w in self.widgets: - sub_w.process_action_quit() - def hide(self): - self.process_action_quit() display.destroy_widget(self) class MessageBox: diff --git a/python/mine/test.py b/python/mine/test.py index ad55cf1..845e98f 100644 --- a/python/mine/test.py +++ b/python/mine/test.py @@ -35,8 +35,8 @@ else: xmldoc = minidom.parse(itf_xml) ri_data.install_xml = ins_xml -ri_data.init_from_xml() -#ri_data.init() +#ri_data.init_from_xml() +ri_data.init() ri_widget.construct(xmldoc.firstChild) ri_seq.construct(xmldoc.firstChild) diff --git a/xml/install_ng.xml b/xml/install_ng.xml index 7b6435f..321983f 100644 --- a/xml/install_ng.xml +++ b/xml/install_ng.xml @@ -49,6 +49,7 @@ raid5 +