diff --git a/.vscode/launch.json b/.vscode/launch.json index 6e0fa0a..1ded7e8 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -8,7 +8,7 @@ "name": "Python: Aktuelle Datei", "type": "python", "request": "launch", - "program": "gui.py", + "program": "run.py", "console": "integratedTerminal" } ] diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Iinstruction.py b/draw/Iinstruction.py similarity index 97% rename from Iinstruction.py rename to draw/Iinstruction.py index 3adb39d..202294f 100644 --- a/Iinstruction.py +++ b/draw/Iinstruction.py @@ -1,8 +1,10 @@ -import code_to_image as cti + + from typing import Iterable, List from abc import abstractmethod -from code_to_image import NSD_init, NSD_save +from draw import code_to_image as cti + class Iinstruction: @@ -130,6 +132,6 @@ if __name__ == "__main__": generic_instruction("hiet()"), if_instruction("shouldNiet()", [ generic_instruction("hiet()") ], [generic_instruction("hiet()")]), ]) - NSD_init(500, 500) + cti.NSD_init(500, 500) test.to_image(0, 0, 500, 500) - NSD_save("Iinstruction") \ No newline at end of file + cti.NSD_save("Iinstruction") \ No newline at end of file diff --git a/draw/__init__.py b/draw/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/code_to_image.py b/draw/code_to_image.py similarity index 100% rename from code_to_image.py rename to draw/code_to_image.py diff --git a/gui.py b/gui.py deleted file mode 100644 index 0a19c56..0000000 --- a/gui.py +++ /dev/null @@ -1,124 +0,0 @@ -from to_nassi import nassi -import PySimpleGUI as sg -import os.path - - -#sg.theme_previewer() -sg.theme('DarkGrey11') - -java_file_list_column = [ - [ - sg.Text('Java File'), - sg.In(size=(25, 1), enable_events=True, key="-JAVA FOLDER-"), - sg.FileBrowse(file_types=(('Java-File', '*.java'), ('ALL Files','*.*')), key='-JAVA FILE-'), # ('ALL Files','*.*') - ], -] - -file_list_column = [ - [ - sg.Text('Output Folder'), - sg.In(size=(25, 1), enable_events=True, key="-OUTPUT FOLDER-"), - sg.FolderBrowse(), - ], - [ - sg.Listbox( - values=[], enable_events=True, size=(40, 20), key="-OUTPUT FILE LIST-" - ) - ], -] - -diagramm_viewer_column = [ - [sg.Text("Choose your Code. ")], - [sg.Text(size=(40, 1), key="-TOUT-")], - [sg.Image(key='-IMAGE-')], -] - -buttons_column = [ - [sg.Button(button_text='Create Image', key='-CREATE-')], - [sg.Button(button_text='Donate', key='-DONATE-')], -] - - -layout = [ - [ - sg.Column(java_file_list_column), - sg.VSeparator(), - sg.Column(file_list_column), - sg.VSeparator(), - sg.Column(buttons_column), - sg.VSeparator(), - sg.Column(diagramm_viewer_column), - ] -] - -window = sg.Window('Nassi Viewer', layout, resizable=True) - -while True: - event, values = window.read() - if event == 'Exit' or event == sg.WIN_CLOSED: - break - - if event == '-OUTPUT FOLDER-': - output_path = values['-OUTPUT FOLDER-'] - try: - file_list = os.listdir(output_path) - except: - file_list = [] - fnames = [ - f - for f in file_list - if os.path.isfile(os.path.join(output_path, f)) - and f.lower().endswith(('.png', '.gif')) - ] - window['-OUTPUT FILE LIST-'].update(fnames) - elif event == '-OUTPUT FILE LIST-': - try: - filename = os.path.join( - values["-OUTPUT FOLDER-"], values["-OUTPUT FILE LIST-"][0] - ) - window["-TOUT-"].update(filename) - window["-IMAGE-"].update(filename=filename) - except: - pass - if event == '-JAVA FOLDER-': - folder = values['-JAVA FOLDER-'] - window['-JAVA FOLDER-'].update(values['-JAVA FILE-']) - - elif event == '-CREATE-': - try: - if values['-JAVA FOLDER-'] and values['-OUTPUT FOLDER-']: - try: - file_path = os.path.join( - values["-JAVA FOLDER-"], - ) - sg.popup_annoying('Succsessful created!' , title='Info') - - except: - pass - output_path = values['-OUTPUT FOLDER-'] - nassi(file_path, str(output_path)) - try: - file_list = os.listdir(output_path) - except: - file_list = [] - fnames = [ - f - for f in file_list - if os.path.isfile(os.path.join(output_path, f)) - and f.lower().endswith(('.png', '.gif')) - ] - - window['-OUTPUT FILE LIST-'].update(fnames) - - elif values['-JAVA FOLDER-']: - print('No Output') - sg.popup_annoying('No Output' , title='Error', auto_close_duration=5, auto_close=True) - elif values['-OUTPUT FOLDER-']: - print('No Input') - sg.popup_annoying('No Input' , title='Error', auto_close_duration=5, auto_close=True) - else: - sg.popup_annoying('Unexpected Case!' , title='Error') - except: - pass - -window.close() diff --git a/gui/__init__.py b/gui/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/gui/gui.py b/gui/gui.py new file mode 100644 index 0000000..ce55cef --- /dev/null +++ b/gui/gui.py @@ -0,0 +1,124 @@ +from gui.utils import nassi +import PySimpleGUI as sg +import os.path + +def gui(): + #sg.theme_previewer() + sg.theme('DarkGrey11') + + java_file_list_column = [ + [ + sg.Text('Java File'), + sg.In(size=(25, 1), enable_events=True, key="-JAVA FOLDER-"), + sg.FileBrowse(file_types=(('Java-File', '*.java'), ('ALL Files','*.*')), key='-JAVA FILE-'), # ('ALL Files','*.*') + ], + ] + + file_list_column = [ + [ + sg.Text('Output Folder'), + sg.In(size=(25, 1), enable_events=True, key="-OUTPUT FOLDER-"), + sg.FolderBrowse(), + ], + [ + sg.Listbox( + values=[], enable_events=True, size=(40, 20), key="-OUTPUT FILE LIST-" + ) + ], + ] + + diagramm_viewer_column = [ + [sg.Text("Choose your Code. ")], + [sg.Text(size=(40, 1), key="-TOUT-")], + [sg.Image(key='-IMAGE-')], + ] + + buttons_column = [ + [sg.Button(button_text='Create Image', key='-CREATE-')], + [sg.Button(button_text='Donate', key='-DONATE-')], + ] + + + layout = [ + [ + sg.Column(java_file_list_column), + sg.VSeparator(), + sg.Column(file_list_column), + sg.VSeparator(), + sg.Column(buttons_column), + sg.VSeparator(), + sg.Column(diagramm_viewer_column), + ] + ] + + window = sg.Window('Nassi Viewer', layout, resizable=True) + + while True: + event, values = window.read() + if event == 'Exit' or event == sg.WIN_CLOSED: + break + + if event == '-OUTPUT FOLDER-': + output_path = values['-OUTPUT FOLDER-'] + try: + file_list = os.listdir(output_path) + except: + file_list = [] + fnames = [ + f + for f in file_list + if os.path.isfile(os.path.join(output_path, f)) + and f.lower().endswith(('.png', '.gif')) + ] + window['-OUTPUT FILE LIST-'].update(fnames) + elif event == '-OUTPUT FILE LIST-': + try: + filename = os.path.join( + values["-OUTPUT FOLDER-"], values["-OUTPUT FILE LIST-"][0] + ) + window["-TOUT-"].update(filename) + window["-IMAGE-"].update(filename=filename) + except: + pass + if event == '-JAVA FOLDER-': + folder = values['-JAVA FOLDER-'] + window['-JAVA FOLDER-'].update(values['-JAVA FILE-']) + + elif event == '-CREATE-': + try: + if values['-JAVA FOLDER-'] and values['-OUTPUT FOLDER-']: + try: + file_path = os.path.join( + values["-JAVA FOLDER-"], + ) + sg.popup_annoying('Succsessful created!' , title='Info') + + except: + pass + output_path = values['-OUTPUT FOLDER-'] + nassi(file_path, str(output_path)) + try: + file_list = os.listdir(output_path) + except: + file_list = [] + fnames = [ + f + for f in file_list + if os.path.isfile(os.path.join(output_path, f)) + and f.lower().endswith(('.png', '.gif')) + ] + + window['-OUTPUT FILE LIST-'].update(fnames) + + elif values['-JAVA FOLDER-']: + print('No Output') + sg.popup_annoying('No Output' , title='Error', auto_close_duration=5, auto_close=True) + elif values['-OUTPUT FOLDER-']: + print('No Input') + sg.popup_annoying('No Input' , title='Error', auto_close_duration=5, auto_close=True) + else: + sg.popup_annoying('Unexpected Case!' , title='Error') + except: + pass + + window.close() diff --git a/to_nassi.py b/gui/utils.py similarity index 74% rename from to_nassi.py rename to gui/utils.py index 3bfd794..ec46f27 100644 --- a/to_nassi.py +++ b/gui/utils.py @@ -1,5 +1,5 @@ -from NassiShneidermann import NassiShneidermanDiagram -from Iinstruction import * +from interpreter.NassiShneidermann import NassiShneidermanDiagram +from draw.Iinstruction import * def nassi(filepath:str, output_path: str): diff --git a/NassiShneidermann.py b/interpreter/NassiShneidermann.py similarity index 92% rename from NassiShneidermann.py rename to interpreter/NassiShneidermann.py index c24a085..efda13f 100644 --- a/NassiShneidermann.py +++ b/interpreter/NassiShneidermann.py @@ -1,8 +1,9 @@ from typing import List -from Iinstruction import Iinstruction import logging -import interpret_source as itp -import code_to_image as cti + +from draw.Iinstruction import Iinstruction +from interpreter import interpret_source as itp +from draw import code_to_image as cti class NassiShneidermanDiagram: diff --git a/interpreter/__init__.py b/interpreter/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/interpret_source.py b/interpreter/interpret_source.py similarity index 99% rename from interpret_source.py rename to interpreter/interpret_source.py index 86ae496..8453b14 100644 --- a/interpret_source.py +++ b/interpreter/interpret_source.py @@ -1,8 +1,9 @@ -from Iinstruction import * import logging import re from typing import List, Tuple +from draw.Iinstruction import * + class Scope(): def __init__(self, enclosing_scope) -> None: diff --git a/run.py b/run.py new file mode 100644 index 0000000..e85975a --- /dev/null +++ b/run.py @@ -0,0 +1,3 @@ +from gui.gui import gui + +gui() \ No newline at end of file