[gevice] enable diagram option



commit 8dacda56930fec3d71ad5e74217a8203b61dee1b
Author: Alejandro ValdÃs Jimenez <avaldes gnome org>
Date:   Fri Dec 14 16:43:59 2012 -0300

    enable diagram option

 ChangeLog            |    5 +
 data/ui/diagram.xml  |    5 +-
 src/gevice.py        |   19 ++++-
 src/gevicediagram.py |  229 ++++++++++++++++++++++----------------------------
 4 files changed, 126 insertions(+), 132 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 885dc1d..221ddfa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,9 @@
 2012-12-14  Alejandro ValdéJimenez  <avaldes gnome org>
+	* data/ui/diagram.xml: change to modal window.
+	* src/gevice.py: enable diagram option.
+	* src/gevicediagram.py: clean code.
+
+2012-12-14  Alejandro ValdéJimenez  <avaldes gnome org>
 	* src/Makefile.am: remove empty line.
 
 2012-12-14  Alejandro ValdéJimenez  <avaldes gnome org>
diff --git a/data/ui/diagram.xml b/data/ui/diagram.xml
index d743ba2..74ba233 100644
--- a/data/ui/diagram.xml
+++ b/data/ui/diagram.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
-  <!-- interface-requires gtk+ 2.6 -->
+  <!-- interface-requires gtk+ 3.0 -->
   <object class="GtkListStore" id="liststore_format">
     <columns>
       <!-- column-name name_format -->
@@ -47,6 +47,7 @@
     <property name="border_width">10</property>
     <property name="title" translatable="yes" context="yes">Generate Diagram</property>
     <property name="resizable">False</property>
+    <property name="modal">True</property>
     <property name="window_position">center</property>
     <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
@@ -135,6 +136,7 @@
             <child>
               <object class="GtkButton" id="button_diagram_generate">
                 <property name="label" context="yes">gtk-execute</property>
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">False</property>
@@ -151,6 +153,7 @@
             <child>
               <object class="GtkButton" id="button_diagram_cancel">
                 <property name="label" context="yes">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">False</property>
diff --git a/src/gevice.py b/src/gevice.py
index 4d57de8..16f6977 100755
--- a/src/gevice.py
+++ b/src/gevice.py
@@ -24,14 +24,13 @@ from struct import unpack
 
 import config
 ###import gevicefind
-###import gevicediagram
+import gevicediagram
 import geviceprefer
 import gevicevte
 import gevicedevice
 import gevicemodel
 import gevicedatabase
 ###import geviceexport
-###import gevicemaintainer
 
 import gettext
 gettext.bindtextdomain(config.PACKAGE,config.LOCALEDIR)
@@ -173,7 +172,7 @@ class Gevice:
       ('EditDevice', Gtk.STOCK_EDIT, _('Edit'), None, _('Edit data of device selected'), self.on_action_editdevice),
       ('Expand', Gtk.STOCK_INDENT, _('Expand'), None, _('Expand tree of device selected'), self.on_action_expand),
       ('Decrease', Gtk.STOCK_UNINDENT, _('Decrease'), None, _('Decrease tree of device selected'), self.on_action_decrease),
-      ('Diagram', Gtk.STOCK_CONVERT, _('Generate Diagram'),None, _('Generate diagram of devices'), self.passing),
+      ('Diagram', Gtk.STOCK_CONVERT, _('Generate Diagram'),None, _('Generate diagram of devices'), self.on_action_diagram),
       ('Connect', Gtk.STOCK_JUMP_TO, _('Open terminal'), None, _('Open terminal'), self.on_action_connect),
       ])
     
@@ -476,6 +475,20 @@ class Gevice:
     self.gpref.load_interface(self)
     self.gpref.show_interface()
 
+  def on_action_diagram (self,action):
+    i = self.gmodel.get_iter_selected(self.gmodel.treeview)
+
+    #check if the user have selected some device
+    if (i["iter"]):
+      self.gdiagram = gevicediagram.GeviceDiagram ()
+      self.gdiagram.load_interface (self)
+      self.gdiagram.show_interface ()
+    else:
+      result = self.show_message (_("You need choose some device to generate the diagram."),
+        None,
+        (Gtk.STOCK_OK, Gtk.ResponseType.OK),
+        self.window_main)
+
 if __name__ == "__main__":
   gevice = Gevice()
   gevice.main()
diff --git a/src/gevicediagram.py b/src/gevicediagram.py
index e1258a3..60c140d 100644
--- a/src/gevicediagram.py
+++ b/src/gevicediagram.py
@@ -29,131 +29,104 @@ gettext.bind_textdomain_codeset (config.PACKAGE, "UTF-8");
 from gettext import gettext as _
 
 class GeviceDiagram:
