2008-11-21  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.6.5

2008-11-20  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-audit.c (audit_build_model):
	Fix a crash that occurs when the first audited romset is bad,
	which causes an unsigned integer to rollover.  (SF #2314490,
	Daniel Rammelt)

2008-11-19  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-process.c (process_debug_message):
	New function prints communication between GVA and MAME as a
	debug message.

	* src/gva-process.c (gva_process_write_stdin),
	(gva_process_write_stdout), (gva_process_write_stderr):
	Call process_debug_message() if the GVA_DEBUG_IO flag is set.

	* src/gva-mame-process.c (mame_process_exited),
	(gva_mame_process_spawn):
	Include the process ID in the debug message.

	* src/gva-util.c (gva_get_debug_flags):
	* src/gva-util.h (GvaDebugFlags):
	Add GVA_DEBUG_IO flag, which generates verbose debug output.

2008-10-07  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac: Post-release version bump.

	* src/gva-tree-view.c (gva_tree_view_update):
	When switching to the Search Results view with no results,
	automatically show the search entry.

2008-09-27  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.6.4

	* data/gnome-video-arcade.glade:
	Add a mute button to the top-right corner of the main window.

	* data/gnome-video-arcade.schemas:
	Add sound-muted key.

	* docs/reference/gnome-video-arcade.types:
	* docs/reference/gnome-video-arcade-docs.sgml:
	* docs/reference/gnome-video-arcade-sections.txt:
	Add developer documentation for GvaMuteButton.

	* src/Makefile.am:
	Add gva-mute-button.[ch].

	* src/gva-common.h:
	Add GVA_GCONF_SOUND_MUTED_KEY.

	* src/gva-db.c (db_parser_start_element_game):
	Fix a compiler error when CATEGORY_FILE is not defined.

	* src/gva-main.c (gva_main_init):
	Bind the mute button to the "sound-muted" GConf key.

	* src/gva-mame.h (gva_mame_supports_sound):
	New macro returns TRUE if MAME supports the -sound option.

	* src/gva-mame-common.c (gva_mame_run_game), (gva_mame_record_game),
	(gva_mame_playback_game):
	Append a "-sound" or "-nosound" command-line argument depending on
	the state of the mute button.

	* src/gva-mute-button.c:
	* src/gva-mute-button.h:
	New source files implement a button that can toggle between an
	"audio-volume-muted" and "audio-volume-high" icon.

2008-07-19  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac: Post-release version bump.

	* data/gnome-video-arcade.ui:
	* src/gva-columns.c (columns_show_popup_menu),
	(columns_button_press_event_cb), (columns_popup_menu_cb),
	(columns_setup_popup_menu), (gva_columns_load):
	* src/gva-tree-view.c (tree_view_show_popup_menu):
	Move the add/remove column popup menu items to a new popup menu
	that's triggered by right-clicking on the column headers in the
	game list.  Thanks to Jonathan Blandford for showing me how.

	* src/gva-ui.c (gva_ui_add_column_actions):
	Add "add-column" actions to "column-popup" menu.

2008-06-29  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.6.3	

2008-06-29  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac:
	Add a summary message to the end of configuration output.
	Note, not showing Glade Catalog because that's for me only.

2008-06-28  Matthew Barnes  <mbarnes@redhat.com>

	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation.

	* src/gva-db.c (gva_db_get_table):
	Allow the output arguments to be NULL.  This is more convenient
	for callers if they don't need all the output values.

	* src/main.c (warn_if_no_roms):
	* src/gva-play-back.c (play_back_add_input_file):
	Take advantage of this in calls to gva_db_get_table().

	* src/gva-properties.c:
	Modify the SELECT_PARENT/CLONES queries to also return whether the
	game is available.  properties_add_game_label() will use this to
	decide what kind of widget to create -- a label or a link label.

	* src/gva-properties.c (gva_properties_show_game):
	Move the update logic from properties_update_timeout_cb() to this
	new function.  This allows us to bypass the "tree view selection
	changed" delay when the user clicks on a link label.

	* src/gva-tree-view.c (gva_tree_view_set_selected_game):
	If the requested game is not visible in the current view, unselect
	all rows rather than arbitrarily selecting the first row.

2008-06-28  Matthew Barnes  <mbarnes@redhat.com>

	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation.

	* src/gva-properties.c (properties_scroll_to_top):
	Rename function from properties_technical_scroll_to_top().
	Scroll both the Technical and History tabs to the top.

	* src/gva-ui.h:
	Add GVA_WIDGET_PROPERTIES_HISTORY_SCROLLED_WINDOW.

2008-06-27  Matthew Barnes  <mbarnes@redhat.com>

	* README: List intltool as a dependency.

	* data/gnome-video-arcade.glade:
	Add an information icon to the Audit dialog.
	Move parents to the bottom of the Technical Properties tab.

	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation.

	* src/gva-properties.c (properties_technical_scroll_to_top):
	New function scrolls the Technical Properties viewport to the top.

2008-06-25  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	Move clones to the bottom of the Technical Properties tab.

	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation.

	* maint/Makefile.am:
	* maint/gva.xml:
	Create a Glade catalog for GvaLinkButton.

	* src/Makefile.am:
	Add gva-link-button.[ch].

	* src/gva-link-button.c:
	* src/gva-link-button.h:
	New subclass of GtkLinkButton.  Works the same but eliminates the
	shadow and extra padding around the button label.

	* src/gva-properties.c (properties_label_clicked_cb),
	(properties_add_game_label), (properties_update_clones):
	Add parent/clone information to the Technical Properties tab.
	Games that are present in the current main window view look like
	hypertext links.  Clicking one will jump to that game in the main
	window and consequently update the Properties dialog.

	* gva-ui.h:
	More widget macros.

2008-06-25  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac:
	AC_SUBST(abs_top_builddir)

	* data/gnome-video-arcade.glade:
	Add a frame and event box around the status area in the Technical
	Properties tab.  The event box allows us to color the background
	to make it stand out more.  Also add some placeholder widgets for
	displaying parent/clone relationships in the Technical Properties.
	Not even remotely complete yet.

	* src/gva-properties.c (properties_update_status):
	Set visibility of the new GtkFrame in the status area.
	Make the status icon smaller.  It now matches the tooltip.

	* src/gva-properties.c (gva_properties_init):
	Dig up the tooltip background color from GtkSettings and set
	the status area background color to match.  Looks better.

	* src/gva-ui.h:
	Add macros to fetch the status GtkEventBox and GtkFrame in the
	Technical Properties tab.

2008-06-16  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac: Post-release version bump.

	* docs/reference/database-schema.xml:
	Add documentation for the 'window' table.

	* src/Makefile.am:
	Add TOPSRCDIR definition to AM_CPPFLAGS.

	* src/gva-main.c (gva_main_init_search_completion):
	Fix a compilation error when building against GTK+ >= 2.13.1.

	* src/gva-util.c (gva_file_data_file):
	When running directly from the source tree, use TOPSRCDIR
	rather than '..' when constructing the file path.

2008-06-16  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.6.2

2008-05-31  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac:
	Make libwnck optional.  Use --without-wnck to disable it.

	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation.

	* src/gva-main.c (gva_main_cursor_busy), (gva_main_cursor_normal):
	New functions set the mouse cursor to busy or normal, respectively.

	* src/gva-main.c (gva_main_progress_bar_show),
	(gva_main_progress_bar_hide):
	* src/gva-tree-view.c (gva_tree_view_run_query):
	Let gva_main_cursor_busy() and gva_main_cursor_normal() manage the
	mouse cursor.  Simplifies the logic.

	* src/gva-mame.h (gva_mame_supports_maximize):
	New macro returns TRUE if MAME supports the -maximize option.

	* src/gva-mame-common.c (gva_mame_run_game), (gva_mame_record_game),
	(gva_mame_playback_game):
	Add a -nomaximize argument if supported and we're linking against
	libwnck.  Allowing MAME to maximize the window seems to confuse the
	window management logic and/or libwnck for some reason.

	* src/gva-wnck.c (wnck_weak_notify_cb), (wnck_window_opened_cb),
	(gva_wnck_listen_for_new_window):
	Set the mouse cursor to busy until the game window appears.

2008-05-30  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac:
	Require libwnck-1.0 >= 2.16.0.
	TODO: Make this optional before releasing.

	* README:
	Mention libwnck as an optional dependency.

	* data/gnome-video-arcade.glade:
	Don't set a title in the audit results window.

	* docs/reference/Makefile.am:
	Add WNCK_CFLAGS to INCLUDES.
	Add WNCK_LIBS to GTKDOC_LIBS.
	Add gva-wnck.o to GTKDOC_LIBS.

	* docs/reference/gnome-video-arcade-docs.sgml:
	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation.

	* src/Makefile.am:
	Add gva-wnck.[ch].
	Add WNCK_CFLAGS to AM_CFLAGS.
	Add WNCK_LIBS to gnome_video_arcade_LDADD.

	* src/gva-db.c (gva_db_create_tables):
	Add a "window" table to hold game window geometry.

	* src/gva-db.c (gva_db_needs_rebuilt):
	Rebuild the database if the categories file changed.

	* src/gva-process.c (gva_process_get_pid):
	New function returns the process ID of a GvaProcess.

	* src/gva-wnck.c (gva_wnck_listen_for_new_window):
	New function implements "spatial" MAME windows using libwnck.

	* src/gva-ui.c (action_play_back_cb), (action_record_cb),
	(action_start_cb):
	Call gva_wnck_listen_for_new_window() immediately after
	successfully spawning a MAME process.

2008-05-28  Matthew Barnes  <mbarnes@redhat.com>

	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation.

	* src/gva-mame-common.c (gva_mame_get_config_value):
	* src/gva-mame-sdlmame.c (gva_mame_get_version),
	(gva_mame_get_total_supported):
	* src/gva-mame-xmame.c (gva_mame_get_version),
	(gva_mame_get_total_supported):
	Prevent passing a NULL string array to g_strv_length().

	* src/gva-util.c (gva_spawn_with_pipes):
	New convenience function spawns a process from a command line
	string and opens stdin/stdout/stderr pipes.

	* src/gva-process.c (gva_process_spawn):
	* src/gva-mame-process.c (gva_mame_process_spawn):
	Call gva_spawn_with_pipes() to actually spawn the process.

	* src/gva-mame-process.c (mame_process_exited):
	The old logic was never used, and was broken anyway.  Rewrite the
	method to simply emit a debugging message showing the exit status.

	* src/gva-mame-process.c (gva_mame_process_new):
	New function creates a new GvaMameProcess instance.

2008-05-27  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-mame-common.c (gva_mame_get_search_paths):
	Revert the previous commit.  It didn't work right.

	* src/main.c (main):
	The correct solution is to change our working directory to that
	which contains the MAME executable.  Documented the rationale in
	the code, since otherwise it seems like an odd thing to do.

2008-05-27  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac: Post-release version bump.

	* src/gva-mame-common.c (gva_mame_get_search_paths):
	Convert relative paths to absolute paths, using the location of
	the MAME executable as the base directory.  Should allow GNOME
	Video Arcade to work with the default SDLMAME configuration.

2008-05-25  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.6.1.1

	* src/gva-main.c (gva_main_get_last_selected_match):
	Fix a crash reported by Damion Manuel and Taylor Easum in the SF.net
	Help forum.  I didn't take into account the fact that the GConf key
	may not be set, in which case the string values will remain NULL.
	Rewrote the logic to handle that case.

	Unfortunately the bug is pretty severe and requires a new release.

2008-05-21  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac: Post-release version bump.

	* src/gva-db.c (db_parser_start_element_game):
	* src/gva-process.c (gva_process_spawn):
	Fix a couple memory leaks.

2008-05-17  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.6.1

	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation.

	* src/main.c (start):
	Remove the status bar logic.

	* src/gva-tree-view.c (gva_tree_view_update_status_bar):
	New function shows the MAME version and game count in the status
	bar of the main window.

	* src/gva-tree-view.c (gva_tree_view_init),
	(gva_tree_view_run_query):
	Call gva_tree_view_update_status_bar().

2008-05-17  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-tree-view.c (tree_view_show_popup_menu):
	* src/gva-ui.c (gva_ui_add_column_actions):
	The add/remove column menu items look better without quotes.

