From d5398b9c0189dfa3e8656590ebcdb3c6e89fd049 Mon Sep 17 00:00:00 2001 From: Evgeniy Gleba <60469435+geugenm@users.noreply.github.com> Date: Sun, 24 Dec 2023 01:15:59 +0300 Subject: [PATCH 1/6] Updated readme.md --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 86ca0eb..77b7913 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ## Modernized computer applets for semiconductors course.
- + Logo

Applets REMASTERED

@@ -9,14 +9,14 @@

This repository has been established with the primary objective of enhancing the functionality of applets in 2023, ensuring seamless execution for all users, thereby facilitating a smooth and trouble-free experience.
- Explore the docs » + Explore the docs »

- Browse applets online + Test CheerpJ · - Report Bug + Report Bug · - Request Feature + Request Feature

From 0b15ac514bc02bae54846dc9c175041a8e3d0ec4 Mon Sep 17 00:00:00 2001 From: Evgeniy Gleba <60469435+geugenm@users.noreply.github.com> Date: Sun, 24 Dec 2023 01:16:12 +0300 Subject: [PATCH 2/6] Added icons for installer and app --- res/app_icon.ico | Bin 0 -> 133760 bytes res/setup_icon.ico | Bin 0 -> 113531 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 res/app_icon.ico create mode 100644 res/setup_icon.ico diff --git a/res/app_icon.ico b/res/app_icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c1903b643f33ce625faac93285c9d858cd502c47 GIT binary patch literal 133760 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 literal 0 HcmV?d00001 From 70940aa56d2fc91088db99be8f8181b8b8c63fca Mon Sep 17 00:00:00 2001 From: Evgeniy Gleba <60469435+geugenm@users.noreply.github.com> Date: Sun, 24 Dec 2023 01:16:27 +0300 Subject: [PATCH 3/6] Changed port of the server to 25535 --- scripts/start_server_ui.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/start_server_ui.py b/scripts/start_server_ui.py index 38435ff..ed8e41c 100644 --- a/scripts/start_server_ui.py +++ b/scripts/start_server_ui.py @@ -8,7 +8,7 @@ from tkinter import ttk # Constants -DEFAULT_PORT: int = 8080 +DEFAULT_PORT: int = 25355 DEFAULT_DIRECTORY: str = "." LOG_DIRECTORY: str = "logs/" HTTP_PREFIX: str = "http://" From 0133bd423cfca972b79f3e2fe96e3d59aaeaea86 Mon Sep 17 00:00:00 2001 From: Evgeniy Gleba <60469435+geugenm@users.noreply.github.com> Date: Sun, 24 Dec 2023 01:17:11 +0300 Subject: [PATCH 4/6] Removed strange scripts of automatic release creation --- scripts/compile_to_exe.py | 48 ----------------------- scripts/create_release.py | 81 --------------------------------------- 2 files changed, 129 deletions(-) delete mode 100644 scripts/compile_to_exe.py delete mode 100644 scripts/create_release.py diff --git a/scripts/compile_to_exe.py b/scripts/compile_to_exe.py deleted file mode 100644 index 8b86ac8..0000000 --- a/scripts/compile_to_exe.py +++ /dev/null @@ -1,48 +0,0 @@ -import argparse -import os -import shutil -import subprocess -import sys - -BUILD_DIR = ".build" -DIST_DIR = "dist" -PYINSTALLER = "pyinstaller" -ONEFILE_FLAG = "--onefile" -NOCONSOLE_FLAG = "--noconsole" -EXE_EXT = ".exe" - - -def compile_exe(script_file: str, config: str) -> None: - output_directory = os.path.join(BUILD_DIR, config) - os.makedirs(output_directory, exist_ok=True) - - # PyInstaller flags - pyinstaller_flags = [ONEFILE_FLAG] - - if config == "release": - pyinstaller_flags.append(NOCONSOLE_FLAG) - - try: - subprocess.run([PYINSTALLER, *pyinstaller_flags, script_file]) - except FileNotFoundError: - print(f"{PYINSTALLER} not found. Please install {PYINSTALLER} to proceed.") - sys.exit(1) - - # Move the compiled executable to the output directory - script_name = os.path.splitext(os.path.basename(script_file))[0] - exe_name = f"{script_name}{EXE_EXT}" - shutil.move(os.path.join(DIST_DIR, exe_name), os.path.join(output_directory, exe_name)) - - -def main() -> None: - parser = argparse.ArgumentParser(description="Compile and move executable based on configuration") - parser.add_argument("script_file", help="Python script file to compile") - parser.add_argument("--config", choices=["release", "debug"], default="debug", - help="Configuration type (release or debug, default is debug)") - args = parser.parse_args() - - compile_exe(args.script_file, args.config) - - -if __name__ == "__main__": - main() diff --git a/scripts/create_release.py b/scripts/create_release.py deleted file mode 100644 index 0f63493..0000000 --- a/scripts/create_release.py +++ /dev/null @@ -1,81 +0,0 @@ -import logging -import os -import shutil -import subprocess - -LOG_FILE = 'logs/create_release.log' -LOG_LEVEL = logging.INFO -LOG_FORMAT = '%(asctime)s - %(levelname)s - %(message)s' -BUILD_DIR = '.build' -SOURCE_DIRS = ['docs', 'src'] -EXCLUDE_DIRS = ['decompiled', 'logs'] -COMPILE_SCRIPT = 'compile_to_exe.py' -SERVER_UI_SCRIPT = 'start_server_ui.py' -WINDOWS_COMPILED_SCRIPT = 'start_server_ui.exe' -CONFIG = 'debug' -SPEC_FILE = 'start_server_ui.spec' - - -def setup_logger(): - os.makedirs(os.path.dirname(LOG_FILE), exist_ok=True) - with open(LOG_FILE, 'a') as _: - pass - logging.basicConfig(filename=LOG_FILE, level=LOG_LEVEL, format=LOG_FORMAT) - - -def clean_build(): - if os.path.exists(BUILD_DIR): - shutil.rmtree(BUILD_DIR, ignore_errors=True) - - -def copy_files(): - if not all(os.path.exists(dir) for dir in SOURCE_DIRS + ['scripts']): - logging.error("Required directories (docs/, src/, scripts/) not found.") - return - - os.makedirs(BUILD_DIR, exist_ok=True) - - for src_dir in SOURCE_DIRS: - for root, _, files in os.walk(src_dir): - if any(exclude_dir in root for exclude_dir in EXCLUDE_DIRS): - continue - for file in files: - src_file = os.path.join(root, file) - dest_file = os.path.join(BUILD_DIR, os.path.relpath(src_file, start=src_dir)) - os.makedirs(os.path.dirname(dest_file), exist_ok=True) - shutil.copy(src_file, dest_file) - logging.info(f"Copied {src_file} to {dest_file}") - - -def start_compile(): - original_dir = os.getcwd() - os.chdir('scripts') - - logging.info("Starting compile_to_exe.py...") - compile_process = subprocess.run(['python', COMPILE_SCRIPT, SERVER_UI_SCRIPT, f'--config={CONFIG}'], - capture_output=True, text=True) - - if compile_process.returncode != 0: - logging.error("compile_to_exe.py failed. See below for details:") - logging.error(compile_process.stdout) - logging.error(compile_process.stderr) - return - - compiled_file = f"{BUILD_DIR}/{CONFIG}/{WINDOWS_COMPILED_SCRIPT}" - shutil.move(compiled_file, f"../{BUILD_DIR}/{WINDOWS_COMPILED_SCRIPT}") - logging.info(f"Moved {compiled_file} to {BUILD_DIR} folder") - - shutil.rmtree('build', ignore_errors=True) - shutil.rmtree('dist', ignore_errors=True) - shutil.rmtree('.build', ignore_errors=True) - os.remove(SPEC_FILE) - logging.info("Cleaned up build artifacts") - - os.chdir(original_dir) - - -if __name__ == "__main__": - setup_logger() - clean_build() - copy_files() - start_compile() From 1fcbaca32dd77044e876b1df4bc56357079105bc Mon Sep 17 00:00:00 2001 From: Evgeniy Gleba <60469435+geugenm@users.noreply.github.com> Date: Sun, 24 Dec 2023 01:38:27 +0300 Subject: [PATCH 5/6] Added installation script + small translation --- scripts/setup_script.iss | 52 ++++++++++++++++++++++++++++++++++++++ scripts/start_server_ui.py | 12 ++++----- 2 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 scripts/setup_script.iss diff --git a/scripts/setup_script.iss b/scripts/setup_script.iss new file mode 100644 index 0000000..9493472 --- /dev/null +++ b/scripts/setup_script.iss @@ -0,0 +1,52 @@ +; Script generated by the Inno Setup Script Wizard. +; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! + +#define MyAppName " " +#define MyAppVersion "1.4.0" +#define MyAppPublisher " , , " +#define MyAppURL "https://rfe.bsu.by/" +#define MyAppExeName "start_server.exe" + +[Setup] +; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications. +; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) +AppId={{626B5EAF-10C8-454B-9FAA-32350E3DA410} +AppName={#MyAppName} +AppVersion={#MyAppVersion} +;AppVerName={#MyAppName} {#MyAppVersion} +AppPublisher={#MyAppPublisher} +AppPublisherURL={#MyAppURL} +AppSupportURL={#MyAppURL} +AppUpdatesURL={#MyAppURL} +DefaultDirName={autopf}\{#MyAppName} +DisableProgramGroupPage=yes +LicenseFile=C:\Users\Evgeniy\Downloads\LICENSE +InfoBeforeFile=C:\Users\Evgeniy\Downloads\README [MConverter.eu].rtf +InfoAfterFile=C:\Users\Evgeniy\Downloads\README [MConverter.eu].rtf +; Remove the following line to run in administrative install mode (install for all users.) +PrivilegesRequired=lowest +OutputDir=C:\Users\Evgeniy\Downloads\123 +OutputBaseFilename=release_win_amd64 +SetupIconFile=C:\Users\Evgeniy\source\repos\modern-lab-comp-applets\res\setup_icon.ico +Compression=lzma +SolidCompression=yes +WizardStyle=modern + +[Languages] +Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl" + +[Tasks] +Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked + +[Files] +Source: "C:\Users\Evgeniy\source\repos\modern-lab-comp-applets\.build\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion +Source: "C:\Users\Evgeniy\source\repos\modern-lab-comp-applets\.build\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs +; NOTE: Don't use "Flags: ignoreversion" on any shared system files + +[Icons] +Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" +Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon + +[Run] +Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent + diff --git a/scripts/start_server_ui.py b/scripts/start_server_ui.py index ed8e41c..87b78be 100644 --- a/scripts/start_server_ui.py +++ b/scripts/start_server_ui.py @@ -40,10 +40,10 @@ def stop_server(self): # View class ServerView: - WINDOW_TITLE: str = "Webassembly translation server" - START_BUTTON_TEXT: str = "Start" - STOP_BUTTON_TEXT: str = "Stop" - OPEN_URL_BUTTON_TEXT: str = "Open URL" + WINDOW_TITLE: str = "Сервер для лабораторных работ по ФПП" + START_BUTTON_TEXT: str = "Старт" + STOP_BUTTON_TEXT: str = "Стоп" + OPEN_URL_BUTTON_TEXT: str = "Открыть в браузере" BUTTON_WIDTH: int = 12 BUTTON_FONT_SIZE: int = 15 WINDOW_HEIGHT: int = 100 @@ -69,8 +69,8 @@ def __init__(self, root: tk.Tk): # Controller class ServerController: - STATUS_ON: str = "STATUS: ON" - STATUS_OFF: str = "STATUS: OFF" + STATUS_ON: str = "СТАТУС: ВКЛ" + STATUS_OFF: str = "СТАТУС: ВЫКЛ" GREEN: str = "green" RED: str = "red" From ecd95ad3204e786116df2ea9e4ed2157f6e062f5 Mon Sep 17 00:00:00 2001 From: Evgeniy Gleba <60469435+geugenm@users.noreply.github.com> Date: Sun, 24 Dec 2023 01:57:24 +0300 Subject: [PATCH 6/6] Fixed width of lab5 applets --- src/lab-5/ebers_moll_circuit.html | 7 +++---- src/lab-5/pi_hybrid_model.html | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/lab-5/ebers_moll_circuit.html b/src/lab-5/ebers_moll_circuit.html index 3a3368e..de457e3 100644 --- a/src/lab-5/ebers_moll_circuit.html +++ b/src/lab-5/ebers_moll_circuit.html @@ -77,13 +77,13 @@ section { margin: 20px auto; - max-width: 500px; + max-width: 700px; text-align: center; } object { align-content: center; - width: 450px; + width: 700px; height: 420px; display: block; margin: 20px auto; @@ -103,13 +103,12 @@
-

Для просмотра этой страницы необходима поддержка апплетов в вашем браузере. diff --git a/src/lab-5/pi_hybrid_model.html b/src/lab-5/pi_hybrid_model.html index 624547a..b0b9e25 100644 --- a/src/lab-5/pi_hybrid_model.html +++ b/src/lab-5/pi_hybrid_model.html @@ -77,13 +77,13 @@ section { margin: 20px auto; - max-width: 500px; + max-width: 700px; text-align: center; } object { align-content: center; - width: 450px; + width: 700px; height: 420px; display: block; margin: 20px auto;