4.0 Alpha (Build 20211)
This commit is contained in:
@@ -72,4 +72,11 @@
|
|||||||
- Zastosowanie systemu styli do interfejsu
|
- Zastosowanie systemu styli do interfejsu
|
||||||
- Zastosowanie systemu zapisywania plików konfiguracyjnych i formatu w folderze %appdata%
|
- Zastosowanie systemu zapisywania plików konfiguracyjnych i formatu w folderze %appdata%
|
||||||
- Usunięcie konsoli w tle
|
- Usunięcie konsoli w tle
|
||||||
- Wiele mniejszych zmian
|
- 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 <enter> do listy dozwolonych znaków
|
||||||
|
- Dodanie instrukcji w karcie "FORMAT DANYCH"
|
||||||
|
- Usprawnienia w kodzie
|
||||||
|
- Naprawiono przyciski radiobutton
|
||||||
@@ -1 +1,2 @@
|
|||||||
secret = entersecretstringhere
|
secret = entersecretstringhere
|
||||||
|
allowedCharactersInSeparator = ['`', '~', '!', '@', '#', '$', '%', '^', '&', '(', ')', '-', '_', '=', '+', '[', ']', '\', '|', ';', ':', ''', '"', ',', '<', '.', '>', '/', '?', ' ']
|
||||||
@@ -69,4 +69,19 @@ label2BG = #21242D
|
|||||||
label2TextColor = #C0C0C0
|
label2TextColor = #C0C0C0
|
||||||
label3BG = #21242D
|
label3BG = #21242D
|
||||||
label3TextColor = #C0C0C0
|
label3TextColor = #C0C0C0
|
||||||
label3Anchor = w
|
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
|
||||||
470
generator.pyw
470
generator.pyw
@@ -100,11 +100,10 @@ def MSG(code, terminate, *optionalInfo):
|
|||||||
# ------------------------- # Sprawdzanie katalogu programu w APPDATA # ------------------------- #
|
# ------------------------- # Sprawdzanie katalogu programu w APPDATA # ------------------------- #
|
||||||
|
|
||||||
appdata = PT.Path.home() / 'Appdata/Roaming'
|
appdata = PT.Path.home() / 'Appdata/Roaming'
|
||||||
"""
|
|
||||||
#TODO
|
#TODO
|
||||||
SU.rmtree(str(appdata) + '/Generator CSV')
|
SU.rmtree(str(appdata) + '/Generator CSV')
|
||||||
#TODO
|
#TODO
|
||||||
"""
|
|
||||||
if 'Generator CSV' not in [x for x in OS.listdir(appdata)]:
|
if 'Generator CSV' not in [x for x in OS.listdir(appdata)]:
|
||||||
try:
|
try:
|
||||||
OS.mkdir(str(appdata) + '/Generator CSV')
|
OS.mkdir(str(appdata) + '/Generator CSV')
|
||||||
@@ -145,7 +144,23 @@ class CFG:
|
|||||||
return [True, content]
|
return [True, content]
|
||||||
else:
|
else:
|
||||||
class functions:
|
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]
|
return [True, content]
|
||||||
|
|
||||||
def R(self):
|
def R(self):
|
||||||
@@ -469,6 +484,51 @@ class GUI:
|
|||||||
if not check[0]:
|
if not check[0]:
|
||||||
return check
|
return check
|
||||||
check = functions.fromArray('label3Anchor', ['center', 'nw', 'n', 'ne', 'w', 'e', 'sw', 's', 'se'])
|
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]:
|
if not check[0]:
|
||||||
return check
|
return check
|
||||||
return [True, content]
|
return [True, content]
|
||||||
@@ -520,14 +580,27 @@ class FMT:
|
|||||||
return [True]
|
return [True]
|
||||||
else:
|
else:
|
||||||
return [False, 'Brak danych - klucz: %s' % var]
|
return [False, 'Brak danych - klucz: %s' % var]
|
||||||
def string(self, var):
|
def separator_string(self, var):
|
||||||
if var in list(content.keys()):
|
if var in list(content.keys()):
|
||||||
|
allowedCharactersInSeparator = CFG.R()['allowedCharactersInSeparator']
|
||||||
|
check = content[var]
|
||||||
|
check = check.strip('<enter>')
|
||||||
|
for x in check:
|
||||||
|
if x not in allowedCharactersInSeparator:
|
||||||
|
return [False, 'Niepoprawne dane - klucz: %s' % var]
|
||||||
return [True]
|
return [True]
|
||||||
else:
|
else:
|
||||||
return [False, 'Brak danych - klucz: %s' % var]
|
return [False, 'Brak danych - klucz: %s' % var]
|
||||||
def array(self, var):
|
def separator_array(self, var):
|
||||||
if var in list(content.keys()):
|
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('<enter>')
|
||||||
|
for y in x:
|
||||||
|
if y not in allowedCharactersInSeparator:
|
||||||
|
return [False, 'Niepoprawne dane - klucz: %s' % var]
|
||||||
|
content[var] = str(content[var])
|
||||||
return [True]
|
return [True]
|
||||||
else:
|
else:
|
||||||
return [False, 'Brak danych - klucz: %s' % var]
|
return [False, 'Brak danych - klucz: %s' % var]
|
||||||
@@ -541,13 +614,13 @@ class FMT:
|
|||||||
check = functions.bool('student')
|
check = functions.bool('student')
|
||||||
if not check[0]:
|
if not check[0]:
|
||||||
return check
|
return check
|
||||||
check = functions.string('personSeparator')
|
check = functions.separator_string('personSeparator')
|
||||||
if not check[0]:
|
if not check[0]:
|
||||||
return check
|
return check
|
||||||
check = functions.string('rowSeparator')
|
check = functions.separator_string('rowSeparator')
|
||||||
if not check[0]:
|
if not check[0]:
|
||||||
return check
|
return check
|
||||||
check = functions.array('dataSeparators')
|
check = functions.separator_array('dataSeparators')
|
||||||
if not check[0]:
|
if not check[0]:
|
||||||
return check
|
return check
|
||||||
check = functions.integer('loginRow')
|
check = functions.integer('loginRow')
|
||||||
@@ -596,14 +669,31 @@ class FMT:
|
|||||||
return [True]
|
return [True]
|
||||||
else:
|
else:
|
||||||
return [False, 'Brak danych - klucz: %s' % var]
|
return [False, 'Brak danych - klucz: %s' % var]
|
||||||
def string(self, var):
|
def separator_string(self, var):
|
||||||
if var in list(content.keys()):
|
if var in list(content.keys()):
|
||||||
|
allowedCharactersInSeparator = CFG.R()['allowedCharactersInSeparator']
|
||||||
|
check = content[var]
|
||||||
|
check = check.strip('<enter>')
|
||||||
|
for x in check:
|
||||||
|
if x not in allowedCharactersInSeparator:
|
||||||
|
return [False, 'Niepoprawne dane - klucz: %s' % var]
|
||||||
return [True]
|
return [True]
|
||||||
else:
|
else:
|
||||||
return [False, 'Brak danych - klucz: %s' % var]
|
return [False, 'Brak danych - klucz: %s' % var]
|
||||||
def array(self, var):
|
def separator_array(self, var):
|
||||||
if var in list(content.keys()):
|
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('<enter>')
|
||||||
|
for y in x:
|
||||||
|
if y not in allowedCharactersInSeparator:
|
||||||
|
return [False, 'Niepoprawne dane - klucz: %s' % var]
|
||||||
|
content[var] = xnew_contentVar
|
||||||
return [True]
|
return [True]
|
||||||
else:
|
else:
|
||||||
return [False, 'Brak danych - klucz: %s' % var]
|
return [False, 'Brak danych - klucz: %s' % var]
|
||||||
@@ -622,13 +712,13 @@ class FMT:
|
|||||||
check = functions.bool('student')
|
check = functions.bool('student')
|
||||||
if not check[0]:
|
if not check[0]:
|
||||||
return check
|
return check
|
||||||
check = functions.string('personSeparator')
|
check = functions.separator_string('personSeparator')
|
||||||
if not check[0]:
|
if not check[0]:
|
||||||
return check
|
return check
|
||||||
check = functions.string('rowSeparator')
|
check = functions.separator_string('rowSeparator')
|
||||||
if not check[0]:
|
if not check[0]:
|
||||||
return check
|
return check
|
||||||
check = functions.array('dataSeparators')
|
check = functions.separator_array('dataSeparators')
|
||||||
if not check[0]:
|
if not check[0]:
|
||||||
return check
|
return check
|
||||||
check = functions.integer('loginRow')
|
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:
|
with CD.open(str(appdata) + '/Generator CSV/format-presets/%s.fmt' % preset, 'w', 'utf-8') as file:
|
||||||
for x in contentToSave:
|
for x in contentToSave:
|
||||||
file.write(x + ' = ' + content[x] + '\n')
|
file.write(x + ' = ' + content[x] + '\n')
|
||||||
|
return True
|
||||||
else:
|
else:
|
||||||
MSG('E0006', False, contentCheckingOutput[1])
|
MSG('E0006', False, contentCheckingOutput[1])
|
||||||
|
return False
|
||||||
FMT = FMT()
|
FMT = FMT()
|
||||||
|
|
||||||
|
|
||||||
@@ -797,6 +889,13 @@ def window():
|
|||||||
"width": GUI.R()['label2Width'],
|
"width": GUI.R()['label2Width'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"label3.TLabel": {
|
||||||
|
"configure": {
|
||||||
|
"background": GUI.R()['label3BG'],
|
||||||
|
"foreground": GUI.R()['label3TextColor'],
|
||||||
|
"font" : GUI.R()['label3Font'],
|
||||||
|
},
|
||||||
|
},
|
||||||
"combobox1.TCombobox": {
|
"combobox1.TCombobox": {
|
||||||
"configure": {
|
"configure": {
|
||||||
"arrowcolor": GUI.R()['combobox1ArrowColor'],
|
"arrowcolor": GUI.R()['combobox1ArrowColor'],
|
||||||
@@ -832,12 +931,6 @@ def window():
|
|||||||
"background": GUI.R()['spinbox1ButtonColor']
|
"background": GUI.R()['spinbox1ButtonColor']
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'radiobutton1.TRadiobutton': {
|
|
||||||
"configure": {
|
|
||||||
"background": GUI.R()['radiobutton1Background'],
|
|
||||||
"foreground": GUI.R()['radiobutton1TextColor'],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"entry1.TEntry": {
|
"entry1.TEntry": {
|
||||||
"configure": {
|
"configure": {
|
||||||
"fieldbackground": GUI.R()['entry1FieldBackground'],
|
"fieldbackground": GUI.R()['entry1FieldBackground'],
|
||||||
@@ -937,7 +1030,7 @@ def window():
|
|||||||
loadingList.option_add("*TCombobox*Listbox.foreground", GUI.R()['combobox1ListBoxForeground'])
|
loadingList.option_add("*TCombobox*Listbox.foreground", GUI.R()['combobox1ListBoxForeground'])
|
||||||
loadingList.option_add("*TCombobox*Listbox.selectBackground", GUI.R()['combobox1ListBoxSelectBackground'])
|
loadingList.option_add("*TCombobox*Listbox.selectBackground", GUI.R()['combobox1ListBoxSelectBackground'])
|
||||||
loadingList.option_add("*TCombobox*Listbox.selectForeground", GUI.R()['combobox1ListBoxSelectForeground'])
|
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())
|
loadingList['values'] = tuple(FMT.getList())
|
||||||
|
|
||||||
# Przycisk "WCZYTAJ"
|
# Przycisk "WCZYTAJ"
|
||||||
@@ -961,12 +1054,9 @@ def window():
|
|||||||
formatFileContent = FMT.R(loadingList.get())
|
formatFileContent = FMT.R(loadingList.get())
|
||||||
loadingList['state'] = TK.DISABLED
|
loadingList['state'] = TK.DISABLED
|
||||||
loadingButton['state'] = TK.DISABLED
|
loadingButton['state'] = TK.DISABLED
|
||||||
|
EPOSTypeVar.set(formatFileContent['student'])
|
||||||
EPOSTypeStudentRadiobutton['state'] = TK.NORMAL
|
EPOSTypeStudentRadiobutton['state'] = TK.NORMAL
|
||||||
EPOSTypeTeacherRadiobutton['state'] = TK.NORMAL
|
EPOSTypeTeacherRadiobutton['state'] = TK.NORMAL
|
||||||
if formatFileContent['student']:
|
|
||||||
EPOSTypeVar.set('s')
|
|
||||||
else:
|
|
||||||
EPOSTypeVar.set('t')
|
|
||||||
EPOSPersonSeparatorEntry['state'] = TK.NORMAL
|
EPOSPersonSeparatorEntry['state'] = TK.NORMAL
|
||||||
EPOSPersonSeparatorVar.set(formatFileContent['personSeparator'])
|
EPOSPersonSeparatorVar.set(formatFileContent['personSeparator'])
|
||||||
EPOSRowSeparatorEntry['state'] = TK.NORMAL
|
EPOSRowSeparatorEntry['state'] = TK.NORMAL
|
||||||
@@ -1044,26 +1134,33 @@ def window():
|
|||||||
EPOSTypeLabel.grid(row = 0, column = 0, pady = 5, sticky = 'w')
|
EPOSTypeLabel.grid(row = 0, column = 0, pady = 5, sticky = 'w')
|
||||||
|
|
||||||
# Typ osoby - Radiobutton
|
# Typ osoby - Radiobutton
|
||||||
EPOSTypeVar = TK.StringVar()
|
EPOSTypeVar = TK.BooleanVar(value = True)
|
||||||
|
|
||||||
EPOSTypeStudentRadiobutton = TKttk.Radiobutton(editingPresetOSFrame)
|
EPOSTypeStudentRadiobutton = TK.Radiobutton(editingPresetOSFrame)
|
||||||
EPOSTypeStudentRadiobutton.config(style = 'radiobutton1.TRadiobutton')
|
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(variable = EPOSTypeVar)
|
||||||
EPOSTypeStudentRadiobutton.config(value = 's')
|
EPOSTypeStudentRadiobutton.config(value = True)
|
||||||
EPOSTypeStudentRadiobutton.config(state = TK.DISABLED)
|
EPOSTypeStudentRadiobutton.config(state = TK.DISABLED)
|
||||||
EPOSTypeStudentRadiobutton.config(width = 20)
|
EPOSTypeStudentRadiobutton.config(width = GUI.R()['EPOSTypeStudentRadiobuttonWidth'])
|
||||||
EPOSTypeStudentRadiobutton.config(text = 'Uczniowie')
|
EPOSTypeStudentRadiobutton.config(text = 'Uczniowie')
|
||||||
|
EPOSTypeStudentRadiobutton.grid(row = 0, column = 1, pady = GUI.R()['EPOSTypeStudentRadiobuttonPadY'])
|
||||||
|
|
||||||
EPOSTypeTeacherRadiobutton = TKttk.Radiobutton(editingPresetOSFrame)
|
EPOSTypeTeacherRadiobutton = TK.Radiobutton(editingPresetOSFrame)
|
||||||
EPOSTypeTeacherRadiobutton.config(style = 'radiobutton1.TRadiobutton')
|
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(variable = EPOSTypeVar)
|
||||||
EPOSTypeTeacherRadiobutton.config(value = 't')
|
EPOSTypeTeacherRadiobutton.config(value = False)
|
||||||
EPOSTypeTeacherRadiobutton.config(state = TK.DISABLED)
|
EPOSTypeTeacherRadiobutton.config(state = TK.DISABLED)
|
||||||
EPOSTypeTeacherRadiobutton.config(width = 20)
|
EPOSTypeTeacherRadiobutton.config(width = GUI.R()['EPOSTypeTeacherRadiobuttonWidth'])
|
||||||
EPOSTypeTeacherRadiobutton.config(text = 'Nauczyciele')
|
EPOSTypeTeacherRadiobutton.config(text = 'Nauczyciele')
|
||||||
|
EPOSTypeTeacherRadiobutton.grid(row = 0, column = 2, pady = GUI.R()['EPOSTypeTeacherRadiobuttonPadY'])
|
||||||
EPOSTypeStudentRadiobutton.grid(row = 0, column = 1, pady = 5)
|
|
||||||
EPOSTypeTeacherRadiobutton.grid(row = 0, column = 2, pady = 5)
|
|
||||||
|
|
||||||
# "Separator pomiędzy osobami"
|
# "Separator pomiędzy osobami"
|
||||||
EPOSPersonSeparatorLabel = TKttk.Label(editingPresetOSFrame)
|
EPOSPersonSeparatorLabel = TKttk.Label(editingPresetOSFrame)
|
||||||
@@ -1077,7 +1174,7 @@ def window():
|
|||||||
EPOSPersonSeparatorEntry.config(style = 'entry1.TEntry')
|
EPOSPersonSeparatorEntry.config(style = 'entry1.TEntry')
|
||||||
EPOSPersonSeparatorEntry.config(textvariable = EPOSPersonSeparatorVar)
|
EPOSPersonSeparatorEntry.config(textvariable = EPOSPersonSeparatorVar)
|
||||||
EPOSPersonSeparatorEntry.config(state = TK.DISABLED)
|
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)
|
EPOSPersonSeparatorEntry.grid(row = 1, column = 1, columnspan = 2, padx = 5, pady = 5)
|
||||||
|
|
||||||
# "Separator pomiędzy wierszami"
|
# "Separator pomiędzy wierszami"
|
||||||
@@ -1092,7 +1189,7 @@ def window():
|
|||||||
EPOSRowSeparatorEntry.config(style = 'entry1.TEntry')
|
EPOSRowSeparatorEntry.config(style = 'entry1.TEntry')
|
||||||
EPOSRowSeparatorEntry.config(textvariable = EPOSRowSeparatorVar)
|
EPOSRowSeparatorEntry.config(textvariable = EPOSRowSeparatorVar)
|
||||||
EPOSRowSeparatorEntry.config(state = TK.DISABLED)
|
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)
|
EPOSRowSeparatorEntry.grid(row = 2, column = 1, columnspan = 2, padx = 5, pady = 5)
|
||||||
|
|
||||||
# "Separatory pomiędzy danymi"
|
# "Separatory pomiędzy danymi"
|
||||||
@@ -1104,8 +1201,8 @@ def window():
|
|||||||
# Entry - Separator pomiedzy wierszami
|
# Entry - Separator pomiedzy wierszami
|
||||||
EPOSDataSeparatorText = TK.Text(editingPresetOSFrame)
|
EPOSDataSeparatorText = TK.Text(editingPresetOSFrame)
|
||||||
EPOSDataSeparatorText.config(state = TK.DISABLED)
|
EPOSDataSeparatorText.config(state = TK.DISABLED)
|
||||||
EPOSDataSeparatorText.config(width = 42)
|
EPOSDataSeparatorText.config(width = GUI.R()['EPOSDataSeparatorTextWidth'])
|
||||||
EPOSDataSeparatorText.config(height = 19)
|
EPOSDataSeparatorText.config(height = GUI.R()['EPOSDataSeparatorTextHeight'])
|
||||||
EPOSDataSeparatorText.config(background = GUI.R()['text1Background'])
|
EPOSDataSeparatorText.config(background = GUI.R()['text1Background'])
|
||||||
EPOSDataSeparatorText.config(foreground = GUI.R()['text1TextColor'])
|
EPOSDataSeparatorText.config(foreground = GUI.R()['text1TextColor'])
|
||||||
EPOSDataSeparatorText.config(relief = GUI.R()['text1Relief'])
|
EPOSDataSeparatorText.config(relief = GUI.R()['text1Relief'])
|
||||||
@@ -1114,7 +1211,7 @@ def window():
|
|||||||
# "<enter> - nowa linia | wciśnięcie przycisku ENTER | \n"
|
# "<enter> - nowa linia | wciśnięcie przycisku ENTER | \n"
|
||||||
EPOSSeparatorEnterInfoLabel = TKttk.Label(editingPresetOSFrame)
|
EPOSSeparatorEnterInfoLabel = TKttk.Label(editingPresetOSFrame)
|
||||||
EPOSSeparatorEnterInfoLabel.config(style = 'label1.TLabel')
|
EPOSSeparatorEnterInfoLabel.config(style = 'label1.TLabel')
|
||||||
EPOSSeparatorEnterInfoLabel.config(text = r'<enter> - nowa linia | wciśnięcie przycisku ENTER | \n')
|
EPOSSeparatorEnterInfoLabel.config(text = (r'<enter> - nowa linia | wciśnięcie przycisku ENTER | \n' + '\n' + 'Niedozwolone znaki: litery, cyfry, *'))
|
||||||
EPOSSeparatorEnterInfoLabel.grid(row = 4, column = 1, columnspan = 2)
|
EPOSSeparatorEnterInfoLabel.grid(row = 4, column = 1, columnspan = 2)
|
||||||
|
|
||||||
###############
|
###############
|
||||||
@@ -1140,19 +1237,19 @@ def window():
|
|||||||
editingPresetDataLocalizationC1Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame)
|
editingPresetDataLocalizationC1Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame)
|
||||||
editingPresetDataLocalizationC1Label.config(style = 'label1.TLabel')
|
editingPresetDataLocalizationC1Label.config(style = 'label1.TLabel')
|
||||||
editingPresetDataLocalizationC1Label.config(text = 'Wiersz')
|
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"
|
# C2 - "Pozycja w wierszu"
|
||||||
editingPresetDataLocalizationC2Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame)
|
editingPresetDataLocalizationC2Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame)
|
||||||
editingPresetDataLocalizationC2Label.config(style = 'label1.TLabel')
|
editingPresetDataLocalizationC2Label.config(style = 'label1.TLabel')
|
||||||
editingPresetDataLocalizationC2Label.config(text = 'Pozycja w wierszu')
|
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"
|
# W1 - "Login"
|
||||||
editingPresetDataLocalizationW1Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame)
|
editingPresetDataLocalizationW1Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame)
|
||||||
editingPresetDataLocalizationW1Label.config(style = 'label2.TLabel')
|
editingPresetDataLocalizationW1Label.config(style = 'label2.TLabel')
|
||||||
editingPresetDataLocalizationW1Label.config(text = 'Login')
|
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)
|
# Lokalizacja loginu (wiersz)
|
||||||
EPDataLocalizationLoginRowVar = TK.IntVar()
|
EPDataLocalizationLoginRowVar = TK.IntVar()
|
||||||
@@ -1160,8 +1257,9 @@ def window():
|
|||||||
EPDataLocalizationLoginRowSpinbox.config(textvariable = EPDataLocalizationLoginRowVar)
|
EPDataLocalizationLoginRowSpinbox.config(textvariable = EPDataLocalizationLoginRowVar)
|
||||||
EPDataLocalizationLoginRowSpinbox.config(from_ = 0)
|
EPDataLocalizationLoginRowSpinbox.config(from_ = 0)
|
||||||
EPDataLocalizationLoginRowSpinbox.config(to = 1000000)
|
EPDataLocalizationLoginRowSpinbox.config(to = 1000000)
|
||||||
|
EPDataLocalizationLoginRowSpinbox.config(state = TK.DISABLED)
|
||||||
EPDataLocalizationLoginRowSpinbox.config(style = 'spinbox1.TSpinbox')
|
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)
|
# Lokalizacja loginu (pozycja w wierszu)
|
||||||
EPDataLocalizationLoginPosInRowVar = TK.IntVar()
|
EPDataLocalizationLoginPosInRowVar = TK.IntVar()
|
||||||
@@ -1169,14 +1267,15 @@ def window():
|
|||||||
EPDataLocalizationLoginPosInRowSpinbox.config(textvariable = EPDataLocalizationLoginPosInRowVar)
|
EPDataLocalizationLoginPosInRowSpinbox.config(textvariable = EPDataLocalizationLoginPosInRowVar)
|
||||||
EPDataLocalizationLoginPosInRowSpinbox.config(from_ = 0)
|
EPDataLocalizationLoginPosInRowSpinbox.config(from_ = 0)
|
||||||
EPDataLocalizationLoginPosInRowSpinbox.config(to = 1000000)
|
EPDataLocalizationLoginPosInRowSpinbox.config(to = 1000000)
|
||||||
|
EPDataLocalizationLoginPosInRowSpinbox.config(state = TK.DISABLED)
|
||||||
EPDataLocalizationLoginPosInRowSpinbox.config(style = 'spinbox1.TSpinbox')
|
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ę"
|
# W2 - "Imię"
|
||||||
editingPresetDataLocalizationW2Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame)
|
editingPresetDataLocalizationW2Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame)
|
||||||
editingPresetDataLocalizationW2Label.config(style = 'label2.TLabel')
|
editingPresetDataLocalizationW2Label.config(style = 'label2.TLabel')
|
||||||
editingPresetDataLocalizationW2Label.config(text = 'Imię')
|
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)
|
# Lokalizacja imienia (wiersz)
|
||||||
EPDataLocalizationFnameRowVar = TK.IntVar()
|
EPDataLocalizationFnameRowVar = TK.IntVar()
|
||||||
@@ -1184,8 +1283,9 @@ def window():
|
|||||||
EPDataLocalizationFnameRowSpinbox.config(textvariable = EPDataLocalizationFnameRowVar)
|
EPDataLocalizationFnameRowSpinbox.config(textvariable = EPDataLocalizationFnameRowVar)
|
||||||
EPDataLocalizationFnameRowSpinbox.config(from_ = 0)
|
EPDataLocalizationFnameRowSpinbox.config(from_ = 0)
|
||||||
EPDataLocalizationFnameRowSpinbox.config(to = 1000000)
|
EPDataLocalizationFnameRowSpinbox.config(to = 1000000)
|
||||||
|
EPDataLocalizationFnameRowSpinbox.config(state = TK.DISABLED)
|
||||||
EPDataLocalizationFnameRowSpinbox.config(style = 'spinbox1.TSpinbox')
|
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)
|
# Lokalizacja imienia (pozycja w wierszu)
|
||||||
EPDataLocalizationFnamePosInRowVar = TK.IntVar()
|
EPDataLocalizationFnamePosInRowVar = TK.IntVar()
|
||||||
@@ -1193,14 +1293,15 @@ def window():
|
|||||||
EPDataLocalizationFnamePosInRowSpinbox.config(textvariable = EPDataLocalizationFnamePosInRowVar)
|
EPDataLocalizationFnamePosInRowSpinbox.config(textvariable = EPDataLocalizationFnamePosInRowVar)
|
||||||
EPDataLocalizationFnamePosInRowSpinbox.config(from_ = 0)
|
EPDataLocalizationFnamePosInRowSpinbox.config(from_ = 0)
|
||||||
EPDataLocalizationFnamePosInRowSpinbox.config(to = 1000000)
|
EPDataLocalizationFnamePosInRowSpinbox.config(to = 1000000)
|
||||||
|
EPDataLocalizationFnamePosInRowSpinbox.config(state = TK.DISABLED)
|
||||||
EPDataLocalizationFnamePosInRowSpinbox.config(style = 'spinbox1.TSpinbox')
|
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"
|
# W3 - "Nazwisko"
|
||||||
editingPresetDataLocalizationW3Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame)
|
editingPresetDataLocalizationW3Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame)
|
||||||
editingPresetDataLocalizationW3Label.config(style = 'label2.TLabel')
|
editingPresetDataLocalizationW3Label.config(style = 'label2.TLabel')
|
||||||
editingPresetDataLocalizationW3Label.config(text = 'Nazwisko')
|
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)
|
# Lokalizacja nazwiska (wiersz)
|
||||||
EPDataLocalizationLnameRowVar = TK.IntVar()
|
EPDataLocalizationLnameRowVar = TK.IntVar()
|
||||||
@@ -1208,8 +1309,9 @@ def window():
|
|||||||
EPDataLocalizationLnameRowSpinbox.config(textvariable = EPDataLocalizationLnameRowVar)
|
EPDataLocalizationLnameRowSpinbox.config(textvariable = EPDataLocalizationLnameRowVar)
|
||||||
EPDataLocalizationLnameRowSpinbox.config(from_ = 0)
|
EPDataLocalizationLnameRowSpinbox.config(from_ = 0)
|
||||||
EPDataLocalizationLnameRowSpinbox.config(to = 1000000)
|
EPDataLocalizationLnameRowSpinbox.config(to = 1000000)
|
||||||
|
EPDataLocalizationLnameRowSpinbox.config(state = TK.DISABLED)
|
||||||
EPDataLocalizationLnameRowSpinbox.config(style = 'spinbox1.TSpinbox')
|
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)
|
# Lokalizacja nazwiska (pozycja w wierszu)
|
||||||
EPDataLocalizationLnamePosInRowVar = TK.IntVar()
|
EPDataLocalizationLnamePosInRowVar = TK.IntVar()
|
||||||
@@ -1217,14 +1319,15 @@ def window():
|
|||||||
EPDataLocalizationLnamePosInRowSpinbox.config(textvariable = EPDataLocalizationLnamePosInRowVar)
|
EPDataLocalizationLnamePosInRowSpinbox.config(textvariable = EPDataLocalizationLnamePosInRowVar)
|
||||||
EPDataLocalizationLnamePosInRowSpinbox.config(from_ = 0)
|
EPDataLocalizationLnamePosInRowSpinbox.config(from_ = 0)
|
||||||
EPDataLocalizationLnamePosInRowSpinbox.config(to = 1000000)
|
EPDataLocalizationLnamePosInRowSpinbox.config(to = 1000000)
|
||||||
|
EPDataLocalizationLnamePosInRowSpinbox.config(state = TK.DISABLED)
|
||||||
EPDataLocalizationLnamePosInRowSpinbox.config(style = 'spinbox1.TSpinbox')
|
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"
|
# W4 - "Szkoła"
|
||||||
editingPresetDataLocalizationW4Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame)
|
editingPresetDataLocalizationW4Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame)
|
||||||
editingPresetDataLocalizationW4Label.config(style = 'label2.TLabel')
|
editingPresetDataLocalizationW4Label.config(style = 'label2.TLabel')
|
||||||
editingPresetDataLocalizationW4Label.config(text = 'Szkoła')
|
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)
|
# Lokalizacja nazwiska (wiersz)
|
||||||
EPDataLocalizationSchoolRowVar = TK.IntVar()
|
EPDataLocalizationSchoolRowVar = TK.IntVar()
|
||||||
@@ -1232,8 +1335,9 @@ def window():
|
|||||||
EPDataLocalizationSchoolRowSpinbox.config(textvariable = EPDataLocalizationSchoolRowVar)
|
EPDataLocalizationSchoolRowSpinbox.config(textvariable = EPDataLocalizationSchoolRowVar)
|
||||||
EPDataLocalizationSchoolRowSpinbox.config(from_ = 0)
|
EPDataLocalizationSchoolRowSpinbox.config(from_ = 0)
|
||||||
EPDataLocalizationSchoolRowSpinbox.config(to = 1000000)
|
EPDataLocalizationSchoolRowSpinbox.config(to = 1000000)
|
||||||
|
EPDataLocalizationSchoolRowSpinbox.config(state = TK.DISABLED)
|
||||||
EPDataLocalizationSchoolRowSpinbox.config(style = 'spinbox1.TSpinbox')
|
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)
|
# Lokalizacja nazwiska (pozycja w wierszu)
|
||||||
EPDataLocalizationSchoolPosInRowVar = TK.IntVar()
|
EPDataLocalizationSchoolPosInRowVar = TK.IntVar()
|
||||||
@@ -1241,14 +1345,15 @@ def window():
|
|||||||
EPDataLocalizationSchoolPosInRowSpinbox.config(textvariable = EPDataLocalizationSchoolPosInRowVar)
|
EPDataLocalizationSchoolPosInRowSpinbox.config(textvariable = EPDataLocalizationSchoolPosInRowVar)
|
||||||
EPDataLocalizationSchoolPosInRowSpinbox.config(from_ = 0)
|
EPDataLocalizationSchoolPosInRowSpinbox.config(from_ = 0)
|
||||||
EPDataLocalizationSchoolPosInRowSpinbox.config(to = 1000000)
|
EPDataLocalizationSchoolPosInRowSpinbox.config(to = 1000000)
|
||||||
|
EPDataLocalizationSchoolPosInRowSpinbox.config(state = TK.DISABLED)
|
||||||
EPDataLocalizationSchoolPosInRowSpinbox.config(style = 'spinbox1.TSpinbox')
|
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"
|
# W5 - "Klasa"
|
||||||
editingPresetDataLocalizationW5Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame)
|
editingPresetDataLocalizationW5Label = TKttk.Label(editingPresetDataLocalizationSettingsFrame)
|
||||||
editingPresetDataLocalizationW5Label.config(style = 'label2.TLabel')
|
editingPresetDataLocalizationW5Label.config(style = 'label2.TLabel')
|
||||||
editingPresetDataLocalizationW5Label.config(text = 'Klasa')
|
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)
|
# Lokalizacja nazwiska (wiersz)
|
||||||
EPDataLocalizationClassRowVar = TK.IntVar()
|
EPDataLocalizationClassRowVar = TK.IntVar()
|
||||||
@@ -1256,8 +1361,9 @@ def window():
|
|||||||
EPDataLocalizationClassRowSpinbox.config(textvariable = EPDataLocalizationClassRowVar)
|
EPDataLocalizationClassRowSpinbox.config(textvariable = EPDataLocalizationClassRowVar)
|
||||||
EPDataLocalizationClassRowSpinbox.config(from_ = 0)
|
EPDataLocalizationClassRowSpinbox.config(from_ = 0)
|
||||||
EPDataLocalizationClassRowSpinbox.config(to = 1000000)
|
EPDataLocalizationClassRowSpinbox.config(to = 1000000)
|
||||||
|
EPDataLocalizationClassRowSpinbox.config(state = TK.DISABLED)
|
||||||
EPDataLocalizationClassRowSpinbox.config(style = 'spinbox1.TSpinbox')
|
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)
|
# Lokalizacja nazwiska (pozycja w wierszu)
|
||||||
EPDataLocalizationClassPosInRowVar = TK.IntVar()
|
EPDataLocalizationClassPosInRowVar = TK.IntVar()
|
||||||
@@ -1265,8 +1371,16 @@ def window():
|
|||||||
EPDataLocalizationClassPosInRowSpinbox.config(textvariable = EPDataLocalizationClassPosInRowVar)
|
EPDataLocalizationClassPosInRowSpinbox.config(textvariable = EPDataLocalizationClassPosInRowVar)
|
||||||
EPDataLocalizationClassPosInRowSpinbox.config(from_ = 0)
|
EPDataLocalizationClassPosInRowSpinbox.config(from_ = 0)
|
||||||
EPDataLocalizationClassPosInRowSpinbox.config(to = 1000000)
|
EPDataLocalizationClassPosInRowSpinbox.config(to = 1000000)
|
||||||
|
EPDataLocalizationClassPosInRowSpinbox.config(state = TK.DISABLED)
|
||||||
EPDataLocalizationClassPosInRowSpinbox.config(style = 'spinbox1.TSpinbox')
|
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: '<enter><enter>'\nSeparator pomiedzy wierszami: '<enter>'\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.config(style = 'layoutFrame.TFrame')
|
||||||
editingPresetButtonsFrame.pack(fill = TK.X, side = TK.BOTTOM, pady = 10)
|
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 loadingList.get() not in FMT.getList():
|
||||||
if MSG('A0001', False):
|
if MSG('A0001', False):
|
||||||
studentVar = EPOSTypeVar.get()
|
editingPresetSave()
|
||||||
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())
|
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
if MSG('A0002', False):
|
if MSG('A0002', False):
|
||||||
studentVar = EPOSTypeVar.get()
|
editingPresetSave()
|
||||||
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())
|
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
editingPresetSaveButton = TKttk.Button(editingPresetButtonsFrame)
|
editingPresetSaveButton = TKttk.Button(editingPresetButtonsFrame)
|
||||||
editingPresetSaveButton.config(command = editingPresetSaveAction)
|
editingPresetSaveButton.config(command = editingPresetSaveButtonAction)
|
||||||
editingPresetSaveButton.config(state = TK.DISABLED)
|
editingPresetSaveButton.config(state = TK.DISABLED)
|
||||||
editingPresetSaveButton.config(style = 'button1.TButton')
|
editingPresetSaveButton.config(style = 'button1.TButton')
|
||||||
editingPresetSaveButton.config(width = GUI.R()['editingPresetSaveButtonWidth'])
|
editingPresetSaveButton.config(width = GUI.R()['editingPresetSaveButtonWidth'])
|
||||||
@@ -1466,10 +1507,7 @@ def window():
|
|||||||
loadingButton['state'] = TK.NORMAL
|
loadingButton['state'] = TK.NORMAL
|
||||||
EPOSTypeStudentRadiobutton['state'] = TK.DISABLED
|
EPOSTypeStudentRadiobutton['state'] = TK.DISABLED
|
||||||
EPOSTypeTeacherRadiobutton['state'] = TK.DISABLED
|
EPOSTypeTeacherRadiobutton['state'] = TK.DISABLED
|
||||||
if formatFileContent['student']:
|
EPOSTypeVar.set(formatFileContent['student'])
|
||||||
EPOSTypeVar.set('s')
|
|
||||||
else:
|
|
||||||
EPOSTypeVar.set('t')
|
|
||||||
EPOSPersonSeparatorEntry['state'] = TK.DISABLED
|
EPOSPersonSeparatorEntry['state'] = TK.DISABLED
|
||||||
EPOSPersonSeparatorVar.set(formatFileContent['personSeparator'])
|
EPOSPersonSeparatorVar.set(formatFileContent['personSeparator'])
|
||||||
EPOSRowSeparatorEntry['state'] = TK.DISABLED
|
EPOSRowSeparatorEntry['state'] = TK.DISABLED
|
||||||
|
|||||||
Reference in New Issue
Block a user