Skip to content

Commit

Permalink
Merge pull request #132 from Integration-Automation/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
JE-Chen45 committed Sep 20, 2023
2 parents 6682d58 + a625492 commit 40e52a3
Show file tree
Hide file tree
Showing 20 changed files with 301 additions and 160 deletions.
11 changes: 5 additions & 6 deletions stable.toml → dev.toml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# Rename to build stable version
# This is stable version
# Rename to build dev version
# This is dev version
[build-system]
requires = ["setuptools>=61.0"]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"

[project]
name = "je_editor"
version = "0.0.158"
name = "je_editor_dev"
version = "0.0.167"
authors = [
{ name = "JE-Chen", email = "jechenmailman@gmail.com" },
]
Expand All @@ -26,7 +26,6 @@ classifiers = [
"Operating System :: OS Independent"
]


[project.urls]
Homepage = "https://github.com/JE-Chen/je_editor"
Documentation = "https://je-editor.readthedocs.io/en/latest/"
Expand Down
2 changes: 2 additions & 0 deletions je_editor/pyside_ui/browser/browser_download_window.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from PySide6.QtCore import Qt
from PySide6.QtWebEngineCore import QWebEngineDownloadRequest
from PySide6.QtWidgets import QWidget, QBoxLayout, QPlainTextEdit

Expand All @@ -8,6 +9,7 @@ class BrowserDownloadWindow(QWidget):

def __init__(self, download_instance: QWebEngineDownloadRequest):
super().__init__()
self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose)
self.box_layout = QBoxLayout(QBoxLayout.Direction.TopToBottom)
self.show_download_detail_plaintext = QPlainTextEdit()
self.show_download_detail_plaintext.setReadOnly(True)
Expand Down
1 change: 1 addition & 0 deletions je_editor/pyside_ui/browser/browser_serach_lineedit.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ class BrowserLineSearch(QLineEdit):

def __init__(self, browser_widget: JEBrowser):
super().__init__()
self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose)
self.browser = browser_widget

def keyPressEvent(self, event) -> None:
Expand Down
2 changes: 2 additions & 0 deletions je_editor/pyside_ui/browser/browser_view.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from typing import List

from PySide6.QtCore import Qt
from PySide6.QtWebEngineCore import QWebEngineDownloadRequest
from PySide6.QtWebEngineWidgets import QWebEngineView

Expand All @@ -14,6 +15,7 @@ def __init__(self, start_url: str = "https://www.google.com/"):
self.download_list: List[QWebEngineDownloadRequest] = list()
self.download_window_list: List[BrowserDownloadWindow] = list()
self.page().profile().downloadRequested.connect(self.download_file)
self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose)

def download_file(self, download_instance: QWebEngineDownloadRequest):
self.download_list.append(download_instance)
Expand Down
3 changes: 2 additions & 1 deletion je_editor/pyside_ui/browser/browser_widget.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from PySide6.QtGui import QAction
from PySide6.QtGui import QAction, Qt
from PySide6.QtWidgets import QWidget, QGridLayout, QPushButton, QInputDialog

from je_editor.pyside_ui.browser.browser_serach_lineedit import BrowserLineSearch
Expand All @@ -14,6 +14,7 @@ def __init__(self, start_url: str = "https://www.google.com/",
# Browser setting
self.browser = BrowserView(start_url)
self.search_prefix = search_prefix
self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose)
# Top bar
self.back_button = QPushButton(language_wrapper.language_word_dict.get("browser_back_button"))
self.back_button.clicked.connect(self.browser.back)
Expand Down
1 change: 1 addition & 0 deletions je_editor/pyside_ui/code/shell_process/shell_exec.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ def exec_shell(self, shell_command: [str, list]) -> None:
args=args,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
stdin=subprocess.PIPE,
shell=True,
)
self.still_run_shell = True
Expand Down
37 changes: 0 additions & 37 deletions je_editor/pyside_ui/main_ui/editor/debugger_input.py

This file was deleted.

2 changes: 1 addition & 1 deletion je_editor/pyside_ui/main_ui/editor/editor_widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ def __init__(self, main_window: EditorMain):
self.code_difference_result.addTab(
self.format_check_result, language_wrapper.language_word_dict.get("editor_format_check"))
self.code_difference_result.addTab(
self.debugger_result, language_wrapper.language_word_dict.get("editor_debugger"))
self.debugger_result, language_wrapper.language_word_dict.get("editor_debugger_input_title_label"))
# Edit splitter
self.edit_splitter.addWidget(self.code_edit_scroll_area)
self.edit_splitter.addWidget(self.code_difference_result)
Expand Down
3 changes: 3 additions & 0 deletions je_editor/pyside_ui/main_ui/editor/editor_widget_dock.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from pathlib import Path

from PySide6.QtCore import Qt
from PySide6.QtWidgets import QWidget, QGridLayout, QScrollArea
from frontengine.utils.multi_language.language_wrapper import language_wrapper