2008-05-17  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.ui:
	Add an "add-column" placeholder and a "remove-column" menu item to
	the popup menu.

	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation.

	* src/gva-column-manager.c (column_manager_hide_selected),
	(column_manager_show_selected):
	Just set the column visbility.  Signal callbacks will take care of
	updating the show/hide buttons and the toggle cell renderer.

	* src/gva-column-manager.c (column_manager_row_changed_cb):
	New "row-changed" signal handler updates the show/hide button
	sensitivity when the selected tree model row changes.

	* src/gva-column-manager.c (column_manager_notify_visible_cb):
	New "notify::visible" signal handler emits a "row-changed" signal
	when a game list column's visibility changes.

	* src/gva-column-manager.c (column_manager_update_view):
	Connect the new signal handlers mentioned above.

	* src/gva-tree-view.c (tree_view_show_popup_menu):
	Embed the selected game list column in the main tree view widget
	under the "popup-menu-column" key.
	Update the "remove-column" action's label and tooltip to reflect
	the selected game list column.

	* src/gva-tree-view.c (gva_tree_view_init):
	Call gva_ui_add_column_actions() after loading the columns.

	* src/gva-tree-view.c (gva_tree_view_button_press_event_cb),
	(gva_tree_view_popup_menu_cb):
	Pass the selected game list column to tree_view_show_popup_menu().

	* src/gva-ui.c (action_add_column_cb):
	Callback for any of the "add-column-xxx" actions.  Extracts the
	selected game list column via the "popup-menu-column" key in the
	tree view, moves the desired column after the selected column,
	and makes the desired column visible.

	* src/gva-ui.c (action_remove_column_cb):
	Callback for the "remove-column" action.  Extracts the selected
	game list column via the "popup-menu-column" key in the tree view,
	and makes the selected column invisible.

	* src/gva-ui.c (gva_ui_add_column_actions):
	Adds an "add-column-xxx" action for each of the columns in the
	given tree view, whether visible or invisible (where "xxx" is the
	column's name).  This is called during initialization of the main
	tree view, after the columns are loaded.

2008-05-11  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-game-store.c (gva_game_store_new_from_query):
	Use gtk_tree_store_set_valuesv() to cut model construction time
	almost in half.  On my machine, construction of the Available
	Games model (6255 rows) dropped from ~5 seconds to ~2.75 seconds.

2008-04-28  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac: Post-release version bump.

	* data/gnome-video-arcade.schemas:
	Add selected-match key.

	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation and alphabetize
	the sections.  Yes, I'm that anal.

	* src/gva-common.h:
	Add GVA_GCONF_SELECTED_MATCH_KEY.

	* src/gva-main.c (gva_main_init_search_completion):
	Add a "column name" column to the completion model.
	Always use enum values when referring to columns.

	* src/gva-main.c (gva_main_execute_search):
	New function handles all the high-level details of executing a
	search in the main window.  Note this function does not interact
	directly with the games database.  The actual database search is
	triggered by simply switching to or forcing a refresh on the
	Search Results view.

	* src/gva-main.c (gva_main_get_last_selected_match),
	(gva_main_set_last_selected_match):
	New functions get/set the new "selected-match" GConf key.
	The get function also validates the strings (somewhat) before
	returning them.

	* src/gva-main.c (gva_main_search_entry_activate_cb):
	Most of the logic here has been outsourced.  The function now
	just calls gva_main_set_last_selected_match(NULL, NULL) and
	gva_main_execute_search().

	* src/gva-main.c (main_entry_completion_match_selected_cb):
	Instead of copying the completion match to the search entry and
	activating it, save the matched text and associated column name
	to the new "selected-match" GConf key and execute a search.

	* src/gva-main.c (gva_main_get_last_search):
	Rename the function to gva_main_get_last_search_text().

	* src/gva-tree-view.c (tree_view_add_search_expression):
	New function adds an SQL "where" expression to a GString.  This
	used to reside inside gva_tree_view_update() but the logic is a
	bit more complicated now so it deserves its own function.

2008-04-19  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.6.0

	* src/gva-columns.c (columns_tooltip_input_players):
	New tooltip callback for the Players column.

2008-04-16  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	Add a couple more warning labels to the Technical tab.

	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation.

	* src/gva-columns.c (columns_driver_status_set_properties):
	Be more conservative about showing the error icon.  Only show it
	if the game doesn't work or if the protection is not emulated.

	* src/gva-columns.c (columns_tooltip_driver_status):
	* src/gva-properties.c (properties_update_status):
	Same as above.  Also, add stronger warnings for when we /do/ show
	the error icon.

	* src/gva-ui.h:
	Add more GVA_WIDGET_PROPERTIES_xxx widgets.

2008-04-15  Matthew Barnes  <mbarnes@redhat.com>

	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation.

	* src/gva-columns.c (columns_tooltip_driver_status):
	Finish the tooltip; make the icon smaller.

	* data/gnome-video-arcade.glade:
	* src/gva-properties.c (properties_update_status):
	Add a warning to the Technical tab if emulation is imperfect.
	It's meant to look the same as the 'Status' column tooltip.

	* src/gva-properties.c (properties_update_timeout_cb):
	We're piling a lot of work on the Properties window.  Add a short
	delay to the update to keep the tree view scrolling smoothly.

	* src/gva-ui.h:
	Add a bunch of GVA_WIDGET_PROPERITES_xxx_LABEL widgets.

2008-04-15  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-columns.c (columns_tooltip_driver_status):
	Start adding a fancy tooltip to the 'Status' column.
	Not done with it yet, just committing progress so far.

2008-04-14  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.schemas:
	Add properties-page key.

	* src/gva-common.h:
	Add GVA_GCONF_PROPERTIES_PAGE_KEY.

	* src/gva-properties.c (gva_properties_init):
	Bind the "properties-page" GConf key to the Properties notebook.

2008-04-14  Matthew Barnes  <mbarnes@redhat.com>

	* src/main.c (start):
	* src/gva-audit.c (audit_show_dialog):
	* src/gva-game-store.c (gva_game_store_new_from_query):
	* src/gva-tree-view.c (gva_tree_view_run_query):
	Avoid crashing when the application is closed while it's busy doing
	something.  This usually happens in places where we manually iterate
	GTK's main loop.  The user closes the main window, destroying it and
	taking most of the Glade-loaded widgets with it.  Then we return
	from some function and attempt to fetch a destroyed widget, which
	causes gva_ui_get_widget() to trip its non-NULL assertion.
	Fortunately we can avoid this scenario by checking the return value
	of gtk_main_iteration() or gtk_main_iteration_do(), which indicates
	whether the application is shutting down.

	* src/gva-mame-process.c (mame_process_check_for_error):
	Use GVA_ERROR_MAME instead of GVA_ERROR_SYSTEM.

2008-04-13  Matthew Barnes  <mbarnes@redhat.com>

	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation.

	* data/gnome-video-arcade.glade:
	* src/gva-properties.c (properties_update_bios):
	Add a BIOS section to the Technical Properties tab.

	* src/gva-properties.c (properties_update_cpu),
	(properties_update_sound), (properties_update_video):
	Hide the entire section when there are no rows to display.
	I've only actually seen this for sound, but might as well do it
	for all sections.

	* src/gva-ui.c:
	Remove the GTK_CHECK_VERSION(2,12,0) since we require it now.

	* src/gva-ui.h:
	Add a bunch of GVA_WIDGET_PROPERITES_xxx_VBOX widgets.
	Also add GVA_WIDGET_PROPERTIES_BIOS_LABEL.

2008-04-13  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-properties.c (properties_cpu_description),
	(properties_update_video):
	Some minor simplifications having read the MAME source code.

2008-04-13  Matthew Barnes  <mbarnes@redhat.com>

	** Add some basic information to the Technical Properties tab.

	* data/gnome-video-arcade.glade:
	Create an initial design for the Technical Properties tab.

	* src/gva-db.c (db_parser_start_element), (db_parser_end_element):
	Enable the 'chip' and 'display' table parsing routines.

	* src/gva-properties.c (properties_update_cpu),
	(properties_update_sound), (properties_update_video):
	New functions populate labels in the 'CPU', 'Sound', and 'Video'
	sections of the 'Technical' tab with hardware specifications for
	the selected game.  The data attempts to match what MAME shows
	on the initial screen when starting a game.

2008-04-12  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac:
	* Makefile.am:
	Add a --with-glade-catalog configure option that determines whether
	the Glade 3 catalog files get built and installed.  It used to be
	based on whether maintainer mode was enabled, but that proved too
	problematic.

2008-03-26  Matthew Barnes  <mbarnes@redhat.com>

	* docs/reference/gnome-video-arcade-sections.txt:
	Add GVA_GAME_STORE_COLUMN_BIOS to the developer documentation.

	* src/gva-columns.c:
	Add "BIOS" column that shows the name of the BIOS ROM set required
	for a game, if any.  (e.g. "Neo-Geo")

	* src/gva-db.c (SQL_CREATE_VIEW_AVAILABLE):
	Form a "bios" column in the available view by doing a left join
	on BIOS ROM sets (where isbios='yes').  This is getting to be a
	pretty complex SELECT statement.

	* src/gva-main.c (gva_main_search_query_tooltip_cb):
	* src/gva-tree-view (gva_tree_view_update):
	Add the "bios" column to the search criteria.
	Add "BIOS Name" to the search entry tooltip.

	* src/gva-game-store.c:
	* src/gva-game-store.h:
	Add GVA_GAME_STORE_COLUMN_BIOS.

2008-03-25  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-tree-view.c (gva_tree_view_query_tooltip_cb):
	Handle keyboard tooltips.  And just for my own reference,
	keyboard tooltips are activiated/deactivated with Ctrl+F1.

2008-03-25  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-db.c:
	Store category information directly in the database instead of
	dynamically looking it up in a GKeyFile each time it's needed.
	Profiling suggests user-defined database functions are expensive,
	and may be contributing to the performance issue when switching
	to a view with a large number of games.  Category information
	will be refreshed when the database is rebuilt.

2008-03-24  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-main.c (gva_main_search_entry_activate_cb):
	After searching, focus the tree view and select a row.

2008-03-23  Matthew Barnes  <mbarnes@redhat.com>

	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation.

	* src/gva-db.c (db_function_match):
	New function implements the SQLite MATCH operator.
	Calls gva_search_collate_key() on the operands and does a
	substring comparison.

	* src/gva-columns.c:
	Add a 'title' field to the column_info table so translated
	column titles can be looked up easily.

	* src/gva-columns.c (gva_columns_new_from_id):
	Assign column titles here instead of in the factory functions.

	* src/gva-columns.c (gva_columns_lookup_title):
	New function... self-explanatory.

	* src/gva-main.c (gva_main_init_search_completion):
	Add a collation key field to the completion model for better
	performance.  Use gva_columns_lookup_title() and get rid of
	the silly column title hash table.

	* src/gva-tree-view.c (tree_view_update):
	Use MATCH instead of LIKE for fuzzy comparisons.

	* src/gva-ui.c (action_search_cb):
	Emit a "changed" signal on the search entry to start the
	completion timeout.  The purpose is to show completions
	automatically when we show the search entry with preset
	text.

	* src/gva-util.c (gva_normalize_for_search):
	Rename the function to 'gva_search_collate_key'.

2008-03-22  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-db.c:
	* docs/reference/database-schema.xml:
	Support new display attributes in MAME 0.124: 'pixclock',
	'htotal', 'hbend', 'hbstart', 'vtotal', 'vbend' and 'vbstart'
	Also new display types: 'lcd' and 'unknown'

2008-03-22  Matthew Barnes  <mbarnes@redhat.com>

	* src/main.c (start):
	Call gva_main_init_search_completion() after ROMs are analyzed.

	* src/gva-main.c (gva_main_init_search_completion):
	New function adds autocompletion to the inline search entry.

	* src/gva-tree-view.c (tree_view_search_equal):
	Move normalizing logic to gva_normalize_for_search(), and
	normalize both the game title /and/ user input.

	* src/gva-util.c (gva_normalize_for_search):
	Normalizes a string for easier comparison with what a human is
	likely to type in an interactive search.

2008-03-21  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	Add an inline search interface to the main window.
	Remove the search dialog.

	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation.

	* src/Makefile.am:
	Remove gva-search.[ch]

	* src/main.c (main):
	Remove call to gva_search_init().

	* src/gva-columns.c (gva_columns_query_tooltip):
	* src/gva-mame-common.c (gva_mame_get_input_directory),
	(gva_mame_get_snapshot_directory), (gva_mame_get_state_directory):
	Document these functions.

	* src/gva-main.c:
	Move the logic from gva-search.c to here to support the new
	inline search interface.  Add appropriate signal handlers.

	* src/gva-search.c:
	* src/gva-search.h:
	Remove these files.

	* src/gva-ui.c (action_search_cb):
	Show and give focus to the inline search entry.

	* src/gva-ui.h:
	Add GVA_WIDGET_MAIN_SEARCH_ENTRY, GVA_WIDGET_MAIN_SEARCH_HBOX.
	Remove the old search dialog widgets.

	* src/gva-ui.c (view_radio_entries):
	Add accelerators to the view actions.

2008-03-20  Matthew Barnes  <mbarnes@redhat.com>

	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation.

	* src/gva-columns.c (columns_get_icon_name):
	Cache the scaled icon in a static hash table.
	This should make switching between views faster.

	* src/gva-mame-common.c (gva_mame_get_input_directory):
	* src/gva-util.c (gva_choose_inpname):
	New function caches the "input_directory" config value.

	* src/gva-mame-common.c (gva_mame_get_snapshot_directory):
	New function caches the "snapshot_directory" config value.

	* src/gva-mame-common.c (gva_mame_get_state_directory):
	New function caches the "state_directory" config value.

	* src/gva-mame-common.c (gva_mame_get_input_files):
	Use gva_mame_get_input_directory().

	* src/gva-mame-common.c (gva_mame_get_save_state_file):
	Use gva_mame_get_state_directory().

2008-03-16  Matthew Barnes  <mbarnes@redhat.com>

	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation.

	* src/gva-columns.c:
	Mess with the tooltip callback signature again.

	* src/gva-columns.c (columns_tooltip_summary):
	New tooltip callback for the Description, Manufacturer, and Year
	columns.  Displays a summary similar to the Properties window.

	* src/gva-columns.c (gva_columns_get_names_full):
	Add dependency: any of the "description", "manufacturer", or
	"year" columns pull in the other two.

	* src/gva-properties.c (properties_update_header):
	Check if strings are either NULL or empty.

2008-03-15  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac:
	Bump GTK+ requirement to 2.12 and GVA version to 0.6.0.

	* data/gnome-video-arcade.glade:
	Set "has_tooltip" property on main tree view to TRUE, and
	register a handler for the "query_tooltip" signal (see below).

	* src/gva-columns.c (columns_favorite_clicked_cb),
	(columns_comment_edited_cb):
	Remove workarounds for GTK+ < 2.12.0.

	* src/gva-columns.c (columns_tooltip_favorite):
	New tooltip callback for the Favorite column.

	* src/gva-columns.c (gva_columns_query_tooltip):
	New function configures a GtkTooltip for a given
	GtkTreeViewColumn and GtkTreePath.

	* src/gva-tree-view.c (gva_tree_view_query_tooltip_cb):
	New handler for "query-tooltip" signals on the main tree view.

2008-03-13  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-util.c (gva_get_monospace_font_name):
	Fallback to a default monospace font name if we can't get one
	from GConf (currently using "Monospace 10").

2008-03-13  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac: Post-release version bump.

	* README: List gnome-doc-utils as a dependency.

	* src/gva-columns.c:
	Add "isbios" column (not shown in game list).

	* src/gva-columns.c (gva_columns_get_names_full):
	Add column dependency: "name" pulls in "isbios"

	* src/gva-db.c:
	Add "isbios" field to the game database.
	Filter BIOS ROM sets from the "available" view.

	* src/gva-game-store.c:
	* src/gva-game-store.h:
	Add GVA_GAME_STORE_COLUMN_ISBIOS.

2008-03-01  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.5.6

	* help/C/gnome-video-arcade.xml:
	Remove <orgname class="corporation"> tags to satisfy DocBook 4.5
	validation (tried reverting to <corpname> but it didn't like that
	either).  Fix some other cryptic validation errors.

	* src/gva-columns.c (columns_driver_status_set_properties):
	Decided I like the stock "Apply" icon better than "emblem-default"
	for displaying "good" emulation status.

	* src/gva-utils.c (gva_help_display):
	Document this function.

2008-02-29  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-util.c (inpname_exists):
	Check for files with and without the ".inp" extension.
	xmame uses the extension, recent versions of sdlmame do not.

2008-02-25  Matthew Barnes  <mbarnes@redhat.com>

	* help/C/gnome-video-arcade.xml:
	Add a Troubleshooting section.

	* help/C/figures/gva_building_database.png:
	* help/C/figures/gva_column_preferences.png:
	* help/C/figures/gva_general_preferences.png:
	* help/C/figures/gva_main_window.png:
	* help/C/figures/gva_recorded_games.png:
	* help/C/figures/gva_search_window.png:
	Update the screenshots and add a couple new ones.

	* src/main.c (warn_if_no_roms):
	Call gva_help_display() if the user requests help.

	* src/gva-ui.c:
	Reword the "show-clones" option.

	* src/gva-ui.c (action_contents_cb):
	Just call gva_help_display().

	* src/gva-util.c (gva_help_display):
	Display the help file for GNOME Video Arcade at the given location.
	If help cannot be opened, displays an error dialog explaining why.

2008-02-23  Matthew Barnes  <mbarnes@redhat.com>

	* help/C/gnome-video-arcade.xml:
	Reword some parts.

	* src/gva-game-store.h (GvaGameStoreColumn):
	Document the enumeration values.

2008-02-22  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-db.c (db_function_getcategory):
	Silence "key not found" warnings.

	* src/gva-db.c (gva_db_is_older_than):
	New function compares a file was updated more recently than the
	games database.

	* src/gva-audit.c (gva_audit_detect_changes):
	Call gva_db_is_older_than() for each directory.

2008-02-04  Matthew Barnes  <mbarnes@redhat.com>

	* src/main.c (warn_if_no_roms), (start):
	Detect the absence of ROMs at startup and display a helpful
	dialog.  Still some things to do.  The Help button does not
	work and the troubleshooting section of the user docs does
	not exist.

2008-02-04  Matthew Barnes  <mbarnes@redhat.com>

	* docs/reference/database-schema.xml:
	* docs/reference/gnome-video-arcade-docs.sgml:
	Add an appendix to the developer documentation showing the
	game database schema in SQL notation.  Needs to be fleshed
	out more.

2008-02-04  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	Add a "show-clones" checkbox to the Preferences dialog.
	Reorganize the container widgets in the Preferences dialog to
	handle a second section ("Game List") in the General tab.

	* data/gnome-video-arcade.schemas:
	Add show-clones key.

	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation.

	* src/gva-common.h:
	Add GVA_GCONF_SHOW_CLONES_KEY.

	* src/main.c (start):
	* src/gva-main.c (gva_main_init):
	Desensitize the "show-clones" user preference until we've
	loaded the initial view.

	* src/gva-categories.c (gva_categories_init):
	* src/gva-history.c (history_file_open):
	If the program is not configured to show category information,
	emit an informational message saying so rather than a warning.
	We don't want to abort if we're running with fatal warnings.
	Same goes for history information.

	* src/gva-columns.c:
	Alter how we handle the Category column when the program is
	not configured to show category information.  Avoid causing
	any warnings on the terminal.

	* src/gva-preferences.c (gva_preferences_init):
	Wire up the "show-clones" user preference.

	* src/gva-preferences.c (gva_preferences_get_show_clones),
	(gva_preferences_set_show_clones):
	New functions get/set the "show-clones" user preference.

	* src/gva-properties.c (properties_update_history):
	Make this function a no-op if the program is not configured
	to show history information.  Doing it this way avoids having
	the compiler complain about the function being unused.

	* src/gva-properties.c (gva_properties_init):
	Hide the history page if the program is not configured to
	show history information.

	* src/gva-tree-view.c (gva_tree_view_update):
	Exclude cloned games from the database query if the user prefers
	not to see them ("show-clones" == FALSE).

	* src/gva-ui.h:
	Add GVA_WIDGET_PROPERTIES_NOTEBOOK.

	* src/gva-ui.h:
	* src/gva-ui.c:
	Add GVA_ACTION_SHOW_CLONES.  If the action is sensitive (i.e.
	we're not loading the initial value from GConf), force a tree
	view update.  GConfBridge handles the rest.

2008-01-27  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-categories.c (gva_categories_init):
	Handle Window INI-style comments in the category file.

2008-01-26  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac:
	Check for gnome-icon-theme >= 2.18.0.  The version corresponds to
	the introduction of the 'emblem-default' icon.

	* src/Makefile.am:
	* docs/reference/Makefile.am:
	Add GIT_CFLAGS and GIT_LIBS even though they are empty at this time.

2008-01-26  Matthew Barnes  <mbarnes@redhat.com>

	* README: List GConf as a dependency.

2008-01-12  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	Center the "Recorded Games" window over the main window.

2008-01-11  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac: Post-release version bump.

2008-01-11  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.5.5

	* data/gnome-video-arcade.glade:
	Don't show expanders in the main and play back tree views.

	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation.

	* src/main.c (start):
	Sensitize the "search" action after database construction.

	* src/gva-audit.c (gva_audit_detect_changes):
	Document this function.

	* src/gva-columns.c (columns_comment_edited_cb):
	New function gets called the user finishes editing a comment.
	Writes the new comment back into the tree model.

	* src/gva-columns.c (columns_time_set_properties):
	New function, formerly known as play_back_render_time().

	* src/gva-columns.c:
	Add "comment" and "time" columns.

	* src/gva-db.c:
	Add a "playback" table to the game database that remembers user
	comments for recorded games.  This table MUST survive a database
	rebuild!

	* src/gva-db.c (db_parser_bind_text):
	Improve error handling.

	* src/gva-db.c (gva_db_reset):
	Do NOT destroy the game database file.  Instead, drop all the
	tables that will be rebuilt (not including the "playback" table).

	* src/gva-db.c (gva_db_get_table):
	New function is a thin wrapper for sqlite3_get_table(), which
	is a convenient way to execute short queries.

	* src/gva-db.c (gva_db_set_error):
	Prefix SQLite error messages with "(SQL)".

	* src/gva-game-store.c:
	* src/gva-game-store.h:
	Add GVA_GAME_STORE_COLUMN_COMMENT.
	Add GVA_GAME_STORE_COLUMN_INODE.

	* src/gva-main.c:
	Desensitize the "search" action on startup.

	* src/gva-play-back.c (play_back_render_time):
	Move this function over to gva-columns.c.

	* src/gva-play-back.c (play_back_add_input_file):
	Fetch the user comment for a recorded game from the game database,
	and if that doesn't work just use the game title.  This is how new
	game recordings get picked up.  Also, write inode values to the
	tree model so we can retrieve them later.

	* src/gva-play-back.c (gva_play_back_init):
	Move the GtkTreeViewColumn configuration over to gva-columns.c, and
	just ask for the tree view columns using gva_columns_new_from_id().

	* src/gva-play-back.c (gva_play_back_window_hide_cb):
	New function saves the recorded game entries to the game database
	when the "Recorded Games" window is closed.

2008-01-08  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-mame-sdlmame.c (gva_mame_get_version),
	(gva_get_total_supported):
	* src/gva-mame-xmame.c (gva_mame_get_version),
	(gva_get_total_supported):
	Changed my mind about the caching.  Might be better suited for a
	MAME initialization function if I ever decide to add one.

	* src/main.c (start):
	* src/gva-audit.c (audit_data_new):
	* src/gva-db.c (gva_db_needs_rebuilt):
	Revert changes for gva_mame_get_version().

2008-01-08  Matthew Barnes  <mbarnes@redhat.com>

	Detecting fine-grained changes gets really hairy when dealing with
	split or merged ROM sets so I'm backing away from my "Quick Audit"
	idea and taking a simpler approach: if any of the directories in
	"rompath" or "samplepath" have been modified (i.e. the timestamps
	are more recent than the database timestamp), do a full audit.

	* src/main.c (start):
	Call gva_audit_detect_changes() instead of gva_quick_audit().
	If it returns TRUE, run a full ROM file audit.

	* src/gva-audit.c (gva_quick_audit):
	Revert this function and all related support functions.

	* src/gva-audit.c (gva_audit_detect_changes):
	New function compare the timestamp of the games database against
	the various ROM and sample directories.  Return TRUE if any of the
	directories have been updated since the last database modification.

	* src/gva-error.h:
	Revert GVA_ERROR_LIMIT.

	* src/gva-ui.c:
	Reword documentation for actions that present a window.

2008-01-06  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-error.h:
	Add GVA_ERROR_LIMIT.

	* src/gva-audit.c (gva_quick_audit):
	Return a boolean instead of GvaAuditResult.  If too many files
	have changed to proceed with the quick-audit, set the GError to
	GVA_ERROR_LIMIT and return FALSE.  Eliminates the need for the
	GvaAuditResult enumeration.

	* src/gva-main (start):
	Deal with gva_quick_audit()'s new semantics.

	* src/gva-ui.c:
	Add a tooltip for Help->Contents.

2008-01-06  Matthew Barnes  <mbarnes@redhat.com>

	* docs/reference/gnome-video-arcade-sections.txt:
	Add new symbols to the developer documentation.

	* src/main.c (start):
	If we're not rebuilding the game database, check for changed ROM
	or sample files and either do a quick or full audit, depending on
	the extent of the changes.

	* src/main.c (start):
	* src/gva-audit.c (gva_audit_save_errors):
	* src/gva-db.c (gva_db_needs_rebuilt):
	gva_mame_get_version() now returns a const string.

	* src/gva-audit.c (gva_quick_audit):
	New function (and a bunch of supporting private functions and
	refactoring work) detects new or changed ROM and sample files
	and tries to quickly verify them and update the game database.
	If the changes are too extensive for a quick update, it
	recommends a full audit.

	* src/gva-audit.c (gva_audit_roms):
	Call gva_mame_verify_all_roms() (renamed function).

	* src/gva-audit.c (gva_audit_samples):
	Call gva_mame_verify_all_samples() (renamed function).

	* src/gva-main.c (main_build_database_progress_cb):
	Use gva_main_progress_bar_set_fraction().

	* src/gva-main.c (gva_main_build_database):
	Break this into smaller pieces.  Do not show the progress bar.
	Do not change the mouse cursor.  Do not analyze ROMS.

	* src/gva-main.c (gva_main_analyze_roms):
	New function analyses ROM files, as gva_main_build_database()
	used to do.

	* src/gva-main.c (gva_main_progress_bar_show):
	New function shows the progress bar in the main window and changes
	the mouse cursor to busy, as gva_main_build_database() used to do.

	* src/gva-main.c (gva_main_progress_bar_hide):
	New function hides the progress bar in the main window and changes
	the mouse cursor to normal, as gva_main_build_database() used to do.

	* src/gva-main.c (gva_main_progress_bar_set_fraction):
	New function updates the main window's progress bar using a cached
	widget pointer for better performance.

	* src/gva-mame-common.c (gva_mame_command):
	Set process->error to NULL after propagating it.

	* src/gva-mame-common.c (gva_mame_get_search_paths):
	New function returns a configuration value as an ordered list
	of search paths.  Useful for keys like "rompath" and "samplepath".

	* src/gva-mame-common.c (gva_mame_verify_all_roms):
	Renamed from gva_mame_verify_roms().

	* src/gva-mame-common.c (gva_mame_verify_roms):
	New function (sort of) verifies an individual ROM set.

	* src/gva-mame-common.c (gva_mame_verify_all_samples):
	Renamed from gva_mame_verify_samples().

	* src/gva-mame-common.c (gva_mame_verify_samples):
	New function (sort of) verifies an individual sample set.

	* src/gva-mame-common.c (gva_mame_verify_parse):
	New function attempts to extract a status from a line of output
	from a "MAME -verifyroms" or "MAME -verifysamples" command.

	* src/gva-mame-sdlmame.c (gva_mame_get_path_sep):
	* src/gva-mame-xmame.c (gva_mame_get_path_sep):
	New function returns the delimiter used in search paths.

	* src/gva-mame-sdlmame.c (gva_mame_get_version),
	(gva_mame_get_total_supported):
	* src/gva-mame-xmame.c (gva_mame_get_version),
	(gva_mame_get_total_supported):
	If successful, cache the result for subsequent calls.

2008-01-03  Matthew Barnes  <mbarnes@redhat.com>

	* Update copyright notices on source files.

2007-12-28  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-mame-common.c (gva_mame_has_config_value):
	Remove the assertion and make the logic more forgiving.

2007-12-28  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac: Post-release version bump.

2007-12-27  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.5.4

2007-12-24  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-audit.c (audit_show_dialog):
	* src/gva-main.c (gva_main_init):
	* src/gva-play-back.c (gva_play_back_show):
	* src/gva-ui.c (action_preferences_cb), (action_properties_cb),
	(action_search_cb):
	Use gtk_window_present() instead of gtk_widget_show().

2007-12-22  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	Add some helpful text to the search dialog.

2007-12-16  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-util.c (gva_get_debug_flags):
	Don't pass a NULL string to g_parse_debug_string().

2007-12-10  Matthew Barnes  <mbarnes@redhat.com>

	* README:
	Update the build instructions.

	* configure.ac:
	Add a --with-category-file option.

	* data/gnome-video-arcade.desktop.in:
	Change the category from ArcadeGame to Emulator.

	* docs/reference:
	Update developer documentation.

	* src/Makefile.am:
	Add gva-categories.[ch].

	* src/gva-audit.c (audit_exit):
	Don't delete unavailable games from the database.
	Retaining that information might prove useful in the future.

	* src/gva-categories.c:
	* src/gva-categories.h:
	New source files parse a catver.ini file.

	* src/gva-columns.c:
	Add a "Category" column (if CATEGORY_FILE is defined).

	* src/gva-db.c (gva_db_init):
	Print debug messages when the GVA_DEBUG_SQL flag is set.

	* src/gva-db.c (db_create_tables):
	Create a database view of available games, which also provides
	virtual columns "category" and "favorite".  Use this view when
	querying the database for game information.

	* src/gva-db.c (db_function_getcategory):
	Callback for database function getcategory().

	* src/gva-game-store.c:
	* src/gva-game-store.h:
	Add GVA_GAME_STORE_COLUMN_CATEGORY.

	* src/gva-history.c (gva_history_init):
	Fix some mistakes in the documentation.

	* src/gva-mame-process.c (gva_mame_process_spawn):
	Print debug messages when the GVA_DEBUG_MAME flag is set.

	* src/gva-properties.c:
	Select database rows from the "available" view.

	* src/gva-tree-view.c (gva_tree_view_update):
	Simplify the "Favorite Games" search expression.
	Add "category" to the "Search Results" search expression.

	* src/gva-tree-view.c (gva_tree_view_run_query):
	Select database rows from the "available" view.
	No need to special-case the "favorite" column anymore.

	* src/gva-util.c (gva_get_debug_flags):
	New function parses the GVA_DEBUG environment variable.

2007-12-03  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac: Post-release version bump.

2007-12-03  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.5.3

2007-12-03  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac:
	Rework how we find the MAME program.  The problem is some distros
	install sdlmame or xmame as /usr/bin/mame, and our configure script
	cannot handle that because:

	  a) We place requirements on the name of the MAME binary.

	  b) Defining "MAME=/usr/bin/mame" does not tell us which
	     MAME backend to compile.

	The solution is to specify program location using either an XMAME
	or SDLMAME environment variable, instead of just MAME.  This tells
	us both program location and which MAME backend to compile.

	* README: Update the build instructions.

