[opencoffee-devel] Parche agregar workstations

[ Thread Index | Date Index | More lists.tuxfamily.org/opencoffee-devel Archives ]


Hola Compañeros.

Primero que nada les pido una disculpa por no haberme reportado antes.
Tuve algunos problemas personales. Pasando a otra cosa, les envío este
parche preeliminar que habilita el soporte para agregar workstations
desde el formulario. Falta que se guarden las configuraciones en
memoria secundaria, ya sea en el archivo XML o en la DB (creo que iba
a ser en el archivo XML pero no recuerdo bien).

Durante la programación encontré 2 detalles:

 * Los nombre de 2 lineEdits en el formulario de las workstations
estaban con repetidos, seguidos por un _2. No se si estos eran los
nombres correctos, así que los usé tal como estaban.

* Los tabuladores en el formulario de las workstations funcionan de
manera extraña. Tampoco modifique este comportamiento.

Como siempre, el parche se agrega con:

patch -p4 <patch.diff

Copiandolo en el trunk del servidor.

Espero sus comentarios.
Index: /home/arcangel/workspace/opencoffee-server/core/workstations/workstationsTab.py
===================================================================
--- /home/arcangel/workspace/opencoffee-server/core/workstations/workstationsTab.py	(revision 353)
+++ /home/arcangel/workspace/opencoffee-server/core/workstations/workstationsTab.py	(working copy)
@@ -46,8 +46,7 @@
 		self.workstations=[] 
 		
 	## Función que agrega las workstations al tab.
-	# TODO: asignar los nombres e ids a las workstations.
-	def addWorkstation(self):
+	def addWorkstation(self,workstation=None):
 		if self.xAxis > 2:
 			self.xAxis =0
 			self.yAxis +=1 
@@ -52,7 +51,12 @@
 			self.xAxis =0
 			self.yAxis +=1 
 		
-		self.workstations.append(WorkstationTemplate())
+		#Si no se nos proporciona una objeto workstations, se agrega al tab uno vacio.
+		#De lo contrario, se utiliza el objeto proporcionado.
+		if(workstation==None):
+			self.workstations.append(WorkstationTemplate())
+		else:
+			self.workstations.append(workstation)
 		self.gbox.addWidget(self.workstations[-1], self.yAxis, self.xAxis)
 		self.xAxis += 1
 		
@@ -59,10 +63,17 @@
 		
 ## Se define la clase de ui_workstations.py
 class WorkstationTemplate (QWidget, Ui_WorkstationTemplate):
-	def __init__(self, parent = None):
+	def __init__(self, id= None, descripcion= None,ip= None,mac= None, conf= None, parent = None):
 		QWidget.__init__(self, parent)
         	self.setupUi(self)
 		
+		#Se agregan los atributos que necesita el formulario
+		self.id=id
+		self.descripcion=descripcion
+		self.ip=ip
+		self.mac=mac
+		self.conf=conf
+		
 		# Estilizamos el widget para los puestos
 		self.setStyleSheet ("QFrame {background-image: url(:/Styles/styles/workstationBg.png); \
 						background-repeat: no repeat; \
Index: /home/arcangel/workspace/opencoffee-server/MainApp.py
===================================================================
--- /home/arcangel/workspace/opencoffee-server/MainApp.py	(revision 353)
+++ /home/arcangel/workspace/opencoffee-server/MainApp.py	(working copy)
@@ -52,6 +52,7 @@
 from core.tools.console import toolsConsole # Utilidad de la consola
 from core.tools.calc import toolsCalc # Utilidad de la calculadora
 from core.workstations.workstationsTab import WorkstationsTab
+from core.workstations.workstationsTab import WorkstationTemplate
 from core.db.dbMain import LoginAdmin # iniciación de la DB para el login
 
 
@@ -307,7 +308,9 @@
 		## Configurar las conexiones de Signals & Slots deinidas en los GUIs ##
 		# Botónes de Minimizar, maximizar y cerrar ventana
 		self.connect(self.minimizeButton, SIGNAL("clicked()"),self.showMinimized)
-        	self.connect(self.closeButton, SIGNAL("clicked()"),self.hide)
+		self.connect(self.closeButton, SIGNAL("clicked()"),self.hide)
+		
+		self.connect(self.applyButton, SIGNAL("clicked()"), self.onApplyButtonClicked)
 		
 		# Activamos la página correspondiente del stackWidget cuando elegimos un item de listWidget
 		self.connect(self.listWidget, SIGNAL("itemClicked (QListWidgetItem *)"), self.serverModules)
@@ -434,6 +437,12 @@
 			# Mostramos el QLabel de login error
 			self.loginWindow.loginError.show()
 
+	#Método que se dispara cuando se presiona el applyButton.
+	def onApplyButtonClicked(self):
+		#Si el usuario se encuentra en la pestaña de las workstations, se dispara el agregado
+		#de la workstations.
+		if(self.stackedWidget.currentIndex()==2):
+			self.stackedWidget.currentWidget().addWorkstation()
 
 ## Clases a Utilizar en OpenCoffee, generalmente para presentar o activar una clase/UI ##
 # Se define la clase de ui_login.py
@@ -611,6 +620,27 @@
 		# Se establece un tamaño minimo. Con esto el scrollArea ocupa todo el tab.		
 		self.scrollArea.setMinimumSize(610, 410)
 		
+	#Función que agrega workstations al workstationTab.
+	#TODO: Guardar la configuración de la workstation en memoria secundaria.
+	#TODO: Validar los datos del formulario
+	def addWorkstation(self):
+		#Se crea la workstation con los parámetros obtenidos de los lineEdit
+		#TODO: Cambiar el nombre de los lineEdit en el template.
+		workstation=WorkstationTemplate(self.idLineEdit.text(), 
+									   self.idLineEdit_2.text(),
+									   self.ipLineEdit.text(),
+									   self.ipLineEdit_2.text(),
+									   self.checkBox.checkState ())
+		
+		#Se limpian los lineEdit despues de su uso.
+		self.idLineEdit.clear()
+		self.idLineEdit_2.clear()
+		self.ipLineEdit.clear()
+		self.ipLineEdit_2.clear()
+		
+		#Se agrega la workstation al worstationTab
+		self.workstationsTab.addWorkstation(workstation)
+
 
 # Se define la clase de ui_clients.py
 class ClientsWidget (QWidget, Ui_clientsWidget):


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/