2020-08-06 18:38:31 +02:00
"""
# Generator CSV
# Wersja 4.0
# Autorzy: Mateusz Skoczek
2020-09-02 22:14:59 +02:00
# styczeń 2019 - wrzesień 2020
2020-08-06 18:38:31 +02:00
# dla ZSP Sobolew
"""
2020-09-08 11:01:14 +02:00
# ------------------------------------- # Import bibliotek # ------------------------------------ #
# Biblioteki główne
import sys as SS
import os as OS
import time as TM
import codecs as CD
import pathlib as PT
import shutil as SU
# Biblioteki interfejsu graficznego
import tkinter as TK
from tkinter import ttk as TKttk
from tkinter import messagebox as TKmsb
from tkinter import filedialog as TKfld
from PIL import ImageTk as PLitk
from PIL import Image as PLimg
2020-09-02 22:14:59 +02:00
# --------------------------------- # Główne zmienne globalne # --------------------------------- #
2020-08-06 18:38:31 +02:00
2020-08-08 01:53:49 +02:00
class VAR :
2020-08-27 13:55:50 +02:00
# Informacje o programie
2020-08-06 18:38:31 +02:00
programName = ' Generator CSV '
programVersion = ' 4.0 '
2020-09-01 19:15:30 +02:00
programVersionStage = ' Beta '
2020-09-09 00:01:02 +02:00
programVersionBuild = ' 20253 '
2020-08-06 18:38:31 +02:00
programCustomer = ' ZSP Sobolew '
programAuthors = [ ' Mateusz Skoczek ' ]
2020-08-28 14:04:42 +02:00
programToW = [ ' styczeń ' , ' 2019 ' , ' wrzesień ' , ' 2020 ' ]
2020-08-06 18:38:31 +02:00
2020-08-27 13:55:50 +02:00
# Dozwolone kodowanie plików
2020-09-01 19:15:30 +02:00
allowedCoding = [ ' utf-8 ' , ' ANSI ' , ' iso-8859-2 ' ]
2020-08-27 13:55:50 +02:00
# Dozwolone znaki
allowedCharactersInSeparator = [ ' ` ' , ' ~ ' , ' ! ' , ' @ ' , ' # ' , ' $ ' , ' % ' , ' ^ ' , ' & ' , ' ( ' , ' ) ' , ' - ' , ' _ ' , ' = ' , ' + ' , ' [ ' , ' ] ' , ' ' , ' ? ' , ' / ' , ' > ' , ' . ' , ' < ' , ' , ' , ' " ' , " ' " , ' : ' , ' ; ' , ' | ' ]
2020-09-08 11:01:14 +02:00
# Katalog APPDATA
appdataPath = PT . Path . home ( ) / ' Appdata/Roaming '
2020-08-06 18:38:31 +02:00
2020-09-02 22:14:59 +02:00
# -------------------------------------- # Okna dialogowe # ------------------------------------- #
2020-08-06 18:38:31 +02:00
2020-09-02 22:14:59 +02:00
# Lista komunikatów
2020-08-06 18:38:31 +02:00
MSGlist = {
' E0000 ' : ' none ' ,
' E0001 ' : ' Wystąpił błąd podczas inicjalizacji katalogu z plikami konfiguracyjnymi programu w katalogu % APPDATA % ' ,
' E0002 ' : ' Wystąpił błąd podczas ładowania pliku konfiguracyjnego (config.cfg) ' ,
' E0003 ' : ' Niepoprawne dane w pliku konfiguracyjnym (config.cfg) ' ,
' E0004 ' : ' Wystąpił błąd podczas ładowania pliku stylu (style.cfg) ' ,
' E0005 ' : ' Niepoprawne dane w pliku stylu (style.cfg) ' ,
' E0006 ' : ' Niepoprawne dane w pliku formatu ' ,
2020-08-07 22:16:01 +02:00
' E0007 ' : ' Wymagany przynajmniej jeden plik wejściowy ' ,
' E0008 ' : ' Nie można odnaleźć jednego z powyższych plików ' ,
' E0009 ' : ' Nie można odnaleźć jednego z powyższych format presetów ' ,
2020-08-21 00:40:52 +02:00
' E0010 ' : ' Nie można przetworzyć danych z plików wejściowych z pomocą podanych format presetów ' ,
' E0011 ' : ' Niepoprawne dane w plikach wejściowych ' ,
' E0012 ' : ' Nie można przetworzyć danych na format wyjściowy ' ,
' E0013 ' : ' Nie można utworzyć plików wejściowych ' ,
' E0014 ' : ' Nie można zapisać plików wejściowych ' ,
2020-08-28 01:16:22 +02:00
' E0015 ' : ' Nie można usunąć wybranych format presetów ' ,
2020-08-28 21:34:16 +02:00
' E0016 ' : ' Nie można uruchomić pliku instrukcji (documentation/index.html) ' ,
2020-09-01 19:15:30 +02:00
' E0017 ' : ' Nie można zapisać pliku formatu ' ,
2020-09-02 22:14:59 +02:00
' A0001 ' : ' Czy chcesz zapisać? Zostanie utworzony nowy plik ' ,
' A0002 ' : ' Czy chcesz zapisać? Plik zostanie nadpisany ' ,
' A0003 ' : ' Czy chcesz rozpocząć przetwarzanie plików? ' ,
' A0004 ' : ' Czy chcesz zapisać? ' ,
' A0005 ' : ' Czy na pewno chcesz przywrócić domyślne ustawienia ogólne? ' ,
' A0006 ' : ' Czy na pewno chcesz przywrócić domyślne ustawienia wyglądu? ' ,
' A0007 ' : ' Czy na pewno chcesz usunąc zaznaczone format presety? ' ,
2020-09-08 11:01:14 +02:00
' A0008 ' : ' Nie znaleziono informacji o wersji programu w katalogu programu w APPDATA. Nastąpi zresetowanie katalogu programu w APPDATA oraz utworzenie kopii zapasowej dotychczasowej zawartości. Czy chcesz kontynuować? ' ,
' A0009 ' : ' Została zainstalowana nowa wersja programu. Nastąpi zresetowanie katalogu programu w APPDATA oraz utworzenie kopii zapasowej dotychczasowej zawartości. Czy chcesz kontynuować? ' ,
2020-09-02 22:14:59 +02:00
' I0001 ' : ' Operacja ukończona pomyślnie ' ,
' I0002 ' : ' Aplikacja zostanie zamknięta w celu przeładowania ustawień ' ,
2020-08-06 18:38:31 +02:00
}
2020-09-02 22:14:59 +02:00
# Funkcja odpowiedzialna za wywoływanie komunikatów dialogowych
2020-08-06 18:38:31 +02:00
def MSG ( code , terminate , * optionalInfo ) :
try :
optionalInfo [ 0 ]
except :
2020-09-02 22:14:59 +02:00
optionalInfo = [ ' ' ]
2020-08-06 18:38:31 +02:00
# Błędy
if code [ 0 ] == ' E ' :
TKmsb . showerror ( ' Wystąpił błąd! ' , ' %s \n %s ' % ( MSGlist [ code ] , optionalInfo [ 0 ] ) )
if terminate :
SS . exit ( 0 )
# Informacja
elif code [ 0 ] == ' I ' :
2020-08-21 00:40:52 +02:00
TKmsb . showinfo ( ' Informacja ' , ' %s \n %s ' % ( MSGlist [ code ] , optionalInfo [ 0 ] ) )
2020-08-06 18:38:31 +02:00
if terminate :
SS . exit ( 0 )
# Ostrzeżenie
elif code [ 0 ] == ' W ' :
TKmsb . showwarning ( ' Ostrzeżenie ' , ' %s \n %s ' % ( MSGlist [ code ] , optionalInfo [ 0 ] ) )
if terminate :
SS . exit ( 0 )
# Zapytania
elif code [ 0 ] == ' A ' :
if TKmsb . askokcancel ( ' Pytanie ' , ' %s \n %s ' % ( MSGlist [ code ] , optionalInfo [ 0 ] ) ) :
return True
else :
return False
2020-09-08 11:01:14 +02:00
# ------------------------- # Sprawdzanie katalogu programu w APPDATA # ------------------------- #
2020-09-01 19:15:30 +02:00
2020-09-08 11:01:14 +02:00
class checkAppdata :
def __init__ ( self ) :
if ' Generator CSV ' in [ x for x in OS . listdir ( VAR . appdataPath ) ] :
if ' version ' in [ x for x in OS . listdir ( str ( VAR . appdataPath ) + ' \ Generator CSV ' ) ] :
versionFile = CD . open ( ( str ( VAR . appdataPath ) + r ' \ Generator CSV \ version ' ) , ' r ' , ' utf-8 ' )
if versionFile . read ( ) == VAR . programVersionBuild :
versionFile . close ( )
if ' config.cfg ' not in [ x for x in OS . listdir ( str ( VAR . appdataPath ) + ' \ Generator CSV ' ) ] :
self . __restoreCFG ( ' config ' )
if ' style.cfg ' not in [ x for x in OS . listdir ( str ( VAR . appdataPath ) + ' \ Generator CSV ' ) ] :
self . __restoreCFG ( ' style ' )
if ' format-presets ' not in [ x for x in OS . listdir ( str ( VAR . appdataPath ) + ' \ Generator CSV ' ) ] :
self . __createFormatPresetsDir ( )
else :
versionFile . close ( )
if MSG ( ' A0009 ' , False ) :
self . __resetAppdata ( )
MSG ( ' I0002 ' , True )
else :
SS . exit ( 0 )
else :
if MSG ( ' A0008 ' , False ) :
self . __resetAppdata ( )
MSG ( ' I0002 ' , True )
else :
SS . exit ( 0 )
else :
self . __buildAppdata ( )
2020-09-01 19:15:30 +02:00
2020-09-08 11:01:14 +02:00
# Budowanie katalogu programu
def __buildAppdata ( self ) :
try :
OS . mkdir ( str ( VAR . appdataPath ) + ' \ Generator CSV ' )
2020-09-01 19:15:30 +02:00
2020-09-08 11:01:14 +02:00
versionFile = CD . open ( ( str ( VAR . appdataPath ) + r ' \ Generator CSV \ version ' ) , ' w ' , ' utf-8 ' )
versionFile . write ( VAR . programVersionBuild )
versionFile . close ( )
except Exception as exceptInfo :
MSG ( ' E0001 ' , True , exceptInfo )
2020-09-01 19:15:30 +02:00
2020-09-08 11:01:14 +02:00
self . __restoreCFG ( ' config ' )
self . __restoreCFG ( ' style ' )
self . __createFormatPresetsDir ( )
2020-09-01 19:15:30 +02:00
2020-09-08 11:01:14 +02:00
# Resetowanie katalogu programu
def __resetAppdata ( self ) :
try :
if ' Generator CSV_old ' in [ x for x in OS . listdir ( str ( VAR . appdataPath ) + ' \ Generator CSV ' ) ] :
SU . rmtree ( str ( VAR . appdataPath ) + ' \ Generator CSV \ Generator CSV_old ' )
OS . rename ( ( str ( VAR . appdataPath ) + ' \ Generator CSV ' ) , ( str ( VAR . appdataPath ) + ' \ Generator CSV_old ' ) )
except Exception as exceptInfo :
MSG ( ' E0001 ' , True , exceptInfo )
2020-08-06 18:38:31 +02:00
2020-09-08 11:01:14 +02:00
self . __buildAppdata ( )
2020-08-06 18:40:38 +02:00
2020-08-21 00:40:52 +02:00
try :
2020-09-08 11:01:14 +02:00
SU . move ( ( str ( VAR . appdataPath ) + ' \ Generator CSV_old ' ) , ( str ( VAR . appdataPath ) + ' \ Generator CSV \ Generator CSV_old ' ) )
except Exception as exceptInfo :
MSG ( ' E0001 ' , True , exceptInfo )
# Przywracanie plików konfiguracyjnych
def __restoreCFG ( self , configFileName ) :
try :
SU . copy ( ( ' configs \ %s .cfg ' % configFileName ) , str ( VAR . appdataPath ) + ( ' \ Generator CSV \ %s .cfg ' % configFileName ) )
2020-08-21 00:40:52 +02:00
except Exception as exceptInfo :
MSG ( ' E0001 ' , True , exceptInfo )
2020-09-08 11:01:14 +02:00
# Tworzenie katalogu przechowującego format presety
def __createFormatPresetsDir ( self ) :
try :
OS . mkdir ( str ( VAR . appdataPath ) + r ' \ Generator CSV \ format-presets ' )
except Exception as exceptInfo :
MSG ( ' E0001 ' , True , exceptInfo )
2020-08-21 00:40:52 +02:00
checkAppdata ( )
2020-08-06 18:38:31 +02:00
2020-09-08 11:01:14 +02:00
# ------------------ # Ładowanie głównego pliku konfiguracyjnego 'config.cfg' # ----------------- #
2020-08-06 18:38:31 +02:00
class CFG :
2020-09-08 11:01:14 +02:00
def R ( self , record ) :
self . __checkIfFileExist ( False )
content = { }
for x in CD . open ( ( str ( VAR . appdataPath ) + ' \ Generator CSV \ config.cfg ' ) , ' r ' , ' utf-8 ' ) . read ( ) . strip ( ' \r ' ) . split ( ' \n ' ) :
x = x . split ( ' = ' )
try :
name = x [ 0 ] . split ( ' ( ' ) [ 0 ]
var = x [ 1 ]
type = x [ 0 ] . split ( ' ( ' ) [ 1 ] . strip ( ' ) ' )
content [ name ] = [ var , type ]
except :
continue
checkingOutput = self . __checkIfRecordExist ( content , record )
if not checkingOutput [ 0 ] :
MSG ( ' E0003 ' , True , checkingOutput [ 1 ] )
var = content [ record ]
if var [ 1 ] == ' S ' :
# String
var = var [ 0 ] . strip ( ' \r ' )
return var
elif var [ 1 ] == ' Sc ' :
# Integer
checkingOutput = self . __checkSc ( record , var [ 0 ] )
if checkingOutput [ 0 ] :
return checkingOutput [ 1 ]
else :
MSG ( ' E0003 ' , True , checkingOutput [ 1 ] )
elif var [ 1 ] == ' I ' :
# Integer
checkingOutput = self . __checkI ( False , record , var [ 0 ] )
if checkingOutput [ 0 ] :
return checkingOutput [ 1 ]
else :
MSG ( ' E0003 ' , True , checkingOutput [ 1 ] )
elif var [ 1 ] == ' D ' :
# Date (DD.MM.RRRR HH:MM:SS)
checkingOutput = self . __checkD ( False , record , var [ 0 ] )
if checkingOutput [ 0 ] :
return checkingOutput [ 1 ]
else :
MSG ( ' E0003 ' , True , checkingOutput [ 1 ] )
elif var [ 1 ] == ' MSAs ' :
# Multiple Specified Arrays - schoolData
checkingOutput = self . __checkMSAs ( False , record , var [ 0 ] )
if checkingOutput [ 0 ] :
return checkingOutput [ 1 ]
else :
MSG ( ' E0003 ' , True , checkingOutput [ 1 ] )
elif var [ 1 ] == ' B ' :
# Boolean
checkingOutput = self . __checkB ( False , record , var [ 0 ] )
if checkingOutput [ 0 ] :
return checkingOutput [ 1 ]
else :
MSG ( ' E0003 ' , True , checkingOutput [ 1 ] )
else :
MSG ( ' E0003 ' , True , ' Nie można rozpoznać typu klucza %s ' % record )
def W ( self , changes ) :
self . __checkIfFileExist ( True )
file = CD . open ( str ( VAR . appdataPath ) + ' \ Generator CSV \ config.cfg ' , ' r ' , ' utf-8 ' ) . read ( ) . split ( ' \n ' )
if file [ - 1 ] == ' ' :
file = file [ : - 1 ]
content = { }
for x in file :
x = x . split ( ' = ' )
try :
name = x [ 0 ] . split ( ' ( ' ) [ 0 ]
var = x [ 1 ]
type = x [ 0 ] . split ( ' ( ' ) [ 1 ] . strip ( ' ) ' )
content [ name ] = [ var , type ]
except Exception as exceptInfo :
MSG ( ' E0003 ' , False , exceptInfo )
for x in changes :
name = x
var = changes [ name ]
type = ( content [ name ] ) [ 1 ]
if type == ' S ' :
# String
pass
elif type == ' Sc ' :
# Integer
checkingOutput = self . __checkSc ( name , var )
if checkingOutput [ 0 ] :
var = checkingOutput [ 1 ]
else :
MSG ( ' E0006 ' , False , checkingOutput [ 1 ] )
return False
elif type == ' I ' :
# Integer
checkingOutput = self . __checkI ( True , name , var )
if checkingOutput [ 0 ] :
var = checkingOutput [ 1 ]
else :
MSG ( ' E0006 ' , False , checkingOutput [ 1 ] )
return False
elif type == ' D ' :
# Date (DD.MM.RRRR HH:MM:SS)
checkingOutput = self . __checkD ( True , name , var )
if checkingOutput [ 0 ] :
var = checkingOutput [ 1 ]
else :
MSG ( ' E0006 ' , False , checkingOutput [ 1 ] )
return False
elif type == ' MSAs ' :
# Multiple Specified Arrays - schoolData
checkingOutput = self . __checkMSAs ( True , name , var )
if checkingOutput [ 0 ] :
var = checkingOutput [ 1 ]
else :
MSG ( ' E0006 ' , False , checkingOutput [ 1 ] )
return False
elif type == ' B ' :
# Boolean
checkingOutput = self . __checkB ( True , name , var )
if checkingOutput [ 0 ] :
var = checkingOutput [ 1 ]
else :
MSG ( ' E0006 ' , False , checkingOutput [ 1 ] )
return False
else :
MSG ( ' E0003 ' , False , ' Nie można rozpoznać typu klucza %s ' % name )
return False
content [ name ] = [ var , type ]
with CD . open ( str ( VAR . appdataPath ) + ' \ Generator CSV \ config.cfg ' , ' w ' , ' utf-8 ' ) as file :
for x in content :
file . write ( ' %s ( %s ) = %s \n ' % ( x , ( content [ x ] ) [ 1 ] , ( content [ x ] [ 0 ] ) ) )
return True
2020-08-07 22:16:01 +02:00
# Funkcje sprawdzające istnienie
2020-08-08 01:53:49 +02:00
def __checkIfFileExist ( self , write ) :
2020-08-06 18:38:31 +02:00
if write :
try :
2020-08-21 00:40:52 +02:00
checkAppdata ( )
2020-09-08 11:01:14 +02:00
file = open ( ( str ( VAR . appdataPath ) + ' \ Generator CSV \ config.cfg ' ) , ' a ' )
2020-08-06 18:38:31 +02:00
except Exception as exceptInfo :
2020-08-21 00:40:52 +02:00
MSG ( ' E0002 ' , True , exceptInfo )
2020-08-06 18:38:31 +02:00
return False
else :
if not file . writable ( ) :
MSG ( ' E0002 ' , False , ' Plik tylko do odczytu ' )
return False
else :
return True
else :
try :
2020-08-21 00:40:52 +02:00
checkAppdata ( )
2020-09-08 11:01:14 +02:00
open ( str ( VAR . appdataPath ) + ' \ Generator CSV \ config.cfg ' )
2020-08-06 18:38:31 +02:00
except Exception as exceptInfo :
MSG ( ' E0002 ' , True , exceptInfo )
2020-08-07 22:16:01 +02:00
def __checkIfRecordExist ( self , content , record ) :
if record in list ( content . keys ( ) ) :
return [ True ]
else :
return [ False , ' Brak danych - klucz: %s ' % record ]
# Funkcje sprawdzające poprawność recordu
def __checkI ( self , write , record , var ) :
if write :
2020-08-31 23:46:14 +02:00
try :
var = int ( var )
except :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
2020-08-28 01:16:22 +02:00
var = str ( var )
2020-08-07 22:16:01 +02:00
else :
try :
var = int ( var )
except :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
return [ True , var ]
def __checkD ( self , write , record , var ) :
if write :
2020-08-28 01:16:22 +02:00
varX = ' '
if var [ ' D ' ] == None :
varX + = ' * '
else :
2020-08-31 23:46:14 +02:00
try :
var [ ' D ' ] = int ( var [ ' D ' ] )
except :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
2020-09-01 19:15:30 +02:00
if int ( var [ ' D ' ] ) > 31 or int ( var [ ' D ' ] ) < 1 :
2020-08-31 23:46:14 +02:00
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
2020-08-28 01:16:22 +02:00
day = str ( var [ ' D ' ] )
if len ( day ) == 1 :
day = ' 0 ' + day
varX + = day
varX + = ' . '
if var [ ' M ' ] == None :
varX + = ' * '
else :
2020-08-31 23:46:14 +02:00
try :
var [ ' M ' ] = int ( var [ ' M ' ] )
except :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
2020-09-01 19:15:30 +02:00
if int ( var [ ' M ' ] ) > 12 or int ( var [ ' M ' ] ) < 1 :
2020-08-31 23:46:14 +02:00
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
2020-08-28 01:16:22 +02:00
month = str ( var [ ' M ' ] )
if len ( month ) == 1 :
month = ' 0 ' + month
varX + = month
varX + = ' . '
if var [ ' Y ' ] == None :
varX + = ' * '
else :
2020-08-31 23:46:14 +02:00
try :
var [ ' Y ' ] = int ( var [ ' Y ' ] )
except :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
if int ( var [ ' Y ' ] ) == 0 :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
2020-08-28 01:16:22 +02:00
varX + = str ( var [ ' Y ' ] )
varX + = ' '
if var [ ' h ' ] == None :
varX + = ' * '
else :
2020-08-31 23:46:14 +02:00
try :
var [ ' h ' ] = int ( var [ ' h ' ] )
except :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
if int ( var [ ' h ' ] ) > 23 or int ( var [ ' h ' ] ) < 1 :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
2020-08-28 01:16:22 +02:00
hour = str ( var [ ' h ' ] )
if len ( hour ) == 1 :
hour = ' 0 ' + hour
varX + = hour
varX + = ' : '
if var [ ' m ' ] == None :
varX + = ' * '
else :
2020-08-31 23:46:14 +02:00
try :
var [ ' m ' ] = int ( var [ ' m ' ] )
except :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
if int ( var [ ' m ' ] ) > 59 or int ( var [ ' m ' ] ) < 0 :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
2020-08-28 01:16:22 +02:00
minute = str ( var [ ' m ' ] )
if len ( minute ) == 1 :
minute = ' 0 ' + minute
varX + = minute
varX + = ' : '
if var [ ' s ' ] == None :
varX + = ' * '
else :
2020-08-31 23:46:14 +02:00
try :
var [ ' s ' ] = int ( var [ ' s ' ] )
except :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
if int ( var [ ' s ' ] ) > 59 or int ( var [ ' s ' ] ) < 0 :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
2020-08-28 01:16:22 +02:00
seconds = str ( var [ ' s ' ] )
if len ( seconds ) == 1 :
seconds = ' 0 ' + seconds
varX + = seconds
var = varX
2020-08-07 22:16:01 +02:00
else :
varToReturn = { }
var = var . split ( ' ' )
try :
var [ 0 ] = var [ 0 ] . split ( ' . ' )
var [ 1 ] = var [ 1 ] . split ( ' : ' )
var = var [ 0 ] + var [ 1 ]
dateLabels = [ ' D ' , ' M ' , ' Y ' , ' h ' , ' m ' , ' s ' ]
if len ( var ) != len ( dateLabels ) :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
index = 0
for x in var :
2020-09-01 19:15:30 +02:00
x = x . strip ( ' \r ' )
2020-08-07 22:16:01 +02:00
if x != ' * ' :
2020-08-31 23:46:14 +02:00
try :
x = int ( x )
except :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
2020-08-07 22:16:01 +02:00
varToReturn [ dateLabels [ index ] ] = int ( x )
else :
varToReturn [ dateLabels [ index ] ] = None
index + = 1
except :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
var = varToReturn
return [ True , var ]
2020-08-21 00:40:52 +02:00
def __checkMSAs ( self , write , record , var ) :
if write :
2020-08-28 01:16:22 +02:00
varX = [ ]
while var . count ( ' ' ) :
var . remove ( ' ' )
for x in var :
check = x . split ( ' | ' )
if len ( check ) != 3 :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
try :
checkX = int ( check [ 1 ] )
except :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
if not ( check [ 2 ] == ' 0 ' or check [ 2 ] == ' 1 ' ) :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
x = x . replace ( ' | ' , ' , ' )
x = ' [ ' + x + ' ] '
varX . append ( x )
var = ' | ' . join ( varX )
2020-08-21 00:40:52 +02:00
else :
var = var . split ( ' | ' )
var = [ x . strip ( ' \r ' ) . strip ( ' [ ' ) . strip ( ' ] ' ) . split ( ' , ' ) for x in var ]
newVar = [ ]
for x in var :
if len ( x ) != 3 :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
try :
if x [ 2 ] == ' 0 ' :
x [ 2 ] = False
elif x [ 2 ] == ' 1 ' :
x [ 2 ] = True
else :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
x = [ x [ 0 ] , int ( x [ 1 ] ) , x [ 2 ] ]
newVar . append ( x )
except :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
var = newVar
return [ True , var ]
2020-08-28 01:16:22 +02:00
def __checkSc ( self , record , var ) :
var = var . strip ( ' \r ' )
if var not in VAR . allowedCoding :
return [ False , ' Niepoprawne dane - klucz: %s ' % record ]
return [ True , var ]
2020-09-01 19:15:30 +02:00
def __checkB ( self , write , record , var ) :
if write :
if var :
var = ' 1 '
else :
var = ' 0 '
else :
try :
var = int ( var )
except :
return [ False , ' Niepoprawne dane - klucz: %s ' % record ]
if var != 0 and var != 1 :
return [ False , ' Niepoprawne dane - klucz: %s ' % record ]
else :
if var == 0 :
var = False
else :
var = True
return [ True , var ]
2020-08-28 01:16:22 +02:00
2020-08-21 00:40:52 +02:00
2020-08-07 22:16:01 +02:00
2020-09-08 11:01:14 +02:00
CFG = CFG ( )
# -------------------- # Ładowanie pliku konfiguracyjnego stylu 'style.cfg' # ------------------- #
class GUI :
# Odczytywanie pojedyńczej zmiennej z pliku
2020-08-07 22:16:01 +02:00
def R ( self , record ) :
2020-09-08 11:01:14 +02:00
self . __checkIfFileExist ( )
2020-08-06 18:38:31 +02:00
content = { }
2020-09-08 11:01:14 +02:00
for x in CD . open ( ( str ( VAR . appdataPath ) + ' \ Generator CSV \ style.cfg ' ) , ' r ' , ' utf-8 ' ) . read ( ) . strip ( ' \r ' ) . split ( ' \n ' ) :
2020-08-06 18:38:31 +02:00
x = x . split ( ' = ' )
try :
2020-08-07 22:16:01 +02:00
name = x [ 0 ] . split ( ' ( ' ) [ 0 ]
var = x [ 1 ]
type = x [ 0 ] . split ( ' ( ' ) [ 1 ] . strip ( ' ) ' )
2020-09-08 11:01:14 +02:00
content [ name ] = [ var . strip ( ' \r ' ) , type ]
2020-08-06 18:38:31 +02:00
except :
continue
2020-08-07 22:16:01 +02:00
checkingOutput = self . __checkIfRecordExist ( content , record )
if not checkingOutput [ 0 ] :
2020-09-08 11:01:14 +02:00
MSG ( ' E0005 ' , True , checkingOutput [ 1 ] )
2020-08-07 22:16:01 +02:00
var = content [ record ]
2020-09-08 11:01:14 +02:00
if var [ 1 ] == ' I ' :
2020-08-28 01:16:22 +02:00
# Integer
2020-09-08 11:01:14 +02:00
checkingOutput = self . __checkI ( record , var [ 0 ] )
2020-08-28 01:16:22 +02:00
if checkingOutput [ 0 ] :
return checkingOutput [ 1 ]
else :
2020-09-08 11:01:14 +02:00
MSG ( ' E0005 ' , True , checkingOutput [ 1 ] )
elif var [ 1 ] == ' B ' :
# Boolean
checkingOutput = self . __checkB ( record , var [ 0 ] )
2020-08-07 22:16:01 +02:00
if checkingOutput [ 0 ] :
return checkingOutput [ 1 ]
else :
2020-09-08 11:01:14 +02:00
MSG ( ' E0005 ' , True , checkingOutput [ 1 ] )
elif var [ 1 ] == ' C ' :
# Color
checkingOutput = self . __checkC ( record , var [ 0 ] )
2020-08-07 22:16:01 +02:00
if checkingOutput [ 0 ] :
return checkingOutput [ 1 ]
else :
2020-09-08 11:01:14 +02:00
MSG ( ' E0005 ' , True , checkingOutput [ 1 ] )
elif var [ 1 ] == ' P ' :
# Path
checkingOutput = self . __checkP ( record , var [ 0 ] )
if checkingOutput [ 0 ] :
return checkingOutput [ 1 ]
2020-08-21 00:40:52 +02:00
else :
2020-09-08 11:01:14 +02:00
MSG ( ' E0005 ' , True , checkingOutput [ 1 ] )
elif ( var [ 1 ] ) [ : 2 ] == ' FA ' :
# From Array
checkingOutput = self . __checkFA ( record , var [ 0 ] , ( var [ 1 ] ) [ 2 : ] )
2020-09-01 19:15:30 +02:00
if checkingOutput [ 0 ] :
return checkingOutput [ 1 ]
else :
2020-09-08 11:01:14 +02:00
MSG ( ' E0005 ' , True , checkingOutput [ 1 ] )
elif var [ 1 ] == ' F ' :
# Font
checkingOutput = self . __checkF ( record , var [ 0 ] )
if checkingOutput [ 0 ] :
return checkingOutput [ 1 ]
else :
MSG ( ' E0005 ' , True , checkingOutput [ 1 ] )
2020-08-06 18:38:31 +02:00
else :
2020-09-08 11:01:14 +02:00
MSG ( ' E0005 ' , True , ' Nie można rozpoznać typu klucza %s ' % record )
2020-08-07 22:16:01 +02:00
2020-08-08 01:53:49 +02:00
# Funkcje sprawdzające istnienie
def __checkIfFileExist ( self ) :
2020-08-06 18:38:31 +02:00
try :
2020-08-21 00:40:52 +02:00
checkAppdata ( )
2020-09-08 11:01:14 +02:00
open ( str ( VAR . appdataPath ) + ' \ Generator CSV \ style.cfg ' )
2020-08-06 18:38:31 +02:00
except Exception as exceptInfo :
2020-08-21 00:40:52 +02:00
checkAppdata ( )
2020-08-08 01:53:49 +02:00
def __checkIfRecordExist ( self , content , record ) :
if record in list ( content . keys ( ) ) :
return [ True ]
else :
return [ False , ' Brak danych - klucz: %s ' % record ]
2020-08-06 18:38:31 +02:00
2020-08-08 01:53:49 +02:00
# Funkcje sprawdzające poprawność rekordu
def __checkI ( self , record , var ) :
try :
var = int ( var )
except :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
return [ True , var ]
def __checkB ( self , record , var ) :
try :
var = int ( var )
except :
return [ False , ' Niepoprawne dane - klucz: %s ' % record ]
if var != 0 and var != 1 :
return [ False , ' Niepoprawne dane - klucz: %s ' % record ]
else :
if var == 0 :
var = False
else :
var = True
return [ True , var ]
def __checkC ( self , record , var ) :
if len ( var ) != 7 :
return [ False , ' Niepoprawne dane - klucz: %s ' % record ]
else :
if var [ 0 ] != ' # ' :
return [ False , ' Niepoprawne dane - klucz: %s ' % record ]
return [ True , var ]
def __checkP ( self , record , var ) :
try :
check = open ( var )
except :
return [ False , ' Niepoprawne dane - klucz: %s ' % record ]
return [ True , var ]
def __checkFA ( self , record , var , array ) :
arrays = {
' position ' : [ ' nw ' , ' ne ' , ' en ' , ' es ' , ' se ' , ' sw ' , ' ws ' , ' wn ' ] ,
' anchor ' : [ ' center ' , ' nw ' , ' n ' , ' ne ' , ' w ' , ' e ' , ' sw ' , ' s ' , ' se ' ] ,
' relief ' : [ ' flat ' , ' raised ' , ' sunken ' , ' groove ' , ' ridge ' ] ,
' fill ' : [ ' x ' , ' y ' , ' both ' ] ,
2020-08-28 01:16:22 +02:00
' activestyle ' : [ ' dotbox ' , ' none ' , ' underline ' ]
2020-08-08 01:53:49 +02:00
}
if var not in arrays [ array ] :
return [ False , ' Niepoprawne dane - klucz: %s ' % record ]
return [ True , var ]
def __checkF ( self , record , var ) :
try :
check = int ( var . split ( ' ; ' ) [ 1 ] )
except :
return [ False , ' Niepoprawne dane - klucz: %s ' % record ]
else :
var = ( var . split ( ' ; ' ) [ 0 ] , int ( var . split ( ' ; ' ) [ 1 ] ) )
return [ True , var ]
2020-08-06 18:38:31 +02:00
GUI = GUI ( )
# ------------------------------- # Zarządzanie plikami formatu # ------------------------------- #
class FMT :
2020-09-08 11:01:14 +02:00
# Odczytywanie pojedyńczej zmiennej z pliku
2020-08-21 00:40:52 +02:00
def R ( self , preset , record ) :
self . __checkIfFolderExist ( )
2020-08-06 18:38:31 +02:00
if preset in self . getList ( ) :
2020-09-08 11:01:14 +02:00
path = str ( VAR . appdataPath ) + ' /Generator CSV/format-presets/ %s .fmt ' % preset
2020-08-21 00:40:52 +02:00
file = CD . open ( path , ' r ' , ' utf-8 ' ) . read ( ) . strip ( ' \r ' ) . split ( ' \n ' )
2020-08-06 18:38:31 +02:00
content = { }
for x in file :
x = x . split ( ' = ' )
try :
2020-08-21 00:40:52 +02:00
name = x [ 0 ] . split ( ' ( ' ) [ 0 ]
var = x [ 1 ]
type = x [ 0 ] . split ( ' ( ' ) [ 1 ] . strip ( ' ) ' )
content [ name ] = [ var , type ]
2020-08-06 18:38:31 +02:00
except :
continue
2020-08-21 00:40:52 +02:00
checkingOutput = self . __checkIfRecordExist ( content , record )
if not checkingOutput [ 0 ] :
MSG ( ' E0006 ' , False , checkingOutput [ 1 ] )
var = content [ record ]
if var [ 1 ] == ' B ' :
# Boolean
checkingOutput = self . __checkB ( False , record , var [ 0 ] )
if checkingOutput [ 0 ] :
return checkingOutput [ 1 ]
else :
MSG ( ' E0006 ' , False , checkingOutput [ 1 ] )
elif var [ 1 ] == ' Ss ' :
# String - separator
checkingOutput = self . __checkSs ( record , var [ 0 ] )
if checkingOutput [ 0 ] :
return checkingOutput [ 1 ]
else :
MSG ( ' E0006 ' , False , checkingOutput [ 1 ] )
elif var [ 1 ] == ' As ' :
# Array - separator
checkingOutput = self . __checkAs ( False , record , var [ 0 ] )
if checkingOutput [ 0 ] :
return checkingOutput [ 1 ]
else :
MSG ( ' E0006 ' , False , checkingOutput [ 1 ] )
elif var [ 1 ] == ' I ' :
# Integer
checkingOutput = self . __checkI ( False , record , var [ 0 ] )
if checkingOutput [ 0 ] :
return checkingOutput [ 1 ]
else :
MSG ( ' E0006 ' , False , checkingOutput [ 1 ] )
2020-08-27 13:55:50 +02:00
elif var [ 1 ] == ' Sc ' :
# Integer
checkingOutput = self . __checkSc ( record , var [ 0 ] )
if checkingOutput [ 0 ] :
return checkingOutput [ 1 ]
else :
MSG ( ' E0006 ' , False , checkingOutput [ 1 ] )
2020-08-06 18:38:31 +02:00
else :
2020-08-21 00:40:52 +02:00
MSG ( ' E0006 ' , True , ' Nie można rozpoznać typu klucza %s ' % record )
2020-08-06 18:38:31 +02:00
else :
content = {
" 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 ,
2020-08-27 13:55:50 +02:00
" inputCoding " : ' utf-8 ' ,
2020-08-06 18:38:31 +02:00
}
2020-08-21 00:40:52 +02:00
var = content [ record ]
return var
2020-09-08 11:01:14 +02:00
# Zapisywanie zmian w pliku
2020-08-21 00:40:52 +02:00
def W ( self , preset , changes ) :
self . __checkIfFolderExist ( )
if preset in self . getList ( ) :
2020-09-08 11:01:14 +02:00
file = CD . open ( str ( VAR . appdataPath ) + ' /Generator CSV/format-presets/ %s .fmt ' % preset , ' r ' , ' utf-8 ' ) . read ( ) . split ( ' \n ' )
2020-08-21 00:40:52 +02:00
if file [ - 1 ] == ' ' :
file = file [ : - 1 ]
content = { }
for x in file :
x = x . split ( ' = ' )
try :
name = x [ 0 ] . split ( ' ( ' ) [ 0 ]
var = x [ 1 ]
type = x [ 0 ] . split ( ' ( ' ) [ 1 ] . strip ( ' ) ' )
content [ name ] = [ var , type ]
except Exception as exceptInfo :
MSG ( ' E0006 ' , False , exceptInfo )
2020-08-06 18:38:31 +02:00
else :
2020-08-21 00:40:52 +02:00
content = {
" student " : [ ' 1 ' , ' B ' ] ,
" personSeparator " : [ ' ' , ' Ss ' ] ,
" rowSeparator " : [ ' ' , ' Ss ' ] ,
" dataSeparators " : [ ' ' , ' As ' ] ,
" loginRow " : [ ' 0 ' , ' I ' ] ,
" loginPositionInRow " : [ ' 0 ' , ' I ' ] ,
" fnameRow " : [ ' 0 ' , ' I ' ] ,
" fnamePositionInRow " : [ ' 0 ' , ' I ' ] ,
" lnameRow " : [ ' 0 ' , ' I ' ] ,
" lnamePositionInRow " : [ ' 0 ' , ' I ' ] ,
" schoolRow " : [ ' 0 ' , ' I ' ] ,
" schoolPositionInRow " : [ ' 0 ' , ' I ' ] ,
" classRow " : [ ' 0 ' , ' I ' ] ,
" classPositionInRow " : [ ' 0 ' , ' I ' ] ,
2020-08-27 13:55:50 +02:00
" inputCoding " : [ ' utf-8 ' , ' Sc ' ]
2020-08-21 00:40:52 +02:00
}
for x in changes :
name = x
var = changes [ name ]
type = ( content [ name ] ) [ 1 ]
if type == ' B ' :
checkingOutput = self . __checkB ( True , name , var )
if checkingOutput [ 0 ] :
var = checkingOutput [ 1 ]
else :
MSG ( ' E0006 ' , False , checkingOutput [ 1 ] )
return False
elif type == ' Ss ' :
checkingOutput = self . __checkSs ( name , var )
if checkingOutput [ 0 ] :
var = checkingOutput [ 1 ]
else :
MSG ( ' E0006 ' , False , checkingOutput [ 1 ] )
return False
elif type == ' As ' :
checkingOutput = self . __checkAs ( True , name , var )
if checkingOutput [ 0 ] :
var = checkingOutput [ 1 ]
else :
MSG ( ' E0006 ' , False , checkingOutput [ 1 ] )
return False
elif type == ' I ' :
# Integer
checkingOutput = self . __checkI ( True , name , var )
if checkingOutput [ 0 ] :
var = checkingOutput [ 1 ]
else :
MSG ( ' E0006 ' , False , checkingOutput [ 1 ] )
return False
2020-08-27 13:55:50 +02:00
elif type == ' Sc ' :
checkingOutput = self . __checkSc ( name , var )
if checkingOutput [ 0 ] :
var = checkingOutput [ 1 ]
else :
MSG ( ' E0006 ' , False , checkingOutput [ 1 ] )
return False
2020-08-21 00:40:52 +02:00
else :
2020-09-01 19:15:30 +02:00
MSG ( ' E0006 ' , False , ' Nie można rozpoznać typu klucza %s ' % name )
2020-08-21 00:40:52 +02:00
return False
content [ name ] = [ var , type ]
2020-09-01 19:15:30 +02:00
try :
2020-09-08 11:01:14 +02:00
with CD . open ( str ( VAR . appdataPath ) + ' /Generator CSV/format-presets/ %s .fmt ' % preset , ' w ' , ' utf-8 ' ) as file :
2020-09-01 19:15:30 +02:00
for x in content :
file . write ( ' %s ( %s ) = %s \n ' % ( x , ( content [ x ] ) [ 1 ] , ( content [ x ] [ 0 ] ) ) )
except Exception as exceptInfo :
MSG ( ' E0017 ' , False , exceptInfo )
return False
2020-08-21 00:40:52 +02:00
return True
2020-09-08 11:01:14 +02:00
# Funkcja zwracająca listę presetów
def getList ( self ) :
self . __checkIfFolderExist ( )
filesList = OS . listdir ( str ( VAR . appdataPath ) + ' /Generator CSV/format-presets ' )
formatPresetsList = [ ]
for x in filesList :
if x [ - 4 : ] == ' .fmt ' :
formatPresetsList . append ( x [ : - 4 ] )
else :
continue
return formatPresetsList
# Funkcje sprawdzające istnienie
def __checkIfFolderExist ( self ) :
checkAppdata ( )
def __checkIfRecordExist ( self , content , record ) :
if record in list ( content . keys ( ) ) :
return [ True ]
else :
return [ False , ' Brak danych - klucz: %s ' % record ]
# Funkcje sprawdzające poprawność rekordu
def __checkB ( self , write , record , var ) :
if write :
if var == True :
var = ' 1 '
elif var == False :
var = ' 0 '
else :
return [ False , ' Niepoprawne dane - klucz: %s ' % record ]
else :
try :
var = int ( var )
except :
return [ False , ' Niepoprawne dane - klucz: %s ' % record ]
if var != 0 and var != 1 :
return [ False , ' Niepoprawne dane - klucz: %s ' % record ]
else :
if var == 0 :
var = False
else :
var = True
return [ True , var ]
def __checkSs ( self , record , var ) :
check = var
check = check . strip ( ' <enter> ' )
for x in check :
if x not in VAR . allowedCharactersInSeparator :
return [ False , ' Niepoprawne dane - klucz: %s ' % record ]
return [ True , var ]
def __checkAs ( self , write , record , var ) :
if write :
check = var
for x in check :
x = x . strip ( ' <enter> ' )
for y in x :
if y not in VAR . allowedCharactersInSeparator :
return [ False , ' Niepoprawne dane - klucz: %s ' % record ]
var = str ( var )
else :
new_contentVar = ( var ) [ 2 : - 2 ] . split ( " ' , ' " )
check = new_contentVar
for x in check :
x = x . strip ( ' <enter> ' )
for y in x :
if y not in VAR . allowedCharactersInSeparator :
return [ False , ' Niepoprawne dane - klucz: %s ' % record ]
var = new_contentVar
return [ True , var ]
def __checkI ( self , write , record , var ) :
if write :
try :
var = int ( var )
except :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
var = str ( var )
else :
try :
var = int ( var )
except :
return ( False , ' Niepoprawne dane - klucz: %s ' % record )
return [ True , var ]
def __checkSc ( self , record , var ) :
if var not in VAR . allowedCoding :
return [ False , ' Niepoprawne dane - klucz: %s ' % record ]
return [ True , var ]
2020-08-21 00:40:52 +02:00
2020-08-06 18:38:31 +02:00
FMT = FMT ( )
2020-08-06 18:43:05 +02:00
# ---------------------------------- # Przetwarzanie plików # ----------------------------------- #
class dataProcess :
2020-09-09 00:01:02 +02:00
def start ( self , files ) :
checkingOutput = [ ]
testOutput = self . __checkIfAtLeastOneInputFileIsFilled ( files [ : - 1 ] )
checkingOutput . append ( testOutput [ 0 ] )
if not testOutput [ 0 ] :
return checkingOutput
filledFiles = testOutput [ 1 ]
testOutput = self . __checkIfInputFilesIsReadable ( files [ : - 1 ] , filledFiles )
checkingOutput . append ( testOutput )
if not testOutput :
return checkingOutput
testOutput = self . __checkIfInputFilesFormatPresetsExist ( files [ : - 1 ] , filledFiles )
checkingOutput . append ( testOutput )
if not testOutput :
return checkingOutput
input = [ ]
for x in filledFiles :
input . append ( files [ x ] )
output = files [ - 1 ]
try :
data = self . __getData ( input )
except :
checkingOutput . append ( False )
return checkingOutput
else :
checkingOutput . append ( True )
for x in data :
student = x [ 0 ]
login = x [ 1 ]
loginCheckingOutput = self . __checkLogin ( login , student )
if not loginCheckingOutput [ 0 ] :
loginCheckingOutput [ 1 ] = loginCheckingOutput [ 1 ] + str ( x [ 1 : ] )
checkingOutput . append ( loginCheckingOutput )
return checkingOutput
fname = x [ 2 ]
fnameCheckingOutput = self . __checkFname ( fname )
if not fnameCheckingOutput [ 0 ] :
fnameCheckingOutput [ 1 ] = fnameCheckingOutput [ 1 ] + str ( x [ 1 : ] )
checkingOutput . append ( fnameCheckingOutput )
return checkingOutput
lname = x [ 3 ]
lnameCheckingOutput = self . __checkLname ( lname )
if not lnameCheckingOutput [ 0 ] :
lnameCheckingOutput [ 1 ] = lnameCheckingOutput [ 1 ] + str ( x [ 1 : ] )
checkingOutput . append ( lnameCheckingOutput )
return checkingOutput
if student :
school = x [ 4 ]
schoolCheckingOutput = self . __checkSchool ( school )
if not schoolCheckingOutput [ 0 ] :
schoolCheckingOutput [ 1 ] = schoolCheckingOutput [ 1 ] + str ( x [ 1 : ] )
checkingOutput . append ( schoolCheckingOutput )
return checkingOutput
classX = x [ 5 ]
classCheckingOutput = self . __checkClass ( classX , school )
if not classCheckingOutput [ 0 ] :
classCheckingOutput [ 1 ] = classCheckingOutput [ 1 ] + str ( x [ 1 : ] )
checkingOutput . append ( classCheckingOutput )
return checkingOutput
checkingOutput . append ( [ True ] )
amount = len ( data )
try :
data = self . __processData ( data )
except :
checkingOutput . append ( False )
return checkingOutput
else :
checkingOutput . append ( True )
testOutput = self . __checkIfCreatingOutputFilesIsPossible ( files [ - 1 ] )
checkingOutput . append ( testOutput )
if not testOutput :
return checkingOutput
try :
self . __saveData ( output , data )
except :
checkingOutput . append ( [ False ] )
return checkingOutput
else :
checkingOutput . append ( [ True , amount ] )
return checkingOutput
2020-08-21 00:40:52 +02:00
# Funkcje sprawdzające istnienie
def __checkIfAtLeastOneInputFileIsFilled ( self , files ) :
2020-08-07 22:16:01 +02:00
filledFiles = [ ]
index = 0
for x in files :
if not ( x [ 0 ] == ' ' or x [ 1 ] == ' ' ) :
filledFiles . append ( index )
index + = 1
if len ( filledFiles ) != 0 :
2020-08-31 23:46:14 +02:00
return [ True , filledFiles ]
2020-08-07 22:16:01 +02:00
else :
2020-08-31 23:46:14 +02:00
return [ False ]
2020-08-07 22:16:01 +02:00
def __checkIfInputFilesIsReadable ( self , files , filledFiles ) :
for x in filledFiles :
try :
2020-08-27 13:55:50 +02:00
check = CD . open ( ( files [ x ] ) [ 0 ] , ' r ' , FMT . R ( ( files [ x ] ) [ 1 ] , ' inputCoding ' ) )
2020-08-07 22:16:01 +02:00
except :
return False
return True
def __checkIfInputFilesFormatPresetsExist ( self , files , filledFiles ) :
for x in filledFiles :
if ( files [ x ] ) [ 1 ] not in FMT . getList ( ) :
return False
return True
2020-08-21 00:40:52 +02:00
def __checkIfCreatingOutputFilesIsPossible ( self , files ) :
2020-09-01 19:15:30 +02:00
if files [ 0 ] == files [ 1 ] :
return False
2020-08-21 00:40:52 +02:00
try :
check = CD . open ( files [ 0 ] , ' w ' , CFG . R ( ' mailOutputCoding ' ) )
check = CD . open ( files [ 1 ] , ' w ' , CFG . R ( ' officeOutputCoding ' ) )
except :
return False
return True
# Funkcje sprawdzające poprawność
def __checkLogin ( self , var , student ) :
if student and var [ - 1 ] != ' u ' :
return [ False , ' Brak końcówki " u " w loginie ucznia: ' ]
if student :
2020-08-07 22:16:01 +02:00
try :
2020-08-21 00:40:52 +02:00
x = int ( var [ : - 1 ] )
2020-08-07 22:16:01 +02:00
except :
2020-08-21 00:40:52 +02:00
return [ False , ' Niedozwolone znaki w loginie osoby: ' ]
else :
try :
x = int ( var )
except :
return [ False , ' Niedozwolone znaki w loginie osoby: ' ]
return [ True ]
def __checkFname ( self , var ) :
if not var . isalpha ( ) :
return [ False , ' Niedozwolone znaki w imieniu osoby: ' ]
return [ True ]
def __checkLname ( self , var ) :
if not var . isalpha ( ) :
return [ False , ' Niedozwolone znaki w nazwisku osoby: ' ]
return [ True ]
def __checkSchool ( self , var ) :
allowedSchools = [ x [ 0 ] for x in CFG . R ( ' schoolData ' ) ]
if var not in allowedSchools :
return [ False , ' Niewspierana szkoła w danych osoby: ' ]
return [ True ]
def __checkClass ( self , var , school ) :
if len ( var ) != 2 :
return [ False , ' Niepoprawny format klasy w danych osoby: ' ]
if not var [ 0 ] . isdigit ( ) :
return [ False , ' Niepoprawny format klasy w danych osoby: ' ]
if not var [ 1 ] . isalpha ( ) :
return [ False , ' Niepoprawny format klasy w danych osoby: ' ]
schoolData = { }
for x in CFG . R ( ' schoolData ' ) :
schoolData [ x [ 0 ] ] = x [ 1 ]
if int ( var [ 0 ] ) == 0 or int ( var [ 0 ] ) > schoolData [ school ] :
return [ False , ' Numer klasy nie zgadza się z ilością klas szkoły w danych osoby: ' ]
return [ True ]
# Funkcje operujące na danych
def __getData ( self , input ) :
data = [ ]
for x in input :
path = x [ 0 ]
format = x [ 1 ]
personSeparator = FMT . R ( format , ' personSeparator ' ) . replace ( ' <enter> ' , ' \r \n ' )
linesSeparator = FMT . R ( format , ' rowSeparator ' ) . replace ( ' <enter> ' , ' \r \n ' )
dataSeparators = [ x . replace ( ' <enter> ' , ' \n ' ) for x in FMT . R ( format , ' dataSeparators ' ) ]
loginLocation = [ FMT . R ( format , ' loginRow ' ) , FMT . R ( format , ' loginPositionInRow ' ) ]
fnameLocation = [ FMT . R ( format , ' fnameRow ' ) , FMT . R ( format , ' fnamePositionInRow ' ) ]
lnameLocation = [ FMT . R ( format , ' lnameRow ' ) , FMT . R ( format , ' lnamePositionInRow ' ) ]
schoolLocation = [ FMT . R ( format , ' schoolRow ' ) , FMT . R ( format , ' schoolPositionInRow ' ) ]
classLocation = [ FMT . R ( format , ' classRow ' ) , FMT . R ( format , ' classPositionInRow ' ) ]
student = FMT . R ( format , ' student ' )
2020-08-27 13:55:50 +02:00
file = CD . open ( path , ' r ' , FMT . R ( format , ' inputCoding ' ) ) . read ( ) . split ( personSeparator )
2020-08-21 00:40:52 +02:00
for x in file :
lines = x . split ( linesSeparator )
dataX = [ ]
for line in lines :
line = [ line ]
for a in dataSeparators :
line2 = [ ]
for b in line :
line2 + = b . split ( a )
line = line2
dataX . append ( line )
login = dataX [ loginLocation [ 0 ] - 1 ] [ loginLocation [ 1 ] - 1 ]
fname = dataX [ fnameLocation [ 0 ] - 1 ] [ fnameLocation [ 1 ] - 1 ]
lname = dataX [ lnameLocation [ 0 ] - 1 ] [ lnameLocation [ 1 ] - 1 ]
if student :
school = dataX [ schoolLocation [ 0 ] - 1 ] [ schoolLocation [ 1 ] - 1 ]
classX = dataX [ classLocation [ 0 ] - 1 ] [ classLocation [ 1 ] - 1 ]
data . append ( [ student , login , fname , lname , school , classX ] )
else :
data . append ( [ student , login , fname , lname ] )
return data
def __processData ( self , data ) :
mailData = [ ]
officeData = [ ]
schoolData = { }
for x in CFG . R ( ' schoolData ' ) :
schoolData [ x [ 0 ] ] = [ x [ 1 ] , x [ 2 ] ]
for x in data :
mail = ' '
office = ' '
mail + = x [ 2 ] . lower ( ) . replace ( ' ę ' , ' e ' ) . replace ( ' ó ' , ' o ' ) . replace ( ' ą ' , ' a ' ) . replace ( ' ś ' , ' s ' ) . replace ( ' ł ' , ' l ' ) . replace ( ' ż ' , ' z ' ) . replace ( ' ź ' , ' z ' ) . replace ( ' ć ' , ' c ' ) . replace ( ' ń ' , ' n ' )
mail + = ' . '
mail + = x [ 3 ] . lower ( ) . replace ( ' ę ' , ' e ' ) . replace ( ' ó ' , ' o ' ) . replace ( ' ą ' , ' a ' ) . replace ( ' ś ' , ' s ' ) . replace ( ' ł ' , ' l ' ) . replace ( ' ż ' , ' z ' ) . replace ( ' ź ' , ' z ' ) . replace ( ' ć ' , ' c ' ) . replace ( ' ń ' , ' n ' )
if x [ 0 ] :
classIndicator = ' '
actualYear = TM . localtime ( )
schoolDuration = ( schoolData [ x [ 4 ] ] ) [ 0 ]
if actualYear [ 1 ] < CFG . R ( ' schoolyearStart ' ) [ ' M ' ] or ( actualYear [ 1 ] == CFG . R ( ' schoolyearStart ' ) [ ' M ' ] and actualYear [ 2 ] < CFG . R ( ' schoolyearStart ' ) [ ' D ' ] ) :
yearOfGraduation = actualYear [ 0 ] + ( schoolDuration - int ( ( x [ 5 ] ) [ 0 ] ) )
else :
yearOfGraduation = actualYear [ 0 ] + ( schoolDuration - int ( ( x [ 5 ] ) [ 0 ] ) ) + 1
mail + = str ( yearOfGraduation )
if ( schoolData [ x [ 4 ] ] ) [ 1 ] :
mail + = x [ 4 ] . lower ( )
else :
mail + = ( x [ 5 ] ) [ 1 ] . lower ( )
mail + = ' @ '
mail + = CFG . R ( ' domain ' )
office + = mail
mail + = ' , '
mail + = x [ 1 ]
mail + = ' : '
mail + = ( x [ 2 ] ) [ 0 ] . lower ( ) . replace ( ' ę ' , ' e ' ) . replace ( ' ó ' , ' o ' ) . replace ( ' ą ' , ' a ' ) . replace ( ' ś ' , ' s ' ) . replace ( ' ł ' , ' l ' ) . replace ( ' ż ' , ' z ' ) . replace ( ' ź ' , ' z ' ) . replace ( ' ć ' , ' c ' ) . replace ( ' ń ' , ' n ' ) . upper ( )
mail + = ( x [ 3 ] ) [ 0 ] . lower ( ) . replace ( ' ę ' , ' e ' ) . replace ( ' ó ' , ' o ' ) . replace ( ' ą ' , ' a ' ) . replace ( ' ś ' , ' s ' ) . replace ( ' ł ' , ' l ' ) . replace ( ' ż ' , ' z ' ) . replace ( ' ź ' , ' z ' ) . replace ( ' ć ' , ' c ' ) . replace ( ' ń ' , ' n ' ) . upper ( )
mail + = ' , '
mail + = str ( CFG . R ( ' quota ' ) )
office + = ' , '
office + = x [ 2 ]
office + = ' , '
office + = x [ 3 ]
office + = ' , '
office + = ' %s %s ' % ( x [ 2 ] , x [ 3 ] )
office + = ' , '
if x [ 0 ] :
office + = ' uczeń '
else :
office + = ' nauczyciel '
office + = ' , '
if x [ 0 ] :
office + = str ( yearOfGraduation )
if ( schoolData [ x [ 4 ] ] ) [ 1 ] :
office + = x [ 4 ] . lower ( )
else :
office + = ( x [ 5 ] ) [ 1 ] . lower ( )
office + = ' , '
office + = ' , '
office + = ' , '
office + = ' , '
office + = ' , '
office + = ' , '
office + = ' , '
office + = ' , '
office + = ' , '
office + = CFG . R ( ' country ' )
mailData . append ( mail )
officeData . append ( office )
return [ mailData , officeData ]
def __saveData ( self , output , data ) :
mailPath = output [ 0 ]
officePath = output [ 1 ]
mailData = data [ 0 ]
officeData = data [ 1 ]
with CD . open ( mailPath , ' w ' , CFG . R ( ' mailOutputCoding ' ) ) as mail :
2020-09-01 19:15:30 +02:00
if CFG . R ( ' ifHeadlineInMail ' ) :
mail . write ( CFG . R ( ' headlineInMail ' ) + ' \n ' )
2020-08-21 00:40:52 +02:00
mail . write ( ' \n ' . join ( mailData ) )
with CD . open ( officePath , ' w ' , CFG . R ( ' officeOutputCoding ' ) ) as office :
2020-09-01 19:15:30 +02:00
if CFG . R ( ' ifHeadlineInOffice ' ) :
office . write ( CFG . R ( ' headlineInOffice ' ) + ' \n ' )
2020-08-21 00:40:52 +02:00
office . write ( ' \n ' . join ( officeData ) )
2020-08-07 22:16:01 +02:00
2020-08-06 18:43:05 +02:00
dataProcess = dataProcess ( )
2020-08-06 18:38:31 +02:00
# ------------------------------------------- # GUI # ------------------------------------------- #
2020-08-06 18:43:05 +02:00
class mainWindow :
def __init__ ( self , master ) :
# Okno
self . master = master
2020-08-28 21:34:16 +02:00
master . title ( ' %s %s %s ' % ( VAR . programName , VAR . programVersion , VAR . programVersionStage ) )
2020-08-08 01:53:49 +02:00
master . geometry ( ' %i x %i ' % ( GUI . R ( ' windowWidth ' ) , GUI . R ( ' windowHeight ' ) ) )
master . resizable ( width = GUI . R ( ' windowWidthResizable ' ) , height = GUI . R ( ' windowHeightResizable ' ) )
master . configure ( bg = GUI . R ( ' windowMainBG ' ) )
master . iconbitmap ( GUI . R ( ' mainIcon ' ) )
2020-08-06 18:43:05 +02:00
2020-08-06 18:38:31 +02:00
2020-08-06 18:43:05 +02:00
# Theme
TKttk . Style ( ) . theme_create ( " main " , parent = " default " , settings = {
" mainMenu.TNotebook " : {
" configure " : {
2020-08-08 01:53:49 +02:00
" background " : GUI . R ( ' mainMenuBG ' ) ,
" tabposition " : GUI . R ( ' mainMenuPosition ' ) ,
" borderwidth " : GUI . R ( ' tabFramesBorderWidth ' ) ,
2020-08-06 18:43:05 +02:00
} ,
2020-08-06 18:38:31 +02:00
} ,
2020-08-06 18:43:05 +02:00
" mainMenu.TNotebook.Tab " : {
" configure " : {
2020-08-08 01:53:49 +02:00
" background " : GUI . R ( ' unselectedTabBG ' ) ,
" borderwidth " : GUI . R ( ' menuTabsBorderWidth ' ) ,
" padding " : GUI . R ( ' menuTabsPadding ' ) ,
2020-08-06 18:43:05 +02:00
} ,
" map " : {
" background " : [
2020-08-08 01:53:49 +02:00
( " selected " , GUI . R ( ' selectedTabBG ' ) ) ,
( " disabled " , GUI . R ( ' disabledTabBG ' ) ) ,
2020-08-06 18:43:05 +02:00
]
}
2020-08-06 18:38:31 +02:00
} ,
2020-08-06 18:43:05 +02:00
" mainMenuTabFrame.TFrame " : {
" configure " : {
2020-08-08 01:53:49 +02:00
" background " : GUI . R ( ' tabFrameBG ' ) ,
2020-08-06 18:43:05 +02:00
} ,
2020-08-06 18:38:31 +02:00
} ,
2020-08-06 18:43:05 +02:00
" tabHeader.TLabel " : {
" configure " : {
2020-08-08 01:53:49 +02:00
" font " : GUI . R ( ' headerFont ' ) ,
" background " : GUI . R ( ' headerBG ' ) ,
" foreground " : GUI . R ( ' headerTextColor ' ) ,
" padding " : GUI . R ( ' headerPadding ' ) ,
" anchor " : GUI . R ( ' headerTextAnchor ' ) ,
2020-08-06 18:43:05 +02:00
} ,
2020-08-06 18:38:31 +02:00
} ,
2020-08-08 01:53:49 +02:00
" contentTabFrame.TFrame " : {
2020-08-06 18:43:05 +02:00
" configure " : {
2020-08-08 01:53:49 +02:00
" background " : GUI . R ( ' contentTabFrameBG ' ) ,
2020-08-06 18:43:05 +02:00
} ,
2020-08-06 18:38:31 +02:00
} ,
2020-08-06 18:43:05 +02:00
" layoutFrame.TFrame " : {
" configure " : {
2020-08-08 01:53:49 +02:00
" background " : GUI . R ( ' layoutFrameBG ' ) ,
2020-08-06 18:43:05 +02:00
} ,
2020-08-06 18:38:31 +02:00
} ,
2020-08-06 18:43:05 +02:00
" label1.TLabel " : {
" configure " : {
2020-08-08 01:53:49 +02:00
" background " : GUI . R ( ' label1BG ' ) ,
" foreground " : GUI . R ( ' label1TextColor ' ) ,
" font " : GUI . R ( ' label1Font ' ) ,
2020-08-06 18:43:05 +02:00
} ,
2020-08-06 18:38:31 +02:00
} ,
2020-08-06 18:43:05 +02:00
" label2.TLabel " : {
" configure " : {
2020-08-08 01:53:49 +02:00
" background " : GUI . R ( ' label2BG ' ) ,
" foreground " : GUI . R ( ' label2TextColor ' ) ,
" font " : GUI . R ( ' label2Font ' )
2020-08-06 18:43:05 +02:00
} ,
2020-08-06 18:38:31 +02:00
} ,
2020-08-28 01:16:22 +02:00
" label3.TLabel " : {
" configure " : {
" background " : GUI . R ( ' label3BG ' ) ,
" foreground " : GUI . R ( ' label3TextColor ' ) ,
" font " : GUI . R ( ' label3Font ' )
} ,
} ,
2020-08-28 14:04:42 +02:00
" label4.TLabel " : {
" configure " : {
" background " : GUI . R ( ' label4BG ' ) ,
" foreground " : GUI . R ( ' label4TextColor ' ) ,
" font " : GUI . R ( ' label4Font ' ) ,
} ,
} ,
2020-08-06 18:43:05 +02:00
" combobox1.TCombobox " : {
" configure " : {
2020-08-08 01:53:49 +02:00
" arrowcolor " : GUI . R ( ' combobox1ArrowColor ' ) ,
" background " : GUI . R ( ' combobox1ButtonColor ' ) ,
" bordercolor " : GUI . R ( ' combobox1BorderColor ' ) ,
" fieldbackground " : GUI . R ( ' combobox1FieldBackground ' ) ,
" foreground " : GUI . R ( ' combobox1TextColor ' ) ,
" relief " : GUI . R ( ' combobox1Relief ' ) ,
" borderwidth " : GUI . R ( ' combobox1BorderWidth ' ) ,
" padding " : GUI . R ( ' combobox1Padding ' ) ,
2020-08-06 18:43:05 +02:00
} ,
2020-08-06 18:40:38 +02:00
} ,
2020-08-06 18:43:05 +02:00
" combobox2.TCombobox " : {
" configure " : {
2020-08-08 01:53:49 +02:00
" arrowcolor " : GUI . R ( ' combobox2ArrowColor ' ) ,
" background " : GUI . R ( ' combobox2ButtonColor ' ) ,
" bordercolor " : GUI . R ( ' combobox2BorderColor ' ) ,
" fieldbackground " : GUI . R ( ' combobox2FieldBackground ' ) ,
" foreground " : GUI . R ( ' combobox2TextColor ' ) ,
" relief " : GUI . R ( ' combobox2Relief ' ) ,
" borderwidth " : GUI . R ( ' combobox2BorderWidth ' ) ,
" padding " : GUI . R ( ' combobox2Padding ' ) ,
2020-08-06 18:43:05 +02:00
} ,
2020-08-06 18:38:31 +02:00
} ,
2020-08-06 18:43:05 +02:00
" button1.TButton " : {
" configure " : {
2020-08-08 01:53:49 +02:00
" anchor " : GUI . R ( ' button1TextAnchor ' ) ,
" background " : GUI . R ( ' button1Background ' ) ,
" foreground " : GUI . R ( ' button1Foreground ' ) ,
" padding " : GUI . R ( ' button1Padding ' ) ,
2020-08-06 18:43:05 +02:00
} ,
2020-08-06 18:38:31 +02:00
} ,
2020-08-28 14:04:42 +02:00
" button2.TButton " : {
" configure " : {
" anchor " : GUI . R ( ' button2TextAnchor ' ) ,
" background " : GUI . R ( ' button2Background ' ) ,
" padding " : GUI . R ( ' button2Padding ' ) ,
} ,
} ,
2020-08-06 18:43:05 +02:00
" separator1.TSeparator " : {
" configure " : {
2020-08-08 01:53:49 +02:00
" background " : GUI . R ( ' separator1BG ' ) ,
2020-08-06 18:43:05 +02:00
} ,
2020-08-06 18:38:31 +02:00
} ,
2020-08-06 18:43:05 +02:00
" spinbox1.TSpinbox " : {
" configure " : {
2020-08-08 01:53:49 +02:00
" arrowcolor " : GUI . R ( ' spinbox1ArrowColor ' ) ,
" fieldbackground " : GUI . R ( ' spinbox1FieldBackground ' ) ,
" relief " : GUI . R ( ' spinbox1Relief ' ) ,
" borderwidth " : GUI . R ( ' spinbox1BorderWidth ' ) ,
" foreground " : GUI . R ( ' spinbox1TextColor ' ) ,
" background " : GUI . R ( ' spinbox1ButtonColor ' ) ,
" padding " : GUI . R ( ' spinbox1Padding ' ) ,
2020-08-06 18:43:05 +02:00
} ,
2020-08-06 18:38:31 +02:00
} ,
2020-08-06 18:43:05 +02:00
" entry1.TEntry " : {
" configure " : {
2020-08-08 01:53:49 +02:00
" fieldbackground " : GUI . R ( ' entry1FieldBackground ' ) ,
" relief " : GUI . R ( ' entry1Relief ' ) ,
" borderwidth " : GUI . R ( ' entry1BorderWidth ' ) ,
" padding " : GUI . R ( ' entry1Padding ' ) ,
" foreground " : GUI . R ( ' entry1TextColor ' ) ,
2020-08-06 18:43:05 +02:00
} ,
} ,
} )
TKttk . Style ( ) . theme_use ( " main " )
# Menu główne
2020-08-08 01:53:49 +02:00
self . mainMenu = TKttk . Notebook ( master , width = master . winfo_width ( ) - ( 2 * GUI . R ( ' menuTabsPadding ' ) + GUI . R ( ' tabIconsSize ' ) ) , height = master . winfo_height ( ) )
2020-08-06 18:43:05 +02:00
self . mainMenu . config ( style = " mainMenu.TNotebook " )
self . mainMenu . grid ( row = 0 )
# Ikona
self . iconTab = TKttk . Frame ( self . mainMenu )
2020-08-08 01:53:49 +02:00
self . iconTabImg = PLimg . open ( GUI . R ( ' iconTabIcon ' ) )
self . iconTabImg = self . iconTabImg . resize ( ( GUI . R ( ' tabIconsSize ' ) , GUI . R ( ' tabIconsSize ' ) ) , PLimg . ANTIALIAS )
2020-08-06 18:43:05 +02:00
self . iconTabImg = PLitk . PhotoImage ( self . iconTabImg )
self . mainMenu . add ( self . iconTab , image = self . iconTabImg , state = TK . DISABLED )
# TAB1 - Generator ####################################################
self . generateTab = TKttk . Frame ( self . mainMenu )
self . generateTab . config ( style = " mainMenuTabFrame.TFrame " )
2020-08-08 01:53:49 +02:00
self . generateTabImg = PLimg . open ( GUI . R ( ' generateTabIcon ' ) )
self . generateTabImg = self . generateTabImg . resize ( ( GUI . R ( ' tabIconsSize ' ) , GUI . R ( ' tabIconsSize ' ) ) , PLimg . ANTIALIAS )
2020-08-06 18:43:05 +02:00
self . generateTabImg = PLitk . PhotoImage ( self . generateTabImg )
self . mainMenu . add ( self . generateTab , image = self . generateTabImg , state = TK . NORMAL )
# Nagłówek
self . generateHeader = TKttk . Label ( self . generateTab )
self . generateHeader . config ( style = ' tabHeader.TLabel ' )
self . generateHeader . config ( text = ' GENERATOR CSV ' )
2020-08-08 01:53:49 +02:00
self . generateHeader . pack ( fill = GUI . R ( ' headerFill ' ) )
2020-08-06 18:43:05 +02:00
# Zawartość
self . generateFrame = TKttk . Frame ( self . generateTab )
2020-08-08 01:53:49 +02:00
self . generateFrame . config ( style = ' contentTabFrame.TFrame ' )
self . generateFrame . pack ( fill = GUI . R ( ' contentTabFrameFill ' ) , expand = GUI . R ( ' contentTabFrameExpand ' ) , padx = GUI . R ( ' tabFramePadding ' ) , pady = GUI . R ( ' tabFramePadding ' ) )
2020-08-06 18:43:05 +02:00
# (1) Pliki #################################################
self . generateFilesFrame = TKttk . Frame ( self . generateFrame )
self . generateFilesFrame . config ( style = ' layoutFrame.TFrame ' )
self . generateFilesFrame . pack ( fill = TK . BOTH , expand = 1 )
# (2) Pliki wejściowe #############################
self . generateInputFilesFrame = TKttk . Frame ( self . generateFilesFrame )
self . generateInputFilesFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . generateInputFilesFrame . pack ( fill = TK . BOTH , expand = 1 , padx = GUI . R ( ' outsidelayoutFramesPadX ' ) )
2020-08-06 18:43:05 +02:00
# (3) Plik źródłowy 1 ###################
self . GIF1Frame = TKttk . Frame ( self . generateInputFilesFrame )
self . GIF1Frame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . GIF1Frame . pack ( fill = TK . X , expand = 1 , pady = int ( ( GUI . R ( ' GIFFrameSeparators ' ) / 2 ) ) )
2020-08-06 18:43:05 +02:00
# "Plik źródłowy (1)"
self . GIF1Label = TKttk . Label ( self . GIF1Frame )
self . GIF1Label . config ( style = ' label1.TLabel ' )
2020-08-08 01:53:49 +02:00
self . GIF1Label . config ( width = GUI . R ( ' generateFilesLabelWidth ' ) )
self . GIF1Label . config ( anchor = GUI . R ( ' generateFilesLabelAnchor ' ) )
self . GIF1Label . config ( padding = ( ' 0 0 %s 0 ' % str ( 2 * GUI . R ( ' generateInputFilesPadding ' ) ) ) )
2020-08-06 18:43:05 +02:00
self . GIF1Label . config ( text = ' Plik źródłowy (1) ' )
self . GIF1Label . pack ( side = TK . LEFT )
# Plik żródłowy (1) - Ustawienia
self . GIF1SFrame = TKttk . Frame ( self . GIF1Frame )
self . GIF1SFrame . config ( style = ' layoutFrame.TFrame ' )
self . GIF1SFrame . pack ( side = TK . RIGHT , fill = TK . X , expand = 1 )
# Lokalizacja
self . GIF1SLocalizationFrame = TKttk . Frame ( self . GIF1SFrame )
self . GIF1SLocalizationFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . GIF1SLocalizationFrame . pack ( side = TK . TOP , fill = TK . X , expand = 1 , pady = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Lokalizacja - Entry
self . GIF1SLocalizationEntryVar = TK . StringVar ( )
self . GIF1SLocalizationEntry = TKttk . Entry ( self . GIF1SLocalizationFrame )
self . GIF1SLocalizationEntry . config ( style = ' entry1.TEntry ' )
self . GIF1SLocalizationEntry . config ( textvariable = self . GIF1SLocalizationEntryVar )
2020-08-08 01:53:49 +02:00
self . GIF1SLocalizationEntry . pack ( side = TK . LEFT , expand = 1 , fill = TK . X , padx = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Lokalizacja - Button
self . GIF1SLocalizationButton = TKttk . Button ( self . GIF1SLocalizationFrame )
self . GIF1SLocalizationButton . config ( style = ' button1.TButton ' )
self . GIF1SLocalizationButton . config ( text = ' Przeglądaj ' )
self . GIF1SLocalizationButton . config ( command = self . GIF1SLocalizationButtonAction )
2020-08-08 01:53:49 +02:00
self . GIF1SLocalizationButton . pack ( side = TK . RIGHT , padx = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Format
self . GIF1SFormatFrame = TKttk . Frame ( self . GIF1SFrame )
self . GIF1SFormatFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . GIF1SFormatFrame . pack ( side = TK . BOTTOM , fill = TK . X , expand = 1 , pady = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Format - Label
self . GIF1SFormatLabel = TKttk . Label ( self . GIF1SFormatFrame )
self . GIF1SFormatLabel . config ( style = ' label2.TLabel ' )
self . GIF1SFormatLabel . config ( text = ' Format ' )
2020-08-08 01:53:49 +02:00
self . GIF1SFormatLabel . pack ( side = TK . LEFT , padx = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Format - Combobox
self . GIF1SFormatComboboxVar = TK . StringVar ( )
self . GIF1SFormatCombobox = TKttk . Combobox ( self . GIF1SFormatFrame )
self . GIF1SFormatCombobox . config ( style = ' combobox1.TCombobox ' )
2020-08-08 01:53:49 +02:00
self . GIF1SFormatCombobox . option_add ( " *TCombobox*Listbox.background " , GUI . R ( ' combobox1ListBoxBackground ' ) )
self . GIF1SFormatCombobox . option_add ( " *TCombobox*Listbox.foreground " , GUI . R ( ' combobox1ListBoxForeground ' ) )
self . GIF1SFormatCombobox . option_add ( " *TCombobox*Listbox.selectBackground " , GUI . R ( ' combobox1ListBoxSelectBackground ' ) )
self . GIF1SFormatCombobox . option_add ( " *TCombobox*Listbox.selectForeground " , GUI . R ( ' combobox1ListBoxSelectForeground ' ) )
2020-08-06 18:43:05 +02:00
self . GIF1SFormatCombobox . config ( state = ' readonly ' )
self . GIF1SFormatCombobox . config ( textvariable = self . GIF1SFormatComboboxVar )
self . GIF1SFormatCombobox [ ' values ' ] = tuple ( FMT . getList ( ) )
2020-08-08 01:53:49 +02:00
self . GIF1SFormatCombobox . pack ( side = TK . LEFT , expand = 1 , fill = TK . X , padx = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
#########################################
# (3) Plik źródłowy 2 ###################
self . GIF2Frame = TKttk . Frame ( self . generateInputFilesFrame )
self . GIF2Frame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . GIF2Frame . pack ( fill = TK . X , expand = 1 , pady = int ( ( GUI . R ( ' GIFFrameSeparators ' ) / 2 ) ) )
2020-08-06 18:43:05 +02:00
2020-08-08 01:53:49 +02:00
# "Plik źródłowy (1)"
2020-08-06 18:43:05 +02:00
self . GIF2Label = TKttk . Label ( self . GIF2Frame )
self . GIF2Label . config ( style = ' label1.TLabel ' )
2020-08-08 01:53:49 +02:00
self . GIF2Label . config ( width = GUI . R ( ' generateFilesLabelWidth ' ) )
self . GIF2Label . config ( anchor = GUI . R ( ' generateFilesLabelAnchor ' ) )
self . GIF2Label . config ( padding = ( ' 0 0 %s 0 ' % str ( 2 * GUI . R ( ' generateInputFilesPadding ' ) ) ) )
2020-08-21 00:40:52 +02:00
self . GIF2Label . config ( text = ' Plik źródłowy (2) ' )
2020-08-06 18:43:05 +02:00
self . GIF2Label . pack ( side = TK . LEFT )
# Plik żródłowy (1) - Ustawienia
self . GIF2SFrame = TKttk . Frame ( self . GIF2Frame )
self . GIF2SFrame . config ( style = ' layoutFrame.TFrame ' )
self . GIF2SFrame . pack ( side = TK . RIGHT , fill = TK . X , expand = 1 )
# Lokalizacja
self . GIF2SLocalizationFrame = TKttk . Frame ( self . GIF2SFrame )
self . GIF2SLocalizationFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . GIF2SLocalizationFrame . pack ( side = TK . TOP , fill = TK . X , expand = 1 , pady = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Lokalizacja - Entry
self . GIF2SLocalizationEntryVar = TK . StringVar ( )
self . GIF2SLocalizationEntry = TKttk . Entry ( self . GIF2SLocalizationFrame )
self . GIF2SLocalizationEntry . config ( style = ' entry1.TEntry ' )
self . GIF2SLocalizationEntry . config ( textvariable = self . GIF2SLocalizationEntryVar )
2020-08-08 01:53:49 +02:00
self . GIF2SLocalizationEntry . pack ( side = TK . LEFT , expand = 1 , fill = TK . X , padx = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Lokalizacja - Button
self . GIF2SLocalizationButton = TKttk . Button ( self . GIF2SLocalizationFrame )
self . GIF2SLocalizationButton . config ( style = ' button1.TButton ' )
self . GIF2SLocalizationButton . config ( text = ' Przeglądaj ' )
self . GIF2SLocalizationButton . config ( command = self . GIF2SLocalizationButtonAction )
2020-08-08 01:53:49 +02:00
self . GIF2SLocalizationButton . pack ( side = TK . RIGHT , padx = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Format
self . GIF2SFormatFrame = TKttk . Frame ( self . GIF2SFrame )
self . GIF2SFormatFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . GIF2SFormatFrame . pack ( side = TK . BOTTOM , fill = TK . X , expand = 1 , pady = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Format - Label
self . GIF2SFormatLabel = TKttk . Label ( self . GIF2SFormatFrame )
self . GIF2SFormatLabel . config ( style = ' label2.TLabel ' )
self . GIF2SFormatLabel . config ( text = ' Format ' )
2020-08-08 01:53:49 +02:00
self . GIF2SFormatLabel . pack ( side = TK . LEFT , padx = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Format - Combobox
self . GIF2SFormatComboboxVar = TK . StringVar ( )
self . GIF2SFormatCombobox = TKttk . Combobox ( self . GIF2SFormatFrame )
self . GIF2SFormatCombobox . config ( style = ' combobox1.TCombobox ' )
2020-08-08 01:53:49 +02:00
self . GIF2SFormatCombobox . option_add ( " *TCombobox*Listbox.background " , GUI . R ( ' combobox1ListBoxBackground ' ) )
self . GIF2SFormatCombobox . option_add ( " *TCombobox*Listbox.foreground " , GUI . R ( ' combobox1ListBoxForeground ' ) )
self . GIF2SFormatCombobox . option_add ( " *TCombobox*Listbox.selectBackground " , GUI . R ( ' combobox1ListBoxSelectBackground ' ) )
self . GIF2SFormatCombobox . option_add ( " *TCombobox*Listbox.selectForeground " , GUI . R ( ' combobox1ListBoxSelectForeground ' ) )
2020-08-06 18:43:05 +02:00
self . GIF2SFormatCombobox . config ( state = ' readonly ' )
self . GIF2SFormatCombobox . config ( textvariable = self . GIF2SFormatComboboxVar )
self . GIF2SFormatCombobox [ ' values ' ] = tuple ( FMT . getList ( ) )
2020-08-08 01:53:49 +02:00
self . GIF2SFormatCombobox . pack ( side = TK . LEFT , expand = 1 , fill = TK . X , padx = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
#########################################
# (3) Plik źródłowy 3 ###################
self . GIF3Frame = TKttk . Frame ( self . generateInputFilesFrame )
self . GIF3Frame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . GIF3Frame . pack ( fill = TK . X , expand = 1 , pady = int ( ( GUI . R ( ' GIFFrameSeparators ' ) / 2 ) ) )
2020-08-06 18:43:05 +02:00
2020-08-08 01:53:49 +02:00
# "Plik źródłowy (1)"
2020-08-06 18:43:05 +02:00
self . GIF3Label = TKttk . Label ( self . GIF3Frame )
self . GIF3Label . config ( style = ' label1.TLabel ' )
2020-08-08 01:53:49 +02:00
self . GIF3Label . config ( width = GUI . R ( ' generateFilesLabelWidth ' ) )
self . GIF3Label . config ( anchor = GUI . R ( ' generateFilesLabelAnchor ' ) )
self . GIF3Label . config ( padding = ( ' 0 0 %s 0 ' % str ( 2 * GUI . R ( ' generateInputFilesPadding ' ) ) ) )
2020-08-21 00:40:52 +02:00
self . GIF3Label . config ( text = ' Plik źródłowy (3) ' )
2020-08-06 18:43:05 +02:00
self . GIF3Label . pack ( side = TK . LEFT )
# Plik żródłowy (1) - Ustawienia
self . GIF3SFrame = TKttk . Frame ( self . GIF3Frame )
self . GIF3SFrame . config ( style = ' layoutFrame.TFrame ' )
self . GIF3SFrame . pack ( side = TK . RIGHT , fill = TK . X , expand = 1 )
# Lokalizacja
self . GIF3SLocalizationFrame = TKttk . Frame ( self . GIF3SFrame )
self . GIF3SLocalizationFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . GIF3SLocalizationFrame . pack ( side = TK . TOP , fill = TK . X , expand = 1 , pady = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Lokalizacja - Entry
self . GIF3SLocalizationEntryVar = TK . StringVar ( )
self . GIF3SLocalizationEntry = TKttk . Entry ( self . GIF3SLocalizationFrame )
self . GIF3SLocalizationEntry . config ( style = ' entry1.TEntry ' )
self . GIF3SLocalizationEntry . config ( textvariable = self . GIF3SLocalizationEntryVar )
2020-08-08 01:53:49 +02:00
self . GIF3SLocalizationEntry . pack ( side = TK . LEFT , expand = 1 , fill = TK . X , padx = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Lokalizacja - Button
self . GIF3SLocalizationButton = TKttk . Button ( self . GIF3SLocalizationFrame )
self . GIF3SLocalizationButton . config ( style = ' button1.TButton ' )
self . GIF3SLocalizationButton . config ( text = ' Przeglądaj ' )
self . GIF3SLocalizationButton . config ( command = self . GIF3SLocalizationButtonAction )
2020-08-08 01:53:49 +02:00
self . GIF3SLocalizationButton . pack ( side = TK . RIGHT , padx = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Format
self . GIF3SFormatFrame = TKttk . Frame ( self . GIF3SFrame )
self . GIF3SFormatFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . GIF3SFormatFrame . pack ( side = TK . BOTTOM , fill = TK . X , expand = 1 , pady = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Format - Label
self . GIF3SFormatLabel = TKttk . Label ( self . GIF3SFormatFrame )
self . GIF3SFormatLabel . config ( style = ' label2.TLabel ' )
self . GIF3SFormatLabel . config ( text = ' Format ' )
2020-08-08 01:53:49 +02:00
self . GIF3SFormatLabel . pack ( side = TK . LEFT , padx = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Format - Combobox
self . GIF3SFormatComboboxVar = TK . StringVar ( )
self . GIF3SFormatCombobox = TKttk . Combobox ( self . GIF3SFormatFrame )
self . GIF3SFormatCombobox . config ( style = ' combobox1.TCombobox ' )
2020-08-08 01:53:49 +02:00
self . GIF3SFormatCombobox . option_add ( " *TCombobox*Listbox.background " , GUI . R ( ' combobox1ListBoxBackground ' ) )
self . GIF3SFormatCombobox . option_add ( " *TCombobox*Listbox.foreground " , GUI . R ( ' combobox1ListBoxForeground ' ) )
self . GIF3SFormatCombobox . option_add ( " *TCombobox*Listbox.selectBackground " , GUI . R ( ' combobox1ListBoxSelectBackground ' ) )
self . GIF3SFormatCombobox . option_add ( " *TCombobox*Listbox.selectForeground " , GUI . R ( ' combobox1ListBoxSelectForeground ' ) )
2020-08-06 18:43:05 +02:00
self . GIF3SFormatCombobox . config ( state = ' readonly ' )
self . GIF3SFormatCombobox . config ( textvariable = self . GIF3SFormatComboboxVar )
self . GIF3SFormatCombobox [ ' values ' ] = tuple ( FMT . getList ( ) )
2020-08-08 01:53:49 +02:00
self . GIF3SFormatCombobox . pack ( side = TK . LEFT , expand = 1 , fill = TK . X , padx = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
#########################################
# (3) Plik źródłowy 4 ###################
self . GIF4Frame = TKttk . Frame ( self . generateInputFilesFrame )
self . GIF4Frame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . GIF4Frame . pack ( fill = TK . X , expand = 1 , pady = int ( ( GUI . R ( ' GIFFrameSeparators ' ) / 2 ) ) )
2020-08-06 18:43:05 +02:00
2020-08-08 01:53:49 +02:00
# "Plik źródłowy (1)"
2020-08-06 18:43:05 +02:00
self . GIF4Label = TKttk . Label ( self . GIF4Frame )
self . GIF4Label . config ( style = ' label1.TLabel ' )
2020-08-08 01:53:49 +02:00
self . GIF4Label . config ( width = GUI . R ( ' generateFilesLabelWidth ' ) )
self . GIF4Label . config ( anchor = GUI . R ( ' generateFilesLabelAnchor ' ) )
self . GIF4Label . config ( padding = ( ' 0 0 %s 0 ' % str ( 2 * GUI . R ( ' generateInputFilesPadding ' ) ) ) )
2020-08-21 00:40:52 +02:00
self . GIF4Label . config ( text = ' Plik źródłowy (4) ' )
2020-08-06 18:43:05 +02:00
self . GIF4Label . pack ( side = TK . LEFT )
# Plik żródłowy (1) - Ustawienia
self . GIF4SFrame = TKttk . Frame ( self . GIF4Frame )
self . GIF4SFrame . config ( style = ' layoutFrame.TFrame ' )
self . GIF4SFrame . pack ( side = TK . RIGHT , fill = TK . X , expand = 1 )
# Lokalizacja
self . GIF4SLocalizationFrame = TKttk . Frame ( self . GIF4SFrame )
self . GIF4SLocalizationFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . GIF4SLocalizationFrame . pack ( side = TK . TOP , fill = TK . X , expand = 1 , pady = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Lokalizacja - Entry
self . GIF4SLocalizationEntryVar = TK . StringVar ( )
self . GIF4SLocalizationEntry = TKttk . Entry ( self . GIF4SLocalizationFrame )
self . GIF4SLocalizationEntry . config ( style = ' entry1.TEntry ' )
self . GIF4SLocalizationEntry . config ( textvariable = self . GIF4SLocalizationEntryVar )
2020-08-08 01:53:49 +02:00
self . GIF4SLocalizationEntry . pack ( side = TK . LEFT , expand = 1 , fill = TK . X , padx = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Lokalizacja - Button
self . GIF4SLocalizationButton = TKttk . Button ( self . GIF4SLocalizationFrame )
self . GIF4SLocalizationButton . config ( style = ' button1.TButton ' )
self . GIF4SLocalizationButton . config ( text = ' Przeglądaj ' )
self . GIF4SLocalizationButton . config ( command = self . GIF4SLocalizationButtonAction )
2020-08-08 01:53:49 +02:00
self . GIF4SLocalizationButton . pack ( side = TK . RIGHT , padx = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Format
self . GIF4SFormatFrame = TKttk . Frame ( self . GIF4SFrame )
self . GIF4SFormatFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . GIF4SFormatFrame . pack ( side = TK . BOTTOM , fill = TK . X , expand = 1 , pady = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Format - Label
self . GIF4SFormatLabel = TKttk . Label ( self . GIF4SFormatFrame )
self . GIF4SFormatLabel . config ( style = ' label2.TLabel ' )
self . GIF4SFormatLabel . config ( text = ' Format ' )
2020-08-08 01:53:49 +02:00
self . GIF4SFormatLabel . pack ( side = TK . LEFT , padx = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
# Format - Combobox
self . GIF4SFormatComboboxVar = TK . StringVar ( )
self . GIF4SFormatCombobox = TKttk . Combobox ( self . GIF4SFormatFrame )
self . GIF4SFormatCombobox . config ( style = ' combobox1.TCombobox ' )
2020-08-08 01:53:49 +02:00
self . GIF4SFormatCombobox . option_add ( " *TCombobox*Listbox.background " , GUI . R ( ' combobox1ListBoxBackground ' ) )
self . GIF4SFormatCombobox . option_add ( " *TCombobox*Listbox.foreground " , GUI . R ( ' combobox1ListBoxForeground ' ) )
self . GIF4SFormatCombobox . option_add ( " *TCombobox*Listbox.selectBackground " , GUI . R ( ' combobox1ListBoxSelectBackground ' ) )
self . GIF4SFormatCombobox . option_add ( " *TCombobox*Listbox.selectForeground " , GUI . R ( ' combobox1ListBoxSelectForeground ' ) )
2020-08-06 18:43:05 +02:00
self . GIF4SFormatCombobox . config ( state = ' readonly ' )
self . GIF4SFormatCombobox . config ( textvariable = self . GIF4SFormatComboboxVar )
self . GIF4SFormatCombobox [ ' values ' ] = tuple ( FMT . getList ( ) )
2020-08-08 01:53:49 +02:00
self . GIF4SFormatCombobox . pack ( side = TK . LEFT , expand = 1 , fill = TK . X , padx = GUI . R ( ' generateInputFilesPadding ' ) )
2020-08-06 18:43:05 +02:00
#########################################
###################################################
# (2) Separator1 ##################################
self . generateSeparator1 = TKttk . Separator ( self . generateFilesFrame )
self . generateSeparator1 . config ( style = ' separator1.TSeparator ' )
2020-08-08 01:53:49 +02:00
self . generateSeparator1 . config ( orient = TK . HORIZONTAL )
self . generateSeparator1 . pack ( fill = TK . X , pady = GUI . R ( ' generateHorizontalSeparatorPadY ' ) )
2020-08-06 18:43:05 +02:00
###################################################
# (2) Pliki wyjściowe #############################
self . generateOutputFilesFrame = TKttk . Frame ( self . generateFilesFrame )
self . generateOutputFilesFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . generateOutputFilesFrame . pack ( fill = TK . X , padx = GUI . R ( ' outsidelayoutFramesPadX ' ) )
2020-08-06 18:43:05 +02:00
# (3) Poczta ############################
self . GOFMailFrame = TKttk . Frame ( self . generateOutputFilesFrame )
self . GOFMailFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . GOFMailFrame . pack ( pady = GUI . R ( ' generateOutputFilesPadding ' ) , fill = TK . X , expand = 1 )
2020-08-06 18:43:05 +02:00
# "Poczta"
self . GOFMailLabel = TKttk . Label ( self . GOFMailFrame )
self . GOFMailLabel . config ( style = ' label1.TLabel ' )
2020-08-08 01:53:49 +02:00
self . GOFMailLabel . config ( width = GUI . R ( ' generateFilesLabelWidth ' ) )
self . GOFMailLabel . config ( anchor = GUI . R ( ' generateFilesLabelAnchor ' ) )
2020-08-06 18:43:05 +02:00
self . GOFMailLabel . config ( text = ' Poczta ' )
self . GOFMailLabel . pack ( side = TK . LEFT )
# Plik poczty - Lokalizacja (Entry)
self . GOFMailEntryVar = TK . StringVar ( )
self . GOFMailEntry = TKttk . Entry ( self . GOFMailFrame )
self . GOFMailEntry . config ( style = ' entry1.TEntry ' )
self . GOFMailEntry . config ( textvariable = self . GOFMailEntryVar )
2020-08-08 01:53:49 +02:00
self . GOFMailEntry . pack ( padx = 2 * GUI . R ( ' generateOutputFilesPadding ' ) , side = TK . LEFT , fill = TK . X , expand = 1 )
2020-08-06 18:43:05 +02:00
# Plik poczty - Lokalizacja (Button)
self . GOFMailButton = TKttk . Button ( self . GOFMailFrame )
self . GOFMailButton . config ( style = ' button1.TButton ' )
self . GOFMailButton . config ( text = ' Przeglądaj ' )
self . GOFMailButton . config ( command = self . GOFMailButtonAction )
self . GOFMailButton . pack ( side = TK . LEFT )
#########################################
# (3) Office ############################
self . GOFOfficeFrame = TKttk . Frame ( self . generateOutputFilesFrame )
self . GOFOfficeFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . GOFOfficeFrame . pack ( pady = GUI . R ( ' generateOutputFilesPadding ' ) , fill = TK . X , expand = 1 )
2020-08-06 18:43:05 +02:00
# "Office"
self . GOFOfficeLabel = TKttk . Label ( self . GOFOfficeFrame )
self . GOFOfficeLabel . config ( style = ' label1.TLabel ' )
2020-08-08 01:53:49 +02:00
self . GOFOfficeLabel . config ( width = GUI . R ( ' generateFilesLabelWidth ' ) )
self . GOFOfficeLabel . config ( anchor = GUI . R ( ' generateFilesLabelAnchor ' ) )
2020-08-06 18:43:05 +02:00
self . GOFOfficeLabel . config ( text = ' Office ' )
self . GOFOfficeLabel . pack ( side = TK . LEFT )
# Plik office - Lokalizacja (Entry)
self . GOFOfficeEntryVar = TK . StringVar ( )
self . GOFOfficeEntry = TKttk . Entry ( self . GOFOfficeFrame )
self . GOFOfficeEntry . config ( style = ' entry1.TEntry ' )
self . GOFOfficeEntry . config ( textvariable = self . GOFOfficeEntryVar )
2020-08-08 01:53:49 +02:00
self . GOFOfficeEntry . pack ( padx = 2 * GUI . R ( ' generateOutputFilesPadding ' ) , side = TK . LEFT , fill = TK . X , expand = 1 )
2020-08-06 18:43:05 +02:00
# Plik office - Lokalizacja (Button)
self . GOFOfficeButton = TKttk . Button ( self . GOFOfficeFrame )
self . GOFOfficeButton . config ( style = ' button1.TButton ' )
self . GOFOfficeButton . config ( text = ' Przeglądaj ' )
self . GOFOfficeButton . config ( command = self . GOFOfficeButtonAction )
self . GOFOfficeButton . pack ( side = TK . LEFT )
#########################################
###################################################
#############################################################
# (1) Separator2 ###########################################
2020-08-06 18:38:31 +02:00
2020-08-06 18:43:05 +02:00
self . generateSeparator2 = TKttk . Separator ( self . generateFrame )
self . generateSeparator2 . config ( style = ' separator1.TSeparator ' )
2020-08-08 01:53:49 +02:00
self . generateSeparator2 . config ( orient = TK . HORIZONTAL )
self . generateSeparator2 . pack ( fill = TK . X , pady = GUI . R ( ' generateHorizontalSeparatorPadY ' ) )
2020-08-06 18:38:31 +02:00
2020-08-06 18:43:05 +02:00
#############################################################
2020-08-06 18:38:31 +02:00
2020-08-06 18:43:05 +02:00
# (1) Przyciski #############################################
2020-08-06 18:38:31 +02:00
2020-08-06 18:43:05 +02:00
self . generateButtonsFrame = TKttk . Frame ( self . generateFrame )
self . generateButtonsFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . generateButtonsFrame . pack ( fill = TK . X , padx = GUI . R ( ' outsidelayoutFramesPadX ' ) )
2020-08-06 18:43:05 +02:00
# Przycisk "START"
self . generateStartButton = TKttk . Button ( self . generateButtonsFrame )
self . generateStartButton . config ( style = ' button1.TButton ' )
2020-08-08 01:53:49 +02:00
self . generateStartButton . config ( padding = GUI . R ( ' generateStartButtonPadding ' ) )
2020-08-06 18:43:05 +02:00
self . generateStartButton . config ( text = ' START ' )
self . generateStartButton . config ( command = self . generateStartButtonAction )
2020-08-08 01:53:49 +02:00
self . generateStartButton . pack ( side = TK . LEFT , fill = TK . X , expand = 1 , pady = GUI . R ( ' generateStartButtonPadY ' ) )
2020-08-06 18:43:05 +02:00
##############################################################
#######################################################################
# TAB3 - Format #######################################################
self . formatTab = TKttk . Frame ( self . mainMenu )
self . formatTab . config ( style = " mainMenuTabFrame.TFrame " )
2020-08-08 01:53:49 +02:00
self . formatTabImg = PLimg . open ( GUI . R ( ' formatTabIcon ' ) )
self . formatTabImg = self . formatTabImg . resize ( ( GUI . R ( ' tabIconsSize ' ) , GUI . R ( ' tabIconsSize ' ) ) , PLimg . ANTIALIAS )
2020-08-06 18:43:05 +02:00
self . formatTabImg = PLitk . PhotoImage ( self . formatTabImg )
self . mainMenu . add ( self . formatTab , image = self . formatTabImg , state = TK . NORMAL )
# Nagłówek
self . formatHeader = TKttk . Label ( self . formatTab )
self . formatHeader . config ( style = ' tabHeader.TLabel ' )
self . formatHeader . config ( text = ' FORMAT DANYCH ' )
2020-08-08 01:53:49 +02:00
self . formatHeader . pack ( fill = GUI . R ( ' headerFill ' ) )
2020-08-06 18:43:05 +02:00
# Zawartość
self . formatFrame = TKttk . Frame ( self . formatTab )
2020-08-08 01:53:49 +02:00
self . formatFrame . config ( style = ' contentTabFrame.TFrame ' )
self . formatFrame . pack ( fill = GUI . R ( ' contentTabFrameFill ' ) , expand = GUI . R ( ' contentTabFrameExpand ' ) , padx = GUI . R ( ' tabFramePadding ' ) , pady = GUI . R ( ' tabFramePadding ' ) )
2020-08-06 18:43:05 +02:00
2020-08-08 01:53:49 +02:00
2020-08-06 18:43:05 +02:00
# (1) Ładowanie presetu #####################################
self . loadingPresetFrame = TKttk . Frame ( self . formatFrame )
self . loadingPresetFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-21 00:40:52 +02:00
self . loadingPresetFrame . pack ( fill = TK . X , side = TK . TOP , padx = GUI . R ( ' outsidelayoutFramesPadX ' ) )
2020-08-06 18:43:05 +02:00
# "Wybierz preset do edycji lub wpisz nazwę nowego"
self . loadingListLabel = TKttk . Label ( self . loadingPresetFrame )
self . loadingListLabel . config ( style = ' label1.TLabel ' )
self . loadingListLabel . config ( text = ' Wybierz preset do edycji lub wpisz nazwę nowego ' )
self . loadingListLabel . pack ( side = TK . LEFT )
# Rozwijana lista presetów
self . loadingListVar = TK . StringVar ( )
self . loadingList = TKttk . Combobox ( self . loadingPresetFrame )
self . loadingList . config ( textvariable = self . loadingListVar )
self . loadingList . config ( style = ' combobox2.TCombobox ' )
2020-08-08 01:53:49 +02:00
self . loadingList . option_add ( " *TCombobox*Listbox.background " , GUI . R ( ' combobox2ListBoxBackground ' ) )
self . loadingList . option_add ( " *TCombobox*Listbox.foreground " , GUI . R ( ' combobox2ListBoxForeground ' ) )
self . loadingList . option_add ( " *TCombobox*Listbox.selectBackground " , GUI . R ( ' combobox2ListBoxSelectBackground ' ) )
self . loadingList . option_add ( " *TCombobox*Listbox.selectForeground " , GUI . R ( ' combobox2ListBoxSelectForeground ' ) )
self . loadingList . pack ( side = TK . LEFT , padx = GUI . R ( ' loadingListPadX ' ) , fill = TK . X , expand = 1 )
2020-08-06 18:43:05 +02:00
self . loadingList [ ' values ' ] = tuple ( FMT . getList ( ) )
# Przycisk "WCZYTAJ"
self . loadingButton = TKttk . Button ( self . loadingPresetFrame )
self . loadingButton . config ( style = ' button1.TButton ' )
self . loadingButton . config ( command = self . loadingButtonAction )
2020-08-08 01:53:49 +02:00
self . loadingButton . config ( width = GUI . R ( ' loadingButtonWidth ' ) )
2020-08-06 18:43:05 +02:00
self . loadingButton . config ( text = ' WCZYTAJ ' )
self . loadingButton . pack ( side = TK . RIGHT )
#############################################################
# (1) Separator 1 ###########################################
self . formatSeparator1 = TKttk . Separator ( self . formatFrame )
self . formatSeparator1 . config ( style = ' separator1.TSeparator ' )
self . formatSeparator1 . config ( orient = TK . HORIZONTAL )
2020-08-08 01:53:49 +02:00
self . formatSeparator1 . pack ( fill = TK . X , pady = GUI . R ( ' formatHorizontalSeparatorPadY ' ) )
2020-08-06 18:43:05 +02:00
#############################################################
# (1) Edycja presetu ########################################
self . editingPresetFrame = TKttk . Frame ( self . formatFrame )
self . editingPresetFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . editingPresetFrame . pack ( fill = TK . BOTH , expand = 1 , padx = GUI . R ( ' outsidelayoutFramesPadX ' ) )
2020-08-06 18:43:05 +02:00
# (2) Ustawienia ##################################
self . editingPresetSettingsFrame = TKttk . Frame ( self . editingPresetFrame )
self . editingPresetSettingsFrame . config ( style = ' layoutFrame.TFrame ' )
self . editingPresetSettingsFrame . pack ( fill = TK . BOTH , expand = 1 )
# (3) Inne ustawienia ###################
self . editingPresetOSFrame = TKttk . Frame ( self . editingPresetSettingsFrame )
self . editingPresetOSFrame . config ( style = ' layoutFrame.TFrame ' )
self . editingPresetOSFrame . pack ( fill = TK . BOTH , expand = 1 , side = TK . LEFT )
2020-08-08 01:53:49 +02:00
2020-08-06 18:43:05 +02:00
# (5) Typ osoby ###############
self . EPOSTypeFrame = TKttk . Frame ( self . editingPresetOSFrame )
self . EPOSTypeFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . EPOSTypeFrame . pack ( fill = TK . X , expand = 1 , pady = GUI . R ( ' EPOSTypeFramePadY ' ) )
2020-08-06 18:43:05 +02:00
# "Typ osoby"
self . EPOSTypeLabel = TKttk . Label ( self . EPOSTypeFrame )
self . EPOSTypeLabel . config ( style = ' label1.TLabel ' )
2020-08-08 01:53:49 +02:00
self . EPOSTypeLabel . config ( width = GUI . R ( ' EPOSLabelWidth ' ) )
self . EPOSTypeLabel . config ( anchor = GUI . R ( ' EPOSLabelAnchor ' ) )
2020-08-06 18:43:05 +02:00
self . EPOSTypeLabel . config ( text = ' Typ osoby ' )
self . EPOSTypeLabel . pack ( side = TK . LEFT )
# Radiobutton
self . EPOSTypeVar = TK . BooleanVar ( value = True )
self . EPOSTypeStudentRadiobutton = TK . Radiobutton ( self . EPOSTypeFrame )
2020-08-08 01:53:49 +02:00
self . EPOSTypeStudentRadiobutton . config ( background = GUI . R ( ' radiobutton1Background ' ) )
self . EPOSTypeStudentRadiobutton . config ( foreground = GUI . R ( ' radiobutton1TextColor ' ) )
self . EPOSTypeStudentRadiobutton . config ( selectcolor = GUI . R ( ' radiobutton1IndicatorBackground ' ) )
self . EPOSTypeStudentRadiobutton . config ( activebackground = GUI . R ( ' radiobutton1Background ' ) )
self . EPOSTypeStudentRadiobutton . config ( activeforeground = GUI . R ( ' radiobutton1TextColor ' ) )
2020-08-06 18:43:05 +02:00
self . EPOSTypeStudentRadiobutton . config ( variable = self . EPOSTypeVar )
self . EPOSTypeStudentRadiobutton . config ( value = True )
self . EPOSTypeStudentRadiobutton . config ( state = TK . DISABLED )
self . EPOSTypeStudentRadiobutton . config ( text = ' Uczniowie ' )
self . EPOSTypeStudentRadiobutton . pack ( side = TK . RIGHT , fill = TK . X , expand = 1 )
self . EPOSTypeTeacherRadiobutton = TK . Radiobutton ( self . EPOSTypeFrame )
2020-08-08 01:53:49 +02:00
self . EPOSTypeTeacherRadiobutton . config ( background = GUI . R ( ' radiobutton1Background ' ) )
self . EPOSTypeTeacherRadiobutton . config ( foreground = GUI . R ( ' radiobutton1TextColor ' ) )
self . EPOSTypeTeacherRadiobutton . config ( selectcolor = GUI . R ( ' radiobutton1IndicatorBackground ' ) )
self . EPOSTypeTeacherRadiobutton . config ( activebackground = GUI . R ( ' radiobutton1Background ' ) )
self . EPOSTypeTeacherRadiobutton . config ( activeforeground = GUI . R ( ' radiobutton1TextColor ' ) )
2020-08-06 18:43:05 +02:00
self . EPOSTypeTeacherRadiobutton . config ( variable = self . EPOSTypeVar )
self . EPOSTypeTeacherRadiobutton . config ( value = False )
self . EPOSTypeTeacherRadiobutton . config ( state = TK . DISABLED )
self . EPOSTypeTeacherRadiobutton . config ( text = ' Nauczyciele ' )
self . EPOSTypeTeacherRadiobutton . pack ( side = TK . RIGHT , fill = TK . X , expand = 1 )
#####################
# (5) Separator pomiedzy osobami
self . EPOSPersonSeparatorFrame = TKttk . Frame ( self . editingPresetOSFrame )
self . EPOSPersonSeparatorFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . EPOSPersonSeparatorFrame . pack ( fill = TK . X , expand = 1 , pady = GUI . R ( ' EPOSPersonSeparatorFramePadY ' ) )
2020-08-06 18:43:05 +02:00
# "Separator pomiędzy osobami"
self . EPOSPersonSeparatorLabel = TKttk . Label ( self . EPOSPersonSeparatorFrame )
self . EPOSPersonSeparatorLabel . config ( style = ' label1.TLabel ' )
2020-08-08 01:53:49 +02:00
self . EPOSPersonSeparatorLabel . config ( width = GUI . R ( ' EPOSLabelWidth ' ) )
self . EPOSPersonSeparatorLabel . config ( anchor = GUI . R ( ' EPOSLabelAnchor ' ) )
2020-08-06 18:43:05 +02:00
self . EPOSPersonSeparatorLabel . config ( text = ' Separator pomiędzy osobami ' )
self . EPOSPersonSeparatorLabel . pack ( side = TK . LEFT )
# Entry - Separator pomiedzy osobami
self . EPOSPersonSeparatorVar = TK . StringVar ( )
self . EPOSPersonSeparatorEntry = TKttk . Entry ( self . EPOSPersonSeparatorFrame )
self . EPOSPersonSeparatorEntry . config ( style = ' entry1.TEntry ' )
self . EPOSPersonSeparatorEntry . config ( textvariable = self . EPOSPersonSeparatorVar )
self . EPOSPersonSeparatorEntry . config ( state = TK . DISABLED )
self . EPOSPersonSeparatorEntry . pack ( side = TK . RIGHT , fill = TK . X , expand = 1 )
#####################
# (5) Separator pomiedzy wierszami
self . EPOSRowSeparatorFrame = TKttk . Frame ( self . editingPresetOSFrame )
self . EPOSRowSeparatorFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . EPOSRowSeparatorFrame . pack ( fill = TK . X , expand = 1 , pady = GUI . R ( ' EPOSRowSeparatorFramePadY ' ) )
2020-08-06 18:43:05 +02:00
# "Separator pomiędzy wierszami"
self . EPOSRowSeparatorLabel = TKttk . Label ( self . EPOSRowSeparatorFrame )
self . EPOSRowSeparatorLabel . config ( style = ' label1.TLabel ' )
2020-08-08 01:53:49 +02:00
self . EPOSRowSeparatorLabel . config ( width = GUI . R ( ' EPOSLabelWidth ' ) )
self . EPOSRowSeparatorLabel . config ( anchor = GUI . R ( ' EPOSLabelAnchor ' ) )
2020-08-06 18:43:05 +02:00
self . EPOSRowSeparatorLabel . config ( text = ' Separator pomiędzy wierszami ' )
self . EPOSRowSeparatorLabel . pack ( side = TK . LEFT )
# Entry - Separator pomiedzy wierszami
self . EPOSRowSeparatorVar = TK . StringVar ( )
self . EPOSRowSeparatorEntry = TKttk . Entry ( self . EPOSRowSeparatorFrame )
self . EPOSRowSeparatorEntry . config ( style = ' entry1.TEntry ' )
self . EPOSRowSeparatorEntry . config ( textvariable = self . EPOSRowSeparatorVar )
self . EPOSRowSeparatorEntry . config ( state = TK . DISABLED )
self . EPOSRowSeparatorEntry . pack ( side = TK . RIGHT , fill = TK . X , expand = 1 )
#####################
# (5) Separatory pomiedzy danymi
self . EPOSDataSeparatorFrame = TKttk . Frame ( self . editingPresetOSFrame )
self . EPOSDataSeparatorFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . EPOSDataSeparatorFrame . pack ( fill = TK . BOTH , expand = 1 , pady = GUI . R ( ' EPOSDataSeparatorFramePadY ' ) )
2020-08-06 18:43:05 +02:00
# "Separatory pomiędzy danymi"
self . EPOSDataSeparatorLabel = TKttk . Label ( self . EPOSDataSeparatorFrame )
self . EPOSDataSeparatorLabel . config ( style = ' label1.TLabel ' )
2020-08-08 01:53:49 +02:00
self . EPOSDataSeparatorLabel . config ( width = GUI . R ( ' EPOSLabelWidth ' ) )
self . EPOSDataSeparatorLabel . config ( anchor = GUI . R ( ' EPOSLabelAnchor ' ) )
2020-08-06 18:43:05 +02:00
self . EPOSDataSeparatorLabel . config ( text = ' Separatory pomiędzy danymi ' )
self . EPOSDataSeparatorLabel . pack ( side = TK . LEFT )
# Entry - Separator pomiedzy wierszami
self . EPOSDataSeparatorText = TK . Text ( self . EPOSDataSeparatorFrame )
self . EPOSDataSeparatorText . config ( state = TK . DISABLED )
2020-08-08 01:53:49 +02:00
self . EPOSDataSeparatorText . config ( background = GUI . R ( ' text1Background ' ) )
self . EPOSDataSeparatorText . config ( foreground = GUI . R ( ' text1TextColor ' ) )
self . EPOSDataSeparatorText . config ( relief = GUI . R ( ' text1Relief ' ) )
2020-08-06 18:43:05 +02:00
self . EPOSDataSeparatorText . pack ( side = TK . TOP , fill = TK . BOTH )
#####################
2020-08-08 01:53:49 +02:00
2020-08-06 18:43:05 +02:00
###############################
2020-08-08 01:53:49 +02:00
# (5) Separator 2 #############
2020-08-06 18:43:05 +02:00
self . formatSeparator2 = TKttk . Separator ( self . editingPresetSettingsFrame )
self . formatSeparator2 . config ( style = ' separator1.TSeparator ' )
self . formatSeparator2 . config ( orient = TK . VERTICAL )
2020-08-08 01:53:49 +02:00
self . formatSeparator2 . pack ( fill = TK . Y , padx = GUI . R ( ' formatVerticalSeparatorPadY ' ) , side = TK . LEFT )
2020-08-06 18:43:05 +02:00
###############################
2020-08-08 01:53:49 +02:00
# (5) Lokalizacja danych ######
2020-08-06 18:43:05 +02:00
self . editingPresetDLFrame = TKttk . Frame ( self . editingPresetSettingsFrame )
self . editingPresetDLFrame . config ( style = ' layoutFrame.TFrame ' )
self . editingPresetDLFrame . pack ( fill = TK . BOTH , side = TK . RIGHT )
self . editingPresetDLFrame . grid_columnconfigure ( 1 , weight = 1 )
self . editingPresetDLFrame . grid_columnconfigure ( 2 , weight = 1 )
2020-08-08 01:53:49 +02:00
2020-08-06 18:43:05 +02:00
# C1 - "Wiersz"
self . EPDLC1Label = TKttk . Label ( self . editingPresetDLFrame )
self . EPDLC1Label . config ( style = ' label1.TLabel ' )
self . EPDLC1Label . config ( text = ' Wiersz ' )
2020-08-08 01:53:49 +02:00
self . EPDLC1Label . grid ( row = 0 , column = 1 , padx = GUI . R ( ' EPDataLocalizationPadX ' ) , pady = GUI . R ( ' EPDataLocalizationPadY ' ) )
2020-08-06 18:43:05 +02:00
# C2 - "Pozycja w wierszu"
self . EPDLC2Label = TKttk . Label ( self . editingPresetDLFrame )
self . EPDLC2Label . config ( style = ' label1.TLabel ' )
self . EPDLC2Label . config ( justify = TK . CENTER )
self . EPDLC2Label . config ( text = ' Pozycja \n w wierszu ' )
2020-08-08 01:53:49 +02:00
self . EPDLC2Label . grid ( row = 0 , column = 2 , padx = GUI . R ( ' EPDataLocalizationPadX ' ) , pady = GUI . R ( ' EPDataLocalizationPadY ' ) )
2020-08-06 18:43:05 +02:00
# W1 - "Login"
self . EPDLW1Label = TKttk . Label ( self . editingPresetDLFrame )
self . EPDLW1Label . config ( style = ' label1.TLabel ' )
self . EPDLW1Label . config ( text = ' Login ' )
2020-08-08 01:53:49 +02:00
self . EPDLW1Label . grid ( row = 1 , column = 0 , padx = GUI . R ( ' EPDataLocalizationPadX ' ) , pady = GUI . R ( ' EPDataLocalizationPadY ' ) )
2020-08-06 18:43:05 +02:00
# Lokalizacja loginu (wiersz)
self . EPDLLoginRowVar = TK . IntVar ( )
self . EPDLLoginRowSpinbox = TKttk . Spinbox ( self . editingPresetDLFrame )
self . EPDLLoginRowSpinbox . config ( textvariable = self . EPDLLoginRowVar )
self . EPDLLoginRowSpinbox . config ( from_ = 0 )
self . EPDLLoginRowSpinbox . config ( to = 1000000 )
self . EPDLLoginRowSpinbox . config ( state = TK . DISABLED )
self . EPDLLoginRowSpinbox . config ( style = ' spinbox1.TSpinbox ' )
2020-08-08 01:53:49 +02:00
self . EPDLLoginRowSpinbox . grid ( row = 1 , column = 1 , padx = GUI . R ( ' EPDataLocalizationPadX ' ) , pady = GUI . R ( ' EPDataLocalizationPadY ' ) )
2020-08-06 18:43:05 +02:00
# Lokalizacja loginu (pozycja w wierszu)
self . EPDLLoginPosInRowVar = TK . IntVar ( )
self . EPDLLoginPosInRowSpinbox = TKttk . Spinbox ( self . editingPresetDLFrame )
self . EPDLLoginPosInRowSpinbox . config ( textvariable = self . EPDLLoginPosInRowVar )
self . EPDLLoginPosInRowSpinbox . config ( from_ = 0 )
self . EPDLLoginPosInRowSpinbox . config ( to = 1000000 )
self . EPDLLoginPosInRowSpinbox . config ( state = TK . DISABLED )
self . EPDLLoginPosInRowSpinbox . config ( style = ' spinbox1.TSpinbox ' )
2020-08-08 01:53:49 +02:00
self . EPDLLoginPosInRowSpinbox . grid ( row = 1 , column = 2 , padx = GUI . R ( ' EPDataLocalizationPadX ' ) , pady = GUI . R ( ' EPDataLocalizationPadY ' ) )
2020-08-06 18:43:05 +02:00
# W2 - "Imię"
self . EPDLW2Label = TKttk . Label ( self . editingPresetDLFrame )
self . EPDLW2Label . config ( style = ' label1.TLabel ' )
self . EPDLW2Label . config ( text = ' Imię ' )
2020-08-08 01:53:49 +02:00
self . EPDLW2Label . grid ( row = 2 , column = 0 , padx = GUI . R ( ' EPDataLocalizationPadX ' ) , pady = GUI . R ( ' EPDataLocalizationPadY ' ) )
2020-08-06 18:43:05 +02:00
# Lokalizacja imienia (wiersz)
self . EPDLFnameRowVar = TK . IntVar ( )
self . EPDLFnameRowSpinbox = TKttk . Spinbox ( self . editingPresetDLFrame )
self . EPDLFnameRowSpinbox . config ( textvariable = self . EPDLFnameRowVar )
self . EPDLFnameRowSpinbox . config ( from_ = 0 )
self . EPDLFnameRowSpinbox . config ( to = 1000000 )
self . EPDLFnameRowSpinbox . config ( state = TK . DISABLED )
self . EPDLFnameRowSpinbox . config ( style = ' spinbox1.TSpinbox ' )
2020-08-08 01:53:49 +02:00
self . EPDLFnameRowSpinbox . grid ( row = 2 , column = 1 , padx = GUI . R ( ' EPDataLocalizationPadX ' ) , pady = GUI . R ( ' EPDataLocalizationPadY ' ) )
2020-08-06 18:43:05 +02:00
# Lokalizacja imienia (pozycja w wierszu)
self . EPDLFnamePosInRowVar = TK . IntVar ( )
self . EPDLFnamePosInRowSpinbox = TKttk . Spinbox ( self . editingPresetDLFrame )
self . EPDLFnamePosInRowSpinbox . config ( textvariable = self . EPDLFnamePosInRowVar )
self . EPDLFnamePosInRowSpinbox . config ( from_ = 0 )
self . EPDLFnamePosInRowSpinbox . config ( to = 1000000 )
self . EPDLFnamePosInRowSpinbox . config ( state = TK . DISABLED )
self . EPDLFnamePosInRowSpinbox . config ( style = ' spinbox1.TSpinbox ' )
2020-08-08 01:53:49 +02:00
self . EPDLFnamePosInRowSpinbox . grid ( row = 2 , column = 2 , padx = GUI . R ( ' EPDataLocalizationPadX ' ) , pady = GUI . R ( ' EPDataLocalizationPadY ' ) )
2020-08-06 18:43:05 +02:00
# W3 - "Nazwisko"
self . EPDLW3Label = TKttk . Label ( self . editingPresetDLFrame )
self . EPDLW3Label . config ( style = ' label1.TLabel ' )
self . EPDLW3Label . config ( text = ' Nazwisko ' )
2020-08-08 01:53:49 +02:00
self . EPDLW3Label . grid ( row = 3 , column = 0 , padx = GUI . R ( ' EPDataLocalizationPadX ' ) , pady = GUI . R ( ' EPDataLocalizationPadY ' ) )
2020-08-06 18:43:05 +02:00
# Lokalizacja nazwiska (wiersz)
self . EPDLLnameRowVar = TK . IntVar ( )
self . EPDLLnameRowSpinbox = TKttk . Spinbox ( self . editingPresetDLFrame )
self . EPDLLnameRowSpinbox . config ( textvariable = self . EPDLLnameRowVar )
self . EPDLLnameRowSpinbox . config ( from_ = 0 )
self . EPDLLnameRowSpinbox . config ( to = 1000000 )
self . EPDLLnameRowSpinbox . config ( state = TK . DISABLED )
self . EPDLLnameRowSpinbox . config ( style = ' spinbox1.TSpinbox ' )
2020-08-08 01:53:49 +02:00
self . EPDLLnameRowSpinbox . grid ( row = 3 , column = 1 , padx = GUI . R ( ' EPDataLocalizationPadX ' ) , pady = GUI . R ( ' EPDataLocalizationPadY ' ) )
2020-08-06 18:43:05 +02:00
# Lokalizacja nazwiska (pozycja w wierszu)
self . EPDLLnamePosInRowVar = TK . IntVar ( )
self . EPDLLnamePosInRowSpinbox = TKttk . Spinbox ( self . editingPresetDLFrame )
self . EPDLLnamePosInRowSpinbox . config ( textvariable = self . EPDLLnamePosInRowVar )
self . EPDLLnamePosInRowSpinbox . config ( from_ = 0 )
self . EPDLLnamePosInRowSpinbox . config ( to = 1000000 )
self . EPDLLnamePosInRowSpinbox . config ( state = TK . DISABLED )
self . EPDLLnamePosInRowSpinbox . config ( style = ' spinbox1.TSpinbox ' )
2020-08-08 01:53:49 +02:00
self . EPDLLnamePosInRowSpinbox . grid ( row = 3 , column = 2 , padx = GUI . R ( ' EPDataLocalizationPadX ' ) , pady = GUI . R ( ' EPDataLocalizationPadY ' ) )
2020-08-06 18:43:05 +02:00
# W4 - "Szkoła"
self . EPDLW4Label = TKttk . Label ( self . editingPresetDLFrame )
self . EPDLW4Label . config ( style = ' label1.TLabel ' )
self . EPDLW4Label . config ( text = ' Szkoła ' )
2020-08-08 01:53:49 +02:00
self . EPDLW4Label . grid ( row = 4 , column = 0 , padx = GUI . R ( ' EPDataLocalizationPadX ' ) , pady = GUI . R ( ' EPDataLocalizationPadY ' ) )
2020-08-06 18:43:05 +02:00
# Lokalizacja nazwiska (wiersz)
self . EPDLSchoolRowVar = TK . IntVar ( )
self . EPDLSchoolRowSpinbox = TKttk . Spinbox ( self . editingPresetDLFrame )
self . EPDLSchoolRowSpinbox . config ( textvariable = self . EPDLSchoolRowVar )
self . EPDLSchoolRowSpinbox . config ( from_ = 0 )
self . EPDLSchoolRowSpinbox . config ( to = 1000000 )
self . EPDLSchoolRowSpinbox . config ( state = TK . DISABLED )
self . EPDLSchoolRowSpinbox . config ( style = ' spinbox1.TSpinbox ' )
2020-08-08 01:53:49 +02:00
self . EPDLSchoolRowSpinbox . grid ( row = 4 , column = 1 , padx = GUI . R ( ' EPDataLocalizationPadX ' ) , pady = GUI . R ( ' EPDataLocalizationPadY ' ) )
2020-08-06 18:43:05 +02:00
# Lokalizacja nazwiska (pozycja w wierszu)
self . EPDLSchoolPosInRowVar = TK . IntVar ( )
self . EPDLSchoolPosInRowSpinbox = TKttk . Spinbox ( self . editingPresetDLFrame )
self . EPDLSchoolPosInRowSpinbox . config ( textvariable = self . EPDLSchoolPosInRowVar )
self . EPDLSchoolPosInRowSpinbox . config ( from_ = 0 )
self . EPDLSchoolPosInRowSpinbox . config ( to = 1000000 )
self . EPDLSchoolPosInRowSpinbox . config ( state = TK . DISABLED )
self . EPDLSchoolPosInRowSpinbox . config ( style = ' spinbox1.TSpinbox ' )
2020-08-08 01:53:49 +02:00
self . EPDLSchoolPosInRowSpinbox . grid ( row = 4 , column = 2 , padx = GUI . R ( ' EPDataLocalizationPadX ' ) , pady = GUI . R ( ' EPDataLocalizationPadY ' ) )
2020-08-06 18:43:05 +02:00
# W5 - "Klasa"
self . EPDLW5Label = TKttk . Label ( self . editingPresetDLFrame )
self . EPDLW5Label . config ( style = ' label1.TLabel ' )
self . EPDLW5Label . config ( text = ' Klasa ' )
2020-08-08 01:53:49 +02:00
self . EPDLW5Label . grid ( row = 5 , column = 0 , padx = GUI . R ( ' EPDataLocalizationPadX ' ) , pady = GUI . R ( ' EPDataLocalizationPadY ' ) )
2020-08-06 18:43:05 +02:00
# Lokalizacja nazwiska (wiersz)
self . EPDLClassRowVar = TK . IntVar ( )
self . EPDLClassRowSpinbox = TKttk . Spinbox ( self . editingPresetDLFrame )
self . EPDLClassRowSpinbox . config ( textvariable = self . EPDLClassRowVar )
self . EPDLClassRowSpinbox . config ( from_ = 0 )
self . EPDLClassRowSpinbox . config ( to = 1000000 )
self . EPDLClassRowSpinbox . config ( state = TK . DISABLED )
self . EPDLClassRowSpinbox . config ( style = ' spinbox1.TSpinbox ' )
2020-08-08 01:53:49 +02:00
self . EPDLClassRowSpinbox . grid ( row = 5 , column = 1 , padx = GUI . R ( ' EPDataLocalizationPadX ' ) , pady = GUI . R ( ' EPDataLocalizationPadY ' ) )
2020-08-06 18:43:05 +02:00
# Lokalizacja nazwiska (pozycja w wierszu)
self . EPDLClassPosInRowVar = TK . IntVar ( )
self . EPDLClassPosInRowSpinbox = TKttk . Spinbox ( self . editingPresetDLFrame )
self . EPDLClassPosInRowSpinbox . config ( textvariable = self . EPDLClassPosInRowVar )
self . EPDLClassPosInRowSpinbox . config ( from_ = 0 )
self . EPDLClassPosInRowSpinbox . config ( to = 1000000 )
self . EPDLClassPosInRowSpinbox . config ( state = TK . DISABLED )
self . EPDLClassPosInRowSpinbox . config ( style = ' spinbox1.TSpinbox ' )
2020-08-08 01:53:49 +02:00
self . EPDLClassPosInRowSpinbox . grid ( row = 5 , column = 2 , padx = GUI . R ( ' EPDataLocalizationPadX ' ) , pady = GUI . R ( ' EPDataLocalizationPadY ' ) )
2020-08-27 13:55:50 +02:00
2020-08-28 01:16:22 +02:00
# Separator
2020-08-27 13:55:50 +02:00
self . formatSeparator4Frame = TKttk . Frame ( self . editingPresetDLFrame )
self . formatSeparator4Frame . config ( style = ' layoutFrame.TFrame ' )
self . formatSeparator4Frame . grid ( row = 6 , column = 0 , columnspan = 3 )
self . formatSeparator4 = TKttk . Separator ( self . formatSeparator4Frame )
self . formatSeparator4 . config ( style = ' separator1.TSeparator ' )
self . formatSeparator4 . config ( orient = TK . HORIZONTAL )
2020-08-28 01:16:22 +02:00
self . formatSeparator4 . pack ( padx = GUI . R ( ' formatHorizontalSeparatorPadY ' ) , pady = 10 , fill = TK . X , expand = 1 )
2020-08-27 13:55:50 +02:00
# "Kodowanie"
self . formatInputCodingLabel = TKttk . Label ( self . editingPresetDLFrame )
self . formatInputCodingLabel . config ( style = ' label1.TLabel ' )
self . formatInputCodingLabel . config ( text = ' Kodowanie ' )
self . formatInputCodingLabel . grid ( row = 7 , column = 0 , padx = GUI . R ( ' EPDataLocalizationPadX ' ) , pady = GUI . R ( ' EPDataLocalizationPadY ' ) )
# Kodowanie - Combobox
self . formatInputCodingVar = TK . StringVar ( )
self . formatInputCodingCombobox = TKttk . Combobox ( self . editingPresetDLFrame )
self . formatInputCodingCombobox . config ( textvariable = self . formatInputCodingVar )
self . formatInputCodingCombobox . config ( state = TK . DISABLED )
2020-08-28 01:16:22 +02:00
self . formatInputCodingCombobox . config ( style = ' combobox2.TCombobox ' )
2020-08-27 13:55:50 +02:00
self . formatInputCodingCombobox . option_add ( " *TCombobox*Listbox.background " , GUI . R ( ' combobox2ListBoxBackground ' ) )
self . formatInputCodingCombobox . option_add ( " *TCombobox*Listbox.foreground " , GUI . R ( ' combobox2ListBoxForeground ' ) )
self . formatInputCodingCombobox . option_add ( " *TCombobox*Listbox.selectBackground " , GUI . R ( ' combobox2ListBoxSelectBackground ' ) )
self . formatInputCodingCombobox . option_add ( " *TCombobox*Listbox.selectForeground " , GUI . R ( ' combobox2ListBoxSelectForeground ' ) )
self . formatInputCodingCombobox . grid ( row = 7 , column = 1 , columnspan = 2 , padx = GUI . R ( ' EPDataLocalizationPadX ' ) , pady = GUI . R ( ' EPDataLocalizationPadY ' ) )
self . formatInputCodingCombobox [ ' values ' ] = tuple ( VAR . allowedCoding )
2020-08-06 18:43:05 +02:00
###############################
#########################################
###################################################
2020-08-08 01:53:49 +02:00
2020-08-06 18:43:05 +02:00
# (1) Separator 3 ###########################################
self . formatSeparator3 = TKttk . Separator ( self . formatFrame )
self . formatSeparator3 . config ( style = ' separator1.TSeparator ' )
self . formatSeparator3 . config ( orient = TK . HORIZONTAL )
2020-08-08 01:53:49 +02:00
self . formatSeparator3 . pack ( fill = TK . X , pady = GUI . R ( ' formatHorizontalSeparatorPadY ' ) )
2020-08-06 18:43:05 +02:00
#############################################################
2020-08-28 01:16:22 +02:00
# (1) Przyciski #############################################
2020-08-06 18:43:05 +02:00
self . editingPresetButtonsFrame = TKttk . Frame ( self . formatFrame )
self . editingPresetButtonsFrame . config ( style = ' layoutFrame.TFrame ' )
2020-08-08 01:53:49 +02:00
self . editingPresetButtonsFrame . pack ( fill = TK . X , side = TK . BOTTOM , pady = GUI . R ( ' editingPresetButtonsPadY ' ) )
2020-08-06 18:43:05 +02:00
# Przycisk 'ZAPISZ'
self . editingPresetSaveButton = TKttk . Button ( self . editingPresetButtonsFrame )
self . editingPresetSaveButton . config ( command = self . editingPresetSaveButtonAction )
self . editingPresetSaveButton . config ( state = TK . DISABLED )
self . editingPresetSaveButton . config ( style = ' button1.TButton ' )
2020-08-08 01:53:49 +02:00
self . editingPresetSaveButton . config ( width = GUI . R ( ' editingPresetSaveButtonWidth ' ) )
2020-08-06 18:43:05 +02:00
self . editingPresetSaveButton . config ( text = ' ZAPISZ ' )
self . editingPresetSaveButton . pack ( side = TK . LEFT , expand = 1 )
# Przycisk 'Anuluj'
self . editingPresetCancelButton = TKttk . Button ( self . editingPresetButtonsFrame )
self . editingPresetCancelButton . config ( command = self . editingPresetCancelButtonAction )
self . editingPresetCancelButton . config ( state = TK . DISABLED )
self . editingPresetCancelButton . config ( style = ' button1.TButton ' )
2020-08-08 01:53:49 +02:00
self . editingPresetCancelButton . config ( width = GUI . R ( ' editingPresetCancelButtonWidth ' ) )
2020-08-06 18:43:05 +02:00
self . editingPresetCancelButton . config ( text = ' Anuluj ' )
self . editingPresetCancelButton . pack ( side = TK . RIGHT , expand = 1 )
#############################################################
######################################################################
# TAB3 - Ustawienia ##################################################
self . settingsTab = TKttk . Frame ( self . mainMenu )
self . settingsTab . config ( style = " mainMenuTabFrame.TFrame " )
2020-08-08 01:53:49 +02:00
self . settingsTabImg = PLimg . open ( GUI . R ( ' settingsTabIcon ' ) )
self . settingsTabImg = self . settingsTabImg . resize ( ( GUI . R ( ' tabIconsSize ' ) , GUI . R ( ' tabIconsSize ' ) ) , PLimg . ANTIALIAS )
2020-08-06 18:43:05 +02:00
self . settingsTabImg = PLitk . PhotoImage ( self . settingsTabImg )
self . mainMenu . add ( self . settingsTab , image = self . settingsTabImg , state = TK . NORMAL )
# Nagłówek
self . settingsHeader = TKttk . Label ( self . settingsTab )
self . settingsHeader . config ( style = ' tabHeader.TLabel ' )
self . settingsHeader . config ( text = ' USTAWIENIA ' )
2020-08-08 01:53:49 +02:00
self . settingsHeader . pack ( fill = GUI . R ( ' headerFill ' ) )
2020-08-06 18:43:05 +02:00
# Zawartość
self . settingsFrame = TKttk . Frame ( self . settingsTab )
2020-08-08 01:53:49 +02:00
self . settingsFrame . config ( style = ' contentTabFrame.TFrame ' )
self . settingsFrame . pack ( fill = GUI . R ( ' contentTabFrameFill ' ) , expand = GUI . R ( ' contentTabFrameExpand ' ) , padx = GUI . R ( ' tabFramePadding ' ) , pady = GUI . R ( ' tabFramePadding ' ) )
2020-08-06 18:43:05 +02:00
2020-08-28 01:16:22 +02:00
# (1) Ustwienia #############################################
self . settingsMainFrame = TKttk . Frame ( self . settingsFrame )
self . settingsMainFrame . config ( style = ' layoutFrame.TFrame ' )
self . settingsMainFrame . pack ( side = TK . TOP , fill = TK . BOTH , expand = 1 )
# (2) Po lewo #####################################
self . settingsLeftFrame = TKttk . Frame ( self . settingsMainFrame )
self . settingsLeftFrame . config ( style = ' layoutFrame.TFrame ' )
self . settingsLeftFrame . pack ( side = TK . LEFT , fill = TK . BOTH , expand = 1 )
# (3) Kodowanie #########################
self . settingsCodeFrame = TKttk . Frame ( self . settingsLeftFrame )
self . settingsCodeFrame . config ( style = ' layoutFrame.TFrame ' )
self . settingsCodeFrame . pack ( side = TK . TOP , fill = TK . X )
# (4) Kodowanie dla pliku poczty
self . settingsMailCodeFrame = TKttk . Frame ( self . settingsCodeFrame )
self . settingsMailCodeFrame . config ( style = ' layoutFrame.TFrame ' )
self . settingsMailCodeFrame . pack ( side = TK . TOP , fill = TK . X , pady = 6 , expand = 1 )
# 'Kodowanie wyjściowe dla pliku poczty'
self . settingsMailCodeLabel = TKttk . Label ( self . settingsMailCodeFrame )
self . settingsMailCodeLabel . config ( style = ' label1.TLabel ' )
self . settingsMailCodeLabel . config ( width = GUI . R ( ' settingsCodeLabelWidth ' ) )
self . settingsMailCodeLabel . config ( anchor = GUI . R ( ' settingsCodeLabelAnchor ' ) )
self . settingsMailCodeLabel . config ( text = ' Kodowanie wyjściowe dla pliku poczty ' )
self . settingsMailCodeLabel . pack ( side = TK . LEFT )
# Kodowanie dla poczty - Combobox
self . settingsMailCodeVar = TK . StringVar ( )
self . settingsMailCodeCombobox = TKttk . Combobox ( self . settingsMailCodeFrame )
self . settingsMailCodeCombobox . config ( textvariable = self . settingsMailCodeVar )
self . settingsMailCodeCombobox . config ( style = ' combobox2.TCombobox ' )
self . settingsMailCodeCombobox . option_add ( " *TCombobox*Listbox.background " , GUI . R ( ' combobox2ListBoxBackground ' ) )
self . settingsMailCodeCombobox . option_add ( " *TCombobox*Listbox.foreground " , GUI . R ( ' combobox2ListBoxForeground ' ) )
self . settingsMailCodeCombobox . option_add ( " *TCombobox*Listbox.selectBackground " , GUI . R ( ' combobox2ListBoxSelectBackground ' ) )
self . settingsMailCodeCombobox . option_add ( " *TCombobox*Listbox.selectForeground " , GUI . R ( ' combobox2ListBoxSelectForeground ' ) )
self . settingsMailCodeCombobox . pack ( side = TK . RIGHT , fill = TK . X , expand = 1 )
self . settingsMailCodeCombobox [ ' values ' ] = tuple ( VAR . allowedCoding )
self . settingsMailCodeCombobox . set ( CFG . R ( ' mailOutputCoding ' ) )
###############################
# (4) Kodowanie dla pliku office
self . settingsOfficeCodeFrame = TKttk . Frame ( self . settingsCodeFrame )
self . settingsOfficeCodeFrame . config ( style = ' layoutFrame.TFrame ' )
self . settingsOfficeCodeFrame . pack ( side = TK . BOTTOM , fill = TK . X , pady = 6 , expand = 1 )
# 'Kodowanie wyjściowe dla pliku office'
self . settingsOfficeCodeLabel = TKttk . Label ( self . settingsOfficeCodeFrame )
self . settingsOfficeCodeLabel . config ( style = ' label1.TLabel ' )
self . settingsOfficeCodeLabel . config ( width = GUI . R ( ' settingsCodeLabelWidth ' ) )
self . settingsOfficeCodeLabel . config ( anchor = GUI . R ( ' settingsCodeLabelAnchor ' ) )
self . settingsOfficeCodeLabel . config ( text = ' Kodowanie wyjściowe dla pliku office ' )
self . settingsOfficeCodeLabel . pack ( side = TK . LEFT )
# Kodowanie dla poczty - Combobox
self . settingsOfficeCodeVar = TK . StringVar ( )
self . settingsOfficeCodeCombobox = TKttk . Combobox ( self . settingsOfficeCodeFrame )
self . settingsOfficeCodeCombobox . config ( textvariable = self . settingsOfficeCodeVar )
self . settingsOfficeCodeCombobox . config ( style = ' combobox2.TCombobox ' )
self . settingsOfficeCodeCombobox . option_add ( " *TCombobox*Listbox.background " , GUI . R ( ' combobox2ListBoxBackground ' ) )
self . settingsOfficeCodeCombobox . option_add ( " *TCombobox*Listbox.foreground " , GUI . R ( ' combobox2ListBoxForeground ' ) )
self . settingsOfficeCodeCombobox . option_add ( " *TCombobox*Listbox.selectBackground " , GUI . R ( ' combobox2ListBoxSelectBackground ' ) )
self . settingsOfficeCodeCombobox . option_add ( " *TCombobox*Listbox.selectForeground " , GUI . R ( ' combobox2ListBoxSelectForeground ' ) )
self . settingsOfficeCodeCombobox . pack ( side = TK . RIGHT , fill = TK . X , expand = 1 )
self . settingsOfficeCodeCombobox [ ' values ' ] = tuple ( VAR . allowedCoding )
self . settingsOfficeCodeCombobox . set ( CFG . R ( ' officeOutputCoding ' ) )
###############################
#########################################
# (3) Separator #########################
self . settingsSeparator3 = TKttk . Separator ( self . settingsLeftFrame )
self . settingsSeparator3 . config ( style = ' separator1.TSeparator ' )
self . settingsSeparator3 . config ( orient = TK . HORIZONTAL )
self . settingsSeparator3 . pack ( fill = TK . X , pady = GUI . R ( ' settingsHorizontalSeparatorPadY ' ) )
#########################################
# (3) Inne dane #########################
self . settingsOtherFrame = TKttk . Frame ( self . settingsLeftFrame )
self . settingsOtherFrame . config ( style = ' layoutFrame.TFrame ' )
self . settingsOtherFrame . pack ( fill = TK . X )
# (4) Domena ##################
self . settingsOtherDomainFrame = TKttk . Frame ( self . settingsOtherFrame )
self . settingsOtherDomainFrame . config ( style = ' layoutFrame.TFrame ' )
self . settingsOtherDomainFrame . pack ( fill = TK . X , pady = 6 , expand = 1 )
# 'Domena (używana w mailu)'
self . settingsOtherDomainLabel = TKttk . Label ( self . settingsOtherDomainFrame )
self . settingsOtherDomainLabel . config ( style = ' label1.TLabel ' )
self . settingsOtherDomainLabel . config ( width = GUI . R ( ' settingsOtherLabelWidth ' ) )
self . settingsOtherDomainLabel . config ( anchor = GUI . R ( ' settingsOtherLabelAnchor ' ) )
self . settingsOtherDomainLabel . config ( text = ' Domena (używana w mailu) ' )
self . settingsOtherDomainLabel . pack ( side = TK . LEFT )
# Domena - Entry
self . settingsOtherDomainVar = TK . StringVar ( )
self . settingsOtherDomainEntry = TKttk . Entry ( self . settingsOtherDomainFrame )
self . settingsOtherDomainEntry . config ( style = ' entry1.TEntry ' )
self . settingsOtherDomainEntry . config ( textvariable = self . settingsOtherDomainVar )
self . settingsOtherDomainEntry . pack ( side = TK . RIGHT , fill = TK . X , expand = 1 )
self . settingsOtherDomainVar . set ( CFG . R ( ' domain ' ) )
###############################
# (4) Quota ###################
self . settingsOtherQuotaFrame = TKttk . Frame ( self . settingsOtherFrame )
self . settingsOtherQuotaFrame . config ( style = ' layoutFrame.TFrame ' )
self . settingsOtherQuotaFrame . pack ( fill = TK . X , pady = 6 , expand = 1 )
# 'Quota (MB)'
self . settingsOtherQuotaLabel = TKttk . Label ( self . settingsOtherQuotaFrame )
self . settingsOtherQuotaLabel . config ( style = ' label1.TLabel ' )
self . settingsOtherQuotaLabel . config ( width = GUI . R ( ' settingsOtherLabelWidth ' ) )
self . settingsOtherQuotaLabel . config ( anchor = GUI . R ( ' settingsOtherLabelAnchor ' ) )
self . settingsOtherQuotaLabel . config ( text = ' Quota (MB) ' )
self . settingsOtherQuotaLabel . pack ( side = TK . LEFT )
# Domena - Entry
self . settingsOtherQuotaVar = TK . IntVar ( )
self . settingsOtherQuotaSpinbox = TKttk . Spinbox ( self . settingsOtherQuotaFrame )
self . settingsOtherQuotaSpinbox . config ( textvariable = self . settingsOtherQuotaVar )
self . settingsOtherQuotaSpinbox . config ( from_ = 0 )
self . settingsOtherQuotaSpinbox . config ( to = 10000000000000000000000 )
self . settingsOtherQuotaSpinbox . config ( style = ' spinbox1.TSpinbox ' )
self . settingsOtherQuotaSpinbox . pack ( side = TK . RIGHT , fill = TK . X , expand = 1 )
self . settingsOtherQuotaSpinbox . set ( CFG . R ( ' quota ' ) )
###############################
# (4) Kraj ##################
self . settingsOtherCountryFrame = TKttk . Frame ( self . settingsOtherFrame )
self . settingsOtherCountryFrame . config ( style = ' layoutFrame.TFrame ' )
self . settingsOtherCountryFrame . pack ( fill = TK . X , pady = 6 , expand = 1 )
# 'Kraj (zapisany w danych na office)'
self . settingsOtherCountryLabel = TKttk . Label ( self . settingsOtherCountryFrame )
self . settingsOtherCountryLabel . config ( style = ' label1.TLabel ' )
self . settingsOtherCountryLabel . config ( width = GUI . R ( ' settingsOtherLabelWidth ' ) )
self . settingsOtherCountryLabel . config ( anchor = GUI . R ( ' settingsOtherLabelAnchor ' ) )
self . settingsOtherCountryLabel . config ( text = ' Kraj (zapisany w danych na office) ' )
self . settingsOtherCountryLabel . pack ( side = TK . LEFT )
# Domena - Entry
self . settingsOtherCountryVar = TK . StringVar ( )
self . settingsOtherCountryEntry = TKttk . Entry ( self . settingsOtherCountryFrame )
self . settingsOtherCountryEntry . config ( style = ' entry1.TEntry ' )
self . settingsOtherCountryEntry . config ( textvariable = self . settingsOtherCountryVar )
self . settingsOtherCountryEntry . pack ( side = TK . RIGHT , fill = TK . X , expand = 1 )
self . settingsOtherCountryVar . set ( CFG . R ( ' country ' ) )
###############################
2020-09-01 19:15:30 +02:00
# (4) Rozpoczęcie roku szkolnego
2020-08-28 01:16:22 +02:00
self . settingsOtherDRRSFrame = TKttk . Frame ( self . settingsOtherFrame )
self . settingsOtherDRRSFrame . config ( style = ' layoutFrame.TFrame ' )
self . settingsOtherDRRSFrame . pack ( fill = TK . X , expand = 1 , pady = 6 )
# 'Rozpoczęcie roku szkolnego (Dzień | Miesiąc)'
self . settingsOtherDRRSLabel = TKttk . Label ( self . settingsOtherDRRSFrame )
self . settingsOtherDRRSLabel . config ( style = ' label1.TLabel ' )
self . settingsOtherDRRSLabel . config ( width = GUI . R ( ' settingsOtherLabelWidth ' ) )
self . settingsOtherDRRSLabel . config ( anchor = GUI . R ( ' settingsOtherLabelAnchor ' ) )
self . settingsOtherDRRSLabel . config ( text = ' Rozpoczęcie roku szkolnego (DD | MM) ' )
self . settingsOtherDRRSLabel . pack ( side = TK . LEFT )
# Rozpoczęcie roku szkolnego - Miesiąc
self . settingsOtherDRRSMonthVar = TK . IntVar ( )
self . settingsOtherDRRSMonthSpinbox = TKttk . Spinbox ( self . settingsOtherDRRSFrame )
self . settingsOtherDRRSMonthSpinbox . config ( textvariable = self . settingsOtherDRRSMonthVar )
self . settingsOtherDRRSMonthSpinbox . config ( from_ = 1 )
self . settingsOtherDRRSMonthSpinbox . config ( to = 12 )
self . settingsOtherDRRSMonthSpinbox . config ( style = ' spinbox1.TSpinbox ' )
self . settingsOtherDRRSMonthSpinbox . pack ( side = TK . RIGHT , fill = TK . X , expand = 1 , padx = ( 6 , 0 ) )
self . settingsOtherDRRSMonthSpinbox . set ( CFG . R ( ' schoolyearStart ' ) [ ' M ' ] )
# Rozpoczęcie roku szkolnego - Dzień
self . settingsOtherDRRSDayVar = TK . IntVar ( )
self . settingsOtherDRRSDaySpinbox = TKttk . Spinbox ( self . settingsOtherDRRSFrame )
self . settingsOtherDRRSDaySpinbox . config ( textvariable = self . settingsOtherDRRSDayVar )
self . settingsOtherDRRSDaySpinbox . config ( from_ = 1 )
self . settingsOtherDRRSDaySpinbox . config ( to = 31 )
self . settingsOtherDRRSDaySpinbox . config ( style = ' spinbox1.TSpinbox ' )
self . settingsOtherDRRSDaySpinbox . pack ( side = TK . RIGHT , fill = TK . X , expand = 1 , padx = ( 0 , 6 ) )
self . settingsOtherDRRSDaySpinbox . set ( CFG . R ( ' schoolyearStart ' ) [ ' D ' ] )
###############################
#########################################
2020-09-01 19:15:30 +02:00
# (3) Separator #########################
self . settingsSeparator4 = TKttk . Separator ( self . settingsLeftFrame )
self . settingsSeparator4 . config ( style = ' separator1.TSeparator ' )
self . settingsSeparator4 . config ( orient = TK . HORIZONTAL )
self . settingsSeparator4 . pack ( fill = TK . X , pady = GUI . R ( ' settingsHorizontalSeparatorPadY ' ) )
#########################################
# (4) Nagłówki ##########################
self . settingsHeadlinesFrame = TKttk . Frame ( self . settingsLeftFrame )
self . settingsHeadlinesFrame . config ( style = ' layoutFrame.TFrame ' )
self . settingsHeadlinesFrame . pack ( fill = TK . X )
# (4) Nagłówek poczty #########
self . settingsHeadlinesMailFrame = TKttk . Frame ( self . settingsHeadlinesFrame )
self . settingsHeadlinesMailFrame . config ( style = ' layoutFrame.TFrame ' )
self . settingsHeadlinesMailFrame . pack ( fill = TK . X , expand = 1 , pady = 6 )
# 'Nagłówek dla pliku wyjściowego poczty'
self . settingsHeadlinesMailLabel = TKttk . Label ( self . settingsHeadlinesMailFrame )
self . settingsHeadlinesMailLabel . config ( style = ' label1.TLabel ' )
self . settingsHeadlinesMailLabel . config ( width = GUI . R ( ' settingsHeadlineLabelWidth ' ) )
self . settingsHeadlinesMailLabel . config ( anchor = GUI . R ( ' settingsHeadlineLabelAnchor ' ) )
self . settingsHeadlinesMailLabel . config ( text = ' Nagłówek dla pliku wyjściowego poczty ' )
self . settingsHeadlinesMailLabel . pack ( side = TK . LEFT )
# Nagłówek poczty - checkbutton
self . settingsHeadlinesMailCheckbuttonVar = TK . BooleanVar ( )
self . settingsHeadlinesMailCheckbutton = TK . Checkbutton ( self . settingsHeadlinesMailFrame )
self . settingsHeadlinesMailCheckbutton . config ( bg = GUI . R ( ' checkbutton1Background ' ) )
self . settingsHeadlinesMailCheckbutton . config ( fg = GUI . R ( ' checkbutton1TextColor ' ) )
self . settingsHeadlinesMailCheckbutton . config ( selectcolor = GUI . R ( ' checkbutton1IndicatorBackground ' ) )
self . settingsHeadlinesMailCheckbutton . config ( activebackground = GUI . R ( ' checkbutton1Background ' ) )
self . settingsHeadlinesMailCheckbutton . config ( activeforeground = GUI . R ( ' checkbutton1TextColor ' ) )
self . settingsHeadlinesMailCheckbutton . config ( text = ' Umieść w pliku ' )
self . settingsHeadlinesMailCheckbutton . config ( variable = self . settingsHeadlinesMailCheckbuttonVar )
self . settingsHeadlinesMailCheckbutton . pack ( side = TK . RIGHT , padx = ( 6 , 0 ) )
self . settingsHeadlinesMailCheckbuttonVar . set ( CFG . R ( ' ifHeadlineInMail ' ) )
# Nagłówek poczty - Entry
self . settingsHeadlinesMailEntryVar = TK . StringVar ( )
self . settingsHeadlinesMailEntry = TKttk . Entry ( self . settingsHeadlinesMailFrame )
self . settingsHeadlinesMailEntry . config ( style = ' entry1.TEntry ' )
self . settingsHeadlinesMailEntry . config ( textvariable = self . settingsHeadlinesMailEntryVar )
self . settingsHeadlinesMailEntry . pack ( side = TK . RIGHT , fill = TK . X , expand = 1 , padx = ( 0 , 6 ) )
self . settingsHeadlinesMailEntryVar . set ( CFG . R ( ' headlineInMail ' ) )
###############################
# (4) Nagłówek office #########
self . settingsHeadlinesOfficeFrame = TKttk . Frame ( self . settingsHeadlinesFrame )
self . settingsHeadlinesOfficeFrame . config ( style = ' layoutFrame.TFrame ' )
self . settingsHeadlinesOfficeFrame . pack ( fill = TK . X , expand = 1 , pady = 6 )
# 'Nagłówek dla pliku wyjściowego poczty'
self . settingsHeadlinesOfficeLabel = TKttk . Label ( self . settingsHeadlinesOfficeFrame )
self . settingsHeadlinesOfficeLabel . config ( style = ' label1.TLabel ' )
self . settingsHeadlinesOfficeLabel . config ( width = GUI . R ( ' settingsHeadlineLabelWidth ' ) )
self . settingsHeadlinesOfficeLabel . config ( anchor = GUI . R ( ' settingsHeadlineLabelAnchor ' ) )
self . settingsHeadlinesOfficeLabel . config ( text = ' Nagłówek dla pliku wyjściowego office ' )
self . settingsHeadlinesOfficeLabel . pack ( side = TK . LEFT )
# Nagłówek poczty - checkbutton
self . settingsHeadlinesOfficeCheckbuttonVar = TK . BooleanVar ( )
self . settingsHeadlinesOfficeCheckbutton = TK . Checkbutton ( self . settingsHeadlinesOfficeFrame )
self . settingsHeadlinesOfficeCheckbutton . config ( bg = GUI . R ( ' checkbutton1Background ' ) )
self . settingsHeadlinesOfficeCheckbutton . config ( fg = GUI . R ( ' checkbutton1TextColor ' ) )
self . settingsHeadlinesOfficeCheckbutton . config ( selectcolor = GUI . R ( ' checkbutton1IndicatorBackground ' ) )
self . settingsHeadlinesOfficeCheckbutton . config ( activebackground = GUI . R ( ' checkbutton1Background ' ) )
self . settingsHeadlinesOfficeCheckbutton . config ( activeforeground = GUI . R ( ' checkbutton1TextColor ' ) )
self . settingsHeadlinesOfficeCheckbutton . config ( text = ' Umieść w pliku ' )
self . settingsHeadlinesOfficeCheckbutton . config ( variable = self . settingsHeadlinesOfficeCheckbuttonVar )
self . settingsHeadlinesOfficeCheckbutton . pack ( side = TK . RIGHT , padx = ( 6 , 0 ) )
self . settingsHeadlinesOfficeCheckbuttonVar . set ( CFG . R ( ' ifHeadlineInOffice ' ) )
# Nagłówek poczty - Entry
self . settingsHeadlinesOfficeEntryVar = TK . StringVar ( )
self . settingsHeadlinesOfficeEntry = TKttk . Entry ( self . settingsHeadlinesOfficeFrame )
self . settingsHeadlinesOfficeEntry . config ( style = ' entry1.TEntry ' )
self . settingsHeadlinesOfficeEntry . config ( textvariable = self . settingsHeadlinesOfficeEntryVar )
self . settingsHeadlinesOfficeEntry . pack ( side = TK . RIGHT , fill = TK . X , expand = 1 , padx = ( 0 , 6 ) )
self . settingsHeadlinesOfficeEntryVar . set ( CFG . R ( ' headlineInOffice ' ) )
###############################
#########################################
2020-08-28 01:16:22 +02:00
###################################################
# (2) Separator ###################################
self . settingsSeparator2 = TKttk . Separator ( self . settingsMainFrame )
self . settingsSeparator2 . config ( style = ' separator1.TSeparator ' )
self . settingsSeparator2 . config ( orient = TK . VERTICAL )
self . settingsSeparator2 . pack ( side = TK . LEFT , fill = TK . Y , padx = GUI . R ( ' settingsVerticalSeparatorPadY ' ) )
###################################################
# (2) Dane o szkołach #############################
self . settingsSchoolDataFrame = TKttk . Frame ( self . settingsMainFrame )
self . settingsSchoolDataFrame . config ( style = ' layoutFrame.TFrame ' )
self . settingsSchoolDataFrame . pack ( side = TK . RIGHT , fill = TK . BOTH )
# 'Dane o szkołach'
self . settingsSchoolDataLabel = TKttk . Label ( self . settingsSchoolDataFrame )
self . settingsSchoolDataLabel . config ( style = ' label1.TLabel ' )
self . settingsSchoolDataLabel . config ( anchor = GUI . R ( ' settingsSchoolDataLabelAnchor ' ) )
self . settingsSchoolDataLabel . config ( text = ' Dane o szkołach ' )
self . settingsSchoolDataLabel . pack ( side = TK . TOP , pady = 6 )
# Label - oznaczenia kolumn
self . settingsSchoolDataInstructionLabel = TKttk . Label ( self . settingsSchoolDataFrame )
self . settingsSchoolDataInstructionLabel . config ( style = ' label3.TLabel ' )
self . settingsSchoolDataInstructionLabel . config ( anchor = GUI . R ( ' settingsSchoolDataLabelAnchor ' ) )
self . settingsSchoolDataInstructionLabel . config ( text = ' OZNACZENIE SZKOŁY | ILOŚĆ KLAS | CZY OZNACZENIE SZKOŁY W ZNACZNIKU KLASY? (0/1) ' )
self . settingsSchoolDataInstructionLabel . pack ( )
# Dane o szkołach - Text
self . settingsSchoolDataText = TK . Text ( self . settingsSchoolDataFrame )
self . settingsSchoolDataText . config ( background = GUI . R ( ' text1Background ' ) )
self . settingsSchoolDataText . config ( foreground = GUI . R ( ' text1TextColor ' ) )
self . settingsSchoolDataText . config ( relief = GUI . R ( ' text1Relief ' ) )
self . settingsSchoolDataText . config ( width = 50 )
self . settingsSchoolDataText . pack ( pady = 6 , fill = TK . Y , expand = 1 )
for x in CFG . R ( ' schoolData ' ) :
if x [ 2 ] :
x [ 2 ] = ' 1 '
else :
x [ 2 ] = ' 0 '
x [ 1 ] = str ( x [ 1 ] )
self . settingsSchoolDataText . insert ( TK . END , ( ' | ' . join ( x ) + ' \n ' ) )
###################################################
#############################################################
# (1) Separator #############################################
self . settingsSeparator1 = TKttk . Separator ( self . settingsFrame )
self . settingsSeparator1 . config ( style = ' separator1.TSeparator ' )
self . settingsSeparator1 . config ( orient = TK . HORIZONTAL )
self . settingsSeparator1 . pack ( fill = TK . X , pady = GUI . R ( ' settingsHorizontalSeparatorPadY ' ) )
#############################################################
# (1) Przyciski #############################################
self . settingsButtonsFrame = TKttk . Frame ( self . settingsFrame )
self . settingsButtonsFrame . config ( style = ' layoutFrame.TFrame ' )
self . settingsButtonsFrame . pack ( side = TK . BOTTOM , fill = TK . X , pady = GUI . R ( ' settingsButtonsPadY ' ) )
# (2) Przyciski ZAPISZ i Anuluj ###################
self . settingsButtonsSaveCancelFrame = TKttk . Frame ( self . settingsButtonsFrame )
self . settingsButtonsSaveCancelFrame . config ( style = ' layoutFrame.TFrame ' )
self . settingsButtonsSaveCancelFrame . pack ( side = TK . LEFT )
# Przycisk ZAPISZ
self . settingsButtonSave = TKttk . Button ( self . settingsButtonsSaveCancelFrame )
self . settingsButtonSave . config ( command = self . settingsButtonSaveAction )
self . settingsButtonSave . config ( style = ' button1.TButton ' )
self . settingsButtonSave . config ( width = GUI . R ( ' settingsButtonSaveWidth ' ) )
self . settingsButtonSave . config ( text = ' ZAPISZ ' )
self . settingsButtonSave . pack ( side = TK . LEFT , padx = 6 )
# Przycisk Anuluj
self . settingsButtonCancel = TKttk . Button ( self . settingsButtonsSaveCancelFrame )
self . settingsButtonCancel . config ( command = self . settingsButtonCancelAction )
self . settingsButtonCancel . config ( style = ' button1.TButton ' )
self . settingsButtonCancel . config ( width = GUI . R ( ' settingsButtonCancelWidth ' ) )
self . settingsButtonCancel . config ( text = ' Anuluj ' )
self . settingsButtonCancel . pack ( side = TK . RIGHT , padx = 6 )
###################################################
# (2) Inne przyciski ##############################
self . settingsButtonsOtherFrame = TKttk . Frame ( self . settingsButtonsFrame )
self . settingsButtonsOtherFrame . config ( style = ' layoutFrame.TFrame ' )
self . settingsButtonsOtherFrame . pack ( side = TK . RIGHT )
# Przycisk "Zarządzaj presetami formatu"
self . settingsButtonZPF = TKttk . Button ( self . settingsButtonsOtherFrame )
self . settingsButtonZPF . config ( command = self . settingsButtonZPFAction )
self . settingsButtonZPF . config ( style = ' button1.TButton ' )
self . settingsButtonZPF . config ( width = GUI . R ( ' settingsButtonZPFWidth ' ) )
self . settingsButtonZPF . config ( text = ' Zarządzaj presetami formatu ' )
self . settingsButtonZPF . pack ( side = TK . RIGHT , padx = 6 )
# Przycisk "Przywróć domyślne ustawienia wyglądu"
self . settingsButtonPDUW = TKttk . Button ( self . settingsButtonsOtherFrame )
self . settingsButtonPDUW . config ( command = self . settingsButtonPDUWAction )
self . settingsButtonPDUW . config ( style = ' button1.TButton ' )
self . settingsButtonPDUW . config ( width = GUI . R ( ' settingsButtonPDUWWidth ' ) )
self . settingsButtonPDUW . config ( text = ' Przywróć domyślne ustawienia wyglądu ' )
self . settingsButtonPDUW . pack ( side = TK . RIGHT , padx = 6 )
# Przycisk "Przywróć domyślne ustwienia ogólne"
self . settingsButtonPDUO = TKttk . Button ( self . settingsButtonsOtherFrame )
self . settingsButtonPDUO . config ( command = self . settingsButtonPDUOAction )
self . settingsButtonPDUO . config ( style = ' button1.TButton ' )
self . settingsButtonPDUO . config ( width = GUI . R ( ' settingsButtonPDUOWidth ' ) )
self . settingsButtonPDUO . config ( text = ' Przywróć domyślne ustawienia ogólne ' )
self . settingsButtonPDUO . pack ( side = TK . RIGHT , padx = 6 )
###################################################
#############################################################
2020-08-06 18:43:05 +02:00
######################################################################
# TAB4 - O programie #################################################
self . aboutTab = TKttk . Frame ( self . mainMenu )
self . aboutTab . config ( style = " mainMenuTabFrame.TFrame " )
2020-08-08 01:53:49 +02:00
self . aboutTabImg = PLimg . open ( GUI . R ( ' aboutTabIcon ' ) )
self . aboutTabImg = self . aboutTabImg . resize ( ( GUI . R ( ' tabIconsSize ' ) , GUI . R ( ' tabIconsSize ' ) ) , PLimg . ANTIALIAS )
2020-08-06 18:43:05 +02:00
self . aboutTabImg = PLitk . PhotoImage ( self . aboutTabImg )
self . mainMenu . add ( self . aboutTab , image = self . aboutTabImg , state = TK . NORMAL )
# Nagłówek
self . aboutHeader = TKttk . Label ( self . aboutTab )
self . aboutHeader . config ( style = ' tabHeader.TLabel ' )
self . aboutHeader . config ( text = ' O PROGRAMIE ' )
2020-08-08 01:53:49 +02:00
self . aboutHeader . pack ( fill = GUI . R ( ' headerFill ' ) )
2020-08-06 18:43:05 +02:00
# Zawartość
self . aboutFrame = TKttk . Frame ( self . aboutTab )
2020-08-08 01:53:49 +02:00
self . aboutFrame . config ( style = ' contentTabFrame.TFrame ' )
self . aboutFrame . pack ( fill = GUI . R ( ' contentTabFrameFill ' ) , expand = GUI . R ( ' contentTabFrameExpand ' ) , padx = GUI . R ( ' tabFramePadding ' ) , pady = GUI . R ( ' tabFramePadding ' ) )
2020-08-06 18:43:05 +02:00
2020-08-28 14:04:42 +02:00
# (1) Info & Logo ###########################################
self . aboutInfoLogoFrame = TKttk . Frame ( self . aboutFrame )
self . aboutInfoLogoFrame . config ( style = ' layoutFrame.TFrame ' )
self . aboutInfoLogoFrame . pack ( fill = TK . BOTH , expand = 1 )
# (2) Logo ########################################
self . aboutLogoFrame = TKttk . Frame ( self . aboutInfoLogoFrame )
self . aboutLogoFrame . config ( style = ' layoutFrame.TFrame ' )
self . aboutLogoFrame . pack ( fill = TK . BOTH , expand = 1 )
# Logo - Button
self . aboutLogoButton = TKttk . Button ( self . aboutLogoFrame )
self . aboutLogoButton . config ( style = ' button2.TButton ' )
self . aboutLogoButtonImg = PLimg . open ( GUI . R ( ' aboutLogoButtonImg ' ) )
self . aboutLogoButtonImg = self . aboutLogoButtonImg . resize ( ( GUI . R ( ' aboutLogoButtonImgSize ' ) , GUI . R ( ' aboutLogoButtonImgSize ' ) ) , PLimg . ANTIALIAS )
self . aboutLogoButtonImg = PLitk . PhotoImage ( self . aboutLogoButtonImg )
self . aboutLogoButton . config ( image = self . aboutLogoButtonImg )
self . aboutLogoButton . pack ( expand = 1 )
###################################################
# (2) Informacje ##################################
self . aboutInfoFrame = TKttk . Frame ( self . aboutInfoLogoFrame )
self . aboutInfoFrame . config ( style = ' layoutFrame.TFrame ' )
self . aboutInfoFrame . pack ( fill = TK . BOTH , expand = 1 )
# Nazwa programu
self . aboutInfoProgramNameLabel = TKttk . Label ( self . aboutInfoFrame )
self . aboutInfoProgramNameLabel . config ( style = ' label4.TLabel ' )
self . aboutInfoProgramNameLabel . config ( text = VAR . programName )
self . aboutInfoProgramNameLabel . pack ( )
# Wersja programu
self . aboutInfoProgramNameLabel = TKttk . Label ( self . aboutInfoFrame )
self . aboutInfoProgramNameLabel . config ( style = ' label1.TLabel ' )
self . aboutInfoProgramNameLabel . config ( text = ' Wersja %s %s (Build %s ) ' % ( VAR . programVersion , VAR . programVersionStage , VAR . programVersionBuild ) )
self . aboutInfoProgramNameLabel . pack ( )
# (3) Pozostałe informacje ##############
self . aboutOtherInfoFrame = TKttk . Frame ( self . aboutInfoFrame )
self . aboutOtherInfoFrame . config ( style = ' layoutFrame.TFrame ' )
self . aboutOtherInfoFrame . pack ( pady = GUI . R ( ' aboutOtherInfoFramePadX ' ) )
# Czas pracy
self . aboutOIToWLabel = TKttk . Label ( self . aboutOtherInfoFrame )
self . aboutOIToWLabel . config ( style = ' label2.TLabel ' )
self . aboutOIToWLabel . config ( text = ' © %s %s - %s %s ' % ( VAR . programToW [ 0 ] , VAR . programToW [ 1 ] , VAR . programToW [ 2 ] , VAR . programToW [ 3 ] ) )
self . aboutOIToWLabel . pack ( )
# Autorzy
self . aboutOIAuthorsLabel = TKttk . Label ( self . aboutOtherInfoFrame )
self . aboutOIAuthorsLabel . config ( style = ' label2.TLabel ' )
self . aboutOIAuthorsLabel . config ( text = ' \n ' . join ( VAR . programAuthors ) )
self . aboutOIAuthorsLabel . pack ( )
# Dla kogo
self . aboutOICustomerLabel = TKttk . Label ( self . aboutOtherInfoFrame )
self . aboutOICustomerLabel . config ( style = ' label2.TLabel ' )
self . aboutOICustomerLabel . config ( text = ' dla %s ' % VAR . programCustomer )
self . aboutOICustomerLabel . pack ( )
#########################################
###################################################
#############################################################
# (1) Instrukcja ############################################
self . aboutInstructionFrame = TKttk . Frame ( self . aboutFrame )
self . aboutInstructionFrame . config ( style = ' layoutFrame.TFrame ' )
self . aboutInstructionFrame . pack ( fill = TK . X , side = TK . BOTTOM )
# Instrukcja - Button
self . aboutInstructionButton = TKttk . Button ( self . aboutInstructionFrame )
self . aboutInstructionButton . config ( command = self . aboutInstructionButtonAction )
self . aboutInstructionButton . config ( style = ' button1.TButton ' )
self . aboutInstructionButton . config ( width = GUI . R ( ' aboutInstructionButtonWidth ' ) )
2020-09-02 22:14:59 +02:00
self . aboutInstructionButton . config ( text = ' Więcej informacji ' )
2020-08-28 14:04:42 +02:00
self . aboutInstructionButton . pack ( side = TK . RIGHT )
#############################################################
2020-08-06 18:43:05 +02:00
######################################################################
2020-08-08 01:53:49 +02:00
2020-08-06 18:43:05 +02:00
# Akcje przycisków - TAB1
def GIF1SLocalizationButtonAction ( self ) :
filename = str ( TKfld . askopenfilename ( initialdir = ' / ' , title = " Wybierz plik z danymi " ) )
self . GIF1SLocalizationEntryVar . set ( filename )
def GIF2SLocalizationButtonAction ( self ) :
filename = str ( TKfld . askopenfilename ( initialdir = ' / ' , title = " Wybierz plik z danymi " ) )
self . GIF2SLocalizationEntryVar . set ( filename )
def GIF3SLocalizationButtonAction ( self ) :
filename = str ( TKfld . askopenfilename ( initialdir = ' / ' , title = " Wybierz plik z danymi " ) )
self . GIF3SLocalizationEntryVar . set ( filename )
def GIF4SLocalizationButtonAction ( self ) :
filename = str ( TKfld . askopenfilename ( initialdir = ' / ' , title = " Wybierz plik z danymi " ) )
self . GIF4SLocalizationEntryVar . set ( filename )
def GOFMailButtonAction ( self ) :
filename = str ( TKfld . asksaveasfilename ( initialdir = ' / ' , title = " Wybierz miejsce zapisu pliku csv dla poczty " , filetypes = [ ( ' Plik CSV ' , ' *.csv ' ) ] ) )
if not filename :
return
if not filename . endswith ( ' .csv ' ) :
filename + = ' .csv '
self . GOFMailEntryVar . set ( filename )
def GOFOfficeButtonAction ( self ) :
filename = str ( TKfld . asksaveasfilename ( initialdir = ' / ' , title = " Wybierz miejsce zapisu pliku csv dla Office " , filetypes = [ ( ' Plik CSV ' , ' *.csv ' ) ] ) )
if not filename :
return
if not filename . endswith ( ' .csv ' ) :
filename + = ' .csv '
self . GOFOfficeEntryVar . set ( filename )
def generateStartButtonAction ( self ) :
if MSG ( ' A0003 ' , False ) :
GIF1SFilename = self . GIF1SLocalizationEntryVar . get ( )
GIF1SFormat = self . GIF1SFormatComboboxVar . get ( )
GIF2SFilename = self . GIF2SLocalizationEntryVar . get ( )
GIF2SFormat = self . GIF2SFormatComboboxVar . get ( )
GIF3SFilename = self . GIF3SLocalizationEntryVar . get ( )
GIF3SFormat = self . GIF3SFormatComboboxVar . get ( )
GIF4SFilename = self . GIF4SLocalizationEntryVar . get ( )
GIF4SFormat = self . GIF4SFormatComboboxVar . get ( )
GOFMailFilename = self . GOFMailEntryVar . get ( )
GOFOfficeFilename = self . GOFOfficeEntryVar . get ( )
GIF1 = ( GIF1SFilename , GIF1SFormat )
GIF2 = ( GIF2SFilename , GIF2SFormat )
GIF3 = ( GIF3SFilename , GIF3SFormat )
GIF4 = ( GIF4SFilename , GIF4SFormat )
GOF = ( GOFMailFilename , GOFOfficeFilename )
filesList = ( GIF1 , GIF2 , GIF3 , GIF4 , GOF )
output = dataProcess . start ( filesList )
if not output [ 0 ] :
2020-08-07 22:16:01 +02:00
MSG ( ' E0007 ' , False )
else :
if not output [ 1 ] :
MSG ( ' E0008 ' , False )
else :
if not output [ 2 ] :
MSG ( ' E0009 ' , False )
else :
2020-08-21 00:40:52 +02:00
if not output [ 3 ] :
MSG ( ' E0010 ' , False )
else :
if not ( output [ 4 ] ) [ 0 ] :
MSG ( ' E0011 ' , False , ( output [ 4 ] ) [ 1 ] )
else :
if not output [ 5 ] :
MSG ( ' E0012 ' , False )
else :
if not output [ 6 ] :
MSG ( ' E0013 ' , False )
else :
2020-09-09 00:01:02 +02:00
if not ( output [ 7 ] ) [ 0 ] :
2020-08-21 00:40:52 +02:00
MSG ( ' E0014 ' , False )
else :
2020-09-09 00:01:02 +02:00
MSG ( ' I0001 ' , False , ' Przetworzono dane %i osób ' % ( output [ 7 ] ) [ 1 ] )
2020-08-21 00:40:52 +02:00
self . GIF1SLocalizationEntryVar . set ( ' ' )
self . GIF1SFormatComboboxVar . set ( ' ' )
self . GIF2SLocalizationEntryVar . set ( ' ' )
self . GIF2SFormatComboboxVar . set ( ' ' )
self . GIF3SLocalizationEntryVar . set ( ' ' )
self . GIF3SFormatComboboxVar . set ( ' ' )
self . GIF4SLocalizationEntryVar . set ( ' ' )
self . GIF4SFormatComboboxVar . set ( ' ' )
self . GOFMailEntryVar . set ( ' ' )
self . GOFOfficeEntryVar . set ( ' ' )
2020-08-06 18:40:38 +02:00
else :
return
2020-08-06 18:43:05 +02:00
# Akcje przycisków - TAB2
def loadingButtonAction ( self ) :
self . loadingList [ ' state ' ] = TK . DISABLED
self . loadingButton [ ' state ' ] = TK . DISABLED
2020-08-21 00:40:52 +02:00
self . EPOSTypeVar . set ( FMT . R ( self . loadingList . get ( ) , ' student ' ) )
2020-08-06 18:43:05 +02:00
self . EPOSTypeStudentRadiobutton [ ' state ' ] = TK . NORMAL
self . EPOSTypeTeacherRadiobutton [ ' state ' ] = TK . NORMAL
self . EPOSPersonSeparatorEntry [ ' state ' ] = TK . NORMAL
2020-08-21 00:40:52 +02:00
self . EPOSPersonSeparatorVar . set ( FMT . R ( self . loadingList . get ( ) , ' personSeparator ' ) )
2020-08-06 18:43:05 +02:00
self . EPOSRowSeparatorEntry [ ' state ' ] = TK . NORMAL
2020-08-21 00:40:52 +02:00
self . EPOSRowSeparatorVar . set ( FMT . R ( self . loadingList . get ( ) , ' rowSeparator ' ) )
2020-08-06 18:43:05 +02:00
self . EPOSDataSeparatorText [ ' state ' ] = TK . NORMAL
2020-08-21 00:40:52 +02:00
self . EPOSDataSeparatorText . insert ( TK . END , ' \n ' . join ( FMT . R ( self . loadingList . get ( ) , ' dataSeparators ' ) ) )
2020-08-06 18:43:05 +02:00
self . EPDLLoginRowSpinbox [ ' state ' ] = TK . NORMAL
2020-08-21 00:40:52 +02:00
self . EPDLLoginRowVar . set ( FMT . R ( self . loadingList . get ( ) , ' loginRow ' ) )
2020-08-06 18:43:05 +02:00
self . EPDLLoginPosInRowSpinbox [ ' state ' ] = TK . NORMAL
2020-08-21 00:40:52 +02:00
self . EPDLLoginPosInRowVar . set ( FMT . R ( self . loadingList . get ( ) , ' loginPositionInRow ' ) )
2020-08-06 18:43:05 +02:00
self . EPDLFnameRowSpinbox [ ' state ' ] = TK . NORMAL
2020-08-21 00:40:52 +02:00
self . EPDLFnameRowVar . set ( FMT . R ( self . loadingList . get ( ) , ' fnameRow ' ) )
2020-08-06 18:43:05 +02:00
self . EPDLFnamePosInRowSpinbox [ ' state ' ] = TK . NORMAL
2020-08-21 00:40:52 +02:00
self . EPDLFnamePosInRowVar . set ( FMT . R ( self . loadingList . get ( ) , ' fnamePositionInRow ' ) )
2020-08-06 18:43:05 +02:00
self . EPDLLnameRowSpinbox [ ' state ' ] = TK . NORMAL
2020-08-21 00:40:52 +02:00
self . EPDLLnameRowVar . set ( FMT . R ( self . loadingList . get ( ) , ' lnameRow ' ) )
2020-08-06 18:43:05 +02:00
self . EPDLLnamePosInRowSpinbox [ ' state ' ] = TK . NORMAL
2020-08-21 00:40:52 +02:00
self . EPDLLnamePosInRowVar . set ( FMT . R ( self . loadingList . get ( ) , ' lnamePositionInRow ' ) )
2020-08-06 18:43:05 +02:00
self . EPDLSchoolRowSpinbox [ ' state ' ] = TK . NORMAL
2020-08-21 00:40:52 +02:00
self . EPDLSchoolRowVar . set ( FMT . R ( self . loadingList . get ( ) , ' schoolRow ' ) )
2020-08-06 18:43:05 +02:00
self . EPDLSchoolPosInRowSpinbox [ ' state ' ] = TK . NORMAL
2020-08-21 00:40:52 +02:00
self . EPDLSchoolPosInRowVar . set ( FMT . R ( self . loadingList . get ( ) , ' schoolPositionInRow ' ) )
2020-08-06 18:43:05 +02:00
self . EPDLClassRowSpinbox [ ' state ' ] = TK . NORMAL
2020-08-21 00:40:52 +02:00
self . EPDLClassRowVar . set ( FMT . R ( self . loadingList . get ( ) , ' classRow ' ) )
2020-08-06 18:43:05 +02:00
self . EPDLClassPosInRowSpinbox [ ' state ' ] = TK . NORMAL
2020-08-21 00:40:52 +02:00
self . EPDLClassPosInRowVar . set ( FMT . R ( self . loadingList . get ( ) , ' classPositionInRow ' ) )
2020-08-27 13:55:50 +02:00
self . formatInputCodingCombobox [ ' state ' ] = ' readonly '
self . formatInputCodingVar . set ( FMT . R ( self . loadingList . get ( ) , ' inputCoding ' ) )
2020-08-06 18:43:05 +02:00
self . editingPresetSaveButton [ ' state ' ] = TK . NORMAL
self . editingPresetCancelButton [ ' state ' ] = TK . NORMAL
def editingPresetClear ( self ) :
2020-08-06 18:40:38 +02:00
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 ,
2020-08-27 13:55:50 +02:00
" inputCoding " : ' ' ,
2020-08-06 18:40:38 +02:00
}
2020-08-06 18:43:05 +02:00
self . loadingList [ ' state ' ] = TK . NORMAL
self . loadingButton [ ' state ' ] = TK . NORMAL
self . EPOSTypeVar . set ( formatFileContent [ ' student ' ] )
self . EPOSTypeStudentRadiobutton [ ' state ' ] = TK . DISABLED
self . EPOSTypeTeacherRadiobutton [ ' state ' ] = TK . DISABLED
self . EPOSPersonSeparatorEntry [ ' state ' ] = TK . DISABLED
self . EPOSPersonSeparatorVar . set ( formatFileContent [ ' personSeparator ' ] )
self . EPOSRowSeparatorEntry [ ' state ' ] = TK . DISABLED
self . EPOSRowSeparatorVar . set ( formatFileContent [ ' rowSeparator ' ] )
self . EPOSDataSeparatorText . delete ( ' 1.0 ' , TK . END )
self . EPOSDataSeparatorText [ ' state ' ] = TK . DISABLED
self . EPDLLoginRowSpinbox [ ' state ' ] = TK . DISABLED
self . EPDLLoginRowVar . set ( formatFileContent [ ' loginRow ' ] )
self . EPDLLoginPosInRowSpinbox [ ' state ' ] = TK . DISABLED
self . EPDLLoginPosInRowVar . set ( formatFileContent [ ' loginPositionInRow ' ] )
self . EPDLFnameRowSpinbox [ ' state ' ] = TK . DISABLED
self . EPDLFnameRowVar . set ( formatFileContent [ ' fnameRow ' ] )
self . EPDLFnamePosInRowSpinbox [ ' state ' ] = TK . DISABLED
self . EPDLFnamePosInRowVar . set ( formatFileContent [ ' fnamePositionInRow ' ] )
self . EPDLLnameRowSpinbox [ ' state ' ] = TK . DISABLED
self . EPDLLnameRowVar . set ( formatFileContent [ ' lnameRow ' ] )
self . EPDLLnamePosInRowSpinbox [ ' state ' ] = TK . DISABLED
self . EPDLLnamePosInRowVar . set ( formatFileContent [ ' lnamePositionInRow ' ] )
self . EPDLSchoolRowSpinbox [ ' state ' ] = TK . DISABLED
self . EPDLSchoolRowVar . set ( formatFileContent [ ' schoolRow ' ] )
self . EPDLSchoolPosInRowSpinbox [ ' state ' ] = TK . DISABLED
self . EPDLSchoolPosInRowVar . set ( formatFileContent [ ' schoolPositionInRow ' ] )
self . EPDLClassRowSpinbox [ ' state ' ] = TK . DISABLED
self . EPDLClassRowVar . set ( formatFileContent [ ' classRow ' ] )
self . EPDLClassPosInRowSpinbox [ ' state ' ] = TK . DISABLED
self . EPDLClassPosInRowVar . set ( formatFileContent [ ' classPositionInRow ' ] )
2020-08-27 13:55:50 +02:00
self . formatInputCodingCombobox [ ' state ' ] = TK . DISABLED
self . formatInputCodingVar . set ( formatFileContent [ ' inputCoding ' ] )
2020-08-06 18:43:05 +02:00
self . editingPresetSaveButton [ ' state ' ] = TK . DISABLED
self . editingPresetCancelButton [ ' state ' ] = TK . DISABLED
self . loadingList [ ' values ' ] = tuple ( FMT . getList ( ) )
2020-08-21 00:40:52 +02:00
def updatePresetListInGenerateTab ( self ) :
self . GIF1SFormatCombobox [ ' values ' ] = tuple ( FMT . getList ( ) )
self . GIF2SFormatCombobox [ ' values ' ] = tuple ( FMT . getList ( ) )
self . GIF3SFormatCombobox [ ' values ' ] = tuple ( FMT . getList ( ) )
self . GIF4SFormatCombobox [ ' values ' ] = tuple ( FMT . getList ( ) )
2020-08-06 18:43:05 +02:00
def editingPresetSave ( self ) :
formatFileContentToSave = {
" student " : self . EPOSTypeVar . get ( ) ,
" personSeparator " : self . EPOSPersonSeparatorEntry . get ( ) ,
" rowSeparator " : self . EPOSRowSeparatorEntry . get ( ) ,
" dataSeparators " : ( self . EPOSDataSeparatorText . get ( " 1.0 " , TK . END ) ) . split ( ' \n ' ) [ : - 1 ] ,
2020-08-31 23:46:14 +02:00
" loginRow " : self . EPDLLoginRowSpinbox . get ( ) ,
" loginPositionInRow " : self . EPDLLoginPosInRowSpinbox . get ( ) ,
" fnameRow " : self . EPDLFnameRowSpinbox . get ( ) ,
" fnamePositionInRow " : self . EPDLFnamePosInRowSpinbox . get ( ) ,
" lnameRow " : self . EPDLLnameRowSpinbox . get ( ) ,
" lnamePositionInRow " : self . EPDLLnamePosInRowSpinbox . get ( ) ,
" schoolRow " : self . EPDLSchoolRowSpinbox . get ( ) ,
" schoolPositionInRow " : self . EPDLSchoolPosInRowSpinbox . get ( ) ,
" classRow " : self . EPDLClassRowSpinbox . get ( ) ,
" classPositionInRow " : self . EPDLClassPosInRowSpinbox . get ( ) ,
2020-08-27 13:55:50 +02:00
" inputCoding " : self . formatInputCodingCombobox . get ( )
2020-08-06 18:43:05 +02:00
}
if not FMT . W ( self . loadingList . get ( ) , formatFileContentToSave ) :
return
self . editingPresetClear ( )
2020-08-21 00:40:52 +02:00
self . updatePresetListInGenerateTab ( )
2020-08-06 18:43:05 +02:00
def editingPresetSaveButtonAction ( self ) :
if self . loadingList . get ( ) not in FMT . getList ( ) :
2020-08-06 18:38:31 +02:00
if MSG ( ' A0001 ' , False ) :
2020-08-06 18:43:05 +02:00
self . editingPresetSave ( )
2020-08-06 18:38:31 +02:00
else :
return
else :
if MSG ( ' A0002 ' , False ) :
2020-08-06 18:43:05 +02:00
self . editingPresetSave ( )
2020-08-06 18:38:31 +02:00
else :
return
2020-08-06 18:43:05 +02:00
def editingPresetCancelButtonAction ( self ) :
self . editingPresetClear ( )
2020-08-28 01:16:22 +02:00
# Akcje przycisków - TAB3
def settingsReset ( self ) :
self . settingsMailCodeCombobox . set ( CFG . R ( ' mailOutputCoding ' ) )
self . settingsOfficeCodeCombobox . set ( CFG . R ( ' officeOutputCoding ' ) )
self . settingsOtherDomainVar . set ( CFG . R ( ' domain ' ) )
self . settingsOtherQuotaSpinbox . set ( CFG . R ( ' quota ' ) )
self . settingsOtherCountryVar . set ( CFG . R ( ' country ' ) )
self . settingsOtherDRRSMonthSpinbox . set ( CFG . R ( ' schoolyearStart ' ) [ ' M ' ] )
self . settingsOtherDRRSDaySpinbox . set ( CFG . R ( ' schoolyearStart ' ) [ ' D ' ] )
self . settingsSchoolDataText . delete ( ' 1.0 ' , TK . END )
for x in CFG . R ( ' schoolData ' ) :
if x [ 2 ] :
x [ 2 ] = ' 1 '
else :
x [ 2 ] = ' 0 '
x [ 1 ] = str ( x [ 1 ] )
self . settingsSchoolDataText . insert ( TK . END , ( ' | ' . join ( x ) + ' \n ' ) )
2020-09-01 19:15:30 +02:00
self . settingsHeadlinesMailCheckbuttonVar . set ( CFG . R ( ' ifHeadlineInMail ' ) )
self . settingsHeadlinesMailEntryVar . set ( CFG . R ( ' headlineInMail ' ) )
self . settingsHeadlinesOfficeCheckbuttonVar . set ( CFG . R ( ' ifHeadlineInOffice ' ) )
self . settingsHeadlinesOfficeEntryVar . set ( CFG . R ( ' headlineInOffice ' ) )
2020-08-28 01:16:22 +02:00
def settingsButtonSaveAction ( self ) :
if MSG ( ' A0004 ' , False ) :
changes = { }
changes [ ' mailOutputCoding ' ] = self . settingsMailCodeCombobox . get ( )
changes [ ' officeOutputCoding ' ] = self . settingsOfficeCodeCombobox . get ( )
changes [ ' domain ' ] = self . settingsOtherDomainVar . get ( )
changes [ ' quota ' ] = self . settingsOtherQuotaSpinbox . get ( )
changes [ ' country ' ] = self . settingsOtherCountryVar . get ( )
changes [ ' schoolyearStart ' ] = {
' D ' : self . settingsOtherDRRSDaySpinbox . get ( ) ,
' M ' : self . settingsOtherDRRSMonthSpinbox . get ( ) ,
' Y ' : None ,
' h ' : None ,
' m ' : None ,
' s ' : None ,
}
changes [ ' schoolData ' ] = ( self . settingsSchoolDataText . get ( " 1.0 " , TK . END ) ) . split ( ' \n ' )
2020-09-01 19:15:30 +02:00
changes [ ' ifHeadlineInMail ' ] = self . settingsHeadlinesMailCheckbuttonVar . get ( )
changes [ ' headlineInMail ' ] = self . settingsHeadlinesMailEntryVar . get ( )
changes [ ' ifHeadlineInOffice ' ] = self . settingsHeadlinesOfficeCheckbuttonVar . get ( )
changes [ ' headlineInOffice ' ] = self . settingsHeadlinesOfficeEntryVar . get ( )
2020-08-28 01:16:22 +02:00
CFG . W ( changes )
self . settingsReset ( )
else :
return
def settingsButtonCancelAction ( self ) :
self . settingsReset ( )
def settingsButtonPDUOAction ( self ) :
if MSG ( ' A0005 ' , False ) :
try :
2020-09-08 11:01:14 +02:00
OS . remove ( str ( VAR . appdataPath ) + ' \ Generator CSV \ config.cfg ' )
SU . copy ( ' configs/config.cfg ' , str ( VAR . appdataPath ) + ' \ Generator CSV \ config.cfg ' )
2020-08-28 01:16:22 +02:00
except Exception as exceptInfo :
MSG ( ' E0001 ' , True , exceptInfo )
MSG ( ' I0002 ' , True )
else :
return
def settingsButtonPDUWAction ( self ) :
if MSG ( ' A0006 ' , False ) :
try :
2020-09-08 11:01:14 +02:00
OS . remove ( str ( VAR . appdataPath ) + ' \ Generator CSV \ style.cfg ' )
SU . copy ( ' configs/style.cfg ' , str ( VAR . appdataPath ) + ' \ Generator CSV \ style.cfg ' )
2020-08-28 01:16:22 +02:00
except Exception as exceptInfo :
MSG ( ' E0001 ' , True , exceptInfo )
MSG ( ' I0002 ' , True )
else :
return
def deleteSelectedFPButtonAction ( self ) :
if MSG ( ' A0007 ' , False ) :
selected = self . selectFPListbox . curselection ( )
for x in selected :
try :
2020-09-08 11:01:14 +02:00
OS . remove ( str ( VAR . appdataPath ) + ( ' /Generator CSV/format-presets ' ) + ( ' \ %s .fmt ' % self . selectFPListbox . get ( x ) ) )
2020-08-28 01:16:22 +02:00
except Exception as exceptInfo :
MSG ( ' E0015 ' , True , exceptInfo )
MSG ( ' I0001 ' , False )
self . updatePresetListInGenerateTab ( )
self . loadingList [ ' values ' ] = tuple ( FMT . getList ( ) )
self . selectFPListbox . delete ( 0 , TK . END )
for x in FMT . getList ( ) :
self . selectFPListbox . insert ( TK . END , x )
else :
return
def settingsButtonZPFAction ( self ) :
# Pod okno
self . ZPFWindow = TK . Toplevel ( self . master )
self . ZPFWindow . title ( " Zarządzanie presetami formatu " )
self . ZPFWindow . geometry ( ' %i x %i ' % ( GUI . R ( ' ZPFWindowWidth ' ) , GUI . R ( ' ZPFWindowHeight ' ) ) )
self . ZPFWindow . resizable ( width = GUI . R ( ' ZPFWindowWidthResizable ' ) , height = GUI . R ( ' ZPFWindowHeightResizable ' ) )
self . ZPFWindow . configure ( bg = GUI . R ( ' ZPFWindowMainBG ' ) )
self . ZPFWindow . iconbitmap ( GUI . R ( ' mainIcon ' ) )
# Wybór format presetu - listbox
self . selectFPListbox = TK . Listbox ( self . ZPFWindow )
self . selectFPListbox . config ( activestyle = GUI . R ( ' listbox1ActiveStyle ' ) )
self . selectFPListbox . config ( bg = GUI . R ( ' listbox1BG ' ) )
self . selectFPListbox . config ( fg = GUI . R ( ' listbox1TextColor ' ) )
self . selectFPListbox . config ( relief = GUI . R ( ' listbox1Relief ' ) )
self . selectFPListbox . config ( bd = GUI . R ( ' listbox1BorderWidth ' ) )
self . selectFPListbox . config ( highlightthickness = GUI . R ( ' listbox1HighlightThickness ' ) )
self . selectFPListbox . config ( selectbackground = GUI . R ( ' listbox1SelectBG ' ) )
self . selectFPListbox . config ( selectmode = TK . MULTIPLE )
self . selectFPListbox . pack ( fill = TK . BOTH , expand = 1 , padx = 6 , pady = 6 )
for x in FMT . getList ( ) :
self . selectFPListbox . insert ( TK . END , x )
# Usuń zaznaczone - Button
self . deleteSelectedFPButton = TKttk . Button ( self . ZPFWindow )
self . deleteSelectedFPButton . config ( style = ' button1.TButton ' )
self . deleteSelectedFPButton . config ( text = ' Usuń zaznaczone ' )
self . deleteSelectedFPButton . config ( command = self . deleteSelectedFPButtonAction )
self . deleteSelectedFPButton . pack ( fill = TK . X , padx = 6 , pady = 6 )
2020-08-28 14:04:42 +02:00
def aboutInstructionButtonAction ( self ) :
2020-08-28 21:34:16 +02:00
try :
OS . startfile ( ' documentation \ index.html ' )
except Exception as exceptInfo :
MSG ( ' E0016 ' , False , exceptInfo )
2020-08-06 18:38:31 +02:00
2020-08-06 18:43:05 +02:00
# Inicjacja okna
root = TK . Tk ( )
windowInit = mainWindow ( root )
root . mainloop ( )