4.0 Alpha (Build 20016)

This commit is contained in:
2020-08-06 18:33:32 +02:00
Unverified
parent c5bc5654f6
commit bf5540b7ad
29 changed files with 390 additions and 1535 deletions

View File

@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/modules" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="TestRunnerService">
<option name="PROJECT_TEST_RUNNER" value="Unittests" />
</component>
</module>

View File

@@ -1,6 +0,0 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

7
.idea/misc.xml generated
View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8 (Zadanie 4)" project-jdk-type="Python SDK" />
</project>

8
.idea/modules.xml generated
View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/GeneratorCSV 3.1.iml" filepath="$PROJECT_DIR$/.idea/GeneratorCSV 3.1.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml generated
View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

114
.idea/workspace.xml generated
View File

@@ -1,114 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="a4251987-c37e-4856-aaee-adde546bed78" name="Default Changelist" comment="" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Python Script" />
</list>
</option>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="ProjectId" id="1ULHfQb5VkZDNLqAqiV5YEYWfmE" />
<component name="PropertiesComponent">
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="settings.editor.selected.configurable" value="preferences.lookFeel" />
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="RunManager">
<configuration name="generator" type="PythonConfigurationType" factoryName="Python" temporary="true">
<module name="GeneratorCSV 3.1" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/generator.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
<recent_temporary>
<list>
<item itemvalue="Python.generator" />
</list>
</recent_temporary>
</component>
<component name="SvnConfiguration">
<configuration />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="a4251987-c37e-4856-aaee-adde546bed78" name="Default Changelist" comment="" />
<created>1575129057993</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1575129057993</updated>
<workItem from="1575129059395" duration="10526000" />
<workItem from="1575190894436" duration="18504000" />
<workItem from="1575210569237" duration="2431000" />
<workItem from="1575490006287" duration="48000" />
<workItem from="1576401956701" duration="4897000" />
<workItem from="1576407152914" duration="5325000" />
<workItem from="1576412749235" duration="7110000" />
<workItem from="1576512214017" duration="18989000" />
<workItem from="1576602751700" duration="601000" />
<workItem from="1576774425640" duration="14534000" />
<workItem from="1576793801825" duration="187000" />
<workItem from="1576880469699" duration="1987000" />
<workItem from="1576916355983" duration="4227000" />
</task>
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
</component>
<component name="Vcs.Log.Tabs.Properties">
<option name="TAB_STATES">
<map>
<entry key="MAIN">
<value>
<State>
<option name="COLUMN_ORDER" />
</State>
</value>
</entry>
</map>
</option>
</component>
<component name="com.intellij.coverage.CoverageDataManagerImpl">
<SUITE FILE_PATH="coverage/GeneratorCSV_3_1$generator.coverage" NAME="generator Coverage Results" MODIFIED="1575142941417" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
<SUITE FILE_PATH="coverage/Wersja_Under_Construction$generator.coverage" NAME="generator Coverage Results" MODIFIED="1575214162661" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
<SUITE FILE_PATH="coverage/Generator_CSV$generator.coverage" NAME="generator Coverage Results" MODIFIED="1576923552814" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
</component>
</project>

BIN
assets/icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 623 B

BIN
assets/tab_icons/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
assets/tab_icons/info.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
assets/tab_icons/link.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B

BIN
assets/tab_icons/merge.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 882 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -51,4 +51,11 @@
- Zmiana nazwy pliku instrukcji na 'readme.txt' - Zmiana nazwy pliku instrukcji na 'readme.txt'
- Naprawienie przycisków filedialog - Naprawienie przycisków filedialog
- Zmiana zmiennej treści błędu na string - Zmiana zmiennej treści błędu na string
- Ulepszona obsługa wyjątków dla ładowania pliku konfiguracyjnego, formatu i 'readme.txt' - Ulepszona obsługa wyjątków dla ładowania pliku konfiguracyjnego, formatu i 'readme.txt'
4.0 Alpha (Build 20016)
- Całkowite przeprojektowanie interfejsu
- Całkowite przeprojektowanie struktury plików programu
- Przywrócenie systemu crashlogów
- Ukończenie karty 'informacje'
- Użycie skryptu instalującego automatycznie bibliotekę PIL