2007-11-17  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-column-manager.c (column_manager_init):
	Use a GtkVButtonBox instead of a GtkVBox to hold the buttons.
	Eliminates the need for a GtkAlignment.

2007-11-14  Matthew Barnes  <mbarnes@redhat.com>

	Remove trailing whitespace from source code via
	$ find -name "*.[ch]" -exec sed -ie 's/[ ^t]*//' {} \;

2007-11-08  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-columns.c:
	* src/gva-history.c:
	Sparse warning cleanups.

2007-11-06  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac: Post-release version bump.

2007-11-06  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.5.2

	Remember the previous filename used to save audit results, and
	suggest that again next time.

	* data/gnome-video-arcade.glade:
	Increase the height of the audit results windows.

	* data/gnome-video-arcade.schemas:
	Add error-file key.

	* src/gva-common.h:
	Add GVA_GCONF_ERROR_FILE_KEY.

	* src/gva-audit.c (audit_run_save_dialog):
	Move the save dialog logic here from action_save_errors_cb().
	It was getting too complicated for an action handler.

	* src/gva-audit.c (gva_audit_save_error):
	Remove the filename argument; it's all self-contained now.

	* src/gva-tree-view.c (gva_tree_view_run_query):
	Reset the tree view search column each time a new model is loaded.
	Fixes a common crash when using the interactive search.

	* src/gva-ui.c (action_save_errors_cb):
	Move all the save dialog logic to audit_run_save_dialog().
	Just call gva_audit_save_error() now.

