Aby móc uruchomić aplikację w wersji developerskiej należy pobrać Pythona oraz wymagane biblioteki (wymienione w sekcji 'generator.pyw - Import bibliotek')

Biblioteki główne

W tej sekcji importowane są wszystkie biblioteki niezwiązane z interfejsem graficznych


Biblioteki interfejsu graficznego

W tej sekcji importowane są wszystkie biblioteki związane z interfejsem graficznym

Informacje o programie

programName - Zmienna definująca nazwę programu
programVersion - Zmienna definiująca główną wersję programu
programVersionStage - Zmienna definiująca etap rozwoju programu. Wersja stabilna definiowana jest przez pusty string
programVersionBuild - Zmienna definiująca numer buildu programu. Zapisany jest on w formacie '[ostatnie dwie cyfry roku][numer dnia w roku]'
programCustomer - Zmienna definiująca nazwę organizacji zlecającej stworzenie programu
programAuthors - Lista zawierająca nazwy osób rozwijających program.
programToW - Lista zawierająca informacje na temat czasu rozwoju programu. Format: ['miesiąc rozpoczęcia prac', 'rok rozpoczęcia prac', 'aktualny dla rozwoju danej wersji miesiąc', 'aktualny dla rozwoju danej wersji rok']


Dozwolone kodowanie plików

allowedCoding - Lista zawierająca wspierane kodowania plików. Są one wyświetlane w rozwijanych listach wyboru kodowania pliku.


Dozwolone znaki

allowedCharactersInSeparator - Lista zawierająca znaki które można wpisać w pola dotyczące separatorów osób, linii i danych


Katalog APPDATA

appdataPath - zmienna definiująca ścieżkę do folderu %appdata%

Lista komunikatów

Słownik MSGlist zawiera listę komunikatów. Format: '[kod dialogowy]' : '[komunikat]'. Kod dialogowy składa się z [jednoznakowego znacznika rodzaju okna dialogowego][czterocyfrowego numeru komunikatu]


Rodzaje okien dialogowych:


Funkcja odpowiedzialna za wywoływanie komunikatów dialogowych

Wywoływanie funkcji: MSG([kod dialogowy],[True - Zakończ działanie programu po zamknięciu okna dialogowego/False - Kontynuuj działanie programu po zamknięciu okna dialogowego],[dodatkowe informacje wyświetlane w komunikacie - opcjonalnie])

try:
    optionalInfo[0]
except:
    optionalInfo = ['']
Sprawdza czy zostały wpisane 'dodatkowe informacje wyświetlane w komunikacie' i jeżeli nie, definiuje listę, w której znajduje się pusty string (ma to na celu uniknięcia błędu podczas próby wywołania dodatkowych informacji przez dalszą część funkcji)

