ChangeLog 93.6 KB
Newer Older
1
2
3
4
5
6
7
2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::load_file_with_fallback): Get the
	UTF-8 encoded basename from the filename column of the tree model
	instead of stripping and converting fileinfo->fullname all over
	again.

8
9
10
11
12
13
14
2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/fileio.cc (load_file): Move the assignment of 'false' to
	fileinfo->load_failed to the very end of the function, because
	there is a tiny chance that one of the other assignments throws
	an exception.

15
16
17
18
19
20
2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::find_increment_file_count): There
	is no need for the reverse_iterator abstraction here -- just use
	plain iterators and decrement them.

21
22
23
24
25
26
27
28
29
30
2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::prev_match_file): As it turns out
	keeping track of the parent iterator does have some merit.  While
	there was nothing wrong with the previous change, I discovered
	that the parent's children can be indexed in order to obtain an
	iterator pointing to the previous row.  At least for deep trees
	this is likely to be faster than resolving the whole path via
	Gtk::TreeModel::get_iter().

31
32
33
34
35
36
37
2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::prev_match_file): There is no need to
	keep track of the parent iterator; just use Gtk::TreePath::size()
	and TreePath::up().  Also use TreePath::push_back() instead of the
	deprecated TreePath::append_index().

38
39
40
41
42
43
44
45
46
47
48
49
2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (FileTree::find_matches_at_path_iter):
	Rename from find_matches_at_iter(): add a path parameter and
	use it instead of obtaining the path from the iter argument.
	(FileTree::replace_matches_at_path_iter): Rename from
	replace_matches_at_iter(): add a path parameter and use it.
	(FileTree::find_matches): Use TreeModel::foreach() rather than
	foreach_iter() in order to gain a minor performance improvement
	by taking advantage of the supplied Gtk::TreePath.
	(FileTree::replace_all_matches): ditto.

50
51
52
53
54
55
56
57
58
59
60
2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (FileTree::on_treestore_rows_reordered):
	New signal handler which updates the match boundaries defined by
	the [path_match_first_, path_match_last_] range.  Previously this
	has been handled in on_treestore_sort_column_changed(), which is
	unfortunately called before the actual sorting takes place.
	(FileTree::on_treestore_sort_column_changed): Remove.
	(FileTree::FileTree): Connect to signal_rows_reordered() instead
	of signal_sort_column_changed().

61
62
63
64
65
66
67
68
69
70
2004-05-31  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetreeprivate.{cc,h} (FileTreeColumns::instance): New
	static method which replaces the filetree_columns() function,
	for consistency with RegexxerTags::instance().
	(filetree_columns): Remove.

	* src/filetree.cc: Replace all instances of filetree_columns()
	with FileTreeColumns::instance().

71
72
73
74
75
76
77
78
79
2004-05-31  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/aboutdialog.glade (label_url): Get rid of the prefixed U+202D
	LEFT-TO-RIGHT OVERRIDE since Pango gets that right on its own now.
	(label_author_who): ditto

	* ui/mainwindow.glade (button_multiple): ditto
	(button_caseless): ditto.

Daniel Elstner's avatar
Daniel Elstner committed
80
81
82
83
2004-05-31  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/mainwindow.glade (button_multiple): Set to active by default.

84
85
2004-05-31  Daniel Elstner  <daniel.elstner@gmx.net>

Daniel Elstner's avatar
Daniel Elstner committed
86
87
88
89
	* src/statusline.cc (StatusLine::set_file_encoding): Work around
	the GTK+ bug with right-aligned labels by calling check_resize(),
	just as already done in CounterBox::set_index().  Note that the
	status bar is right-aligned only in RTL locales.
90

91
92
93
94
95
96
2004-05-31  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/aboutdialog.cc (AboutDialog::create): If no translation is
	available for the current locale, replace "translator-credits" by
	some more user-friendly text.

97
98
99
100
101
102
103
104
2004-05-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::color_modified_): Use "Accent Red"
	from the basic GNOME 32-color palette instead of rgb.txt "red".

	(FileTree::text_cell_data_func): Set the text style to "oblique"
	in addition to painting in red color if the file was modified.

105
106
107
108
109
2004-05-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/pcreshell.cc (Pattern::get_substring_bounds): Sanity-check
	for index >= 0 too.

110
111
112
113
114
115
2004-05-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (MainWindow::on_conf_value_changed): Remove
	"using namespace Gtk" directive which became pointless after the
	last change.

116
117
118
119
120
121
122
123
124
125
126
127
128
2004-05-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* regexxer.schemas.in (override_direction): Remove configuration
	option because it doesn't seem to be necessary anymore.  That is,
	the current GTK+ release gets the direction of Latin text in RTL
	locales right now.

	* src/globalstrings.h (conf_key_override_direction): Remove.
	* src/mainwindow.cc (MainWindow::on_conf_value_changed): Remove
	the code that handles the "override_direction" config option.
	* src/prefdialog.{cc,h} (PrefDialog): ditto.
	* ui/prefdialog.glade (button_override_direction): Remove.

129
130
131
132
133
134
135
136
2004-05-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.cc (FileBuffer::find_matches): Get rid of an
	unused main_context variable plus initialization code.  Whoa,
	this ancient piece of code must have been lurking here for at
	least a year without being used.  Unfortunately g++ didn't warn
	about it since the ctor/dtor might have had side effects...

137
138
139
140
141
142
143
144
145
2004-05-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* autogen.sh: In the regex used to extract version numbers, avoid
	any use of quantifiers other than * for maximum portability.

	* macros/pcre.m4 (PCRE_CHECK_VERSION): Same here, and also be more
	forgiving about extra characters possibly following the version
	number.

146
147
148
149
150
151
152
153
154
155
2004-05-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* macros/misc.m4 (REGEXXER_PKG_PATH_PROG): Replace AC_MSG_ERROR()
	by AC_MSG_FAILURE(), and add an autoconf-time check to make sure
	all necessary arguments are specified.

	* macros/pcre.m4: Replace AC_MSG_ERROR() by AC_MSG_FAILURE(), and
	add a few redirections of stderr to the config.log file descriptor
	where appropriate.

156
157
158
159
160
161
162
163
164
2004-05-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetreeprivate.h (FileTreePrivate::filetree_columns):
	Remove the G_GNUC_CONST attribute since in this function's case
	it doesn't gain us anything anyway.

	* src/translation.h (translate): Use G_GNUC_PURE rather than
	G_GNUC_CONST because the function depends on global memory.

165
166
167
168
169
2004-05-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/pcreshell.cc (Pattern::match): Use the symbolic constant
	PCRE_ERROR_NOMATCH instead of comparing with -1 directly.

170
171
172
173
174
175
176
177
178
2004-05-29  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/mainwindow.glade (button_preferences): Remove tool button.
	I'm not yet convinced that the "Quit" button should be removed
	too, because I like it large and easy to hit on :)

	* src/controller.cc (Controller::load_xml): No longer load
	"button_preferences" from the glade file.

179
180
181
182
183
184
185
2004-05-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* macros/misc.m4 (REGEXXER_PKG_PATH_PROG): There is no need to
	pass the [not found] argument to AC_PATH_PROG, since the default
	action is just right.
	* macros/pcre.m4 (PCRE_CHECK_VERSION): ditto.

186
187
188
189
190
2004-05-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* Makefile.am (ACLOCAL_AMFLAGS): Add ${ACLOCAL_FLAGS} as
	recommended by James Henstridge.

191
192
193
194
195
196
2004-05-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* Makefile.am (install-schemas): Don't use $^ since it probably
	isn't portable.
	(uninstall-schemas): ditto.

197
198
199
200
201
202
2004-05-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (PCRE_CHECK_VERSION): Bump version requirement to
	libpcre 4.0.  Apparently the code required this version for quite
	some time now, but without configure checking for it.

203
204
205
206
207
208
209
210
211
2004-05-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/pcreshell.cc (Pattern::Pattern): Let's be paranoid and
	use g_new0() rather than plain g_new() to allocate ovector_.
	(Pattern::get_substring_bounds): More paranoia: assert that
	the index argument is within the allowed range.
	(Pattern::get_substring): Call get_substring_bounds() to get the
	boundary offsets in order to take advantage of the error checking.

212
213
214
215
216
2004-05-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.cc (convert_to_ascii): Replace non-ASCII
	characters by octal escapes rather than just a question mark.

217
218
219
220
221
222
2004-05-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.cc (RegexxerTags::instance): Remove G_GNUC_CONST
	because it causes problems on PPC, and doesn't have any effect in
	this particular case anyway.

223
224
225
226
227
228
229
230
231
2004-05-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.{cc,h} (MainWindow::get_folder_fullname): New
	method that expands the entered folder name and converts it to
	filename encoding.  An error message is displayed to the user
	if the conversion fails.
	(MainWindow::on_select_folder): Use get_folder_fullname().
	(MainWindow::on_find_files): ditto.

232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
2004-05-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.{cc,h} (expand_pathname): Operate directly in
	filename encoding since all callers need to convert one way or
	the other anyway.  Change type of parameter and return value to
	std::string accordingly.
	(shorten_pathname): ditto.

	* src/mainwindow.cc (MainWindow::MainWindow): Reverse order of
	the calls to filename_to_utf8_fallback() and shorten_pathname().
	(MainWindow::on_select_folder): ditto
	(MainWindow::on_find_files): ditto.

	* src/mainwindow.{cc,h} (MainWindow::set_title_filename): Change
	parameter type to std::string and call filename_to_utf8_fallback().
	Also remove the default argument from the declaration, and get rid
	of the logic that handles the empty string.
	(MainWindow::MainWindow): Call window_->set_title() directly in
	order to set the default title, instead of passing an empty string
	to set_title_filename().
	(MainWindow::on_filetree_switch_buffer): ditto.

