def simpleAppStartup( argv, appinfo, mwFactory, quitOnLastWindowClosed=True, app=None, raiseIt=True, installErrorHandler=False ): """ Module function to start up an application that doesn't need a specialized start up. This function is used by all of eric6's helper programs. @param argv list of commandline parameters (list of strings) @param appinfo dictionary describing the application @param mwFactory factory function generating the main widget. This function must accept the following parameter. <dl> <dt>argv</dt> <dd>list of commandline parameters (list of strings)</dd> </dl> @keyparam quitOnLastWindowClosed flag indicating to quit the application, if the last window was closed (boolean) @keyparam app reference to the application object (QApplication or None) @keyparam raiseIt flag indicating to raise the generated application window (boolean) @keyparam installErrorHandler flag indicating to install an error handler dialog (boolean) @return exit result (integer) """ handleArgs(argv, appinfo) if app is None: # set the library paths for plugins setLibraryPaths() app = E5Application(argv) app.setQuitOnLastWindowClosed(quitOnLastWindowClosed) # the following code depends upon a valid application object import Preferences initializeResourceSearchPath() QApplication.setWindowIcon(UI.PixmapCache.getIcon("eric.png")) qt4TransDir = Preferences.getQt4TranslationsDir() if not qt4TransDir: qt4TransDir = QLibraryInfo.location(QLibraryInfo.TranslationsPath) loadTranslators(qt4TransDir, app) w = mwFactory(argv) if quitOnLastWindowClosed: app.lastWindowClosed.connect(app.quit) w.show() if raiseIt: w.raise_() if installErrorHandler: # generate a graphical error handler from E5Gui import E5ErrorMessage eMsg = E5ErrorMessage.qtHandler() eMsg.setMinimumSize(600, 400) return app.exec_()
def simpleAppStartup(argv, appinfo, mwFactory, quitOnLastWindowClosed=True, app=None, raiseIt=True, installErrorHandler=False): """ Module function to start up an application that doesn't need a specialized start up. This function is used by all of eric6's helper programs. @param argv list of commandline parameters (list of strings) @param appinfo dictionary describing the application @param mwFactory factory function generating the main widget. This function must accept the following parameter. <dl> <dt>argv</dt> <dd>list of commandline parameters (list of strings)</dd> </dl> @keyparam quitOnLastWindowClosed flag indicating to quit the application, if the last window was closed (boolean) @keyparam app reference to the application object (QApplication or None) @keyparam raiseIt flag indicating to raise the generated application window (boolean) @keyparam installErrorHandler flag indicating to install an error handler dialog (boolean) @return exit result (integer) """ handleArgs(argv, appinfo) if app is None: # set the library paths for plugins setLibraryPaths() app = E5Application(argv) app.setQuitOnLastWindowClosed(quitOnLastWindowClosed) # the following code depends upon a valid application object import Preferences initializeResourceSearchPath() QApplication.setWindowIcon(UI.PixmapCache.getIcon("eric.png")) qtTransDir = Preferences.getQtTranslationsDir() if not qtTransDir: qtTransDir = QLibraryInfo.location(QLibraryInfo.TranslationsPath) loadTranslators(qtTransDir, app, ("qscintilla",)) # qscintilla needed for web browser w = mwFactory(argv) if quitOnLastWindowClosed: app.lastWindowClosed.connect(app.quit) w.show() if raiseIt: w.raise_() if installErrorHandler: # generate a graphical error handler from E5Gui import E5ErrorMessage eMsg = E5ErrorMessage.qtHandler() eMsg.setMinimumSize(600, 400) return app.exec_()
def main(): """ Main entry point into the application. """ from Globals import AppInfo import Globals global app, args, mainWindow, splash, restartArgs, inMainLoop sys.excepthook = excepthook from PyQt5.QtGui import QGuiApplication QGuiApplication.setDesktopFileName("eric6.desktop") options = [ ("--config=configDir", "use the given directory as the one containing the config files"), ("--debug", "activate debugging output to the console"), ("--no-splash", "don't show the splash screen"), ("--no-open", "don't open anything at startup except that given in command"), ("--no-crash", "don't check for a crash session file on startup"), ("--disable-crash", "disable the support for crash sessions"), ("--disable-plugin=<plug-in name>", "disable the given plug-in (may be repeated)"), ("--plugin=plugin-file", "load the given plugin file (plugin development)"), ("--settings=settingsDir", "use the given directory to store the settings files"), ("--start-file", "load the most recently opened file"), ("--start-multi", "load the most recently opened multi-project"), ("--start-project", "load the most recently opened project"), ("--start-session", "load the global session file"), ("--", "indicate that there are options for the program to be debugged"), ("", "(everything after that is considered arguments for this program)") ] appinfo = AppInfo.makeAppInfo(sys.argv, "Eric6", "[project | files... [--] [debug-options]]", "A Python IDE", options) if "__PYVENV_LAUNCHER__" in os.environ: del os.environ["__PYVENV_LAUNCHER__"] from Toolbox import Startup # set the library paths for plugins Startup.setLibraryPaths() app = E5Application(sys.argv) ddindex = Startup.handleArgs(sys.argv, appinfo) logging.debug("Importing Preferences") import Preferences if Preferences.getUI("SingleApplicationMode"): handleSingleApplication(ddindex) # set the search path for icons Startup.initializeResourceSearchPath() # generate and show a splash window, if not suppressed from UI.SplashScreen import SplashScreen, NoneSplashScreen if "--no-splash" in sys.argv and sys.argv.index("--no-splash") < ddindex: sys.argv.remove("--no-splash") ddindex -= 1 splash = NoneSplashScreen() elif not Preferences.getUI("ShowSplash"): splash = NoneSplashScreen() else: splash = SplashScreen() QCoreApplication.processEvents() # modify the executable search path for the PyQt5 installer if Globals.isWindowsPlatform(): pyqtDataDir = Globals.getPyQt5ModulesDirectory() if os.path.exists(os.path.join(pyqtDataDir, "bin")): path = os.path.join(pyqtDataDir, "bin") else: path = pyqtDataDir os.environ["PATH"] = path + os.pathsep + os.environ["PATH"] pluginFile = None noopen = False nocrash = False disablecrash = False disabledPlugins = [] if "--no-open" in sys.argv and sys.argv.index("--no-open") < ddindex: sys.argv.remove("--no-open") ddindex -= 1 noopen = True if "--no-crash" in sys.argv and sys.argv.index("--no-crash") < ddindex: sys.argv.remove("--no-crash") ddindex -= 1 nocrash = True if ("--disable-crash" in sys.argv and sys.argv.index("--disable-crash") < ddindex): sys.argv.remove("--disable-crash") ddindex -= 1 disablecrash = True for arg in sys.argv[:]: if (arg.startswith("--disable-plugin=") and sys.argv.index(arg) < ddindex): # extract the plug-in name pluginName = arg.replace("--disable-plugin=", "") sys.argv.remove(arg) ddindex -= 1 disabledPlugins.append(pluginName) for arg in sys.argv: if arg.startswith("--plugin=") and sys.argv.index(arg) < ddindex: import Utilities # extract the plugin development option pluginFile = arg.replace("--plugin=", "").replace('"', "") sys.argv.remove(arg) ddindex -= 1 pluginFile = os.path.expanduser(pluginFile) pluginFile = Utilities.normabspath(pluginFile) break # is there a set of filenames or options on the command line, # if so, pass them to the UI if len(sys.argv) > 1: args = sys.argv[1:] # get the Qt translations directory qtTransDir = Preferences.getQtTranslationsDir() if not qtTransDir: qtTransDir = QLibraryInfo.location(QLibraryInfo.TranslationsPath) # Load translation files and install them loc = Startup.loadTranslators(qtTransDir, app, ("qscintilla", )) # Initialize SSL stuff from E5Network.E5SslUtilities import initSSL initSSL() splash.showMessage(QCoreApplication.translate("eric6", "Starting...")) # We can only import these after creating the E5Application because they # make Qt calls that need the E5Application to exist. from UI.UserInterface import UserInterface splash.showMessage( QCoreApplication.translate("eric6", "Generating Main Window...")) mainWindow = UserInterface(app, loc, splash, pluginFile, disabledPlugins, noopen, nocrash, disablecrash, restartArgs, originalPathString) app.lastWindowClosed.connect(app.quit) mainWindow.show() QTimer.singleShot(0, uiStartUp) # generate a graphical error handler from E5Gui import E5ErrorMessage eMsg = E5ErrorMessage.qtHandler() eMsg.setMinimumSize(600, 400) # start the event loop inMainLoop = True res = app.exec_() logging.debug("Shutting down, result %d", res) logging.shutdown() sys.exit(res)
def main(): """ Main entry point into the application. @exception Exception re-raised for any exception occurring in the main program logic """ from Globals import AppInfo import Globals global args, mainWindow, splash, restartArgs sys.excepthook = excepthook options = [ ("--config=configDir", "use the given directory as the one containing the config files"), ("--debug", "activate debugging output to the console"), ("--nosplash", "don't show the splash screen"), ("--noopen", "don't open anything at startup except that given in command"), ("--plugin=plugin-file", "load the given plugin file (plugin development)"), ("--start-file", "load the most recently opened file"), ("--start-multi", "load the most recently opened multi-project"), ("--start-project", "load the most recently opened project"), ("--start-session", "load the global session file"), ("--", "indicate that there are options for the program to be debugged"), ("", "(everything after that is considered arguments for this program)") ] appinfo = AppInfo.makeAppInfo(sys.argv, "Eric6", "[project | files... [--] [debug-options]]", "A Python IDE", options) if not Globals.checkBlacklistedVersions(): sys.exit(100) app = E5Application(sys.argv) from Toolbox import Startup ddindex = Startup.handleArgs(sys.argv, appinfo) logging.debug("Importing Preferences") import Preferences if Preferences.getUI("SingleApplicationMode"): handleSingleApplication(ddindex) # set the library paths for plugins Startup.setLibraryPaths() # set the search path for icons Startup.initializeResourceSearchPath() # generate and show a splash window, if not suppressed from UI.SplashScreen import SplashScreen, NoneSplashScreen if "--nosplash" in sys.argv and sys.argv.index("--nosplash") < ddindex: del sys.argv[sys.argv.index("--nosplash")] splash = NoneSplashScreen() elif not Preferences.getUI("ShowSplash"): splash = NoneSplashScreen() else: splash = SplashScreen() QCoreApplication.processEvents() # modify the executable search path for the PyQt5 installer if Globals.isWindowsPlatform(): pyqtDataDir = Globals.getPyQt5ModulesDirectory() if os.path.exists(os.path.join(pyqtDataDir, "bin")): path = os.path.join(pyqtDataDir, "bin") + \ os.pathsep + os.environ["PATH"] else: path = pyqtDataDir + os.pathsep + os.environ["PATH"] os.environ["PATH"] = path pluginFile = None noopen = False if "--noopen" in sys.argv and sys.argv.index("--noopen") < ddindex: del sys.argv[sys.argv.index("--noopen")] noopen = True for arg in sys.argv: if arg.startswith("--plugin=") and sys.argv.index(arg) < ddindex: import Utilities # extract the plugin development option pluginFile = arg.replace("--plugin=", "").replace('"', "") sys.argv.remove(arg) pluginFile = os.path.expanduser(pluginFile) pluginFile = Utilities.normabspath(pluginFile) break # is there a set of filenames or options on the command line, # if so, pass them to the UI if len(sys.argv) > 1: args = sys.argv[1:] # get the Qt4 translations directory qt4TransDir = Preferences.getQt4TranslationsDir() if not qt4TransDir: qt4TransDir = QLibraryInfo.location(QLibraryInfo.TranslationsPath) # Load translation files and install them loc = Startup.loadTranslators(qt4TransDir, app, ("qscintilla",)) splash.showMessage(QCoreApplication.translate("eric6", "Starting...")) # We can only import these after creating the E5Application because they # make Qt calls that need the E5Application to exist. from UI.UserInterface import UserInterface splash.showMessage( QCoreApplication.translate("eric6", "Generating Main Window...")) try: mainWindow = UserInterface(app, loc, splash, pluginFile, noopen, restartArgs) app.lastWindowClosed.connect(app.quit) mainWindow.show() QTimer.singleShot(0, uiStartUp) # generate a graphical error handler from E5Gui import E5ErrorMessage eMsg = E5ErrorMessage.qtHandler() eMsg.setMinimumSize(600, 400) # start the event loop res = app.exec_() logging.debug("Shutting down, result {0:d}".format(res)) logging.shutdown() sys.exit(res) except Exception as err: raise err