#101 & #121 kodetabell-innstillings-popup og db/DB->database i GUI
Ny modul --> autentiseringstavle eller subtraktorkoder --> popup-dialog:
Dialog kan ikke lukkes eller avbrytes fordi __init__ må returnere None (ikke dialogcode).
Det går an å løse ved at AuthenticationBoardModule og SubtractorcodesModule selv kaller dialogen, men da blir
det kodeduplisering (nå er det code_table_base som kaller dialogen).
Kunne ha brukt __new__ for å returnere dialogcode, men da returneres ikke klasseinstansen.
Så jeg ser ingen annen god løsning enn at brukeren selv har satt seg i denne posisjonen ved å velge en av disse modulene,
brukeren får heller bare opprette modulen og slette den igjen (laget en lapp på sletting da dette ikke er implementert).
Det var jo heller ingen vei tilbake før etter å ha valgt modulen.
"db" og "DB" er endret til "database" i GUI.
Merge request reports
Activity
added 2 commits
added 1 commit
- 54b37a35 - #101 Minste mellomrom-intervall er satt til 0
added 1 commit
- 0ff60d3a - Autentiseringstavle og subtraktorkoder har minimum to koder
- Resolved by Anders H. Rebner
Først: Det funker, kult!
Jeg foreslår å flytte "konfigurer fra popup" koden ut i en separat funksjon, og heller kalle på den som under (siste
NOTE
i kodesnutten). Da vil en kunne håndtere dialog_codes, og viktigere: konfigurasjonen kan kjøres uavhengig av init, foreks i fremtiden om vi vil la bruker kunne konfiguere disse valgene ved å høyreklikke på modul / i modul liste.(For meg virker det litt rart at constructoren til klassen lager popup, men jeg vet ikke helt hvorfor...)
Pseudo-code basert på soi_workspace_module.py sin new_module funksjon
# user clicks "new module" dialog = NewModuleDialog dialog_code = dialog.show() if dialog_code == ACCEPT: desired_module = dialog.module_list.currentItem() # ... fetch chosen options elif dialog_code == REJECT: # user rejected, give up return # desired_module is a class, we need to instantiate it # NOTE in the current implementation the popup occurs here as part of __init__ # I propose the module is instead created with default values just like it was # before module_instance = desired_module() # NOTE I propose we instead invoke it as a separate step outside of __init__ # here dialog_code = module_instance.popup_configuration() if dialog_code == ACCEPT: soi.add_module(module_instance) elif dialog_code == REJECT: # user rejected, give up return
Ser da for meg at
pop_configuration
kunne sett slik ut:def popup_configuration(self): # send self so it can fetch currently chosen options by itself # it's already closely tied to the class so it's not so bad... dialog = CodeTableSettings(self) dialog_code = dialog.show() if dialog_code == ACCEPT: self.property1 = dialog.list_widget.currentItem() # and so on.... # return dialog_code so caller can use it if he wants to return dialog_code
- Resolved by Thomas Holene Løkkeborg
- Resolved by Thomas Holene Løkkeborg
added 1 commit
- 3cd8dace - #10 CodeTableBase sendes som parameter til CodeTableSettings
added 1 commit
- e766d00e - #101 popup bruker ikke lengre subklasse-konstanter