254
255
256
257
258
259
260
261
262
263
264
2004-05-27  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.cc (filename_to_utf8_fallback): On failure,
	don't fall back to the locale encoding anymore but straight to
	plain ASCII.  Thus from now on, this function will never throw
	for errors of type ConvertError::ILLEGAL_SEQUENCE.  Also cover
	the new G_FILENAME_ENCODING variable in the warning message.

	* src/filetree.cc (FileTree::find_files): Remove the explicit
	handling of Glib::ConvertError.

265
266
267
268
269
2004-05-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* regexxer.schemas.in: Use colors from the basic GNOME 32-color
	palette for the match_color and current_match_color default values.

270
271
272
273
274
275
276
2004-05-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.cc (apply_modifiers): Validate the UCS-4 code
	point returned by Unicode::tolower() or Unicode::totitle() before
	appending it to the string.  This is necessary because for example
	converting U+00DF to title case is an invalid operation.

277
278
279
280
281
282
283
284
2004-05-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/translation.cc (compose_impl): Print a warning message to
	the console if the format string contains an invalid substitution,
	rather than just silently ignoring the error.  This is mainly of
	importance to translators, as it provides them some feedback if
	they get it wrong.

285
286
287
288
289
290
2004-05-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (regexxer_create_file_tree): Move to anonymous
	namespace.  Not that it matters much, but I like it this way.
	* src/statusline.cc (regexxer_create_status_line): ditto.

291
292
293
294
295
2004-05-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::FileTree): Remove superfluous
	namespace qualification.

296
297
298
299
300
301
302
2004-05-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* autogen.sh: Avoid using postfix operators on subexpressions
	in the regex used to extract version numbers.  This makes the
	expression both simpler and more portable.
	* macros/pcre.m4 (PCRE_CHECK_VERSION): ditto.

303
304
305
306
307
308
309
310
311
312
313
314
2004-05-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* macros/pcre.m4 (PCRE_CHECK_VERSION): Strip "-L/usr/lib" from
	PCRE_LIBS if necessary.  Strip "-I/usr/include" from PCRE_CFLAGS
	too -- although not required on Debian, it's better not to rely
	on this.

	* autogen.sh: Standard POSIX regexps suck: according to the sed
	documentation, both "\?" and "\+" are GNU extensions.  Replace by
	"\{0,1\}" and "\{1,\}", respectively.
	* macros/pcre.m4 (PCRE_CHECK_VERSION): ditto.

315
316
317
318
319
2004-05-21  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (MainWindow::on_find_files): Minor coding style
	modifications.

320
321
322
323
324
325
2004-05-21  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (MainWindow::on_select_folder): Simplify the
	code: with the new FileChooser we no longer have to handle the case
	of selecting a file instead of a directory.

Daniel Elstner's avatar
Daniel Elstner committed
326
327
328
329
330
331
332
333
334
335
336
337
338
2004-05-21  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/fileio.h (ErrorBinaryFile): New exception class.

	* src/fileio.cc (load_iochannel): Throw ErrorBinaryFile if the
	input stream contains '\0' bytes, rather than just returning a
	null pointer.
	(load_file): Throw ErrorBinaryFile if the file could not be
	loaded in either of the specified encodings.

	* src/filetree.cc (FileTree::load_file_with_fallback): Handle
	the ErrorBinaryFile exception.

339
340
341
342
343
2004-05-21  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::replace_all_matches): Substitute
	Gtk::TreeIter with Gtk::TreeModel::iterator for consistency.

344
345
346
347
348
2004-05-21  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/undostack.cc (UndoStack::do_undo): Don't create a temporary
	copy of the pulse slot since libsigc++2 allows calling const slots.

349
350
2004-05-21  Daniel Elstner  <daniel.elstner@gmx.net>

351
352
353
354
355
356
357
358
359
	* src/filetree.cc: Replace a couple of explicit TreePath(iter)
	conversions by simple assignments.
	(FileTree::replace_all_matches): Make sure path_match_first_
	points to the first file that still has matches after a replace
	operation was interrupted.
	(FileTree::replace_matches_at_iter): Remove the assertion that
	FileBuffer::get_match_count() must return 0 after returning from
	FileBuffer::replace_all_matches(), because the operation might
	have been interrupted.
360

Daniel Elstner's avatar
Daniel Elstner committed
361
362
363
364
2004-05-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/mainwindow.glade (entry_preview): Set "can_focus" to False.

365
366
367
368
2004-05-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc: Break apart a couple of uber-long lines.

369
370
371
372
373
374
375
376
377
378
379
2004-05-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/aboutdialog.cc (package_title): New string constant which
	defines the package title string plus surrounding markup.
	(AboutDialog::create): Use the separated package_title constant.

	* src/aboutdialog.{cc,h} (AboutDialog::create): Change the return
	type to std::auto_ptr<Gtk::Dialog> because copying-destroys-source
	is just what we want.   Calling release() to achieve exactly that
	was a silly idea to begin with.

380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
2004-05-19  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/aboutdialog.glade (label_debian_*): Remove.  The Debian
	package of regexxer is not the only one out there, and I cannot
	list all of them in the about dialog.  Sorry Ross :/
	(label_translator_{what,who}): Give credit to the translator(s)
	for the user's locale as listed in the translation of the string
	"translator-credits".
	(label_url): Get rid of the custom SelectableLabel widget class.
	The only feature provided by the custom widget was tab-navigation
	to labels -- I figured one can simply use C-Tab to do just that.
	(label_author_who): ditto
	(label_translator_who): ditto.

	* src/aboutdialog.cc (SelectableLabel): Remove custom widget.
	(AboutDialog::create): Acommodate to glade file modifications.

397
398
399
400
401
402
403
2004-05-19  Daniel Elstner  <daniel.elstner@gmx.net>

	* Makefile.am (ACLOCAL_AMFLAGS): No need to explicitely specify
	$(top_srcdir)/ in the directory name because the aclocal rule
	changes to that directory anyway.  This also avoids confusing
	recent releases of gettextize.

404
405
406
407
408
2004-05-19  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (CONFIG_STATUS_DEPENDENCIES): AC_SUBST() this
	variable with '$(top_srcdir)/po/LINGUAS' for utmost perfection ;-)

409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
2004-05-19  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/mainwindow.glade (toolbar): Make glade-2 replace its old-style
	magic "class names" with proper GtkToolItem and derivated elements.
	Note that you'll need to apply the patch for #142761 in order to
	make changing the toolbar style at runtime work.
	(combo_pattern): Replace deprecated GtkCombo with GtkComboBoxEntry.

	* src/controller.cc (ControlItem::add_widgets): Allow for both
	Gtk::ToolButton and Gtk::Button widgets, and detect at runtime
	which type to use.

	* src/mainwindow.cc (MainWindow::load_xml): Due to #142755, we
	currently have to use get_child() on combo_pattern to gain access
	to the entry widget.  Also, a hack was necessary to attach the
	tooltip to the entry without instantiating another Gtk::Tooltips
	object.

	* src/mainwindow.h: Remove a couple of unused forward declarations.

429
430
431
432
433
434
2004-05-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/prefdialog.cc (PrefDialog::on_response): Invoke
	Gtk::Widget::activate() instead of directly calling the handler
	on_entry_fallback_activate().  Dunno why I didn't see this before.

435
436
437
438
439
2004-05-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/prefdialog.cc (get_toolbar_style_index): Return -1 rather
	than 0 on failure.

440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
2004-05-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/prefdialog.glade (button_textview_font): Replace custom font
	selection button with the new GtkFontButton.
	(button_match_color): Replace custom color selection button with
	the new GtkColorButton.
	(button_current_color): ditto.
	(combo_toolbar_style): Rename from option_toolbar_style.  Use the
	new GtkComboBox widget instead of GtkOptionMenu.

	* src/prefdialog.{cc,h} (FontSelectionButton): Remove.
	(ColorSelectionButton): Remove.
	(PrefDialog): Accomodate to changes in the glade file.
	(on_textview_font_set): Rename from on_textview_font_selected().
	(on_match_color_set): Rename from on_match_color_selected().
	(on_current_color_set): Rename from on_current_color_selected().

457
458
459
460
461
462
463
2004-05-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (MainWindow::load_xml): Make the folder button
	grab focus because otherwise the Preferences tool button will be
	focused after startup.  I blame libglade -- its whole tool button
	handling seems to be somewhat shaky.

464
465
466
467
468
469
2004-05-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (ALL_LINGUAS): Use `cat "$srcdir/po/LINGUAS"` to
	assign this variable, so that there is only one file to edit when
	adding a new language.

470
471
472
473
2004-05-17  Duarte Loreto <happyguy_pt@hotmail.com>

	* configure.ac: Added Portuguese (pt) to ALL_LINGUAS.

474
475
476
477
2004-05-17  Christian Rose  <menthos@menthos.com>

	* configure.ac: Added "sv" to ALL_LINGUAS.

478
479
480
481
482
483
484
485
486
2004-05-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* Makefile.am (dist_noinst_SCRIPTS): Remove config.rpath because
	automake distributes this file automatically.  List intltool-*.in
	files in the separate variable dist_intltool.
	(dist_noinst_DATA): List all *.m4 files in the separate variable
	dist_macros.  Move $(dist_intltool) from dist_noinst_SCRIPTS here
	because the .in files aren't scripts.

487
488
489
490
491
2004-05-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* regexxer.desktop (Name): Use _Name to make it translatable, and
	change the string to "regexxer Search Tool".  Idea from Dag Wieers.

492
493
494
495
496
497
498
499
500
501
502
2004-05-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.cc: Mark all const_cast<> work-arounds for the
	Gtk::TextIter API bug with // XXX comments.
	(FileBuffer::get_match_index): Get rid of libstdc++-v2 work-around.

	* src/filebuffer.h (FileBuffer): Get rid of the friend declarations
	that were added to work around a GCC 2.95 deficiency.
	* src/filetree.h (FileTree): ditto
	* src/mainwindow.h (MainWindow): ditto.

