#38 #39 Eksporter og importer SOI til/fra fil
Compare changes
Files
15+ 10
− 0
@@ -5,6 +5,12 @@ from abc import ABC
@@ -17,6 +23,10 @@ class ModuleBase(ABC):
Module_base:
type
. Denne brukes ved soi-import for å lage riktig modul-objekt, og må settes/overrides av alle moduler.__init__
som kaster error hvis type
ikke er definert hos modulene (som arver). Det betyr at modulene må definere self.type
og deretter kalle ModuleBase.__init__(self)
. Det er ikke så pent, men @abstractproperty
fungerer heller ikke som ønsket for dette.get_data
som brukes ved eksport av SOI (gir fra seg et objekt som skal tilhøre key'en "data"
i serialiseringsformatet.Main_window:
SOI->Ny SOI
til SOI->Ny
fordi ingen andre alternativer har med SOI
.try_export_soi
som sjekker om nåværende tab inneholder SOI( åpner dialog hvis ikke) og eksporterer.import_soi
som henter fil, lager SOI-objekt og åpner SOIWorkspaceWidget i ny tab.setup_menubar
. Hva tenker vi om dette? Jeg tenkte å ignorere fordi det blir feil å øke lovlig antall variable og statements for alle filer, samt at alt i denne funksjonen handler om toppmeny, så den er ikke særlig enkel å dele opp.__init__
.Laget filen serialize_export_import_soi.py:
serialize_soi
, export_soi
og import_soi
.SOIWorkspaceWidget:
init
har nå soi=None
som parameter for å kunne sende med SOI-objekt ved åpning av SOI fra fil.soi:
reorganize
slik at soi ikke flytter på modulene i testen..gitignore:
Key'en "pri" fra planlagt serialiserings-format brukes ikke fordi funksjonalitet for dette ikke er implementert, og pri gjenspeiles nå gjennom modulrekkefølgen.
Jeg har gjort noen småendringer på serialiserings-formatet slik at det matcher initial_modules som brukes av SOIWorkspaceWidget. Endringene gjelder "modules" og "attachments", og er som følger:
name, page og pos{"x": .., "y": ..} er flyttet inn i meta, og content og size som var i data er flyttet ut som vist nedenfor:
"modules" [
{
"type": ..,
"data": ..,
"size": {"width": .., "height": ..},
"meta": {"x": .., "y": .., "page": .., "name": ..} # meta er relevant for SOI, ikke for modulen.
},
]
Hele serialiserings-formatet kan enkelt ses i test_serialize_export_import.py
sin SCHEMA
.