find icons if cwd is not in the program root

This commit is contained in:
2022-08-27 17:59:37 +02:00
parent 0c55fdc44b
commit b6aa3083d2
6 changed files with 34 additions and 21 deletions

View File

@@ -4,7 +4,6 @@ import signal
from PySide6 import QtCore from PySide6 import QtCore
from PySide6.QtWidgets import QApplication from PySide6.QtWidgets import QApplication
from PySide6.QtCore import QTimer from PySide6.QtCore import QTimer
from PySide6.QtGui import QIcon
import sys import sys
import constants import constants
@@ -12,6 +11,8 @@ from src.pluginregistry import PluginRegistry
import gettext import gettext
from src.ui.icon import Icon
gettext.install('krowlog', 'locale') gettext.install('krowlog', 'locale')
logging.basicConfig(level=logging.INFO) logging.basicConfig(level=logging.INFO)
@@ -31,7 +32,7 @@ def stop_signal(signum, _stackframe):
if __name__ == "__main__": if __name__ == "__main__":
app = QApplication(sys.argv) app = QApplication(sys.argv)
app.setWindowIcon(QIcon(constants.krow_icon)) # works only for Linux app.setWindowIcon(Icon(constants.krow_icon)) # works only for Linux
# make icon appear in Windows # make icon appear in Windows
# see https://stackoverflow.com/questions/1551605/how-to-set-applications-taskbar-icon-in-windows-7/1552105#1552105 # see https://stackoverflow.com/questions/1551605/how-to-set-applications-taskbar-icon-in-windows-7/1552105#1552105

View File

@@ -3,6 +3,8 @@ from typing import Callable
from PySide6.QtGui import QAction, QIcon from PySide6.QtGui import QAction, QIcon
from PySide6.QtWidgets import QMenu, QPushButton, QWidget from PySide6.QtWidgets import QMenu, QPushButton, QWidget
from src.ui.icon import Icon
class RAction(): class RAction():
@@ -65,9 +67,9 @@ class RAction():
def _update_check_state(self): def _update_check_state(self):
if self._action: if self._action:
if self.checked: if self.checked:
self._action.setIcon(QIcon("icons/ionicons/checkbox-outline.svg")) self._action.setIcon(Icon("icons/ionicons/checkbox-outline.svg"))
else: else:
self._action.setIcon(QIcon("icons/ionicons/square-outline.svg")) self._action.setIcon(Icon("icons/ionicons/square-outline.svg"))
def set_label(self, label: str): def set_label(self, label: str):
if self._action: if self._action:
@@ -77,9 +79,9 @@ class RAction():
action = QAction(self.label, qmenu) action = QAction(self.label, qmenu)
self._action = action self._action = action
if self.icon_from_theme: if self.icon_from_theme:
action.setIcon(QIcon.fromTheme(self.icon_from_theme)) action.setIcon(Icon.fromTheme(self.icon_from_theme))
if self.icon_file: if self.icon_file:
action.setIcon(QIcon(self.icon_file)) action.setIcon(Icon(self.icon_file))
if self.shortcut: if self.shortcut:
action.setShortcut(self.shortcut) action.setShortcut(self.shortcut)
if self.action: if self.action:
@@ -95,9 +97,9 @@ class RAction():
if self.label: if self.label:
button.setText(self.label) button.setText(self.label)
if self.icon_from_theme: if self.icon_from_theme:
button.setIcon(QIcon.fromTheme(self.icon_from_theme)) button.setIcon(Icon.fromTheme(self.icon_from_theme))
if self.icon_file: if self.icon_file:
button.setIcon(QIcon(self.icon_file)) button.setIcon(Icon(self.icon_file))
if self.shortcut: if self.shortcut:
button.setShortcut(self.shortcut) button.setShortcut(self.shortcut)
if self.action: if self.action:

View File

@@ -7,7 +7,9 @@ from PySide6.QtCore import Qt
from PySide6.QtGui import QFont, QPixmap from PySide6.QtGui import QFont, QPixmap
from PySide6.QtWidgets import * from PySide6.QtWidgets import *
from pathlib import Path
import constants import constants
from src.ui.icon import Icon
from src.ui.label import Label from src.ui.label import Label
from src.ui.vbox import VBox from src.ui.vbox import VBox
from src.i18n import _ from src.i18n import _
@@ -32,7 +34,7 @@ class AboutDialog(QDialog):
version.setAlignment(Qt.AlignmentFlag.AlignLeft) version.setAlignment(Qt.AlignmentFlag.AlignLeft)
app_icon = QLabel() app_icon = QLabel()
app_icon.setPixmap(QPixmap(constants.krow_icon)) app_icon.setPixmap(Icon(constants.krow_icon).pixmap(64, 64))
heading = QWidget(self) heading = QWidget(self)
hbox = QHBoxLayout(heading) hbox = QHBoxLayout(heading)
hbox.addWidget(app_icon) hbox.addWidget(app_icon)
@@ -85,8 +87,4 @@ class AboutDialog(QDialog):
return result return result
def _version(self): def _version(self):
with open('VERSION.info', "rt") as f: return Path(__file__).parent.parent.parent.parent.joinpath('VERSION.info').read_text("utf8").strip()
line = f.readline()
version = line.strip()
return version