if code[0] == 'E/I/W':
    TKmsb.showerror/showinfo/showwarning('
[tytuł komunikatu]', '%s\n%s' % (MSGlist[code], optionalInfo[0]))
Wywoływanie danego rodzaju komunikatu na podstawie jednoznakowego znacznika rodzaju okna dialogowego.

if terminate:
    SS.exit(0)
Zakończenie działania programu po zamknięciu okna dialogowego, jeżeli została ustawiona opdowiednia opcja.

elif code[0] == 'A':
    if TKmsb.askokcancel('Pytanie', '%s\n%s' % (MSGlist[code], optionalInfo[0])):
        return True
    else:
        return False
Funkcja zwraca wartość boolean w przypadku wywołania komunikatu zapytania

Klasa checkAppdata odpowiedzialna jest za sprawdzenie poprawności i, w razie potrzeby, doprowadzenie go do stanu poprawności.

Główna funkcja programu

1. Czy w folderze %appdata% istnieje folder programu (Generator CSV)?
Jeżeli nie istnieje, uruchamiana jest funckja __buildAppdata (odpowiedzialna za zbudowanie całości katalogu programu).
2. Czy w folderze programu istnieje plik 'version' (przechowuje on numer buildu programu, w którym został zbudowany katalog programu)?
Jeżeli nie istnieje, uruchamiane jest okno dialogowe zapytania z pytaniem czy pozwolić na zresetowanie katalogu programu i kontynuować ładowanie programu
3. Czy numer buildu programu w pliku 'version' jest zgodny z numerem buildu zawartym w zmiennej VAR.programVersionBuild
Jeżeli nie, uruchamiane jest okno dialogowe zapytania z pytaniem czy pozwolić na zresetowanie katalogu programu i kontynuować ładowanie programu
Jeżeli tak, sprawdzane są poszczególne pliki i foldery które powinny być zawarte w folderze, i jeżeli któryś plik/folder nie znajduje się w folderze, wywołuje się funkcje mające na celu przywrócenie/utworzenie tych plików/folderów (odpowiednio: __restoreCFG dla plików konfiguracyjnych, __createFormatPresetsDir dla folderu przechowującego format presety)


Budowanie katalogu programu (__buildAppdata)

Funkcja ta, jest odpowiedzialna za zbudowanie całości katalogu programu w folderze %appdata%.
1. Tworzenie katalogu 'Generator CSV'
2. Tworzenie pliku 'version' i zapisanie w nim numeru buildu.
3. Inicjacja funkcji __restoreCFG (w celu skopiowania pliku 'config.cfg' z głównego katalogu programu do katalogu 'Generator CSV' w folderze %appdata%).
4. Inicjacja funkcji __restoreCFG (w celu skopiowania pliku 'style.cfg' z głównego katalogu programu do katalogu 'Generator CSV' w folderze %appdata%).
5. Inicjacja funkcji __createFormatPresetsDir (w celu stworzenia folderu 'format-presets' przechowującego format presety)


Resetowanie katalogu programu (__resetAppdata)

Funkcja ta, jest odpowiedzialna za przywrócenie katalogu programu w folderze %appdata% do stanu podstawowego oraz stworzenie kopii zapasowej starego katalogu.
1. W przypadku gdy w katalogu istnieje jeszcze starsza kopia zapasowa folderu, kopia ta jest usuwana.
2. Nazwa katalogu programu jest zmieniana na taką z dopiskiem '_old'.
3. Inicjacja funkcji __buildAppdata w celu zbudowania nowego katalogu programu
4. Skopiowanie katalogu 'Generator CSV_old' do nowego katalogu 'Generator CSV'


Przywracanie plików konfiguracyjnych (__restoreCFG)

Funkcja ta, jest odpowiedzialna za skopiowanie pliku konfiguracyjnego (.cfg) o danej nazwie z głównego katalogu programu do katalogu programu w folderze %appdata%


Tworzenie katalogu przechowującego format presety (__createFormatPresetsDir)

Funkcja ta, jest odpowiedzialna za utworzenie folderu 'format-presets', przechowującego format presety, w katalogu programu w folderze %appdata%

Klasa CFG odpowiedzialna jest za zarządzanie plikiem konfiguracyjnym 'config.cfg'


Odczytywanie pojedyńczej zmiennej z pliku (R)

Funkcja ta, jest odpowiedzialna za odczytanie zawartości danego recordu i sprawdzenie jego poprawności
1. Inicjacja funkcji __checkIfFileExist w celu sprawdzenia czy plik 'config.cfg' istnieje
2. Zczytanie i zapisanie wszystkich danych z pliku 'config.cfg' do słownika content w formacie: 'nazwa zmiennej' : ['zmienna', 'typ zmiennej']
3. Inicjacja funckji __checkIfRecordExist w celu sprawdzenia czy w słowniku content znajduje się żądany record
4. Inicjacja, odpowiedniej dla typu zmiennej, funkcji mającej na celu sprawdzenie jej poprawności i jej przetworzenie
5. Funkcja zwraca wartość zmiennej.


Zapisywanie zmian w pliku (W)

Funkcja ta jest odpowiedzialna za sprawdzenie, przetworzenie i zapisanie zmian w pliku konfiguracyjnych.
1. Inicjacja funkcji __checkIfFileExist w celu sprawdzenia czy plik 'config.cfg' istnieje
2. Zczytanie i zapisanie wszystkich danych z pliku 'config.cfg' do słownika content w formacie: 'nazwa zmiennej' : ['zmienna', 'typ zmiennej']
3. Inicjacja, odpowiedniej dla typu zmiennej, funkcji mającej na celu sprawdzenie jej poprawności i jej przetworzenie, dla każdego recordu ze słownika changes
4. Nadpisanie zmiennej ze słownika content, wartością var.
5. Zapisanie zawartości słownika content w pliku 'config.cfg'
6. Funkcja zwraca True jeżeli operacja została wykonana pomyślnie lub False jeżeli wystąpił błąd


Funkcje sprawdzające istnienie

__checkIfFileExist - funkcja sprawdza czy plik istnieje i możliwe jest jego nadpisanie (w przypadku zapisu)
__checkIfRecordExist - funkcja sprawdza czy record istnieje w słowniku content


Funkcje sprawdzające poprawność recordu

Funkcje te odpowiadają za sprawdzenie poprawności zmiennej i w razie potrzeby przetwarzają ją na pożądaną formę.

Klasa GUI odpowiedzialna jest za zarządzanie plikiem konfiguracyjnym 'style.cfg'


Odczytywanie pojedyńczej zmiennej z pliku (R)

Funkcja ta, jest odpowiedzialna za odczytanie zawartości danego recordu i sprawdzenie jego poprawności
1. Inicjacja funkcji __checkIfFileExist w celu sprawdzenia czy plik 'style.cfg' istnieje
2. Zczytanie i zapisanie wszystkich danych z pliku 'style.cfg' do słownika content w formacie: 'nazwa zmiennej' : ['zmienna', 'typ zmiennej']
3. Inicjacja funkcji __checkIfRecordExist w celu sprawdzenia czy w słowniku content znajduje się żądany record
4. Inicjacja, odpowiedniej dla typu zmiennej, funkcji mającej na celu sprawdzenie jej poprawności i jej przetworzenie
Funkcja zwraca wartość zmiennej.


Funkcje sprawdzające istnienie

__checkIfFileExist - funkcja sprawdza czy plik istnieje
__checkIfRecordExist - funkcja sprawdza czy record istnieje w słowniku content


Funkcje sprawdzające poprawność recordu

Funkcje te odpowiadają za sprawdzenie poprawności zmiennej i w razie potrzeby przetwarzają ją na pożądaną formę.

Klasa FMT odpowiedzialna jest za zarządzanie plikami formatu (.fmt)


Odczytywanie pojedyńczej zmiennej z pliku (R)

Funkcja ta, jest odpowiedzialna za odczytanie zawartości danego recordu i sprawdzenie jego poprawności
1. Inicjacja funkcji __checkIfFolderExist w celu sprawdzenia czy folder 'format-presets' istnieje
2. Sprawdzenie czy podany plik formatu (preset) znajduje się w folderze 'format-presets' (funkcja getList zwraca listę plików formatu w folderze 'format-presets')
Jeżeli nie, wartość zmiennej jest wybierana ze słownika content (zawierającego podstawowe wartości zmiennych)
Jeżeli tak: 3. Zczytanie i zapisanie wszystkich danych z wybranego pliku formatu do słownika content w formacie: 'nazwa zmiennej' : ['zmienna', 'typ zmiennej']
4. Inicjacja funkcji __checkIfRecordExist w celu sprawdzenia czy w słowniku content znajduje się żądany record
5. Inicjacja, odpowiedniej dla typu zmiennej, funkcji mającej na celu sprawdzenie jej poprawności i jej przetworzenie
Funkcja zwraca wartość zmiennej.


Zapisywanie zmian w pliku (W)

Funkcja ta jest odpowiedzialna za sprawdzenie, przetworzenie i zapisanie zmian w pliku konfiguracyjnych.
1. Inicjacja funkcji __checkIfFolderExist w celu sprawdzenia czy folder 'format-presets' istnieje
2. Sprawdzenie czy podany plik formatu (preset) znajduje się w folderze 'format-presets' (funkcja getList zwraca listę plików formatu w folderze 'format-presets')
Jeżeli nie, tworzony jest słownik content z zawartością podstawową Jeżeli tak: Zczytanie i zapisanie wszystkich danych z wybranego pliku formatu do słownika content w formacie: 'nazwa zmiennej' : ['zmienna', 'typ zmiennej']
3. Inicjacja, odpowiedniej dla typu zmiennej, funkcji mającej na celu sprawdzenie jej poprawności i jej przetworzenie, dla każdego recordu ze słownika changes
4. Nadpisanie zmiennej ze słownika content, wartością var.
5. Zapisanie zawartości słownika content w pliku 'config.cfg'
6. Funkcja zwraca True jeżeli operacja została wykonana pomyślnie lub False jeżeli wystąpił błąd


Funkcja zwracająca listę presetów (getList)

Funkcja ta odpowiedzialna jest za stworzenie listy plików .fmt w folderze 'format-presets' oraz za jej zwrócenie.


Funkcje sprawdzające istnienie

__checkIfFolderExist - funkcja sprawdza czy folder 'format-presets' istnieje (inicjuje checkAppdata)
__checkIfRecordExist - funkcja sprawdza czy record istnieje w słowniku content


Funkcje sprawdzające poprawność recordu

Funkcje te odpowiadają za sprawdzenie poprawności zmiennej i w razie potrzeby przetwarzają ją na pożądaną formę.