PERFORCE change 125286 for review

Andrew Turner andrew at FreeBSD.org
Fri Aug 17 20:52:36 PDT 2007


http://perforce.freebsd.org/chv.cgi?CH=125286

Change 125286 by andrew at andrew_hermies on 2007/08/18 03:52:19

	Remove most of the menu as it was unused
	Add a dialog box to add new computers
	Add a menu item to remove computers from the gui

Affected files ...

.. //depot/projects/soc2007/andrew-update/frontend/facund-fe.glade#5 edit
.. //depot/projects/soc2007/andrew-update/frontend/facund.py#10 edit
.. //depot/projects/soc2007/andrew-update/frontend/facund/__init__.py#7 edit
.. //depot/projects/soc2007/andrew-update/frontend/facund/computer.py#12 edit
.. //depot/projects/soc2007/andrew-update/frontend/facund/gui/__init__.py#5 edit
.. //depot/projects/soc2007/andrew-update/frontend/facund/gui/computer_model.py#7 edit
.. //depot/projects/soc2007/andrew-update/frontend/facund/gui/main_window.py#11 edit
.. //depot/projects/soc2007/andrew-update/frontend/facund/network/__init__.py#12 edit

Differences ...

==== //depot/projects/soc2007/andrew-update/frontend/facund-fe.glade#5 (text+ko) ====

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.2.2 on Sun Jul 22 15:49:07 2007 by andrew at hermies.int.fubar.geek.nz-->
+<!--Generated with glade3 3.2.2 on Thu Aug 16 12:34:07 2007 by andrew at hermies.int.fubar.geek.nz-->
 <glade-interface>
   <widget class="GtkWindow" id="facundWindow">
     <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
@@ -23,7 +23,7 @@
                     <property name="visible">True</property>
                     <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                     <child>
-                      <widget class="GtkImageMenuItem" id="imagemenuitem1">
+                      <widget class="GtkImageMenuItem" id="newConnection">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                         <property name="label" translatable="yes">gtk-new</property>
@@ -32,40 +32,22 @@
                       </widget>
                     </child>
                     <child>
-                      <widget class="GtkImageMenuItem" id="imagemenuitem2">
+                      <widget class="GtkImageMenuItem" id="delConnection">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">gtk-open</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="imagemenuitem3">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">gtk-save</property>
+                        <property name="label" translatable="yes">gtk-delete</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                       </widget>
                     </child>
                     <child>
-                      <widget class="GtkImageMenuItem" id="imagemenuitem4">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">gtk-save-as</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                      </widget>
-                    </child>
-                    <child>
                       <widget class="GtkSeparatorMenuItem" id="separatormenuitem1">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                       </widget>
                     </child>
                     <child>
-                      <widget class="GtkImageMenuItem" id="imagemenuitem5">
+                      <widget class="GtkImageMenuItem" id="progQuit">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                         <property name="label" translatable="yes">gtk-quit</property>
@@ -77,87 +59,6 @@
                 </child>
               </widget>
             </child>
-            <child>
-              <widget class="GtkMenuItem" id="menuitem2">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">_Edit</property>
-                <property name="use_underline">True</property>
-                <child>
-                  <widget class="GtkMenu" id="menu2">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="imagemenuitem6">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">gtk-cut</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="imagemenuitem7">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">gtk-copy</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="imagemenuitem8">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">gtk-paste</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="imagemenuitem9">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">gtk-delete</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkMenuItem" id="menuitem3">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">_View</property>
-                <property name="use_underline">True</property>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkMenuItem" id="menuitem4">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="label" translatable="yes">_Help</property>
-                <property name="use_underline">True</property>
-                <child>
-                  <widget class="GtkMenu" id="menu3">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="imagemenuitem10">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">gtk-about</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
           </widget>
           <packing>
             <property name="expand">False</property>
@@ -209,19 +110,27 @@
                     <property name="column_spacing">5</property>
                     <property name="row_spacing">5</property>
                     <child>
-                      <widget class="GtkButton" id="deinstallButton">
+                      <widget class="GtkButton" id="connectButton">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">Connect</property>
+                        <property name="response_id">0</property>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="disconnectButton">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Remove</property>
+                        <property name="label" translatable="yes">Disconnect</property>
                         <property name="response_id">0</property>
                       </widget>
                       <packing>
                         <property name="left_attach">1</property>
                         <property name="right_attach">2</property>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
                       </packing>
                     </child>
                     <child>
@@ -239,29 +148,21 @@
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkButton" id="disconnectButton">
+                      <widget class="GtkButton" id="deinstallButton">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Disconnect</property>
+                        <property name="label" translatable="yes">Remove</property>
                         <property name="response_id">0</property>
                       </widget>
                       <packing>
                         <property name="left_attach">1</property>
                         <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
                       </packing>
                     </child>
