예제 #1
0
def main(test_func):
    from pyminer2 import pmutil
    app = QApplication(sys.argv)
    path_logo = os.path.join(pmutil.get_root_dir(),
                             r'ui\source\icons\logo.png')
    app.setWindowIcon(QIcon(path_logo))  # 设置应用logo

    path_splash = os.path.join(pmutil.get_root_dir(),
                               r'ui\source\images\splash.png')
    splash = QSplashScreen(QPixmap(path_splash))
    splash.showMessage("正在加载pyminer... 0%", Qt.AlignHCenter | Qt.AlignBottom,
                       Qt.black)
    splash.show()  # 显示启动界面

    pmutil._application = app
    load_fonts(app)
    load_translator(app)
    # font = os.path.join(os.path.dirname(__file__), 'ui', 'source', 'font', 'SourceCodePro-Regular.ttf')
    app.default_font = 'Deng'
    f = QFont(app.default_font, 10)
    app.setFont(f)
    demo = MainWindow()
    demo.events_ready_signal.connect(test_func)
    splash.finish(demo)  # 修复故障 I1VYVO 程序启动完成后,关闭启动界面   liugang 20200921
    id(demo)

    sys.exit(app.exec_())
예제 #2
0
    def load(self) -> Dict[str, str]:
        """
        加载设置项。
        default_settings是默认设置项
        :return:
        """
        from pyminer2.pmutil import get_root_dir
        with open(
                os.path.join(get_root_dir(), 'config', 'features',
                             'default_settings.json'), 'r') as f:
            default_settings = json.load(f)
            default_settings['work_dir'] = get_root_dir()

        try:
            with open(
                    os.path.join(get_root_dir(), 'config', 'customized',
                                 'ui_settings.json'), 'r') as f:
                settings = json.load(f)

        except BaseException:
            settings = {}

        pmsettings = default_settings
        pmsettings.update(settings)
        return pmsettings
예제 #3
0
    def load_settings(self):
        import json
        from pyminer2.pmutil import get_root_dir
        default_settings = {
            'work_dir': get_root_dir(),
            'main_theme': '#F7F7F7',
            'margin_theme': '#dadada'
        }
        # default_settings = {'work_dir': get_root_dir(), 'main_theme':
        # '#232323','margin_theme':'#565656'}
        try:
            with open(
                    os.path.join(get_root_dir(), 'config', 'customized',
                                 'ui_settings.json'), 'r') as f:
                settings = json.load(f)
        except BaseException:
            settings = {}
        print(settings, default_settings)
        self.settings.update(default_settings)
        self.settings.update(settings)
        print(self.settings)

        with open(os.path.join(get_root_dir(), 'config', 'ui', 'standard.qss'),
                  'rb') as f:
            b = f.read()
            enc = chardet.detect(b)
            if enc.get('encoding') is not None:
                s = b.decode(enc['encoding'])
                self.setStyleSheet(
                    s.replace('MAIN_THEME',
                              self.settings['main_theme']).replace(
                                  'MARGIN_THEME',
                                  self.settings['margin_theme']))
예제 #4
0
 def load_layout(self):
     from pyminer2.pmutil import get_root_dir
     p = os.path.join(get_root_dir(), 'config', 'customized', 'layout.ini')
     if os.path.exists(p):
         with open(p, 'rb') as f:
             s = f.read()
             self.restoreState(s)
     else:
         p = os.path.join(get_root_dir(), 'config', 'ui', 'standard.ini')
         with open(p, 'rb') as f:
             s = f.read()
             self.restoreState(s)
예제 #5
0
 def save_settings(self):
     import json
     from pyminer2.pmutil import get_root_dir
     try:
         config_file = os.path.join(get_root_dir(), 'config', 'customized',
                                    'ui_settings.json')
         if not os.path.exists(
                 os.path.join(get_root_dir(), 'config', 'customized')):
             os.mkdir(os.path.join(get_root_dir(), 'config', 'customized'))
         with open(config_file, 'w') as f:
             json.dump(self.settings, f)
     except FileNotFoundError as e:
         print(e)
예제 #6
0
 def save(self):
     """
     保存
     :return:
     """
     import json
     from pyminer2.pmutil import get_root_dir
     try:
         config_file = os.path.join(get_root_dir(), 'config', 'customized',
                                    'ui_settings.json')
         if not os.path.exists(
                 os.path.join(get_root_dir(), 'config', 'customized')):
             os.mkdir(os.path.join(get_root_dir(), 'config', 'customized'))
         with open(config_file, 'w') as f:
             json.dump(self, f, indent=4)
     except FileNotFoundError as e:
         logging.warning(e)
예제 #7
0
 def load_predefined_layout(self, layout_type: str = 'standard'):
     from pyminer2.pmutil import get_root_dir
     layouts = {'standard': 'standard.ini'}
     p = os.path.join(get_root_dir(), 'config', 'ui', layouts[layout_type])
     if os.path.exists(p):
         with open(p, 'rb') as f:
             s = f.read()
             self.restoreState(s)
     self.refresh_view_configs()
