Files
GeneratorCSV/generator.py

305 lines
11 KiB
Python

"""
# Generator CSV
# 4.0 Experimental
# by Mateusz Skoczek
# styczeń 2019 - luty 2020
# dla ZSP Sobolew
#
# Główny plik programu
#
"""
# -------------------- # Import bibliotek zewnętrznych # -------------------- #
# Biblioteki główne
import os as OS
import sys as SS
import time as TM
# Framework i inne biblioteki interfejsu graficznego
import tkinter as TK
from tkinter import ttk as TKttk
from tkinter import filedialog as TKfld
try:
from PIL import ImageTk as PLitk
from PIL import Image as PLimg
except ModuleNotFoundError:
OS.system("python -m pip install pip")
OS.system("python -m pip install Pillow")
OS.system("cls")
from PIL import ImageTk as PLitk
from PIL import Image as PLimg
# ------------------ # Import plików składowych programu # ------------------ #
# Funkcja tworząca plik zawierający logi błędu
def excpt(filename, importingFilename, errorcode, exceptInfo):
filepath = './crashlogs/crash_' + str(TM.localtime()[2]) + str(TM.localtime()[1]) + str(TM.localtime()[0]) + str(TM.localtime()[3]) + str(TM.localtime()[4]) + str(TM.localtime()[5]) + '.txt'
try:
OS.mkdir('./crashlogs')
except:
pass
crashfile = open(filepath, 'w')
crashfile.write('CRASH!\n')
crashfile.write('An error occurred while loading the component file: %s\n' % importingFilename)
crashfile.write('In file: %s\n' % filename)
crashfile.write('%s\n' % exceptInfo)
crashfile.write('Errorcode: %s' % errorcode)
crashfile.close()
SS.exit(0)
# vars.py
try:
from src.vars import prgInfo as SCvar_inf
from src.vars import guiVars as SCvar_gui
except Exception as exceptInfo:
excpt('generator.py', 'variables.py', 'E000000', exceptInfo) #TODO Kod
# -------------------------------- # Okno # --------------------------------- #
# Budowa okna
def gui():
# Ustawienia okna
root = TK.Tk()
root.title(SCvar_inf.name + " " + SCvar_inf.version)
root.resizable(width = SCvar_gui.other.windowWidthResize, height = SCvar_gui.other.windowHeightResize)
root.configure(bg = SCvar_gui.color.mainBG)
root.iconbitmap(SCvar_gui.image.programIcon)
# Motyw
TKttk.Style().theme_create("main", parent = "alt", settings = {
"mainMenu.TNotebook":{
"configure": {
"background": SCvar_gui.color.mainBG,
"tabposition": SCvar_gui.other.tabPosition,
"borderwidth": SCvar_gui.dimension.tabWindowBorderWidth,
}
},
"mainMenu.TNotebook.Tab":{
"configure": {
"background": SCvar_gui.color.unselectedTabBG,
"borderwidth": SCvar_gui.dimension.borderTab,
"padding": SCvar_gui.dimension.iconPaddingTab,
},
"map": {
"background": [("selected", SCvar_gui.color.selectedTabBG), ("disabled", SCvar_gui.color.headerBG)],
}
}
})
TKttk.Style().theme_use("main")
# Menu główne
mainMenu = TKttk.Notebook(root)
mainMenu.config(style = "mainMenu.TNotebook")
mainMenu.grid(row = 1)
# TAB1 - Ikona
iconTab = TK.Frame(mainMenu)
iconTab.config(background = SCvar_gui.color.mainBG)
iconTabImg = PLimg.open(SCvar_gui.image.iconTab)
iconTabImg = iconTabImg.resize((SCvar_gui.dimension.iconTab, SCvar_gui.dimension.iconTab), PLimg.ANTIALIAS)
iconTabImg = PLitk.PhotoImage(iconTabImg)
mainMenu.add(iconTab, image = iconTabImg, state = TK.DISABLED)
# TAB2 - Generowanie plików
generateTab = TK.Frame(mainMenu)
generateTab.config(background = SCvar_gui.color.mainBG)
generateTabImg = PLimg.open(SCvar_gui.image.generateTab)
generateTabImg = generateTabImg.resize((SCvar_gui.dimension.iconTab, SCvar_gui.dimension.iconTab), PLimg.ANTIALIAS)
generateTabImg = PLitk.PhotoImage(generateTabImg)
mainMenu.add(generateTab, image = generateTabImg)
# TAB3 - Dołącz do pliku
linkTab = TK.Frame(mainMenu)
linkTab.config(background = SCvar_gui.color.mainBG)
linkTabImg = PLimg.open(SCvar_gui.image.linkTab)
linkTabImg = linkTabImg.resize((SCvar_gui.dimension.iconTab, SCvar_gui.dimension.iconTab), PLimg.ANTIALIAS)
linkTabImg = PLitk.PhotoImage(linkTabImg)
mainMenu.add(linkTab, image = linkTabImg)
# TAB4 - Łączenie plików
mergeTab = TK.Frame(mainMenu)
mergeTab.config(background = SCvar_gui.color.mainBG)
mergeTabImg = PLimg.open(SCvar_gui.image.mergeTab)
mergeTabImg = mergeTabImg.resize((SCvar_gui.dimension.iconTab, SCvar_gui.dimension.iconTab), PLimg.ANTIALIAS)
mergeTabImg = PLitk.PhotoImage(mergeTabImg)
mainMenu.add(mergeTab, image = mergeTabImg)
# TAB5 - Ustawienia
settingsTab = TK.Frame(mainMenu)
settingsTab.config(background = SCvar_gui.color.mainBG)
settingsTabImg = PLimg.open(SCvar_gui.image.settingsTab)
settingsTabImg = settingsTabImg.resize((SCvar_gui.dimension.iconTab, SCvar_gui.dimension.iconTab), PLimg.ANTIALIAS)
settingsTabImg = PLitk.PhotoImage(settingsTabImg)
mainMenu.add(settingsTab, image = settingsTabImg)
# TAB6 - Informacje
infoTab = TK.Frame(mainMenu)
infoTab.config(background = SCvar_gui.color.mainBG)
infoTabImg = PLimg.open(SCvar_gui.image.infoTab)
infoTabImg = infoTabImg.resize((SCvar_gui.dimension.iconTab, SCvar_gui.dimension.iconTab), PLimg.ANTIALIAS)
infoTabImg = PLitk.PhotoImage(infoTabImg)
mainMenu.add(infoTab, image = infoTabImg)
# TAB2
tab2Label = TK.Label(generateTab)
tab2Label.config(text = 'GENEROWANIE PLIKÓW CSV')
tab2Label.config(font = (SCvar_gui.fonts.tabHeader[0], SCvar_gui.fonts.tabHeader[1]))
tab2Label.config(bg = SCvar_gui.color.headerBG)
tab2Label.config(fg = SCvar_gui.color.headerText)
tab2Label.config(bd = SCvar_gui.dimension.tabHeaderHeight)
tab2Label.config(width = SCvar_gui.dimension.tabHeaderWidth)
tab2Label.grid(row = 0)
# TAB3
tab3Label = TK.Label(linkTab)
tab3Label.config(text = 'DOŁĄCZANIE DO PLIKU CSV')
tab3Label.config(font = (SCvar_gui.fonts.tabHeader[0], SCvar_gui.fonts.tabHeader[1]))
tab3Label.config(bg = SCvar_gui.color.headerBG)
tab3Label.config(fg = SCvar_gui.color.headerText)
tab3Label.config(bd = SCvar_gui.dimension.tabHeaderHeight)
tab3Label.config(width = SCvar_gui.dimension.tabHeaderWidth)
tab3Label.grid(row = 0)
# TAB4
tab4Label = TK.Label(mergeTab)
tab4Label.config(text = 'ŁĄCZENIE PLIKÓW CSV')
tab4Label.config(font = (SCvar_gui.fonts.tabHeader[0], SCvar_gui.fonts.tabHeader[1]))
tab4Label.config(bg = SCvar_gui.color.headerBG)
tab4Label.config(fg = SCvar_gui.color.headerText)
tab4Label.config(bd = SCvar_gui.dimension.tabHeaderHeight)
tab4Label.config(width = SCvar_gui.dimension.tabHeaderWidth)
tab4Label.grid(row = 0)
# TAB5
tab5Label = TK.Label(settingsTab)
tab5Label.config(text = 'USTAWIENIA')
tab5Label.config(font = (SCvar_gui.fonts.tabHeader[0], SCvar_gui.fonts.tabHeader[1]))
tab5Label.config(bg = SCvar_gui.color.headerBG)
tab5Label.config(fg = SCvar_gui.color.headerText)
tab5Label.config(bd = SCvar_gui.dimension.tabHeaderHeight)
tab5Label.config(width = SCvar_gui.dimension.tabHeaderWidth)
tab5Label.grid(row = 0)
# TAB6
tab6Label = TK.Label(infoTab)
tab6Label.config(text = 'INFORMACJE')
tab6Label.config(font = (SCvar_gui.fonts.tabHeader[0], SCvar_gui.fonts.tabHeader[1]))
tab6Label.config(bg = SCvar_gui.color.headerBG)
tab6Label.config(fg = SCvar_gui.color.headerText)
tab6Label.config(bd = SCvar_gui.dimension.tabHeaderHeight)
tab6Label.config(width = SCvar_gui.dimension.tabHeaderWidth)
tab6Label.grid(row = 0)
# Separator1
separator1 = TK.Label(infoTab)
separator1.config(bg = SCvar_gui.color.mainBG)
separator1.config(height = SCvar_gui.dimension.separator1Height)
separator1.grid(row = 1)
# Ikona
programIcon = PLimg.open(SCvar_gui.image.programIconOther)
programIcon = programIcon.resize((SCvar_gui.dimension.programIconInInfo, SCvar_gui.dimension.programIconInInfo), PLimg.ANTIALIAS)
programIcon = PLitk.PhotoImage(programIcon)
programIconPlace = TK.Label(infoTab)
programIconPlace.config(image = programIcon)
programIconPlace.config(background = SCvar_gui.color.mainBG)
programIconPlace.config(height = SCvar_gui.dimension.programIconInInfoPlace)
programIconPlace.grid(row = 2)
# Nazwa programu
programName = TK.Label(infoTab)
programName.config(text = SCvar_inf.name)
programName.config(font = (SCvar_gui.fonts.info1[0], SCvar_gui.fonts.info1[1]))
programName.config(background = SCvar_gui.color.mainBG)
programName.config(foreground = SCvar_gui.color.headerText)
programName.grid(row = 3)
# Wersja programu
programVersion = TK.Label(infoTab)
programVersion.config(text = 'Wersja ' + SCvar_inf.version)
programVersion.config(font = (SCvar_gui.fonts.info1[0], SCvar_gui.fonts.info1[2]))
programVersion.config(background = SCvar_gui.color.mainBG)
programVersion.config(foreground = SCvar_gui.color.headerText)
programVersion.grid(row = 4)
# Separator2
separator2 = TK.Label(infoTab)
separator2.config(bg = SCvar_gui.color.mainBG)
separator2.config(height = SCvar_gui.dimension.separator2Height)
separator2.grid(row = 5)
# Copyright
copyrightInfo = TK.Label(infoTab)
copyrightInfo.config(text = '© ' + SCvar_inf.years)
copyrightInfo.config(font = (SCvar_gui.fonts.info1[0], SCvar_gui.fonts.info1[3]))
copyrightInfo.config(background = SCvar_gui.color.mainBG)
copyrightInfo.config(foreground = SCvar_gui.color.headerText)
copyrightInfo.grid(row = 6)
# Autorzy
authors = ''
for x in SCvar_inf.authors:
authors += (x + '\n')
authors += ('dla ' + SCvar_inf.school)
authorsInfo = TK.Label(infoTab)
authorsInfo.config(text = authors)
authorsInfo.config(font = (SCvar_gui.fonts.info1[0], SCvar_gui.fonts.info1[4]))
authorsInfo.config(background = SCvar_gui.color.mainBG)
authorsInfo.config(foreground = SCvar_gui.color.headerText)
authorsInfo.grid(row = 7)
# Separator3
separator3 = TK.Label(infoTab)
separator3.config(bg = SCvar_gui.color.mainBG)
separator3.config(height = SCvar_gui.dimension.separator3Height)
separator3.grid(row = 8)
# Mainloop
root.mainloop()
# Inicjacja okna
gui()