Ignore:
Timestamp:
02/07/10 21:34:36 (2 years ago)
Author:
tolteque
Message:

o LoPlug?

  • PGInput uses QTableView
  • Start key acquisition
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/loplug/plugins/input/pginput.py

    r1671 r1672  
    2424from pgpluginclient   import * 
    2525 
    26  
    27  
    28 class CmdListItem( QListWidgetItem): 
     26class CmdxxxItem( QStandardItem): 
     27  def __init__( self, name): 
     28    QStandardItem.__init__( self, name) 
     29 
     30 
     31class CmdItem(): 
    2932  def __init__( self, providerInfo): 
    3033    self.keys = [] 
    3134    self.__providerInfo__ = providerInfo 
    3235    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): 
    4253    return self.__providerInfo__.id 
    43   def setKeys( self, keys): 
    44     self.__keys__ = keys 
    45   def getKeys( self): 
    46     return self.__keys__ 
    4754     
    4855#---------------------------------------------------------------- 
     
    6168    return False 
    6269 
    63   print 'MessageName:',event.MessageName 
    64   print 'Message:',event.Message 
    65   print 'Time:',event.Time 
    66   print 'Window:',event.Window 
    67   print 'WindowName:',event.WindowName 
    68   print 'Ascii:', event.Ascii, chr(event.Ascii) 
    69   print 'Key:', event.Key 
    70   print 'KeyID:', event.KeyID 
    71   print 'ScanCode:', event.ScanCode 
    72   print 'Extended:', event.Extended 
    73   print 'Injected:', event.Injected 
    74   print 'Alt', event.Alt 
    75   print 'Transition', event.Transition 
    76   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 '---' 
    7784 
    7885  key = event.KeyID 
     
    8491    if not ( key in keyPressed): 
    8592      keyPressed.append( key) 
     93      PGInput.addKeyReference( pgInputInstance, key, event.Key) 
    8694      PGInput.processKey( pgInputInstance, keyPressed) 
    87       PGInput.AddKeyReference( key, event.Key) 
    8895       
    8996  return True 
     
    101108## Main class in python to manage connection with server 
    102109class PGInput(PGPluginClient): 
     110 
     111  WORKING_MODE_COMBO_EDITION = "COMBO_EDITION" 
     112  WORKING_MODE_CONFIGURATION = "CONFIGURATION" 
     113  WORKING_MODE_NOMINAL       = "NOMINAL" 
     114 
    103115  infos = { "description"       : "Input plugin" ,  
    104116            "version"           : 0.1, 
    105117            "icon"              : "input.jpg" 
    106118          } 
     119           
     120  keyReference = { 162: "LControl" 
     121                 , 48 : "0" 
     122                 , 49 : "1" 
     123                 } 
    107124 
    108125  # This is for test. In final version, it will be read from config and buid by configurator 
     
    130147    global pgInputInstance 
    131148    pgInputInstance = self 
    132     self.essai = None 
     149 
     150    self.row         = 0 
     151    self.workingMode = PGInput.WORKING_MODE_NOMINAL 
    133152#================================================================ 
    134153# OVERRIDDEN METHODS 
     
    148167    # Init variable which are part or issued of the config. 
    149168    self.requests     = {}    #- Discard all the requests from every plug 
    150     self.keyReference = { 162: "LControl" 
    151                         , 48 : "0" 
    152                         , 49 : "1" 
    153                         } 
    154169#---------------------------------------------------------------- 
    155170  # To load the settings 
     
    169184  # @return widget 
    170185  def _get_config_widget( self, data): 
     186    self.workingMode = PGInput.WORKING_MODE_CONFIGURATION 
     187     
    171188    # 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 
    176192    # 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     
    215219    return self.main 
    216      
    217220#---------------------------------------------------------------- 
    218221  # Transfert data from 'model' to 'UI' 
     
    225228  # @param self instance class 
    226229  def _deinit_ui( self ): 
    227     pass 
     230    self.workingMode = PGInput.WORKING_MODE_ACQUISITION 
    228231 
    229232#---------------------------------------------------------------- 
     
    245248  # @param self instance class 
    246249  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__() 
    251253#---------------------------------------------------------------- 
    252254  # Method invoked by the PGPluginClient parent on DataRequest message() 
     
    331333  # @param keyTable                  table of key pressed 
    332334  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 
    346354      # In fact the key is the event to send to a plug. 
    347355      opCode = PGPluginClient.OPCODE_DATA_VALUE 
     
    353361 
    354362       
    355   def AddKeyReference( self, keyId, keyName): 
     363  def addKeyReference( self, keyId, keyName): 
    356364    if not ( keyId in self.keyReference.keys()): 
    357365      self.keyReference[keyId] = keyName 
     
    361369#================================================================ 
    362370  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() 
    364372    for providerName, providerInfoList in rendered_datas.iteritems(): 
    365373      for thisProviderInfo in providerInfoList: 
    366374        for providerInfo in data["all_providers_data"]: 
    367375          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() 
    371378            if cmdId in self.keyConfig.keys(): 
    372379              cmdItem.setKeys( self.keyConfig[cmdId]) 
     380            list.append( cmdItem) 
    373381            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.