View File

@@ -18,6 +18,7 @@ from src.ui.bigtext.logFileModel import LogFileModel
from src.i18n import _ from src.i18n import _
from src.pluginregistry import PluginRegistry from src.pluginregistry import PluginRegistry
from src.ui.hbox import HBox from src.ui.hbox import HBox
from src.ui.icon import Icon
from src.ui.label import Label from src.ui.label import Label
from src.zonedpluginregistry import ZonedPluginRegistry from src.zonedpluginregistry import ZonedPluginRegistry
@@ -151,7 +152,7 @@ class FilterWidget(QWidget):
self.btn_cancel_search.pressed.connect(self._cancel_search) self.btn_cancel_search.pressed.connect(self._cancel_search)
self.search_is_running.connect(self.search_running_status_changed) self.search_is_running.connect(self.search_running_status_changed)
self.btn_bookmark = QPushButton(QIcon("icons/ionicons/star.svg"), "") self.btn_bookmark = QPushButton(Icon("icons/ionicons/star.svg"), "")
self.btn_bookmark.setToolTip(_("save query")) self.btn_bookmark.setToolTip(_("save query"))
self.btn_bookmark.pressed.connect(self._save_query) self.btn_bookmark.pressed.connect(self._save_query)

View File

@@ -1,4 +1,3 @@
from PySide6.QtGui import QIcon
from PySide6.QtWidgets import QDialog, QLineEdit, QLabel, QGridLayout, QCheckBox, QListWidget, QListWidgetItem, \ from PySide6.QtWidgets import QDialog, QLineEdit, QLabel, QGridLayout, QCheckBox, QListWidget, QListWidgetItem, \
QPushButton, QDialogButtonBox, QMessageBox, QSizePolicy QPushButton, QDialogButtonBox, QMessageBox, QSizePolicy
@@ -9,6 +8,7 @@ from src.ui.hbox import HBox
from src.settings.settings import Settings from src.settings.settings import Settings
from src.i18n import _ from src.i18n import _
from src.ui.icon import Icon
class PayloadItem(QListWidgetItem): class PayloadItem(QListWidgetItem):
@@ -32,23 +32,23 @@ class HighlightingDialog(QDialog):
form_grid.addWidget(self.list, row, 0, 1, 2) form_grid.addWidget(self.list, row, 0, 1, 2)
row = row + 1 row = row + 1
self.btn_add = QPushButton(QIcon.fromTheme("list-add"), _("Add")) self.btn_add = QPushButton(Icon.fromTheme("list-add"), _("Add"))
self.btn_add.setSizePolicy(QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)) self.btn_add.setSizePolicy(QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed))
self.btn_add.pressed.connect(self._add) self.btn_add.pressed.connect(self._add)
self.btn_update = QPushButton(QIcon.fromTheme("stock_edit"), _("Update")) self.btn_update = QPushButton(Icon.fromTheme("stock_edit"), _("Update"))
self.btn_update.setSizePolicy(QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)) self.btn_update.setSizePolicy(QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed))
self.btn_update.pressed.connect(self._update) self.btn_update.pressed.connect(self._update)
self.btn_delete = QPushButton(QIcon.fromTheme("list-remove"), _("Remove")) self.btn_delete = QPushButton(Icon.fromTheme("list-remove"), _("Remove"))
self.btn_delete.setSizePolicy(QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)) self.btn_delete.setSizePolicy(QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed))
self.btn_delete.pressed.connect(self._delete) self.btn_delete.pressed.connect(self._delete)
self.btn_move_up = QPushButton(QIcon.fromTheme("go-up"), _("Up")) self.btn_move_up = QPushButton(Icon.fromTheme("go-up"), _("Up"))
self.btn_move_up.setSizePolicy(QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)) self.btn_move_up.setSizePolicy(QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed))
self.btn_move_up.pressed.connect(self._move_up) self.btn_move_up.pressed.connect(self._move_up)
self.btn_move_down = QPushButton(QIcon.fromTheme("go-down"), _("Down")) self.btn_move_down = QPushButton(Icon.fromTheme("go-down"), _("Down"))
self.btn_move_down.setSizePolicy(QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)) self.btn_move_down.setSizePolicy(QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed))
self.btn_move_down.pressed.connect(self._move_down) self.btn_move_down.pressed.connect(self._move_down)
button_box = HBox(self.btn_update, self.btn_add, self.btn_delete, self.btn_move_up, self.btn_move_down) button_box = HBox(self.btn_update, self.btn_add, self.btn_delete, self.btn_move_up, self.btn_move_down)

11
src/ui/icon.py Normal file
View File

@@ -0,0 +1,11 @@
from PySide6.QtGui import QIcon
from pathlib import Path
class Icon(QIcon):
def __init__(self, file_name: str):
super(Icon, self).__init__("%s" % Path(__file__).parent.parent.parent.joinpath(file_name).absolute())
print("%s -> %s" % (file_name, Path(__file__).parent.parent.parent.joinpath(file_name).absolute()))
def fromTheme(icon_from_theme: str) -> QIcon:
return QIcon.fromTheme(icon_from_theme)