[PATCH] Main: separate the QApplication and UI creation

Lubomir I. Ivanov neolit123 at gmail.com
Wed Mar 19 09:23:43 PDT 2014


From: "Lubomir I. Ivanov" <neolit123 at gmail.com>

When some arguments like --help and --version are passed to the
executable, we don't need to create the UI at all.

This patch separates the QApplication creation which is at first
only needed to parse the arguments and then if exit() is not
called from subsurfacestartup.c, we can call some of the
"init" methods such as setup_system_prefs(), fill_profile_color()
etc.

At this point init_ui() can be called which no longer needs
to accept the command line argument list.

Signed-off-by: Lubomir I. Ivanov <neolit123 at gmail.com>
---
 main.cpp   | 19 ++++++++++---------
 qt-gui.cpp | 10 +++++-----
 qt-gui.h   |  4 ++--
 3 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/main.cpp b/main.cpp
index e5a53a3..2642ccc 100644
--- a/main.cpp
+++ b/main.cpp
@@ -19,13 +19,7 @@ int main(int argc, char **argv)
 	int i;
 	bool no_filenames = true;
 
-	setup_system_prefs();
-	prefs = default_prefs;
-	fill_profile_color();
-	init_ui(&argc, &argv);
-	parse_xml_init();
-	taglist_init_global();
-
+	init_qt(&argc, &argv);
 	QStringList files;
 	QStringList importedFiles;
 	QStringList arguments = QCoreApplication::arguments();
@@ -47,13 +41,20 @@ int main(int argc, char **argv)
 		if (!defaultFile.isEmpty())
 			files.push_back(QString(prefs.default_filename));
 	}
-	parse_xml_exit();
+	setup_system_prefs();
+	prefs = default_prefs;
+	fill_profile_color();
+	parse_xml_init();
+	taglist_init_global();
+	init_ui();
+
 	MainWindow *m = MainWindow::instance();
-	m->setLoadedWithFiles( !files.isEmpty() || !importedFiles.isEmpty());
+	m->setLoadedWithFiles(!files.isEmpty() || !importedFiles.isEmpty());
 	m->loadFiles(files);
 	m->importFiles(importedFiles);
 	if (!quit)
 		run_ui();
 	exit_ui();
+	parse_xml_exit();
 	return 0;
 }
diff --git a/qt-gui.cpp b/qt-gui.cpp
index 2b16c2d..a3b8b44 100644
--- a/qt-gui.cpp
+++ b/qt-gui.cpp
@@ -78,12 +78,14 @@ static QString decodeUtf8(const QByteArray &fname)
 }
 #endif
 
-void init_ui(int *argcp, char ***argvp)
+void init_qt(int *argcp, char ***argvp)
 {
-	QVariant v;
-
 	application = new QApplication(*argcp, *argvp);
+}
 
+void init_ui(void)
+{
+	QVariant v;
 	// tell Qt to use system proxies
 	// note: on Linux, "system" == "environment variables"
 	QNetworkProxyFactory::setUseSystemConfiguration(true);
@@ -155,8 +157,6 @@ void init_ui(int *argcp, char ***argvp)
 		window->setTitle(MWTF_FILENAME);
 	else
 		window->setTitle(MWTF_DEFAULT);
-
-	return;
 }
 
 void run_ui(void)
diff --git a/qt-gui.h b/qt-gui.h
index 80a2daf..c3d48af 100644
--- a/qt-gui.h
+++ b/qt-gui.h
@@ -1,8 +1,8 @@
 #ifndef QT_GUI_H
 #define QT_GUI_H
 
-void init_ui(int *argcp, char ***argvp);
-void init_qt_ui(int *argcp, char ***argvp, char *errormessage);
+void init_qt(int *argcp, char ***argvp);
+void init_ui(void);
 
 void run_ui(void);
 void exit_ui(void);
-- 
1.7.11.msysgit.0



More information about the subsurface mailing list