[geany/geany-plugins] 147c18: git-ui: Add a preference dialog
Colomban Wendling
git-noreply at xxxxx
Mon Feb 16 14:35:09 UTC 2015
Branch: refs/heads/master
Author: Colomban Wendling <ban at herbesfolles.org>
Committer: Colomban Wendling <ban at herbesfolles.org>
Date: Mon, 16 Feb 2015 14:35:09 UTC
Commit: 147c188c1c03ef38ca62c181e981935bd9650930
https://github.com/geany/geany-plugins/commit/147c188c1c03ef38ca62c181e981935bd9650930
Log Message:
-----------
git-ui: Add a preference dialog
Modified Paths:
--------------
build/git-ui.m4
git-ui/Makefile.am
git-ui/data/Makefile.am
git-ui/data/prefs.ui
git-ui/src/ggu-plugin.c
po/POTFILES.in
Modified: build/git-ui.m4
1 lines changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -11,6 +11,7 @@ AC_DEFUN([GP_CHECK_GITUI],
AC_CONFIG_FILES([
git-ui/Makefile
+ git-ui/data/Makefile
git-ui/src/Makefile
])
])
Modified: git-ui/Makefile.am
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -1,4 +1,4 @@
include $(top_srcdir)/build/vars.auxfiles.mk
plugin = git-ui
-SUBDIRS = src
+SUBDIRS = data src
Modified: git-ui/data/Makefile.am
4 lines changed, 4 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,4 @@
+include $(top_srcdir)/build/vars.docs.mk
+plugin = git-ui
+
+dist_plugindata_DATA = prefs.ui
Modified: git-ui/data/prefs.ui
162 lines changed, 162 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <requires lib="gtk+" version="2.16"/>
+ <!-- interface-naming-policy toplevel-contextual -->
+ <object class="GtkVBox" id="base">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkVBox" id="box2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkHBox" id="box3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Added lines:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">added-color-button</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="added-color-button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="box4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Changed lines:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">changed-color-button</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="changed-color-button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="box5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Removed lines:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">removed-color-button</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="removed-color-button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Colors</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+</interface>
Modified: git-ui/src/ggu-plugin.c
119 lines changed, 119 insertions(+), 0 deletions(-)
===================================================================
@@ -1039,3 +1039,122 @@ plugin_cleanup (void)
git_threads_shutdown ();
}
+
+/* --- configuration dialog --- */
+
+typedef struct ConfigureWidgets ConfigureWidgets;
+struct ConfigureWidgets {
+ GtkWidget *base;
+ GtkWidget *added_color_button;
+ GtkWidget *changed_color_button;
+ GtkWidget *removed_color_button;
+};
+
+static void configure_widgets_free (ConfigureWidgets *cw)
+{
+ g_object_unref (cw->base);
+ g_free (cw);
+}
+
+static void
+color_from_int (GdkColor *color,
+ guint32 val)
+{
+ color->red = ((val & 0xff0000) >> 16) * 0x101;
+ color->green = ((val & 0x00ff00) >> 8) * 0x101;
+ color->blue = ((val & 0x0000ff) >> 0) * 0x101;
+}
+
+static guint32
+color_to_int (const GdkColor *color)
+{
+ return (((color->red / 0x101) << 16) |
+ ((color->green / 0x101) << 8) |
+ ((color->blue / 0x101) << 0));
+}
+
+static void
+on_plugin_configure_response (GtkDialog *dialog,
+ gint response,
+ ConfigureWidgets *cw)
+{
+ switch (response) {
+ case GTK_RESPONSE_APPLY:
+ case GTK_RESPONSE_OK: {
+ guint i;
+ GdkColor color;
+ GeanyDocument *doc = document_get_current ();
+
+ gtk_color_button_get_color (GTK_COLOR_BUTTON (cw->added_color_button),
+ &color);
+ G_markers[MARKER_LINE_ADDED].color = color_to_int (&color);
+ gtk_color_button_get_color (GTK_COLOR_BUTTON (cw->changed_color_button),
+ &color);
+ G_markers[MARKER_LINE_CHANGED].color = color_to_int (&color);
+ gtk_color_button_get_color (GTK_COLOR_BUTTON (cw->removed_color_button),
+ &color);
+ G_markers[MARKER_LINE_REMOVED].color = color_to_int (&color);
+
+ /* update everything */
+ foreach_document (i) {
+ release_resources (documents[i]->editor->sci);
+ }
+ if (doc) {
+ update_diff_push (doc, FALSE);
+ }
+ }
+ }
+}
+
+GtkWidget *
+plugin_configure (GtkDialog *dialog)
+{
+ GError *error = NULL;
+ GtkWidget *base = NULL;
+ GtkBuilder *builder = gtk_builder_new ();
+
+ gtk_builder_set_translation_domain (builder, GETTEXT_PACKAGE);
+ if (! gtk_builder_add_from_file (builder, PKGDATADIR"/"PLUGIN"/prefs.ui",
+ &error)) {
+ g_critical (_("Failed to load UI definition, please check your "
+ "installation. The error was: %s"), error->message);
+ g_error_free (error);
+ } else {
+ GdkColor color;
+ ConfigureWidgets *cw = g_malloc (sizeof *cw);
+ struct {
+ const gchar *name;
+ GtkWidget **ptr;
+ } map[] = {
+ { "base", &cw->base },
+ { "added-color-button", &cw->added_color_button },
+ { "changed-color-button", &cw->changed_color_button },
+ { "removed-color-button", &cw->removed_color_button },
+ };
+ guint i;
+
+ for (i = 0; i < G_N_ELEMENTS (map); i++) {
+ *map[i].ptr = GTK_WIDGET (gtk_builder_get_object (builder, map[i].name));
+ }
+
+ color_from_int (&color, G_markers[MARKER_LINE_ADDED].color);
+ gtk_color_button_set_color (GTK_COLOR_BUTTON (cw->added_color_button),
+ &color);
+ color_from_int (&color, G_markers[MARKER_LINE_CHANGED].color);
+ gtk_color_button_set_color (GTK_COLOR_BUTTON (cw->changed_color_button),
+ &color);
+ color_from_int (&color, G_markers[MARKER_LINE_REMOVED].color);
+ gtk_color_button_set_color (GTK_COLOR_BUTTON (cw->removed_color_button),
+ &color);
+
+ base = g_object_ref_sink (cw->base);
+
+ g_signal_connect_data (dialog, "response",
+ G_CALLBACK (on_plugin_configure_response),
+ cw, (GClosureNotify) configure_widgets_free, 0);
+ }
+
+ g_object_unref (builder);
+
+ return base;
+}
Modified: po/POTFILES.in
1 lines changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -217,6 +217,7 @@ geanyvc/src/utils.c
geniuspaste/src/geniuspaste.c
# GitUI
+[type: gettext/glade]git-ui/data/prefs.ui
git-ui/src/ggu-plugin.c
# Markdown
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Plugins-Commits
mailing list