-                    <child>
-                      <widget class="GtkButton" id="connectButton">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Connect</property>
-                        <property name="response_id">0</property>
-                      </widget>
-                    </child>
                   </widget>
                   <packing>
                     <property name="expand">False</property>
@@ -339,4 +240,140 @@
       </widget>
     </child>
   </widget>
+  <widget class="GtkDialog" id="newConnectionDialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="border_width">5</property>
+    <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="deletable">False</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <widget class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <widget class="GtkTable" id="table2">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="n_rows">3</property>
+            <property name="n_columns">2</property>
+            <property name="column_spacing">3</property>
+            <property name="row_spacing">10</property>
+            <child>
+              <widget class="GtkLabel" id="label3">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Computer's description
+This is a Human redable
+name for the computer</property>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkEntry" id="computerNameEntry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+              </widget>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkEntry" id="computerEntry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+              </widget>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkEntry" id="socketEntry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+              </widget>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Computer's name
+leave blank for the
+local computer</property>
+              </widget>
+              <packing>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Socket location
+Leave blank for
+the default socket</property>
+              </widget>
+              <packing>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <widget class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <child>
+              <widget class="GtkButton" id="newConnectionSave">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">gtk-save</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">0</property>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkButton" id="newConnectionCancel">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">gtk-cancel</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">0</property>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
 </glade-interface>

==== //depot/projects/soc2007/andrew-update/frontend/facund.py#10 (text+ko) ====

@@ -38,9 +38,18 @@
 #	fc.interact()
 
 if __name__ == "__main__":
+	computerList = facund.ComputerList()
+	computers = computerList.getComputerList()
+
 	computerModel = facund.gui.ComputerTreeModel()
-	localComputer = facund.Computer("Local computer", '/tmp/facund')
-	computerModel.addComputer(localComputer)
+	for i in range(len(computers)):
+		computer = facund.Computer(computers[i][0], computers[i][1],
+		    computers[i][2])
+		computerModel.addComputer(computer)
+
+	# If we nee the computer list again we gan get it in the same way
+	del computers
+	del computerList
 
 	updateModel = facund.gui.UpdateListModel()
 

==== //depot/projects/soc2007/andrew-update/frontend/facund/__init__.py#7 (text+ko) ====

@@ -26,6 +26,7 @@
 
 from call import *
 from computer import *
+from computer_list import *
 from controller import *
 from data import *
 

==== //depot/projects/soc2007/andrew-update/frontend/facund/computer.py#12 (text+ko) ====

@@ -45,17 +45,18 @@
 
 class Computer(threading.Thread):
 	'''A class to describe each computer able to be connected to'''
-	def __init__(self, name, host):
+	def __init__(self, name, host, socket):
 		threading.Thread.__init__(self)
 		self.__name = name
 		self.__host = host
+		self.__socket = socket
 		self.__dirs = []
 		self.__connected = False
 		self.__connection = None
 		self.__commands = ['Avaliable', 'Installed']
 
 	def __str__(self):
-		return self.__name + ": " + self.__host
+		return self.__name + ": " + (self.__host or self.__socket)
 
 	def addDir(self, dir):
 		'''Adds a directory to the avaliable directories to update'''
@@ -77,6 +78,9 @@
 		'''Returns the hostname/ip of the computer'''
 		return self.__host
 
+	def getSocket(self):
+		return self.__socket
+
 	def getCommands(self, dir):
 		return self.__commands
 
@@ -156,7 +160,7 @@
 
 		try:
 			self.__connection = \
-			    facund.network.Connection(self.__host)
+			    facund.network.Connection(self.__host, self.__socket)
 
 			# Start the communication thread
 			self.start()
@@ -173,7 +177,7 @@
 			for dir in dirs:
 				self.addDir(dir.getData())
 		except socket.error:
-			print "Couldn't connect to " + self.__host
+			print "Couldn't connect to %s " % (self.__host or self.__socket)
 			del self.__connection
 			self.__connection = None
 

==== //depot/projects/soc2007/andrew-update/frontend/facund/gui/__init__.py#5 (text+ko) ====

@@ -25,5 +25,6 @@
 #
 
 from computer_model import ComputerTreeModel
+from connection_dialog import ConnectionDialog
 from main_window import MainWindow
 from update_model import UpdateListModel

==== //depot/projects/soc2007/andrew-update/frontend/facund/gui/computer_model.py#7 (text+ko) ====

@@ -75,15 +75,11 @@
 		return self.__computers[name]
 
 	def removeComputer(self, computer):
-		'''Removes a computer from the computer tree. TODO: Implement'''
-		iter = self.get_iter_from_string(computer)
-		print iter
-
-	def addBaseDir(self, computer, dir):
-		'''Adds a base directory to manage to a computer. TODO: Implement'''
-		pass
-
-	def removeBaseDir(self, computer, dir):
-		'''Removes a base directory from a computer. TODO: Implement'''
-		pass
+		'''Removes a computer from the computer tree'''
+		computer_name = computer.getName()
+		if self.__computers.has_key(computer_name) and \
+		    self.__iterators.has_key(computer):
+			del self.__computers[computer_name]
+			iter = self.__iterators[computer]
+			self.remove(iter)
 