View File

@@ -1,7 +0,0 @@
Ciemny motyw(0/1): 1
Kodowanie wyjsciowe: utf-8
Domena: losobolew.pl
Quota: 500
Kraj: Rzeczypospolita Polska
Dlugosc liceum: 4
Dlugosc branzowej: 3

View File

@@ -1,5 +0,0 @@
K O N, I X L X
Q
<separator>
N, I X L X
Q

File diff suppressed because it is too large Load Diff

View File

View File

@@ -1,105 +0,0 @@
"""
# GeneratorCSV
# Wersja 4.0 Experimental
# by Mateusz Skoczek
# luty 2019 - grudzień 2019
# dla ZSP Sobolew
#
# Moduł wywołujący okna dialogowe
#
"""
# ----------------------------------------------- # Kody dialogowe # ------------------------------------------------- #
E = [] # Błędy
E.append(["Nie znaleziono pliku konfiguracyjnego (config.cfg).\nPrzywróć plik. (E01x0001)", True]) #0
E.append(["Błąd pliku konfiguracyjnego (config.cfg).\nNiepoprawna ilość wierszy w pliku\nPrzywróć plik. (E01x0011)", True]) #1
E.append(["Bład pliku konfiguracyjnego (config.cfg).\nNiepoprawne dane w wierszu 1\nPrzywróć plik. (E01x0021)", True]) #2
E.append(["Bład pliku konfiguracyjnego (config.cfg).\nNiepoprawne dane w wierszu 2\nPrzywróć plik. (E01x0022)", True]) #3
E.append(["Nie znaleziono pliku składowego (readme.txt)\nPrzywróć plik. (E03x0011)", False]) #4
E.append(["Nie znaleziono pliku formatu (format.fmt).\nPrzywróć plik (E02x0000)", True]) #5
E.append(["Błąd pliku formatu (format.fmt).\nNie poprawne dane w formacie uczniów.\nIlość znaczników klasy w formacie uczniów nie jest równa 1 (E02x0102)", False]) #6
E.append(["Błąd pliku formatu (format.fmt).\nNie poprawne dane w formacie uczniów.\nIlość znaczników oddziału w formacie uczniów nie jest równa 1 (E02x0103)", False]) #7
E.append(["Błąd pliku formatu (format.fmt).\nNie poprawne dane w formacie uczniów.\nIlość znaczników nazwiska w formacie uczniów nie jest równa 1 (E02x0104)", False]) #8
E.append(["Błąd pliku formatu (format.fmt).\nNie poprawne dane w formacie uczniów.\nIlość znaczników imienia w formacie uczniów nie jest równa 1 (E02x0105)", False]) #9
E.append(["Błąd pliku formatu (format.fmt).\nNie poprawne dane w formacie uczniów.\nIlość znaczników loginu w formacie uczniów nie jest równa 1 (E02x0106)", False]) #10
E.append(["Błąd pliku formatu (format.fmt).\nPusty wiersz w formacie uczniów (E02x0101).", False]) #11
E.append(["Błąd pliku formatu (format.fmt).\nPusty wiersz w formacie nauczycieli (E02x0111).", False]) #12
E.append(["Błąd pliku formatu (format.fmt).\nNie poprawne dane w formacie nauczycieli.\nIlość znaczników nazwiska w formacie nauczycieli nie jest równa 1 (E02x0112)", False]) #13
E.append(["Błąd pliku formatu (format.fmt).\nNie poprawne dane w formacie nauczycieli.\nIlość znaczników imienia w formacie nauczycieli nie jest równa 1 (E02x0113)", False]) #14
E.append(["Błąd pliku formatu (format.fmt).\nNie poprawne dane w formacie nauczycieli.\nIlość znaczników loginu w formacie nauczycieli nie jest równa 1 (E02x0114)", False]) #15
E.append(["Błąd pliku formatu (format.fmt).\nNiedozwolone znaki w formacie. (E02x0120).", False]) #16
E.append(["Bład pliku konfiguracyjnego (config.cfg).\nNiepoprawne dane w wierszu 4\nPrzywróć plik. (E01x0023)", True]) #17
E.append(["Bład pliku konfiguracyjnego (config.cfg).\nNiepoprawne dane w wierszu 6\nPrzywróć plik. (E01x0024)", True]) #18
E.append(["Bład pliku konfiguracyjnego (config.cfg).\nNiepoprawne dane w wierszu 7\nPrzywróć plik. (E01x0025)", True]) #19
E.append(["Nieznany błąd podczas ładowania pliku konfiguracyjnego (config.cfg). (E01x0000)", True]) #20
E.append(["Nieznany błąd podczas ładowania pliku formatu (format.fmt)). (E02x0000)", True]) #21
E.append(["Nieznany błąd podczas ładowania pliku składowego (readme.txt) (E03x0011)", False]) #22
I = [] # Informacje
I.append(["Pomyślnie zapisano!\nDla niektórych zmian może być wymagane ponowne uruchomienie programu", False]) #0 (I0001)
A = [] # Zapytania
A.append("Czy na pewno chcesz rozpocząć generowanie?") #0 (A0001)
A.append("Czy chcesz zapisać ustawienia?") #1 (A0002)
# ----------------------------------- # Import bibliotek zewnętrznych i modułów # ------------------------------------ #
# Biblioteki zewnętrzne
import sys as SS
# Biblioteki zewnętrzne interfejsu graficznego
from tkinter import messagebox as TKmsb
# --------------------------------------------------- # Funkcje # ---------------------------------------------------- #
# Okno dialogowe błędu
def err(ErrorIndex):
Message = 'Wystąpił błąd!\n' + E[ErrorIndex][0]
TKmsb.showerror('Błąd', Message)
if E[ErrorIndex][1]:
SS.exit(0)
# Okno dialogowe informacyjne
def inf(InfoIndex):
TKmsb.showinfo('Informacja', I[InfoIndex][0])
if I[InfoIndex][1]:
SS.exit(0)
# Okno dialogowe zapytania
def ask(AskIndex):
if TKmsb.askokcancel('Pytanie', A[AskIndex]):
return True
else:
return False

View File

@@ -1,135 +0,0 @@
"""
# GeneratorCSV
# Wersja 4.0 Experimental
# by Mateusz Skoczek
# luty 2019 - grudzień 2019
# dla ZSP Sobolew
#
# Moduł zarządzający plikiem konfiguracyjnym
#
"""
# ----------------------------------- # Import bibliotek zewnętrznych i modułów # ------------------------------------ #
# Biblioteki zewnętrzne
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: ' + str(exc))
print('Kod błędu: E00x0010')
wait = input('Naciśnij ENTER aby wyjść')
SS.exit(0)
# --------------------------------------------------- # Funkcje # ---------------------------------------------------- #
# Wewnętrzna funkcja sprawdzająca błędy pliku konfiguracyjnego
def CheckConfig(settings):
# Ilość wierszy
try:
if len(settings) != 7:
error = int('x')
except:
MDdlg.err(1)
# Linia 1 (0/1)
try:
check = int(settings[0])
if 0 > check > 1:
error = int('x')
except:
MDdlg.err(2)
# Linia 2 (utf-8)
DostepneKodowanieWyjsciowe = ['utf-8']
try:
if settings[1] not in DostepneKodowanieWyjsciowe:
error = int('x')
except:
MDdlg.err(3)
# Linia 4 (int)
try:
x = int(settings[3])
except:
MDdlg.err(17)
# Linia 6 (int)
try:
x = int(settings[5])
except:
MDdlg.err(18)
# Linia 7 (int)
try:
x = int(settings[6])
except:
MDdlg.err(19)
# Odczytywanie ustawień z pliku konfiguracyjnego
def read():
try:
check = open('.\config.cfg')
except FileNotFoundError:
MDdlg.err(0)
except:
MDdlg.err(20)
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(0)
except:
MDdlg.err(20)
else:
SettingsToSave = []
SettingsToSave.append('Ciemny motyw(0/1): ' + str(settings[0]) + '\n')
SettingsToSave.append('Kodowanie wyjsciowe: ' + str(settings[1]) + '\n')
SettingsToSave.append('Domena: ' + str(settings[2]) + '\n')
SettingsToSave.append('Quota: ' + str(settings[3]) + '\n')
SettingsToSave.append('Kraj: ' + str(settings[4]) + '\n')
SettingsToSave.append('Dlugosc liceum: ' + str(settings[5]) + '\n')
SettingsToSave.append('Dlugosc branzowej: ' + str(settings[6]))
with open('.\config.cfg', 'w') as cfg:
for x in SettingsToSave:
cfg.write(x)

