SF.net SVN: geany:[3049] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Tue Oct 7 12:00:30 UTC 2008


Revision: 3049
          http://geany.svn.sourceforge.net/geany/?rev=3049&view=rev
Author:   ntrel
Date:     2008-10-07 12:00:29 +0000 (Tue, 07 Oct 2008)

Log Message:
-----------
Add toolbar with Refresh button to sync to the current document, and
an Unsplit button (reuses existing string).

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/plugins/splitwindow.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2008-10-06 18:37:22 UTC (rev 3048)
+++ trunk/ChangeLog	2008-10-07 12:00:29 UTC (rev 3049)
@@ -1,3 +1,10 @@
+2008-10-07  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * plugins/splitwindow.c:
+   Add toolbar with Refresh button to sync to the current document, and
+   an Unsplit button (reuses existing string).
+
+
 2008-10-06  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
 
  * plugins/splitwindow.c:

Modified: trunk/plugins/splitwindow.c
===================================================================
--- trunk/plugins/splitwindow.c	2008-10-06 18:37:22 UTC (rev 3048)
+++ trunk/plugins/splitwindow.c	2008-10-07 12:00:29 UTC (rev 3049)
@@ -59,8 +59,11 @@
 
 static enum State plugin_state;
 static GeanyEditor *our_editor = NULL;	/* original editor for split view */
+static ScintillaObject *our_sci = NULL;	/* new editor widget */
 
+static void on_unsplit(GtkMenuItem *menuitem, gpointer user_data);
 
+
 static gint sci_get_value(ScintillaObject *sci, gint message_id, gint param)
 {
 	return p_sci->send_message(sci, message_id, param, 0);
@@ -171,13 +174,74 @@
 }
 
 
+static GtkWidget *create_tool_button(const gchar *label, const gchar *stock_id)
+{
+	GtkToolItem *item;
+	GtkTooltips *tooltips = GTK_TOOLTIPS(p_support->lookup_widget(
+		geany->main_widgets->window, "tooltips"));
+
+	item = gtk_tool_button_new(NULL, label);
+	gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(item), stock_id);
+	gtk_tool_item_set_tooltip(item, tooltips, label, NULL);
+
+	return GTK_WIDGET(item);
+}
+
+
+static void on_refresh(void)
+{
+	GeanyDocument *doc = p_document->get_current();
+
+	g_return_if_fail(doc);
+	g_return_if_fail(our_sci);
+
+	sync_to_current(doc->editor->sci, our_sci);
+}
+
+
+/* avoid adding new strings which are the same but without a leading underscore */
+static const gchar *after_underscore(const gchar *str)
+{
+	const gchar *u = g_strstr_len(str, -1, "_");
+
+	if (u)
+		return ++u;
+	else
+		return str;
+}
+
+
+static GtkWidget *create_toolbar(void)
+{
+	GtkWidget *toolbar, *item;
+	GtkToolItem *tool_item;
+
+	toolbar = gtk_toolbar_new();
+	gtk_toolbar_set_icon_size(GTK_TOOLBAR(toolbar), GTK_ICON_SIZE_MENU);
+	gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_ICONS);
+
+	item = (GtkWidget*)gtk_tool_button_new_from_stock(GTK_STOCK_REFRESH);
+	gtk_container_add(GTK_CONTAINER(toolbar), item);
+	g_signal_connect(item, "clicked", G_CALLBACK(on_refresh), NULL);
+
+	tool_item = gtk_tool_item_new();
+	gtk_tool_item_set_expand(tool_item, TRUE);
+	gtk_container_add(GTK_CONTAINER(toolbar), GTK_WIDGET(tool_item));
+
+	item = create_tool_button(after_underscore(_("_Unsplit")), GTK_STOCK_CLOSE);
+	gtk_container_add(GTK_CONTAINER(toolbar), item);
+	g_signal_connect(item, "clicked", G_CALLBACK(on_unsplit), NULL);
+
+	return toolbar;
+}
+
+
 static void on_split_view(GtkMenuItem *menuitem, gpointer user_data)
 {
 	GtkWidget *notebook = geany_data->main_widgets->notebook;
 	GtkWidget *parent = gtk_widget_get_parent(notebook);
-	GtkWidget *pane;
+	GtkWidget *pane, *toolbar, *box;
 	GeanyDocument *doc = p_document->get_current();
-	ScintillaObject *sci;
 	gint width = notebook->allocation.width / 2;
 
 	set_state(STATE_SPLIT_HORIZONTAL);
@@ -194,10 +258,15 @@
 	gtk_container_add(GTK_CONTAINER(parent), pane);
 	gtk_widget_reparent(notebook, pane);
 
+	box = gtk_vbox_new(FALSE, 0);
+	toolbar = create_toolbar();
+	gtk_box_pack_start(GTK_BOX(box), toolbar, FALSE, FALSE, 0);
+	gtk_container_add(GTK_CONTAINER(pane), box);
+
 	our_editor = doc->editor;
-	sci = p_editor->create_widget(our_editor);
-	sync_to_current(our_editor->sci, sci);
-	gtk_paned_add2(GTK_PANED(pane), GTK_WIDGET(sci));
+	our_sci = p_editor->create_widget(our_editor);
+	sync_to_current(our_editor->sci, our_sci);
+	gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(our_sci), TRUE, TRUE, 0);
 
 	gtk_paned_set_position(GTK_PANED(pane), width);
 	gtk_widget_show_all(pane);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list