Source code for tools.ide

import os, sys, platform, argparse
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication
from PySide6.QtGui import QIcon, QPalette
from editor.common.logger import log, error
from editor.models.editor.editor_prefs import EditorPrefs
from editor.theme_manager import loadTheme, setupThemeWatcher
from editor.main_window import MainWindow


###################################################################
[docs]def enableStdout(enabled): if enabled: sys.stdout = sys.__stdout__ sys.stderr = sys.__stderr__ else: devnull = open(os.devnull, 'w') sys.stdout = devnull sys.stderr = devnull
[docs]def setupBundleInfo(): system = platform.system() if system == 'Windows': import ctypes appid = 'dear_editor' ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(appid) elif system == 'Darwin': # required python package: pyobjc-framework-Cocoa from Foundation import NSBundle bundle = NSBundle.mainBundle() app_info = bundle.localizedInfoDictionary() or bundle.infoDictionary() if app_info: app_info['CFBundleName'] = 'Dear'
# from Foundation import NSUserDefaults # defaults = NSUserDefaults.standardUserDefaults() # defaults.setObject_forKey_(['en'], 'AppleLanguages') ###################################################################
[docs]class Ide(QApplication): def __init__(self, *args): super().__init__(*args) self.setAttribute(Qt.AA_EnableHighDpiScaling) self.setWindowIcon(QIcon('logo.png')) self.setApplicationName('Dear Editor') self.aboutToQuit.connect(self.onAboutToQuit) EditorPrefs.connect(os.environ[ 'DEAR_PREFS_PATH' ])
[docs] def setupPalette(self): self.palette = self.style().standardPalette() self.palette.setColor(QPalette.Highlight, '#4999FD') self.setPalette(self.palette)
[docs] def raiseWindow(self, prj, theme): log('hello!') loadTheme(theme) setupThemeWatcher() win = MainWindow() win.setWindowTitle(f'prj_xmile - OpenGL - {self.applicationName()}') win.show() sys.exit(self.exec())
[docs] def onAboutToQuit(self): EditorPrefs.close() log('bye!')
###################################################################
[docs]def description(): return 'raise editor ide'
[docs]def main( argv ): parser = argparse.ArgumentParser(prog = 'dear ide', description = description()) parser.add_argument('-p', '--prj', help='specify working prject path') parser.add_argument('--theme', help='specify ide editor theme', default='dark') parser.add_argument('--stdout', action=argparse.BooleanOptionalAction, help='enable standard output', default=True) parser.add_argument('--host', action='store_true', help='start with host mode', default=False) args = parser.parse_args(argv) # if not args.prj: return error('raise ide with failure: prj not specified!') setupBundleInfo() enableStdout(args.stdout) ide = Ide(argv) ide.setupPalette() ide.raiseWindow(args.prj, args.theme)