diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index f3fed0c..010d93d 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -84,6 +84,8 @@
+
+
@@ -106,6 +108,6 @@
-
+
\ No newline at end of file
diff --git a/changelog-UC.txt b/changelog-UC.txt
index 83368fe..66df564 100644
--- a/changelog-UC.txt
+++ b/changelog-UC.txt
@@ -40,3 +40,8 @@
4.0 Alpha (Build 19353)
- Ukończenie ustawień
+
+4.0 Alpha (Build 19354)
+- Przeniesienie głównego modułu do folderu nadrzędnego zamiast pliku inicjacji
+- Zmieniony sposób ładowania modułów
+- Ulepszona obsługa wyjątków dla ładowania modułów
diff --git a/components/__pycache__/dataprocess.cpython-38.pyc b/components/__pycache__/dataprocess.cpython-38.pyc
deleted file mode 100644
index a1976a8..0000000
Binary files a/components/__pycache__/dataprocess.cpython-38.pyc and /dev/null differ
diff --git a/components/__pycache__/dialog.cpython-38.pyc b/components/__pycache__/dialog.cpython-38.pyc
deleted file mode 100644
index b077ec0..0000000
Binary files a/components/__pycache__/dialog.cpython-38.pyc and /dev/null differ
diff --git a/components/__pycache__/format.cpython-38.pyc b/components/__pycache__/format.cpython-38.pyc
deleted file mode 100644
index c19d02b..0000000
Binary files a/components/__pycache__/format.cpython-38.pyc and /dev/null differ
diff --git a/components/__pycache__/load_config.cpython-38.pyc b/components/__pycache__/load_config.cpython-38.pyc
deleted file mode 100644
index 974b39d..0000000
Binary files a/components/__pycache__/load_config.cpython-38.pyc and /dev/null differ
diff --git a/components/__pycache__/load_format.cpython-38.pyc b/components/__pycache__/load_format.cpython-38.pyc
deleted file mode 100644
index 4cfe6fa..0000000
Binary files a/components/__pycache__/load_format.cpython-38.pyc and /dev/null differ
diff --git a/components/__pycache__/processing.cpython-38.pyc b/components/__pycache__/processing.cpython-38.pyc
deleted file mode 100644
index 51255a3..0000000
Binary files a/components/__pycache__/processing.cpython-38.pyc and /dev/null differ
diff --git a/components/main.py b/components/main.py
deleted file mode 100644
index 2759a1a..0000000
--- a/components/main.py
+++ /dev/null
@@ -1,791 +0,0 @@
-"""
-# GeneratorCSV
-# Wersja 4.0 Experimental
-# by Mateusz Skoczek
-# luty 2019 - grudzień 2019
-# dla ZSP Sobolew
-
-#
-# Główny plik składowy programu
-#
-"""
-
-
-
-
-
-
-
-
-# -------------------------------------------- # Informacje o programie # -------------------------------------------- #
-
-Nazwa = 'GeneratorCSV'
-Wersja = '4.0 Experimental'
-LataPracy = '2019'
-Autorzy = 'Mateusz Skoczek'
-
-
-
-
-
-
-
-
-# ----------------------------------------- # Definicja kodów dialogowych # ------------------------------------------ #
-
-E003x01 = ["Nie podano lokalizacji plików do importu. (E003x01)", False]
-E003x02 = ["Nie podano lokalizacji zapisu wygenerowanych plików. (E003x02)", False]
-
-E003x111 = ["Plik podany w sciezce 1 nie istnieje (E003x111)", False]
-E003x112 = ["Plik podany w sciezce 2 nie istnieje (E003x112)", False]
-E003x113 = ["Plik podany w sciezce 3 nie istnieje (E003x113)", False]
-E003x114 = ["Plik podany w sciezce 4 nie istnieje (E003x114)", False]
-
-A001 = "Czy na pewno chcesz rozpocząć generowanie?\nProgram utworzy w podanej lokalizacji pliki 'email.csv' i 'office.csv'.\nJeżeli w podanej lokalizacji istnieją pliki o takich nazwach zostaną one nadpisane."
-
-
-
-
-
-
-
-
-# ----------------------------------- # Import bibliotek zewnętrznych i modułów # ------------------------------------ #
-
-# Biblioteki zewnętrzne
-import os as OS
-import sys as SS
-
-
-
-# Moduły składowe programu
-try:
- import dialog as MDdlg
-except ModuleNotFoundError:
- print('Nie znaleziono modułu programu (dialog.py)\nNie można załadować programu\nKod błędu: E00x0001')
- wait = input('Naciśnij ENTER aby wyjść')
- SS.exit(0)
-
-try:
- import load_config as MDlcg
-except ModuleNotFoundError:
- print('Nie znaleziono modułu programu (load_config.py)\nNie można załadować programu\nKod błędu: E00x0002')
- wait = input('Naciśnij ENTER aby wyjść')
- SS.exit(0)
-
-try:
- import load_format as MDlfm
-except ModuleNotFoundError:
- print('Nie znaleziono modułu programu (load_format.py)\nNie można załadować programu\nKod błędu: E00x0003')
- wait = input('Naciśnij ENTER aby wyjść')
- SS.exit(0)
-"""
-try:
- import processing as MDprc
-except ModuleNotFoundError:
- print('Nie znaleziono modułu programu (processing.py)\nNie można załadować programu\nKod błędu: E00x0004')
- wait = input('Naciśnij ENTER aby wyjść')
- SS.exit(0)
-"""
-
-
-# Biblioteki zewnętrzne interfejsu graficznego
-from tkinter import filedialog as TKfld
-from tkinter import ttk as TKttk
-import tkinter as TK
-
-
-
-
-
-
-
-
-
-# ------------------------------------- # Uruchomienie interfejsu graficznego # -------------------------------------- #
-
-# Zmienne globalne środowiska graficznego
-if int(MDlcg.read()[0]) == 1:
- CiemnyMotyw = True
-else:
- CiemnyMotyw = False
-SzerokoscOpisu = 17
-SzerokoscOpisu2 = 30
-SzerokoscOpisu3 = 10
-SzerokoscPola = 122
-SzerokoscPola2 = 107
-SzerokoscPola3 = 130
-
-
-
-# Motyw
-if CiemnyMotyw:
- ZmienneMotywu = ['#1F1F1F', '#191919', '#B8B8B8', '#FFFFFF', '#404040', '#FFFFFF', '#1F1F1F', 1]
-else:
- ZmienneMotywu = ['#F0F0F0', '#D4D4D4', '#000000', '#000000', '#A6A6A6', '#000000', '#FFFFFF', 2]
-
-M_tlo = ZmienneMotywu[0]
-M_tytultlo = ZmienneMotywu[1]
-M_tytultext = ZmienneMotywu[2]
-M_text = ZmienneMotywu[3]
-M_przycisktlo = ZmienneMotywu[4]
-M_przycisktext = ZmienneMotywu[5]
-M_entrytlo = ZmienneMotywu[6]
-M_framewielkosc = ZmienneMotywu[7]
-
-
-
-class Main(TK.Tk):
- def __init__(self):
- # Ustawienia okna
- TK.Tk.__init__(self)
- self.title(Nazwa + " " + Wersja)
- self.resizable(width = False, height = False)
- self.configure(bg = M_tlo)
-
-
- # Tytuł
- Tytul = TK.Label(self)
- Tytul.config(text = Nazwa)
- Tytul.config(width = 41)
- Tytul.config(bg = M_tytultlo)
- Tytul.config(fg = M_tytultext)
- Tytul.config(font = ('Segoe UI Semilight', 30))
- Tytul.grid(row = 0)
-
-
- # Frame1 - Pliki z danymi
- Ramka1 = TK.LabelFrame(self)
- Ramka1.config(text=' Pliki tekstowe zawierające dane (wymagany przynajmniej jeden) ')
- Ramka1.config(borderwidth = M_framewielkosc)
- Ramka1.config(bg = M_tlo)
- Ramka1.config(fg = M_text)
- Ramka1.grid(row = 1)
-
-
- # Ścieżka pliku txt nr 1
- wiersz = 1
- text1 = TK.StringVar()
-
- Pole1Label = TK.Label(Ramka1)
- Pole1Label.config(text = 'Plik z danymi (1)')
- Pole1Label.config(width = SzerokoscOpisu)
- Pole1Label.config(bg = M_tlo)
- Pole1Label.config(fg = M_text)
- Pole1Label.grid(row = wiersz, column = 0)
-
- Pole1 = TK.Entry(Ramka1)
- Pole1.config(textvariable = text1)
- Pole1.config(width = SzerokoscPola)
- Pole1.config(bg = M_entrytlo)
- Pole1.config(fg = M_text)
- Pole1.grid(row = wiersz, column = 1)
-
- def Pole1BrowseDialog():
- Pole1Browse.filename = TKfld.askopenfilename(initialdir = "C:/", title = "Wybierz plik tekstowy z danymi", filetypes = (("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*")))
- Pole1.delete(0, 'end')
- Pole1.insert(0, Pole1Browse.filename)
-
- Pole1Browse = TK.Button(Ramka1)
- Pole1Browse.config(text = '...')
- Pole1Browse.config(command = Pole1BrowseDialog)
- Pole1Browse.config(bg = M_przycisktlo)
- Pole1Browse.config(fg = M_przycisktext)
- Pole1Browse.config(relief = 'flat')
- Pole1Browse.config(activebackground = M_przycisktlo)
- Pole1Browse.grid(row = wiersz, column = 2, padx=5, pady=3)
-
-
- # Ścieżka pliku txt nr 2
- wiersz = 2
- text2 = TK.StringVar()
-
- Pole2Label = TK.Label(Ramka1)
- Pole2Label.config(text = 'Plik z danymi (2)')
- Pole2Label.config(width = SzerokoscOpisu)
- Pole2Label.config(bg = M_tlo)
- Pole2Label.config(fg = M_text)
- Pole2Label.grid(row = wiersz, column = 0)
-
- Pole2 = TK.Entry(Ramka1)
- Pole2.config(textvariable = text2)
- Pole2.config(width = SzerokoscPola)
- Pole2.config(bg = M_entrytlo)
- Pole2.config(fg = M_text)
- Pole2.grid(row = wiersz, column = 1)
-
- def Pole2BrowseDialog():
- Pole2Browse.filename = TKfld.askopenfilename(initialdir = "C:/", title = "Wybierz plik tekstowy z danymi", filetypes = (("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*")))
- Pole2.delete(0, 'end')
- Pole2.insert(0, Pole2Browse.filename)
-
- Pole2Browse = TK.Button(Ramka1)
- Pole2Browse.config(text = '...')
- Pole2Browse.config(command = Pole2BrowseDialog)
- Pole2Browse.config(bg = M_przycisktlo)
- Pole2Browse.config(fg = M_przycisktext)
- Pole2Browse.config(relief = 'flat')
- Pole2Browse.config(activebackground = M_przycisktlo)
- Pole2Browse.grid(row = wiersz, column = 2, padx = 5, pady = 3)
-
- # Ścieżka pliku txt nr 3
- wiersz = 3
- text3 = TK.StringVar()
-
- Pole3Label = TK.Label(Ramka1)
- Pole3Label.config(text = 'Plik z danymi (3)')
- Pole3Label.config(width = SzerokoscOpisu)
- Pole3Label.config(bg = M_tlo)
- Pole3Label.config(fg = M_text)
- Pole3Label.grid(row = wiersz, column = 0)
-
- Pole3 = TK.Entry(Ramka1)
- Pole3.config(textvariable = text3)
- Pole3.config(width = SzerokoscPola)
- Pole3.config(bg = M_entrytlo)
- Pole3.config(fg = M_text)
- Pole3.grid(row = wiersz, column = 1)
-
- def Pole3BrowseDialog():
- Pole3Browse.filename = TKfld.askopenfilename(initialdir = "C:/", title = "Wybierz plik tekstowy z danymi", filetypes = (("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*")))
- Pole3.delete(0, 'end')
- Pole3.insert(0, Pole3Browse.filename)
-
- Pole3Browse = TK.Button(Ramka1)
- Pole3Browse.config(text = '...')
- Pole3Browse.config(command = Pole3BrowseDialog)
- Pole3Browse.config(bg = M_przycisktlo)
- Pole3Browse.config(fg = M_przycisktext)
- Pole3Browse.config(relief = 'flat')
- Pole3Browse.config(activebackground = M_przycisktlo)
- Pole3Browse.grid(row = wiersz, column = 2, padx = 5, pady = 3)
-
-
- # Frame2 - Dołącz pliki .csv
- Ramka2 = TK.LabelFrame(self)
- Ramka2.config(text = ' Dołącz pliki .csv (opcjonalne) ')
- Ramka2.config(borderwidth = M_framewielkosc)
- Ramka2.config(bg = M_tlo)
- Ramka2.config(fg = M_text)
- Ramka2.grid(row = 2)
-
-
- # Sciezka do konta.csv
- wiersz = 1
- textKonta = TK.StringVar()
-
- PoleKontaLabel = TK.Label(Ramka2)
- PoleKontaLabel.config(text = 'Ściezka do pliku .csv dla poczty')
- PoleKontaLabel.config(width = SzerokoscOpisu2)
- PoleKontaLabel.config(bg = M_tlo)
- PoleKontaLabel.config(fg = M_text)
- PoleKontaLabel.grid(row = wiersz, column = 0)
-
- PoleKonta = TK.Entry(Ramka2)
- PoleKonta.config(textvariable = textKonta)
- PoleKonta.config(width = SzerokoscPola2)
- PoleKonta.config(bg = M_entrytlo)
- PoleKonta.config(fg = M_text)
- PoleKonta.grid(row = wiersz, column = 1)
-
- def PoleKontaBrowseDialog():
- PoleKontaBrowse.filename = TKfld.askopenfilename(initialdir="C:/", title="Wybierz plik .csv dla poczty", filetypes=(("Pliki csv", "*.csv"), ("Wszystkie pliki", "*.*")))
- PoleKonta.delete(0, 'end')
- PoleKonta.insert(0, PoleKontaBrowse.filename)
-
- PoleKontaBrowse = TK.Button(Ramka2)
- PoleKontaBrowse.config(text = '...')
- PoleKontaBrowse.config(command = PoleKontaBrowseDialog)
- PoleKontaBrowse.config(bg = M_przycisktlo)
- PoleKontaBrowse.config(fg = M_przycisktext)
- PoleKontaBrowse.config(relief = 'flat')
- PoleKontaBrowse.config(activebackground = M_przycisktlo)
- PoleKontaBrowse.grid(row = wiersz, column = 2, padx = 5, pady = 3)
-
-
- # Sciezka do office.csv
- wiersz = 2
- textOffice = TK.StringVar()
-
- PoleOfficeLabel = TK.Label(Ramka2)
- PoleOfficeLabel.config(text = 'Ściezka do pliku .csv dla office365')
- PoleOfficeLabel.config(width = SzerokoscOpisu2)
- PoleOfficeLabel.config(bg = M_tlo)
- PoleOfficeLabel.config(fg = M_text)
- PoleOfficeLabel.grid(row = wiersz, column = 0)
-
- PoleOffice = TK.Entry(Ramka2)
- PoleOffice.config(textvariable = textOffice)
- PoleOffice.config(width = SzerokoscPola2)
- PoleOffice.config(bg = M_entrytlo)
- PoleOffice.config(fg = M_text)
- PoleOffice.grid(row = wiersz, column = 1)
-
- def PoleOfficeBrowseDialog():
- PoleOfficeBrowse.filename = TKfld.askopenfilename(initialdir = "C:/", title = "Wybierz plik .csv dla poczty", filetypes = (("Pliki csv", "*.csv"), ("Wszystkie pliki", "*.*")))
- PoleOffice.delete(0, 'end')
- PoleOffice.insert(0, PoleOfficeBrowse.filename)
-
- PoleOfficeBrowse = TK.Button(Ramka2)
- PoleOfficeBrowse.config(text = '...')
- PoleOfficeBrowse.config(command = PoleKontaBrowseDialog)
- PoleOfficeBrowse.config(bg = M_przycisktlo)
- PoleOfficeBrowse.config(fg = M_przycisktext)
- PoleOfficeBrowse.config(relief = 'flat')
- PoleOfficeBrowse.config(activebackground = M_przycisktlo)
- PoleOfficeBrowse.grid(row = wiersz, column = 2, padx = 5, pady = 3)
-
-
- # Frame3 - Eksport
- Ramka3 = TK.LabelFrame(self)
- Ramka3.config(text=' Eksport ')
- Ramka3.config(borderwidth = M_framewielkosc)
- Ramka3.config(bg = M_tlo)
- Ramka3.config(fg = M_text)
- Ramka3.grid(row = 3)
-
-
- # Sciezka do pliku poczty
- wiersz = 1
- textKontaEksport = TK.StringVar()
-
- PoleKontaEksportLabel = TK.Label(Ramka3)
- PoleKontaEksportLabel.config(text = 'Poczta')
- PoleKontaEksportLabel.config(width = SzerokoscOpisu3)
- PoleKontaEksportLabel.config(bg = M_tlo)
- PoleKontaEksportLabel.config(fg = M_text)
- PoleKontaEksportLabel.grid(row = wiersz, column = 0)
-
- PoleKontaEksport = TK.Entry(Ramka3)
- PoleKontaEksport.config(textvariable = textKontaEksport)
- PoleKontaEksport.config(width = SzerokoscPola3)
- PoleKontaEksport.config(bg = M_entrytlo)
- PoleKontaEksport.config(fg = M_text)
- PoleKontaEksport.grid(row = wiersz, column = 1)
-
- def PoleKontaEksportBrowseDialog():
- PoleKontaEksportBrowse.filename = TKfld.saveasfilename(initialdir = "C:/", title = "Zapisz", filetypes = (("Pliki csv", "*.csv"), ("Wszystkie pliki", "*.*")))
- PoleKontaEksport.delete(0, 'end')
- PoleKontaEksport.insert(0, PoleKontaEksportBrowse.filename)
-
- PoleKontaEksportBrowse = TK.Button(Ramka3)
- PoleKontaEksportBrowse.config(text = '...')
- PoleKontaEksportBrowse.config(command = PoleKontaEksportBrowseDialog)
- PoleKontaEksportBrowse.config(bg = M_przycisktlo)
- PoleKontaEksportBrowse.config(fg = M_przycisktext)
- PoleKontaEksportBrowse.config(relief = 'flat')
- PoleKontaEksportBrowse.config(activebackground = M_przycisktlo)
- PoleKontaEksportBrowse.grid(row = wiersz, column = 2, padx = 5, pady = 3)
-
- # Sciezka do pliku office
- wiersz = 2
- textOfficeEksport = TK.StringVar()
-
- PoleOfficeEksportLabel = TK.Label(Ramka3)
- PoleOfficeEksportLabel.config(text = 'Office')
- PoleOfficeEksportLabel.config(width = SzerokoscOpisu3)
- PoleOfficeEksportLabel.config(bg = M_tlo)
- PoleOfficeEksportLabel.config(fg = M_text)
- PoleOfficeEksportLabel.grid(row = wiersz, column = 0)
-
- PoleOfficeEksport = TK.Entry(Ramka3)
- PoleOfficeEksport.config(textvariable = textOfficeEksport)
- PoleOfficeEksport.config(width = SzerokoscPola3)
- PoleOfficeEksport.config(bg = M_entrytlo)
- PoleOfficeEksport.config(fg = M_text)
- PoleOfficeEksport.grid(row = wiersz, column = 1)
-
- def PoleOfficeEksportBrowseDialog():
- PoleOfficeEksportBrowse.filename = TKfld.saveasfilename(initialdir = "C:/", title = "Zapisz", filetypes = (("Pliki csv", "*.csv"), ("Wszystkie pliki", "*.*")))
- PoleOfficeEksport.delete(0, 'end')
- PoleOfficeEksport.insert(0, PoleOfficeEksportBrowse.filename)
-
- PoleOfficeEksportBrowse = TK.Button(Ramka3)
- PoleOfficeEksportBrowse.config(text = '...')
- PoleOfficeEksportBrowse.config(command = PoleOfficeEksportBrowseDialog)
- PoleOfficeEksportBrowse.config(bg = M_przycisktlo)
- PoleOfficeEksportBrowse.config(fg = M_przycisktext)
- PoleOfficeEksportBrowse.config(relief = 'flat')
- PoleOfficeEksportBrowse.config(activebackground = M_przycisktlo)
- PoleOfficeEksportBrowse.grid(row = wiersz, column = 2, padx = 5, pady = 3)
-
- # Przycisk START
- def PathPreprocess():
- pass
-
- PrzyciskSTART = TK.Button(self)
- PrzyciskSTART.config(text = 'START')
- PrzyciskSTART.config(command = PathPreprocess)
- PrzyciskSTART.config(width = 50)
- PrzyciskSTART.config(bg = M_przycisktlo)
- PrzyciskSTART.config(fg = M_przycisktext)
- PrzyciskSTART.config(relief = 'flat')
- PrzyciskSTART.config(activebackground = M_przycisktlo)
- PrzyciskSTART.grid(row = 4, pady = 15)
-
- # Pasek dolny
- PasekDolny = TK.LabelFrame(self)
- PasekDolny.config(bd = 0)
- PasekDolny.config(bg = M_tytultlo)
- PasekDolny.config(fg = M_tytultext)
- PasekDolny.grid(row=5)
-
- InfoLabel = TK.Label(PasekDolny)
- InfoLabel.config(text = Nazwa + ' ' + Wersja + ' | © ' + Autorzy + ' ' + LataPracy + ' dla ZSP Sobolew')
- InfoLabel.config(width = 107)
- InfoLabel.config(justify = 'left')
- InfoLabel.config(anchor='w')
- InfoLabel.config(bg = M_tytultlo)
- InfoLabel.config(fg = M_tytultext)
- InfoLabel.grid(row = 0, column = 0)
-
- def InfoOpen():
- try:
- x = open('.\instruction.txt')
- except FileNotFoundError:
- MDdlg.err(4)
- else:
- OS.system("notepad .\instruction.txt")
-
- PrzyciskINFO = TK.Button(PasekDolny)
- PrzyciskINFO.config(text = 'Instrukcja')
- PrzyciskINFO.config(command = InfoOpen)
- PrzyciskINFO.config(bg = M_przycisktlo)
- PrzyciskINFO.config(fg = M_przycisktext)
- PrzyciskINFO.config(relief = 'flat')
- PrzyciskINFO.config(activebackground = M_przycisktlo)
- PrzyciskINFO.grid(row = 0, column = 1, padx = 5, pady = 5)
-
- PrzyciskUSTAWIENIA = TK.Button(PasekDolny)
- PrzyciskUSTAWIENIA.config(text = 'Ustawienia')
- PrzyciskUSTAWIENIA.config(command = self.settingsButton)
- PrzyciskUSTAWIENIA.config(bg = M_przycisktlo)
- PrzyciskUSTAWIENIA.config(fg = M_przycisktext)
- PrzyciskUSTAWIENIA.config(relief = 'flat')
- PrzyciskUSTAWIENIA.grid(row = 0, column = 2, padx = 5, pady = 5)
-
- def settingsButton(self):
- self.child = Settings(self)
-
- def run(self):
- self.mainloop()
-
-class Settings(TK.Toplevel):
- def __init__(self, parent):
- # Ustawienia okna
- TK.Toplevel.__init__(self, parent)
- self.title('Ustawienia')
- self.resizable(width = False, height = False)
- self.configure(bg = M_tlo)
-
- liczbawierszy = 0
-
- # Tytuł
- Tytul = TK.Label(self)
- Tytul.config(text = 'Ustawienia')
- Tytul.config(width = 40)
- Tytul.config(bg = M_tytultlo)
- Tytul.config(fg = M_tytultext)
- Tytul.config(font = ('Segoe UI Semilight', 20))
- Tytul.grid(row = 0)
-
-
- # Frame1 - Motyw
- liczbawierszy += 1
- Ramka1 = TK.LabelFrame(self)
- Ramka1.config(text = ' Motyw programu ')
- Ramka1.config(bg = M_tlo)
- Ramka1.config(fg = M_text)
- Ramka1.config(borderwidth = M_framewielkosc)
- Ramka1.grid(row = 1, pady = 5)
-
-
- if int(MDlcg.read()[0]) == 1:
- Motyw_list_set = 1
- else:
- Motyw_list_set = 0
- Motyw_list = TKttk.Combobox(Ramka1)
- Motyw_list.config(textvariable = TK.StringVar())
- Motyw_list.config(state = 'readonly')
- Motyw_list.config(width = 93)
- Motyw_list.grid(row = 0, pady = 5, padx = 5)
- Motyw_list['values'] = ('Jasny', 'Ciemny')
- Motyw_list.current(Motyw_list_set)
-
-
- # Frame2 - Kodowanie
- liczbawierszy += 1
- Ramka2 = TK.LabelFrame(self)
- Ramka2.config(text = ' Kodowanie wyjściowe ')
- Ramka2.config(bg = M_tlo)
- Ramka2.config(fg = M_text)
- Ramka2.config(borderwidth = M_framewielkosc)
- Ramka2.grid(row = 2, pady = 5)
-
- Code_list = TKttk.Combobox(Ramka2)
- Code_list.config(textvariable = TK.StringVar())
- Code_list.config(state = 'readonly')
- Code_list.config(width = 93)
- Code_list.grid(row = 0, pady = 5, padx = 5)
- Code_list['values'] = ('utf-8')
- Code_list.set(MDlcg.read()[1])
-
-
- # Frame3 - Format plików wejściowych
- SzerokoscPolaWej = 35
- WysokoscPolaWej = 8
-
- liczbawierszy += 1
- Ramka3 = TK.LabelFrame(self)
- Ramka3.config(text = ' Format plików wejściowych ')
- Ramka3.config(bg = M_tlo)
- Ramka3.config(fg = M_text)
- Ramka3.config(borderwidth = M_framewielkosc)
- Ramka3.grid(row = 3, pady = 5)
-
- UczniowieLabel = TK.Label(Ramka3)
- UczniowieLabel.config(text = 'Uczniowie')
- UczniowieLabel.config(justify = 'center')
- UczniowieLabel.config(bg = M_tlo)
- UczniowieLabel.config(fg = M_text)
- UczniowieLabel.grid(row = 0, column = 0)
-
- uczfmt = MDlfm.read()[0]
- uczfmt = '\n'.join(uczfmt)
- UczniowieFormat = TK.Text(Ramka3)
- UczniowieFormat.config(width = SzerokoscPolaWej)
- UczniowieFormat.config(height = WysokoscPolaWej)
- UczniowieFormat.config(bg = M_entrytlo)
- UczniowieFormat.config(fg = M_text)
- UczniowieFormat.grid(row = 1, column = 0, padx = 5, pady = 5)
- UczniowieFormat.insert(TK.END, uczfmt)
-
- NauczycieleLabel = TK.Label(Ramka3)
- NauczycieleLabel.config(text = 'Nauczyciele')
- NauczycieleLabel.config(justify = 'center')
- NauczycieleLabel.config(bg = M_tlo)
- NauczycieleLabel.config(fg = M_text)
- NauczycieleLabel.grid(row = 0, column = 1)
-
- nczfmt = MDlfm.read()[1]
- nczfmt = '\n'.join(nczfmt)
- NauczycieleFormat = TK.Text(Ramka3)
- NauczycieleFormat.config(width = SzerokoscPolaWej)
- NauczycieleFormat.config(height = WysokoscPolaWej)
- NauczycieleFormat.config(bg = M_entrytlo)
- NauczycieleFormat.config(fg = M_text)
- NauczycieleFormat.grid(row = 1, column = 1, padx = 5, pady = 5)
- NauczycieleFormat.insert(TK.END, nczfmt)
-
- OpisFmt = TK.LabelFrame(Ramka3)
- OpisFmt.config(bg=M_tlo)
- OpisFmt.config(fg=M_text)
- OpisFmt.config(borderwidth=0)
- OpisFmt.grid(row=2, pady=5, columnspan=4)
-
- Opis1 = TK.Label(OpisFmt)
- Opis1.config(text='Dozwolone znaki:')
- Opis1.config(bg=M_tlo)
- Opis1.config(fg=M_text)
- Opis1.grid(row=0, columnspan=7)
-
- Opis2_1 = TK.Label(OpisFmt)
- Opis2_1.config(text='K - Klasa')
- Opis2_1.config(bg=M_tlo)
- Opis2_1.config(fg=M_text)
- Opis2_1.grid(row=1, column=0)
-
- Opis2_2 = TK.Label(OpisFmt)
- Opis2_2.config(text='O - Oddzial')
- Opis2_2.config(bg=M_tlo)
- Opis2_2.config(fg=M_text)
- Opis2_2.grid(row=1, column=1)
-
- Opis2_3 = TK.Label(OpisFmt)
- Opis2_3.config(text='N - Nazwisko')
- Opis2_3.config(bg=M_tlo)
- Opis2_3.config(fg=M_text)
- Opis2_3.grid(row=1, column=2)
-
- Opis2_4 = TK.Label(OpisFmt)
- Opis2_4.config(text='I - Imię')
- Opis2_4.config(bg=M_tlo)
- Opis2_4.config(fg=M_text)
- Opis2_4.grid(row=1, column=3)
-
- Opis2_5 = TK.Label(OpisFmt)
- Opis2_5.config(text='L - Login')
- Opis2_5.config(bg=M_tlo)
- Opis2_5.config(fg=M_text)
- Opis2_5.grid(row=1, column=4)
-
- Opis2_6 = TK.Label(OpisFmt)
- Opis2_6.config(text = 'X - Dane nieznaczące')
- Opis2_6.config(bg = M_tlo)
- Opis2_6.config(fg = M_text)
- Opis2_6.grid(row = 1, column = 5)
-
- Opis2_6 = TK.Label(OpisFmt)
- Opis2_6.config(text='Q - Pusta linia')
- Opis2_6.config(bg=M_tlo)
- Opis2_6.config(fg=M_text)
- Opis2_6.grid(row=1, column=6)
-
- Opis3 = TK.Label(OpisFmt)
- Opis3.config(text='Pozostałe znaki oprócz cyfr i pozostałych liter')
- Opis3.config(bg=M_tlo)
- Opis3.config(fg=M_text)
- Opis3.grid(row=2, columnspan = 7)
-
-
- # Frame4 - Stałe
- liczbawierszy += 1
- Ramka4 = TK.LabelFrame(self)
- Ramka4.config(text = ' Ustawienia generowania ')
- Ramka4.config(bg = M_tlo)
- Ramka4.config(fg = M_text)
- Ramka4.config(borderwidth = M_framewielkosc)
- Ramka4.grid(row = 4, pady = 5)
-
-
- # Długość liceum i branżowej
- RamkaDl = TK.LabelFrame(Ramka4)
- RamkaDl.config(bg = M_tlo)
- RamkaDl.config(fg = M_text)
- RamkaDl.config(borderwidth = 0)
- RamkaDl.grid(row = 0, pady = 5, columnspan = 2)
-
- DlLicLabel = TK.Label(RamkaDl)
- DlLicLabel.config(text = 'Lata nauki w liceum')
- DlLicLabel.config(width = SzerokoscOpisu + 5)
- DlLicLabel.config(bg = M_tlo)
- DlLicLabel.config(fg = M_text)
- DlLicLabel.grid(row = 0, column = 0)
-
- DlLicValue = TK.IntVar()
- DlLicPole = TK.Spinbox(RamkaDl)
- DlLicPole.config(textvariable = DlLicValue)
- DlLicPole.config(from_ = 1, to = 10)
- DlLicPole.config(width = 18)
- DlLicPole.config(bg = M_entrytlo)
- DlLicPole.config(fg = M_text)
- DlLicPole.grid(row = 0, column = 1, padx = 5, pady = 5)
- DlLicPole.delete(0, 'end')
- DlLicPole.insert(0, int(MDlcg.read()[5]))
-
- DlBrLabel = TK.Label(RamkaDl)
- DlBrLabel.config(text='Lata nauki w branżowej')
- DlBrLabel.config(width = SzerokoscOpisu + 5)
- DlBrLabel.config(bg = M_tlo)
- DlBrLabel.config(fg = M_text)
- DlBrLabel.grid(row = 0, column = 2)
-
- DlBrValue = TK.IntVar()
- DlBrPole = TK.Spinbox(RamkaDl)
- DlBrPole.config(textvariable = DlBrValue)
- DlBrPole.config(from_ = 1, to=10)
- DlBrPole.config(width = 18)
- DlBrPole.config(bg = M_entrytlo)
- DlBrPole.config(fg = M_text)
- DlBrPole.grid(row = 0, column = 3, padx = 5, pady = 5)
- DlBrPole.delete(0, 'end')
- DlBrPole.insert(0, int(MDlcg.read()[6]))
-
-
- # Domena
-
- DomenaLabel = TK.Label(Ramka4)
- DomenaLabel.config(text = 'Domena')
- DomenaLabel.config(width = SzerokoscOpisu + 5)
- DomenaLabel.config(bg = M_tlo)
- DomenaLabel.config(fg = M_text)
- DomenaLabel.grid(row = 2, column = 0)
-
- text1 = TK.StringVar()
- PoleDomena = TK.Entry(Ramka4)
- PoleDomena.config(textvariable = text1)
- PoleDomena.config(width = 69)
- PoleDomena.config(bg = M_entrytlo)
- PoleDomena.config(fg = M_text)
- PoleDomena.grid(row = 2, column = 1, padx = 5, pady = 5)
- PoleDomena.insert(0, MDlcg.read()[2])
-
-
- # Quota
-
- QuotaLabel = TK.Label(Ramka4)
- QuotaLabel.config(text = 'Quota (MB)')
- QuotaLabel.config(width = SzerokoscOpisu)
- QuotaLabel.config(bg = M_tlo)
- QuotaLabel.config(fg = M_text)
- QuotaLabel.grid(row = 3, column = 0)
-
- value2 = TK.IntVar()
- PoleQuota = TK.Spinbox(Ramka4)
- PoleQuota.config(textvariable = value2)
- PoleQuota.config(from_ = 1, to = 100000)
- PoleQuota.config(width = 67)
- PoleQuota.config(bg = M_entrytlo)
- PoleQuota.config(fg = M_text)
- PoleQuota.grid(row = 3, column = 1, padx = 5, pady = 5)
- PoleQuota.delete(0, 'end')
- PoleQuota.insert(0, int(MDlcg.read()[3]))
-
-
- # Kraj
-
- KrajLabel = TK.Label(Ramka4)
- KrajLabel.config(text = 'Kraj')
- KrajLabel.config(width = SzerokoscOpisu + 5)
- KrajLabel.config(bg = M_tlo)
- KrajLabel.config(fg = M_text)
- KrajLabel.grid(row = 4, column = 0)
-
- KrajValue = TK.StringVar()
- KrajPole = TK.Entry(Ramka4)
- KrajPole.config(textvariable = KrajValue)
- KrajPole.config(width = 69)
- KrajPole.config(bg = M_entrytlo)
- KrajPole.config(fg = M_text)
- KrajPole.grid(row = 4, column = 1, padx = 5, pady = 5)
- KrajPole.insert(0, MDlcg.read()[4])
-
-
- # Przycisk ZAPISZ
- def save():
- if MDdlg.ask(1):
- motyw = Motyw_list.get()
- if motyw == 'Jasny':
- motyw = '0'
- else:
- motyw = '1'
- kodowanie = Code_list.get()
- uczniowiefmt = UczniowieFormat.get('1.0', 'end')
- nauczycielefmt = NauczycieleFormat.get('1.0', 'end')
- liclata = DlLicPole.get()
- brlata = DlBrPole.get()
- domena = PoleDomena.get()
- quota = PoleQuota.get()
- kraj = KrajPole.get()
- SettingsToSave = [motyw, kodowanie, domena, quota, kraj, liclata, brlata]
- FormatToSave = [uczniowiefmt, nauczycielefmt]
- if MDlfm.edit(FormatToSave):
- MDlcg.edit(SettingsToSave)
- MDdlg.inf(0)
- self.destroy()
- else:
- pass
- PrzyciskZAPISZ = TK.Button(self)
- PrzyciskZAPISZ.config(text = 'ZAPISZ')
- PrzyciskZAPISZ.config(command = save)
- PrzyciskZAPISZ.config(width = 50)
- PrzyciskZAPISZ.config(bg = M_przycisktlo)
- PrzyciskZAPISZ.config(fg = M_przycisktext)
- PrzyciskZAPISZ.config(relief = 'flat')
- PrzyciskZAPISZ.config(activebackground = M_przycisktlo)
- PrzyciskZAPISZ.grid(row = liczbawierszy + 1, pady = 15)
-
-
-
-OknoGlowne = Main()
-OknoGlowne.run()
\ No newline at end of file
diff --git a/components/processing.py b/components/processing.py
deleted file mode 100644
index 12f2077..0000000
--- a/components/processing.py
+++ /dev/null
@@ -1,57 +0,0 @@
-#TODO
-import dataprocess as MDdtp
-import load_config as MDlcg
-import dialog as MDdlg
-import codecs as CD
-
-I002 = ['Operacja zakończona pomyślnie', False]
-
-def do(KontenerDanych, sciezkaExport):
- KontenerEmail = []
- KontenerOffice = []
- for osoba in KontenerDanych:
- if osoba[-1]:
- Klasa = osoba[0]
- Imie = osoba[2]
- Inicjaly = Imie[0]
- Nazwisko = ''
- NazwiskoDoEmaila = ''
- for x in osoba[1]:
- Nazwisko += x + ' '
- NazwiskoDoEmaila += ('.' + x)
- Inicjaly += x[0]
- Nazwisko = Nazwisko[:-1]
- ZnacznikKlasy = MDdtp.ctc(Klasa)
- Login = osoba[3]
- Adres = MDdtp.plr(Imie).lower() + MDdtp.plr(NazwiskoDoEmaila).lower() + ZnacznikKlasy + '@losobolew.pl'
- Email = Adres + ',' + Login + ':' + MDdtp.plr(Inicjaly) + ',500'
- Office = Adres + ',' + Imie + ',' + Nazwisko + ',' + Imie + ' ' + Nazwisko + ',uczeń,' + Klasa + ',,,,,,,,,Rzeczypospolita Polska'
- KontenerEmail.append(Email)
- KontenerOffice.append(Office)
- else:
- Imie = osoba[1]
- Inicjaly = Imie[0]
- Nazwisko = ''
- NazwiskoDoEmaila = ''
- for x in osoba[0]:
- Nazwisko += x + ' '
- NazwiskoDoEmaila += ('.' + x)
- Inicjaly += x[0]
- Nazwisko = Nazwisko[:-1]
- Login = osoba[2]
- Adres = MDdtp.plr(Imie).lower() + MDdtp.plr(NazwiskoDoEmaila).lower() + '@losobolew.pl'
- Email = Adres + ',' + Login + ':' + MDdtp.plr(Inicjaly) + ',500'
- Office = Adres + ',' + Imie + ',' + Nazwisko + ',' + Imie + ' ' + Nazwisko + ',nauczyciel,,,,,,,,,,Rzeczpospolita Polska'
- KontenerEmail.append(Email)
- KontenerOffice.append(Office)
- sciezkaEmail = sciezkaExport + '/email.csv'
- sciezkaOffice = sciezkaExport + '/office.csv'
- with CD.open(sciezkaEmail, 'w', MDlcg.read()[1]) as plikEmail:
- for x in KontenerEmail:
- plikEmail.writelines(x + '\n')
- plikEmail.close()
- with CD.open(sciezkaOffice, 'w', MDlcg.read()[1]) as plikOffice:
- for x in KontenerOffice:
- plikOffice.writelines(x + '\n')
- plikOffice.close()
- MDdlg.Inf(I002)
\ No newline at end of file
diff --git a/generator.py b/generator.py
index b765a01..5d9ad7c 100644
--- a/generator.py
+++ b/generator.py
@@ -1,12 +1,12 @@
"""
-# GeneratorCSV
+# Generator CSV
# Wersja 4.0 Experimental
# by Mateusz Skoczek
# luty 2019 - grudzień 2019
# dla ZSP Sobolew
#
-# Główny skrypt uruchamiający
+# Główny plik programu
#
"""
@@ -17,13 +17,779 @@
-# ----------------------------------------- # Uruchomienie głównego modułu # ----------------------------------------- #
+# -------------------------------------------- # Informacje o programie # -------------------------------------------- #
+
+Nazwa = 'Generator CSV'
+Wersja = '4.0 Experimental'
+LataPracy = '2019'
+Autorzy = 'Mateusz Skoczek'
+
+
+
+
+
+
+
+
+# ----------------------------------- # Import bibliotek zewnętrznych i modułów # ------------------------------------ #
+
+# Biblioteki zewnętrzne
+import os as OS
+import sys as SS
+
+
+
+# Moduły składowe programu
+try:
+ from modules import dialog as MDdlg
+except ModuleNotFoundError:
+ print('Wystąpił krytyczny błąd!')
+ print('Nie znaleziono jednego z modułów programu (dialog.py). Nie można załadować programu')
+ print('Kod błędu: E00x0011')
+ wait = input('Naciśnij ENTER aby wyjść')
+ SS.exit(0)
+except Exception as exc:
+ print('Wystąpił krytyczny błąd!')
+ print('Nieznany błąd podczas ładowania jednego z modułów programu (dialog.py). Nie można załadować programu.')
+ print('Treść błędu: ' + exc)
+ print('Kod błędu: E00x0010')
+ wait = input('Naciśnij ENTER aby wyjść')
+ SS.exit(0)
try:
- fck = open("components/main.py")
-except:
- print('Nie znaleziono głównego modułu programu (main.py)\nNie można załadować programu\nKod błędu: E00x0000')
+ from modules import load_config as MDlcg
+except ModuleNotFoundError:
+ print('Wystąpił krytyczny błąd!')
+ print('Nie znaleziono jednego z modułów programu (load_config.py). Nie można załadować programu')
+ print('Kod błędu: E00x0021')
wait = input('Naciśnij ENTER aby wyjść')
+ SS.exit(0)
+except Exception as exc:
+ print('Wystąpił krytyczny błąd!')
+ print('Nieznany błąd podczas ładowania jednego z modułów programu (load_config.py). Nie można załadować programu.')
+ print('Treść błędu: ' + exc)
+ print('Kod błędu: E00x0020')
+ wait = input('Naciśnij ENTER aby wyjść')
+ SS.exit(0)
+
+try:
+ from modules import load_format as MDlfm
+except ModuleNotFoundError:
+ print('Wystąpił krytyczny błąd!')
+ print('Nie znaleziono jednego z modułów programu (load_format.py). Nie można załadować programu')
+ print('Kod błędu: E00x0031')
+ wait = input('Naciśnij ENTER aby wyjść')
+ SS.exit(0)
+except Exception as exc:
+ print('Wystąpił krytyczny błąd!')
+ print('Nieznany błąd podczas ładowania jednego z modułów programu (load_format.py). Nie można załadować programu.')
+ print('Treść błędu: ' + exc)
+ print('Kod błędu: E00x0030')
+ wait = input('Naciśnij ENTER aby wyjść')
+ SS.exit(0)
+
+
+# Biblioteki zewnętrzne interfejsu graficznego
+import tkinter as TK
+
+from tkinter import filedialog as TKfld
+from tkinter import ttk as TKttk
+
+
+
+
+
+
+
+
+
+# ------------------------------------- # Uruchomienie interfejsu graficznego # -------------------------------------- #
+
+# Zmienne globalne środowiska graficznego
+if int(MDlcg.read()[0]) == 1:
+ CiemnyMotyw = True
else:
- import os
- os.system("components\main.py")
\ No newline at end of file
+ CiemnyMotyw = False
+SzerokoscOpisu = 17
+SzerokoscOpisu2 = 30
+SzerokoscOpisu3 = 10
+SzerokoscPola = 122
+SzerokoscPola2 = 107
+SzerokoscPola3 = 130
+
+
+
+# Zmienne motywu
+if CiemnyMotyw:
+ ZmienneMotywu = ['#1F1F1F', '#191919', '#B8B8B8', '#FFFFFF', '#404040', '#FFFFFF', '#1F1F1F', 1]
+else:
+ ZmienneMotywu = ['#F0F0F0', '#D4D4D4', '#000000', '#000000', '#A6A6A6', '#000000', '#FFFFFF', 2]
+
+M_tlo = ZmienneMotywu[0]
+M_tytultlo = ZmienneMotywu[1]
+M_tytultext = ZmienneMotywu[2]
+M_text = ZmienneMotywu[3]
+M_przycisktlo = ZmienneMotywu[4]
+M_przycisktext = ZmienneMotywu[5]
+M_entrytlo = ZmienneMotywu[6]
+M_framewielkosc = ZmienneMotywu[7]
+
+
+
+# Okno główne
+class Main(TK.Tk):
+ def __init__(self):
+ # Ustawienia okna
+ TK.Tk.__init__(self)
+ self.title(Nazwa + " " + Wersja)
+ self.resizable(width = False, height = False)
+ self.configure(bg = M_tlo)
+
+
+ # Tytuł
+ Tytul = TK.Label(self)
+ Tytul.config(text = Nazwa)
+ Tytul.config(width = 41)
+ Tytul.config(bg = M_tytultlo)
+ Tytul.config(fg = M_tytultext)
+ Tytul.config(font = ('Segoe UI Semilight', 30))
+ Tytul.grid(row = 0)
+
+
+ # Frame1 - Pliki z danymi
+ Ramka1 = TK.LabelFrame(self)
+ Ramka1.config(text=' Pliki tekstowe zawierające dane (wymagany przynajmniej jeden) ')
+ Ramka1.config(borderwidth = M_framewielkosc)
+ Ramka1.config(bg = M_tlo)
+ Ramka1.config(fg = M_text)
+ Ramka1.grid(row = 1)
+
+
+ # Ścieżka pliku txt nr 1
+ wiersz = 1
+ text1 = TK.StringVar()
+
+ Pole1Label = TK.Label(Ramka1)
+ Pole1Label.config(text = 'Plik z danymi (1)')
+ Pole1Label.config(width = SzerokoscOpisu)
+ Pole1Label.config(bg = M_tlo)
+ Pole1Label.config(fg = M_text)
+ Pole1Label.grid(row = wiersz, column = 0)
+
+ Pole1 = TK.Entry(Ramka1)
+ Pole1.config(textvariable = text1)
+ Pole1.config(width = SzerokoscPola)
+ Pole1.config(bg = M_entrytlo)
+ Pole1.config(fg = M_text)
+ Pole1.grid(row = wiersz, column = 1)
+
+ def Pole1BrowseDialog():
+ Pole1Browse.filename = TKfld.askopenfilename(initialdir = "C:/", title = "Wybierz plik tekstowy z danymi", filetypes = (("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*")))
+ Pole1.delete(0, 'end')
+ Pole1.insert(0, Pole1Browse.filename)
+
+ Pole1Browse = TK.Button(Ramka1)
+ Pole1Browse.config(text = '...')
+ Pole1Browse.config(command = Pole1BrowseDialog)
+ Pole1Browse.config(bg = M_przycisktlo)
+ Pole1Browse.config(fg = M_przycisktext)
+ Pole1Browse.config(relief = 'flat')
+ Pole1Browse.config(activebackground = M_przycisktlo)
+ Pole1Browse.grid(row = wiersz, column = 2, padx=5, pady=3)
+
+
+ # Ścieżka pliku txt nr 2
+ wiersz = 2
+ text2 = TK.StringVar()
+
+ Pole2Label = TK.Label(Ramka1)
+ Pole2Label.config(text = 'Plik z danymi (2)')
+ Pole2Label.config(width = SzerokoscOpisu)
+ Pole2Label.config(bg = M_tlo)
+ Pole2Label.config(fg = M_text)
+ Pole2Label.grid(row = wiersz, column = 0)
+
+ Pole2 = TK.Entry(Ramka1)
+ Pole2.config(textvariable = text2)
+ Pole2.config(width = SzerokoscPola)
+ Pole2.config(bg = M_entrytlo)
+ Pole2.config(fg = M_text)
+ Pole2.grid(row = wiersz, column = 1)
+
+ def Pole2BrowseDialog():
+ Pole2Browse.filename = TKfld.askopenfilename(initialdir = "C:/", title = "Wybierz plik tekstowy z danymi", filetypes = (("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*")))
+ Pole2.delete(0, 'end')
+ Pole2.insert(0, Pole2Browse.filename)
+
+ Pole2Browse = TK.Button(Ramka1)
+ Pole2Browse.config(text = '...')
+ Pole2Browse.config(command = Pole2BrowseDialog)
+ Pole2Browse.config(bg = M_przycisktlo)
+ Pole2Browse.config(fg = M_przycisktext)
+ Pole2Browse.config(relief = 'flat')
+ Pole2Browse.config(activebackground = M_przycisktlo)
+ Pole2Browse.grid(row = wiersz, column = 2, padx = 5, pady = 3)
+
+ # Ścieżka pliku txt nr 3
+ wiersz = 3
+ text3 = TK.StringVar()
+
+ Pole3Label = TK.Label(Ramka1)
+ Pole3Label.config(text = 'Plik z danymi (3)')
+ Pole3Label.config(width = SzerokoscOpisu)
+ Pole3Label.config(bg = M_tlo)
+ Pole3Label.config(fg = M_text)
+ Pole3Label.grid(row = wiersz, column = 0)
+
+ Pole3 = TK.Entry(Ramka1)
+ Pole3.config(textvariable = text3)
+ Pole3.config(width = SzerokoscPola)
+ Pole3.config(bg = M_entrytlo)
+ Pole3.config(fg = M_text)
+ Pole3.grid(row = wiersz, column = 1)
+
+ def Pole3BrowseDialog():
+ Pole3Browse.filename = TKfld.askopenfilename(initialdir = "C:/", title = "Wybierz plik tekstowy z danymi", filetypes = (("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*")))
+ Pole3.delete(0, 'end')
+ Pole3.insert(0, Pole3Browse.filename)
+
+ Pole3Browse = TK.Button(Ramka1)
+ Pole3Browse.config(text = '...')
+ Pole3Browse.config(command = Pole3BrowseDialog)
+ Pole3Browse.config(bg = M_przycisktlo)
+ Pole3Browse.config(fg = M_przycisktext)
+ Pole3Browse.config(relief = 'flat')
+ Pole3Browse.config(activebackground = M_przycisktlo)
+ Pole3Browse.grid(row = wiersz, column = 2, padx = 5, pady = 3)
+
+
+ # Frame2 - Dołącz pliki .csv
+ Ramka2 = TK.LabelFrame(self)
+ Ramka2.config(text = ' Dołącz pliki .csv (opcjonalne) ')
+ Ramka2.config(borderwidth = M_framewielkosc)
+ Ramka2.config(bg = M_tlo)
+ Ramka2.config(fg = M_text)
+ Ramka2.grid(row = 2)
+
+
+ # Sciezka do konta.csv
+ wiersz = 1
+ textKonta = TK.StringVar()
+
+ PoleKontaLabel = TK.Label(Ramka2)
+ PoleKontaLabel.config(text = 'Ściezka do pliku .csv dla poczty')
+ PoleKontaLabel.config(width = SzerokoscOpisu2)
+ PoleKontaLabel.config(bg = M_tlo)
+ PoleKontaLabel.config(fg = M_text)
+ PoleKontaLabel.grid(row = wiersz, column = 0)
+
+ PoleKonta = TK.Entry(Ramka2)
+ PoleKonta.config(textvariable = textKonta)
+ PoleKonta.config(width = SzerokoscPola2)
+ PoleKonta.config(bg = M_entrytlo)
+ PoleKonta.config(fg = M_text)
+ PoleKonta.grid(row = wiersz, column = 1)
+
+ def PoleKontaBrowseDialog():
+ PoleKontaBrowse.filename = TKfld.askopenfilename(initialdir="C:/", title="Wybierz plik .csv dla poczty", filetypes=(("Pliki csv", "*.csv"), ("Wszystkie pliki", "*.*")))
+ PoleKonta.delete(0, 'end')
+ PoleKonta.insert(0, PoleKontaBrowse.filename)
+
+ PoleKontaBrowse = TK.Button(Ramka2)
+ PoleKontaBrowse.config(text = '...')
+ PoleKontaBrowse.config(command = PoleKontaBrowseDialog)
+ PoleKontaBrowse.config(bg = M_przycisktlo)
+ PoleKontaBrowse.config(fg = M_przycisktext)
+ PoleKontaBrowse.config(relief = 'flat')
+ PoleKontaBrowse.config(activebackground = M_przycisktlo)
+ PoleKontaBrowse.grid(row = wiersz, column = 2, padx = 5, pady = 3)
+
+
+ # Sciezka do office.csv
+ wiersz = 2
+ textOffice = TK.StringVar()
+
+ PoleOfficeLabel = TK.Label(Ramka2)
+ PoleOfficeLabel.config(text = 'Ściezka do pliku .csv dla office365')
+ PoleOfficeLabel.config(width = SzerokoscOpisu2)
+ PoleOfficeLabel.config(bg = M_tlo)
+ PoleOfficeLabel.config(fg = M_text)
+ PoleOfficeLabel.grid(row = wiersz, column = 0)
+
+ PoleOffice = TK.Entry(Ramka2)
+ PoleOffice.config(textvariable = textOffice)
+ PoleOffice.config(width = SzerokoscPola2)
+ PoleOffice.config(bg = M_entrytlo)
+ PoleOffice.config(fg = M_text)
+ PoleOffice.grid(row = wiersz, column = 1)
+
+ def PoleOfficeBrowseDialog():
+ PoleOfficeBrowse.filename = TKfld.askopenfilename(initialdir = "C:/", title = "Wybierz plik .csv dla poczty", filetypes = (("Pliki csv", "*.csv"), ("Wszystkie pliki", "*.*")))
+ PoleOffice.delete(0, 'end')
+ PoleOffice.insert(0, PoleOfficeBrowse.filename)
+
+ PoleOfficeBrowse = TK.Button(Ramka2)
+ PoleOfficeBrowse.config(text = '...')
+ PoleOfficeBrowse.config(command = PoleKontaBrowseDialog)
+ PoleOfficeBrowse.config(bg = M_przycisktlo)
+ PoleOfficeBrowse.config(fg = M_przycisktext)
+ PoleOfficeBrowse.config(relief = 'flat')
+ PoleOfficeBrowse.config(activebackground = M_przycisktlo)
+ PoleOfficeBrowse.grid(row = wiersz, column = 2, padx = 5, pady = 3)
+
+
+ # Frame3 - Eksport
+ Ramka3 = TK.LabelFrame(self)
+ Ramka3.config(text=' Eksport ')
+ Ramka3.config(borderwidth = M_framewielkosc)
+ Ramka3.config(bg = M_tlo)
+ Ramka3.config(fg = M_text)
+ Ramka3.grid(row = 3)
+
+
+ # Sciezka do pliku poczty
+ wiersz = 1
+ textKontaEksport = TK.StringVar()
+
+ PoleKontaEksportLabel = TK.Label(Ramka3)
+ PoleKontaEksportLabel.config(text = 'Poczta')
+ PoleKontaEksportLabel.config(width = SzerokoscOpisu3)
+ PoleKontaEksportLabel.config(bg = M_tlo)
+ PoleKontaEksportLabel.config(fg = M_text)
+ PoleKontaEksportLabel.grid(row = wiersz, column = 0)
+
+ PoleKontaEksport = TK.Entry(Ramka3)
+ PoleKontaEksport.config(textvariable = textKontaEksport)
+ PoleKontaEksport.config(width = SzerokoscPola3)
+ PoleKontaEksport.config(bg = M_entrytlo)
+ PoleKontaEksport.config(fg = M_text)
+ PoleKontaEksport.grid(row = wiersz, column = 1)
+
+ def PoleKontaEksportBrowseDialog():
+ PoleKontaEksportBrowse.filename = TKfld.saveasfilename(initialdir = "C:/", title = "Zapisz", filetypes = (("Pliki csv", "*.csv"), ("Wszystkie pliki", "*.*")))
+ PoleKontaEksport.delete(0, 'end')
+ PoleKontaEksport.insert(0, PoleKontaEksportBrowse.filename)
+
+ PoleKontaEksportBrowse = TK.Button(Ramka3)
+ PoleKontaEksportBrowse.config(text = '...')
+ PoleKontaEksportBrowse.config(command = PoleKontaEksportBrowseDialog)
+ PoleKontaEksportBrowse.config(bg = M_przycisktlo)
+ PoleKontaEksportBrowse.config(fg = M_przycisktext)
+ PoleKontaEksportBrowse.config(relief = 'flat')
+ PoleKontaEksportBrowse.config(activebackground = M_przycisktlo)
+ PoleKontaEksportBrowse.grid(row = wiersz, column = 2, padx = 5, pady = 3)
+
+ # Sciezka do pliku office
+ wiersz = 2
+ textOfficeEksport = TK.StringVar()
+
+ PoleOfficeEksportLabel = TK.Label(Ramka3)
+ PoleOfficeEksportLabel.config(text = 'Office')
+ PoleOfficeEksportLabel.config(width = SzerokoscOpisu3)
+ PoleOfficeEksportLabel.config(bg = M_tlo)
+ PoleOfficeEksportLabel.config(fg = M_text)
+ PoleOfficeEksportLabel.grid(row = wiersz, column = 0)
+
+ PoleOfficeEksport = TK.Entry(Ramka3)
+ PoleOfficeEksport.config(textvariable = textOfficeEksport)
+ PoleOfficeEksport.config(width = SzerokoscPola3)
+ PoleOfficeEksport.config(bg = M_entrytlo)
+ PoleOfficeEksport.config(fg = M_text)
+ PoleOfficeEksport.grid(row = wiersz, column = 1)
+
+ def PoleOfficeEksportBrowseDialog():
+ PoleOfficeEksportBrowse.filename = TKfld.saveasfilename(initialdir = "C:/", title = "Zapisz", filetypes = (("Pliki csv", "*.csv"), ("Wszystkie pliki", "*.*")))
+ PoleOfficeEksport.delete(0, 'end')
+ PoleOfficeEksport.insert(0, PoleOfficeEksportBrowse.filename)
+
+ PoleOfficeEksportBrowse = TK.Button(Ramka3)
+ PoleOfficeEksportBrowse.config(text = '...')
+ PoleOfficeEksportBrowse.config(command = PoleOfficeEksportBrowseDialog)
+ PoleOfficeEksportBrowse.config(bg = M_przycisktlo)
+ PoleOfficeEksportBrowse.config(fg = M_przycisktext)
+ PoleOfficeEksportBrowse.config(relief = 'flat')
+ PoleOfficeEksportBrowse.config(activebackground = M_przycisktlo)
+ PoleOfficeEksportBrowse.grid(row = wiersz, column = 2, padx = 5, pady = 3)
+
+ # Przycisk START
+ def PathPreprocess():
+ pass
+
+ PrzyciskSTART = TK.Button(self)
+ PrzyciskSTART.config(text = 'START')
+ PrzyciskSTART.config(command = PathPreprocess)
+ PrzyciskSTART.config(width = 50)
+ PrzyciskSTART.config(bg = M_przycisktlo)
+ PrzyciskSTART.config(fg = M_przycisktext)
+ PrzyciskSTART.config(relief = 'flat')
+ PrzyciskSTART.config(activebackground = M_przycisktlo)
+ PrzyciskSTART.grid(row = 4, pady = 15)
+
+ # Pasek dolny
+ PasekDolny = TK.LabelFrame(self)
+ PasekDolny.config(bd = 0)
+ PasekDolny.config(bg = M_tytultlo)
+ PasekDolny.config(fg = M_tytultext)
+ PasekDolny.grid(row=5)
+
+ InfoLabel = TK.Label(PasekDolny)
+ InfoLabel.config(text = Nazwa + ' ' + Wersja + ' | © ' + Autorzy + ' ' + LataPracy + ' dla ZSP Sobolew')
+ InfoLabel.config(width = 107)
+ InfoLabel.config(justify = 'left')
+ InfoLabel.config(anchor='w')
+ InfoLabel.config(bg = M_tytultlo)
+ InfoLabel.config(fg = M_tytultext)
+ InfoLabel.grid(row = 0, column = 0)
+
+ def InfoOpen():
+ try:
+ x = open('.\instruction.txt')
+ except FileNotFoundError:
+ MDdlg.err(4)
+ else:
+ OS.system("notepad .\instruction.txt")
+
+ PrzyciskINFO = TK.Button(PasekDolny)
+ PrzyciskINFO.config(text = 'Instrukcja')
+ PrzyciskINFO.config(command = InfoOpen)
+ PrzyciskINFO.config(bg = M_przycisktlo)
+ PrzyciskINFO.config(fg = M_przycisktext)
+ PrzyciskINFO.config(relief = 'flat')
+ PrzyciskINFO.config(activebackground = M_przycisktlo)
+ PrzyciskINFO.grid(row = 0, column = 1, padx = 5, pady = 5)
+
+ PrzyciskUSTAWIENIA = TK.Button(PasekDolny)
+ PrzyciskUSTAWIENIA.config(text = 'Ustawienia')
+ PrzyciskUSTAWIENIA.config(command = self.settingsButton)
+ PrzyciskUSTAWIENIA.config(bg = M_przycisktlo)
+ PrzyciskUSTAWIENIA.config(fg = M_przycisktext)
+ PrzyciskUSTAWIENIA.config(relief = 'flat')
+ PrzyciskUSTAWIENIA.grid(row = 0, column = 2, padx = 5, pady = 5)
+
+ def settingsButton(self):
+ self.child = Settings(self)
+
+ def run(self):
+ self.mainloop()
+
+# Okno ustawień
+class Settings(TK.Toplevel):
+ def __init__(self, parent):
+ # Ustawienia okna
+ TK.Toplevel.__init__(self, parent)
+ self.title('Ustawienia')
+ self.resizable(width = False, height = False)
+ self.configure(bg = M_tlo)
+
+ liczbawierszy = 0
+
+ # Tytuł
+ Tytul = TK.Label(self)
+ Tytul.config(text = 'Ustawienia')
+ Tytul.config(width = 40)
+ Tytul.config(bg = M_tytultlo)
+ Tytul.config(fg = M_tytultext)
+ Tytul.config(font = ('Segoe UI Semilight', 20))
+ Tytul.grid(row = 0)
+
+
+ # Frame1 - Motyw
+ liczbawierszy += 1
+ Ramka1 = TK.LabelFrame(self)
+ Ramka1.config(text = ' Motyw programu ')
+ Ramka1.config(bg = M_tlo)
+ Ramka1.config(fg = M_text)
+ Ramka1.config(borderwidth = M_framewielkosc)
+ Ramka1.grid(row = 1, pady = 5)
+
+
+ if int(MDlcg.read()[0]) == 1:
+ Motyw_list_set = 1
+ else:
+ Motyw_list_set = 0
+ Motyw_list = TKttk.Combobox(Ramka1)
+ Motyw_list.config(textvariable = TK.StringVar())
+ Motyw_list.config(state = 'readonly')
+ Motyw_list.config(width = 93)
+ Motyw_list.grid(row = 0, pady = 5, padx = 5)
+ Motyw_list['values'] = ('Jasny', 'Ciemny')
+ Motyw_list.current(Motyw_list_set)
+
+
+ # Frame2 - Kodowanie
+ liczbawierszy += 1
+ Ramka2 = TK.LabelFrame(self)
+ Ramka2.config(text = ' Kodowanie wyjściowe ')
+ Ramka2.config(bg = M_tlo)
+ Ramka2.config(fg = M_text)
+ Ramka2.config(borderwidth = M_framewielkosc)
+ Ramka2.grid(row = 2, pady = 5)
+
+ Code_list = TKttk.Combobox(Ramka2)
+ Code_list.config(textvariable = TK.StringVar())
+ Code_list.config(state = 'readonly')
+ Code_list.config(width = 93)
+ Code_list.grid(row = 0, pady = 5, padx = 5)
+ Code_list['values'] = ('utf-8')
+ Code_list.set(MDlcg.read()[1])
+
+
+ # Frame3 - Format plików wejściowych
+ SzerokoscPolaWej = 35
+ WysokoscPolaWej = 8
+
+ liczbawierszy += 1
+ Ramka3 = TK.LabelFrame(self)
+ Ramka3.config(text = ' Format plików wejściowych ')
+ Ramka3.config(bg = M_tlo)
+ Ramka3.config(fg = M_text)
+ Ramka3.config(borderwidth = M_framewielkosc)
+ Ramka3.grid(row = 3, pady = 5)
+
+ UczniowieLabel = TK.Label(Ramka3)
+ UczniowieLabel.config(text = 'Uczniowie')
+ UczniowieLabel.config(justify = 'center')
+ UczniowieLabel.config(bg = M_tlo)
+ UczniowieLabel.config(fg = M_text)
+ UczniowieLabel.grid(row = 0, column = 0)
+
+ uczfmt = MDlfm.read()[0]
+ uczfmt = '\n'.join(uczfmt)
+ UczniowieFormat = TK.Text(Ramka3)
+ UczniowieFormat.config(width = SzerokoscPolaWej)
+ UczniowieFormat.config(height = WysokoscPolaWej)
+ UczniowieFormat.config(bg = M_entrytlo)
+ UczniowieFormat.config(fg = M_text)
+ UczniowieFormat.grid(row = 1, column = 0, padx = 5, pady = 5)
+ UczniowieFormat.insert(TK.END, uczfmt)
+
+ NauczycieleLabel = TK.Label(Ramka3)
+ NauczycieleLabel.config(text = 'Nauczyciele')
+ NauczycieleLabel.config(justify = 'center')
+ NauczycieleLabel.config(bg = M_tlo)
+ NauczycieleLabel.config(fg = M_text)
+ NauczycieleLabel.grid(row = 0, column = 1)
+
+ nczfmt = MDlfm.read()[1]
+ nczfmt = '\n'.join(nczfmt)
+ NauczycieleFormat = TK.Text(Ramka3)
+ NauczycieleFormat.config(width = SzerokoscPolaWej)
+ NauczycieleFormat.config(height = WysokoscPolaWej)
+ NauczycieleFormat.config(bg = M_entrytlo)
+ NauczycieleFormat.config(fg = M_text)
+ NauczycieleFormat.grid(row = 1, column = 1, padx = 5, pady = 5)
+ NauczycieleFormat.insert(TK.END, nczfmt)
+
+ OpisFmt = TK.LabelFrame(Ramka3)
+ OpisFmt.config(bg=M_tlo)
+ OpisFmt.config(fg=M_text)
+ OpisFmt.config(borderwidth=0)
+ OpisFmt.grid(row=2, pady=5, columnspan=4)
+
+ Opis1 = TK.Label(OpisFmt)
+ Opis1.config(text='Dozwolone znaki:')
+ Opis1.config(bg=M_tlo)
+ Opis1.config(fg=M_text)
+ Opis1.grid(row=0, columnspan=7)
+
+ Opis2_1 = TK.Label(OpisFmt)
+ Opis2_1.config(text='K - Klasa')
+ Opis2_1.config(bg=M_tlo)
+ Opis2_1.config(fg=M_text)
+ Opis2_1.grid(row=1, column=0)
+
+ Opis2_2 = TK.Label(OpisFmt)
+ Opis2_2.config(text='O - Oddzial')
+ Opis2_2.config(bg=M_tlo)
+ Opis2_2.config(fg=M_text)
+ Opis2_2.grid(row=1, column=1)
+
+ Opis2_3 = TK.Label(OpisFmt)
+ Opis2_3.config(text='N - Nazwisko')
+ Opis2_3.config(bg=M_tlo)
+ Opis2_3.config(fg=M_text)
+ Opis2_3.grid(row=1, column=2)
+
+ Opis2_4 = TK.Label(OpisFmt)
+ Opis2_4.config(text='I - Imię')
+ Opis2_4.config(bg=M_tlo)
+ Opis2_4.config(fg=M_text)
+ Opis2_4.grid(row=1, column=3)
+
+ Opis2_5 = TK.Label(OpisFmt)
+ Opis2_5.config(text='L - Login')
+ Opis2_5.config(bg=M_tlo)
+ Opis2_5.config(fg=M_text)
+ Opis2_5.grid(row=1, column=4)
+
+ Opis2_6 = TK.Label(OpisFmt)
+ Opis2_6.config(text = 'X - Dane nieznaczące')
+ Opis2_6.config(bg = M_tlo)
+ Opis2_6.config(fg = M_text)
+ Opis2_6.grid(row = 1, column = 5)
+
+ Opis2_6 = TK.Label(OpisFmt)
+ Opis2_6.config(text='Q - Pusta linia')
+ Opis2_6.config(bg=M_tlo)
+ Opis2_6.config(fg=M_text)
+ Opis2_6.grid(row=1, column=6)
+
+ Opis3 = TK.Label(OpisFmt)
+ Opis3.config(text='Pozostałe znaki oprócz cyfr i pozostałych liter')
+ Opis3.config(bg=M_tlo)
+ Opis3.config(fg=M_text)
+ Opis3.grid(row=2, columnspan = 7)
+
+
+ # Frame4 - Stałe
+ liczbawierszy += 1
+ Ramka4 = TK.LabelFrame(self)
+ Ramka4.config(text = ' Ustawienia generowania ')
+ Ramka4.config(bg = M_tlo)
+ Ramka4.config(fg = M_text)
+ Ramka4.config(borderwidth = M_framewielkosc)
+ Ramka4.grid(row = 4, pady = 5)
+
+
+ # Długość liceum i branżowej
+ RamkaDl = TK.LabelFrame(Ramka4)
+ RamkaDl.config(bg = M_tlo)
+ RamkaDl.config(fg = M_text)
+ RamkaDl.config(borderwidth = 0)
+ RamkaDl.grid(row = 0, pady = 5, columnspan = 2)
+
+ DlLicLabel = TK.Label(RamkaDl)
+ DlLicLabel.config(text = 'Lata nauki w liceum')
+ DlLicLabel.config(width = SzerokoscOpisu + 5)
+ DlLicLabel.config(bg = M_tlo)
+ DlLicLabel.config(fg = M_text)
+ DlLicLabel.grid(row = 0, column = 0)
+
+ DlLicValue = TK.IntVar()
+ DlLicPole = TK.Spinbox(RamkaDl)
+ DlLicPole.config(textvariable = DlLicValue)
+ DlLicPole.config(from_ = 1, to = 10)
+ DlLicPole.config(width = 18)
+ DlLicPole.config(bg = M_entrytlo)
+ DlLicPole.config(fg = M_text)
+ DlLicPole.grid(row = 0, column = 1, padx = 5, pady = 5)
+ DlLicPole.delete(0, 'end')
+ DlLicPole.insert(0, int(MDlcg.read()[5]))
+
+ DlBrLabel = TK.Label(RamkaDl)
+ DlBrLabel.config(text='Lata nauki w branżowej')
+ DlBrLabel.config(width = SzerokoscOpisu + 5)
+ DlBrLabel.config(bg = M_tlo)
+ DlBrLabel.config(fg = M_text)
+ DlBrLabel.grid(row = 0, column = 2)
+
+ DlBrValue = TK.IntVar()
+ DlBrPole = TK.Spinbox(RamkaDl)
+ DlBrPole.config(textvariable = DlBrValue)
+ DlBrPole.config(from_ = 1, to=10)
+ DlBrPole.config(width = 18)
+ DlBrPole.config(bg = M_entrytlo)
+ DlBrPole.config(fg = M_text)
+ DlBrPole.grid(row = 0, column = 3, padx = 5, pady = 5)
+ DlBrPole.delete(0, 'end')
+ DlBrPole.insert(0, int(MDlcg.read()[6]))
+
+
+ # Domena
+
+ DomenaLabel = TK.Label(Ramka4)
+ DomenaLabel.config(text = 'Domena')
+ DomenaLabel.config(width = SzerokoscOpisu + 5)
+ DomenaLabel.config(bg = M_tlo)
+ DomenaLabel.config(fg = M_text)
+ DomenaLabel.grid(row = 2, column = 0)
+
+ text1 = TK.StringVar()
+ PoleDomena = TK.Entry(Ramka4)
+ PoleDomena.config(textvariable = text1)
+ PoleDomena.config(width = 69)
+ PoleDomena.config(bg = M_entrytlo)
+ PoleDomena.config(fg = M_text)
+ PoleDomena.grid(row = 2, column = 1, padx = 5, pady = 5)
+ PoleDomena.insert(0, MDlcg.read()[2])
+
+
+ # Quota
+
+ QuotaLabel = TK.Label(Ramka4)
+ QuotaLabel.config(text = 'Quota (MB)')
+ QuotaLabel.config(width = SzerokoscOpisu)
+ QuotaLabel.config(bg = M_tlo)
+ QuotaLabel.config(fg = M_text)
+ QuotaLabel.grid(row = 3, column = 0)
+
+ value2 = TK.IntVar()
+ PoleQuota = TK.Spinbox(Ramka4)
+ PoleQuota.config(textvariable = value2)
+ PoleQuota.config(from_ = 1, to = 100000)
+ PoleQuota.config(width = 67)
+ PoleQuota.config(bg = M_entrytlo)
+ PoleQuota.config(fg = M_text)
+ PoleQuota.grid(row = 3, column = 1, padx = 5, pady = 5)
+ PoleQuota.delete(0, 'end')
+ PoleQuota.insert(0, int(MDlcg.read()[3]))
+
+
+ # Kraj
+
+ KrajLabel = TK.Label(Ramka4)
+ KrajLabel.config(text = 'Kraj')
+ KrajLabel.config(width = SzerokoscOpisu + 5)
+ KrajLabel.config(bg = M_tlo)
+ KrajLabel.config(fg = M_text)
+ KrajLabel.grid(row = 4, column = 0)
+
+ KrajValue = TK.StringVar()
+ KrajPole = TK.Entry(Ramka4)
+ KrajPole.config(textvariable = KrajValue)
+ KrajPole.config(width = 69)
+ KrajPole.config(bg = M_entrytlo)
+ KrajPole.config(fg = M_text)
+ KrajPole.grid(row = 4, column = 1, padx = 5, pady = 5)
+ KrajPole.insert(0, MDlcg.read()[4])
+
+
+ # Przycisk ZAPISZ
+ def save():
+ if MDdlg.ask(1):
+ motyw = Motyw_list.get()
+ if motyw == 'Jasny':
+ motyw = '0'
+ else:
+ motyw = '1'
+ kodowanie = Code_list.get()
+ uczniowiefmt = UczniowieFormat.get('1.0', 'end')
+ nauczycielefmt = NauczycieleFormat.get('1.0', 'end')
+ liclata = DlLicPole.get()
+ brlata = DlBrPole.get()
+ domena = PoleDomena.get()
+ quota = PoleQuota.get()
+ kraj = KrajPole.get()
+ SettingsToSave = [motyw, kodowanie, domena, quota, kraj, liclata, brlata]
+ FormatToSave = [uczniowiefmt, nauczycielefmt]
+ if MDlfm.edit(FormatToSave):
+ MDlcg.edit(SettingsToSave)
+ MDdlg.inf(0)
+ self.destroy()
+ else:
+ pass
+ PrzyciskZAPISZ = TK.Button(self)
+ PrzyciskZAPISZ.config(text = 'ZAPISZ')
+ PrzyciskZAPISZ.config(command = save)
+ PrzyciskZAPISZ.config(width = 50)
+ PrzyciskZAPISZ.config(bg = M_przycisktlo)
+ PrzyciskZAPISZ.config(fg = M_przycisktext)
+ PrzyciskZAPISZ.config(relief = 'flat')
+ PrzyciskZAPISZ.config(activebackground = M_przycisktlo)
+ PrzyciskZAPISZ.grid(row = liczbawierszy + 1, pady = 15)
+
+
+
+# Inicjacja okna głównego
+OknoGlowne = Main()
+OknoGlowne.run()
\ No newline at end of file
diff --git a/modules/__init__.py b/modules/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/components/dialog.py b/modules/dialog.py
similarity index 100%
rename from components/dialog.py
rename to modules/dialog.py
diff --git a/components/load_config.py b/modules/load_config.py
similarity index 80%
rename from components/load_config.py
rename to modules/load_config.py
index 2d13677..3873945 100644
--- a/components/load_config.py
+++ b/modules/load_config.py
@@ -26,12 +26,20 @@ import sys as SS
# Moduły składowe programu
try:
- import dialog as MDdlg
+ from modules import dialog as MDdlg
except ModuleNotFoundError:
- print('Nie znaleziono modułu programu (dialog.py)\nNie można załadować programu\nKod błędu: E00x0001')
+ print('Wystąpił krytyczny błąd!')
+ print('Nie znaleziono jednego z modułów programu (dialog.py). Nie można załadować programu')
+ print('Kod błędu: E00x0011')
+ wait = input('Naciśnij ENTER aby wyjść')
+ SS.exit(0)
+except Exception as exc:
+ print('Wystąpił krytyczny błąd!')
+ print('Nieznany błąd podczas ładowania jednego z modułów programu (dialog.py). Nie można załadować programu.')
+ print('Treść błędu: ' + exc)
+ print('Kod błędu: E00x0010')
wait = input('Naciśnij ENTER aby wyjść')
SS.exit(0)
-
diff --git a/components/load_format.py b/modules/load_format.py
similarity index 86%
rename from components/load_format.py
rename to modules/load_format.py
index 6576274..848cfbb 100644
--- a/components/load_format.py
+++ b/modules/load_format.py
@@ -22,11 +22,22 @@
# Biblioteki zewnętrzne
import sys as SS
+
+
# Moduły składowe programu
try:
- import dialog as MDdlg
+ from modules import dialog as MDdlg
except ModuleNotFoundError:
- print('Nie znaleziono modułu programu (dialog.py)\nNie można załadować programu\nKod błędu: E00x0001')
+ print('Wystąpił krytyczny błąd!')
+ print('Nie znaleziono jednego z modułów programu (dialog.py). Nie można załadować programu')
+ print('Kod błędu: E00x0011')
+ wait = input('Naciśnij ENTER aby wyjść')
+ SS.exit(0)
+except Exception as exc:
+ print('Wystąpił krytyczny błąd!')
+ print('Nieznany błąd podczas ładowania jednego z modułów programu (dialog.py). Nie można załadować programu.')
+ print('Treść błędu: ' + exc)
+ print('Kod błędu: E00x0010')
wait = input('Naciśnij ENTER aby wyjść')
SS.exit(0)