diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..9661ac7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 396011c..80357d7 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -15,9 +15,13 @@
+
+
+
+
1575129057993
+
+
+
+
+
\ No newline at end of file
diff --git a/changelog-UC.txt b/changelog-UC.txt
index 7f8e910..ad257c0 100644
--- a/changelog-UC.txt
+++ b/changelog-UC.txt
@@ -3,4 +3,13 @@
- Dodanie w głównym (nadrzędnym) folderze programu, skryptu inicjującego główny moduł programu
- Dodanie zapisu opcji czarnego motywu do 'config.cfg'
- Wstępne stworzenie skryptu pozwalającego na zapis do pliku 'config.cfg'
-- Błąd o braku głównego pliku składowego programu ('main.py') oraz modułu wywołującego okna dialogowe ('dialog.py')
\ No newline at end of file
+- Błąd o braku głównego pliku składowego programu ('main.py') oraz modułu wywołującego okna dialogowe ('dialog.py')
+
+4.0 Alpha (Build 19346.1)
+- Przebudowanie skryptu odczytującego plik konfiguracyjny
+- Dodanie skryptu zapisującego ustawienia do pliku konfiguracyjnego
+- Scalenie dwóch powyższych skryptów do modułu 'load_config.py'
+- Przeprojektowanie kodu
+- Lekkie przeprojektowanie układu interfejsu
+- Stworzenie palety barw motywu jasnego i ciemnego
+- Wprowadzenie motywu jasnego i ciemnego (z możliwością zmiany jedynie przez plik 'config.cfg'
diff --git a/components/__pycache__/dialog.cpython-38.pyc b/components/__pycache__/dialog.cpython-38.pyc
index 8a7dee9..057de7d 100644
Binary files a/components/__pycache__/dialog.cpython-38.pyc and b/components/__pycache__/dialog.cpython-38.pyc differ
diff --git a/components/__pycache__/load_config.cpython-38.pyc b/components/__pycache__/load_config.cpython-38.pyc
index a0178d6..d0e2ef0 100644
Binary files a/components/__pycache__/load_config.cpython-38.pyc and b/components/__pycache__/load_config.cpython-38.pyc differ
diff --git a/components/dialog.py b/components/dialog.py
index a8251b5..4caaa24 100644
--- a/components/dialog.py
+++ b/components/dialog.py
@@ -1,6 +1,6 @@
"""
# GeneratorCSV
-# Wersja 4.0: UC 1
+# Wersja 4.0: UC 2
# by Mateusz Skoczek
# luty 2019 - grudzień 2019
# dla ZSP Sobolew
@@ -14,11 +14,14 @@
-# ---------------------------------------- # Import bibliotek zewnętrznych # ----------------------------------------- #
+# ----------------------------------- # Import bibliotek zewnętrznych i modułów # ------------------------------------ #
-from tkinter import messagebox as TKmsb
+# Biblioteki zewnętrzne
import sys as SS
+# Biblioteki zewnętrzne interfejsu graficznego
+from tkinter import messagebox as TKmsb
+
@@ -35,12 +38,16 @@ def Err(KodBledu):
if KodBledu[1]:
SS.exit(0)
+
+
# Okno dialogowe informacyjne
def Inf(KodInformacji):
TKmsb.showinfo('Informacja', KodInformacji[0])
if KodInformacji[1]:
SS.exit(0)
+
+
# Okno dialogowe zapytania
def Ask(KodZapytania):
if TKmsb.askokcancel('Pytanie', KodZapytania):
diff --git a/components/load_config.py b/components/load_config.py
index 5860cb6..1653dec 100644
--- a/components/load_config.py
+++ b/components/load_config.py
@@ -1,6 +1,6 @@
"""
# GeneratorCSV
-# Wersja 4.0: UC 1
+# Wersja 4.0: UC 2
# by Mateusz Skoczek
# luty 2019 - grudzień 2019
# dla ZSP Sobolew
@@ -10,11 +10,106 @@
#
"""
-def read():
- with open('.\config.cfg') as cfg:
- cfg = cfg.read().split('\n')
- settings = []
- for x in cfg
-def edit():
- pass
+
+
+
+
+
+
+# ----------------------------------------- # Definicja kodów dialogowych # ------------------------------------------ #
+
+E000x01 = "Brak modułu wywołującego okna dialogowe ('dialog.py').\nPrzywróć plik. (E000x01)"
+E001x01 = ["Brak pliku konfiguracyjnego ('config.cfg').\nPrzywróć plik. (E001x01)", True]
+E002x00 = ["Bład pliku konfiguracyjnego ('config.cfg').\nNiepoprawna ilość wierszy w pliku\nPrzywróć plik. (E002x00)", True]
+E002x01 = ["Bład pliku konfiguracyjnego ('config.cfg').\nNiepoprawne dane w wierszu 1\nPrzywróć plik. (E002x01)", True]
+E002x02 = ["Bład pliku konfiguracyjnego ('config.cfg').\nNiepoprawne dane w wierszu 2\nPrzywróć plik. (E002x02)", True]
+
+
+
+
+
+
+
+
+
+# ----------------------------------- # Import bibliotek zewnętrznych i modułów # ------------------------------------ #
+
+# Biblioteki zewnętrzne
+import sys as SS
+
+# Moduły składowe programu
+try:
+ import dialog as MDdlg
+except ModuleNotFoundError:
+ print('Nieoczekiwany wyjatek - nie mozna wygenerowac okna dialogowego bledu\n\nBŁĄD KRYTYCZNY!\n%s') %E000x01
+ wait = input('Naciśnij ENTER aby zakończyć')
+ SS.exit(0)
+
+
+
+
+
+
+
+
+# --------------------------------------------------- # Funkcje # ---------------------------------------------------- #
+
+# Wewnętrzna funkcja sprawdzająca błędy pliku konfiguracyjnego
+def CheckConfig(settings):
+ # Ilość wierszy
+ try:
+ if len(settings) != 2:
+ error = int('x')
+ except ValueError:
+ MDdlg.Err(E002x00)
+
+ # Linia 1 (0/1)
+ try:
+ check = int(settings[0])
+ if 0 > check > 1:
+ error = int('x')
+ except ValueError:
+ MDdlg.Err(E002x01)
+
+ # Linia 2 (utf-8)
+ DostepneKodowanieWyjsciowe = ['utf-8']
+ try:
+ if settings[1] not in DostepneKodowanieWyjsciowe:
+ error = int('x')
+ except ValueError:
+ MDdlg.Err(E002x02)
+
+
+
+# Odczytywanie ustawień z pliku konfiguracyjnego
+def read():
+ try:
+ check = open('.\config.cfg')
+ except FileNotFoundError:
+ MDdlg.Err(E001x01)
+ else:
+ with open('.\config.cfg', 'r') as cfg:
+ config = cfg.read().split('\n')
+ settings = []
+ for x in config:
+ settings.append(x.split(': ')[1])
+ CheckConfig(settings)
+ return settings
+
+
+
+# Zapis ustawień do pliku konfiguracyjnego
+def edit(settings):
+ CheckConfig(settings)
+ try:
+ check = open('.\config.cfg')
+ except FileNotFoundError:
+ MDdlg.Err(E001x01)
+ else:
+ SettingsToSave = []
+ SettingsToSave.append('Ciemny motyw(0/1): ' + str(settings[0]) + '\n')
+ SettingsToSave.append('Kodowanie wyjsciowe: ' + str(settings[1]))
+ with open('.\config.cfg', 'w') as cfg:
+ for x in SettingsToSave:
+ cfg.write(x)
\ No newline at end of file
diff --git a/components/main.py b/components/main.py
index f84fc20..b686366 100644
--- a/components/main.py
+++ b/components/main.py
@@ -1,6 +1,6 @@
"""
# GeneratorCSV
-# Wersja 4.0: UC 1
+# Wersja 4.0: UC 2
# by Mateusz Skoczek
# luty 2019 - grudzień 2019
# dla ZSP Sobolew
@@ -14,6 +14,15 @@
+# -------------------------------------------- # Informacje o programie # -------------------------------------------- #
+
+Nazwa = 'GeneratorCSV'
+Wersja = '4.0: UC 2'
+
+
+
+
+
@@ -21,6 +30,7 @@
E000x01 = "Brak modułu wywołującego okna dialogowe ('dialog.py').\nPrzywróć plik. (E000x01)"
E000x02 = ["Brak modułu zarządzającego plikiem konfiguracyjnym ('load_config.py').\nPrzywróć plik. (E000x02)", True]
+E001x02 = ["Brak pliku instrukcji ('instruction.txt').\nPrzywróć plik. (E001x02)", False]
@@ -35,6 +45,8 @@ E000x02 = ["Brak modułu zarządzającego plikiem konfiguracyjnym ('load_config.
import os as OS
import sys as SS
+
+
# Moduły składowe programu
try:
import dialog as MDdlg
@@ -42,11 +54,14 @@ except ModuleNotFoundError:
print('Nieoczekiwany wyjatek - nie mozna wygenerowac okna dialogowego bledu\n\nBŁĄD KRYTYCZNY!\n%s') %E000x01
wait = input('Naciśnij ENTER aby zakończyć')
SS.exit(0)
+
try:
import load_config as MDlcg
except ModuleNotFoundError:
MDdlg.Err(E000x02)
+
+
# Biblioteki zewnętrzne interfejsu graficznego
from tkinter import filedialog as TKfld
import tkinter as TK
@@ -61,125 +76,201 @@ import tkinter as TK
# ------------------------------------- # Uruchomienie interfejsu graficznego # -------------------------------------- #
-# Informacje o programie
-Nazwa = 'GeneratorCSV'
-Wersja = '4.0' #Todo wersja
-
# Zmienne globalne środowiska graficznego
-
-CiemnyMotyw =
+if int(MDlcg.read()[0]) == 1:
+ CiemnyMotyw = True
+else:
+ CiemnyMotyw = False
SzerokoscOpisu = 17
-SzerokoscPola = 91
+SzerokoscPola = 122
+
+
+
+# Kolorystyka okna
+if CiemnyMotyw:
+ PaletaBarw = ['#1F1F1F', '#191919', '#B8B8B8', '#FFFFFF', '#404040', '#FFFFFF', '#1F1F1F', 1]
+else:
+ PaletaBarw = ['#F0F0F0', '#D4D4D4', '#000000', '#000000', '#A6A6A6', '#000000', '#FFFFFF', 2]
+
+B_tlo = PaletaBarw[0]
+B_tytultlo = PaletaBarw[1]
+B_tytultext = PaletaBarw[2]
+B_text = PaletaBarw[3]
+B_przycisktlo = PaletaBarw[4]
+B_przycisktext = PaletaBarw[5]
+B_entrytlo = PaletaBarw[6]
+B_framewielkosc = PaletaBarw[7]
+
+
+
def settings():
SettingsWindow = TK.Tk()
- SettingsWindow.title('ustawienia')
+ SettingsWindow.title('Ustawienia programu')
+ SettingsWindow.resizable(width = False, height = False)
+ SettingsWindow.configure()
+
SettingsWindow.mainloop()
+
+
def main():
# Tworzenie okna głównego
MainWindow = TK.Tk()
MainWindow.title(Nazwa + ' ' + Wersja)
MainWindow.resizable(width = False, height = False)
-
- Tytul = TK.Label(MainWindow, text='GeneratorCSV', font=('Segoe UI Semilight', 20), borderwidth=7, justify='center',
- bg='Gainsboro', width=47)
- Tytul.grid(row=0)
-
- MainWindow.mainloop()
-main()
-
-"""
-def gui():
- # Tworzenie okna
- OknoGlowne = TK.Tk()
- OknoGlowne.title('GeneratorCSV')
- OknoGlowne.resizable(width=False, height=False)
-
- # Nazwa programu
+ MainWindow.configure(background = B_tlo)
- # Tworzenie frame dla ścieżek plików do importu
- Ramka1 = TK.LabelFrame(OknoGlowne, text='Pliki do importu zawierające dane')
- Ramka1.grid(row=1)
+ # Tytul
+ Tytul = TK.Label(MainWindow)
+ Tytul.config(text = Nazwa)
+ Tytul.config(width = 41)
+ Tytul.config(bg = B_tytultlo, fg = B_tytultext)
+ Tytul.config(font = ('Segoe UI Semilight', 30))
+ Tytul.grid(row = 0)
+
+
+ # Frame1 - Import
+ Ramka1 = TK.LabelFrame(MainWindow)
+ Ramka1.config(text = ' Pliki do importu zawierające dane ')
+ Ramka1.config(bg = B_tlo, fg = B_text)
+ Ramka1.config(borderwidth = B_framewielkosc)
+ Ramka1.grid(row = 1)
+
# Ścieżka pliku do importu 1
- wiersz1 = 0
+ wiersz = 1
text1 = TK.StringVar()
- OpisPola1 = TK.Label(Ramka1, text='Plik z danymi (1)', justify='left', width=SzerokoscOpisu)
- OpisPola1.grid(row=wiersz1, column=0)
- Pole1 = TK.Entry(Ramka1, textvariable=text1, width=SzerokoscPola)
- Pole1.grid(row=wiersz1, column=1)
+
+ OpisPola1 = TK.Label(Ramka1)
+ OpisPola1.config(text = 'Plik z danymi (1)')
+ OpisPola1.config(width = SzerokoscOpisu)
+ OpisPola1.config(bg = B_tlo, fg = B_text)
+ OpisPola1.grid(row = wiersz, column = 0)
+
+ Pole1 = TK.Entry(Ramka1)
+ Pole1.config(textvariable = text1)
+ Pole1.config(width = SzerokoscPola)
+ Pole1.config(bg = B_entrytlo, fg = B_text)
+ Pole1.grid(row = wiersz, column = 1)
def Browse1_Dialog():
- Browse1.filename = TKfld.askopenfilename(initialdir="/", title="Wybierz plik",
- filetypes=(("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*")))
+ Browse1.filename = TKfld.askopenfilename(initialdir = "/", title = "Wybierz plik do importu", filetypes = (("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*")))
Pole1.delete(0, 'end')
Pole1.insert(0, Browse1.filename)
- Browse1 = TK.Button(Ramka1, text='...', command=Browse1_Dialog, background='silver', relief='flat')
- Browse1.grid(row=wiersz1, column=2, padx=5, pady=3)
+ Browse1 = TK.Button(Ramka1)
+ Browse1.config(text = '...')
+ Browse1.config(command = Browse1_Dialog)
+ Browse1.config(bg = B_przycisktlo, fg = B_przycisktext, relief='flat', activebackground = B_przycisktlo)
+ Browse1.grid(row = wiersz, column = 2, padx=5, pady=3)
+
# Ścieżka pliku do importu 2
- wiersz2 = 1
+ wiersz = 2
text2 = TK.StringVar()
- OpisPola2 = TK.Label(Ramka1, text='Plik z danymi (2)', justify='left', width=SzerokoscOpisu)
- OpisPola2.grid(row=wiersz2, column=0)
- Pole2 = TK.Entry(Ramka1, textvariable=text2, width=SzerokoscPola)
- Pole2.grid(row=wiersz2, column=1)
+
+ OpisPola2 = TK.Label(Ramka1)
+ OpisPola2.config(text = 'Plik z danymi (2)')
+ OpisPola2.config(width = SzerokoscOpisu)
+ OpisPola2.config(bg = B_tlo, fg = B_text)
+ OpisPola2.grid(row = wiersz, column = 0)
+
+ Pole2 = TK.Entry(Ramka1)
+ Pole2.config(textvariable = text2)
+ Pole2.config(width = SzerokoscPola)
+ Pole2.config(bg = B_entrytlo, fg = B_text)
+ Pole2.grid(row = wiersz, column = 1)
def Browse2_Dialog():
- Browse2.filename = TKfld.askopenfilename(initialdir="/", title="Wybierz plik",
- filetypes=(("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*")))
+ Browse2.filename = TKfld.askopenfilename(initialdir = "/", title = "Wybierz plik do importu", filetypes = (("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*")))
Pole2.delete(0, 'end')
Pole2.insert(0, Browse2.filename)
- Browse2 = TK.Button(Ramka1, text='...', command=Browse2_Dialog, background='silver', relief='flat')
- Browse2.grid(row=wiersz2, column=2, padx=5, pady=3)
+ Browse2 = TK.Button(Ramka1)
+ Browse2.config(text = '...')
+ Browse2.config(command = Browse1_Dialog)
+ Browse2.config(bg = B_przycisktlo, fg = B_przycisktext, relief = 'flat', activebackground = B_przycisktlo)
+ Browse2.grid(row = wiersz, column = 2, padx = 5, pady = 3)
+
# Ścieżka pliku do importu 3
- wiersz3 = 2
+ wiersz = 3
text3 = TK.StringVar()
- OpisPola3 = TK.Label(Ramka1, text='Plik z danymi (3)', justify='left', width=SzerokoscOpisu)
- OpisPola3.grid(row=wiersz3, column=0)
- Pole3 = TK.Entry(Ramka1, textvariable=text3, width=SzerokoscPola)
- Pole3.grid(row=wiersz3, column=1)
+
+ OpisPola3 = TK.Label(Ramka1)
+ OpisPola3.config(text = 'Plik z danymi (3)')
+ OpisPola3.config(width = SzerokoscOpisu)
+ OpisPola3.config(bg = B_tlo, fg = B_text)
+ OpisPola3.grid(row = wiersz, column = 0)
+
+ Pole3 = TK.Entry(Ramka1)
+ Pole3.config(textvariable = text3)
+ Pole3.config(width = SzerokoscPola)
+ Pole3.config(bg = B_entrytlo, fg = B_text)
+ Pole3.grid(row = wiersz, column = 1)
def Browse3_Dialog():
- Browse3.filename = TKfld.askopenfilename(initialdir="/", title="Wybierz plik",
- filetypes=(("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*")))
+ Browse3.filename = TKfld.askopenfilename(initialdir = "/", title = "Wybierz plik do importu", filetypes = (("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*")))
Pole3.delete(0, 'end')
Pole3.insert(0, Browse3.filename)
- Browse3 = TK.Button(Ramka1, text='...', command=Browse3_Dialog, background='silver', relief='flat')
- Browse3.grid(row=wiersz3, column=2, padx=5, pady=3)
+ Browse3 = TK.Button(Ramka1)
+ Browse3.config(text = '...')
+ Browse3.config(command = Browse1_Dialog)
+ Browse3.config(bg = B_przycisktlo, fg = B_przycisktext, relief = 'flat', activebackground = B_przycisktlo)
+ Browse3.grid(row = wiersz, column = 2, padx = 5, pady = 3)
+
# Ścieżka pliku do importu 4
- wiersz4 = 3
+ wiersz = 4
text4 = TK.StringVar()
- OpisPola4 = TK.Label(Ramka1, text='Plik z danymi (4)', justify='left', width=SzerokoscOpisu)
- OpisPola4.grid(row=wiersz4, column=0)
- Pole4 = TK.Entry(Ramka1, textvariable=text3, width=SzerokoscPola)
- Pole4.grid(row=wiersz4, column=1)
+
+ OpisPola4 = TK.Label(Ramka1)
+ OpisPola4.config(text = 'Plik z danymi (4)')
+ OpisPola4.config(width = SzerokoscOpisu)
+ OpisPola4.config(bg = B_tlo, fg = B_text)
+ OpisPola4.grid(row = wiersz, column = 0)
+
+ Pole4 = TK.Entry(Ramka1)
+ Pole4.config(textvariable = text4)
+ Pole4.config(width = SzerokoscPola)
+ Pole4.config(bg = B_entrytlo, fg = B_text)
+ Pole4.grid(row = wiersz, column = 1)
def Browse4_Dialog():
- Browse4.filename = TKfld.askopenfilename(initialdir="/", title="Wybierz plik",
- filetypes=(("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*")))
+ Browse4.filename = TKfld.askopenfilename(initialdir = "/", title = "Wybierz plik do importu", filetypes = (("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*")))
Pole4.delete(0, 'end')
Pole4.insert(0, Browse4.filename)
- Browse4 = TK.Button(Ramka1, text='...', command=Browse4_Dialog, background='silver', relief='flat')
- Browse4.grid(row=wiersz4, column=2, padx=5, pady=3)
+ Browse4 = TK.Button(Ramka1)
+ Browse4.config(text = '...')
+ Browse4.config(command = Browse1_Dialog)
+ Browse4.config(bg = B_przycisktlo, fg = B_przycisktext, relief = 'flat', activebackground = B_przycisktlo)
+ Browse4.grid(row = wiersz, column = 2, padx = 5, pady = 3)
- # Tworzenie frame dla plików export
- Ramka2 = TK.LabelFrame(OknoGlowne, text='Ustawienia eksportu')
- Ramka2.grid(row=2)
+
+ # Frame2 - Eksport
+ Ramka2 = TK.LabelFrame(MainWindow)
+ Ramka2.config(text = ' Ustawienia eksportu ')
+ Ramka2.config(bg = B_tlo, fg = B_text)
+ Ramka2.config(borderwidth = B_framewielkosc)
+ Ramka2.grid(row = 2)
# Ścieżka folderu do zapisu wygenerowanych plików
- text4 = TK.StringVar()
- OpisPolaExport = TK.Label(Ramka2, text='Lokalizacja', justify='left', width=SzerokoscOpisu)
+ textExport = TK.StringVar()
+
+ OpisPolaExport = TK.Label(Ramka2)
+ OpisPolaExport.config(text = 'Lokalizacja')
+ OpisPolaExport.config(width = SzerokoscOpisu)
+ OpisPolaExport.config(bg = B_tlo, fg = B_text, relief = 'flat', activebackground = B_przycisktlo)
OpisPolaExport.grid(row=0, column=0)
- PoleExport = TK.Entry(Ramka2, textvariable=text4, width=SzerokoscPola)
+
+ PoleExport = TK.Entry(Ramka2)
+ PoleExport.config(textvariable = textExport)
+ PoleExport.config(width = SzerokoscPola)
+ PoleExport.config(bg = B_entrytlo, fg = B_text)
PoleExport.grid(row=0, column=1)
def BrowseExport_Dialog():
@@ -187,34 +278,56 @@ def gui():
PoleExport.delete(0, 'end')
PoleExport.insert(0, BrowseExport.filename)
- BrowseExport = TK.Button(Ramka2, text='...', command=BrowseExport_Dialog, background='silver', relief='flat')
+ BrowseExport = TK.Button(Ramka2)
+ BrowseExport.config(text='...')
+ BrowseExport.config(command=BrowseExport_Dialog)
+ BrowseExport.config(bg = B_przycisktlo, fg = B_przycisktext, relief='flat', activebackground = B_przycisktlo)
BrowseExport.grid(row=0, column=2, padx=5, pady=3)
+
# Przycisk START
- Przycisk = TK.Button(OknoGlowne, text='START', justify='center', width=50, relief='flat', background='silver')
- command=Main
- Przycisk.grid(row=3, pady=15)
+ def PathPreprocess():
+ pass
+
+ PrzyciskSTART = TK.Button(MainWindow)
+ PrzyciskSTART.config(text = 'START')
+ PrzyciskSTART.config(command = PathPreprocess)
+ PrzyciskSTART.config(width = 50)
+ PrzyciskSTART.config(bg = B_przycisktlo, fg = B_przycisktext, relief = 'flat', activebackground = B_przycisktlo)
+ PrzyciskSTART.grid(row = 3, pady = 15)
+
# Pasek dolny
- PasekDolny = TK.LabelFrame(OknoGlowne, bd=0, background='Gainsboro')
- PasekDolny.grid(row=4)
- InfoLabel = TK.Label(PasekDolny, text='GeneratorCSV 3.0 | © Mateusz Skoczek 2019 dla ZSP Sobolew', justify='left',
- width=93, anchor='w', background='Gainsboro')
+ PasekDolny = TK.LabelFrame(MainWindow)
+ PasekDolny.config(bd = 0, bg = B_tytultlo, fg = B_tytultext)
+ PasekDolny.grid(row = 4)
+
+ InfoLabel = TK.Label(PasekDolny)
+ InfoLabel.config(text = 'GeneratorCSV 3.0 | © Mateusz Skoczek 2019 dla ZSP Sobolew')
+ InfoLabel.config(justify = 'left', anchor='w', width=107)
+ InfoLabel.config(bg = B_tytultlo, fg = B_tytultext)
InfoLabel.grid(row=0, column=0)
def InfoOpen():
try:
x = open('instrukcja.txt')
except FileNotFoundError:
- DG.err(E001x03)
+ MDdlg.Err(E001x02)
else:
OS.system("notepad instrukcja.txt")
- Przycisk = TK.Button(PasekDolny, text='Instrukcja', justify='center', foreground='blue', relief='flat',
- command=InfoOpen, background='Gainsboro')
- Przycisk.grid(row=0, column=1)
+ PrzyciskINFO = TK.Button(PasekDolny)
+ PrzyciskINFO.config(text = 'Instrukcja')
+ PrzyciskINFO.config(command = InfoOpen)
+ PrzyciskINFO.config(bg = B_przycisktlo, fg = B_przycisktext, relief = 'flat', activebackground = B_przycisktlo)
+ PrzyciskINFO.grid(row = 0, column = 1, padx = 5, pady = 5)
- TK.mainloop()
+ PrzyciskUSTAWIENIA = TK.Button(PasekDolny)
+ PrzyciskUSTAWIENIA.config(text = 'Ustawienia')
+ PrzyciskUSTAWIENIA.config(command = settings)
+ PrzyciskUSTAWIENIA.config(bg = B_przycisktlo, fg = B_przycisktext, relief = 'flat')
+ PrzyciskUSTAWIENIA.grid(row = 0, column = 2, padx = 5, pady = 5)
-gui()
-"""
+ MainWindow.mainloop()
+
+main()
\ No newline at end of file
diff --git a/config.cfg b/config.cfg
index 2e25a57..8d37a77 100644
--- a/config.cfg
+++ b/config.cfg
@@ -1,2 +1,2 @@
-Ciemny motyw: 1
-Kodowanie: utf-8
\ No newline at end of file
+Ciemny motyw(0/1): 0
+Kodowanie wyjsciowe: utf-8
\ No newline at end of file
diff --git a/generator.py b/generator.py
index 4d64128..e810ba3 100644
--- a/generator.py
+++ b/generator.py
@@ -1,6 +1,6 @@
"""
# GeneratorCSV
-# Wersja 4.0: UC 1
+# Wersja 4.0: UC 2
# by Mateusz Skoczek
# luty 2019 - grudzień 2019
# dla ZSP Sobolew
@@ -28,7 +28,7 @@ E000x00 = "Brak głównego pliku składowego programu ('main.py').\nPrzywróć p
-# ---------------------------------------- # Import bibliotek zewnętrznych # ----------------------------------------- #
+# ----------------------------------- # Import bibliotek zewnętrznych i modułów # ------------------------------------ #
import os as OS
import sys as SS