SF.net SVN: geany:[5016] branches/unstable

elextr at users.sourceforge.net elextr at xxxxx
Sat Jun 12 05:09:53 UTC 2010


Revision: 5016
          http://geany.svn.sourceforge.net/geany/?rev=5016&view=rev
Author:   elextr
Date:     2010-06-12 05:09:53 +0000 (Sat, 12 Jun 2010)

Log Message:
-----------
Make build config entries light grey until set.

Modified Paths:
--------------
    branches/unstable/ChangeLog
    branches/unstable/src/build.c

Modified: branches/unstable/ChangeLog
===================================================================
--- branches/unstable/ChangeLog	2010-06-10 15:43:50 UTC (rev 5015)
+++ branches/unstable/ChangeLog	2010-06-12 05:09:53 UTC (rev 5016)
@@ -1,3 +1,9 @@
+2010-06-12  Lex Trotman  <elextr.at.gmail.com>
+
+ * src/build.c
+   Make build config entries light grey until set.
+
+
 2010-06-10  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
 
  * src/keybindings.c, src/about.c, THANKS:

Modified: branches/unstable/src/build.c
===================================================================
--- branches/unstable/src/build.c	2010-06-10 15:43:50 UTC (rev 5015)
+++ branches/unstable/src/build.c	2010-06-12 05:09:53 UTC (rev 5016)
@@ -1727,9 +1727,18 @@
 	gint grp;
 	gint cmd;
 	gboolean cleared;
+	gboolean used_dst;
 } RowWidgets;
 
 
+static void set_row_color(RowWidgets *r, GdkColor *color )
+{
+	enum GeanyBuildCmdEntries i;
+	for (i = 0; i < GEANY_BC_CMDENTRIES_COUNT; i++)
+		gtk_widget_modify_text(r->entries[i], GTK_STATE_NORMAL, color);
+};
+
+
 static void set_build_command_entry_text(GtkWidget *wid, const gchar *text)
 {
 	if (GTK_IS_BUTTON(wid))
@@ -1744,6 +1753,7 @@
 	RowWidgets *r = (RowWidgets*)user_data;
 	gint src;
 	enum GeanyBuildCmdEntries i;
+	GdkColor color;
 	GeanyBuildCommand *bc = get_next_build_cmd(NULL, r->grp, r->cmd, r->dst, &src);
 
 	if (bc != NULL)
@@ -1764,6 +1774,9 @@
 			set_build_command_entry_text(r->entries[i], "");
 		}
 	}
+	r->used_dst = FALSE;
+	gdk_color_parse("light grey", &color);
+	set_row_color(r, &color);
 	r->cleared = TRUE;
 }
 
@@ -1774,16 +1787,27 @@
 }
 
 
-static void on_label_button_clicked(GtkWidget *wid)
+static void on_label_button_clicked(GtkWidget *wid, gpointer user_data)
 {
+	RowWidgets *r = (RowWidgets*)user_data;
 	const gchar *old = gtk_button_get_label(GTK_BUTTON(wid));
 	gchar *str = dialogs_show_input(_("Set menu item label"), NULL, old);
 
 	gtk_button_set_label(GTK_BUTTON(wid), str);
 	g_free(str);
+	r->used_dst = TRUE;
+	set_row_color(r, NULL);
 }
 
 