View File

@@ -1,249 +0,0 @@
"""
# GeneratorCSV
# Wersja 4.0 Experimental
# by Mateusz Skoczek
# luty 2019 - grudzień 2019
# dla ZSP Sobolew
#
# Moduł zarządzający plikiem formatu
#
"""
# ----------------------------------- # Import bibliotek zewnętrznych i modułów # ------------------------------------ #
# Biblioteki zewnętrzne
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: ' + str(exc))
print('Kod błędu: E00x0010')
wait = input('Naciśnij ENTER aby wyjść')
SS.exit(0)
# --------------------------------------------------- # Funkcje # ---------------------------------------------------- #
# Wewnętrzna funkcja sprawdzająca błędy pliku formatu
def CheckFormat(Read, format):
poprawne = True
check = True
while check:
# Uczniowie
uczniowiefmt = ''
for x in format[0]:
uczniowiefmt += x
# Sprawdzanie pustych linii
try:
if format[0].count('') > 0:
error = int('x')
except:
MDdlg.err(11)
if Read:
SS.exit(0)
else:
poprawne = False
break
# Sprawdzanie ilości liter K
try:
if uczniowiefmt.count('K') != 1:
error = int('x')
except:
MDdlg.err(6)
if Read:
SS.exit(0)
else:
poprawne = False
break
# Sprawdzanie ilości liter O
try:
if uczniowiefmt.count('O') != 1:
error = int('x')
except:
MDdlg.err(7)
if Read:
SS.exit(0)
else:
poprawne = False
break
# Sprawdzanie ilości liter N
try:
if uczniowiefmt.count('N') != 1:
error = int('x')
except:
MDdlg.err(8)
if Read:
SS.exit(0)
else:
poprawne = False
break
# Sprawdzanie ilości liter I
try:
if uczniowiefmt.count('I') != 1:
error = int('x')
except:
MDdlg.err(9)
if Read:
SS.exit(0)
else:
poprawne = False
break
# Sprawdzanie ilości liter L
try:
if uczniowiefmt.count('L') != 1:
error = int('x')
except:
MDdlg.err(10)
if Read:
SS.exit(0)
else:
poprawne = False
break
# Nauczyciele
nauczycielefmt = ''
for x in format[1]:
nauczycielefmt += x
# Sprawdzanie pustych linii
try:
if format[1].count('') > 0:
error = int('x')
except:
MDdlg.err(12)
if Read:
SS.exit(0)
else:
poprawne = False
break
# Sprawdzanie ilości liter N
try:
if nauczycielefmt.count('N') != 1:
error = int('x')
except:
MDdlg.err(13)
if Read:
SS.exit(0)
else:
poprawne = False
break
# Sprawdzanie ilości liter I
try:
if nauczycielefmt.count('I') != 1:
error = int('x')
except:
MDdlg.err(14)
if Read:
SS.exit(0)
else:
poprawne = False
break
# Sprawdzanie ilości liter L
try:
if nauczycielefmt.count('L') != 1:
error = int('x')
except:
MDdlg.err(15)
if Read:
SS.exit(0)
else:
poprawne = False
break
# Sprawdzanie poprawności znaków
NiedozwoloneZnaki = ['1','2','3','4','5','6','7','8','9','0','W','E','R','T','Y','U','P','A','S','D','F','G','H','J','Z','C','V','B','M']
try:
for x in NiedozwoloneZnaki:
if x in nauczycielefmt+uczniowiefmt:
error = int('x')
except:
MDdlg.err(16)
if Read:
SS.exit(0)
else:
poprawne = False
break
check = False
if not Read:
return poprawne
# Odczytywanie ustawień z pliku formatu
def read():
try:
check = open(r'.\format.fmt')
except FileNotFoundError:
MDdlg.err(5)
except:
MDdlg.err(21)
else:
with open(r'.\format.fmt', 'r') as fmt:
fmt = fmt.read().split('\n<separator>\n')
format = []
for x in fmt:
format.append(x.split('\n'))
CheckFormat(True, format)
return format
# Zapis ustawień do pliku formatu
def edit(format):
xformat = []
for x in format:
xformat.append(x.split('\n')[:-1])
if CheckFormat(False, xformat):
try:
check = open(r'.\format.fmt')
except FileNotFoundError:
MDdlg.err(5)
except:
MDdlg.err(21)
else:
FormatToSaveX = []
for x in xformat:
FormatToSaveX.append('\n'.join(x))
FormatToSave = FormatToSaveX[0] + '\n<separator>\n' + FormatToSaveX[1]
with open(r'.\format.fmt', 'w') as fmt:
fmt.write(FormatToSave)
return True
else:
return False