503
504
505
506
507
508
509
510
511
2004-05-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* Makefile.am (install-schemas): Simplify.  Since regexxer.schemas
	is now a generated file it is always placed in the build directory.
	(uninstall-schemas): Likewise.  Also add $(schemas_DATA) to the
	prerequisites so that the rule will work with a clean tree.  Having
	make uninstall generate files is a little awkward, but I cannot see
	a way around that :/

512
513
514
515
516
517
518
2004-05-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* Makefile.am (CLEANFILES): List build-time generated files
	$(desktop_DATA) and $(schemas_DATA).
	(DISTCLEANFILES): List configure-time generated files
	intltool-extract, intltool-merge and intltool-update.

519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
2004-05-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* autogen.sh: Execute glib-gettextize and intltoolize.

	* configure.ac: Call AC_PROG_INTLTOOL().  Assign ALL_LINGUAS and
	GETTEXT_PACKAGE, and do an AC_SUBST() of the latter.
	(AM_GNU_GETTEXT): Use AM_GLIB_GNU_GETTEXT() instead.

	* Makefile.am (dist_desktop_DATA): Remove the dist_ prefix,
	introduce desktop_in_files, and add the @INTLTOOL_DESKTOP_RULE@
	substitution in order to make regexxer intltool-aware.
	(dist_schema_DATA): Likewise for the GConf schemas file.
	(dist_noinst_SCRIPTS): Add intltool-extract.in, intltool-merge.in
	and intltool-update.in.

	* regexxer.desktop: Rename to regexxer.desktop.in, use _Comment
	instead of Comment, and remove the manually inserted de and dk
	translations.

	* regexxer.schemas: Rename to regexxer.schemas.in.

540
541
542
543
544
545
2004-05-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetreeprivate.cc (collatekey_sort_func): Use libstdc++-v3
	method std::string::compare() instead of memcmp() for sub-string
	comparison, since libsigc++2 depends on gcc >= 3 anyway.

546
547
548
549
550
2004-05-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::FileTree): Make the file column
	take up available space with set_expand(true).

551
552
553
554
555
556
557
558
559
560
561
562
2004-05-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (AC_INIT): Bump version to 0.8.
	(PKG_CHECK_MODULES): Require gconfmm-2.6 >= 2.6.1.
	(REGEXXER_GCONFMM_VALUE_HACK): Remove.

	* src/miscutils.{cc,h}
	(check_for_broken_gconfmm_value_changed): Remove.
	(has_broken_gconfmm_value_changed): Remove.

	* src/main.cc (main): Remove call to gconfmm bug runtime test.

Daniel Elstner's avatar
Daniel Elstner committed
563
564
565
566
	* src/filebuffer.cc (on_conf_value_changed): Remove hack.
	* src/filetree.cc (on_conf_value_changed): ditto
	* src/mainwindow.cc (on_conf_value_changed): ditto.
	* src/prefdialog.{cc,h} (on_conf_value_changed_hack): Remove.
567

568
569
570
571
572
2004-05-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (on_select_folder): Use Gtk::FileChooserDialog
	instead of the old Gtk::FileSelection.

573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
2004-05-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/prefdialog.glade: Removes the <requires lib="gnome"/> line
	that was inserted by buggy glade-2.

