SF.net SVN: geany-plugins:[1329] trunk/geanygendoc/src
colombanw at users.sourceforge.net
colombanw at xxxxx
Sat May 1 17:49:41 UTC 2010
Revision: 1329
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1329&view=rev
Author: colombanw
Date: 2010-05-01 17:49:41 +0000 (Sat, 01 May 2010)
Log Message:
-----------
GeanyGenDoc: Implement and use Glade-style frames
This makes the UI quite nicer and more consistent with both Geany
and GNOME.
Modified Paths:
--------------
trunk/geanygendoc/src/Makefile.am
trunk/geanygendoc/src/ggd-plugin.c
Added Paths:
-----------
trunk/geanygendoc/src/ggd-widget-frame.c
trunk/geanygendoc/src/ggd-widget-frame.h
Modified: trunk/geanygendoc/src/Makefile.am
===================================================================
--- trunk/geanygendoc/src/Makefile.am 2010-05-01 17:49:07 UTC (rev 1328)
+++ trunk/geanygendoc/src/Makefile.am 2010-05-01 17:49:41 UTC (rev 1329)
@@ -9,7 +9,8 @@
ggd-tag-utils.c \
ggd-options.c \
ggd-plugin.c \
- ggd-utils.c
+ ggd-utils.c \
+ ggd-widget-frame.c
noinst_HEADERS = ggd.h \
ggd-doc-setting.h \
ggd-doc-type.h \
@@ -20,7 +21,8 @@
ggd-macros.h \
ggd-options.h \
ggd-plugin.h \
- ggd-utils.h
+ ggd-utils.h \
+ ggd-widget-frame.h
geanygendoc_la_LDFLAGS = -module -avoid-version
geanygendoc_la_LIBADD = @GEANY_LIBS@ \
@GLIB_LIBS@ \
Modified: trunk/geanygendoc/src/ggd-plugin.c
===================================================================
--- trunk/geanygendoc/src/ggd-plugin.c 2010-05-01 17:49:07 UTC (rev 1328)
+++ trunk/geanygendoc/src/ggd-plugin.c 2010-05-01 17:49:41 UTC (rev 1329)
@@ -424,6 +424,8 @@
/* --- Configuration dialog --- */
+#include "ggd-widget-frame.h"
+
static void
conf_dialog_response_handler (GtkDialog *dialog,
gint response_id,
@@ -483,7 +485,7 @@
widget);
gtk_box_pack_start (GTK_BOX (box), widget, FALSE, FALSE, 0);
/* environ editor */
- widget = gtk_frame_new (_("Global environment"));
+ widget = ggd_frame_new (_("Global environment"));
ui_widget_set_tooltip_text (widget, _("Global environment overrides and "
"additions. This environment will be "
"merged with the filetype-specific "
Added: trunk/geanygendoc/src/ggd-widget-frame.c
===================================================================
--- trunk/geanygendoc/src/ggd-widget-frame.c (rev 0)
+++ trunk/geanygendoc/src/ggd-widget-frame.c 2010-05-01 17:49:41 UTC (rev 1329)
@@ -0,0 +1,119 @@
+/*
+ *
+ * GeanyGenDoc, a Geany plugin to ease generation of source code documentation
+ * Copyright (C) 2010 Colomban Wendling <ban at herbesfolles.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/*
+ * A GtkFrame subclass that reproduce Glade's frames.
+ */
+
+#include <gtk/gtk.h>
+
+#include "ggd-widget-frame.h"
+
+
+struct _GgdFramePrivate
+{
+ PangoAttrList *label_attr_list;
+ GtkWidget *alignment;
+};
+
+
+G_DEFINE_TYPE (GgdFrame, ggd_frame, GTK_TYPE_FRAME)
+
+
+static void
+ggd_frame_add (GtkContainer *container,
+ GtkWidget *child)
+{
+ GgdFrame *self = GGD_FRAME (container);
+
+ /* chain additions to the alignment if we aren't adding it */
+ if (child == self->priv->alignment) {
+ GTK_CONTAINER_CLASS (ggd_frame_parent_class)->add (container, child);
+ } else {
+ container = GTK_CONTAINER (self->priv->alignment);
+ GTK_CONTAINER_GET_CLASS (container)->add (container, child);
+ }
+}
+
+static void
+ggd_frame_finalize (GObject *object)
+{
+ GgdFrame *self = GGD_FRAME (object);
+
+ pango_attr_list_unref (self->priv->label_attr_list);
+
+ G_OBJECT_CLASS (ggd_frame_parent_class)->finalize (object);
+}
+
+static void
+ggd_frame_class_init (GgdFrameClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass);
+
+ object_class->finalize = ggd_frame_finalize;
+ container_class->add = ggd_frame_add;
+
+ g_type_class_add_private (klass, sizeof (GgdFramePrivate));
+}
+
+static void
+ggd_frame_label_notify (GObject *object,
+ GParamSpec *pspec,
+ gpointer data)
+{
+ GgdFrame *self = GGD_FRAME (object);
+ GtkWidget *label;
+
+ label = gtk_frame_get_label_widget (GTK_FRAME (self));
+ if (label) {
+ gtk_label_set_attributes (GTK_LABEL (label), self->priv->label_attr_list);
+ }
+}
+
+static void
+ggd_frame_init (GgdFrame *self)
+{
+ self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
+ GGD_FRAME_TYPE,
+ GgdFramePrivate);
+
+ /* set-up the frame attributes */
+ gtk_frame_set_shadow_type (GTK_FRAME (self), GTK_SHADOW_NONE);
+ /* set-up fake child */
+ self->priv->alignment = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
+ gtk_alignment_set_padding (GTK_ALIGNMENT(self->priv->alignment), 0, 0, 12, 0);
+ gtk_container_add (GTK_CONTAINER (self), self->priv->alignment);
+ gtk_widget_show (self->priv->alignment);
+ /* set-up the label's attributes */
+ self->priv->label_attr_list = pango_attr_list_new ();
+ pango_attr_list_insert (self->priv->label_attr_list,
+ pango_attr_weight_new (PANGO_WEIGHT_BOLD));
+
+ g_signal_connect (self, "notify::label",
+ G_CALLBACK (ggd_frame_label_notify), NULL);
+}
+
+
+GtkWidget *
+ggd_frame_new (const gchar *label)
+{
+ return g_object_new (GGD_FRAME_TYPE, "label", label, NULL);
+}
Added: trunk/geanygendoc/src/ggd-widget-frame.h
===================================================================
--- trunk/geanygendoc/src/ggd-widget-frame.h (rev 0)
+++ trunk/geanygendoc/src/ggd-widget-frame.h 2010-05-01 17:49:41 UTC (rev 1329)
@@ -0,0 +1,63 @@
+/*
+ *
+ * GeanyGenDoc, a Geany plugin to ease generation of source code documentation
+ * Copyright (C) 2010 Colomban Wendling <ban at herbesfolles.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef H_GGD_WIDGET_FRAME
+#define H_GGD_WIDGET_FRAME
+
+#include <gtk/gtk.h>
+
+#include "ggd-macros.h"
+
+G_BEGIN_DECLS
+GGD_BEGIN_PLUGIN_API
+
+
+#define GGD_FRAME_TYPE (ggd_frame_get_type ())
+#define GGD_FRAME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GGD_FRAME_TYPE, GgdFrame))
+#define GGD_FRAME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GGD_FRAME_TYPE, GgdFrameClass))
+#define GGD_IS_FRAME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GGD_FRAME_TYPE))
+#define GGD_IS_FRAME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GGD_FRAME_TYPE))
+
+
+typedef struct _GgdFrame GgdFrame;
+typedef struct _GgdFrameClass GgdFrameClass;
+typedef struct _GgdFramePrivate GgdFramePrivate;
+
+struct _GgdFrame
+{
+ GtkFrame parent;
+
+ GgdFramePrivate *priv;
+};
+
+struct _GgdFrameClass
+{
+ GtkFrameClass parent_class;
+};
+
+
+GType ggd_frame_get_type (void);
+GtkWidget *ggd_frame_new (const gchar *label);
+
+
+GGD_END_PLUGIN_API
+G_END_DECLS
+
+#endif /* guard */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Plugins-Commits
mailing list