예제 #8
0
 def save_layout(self):
     from pyminer2.pmutil import get_root_dir
     try:
         root = os.path.join(get_root_dir(), 'config', 'customized')
         if not os.path.isdir(root):
             os.mkdir(root)
         p = os.path.join(root, 'layout.ini')
         with open(p, 'wb') as f:
             s = self.saveState()
             f.write(s)
     except FileNotFoundError:
         print("file not found:", p)
예제 #9
0
 def get_stylesheet(style_sheet_name: str = 'standard'):
     style_sheet = ""
     from pyminer2.pmutil import get_root_dir
     with open(
             os.path.join(get_root_dir(), 'config', 'ui',
                          '%s.qss' % style_sheet_name), 'rb') as f:
         b = f.read()
         enc = chardet.detect(b)
         if enc.get('encoding') is not None:
             s = b.decode(enc['encoding'])
             style_sheet = s.replace(
                 'MAIN_THEME',
                 Settings.get_instance()['main_theme']).replace(
                     'MARGIN_THEME',
                     Settings.get_instance()['margin_theme'])
     return style_sheet
예제 #10
0
    def init_ui(self):
        """初始化ui"""
        self.layout = QHBoxLayout(self)

        # 扩展图标
        img = QLabel(self)
        img_path = os.path.join(get_root_dir(
        ), 'extensions/packages/', self.ext.info.name, self.ext.info.icon)
        pixmap = QPixmap(img_path)
        pixmap = pixmap.scaledToHeight(50)
        img.setPixmap(pixmap)
        self.layout.addWidget(img)

        # 扩展名称
        ext_name = QLabel(self)
        ext_name.setText(self.ext.info.display_name)
        self.layout.addWidget(ext_name)

        # 设置菜单模式,关联菜单事件
        self.setContextMenuPolicy(Qt.CustomContextMenu)
        self.customContextMenuRequested.connect(self.show_menu)

        self.setLayout(self.layout)
        self.show()
예제 #11
0
 def setLogo(self):
     pix = QPixmap(get_root_dir() + '/ui/source/icons/logo.png')
     self.label_logo.setPixmap(pix)
예제 #12
0
    def slot_change_workspace(self):

        directory = QFileDialog.getExistingDirectory(
            self, "选择工作区间位置", get_root_dir())
        self.lineEdit_workspace.setText(directory)
예제 #13
0
 def slot_change_output(self):
     directory = QFileDialog.getExistingDirectory(
         self, "选择输出文件夹位置", get_root_dir())
     self.lineEdit_output.setText(directory)
예제 #14
0
import sys
import json
import json.decoder
import zipfile
import importlib
import traceback
import logging
logger = logging.getLogger('extensionmanager')
from vermanager import VersionsManager, Module
# from pyminer2.features.extensions.extensionlib import env
from pyminer2.pmutil import get_root_dir
# from pyminer2.extensions.extensions_manager import log
from pyminer2.extensions.extensions_manager.ExtensionLoader import ExtensionLoader
from pyminer2.extensions.extensions_manager.UIInserter import ui_inserters

BASEDIR = get_root_dir()


class ExtensionsManager:
    """
    扩展管理类
    """

    def __init__(self):
        self.extensions = {}  # 扩展类实例
        self.ui_inserters = ui_inserters
        self.id_ = 0  # 扩展id,动态分配的
        self.setting_path = os.path.join(
            BASEDIR, 'config/extensions.json')  # 扩展配置文件位置
        if not os.path.exists(self.setting_path):
            raise FileNotFoundError(self.setting_path)
예제 #15
0
 def get_main_program_dir(self):
     """
     获取主程序路径
     :return:
     """
     return get_root_dir()
예제 #16
0
 def get_main_program_dir(self):
     return get_root_dir()
예제 #17
0
from PyQt5.QtWidgets import QApplication, QMenu, QTextEdit, QMessageBox, QToolBar, QSplashScreen, QFileDialog

from pyminer2.features.io import sample
from pyminer2.features import base
from pyminer2.features.io.settings import Settings
from pyminer2.ui.base.widgets.controlpanel import PMPageExt
from pyminer2.ui.pmwidgets import BaseMainWindow
from pmgwidgets import PMGToolBar, ActionWithMessage, PMDockObject
from pmgwidgets.sourcemgr import create_icon
from pyminer2.extensions.extensions_manager.manager import extensions_manager
from pyminer2.extensions.extensions_manager.log import ColorHandler
from pyminer2.pmutil import get_main_window, get_root_dir, get_application
from pyminer2.features.util import utils
from pyminer2.features.io.settings import load_theme

log_folder = os.path.join(get_root_dir(), 'log')
if not os.path.exists(log_folder):
    os.mkdir(log_folder)

logging.Formatter.default_msec_format = '%s.%03d'
logging_file = os.path.join(log_folder, f'log_{datetime.datetime.now().strftime("%Y-%m-%d")}.log')
logging.basicConfig(
    format='[%(asctime)s] %(levelname)-8s %(name)s [%(module)s:%(funcName)s:%(lineno)s] %(message)+8s',
    # filename=logging_file, 
    # filemode='a', 
    level=logging.DEBUG,
    handlers=[logging.FileHandler(logging_file, 'a', encoding='utf8'), ColorHandler()]
)

logger = logging.getLogger('pmapp')
logger.info('Program starts up')