Expand All @@ -15,6 +16,8 @@ def __init__(self, current_file: str):
# Init variable
self.auto_save_thread = None
self.current_file = current_file
# Attr
self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose)
# UI
self.grid_layout = QGridLayout(self)
self.setWindowTitle(language_wrapper.language_word_dict.get("application_name"))
Expand Down
59 changes: 59 additions & 0 deletions je_editor/pyside_ui/main_ui/editor/process_input.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
from __future__ import annotations

from typing import TYPE_CHECKING

from PySide6.QtCore import Qt
from PySide6.QtWidgets import QWidget, QLineEdit, QBoxLayout, QPushButton, QHBoxLayout

if TYPE_CHECKING:
from je_editor.pyside_ui.main_ui.main_editor import EditorWidget

from je_editor.utils.multi_language.multi_language_wrapper import language_wrapper


class ProcessInput(QWidget):

def __init__(self, main_window: EditorWidget, process_type: str = "debugger"):
super().__init__()
self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose)
self.main_window = main_window
self.box_layout = QBoxLayout(QBoxLayout.Direction.TopToBottom)
self.command_input = QLineEdit()
self.send_command_button = QPushButton()
self.send_command_button.setText(language_wrapper.language_word_dict.get("process_input_send_command"))
self.box_h_layout = QHBoxLayout()
self.box_h_layout.addWidget(self.send_command_button)
self.box_layout.addWidget(self.command_input)
self.box_layout.addLayout(self.box_h_layout)
if process_type == "program":
self.setWindowTitle(language_wrapper.language_word_dict.get("editor_program_input_title_label"))
self.send_command_button.clicked.connect(self.program_send_command)
elif process_type == "shell":
self.setWindowTitle(language_wrapper.language_word_dict.get("editor_shell_input_title_label"))
self.send_command_button.clicked.connect(self.shell_send_command)
else:
self.setWindowTitle(language_wrapper.language_word_dict.get("editor_debugger_input_title_label"))
self.send_command_button.clicked.connect(self.debugger_send_command)
self.main_window.code_difference_result.setCurrentWidget(self.main_window.debugger_result)
self.setLayout(self.box_layout)

def debugger_send_command(self):
if self.main_window.exec_python_debugger is not None:
process_stdin = self.main_window.exec_python_debugger.process.stdin
if process_stdin is not None:
process_stdin.write(self.command_input.text().encode() + b"\n")
process_stdin.flush()

def shell_send_command(self):
if self.main_window.exec_shell is not None:
process_stdin = self.main_window.exec_shell.process.stdin
if process_stdin is not None:
process_stdin.write(self.command_input.text().encode() + b"\n")
process_stdin.flush()

def program_send_command(self):
if self.main_window.exec_program is not None:
process_stdin = self.main_window.exec_program.process.stdin
if process_stdin is not None:
process_stdin.write(self.command_input.text().encode() + b"\n")
process_stdin.flush()
1 change: 1 addition & 0 deletions je_editor/pyside_ui/main_ui/main_editor.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ def __init__(self, debug_mode: bool = False, show_system_tray_ray: bool = True):
self.redirect_timer.setInterval(1)
self.redirect_timer.start()
self.setWindowTitle(language_wrapper.language_word_dict.get("application_name"))
self.setToolTip(language_wrapper.language_word_dict.get("application_name"))
set_menu_bar(self)
# Set Icon
self.icon_path = Path(os.getcwd() + "/je_driver_icon.ico")
Expand Down
110 changes: 8 additions & 102 deletions je_editor/pyside_ui/main_ui/menu/run_menu/build_run_menu.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,56 +2,28 @@

from typing import TYPE_CHECKING

from PySide6.QtWidgets import QMessageBox

from je_editor.pyside_ui.code.running_process_manager import run_instance_manager
from je_editor.pyside_ui.main_ui.editor.debugger_input import DebuggerInput
from je_editor.pyside_ui.main_ui.editor.editor_widget import EditorWidget
from je_editor.pyside_ui.main_ui.menu.run_menu.under_run_menu.build_debug_menu import set_debug_menu
from je_editor.pyside_ui.main_ui.menu.run_menu.under_run_menu.build_program_menu import set_program_menu
from je_editor.pyside_ui.main_ui.menu.run_menu.under_run_menu.build_shell_menu import set_shell_menu

if TYPE_CHECKING:
from je_editor.pyside_ui.main_ui.main_editor import EditorMain
from PySide6.QtGui import QAction
from PySide6.QtWidgets import QMessageBox

from je_editor.pyside_ui.code.code_process.code_exec import ExecManager
from je_editor.pyside_ui.dialog.file_dialog.save_file_dialog import choose_file_get_save_file_path
from je_editor.pyside_ui.code.shell_process.shell_exec import ShellManager
from je_editor.utils.multi_language.multi_language_wrapper import language_wrapper