View File

@@ -1,107 +0,0 @@
Program tworzy pliki .csv potrzebne do stworzenia kont uczniów i nauczycieli na szkolnej poczcie i Office 365.
Obecnie program obsługuje tylko 4 pliki z danymi. Program tworzy pliki 'email.csv' do eksportu dla szkolnej poczty oraz 'office.csv' do eksportu dla kont office.
Obecna wersja: 3.0
Autorzy: Mateusz Skoczek
dla ZSP Sobolew
luty 2019 - grudzień 2019
Format domyślny plików z danymi:
Legenda:
X - Dane nieznaczące
Q - Pusta linia
Uczniowie:
# <Klasa> <Nazwisko>, <Imie> <X> <Login do librusa> <X>
# <Q>
# Przykład:
# 1a BS Nowak, Adam <NieznaczaceDane> 1234567u <NieznaczaceDane>
#
Nauczyciele:
# <Nazwisko>, <Imie> <X> <Login do Librusa> <X>
# <Q>
# Przykład:
# Nowak, Adam <NieznaczaceDane> 1234567 <NieznaczaceDane>
#
Format można edytować w pliku 'format.py'. Więcej info na dole.
Format domyślny pliku 'office.csv':
Uczniowie:
# <email>,<imie>,<nazwisko>,<imie nazwisko>,uczeń,<klasa>,,,,,,,,,Rzeczpospolita Polska
# Przykład:
# adam.nowak@losobolew.pl,Adam,Nowak,Adam Nowak,uczeń,1a BS,,,,,,,,,Rzeczpospolita Polska
Nauczyciele:
# <email>,<imie>,<nazwisko>,<imie nazwisko>,nauczyciel,,,,,,,,,,Rzeczpospolita Polska
# Przykład:
# adam.nowak@losobolew.pl,Adam,Nowak,Adam Nowak,nauczyciel,,,,,,,,,,Rzeczpospolita Polska
Format domyślny pliku 'email.csv':
Uczniowie:
# <email>,<haslo>,500
|
v
# <imie>.<nazwisko><znacznikklasy:rokukonczeniaszkoly + literaklasy/bs>@losobolew.pl,<loginlibrusa>:<inicjaly>,500
# Przykład:
# adam.nowak2021bs@losobolew.pl,1234567u,500
Nauczyciele:
# <email>,<haslo>,500
|
v
# <imie>.<nazwisko>@losobolew.pl,<loginlibrusa>:<inicjaly>,500
# Przykład:
# adam.nowak@losobolew.pl,1234567,500
Dalsze pojęcia:
błąd programu - błąd programu objawiający się komunikatem
krytyczny błąd programu - nieoczekiwany błąd programu nieobjawiający się komunikatem
Pliki:
changelog.txt
Informacje o zmianach w poszczególnych wersjach programu.
generator.py
Główny plik programu. Jakiekolwiek naruszenie jego zawartości może spowodować krytyczny błąd programu.
instrukcja.txt
Plik z instrukcją użytkowania. Usunięcie tego pliku spowoduje błąd programu.
config.cfg
Plik zawiera ukryte ustawienia programu. Można go edytować, ale należy robić to z rozwagą. Usunięcie go spowoduje błąd programu.
1: Obsługiwane kodowania: 'utf-8', 'cp1252', 'iso-8859-1'
moduly.py
Plik zawierający moduły niezbędne do działania programu. Usunięcie pliku spowoduje błąd programu. Naruszenie jego zawartości może spowodować krytyczny błąd programu.
format.py
Plik ten jest skryptem przetwarzającym dane. W razie zmiany formatu pliku z danymi należy go edytować, lecz nie powinna tego robić osoba początkująca, gdyż błędny kod może spowodować krytyczny błąd programu lub niepożądane wyniki. Usunięcie pliku spowoduje błąd programu.

