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.