2007-11-05  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	* src/gva-audit.c:
	* src/gva-audit.h:
	Finish implementing the audit results dialog.

	* src/main.c (main):
	Call gva_audit_init().

	* src/gva-ui.h:
	* src/gva-ui.c:
	Define WIDGET macros for audit window.
	Add GVA_ACTION_SAVE_ERRORS, which displays a "Save As" dialog and
	calls gva_audit_save_errors().

2007-11-05  Matthew Barnes  <mbarnes@redhat.com>

	* src/Makefile.am:
	Add gva-audit.[ch].

	* src/gva-audit.h:
	* src/gva-audit.c:
	New source files for auditing ROM and sample sets.

	* src/gva-main.c (gva_main_build_database):
	Call gva_audit_roms() and gva_audit_samples().

	* src/gva-db.c (gva_db_verify_romsets), (gva_db_verify_samplesets),
	(db_verify_read), (db_verify_foreach), (db_verify_exit),
	(db_verify_string_free):
	* src/gva-mame-common.c (mame_verify_read), (mame_verify_exit):
	Move these functions to gva-audit.c.

	* src/gva-game-store.h:
	* src/gva-game-store.c:
	Inherit from GtkTreeStore instead of GtkListStore.

	* src/gva-play-back.c: Adapt.
	* src/gva-ui.c: Adapt.

	* data/gnome-video-arcade.glade:
	Early prototype for an audit results dialog.

	* docs/reference:
	Update developer documentation.

2007-10-27  Matthew Barnes  <mbarnes@redhat.com>

	* src/gconf-bridge.c:
	Use dashes instead of underscores in GConf key names.

2007-10-27  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac: Post-release version bump.

2007-10-25  Matthew Barnes  <mbarnes@redhat.com>

	NEWS: Update for 0.5.1

	These changes fix a deadlock condition that occurred when running
	--verifyroms on sdlmame versions 0.114 and earlier, which printed
	progress messages on stderr.  The GvaProcess read logic would get
	stuck reading these progress messages, causing the stdout pipe to
	overflow.  The child process would then block in a write() call
	to stdout, and we would be blocked in a read() call to stderr.

	* src/gva-mame-common.c (gva_mame_verify_roms),
	(gva_mame_verify_samples):
	Bump the prioritiy to G_PRIORITY_DEFAULT_IDLE, since these
	tasks no longer run in the background during XML parsing.

	* src/gva-process.c (process_read_line):
	New function reads a line from the GIOChannel and appends it to the
	input queue.  Replaces process_data_ready().

	* src/gva-process.c (process_stdout_ready):
	Call process_read_line() for as long as the G_IO_IN condition is set.
	The looping is a performance enhancement for XML parsing.

	* src/gva-process.c (process_stderr_ready):
	Call process_read_line() once if the G_IO_IN condition is set.

2007-10-20  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-columns.c (columns_favorite_clicked_cb):
	Use gtk_tree_view_column_get_tree_view(), if available.

	* src/gva-ui.c (action_about_cb):
	Fix the program name when using GTK+ 2.12.

2007-10-17  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.5.0

	* README:
	Talk about new package requirements.
	Reword some parts now that we have a user manual.

	* configure.ac:
	Add a --with-gnome option.

	* Makefile.am:
	Don't distribute the m4 directory.

	* docs/reference/Makefile.am:
	Add flags for linking to libgnomeui.

	* help/C/gnome-video-arcade.xml:
	Fix some validation errors.

	* src/Makefile.am:
	Add flags for linking to libgnomeui.

	* src/main.c (main):
	Call gnome_program_init() if we are linking to GNOME libraries,
	otherwise call gtk_init_with_args().

	* src/gva-main.c (gva_main_init):
	Desensitize GVA_ACTION_CONTENTS if we are NOT linking to GNOME
	libraries.

	* src/gva-ui.c (action_contents_cb):
	Call gnome_help_display() if we are linking to GNOME libraries,
	otherwise do nothing (should be desensitized anyway).

2007-10-16  Matthew Barnes  <mbarnes@redhat.com>

	* help/C/figures/gva_recorded_games.png:
	* help/C/figures/gva_search_window.png:
	* help/C/gnome-video-arcade.xml:
	* help/C/Makefile.am:
	Finish the user documentation (first draft, anyway).