Binary file not shown.

102
src/vars.py Normal file
View File

@@ -0,0 +1,102 @@
"""
# Generator CSV
# 4.0 Experimental
# by Mateusz Skoczek
# styczeń 2019 - luty 2020
# dla ZSP Sobolew
#
# Zmienne
#
"""
# ----------------------- # Informacje o programie # ------------------------ #
class prgInfo:
name = 'Generator CSV' # Nazwa programu
school = 'ZSP Sobolew' # Nazwa szkoły
version = '4.0 Experimental' # Wersja programu
years = '2019 - 2020' # Lata pracy na programem
authors = ['Mateusz Skoczek'] # Autorzy
# ------------------- # Zmienne środowiska graficznego # -------------------- #
class guiVars:
# Wymiary
class dimension:
# Karty
iconTab = 20 # Wielkość ikon w kartach
borderTab = 0 # Szerokość ramki kart
iconPaddingTab = 8 # Margines kart
tabWindowBorderWidth = 0 # Szerokość ramki okna kart
# Nagłówki kart
tabHeaderHeight = 8 # Wysokość nagłówka
tabHeaderWidth = 80 # Szerokość nagłówka
# Informacje
programIconInInfo = 100 # Szerokość/wysokość ikony
programIconInInfoPlace = 150 # Wysokość kontrolki zawierającej ikonę
separator1Height = 2 # Wysokość separator1
separator2Height = 1 # Wysokość separator2
separator3Height = 4 # Wysokość separator3
# Kolory
class color:
# Głowne
mainBG = '#21242D' # Głowne tło
# Karty
unselectedTabBG = '#21242D' # Niewybrana karta
selectedTabBG = '#333842' # Wybrana karta
# Nagłowki kart
headerBG = '#282C34' # Tło
headerText = '#C0C0C0' # Tekst
# Grafika
class image:
# Ikona programu
programIcon = 'assets/icon.ico'
programIconOther = 'assets/other_images/icon.png'
# Ikony kart
iconTab = 'assets/tab_icons/icon.png'
generateTab = 'assets/tab_icons/generate.png'
linkTab = 'assets/tab_icons/link.png'
mergeTab = 'assets/tab_icons/merge.png'
settingsTab = 'assets/tab_icons/settings.png'
infoTab = 'assets/tab_icons/info.png'
# Czcionki
class fonts:
# Główne
tabHeader = ['Segoe UI', 12] # Nagłowki
# Informacje
info1 = ['Segoe UI'] # Czcionka
info1.append(20) # Wielkość tekstu - Nazwa programu
info1.append(10) # Wielkość tekstu - Wersja programu
info1.append(8) # Wielkość tekstu - Copyright
info1.append(8) # Wielkość tekstu - Autorzy
# Inne
class other:
# Ustawienia okna
windowHeightResize = False # Rozszerzanie okna w pionie
windowWidthResize = False # Rozszerzanie okna w poziomie
# Ustawienia kart
tabPosition = 'wn' # Pozycja kart