15 Star 5 Fork 11

openEuler/Jailhouse-gui

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
create_widget.py 3.42 KB
一键复制 编辑 原始数据 按行查看 历史
tianfangyetan123 提交于 2023-09-21 20:14 +08:00 . jailhouse:Jailhouse-gui
import logging
import os
import sys
import json
import logging
from PySide2 import QtWidgets, QtCore
from forms.ui_create_widget import Ui_CreateWidget
from jh_resource import PlatformMgr, ResourceMgr
class CreateDialog(QtWidgets.QDialog):
logger = logging.getLogger('CreateWidget')
def __init__(self, parent=None):
super().__init__(parent)
self._ui = Ui_CreateWidget()
self._ui.setupUi(self)
self.setWindowFlag(QtCore.Qt.FramelessWindowHint, True)
self._ui.combobox_demo.setView(QtWidgets.QListView())
self._ui.combobox_platform.setView(QtWidgets.QListView())
self.setWindowFlag(QtCore.Qt.WindowContextHelpButtonHint, False)
self.setWindowTitle("创建配置")
pltmgr = PlatformMgr.get_instance()
if pltmgr is None:
return
self._demo_path = "demos"
if getattr(sys, 'frozen', False) and hasattr(sys, '_MEIPASS'):
self._demo_path = os.path.join(getattr(sys, '_MEIPASS'), "demos")
self.logger.info(f"demos path {self._demo_path}")
for name in os.listdir(self._demo_path):
if name.endswith('.jhr'):
self._ui.combobox_demo.addItem(name)
names = pltmgr.board_names()
self._ui.combobox_platform.addItems(names)
self._ui.radiobtn_new.setChecked(True)
self._ui.stackedwidget_params.setCurrentIndex(0)
self._ui.btn_close.clicked.connect(self._on_close)
self._ui.radiobtn_new.clicked.connect(self._on_mode_select)
self._ui.radiobtn_demo.clicked.connect(self._on_mode_select)
self._ui.btn_cancel.clicked.connect(self._on_close)
self._ui.btn_create.clicked.connect(self._on_create)
def _on_close(self):
self.setResult(0)
self.close()
def _on_mode_select(self):
if self.sender() is self._ui.radiobtn_new:
self._ui.stackedwidget_params.setCurrentIndex(0)
elif self.sender() is self._ui.radiobtn_demo:
self._ui.stackedwidget_params.setCurrentIndex(1)
def _on_create(self):
if self._ui.radiobtn_new.isChecked():
plt = self._ui.combobox_platform.currentText()
if len(plt) == 0:
return
name = self._ui.lineedit_name.text().strip()
if len(name) == 0:
return
rsc = ResourceMgr().get_instance().create(name, plt)
if rsc is None:
return
ResourceMgr().get_instance().set_current(rsc)
self.close()
elif self._ui.radiobtn_demo.isChecked():
name = self._ui.lineedit_name.text().strip()
if len(name) == 0:
return
demo = self._ui.combobox_demo.currentText()
demo_fn = os.path.join(self._demo_path, demo)
try:
with open(demo_fn, "rt", encoding='utf8') as f:
value = json.load(f)
except Exception as e:
self.logger.error(f"open {demo_fn} failed: {e}")
return None
rsc = ResourceMgr().get_instance().load(value)
if rsc is None:
self.logger.error("load resource file failed.")
return
rsc.set_name(name)
ResourceMgr().get_instance().set_current(rsc)
self.setResult(1)
self.close()
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/openeuler/Jailhouse-gui.git
git@gitee.com:openeuler/Jailhouse-gui.git
openeuler
Jailhouse-gui
Jailhouse-gui
master

搜索帮助