From 8be9c6aea8f77b10fc124890140bc6d201457c03 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Wed, 9 Jun 2010 12:27:58 +0000 Subject: [PATCH 2/6] Move general templates from source code into files. Load general templates from system path instead of creating them in the user's config dir. git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/branches/unstable@5012 ea778897-0a13-0410-b9d1-a72fbfd435f5 --- ChangeLog | 10 +++++ Makefile.am | 6 +++ data/templates/bsd | 26 +++++++++++++ data/templates/changelog | 6 +++ data/templates/fileheader | 5 +++ data/templates/function | 5 +++ data/templates/gpl | 15 +++++++ src/templates.c | 82 ++++++++++++++------------------------- wscript | 1 + 9 files changed, 104 insertions(+), 52 deletions(-) create mode 100644 data/templates/bsd create mode 100644 data/templates/changelog create mode 100644 data/templates/fileheader create mode 100644 data/templates/function create mode 100644 data/templates/gpl diff --git a/ChangeLog b/ChangeLog index 42db614d2..e580def01 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2010-06-09 Nick Treleaven + + * src/templates.c, data/templates/gpl, data/templates/function, + data/templates/changelog, data/templates/bsd, + data/templates/fileheader, wscript, Makefile.am: + Move general templates from source code into files. + Load general templates from system path instead of creating them in + the user's config dir. + + 2010-06-08 Nick Treleaven * Makefile.am: diff --git a/Makefile.am b/Makefile.am index 0bf780567..1936e3d0f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -22,6 +22,7 @@ SYS_DATA_FILES = \ data/filetype_extensions.conf \ data/snippets.conf \ data/ui_toolbar.xml \ + $(srcdir)/data/templates/* \ $(srcdir)/data/templates/files/* EXTRA_DIST = \ @@ -63,6 +64,11 @@ install-data-local: fi \ done $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/templates; + for file in $(srcdir)/data/templates/*; do \ + if test -f $$file; then \ + $(INSTALL_DATA) $$file $(DESTDIR)$(pkgdatadir)/templates/; \ + fi \ + done $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/templates/files; for file in $(srcdir)/data/templates/files/*; do \ if test -f $$file; then \ diff --git a/data/templates/bsd b/data/templates/bsd new file mode 100644 index 000000000..790f6861d --- /dev/null +++ b/data/templates/bsd @@ -0,0 +1,26 @@ +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. +* Neither the name of the {company} nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/data/templates/changelog b/data/templates/changelog new file mode 100644 index 000000000..778ba08c3 --- /dev/null +++ b/data/templates/changelog @@ -0,0 +1,6 @@ +{date} {developer} <{mail}> + + * + + + diff --git a/data/templates/fileheader b/data/templates/fileheader new file mode 100644 index 000000000..f3529f991 --- /dev/null +++ b/data/templates/fileheader @@ -0,0 +1,5 @@ +{filename} + +Copyright {year} {developer} <{mail}> + +{gpl} diff --git a/data/templates/function b/data/templates/function new file mode 100644 index 000000000..11ed198d2 --- /dev/null +++ b/data/templates/function @@ -0,0 +1,5 @@ + +name: {functionname} +@param +@return + diff --git a/data/templates/gpl b/data/templates/gpl new file mode 100644 index 000000000..7981e13b6 --- /dev/null +++ b/data/templates/gpl @@ -0,0 +1,15 @@ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +MA 02110-1301, USA. + diff --git a/src/templates.c b/src/templates.c index 594c17c89..fc7fd5996 100644 --- a/src/templates.c +++ b/src/templates.c @@ -102,11 +102,6 @@ name: {functionname}\n\ @return\n\ "; -static const gchar templates_multiline[] = "\ - \n\ - \n\ -"; - static const gchar templates_fileheader[] = "\ {filename}\n\ \n\ @@ -145,24 +140,30 @@ static void templates_replace_command(GString *text, const gchar *file_name, g_file_get_contents(fname, contents_ptr, NULL, NULL); -static void create_template_file_if_necessary(const gchar *filename, const gchar *content) +static void read_template(const gchar *name, gint id) { - if (! g_file_test(filename, G_FILE_TEST_EXISTS)) - { - if (file_prefs.default_eol_character != SC_EOL_LF) - { - /* Replace the \n characters in the default template text by the proper - * platform-specific line ending characters. */ - GString *tmp = g_string_new(content); - const gchar *eol_str = (file_prefs.default_eol_character == SC_EOL_CR) ? "\r" : "\r\n"; + gchar *fname = TEMPLATES_GET_FILENAME(name); - utils_string_replace_all(tmp, "\n", eol_str); - utils_write_file(filename, tmp->str); - g_string_free(tmp, TRUE); - } - else - utils_write_file(filename, content); + /* try system if user template doesn't exist */ + if (!g_file_test(fname, G_FILE_TEST_EXISTS)) + setptr(fname, g_strconcat(app->datadir, + G_DIR_SEPARATOR_S GEANY_TEMPLATES_SUBDIR G_DIR_SEPARATOR_S, name, NULL)); + + TEMPLATES_READ_FILE(fname, &templates[id]); + + /* FIXME: we should replace the line ends on insertion with doc pref, not on loading */ + if (file_prefs.default_eol_character != SC_EOL_LF) + { + /* Replace the \n characters in the default template text by the proper + * platform-specific line ending characters. */ + GString *tmp = g_string_new(templates[id]); + const gchar *eol_str = (file_prefs.default_eol_character == SC_EOL_CR) ? "\r" : "\r\n"; + + utils_string_replace_all(tmp, "\n", eol_str); + setptr(templates[id], tmp->str); + g_string_free(tmp, FALSE); } + g_free(fname); } @@ -189,41 +190,18 @@ static gchar *replace_all(gchar *text, const gchar *year, const gchar *date, con static void init_general_templates(const gchar *year, const gchar *date, const gchar *datetime) { - gchar *template_filename_fileheader = TEMPLATES_GET_FILENAME("fileheader"); - gchar *template_filename_gpl = TEMPLATES_GET_FILENAME("gpl"); - gchar *template_filename_bsd = TEMPLATES_GET_FILENAME("bsd"); - gchar *template_filename_function = TEMPLATES_GET_FILENAME("function"); - gchar *template_filename_changelog = TEMPLATES_GET_FILENAME("changelog"); - - /* create the template files in the configuration directory, if they don't exist */ - create_template_file_if_necessary(template_filename_fileheader, templates_fileheader); - create_template_file_if_necessary(template_filename_gpl, templates_gpl_notice); - create_template_file_if_necessary(template_filename_bsd, templates_bsd_notice); - create_template_file_if_necessary(template_filename_function, templates_function_description); - create_template_file_if_necessary(template_filename_changelog, templates_changelog); + guint id; /* read the contents */ - TEMPLATES_READ_FILE(template_filename_fileheader, &templates[GEANY_TEMPLATE_FILEHEADER]); - templates[GEANY_TEMPLATE_FILEHEADER] = replace_all(templates[GEANY_TEMPLATE_FILEHEADER], year, date, datetime); + read_template("fileheader", GEANY_TEMPLATE_FILEHEADER); + read_template("gpl", GEANY_TEMPLATE_GPL); + read_template("bsd", GEANY_TEMPLATE_BSD); + read_template("function", GEANY_TEMPLATE_FUNCTION); + read_template("changelog", GEANY_TEMPLATE_CHANGELOG); - TEMPLATES_READ_FILE(template_filename_gpl, &templates[GEANY_TEMPLATE_GPL]); - templates[GEANY_TEMPLATE_GPL] = replace_all(templates[GEANY_TEMPLATE_GPL], year, date, datetime); - - TEMPLATES_READ_FILE(template_filename_bsd, &templates[GEANY_TEMPLATE_BSD]); - templates[GEANY_TEMPLATE_BSD] = replace_all(templates[GEANY_TEMPLATE_BSD], year, date, datetime); - - TEMPLATES_READ_FILE(template_filename_function, &templates[GEANY_TEMPLATE_FUNCTION]); - templates[GEANY_TEMPLATE_FUNCTION] = replace_all(templates[GEANY_TEMPLATE_FUNCTION], year, date, datetime); - - TEMPLATES_READ_FILE(template_filename_changelog, &templates[GEANY_TEMPLATE_CHANGELOG]); - templates[GEANY_TEMPLATE_CHANGELOG] = replace_all(templates[GEANY_TEMPLATE_CHANGELOG], year, date, datetime); - - /* free the whole stuff */ - g_free(template_filename_fileheader); - g_free(template_filename_gpl); - g_free(template_filename_bsd); - g_free(template_filename_function); - g_free(template_filename_changelog); + /* FIXME: we should replace the dates on insertion, not on loading */ + for (id = 0; id < GEANY_MAX_TEMPLATES; id++) + templates[id] = replace_all(templates[id], year, date, datetime); } diff --git a/wscript b/wscript index a8abf054f..9216141b1 100644 --- a/wscript +++ b/wscript @@ -518,6 +518,7 @@ def build(bld): bld.install_files('${DATADIR}/%s' % dir, 'data/*.tags') bld.install_files('${DATADIR}/%s' % dir, 'data/snippets.conf') bld.install_files('${DATADIR}/%s' % dir, 'data/ui_toolbar.xml') + bld.install_files('${DATADIR}/%s/templates' % dir, 'data/templates/*') bld.install_files('${DATADIR}/%s/templates/files' % dir, 'data/templates/files/*.*') bld.install_as('${DATADIR}/%s/GPL-2' % dir, 'COPYING') # Icons From 2fbf396790de36660d4250cf7ece2f1f55b8e4da Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Thu, 10 Jun 2010 11:37:39 +0000 Subject: [PATCH 3/6] =?UTF-8?q?Fix=20the=20wrong=20file=20being=20put=20on?= =?UTF-8?q?=20top=20of=20the=20stack=20when=20switching=20tabs=20too=20qui?= =?UTF-8?q?ckly=20(patch=20from=20Ji=C5=99=C3=AD=20Techet,=20thanks).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/branches/unstable@5013 ea778897-0a13-0410-b9d1-a72fbfd435f5 --- ChangeLog | 7 +++++ THANKS | 7 +++-- src/about.c | 3 ++- src/keybindings.c | 65 ++++++++++++++++++++++++++++------------------- 4 files changed, 53 insertions(+), 29 deletions(-) diff --git a/ChangeLog b/ChangeLog index e580def01..9c4efaebf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2010-06-10 Nick Treleaven + + * src/keybindings.c, src/about.c, THANKS: + Fix the wrong file being put on top of the stack when switching tabs + too quickly (patch from Jiří Techet, thanks). + + 2010-06-09 Nick Treleaven * src/templates.c, data/templates/gpl, data/templates/function, diff --git a/THANKS b/THANKS index 6ca857f47..ba8a76bfe 100644 --- a/THANKS +++ b/THANKS @@ -7,7 +7,8 @@ If any contributors are missing, please email the developers - see the AUTHORS f Testers and contributors: ------------------------- These people have contributed to Geany by testing the software, -reporting problems, sending patches and making useful suggestions. +reporting problems, sending patches and making useful suggestions: + Frank Lanitz - heavy testing Christoph Berg - testing and patch for filetype D Nick Treleaven - many patches @@ -79,10 +80,12 @@ Yoann Le Montagner - set VTE bold color Dimitar Zhekov - matching brace improvements patch Ondrej Donek - Support for creating PHP classes with the classbuilder plugin Daniel Marjamaki - Small improvements +Jiří Techet - Fix switch to last used tab ordering bug Translators: ------------ -These people have translated Geany to foreign languages. +These people have translated Geany to foreign languages: + Marcos Costales - be_BY Dilyan Rusev - bg diff --git a/src/about.c b/src/about.c index e628b8bbc..4d3939802 100644 --- a/src/about.c +++ b/src/about.c @@ -89,7 +89,8 @@ static const gchar *contributors = "Daniel Marjamaki, Dave Moore, " "Dimitar Zhekov, Dirk Weber, Elias Pschernig, Eric Forgeot, Eugene Arshinov, Felipe Pena, François Cami, " "Giuseppe Torelli, Guillaume de Rorthais, Guillaume Hoffmann, Herbert Voss, Jason Oster, " -"Jean-François Wauthy, Jeff Pohlmeyer, Jesse Mayes, John Gabriele, Jon Senior, Jon Strait, Josef Whiter, " +"Jean-François Wauthy, Jeff Pohlmeyer, Jesse Mayes, Jiří Techet, " +"John Gabriele, Jon Senior, Jon Strait, Josef Whiter, " "Jörn Reder, Kelvin Gardiner, Kevin Ellwood, Kristoffer A. Tjernås, Lex Trotman, Marko Peric, Matti Mårds, " "Moritz Barsnick, Ondrej Donek, Peter Strand, Philipp Gildein, Pierre Joye, Rob van der Linde, " "Robert McGinley, Roland Baudin, Ross McKay, S Jagannathan, Saleem Abdulrasool, " diff --git a/src/keybindings.c b/src/keybindings.c index 8347cc16b..c297589b7 100644 --- a/src/keybindings.c +++ b/src/keybindings.c @@ -71,7 +71,7 @@ const gsize MAX_MRU_DOCS = 20; static GQueue *mru_docs = NULL; static guint mru_pos = 0; -static gboolean switch_dialog_cancelled = TRUE; +static gboolean switch_in_progress = FALSE; static GtkWidget *switch_dialog = NULL; static GtkWidget *switch_dialog_label = NULL; @@ -576,7 +576,7 @@ static void on_notebook_switch_page(void) /* when closing current doc, old is NULL. * Don't add to the mru list when switch dialog is visible. */ - if (old && switch_dialog_cancelled) + if (old && !switch_in_progress) { g_queue_remove(mru_docs, old); g_queue_push_head(mru_docs, old); @@ -879,7 +879,7 @@ static GtkWidget *create_dialog(void) gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column); text_renderer = gtk_cell_renderer_text_new(); - column = gtk_tree_view_column_new_with_attributes(NULL, text_renderer, "text", 1, NULL); + column = gtk_tree_view_column_new_with_attributes(NULL, text_renderer, "text", 1, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column); fill_shortcut_labels_treeview(tree); @@ -1751,12 +1751,15 @@ static void cb_func_switch_tabright(G_GNUC_UNUSED guint key_id) static gboolean on_key_release_event(GtkWidget *widget, GdkEventKey *ev, gpointer user_data) { /* user may have rebound keybinding to a different modifier than Ctrl, so check all */ - if (!switch_dialog_cancelled && is_modifier_key(ev->keyval)) + if (switch_in_progress && is_modifier_key(ev->keyval)) { - switch_dialog_cancelled = TRUE; + switch_in_progress = FALSE; - if (switch_dialog && GTK_WIDGET_VISIBLE(switch_dialog)) - gtk_widget_hide(switch_dialog); + if (switch_dialog) + { + gtk_widget_destroy(switch_dialog); + switch_dialog = NULL; + } mru_pos = 0; } @@ -1809,23 +1812,27 @@ static GtkWidget *create_switch_dialog(void) } -static gboolean on_switch_timeout(G_GNUC_UNUSED gpointer data) +static void update_filename_label() { - if (switch_dialog_cancelled) + if (!switch_dialog) { - return FALSE; - } - if (! switch_dialog || !GTK_WIDGET_VISIBLE(switch_dialog)) - mru_pos = 2; /* skip past the previous document */ - else - mru_pos += 1; - - if (! switch_dialog) switch_dialog = create_switch_dialog(); + gtk_widget_show_all(switch_dialog); + } geany_wrap_label_set_text(GTK_LABEL(switch_dialog_label), DOC_FILENAME(document_get_current())); - gtk_widget_show_all(switch_dialog); +} + + +static gboolean on_switch_timeout(G_GNUC_UNUSED gpointer data) +{ + if (!switch_in_progress || switch_dialog) + { + return FALSE; + } + + update_filename_label(); return FALSE; } @@ -1848,19 +1855,25 @@ static void cb_func_switch_tablastused(G_GNUC_UNUSED guint key_id) /* if there's a modifier key, we can switch back in MRU order each time unless * the key is released */ - if (! switch_dialog_cancelled) + if (!switch_in_progress) { - on_switch_timeout(NULL); /* update filename label */ - } - else - if (keybindings_lookup_item(GEANY_KEY_GROUP_NOTEBOOK, - GEANY_KEYS_NOTEBOOK_SWITCHTABLASTUSED)->mods) - { - switch_dialog_cancelled = FALSE; + switch_in_progress = TRUE; + + /* because switch_in_progress was not set when we called + * gtk_notebook_set_current_page() above, this function inserted last_doc + * into the queue => on mru_pos = 0 there is last_doc, on mru_pos = 1 + * there is the currently displayed doc, so we want to continue from 2 + * next time this function is called */ + mru_pos = 2; /* delay showing dialog to give user time to let go of any modifier keys */ g_timeout_add(600, on_switch_timeout, NULL); } + else + { + update_filename_label(); /* update filename label */ + mru_pos += 1; + } } From a6462959d0d6f568b6bb32a53b24de7b8abf82fe Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Thu, 10 Jun 2010 11:55:39 +0000 Subject: [PATCH 4/6] Remove unnecessary comment. git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/branches/unstable@5014 ea778897-0a13-0410-b9d1-a72fbfd435f5 --- src/keybindings.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/keybindings.c b/src/keybindings.c index c297589b7..4e6872350 100644 --- a/src/keybindings.c +++ b/src/keybindings.c @@ -1871,7 +1871,7 @@ static void cb_func_switch_tablastused(G_GNUC_UNUSED guint key_id) } else { - update_filename_label(); /* update filename label */ + update_filename_label(); mru_pos += 1; } } From d9e6534405b63ff7ffcc7f9e414c50defdbfeb19 Mon Sep 17 00:00:00 2001 From: Lex Trotman Date: Sat, 12 Jun 2010 05:09:53 +0000 Subject: [PATCH 5/6] Make build config entries light grey until set. git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/branches/unstable@5016 ea778897-0a13-0410-b9d1-a72fbfd435f5 --- ChangeLog | 6 +++++ src/build.c | 68 +++++++++++++++++++++++++++++++---------------------- 2 files changed, 46 insertions(+), 28 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9c4efaebf..58f8381b5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2010-06-12 Lex Trotman + + * src/build.c + Make build config entries light grey until set. + + 2010-06-10 Nick Treleaven * src/keybindings.c, src/about.c, THANKS: diff --git a/src/build.c b/src/build.c index 2baa0359b..06520769b 100644 --- a/src/build.c +++ b/src/build.c @@ -1727,9 +1727,18 @@ typedef struct RowWidgets 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 @@ static void on_clear_dialog_row(GtkWidget *unused, gpointer user_data) 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 @@ static void on_clear_dialog_row(GtkWidget *unused, gpointer user_data) 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,13 +1787,24 @@ static void on_clear_dialog_regex_row(GtkEntry *regex, gpointer unused) } -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); } @@ -1812,6 +1836,7 @@ static RowWidgets *build_add_dialog_row(GeanyDocument *doc, GtkTable *table, gui 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 @@ static RowWidgets *build_add_dialog_row(GeanyDocument *doc, GtkTable *table, gui 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 @@ static RowWidgets *build_add_dialog_row(GeanyDocument *doc, GtkTable *table, gui 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 @@ static gboolean read_row(BuildDestination *dst, BuildTableData table_data, gint 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; From 5c25d75ba87575f8649d1d9fd80ff1d784ae17c7 Mon Sep 17 00:00:00 2001 From: Lex Trotman Date: Sat, 12 Jun 2010 05:25:21 +0000 Subject: [PATCH 6/6] Remove printf added for debugging git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/branches/unstable@5017 ea778897-0a13-0410-b9d1-a72fbfd435f5 --- src/build.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/build.c b/src/build.c index 06520769b..d9dadd00e 100644 --- a/src/build.c +++ b/src/build.c @@ -2098,8 +2098,8 @@ static gboolean read_row(BuildDestination *dst, BuildTableData table_data, gint { if (*(dst->dst[grp]) == NULL) *(dst->dst[grp]) = g_new0(GeanyBuildCommand, build_groups_count[grp]); - 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]); } + for (i = 0; i < GEANY_BC_CMDENTRIES_COUNT; i++) + setptr((*(dst->dst[grp]))[cmd].entries[i], entries[i]); (*(dst->dst[grp]))[cmd].exists = TRUE; (*(dst->dst[grp]))[cmd].changed = TRUE; changed = TRUE;