2004-05-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc: Replace instances of `...' in message strings
	with "...".  Since the translator is supposed to use double-quotes
	it would be confusing to use single quotes in the original string.
	* src/mainwindow.cc: ditto
	* src/prefdialog.cc: ditto.

2004-05-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/mainwindow.glade (button_find_files): Use a custom image and
	label instead of a stock item as button content, so that it can be
	more clearly distinguished from button_find_matches.

2004-05-13  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/mainwindow.glade: Reintroduce tearoff menu items by manually
	inserting the necessary XML elements.

2004-05-12  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/fileio.cc: Remove the libgnome-vfsmm code already enclosed
	by #if 0 ... #endif.  It's all in the CVS history anyway.
	* src/filetree.cc: ditto.

2004-05-12  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/imagebutton.{cc,h}: Remove files as they're no longer used.
	* src/Makefile.am (regexxer_SOURCES): Remove imagebutton.{cc,h}.

2004-05-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/globalstrings.h (glade_mainwindow_filename): New string.

	* src/mainwindow.{cc,h}: Use libglademm to load the UI at runtime,
	and make the actual Gtk::Window a member of class MainWindow.
	Remove the old UI creation code.

	* src/controller.{cc,h} (Controller::load_xml): The menu bar,
	toolbar and action area is now contained in mainwindow.glade,
	and thus this new method wholly replaces the old code which
	generated those widgets.
	(ControlItem::add_widgets): New helper method intented to help
	reducing the code size.

	* src/filetree.cc (regexxer_create_file_tree): New function.
	* src/statusline.cc (regexxer_create_status_line): New function.

	* src/main.cc (main): Access the Gtk::Window by using the new
	accessor method Regexxer::MainWindow::get_window().

2004-05-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/mainwindow.glade: New file defining the main window's UI.
	* ui/Makefile.am (dist_glade_DATA): Add mainwindow.glade.

2004-05-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/globalstrings.h (glade_aboutdialog_filename): New string.

	* src/aboutdialog.{cc,h}: Use libglademm to load the dialog UI
	at runtime, and replace class AboutDialog by a single create()
	function in namespace Regexxer::AboutDialog.  Remove the old
	UI creation code.

	* src/mainwindow.{cc,h} (MainWindow::about_dialog_): Change type
	to std::auto_ptr<Gtk::Dialog> since AboutDialog no longer exists.
	Replace all references to AboutDialog in the implementation too.
	(MainWindow::on_about): Make use of the new AboutDialog::create().

2004-05-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/aboutdialog.glade: New file defining the UI of the about
	dialog.
	* ui/Makefile.am (dist_glade_DATA): Add aboutdialog.glade.

2004-05-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/prefdialog.cc (PrefDialog::load_xml): Remove superfluous
	sub-block.

2004-05-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/prefdialog.cc (regexxer_create_font_selection_button):
	Add missing parameters to the function signature.
	(regexxer_create_color_selection_button): ditto.

2004-05-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/Makefile.am (global_defines): Define REGEXXER_PKGDATADIR.

	* src/globalstrings.h (glade_prefdialog_filename): New string.

	* src/prefdialog.{cc,h}: Use libglademm to load the dialog UI
	at runtime, and make the actual dialog widget a data member of
	class PrefDialog.  Remove the old UI creation code.

	* src/mainwindow.cc (MainWindow::on_preferences): Use the new
	PrefDialog::get_dialog() accessor to get the actual widget.

2004-05-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui: New directory for glade XML files.
	* ui/.cvsignore: New file.
	* ui/Makefile.am: New file.
	* ui/prefdialog.glade: New file defining the UI of the preferences
	dialog.

	* configure.ac (PKG_CHECK_MODULES): Check for libglademm-2.0.
	(AC_CONFIG_FILES): Add ui/Makefile.

	* Makefile.am (SUBDIRS): Add ui.

0.7:

2004-05-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* AUTHORS: Add Murray Cumming.
	* NEWS: Update.

2004-05-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/translation.{cc,h} (sgettext): Ditch the sgettext() approach,
	because it's not likely to be supported by libglade when regexxer
	starts using that at some point.  Until now there are no ambiguous
	messages in regexxer, and we can switch back when the need arises.

	* src/controller.cc: Remove the disambiguing "...|" prefix from all
	translatable messages.
	* src/filebuffer.cc: ditto
	* src/filetree.cc: ditto
	* src/mainwindow.cc: ditto
	* src/prefdialog.cc: ditto
	* src/statusline.cc: ditto.

2004-05-07  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/main.cc (stock_icon_info): Rename to 'stock_icon_about',
	as it should have been called in the first place.  Apparently
	I misinterpreted a change in the German GNOME translation as
	project-wide switch to a new name for "About".  Now I realize
	why Murray changed that string a while ago...

	* src/controller.{cc,h} (Controller::info): Rename to 'about'.
	* src/mainwindow.{cc,h} (MainWindow::on_info): Rename to 'on_about'.

2004-05-06  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/translation.cc (compose_impl): Simplify the loop in order to
	avoid the need for look-ahead via Util::next().

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/translation.cc (compose_impl): Apparently there's no need
	to use Glib::Unicode::isdigit() since digit_value() is defined to
	return -1 for non-digits anyway.

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/translation.{cc,h} (compose): Add a set of overloaded utility
	functions to be used to compose a text message from a format string
	and up to three string arguments.  This allows the translator to
	arrange the arguments as required by the language.

	* src/filetree.cc (FileTree::save_file_at_iter): Make use of
	Util::compose() instead of separately piecing strings together.
	Also, translate the format string via gettext().
	(load_file_with_fallback): ditto
	* src/mainwindow.cc (MainWindow::on_exec_search): ditto
	* src/prefdialog.cc (PrefDialog::on_entry_fallback_activate):
	ditto.

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/miscutils.cc: Compile the runtime check for that gconfmm
	bug only if REGEXXER_ENABLE_GCONFMM_VALUE_HACK is defined, as it
	currently always is.

	* src/main.cc (main): Test for REGEXXER_ENABLE_GCONFMM_VALUE_HACK
	around the call to Util::check_for_broken_gconfmm_value_changed().

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/translation.{cc,h} (initialize_gettext): New utility
	function to take care of setting up the text domain.

	* src/main.cc (main): Use initialize_gettext().

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* ABOUT-NLS: Add missing file to fix the build.

	* src/aboutdialog.cc: Translate all user-visible strings except
	for those instances where positional parameter substitution is
	required for proper results.  I'll deal with those ones later.
	* src/controller.cc: ditto
	* src/filebuffer.cc: ditto
	* src/filetree.cc: ditto
	* src/main.cc: ditto
	* src/mainwindow.cc: ditto
	* src/pcreshell.cc: ditto
	* src/prefdialog.cc: ditto
	* src/statusline.cc: ditto.

	* src/translation.h (N_): #define to gettext_noop(s) rather than
	simply (s).  This doesn't actually make a difference but I think
	the intent is clearer that way.

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	Add support for message translation via gettext.

	* po: New directory, containing all the gettext stuff.
	* config.rpath: New file added by gettextize.
	* mkinstalldirs: ditto.

	* Makefile.am (dist_noinst_SCRIPTS): Add config.rpath.

	* autogen.sh: Don't remove mkinstalldirs because it's not
	installed by automake --add-missing, and gettext uses it.
	(WARNINGS): Comment-out in order to reduce the flood of warnings
	triggered by all the old m4 code in system macros.

	* configure.ac: Invoke AM_GNU_GETTEXT().
	(AC_CONFIG_FILES): Add po/Makefile.in.

	* NEWS: Update.

	* src/translation.{cc,h}: New files implementing gettext() support.
	* src/statusline.cc: Translate the label of the "Stop" button.
	* src/main.cc (main): Add code to initialize the text domain.

	* src/Makefile.am (regexxer_SOURCES): Add translation.{cc,h}.

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/miscutils.{cc,h} (check_for_broken_gconfmm_value_changed):
	Implement a truly evil run-time check for that gconfmm bug.
	Although this one is already fixed in CVS, there's no release out
	yet and for now I wouldn't like regexxer to depend on it anyway.
	(has_broken_gconfmm_value_changed): Provide an accessor function
	to the global flag indicating whether gconfmm is broken.

	* src/main.cc (main): Call check_for_broken_gconfmm_value_changed().

	* configure.ac (REGEXXER_GCONFMM_VALUE_HACK): Make this macro
	call has_broken_gconfmm_value_changed() to determine whether the
	work-around has to be applied.

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.cc (FileBuffer::replace_match): Invoke on_insert()
	directly in case of empty-by-empty replace in order to avoid this
	nasty special-case where a FileBufferActionRemoveMatch object in
	the stack is not followed by either an insert or an erase action.
	This finally fixes the last one of undo system bugs known to me.

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (AC_INIT): Bump version number to 0.7.

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/*.{cc,h}: Apply a minor change of my coding style.  From
	now on, I put a space between a keyword and the following opening
	parenthesis.  That is, after for, while, if, switch and catch, with
	sizeof being the only (I think rather intuitive) exception.

	* src/globalstrings.h: New file containing (you guess it) global
	string definitions.  Currently these are mostly fully qualified
	GConf key names.

	* src/configdata.{cc,h}: Delete, as we're now using GConf.

	* src/Makefile.am (regexxer_SOURCES): Modify accordingly.

	* src/aboutdialog.cc: Prefix URL and mail strings with U+202D
	LEFT-TO-RIGHT OVERRIDE in order to avoid the current mess in
	RTL environments.
	(ContributorBox::ContributorBox): Escape the 'what' string by
	passing it to Glib::Markup::escape_text(), just in case.

	* src/controller.cc (add_widget_button): Reverse parameters
	for consistency with the other helper functions.
	(Controller::create_action_area): Make the implementation reflect
	this change.

	* src/filebuffer.{cc,h} (RegexxerTags::on_conf_value_changed):
	New signal handler listening to GConf value changes.
	(RegexxerTags::instance): Return the RefPtr<> by value rather
	than by reference, because as it turns out the extra indirection
	largely offsets the advantage gained by avoiding one additional
	ref/unref cycle.
	(FileBuffer::set_match_color): Remove; this setter is no longer
	necessary since we're now listing to GConf changes and apply them
	immediately.
	(set_current_color): ditto
	(get_match_color): ditto
	(get_current_color): ditto.
	(FileBuffer::weak_undo_stack_): Introduce a new data member used to
	record all UndoAction objects that reference MatchData instances.
	This is unfortunately necessary in order to be able to remove
	UndoActions without actually doing the undo operation, for instance
	when running find_matches() again.
	(notify_weak_undos): New function dealing with the weak references.
	(undo_add_weak): ditto
	(undo_remove_weak): ditto.
	(signal_match_count_changed): Remove the count argument as this
	information can easily be obtained by using the appropriate getter.
	(create_with_error_message): Invoke Unicode::ispunct() instead of
	testing for '.' explicitely.
	(is_freeable): Return true only if there are no UndoAction objects
	around referencing this FileBuffer.
	(find_matches): Call notify_weak_undos() to get rid of any
	references by UndoAction objects to this FileBuffer.
	(get_line_preview): Make this method strongly exception-safe.
	(on_apply_tag): New virtual method implementation, needed in order
	to filter tag apply operations caused by inserting from clipboard.
	This avoids confusion caused by highlighting text as match which
	is not recorded as such internally.

	* src/undostack.{cc,h}: Provide a way to interrupt a running undo
	operation (i.e. by clicking the 'Stop' button in the GUI).
	(do_undo): Add a slot parameter for this purpose.
	(undo): ditto.

	* src/filebufferundo.{cc,h} (do_undo): Make use of the new slot
	parameter in order to allow for interuption of the undo process.
	(FileBufferActionRemoveMatch): Make use of the weak notification
	mechanism now provided by FileBuffer.

	* src/fileshared.h (MatchData::get_match_length): Remove this
	pointless accessor function.

	* src/fileshared.cc (MatchData::~MatchData): Be extra careful
	and remove the quark pointing to the MatchData instance from the
	mark object.

	* src/filetree.{cc,h} (FileTree::on_conf_value_changed): New
	signal handler listening to GConf value changes.
	(set_fallback_encoding): Remove this now pointless accessor.
	(get_fallback_encoding): ditto.
	(expand_and_select): Get rid of compatibility code for GTK+ < 2.2.
	(on_buffer_match_count_changed): Adapt to the changes made to
	FileBuffer::signal_match_count_changed.

	* src/filetreeprivate.cc (collatekey_sort_func): Use std::memcmp()
	instead of std::strcmp() as the former allows for inlining of the
	string operation by gcc.
	(FileTree::BufferActionShell::do_undo): Make use of the new slot
	parameter in order to allow for interuption of the undo process.

	* src/main.cc (set_default_window_icon): New name, formerly
	regexxer_set_window_icon().  Replace the pixbuf list stuff with
	a simple call to Gtk::Window::set_default_icon_from_file().
	(trap_gconf_exceptions): New global exception handler callback,
	invoked whenever an exception escapes from a C++ handler of
	a GObject signal.  Our particular handler is used to filter any
	Gnome::Conf::Error exceptions, thus in essence ignoring them.
	This way we don't need to deal with exceptions in each handler
	of the GConf "value_changed" signal.
	(initialize_configuration): New function to be invoked by main()
	in order to load the initial configuration values.  By emitting
	an artificial "value_changed" signal for each entry in regexxer's
	GConf directory, the need for separate initialization code for
	each key is neatly avoided.
	(main): Accomodate the changes listed above.

	* src/mainwindow.{cc,h} (MainWindow::on_conf_value_changed):
	New signal handler listening to GConf value changes.
	(on_preferences): Remove all the code dealing with individual
	configuration values, since we're now using a decentralized change
	notification approach instead.
	(load_configuration): Ditch this.
	(save_configuration): ditto.
	(confirm_quit_request): Honor the fact that the new GTK+ file
	selector doesn't append '/' to directories anymore.  This bug
	is quite annoying and should have been fixed months ago :/
	Also widen the dialog's default size to 400 pixels.
	(on_buffer_match_count_changed): Remove, there's no need to
	listen for this on the FileBuffer because the FileTree is
	reflecting these changes anyway.
	(on_buffer_bound_state_changed): ditto.
	(on_bound_state_changed): Because there's only one now, rename
	from on_filetree_bound_state_changed().
	(on_filetree_match_count_changed): Take care of the FileBuffer
	match count as well.
	(on_go_next): Replace the 0.2 delta passed to scroll_to_mark()
	with 0.125, as the latter looks nicer to my eyes and also happens
	to be a 'round' number in base 2.
	(on_undo): Accomodate the changes made to the UndoAction classes
	in order to allow for interruption of the running undo process.
	Also instantiate a BusyAction object for this purpose.
	(undo_stack_clear): New method.
	(set_title_filename): Replace the plain '-' by U+2013 EN DASH.

	* src/miscutils.{cc,h} (gtk_version_at_least): Remove since it's
	no longer used.

	* src/pcreshell.{cc,h}: To my astonisment I found out that the
	source of my constant trouble with libpcre and UTF-8 text was
	caused by pcre_study() alone!  The great thing is of course that
	simply not using that silly function is all that's needed to get
	rid of this constant source of mayhem.
	(escape_non_ascii): Remove, since no longer needed.
	(translate_to_char_offset): Get rid of this one too.
	(byte_to_char_offset): New little helper function.
	(check_for_single_byte_escape): The "\C" escape sequence seems
	to be only thing we still have to take care of manually.  This
	particular sequence matches a single byte even of a multi-byte
	character, and thus is likely to cause hell to break loose.
	(Pattern::pcre_extra_): Remove.
	(Pattern::Pattern): Get rid of the pcre_study() call, and
	make use of the new check_for_single_byte_escape() function.
	(Pattern::~Pattern): No need to free pcre_extra_ anymore.
	(Pattern::match): Throw an exception if the regular expression
	exceeds the recursion and backtracking limit of libpcre.
	(CompileOptions): Implement the remaining bit manipulation
	operators for completeness.
	(MatchOptions): ditto.

	* src/prefdialog.{cc,h} (get_toolbar_style_index): New helper
	function.
	(FontSelectionButton::set_selected_font): Take the font name
	rather than a Pango::FontDescription object as parameter.
	(get_selected_font): Likewise for the return type.
	(PrefDialog::button_direction_): New Gtk::CheckButton member,
	allowing users of RTL environments to override the direction
	of regexxer's file editor alone.
	(on_conf_value_changed): New signal handler listening to
	GConf value changes.
	(initialize_configuration): New function to load the initial
	settings immediately after creation of the preference dialog.
	Works just like the identically named function in main.cc,
	except that it invokes on_conf_value_changed() directly instead
	of triggering the global "value_changed" signal.
	(on_textview_font_selected): Set the appropriate GConf key
	instead of using the old internal signal feedback mechanism.
	(on_match_color_selected): ditto
	(on_current_color_selected): ditto
	(on_option_toolbar_style_changed): ditto
	(on_entry_fallback_activate): ditto.
	(on_button_direction_toggled): New method.
	(signal_pref_textview_font_changed): Remove.
	(signal_pref_match_color_changed): Remove.
	(signal_pref_current_color_changed): Remove.
	(signal_pref_toolbar_style_changed): Remove.
	(signal_pref_fallback_encoding_changed): Remove.
	(on_entry_fallback_changed): Record that entry content was changed
	by setting the boolean entry_fallback_changed_ flag.  This is just
	to avoid superfluous commits to the GConf database every time the
	preference dialog is closed.
	(on_response): Evaluate entry_fallback_changed_ (see above),
	and make sure no Gnome::Conf::Error exceptions escape from
	on_entry_fallback_activate().
	(create_page_look): Move the signal handler setup to the ctor.
	(create_page_file): ditto.

	* src/statusline.cc (CounterBox::CounterBox): Catch possible
	exceptions when applying the locale to the stream object, in
	order to avoid crashing if the user's locale is invalid.

	* src/stringutils.cc (apply_modifiers): Modify the code a bit
	to reduce the number of string copies made.
	(parse_control_char): Add a 'dest' output parameter to avoid
	returning a string by value.
	(parse_hex_unichar): ditto
	(parse_oct_unichar): ditto.
	(parse_capture_index): New helper function to deal with both
	"$1" and "${1}"-style references in the substitution string.
	(validate_encoding): Simplify.  Also, don't accept any error
	codes but NO_CONVERSION.
	(encodings_equal): No longer use std::find_if() since it really
	doesn't make the code any simpler in this particular case.
	(trim_whitespace): Remove; no longer used.
	(shell_pattern_to_regex): Various performance improvements.
	Also take care of a possible trailing backslash to avoid escaping
	the "\z" appended by regexxer itself.
	(substitute_references): Restructure the loop a bit, and accomodate
	the changes made to the parse_*_char() functions mentioned above.
	Also, avoid the need for ascii_isodigit() in the default branch by
	simply adding all 8 octal digits as case labels.
	(int_to_string): Catch any exceptions that might occur when
	applying the locale to the stream.  This could happen if the
	user's default locale is invalid.
	(transform_pathname): Replace this silly 2-in-1 function by
	separate shorten_pathname() and expand_pathname() implementations.
	There really is no need to cache the home directory in a static
	variable.
	(shorten_pathname): Implement separately rather than forwarding
	to transform_pathname().
	(expand_pathname): ditto.
	(enum_from_nick): New utility function to convert the 'nick'
	of a particular enumeration value to the actual integer value.
	This of course requires the the enumeration type to be registered
	via the GObject type system.
	(enum_to_nick): Likewise, but the other way around.
	(enum_from_nick_impl): Non-template implementation part.
	(enum_to_nick_impl): ditto.

2004-05-04  Daniel Elstner  <daniel.elstner@gmx.net>

	* macros/cxx.m4: Make use of the new AS_IF() macro, and also
	improve the portability of the shell code a bit.

	* macros/pcre.m4: Ditto.

	* macros/misc.m4: New file, introducing a REGEXXER_PKG_PATH_PROG
	macro which can be used to look for executables that might live
	in subdirectories indicated by pkg-config output.

	* autogen.sh: Some minor shell coding-style improvements.

	* configure.ac: Invoke the new REGEXXER_PKG_PATH_PROG macro in
	order to look for gdk-pixbuf-csource.  Use the new macro to look
	for gconftool-2 as well.
	(AC_CHECK_HEADERS): Remove the tests for sys/types.h, sys/stat.h,
	umask() and mode_t since they're no longer necessary.
	(PKG_CHECK_MODULES): Substitute the GTKMM prefix by PKG (I don't
	like MM_DEPS as introduced by Murray in HEAD.)  Also, get rid of
	the libgnomevfsmm dependency.
	(REGEXXER_ENABLE_GCONFMM_VALUE_HACK): New preprocessor macro to
	be inserted into config.h.  This isn't actually used yet, I'll
	get to that later.

	* regexxer.schemas: New file.

	* Makefile.am: Add rules taking care of the installation of the
	GConf schema file.
	(dist_schema_DATA): Add regexxer.schemas to the distribution.
	(dist_noinst_DATA): Ditto for macros/misc.m4.
	(DISTCHECK_CONFIGURE_FLAGS): Include --disable-schemas-install.

	* src/Makefile.am: Reflect the substitution of GTKMM by PKG made
	in configure.ac.
	(AM_CPPFLAGS): Use this variable in place of regexxer_CPPFLAGS,
	because executable-specific CFLAGS is not something regexxer ever
	intended to use.

	* src/main.cc: Get rid of the libgnomevfsmm dependency.  For one
	thing, the code using it didn't actually work with remote URIs.
	For another, as of now there's no stable release of this library
	in sight, no to mention a widely distributed release.

	* src/fileio.cc (load_try_encoding): Comment-out the gnomevfs code
	and replace it with the original Glib::IOChannel code instead.
	(save_file): ditto.

	* src/filetree.cc (find_recursively): Comment-out and replace with
	the previous non-gnomevfs code.

1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
2004-04-10  Murray Cumming  <murrayc@murrayc.com>

	* regexxer/Makefile.am: Put the mm libs and cflags before the pcre 
	ones, because the mm ones are more likely to be in more than one
	prefix, to avoid undefined symbols when a -L command means we link
	to an older GTK+. This is a bit hacky, but I don't know a better 
	solution - at least it will work on distros where everything is in the 
	same prefix.
	* scripts/cxx.m4: Replace deprecated AC_HELP_STRING with 
	AS_HELP_STRING.

1140
1141
1142
1143
1144
2004-04-04  Murray Cumming  <murrayc@murrayc.com>

	* Ported to gtkmm 2.4 - mostly just use of libsigc++ 2 syntax, and
	not using the old Toolbar STL-style API.

1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
0.6.0:

2003-12-07  Murray Cumming  <murrayc@usa.net>

	* src/configdata.cc: set_fallback_encoding_from_string(): Ignore
	empty value from GConf, so that the default fallback encoding is
	used. That is ISO-8859-15, also known as Latin 9, which seems to
	be commonly-used on Windows.
	* src/fileio.[h|cc]: Use gnome-vfsmm instead of Glib::IOChannel
	to read and write file contents, so we can use any URI.
	* src/filetree.[h|cc]: Likewise, use gnome-vfsmm instead of 
	Glib::Dir to list the files.
	* configure.ac: Added pkg-config check for gnome-vfsmm.
	
1159
1160
1161
1162
2003-11-29  Murray Cumming  <murrayc@usa.net>

	* configure.ac: regexxer now depends on gconfmm. Removed the check
	for 2.2-specific features.
1163
	* Removed all gtkmm 2.2-specific #ifdefs because 2.2 is everywhere
1164
1165
1166
1167
	now..
	* src/configdata.[h|cc]: Changed the implemention to use GConfmm
	instead of the text file.

1168
1169
0.5.0:

1170
1171
1172
1173
1174
2003-10-31  Murray Cumming  <murrayc@usa.net>

	* src/mainwindow.cc: Used larger HIG-like borders and spacings to
	make it look just a little more GNOME HIG compliant.

1175
1176
1177
1178
1179
1180
1181
1182
2003-10-29  Murray Cumming  <murrayc@usa.net>

	* I'm taking over maintainership until Daniel reappears. I hope
	that he does.
	* src/Makefile.am: Removed *DEPRECATED* defines so that it builds 
	with GTK+ 2.3/2.4. These should only be active during maintainer
	mode if they are added back.

1183
1184
1185
1186
1187
2003-02-06  Daniel Elstner  <daniel.elstner@gmx.net>

	* regexxer.desktop: Add Danish translation contributed by
	Morten Brix Petersen <mbp@wtf.dk>.  Thanks!

1188
1189
1190
1191
1192
1193
2003-01-11  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac: Check for gtkmm >= 2.2.0 rather than 2.1.1.  Note
	that gtkmm 2.2 is still optional, but this is likely to change after
	the regexxer 0.5 release.

1194
1195
1196
1197
2003-01-11  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (propagate_modified_change): Simplify.

1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
2003-01-11  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/signalutils.{cc,h} (AutoConnection): New utility class that
	breaks the previous connection on assignment, and also remembers the
	blocked state of the connection permanently.

	(ScopedBlock): Use Util::AutoConnection instead of SigC::Connection.

	* src/filetree.{cc,h}: Use AutoConnection to manage the connection
	handles of the currently selected buffer.

	(on_selection_changed): Thanks to AutoConnection, we can now
	extinguish a fair bit of error-prone code.

daniel_e's avatar
daniel_e committed
1212
1213
1214
1215
1216
2003-01-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* autogen.sh: Require automake >= 1.7.
	* configure.ac: ditto.

daniel_e's avatar
daniel_e committed
1217
1218
1219
1220
2003-01-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/sharedptr.h (SharedPtr<>::swap): Implement.

1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
2003-01-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (on_hide): For safety, transfer ownership of
	the preferences and about dialogs into local variables, rather than
	invoking hide() to delete them.  That way delete won't be called
	before hide() actually returned.

	(on_about_dialog_hide): Don't use std::auto_ptr<>::reset() but
	transfer ownership into local variables.  I had a look at the
	libstdc++-v3 headers and it gave me the creeps -- reset() deletes
	_before_ assigning the new pointer.

daniel_e's avatar
daniel_e committed
1233
	(on_pref_dialog_hide): ditto.
1234

1235
1236
1237
1238
1239
2003-01-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (error_pixbuf_): Get rid of this silly cache,
	since it became useless a while ago.

1240
1241
1242
1243
1244
1245
2003-01-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/aboutdialog.cc (SelectableLabel): Add accessibility hints.
	(ContributorBox): Likewise, and also improve the widget arrangement
	if the dialog gets resized.

1246
1247
1248
1249
1250
1251
2002-12-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.{cc,h}: Get rid of the menubar_handle_ and
	toolbar_handle_ data members.  We don't need to keep them around
	anymore since the config option to hide one or the other is gone.

1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
2002-12-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/aboutdialog.cc (SelectableLabel): New fancy experiment to
	make labels both selectable _and_ focusable, so that they end up
	in the Tab chain.

	* src/aboutdialog.cc src/imagebutton.cc src/prefdialog.cc: Don't
	show all children of custom "composite" widgets in the constructor.
	It doesn't make much sense since we call show_all() later on anyway.
	And making these "composite" widgets really independent components
	would require overriding both show_all_vfunc() and hide_all_vfunc(),
	which is currently not worth the effort.

1265
1266
1267
1268
1269
2002-12-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* pixmaps/regexxer.png: Replace with a much nicer icon stolen from
	http://jimmac.musichall.cz/ikony.php3 -- looks sweet!

1270
1271
1272
1273
1274
1275
2002-12-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (PCRE_CHECK_VERSION): Require libpcre >= 3.9.  It
	finally arrived in Debian unstable a while ago and there's at least
	one UTF-8 related bug in prior releases that could cause crashes.

1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
2002-12-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/pcreshell.cc (translate_to_char_offset): New function
	that translates the error offset returned by pcre_compile() to
	a character offset into the original regex.  This became necessary
	since due to the recent introduction of escape_non_ascii(), and
	is more robust anyway.

	* src/mainwindow.cc (on_exec_search): Deal with character offsets
	instead of byte offsets.  Also, set the regex entry's selection on
	the character where the error occurred.

1288
1289
1290
1291
1292
1293
1294
2002-12-27  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/statusline.{cc,h}: Use Gtk::RC::parse_string() and the
	appropriate RC style settings to reduce the height of the Stop
	button, instead of the insane set_size_request() hack.  This way
	the label text gets properly aligned now.

1295
1296
1297
1298
1299
1300
1301
2002-12-27  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.cc (scale_to_8bit): Don't try to round to the
	nearest value.  This fixes a fun bug that caused the orange color
	of the current match to become slightly brighter on each config
	load/save cycle.

1302
1303
1304
1305
1306
1307
2002-12-27  Daniel Elstner  <daniel.elstner@gmx.net>

	* pixmaps/Makefile.am (stockimages.h): Beautify by printing the
	actual command line that is executed, rather than the shell code
	to build it.  This is also what autoconf does in its rules.

1308
1309
1310
1311
1312
1313
2002-12-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* regexxer.desktop: Add Comment[de] translation, and remove GNOME
	from Categories.  Recent GNOME applications don't seem to specify
	this category anymore.

1314
1315
1316
1317
1318
1319
1320
1321
2002-12-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/pcreshell.cc (escape_non_ascii): New function to work around
	a crash in libpcre when using literal UTF-8 in character classes.
	This still won't make it work, but prevents the crash and forces
	an error message if characters in classes are outside the Latin1
	range.

1322
1323
1324
1325
1326
1327
2002-12-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac: Check for gtkmm >= 2.1.1 instead of the compile
	test based on Glib::set_application_name().  (Don't worry, gtkmm
	2.1.x is not yet a requirement.)

1328
1329
1330
1331
1332
1333
1334
1335
1336
2002-12-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/prefdialog.cc: Don't #include GTK+ headers if gtkmm 2.2
	API is available.

	(ColorLabel::on_expose_event): When building with gtkmm 2.2, use
	Gtk::Widget::get_style_property() instead of the ugly varargs
	function gtk_widget_style_get().

1337
1338
1339
1340
1341
2002-12-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/prefdialog.cc (ColorSelectionButton::on_clicked): Convert
	the dialog window title to title case.

1342
1343
1344
1345
1346
2002-12-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/prefdialog.cc (ColorLabel::ColorLabel): Modify the whole
	Gtk::RcStyle in one go rather than setting the bg pixmap thrice.

1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
2002-12-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/configdata.{cc,h}: Remove config option "menutool_mode"
	because it's crack now that we have undo et al.  Add config options
	"textview_font", "match_color" and "current_match_color".

	* src/filebuffer.{cc,h} (pango_context_changed): Assign default
	font to the error_message tag.
	([gs]et_match_color): New accessors to tag colors.
	([gs]et_current_color): ditto.

	* src/mainwindow.{cc,h} ([gs]et_menutool_mode): Get rid of these.
	(on_filetree_switch_buffer): No longer modify the TextView font
	globally since we set the tag now.
	(on_preferences): Handle the added config settings.
	(load_configuration): ditto
	(save_configuration): ditto.

	* src/prefdialog.{cc,h} (FontSelectionButton): New utility widget.
	(ColorSelectionButton): Another new utility widget.
	(PrefDialog): Revamp the preferences dialog.  That is, add GUI for
	the new config settings and remove the old one.  Also replace the
	radio buttons for selecting the toolbar style with an option menu.

daniel_e's avatar
daniel_e committed
1371
1372
1373
1374
1375
1376
1377
2002-12-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.{cc,h} (contains_null): Remove.
	(color_to_string): Implement.
	(shell_pattern_to_regex): Handle alternative syntax '^' for
	negation of character classes properly.

1378
1379
1380
1381
1382
1383
1384
1385
2002-12-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/miscutils.h (ScopedArray<>): New little utility template
	to manage a dynamically allocated array.

	* src/fileio.cc (load_iochannel): Ditch Glib::ScopedPtr<> (glibmm
	internal :) in favor of Util::ScopedArray<>.

1386
1387
1388
1389
1390
2002-12-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/fileio.cc (load_iochannel): Use std::memchr() rather than
	the silly Util::contains_null() utility function.

1391
1392
1393
1394
1395
2002-12-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac: Put -I flags into CPPFLAGS instead of CXXFLAGS.
	* macros/pcre.m4 (PCRE_CHECK_UTF8): Likewise for CFLAGS.

1396
1397
1398
1399
1400
2002-12-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* macros/pcre.m4 (PCRE_CHECK_VERSION): Use the sed magic from
	autogen.sh to implement a proper version check.

1401
1402
1403
1404
1405
2002-12-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* autogen.sh: Implement some fancy sed magic to compare automake
	version numbers, in order to choose the one that suits us best.

1406
1407
1408
1409
1410
1411
1412
2002-12-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (create_left_pane): Set the accessible name
	of the folder entry.
	(create_right_pane): Set the accessible name of the preview entry,
	but replace the accessible description with a tool tip.

1413
1414
1415
1416
1417
2002-12-15  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (expand_and_select): Make use of
	Gtk::TreeView::expand_to_path() if available.

1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
2002-12-15  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/miscutils.{cc,h}: New files.  Move Util::prior() and next()
	hitherto, and add Util::gtk_version_at_least() to do a runtime
	version check.
	* src/Makefile.am: Add miscutils.{cc,h}.

	* src/stringutils.h: Move prior() and next() into miscutils.h.
	* src/filebuffer.cc: #include "miscutils.h".
	* src/filetree.cc (expand_and_select): Use the lazy scrolling
	feature if GTK+ >= 2.1.4 is available at runtime.

1430
1431
1432
1433
1434
1435
2002-12-15  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (expand_and_select): Don't pass row_align to
	Gtk::TreeView::scroll_to_row() if compiling for gtkmm 2.2 since
	lazy scrolling has now been implemented.

1436
1437
1438
1439
1440
1441
1442
1443
2002-12-15  Daniel Elstner  <daniel.elstner@gmx.net>

	* autogen.sh: Enable Bourne shell posix mode if possible, and
	export WARNINGS=all in order to get auto* diagnostic messages.

	* src/Makefile.am: Replace deprecated variables INCLUDES and LIBS
	with regexxer_CPPFLAGS and regexxer_LDADD.

1444
1445
1446
1447
1448
2002-12-15  Daniel Elstner  <daniel.elstner@gmx.net>

	* macros/cxx.m4: Get rid of all deprecated autoconf constructs.
	* macros/pcre.m4: ditto.

1449
1450
1451
1452
1453
2002-12-15  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac: Replace the check for gtkmm >= 2.1.0 with a test
	for Glib::set_application_name().  This should be much safer.

1454
1455
1456
1457
1458
2002-12-15  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/main.cc (main): Use Glib::set_application_name() if building
	for gtkmm 2.1.

1459
1460
1461
1462
1463
2002-12-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* Makefile.am (DISTCHECK_CONFIGURE_FLAGS): On make distcheck,
	pass --enable-warnings=hardcore to ./configure.

1464
1465
1466
1467
1468
1469
1470
1471
2002-12-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (AM_INIT_AUTOMAKE): Require automake >= 1.6 and
	make use of the "check-news" option.

	* Makefile.am (EXTRA_DIST): Get rid of EXTRA_DIST and properly
	put the files into dist_noinst_SCRIPTS and dist_noinst_DATA.

1472
1473
1474
1475
1476
2002-12-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* autogen.sh: Delete all scripts and symbolic links that will
	be recreated by automake --add-missing.

1477
1478
1479
1480
1481
2002-12-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* regexxer.desktop: Set StartupNotify=true in order to take
	advantage of the startup notification feature in GNOME 2.1.

1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
2002-12-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* autogen.sh: Incorporate bits of the standard GNOME autogen.sh,
	and make use of aclocal-1.7 and automake-1.7 if available.

	* configure.ac: AC_PREREQ([2.53]) to make sure the Debian magic
	chooses the right autoconf version.
	(AM_CONFIG_HEADER): Replace with AC_CONFIG_HEADERS().  This
	could create a dependency on automake-1.7, don't know for sure.

1492
1493
1494
1495
1496
1497
1498
1499
2002-12-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/imagebutton.{cc,h} (ImageButton): Add a 'name' argument to
	the ctor which is used to set the accessibility object's name.

	* src/controller.cc (create_action_area): Set accessibility
	names for all image-only buttons.

1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
2002-12-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac: Check for gtkmm >= 2.1.0 and #define
	REGEXXER_HAVE_GTKMM_22 if available.

	* src/controller.cc:
	* src/mainwindow.cc:
	* src/statusline.cc: If building for gtkmm >= 2.1.0, make use of
	atkmm to set names and descriptions of several GUI elements.

1510
1511
1512
1513
1514
1515
2002-12-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* pixmaps/Makefile.am (stockimages.h): Perfectionize so that it
	handles a case that actually never happens, but who knows who's
	going to copy'n'paste this stuff :P

1516
1517
1518
1519
1520
2002-12-02  Daniel Elstner  <daniel.elstner@gmx.net>

	* pixmaps/Makefile.am: Use shell magic to generate the build list
	for gdk-pixbuf-csource.  It's way cooler than doing it manually :)

1521
1522
1523
1524
1525
1526
2002-12-02  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (create_left_pane): Use 'd' instead of 'F'
	as mnemonic key for the folder button, because 'F' is already
	occupied by the file menu.

1527
1528
1529
1530
1531
1532
1533
2002-12-01  Murray Cumming  <murrayc@usa.net>

	[ SF patch 646526, slightly modified ]

	* src/mainwindow.cc: Change the file pattern entry to a combo,
	with some commonly-used file extensions.

1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
2002-12-02  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/controller.cc (create_action_area):
	* src/mainwindow.cc (create_left_pane): Add preliminary support
	for accessibility using ATK.  Unfortunately atkmm is badly broken
	in a way that prevents it from being used at all.  And due to a
	missing reference in Gtk::Widget::get_accessible_vfunc() I can't
	even resort to the C interface for custom derived classes.  Thus
	most of the code is enclosed in #if 0 / #endif at the moment.

1544
1545
1546
1547
1548
1549
1550
2002-11-29  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (on_selection_changed): Ooops, forgot to
	disconnect() conn_undo_stack_push_.  That means the mysterious
	one of the assertions is now fixed -- the remaining ones are
	expected :)

daniel_e's avatar
daniel_e committed
1551
1552
1553
1554
2002-11-29  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (AC_INIT): Version 0.5.

1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
2002-11-29  Daniel Elstner  <daniel.elstner@gmx.net>

	OK folks, this is the new undo system.  It works, but don't rely
	too much on undo yet since there are still some issues to work out.
	Try stress testing the system a bit and you'll be able to trigger
	assertions, misbehaviour and all other kind of evil stuff.

	However, the framework is basically working and the remaining
	problems are going to be sorted out very soon.  Happy testing!

	* src/undostack.{cc,h}: New files, implementing the core of the
	new undo system.  Basically it's a simple undo stack using virtual
	methods for the implementation of undo actions.  But the undo stack
	is itself an undo action, which allows for nested stacks.  This
	functionality is necessary since the undo works globally on all
	files.

	* src/filebufferundo.{cc,h}: New files, defining the implementation
	of the FileBuffer undo actions.

	* src/fileshared.{cc,h}: Move parts of filebuffer.{cc,h} into these
	new files, in order to avoid circular dependencies and to reduce the
	length of single source files.

	* src/filetreeprivate.{cc,h}: Move the anonymous namespace parts
	and the nested classes of the FileTree implementation into separate
	files.  filetreeprivate.h is included by filetree.cc only.

	* src/Makefile.am (regexxer_SOURCES): Add new source files.

	* src/filebuffer.{cc,h}: Heavily modify and enhance the code in
	order to support the new undo framework.

	* src/filetree.{cc,h}: ditto.

	* src/controller.{cc,h}: Add undo ControlItem and show menu/toolbar
	items for it.

	* src/mainwindow.{cc,h}: Add code to maintain the undo stack and
	connect the GUI bits.

1596
1597
1598
1599
1600
1601
1602
2002-11-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/signalutils.h (ScopedBlock): Move from filetree.cc hitherto.
	(ScopedConnection): ditto.

	* src/filetree.cc: Use the new signal stuff from namespace Util.

1603
1604
1605
1606
1607
2002-11-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.{cc,h} (signal_preview_line_changed): Use the
	new Util::QueuedSignal rather than queuing manually.

1608
1609
1610
1611
1612
1613
1614
1615
1616
2002-11-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/signalutils.{cc,h}: New files containing various sigc++
	related utilities.  For now, there's only Util::QueuedSignal,
	which implements a SigC::Signal0<void> that is emitted when the
	main loop is idle.

	* src/Makefile.am (regexxer_SOURCES): Add signalutils.{cc,h}.

1617
1618
1619
1620
1621
2002-11-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.{cc,h} (trigger_preview_line_changed): Rename to
	queue_preview_line_changed() because that's what it does.

1622
1623
1624
1625
1626
2002-11-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.cc (pango_context_changed): Ooops, I accidentally
	reversed the arguments to Gtk::IconSize::lookup().  Fixed.

1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
2002-11-23  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (FileTree::ScopedBlockSorting): Introduce new
	utility class used to temporarily disable the column headers and to
	switch to the default sort column if the current one is the match
	count column.  This is necessary because Gtk::TreeModel::foreach()
	doesn't like it at all if model rows are reordered underneath its
	feet.  regexxer didn't handle that correctly until now, and the only
	reason this bug hasn't been observed before is #96647 :)

1637
1638
1639
1640
1641
1642
1643
1644
2002-11-23  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (FileTree::ErrorList): Rename to MessageList
	since it's not specifically intended for errors.  Use MI to combine
	Util::SharedObject and std::list<> instead of making the std::list
	a data member.  IS-A really makes sense here and this kind of class
	enhancement is what MI exists for, after all.

1645
1646
1647
1648
1649
1650
1651
1652
2002-11-22  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/Makefile.am (DEFS): Don't use backslash quoting inside the
	double-quoted string.  Rather, quote the outer pair of double-
	quotes with backslashes.  I reckon it's more portable not to use
	backslash quoting inside double-quoted strings since most other
	packages seem to avoid it too.

1653
1654
1655
1656
1657
1658
1659
2002-11-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (AC_TYPE_MODE_T): Eeek, this macro makes use of a
	deprecated autoconf macro.  Replace with AC_CHECK_TYPES([mode_t]).

	* src/configdata.cc: Do "typedef int mode_t" if necessary.

1660
1661
1662
1663
1664
2002-11-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac: Check for mode_t too since we need it for umask().
	You can never know.

1665
1666
1667
1668
1669
2002-11-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (AM_INIT_AUTOMAKE): Remove 'dist-bzip2' option
	since we don't distribute bzipped tarballs right now.

1670
1671
1672
1673
1674
2002-11-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac: Get rid of AC_CANONICAL_{BUILD,HOST,TARGET}.
	These don't seem to be necessary anymore.

1675
1676
1677
1678
1679
2002-11-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* macros/cxx.m4: Use quadrigraphs to output characters like [ ].
	* macros/pcre.m4: Add error checking at the autoconf level.

daniel_e's avatar
daniel_e committed
1680
1681
1682
1683
1684
2002-11-19  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/aboutdialog.cc: Set the default response.
	* src/prefdialog.cc: ditto.

1685
1686
1687
1688
1689
1690
2002-11-19  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/main.cc (stock_icon_info): It's Gtk::ICON_SIZE_MENU, not
	Gtk::ICON_SIZE_SMALL_TOOLBAR.  This glitch fortunately didn't have
	any real consequences since the icon size was wildcarded anyway.

daniel_e's avatar
daniel_e committed
1691
1692
1693
1694
1695
1696
regexxer 0.4:

2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* NEWS: Update.

1697
1698
1699
1700
1701
2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/configdata.{cc,h}: Generalize the enumeration handling in
	two new functions, enum_to_string() and enum_from_string().

1702
1703
1704
1705
1706
2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/aboutdialog.cc: Refine the design a bit, and mention Ross
	Burton (Debian packager) as major contributor.

1707
1708
1709
1710
1711
1712
2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/controller.cc (create_menubar): Don't use "<control>f" as
	accelerator for "Move forward" because it's already occupied by
	the tree view search facility.

1713
1714
1715
1716
1717
1718
1719
2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.{cc,h}: Move the GUI stuff from the ctor into an
	auxilary method create_main_vbox().  Manually call accelerate() on
	the menu bar because otherwise the menu accelerators wouldn't be
	enabled if the menu bar is never shown due to user preference.

daniel_e's avatar
daniel_e committed
1720
1721
1722
1723
2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (AC_INIT): Bump version to 0.4.

1724
1725
1726
1727
1728
1729
2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.{cc,h}: Implement necessary bits to allow hiding
	menu bar or toolbar, and honor the menutool_mode config setting.
	Popup the new stand-alone about dialog on menubar/Help/Info.

1730
1731
1732
1733
1734
1735
2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/prefdialog.{cc,h}: Remove "regexxer info" page.  Split up
	configuration into "Look'n'feel" and "File access" pages.  Add
	UI and class interface for the new menutool_mode config option.

1736
1737
1738
1739
1740
1741
1742
2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/aboutdialog.{cc,h}: New files, implementing stand-alone
	about dialog for regexxer.

	* src/Makefile.am: Add new files.

1743
1744
1745
1746
1747
2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/configdata.{cc,h}: Add support for menutool_mode config
	option, specifying whether to show menu bar, toolbar or both.

1748
1749
1750
1751
1752
1753
2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/main.cc (regexxer_register_stock_items): Always set the
	intended icon size, but disable wildcarding for all but the last
	pixbuf in an icon set.

1754
1755
1756
1757
1758
1759
2002-11-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* pixmaps/stock_save_all_16.png: New menu icon.
	* pixmaps/Makefile.am: Add new icon.
	* src/main.cc: Register new icon.

1760
1761
1762
1763
2002-11-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/controller.cc (ControlItem::add_widget): Honor group_enabled_.

1764
1765
1766
1767
1768
2002-11-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc: Change default size of the window to 600x450
	because the new menu bar takes up quite some space.

1769
1770
1771
1772
1773
2002-11-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/controller.cc (ControlItem::activate): Don't ignore the
	group_enabled_ flag.

1774
1775
1776
1777
1778
1779
2002-11-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/controller.{cc,h} (create_menubar): Implement.
	* src/mainwindow.cc: Show the menu bar, and make both toolbar and
	menu bar detachable.

1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
2002-11-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/controller.{cc,h}: New files, implementing class Controller
	and class ControlItem.  ControlItem maintains an arbitrary number
	of activation sources, and controls the sensitivity state of an
	arbitrary number of widgets too.  Controller centralizes all of
	the ControlItems and provides create() functions for all pure
	control widgets in regexxer.  Also, there's ControlGroup which can
	be used to set the sensitivity of several widgets at once.

	All this stuff became necessary due to the proposed addition of
	menus.  Getting the sensitivity of all widgets right was already
	quite complex.  After the integration of menus the old code would
	have reached a critical mass.

	* src/imagebutton.{cc,h}: New files, containing ImageButton and
	ImageLabelButton that were previously in mainwindow.cc.  We need
	them in controller.cc now too.

	* src/Makefile.am (regexxer_SOURCES): Add new files.

	* src/mainwindow.{cc,h}: Integrate the new Controller concept and
	get rid of the obsolete cruft.  We're now below 1000 lines again.

1804
1805
1806
1807
2002-11-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc: Show tool tips for both find buttons too.

1808
1809
1810
1811
1812
2002-11-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc: Use sentence case for all tool tips, as
	suggested by Ross Burton.

1813
1814
1815
1816
1817
2002-11-15  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/sharedptr.cc: Remove already unused debug code.  The
	reference counting is rock solid thanks to SharedPtr<>.

1818
1819
1820
1821
1822
1823
2002-11-15  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/sharedptr.h (SharedObject): Remove the namespace prefix from
	the friend declaration.  This will hopefully fix a compilation
	problem with GCC 2.95.x -- once again.

1824
1825
1826
1827
1828
2002-11-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (on_busy_action_pulse): Simplify by reducing
	the amount of if-branches.

1829
1830
1831
1832
1833
1834
1835
1836
2002-11-13  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/sharedptr.h: Reimplement the static member templates
	cast_static<>(), cast_dynamic<>() and cast_dynamic_throw<>() as
	free functions, and use the boost naming convention.

	* src/filetree.cc: Use the new boost-like cast functions.

1837
1838
1839
1840
1841
1842
2002-11-11  Daniel Elstner  <daniel.elstner@gmx.net>

	* regexxer.desktop: New desktop file, provided by Ross Burton.
	Thanks Ross!
	* Makefile.am: Distribute and install regexxer.desktop.

1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
2002-11-11  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (find_files): Use std::string instead
	of Glib::ustring for 'dirname' and get rid of the call to
	Glib::filename_from_utf8().  This doesn't really belong here.

	* src/mainwindow.cc (on_find_files): Convert the directory name
	to filename encoding, and use the current directory as fallback
	if it's empty.

1853
1854
1855
1856
1857
1858
1859
1860
2002-11-11  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.{cc,h} (button_find_matches_): Set this button
	insensitive unless there is at least one file to search in.
	Suggested by Murray Cumming <murrayc@usa.net>.
	(button_find_files_): Likewise set this button insensitive if
	entry_pattern_ is empty.

1861
1862
1863
1864
1865
1866
2002-11-11  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (on_buffer_modified_changed): Work around a nasty
	gtkmm bug:  Glib::SignalProxy seems to ignore the 'blocked' flag of
	the SigC::Connection object.  I'll fix this later in gtkmm itself.

1867
1868
1869
1870
1871
2002-11-11  Daniel Elstner  <daniel.elstner@gmx.net>

	* macros/pcre.m4 (PCRE_CHECK_UTF8): Mention libpcre's --enable-utf8
	option in the error message.

1872
1873
1874
1875
1876
1877
1878
2002-11-11  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (on_treestore_sort_column_changed): New signal
	handler, used to recalculate path_match_first_ and path_match_last_.
	This fixes a serious bug -- the code relies on the validity of this
	cached range.

daniel_e's avatar
daniel_e committed
1879
1880
1881
1882
1883
1884
regexxer 0.3:

2002-11-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (AC_INIT): Bump version to 0.3.

1885
1886
1887
1888
1889
1890
2002-11-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.cc (transform_pathname): Use byte-wise comparison
	because filenames should match exactly.  The Glib::ustring collation
	methods depend on the user's locale and might even ignore case.

1891
1892
1893
1894
1895
2002-11-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (on_preferences): Make this strongly exception
	safe, just to demonstrate how to use std::auto_ptr<> properly :)

1896
1897
1898
1899
1900
1901
1902
2002-11-09  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (on_preferences): If the preferences dialog
	is already open, call present() instead of raise().  The former
	does a much better job of putting the window where the user can
	see it.

daniel_e's avatar
daniel_e committed
1903
1904
1905
1906
1907
1908
2002-11-09  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (find_recursively): Call increment_file_count()
	from here instead of letting the caller do it.
	(find_check_file): Simplify by using Gtk::TreeModel::Row directly.

1909
1910
1911
1912
1913
1914
1915
2002-11-09  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (collatekey_sort_func): Use std::strcmp() instead
	of std::string::compare(), because libstdc++-v2 (which comes with
	GCC 2.95.x) is badly broken and doesn't support this particular
	overload of compare().  Darn.

1916
1917
1918
1919
1920
1921
1922
1923
regexxer 0.2:

2002-11-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* AUTHORS: Add myself ;)
	* NEWS: List major changes in 0.2.
	* README: Fix typos.

1924
1925
1926
1927
1928
1929
2002-11-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (load_file_with_fallback): Emit row_changed()
	whenever the value of fileinfo->load_failed changed, rather than
	only if the file seems to be binary.

1930
1931
1932
1933
1934
1935
2002-11-07  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.{cc,h}: If there are any unsaved files on quit
	or when reloading the file tree, pop up a dialog asking for
	confirmation.

1936
1937
1938
1939
1940
1941
1942
2002-11-07  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h}: Get rid of the code that expanded/collapsed
	directory nodes on row clicks and the activated signal.  The GTK+
	people persuaded me that the inconsistency is worse than the little
	annoyance of having to hit the expander arrow.

1943
1944
1945
1946
1947
2002-11-07  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (on_row_activated): Override, in order to
	expand/collapse a directory node when the spacebar was pressed.

1948
1949
1950
1951
1952
1953
2002-11-07  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (on_button_release_event): Override, in
	order to expand a directory node when the user clicked anywhere
	inside the row.  This might improve usability a bit.

1954
1955
1956
1957
1958
1959
1960
1961
2002-11-07  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc: Make the column headers trigger sorting when
	clicked.  Again use a default sort function in order to get three
	modes of sorting.  That is, the default is ascending sort with
	directories first, but when clicking a column header no difference
	is made between files and directories.

1962
1963
1964
1965
1966
1967
2002-11-07  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (load_file_with_fallback): Ooops, I forgot
	that buffers are now freed whenever possible, thus we shouldn't
	just return even if fileinfo->load_failed has already been set.

1968
1969
1970
1971
1972
1973
1974
1975
2002-11-07  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (text_cell_data_func): Simplify.
	(load_file_with_fallback): Improve robustness of the code, and
	trigger row_changed() if load_failed has been set.  For some
	reason it worked without this explicit emission, but it's better
	not to rely on that.

1976
1977
1978
1979
1980
1981
2002-11-06  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h}: Show an icon indicating whether the item
	is a file or directory in front of the filename.  Check it out,
	this eye candy looks really nice.

daniel_e's avatar
daniel_e committed
1982
1983
1984
1985
2002-11-06  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/fileio.cc (save_file): Get rid of the #96373 work-around.

1986
1987
1988
1989
1990
1991
2002-11-06  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (PKG_CHECK_MODULES): Require gtk+-2.0 >= 2.0.6 in
	order to match the web page.
	(AC_INIT): Bump version to 0.2.  Yay!

1992
1993
1994
1995
1996
1997
1998
2002-11-06  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (PKG_CHECK_MODULES): Require glib-2.0 >= 2.0.7.
	This is necessary due to GLib bug #91222 -- I don't want people
	thinking regexxer segfaulted randomly all the time because it
	were badly coded.

1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2002-11-06  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (collatekey_sort_func): Make this the sort
	function for mixed directory/file view.
	(collatekey_sort_func_dirs_first): Move the content of the former
	collatekey_sort_func() into here.
	(collatekey_sort_func_dirs_first_descending): Extra sort function
	which correctly reverses the meaning of the first byte in the key.
	This is for use with Gtk::SORT_DESCENDING.

2009
2010
2011
2012
2013
2014
2015
2016
2002-11-06  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h}: Speed up and simplify sorting by merging
	the directory/file information into the collate key (directories
	get a leading '0', files get a leading '1').  This is amazingly
	easy and not hackish in any way -- after all, this kind of pre-
	processing the strings is exactly what collate keys are for.

2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2002-11-05  Daniel Elstner  <daniel.elstner@gmx