Changeset 1672 for trunk/loplug/plugins/input/pginput.py
- Timestamp:
- 02/07/10 21:34:36 (2 years ago)
- File:
-
- 1 edited
-
trunk/loplug/plugins/input/pginput.py (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/loplug/plugins/input/pginput.py
r1671 r1672 24 24 from pgpluginclient import * 25 25 26 27 28 class CmdListItem( QListWidgetItem): 26 class CmdxxxItem( QStandardItem): 27 def __init__( self, name): 28 QStandardItem.__init__( self, name) 29 30 31 class CmdItem(): 29 32 def __init__( self, providerInfo): 30 33 self.keys = [] 31 34 self.__providerInfo__ = providerInfo 32 35 self.__name__ = cst_get_last_part_of_address( providerInfo.id) 33 QListWidgetItem.__init__( self, QString( self.__name__)) 34 35 def __str__( self): 36 str += self.__providerInfo__.id 37 return str 38 39 def getCmdName( self): 40 return cst_get_last_part_of_address( self.__name__) 41 def getCmdId( self): 36 self.__keyText__ = "" 37 38 def getName( self): 39 name = CmdxxxItem( self.__name__) 40 name.setEditable( False) 41 return name 42 def setKeys( self, keys): 43 self.__keyText__ = "" 44 for key in keys: 45 self.__keyText__ += PGInput.keyReference[key] + " " 46 def addKey( self, key): 47 self.__keyText__ += PGInput.keyReference[key] + " " 48 def getKeys( self): 49 keys = CmdxxxItem( self.__keyText__) 50 keys.setEditable( False) 51 return keys 52 def getId( self): 42 53 return self.__providerInfo__.id 43 def setKeys( self, keys):44 self.__keys__ = keys45 def getKeys( self):46 return self.__keys__47 54 48 55 #---------------------------------------------------------------- … … 61 68 return False 62 69 63 print 'MessageName:',event.MessageName64 print 'Message:',event.Message65 print 'Time:',event.Time66 print 'Window:',event.Window67 print 'WindowName:',event.WindowName68 print 'Ascii:', event.Ascii, chr(event.Ascii)69 print 'Key:', event.Key70 print 'KeyID:', event.KeyID71 print 'ScanCode:', event.ScanCode72 print 'Extended:', event.Extended73 print 'Injected:', event.Injected74 print 'Alt', event.Alt75 print 'Transition', event.Transition76 print '---'70 # print 'MessageName:',event.MessageName 71 # print 'Message:',event.Message 72 # print 'Time:',event.Time 73 # print 'Window:',event.Window 74 # print 'WindowName:',event.WindowName 75 # print 'Ascii:', event.Ascii, chr(event.Ascii) 76 # print 'Key:', event.Key 77 # print 'KeyID:', event.KeyID 78 # print 'ScanCode:', event.ScanCode 79 # print 'Extended:', event.Extended 80 # print 'Injected:', event.Injected 81 # print 'Alt', event.Alt 82 # print 'Transition', event.Transition 83 # print '---' 77 84 78 85 key = event.KeyID … … 84 91 if not ( key in keyPressed): 85 92 keyPressed.append( key) 93 PGInput.addKeyReference( pgInputInstance, key, event.Key) 86 94 PGInput.processKey( pgInputInstance, keyPressed) 87 PGInput.AddKeyReference( key, event.Key)88 95 89 96 return True … … 101 108 ## Main class in python to manage connection with server 102 109 class PGInput(PGPluginClient): 110 111 WORKING_MODE_COMBO_EDITION = "COMBO_EDITION" 112 WORKING_MODE_CONFIGURATION = "CONFIGURATION" 113 WORKING_MODE_NOMINAL = "NOMINAL" 114 103 115 infos = { "description" : "Input plugin" , 104 116 "version" : 0.1, 105 117 "icon" : "input.jpg" 106 118 } 119 120 keyReference = { 162: "LControl" 121 , 48 : "0" 122 , 49 : "1" 123 } 107 124 108 125 # This is for test. In final version, it will be read from config and buid by configurator … … 130 147 global pgInputInstance 131 148 pgInputInstance = self 132 self.essai = None 149 150 self.row = 0 151 self.workingMode = PGInput.WORKING_MODE_NOMINAL 133 152 #================================================================ 134 153 # OVERRIDDEN METHODS … … 148 167 # Init variable which are part or issued of the config. 149 168 self.requests = {} #- Discard all the requests from every plug 150 self.keyReference = { 162: "LControl"151 , 48 : "0"152 , 49 : "1"153 }154 169 #---------------------------------------------------------------- 155 170 # To load the settings … … 169 184 # @return widget 170 185 def _get_config_widget( self, data): 186 self.workingMode = PGInput.WORKING_MODE_CONFIGURATION 187 171 188 # Declare UI widgets 172 self.widgets = {} 173 self.widgets["lblCmdLabel"] = QLabel( self.tr( "<b>Command name</b>")) 174 self.widgets["lblKeyValues"] = QLabel( self.tr( "<b>Associated combo</b>")) 175 189 self.cmdList = [] 190 self._updateCmdList__( data, self.cmdList) 191 176 192 # Build 177 self.main = QWidget() 178 gridLayout = QGridLayout() 179 self.main.setLayout( gridLayout) 180 181 row = 0 182 gridLayout.addWidget( self.widgets["lblCmdLabel"] , row, 0, Qt.AlignHCenter) 183 gridLayout.addWidget( self.widgets["lblKeyValues"], row, 1, Qt.AlignHCenter) 184 185 self.widgets["cmdList"] = QListWidget() 186 self._updateCmdList__( data, self.widgets["cmdList"]) 187 188 cmdNbr = self.widgets["cmdList"].count() 189 for cmdIndex in range( cmdNbr): 190 # Command name 191 row += 1 192 cmdItem = self.widgets["cmdList"].item( cmdIndex) 193 cmdNameWidget = QLabel( cmdItem.getCmdName()) 194 gridLayout.addWidget( cmdNameWidget, row, 0) 195 196 # Associated combo 197 text = "" 198 for keyId in cmdItem.getKeys(): 199 text += self.keyReference[ keyId] + " " 200 comboWidget = QLineEdit( text) 201 comboWidget.setReadOnly( True) 202 gridLayout.addWidget( comboWidget, row, 1) 203 204 # Change button 205 changeWidget = QPushButton( self.tr( "Change")) 206 gridLayout.addWidget( changeWidget, row, 2, Qt.AlignHCenter) 207 208 209 strechLayout = QVBoxLayout() 210 self.essai = QPushButton( self.tr( "Change"), self.main) 211 strechLayout.addWidget( self.essai) 212 strechLayout.addStretch(0) 213 gridLayout.addLayout( strechLayout, row+1, 0) 214 193 self.main = QWidget() 194 hBox = QHBoxLayout() 195 self.main.setLayout( hBox) 196 197 self.cmdView = QTableView( self.main) 198 self.cmdView.setAlternatingRowColors( True) 199 self.cmdModel = QStandardItemModel( 0, 2, self.main) 200 self.cmdView.setModel( self.cmdModel) 201 self.__updateUi__() 202 203 hBox.addWidget( self.cmdView) 204 205 vBox = QVBoxLayout() 206 vBox.addStretch(0) 207 btnChange = QPushButton( self.tr("Change combo for selected item")) 208 vBox.addWidget( btnChange) 209 btnValid = QPushButton( self.tr("Validate change")) 210 vBox.addWidget( btnValid) 211 vBox.addStretch(0) 212 213 hBox.addLayout( vBox) 214 215 self.connect( btnChange, SIGNAL( "clicked(bool)"), self.__onChangeCombo__ ) 216 self.connect( btnValid , SIGNAL( "clicked(bool)"), self.__onComboValid__ ) 217 218 215 219 return self.main 216 217 220 #---------------------------------------------------------------- 218 221 # Transfert data from 'model' to 'UI' … … 225 228 # @param self instance class 226 229 def _deinit_ui( self ): 227 pass230 self.workingMode = PGInput.WORKING_MODE_ACQUISITION 228 231 229 232 #---------------------------------------------------------------- … … 245 248 # @param self instance class 246 249 def _update_provider_data( self, data ): 247 list = self.widgets["cmdList"] 248 list.clear() 249 self._updateCmdList__( data, list) 250 250 self.cmdList = [] 251 self._updateCmdList__( data, self.cmdList) 252 self.__updateUi__() 251 253 #---------------------------------------------------------------- 252 254 # Method invoked by the PGPluginClient parent on DataRequest message() … … 331 333 # @param keyTable table of key pressed 332 334 def processKey( self, keyTable): 333 index = 0 334 keyTableLength = len( keyTable) 335 if self.keyMap.has_key( keyTableLength): 336 keyMap = self.keyMap[keyTableLength] 337 for keyIndex in range(keyTableLength): 338 key = keyTable[keyIndex] 339 if keyMap.has_key( key): 340 keyMap = keyMap[key] 341 else: 342 return 343 344 print keyMap 345 335 if self.workingMode == PGInput.WORKING_MODE_COMBO_EDITION: 336 if len( keyTable) ==1: 337 self.cmdItem.addKey( keyTable[0]) 338 self.__updateUi__() 339 340 elif self.workingMode == PGInput.WORKING_MODE_CONFIGURATION: 341 pass 342 343 else: 344 index = 0 345 keyTableLength = len( keyTable) 346 if self.keyMap.has_key( keyTableLength): 347 keyMap = self.keyMap[keyTableLength] 348 for keyIndex in range(keyTableLength): 349 key = keyTable[keyIndex] 350 if keyMap.has_key( key): 351 keyMap = keyMap[key] 352 else: 353 return 346 354 # In fact the key is the event to send to a plug. 347 355 opCode = PGPluginClient.OPCODE_DATA_VALUE … … 353 361 354 362 355 def AddKeyReference( self, keyId, keyName):363 def addKeyReference( self, keyId, keyName): 356 364 if not ( keyId in self.keyReference.keys()): 357 365 self.keyReference[keyId] = keyName … … 361 369 #================================================================ 362 370 def _updateCmdList__( self, data, list): 363 rendered_datas = self.get_list_data_to_render_for() 371 rendered_datas = self.get_list_data_to_render_for() 364 372 for providerName, providerInfoList in rendered_datas.iteritems(): 365 373 for thisProviderInfo in providerInfoList: 366 374 for providerInfo in data["all_providers_data"]: 367 375 if ( thisProviderInfo.id == providerInfo.id) and providerInfo.visible: 368 cmdItem = CmdListItem( thisProviderInfo) 369 list.addItem( cmdItem) 370 cmdId = cmdItem.getCmdId() 376 cmdItem = CmdItem( thisProviderInfo) 377 cmdId = cmdItem.getId() 371 378 if cmdId in self.keyConfig.keys(): 372 379 cmdItem.setKeys( self.keyConfig[cmdId]) 380 list.append( cmdItem) 373 381 break 382 383 def __updateUi__( self): 384 self.cmdModel.clear() 385 self.cmdModel.setHorizontalHeaderLabels( [ self.tr("Command name"), self.tr("Combo")]) 386 row = 0 387 for cmdItem in self.cmdList: 388 self.cmdModel.appendRow( [ cmdItem.getName(), cmdItem.getKeys()]) 389 self.cmdModel.setVerticalHeaderItem( row, QStandardItem()) 390 row += 1 391 self.cmdView.resizeColumnsToContents() 392 393 def __onChangeCombo__( self, clicked): 394 # We need to get the key pressed 395 indexes = self.cmdView.selectedIndexes() 396 if len(indexes) == 1: 397 index = indexes[0] 398 if index.column() == 1: 399 self.workingMode = PGInput.WORKING_MODE_COMBO_EDITION 400 self.row = index.row() 401 self.cmdItem = self.cmdList[self.row] 402 print "Enter combo edition" 403 404 def __onComboValid__( self, clicked): 405 self.workingMode == PGInput.WORKING_MODE_CONFIGURATION
Note: See TracChangeset
for help on using the changeset viewer.
