Fix create startmenu/desktop link
This commit is contained in:
parent
bfd16d9f83
commit
740153bd0d
|
@ -42,10 +42,10 @@ In [releases page](https://github.com/Dummerle/Rare/releases) are AppImages for
|
|||
available
|
||||
|
||||
### Run from source
|
||||
|
||||
1. Run `pip install -r requirements.txt` to get dependencies. If you use `pacman` you can
|
||||
1. Clone the repo with Submodule: `git clone https://github.com/Dummerle/Rare --recurse-submodules`.
|
||||
2. Run `pip install -r requirements.txt` to get dependencies. If you use `pacman` you can
|
||||
run `sudo pacman --needed -S python-wheel python-setuptools python-pyqt5 python-qtawesome python-requests python-pillow`
|
||||
2. For unix operating systems run `sh start.sh`. For windows run `set PYTHONPATH=%CD% && python rare`
|
||||
3. Run `python3 rare`
|
||||
|
||||
## Why Rare?
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ __version__ = "1.6.2"
|
|||
|
||||
resources_path = os.path.join(os.path.dirname(__file__), "resources")
|
||||
languages_path = os.path.join(os.path.dirname(__file__), "languages")
|
||||
data_dir = ""
|
||||
|
||||
# Cache Directory: Store images
|
||||
if p := os.getenv("XDG_CACHE_HOME"):
|
||||
|
|
|
@ -5,11 +5,10 @@ import pathlib
|
|||
import sys
|
||||
from argparse import ArgumentParser
|
||||
|
||||
from rare import __version__, data_dir
|
||||
from rare.utils import singleton
|
||||
|
||||
|
||||
def main():
|
||||
# disable debug.log file
|
||||
# QOpenGLDebugLogger.disableMessages(QOpenGLDebugLogger(), QOpenGLDebugMessage.AnySource, QOpenGLDebugMessage.AnyType)
|
||||
# fix cx_freeze
|
||||
import multiprocessing
|
||||
multiprocessing.freeze_support()
|
||||
|
@ -17,6 +16,9 @@ def main():
|
|||
# insert legendary submodule to path
|
||||
sys.path.insert(0, os.path.join(pathlib.Path(__file__).parent.parent.absolute(), "legendary"))
|
||||
|
||||
# insert source directory
|
||||
sys.path.insert(0, str(pathlib.Path(__file__).parent.parent.absolute()))
|
||||
|
||||
# CLI Options
|
||||
parser = ArgumentParser()
|
||||
parser.add_argument("-V", "--version", action="store_true", help="Shows version and exits")
|
||||
|
@ -36,24 +38,31 @@ def main():
|
|||
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.debug:
|
||||
print(sys.path)
|
||||
|
||||
if args.desktop_shortcut:
|
||||
from rare.utils import utils
|
||||
utils.create_rare_desktop_link("desktop")
|
||||
print("Link created")
|
||||
|
||||
if args.startmenu_shortcut:
|
||||
from rare.utils import utils
|
||||
utils.create_rare_desktop_link("start_menu")
|
||||
print("link created")
|
||||
|
||||
if args.version:
|
||||
from rare import __version__
|
||||
print(__version__)
|
||||
return
|
||||
from rare.utils import singleton
|
||||
try:
|
||||
# this object only allows one instance per machine
|
||||
|
||||
me = singleton.SingleInstance()
|
||||
except singleton.SingleInstanceException:
|
||||
print("Rare is already running")
|
||||
|
||||
from rare import data_dir
|
||||
with open(os.path.join(data_dir, "lockfile"), "w") as file:
|
||||
if args.subparser == "launch":
|
||||
file.write("launch " + args.app_name)
|
||||
|
|
|
@ -55,9 +55,9 @@ class BaseInstalledWidget(QGroupBox):
|
|||
self.create_desktop = QAction(self.tr("Remove Desktop link"))
|
||||
else:
|
||||
self.create_desktop = QAction(self.tr("Create Desktop link"))
|
||||
|
||||
self.create_desktop.triggered.connect(lambda: self.create_desktop_link("desktop"))
|
||||
self.addAction(self.create_desktop)
|
||||
if not is_origin:
|
||||
self.create_desktop.triggered.connect(lambda: self.create_desktop_link("desktop"))
|
||||
self.addAction(self.create_desktop)
|
||||
|
||||
if platform.system() == "Linux":
|
||||
start_menu_file = os.path.expanduser(f"~/.local/share/applications/{self.game.app_title}.desktop")
|
||||
|
@ -69,9 +69,9 @@ class BaseInstalledWidget(QGroupBox):
|
|||
self.create_start_menu = QAction(self.tr("Remove start menu link"))
|
||||
else:
|
||||
self.create_start_menu = QAction(self.tr("Create start menu link"))
|
||||
|
||||
self.create_start_menu.triggered.connect(lambda: self.create_desktop_link("start_menu"))
|
||||
self.addAction(self.create_start_menu)
|
||||
if not is_origin:
|
||||
self.create_start_menu.triggered.connect(lambda: self.create_desktop_link("start_menu"))
|
||||
self.addAction(self.create_start_menu)
|
||||
|
||||
reload_image = QAction(self.tr("Reload Image"), self)
|
||||
reload_image.triggered.connect(self.reload_image)
|
||||
|
@ -99,8 +99,11 @@ class BaseInstalledWidget(QGroupBox):
|
|||
return
|
||||
if not (os.path.exists(os.path.expanduser(f"{path}{self.game.app_title}.desktop"))
|
||||
or os.path.exists(os.path.expanduser(f"{path}{self.game.app_title}.lnk"))):
|
||||
if not create_desktop_link(self.game.app_name, self.core, type_of_link):
|
||||
return
|
||||
try:
|
||||
if not create_desktop_link(self.game.app_name, self.core, type_of_link):
|
||||
return
|
||||
except PermissionError:
|
||||
QMessageBox.warning(self, "Error", "Permission error. Cannot create Desktop Link")
|
||||
if type_of_link == "desktop":
|
||||
self.create_desktop.setText(self.tr("Remove Desktop link"))
|
||||
elif type_of_link == "start_menu":
|
||||
|
|
|
@ -5,7 +5,7 @@ import sys
|
|||
from logging import getLogger
|
||||
|
||||
from PyQt5.QtCore import QSettings, Qt
|
||||
from PyQt5.QtWidgets import QWidget
|
||||
from PyQt5.QtWidgets import QWidget, QMessageBox
|
||||
|
||||
from legendary.core import LegendaryCore
|
||||
from rare import cache_dir
|
||||
|
@ -101,12 +101,11 @@ class RareSettings(QWidget, Ui_RareSettings):
|
|||
)
|
||||
|
||||
if platform.system() == "Linux":
|
||||
|
||||
self.desktop_file = os.path.expanduser("~/Desktop/Rare.desktop")
|
||||
self.start_menu_link = os.path.expanduser("~/.local/share/applications/Rare.desktop")
|
||||
elif platform.system() == "Windows":
|
||||
self.desktop_file = os.path.expanduser("~/Desktop/Rare.lnk")
|
||||
self.start_menu_link = os.path.expandvars("%appdata%/Microsoft/Windows/Start Menu")
|
||||
self.start_menu_link = os.path.expandvars("%appdata%\\Microsoft\\Windows\\Start Menu")
|
||||
else:
|
||||
self.desktop_file = ""
|
||||
self.start_menu_link = ""
|
||||
|
@ -138,20 +137,27 @@ class RareSettings(QWidget, Ui_RareSettings):
|
|||
self.log_dir_size_label.setText("0KB")
|
||||
|
||||
def create_start_menu_link(self):
|
||||
if not os.path.exists(self.start_menu_link):
|
||||
utils.create_rare_desktop_link("start_menu")
|
||||
self.startmenu_link.setText(self.tr("Remove start menu link"))
|
||||
else:
|
||||
os.remove(self.start_menu_link)
|
||||
self.startmenu_link.setText(self.tr("Create start menu link"))
|
||||
try:
|
||||
if not os.path.exists(self.start_menu_link):
|
||||
utils.create_rare_desktop_link("start_menu")
|
||||
self.startmenu_link.setText(self.tr("Remove start menu link"))
|
||||
else:
|
||||
os.remove(self.start_menu_link)
|
||||
self.startmenu_link.setText(self.tr("Create start menu link"))
|
||||
except PermissionError as e:
|
||||
logger.error(str(e))
|
||||
QMessageBox.warning(self, "Error", "Permission error, cannot remove " + str(self.start_menu_link))
|
||||
|
||||
def create_desktop_link(self):
|
||||
if not os.path.exists(self.desktop_file):
|
||||
utils.create_rare_desktop_link("desktop")
|
||||
self.desktop_link.setText(self.tr("Remove Desktop link"))
|
||||
else:
|
||||
os.remove(self.desktop_file)
|
||||
self.desktop_link.setText(self.tr("Create desktop link"))
|
||||
try:
|
||||
if not os.path.exists(self.desktop_file):
|
||||
utils.create_rare_desktop_link("desktop")
|
||||
self.desktop_link.setText(self.tr("Remove Desktop link"))
|
||||
else:
|
||||
os.remove(self.desktop_file)
|
||||
self.desktop_link.setText(self.tr("Create desktop link"))
|
||||
except PermissionError as e:
|
||||
logger.warning(self, "Error", "Permission error, cannot remove " + str(self.desktop_file))
|
||||
|
||||
def on_color_select_changed(self, color):
|
||||
if color:
|
||||
|
|
|
@ -64,7 +64,6 @@ class GameWidget(QWidget):
|
|||
break
|
||||
else:
|
||||
logger.info(", ".join([img["type"] for img in json_info["keyImages"]]))
|
||||
# print(json_info["keyImages"])
|
||||
|
||||
self.setLayout(self.layout)
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ import logging
|
|||
import random
|
||||
|
||||
from PyQt5.QtCore import pyqtSignal
|
||||
from PyQt5.QtWidgets import QWidget, QGroupBox, QScrollArea, QCheckBox, QVBoxLayout, QLabel
|
||||
from PyQt5.QtWidgets import QGroupBox, QScrollArea, QCheckBox, QVBoxLayout, QLabel
|
||||
|
||||
from legendary.core import LegendaryCore
|
||||
from rare.components.tabs.shop import ShopApiCore
|
||||
|
@ -240,7 +240,6 @@ class ShopWidget(QScrollArea, Ui_ShopWidget):
|
|||
|
||||
if data:
|
||||
for game in data:
|
||||
print(game)
|
||||
w = GameWidget(self.path, game, 275)
|
||||
self.game_widget.layout().addWidget(w)
|
||||
w.show_info.connect(self.show_game.emit)
|
||||
|
|
|
@ -254,20 +254,15 @@ def create_rare_desktop_link(type_of_link):
|
|||
# Path to location of link file
|
||||
pathLink = os.path.join(target_folder, linkName)
|
||||
|
||||
if sys.executable.endswith("Rare.exe"):
|
||||
executable = sys.executable
|
||||
else:
|
||||
executable = f"{sys.executable} {os.path.abspath(sys.argv[0])}"
|
||||
|
||||
if "python.exe" in executable:
|
||||
executable = executable.replace("python.exe", "pythonw.exe")
|
||||
|
||||
executable = sys.executable
|
||||
executable = executable.replace("python.exe", "pythonw.exe")
|
||||
logger.debug(executable)
|
||||
# Add shortcut
|
||||
shell = Dispatch('WScript.Shell')
|
||||
shortcut = shell.CreateShortCut(pathLink)
|
||||
shortcut.Targetpath = executable
|
||||
shortcut.Arguments = os.path.abspath(sys.argv[0])
|
||||
shortcut.WorkingDirectory = os.getcwd()
|
||||
if not sys.executable.endswith("Rare.exe"):
|
||||
shortcut.Arguments = os.path.abspath(sys.argv[0])
|
||||
|
||||
# Icon
|
||||
shortcut.IconLocation = os.path.join(resources_path, "images", "Rare.ico")
|
||||
|
|
Loading…
Reference in a new issue