#38 #39 Eksporter og importer SOI til/fra fil
Module_base:
- Har nå klasse-variabelen
type
. Denne brukes ved soi-import for å lage riktig modul-objekt, og må settes/overrides av alle moduler. - Har nå
__init__
som kaster error hvistype
ikke er definert hos modulene (som arver). Det betyr at modulene må definereself.type
og deretter kalleModuleBase.__init__(self)
. Det er ikke så pent, men@abstractproperty
fungerer heller ikke som ønsket for dette. - Har nå
get_data
som brukes ved eksport av SOI (gir fra seg et objekt som skal tilhøre key'en"data"
i serialiseringsformatet.
Main_window:
- Toppmeny-valg for eksportering av SOI.
- Endret
SOI->Ny SOI
tilSOI->Ny
fordi ingen andre alternativer har medSOI
. - Funksjonen
try_export_soi
som sjekker om nåværende tab inneholder SOI( åpner dialog hvis ikke) og eksporterer. - Funksjonen
import_soi
som henter fil, lager SOI-objekt og åpner SOIWorkspaceWidget i ny tab. - Ignorerer pylint R0914 og R0915 "Too many local variables" og "Too many statements" i funksjonen
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. - Database lages ikke lengre i main dersom den ikke finnes fordi dette gjøres når timer settes i
__init__
.
Laget filen serialize_export_import_soi.py:
- Funksjonene
serialize_soi
,export_soi
ogimport_soi
. - Per nå er komprimert utgave i .txt-fil og ukomprimert i .json-fil.
SOIWorkspaceWidget:
-
init
har nåsoi=None
som parameter for å kunne sende med SOI-objekt ved åpning av SOI fra fil.
soi:
- La til sjekk for placement_strategy "manual" i
reorganize
slik at soi ikke flytter på modulene i testen.
.gitignore:
- Ignorerer genererte serialiserings-filer. "SOI_ * _ * _ * _ *.txt" (SOI_tittel_YYYY_mm_dd) ser litt dumt ut, hadde tenkt \d{x} eller [0-9]x der x er antall ints, men .gitignore har visst dette patternet(?): https://en.wikipedia.org/wiki/Glob_%28programming%29
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
.
Edited by Anders H. Rebner