From: Marc Cannon Date: Wed, 2 Jan 2013 15:22:37 +0000 (+0000) Subject: Clean up for Gtk widget: remove window decorations, add a progress bar (currently... X-Git-Url: https://git.cameron1729.xyz/?a=commitdiff_plain;h=d4a1463ae7324b9b5d876baa701a6c5649bb3c6e;p=openitg.git Clean up for Gtk widget: remove window decorations, add a progress bar (currently only does percentages -- may add pulsing in the future if it seems necessary) --- diff --git a/src/arch/LoadingWindow/LoadingWindow_Gtk.cpp b/src/arch/LoadingWindow/LoadingWindow_Gtk.cpp index 351b574f..a5c90a05 100755 --- a/src/arch/LoadingWindow/LoadingWindow_Gtk.cpp +++ b/src/arch/LoadingWindow/LoadingWindow_Gtk.cpp @@ -14,6 +14,7 @@ static void *Handle = NULL; static INIT Module_Init; static SHUTDOWN Module_Shutdown; static SETTEXT Module_SetText; +static SETPROGRESS Module_SetProgress; LoadingWindow_Gtk::LoadingWindow_Gtk() { @@ -22,7 +23,7 @@ LoadingWindow_Gtk::LoadingWindow_Gtk() CString LoadingWindow_Gtk::Init() { ASSERT( Handle == NULL ); - + Handle = dlopen( DirOfExecutable + "/" + "GtkModule.so", RTLD_NOW ); if( Handle == NULL ) return ssprintf( "dlopen(): %s", dlerror() ); @@ -37,6 +38,10 @@ CString LoadingWindow_Gtk::Init() if( !Module_SetText ) return "Couldn't load symbol Module_SetText"; + Module_SetProgress = (SETPROGRESS) dlsym(Handle, "SetProgress"); + if( !Module_SetProgress ) + return "Couldn't load symbol Module_SetProgress"; + const char *ret = Module_Init( &g_argc, &g_argv ); if( ret != NULL ) return ret; @@ -59,6 +64,11 @@ void LoadingWindow_Gtk::SetText( CString s ) Module_SetText( s ); } +void LoadingWindow_Gtk::SetProgress( unsigned iCurrent, unsigned iTarget ) +{ + Module_SetProgress( iCurrent, iTarget ); +} + /* * (c) 2003-2004 Glenn Maynard, Sean Burke * All rights reserved. diff --git a/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp b/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp index 93d9e482..925fc850 100755 --- a/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp +++ b/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp @@ -4,7 +4,10 @@ #include #include "loading.xpm" +#include + static GtkWidget *label; +static GtkWidget *progress; static GtkWidget *window; extern "C" const char *Init( int *argc, char ***argv ) @@ -19,14 +22,25 @@ extern "C" const char *Init( int *argc, char ***argv ) window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_position( GTK_WINDOW(window), GTK_WIN_POS_CENTER ); + gtk_window_set_decorated( GTK_WINDOW(window), FALSE ); + gtk_window_set_deletable( GTK_WINDOW(window), FALSE ); + + gtk_widget_set_size_request( window, 468, -1 ); gtk_widget_realize(window); - loadmap = gdk_pixmap_create_from_xpm_d(window->window,NULL,NULL,loading); + + loadmap = gdk_pixmap_create_from_xpm_d(window->window,NULL,NULL, const_cast(loading)); loadimage = gtk_image_new_from_pixmap(loadmap,NULL); + label = gtk_label_new(NULL); gtk_label_set_justify(GTK_LABEL(label),GTK_JUSTIFY_CENTER); + + progress = gtk_progress_bar_new(); + gtk_progress_bar_set_fraction( GTK_PROGRESS_BAR(progress), 0.5f ); + vbox = gtk_vbox_new(FALSE,5); gtk_container_add(GTK_CONTAINER(window),vbox); gtk_box_pack_start(GTK_BOX(vbox),loadimage,FALSE,FALSE,0); + gtk_box_pack_end(GTK_BOX(vbox),progress,FALSE,FALSE,0); gtk_box_pack_end(GTK_BOX(vbox),label,TRUE,TRUE,0); gtk_widget_show_all(window); @@ -49,6 +63,13 @@ extern "C" void SetText( const char *s ) gtk_main_iteration_do(FALSE); } +extern "C" void SetProgress( unsigned a, unsigned z ) +{ + gdouble fProgress = (z == 0) ? 0 : (gdouble(a) / gdouble(z)); + gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), fProgress); + gtk_main_iteration_do(FALSE); +} + /* * (c) 2003-2004 Glenn Maynard, Sean Burke * All rights reserved. diff --git a/src/arch/LoadingWindow/LoadingWindow_GtkModule.h b/src/arch/LoadingWindow/LoadingWindow_GtkModule.h index 77ad5a32..b0121474 100755 --- a/src/arch/LoadingWindow/LoadingWindow_GtkModule.h +++ b/src/arch/LoadingWindow/LoadingWindow_GtkModule.h @@ -4,6 +4,7 @@ typedef const char *(*INIT)(int *argc, char ***argv); typedef void (*SHUTDOWN)(); typedef void (*SETTEXT)( const char *s ); +typedef void (*SETPROGRESS)( unsigned a, unsigned z ); #endif