2007-10-15  Matthew Barnes  <mbarnes@redhat.com>

	* help/C/gnome-video-arcade.xml:
	Start on the "Usage" section of the user documentation.

2007-10-14  Matthew Barnes  <mbarnes@redhat.com>

	* help/C/figures/gva_building_database.png
	* help/C/figures/gva_main_window.png
	* help/C/gnome-video-arcade.xml
	* help/Makefile.am:
	Finish the "Getting Started" section of the user documentation.

2007-10-13  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-history.c (gva_history_lookup):
	Recent revisions of history.dat have added lines containing an
	"Edit this entry at Arcade-History.com" HTML link between the $info
	and $bio lines.  These new lines also start with '$', so modify the
	parsing logic to ignore any lines starting with '$' that are not
	$info or $end markers.  (Previously we were just checking for $bio
	markers, so the raw HTML code got displayed in the UI.)

	Perhaps in a future version we could actually display these links
	as clickable widgets or text.

2007-10-13  Matthew Barnes  <mbarnes@redhat.com>

	* AUTHORS: Add myself.

	* src/gva-cell-renderer-pixbuf.h:
	* src/gva-column-manager.h:
	* src/gva-db.h:
	* src/gva-game-store.h:
	* src/gva-mame-process.h:
	* src/gva-mame.h:
	* src/gva-process.h:
	Finish developer documentation (100% coverage).

2007-10-13  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-db.c:
	* docs/reference:
	Add more developer documentation (94% coverage).

	* configure.ac:
	* Makefile.am:
	* help/C/gnome-video-arcade.xml:
	* help/C/legal.xml:
	* help/gnome-video-arcade.omf.in:
	Set up a gnome-doc-utils framework and begin writing user
	documentation for Yelp.

	* src/gva-columns (gva_columns_load):
	Fall back to the default columns if the visible column list in
	GConf is empty to ensure that *something* gets displayed at startup.

	* src/main.c:
	* src/gva-common.h:
	* docs/gnome-video-arcade.1:
	Add --inspect=NAME command-line option.
	Prints the value of the given MAME configuration key and exits.

	* src/gva-main.c (gva_main_init):
	Desensitize GVA_ACTION_CONTENTS for now.  Making this work is going
	to require linking against libgnome, which is unfortunate.  I plan to
	make it optional by providing a --without-help configure option, which
	would desensitize GVA_ACTION_CONTENTS as I'm doing now.

2007-10-10  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-error.h:
	* src/gva-game-store.c:
	* src/gva-mame-common.c:
	* src/gva-mame-common.h:
	* src/gva-mame.h:
	* src/gva-search.c:
	* src/gva-tree-view.c:
	* src/gva-util.c:
	Add more developer documentation (88% coverage).

2007-10-10  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-game-store.c:
	* src/gva-mame-process.c:
	* src/gva-process.c:
	* src/gva-util.c:
	* docs/reference:
	Add more developer documentation (79% coverage).

2007-10-08  Matthew Barnes  <mbarnes@redhat.com>

	Revert the previous changes.  I ran into too many complications
	trying to get cursor movement from the Properties window to work
	right.  Maybe try again at some later date.

	* docs/Makefile.am:
	* docs/gnome-video-arcade.1:
	Add a manual page.

2007-10-07  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	Add a new check button in the Preferences window for grouping
	cloned games underneath the original game in the main window.
	Doesn't do anything quite yet.

	* data/gnome-video-arcade.schemas:
	Add group-clones key.

	* docs/reference:
	Add docs for new symbols.

	* src/gva-common.h:
	Add GVA_GCONF_GROUP_CLONES_KEY.

	* src/gva-columns.c:
	Add a "Clone Of" column.

	* src/gva-preferences.c (gva_preferences_init):
	Wire up the "group-clones" action, widget, and GConf key.

	* src/gva-preferences.c (gva_preferences_get_group_clones),
	(gva_preferences_set_group_clones):
	New functions for getting and setting the "group-clones" user
	preference.

	* src/gva-ui.h:
	Add GVA_ACTION_GROUP_CLONES and GVA_WIDGET_PREFERENCES_GROUP_CLONES.

	* src/gva-ui.c:
	Define a GtkToggleAction named "group-clones".

2007-09-28  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	Some minor UI tweaks.

