SF.net SVN: geany-plugins:[535] trunk/geanyvc
kugel- at users.sourceforge.net
kugel- at xxxxx
Sat Mar 7 19:43:20 UTC 2009
Revision: 535
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=535&view=rev
Author: kugel-
Date: 2009-03-07 19:43:19 +0000 (Sat, 07 Mar 2009)
Log Message:
-----------
Commit dialog:
a) Add a checkbox to select or deselect all files at once, makes it easier to commit very few files only in a branch with many changes.
b) Always base the file list off the base directory, fixes situations where you cannot commit if the project as no files in the base directory.
Modified Paths:
--------------
trunk/geanyvc/geanyvc.c
trunk/geanyvc/po/de.po
Modified: trunk/geanyvc/geanyvc.c
===================================================================
--- trunk/geanyvc/geanyvc.c 2009-03-07 16:50:04 UTC (rev 534)
+++ trunk/geanyvc/geanyvc.c 2009-03-07 19:43:19 UTC (rev 535)
@@ -1110,15 +1110,23 @@
}
static void
+refresh_diff_view(GtkTreeView *treeview)
+{
+ gchar *diff;
+ GtkWidget *diffView = ui_lookup_widget(GTK_WIDGET(treeview), "textDiff");
+ diff = get_commit_diff(GTK_TREE_VIEW(treeview));
+ set_diff_buff(gtk_text_view_get_buffer(GTK_TEXT_VIEW(diffView)), diff);
+ g_free(diff);
+}
+
+static void
commit_toggled(G_GNUC_UNUSED GtkCellRendererToggle * cell, gchar * path_str, gpointer data)
{
GtkTreeView *treeview = GTK_TREE_VIEW(data);
- GtkWidget *diffView = ui_lookup_widget(GTK_WIDGET(treeview), "textDiff");
GtkTreeModel *model = gtk_tree_view_get_model(treeview);
GtkTreeIter iter;
GtkTreePath *path = gtk_tree_path_new_from_string(path_str);
gboolean fixed;
- gchar *diff;
/* get toggled iter */
gtk_tree_model_get_iter(model, &iter, path);
@@ -1130,15 +1138,36 @@
/* set new value */
gtk_list_store_set(GTK_LIST_STORE(model), &iter, COLUMN_COMMIT, fixed, -1);
- diff = get_commit_diff(GTK_TREE_VIEW(treeview));
- set_diff_buff(gtk_text_view_get_buffer(GTK_TEXT_VIEW(diffView)), diff);
+ refresh_diff_view(treeview);
/* clean up */
gtk_tree_path_free(path);
- g_free(diff);
}
+gboolean
+toggle_all_commit_files (GtkTreeModel *model, GtkTreePath *path,
+ GtkTreeIter *iter, gpointer data)
+{
+ (void)path;
+ gtk_list_store_set(GTK_LIST_STORE(model), iter, COLUMN_COMMIT, *(gint*)data, -1);
+ return FALSE;
+}
+
static void
+commit_all_toggled(G_GNUC_UNUSED GtkCellRendererToggle *cell, gpointer data)
+{
+ GtkTreeView *treeview = GTK_TREE_VIEW(data);
+ GtkTreeModel *model = gtk_tree_view_get_model(treeview);
+ static gint onoff = 0;
+ gpointer ptr_onoff = &onoff;
+
+ gtk_tree_model_foreach(model, toggle_all_commit_files, ptr_onoff);
+ /* toggle value */
+ onoff ^= 1;
+ refresh_diff_view(treeview);
+}
+
+static void
add_commit_columns(GtkTreeView * treeview)
{
GtkCellRenderer *renderer;
@@ -1201,6 +1230,7 @@
GtkWidget *scrolledwindow1;
GtkWidget *treeSelect;
GtkWidget *vpaned2;
+ GtkWidget *vpaned3;
GtkWidget *scrolledwindow2;
GtkWidget *textDiff;
GtkWidget *frame1;
@@ -1211,6 +1241,7 @@
GtkWidget *dialog_action_area1;
GtkWidget *btnCancel;
GtkWidget *btnCommit;
+ GtkWidget *select_cbox;
gchar *rcstyle = g_strdup_printf("style \"geanyvc-diff-font\"\n"
"{\n"
@@ -1265,6 +1296,16 @@
GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledwindow2), GTK_SHADOW_IN);
+ vpaned3 = gtk_vpaned_new();
+ gtk_widget_show(vpaned3);
+ gtk_paned_pack2(GTK_PANED(vpaned2), vpaned3, FALSE, FALSE);
+
+ select_cbox = gtk_check_button_new_with_mnemonic(_("_De-/select all files"));
+ gtk_toggle_button_set_active((GtkToggleButton*)select_cbox, TRUE);
+ gtk_widget_show(select_cbox);
+ gtk_paned_pack1(GTK_PANED(vpaned3), select_cbox, FALSE, FALSE);
+ g_signal_connect(select_cbox, "toggled", G_CALLBACK(commit_all_toggled), treeSelect);
+
textDiff = gtk_text_view_new();
gtk_widget_set_name(textDiff, "GeanyVCCommitDialogDiff");
gtk_widget_show(textDiff);
@@ -1276,7 +1317,7 @@
frame1 = gtk_frame_new(NULL);
gtk_widget_show(frame1);
- gtk_paned_pack2(GTK_PANED(vpaned2), frame1, TRUE, TRUE);
+ gtk_paned_pack2(GTK_PANED(vpaned3), frame1, TRUE, TRUE);
gtk_frame_set_shadow_type(GTK_FRAME(frame1), GTK_SHADOW_NONE);
alignment1 = gtk_alignment_new(0.5, 0.5, 1, 1);
@@ -1291,6 +1332,7 @@
GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledwindow3), GTK_SHADOW_IN);
+
textCommitMessage = gtk_text_view_new();
gtk_widget_show(textCommitMessage);
gtk_container_add(GTK_CONTAINER(scrolledwindow3), textCommitMessage);
@@ -1332,6 +1374,7 @@
GLADE_HOOKUP_OBJECT_NO_REF(commitDialog, dialog_action_area1, "dialog_action_area1");
GLADE_HOOKUP_OBJECT(commitDialog, btnCancel, "btnCancel");
GLADE_HOOKUP_OBJECT(commitDialog, btnCommit, "btnCommit");
+ GLADE_HOOKUP_OBJECT(commitDialog, select_cbox, "select_cbox");
return commitDialog;
}
@@ -1372,10 +1415,9 @@
doc = document_get_current();
g_return_if_fail(doc);
g_return_if_fail(doc->file_name);
- dir = g_path_get_dirname(doc->file_name);
-
- vc = find_vc(dir);
+ vc = find_vc(doc->file_name);
g_return_if_fail(vc);
+ dir = vc->get_base_dir(doc->file_name);
lst = vc->get_commit_files(dir);
if (!lst)
Modified: trunk/geanyvc/po/de.po
===================================================================
--- trunk/geanyvc/po/de.po 2009-03-07 16:50:04 UTC (rev 534)
+++ trunk/geanyvc/po/de.po 2009-03-07 19:43:19 UTC (rev 535)
@@ -92,6 +92,10 @@
msgid "Commit"
msgstr "Übertragen"
+#: ../geanyvc.c:1303
+msgid "_De-/select all files"
+msgstr "Alle _Dateien aus- bzw. abwählen"
+
#: ../geanyvc.c:1301
msgid "<b>Commit message:</b>"
msgstr "<b>Commitnachricht:</b>"
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