r426 - in trunk/src/target/OM-2007: . artwork/themes/openmoko-standard/gtk-2.0 openmoko-libs/libmokoui

mickey at gta01.hmw-consulting.de mickey at gta01.hmw-consulting.de
Mon Dec 18 18:39:50 CET 2006


Author: mickey
Date: 2006-12-18 18:39:48 +0100 (Mon, 18 Dec 2006)
New Revision: 426

Added:
   trunk/src/target/OM-2007/artwork/themes/openmoko-standard/gtk-2.0/mokodialogwindow-closebutton-pressed.png
   trunk/src/target/OM-2007/artwork/themes/openmoko-standard/gtk-2.0/mokodialogwindow-closebutton.png
Modified:
   trunk/src/target/OM-2007/artwork/themes/openmoko-standard/gtk-2.0/mokodialogwindow
   trunk/src/target/OM-2007/makevars.sh
   trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-dialog-window.c
Log:
mokoui: add close button to MokoDialogWindow


Modified: trunk/src/target/OM-2007/artwork/themes/openmoko-standard/gtk-2.0/mokodialogwindow
===================================================================
--- trunk/src/target/OM-2007/artwork/themes/openmoko-standard/gtk-2.0/mokodialogwindow	2006-12-18 09:28:52 UTC (rev 425)
+++ trunk/src/target/OM-2007/artwork/themes/openmoko-standard/gtk-2.0/mokodialogwindow	2006-12-18 17:39:48 UTC (rev 426)
@@ -11,3 +11,39 @@
     fg[NORMAL] = "#cccccc"
 }
 widget "*.mokodialogwindow-title-label" style "mokodialogwindow-title-label"
+
+style "mokodialogwindow-closebutton" {
+    engine "pixmap" {
+        image {
+            function        = BOX
+            recolorable     = TRUE
+            state           = NORMAL
+            file            = "mokodialogwindow-closebutton.png"
+            border          = { 0, 0, 0, 0 }
+            stretch         = TRUE
+        }
+        image {
+            function        = BOX
+            recolorable     = TRUE
+            state           = PRELIGHT
+            file            = "mokodialogwindow-closebutton.png"
+            border          = { 0, 0, 0, 0 }
+            stretch         = TRUE
+        }
+        image {
+            function        = BOX
+            recolorable     = TRUE
+            state           = ACTIVE
+            file            = "mokodialogwindow-closebutton-pressed.png"
+            border          = { 0, 0, 0, 0 }
+            stretch         = TRUE
+        }
+    }
+
+    xthickness = 0
+    ythickness = 0
+    MokoPixmapButton::size-request = { 0, 31, 0, 34 }
+    GtkButton::focus-line-width = 0
+}
+widget "*.mokodialogwindow-closebutton" style "mokodialogwindow-closebutton"
+

Added: trunk/src/target/OM-2007/artwork/themes/openmoko-standard/gtk-2.0/mokodialogwindow-closebutton-pressed.png
===================================================================
(Binary files differ)


Property changes on: trunk/src/target/OM-2007/artwork/themes/openmoko-standard/gtk-2.0/mokodialogwindow-closebutton-pressed.png
___________________________________________________________________
Name: svn:mime-type
   + image/png

Added: trunk/src/target/OM-2007/artwork/themes/openmoko-standard/gtk-2.0/mokodialogwindow-closebutton.png
===================================================================
(Binary files differ)


Property changes on: trunk/src/target/OM-2007/artwork/themes/openmoko-standard/gtk-2.0/mokodialogwindow-closebutton.png
___________________________________________________________________
Name: svn:mime-type
   + image/png

Modified: trunk/src/target/OM-2007/makevars.sh
===================================================================
--- trunk/src/target/OM-2007/makevars.sh	2006-12-18 09:28:52 UTC (rev 425)
+++ trunk/src/target/OM-2007/makevars.sh	2006-12-18 17:39:48 UTC (rev 426)
@@ -5,6 +5,7 @@
 rm -rf ./bin/*-*
 qmake
 make clean
+make
 
 export LD_LIBRARY_PATH=$OPENMOKODIR/lib
 

Modified: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-dialog-window.c
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-dialog-window.c	2006-12-18 09:28:52 UTC (rev 425)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-dialog-window.c	2006-12-18 17:39:48 UTC (rev 426)
@@ -17,9 +17,11 @@
  */
 
 #include "moko-dialog-window.h"