+static void on_entry_focus(GtkWidget *wid, GdkEventFocus *unused, gpointer user_data)
+{
+	RowWidgets *r = (RowWidgets*)user_data;
+	r->used_dst = TRUE;
+	set_row_color(r, NULL);
+}
+
+
 /* Column headings, array NULL-terminated */
 static const gchar *colheads[] =
 {
@@ -1812,6 +1836,7 @@
 	gint src;
 	enum GeanyBuildCmdEntries i;
 	guint column = 0;
+	GdkColor color;
 
 	label = gtk_label_new(g_strdup_printf("%d:", cmd + 1));
 	gtk_table_attach(table, label, column, column + 1, row, row + 1, GTK_FILL,
@@ -1831,10 +1856,13 @@
 			GtkWidget *wid = roww->entries[i] = gtk_button_new();
 			gtk_button_set_use_underline(GTK_BUTTON(wid), TRUE);
 			ui_widget_set_tooltip_text(wid, _("Click to set menu item label"));
-			g_signal_connect(wid, "clicked", G_CALLBACK(on_label_button_clicked), NULL);
+			g_signal_connect(wid, "clicked", G_CALLBACK(on_label_button_clicked), roww);
 		}
 		else
+		{
 			roww->entries[i] = gtk_entry_new();
+			g_signal_connect(roww->entries[i], "focus-in-event", G_CALLBACK(on_entry_focus), roww);
+		}
 		gtk_table_attach(table, roww->entries[i], column, column + 1, row, row + 1, xflags,
 			GTK_FILL | GTK_EXPAND, entry_x_padding, entry_y_padding);
 	}
@@ -1852,10 +1880,15 @@
 	for (i = 0; i < GEANY_BC_CMDENTRIES_COUNT; i++)
 	{
 		const gchar *str = "";
-		if (bc != NULL && (str = bc->entries[i]) == NULL)
-			str = "";
+		if (bc != NULL )
+		{
+			if ((str = bc->entries[i]) == NULL)	str = "";
+			else if ((gint)dst == src) roww->used_dst = TRUE;
+		}
 		set_build_command_entry_text(roww->entries[i], str);
 	}
+	gdk_color_parse("light grey", &color);
+	if (bc != NULL && ((gint)dst > src)) set_row_color(roww, &color);
 	if (bc != NULL && (src > (gint)dst || (grp == GEANY_GBG_FT && (doc == NULL || doc->file_type == NULL))))
 	{
 		for (i = 0; i < GEANY_BC_CMDENTRIES_COUNT; i++)
@@ -2059,35 +2092,14 @@
 			changed = TRUE;
 		}
 	}
-	if (
-			(
-				table_data->rows[drow]->cmdsrc == NULL		/* originally there was no content */
-				&&
-				(
-					NZV(entries[GEANY_BC_LABEL])			/* but now one field has some */
-					|| NZV(entries[GEANY_BC_COMMAND])
-					|| NZV(entries[GEANY_BC_WORKING_DIR])
-				)
-			)
-			||
-			(
-				table_data->rows[drow]->cmdsrc != NULL		/* originally there was content */
-				&&
-				(											/* and some of it was changed */
-					stcmp(entries[GEANY_BC_LABEL], table_data->rows[drow]->cmdsrc->entries[GEANY_BC_LABEL]) != 0
-					|| stcmp(entries[GEANY_BC_COMMAND], table_data->rows[drow]->cmdsrc->entries[GEANY_BC_COMMAND]) != 0
-					|| stcmp(entries[GEANY_BC_WORKING_DIR],
-							table_data->rows[drow]->cmdsrc->entries[GEANY_BC_WORKING_DIR]) != 0
-				)
-			)
-		)
+	if (table_data->rows[drow]->used_dst == TRUE)
 	{
 		if (dst->dst[grp] != NULL)
 		{
 			if (*(dst->dst[grp]) == NULL)
 				*(dst->dst[grp]) = g_new0(GeanyBuildCommand, build_groups_count[grp]);
-			for (i = 0; i < GEANY_BC_CMDENTRIES_COUNT; i++)
-				setptr((*(dst->dst[grp]))[cmd].entries[i], entries[i]);
+			for (i = 0; i < GEANY_BC_CMDENTRIES_COUNT; i++){ printf(" set %d to '%s'\n", i, entries[i]);
+				setptr((*(dst->dst[grp]))[cmd].entries[i], entries[i]); }
 			(*(dst->dst[grp]))[cmd].exists = TRUE;
 			(*(dst->dst[grp]))[cmd].changed = TRUE;
 			changed = TRUE;


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