34 from uuid
import uuid4
36 from PyQt5.QtGui import QPalette, QColor, QFontDatabase, QFont
39 from PyQt5.Qt
import PYQT_VERSION_STR
41 from classes.logger
import log
42 from classes
import info, settings, project_data, updates, language, ui_util, logger_libopenshot
48 QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
49 except AttributeError:
56 return QApplication.instance()
65 QApplication.__init__(self, *args)
69 v = openshot.GetVersion()
70 log.info(
"openshot-qt version: %s" % info.VERSION)
71 log.info(
"libopenshot version: %s" % v.ToString())
72 log.info(
"platform: %s" % platform.platform())
73 log.info(
"processor: %s" % platform.processor())
74 log.info(
"machine: %s" % platform.machine())
75 log.info(
"python version: %s" % platform.python_version())
76 log.info(
"qt5 version: %s" % QT_VERSION_STR)
77 log.info(
"pyqt5 version: %s" % PYQT_VERSION_STR)
82 self.setApplicationName(
'openshot')
83 self.setApplicationVersion(info.SETUP[
'version'])
90 from classes
import exceptions
91 sys.excepthook = exceptions.ExceptionHandler
98 libopenshot_version = openshot.GetVersion().ToString()
99 if libopenshot_version < info.MINIMUM_LIBOPENSHOT_VERSION:
100 QMessageBox.warning(
None, _(
"Wrong Version of libopenshot Detected"),
101 _(
"<b>Version %(minimum_version)s is required</b>, but %(current_version)s was detected. Please update libopenshot or download our latest installer.") %
102 {
"minimum_version": info.MINIMUM_LIBOPENSHOT_VERSION,
"current_version": libopenshot_version})
113 self.updates.add_listener(self.
project)
120 self.logger_libopenshot.start()
126 if self.settings.get(
"theme") !=
"No Theme":
129 log.info(
"Setting font to %s" % os.path.join(info.IMAGES_PATH,
"fonts",
"Ubuntu-R.ttf"))
130 font_id = QFontDatabase.addApplicationFont(os.path.join(info.IMAGES_PATH,
"fonts",
"Ubuntu-R.ttf"))
131 font_family = QFontDatabase.applicationFontFamilies(font_id)[0]
132 font = QFont(font_family)
133 font.setPointSizeF(10.5)
134 QApplication.setFont(font)
135 except Exception
as ex:
136 log.error(
"Error setting Ubuntu-R.ttf QFont: %s" % str(ex))
139 if self.settings.get(
"theme") ==
"Humanity: Dark":
141 log.info(
"Setting custom dark theme")
142 self.setStyle(QStyleFactory.create(
"Fusion"))
144 darkPalette = self.palette()
145 darkPalette.setColor(QPalette.Window, QColor(53, 53, 53))
146 darkPalette.setColor(QPalette.WindowText, Qt.white)
147 darkPalette.setColor(QPalette.Base, QColor(25, 25, 25))
148 darkPalette.setColor(QPalette.AlternateBase, QColor(53, 53, 53))
149 darkPalette.setColor(QPalette.ToolTipBase, Qt.white)
150 darkPalette.setColor(QPalette.ToolTipText, Qt.white)
151 darkPalette.setColor(QPalette.Text, Qt.white)
152 darkPalette.setColor(QPalette.Button, QColor(53, 53, 53))
153 darkPalette.setColor(QPalette.ButtonText, Qt.white)
154 darkPalette.setColor(QPalette.BrightText, Qt.red)
155 darkPalette.setColor(QPalette.Highlight, QColor(42, 130, 218))
156 darkPalette.setColor(QPalette.HighlightedText, Qt.black)
157 darkPalette.setColor(QPalette.Disabled, QPalette.Text, QColor(104, 104, 104))
158 self.setPalette(darkPalette)
159 self.setStyleSheet(
"QToolTip { color: #ffffff; background-color: #2a82da; border: 0px solid white; }")
162 from windows.main_window
import MainWindow
167 self.window.updateStatusChanged(
False,
False)
169 log.info(
'Process command-line arguments: %s' % args)
170 if len(args[0]) == 2:
174 self.window.open_project(path)
177 self.window.filesTreeView.add_file(path)
180 self.window.RecoverBackup.emit()
182 def _tr(self, message):
183 return self.translate(
"", message)
194 except Exception
as ex:
195 log.error(
"Couldn't save user settings on exit.\n{}".format(ex))
def run
Start the primary Qt event loop for the interface.
This class is used to track and distribute changes to listeners.
def get_app
Returns the current QApplication instance of OpenShot.
def load_theme
Load the current OS theme, or fallback to a default one.
def init_language
Find the current locale, and install the correct translators.
This class is the primary QApplication for OpenShot.
This class allows advanced searching of data structure, implements changes interface.
This class only allows setting pre-existing keys taken from default settings file, and merges user settings on load, assumes default OS dir.