PERFORCE change 123885 for review

Andrew Turner andrew at FreeBSD.org
Sun Jul 22 08:32:03 UTC 2007


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

Change 123885 by andrew at andrew_hermies on 2007/07/22 08:31:13

	Add an install and remove button the the GUI. They are not connected to anything yet

Affected files ...

.. //depot/projects/soc2007/andrew-update/frontend/facund-fe.glade#4 edit
.. //depot/projects/soc2007/andrew-update/frontend/facund/controller.py#3 edit
.. //depot/projects/soc2007/andrew-update/frontend/facund/gui/main_window.py#7 edit
.. //depot/projects/soc2007/andrew-update/frontend/facund/gui/update_model.py#2 edit

Differences ...

==== //depot/projects/soc2007/andrew-update/frontend/facund-fe.glade#4 (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 15 23:48:18 2007 by andrew at hermies.int.fubar.geek.nz-->
+<!--Generated with glade3 3.2.2 on Sun Jul 22 15:49: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>
@@ -201,20 +201,41 @@
                   </widget>
                 </child>
                 <child>
-                  <widget class="GtkHBox" id="hbox1">
+                  <widget class="GtkTable" id="table1">
                     <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">2</property>
+                    <property name="n_columns">2</property>
+                    <property name="column_spacing">5</property>
+                    <property name="row_spacing">5</property>
+                    <child>
+                      <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">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">
+                      <widget class="GtkButton" id="installButton">
                         <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="label" translatable="yes">Install</property>
                         <property name="response_id">0</property>
                       </widget>
                       <packing>
-                        <property name="padding">5</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
                       </packing>
                     </child>
                     <child>
@@ -227,14 +248,24 @@
                         <property name="response_id">0</property>
                       </widget>
                       <packing>
-                        <property name="padding">5</property>
-                        <property name="position">1</property>
+                        <property name="left_attach">1</property>
+                        <property name="right_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>
-                    <property name="padding">10</property>
+                    <property name="padding">5</property>
                     <property name="position">1</property>
                   </packing>
                 </child>

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

@@ -40,6 +40,9 @@
 	def onComputerTreeSelect(self, position):
 		computer = self.__computersModel.getComputer(position[0])
 		self.__view.setConnected(computer.getConnectionStatus())
+		if computer.getConnectionStatus() is not True:
+			self.__view.setInstallable(False, False)
+
 		self.__currentComputer = computer
 
 		if len(position) == 1:
@@ -62,5 +65,13 @@
 		for update in pair[1].getData():
 			self.__updateModel.addUpdate(update)
 
+		if self.__updateModel.getSize() > 0:
+			if command == "Avaliable":
+				self.__view.setInstallable(True, False)
+			elif command == "Installed":
+				self.__view.setInstallable(False, True)
+		else:
+			self.__view.setInstallable(False, False)
+
 	def getCurrentComputer(self):
 		return self.__currentComputer

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

@@ -75,6 +75,14 @@
 		connectedButton.set_sensitive(not connected)
 		disconnectedButton.set_sensitive(connected)
 
+	def setInstallable(self, installable, uninstallable):
+		installButton = self.__xml.get_widget('installButton')
+		installButton.set_sensitive(installable)
+
+		deinstallButton = self.__xml.get_widget('deinstallButton')
+		deinstallButton.set_sensitive(uninstallable)
+
+
 	def onConnectClick(self, widget):
 		'''Signal handler for the connect button'''
 		treeView = self.__xml.get_widget('computerView')
@@ -83,6 +91,8 @@
 		self.setConnected(computer.getConnectionStatus())
 		self.__computerTreeModel.populateComputer(computer)
 
+		self.setInstallable(False, False)
+
 	def onDisconnectClick(self, widget):
 		'''Signal handler for the connect button'''
 		treeView = self.__xml.get_widget('computerView')
@@ -91,6 +101,9 @@
 		self.setConnected(computer.getConnectionStatus())
 		self.__computerTreeModel.populateComputer(computer)
 
+		# Disable the install/remove buttons
+		self.setInstallable(False, False)
+
 	def onSelectComputer(self, widget):
 		'''Signal handler for when the selected item is changed'''
 		cursor = widget.get_cursor()

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

@@ -31,11 +31,17 @@
 	'''A model used to display a list of updates to the user'''
 	def __init__(self):
 		gtk.TreeStore.__init__(self, gobject.TYPE_STRING)
+		self.__size = 0
 
 	def addUpdate(self, item):
 		name = item.getData()
 		iter = self.append(None)
 		self.set(iter, 0, name)
+		self.__size += 1
 
 	def empty(self):
+		self.__size = 0
 		self.clear()
+	
+	def getSize(self):
+		return self.__size


More information about the p4-projects mailing list