mirror of
https://github.com/xgui4/LCE-Qt-Launcher.git
synced 2026-07-16 02:40:38 +00:00
make import remeber the inst + functonnal instance lists
This commit is contained in:
52
src/form.ui
52
src/form.ui
@@ -33,9 +33,9 @@
|
||||
<property name="contextMenuPolicy">
|
||||
<enum>Qt::ContextMenuPolicy::ActionsContextMenu</enum>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QTabWidget" name="mainWidget">
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="0" column="0">
|
||||
<widget class="QTabWidget" name="instancesListWidget">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
@@ -58,7 +58,7 @@
|
||||
<enum>QTabWidget::TabShape::Rounded</enum>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="usesScrollButtons">
|
||||
<bool>false</bool>
|
||||
@@ -420,10 +420,7 @@
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="instancesListTab">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<widget class="QWidget" name="InstancesList">
|
||||
<attribute name="icon">
|
||||
<iconset resource="../res.qrc">
|
||||
<normaloff>:/assets/chest.png</normaloff>:/assets/chest.png</iconset>
|
||||
@@ -431,14 +428,39 @@
|
||||
<attribute name="title">
|
||||
<string>Instances Lists</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="InstancesListTabMasterLayout">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<item>
|
||||
<widget class="QWidget" name="defaulInstancesListWidget" native="true">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="defaultInstancesListLayout"/>
|
||||
</widget>
|
||||
<layout class="QVBoxLayout" name="InstancesListLayout">
|
||||
<item>
|
||||
<widget class="QListWidget" name="listWidget">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<bold>true</bold>
|
||||
<underline>false</underline>
|
||||
</font>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Shape::NoFrame</enum>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>30</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="resizeMode">
|
||||
<enum>QListView::ResizeMode::Fixed</enum>
|
||||
</property>
|
||||
<property name="itemAlignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
</property>
|
||||
<property name="supportedDragActions">
|
||||
<set>Qt::DropAction::ActionMask</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
|
||||
@@ -14,8 +14,10 @@ from PySide6.QtWidgets import (
|
||||
|
||||
from lce_qt_launcher.app_context import AppContext
|
||||
from lce_qt_launcher.build_info import BuildInfo
|
||||
from lce_qt_launcher.managers import import_managers
|
||||
from lce_qt_launcher.managers.instance_manager import Instance, InstanceManager
|
||||
from lce_qt_launcher.managers.system_manager import SystemManager
|
||||
from lce_qt_launcher.models.app_data import AppData
|
||||
from lce_qt_launcher.models.preferences import UserPref
|
||||
from lce_qt_launcher.ui_settingDialog import Ui_settingDialog
|
||||
from lce_qt_launcher.views.browser_dialog import BrowserDialog
|
||||
@@ -82,13 +84,14 @@ def show_instance_editor(parent : QWidget) -> None:
|
||||
"""Features : Open the Instance Editor"""
|
||||
parent.instance_window.show()
|
||||
|
||||
def load_instance(parent : QWidget, instanceManager : InstanceManager, appContext: AppContext, buildInfo : BuildInfo) -> None:
|
||||
def load_instance(parent : QWidget, instanceManager : InstanceManager, appContext: AppContext, buildInfo : BuildInfo, appData : AppData) -> None:
|
||||
"""Features : Load the Selected Instance"""
|
||||
file_name: tuple[str, str] = QFileDialog.getOpenFileName(
|
||||
parent, "Load Instance File",
|
||||
appContext.sys_man.found_default_save_path(),
|
||||
f"{buildInfo.app_name} Instance (*{buildInfo.instance_extension})")
|
||||
instanceManager.load_instance(file_name[0])
|
||||
import_managers.import_inst_file_to_app_data(file_name[0], appData)
|
||||
|
||||
def show_about_qt(parent : QWidget) -> None:
|
||||
"""Features : Load the Selected Instance"""
|
||||
|
||||
12
src/lce_qt_launcher/managers/import_managers.py
Normal file
12
src/lce_qt_launcher/managers/import_managers.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from lce_qt_launcher.models.app_data import AppData
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
import os
|
||||
|
||||
def import_inst_file_to_app_data(instance_file_path : str, appData : AppData, filename : str = ""):
|
||||
if filename == "":
|
||||
filename_Path = Path(f"{instance_file_path}")
|
||||
filename = filename_Path.name
|
||||
destinations = os.path.join(appData.appDataDirs[0], "instances", filename)
|
||||
os.symlink(instance_file_path, destinations)
|
||||
@@ -9,6 +9,8 @@ from pathlib import Path
|
||||
import json
|
||||
import os
|
||||
|
||||
from lce_qt_launcher.views import term_service
|
||||
|
||||
def _is_compiled() -> bool:
|
||||
return "__compiled__" in globals()
|
||||
|
||||
@@ -37,7 +39,15 @@ class AppData(QObject):
|
||||
#TODO : docstring
|
||||
"""
|
||||
defaults_insts_dir : Path = Path(os.path.join(self.appDataDirs[0], "instances"))
|
||||
print(defaults_insts_dir)
|
||||
if not defaults_insts_dir.exists():
|
||||
term_service.print_information(f"{defaults_insts_dir} did not exist. Trying to recreate it.")
|
||||
try:
|
||||
os.makedirs(defaults_insts_dir)
|
||||
except OSError:
|
||||
term_service.print_error("An OS error have occured : {OSError}")
|
||||
except RuntimeError:
|
||||
term_service.print_error("An une error have occured : {RuntineError}")
|
||||
return
|
||||
instancesLists : list[Instance] = []
|
||||
for file_path in defaults_insts_dir.iterdir():
|
||||
@@ -49,7 +59,9 @@ class AppData(QObject):
|
||||
new_inst.load_inst_from_dict(context_dict)
|
||||
instancesLists.append(new_inst)
|
||||
except (json.JSONDecodeError, OSError, ValueError):
|
||||
continue
|
||||
term_service.print_error(f"Cannot decode JSON {OSError} {ValueError} {json.JSONDecodeError}")
|
||||
else:
|
||||
term_service.print_information(f"{file_path} was not a file.")
|
||||
self.instsList = instancesLists
|
||||
|
||||
def _get_source_dir(self) -> str:
|
||||
@@ -98,7 +110,7 @@ class AppData(QObject):
|
||||
Returns:
|
||||
str: _description_
|
||||
"""
|
||||
dirs: PlatformDirs = PlatformDirs("Xgui4", "LCE-Qt-Launcher")
|
||||
dirs: PlatformDirs = PlatformDirs("LCE-Qt-Launcher", "Xgui4")
|
||||
return dirs.user_data_dir
|
||||
|
||||
def _get_site_app_data_dir(self) -> str:
|
||||
@@ -107,7 +119,7 @@ class AppData(QObject):
|
||||
Returns:
|
||||
str: _description_
|
||||
"""
|
||||
dirs: PlatformDirs = PlatformDirs("Xgui4", "LCE-Qt-Launcher")
|
||||
dirs: PlatformDirs = PlatformDirs("LCE-Qt-Launcher", "Xgui4")
|
||||
return dirs.site_data_dir
|
||||
|
||||
def _get_app_cache_dir(self) -> str:
|
||||
@@ -116,7 +128,7 @@ class AppData(QObject):
|
||||
Returns:
|
||||
str: _description_
|
||||
"""
|
||||
dirs: PlatformDirs = PlatformDirs("Xgui4", "LCE-Qt-Launcher")
|
||||
dirs: PlatformDirs = PlatformDirs("LCE-Qt-Launcher", "Xgui4")
|
||||
return dirs.user_cache_dir
|
||||
|
||||
def _get_app_log_dir(self) -> str:
|
||||
@@ -125,7 +137,7 @@ class AppData(QObject):
|
||||
Returns:
|
||||
str: _description_
|
||||
"""
|
||||
dirs: PlatformDirs = PlatformDirs("Xgui4", "LCE-Qt-Launcher")
|
||||
dirs: PlatformDirs = PlatformDirs("LCE-Qt-Launcher", "Xgui4")
|
||||
return dirs.user_log_dir
|
||||
|
||||
def _get_app_config_dir(self) -> str:
|
||||
@@ -134,5 +146,5 @@ class AppData(QObject):
|
||||
Returns:
|
||||
str: _description_
|
||||
"""
|
||||
dirs: PlatformDirs = PlatformDirs("Xgui4", "LCE-Qt-Launcher")
|
||||
dirs: PlatformDirs = PlatformDirs("LCE-Qt-Launcher", "Xgui4")
|
||||
return dirs.user_config_dir
|
||||
@@ -2,15 +2,17 @@ from PySide6.QtWidgets import (
|
||||
QApplication,
|
||||
QMainWindow,
|
||||
QLabel,
|
||||
QDialog
|
||||
QDialog,
|
||||
QListWidgetItem
|
||||
)
|
||||
from PySide6.QtGui import (
|
||||
QPalette,
|
||||
QPixmap,
|
||||
QPixmap,
|
||||
QBrush
|
||||
)
|
||||
from PySide6.QtCore import (
|
||||
qVersion
|
||||
qVersion,
|
||||
Qt
|
||||
)
|
||||
|
||||
import sys
|
||||
@@ -22,7 +24,7 @@ from pathlib import Path
|
||||
|
||||
from lce_qt_launcher.managers.system_manager import SystemManager
|
||||
from lce_qt_launcher.app_context import AppContext
|
||||
from lce_qt_launcher.managers.instance_manager import InstanceManager
|
||||
from lce_qt_launcher.managers.instance_manager import Instance, InstanceManager
|
||||
from lce_qt_launcher.build_info import BuildInfo
|
||||
from lce_qt_launcher.models.app_data import AppData
|
||||
from lce_qt_launcher.ui_about import Ui_AboutDialog
|
||||
@@ -118,7 +120,7 @@ class Launcher(QMainWindow):
|
||||
def load_instance() -> None:
|
||||
"""_summary_ Open the Load Save File Dialog
|
||||
"""
|
||||
features.load_instance(self, instanceManager, appContext, buildInfo)
|
||||
features.load_instance(self, instanceManager, appContext, buildInfo, appData)
|
||||
self.image_label = instanceManager.instance.image
|
||||
self.news_feed = instanceManager.instance.news_feed
|
||||
self.instance_name = instanceManager.instance.name
|
||||
@@ -128,7 +130,7 @@ class Launcher(QMainWindow):
|
||||
pixmap = QPixmap(self.image_label)
|
||||
self.ui.instance_img.setPixmap(pixmap)
|
||||
self.ui.repo_name_branch.setText(self.instance_name)
|
||||
self.ui.newsEngineView.setUrl(self.news_feed)
|
||||
self.ui.newsEngineView.setUrl(self.news_feed)
|
||||
|
||||
def show_setting_dialog() -> None:
|
||||
"""_summary_ Show the setting Dialog
|
||||
@@ -264,7 +266,15 @@ class Launcher(QMainWindow):
|
||||
open_github_issues = lambda : webbrowser.open(appContext.buildInfo.git_repo_url + "/issues")
|
||||
_ = self.ui.actionReport_a_Bugs_or_Sugess_a_feature.triggered.connect(open_github_issues)
|
||||
|
||||
self.ui.InstancesListTabMasterLayout
|
||||
instances : list[Instance] = list()
|
||||
|
||||
for inst in appData.instsList:
|
||||
instances.append(inst)
|
||||
item = QListWidgetItem()
|
||||
item.setText(inst.name)
|
||||
item.setIcon(QPixmap(inst.image))
|
||||
item.setData(Qt.ItemDataRole.FileInfoRole, inst)
|
||||
self.ui.listWidget.addItem(item)
|
||||
|
||||
self.versionlabel: QLabel = QLabel(f"Version {buildInfo.version}")
|
||||
self.ui.statusbar.addPermanentWidget(self.versionlabel)
|
||||
|
||||
Reference in New Issue
Block a user