-    def __init__ (self):
-        self.window_diagram = None
-        self.button_diagram_cancel = None
-        self.button_diagram_generate = None
-        self.combobox_program = None
-        self.combobox_format = None
-        
-        self.iterfirst = None
-
-        self.A = None
-        
-        self.form = None
-        self.prog = None
-        
-        self.name = None
-        self.ip = None
-        self.model = None
-        self.type_link = None
-        self.pix_link = None
-        self.name_link = None
-
-    def load_interface (self,gevice):
-	builder = Gtk.Builder()
-	builder.add_from_file(os.path.join (config.UIDIR, "diagram.xml"))
-	
-        self.window_diagram = builder.get_object ("window_diagram")
-        self.button_diagram_cancel = builder.get_object ("button_diagram_cancel")
-        self.button_diagram_generate = builder.get_object ("button_diagram_generate")
-        self.combobox_program = builder.get_object ("combobox_program")
-        self.combobox_format = builder.get_object ("combobox_format")
-	
-        # set default value for diagram
-        self.combobox_format.set_active (0)
-        self.combobox_program.set_active (0)
-
-        self.window_diagram.connect ("delete-event",self.on_window_diagram_delete_event)
-        self.button_diagram_cancel.connect ("clicked",self.on_button_diagram_cancel_clicked)
-        self.button_diagram_generate.connect ("clicked",self.on_button_diagram_generate_clicked,gevice)		
-
-    def show_interface (self):
-        self.window_diagram.show_all()
-
-    def close_window (self,window):
-        window.destroy()
-
-    def on_button_diagram_cancel_clicked (self,button):
-        self.close_window(self.window_diagram)
-
-    def on_window_diagram_delete_event (self,window,event):
-        self.close_window(window)
-
-    def on_button_diagram_generate_clicked (self,button,gevice):
-    			    
-        self.A = AGraph()
-        
-        # attributes of nodes
-        self.A.node_attr['shape'] = 'box'
-        self.A.node_attr['color'] = 'black'
-        
-	iter_form = self.combobox_format.get_active_iter()
-	model_form = self.combobox_format.get_model()
-        self.form = model_form.get_value(iter_form,0)
-	
-	iter_prog = self.combobox_program.get_active_iter()
-	model_prog = self.combobox_program.get_model()
-        self.prog = model_prog.get_value(iter_prog,0)
-
-        i = gevice.gmodel.get_iter_selected(gevice.gmodel.treeview)
-       
-        self.iterfirst = i["iter"]
-	self.print_child (gevice,i["iter"],None)
-
-        file = config.DEFAULT_TMP + "tmp_gevice_diagram" + "." + self.form
-        self.A.draw(file,format=self.form,prog=self.prog) 
-
-        # show diagram with eog (FIXME: call to default viewer)
-        id = os.spawnlp(os.P_NOWAIT,'eog','eog',file)
-	
-	self.close_window(self.window_diagram)
-
-    def get_data_of_device (self,iter,gevice):
-        self.name,self.ip,self.model,self.type_link = gevice.gmodel.treestore.get(iter,
-            config.COLUMN_NAME_DEV,
-            config.COLUMN_IP_DEV,
-            config.COLUMN_NAME_MODEL_DEV,
-            config.COLUMN_ID_TYPE_LINK_DEV)
-
-        self.pix_link,self.name_link = gevice.gmodel.get_data_of_link_from_key (self.type_link,gevice)
-
-        ###if (gevice.gpref.diagip):
-        if (gevice.gpref.settings.get_boolean("diagip")):          
-            self.name = self.name + '\\n(' + self.ip + ')'
-
-        ###if (gevice.gpref.diagmodel):
-        if (gevice.gpref.settings.get_boolean("diagmodel")):
-            self.name = self.name + '\\n(' + self.model + ')'
-
-        #if (gevice.gpref.diaglink):
-        #    self.name = self.name + '\\n(' + self.name_link + ')'
-
-
-    def print_child(self,gevice,parent_iter,parent_name):
-        while (parent_iter):
-            #name = self.join_name (parent_iter,gevice)
-            self.get_data_of_device (parent_iter,gevice)
-            self.join_nodes (parent_name,self.name,gevice)
-
-            if gevice.gmodel.treestore.iter_has_child(parent_iter):
-                child = gevice.gmodel.treestore.iter_children(parent_iter)
-                self.print_child (gevice,child,self.name)
-            
-            if (not self.iterfirst == parent_iter):
-                next_iter = gevice.gmodel.treestore.iter_next(parent_iter)
-                parent_iter = next_iter
-            else:
-                return
-
-    def join_nodes (self,parent,child,gevice):
-        self.A.add_node (child,color='red')
-        
-        if parent:
-            #self.A.add_edge(parent,child)
-            ###self.A.add_edge(parent,child,headlabel='one-two',labeldistance='2.2',label='lala')
-            ###if (gevice.gpref.diaglink):
-            if (gevice.gpref.settings.get_boolean("diaglink")):
-                self.A.add_edge(parent,child,label=self.name_link)
-            else:
-                self.A.add_edge(parent,child)
+  def __init__ (self):
+    self.window_diagram = None
+    self.button_diagram_cancel = None
+    self.button_diagram_generate = None
+    self.combobox_program = None
+    self.combobox_format = None
+    self.iterfirst = None
+    self.default_tmp = "/tmp/"
+    self.color_node = "black"
+    self.fontsize = 8
+    self.shape = 'box'
+
+    self.A = None
+    self.form = None
+    self.prog = None
+
+    self.name = None
+    self.ip = None
+
+  def load_interface (self,gevice):
+    builder = Gtk.Builder()
+    builder.add_from_file(os.path.join (config.UIDIR, "diagram.xml"))
+
+    self.window_diagram = builder.get_object ("window_diagram")
+    self.button_diagram_cancel = builder.get_object ("button_diagram_cancel")
+    self.button_diagram_generate = builder.get_object ("button_diagram_generate")
+    self.combobox_program = builder.get_object ("combobox_program")
+    self.combobox_format = builder.get_object ("combobox_format")
+
+    # set default value for diagram
+    self.combobox_format.set_active (0)
+    self.combobox_program.set_active (0)
+
+    self.window_diagram.connect ("delete-event",self.on_window_diagram_delete_event)
+    self.button_diagram_cancel.connect ("clicked",self.on_button_diagram_cancel_clicked)
+    self.button_diagram_generate.connect ("clicked",self.on_button_diagram_generate_clicked,gevice)
+
+  def show_interface (self):
+    self.window_diagram.show_all()
+
+  def close_window (self,window):
+    window.destroy()
+
+  def on_button_diagram_cancel_clicked (self,button):
+    self.close_window(self.window_diagram)
+
+  def on_window_diagram_delete_event (self,window,event):
+    self.close_window(window)
+
+  def on_button_diagram_generate_clicked (self,button,gevice):
+    self.A = AGraph()
+
+    # attributes of nodes
+    self.A.node_attr['shape'] = self.shape
+
+    iter_form = self.combobox_format.get_active_iter()
+    model_form = self.combobox_format.get_model()
+    self.form = model_form.get_value(iter_form,0)
+    
+    iter_prog = self.combobox_program.get_active_iter()
+    model_prog = self.combobox_program.get_model()
+    self.prog = model_prog.get_value(iter_prog,0)
+
+    i = gevice.gmodel.get_iter_selected(gevice.gmodel.treeview)
+
+    self.iterfirst = i["iter"]
+    self.print_child (gevice,i["iter"],None)
+
+    file = self.default_tmp + "tmp_gevice_diagram" + "." + self.form
+    self.A.draw(file,format=self.form,prog=self.prog) 
+
+    # show diagram with eog (FIXME: call to default viewer)
+    id = os.spawnlp(os.P_NOWAIT,'eog','eog',file)
+
+    self.close_window(self.window_diagram)
+
+  def get_data_of_device (self,iter,gevice):
+    self.name,self.ip = gevice.gmodel.treestore.get(iter,0,1)
+
+    if (gevice.gpref.gsettings.get_boolean("diagip")):          
+      self.name = self.name + '\\n(' + self.ip + ')'
+
+  def print_child(self,gevice,parent_iter,parent_name):
+    while (parent_iter):
+      self.get_data_of_device (parent_iter,gevice)
+      self.join_nodes (parent_name,self.name,gevice)
+
+      if gevice.gmodel.treestore.iter_has_child(parent_iter):
+        child = gevice.gmodel.treestore.iter_children(parent_iter)
+        self.print_child (gevice,child,self.name)
+
+      if (not self.iterfirst == parent_iter):
+        next_iter = gevice.gmodel.treestore.iter_next(parent_iter)
+        parent_iter = next_iter
+      else:
+        return
+
+  def join_nodes (self,parent,child,gevice):
+    self.A.add_node (child,color=self.color_node,fontsize=self.fontsize)
+    if parent:
+      self.A.add_edge(parent,child)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]