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/references/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/references/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.
