Revision: 5069 http://geany.svn.sourceforge.net/geany/?rev=5069&view=rev Author: ntrel Date: 2010-06-29 12:11:21 +0000 (Tue, 29 Jun 2010)
Log Message: ----------- Add statusbar_template hidden pref (based on patch by Dimitar Zhekov, thanks).
Modified Paths: -------------- trunk/ChangeLog trunk/THANKS trunk/doc/geany.html trunk/doc/geany.txt trunk/src/ui_utils.c
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-06-29 11:53:41 UTC (rev 5068) +++ trunk/ChangeLog 2010-06-29 12:11:21 UTC (rev 5069) @@ -1,3 +1,10 @@ +2010-06-29 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com> + + * src/ui_utils.c, THANKS, doc/geany.txt, doc/geany.html: + Add statusbar_template hidden pref (based on patch by Dimitar + Zhekov, thanks). + + 2010-06-28 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/search.c:
Modified: trunk/THANKS =================================================================== --- trunk/THANKS 2010-06-29 11:53:41 UTC (rev 5068) +++ trunk/THANKS 2010-06-29 12:11:21 UTC (rev 5069) @@ -77,7 +77,7 @@ Jon Senior <jon(at)restlesslemon(dot)co(dot)uk> - R tagmanager parser patch Can Koy <cankoy(at)ymail(dot)com> - Multiple changes/improvements Yoann Le Montagner <yoann(dot)le-montagner(at)m4x(dot)org> - set VTE bold color -Dimitar Zhekov <hamster(at)mbox(dot)contact(dot)bg> - matching brace improvements patch +Dimitar Zhekov <hamster(at)mbox(dot)contact(dot)bg> - various patches Ondrej Donek <ondrejd(at)gmail(dot)com> - Support for creating PHP classes with the classbuilder plugin Daniel Marjamaki <danielm77(at)spray(dot)se> - Small improvements Jiří Techet <techet(at)gmail(dot)com> - Fix switch to last used tab ordering bug
Modified: trunk/doc/geany.html =================================================================== --- trunk/doc/geany.html 2010-06-29 11:53:41 UTC (rev 5068) +++ trunk/doc/geany.html 2010-06-29 12:11:21 UTC (rev 5069) @@ -6,7 +6,7 @@ <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" /> <title>Geany</title> <meta name="authors" content="Enrico Tröger Nick Treleaven Frank Lanitz" /> -<meta name="date" content="2010-06-21" /> +<meta name="date" content="2010-06-23" /> <style type="text/css">
/* @@ -139,7 +139,7 @@ <br />Nick Treleaven <br />Frank Lanitz</td></tr> <tr><th class="docinfo-name">Date:</th> -<td>2010-06-21</td></tr> +<td>2010-06-23</td></tr> <tr><th class="docinfo-name">Version:</th> <td>0.20</td></tr> </tbody> @@ -4659,12 +4659,6 @@ <td>Whether to highlight <, > angle brackets.</td> <td>false</td> </tr> -<tr><td>show_editor_scrollbars</td> -<td>Whether to display scrollbars. If set to -false, the horizontal and vertical -scrollbars are hidden completely.</td> -<td>true</td> -</tr> <tr><td>use_gtk_word_boundaries</td> <td>Whether to look for the end of a word when using word-boundary related Scintilla @@ -4701,12 +4695,40 @@ and files can be saved.</td> <td>false</td> </tr> +<tr><td>show_editor_scrollbars</td> +<td>Whether to display scrollbars. If set to +false, the horizontal and vertical +scrollbars are hidden completely.</td> +<td>true</td> +</tr> <tr><td>compiler_tab_autoscroll</td> <td>Whether to automatically scroll to the last line of the output in the Compiler tab.</td> <td>true</td> </tr> +<tr><td>statusbar_template</td> +<td>The status bar statistics line format. +(Search in src/ui_utils.c for details).</td> +<td>See below.</td> +</tr> +</tbody> +</table> +<p>statusbar_template default:</p> +<p><tt class="docutils literal"><span class="pre">line:</span> <span class="pre">%l</span> <span class="pre">/</span> <span class="pre">%L\t</span> <span class="pre">col:</span> <span class="pre">%c\t</span> <span class="pre">sel:</span> <span class="pre">%s\t</span> <span class="pre">%w</span> <span class="pre">%t</span> <span class="pre">%mmode:</span> <span class="pre">%M</span> <span class="pre">encoding:</span> <span class="pre">%e</span> <span class="pre">filetype:</span> <span class="pre">%f</span> <span class="pre">scope:</span> <span class="pre">%S</span></tt></p> +<table border="1" class="docutils"> +<colgroup> +<col width="34%" /> +<col width="46%" /> +<col width="19%" /> +</colgroup> +<thead valign="bottom"> +<tr><th class="head">Key</th> +<th class="head">Description</th> +<th class="head">Default</th> +</tr> +</thead> +<tbody valign="top"> <tr><td><strong>VTE related</strong></td> <td> </td> <td> </td> @@ -6118,7 +6140,7 @@ <div class="footer"> <hr class="footer" /> <a class="reference" href="geany.txt">View document source</a>. -Generated on: 2010-06-23 12:24 UTC. +Generated on: 2010-06-29 12:05 UTC. Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
</div>
Modified: trunk/doc/geany.txt =================================================================== --- trunk/doc/geany.txt 2010-06-29 11:53:41 UTC (rev 5068) +++ trunk/doc/geany.txt 2010-06-29 12:11:21 UTC (rev 5069) @@ -4017,9 +4017,6 @@ ================================ =========================================== ================== **Editor related** brace_match_ltgt Whether to highlight <, > angle brackets. false -show_editor_scrollbars Whether to display scrollbars. If set to true - false, the horizontal and vertical - scrollbars are hidden completely. use_gtk_word_boundaries Whether to look for the end of a word when true using word-boundary related Scintilla commands (see `Scintilla keyboard @@ -4041,9 +4038,23 @@ setting this option to true, the Save buttons and menu items are always active and files can be saved. +show_editor_scrollbars Whether to display scrollbars. If set to true + false, the horizontal and vertical + scrollbars are hidden completely. compiler_tab_autoscroll Whether to automatically scroll to the true last line of the output in the Compiler tab. +statusbar_template The status bar statistics line format. See below. + (Search in src/ui_utils.c for details). +================================ =========================================== ================== + +statusbar_template default: + +``line: %l / %L\t col: %c\t sel: %s\t %w %t %mmode: %M encoding: %e filetype: %f scope: %S`` + +================================ =========================================== ================== +Key Description Default +================================ =========================================== ================== **VTE related** emulation Terminal emulation mode. Only change this xterm if you have VTE termcap files other than
Modified: trunk/src/ui_utils.c =================================================================== --- trunk/src/ui_utils.c 2010-06-29 11:53:41 UTC (rev 5068) +++ trunk/src/ui_utils.c 2010-06-29 12:11:21 UTC (rev 5069) @@ -159,6 +159,112 @@ }
+static gchar *statusbar_template = NULL; + +/* note: some comments below are for translators */ +static void add_statusbar_statistics(GString *stats_str, + GeanyDocument *doc, guint line, guint col) +{ + const gchar *cur_tag; + const gchar *fmt; + const gchar *expos; /* % expansion position */ + const gchar sp[] = " "; + + fmt = statusbar_template ? statusbar_template : + /* Status bar statistics: col = column, sel = selection. */ + _("line: %l / %L\t col: %c\t sel: %s\t %w %t %m" + "mode: %M encoding: %e filetype: %f scope: %S"); + + g_string_assign(stats_str, ""); + while ((expos = strchr(fmt, '%')) != NULL) + { + /* append leading text before % char */ + g_string_append_len(stats_str, fmt, expos - fmt); + + switch (*++expos) + { + case 'l': + g_string_append_printf(stats_str, "%d", line + 1); + break; + case 'L': + g_string_append_printf(stats_str, "%d", + sci_get_line_count(doc->editor->sci)); + break; + case 'c': + g_string_append_printf(stats_str, "%d", col); + break; + case 'C': + g_string_append_printf(stats_str, "%d", col + 1); + break; + case 's': + g_string_append_printf(stats_str, "%d", + sci_get_selected_text_length(doc->editor->sci) - 1); + break; + case 'w': + /* RO = read-only */ + g_string_append(stats_str, (doc->readonly) ? _("RO ") : + /* OVR = overwrite/overtype, INS = insert */ + (sci_get_overtype(doc->editor->sci) ? _("OVR") : _("INS"))); + break; + case 'r': + if (doc->readonly) /* RO = read-only */ + g_string_append(stats_str, _("RO ")); + break; + case 't': + { + switch (editor_get_indent_prefs(doc->editor)->type) + { + case GEANY_INDENT_TYPE_TABS: + g_string_append(stats_str, _("TAB")); + break; + case GEANY_INDENT_TYPE_SPACES: /* SP = space */ + g_string_append(stats_str, _("SP")); + break; + case GEANY_INDENT_TYPE_BOTH: /* T/S = tabs and spaces */ + g_string_append(stats_str, _("T/S")); + break; + } + break; + } + case 'm': + if (doc->changed) + { + /* MOD = modified */ + g_string_append(stats_str, _("MOD")); + g_string_append(stats_str, sp); + } + break; + case 'M': + g_string_append(stats_str, editor_get_eol_char_name(doc->editor)); + break; + case 'e': + g_string_append(stats_str, + doc->encoding ? doc->encoding : _("unknown")); + if (encodings_is_unicode_charset(doc->encoding) && (doc->has_bom)) + g_string_append(stats_str, _("(with BOM)")); /* BOM = byte order mark */ + break; + case 'f': + g_string_append(stats_str, doc->file_type->name); + break; + case 'S': + symbols_get_current_function(doc, &cur_tag); + g_string_append(stats_str, cur_tag); + break; + default: + g_string_append_len(stats_str, expos, 1); + } + + /* skip past %c chars */ + if (*expos) + fmt = expos + 1; + else + break; + } + /* add any remaining text */ + g_string_append(stats_str, fmt); +} + + /* updates the status bar document statistics */ void ui_update_statusbar(GeanyDocument *doc, gint pos) { @@ -171,10 +277,7 @@ if (doc != NULL) { static GString *stats_str = NULL; - const gchar sp[] = " "; guint line, col; - const gchar *cur_tag; - gchar *filetype_name = doc->file_type->name;
if (G_UNLIKELY(stats_str == NULL)) stats_str = g_string_sized_new(120); @@ -191,59 +294,17 @@ else col = 0;
- /* Status bar statistics: col = column, sel = selection. */ - g_string_printf(stats_str, _("line: %d / %d\t col: %d\t sel: %d\t "), - (line + 1), sci_get_line_count(doc->editor->sci), col, - sci_get_selected_text_length(doc->editor->sci) - 1); + add_statusbar_statistics(stats_str, doc, line, col);
- g_string_append(stats_str, - /* RO = read-only */ - (doc->readonly) ? _("RO ") : - /* OVR = overwrite/overtype, INS = insert */ - (sci_get_overtype(doc->editor->sci) ? _("OVR") : _("INS"))); - g_string_append(stats_str, sp); - - switch (editor_get_indent_prefs(doc->editor)->type) - { - case GEANY_INDENT_TYPE_TABS: - g_string_append(stats_str, _("TAB")); - break; - case GEANY_INDENT_TYPE_SPACES: - g_string_append(stats_str, _("SP")); /* SP = space */ - break; - case GEANY_INDENT_TYPE_BOTH: - g_string_append(stats_str, _("T/S")); /* T/S = tabs and spaces */ - break; - } - g_string_append(stats_str, sp); - g_string_append_printf(stats_str, _("mode: %s"), - editor_get_eol_char_name(doc->editor)); - g_string_append(stats_str, sp); - g_string_append_printf(stats_str, _("encoding: %s %s"), - (doc->encoding) ? doc->encoding : _("unknown"), - (encodings_is_unicode_charset(doc->encoding)) ? - /* BOM = byte order mark */ - ((doc->has_bom) ? _("(with BOM)") : "") : ""); - g_string_append(stats_str, sp); - g_string_append_printf(stats_str, _("filetype: %s"), filetype_name); - g_string_append(stats_str, sp); - if (doc->changed) - { - g_string_append(stats_str, _("MOD")); /* MOD = modified */ - g_string_append(stats_str, sp); - } - - symbols_get_current_function(doc, &cur_tag); - g_string_append_printf(stats_str, _("scope: %s"), - cur_tag); - #ifdef GEANY_DEBUG + { + const gchar sp[] = " "; g_string_append(stats_str, sp); g_string_append_printf(stats_str, "pos: %d", pos); g_string_append(stats_str, sp); g_string_append_printf(stats_str, "style: %d", sci_get_style_at(doc->editor->sci, pos)); + } #endif - /* can be overridden by status messages */ set_statusbar(stats_str->str, TRUE); } @@ -1929,10 +1990,21 @@ }
+static void on_load_settings(GObject *obj, GKeyFile *config) +{ + g_assert(statusbar_template == NULL); + + statusbar_template = utils_get_setting_string(config, + PACKAGE, "statusbar_template", NULL); +} + + void ui_init(void) { GtkWidget *item;
+ g_signal_connect(geany_object, "load-settings", G_CALLBACK(on_load_settings), NULL); + init_recent_files();
ui_widgets.statusbar = ui_lookup_widget(main_widgets.window, "statusbar");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.