+#include "moko-pixmap-button.h"
 
 #include <gtk/gtkeventbox.h>
 #include <gtk/gtkdialog.h>
+#include <gtk/gtkhbox.h>
 #include <gtk/gtklabel.h>
 #include <gtk/gtkvbox.h>
 
@@ -42,8 +44,10 @@
 struct _MokoDialogWindowPrivate
 {
     GtkVBox* vbox;
+    GtkHBox* hbox;
     GtkEventBox* eventbox;
     GtkLabel* label;
+    MokoPixmapButton* closebutton;
 };
 
 typedef struct _MokoDialogRunInfo
@@ -54,6 +58,8 @@
     gboolean destroyed;
 } MokoDialogRunInfo;
 
+static void moko_dialog_window_close(MokoDialogWindow* self);
+
 static void
 shutdown_loop (MokoDialogRunInfo *ri)
 {
@@ -159,12 +165,20 @@
         priv->label = gtk_label_new( title );
         gtk_window_set_title( GTK_WINDOW(self), title );
         gtk_widget_set_name( GTK_WIDGET(priv->label), "mokodialogwindow-title-label" );
+        priv->hbox = gtk_hbox_new( FALSE, 0 );
         priv->eventbox = gtk_event_box_new();
+        gtk_box_pack_start( GTK_BOX(priv->hbox), GTK_WIDGET(priv->eventbox), TRUE, TRUE, 0 );
+        priv->closebutton = moko_pixmap_button_new();
+        gtk_widget_set_name( GTK_WIDGET(priv->closebutton), "mokodialogwindow-closebutton" );
+        g_signal_connect_swapped( G_OBJECT(priv->closebutton), "clicked", G_CALLBACK(moko_dialog_window_close), self );
+        gtk_box_pack_start( GTK_BOX(priv->hbox), GTK_WIDGET(priv->closebutton), FALSE, FALSE, 0 );
         gtk_container_add( GTK_CONTAINER(priv->eventbox), GTK_WIDGET(priv->label) );
         gtk_widget_set_name( GTK_WIDGET(priv->eventbox), "mokodialogwindow-title-labelbox" );
         //FIXME get from theme
         gtk_misc_set_padding( GTK_MISC(priv->label), 0, 6 );
+        gtk_widget_show( GTK_WIDGET(priv->hbox) );
         gtk_widget_show( GTK_WIDGET(priv->label) );
+        gtk_widget_show( GTK_WIDGET(priv->closebutton) );
         gtk_widget_show( GTK_WIDGET(priv->eventbox) );
     }
     else
@@ -175,7 +189,7 @@
     if ( !priv->vbox )
     {
         priv->vbox = gtk_vbox_new( FALSE, 0 );
-        gtk_box_pack_start( GTK_BOX(priv->vbox), GTK_WIDGET(priv->eventbox), FALSE, FALSE, 0 );
+        gtk_box_pack_start( GTK_BOX(priv->vbox), GTK_WIDGET(priv->hbox), FALSE, FALSE, 0 );
         gtk_container_add( GTK_CONTAINER(self), GTK_WIDGET(priv->vbox) );
         gtk_widget_show( GTK_WIDGET(priv->vbox) );
     }
@@ -189,6 +203,22 @@
     gtk_box_pack_start( GTK_BOX(priv->vbox), contents, FALSE, FALSE, 0 );
 }
 
+static void moko_dialog_window_close(MokoDialogWindow* self)
+{
+    /* Synthesize delete_event to close dialog. */
+
+    GtkWidget *widget = GTK_WIDGET(self);
+    GdkEvent *event;
+
+    event = gdk_event_new( GDK_DELETE );
+
+    event->any.window = g_object_ref(widget->window);
+    event->any.send_event = TRUE;
+
+    gtk_main_do_event( event );
+    gdk_event_free( event );
+}
+
 guint moko_dialog_window_run(MokoDialogWindow* dialog)
 {
     moko_debug( "moko_dialog_window_run" );





More information about the commitlog mailing list