1
0
Fork 0
mirror of synced 2024-05-14 17:42:41 +12:00

Fix create startmenu/desktop link

This commit is contained in:
BuildTools 2021-09-18 16:34:43 +02:00
parent bfd16d9f83
commit 740153bd0d
9 changed files with 55 additions and 45 deletions

View file

@ -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?

View file

@ -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"):

View file

@ -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)

View file

@ -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":

View file

@ -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:

View file

@ -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)

View file

@ -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)

View file

@ -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")

View file

@ -1,2 +0,0 @@
export PYTHONPATH=$PWD
python3 rare