From 63ea6543beb441d0c2482fda87959d5e1947ec5f Mon Sep 17 00:00:00 2001 From: Mateusz Skoczek Date: Thu, 6 Aug 2020 18:40:38 +0200 Subject: [PATCH] 4.0 Alpha (Build 20211) --- changelog-UC.txt | 9 +- default-configs/config.cfg | 3 +- default-configs/style.cfg | 17 +- generator.pyw | 470 ++++++++++++++++++++----------------- 4 files changed, 280 insertions(+), 219 deletions(-) diff --git a/changelog-UC.txt b/changelog-UC.txt index d1e8a5c..f2999dc 100644 --- a/changelog-UC.txt +++ b/changelog-UC.txt @@ -72,4 +72,11 @@ - Zastosowanie systemu styli do interfejsu - Zastosowanie systemu zapisywania plików konfiguracyjnych i formatu w folderze %appdata% - Usunięcie konsoli w tle -- Wiele mniejszych zmian \ No newline at end of file +- Wiele mniejszych zmian + +4.0 Alpha (Build 20211) +- Dodanie filtrowania dozwolonych znaków separatorów +- Naprawienie kilku mniejszych bugów: nieresetowanie pól po błędzie podczas zapisu, dodanie do listy dozwolonych znaków +- Dodanie instrukcji w karcie "FORMAT DANYCH" +- Usprawnienia w kodzie +- Naprawiono przyciski radiobutton \ No newline at end of file diff --git a/default-configs/config.cfg b/default-configs/config.cfg index 830a432..c9a0af1 100644 --- a/default-configs/config.cfg +++ b/default-configs/config.cfg @@ -1 +1,2 @@ -secret = entersecretstringhere \ No newline at end of file +secret = entersecretstringhere +allowedCharactersInSeparator = ['`', '~', '!', '@', '#', '$', '%', '^', '&', '(', ')', '-', '_', '=', '+', '[', ']', '\', '|', ';', ':', ''', '"', ',', '<', '.', '>', '/', '?', ' '] \ No newline at end of file diff --git a/default-configs/style.cfg b/default-configs/style.cfg index f1ff54e..ca0a342 100644 --- a/default-configs/style.cfg +++ b/default-configs/style.cfg @@ -69,4 +69,19 @@ label2BG = #21242D label2TextColor = #C0C0C0 label3BG = #21242D label3TextColor = #C0C0C0 -label3Anchor = w \ No newline at end of file +label3Anchor = w +radiobutton1IndicatorBackground = #21242D +loadingListPadX = 5 +EPOSTypeStudentRadiobuttonPadY = 5 +EPOSTypeStudentRadiobuttonWidth = 20 +EPOSTypeTeacherRadiobuttonPadY = 5 +EPOSTypeTeacherRadiobuttonWidth = 20 +EPOSPersonSeparatorEntryWidth = 56 +EPOSRowSeparatorEntryWidth = 56 +EPOSDataSeparatorTextWidth = 42 +EPOSDataSeparatorTextHeight = 17 +EPDataLocalizationPadX = 5 +EPDataLocalizationPadY = 5 +label3BG = #21242D +label3TextColor = #C0C0C0 +label3Font = Segoe UI;6 \ No newline at end of file diff --git a/generator.pyw b/generator.pyw index 37f2a77..ae7ca8c 100644 --- a/generator.pyw +++ b/generator.pyw @@ -100,11 +100,10 @@ def MSG(code, terminate, *optionalInfo): # ------------------------- # Sprawdzanie katalogu programu w APPDATA # ------------------------- # appdata = PT.Path.home() / 'Appdata/Roaming' -""" + #TODO SU.rmtree(str(appdata) + '/Generator CSV') #TODO -""" if 'Generator CSV' not in [x for x in OS.listdir(appdata)]: try: OS.mkdir(str(appdata) + '/Generator CSV') @@ -145,7 +144,23 @@ class CFG: return [True, content] else: class functions: - pass + def string(self, var): + if var in list(content.keys()): + return [True] + else: + return [False, 'Brak danych - klucz: %s' % var] + def array(self, var): + if var in list(content.keys()): + new_contentVar = (content[var])[1:-1].split(', ') + xnew_contentVar = [] + for x in new_contentVar: + xnew_contentVar.append(x[1:-1]) + content[var] = xnew_contentVar + else: + return [False, 'Brak danych - klucz: %s' % var] + functions = functions() + functions.string('secret') + functions.array('allowedCharactersInSeparator') return [True, content] def R(self): @@ -469,6 +484,51 @@ class GUI: if not check[0]: return check check = functions.fromArray('label3Anchor', ['center', 'nw', 'n', 'ne', 'w', 'e', 'sw', 's', 'se']) + if not check[0]: + return check + check = functions.color('radiobutton1IndicatorBackground') + if not check[0]: + return check + check = functions.integer('loadingListPadX') + if not check[0]: + return check + check = functions.integer('EPOSTypeStudentRadiobuttonPadY') + if not check[0]: + return check + check = functions.integer('EPOSTypeStudentRadiobuttonWidth') + if not check[0]: + return check + check = functions.integer('EPOSTypeTeacherRadiobuttonWidth') + if not check[0]: + return check + check = functions.integer('EPOSTypeTeacherRadiobuttonPadY') + if not check[0]: + return check + check = functions.integer('EPOSPersonSeparatorEntryWidth') + if not check[0]: + return check + check = functions.integer('EPOSRowSeparatorEntryWidth') + if not check[0]: + return check + check = functions.integer('EPOSDataSeparatorTextWidth') + if not check[0]: + return check + check = functions.integer('EPOSDataSeparatorTextHeight') + if not check[0]: + return check + check = functions.integer('EPDataLocalizationPadX') + if not check[0]: + return check + check = functions.integer('EPDataLocalizationPadY') + if not check[0]: + return check + check = functions.color('label3BG') + if not check[0]: + return check + check = functions.color('label3TextColor') + if not check[0]: + return check + check = functions.font('label3Font') if not check[0]: return check return [True, content] @@ -520,14 +580,27 @@ class FMT: return [True] else: return [False, 'Brak danych - klucz: %s' % var] - def string(self, var): + def separator_string(self, var): if var in list(content.keys()): + allowedCharactersInSeparator = CFG.R()['allowedCharactersInSeparator'] + check = content[var] + check = check.strip('') + for x in check: + if x not in allowedCharactersInSeparator: + return [False, 'Niepoprawne dane - klucz: %s' % var] return [True] else: return [False, 'Brak danych - klucz: %s' % var] - def array(self, var): + def separator_array(self, var): if var in list(content.keys()): - content[var] = 'I'.join(content[var]) + allowedCharactersInSeparator = CFG.R()['allowedCharactersInSeparator'] + check = content[var] + for x in check: + x = x.strip('') + for y in x: + if y not in allowedCharactersInSeparator: + return [False, 'Niepoprawne dane - klucz: %s' % var] + content[var] = str(content[var]) return [True] else: return [False, 'Brak danych - klucz: %s' % var] @@ -541,13 +614,13 @@ class FMT: check = functions.bool('student') if not check[0]: return check - check = functions.string('personSeparator') + check = functions.separator_string('personSeparator') if not check[0]: return check - check = functions.string('rowSeparator') + check = functions.separator_string('rowSeparator') if not check[0]: return check - check = functions.array('dataSeparators') + check = functions.separator_array('dataSeparators') if not check[0]: return check check = functions.integer('loginRow') @@ -596,14 +669,31 @@ class FMT: return [True] else: return [False, 'Brak danych - klucz: %s' % var] - def string(self, var): + def separator_string(self, var): if var in list(content.keys()): + allowedCharactersInSeparator = CFG.R()['allowedCharactersInSeparator'] + check = content[var] + check = check.strip('') + for x in check: + if x not in allowedCharactersInSeparator: + return [False, 'Niepoprawne dane - klucz: %s' % var] return [True] else: return [False, 'Brak danych - klucz: %s' % var] - def array(self, var): + def separator_array(self, var): if var in list(content.keys()): - content[var] = content[var].split('I') + allowedCharactersInSeparator = CFG.R()['allowedCharactersInSeparator'] + new_contentVar = (content[var])[1:-1].split(', ') + xnew_contentVar = [] + for x in new_contentVar: + xnew_contentVar.append(x[1:-1]) + check = xnew_contentVar + for x in check: + x = x.strip('') + for y in x: + if y not in allowedCharactersInSeparator: + return [False, 'Niepoprawne dane - klucz: %s' % var] + content[var] = xnew_contentVar return [True] else: return [False, 'Brak danych - klucz: %s' % var] @@ -622,13 +712,13 @@ class FMT: check = functions.bool('student') if not check[0]: return check - check = functions.string('personSeparator') + check = functions.separator_string('personSeparator') if not check[0]: return check - check = functions.string('rowSeparator') + check = functions.separator_string('rowSeparator') if not check[0]: return check - check = functions.array('dataSeparators') + check = functions.separator_array('dataSeparators') if not check[0]: return check check = functions.integer('loginRow') @@ -716,8 +806,10 @@ class FMT: with CD.open(str(appdata) + '/Generator CSV/format-presets/%s.fmt' % preset, 'w', 'utf-8') as file: for x in contentToSave: file.write(x + ' = ' + content[x] + '\n') + return True else: MSG('E0006', False, contentCheckingOutput[1]) + return False FMT = FMT() @@ -797,6 +889,13 @@ def window(): "width": GUI.R()['label2Width'], }, }, + "label3.TLabel": { + "configure": { + "background": GUI.R()['label3BG'], + "foreground": GUI.R()['label3TextColor'], + "font" : GUI.R()['label3Font'], + }, + }, "combobox1.TCombobox": { "configure": { "arrowcolor": GUI.R()['combobox1ArrowColor'], @@ -832,12 +931,6 @@ def window(): "background": GUI.R()['spinbox1ButtonColor'] }, }, - 'radiobutton1.TRadiobutton': { - "configure": { - "background": GUI.R()['radiobutton1Background'], - "foreground": GUI.R()['radiobutton1TextColor'], - }, - }, "entry1.TEntry": { "configure": { "fieldbackground": GUI.R()['entry1FieldBackground'], @@ -937,7 +1030,7 @@ def window(): loadingList.option_add("*TCombobox*Listbox.foreground", GUI.R()['combobox1ListBoxForeground']) loadingList.option_add("*TCombobox*Listbox.selectBackground", GUI.R()['combobox1ListBoxSelectBackground']) loadingList.option_add("*TCombobox*Listbox.selectForeground", GUI.R()['combobox1ListBoxSelectForeground']) - loadingList.pack(side = 'left', padx = 5) + loadingList.pack(side = 'left', padx = GUI.R()['loadingListPadX']) loadingList['values'] = tuple(FMT.getList()) # Przycisk "WCZYTAJ" @@ -961,12 +1054,9 @@ def window(): formatFileContent = FMT.R(loadingList.get()) loadingList['state'] = TK.DISABLED loadingButton['state'] = TK.DISABLED + EPOSTypeVar.set(formatFileContent['student']) EPOSTypeStudentRadiobutton['state'] = TK.NORMAL EPOSTypeTeacherRadiobutton['state'] = TK.NORMAL - if formatFileContent['student']: - EPOSTypeVar.set('s') - else: - EPOSTypeVar.set('t') EPOSPersonSeparatorEntry['state'] = TK.NORMAL EPOSPersonSeparatorVar.set(formatFileContent['personSeparator']) EPOSRowSeparatorEntry['state'] = TK.NORMAL @@ -1044,26 +1134,33 @@ def window(): EPOSTypeLabel.grid(row = 0, column = 0, pady = 5, sticky = 'w') # Typ osoby - Radiobutton - EPOSTypeVar = TK.StringVar() + EPOSTypeVar = TK.BooleanVar(value = True) - EPOSTypeStudentRadiobutton = TKttk.Radiobutton(editingPresetOSFrame) - EPOSTypeStudentRadiobutton.config(style = 'radiobutton1.TRadiobutton') + EPOSTypeStudentRadiobutton = TK.Radiobutton(editingPresetOSFrame) + EPOSTypeStudentRadiobutton.config(background = GUI.R()['radiobutton1Background']) + EPOSTypeStudentRadiobutton.config(foreground = GUI.R()['radiobutton1TextColor']) + EPOSTypeStudentRadiobutton.config(selectcolor = GUI.R()['radiobutton1IndicatorBackground']) + EPOSTypeStudentRadiobutton.config(activebackground = GUI.R()['radiobutton1Background']) + EPOSTypeStudentRadiobutton.config(activeforeground = GUI.R()['radiobutton1TextColor']) EPOSTypeStudentRadiobutton.config(variable = EPOSTypeVar) - EPOSTypeStudentRadiobutton.config(value = 's') + EPOSTypeStudentRadiobutton.config(value = True) EPOSTypeStudentRadiobutton.config(state = TK.DISABLED) - EPOSTypeStudentRadiobutton.config(width = 20) + EPOSTypeStudentRadiobutton.config(width = GUI.R()['EPOSTypeStudentRadiobuttonWidth']) EPOSTypeStudentRadiobutton.config(text = 'Uczniowie') + EPOSTypeStudentRadiobutton.grid(row = 0, column = 1, pady = GUI.R()['EPOSTypeStudentRadiobuttonPadY']) - EPOSTypeTeacherRadiobutton = TKttk.Radiobutton(editingPresetOSFrame) - EPOSTypeTeacherRadiobutton.config(style = 'radiobutton1.TRadiobutton') + EPOSTypeTeacherRadiobutton = TK.Radiobutton(editingPresetOSFrame) + EPOSTypeTeacherRadiobutton.config(background = GUI.R()['radiobutton1Background']) + EPOSTypeTeacherRadiobutton.config(foreground = GUI.R()['radiobutton1TextColor']) + EPOSTypeTeacherRadiobutton.config(selectcolor = GUI.R()['radiobutton1IndicatorBackground']) + EPOSTypeTeacherRadiobutton.config(activebackground = GUI.R()['radiobutton1Background']) + EPOSTypeTeacherRadiobutton.config(activeforeground = GUI.R()['radiobutton1TextColor']) EPOSTypeTeacherRadiobutton.config(variable = EPOSTypeVar) - EPOSTypeTeacherRadiobutton.config(value = 't') + EPOSTypeTeacherRadiobutton.config(value = False) EPOSTypeTeacherRadiobutton.config(state = TK.DISABLED) - EPOSTypeTeacherRadiobutton.config(width = 20) + EPOSTypeTeacherRadiobutton.config(width = GUI.R()['EPOSTypeTeacherRadiobuttonWidth']) EPOSTypeTeacherRadiobutton.config(text = 'Nauczyciele') - - EPOSTypeStudentRadiobutton.grid(row = 0, column = 1, pady = 5) - EPOSTypeTeacherRadiobutton.grid(row = 0, column = 2, pady = 5) + EPOSTypeTeacherRadiobutton.grid(row = 0, column = 2, pady = GUI.R()['EPOSTypeTeacherRadiobuttonPadY']) # "Separator pomiędzy osobami" EPOSPersonSeparatorLabel = TKttk.Label(editingPresetOSFrame) @@ -1077,7 +1174,7 @@ def window(): EPOSPersonSeparatorEntry.config(style = 'entry1.TEntry') EPOSPersonSeparatorEntry.config(textvariable = EPOSPersonSeparatorVar) EPOSPersonSeparatorEntry.config(state = TK.DISABLED) - EPOSPersonSeparatorEntry.config(width = 56) + EPOSPersonSeparatorEntry.config(width = GUI.R()['EPOSPersonSeparatorEntryWidth']) EPOSPersonSeparatorEntry.grid(row = 1, column = 1, columnspan = 2, padx = 5, pady = 5) # "Separator pomiędzy wierszami" @@ -1092,7 +1189,7 @@ def window(): EPOSRowSeparatorEntry.config(style = 'entry1.TEntry') EPOSRowSeparatorEntry.config(textvariable = EPOSRowSeparatorVar) EPOSRowSeparatorEntry.config(state = TK.DISABLED) - EPOSRowSeparatorEntry.config(width = 56) + EPOSRowSeparatorEntry.config(width = GUI.R()['EPOSRowSeparatorEntryWidth']) EPOSRowSeparatorEntry.grid(row = 2, column = 1, columnspan = 2, padx = 5, pady = 5) # "Separatory pomiędzy danymi" @@ -1104,8 +1201,8 @@ def window(): # Entry - Separator pomiedzy wierszami EPOSDataSeparatorText = TK.Text(editingPresetOSFrame) EPOSDataSeparatorText.config(state = TK.DISABLED) - EPOSDataSeparatorText.config(width = 42) - EPOSDataSeparatorText.config(height = 19) + EPOSDataSeparatorText.config(width = GUI.R()['EPOSDataSeparatorTextWidth']) + EPOSDataSeparatorText.config(height = GUI.R()['EPOSDataSeparatorTextHeight']) EPOSDataSeparatorText.config(background = GUI.R()['text1Background']) EPOSDataSeparatorText.config(foreground = GUI.R()['text1TextColor']) EPOSDataSeparatorText.config(relief = GUI.R()['text1Relief']) @@ -1114,7 +1211,7 @@ def window(): # " - nowa linia | wciśnięcie przycisku ENTER | \n" EPOSSeparatorEnterInfoLabel = TKttk.Label(editingPresetOSFrame) EPOSSeparatorEnterInfoLabel.config(style = 'label1.TLabel') - EPOSSeparatorEnterInfoLabel.config(text = r' - nowa linia | wciśnięcie przycisku ENTER | \n') + EPOSSeparatorEnterInfoLabel.config(text = (r' - nowa linia | wciśnięcie przycisku ENTER | \n' + '\n' + 'Niedozwolone znaki: litery, cyfry, *')) EPOSSeparatorEnterInfoLabel.grid(row = 4, column = 1, columnspan = 2) ############### @@ -1140,19 +1237,19 @@ def window(): editingPresetDataLocalizationC1Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame) editingPresetDataLocalizationC1Label.config(style = 'label1.TLabel') editingPresetDataLocalizationC1Label.config(text = 'Wiersz') - editingPresetDataLocalizationC1Label.grid(row = 0, column = 1, padx = 5, pady = 5) + editingPresetDataLocalizationC1Label.grid(row = 0, column = 1, padx = GUI.R()['EPDataLocalizationPadX'], pady = GUI.R()['EPDataLocalizationPadY']) # C2 - "Pozycja w wierszu" editingPresetDataLocalizationC2Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame) editingPresetDataLocalizationC2Label.config(style = 'label1.TLabel') editingPresetDataLocalizationC2Label.config(text = 'Pozycja w wierszu') - editingPresetDataLocalizationC2Label.grid(row = 0, column = 2, padx = 5, pady = 5) + editingPresetDataLocalizationC2Label.grid(row = 0, column = 2, padx = GUI.R()['EPDataLocalizationPadX'], pady = GUI.R()['EPDataLocalizationPadY']) # W1 - "Login" editingPresetDataLocalizationW1Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame) editingPresetDataLocalizationW1Label.config(style = 'label2.TLabel') editingPresetDataLocalizationW1Label.config(text = 'Login') - editingPresetDataLocalizationW1Label.grid(row = 1, column = 0, padx = 5, pady = 5) + editingPresetDataLocalizationW1Label.grid(row = 1, column = 0, padx = GUI.R()['EPDataLocalizationPadX'], pady = GUI.R()['EPDataLocalizationPadY']) # Lokalizacja loginu (wiersz) EPDataLocalizationLoginRowVar = TK.IntVar() @@ -1160,8 +1257,9 @@ def window(): EPDataLocalizationLoginRowSpinbox.config(textvariable = EPDataLocalizationLoginRowVar) EPDataLocalizationLoginRowSpinbox.config(from_ = 0) EPDataLocalizationLoginRowSpinbox.config(to = 1000000) + EPDataLocalizationLoginRowSpinbox.config(state = TK.DISABLED) EPDataLocalizationLoginRowSpinbox.config(style = 'spinbox1.TSpinbox') - EPDataLocalizationLoginRowSpinbox.grid(row = 1, column = 1, padx = 5, pady = 5) + EPDataLocalizationLoginRowSpinbox.grid(row = 1, column = 1, padx = GUI.R()['EPDataLocalizationPadX'], pady = GUI.R()['EPDataLocalizationPadY']) # Lokalizacja loginu (pozycja w wierszu) EPDataLocalizationLoginPosInRowVar = TK.IntVar() @@ -1169,14 +1267,15 @@ def window(): EPDataLocalizationLoginPosInRowSpinbox.config(textvariable = EPDataLocalizationLoginPosInRowVar) EPDataLocalizationLoginPosInRowSpinbox.config(from_ = 0) EPDataLocalizationLoginPosInRowSpinbox.config(to = 1000000) + EPDataLocalizationLoginPosInRowSpinbox.config(state = TK.DISABLED) EPDataLocalizationLoginPosInRowSpinbox.config(style = 'spinbox1.TSpinbox') - EPDataLocalizationLoginPosInRowSpinbox.grid(row = 1, column = 2, padx = 5, pady = 5) + EPDataLocalizationLoginPosInRowSpinbox.grid(row = 1, column = 2, padx = GUI.R()['EPDataLocalizationPadX'], pady = GUI.R()['EPDataLocalizationPadY']) # W2 - "Imię" editingPresetDataLocalizationW2Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame) editingPresetDataLocalizationW2Label.config(style = 'label2.TLabel') editingPresetDataLocalizationW2Label.config(text = 'Imię') - editingPresetDataLocalizationW2Label.grid(row = 2, column = 0, padx = 5, pady = 5) + editingPresetDataLocalizationW2Label.grid(row = 2, column = 0, padx = GUI.R()['EPDataLocalizationPadX'], pady = GUI.R()['EPDataLocalizationPadY']) # Lokalizacja imienia (wiersz) EPDataLocalizationFnameRowVar = TK.IntVar() @@ -1184,8 +1283,9 @@ def window(): EPDataLocalizationFnameRowSpinbox.config(textvariable = EPDataLocalizationFnameRowVar) EPDataLocalizationFnameRowSpinbox.config(from_ = 0) EPDataLocalizationFnameRowSpinbox.config(to = 1000000) + EPDataLocalizationFnameRowSpinbox.config(state = TK.DISABLED) EPDataLocalizationFnameRowSpinbox.config(style = 'spinbox1.TSpinbox') - EPDataLocalizationFnameRowSpinbox.grid(row = 2, column = 1, padx = 5, pady = 5) + EPDataLocalizationFnameRowSpinbox.grid(row = 2, column = 1, padx = GUI.R()['EPDataLocalizationPadX'], pady = GUI.R()['EPDataLocalizationPadY']) # Lokalizacja imienia (pozycja w wierszu) EPDataLocalizationFnamePosInRowVar = TK.IntVar() @@ -1193,14 +1293,15 @@ def window(): EPDataLocalizationFnamePosInRowSpinbox.config(textvariable = EPDataLocalizationFnamePosInRowVar) EPDataLocalizationFnamePosInRowSpinbox.config(from_ = 0) EPDataLocalizationFnamePosInRowSpinbox.config(to = 1000000) + EPDataLocalizationFnamePosInRowSpinbox.config(state = TK.DISABLED) EPDataLocalizationFnamePosInRowSpinbox.config(style = 'spinbox1.TSpinbox') - EPDataLocalizationFnamePosInRowSpinbox.grid(row = 2, column = 2, padx = 5, pady = 5) + EPDataLocalizationFnamePosInRowSpinbox.grid(row = 2, column = 2, padx = GUI.R()['EPDataLocalizationPadX'], pady = GUI.R()['EPDataLocalizationPadY']) # W3 - "Nazwisko" editingPresetDataLocalizationW3Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame) editingPresetDataLocalizationW3Label.config(style = 'label2.TLabel') editingPresetDataLocalizationW3Label.config(text = 'Nazwisko') - editingPresetDataLocalizationW3Label.grid(row = 3, column = 0, padx = 5, pady = 5) + editingPresetDataLocalizationW3Label.grid(row = 3, column = 0, padx = GUI.R()['EPDataLocalizationPadX'], pady = GUI.R()['EPDataLocalizationPadY']) # Lokalizacja nazwiska (wiersz) EPDataLocalizationLnameRowVar = TK.IntVar() @@ -1208,8 +1309,9 @@ def window(): EPDataLocalizationLnameRowSpinbox.config(textvariable = EPDataLocalizationLnameRowVar) EPDataLocalizationLnameRowSpinbox.config(from_ = 0) EPDataLocalizationLnameRowSpinbox.config(to = 1000000) + EPDataLocalizationLnameRowSpinbox.config(state = TK.DISABLED) EPDataLocalizationLnameRowSpinbox.config(style = 'spinbox1.TSpinbox') - EPDataLocalizationLnameRowSpinbox.grid(row = 3, column = 1, padx = 5, pady = 5) + EPDataLocalizationLnameRowSpinbox.grid(row = 3, column = 1, padx = GUI.R()['EPDataLocalizationPadX'], pady = GUI.R()['EPDataLocalizationPadY']) # Lokalizacja nazwiska (pozycja w wierszu) EPDataLocalizationLnamePosInRowVar = TK.IntVar() @@ -1217,14 +1319,15 @@ def window(): EPDataLocalizationLnamePosInRowSpinbox.config(textvariable = EPDataLocalizationLnamePosInRowVar) EPDataLocalizationLnamePosInRowSpinbox.config(from_ = 0) EPDataLocalizationLnamePosInRowSpinbox.config(to = 1000000) + EPDataLocalizationLnamePosInRowSpinbox.config(state = TK.DISABLED) EPDataLocalizationLnamePosInRowSpinbox.config(style = 'spinbox1.TSpinbox') - EPDataLocalizationLnamePosInRowSpinbox.grid(row = 3, column = 2, padx = 5, pady = 5) + EPDataLocalizationLnamePosInRowSpinbox.grid(row = 3, column = 2, padx = GUI.R()['EPDataLocalizationPadX'], pady = GUI.R()['EPDataLocalizationPadY']) # W4 - "Szkoła" editingPresetDataLocalizationW4Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame) editingPresetDataLocalizationW4Label.config(style = 'label2.TLabel') editingPresetDataLocalizationW4Label.config(text = 'Szkoła') - editingPresetDataLocalizationW4Label.grid(row = 4, column = 0, padx = 5, pady = 5) + editingPresetDataLocalizationW4Label.grid(row = 4, column = 0, padx = GUI.R()['EPDataLocalizationPadX'], pady = GUI.R()['EPDataLocalizationPadY']) # Lokalizacja nazwiska (wiersz) EPDataLocalizationSchoolRowVar = TK.IntVar() @@ -1232,8 +1335,9 @@ def window(): EPDataLocalizationSchoolRowSpinbox.config(textvariable = EPDataLocalizationSchoolRowVar) EPDataLocalizationSchoolRowSpinbox.config(from_ = 0) EPDataLocalizationSchoolRowSpinbox.config(to = 1000000) + EPDataLocalizationSchoolRowSpinbox.config(state = TK.DISABLED) EPDataLocalizationSchoolRowSpinbox.config(style = 'spinbox1.TSpinbox') - EPDataLocalizationSchoolRowSpinbox.grid(row = 4, column = 1, padx = 5, pady = 5) + EPDataLocalizationSchoolRowSpinbox.grid(row = 4, column = 1, padx = GUI.R()['EPDataLocalizationPadX'], pady = GUI.R()['EPDataLocalizationPadY']) # Lokalizacja nazwiska (pozycja w wierszu) EPDataLocalizationSchoolPosInRowVar = TK.IntVar() @@ -1241,14 +1345,15 @@ def window(): EPDataLocalizationSchoolPosInRowSpinbox.config(textvariable = EPDataLocalizationSchoolPosInRowVar) EPDataLocalizationSchoolPosInRowSpinbox.config(from_ = 0) EPDataLocalizationSchoolPosInRowSpinbox.config(to = 1000000) + EPDataLocalizationSchoolPosInRowSpinbox.config(state = TK.DISABLED) EPDataLocalizationSchoolPosInRowSpinbox.config(style = 'spinbox1.TSpinbox') - EPDataLocalizationSchoolPosInRowSpinbox.grid(row = 4, column = 2, padx = 5, pady = 5) + EPDataLocalizationSchoolPosInRowSpinbox.grid(row = 4, column = 2, padx = GUI.R()['EPDataLocalizationPadX'], pady = GUI.R()['EPDataLocalizationPadY']) # W5 - "Klasa" editingPresetDataLocalizationW5Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame) editingPresetDataLocalizationW5Label.config(style = 'label2.TLabel') editingPresetDataLocalizationW5Label.config(text = 'Klasa') - editingPresetDataLocalizationW5Label.grid(row = 5, column = 0, padx = 5, pady = 5) + editingPresetDataLocalizationW5Label.grid(row = 5, column = 0, padx = GUI.R()['EPDataLocalizationPadX'], pady = GUI.R()['EPDataLocalizationPadY']) # Lokalizacja nazwiska (wiersz) EPDataLocalizationClassRowVar = TK.IntVar() @@ -1256,8 +1361,9 @@ def window(): EPDataLocalizationClassRowSpinbox.config(textvariable = EPDataLocalizationClassRowVar) EPDataLocalizationClassRowSpinbox.config(from_ = 0) EPDataLocalizationClassRowSpinbox.config(to = 1000000) + EPDataLocalizationClassRowSpinbox.config(state = TK.DISABLED) EPDataLocalizationClassRowSpinbox.config(style = 'spinbox1.TSpinbox') - EPDataLocalizationClassRowSpinbox.grid(row = 5, column = 1, padx = 5, pady = 5) + EPDataLocalizationClassRowSpinbox.grid(row = 5, column = 1, padx = GUI.R()['EPDataLocalizationPadX'], pady = GUI.R()['EPDataLocalizationPadY']) # Lokalizacja nazwiska (pozycja w wierszu) EPDataLocalizationClassPosInRowVar = TK.IntVar() @@ -1265,8 +1371,16 @@ def window(): EPDataLocalizationClassPosInRowSpinbox.config(textvariable = EPDataLocalizationClassPosInRowVar) EPDataLocalizationClassPosInRowSpinbox.config(from_ = 0) EPDataLocalizationClassPosInRowSpinbox.config(to = 1000000) + EPDataLocalizationClassPosInRowSpinbox.config(state = TK.DISABLED) EPDataLocalizationClassPosInRowSpinbox.config(style = 'spinbox1.TSpinbox') - EPDataLocalizationClassPosInRowSpinbox.grid(row = 5, column = 2, padx = 5, pady = 5) + EPDataLocalizationClassPosInRowSpinbox.grid(row = 5, column = 2, padx = GUI.R()['EPDataLocalizationPadX'], pady = GUI.R()['EPDataLocalizationPadY']) + + # Informacje + EPDataLocalizationInfoLabel = TKttk.Label(editingPresetDataLocalizationSettingsFrame) + EPDataLocalizationInfoLabel.config(style = 'label3.TLabel') + EPDataLocalizationInfoLabel.config(justify = 'center') + EPDataLocalizationInfoLabel.config(text = "1234567u\nAdam Nowak, 18\n1a LO\n*******\n\n7654321u\nJan Kowalski, 11\n2a BS\n**********\n\n------------------\n\nTyp osoby: Uczniowie\nSeparator pomiedzy osobami: ''\nSeparator pomiedzy wierszami: ''\nSeparator pomiedzy danymi: ' *enter*, '\nLogin: 1 | 1\nImię: 2 | 1\nNazwisko: 2 | 2\nSzkoła: 3 | 2\nKlasa: 3 | 1") + EPDataLocalizationInfoLabel.grid(row = 6, column = 0, columnspan = 3, padx = GUI.R()['EPDataLocalizationPadX'], pady = GUI.R()['EPDataLocalizationPadY']) ######################### @@ -1278,167 +1392,94 @@ def window(): editingPresetButtonsFrame.config(style = 'layoutFrame.TFrame') editingPresetButtonsFrame.pack(fill = TK.X, side = TK.BOTTOM, pady = 10) - def editingPresetSaveAction(): + def editingPresetSave(): + studentVar = EPOSTypeVar.get() + if studentVar == 's': + studentVar = True + else: + studentVar = False + formatFileContentToSave = { + "student" : studentVar, + "personSeparator" : EPOSPersonSeparatorEntry.get(), + "rowSeparator" : EPOSRowSeparatorEntry.get(), + "dataSeparators" : (EPOSDataSeparatorText.get("1.0", TK.END)).split('\n')[:-1], + "loginRow" : int(EPDataLocalizationLoginRowSpinbox.get()), + "loginPositionInRow" : int(EPDataLocalizationLoginPosInRowSpinbox.get()), + "fnameRow" : int(EPDataLocalizationFnameRowSpinbox.get()), + "fnamePositionInRow" : int(EPDataLocalizationFnamePosInRowSpinbox.get()), + "lnameRow" : int(EPDataLocalizationLnameRowSpinbox.get()), + "lnamePositionInRow" : int(EPDataLocalizationLnamePosInRowSpinbox.get()), + "schoolRow" : int(EPDataLocalizationSchoolRowSpinbox.get()), + "schoolPositionInRow" : int(EPDataLocalizationSchoolPosInRowSpinbox.get()), + "classRow" : int(EPDataLocalizationClassRowSpinbox.get()), + "classPositionInRow" : int(EPDataLocalizationClassPosInRowSpinbox.get()), + } + if not FMT.W(loadingList.get(), formatFileContentToSave): + return + formatFileContent = { + "student" : True, + "personSeparator" : '', + "rowSeparator" : '', + "dataSeparators" : [], + "loginRow" : 0, + "loginPositionInRow" : 0, + "fnameRow" : 0, + "fnamePositionInRow" : 0, + "lnameRow" : 0, + "lnamePositionInRow" : 0, + "schoolRow" : 0, + "schoolPositionInRow" : 0, + "classRow" : 0, + "classPositionInRow" : 0, + } + loadingList['state'] = TK.NORMAL + loadingButton['state'] = TK.NORMAL + EPOSTypeVar.set(formatFileContent['student']) + EPOSTypeStudentRadiobutton['state'] = TK.DISABLED + EPOSTypeTeacherRadiobutton['state'] = TK.DISABLED + EPOSPersonSeparatorEntry['state'] = TK.DISABLED + EPOSPersonSeparatorVar.set(formatFileContent['personSeparator']) + EPOSRowSeparatorEntry['state'] = TK.DISABLED + EPOSRowSeparatorVar.set(formatFileContent['rowSeparator']) + EPOSDataSeparatorText.delete('1.0', TK.END) + EPOSDataSeparatorText['state'] = TK.DISABLED + EPDataLocalizationLoginRowSpinbox['state'] = TK.DISABLED + EPDataLocalizationLoginRowVar.set(formatFileContent['loginRow']) + EPDataLocalizationLoginPosInRowSpinbox['state'] = TK.DISABLED + EPDataLocalizationLoginPosInRowVar.set(formatFileContent['loginPositionInRow']) + EPDataLocalizationFnameRowSpinbox['state'] = TK.DISABLED + EPDataLocalizationFnameRowVar.set(formatFileContent['fnameRow']) + EPDataLocalizationFnamePosInRowSpinbox['state'] = TK.DISABLED + EPDataLocalizationFnamePosInRowVar.set(formatFileContent['fnamePositionInRow']) + EPDataLocalizationLnameRowSpinbox['state'] = TK.DISABLED + EPDataLocalizationLnameRowVar.set(formatFileContent['lnameRow']) + EPDataLocalizationLnamePosInRowSpinbox['state'] = TK.DISABLED + EPDataLocalizationLnamePosInRowVar.set(formatFileContent['lnamePositionInRow']) + EPDataLocalizationSchoolRowSpinbox['state'] = TK.DISABLED + EPDataLocalizationSchoolRowVar.set(formatFileContent['schoolRow']) + EPDataLocalizationSchoolPosInRowSpinbox['state'] = TK.DISABLED + EPDataLocalizationSchoolPosInRowVar.set(formatFileContent['schoolPositionInRow']) + EPDataLocalizationClassRowSpinbox['state'] = TK.DISABLED + EPDataLocalizationClassRowVar.set(formatFileContent['classRow']) + EPDataLocalizationClassPosInRowSpinbox['state'] = TK.DISABLED + EPDataLocalizationClassPosInRowVar.set(formatFileContent['classPositionInRow']) + editingPresetSaveButton['state'] = TK.DISABLED + editingPresetCancelButton['state'] = TK.DISABLED + loadingList['values'] = tuple(FMT.getList()) + + def editingPresetSaveButtonAction(): if loadingList.get() not in FMT.getList(): if MSG('A0001', False): - studentVar = EPOSTypeVar.get() - if studentVar == 's': - studentVar = True - else: - studentVar = False - formatFileContentToSave = { - "student" : studentVar, - "personSeparator" : EPOSPersonSeparatorEntry.get(), - "rowSeparator" : EPOSRowSeparatorEntry.get(), - "dataSeparators" : (EPOSDataSeparatorText.get("1.0", TK.END)).split('\n')[:-1], - "loginRow" : int(EPDataLocalizationLoginRowSpinbox.get()), - "loginPositionInRow" : int(EPDataLocalizationLoginPosInRowSpinbox.get()), - "fnameRow" : int(EPDataLocalizationFnameRowSpinbox.get()), - "fnamePositionInRow" : int(EPDataLocalizationFnamePosInRowSpinbox.get()), - "lnameRow" : int(EPDataLocalizationLnameRowSpinbox.get()), - "lnamePositionInRow" : int(EPDataLocalizationLnamePosInRowSpinbox.get()), - "schoolRow" : int(EPDataLocalizationSchoolRowSpinbox.get()), - "schoolPositionInRow" : int(EPDataLocalizationSchoolPosInRowSpinbox.get()), - "classRow" : int(EPDataLocalizationClassRowSpinbox.get()), - "classPositionInRow" : int(EPDataLocalizationClassPosInRowSpinbox.get()), - } - FMT.W(loadingList.get(), formatFileContentToSave) - formatFileContent = { - "student" : True, - "personSeparator" : '', - "rowSeparator" : '', - "dataSeparators" : [], - "loginRow" : 0, - "loginPositionInRow" : 0, - "fnameRow" : 0, - "fnamePositionInRow" : 0, - "lnameRow" : 0, - "lnamePositionInRow" : 0, - "schoolRow" : 0, - "schoolPositionInRow" : 0, - "classRow" : 0, - "classPositionInRow" : 0, - } - loadingList['state'] = TK.NORMAL - loadingButton['state'] = TK.NORMAL - EPOSTypeStudentRadiobutton['state'] = TK.DISABLED - EPOSTypeTeacherRadiobutton['state'] = TK.DISABLED - if formatFileContent['student']: - EPOSTypeVar.set('s') - else: - EPOSTypeVar.set('t') - EPOSPersonSeparatorEntry['state'] = TK.DISABLED - EPOSPersonSeparatorVar.set(formatFileContent['personSeparator']) - EPOSRowSeparatorEntry['state'] = TK.DISABLED - EPOSRowSeparatorVar.set(formatFileContent['rowSeparator']) - EPOSDataSeparatorText.delete('1.0', TK.END) - EPOSDataSeparatorText['state'] = TK.DISABLED - EPDataLocalizationLoginRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationLoginRowVar.set(formatFileContent['loginRow']) - EPDataLocalizationLoginPosInRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationLoginPosInRowVar.set(formatFileContent['loginPositionInRow']) - EPDataLocalizationFnameRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationFnameRowVar.set(formatFileContent['fnameRow']) - EPDataLocalizationFnamePosInRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationFnamePosInRowVar.set(formatFileContent['fnamePositionInRow']) - EPDataLocalizationLnameRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationLnameRowVar.set(formatFileContent['lnameRow']) - EPDataLocalizationLnamePosInRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationLnamePosInRowVar.set(formatFileContent['lnamePositionInRow']) - EPDataLocalizationSchoolRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationSchoolRowVar.set(formatFileContent['schoolRow']) - EPDataLocalizationSchoolPosInRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationSchoolPosInRowVar.set(formatFileContent['schoolPositionInRow']) - EPDataLocalizationClassRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationClassRowVar.set(formatFileContent['classRow']) - EPDataLocalizationClassPosInRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationClassPosInRowVar.set(formatFileContent['classPositionInRow']) - editingPresetSaveButton['state'] = TK.DISABLED - editingPresetCancelButton['state'] = TK.DISABLED - loadingList['values'] = tuple(FMT.getList()) + editingPresetSave() else: return else: if MSG('A0002', False): - studentVar = EPOSTypeVar.get() - if studentVar == 's': - studentVar = True - else: - studentVar = False - formatFileContentToSave = { - "student" : studentVar, - "personSeparator" : EPOSPersonSeparatorEntry.get(), - "rowSeparator" : EPOSRowSeparatorEntry.get(), - "dataSeparators" : (EPOSDataSeparatorText.get("1.0", TK.END)).split('\n')[:-1], - "loginRow" : int(EPDataLocalizationLoginRowSpinbox.get()), - "loginPositionInRow" : int(EPDataLocalizationLoginPosInRowSpinbox.get()), - "fnameRow" : int(EPDataLocalizationFnameRowSpinbox.get()), - "fnamePositionInRow" : int(EPDataLocalizationFnamePosInRowSpinbox.get()), - "lnameRow" : int(EPDataLocalizationLnameRowSpinbox.get()), - "lnamePositionInRow" : int(EPDataLocalizationLnamePosInRowSpinbox.get()), - "schoolRow" : int(EPDataLocalizationSchoolRowSpinbox.get()), - "schoolPositionInRow" : int(EPDataLocalizationSchoolPosInRowSpinbox.get()), - "classRow" : int(EPDataLocalizationClassRowSpinbox.get()), - "classPositionInRow" : int(EPDataLocalizationClassPosInRowSpinbox.get()), - } - FMT.W(loadingList.get(), formatFileContentToSave) - formatFileContent = { - "student" : True, - "personSeparator" : '', - "rowSeparator" : '', - "dataSeparators" : [], - "loginRow" : 0, - "loginPositionInRow" : 0, - "fnameRow" : 0, - "fnamePositionInRow" : 0, - "lnameRow" : 0, - "lnamePositionInRow" : 0, - "schoolRow" : 0, - "schoolPositionInRow" : 0, - "classRow" : 0, - "classPositionInRow" : 0, - } - loadingList['state'] = TK.NORMAL - loadingButton['state'] = TK.NORMAL - EPOSTypeStudentRadiobutton['state'] = TK.DISABLED - EPOSTypeTeacherRadiobutton['state'] = TK.DISABLED - if formatFileContent['student']: - EPOSTypeVar.set('s') - else: - EPOSTypeVar.set('t') - EPOSPersonSeparatorEntry['state'] = TK.DISABLED - EPOSPersonSeparatorVar.set(formatFileContent['personSeparator']) - EPOSRowSeparatorEntry['state'] = TK.DISABLED - EPOSRowSeparatorVar.set(formatFileContent['rowSeparator']) - EPOSDataSeparatorText.delete('1.0', TK.END) - EPOSDataSeparatorText['state'] = TK.DISABLED - EPDataLocalizationLoginRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationLoginRowVar.set(formatFileContent['loginRow']) - EPDataLocalizationLoginPosInRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationLoginPosInRowVar.set(formatFileContent['loginPositionInRow']) - EPDataLocalizationFnameRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationFnameRowVar.set(formatFileContent['fnameRow']) - EPDataLocalizationFnamePosInRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationFnamePosInRowVar.set(formatFileContent['fnamePositionInRow']) - EPDataLocalizationLnameRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationLnameRowVar.set(formatFileContent['lnameRow']) - EPDataLocalizationLnamePosInRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationLnamePosInRowVar.set(formatFileContent['lnamePositionInRow']) - EPDataLocalizationSchoolRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationSchoolRowVar.set(formatFileContent['schoolRow']) - EPDataLocalizationSchoolPosInRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationSchoolPosInRowVar.set(formatFileContent['schoolPositionInRow']) - EPDataLocalizationClassRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationClassRowVar.set(formatFileContent['classRow']) - EPDataLocalizationClassPosInRowSpinbox['state'] = TK.DISABLED - EPDataLocalizationClassPosInRowVar.set(formatFileContent['classPositionInRow']) - editingPresetSaveButton['state'] = TK.DISABLED - editingPresetCancelButton['state'] = TK.DISABLED - loadingList['values'] = tuple(FMT.getList()) + editingPresetSave() else: return editingPresetSaveButton = TKttk.Button(editingPresetButtonsFrame) - editingPresetSaveButton.config(command = editingPresetSaveAction) + editingPresetSaveButton.config(command = editingPresetSaveButtonAction) editingPresetSaveButton.config(state = TK.DISABLED) editingPresetSaveButton.config(style = 'button1.TButton') editingPresetSaveButton.config(width = GUI.R()['editingPresetSaveButtonWidth']) @@ -1466,10 +1507,7 @@ def window(): loadingButton['state'] = TK.NORMAL EPOSTypeStudentRadiobutton['state'] = TK.DISABLED EPOSTypeTeacherRadiobutton['state'] = TK.DISABLED - if formatFileContent['student']: - EPOSTypeVar.set('s') - else: - EPOSTypeVar.set('t') + EPOSTypeVar.set(formatFileContent['student']) EPOSPersonSeparatorEntry['state'] = TK.DISABLED EPOSPersonSeparatorVar.set(formatFileContent['personSeparator']) EPOSRowSeparatorEntry['state'] = TK.DISABLED