r1816 - in trunk/src/target/OM-2007/openmoko-libs: . libmokoui
mickey at sita.openmoko.org
mickey at sita.openmoko.org
Tue Apr 24 01:46:34 CEST 2007
Author: mickey
Date: 2007-04-24 01:46:33 +0200 (Tue, 24 Apr 2007)
New Revision: 1816
Added:
trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-scrolled-pane.c
trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-scrolled-pane.h
Modified:
trunk/src/target/OM-2007/openmoko-libs/configure.ac
trunk/src/target/OM-2007/openmoko-libs/libmokoui/Makefile.am
trunk/src/target/OM-2007/openmoko-libs/libmokoui/libmokoui.pro
trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-paned-window.c
trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-paned-window.h
Log:
openmoko-libs: add MokoScrolledPane (successor to MokoDetailsWindow)
Modified: trunk/src/target/OM-2007/openmoko-libs/configure.ac
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/configure.ac 2007-04-23 23:44:43 UTC (rev 1815)
+++ trunk/src/target/OM-2007/openmoko-libs/configure.ac 2007-04-23 23:46:33 UTC (rev 1816)
@@ -1,5 +1,5 @@
AC_PREREQ(2.53)
-AC_INIT(openmoko-libs, 0.0.3, http://www.openmoko.org/)
+AC_INIT(openmoko-libs, 0.0.4, http://www.openmoko.org/)
AM_INIT_AUTOMAKE()
AC_CONFIG_SRCDIR(libmokoui/moko-window.c)
AM_CONFIG_HEADER(config.h)
Modified: trunk/src/target/OM-2007/openmoko-libs/libmokoui/Makefile.am
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/Makefile.am 2007-04-23 23:44:43 UTC (rev 1815)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/Makefile.am 2007-04-23 23:46:33 UTC (rev 1816)
@@ -12,6 +12,7 @@
moko-panel-applet.h \
moko-pixmap-button.h \
moko-paned-window.h \
+ moko-scrolled-pane.h \
moko-tool-box.h \
moko-tree-view.h \
moko-window.h \
@@ -32,8 +33,9 @@
moko-panel-applet.c \
moko-pixmap-button.c \
moko-paned-window.c \
+ moko-scrolled-pane.c \
+ moko-tool-box.c \
moko-tree-view.c \
- moko-tool-box.c \
moko-window.c \
moko-dialog.c \
moko-message-dialog.c
Modified: trunk/src/target/OM-2007/openmoko-libs/libmokoui/libmokoui.pro
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/libmokoui.pro 2007-04-23 23:44:43 UTC (rev 1815)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/libmokoui.pro 2007-04-23 23:46:33 UTC (rev 1816)
@@ -18,8 +18,9 @@
moko-panel-applet.h \
moko-pixmap-button.h \
moko-paned-window.h \
+ moko-scrolled-pane.h \
+ moko-tree-view.h \
moko-tool-box.h \
- moko-tree-view.h \
moko-window.h
SOURCES = \
@@ -38,6 +39,7 @@
moko-panel-applet.c \
moko-pixmap-button.c \
moko-paned-window.c \
+ moko-scrolled-pane.c \
moko-tree-view.c \
moko-tool-box.c \
moko-window.c
Modified: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-paned-window.c
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-paned-window.c 2007-04-23 23:44:43 UTC (rev 1815)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-paned-window.c 2007-04-23 23:46:33 UTC (rev 1816)
@@ -18,6 +18,7 @@
*/
#include "moko-paned-window.h"
#include "moko-alignment.h"
+#include "moko-scrolled-pane.h"
#include <gtk/gtktoolbar.h>
#include <gtk/gtkvbox.h>
@@ -47,17 +48,18 @@
} MokoPanedWindowPriv;
-/* add your signals here */
+/* signals */
enum {
MOKO_PANED_WINDOW_SIGNAL,
LAST_SIGNAL
};
+static guint moko_paned_window_signals[LAST_SIGNAL] = { 0 };
-static void moko_paned_window_class_init (MokoPanedWindowClass *klass);
-static void moko_paned_window_init (MokoPanedWindow *self);
+/* forwards */
+static void moko_paned_window_class_init(MokoPanedWindowClass* klass);
+static void moko_paned_window_init(MokoPanedWindow* self);
+static void _moko_paned_window_fullscreen_toggled(MokoScrolledPane* pane, gint on, MokoPanedWindow* self);
-static guint moko_paned_window_signals[LAST_SIGNAL] = { 0 };
-
static void moko_paned_window_class_init (MokoPanedWindowClass *klass) /* Class Initialization */
{
g_type_class_add_private(klass, sizeof(MokoPanedWindowPriv));
@@ -130,6 +132,15 @@
moko_menu_box_set_filter_menu( MOKO_MENU_BOX (priv->menubox), menu );
}
+void moko_paned_window_set_ratio(MokoPanedWindow* self, guint ratio)
+{
+ MokoPanedWindowPriv* priv = MOKO_PANED_WINDOW_GET_PRIVATE(self);
+ moko_debug( "moko_paned_window_set_ratio" );
+ //FIXME calculate this correctly, need to subtract the height of tool box and menu box
+ // which is probably not 120 ;-)
+ gtk_paned_set_position( GTK_PANED(priv->outerframe), ratio*(gdk_screen_height()-120)/100 );
+}
+
void moko_paned_window_set_upper_pane(MokoPanedWindow* self, GtkWidget* child)
{
moko_debug( "moko_paned_window_set_upper_pane" );
@@ -141,6 +152,10 @@
gtk_alignment_set_padding( GTK_ALIGNMENT(priv->upperenclosing), 7, 7, 11, 11 ); //FIXME get from style (MokoAlignment::padding)
gtk_box_pack_end( GTK_BOX(priv->upper), priv->upperenclosing, TRUE, TRUE, 0 );
gtk_container_add( GTK_CONTAINER(priv->upperenclosing), child );
+
+ if ( MOKO_IS_SCROLLED_PANE(child) )
+ g_signal_connect( G_OBJECT(child), "fullscreen-toggled", G_CALLBACK(_moko_paned_window_fullscreen_toggled), self );
+
}
void moko_paned_window_set_lower_pane(MokoPanedWindow* self, GtkWidget* child)
@@ -158,6 +173,9 @@
gtk_box_pack_end( GTK_BOX(priv->lower), priv->lowerenclosing, TRUE, TRUE, 0 );
gtk_container_add( GTK_CONTAINER(priv->lowerenclosing), child );
#endif
+
+ if ( MOKO_IS_SCROLLED_PANE(child) )
+ g_signal_connect( G_OBJECT(child), "fullscreen-toggled", G_CALLBACK(_moko_paned_window_fullscreen_toggled), self );
}
void moko_paned_window_add_toolbox(MokoPanedWindow* self, MokoToolBox* toolbox)
@@ -181,3 +199,24 @@
gtk_widget_show( priv->upper );
}
}
+
+static void _moko_paned_window_fullscreen_toggled(MokoScrolledPane* pane, gint b, MokoPanedWindow* self)
+{
+ MokoPanedWindowPriv* priv = MOKO_PANED_WINDOW_GET_PRIVATE(self);
+ if ( pane == gtk_bin_get_child( GTK_BIN(priv->lowerenclosing) ) )
+ {
+ if ( b )
+ gtk_widget_hide( priv->upper );
+ else
+ gtk_widget_show( priv->upper );
+ }
+ else if ( pane == gtk_bin_get_child( GTK_BIN(priv->upperenclosing) ) )
+ {
+ if ( b )
+ gtk_widget_hide( priv->lower );
+ else
+ gtk_widget_show( priv->lower );
+ }
+ else
+ g_assert( FALSE ); // fail here, if invalid pane
+}
Modified: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-paned-window.h
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-paned-window.h 2007-04-23 23:44:43 UTC (rev 1815)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-paned-window.h 2007-04-23 23:46:33 UTC (rev 1816)
@@ -65,6 +65,7 @@
void moko_paned_window_add_toolbox(MokoPanedWindow* self, MokoToolBox* toolbox);
/* panes */
+void moko_paned_window_set_ratio(MokoPanedWindow* self, guint ratio);
void moko_paned_window_set_upper_pane(MokoPanedWindow* self, GtkWidget* child);
void moko_paned_window_set_lower_pane(MokoPanedWindow* self, GtkWidget* child);
Added: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-scrolled-pane.c
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-scrolled-pane.c 2007-04-23 23:44:43 UTC (rev 1815)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-scrolled-pane.c 2007-04-23 23:46:33 UTC (rev 1816)
@@ -0,0 +1,152 @@
+/* moko-scrolled-pane.c
+ *
+ * Authored By Michael 'Mickey' Lauer <mlauer at vanille-media.de>
+ *
+ * Copyright (C) 2007 Vanille-Media
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Public License as published by
+ * the Free Software Foundation; version 2.1 of the license.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Public License for more details.
+ *
+ * Current Version: $Rev$ ($Date: 2007/04/13 13:56:22 $) [$Author: mickey $]
+ */
+
+#include "moko-scrolled-pane.h"
+#include "moko-pixmap-button.h"
+
+#undef DEBUG_THIS_FILE
+#ifdef DEBUG_THIS_FILE
+#define moko_debug(fmt,...) g_debug(fmt,##__VA_ARGS__)
+#else
+#define moko_debug(fmt,...)
+#endif
+
+G_DEFINE_TYPE (MokoScrolledPane, moko_scrolled_pane, GTK_TYPE_HBOX)
+
+#define SCROLLED_PANE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MOKO_TYPE_SCROLLED_PANE, MokoScrolledPanePrivate))
+
+typedef struct _MokoScrolledPanePrivate
+{
+ GtkWidget* scrolledwindow; /* GtkScrolledWindow */
+ GtkWidget* vbox; /* GtkVBox */
+ GtkWidget* button; /* MokoPixmapButton */
+ GtkWidget* scrollbar; /* GtkScrollBar */
+} MokoScrolledPanePrivate;
+
+/* parent class pointer */
+static GtkHBoxClass* parent_class = NULL;
+
+/* signals */
+enum {
+ FULLSCREEN_TOGGLED,
+ LAST_SIGNAL,
+};
+static guint moko_scrolled_pane_signals[LAST_SIGNAL] = { 0 };
+
+/* forward declarations */
+static void _moko_scrolled_pane_fullscreen_clicked (GtkButton* button, MokoScrolledPane* self);
+
+static void
+moko_scrolled_pane_dispose(GObject* object)
+{
+ if (G_OBJECT_CLASS (moko_scrolled_pane_parent_class)->dispose)
+ G_OBJECT_CLASS (moko_scrolled_pane_parent_class)->dispose (object);
+}
+
+static void
+moko_scrolled_pane_finalize(GObject* object)
+{
+ G_OBJECT_CLASS (moko_scrolled_pane_parent_class)->finalize (object);
+}
+
+static void
+moko_scrolled_pane_class_init(MokoScrolledPaneClass* klass)
+{
+ /* hook parent */
+ GObjectClass* object_class = G_OBJECT_CLASS (klass);
+ parent_class = g_type_class_peek_parent(klass);
+
+ /* add private */
+ g_type_class_add_private (klass, sizeof(MokoScrolledPanePrivate));
+
+ /* hook destruction */
+ object_class->dispose = moko_scrolled_pane_dispose;
+ object_class->finalize = moko_scrolled_pane_finalize;
+
+ /* register signals */
+ moko_scrolled_pane_signals[FULLSCREEN_TOGGLED] = g_signal_new ("fullscreen-toggled",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
+ NULL,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__INT,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_INT,
+ NULL);
+
+ /* virtual methods */
+
+ /* install properties */
+}
+
+GtkWidget*
+moko_scrolled_pane_new(void)
+{
+ return g_object_new(MOKO_TYPE_SCROLLED_PANE, NULL);
+}
+
+static void
+moko_scrolled_pane_init(MokoScrolledPane* self)
+{
+ /* Populate your instance here */
+ moko_debug ("moko_scrolled_pane_init");
+
+ MokoScrolledPanePrivate* priv = SCROLLED_PANE_GET_PRIVATE(self);
+ priv->scrolledwindow = gtk_scrolled_window_new( NULL, NULL );
+ gtk_scrolled_window_set_policy( priv->scrolledwindow, GTK_POLICY_NEVER, GTK_POLICY_NEVER );
+
+ priv->vbox = gtk_vbox_new( FALSE, 0 );
+ gtk_box_pack_start( GTK_BOX(self), priv->scrolledwindow, TRUE, TRUE, 0 );
+ priv->button = moko_pixmap_button_new();
+ gtk_widget_set_name( GTK_WIDGET(priv->button), "mokoscrolledpane-fullscreen-button-on" );
+ gtk_box_pack_start( GTK_BOX(priv->vbox), priv->button, FALSE, FALSE, 0);
+ priv->scrollbar = gtk_vscrollbar_new( gtk_scrolled_window_get_vadjustment( GTK_SCROLLED_WINDOW(priv->scrolledwindow)));
+ gtk_box_pack_start( GTK_BOX(priv->vbox), priv->scrollbar, TRUE, TRUE, 0);
+ gtk_box_pack_start( GTK_BOX(self), priv->vbox, FALSE, FALSE, 0);
+ g_signal_connect( G_OBJECT(priv->button), "clicked", G_CALLBACK(_moko_scrolled_pane_fullscreen_clicked), self );
+
+}
+
+static void _moko_scrolled_pane_fullscreen_clicked(GtkButton * button, MokoScrolledPane * self)
+{
+ static gboolean on = TRUE;
+ if (on)
+ {
+ gtk_widget_set_name (GTK_WIDGET (button),
+ "mokoscrolledpane-fullscreen-button");
+ gtk_widget_queue_draw (GTK_WIDGET (button)); //FIXME necessary?
+ }
+ else
+ {
+ gtk_widget_set_name (GTK_WIDGET (button),
+ "mokoscrolledpane-fullscreen-button-on");
+ gtk_widget_queue_draw (GTK_WIDGET (button)); //FIXME necessary?
+ }
+
+ g_signal_emit( G_OBJECT(self), moko_scrolled_pane_signals[FULLSCREEN_TOGGLED], 0, on );
+ on = !on;
+}
+
+GtkScrolledWindow* moko_scrolled_pane_get_scrolled_window(MokoScrolledPane* self)
+{
+ MokoScrolledPanePrivate* priv = SCROLLED_PANE_GET_PRIVATE(self);
+ g_assert( priv->scrolledwindow );
+ return priv->scrolledwindow;
+}
Property changes on: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-scrolled-pane.c
___________________________________________________________________
Name: svn:eol-style
+ native
Added: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-scrolled-pane.h
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-scrolled-pane.h 2007-04-23 23:44:43 UTC (rev 1815)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-scrolled-pane.h 2007-04-23 23:46:33 UTC (rev 1816)
@@ -0,0 +1,49 @@
+/* moko-scrolled-pane.h
+ *
+ * Authored By Michael 'Mickey' Lauer <mlauer at vanille-media.de>
+ *
+ * Copyright (C) 2007 Vanille-Media
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Public License as published by
+ * the Free Software Foundation; version 2.1 of the license.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Public License for more details.
+ *
+ * Current Version: $Rev$ ($Date: 2007/04/13 13:56:22 $) [$Author: mickey $]
+ */
+
+#ifndef _MOKO_SCROLLED_PANE_H_
+#define _MOKO_SCROLLED_PANE_H_
+
+#include <gtk/gtkhbox.h>
+#include <gtk/gtkscrolledwindow.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define MOKO_TYPE_SCROLLED_PANE moko_scrolled_pane_get_type()
+#define MOKO_SCROLLED_PANE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MOKO_TYPE_SCROLLED_PANE, MokoScrolledPane))
+#define MOKO_SCROLLED_PANE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MOKO_TYPE_SCROLLED_PANE, MokoScrolledPaneClass))
+#define MOKO_IS_SCROLLED_PANE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MOKO_TYPE_SCROLLED_PANE))
+#define MOKO_IS_SCROLLED_PANE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MOKO_TYPE_SCROLLED_PANE))
+#define MOKO_SCROLLED_PANE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MOKO_TYPE_SCROLLED_PANE, MokoScrolledPaneClass))
+
+typedef struct {
+ GtkHBox parent;
+} MokoScrolledPane;
+
+typedef struct {
+ GtkHBoxClass parent_class;
+} MokoScrolledPaneClass;
+
+GType moko_scrolled_pane_get_type();
+GtkWidget* moko_scrolled_pane_new();
+
+G_END_DECLS
+
+#endif // _MOKO_SCROLLED_PANE_H_
+
Property changes on: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-scrolled-pane.h
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the commitlog
mailing list