Delay Qt ui construction

The Qt ui will need to read the dive_table to populate widgets with
dives. Gtk functionality in init_ui is required to parse the dives.
Split init_ui to allow parsing to proceed and complete before Qt ui
mainwindow constructor is called.

Play with qDebug()'s printf style (Thiago!)

Signed-off-by: Amit Chaudhuri <amit.k.chaudhuri@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Amit Chaudhuri 2013-04-18 08:59:31 +01:00 committed by Dirk Hohndel
parent 115ee47bfc
commit 073be111f4
5 changed files with 17 additions and 9 deletions

1
dive.h
View file

@ -602,6 +602,7 @@ extern void add_event(struct divecomputer *dc, int time, int type, int flags, in
/* UI related protopypes */
extern void init_ui(int *argcp, char ***argvp);
extern void init_qt_ui(int *argcp, char ***argvp);
extern void run_ui(void);
extern void exit_ui(void);

View file

@ -492,7 +492,6 @@ void get_suit(struct dive *dive, char **str)
/*
* helper functions for dive_trip handling
*/
#ifdef DEBUG_TRIP
void dump_trip_list(void)
{

7
main.c
View file

@ -335,7 +335,7 @@ int main(int argc, char **argv)
subsurface_command_line_init(&argc, &argv);
parse_xml_init();
init_ui(&argc, &argv);
init_ui(&argc, &argv); /* the gtk stuff is needed for parsing below */
for (i = 1; i < argc; i++) {
const char *a = argv[i];
@ -372,12 +372,13 @@ int main(int argc, char **argv)
report_dives(imported, FALSE);
if (dive_table.nr == 0)
show_dive_info(NULL);
run_ui();
exit_ui();
parse_xml_exit();
subsurface_command_line_exit(&argc, &argv);
init_qt_ui(&argc, &argv); /* qt bit delayed until dives are parsed */
run_ui();
exit_ui();
#ifdef DEBUGFILE
if (debugfile)
fclose(debugfile);

View file

@ -1864,6 +1864,14 @@ QStringList MainWindow::fileNameFilters() const
}
#endif /* NEEDS_TO_MOVE_TO_QT_UI */
void init_qt_ui(int *argcp, char ***argvp)
{
application = new QApplication(*argcp, *argvp);
application->installTranslator(new Translator(application));
MainWindow *window = new MainWindow();
window->show();
}
void init_ui(int *argcp, char ***argvp)
{
GtkWidget *win;
@ -1877,11 +1885,6 @@ void init_ui(int *argcp, char ***argvp)
GtkSettings *settings;
GtkUIManager *ui_manager;
application = new QApplication(*argcp, *argvp);
application->installTranslator(new Translator(application));
MainWindow *window = new MainWindow();
window->show();
gtk_init(argcp, argvp);
settings = gtk_settings_get_default();
gtk_settings_set_long_property(settings, "gtk-tooltip-timeout", 10, "subsurface setting");

View file

@ -46,6 +46,10 @@ MainWindow::MainWindow() : ui(new Ui::MainWindow())
dive = new DiveItem(1,QString("01/03/13"),14.2, 29.0,QString("Wraysbury"),root);
Q_UNUSED(dive)
qDebug("dive_table checks - number of dives is %d", dive_table.nr);
qDebug("# allocated dives = %d, pre-existing = %d",
dive_table.allocated, dive_table.preexisting);
}