2007-09-21  Matthew Barnes  <mbarnes@redhat.com>

	* src/Makefile.am:
	Replace -Werror with -Wall (SF bug #1799564).

	* src/main.c:
	* src/gva-columns.c:
	* src/gva-db.c:
	* src/gva-game-store.c:
	* src/gva-main.c:
	* src/gva-mame-common.c:
	* src/gva-properties.c:
	* src/gva-tree-view.c:
	* src/gva-ui.c:
	* src/gva-util.c:
	Fix a bunch of compiler warnings caught by -Wall.  Most of them
	were just unused variables or missing #includes.

2007-09-20  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.4.5.1

	* src/gva-columns.c (columns_driver_status_set_properties):
	Use "emblem-default" for working games (status == "good").

2007-09-20  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-db.c (db_parser_start_element):
	Parse <input> elements to make the Players column work again.

2007-09-20  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-ui.c:
	Make Ctrl-P an accelerator for Properties.

2007-09-20  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-db.c (db_parser_start_element):
	Parse <driver> elements to make the Status column work again.

2007-09-18  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.4.5

	* docs/reference:
	Add docs for new functions.

	* src/main.c (start):
	Adapt to new gva_main_build_database() behavior.

	* src/gva-db.c (gva_db_verify_romsets), (gva_db_verify_samplesets):
	New functions separate the verification phase of the game database
	construction from the XML parsing phase so they can be serialized.

	* src/gva-db.c (db_parser_start_element), (gva_db_parser_end_element):
	Skip over unused elements to speed up XML parsing.

	* src/gva-db.c (db_parser_end_element_game):
	Call gva_process_inc_progress() instead of gva_process_set_progress()
	so that we don't have to maintain our own progress counter.

	* src/gva-process.c (gva_process_inc_progress):
	New function increments the progress property.

	* src/gva-main (gva_main_build_database):
	This is now a *synchronous* function that more accurately reports
	database construction progress.  Construction is now broken into
	two separate phases -- XML parsing and ROM verification -- and the
	status and progress bars are updated accordingly for each phase.

2007-09-18  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-columns.c:
	Add a "Status" column showing a warning or error symbol as
	described below.  Putting an icon next to the game title is
	too distracting, but at least now there's infrastructure for
	doing fancy things like that.

2007-09-18  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-search.c:
	Allow an empty search entry to clear the Search Results view.

2007-09-18  Matthew Barnes  <mbarnes@redhat.com>

	* docs/reference:
	Add docs for gva_columns_get_names_full().

	* src/gva-columns.c:
	Add an icon next to the game title indicating if emulation of the
	game has known issues.  Use a warning symbol for minor issues and
	an error symbol for major issues.

	* src/gva-columns.c (gva_columns_get_names_full):
	New function returns a list of tree view column names from the
	given GtkTreeView, plus any additional column names from the game
	database necessary to render the tree view cells.

	* src/gva-tree-view.c (gva_tree_view_run_query):
	Call gva_columns_get_names_full().

2007-09-18  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-tree-view.c (gva_tree_view_init):
	Make searching work again; this broke at some point.

	* src/gva-tree-view.c (gva_tree_view_update):
	Tinker with the search query, add 'sourcefile' field.

2007-09-18  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-columns.c:
	Add a "Driver" column.

	* src/gva-game-store.c (game_store_compare):
	General-purpose sort function for any column.
	Falls back to default sort column if values are equal.

	* src/gva-game-store.c (game_store_description_compare),
	(game_store_time_compare): Removed.

	* src/gva-game-store.c (game_store_constructor):
	Register a sort function for all columns.

2007-09-16  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-mame-common.c (gva_mame_playback_game):
	Make playback work with SDLMAME.

2007-09-15  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.4.4

	* data/gnome-video-arcade.glade:
	Simplify the search window for basic searching.

	* data/gnome-video-arcade.schemas:
	Add search key.

	* docs/reference/gnome-video-arcade-docs.sgml:
	* docs/reference/gnome-video-arcade-sections.txt:
	Add search documentation.

	* src/Makefile.am:
	Add gva-search.[ch].

	* src/main.c (main):
	Call gva_search_init().

	* src/gva-common.h:
	Add GVA_GCONF_SEARCH_KEY.

	* src/gva-search.[ch]:
	New source files implement the search window.

	* src/gva-tree-view.c (gva_tree_view_update):
	Build a query for the "Search Results" view.

	* src/gva-ui.h:
	Add GVA_WIDGET_SEARCH_ENTRY and GVA_WIDGET_SEARCH_FIND_BUTTON.

2007-09-15  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-columns.c:
	Add a "Players" column.

2007-09-01  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.4.3

	* src/main.c:
	* src/gva-common.h:
	Add --version command-line option.
	Prints the program version and exits.

2007-09-01  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-tree-view.c (gva_tree_view_run_query):
	Resize the columns after setting a new tree model.

2007-09-01  Matthew Barnes  <mbarnes@redhat.com>

	* Add some more developer documentation.

2007-08-31  Matthew Barnes  <mbarnes@redhat.com>

	* src/main.c (start):
	Bind to "selected-view" GConf key after database is built.

	* src/gva-main (gva_main_init):
	Move "selected-view" GConf key binding to start().

2007-08-30  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-tree-view.c (gva_tree_view_run_query):
	Leave the tree view insensitive if the query comes back empty.

2007-08-30  Matthew Barnes  <mbarnes@redhat.com>

	* intltool-extract.in:
	* intltool-update.in:
	Upgrade to intltool 0.36.

	* docs/reference/Makefile.am:
	Add gconf-bridge.o to GTKDOC_LIBS.

	* docs/reference/gnome-video-arcade-sections.txt:
	Add symbols from gnome-video-arcade-unused.txt.

	* src/gva-main.c (gva_main_init):
	Bind to "selected-view" GConf key after main window is realized.

	* src/gva-tree-view.c (gva_tree_view_init):
	Move "selected-view" GConf key binding to gva_main_init().

2007-08-22  Matthew Barnes  <mbarnes@redhat.com>

	* Embed gconf-bridge into GNOME Video Arcade rather than
	  requiring it as an external dependency.  Some GNU/Linux
	  distros (e.g. Fedora) do not provide libgconf-bridge.

	* configure.ac:
	Revert previous changes.

	* data/gnome-video-arcade.glade:
	Hide the main window until we've initialized it.

	* data/gnome-video-arcade.schemas:
	Fix some typos.

	* docs/reference/Makefile.am:
	Revert previous changes and ignore gconf-bridge.h.

	* src/Makefile.am:
	Revert previous changes and add gconf-bridge.[ch] to SOURCES.

	* src/gconf-bridge.[ch]:
	New source files ripped from libgconf-bridge.

	* src/gva-main.c (gva_main_init):
	Show the window after initialization is complete.

2007-08-22  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac:
	Check for libgconf-bridge.

	* data/gnome-video-arcade.glade:
	Prototype a search window; not yet working.

	* data/gnome-video-arcade.schemas:
	Add window-height, window-maximized, and window-width keys.

	* src/Makefile.am:
	* docs/reference/Makefile.am:
	Add @GCONF_BRIDGE_CFLAGS@ and @GCONF_BRIDGE_LIBS@.

	* src/main.c (start):
	Simplify the "force a tree view update" logic.

	* src/gva-common.h:
	#include <libgconf-bridge/gconf-bridge.h>
	Add GVA_GCONF_WINDOW_PREFIX.

	* src/gva-main.c (gva_main):
	Use GConfBridge to remember main window size.

	* src/gva-preferences.c (gva_preferences_init):
	Use GConfBridge to sync GConf keys with toggle actions.

	* src/gva-preferences.c (gva_preferences_get_auto_save),
	(gva_preferences_set_auto_save), (gva_preferences_get_full_screen),
	(gva_preferences_set_full_screen):
	Just get/set the toggle action's checked state.
	Changes will get propagated to GConf automatically.

	* src/gva-tree-view.c (gva_tree_view_init):
	Use GConfBridge to sync GConf "selected-view" key with radio action.

	* src/gva-tree-view.c (gva_tree_view_get_last_selected_view),
	(gva_tree_view_set_last_selected_view):
	Remove these functions; GConfBridge does the work for us.

	* src/gva-ui.c (action_auto_save_cb), (action_full_screen_cb):
	Remove these callbacks; nothing for them to do now.

	* src/gva-ui.h:
	Add GVA_ACTION_SEARCH and GVA_WIDGET_SEARCH_WINDOW.

	* src/gva-ui.c (action_search_cb):
	Show a prototype, non-working search window.

2007-08-13  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-db.c:
	Parse the rest of the XML elements.

2007-08-07  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac:
	Don't need to check for pkg-config.

	* maint/Makefile.am:
	Install a widget icon for Glade.
	Use $(PKG_CONFIG) instead of $(PKGCONFIG).

	* maint/widget-gva-column-manager.png:
	GvaColumnManager widget icon for Glade.

2007-08-02  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.4.2

	* README: Mention --enable-gtk-doc.

	* Makefile.am:
	Distcheck should enable Gtk-Doc.

	* src/gva-error.[ch]:
	* src/gva-tree-view.c:
	Document this stuff.

2007-08-02  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	Connect to some of the tree view signals.

	* docs/reference/gnome-video-arcade-sections.txt:
	* src/gva-tree-view.h:
	Add tree view signal handlers to Gtk-Doc output.

	* src/gva-columns.c (gva_columns_load):
	Block "columns-changed" signals while loading columns.

	* src/gva-columns.c (gva_columns_save):
	Abort the save if the tree view is being destroyed.

	* src/gva-tree-view.c:
	Fix a crash when pressing the context menu _keyboard_ button.
	Expose signal handlers so Glade can auto-connect them.
	Document some of the public functions.

2007-08-01  Matthew Barnes  <mbarnes@redhat.com>

	* INSTALL:
	Updated instructions from automake 1.10.

	* configure.ac:
	* Makefile.am:
	Activate the new "maint" directory when in maintainer mode.

	* data/gnome-video-arcade.glade:
	* src/gva-preferences.c:
	Load the GvaColumnManager directly from the Glade XML file.

	* src/gva-column-manager.c:
	Allow the "managed-view" property to be set at any time.

	* src/gva-ui.h:
	No longer need access to "preferences-columns-inner-vbox".

	* src/gva-ui.c (gva_ui_init):
	Register custom widgets with libglade.
	Let libglade know that we provide the "gva" library.

	* maint/Makefile.am:
	Installs a Glade widget plugin for GNOME Video Arcade.
	Only builds in maintainer mode.

	* maint/gva.xml:
	Glade catalog file for custom GNOME Video Arcade widgets.

2007-07-31  Matthew Barnes  <mbarnes@redhat.com>

	* docs/reference/gnome-video-arcade-sections.txt:
	Don't list GVA_WIDGET_* symbols in the Reference Manual.

	* src/gva-ui.c:
	Document the actions.

2007-07-30  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac:
	Bump libglade requirement from 2.0.0 to 2.6.0.

	* data/gnome-video-arcade.glade:
	Specify signal handlers for various widgets.

	* src/Makefile.am:
	Add linker flag -export-dynamic so that libglade can find
	the signal handler functions when it auto-connects signals.

	* src/gva-ui (gva_ui_init):
	Call glade_xml_signal_autoconnect().

	* src/gva-main.c (gva_main_init):
	* src/gva-play-back.c (gva_play_back_init):
	* src/gva-preferences.c (gva_preferences_init):
	* src/gva-properties.c (gva_properties_init):
	Remove explicit connection of (most) signals and let libglade
	auto-connect them at startup.
	Document the new public signal handler functions.

2007-07-30  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-db.c (db_parser_exit):
	Commit the transaction *after* verify results are inserted.

	* src/gva-process.c:
	Add a "priority" property (default: G_PRIORITY_DEFAULT_IDLE).
	Add I/O watches at the requested priority.

	* src/gva-process.c (gva_process_new), (gva_process_spawn):
	* src/gva-mame-process.c (gva_mame_process_spawn):
	Add a "priority" parameter.

	* src/gva-mame-common (gva_mame_command), (gva_mame_list_xml):
	Spawn the MAME process at G_PRIORITY_DEFAULT_IDLE.

	* src/gva-mame-common (gva_mame_verify_roms),
	(gva_mame_verify_samples), (gva_mame_run_game),
	(gva_mame_record_game), (gva_mame_playback_game):
	Spawn the MAME process at G_PRIORITY_LOW.

2007-07-29  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-db.c (gva_db_build):
	Start a database transaction.

	* src/gva-db.c (db_parser_exit):
	Commit the transaction if no error occurred, otherwise rollback.

	* src/gva-db.c (gva_db_transaction_begin),
	(gva_db_transaction_commit), (gva_db_transaction_rollback):
	New functions are pretty self-explanatory.

	* src/gva-process.c (process_data_ready):
	Keep on reading if there's more to be read.

	* src/main.c (main):
	Invoke start() by way of gtk_init_add() instead of g_idle_add().

2007-07-29  Matthew Barnes  <mbarnes@redhat.com>

	* Add some more developer documentation.
	* Move section documentation to header files.

	* src/gva-db.c (gva_db_get_filename):
	Call gva_get_user_data_dir().
	Move SQLite database file to
	${user_data_dir}/applications/${package}/games.db.

	* src/gva-util.c (gva_get_user_data_dir):
	New function returns the user-specific data directory for this
	application.

2007-07-26  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac:
	* Makefile.am:
	* docs/*:
	Skeletal developer documentation generated by GTK-Doc.

	* src/main.c:
	Move command-line option variables to gva-util.c.

2007-07-24  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.4.1

	* data/gnome-video-arcade.glade:
	Placeholder labels don't need to be translated.

	* src/main.c (main):
	Fix gettext initialization.

	* src/gva-ui.c (gva_ui_init):
	Set translation domain on the GtkActionGroup.

2007-07-23  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.4

	* data/gnome-video-arcade.schema:
	Fix default value for "sort-column" key.

	* src/main.c:
	* src/gva-common.h:
	Add --which-emulator command-line option.
	Prints the emulator pathname (a.k.a. MAME_PROGRAM) and exits.

	* src/gva-column-manager.c (column_manager_row_deleted_cb):
	Select the moved row after drag-and-drop.

	* src/gva-column-manager.c (column_manager_selection_changed_cb):
	Don't desensitize the buttons if nothing is selected; it screws up
	the widget state of the "Move Up" / "Move Down" buttons.

	* src/gva-columns.c (columns_sampleset_set_properties):
	Check for both NULL and empty sampleset strings.

	* src/gva-columns.c (gva_columns_load):
	Improve the migration logic.

	* src/gva-columns.c (gva_columns_get_selected):
	Remove this function.

	* src/gva-game-store.c (gva_game_store_new_from_query):
	Check for NULL result from sqlite3_column_text().

	* src/gva-tree-view.c (gva_tree_view_run_query):
	Refactor to not use gva_columns_get_selected().

2007-07-23  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	* src/gva-preferences.c:
	Use a GvaColumnManager widget for selecting columns.
	Unfortunately this widget can't be directly loaded with glade.

	* data/gnome-video-arcade.schemas:
	Add "all-columns" key.

	* src/Makefile.am:
	Add gva-column-manager.[ch].

	* src/gva-common.h:
	Add GVA_GCONF_ALL_COLUMNS_KEY.

	* src/gva-column-manager.[ch]:
	New source files implement a GtkTreeViewColumn chooser widget.
	Allows columns to be rearranged and their visiblity toggled.

	* src/gva-columns.c:
	Add columns for "manufacturer", "name", and "year".

	* src/gva-columns.c (gva_columns_load), (gva_columns_save):
	Rewrite the logic to utilize the new GConf key.

	* src/gva-columns.c (gva_columns_get_names):
	New function extracts column names from a GtkTreeView.

	* src/gva-ui.h:
	Remove widgets we no longer need direct access to.

2007-07-21  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	* src/gva-preferences.c:
	Add a new "columns" page to the Preferences window that allows
	you to customize the order and visibility of columns in the main
	window.  Visibility is not yet saved in GConf.

	* src/gva-game-store.c:
	Remove unused signals.

	* src/gva-process.c (process_set_property),
	(gva_process_get_progress), (gva_process_set_progress):
	Give the get/set functions direct access to the progress value.
	Call gva_process_set_progress() when setting the "progress" property.

	* src/gva-properties.c (gva_properties_init):
	* src/gva-tree-view.c (tree_view_selection_changed_cb):
	* src/gva-ui.[ch]:
	Rename the "go-back" and "go-forward" actions to "previous-game"
	and "next-game" (respectively).

	* src/gva-tree-view.c (tree_view_columns_changed_cb):
	Stop the signal emission if the tree view is being destroyed.

	* src/gva-ui.h:
	Ditch the "GW" macro; widget names are getting too long.

2007-07-20  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-db.c:
	Add CHECK constraints to the table definitions.

	* src/gva-db.c (db_parser_bind_text):
	Take a sqlite3_stmt argument instead of ParserData.

	* src/gva-db.c (db_parser_read):
	Kill the process if an error occurs.

	* src/gva-mame-process.c (mame_process_check_for_error):
	Duplicate the string on the stack.

	* src/gva-properties.c (properties_update_header):
	Show the manufacturer and year the way MAME does.

	* src/gva-ui.c (action_about_cb):
	Monkey with the About dialog comment again.

2007-07-19  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac:
	Locate the MAME program and choose the appropriate backend.

	* src/Makefile.am:
	Distribute both MAME backends but only compile one.

	* src/gva-columns.c:
	* src/gva-db.c:
	* src/gva-game-store.[ch]:
	Recent MAME versions have changed the format of display and
	control-related XML data.  Just drop those columns from the
	database for now, until I can sort this out.

	* src/gva-error.h:
	Rename GVA_ERROR_XMAME to GVA_ERROR_MAME.

	* src/gva-main.c (main_build_database_process_cb):
	Clamp the fraction value between 0.0 and 1.0.

	* src/gva-preference.c (gva_preference_init):
	Check for both -fullscreen and -window options.

	* src/gva-mame-common.c (gva_mame_has_config_value):
	Suppress warnings about unknown configuration keys.

	* src/gva-mame-common.c (mame_verify_read):
	Simpler implementation using strtok().

	* src/gva-mame-common.c (gva_mame_verify_roms):
	Renamed function now invokes "-verifyroms".  Support for
	"-verifyromsets" was dropped in recent MAME versions.

	* src/gva-mame-common.c (gva_mame_verify_samples):
	Renamed function now invokes "-verifysamples".  Support for
	"-verifysamplesets" was dropped in recent MAME versions.

	* src/gva-mame-common.c (gva_mame_run_game), (gva_mame_record_game),
	(gva_mame_playback_game):
	Test for both -fullscreen and -window options.

	* src/gva-mame-common.c (gva_mame_get_save_state_file):
	New function tries to find the save state file for a game.
	The location of these files changed in recent MAME versions.

	* src/gva-mame-process.c (gva_mame_process_get_executable):
	Remove this function; use MAME_PROGRAM from config.h instead.

	* src/gva-mame-sdlmame.c:
	New source file implements the sdlmame backend.

	* src/gva-mame-xmame.c:
	Move all functions except gva_mame_get_version() and
	gva_mame_get_total_supported() into gva-mame-common.c.

	* src/gva-mame-xmame.c (gva_mame_get_version):
	* src/gva-mame-xmame.c (gva_mame_get_total_supported):
	Simpler implementation.

	* src/gva-tree-view.c (gva_tree_view_run_query):
	Only select "good" or "best available" romsets.

	* src/gva-ui.c (action_about_cb):
	Change comment to "MAME Front-End" (not just XMAME).

2007-07-18  Matthew Barnes  <mbarnes@redhat.com>

	** Make preparations for adding multiple MAME backends.

	* src/Makefile.am:
	Add gva-mame-common.[ch].
	Rename gva-xmame.h to gva-mame.h.
	Rename gva-xmame.c to gva-mame-xmame.c.

	* src/main.c:
	* src/gva-db.c:
	* src/gva-play-back.c:
	* src/gva-preferences.c:
	* src/gva-main.c:
	* src/gva-mame-xmame.c:
	* src/gva-ui.c:
	* src/gva-util.c:
	Change "xmame" prefixes to "mame".

	* src/gva-mame-common.[ch]:
	New source files implement functions common to all MAME backends.

2007-07-18  Matthew Barnes  <mbarnes@redhat.com>

	* README: First draft.

2007-07-17  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-ui.c (action_about_cb):
	Add a License button to the About dialog.

2007-07-14  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.3.0

	* src/main.c (start):
	Use gtk_main_iteration() instead of g_main_context_iteration()
	to check whether we've quit the main loop.  This can happen if
	an impatient user quits the application while the database is
	building.

	* src/gva-process.c (gva_process_kill):
	New function sends SIGKILL to the given process.

	* src/gva-process.c (gva_process_kill_all):
	New function kills all active child processes.

	* src/gva-main.c (gva_main_init):
	Desensitive the "view" actions.  Eliminates an opportunity to
	change views before a database build begins.

	* src/gva-ui.c (action_quit_cb):
	Call gva_process_kill_all().

2007-07-13  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.schemas:
	Add "sort-column" key.

	* src/Makefile.am:
	Remove gva-game-db.[ch].

	* src/main.c:
	Disable the "view" actions while building the database.
	Force a tree view update after the database is built.

	* src/gva-columns.c (gva_columns_lookup_name):
	New function returns the name of the given given column ID.

	* src/gva-common.h:
	Add GVA_GCONF_SORT_COLUMN_KEY.

	* src/gva-db.c:
	Verify ROM sets and sample sets while parsing XML data.
	Merge the results into the database when XML parsing is done.
	Register an isfavorite() function in the database.

	* src/gva-game-db.[ch]:
	Remove these files.

	* src/gva-main.c (gva_main_init):
	Disable some actions until we're up and running.

	* src/gva-game-store.c (game_store_constructor):
	Register a default sort function (sorts on description).

	* src/gva-play-back.c:
	Prefer "name" over "romname".
	Adapt to gva-game-db.c going away.

	* src/gva-properties.c (properties_selection_changed_cb):
	Query the database for the needed game information.

	* src/gva-tree-view.c:
	Prefer "name" over "romname".
	Remember sort column and order across sessions.
	Switching views is now a database query; swap out the old
	tree model for a fresh one.  No need to pile filter and sort
	models on to our game store.  Clean and elegant.

	* src/gva-ui.c:
	Prefer "name" over "romname".

	* src/gva-xmame.c:
	Prefer "name" over "romname".
	Remove some obsolete functions.

2007-07-12  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-game-store.c (gva_game_store_new_from_query):
	Fix a couple bugs.  It seems to be working!

2007-07-12  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.schemas:
	Add "version" key.

	* src/main.c:
	Support a --build-database command-line option.

	* src/main.c (start):
	New function kicks off the party when the main loop starts.
	It currently just starts a database rebuild as needed.

	* src/gva-common.h:
	Expose command-line option values.

	* src/gva-db.c (db_parser_end_element_game):
	Report parsing progress to the GvaProcess.

	* src/gva-db.c (gva_db_build):
	Clear all tables before building the database.

	* src/gva-db.c (gva_db_needs_rebuilt):
	New functions runs a series of tests to figure out whether the
	database needs to be rebuilt.  It also states its rationale for
	recommending a rebuild to stdout.

	* src/gva-favorites.c:
	Prefer "name" over "romname".

	* src/gva-game-store.c (gva_game_store_new_from_query):
	Always populate the game store with favorites, since favorites
	are stored in GConf and not the database.

	* src/gva-main.c (gva_main_build_database):
	New function initiates a database rebuild and reports progress
	to a progress bar widget.

	* src/gva-process.c:
	Make the progress property an unsigned integer.

	* src/gva-tree-view.c (tree_view_load_data):
	Remove the call to gva_db_build().
	This breaks the "properties" action for now.

	* src/gva-util.c (gva_get_last_version):
	New function returns what version of GVA we ran last time.

	* src/gva-xmame.c (gva_xmame_get_total_supported):
	Return an _unsigned_ integer, and zero on error.

2007-07-12  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	Changed my mind; remove the search button from the main window.
	Edit -> Search menu item still remains.

	* src/gva-columns.c (gva_columns_load):
	Call gva_columns_get_selected().

	* src/gva-columns.c (gva_columns_get_selected):
	New function returns visible column names as a string array.

	* src/gva-process.c (gva_process_get_time_elapsed):
	Call gva_get_time_elapsed().

	* src/gva-util.c (gva_get_time_elapsed):
	New function return the time elapsed since a start time.

2007-07-11  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	* data/gnome-video-arcade.ui:
	* src/gva-ui.c:
	Add hooks for a search window.

2007-07-11  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-game-store.c (gva_game_store_new_from_query):
	New UNTESTED function creates a GvaGameStore from an SQL query.

	* src/gva-game-store.c (gva_game_store_populate):
	Remove this function; superseded by gva_game_store_new_from_query().

	* src/gva-columns.c (gva_columns_lookup_id):
	New function returns the ID of the given column name.

	* src/gva-error.h:
	Add GVA_ERROR_QUERY.

	* src/gva-tree-view.c (tree_view_data_added):
	Remove the call to gva_game_store_populate().

2007-07-11  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-db.c (db_parser_bind_text):
	Convert the text to UTF-8 and stop quoting it.
	Be more error tolerant.

	* src/gva-columns.c (gva_columns_load):
	Fall back to the default columns if the GConf list is empty.
	Fix a memory leak.

2007-07-11  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.schemas:
	Add "columns" key.

	* src/Makefile.am:
	Add gva-columns.[ch].

	* src/main.c (main):
	Call g_thread_init() to silence a runtime warning.

	* src/gva-common.h:
	Add GVA_GCONF_COLUMNS_KEY.

	* src/gva-game-db.c (game_db_add_sample):
	Put status in the "SAMPLESET" column.

	* src/gva-game-store.[ch]:
	Remove "USES_SAMPLES" and "HAVE_SAMPLES" columns.

	* src/gva-columns.[ch]:
	New source files construct and manage tree view columns.

	* src/gva-tree-view.c (tree_view_columns_changed_cb):
	Call gva_columns_save() when not in destruction.

	* src/gva-tree-view.c:
	Move the column construction functions to gva-columns.c.
	Now we simply call gva_columns_load() from gva_tree_view_init().

2007-07-10  Matthew Barnes  <mbarnes@redhat.com>

	* Relicense the code under the terms of the GNU GPL v3.

	* Add a copyright notice and copying permission statement
	  to each of the source code files.

2007-07-09  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	Add an invisible progress bar next to the status bar.

	* src/Makefile.am:
	Add gva-history.[ch].
	Remove gva-parser.[ch].

	* src/main.c:
	Add database_needs_rebuilt(), which is not yet used.
	Only initialize the history module if HISTORY_FILE is defined.

	* src/gva-db.[ch]:
	Merge the XML parser into the database module.
	Add gva_db_build() to initiate the parsing process.
	Other small improvements to the parsing logic.

	* src/gva-game-db.[ch]:
	Split arcade history API into a separate module.

	* src/gva-game-store.[ch]:
	Add columns to match the "game" table in the SQLite database.
	Initial cut at populating the GvaGameStore via an SQL query.
	Still much more work to be done here...

	* src/gva-parser.[ch]:
	Remove these files; parser merged into database module.

	* src/gva-process.[ch]:
	Remove the "exited" and "status" properties.
	Add a "progress" property and API for getting and setting.

	* src/gva-process.c (process_data_ready):
	Simplify the logic to read one line per call.
	Takes longer to parse the XML data but is less CPU intensive.
	Not sure about this yet, I might revert it.

	* src/gva-process.c (process_class_init):
	Fix typos in "exited" signal registration.

	* src/gva-ui.h:
	Add GVA_WIDGET_MAIN_PROGRESSBAR.

	* src/gva-properties.c:
	* src/gva-tree-view.c:
	Adapt to API changes.

2007-07-06  Matthew Barnes  <mbarnes@redhat.com>

	** Phase one of adding an SQLite games database.

	* configure.ac:
	Add check for sqlite3 package.

	* src/Makefile.am:
	Add gva-db.[ch].
	Add flags for linking to libsqlite3.

	* src/gva-common.h:
	#include <sqlite3.h>

	* src/gva-db.[ch]:
	New source files provide an interface to the sqlite3 database.

	* src/gva-error.[ch]:
	Add GVA_SQLITE_ERROR.

	* src/gva-parser.c:
	Populate the sqlite3 database instead of the GtkTreeModel.
	This makes the Properties window less useful for now, but the
	next phase will populate the GtkTreeModel by way of a database
	query.  The resulting database is currently under 2 MB, but does
	not include BIOS, ROM, disk, chip, or dipswitch information yet.

	* src/gva-xmame.c (gva_xmame_get_total_supported):
	New function returns the total number of supported games.
	Useful for reporting progress while building the database.

2007-07-04  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-main.c:
	Add a more convenient statusbar API.

	* src/main.c:
	* src/gva-main.c:
	* src/gva-tree-view.c:
	Use the new statusbar API.

2007-07-04  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	Properties window tweaks.

	* src/gva-properties.c (gva_properties_init):
	Display arcade history in monospaced font.

	* src/gva-util.c (gva_get_monospace_font_name):
	New function retrieves preferred monospace font name.

2007-07-03  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac:
	Drop support for --with-mameinfo-file.
	Users aren't going to care about that information.

	* src/gva-error.h:
	Add GVA_ERROR_CONFIG.

	* src/gva-parser.c:
	Don't rely on MAME for arcade history.
	Recent versions have dropped support for it.

	* src/gva-properties.c (properties_update_history):
	Fetch history information from gva_game_db_get_history().
	Try looking up "cloneof" field if "name" field comes up empty.

	* src/gva-game-db.c (gva_game_db_init):
	Build an index of the arcade history file.

	* src/gva-game-db.c (gva_game_db_get_history):
	New function reads an entry from the arcade history file.

2007-07-03  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-parser.c:
	For attribute names, it turns out that just comparing the strings
	directly is faster than lookup up the canonical representation of
	each attribute name on every pass.

2007-07-02  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-process.c (process_set_property):
	Set the watch priorities of the stdout and stderr streams to low
	so the UI remains responsive while game properties are loading.

	* src/gva-parser.c:
	Maintain our own stack of interned element names.
	Shaves a couple more seconds off the parsing time.

2007-07-02  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac:
	Add --with-history-file and --with-mameinfo-file options.
	These options don't do anything but they will be used to parse
	the history.dat and mameinfo.dat files ourselves, since recent
	MAME releases no longer use them.

	* src/gva-parser.c:
	Refactor the logic a bit.

2007-07-02  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-parser.c:
	Compare canonical representations of element and attribute names.
	Shaves a few seconds off the parsing time, down to ~11s for me.

	* src/gva-game-db.c (gva_game_db_update_data):
	Remove this function; it just calls gva_game_db_update_data().

	* src/gva-tree-view.c:
	While game properties are being loaded:
	  - Display a statusbar message to that effect.
	  - Disable the "properties" action.
	Emit a GtkTreeSelection "changed" signal when done.

2007-07-02  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-process.c (gva_process_get_time_elapsed):
	New function returns approximate time elapsed since process started.

	* src/gva-parser.c (parser_exit):
	Print time elapsed, to help me measure and tune performance.

	* src/gva-parser.c (parser_start_element_game):
	Forgot to lookup the "cloneof" attribute.

2007-07-01  Matthew Barnes  <mbarnes@redhat.com>

	* src/Makefile.am:
	Add gva-parser.[ch].

	* src/gva-game-store.c:
	* src/gva-game-store.h:
	Add a bunch more columns to the tree model.
	Rename TITLE column to DESCRIPTION.
	Rename ROMNAME column to NAME.

	* src/gva-game-db.c: Adapt.

	* src/gva-play-back.c: Adapt.

	* src/gva-properties.c: Adapt.

	* src/gva-tree-view.c: Adapt.

	* src/gva-ui.c: Adapt.

	* src/gva-process.c:
	* src/gva-process.h:
	* src/gva-mame-process.c:
	Remove the unused "peek" methods from GvaProcessClass.

	* src/gva-game-db (gva_game_db_update_data):
	Call gva_parse_game_data().

	* src/gva-parser.c:
	* src/gva-parser.h:
	New source files parse MAME's -listxml output.

	* src/gva-properties.c (properties_update_header):
	Display manufacturer and year in smaller font.

	* src/gva-properties.c (properties_update_history):
	New function shows history information for the selected game.

	* src/gva-xmame.c (gva_xmame_list_xml):
	New function invokes MAME's -listxml feature.

2007-07-01  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	Rework the forward and back buttons.

	* src/gva-ui.c:
	Reword the tooltips for "go-back" and "go-forward" actions.

2007-07-01  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	Design a skeletal Properties window.

	* src/Makefile.am:
	Add gva-properties.[ch].

	* src/main.c (main):
	Call gva_properties_init().

	* src/gva-properties.c:
	* src/gva-properties.h:
	New source files implement the properties window.

	* src/gva-tree-view.c (tree_view_selection_changed_cb):
	Update sensitivity of the "go-back" and "go-forward" actions.

	* src/gva-ui.h:
	Add "go-back" and "go-forward" action macros.
	Add various "properties" widget macros.

	* src/gva-ui.c:
	Add "go-back" and "go-forward" actions, which move the tree view
	cursor back or forward (respectively) one row.

	* src/gva-ui.c (action_properties_cb):
	Show the Properties window.

2007-06-26  Matthew Barnes  <mbarnes@redhat.com>

	* configure.ac:
	Add version checks for GLib and GTK+. (Gianni Moschini)

	* src/Makefile.am:
	Add GLIB_CFLAGS, GLIB_GLIBS, GTK_CFLAGS, and GTK_LIBS.

2007-06-21  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.2.0

	* data/gnome-video-arcade.glade:
	* src/gva-ui.c:
	Revert previous change; not all icon themes represent
	"gnome-joystick" as a joystick.  Too bad.

2007-06-19  Matthew Barnes  <mbarnes@redhat.com>

	* src/main.c (main):
	Use gtk_init_with_args() to initialize GTK+.

	* data/gnome-video-arcade.glade:
	* src/gva-ui.c:
	Use "gnome-joystick" for the start game icon.

2007-06-19  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-game-store.c (gva_game_store_clear):
	New function clears both the list store and the index.

	* src/gva-play-back.c (gva_play_back_show):
	New function refreshes the recorded game list, selects the given
	input file name (if given), and shows the Recorded Games window.

	* src/gva-ui.c (record_game_exited), (action_show_play_back_cb):
	Call gva_play_back_show() instead of gtk_widget_show().

2007-06-19  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-game-store.c:
	* src/gva-game-store.h:
	Embed an index (hash table) of tree row references.
	Provide an API for adding to and querying the index.

	* src/gva-play-back.c (play_back_add_input_file):
	Build a game store index of input file names.

	* src/gva-game-db.c:
	Use GvaGameStore's new embedded index.

	* src/gva-game-db.c (gva_game_db_get_model):
	The game database now lives here.

2007-06-18  Matthew Barnes  <mbarnes@redhat.com>

	* src/Makefile.am:
	Add gva-error.[ch] and gva-mame-process.[ch].

	* src/gva-favorites.c:
	* src/gva-play-back.c:
	* src/gva-preferences.c:
	* src/gva-tree-view.c:
	* src/gva-ui.c:
	* src/gva-util.c:
	* src/gva-xmame.c:
	Pass GErrors to gva_error_handle().

	* src/gva-process.c:
	* src/gva-process.h:
	Add a GError to the GvaProcess structure.
	Add a private pointer to the GvaProcess structure.
	Check for termination due to signal on process exit.
	Include status value in "exited" signal.
	Convert peek/read line functions to class methods.

	* src/gva-process.c (gva_process_spawn):
	New function spawns a GvaProcess with the given command line.

	* src/gva-mame-process.c:
	* src/gva-mame-process.h:
	New source files subclass GvaProcess.
	Check for errors when reading or peeking at lines.

	* src/gva-game-db.c:
	Load available romnames synchronously.
	Load game titles and sample information asynchronously.

	* src/gva-tree-view.c (tree_view_load_data):
	Kick off multiple processes that load data asynchronously.
	Keep the tree view widget insensitive until titles are loaded.

	* src/gva-xmame.c:
	* src/gva-xmame.h:
	Move error detection routines to GvaProcess or GvaMameProcess.
	Make the API more asynchronous by spawning a GvaMameProcess.

	* src/gva-ui.c: Adapt.

2007-06-14  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-tree-view.c (gva_tree_view_set_selected_game):
	Fix a memory leak.

2007-06-08  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-xmame.c (xmame_scan_for_error):
	Fix a double free.

2007-06-08  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-process.[ch]:
	Implement a more line-oriented API.

	* src/gva-xmame.c: Adapt and simplify.

2007-06-07  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-process.[ch]:
	Make GvaProcess a GObject with signals and properties.

	* src/gva-xmame.c: Adapt.

	* src/gva-xmame.c (gva_xmame_verify_rom_sets):
	Experiment with making this function asynchronous.

2007-06-05  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-game-db.c (gva_game_db_init):
	Call gva_xmame_get_rompath() instead of gva_xmame_get_config_value().

	* src/gva-xmame.[ch]: (gva_xmame_get_rompath):
	New function calls gva_xmame_get_config_value("rompath", ...).

	* src/gva-xmame.[ch]: (gva_xmame_verify_rom_sets):
	New function invokes xmame to quickly verify ROM sets.
	Similar to gva_xmame_verify_sample_sets().

2007-06-04  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-tree-view.c (tree_view_filter_visible),
	(gva_tree_view_set_selected_game):
	Fix a couple memory leaks.

2007-06-02  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.1.4.

	* src/gva-xmame.c:
	* src/gva-xmame.h:
	Rename gva_xmame_has_xxx() to gva_xmame_supports_xxx().

	* src/gva-xmame.c (gva_xmame_run_game), (gva_xmame_record_game),
	(gva_xmame_playback_game):
	Build the argument list with a GString and only use "-[no]autosave"
	and "-[no]fullscreen" options if they're supported.

	* src/gva-preferences.c (gva_preferences_init): Adapt.

	* src/gva-process.c (gva_process_new):
	Set the encoding of all three channels to NULL.

2007-06-02  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-preferences.c (gva_preferences_init):
	Make the "auto-save" and "full-screen" actions insensitive if
	xmame does not support the corresponding options.

	* src/gva-xmame.c (gva_xmame_has_config_value):
	New function returns TRUE if xmame supports the given option name.

	* src/gva-xmame.c (gva_xmame_has_auto_save),
	(gva_xmame_has_full_screen):
	New functions use gva_xmame_has_config_value() to test for xmame's
	capabilities.

2007-05-30  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	Restructure the preferences window.

	* data/gnome-video-arcade.schemas:
	Add schemas for "auto-save" and "full-screen" keys.

	* src/gva-common.h:
	#include <glib/gstdio.h>

	* src/main.c (main):
	Set a default icon for transient windows.

	* src/gva-preferences.c:
	* src/gva-preferences.h:
	Connect preference widgets to actions.
	Provide read/write access to preferences.

	* src/gva-ui.c:
	Add "auto-save" and "full-screen" toggle actions.

	* src/gva-ui.h:
	Add macros for new actions and their proxy widgets.

	* src/gva-xmame.c (gva_xmame_run_game), (gva_xmame_record_game),
	(gva_xmame_playback_game):
	Honor preferences when invoking xmame.

	* src/gva-xmame.c (gva_xmame_clear_state):
	New function deletes a game's state file.

2007-05-29  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	Initial design of a preferences window.

	* data/gnome-video-arcade.ui:
	Add Edit menu with a Preferences item.

	* src/Makefile.am:
	Add gva-preferences.[ch].

	* src/gva-common.h:
	Add key names for preferences.

	* src/gva-preferences.c:
	* src/gva-preferences.h:
	New source files implement the preferences window.
	Preferences don't work yet.

	* src/main.c (main):
	Call gva_preferences_init().

	* src/gva-ui.h:
	Add macros for some preferences widgets.

	* src/gva-ui.c:
	Add "edit-menu" and "preferences" actions.

	* src/gva-xmame.c (xmame_post_game_analysis):
	Don't refer to self by name in error messages.

2007-05-28  Matthew Barnes  <mbarnes@redhat.com>

	* data/Makefile.am:
	Fix up schema installation rules.

	* data/gnome-video-arcade.schema:
	Add missing schema for "selected-view" key.

2007-05-28  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-process.h:
	* src/gva-process.c:
	Combine callback typedefs into one (GvaProcessNotify).

	* src/gva-process.c (gva_process_new):
	Make stdout and stderr buffers non-blocking.
	Add a GError parameter.

	* src/gva-process.c (process_data_ready):
	Read data into a 4K buffer instead of one line at a time.

	* src/gva-xmame.c:
	* src/gva-xmame.h:
	Adapt.

2007-05-28  Matthew Barnes  <mbarnes@redhat.com>

	* src/Makefile.am:
	Add gva-process.[ch].

	* src/gva-process.c:
	* src/gva-process.h:
	New source files provide a simple process abstraction.

	* src/gva-xmame.c:
	* src/gva-xmame.h:
	Reimplement the API using GvaProcess.
	Add gva_xmame_async_command() for asynchronous commands.
	Make functions that run/record/playback games asynchronous.

2007-05-26  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-main.c:
	* src/gva-main.h:
	* src/gva-ui.c:
	Move menu item tooltip handling to gva-main.c.

	* data/gnome-video-arcade.glade
	* src/gva-ui.c:
	Make menu and button tooltips consistent.

2007-05-25  Matthew Barnes  <mbarnes@redhat.com>

	* NEWS: Update for 0.1.3.

	* src/gva-ui.c:
	Make accelerator keys work.
	Add more tooltips to actions.
	Show menu item tooltips in the statusbar.

2007-05-25  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.ui:
	Add menu items for adding or removing from favorites list.

	* src/gva-tree-view.c (tree_view_selected_changed_cb):
	Update visibility of "favorite" actions.

	* src/gva-tree-view.c (tree_view_favorite_clicked_cb):
	Activate "insert-favorite" or "remove-favorite" action.

	* src/gva-ui.c:
	* src/gva-ui.h:
	Add "insert-favorite" and "remove-favorite" actions.
	Rename gva_ui_get_glade_widget() to gva_ui_get_widget().

2007-05-25  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-common.h:
	* src/gva-xmame.c:
	* src/gva-xmame.h:
	Minor fixes.

2007-05-24  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-tree-view.c (tree_view_button_press_cb):
	Don't assume gtk_tree_view_get_path_at_pos() will succeed.
	User may right-click on blank area of the tree view.

	* src/gva-tree-view.c (tree_view_selected_changed_cb):
	Desensitize the "record" action when nothing is selected.

	* src/gva-tree-view.c (gva_tree_view_update):
	Check the return value of gva_tree_view_get_last_selected_game()
	for NULL, which can occur the first time the program is run.

	* src/gva-tree-view.c (gva_tree_view_get_last_selected_game):
	Don't assume GConf will give us a non-empty string.

2007-05-23  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade (play-back-scrolled-window):
	Set both horizontal and vertical scrollbar policies to automatic.

	* src/gva-play-back.c (gva_play_back_init):
	Put the text renderer in PANGO_ELLIPSIZE_END mode.

2007-05-23  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-tree-view.c (tree_view_column_new_title):
	Put the text renderer in PANGO_ELLIPSIZE_END mode.

	* src/gva-tree-view.c (gva_tree_view_set_selected_game):
	Don't assume the GtkTreeModelSort path is valid.

2007-05-23  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-common.h:
	Put all GConf key definitions here.

	* src/gva-main.c:
	* src/gva-tree-view.c:
	* src/gva-ui.c:
	* data/gnome-video-arcade.glade:
	* data/gnome-video-arcade.ui:
	Use a single model/filter/view stack and use different filtering
	criteria for each application view (Available / Favorites / Results).

	* src/gva-tree-view.c:
	Make columns reorderable.
	Distinguish between getting/setting the selected or last selected
	game or view.  "Last selected" refers to what's stored in GConf.

	* src/gva-ui.c (action_about_cb):
	Load the logo ourselves so we can dictate the size.

2007-05-20  Matthew Barnes  <mbarnes@redhat.com>

	* src/gva-game-db.c:
	* src/gva-game-db.h:
	* src/gva-game-store.c:
	* src/gva-game-store.h:
	* src/main.c:
	Add a samples column.

	* src/gva-tree-view.c:
	Add a samples column.
	Use smaller icons in columns.

	* src/gva-xmame.c:
	* src/gva-xmame.h:
	Support "xmame -verifysamplesets" command.

2007-05-19  Matthew Barnes  <mbarnes@redhat.com>

	* data/gnome-video-arcade.glade:
	Use custom icon instead of "gnome-joystick".

	* data/gnome-video-arcade.desktop.in:
	Use custom icon instead of "gnome-joystick".
	Change name to "Video Arcade" (drop the "GNOME").

	* data/Makefile.am:
	Install icon into $(datadir)/icons/hicolor/scalable/apps.

	* src/gva-game-store.c (game_store_constructor):
	* src/gva-game-store.h:
	Define columns for "year", "manufacturer", and "clone-of".

	* src/gva-ui.c (action_about_cb):
	Add translator credits.

2007-05-01  Matthew Barnes  <mbarnes@redhat.com>

	* Initial commit.