def set_run_menu(ui_we_want_to_set: EditorMain) -> None:
ui_we_want_to_set.run_menu = ui_we_want_to_set.menu.addMenu(
language_wrapper.language_word_dict.get("run_menu_label"))
# Run program
ui_we_want_to_set.run_menu.run_program_action = QAction(
language_wrapper.language_word_dict.get("run_menu_run_program_label"))
ui_we_want_to_set.run_menu.run_program_action.triggered.connect(
lambda: run_program(ui_we_want_to_set)
)
ui_we_want_to_set.run_menu.addAction(ui_we_want_to_set.run_menu.run_program_action)
# Debug menu inside run menu
ui_we_want_to_set.debug_menu = ui_we_want_to_set.run_menu.addMenu(
language_wrapper.language_word_dict.get("editor_debugger"))
# Run debugger
ui_we_want_to_set.debug_menu.run_debugger_action = QAction(
language_wrapper.language_word_dict.get("run_menu_run_debugger"))
ui_we_want_to_set.debug_menu.run_debugger_action.triggered.connect(
lambda: run_debugger(ui_we_want_to_set)
)
ui_we_want_to_set.debug_menu.addAction(ui_we_want_to_set.debug_menu.run_debugger_action)
# Show debugger input
ui_we_want_to_set.debug_menu.show_debugger_input = QAction(
language_wrapper.language_word_dict.get("show_debugger_input"))
ui_we_want_to_set.debug_menu.show_debugger_input.triggered.connect(
lambda: show_debugger_input(ui_we_want_to_set)
)
ui_we_want_to_set.debug_menu.addAction(ui_we_want_to_set.debug_menu.show_debugger_input)
# Run on shell
ui_we_want_to_set.run_menu.run_on_shell_action = QAction(
language_wrapper.language_word_dict.get("run_menu_run_on_shell_label"))
ui_we_want_to_set.run_menu.run_on_shell_action.triggered.connect(
lambda: shell_exec(ui_we_want_to_set)
)
set_program_menu(ui_we_want_to_set)
set_shell_menu(ui_we_want_to_set)
set_debug_menu(ui_we_want_to_set)
# Clean result
ui_we_want_to_set.run_menu.addAction(ui_we_want_to_set.run_menu.run_on_shell_action)
ui_we_want_to_set.run_menu.clean_result_action = QAction(
language_wrapper.language_word_dict.get("run_menu_clear_result_label"))
ui_we_want_to_set.run_menu.clean_result_action.triggered.connect(
Expand Down Expand Up @@ -91,72 +63,6 @@ def set_run_menu(ui_we_want_to_set: EditorMain) -> None:
ui_we_want_to_set.run_menu.run_help_menu.addAction(ui_we_want_to_set.run_menu.run_help_menu.shell_help_action)


def please_close_current_running_messagebox(ui_we_want_to_set: EditorMain):
please_stop_current_running_program_messagebox = QMessageBox(ui_we_want_to_set)
please_stop_current_running_program_messagebox.setText(
language_wrapper.language_word_dict.get("please_stop_current_running_program")
)
please_stop_current_running_program_messagebox.show()


def run_program(ui_we_want_to_set: EditorMain) -> None:
widget = ui_we_want_to_set.tab_widget.currentWidget()
if isinstance(widget, EditorWidget):
if widget.exec_program is None:
widget.python_compiler = ui_we_want_to_set.python_compiler
if choose_file_get_save_file_path(ui_we_want_to_set):
code_exec = ExecManager(widget)
code_exec.later_init()
code_exec.exec_code(
widget.current_file
)
widget.exec_program = code_exec
else:
please_close_current_running_messagebox(ui_we_want_to_set)


def run_debugger(ui_we_want_to_set: EditorMain) -> None:
widget = ui_we_want_to_set.tab_widget.currentWidget()
if isinstance(widget, EditorWidget):
if widget.exec_python_debugger is None:
widget.python_compiler = ui_we_want_to_set.python_compiler
if choose_file_get_save_file_path(ui_we_want_to_set):
code_exec = ExecManager(widget)
code_exec.later_init()
code_exec.code_result = widget.debugger_result
code_exec.exec_code(
widget.current_file, exec_prefix=["-m", "pdb"]
)
widget.exec_python_debugger = code_exec
widget.debugger_input = DebuggerInput(widget)
widget.debugger_input.show()
else:
please_close_current_running_messagebox(ui_we_want_to_set)


def show_debugger_input(ui_we_want_to_set: EditorMain) -> None:
widget = ui_we_want_to_set.tab_widget.currentWidget()
if isinstance(widget, EditorWidget):
widget.debugger_input = DebuggerInput(widget)
widget.debugger_input.show()


def shell_exec(ui_we_want_to_set: EditorMain) -> None:
widget = ui_we_want_to_set.tab_widget.currentWidget()
if isinstance(widget, EditorWidget):
if widget.exec_shell is None:
shell_command = ShellManager(
main_window=widget,
shell_encoding=ui_we_want_to_set.encoding)
shell_command.later_init()
shell_command.exec_shell(
widget.code_edit.toPlainText()
)
widget.exec_shell = shell_command
else:
please_close_current_running_messagebox(ui_we_want_to_set)


def stop_program(ui_we_want_to_set: EditorMain) -> None:
widget = ui_we_want_to_set.tab_widget.currentWidget()
if isinstance(widget, EditorWidget):
Expand Down
Empty file.
Loading

0 comments on commit 40e52a3

Please sign in to comment.