==== //depot/projects/soc2007/andrew-update/frontend/facund/gui/main_window.py#11 (text+ko) ====

@@ -24,6 +24,7 @@
 # SUCH DAMAGE.
 #
 
+import facund
 import gtk
 import gtk.gdk
 import gtk.glade
@@ -37,7 +38,79 @@
 
 		self.__xml = gtk.glade.XML(glade_file)
 		self.__widget = self.__xml.get_widget('facundWindow')
-            	self.__widget.connect('destroy', lambda *w: gtk.main_quit())
+            	self.__widget.connect('destroy', self.onQuit)
+
+		# Open the new computer window on File > New
+		menuItem = self.__xml.get_widget('newConnection')
+		menuItem.connect('activate', self.newConnection)
+
+		# Remove the selected computer on File > Delete
+		menuItem = self.__xml.get_widget('delConnection')
+		menuItem.connect('activate', self.delConnection)
+
+		# Attach the quit signal to File > Quit
+		menuItem = self.__xml.get_widget('progQuit')
+		menuItem.connect('activate', self.onQuit)
+
+		self.__newConnectionDialog = None
+
+		# Connect the signals to the new connection dialog box
+		button = self.__xml.get_widget('newConnectionCancel')
+		button.connect('clicked', self.connectionCancel)
+
+		button = self.__xml.get_widget('newConnectionSave')
+		button.connect('clicked', self.connectionSave)
+
+	def onQuit(self, data):
+		gtk.main_quit()
+
+	def newConnection(self, data):
+		widget = self.__xml.get_widget('newConnectionDialog')
+		self.__newConnectionDialog = widget
+		self.__newConnectionDialog.show()
+
+	def delConnection(self, data):
+		# Make sure the we have disconnected
+		self.onDisconnectClick(data)
+		computer = self.__controller.getCurrentComputer()
+		computerList = facund.ComputerList()
+		computerList.delComputer(computer)
+		self.__computerTreeModel.removeComputer(computer)
+		del computerList
+
+	def connectionCancel(self, data):
+		self.__newConnectionDialog.hide()
+		self.__newConnectionDialog = None
+
+		self.__xml.get_widget('computerNameEntry').set_text('')
+		self.__xml.get_widget('computerEntry').set_text('')
+		self.__xml.get_widget('computerEntry').set_text('')
+
+	def connectionSave(self, data):
+		item = self.__xml.get_widget('computerEntry')
+		server = item.get_text()
+		if server is '':
+			server = None
+
+		item = self.__xml.get_widget('socketEntry')
+		socket =  item.get_text()
+		if socket is '':
+			socket = '/tmp/facund'
+
+		item = self.__xml.get_widget('computerNameEntry')
+		name = item.get_text()
+		if name is '':
+			name = server or 'Local Computer'
+
+		computer = facund.Computer(name, server, socket)
+		computerList = facund.ComputerList()
+		computerList.addComputer(computer)
+		del computerList
+		self.__computerTreeModel.addComputer(computer)
+
+		# Use the connectionCancel handler as it
+		# closes the dialog and cleans up the fields
+		self.connectionCancel(data)
 
 	def setController(self, controller):
 		self.__controller = controller

==== //depot/projects/soc2007/andrew-update/frontend/facund/network/__init__.py#12 (text+ko) ====

@@ -33,10 +33,10 @@
 import xml.sax.handler
 
 class PipeComms:
-	def __init__(self, server):
-		self.popen = subprocess.Popen(["/usr/bin/ssh", server, "/usr/bin/nc -oU /tmp/facund"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
-		print self.popen.stdout
+	def __init__(self, server, socket):
+		self.popen = subprocess.Popen(["/usr/bin/ssh", server, "/usr/bin/nc -oU %s" % socket], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
 		self.stdout = self.popen.stdout.fileno()
+		print poll()
 
 	def read(self, len):
 		return os.read(self.stdout, len)
@@ -57,7 +57,7 @@
 
 class Connection(xml.sax.handler.ContentHandler):
 	'''A class that works as a client with the Facund XML IPC'''
-	def __init__(self, server):
+	def __init__(self, server, socket):
 		self.isReady = False
 		self.connectionType = "unix"
 
@@ -65,10 +65,10 @@
 		self.__calls = {}
 
 		self.bufSize = 1024
-		if self.connectionType == "unix":
-			self.__connection = SocketComms(server)
-		elif self.connectionType == "pipe":
-			self.__connection = PipeComms(server)
+		if server is None:
+			self.__connection = SocketComms(socket)
+		else:
+			self.__connection = PipeComms(server, socket)
 
 		self.send("<facund-client version=\"0\">")
 


More information about the p4-projects mailing list