From 85153f3b49875fd7f1ff5c462b441a14473bef64 Mon Sep 17 00:00:00 2001 From: Christian Dywan Date: Sun, 27 May 2012 15:08:23 +0200 Subject: [PATCH] Rewrite Midori.PanedAction in Vala Also fix errors in the build. --- extensions/wscript_build | 4 +- midori/midori-browser.c | 1 - midori/midori-panedaction.c | 227 --------------------------------- midori/midori-panedaction.h | 70 ---------- midori/midori-panedaction.vala | 79 ++++++++++++ midori/wscript_build | 7 +- 6 files changed, 87 insertions(+), 301 deletions(-) delete mode 100644 midori/midori-panedaction.c delete mode 100644 midori/midori-panedaction.h create mode 100644 midori/midori-panedaction.vala diff --git a/extensions/wscript_build b/extensions/wscript_build index b4031ee8..152d8206 100644 --- a/extensions/wscript_build +++ b/extensions/wscript_build @@ -33,11 +33,11 @@ for extension in extensions: obj = bld.new_task_gen ('cc', 'shlib') obj.target = target - obj.includes = '..' + obj.includes = '.. ../katze ../midori' obj.source = source obj.uselib = 'UNIQUE LIBSOUP GIO GTK SQLITE WEBKIT LIBXML HILDON' obj.vapi_dirs = '../midori ../katze' - obj.packages = 'glib-2.0 gio-2.0 libsoup-2.4 midori katze' + obj.packages = 'glib-2.0 gio-2.0 libsoup-2.4 midori midori-core katze' if bld.env['HAVE_GTK3']: obj.packages += ' gtk+-3.0 webkitgtk-3.0' else: diff --git a/midori/midori-browser.c b/midori/midori-browser.c index d30fc1cb..22d74f59 100644 --- a/midori/midori-browser.c +++ b/midori/midori-browser.c @@ -19,7 +19,6 @@ #include "midori-panel.h" #include "midori-locationaction.h" #include "midori-searchaction.h" -#include "midori-panedaction.h" #include "midori-findbar.h" #include "midori-transferbar.h" #include "midori-platform.h" diff --git a/midori/midori-panedaction.c b/midori/midori-panedaction.c deleted file mode 100644 index e858b8a5..00000000 --- a/midori/midori-panedaction.c +++ /dev/null @@ -1,227 +0,0 @@ -/* - Copyright (C) 2011 Peter Hatina - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - See the file COPYING for the full license text. -*/ - -#include -#include -#include "midori-panedaction.h" - -struct _MidoriPanedActionChild -{ - GtkWidget* widget; - gchar* name; - gboolean resize; - gboolean shrink; -}; - -struct _MidoriPanedAction -{ - GtkAction parent_instance; - GtkWidget* hpaned; - GtkWidget* toolitem; - struct _MidoriPanedActionChild child1; - struct _MidoriPanedActionChild child2; -}; - -struct _MidoriPanedActionClass -{ - GtkActionClass parent_class; -}; - -G_DEFINE_TYPE (MidoriPanedAction, midori_paned_action, GTK_TYPE_ACTION); - -static GtkWidget* -midori_paned_action_create_tool_item (GtkAction *action); - -static void -midori_paned_action_finalize (GObject* object); - -static void -midori_paned_action_init (MidoriPanedAction* paned_action) -{ - paned_action->hpaned = NULL; - paned_action->toolitem = NULL; - memset ((void*) &paned_action->child1, 0, sizeof (struct _MidoriPanedActionChild)); - memset ((void*) &paned_action->child2, 0, sizeof (struct _MidoriPanedActionChild)); -} - -static void -midori_paned_action_finalize (GObject* object) -{ - MidoriPanedAction* paned_action = MIDORI_PANED_ACTION (object); - - g_object_unref (G_OBJECT (paned_action->toolitem)); - g_object_unref (G_OBJECT (paned_action->hpaned)); - katze_assign (paned_action->child1.name, NULL); - katze_assign (paned_action->child2.name, NULL); - - G_OBJECT_CLASS (midori_paned_action_parent_class)->finalize (object); -} - -static void -midori_paned_action_class_init (MidoriPanedActionClass* class) -{ - GObjectClass* gobject_class; - GtkActionClass* action_class; - - gobject_class = G_OBJECT_CLASS (class); - gobject_class->finalize = midori_paned_action_finalize; - - action_class = GTK_ACTION_CLASS (class); - action_class->create_tool_item = midori_paned_action_create_tool_item; -} - -static GtkWidget* -midori_paned_action_create_tool_item (GtkAction* action) -{ - MidoriPanedAction* paned_action = MIDORI_PANED_ACTION (action); - GtkWidget* alignment = gtk_alignment_new (0.0f, 0.5f, 1.0f, 0.1f); - paned_action->hpaned = gtk_hpaned_new (); - paned_action->toolitem = GTK_WIDGET (gtk_tool_item_new ()); - gtk_tool_item_set_expand (GTK_TOOL_ITEM (paned_action->toolitem), TRUE); - gtk_container_add (GTK_CONTAINER (paned_action->toolitem), alignment); - gtk_container_add (GTK_CONTAINER (alignment), GTK_WIDGET (paned_action->hpaned)); - - gtk_paned_pack1 (GTK_PANED (paned_action->hpaned), - paned_action->child1.widget, - paned_action->child1.resize, - paned_action->child1.shrink); - gtk_paned_pack2 (GTK_PANED (paned_action->hpaned), - paned_action->child2.widget, - paned_action->child2.resize, - paned_action->child2.shrink); - - gtk_widget_show_all (GTK_WIDGET (paned_action->toolitem)); - return paned_action->toolitem; -} - -/** - * midori_paned_action_set_child1: - * @paned_action: a #MidoriPanedAction - * @child1: a #GtkWidget to be added into GtkHPaned container - * @name: string name for the child2 - * @resize: should child1 expand when the MidoriPanedAction is resized - * @shrink: can child1 be made smaller than its requisition - **/ -void -midori_paned_action_set_child1 (MidoriPanedAction* paned_action, - GtkWidget* child1, - const gchar* name, - gboolean resize, - gboolean shrink) -{ - g_return_if_fail (MIDORI_IS_PANED_ACTION (paned_action)); - - katze_assign (paned_action->child1.name, g_strdup (name)); - paned_action->child1.widget = child1; - paned_action->child1.resize = resize; - paned_action->child1.shrink = shrink; -} - -/** - * midori_paned_action_set_child1: - * @paned_action: a #MidoriPanedAction - * @child2: a #GtkWidget to be added into GtkHPaned container - * @name: string name for the child2 - * @resize: should child2 expand when the MidoriPanedAction is resized - * @shrink: can child2 be made smaller than its requisition - **/ -void -midori_paned_action_set_child2 (MidoriPanedAction* paned_action, - GtkWidget* child2, - const gchar* name, - gboolean resize, - gboolean shrink) -{ - g_return_if_fail (MIDORI_IS_PANED_ACTION (paned_action)); - - katze_assign (paned_action->child2.name, g_strdup (name)); - paned_action->child2.widget = child2; - paned_action->child2.resize = resize; - paned_action->child2.shrink = shrink; -} - -/** - * midori_paned_action_get_child1: - * @paned_action: a #MidoriPanedAction - * - * returns the first child held in GtkHPaned container - **/ -GtkWidget* -midori_paned_action_get_child1 (MidoriPanedAction* paned_action) -{ - g_return_val_if_fail (MIDORI_IS_PANED_ACTION (paned_action), NULL); - - return paned_action->child1.widget; -} - -/** - * midori_paned_action_get_child1: - * @paned_action: a #MidoriPanedAction - * - * returns the second child held in GtkHPaned container - **/ -GtkWidget* -midori_paned_action_get_child2 (MidoriPanedAction* paned_action) -{ - g_return_val_if_fail (MIDORI_IS_PANED_ACTION (paned_action), NULL); - - return paned_action->child2.widget; -} - -/** - * midori_paned_action_get_child1: - * @paned_action: a #MidoriPanedAction - * @name: string name for one of the children - * - * returns a child specified by its name - **/ -GtkWidget* -midori_paned_action_get_child_by_name (MidoriPanedAction* paned_action, - const gchar* name) -{ - g_return_val_if_fail (MIDORI_IS_PANED_ACTION (paned_action), NULL); - g_return_val_if_fail (name != NULL, NULL); - - if (g_strcmp0 (name, paned_action->child1.name) == 0) - return midori_paned_action_get_child1 (paned_action); - else if (g_strcmp0 (name, paned_action->child2.name) == 0) - return midori_paned_action_get_child2 (paned_action); - - return NULL; -} - -/** - * midori_paned_action_get_child1_name: - * @paned_action a #MidoriPanedAction - * - * Returns: The name of the first child - **/ -const gchar* -midori_paned_action_get_child1_name (MidoriPanedAction* paned_action) -{ - g_return_val_if_fail (MIDORI_IS_PANED_ACTION (paned_action), NULL); - - return paned_action->child1.name; -} - -/** - * midori_paned_action_get_child2_name: - * @paned_action a #MidoriPanedAction - * - * Returns: The name of the second child - **/ -const gchar* -midori_paned_action_get_child2_name (MidoriPanedAction* paned_action) -{ - g_return_val_if_fail (MIDORI_IS_PANED_ACTION (paned_action), NULL); - - return paned_action->child2.name; -} diff --git a/midori/midori-panedaction.h b/midori/midori-panedaction.h deleted file mode 100644 index 58444735..00000000 --- a/midori/midori-panedaction.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - Copyright (C) 2011 Peter Hatina - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - See the file COPYING for the full license text. -*/ - -#ifndef __MIDORI_PANED_ACTION_H__ -#define __MIDORI_PANED_ACTION_H__ - -#include - -G_BEGIN_DECLS - -#define MIDORI_TYPE_PANED_ACTION \ - (midori_paned_action_get_type ()) -#define MIDORI_PANED_ACTION(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), MIDORI_TYPE_PANED_ACTION, MidoriPanedAction)) -#define MIDORI_PANED_ACTION_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), MIDORI_PANED_ACTION, MidoriPanedActionClass)) -#define MIDORI_IS_PANED_ACTION(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MIDORI_TYPE_PANED_ACTION)) -#define MIDORI_IS_PANED_ACTION_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), MIDORI_TYPE_PANED_ACTION)) -#define MIDORI_PANED_ACTION_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), MIDORI_TYPE_PANED_ACTION, MidoriPanedActionClass)) - -typedef struct _MidoriPanedAction MidoriPanedAction; -typedef struct _MidoriPanedActionClass MidoriPanedActionClass; - -GType -midori_paned_action_get_type (void) G_GNUC_CONST; - -void -midori_paned_action_set_child1 (MidoriPanedAction* paned_action, - GtkWidget* child1, - const gchar* name, - gboolean resize, - gboolean shrink); - -void -midori_paned_action_set_child2 (MidoriPanedAction* paned_action, - GtkWidget* child2, - const gchar* name, - gboolean resize, - gboolean shrink); - -GtkWidget* -midori_paned_action_get_child1 (MidoriPanedAction* paned_action); - -GtkWidget* -midori_paned_action_get_child2 (MidoriPanedAction* paned_action); - -GtkWidget* -midori_paned_action_get_child_by_name (MidoriPanedAction* paned_action, - const gchar* name); - -const gchar* -midori_paned_action_get_child1_name (MidoriPanedAction* paned_action); - -const gchar* -midori_paned_action_get_child2_name (MidoriPanedAction* paned_action); - -G_END_DECLS - -#endif // __MIDORI_PANED_ACTION_H__ diff --git a/midori/midori-panedaction.vala b/midori/midori-panedaction.vala new file mode 100644 index 00000000..dd7ecde3 --- /dev/null +++ b/midori/midori-panedaction.vala @@ -0,0 +1,79 @@ +/* + Copyright (C) 2011 Peter Hatina + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + See the file COPYING for the full license text. +*/ + +namespace Midori { + public class PanedAction : Gtk.Action { + Gtk.HPaned? hpaned = null; + Gtk.ToolItem? toolitem = null; + Child child1 = new Child(); + Child child2 = new Child(); + + private struct Child { + protected Gtk.Widget widget; + string name; + bool resize; + bool shrink; + } + + public override unowned Gtk.Widget create_tool_item () { + Gtk.Alignment alignment = new Gtk.Alignment (0.0f, 0.5f, 1.0f, 0.1f); + hpaned = new Gtk.HPaned (); + toolitem = new Gtk.ToolItem (); + toolitem.set_expand (true); + toolitem.add (alignment); + alignment.add (hpaned); + + hpaned.pack1 (child1.widget, child1.resize, child1.shrink); + hpaned.pack2 (child2.widget, child2.resize, child2.shrink); + toolitem.show_all (); + return toolitem; + } + + public void set_child1 (Gtk.Widget widget, string name, bool resize, bool shrink) { + child1.widget = widget; + child1.name = name; + child1.resize = resize; + child1.shrink = shrink; + } + + public void set_child2 (Gtk.Widget widget, string name, bool resize, bool shrink) { + child2.widget = widget; + child2.name = name; + child2.resize = resize; + child2.shrink = shrink; + } + + public Gtk.Widget? get_child1 () { + return child1.widget; + } + + public Gtk.Widget? get_child2 () { + return child2.widget; + } + + public Gtk.Widget? get_child_by_name (string name) { + if (name == child1.name) + return child1.widget; + else if (name == child2.name) + return child2.widget; + return null; + } + + public string get_child1_name () { + return child1.name; + } + + public string get_child2_name () { + return child2.name; + } + } +} + diff --git a/midori/wscript_build b/midori/wscript_build index e0ee7e69..4290505e 100644 --- a/midori/wscript_build +++ b/midori/wscript_build @@ -18,7 +18,12 @@ if progressive or Options.commands['check']: obj.uselib = libs obj.add_marshal_file ('marshal.list', 'midori_cclosure_marshal') obj.install_path = None - obj.packages = 'glib-2.0 gio-2.0 gtk+-2.0 libsoup-2.4 webkit-1.0' + obj.vapi_dirs = '../midori ../katze' + obj.packages = 'glib-2.0 gio-2.0 libsoup-2.4' + if bld.env['HAVE_GTK3']: + obj.packages += ' gtk+-3.0 webkitgtk-3.0' + else: + obj.packages += ' gtk+-2.0 webkit-1.0' bld.add_group () if progressive: