Remember settings across multiple invocations of the "add card" widget.

master
Pacman Ghost 7 years ago
parent a784b963e6
commit 85ae68e2ae
  1. 33
      add_card_widget.py

@ -16,6 +16,9 @@ import globals
class AddCardWidget( QWidget ) :
"""Allow the user to select an ASL card, based on nationality & card type."""
last_nationality = -1 # nb: the last nationality selected
last_card_type = db.TAGTYPE_VEHICLE # nb: the last card type selected
# define our signals
accepted_signal = pyqtSignal( AslCard , name="accepted" )
cancelled_signal = pyqtSignal( name="cancelled" )
@ -42,8 +45,11 @@ class AddCardWidget( QWidget ) :
for rb in [self.rb_vehicles,self.rb_ordnance] :
rb.clicked.connect( self.on_card_type_changed )
# select the initial nationality (this will load the rest of the widget)
self.cbo_nationality.setCurrentIndex( 0 )
self.on_nationality_changed( self.cbo_nationality.itemText(0) )
if AddCardWidget.last_nationality >= 0 :
self.cbo_nationality.setCurrentIndex( AddCardWidget.last_nationality )
else :
self.cbo_nationality.setCurrentIndex( 0 )
self.on_nationality_changed( self.cbo_nationality.currentText() )
def _reload_cards( self , focus ) :
"""Reload the available cards."""
@ -59,7 +65,6 @@ class AddCardWidget( QWidget ) :
cards = globals.cards[ self.cbo_nationality.currentText() ]
cards = cards.get( card_type )
if cards is None :
assert False
return
# prepare for filtering
def filter_val( str ) :
@ -84,6 +89,8 @@ class AddCardWidget( QWidget ) :
item = self.lb_cards.currentItem()
card = item.data(Qt.UserRole) if item else None
self.accepted_signal.emit( card )
AddCardWidget.last_nationality = self.cbo_nationality.currentIndex()
AddCardWidget.last_card_type = db.TAGTYPE_VEHICLE if self.rb_vehicles.isChecked() else db.TAGTYPE_ORDNANCE
def on_cancel( self ) :
"""Cancel the widget."""
@ -95,19 +102,19 @@ class AddCardWidget( QWidget ) :
cards = globals.cards[ val ]
self.lb_cards.clear()
# update the vehicle/ordnance radio boxes
self.rb_vehicles.setEnabled( db.TAGTYPE_VEHICLE in cards )
self.rb_ordnance.setEnabled( db.TAGTYPE_ORDNANCE in cards )
if self.rb_vehicles.isChecked() :
curr_rb = self.rb_vehicles
if not self.rb_vehicles.isEnabled() :
self.rb_ordnance.setChecked( True )
elif self.rb_ordnance.isChecked() :
curr_rb = self.rb_ordnance
if not self.rb_ordnance.isEnabled() :
self.rb_vehicles.setChecked( True )
else :
curr_rb = None
self.rb_vehicles.setEnabled( db.TAGTYPE_VEHICLE in cards )
self.rb_ordnance.setEnabled( db.TAGTYPE_ORDNANCE in cards )
if curr_rb is None or not curr_rb.isEnabled() :
for rb in [self.rb_vehicles,self.rb_ordnance] :
if rb.isEnabled() :
rb.setChecked( True )
break
if AddCardWidget.last_card_type == db.TAGTYPE_VEHICLE and self.rb_vehicles.isEnabled() :
self.rb_vehicles.setChecked( True )
elif self.rb_ordnance.isEnabled() :
self.rb_ordnance.setChecked( True )
# reload the cards
self.le_filter.setText( "" )
self._reload_cards( True )

Loading…
Cancel
Save