Mercurial > audlegacy-plugins
diff src/sid/xs_fileinfo.c @ 1574:e566e18e9e3d
Huge cleanup and some bugfixes. Temporarily breaks / removes sub-tune
changing.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 03 Sep 2007 06:28:17 +0300 |
parents | 88878ed02ca0 |
children | 8581eb9d574a |
line wrap: on
line diff
--- a/src/sid/xs_fileinfo.c Mon Sep 03 06:25:55 2007 +0300 +++ b/src/sid/xs_fileinfo.c Mon Sep 03 06:28:17 2007 +0300 @@ -26,14 +26,11 @@ #include "xs_fileinfo.h" #include "xs_player.h" #include "xs_support.h" -#include "xs_stil.h" #include "xs_config.h" #include "xs_interface.h" #include "xs_glade.h" - +#include "xs_slsup.h" -static t_xs_stildb *xs_stildb_db = NULL; -XS_MUTEX(xs_stildb_db); static GtkWidget *xs_fileinfowin = NULL; static t_xs_stil_node *xs_fileinfostil = NULL; @@ -42,101 +39,7 @@ #define LUW(x) lookup_widget(xs_fileinfowin, x) -/* STIL-database handling - */ -gint xs_stil_init(void) -{ - XS_MUTEX_LOCK(xs_cfg); - - if (!xs_cfg.stilDBPath) { - XS_MUTEX_UNLOCK(xs_cfg); - return -1; - } - - XS_MUTEX_LOCK(xs_stildb_db); - - /* Check if already initialized */ - if (xs_stildb_db) - xs_stildb_free(xs_stildb_db); - - /* Allocate database */ - xs_stildb_db = (t_xs_stildb *) g_malloc0(sizeof(t_xs_stildb)); - if (!xs_stildb_db) { - XS_MUTEX_UNLOCK(xs_cfg); - XS_MUTEX_UNLOCK(xs_stildb_db); - return -2; - } - - /* Read the database */ - if (xs_stildb_read(xs_stildb_db, xs_cfg.stilDBPath) != 0) { - xs_stildb_free(xs_stildb_db); - xs_stildb_db = NULL; - XS_MUTEX_UNLOCK(xs_cfg); - XS_MUTEX_UNLOCK(xs_stildb_db); - return -3; - } - - /* Create index */ - if (xs_stildb_index(xs_stildb_db) != 0) { - xs_stildb_free(xs_stildb_db); - xs_stildb_db = NULL; - XS_MUTEX_UNLOCK(xs_cfg); - XS_MUTEX_UNLOCK(xs_stildb_db); - return -4; - } - - XS_MUTEX_UNLOCK(xs_cfg); - XS_MUTEX_UNLOCK(xs_stildb_db); - return 0; -} - - -void xs_stil_close(void) -{ - XS_MUTEX_LOCK(xs_stildb_db); - xs_stildb_free(xs_stildb_db); - xs_stildb_db = NULL; - XS_MUTEX_UNLOCK(xs_stildb_db); -} - - -t_xs_stil_node *xs_stil_get(gchar *pcFilename) -{ - t_xs_stil_node *pResult; - gchar *tmpFilename; - - XS_MUTEX_LOCK(xs_stildb_db); - XS_MUTEX_LOCK(xs_cfg); - - if (xs_cfg.stilDBEnable && xs_stildb_db) { - if (xs_cfg.hvscPath) { - /* Remove postfixed directory separator from HVSC-path */ - tmpFilename = xs_strrchr(xs_cfg.hvscPath, '/'); - if (tmpFilename && (tmpFilename[1] == 0)) - tmpFilename[0] = 0; - - /* Remove HVSC location-prefix from filename */ - tmpFilename = strstr(pcFilename, xs_cfg.hvscPath); - if (tmpFilename) - tmpFilename += strlen(xs_cfg.hvscPath); - else - tmpFilename = pcFilename; - } else - tmpFilename = pcFilename; - -XSDEBUG("xs_stil_get('%s') = '%s'\n", pcFilename, tmpFilename); - - pResult = xs_stildb_get_node(xs_stildb_db, tmpFilename); - } else - pResult = NULL; - - XS_MUTEX_UNLOCK(xs_stildb_db); - XS_MUTEX_UNLOCK(xs_cfg); - - return pResult; -} - - +#ifndef AUDACIOUS_PLUGIN void xs_fileinfo_update(void) { XS_MUTEX_LOCK(xs_status); @@ -189,6 +92,7 @@ XS_MUTEX_UNLOCK(xs_fileinfowin); XS_MUTEX_UNLOCK(xs_status); } +#endif /* AUDACIOUS_PLUGIN */ void xs_fileinfo_ok(void) @@ -226,6 +130,11 @@ /* Freeze text-widget and delete the old text */ tmpText = LUW("fileinfo_sub_info"); +#ifndef AUDACIOUS_PLUGIN + gtk_text_freeze(GTK_TEXT(tmpText)); + gtk_text_set_point(GTK_TEXT(tmpText), 0); + gtk_text_forward_delete(GTK_TEXT(tmpText), gtk_text_get_length(GTK_TEXT(tmpText))); +#endif /* Get subtune information */ tmpIndex = g_list_index(GTK_MENU_SHELL(data)->children, gtk_menu_get_active(GTK_MENU(data))); @@ -248,8 +157,17 @@ /* Get and set subtune information */ gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_sub_name")), subName ? subName : ""); gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_sub_author")), subAuthor ? subAuthor : ""); + +#ifdef AUDACIOUS_PLUGIN gtk_text_buffer_set_text(GTK_TEXT_BUFFER(gtk_text_view_get_buffer(GTK_TEXT_VIEW(tmpText))), subInfo ? subInfo : "", -1); +#else + gtk_text_insert(GTK_TEXT(tmpText), NULL, NULL, NULL, + subInfo ? subInfo : "", -1); + + /* Un-freeze the widget */ + gtk_text_thaw(GTK_TEXT(tmpText)); +#endif } @@ -257,7 +175,7 @@ { GtkWidget *tmpMenuItem, *tmpMenu, *tmpOptionMenu; t_xs_tuneinfo *tmpInfo; - gchar tmpStr[256], *tmpStr2; + gchar tmpStr[256], *tmpFilename; gint n; /* Current implementation leaves old fileinfo window untouched if @@ -281,9 +199,10 @@ gdk_window_raise(xs_fileinfowin->window); else { xs_fileinfowin = create_xs_fileinfowin(); - g_signal_connect(G_OBJECT( - gtk_range_get_adjustment(GTK_RANGE(LUW("fileinfo_subctrl_adj")))), "value_changed", - G_CALLBACK(xs_fileinfo_setsong), NULL); +#ifndef AUDACIOUS_PLUGIN + XS_SIGNAL_CONNECT(gtk_range_get_adjustment(GTK_RANGE(LUW("fileinfo_subctrl_adj"))), + "value_changed", xs_fileinfo_setsong, NULL); +#endif } /* Delete current items */ @@ -295,10 +214,9 @@ /* Set the generic song information */ - tmpStr2 = g_filename_to_utf8(pcFilename, -1, NULL, NULL, NULL); - gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_filename")), tmpStr2); - g_free(tmpStr2); - + tmpFilename = XS_CS_FILENAME(pcFilename); + gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_filename")), tmpFilename); + g_free(tmpFilename); gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_songname")), tmpInfo->sidName); gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_composer")), tmpInfo->sidComposer); gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_copyright")), tmpInfo->sidCopyright); @@ -308,8 +226,7 @@ tmpMenuItem = gtk_menu_item_new_with_label(_("General info")); gtk_widget_show(tmpMenuItem); gtk_menu_append(GTK_MENU(tmpMenu), tmpMenuItem); - g_signal_connect(G_OBJECT(tmpMenuItem), "activate", - G_CALLBACK(xs_fileinfo_subtune), tmpMenu); + XS_SIGNAL_CONNECT(tmpMenuItem, "activate", xs_fileinfo_subtune, tmpMenu); /* Other menu items */ for (n = 1; n <= tmpInfo->nsubTunes; n++) { @@ -333,8 +250,7 @@ tmpMenuItem = gtk_menu_item_new_with_label(tmpStr); gtk_widget_show(tmpMenuItem); gtk_menu_append(GTK_MENU(tmpMenu), tmpMenuItem); - g_signal_connect(G_OBJECT(tmpMenuItem), "activate", - G_CALLBACK(xs_fileinfo_subtune), tmpMenu); + XS_SIGNAL_CONNECT(tmpMenuItem, "activate", xs_fileinfo_subtune, tmpMenu); } gtk_option_menu_set_menu(GTK_OPTION_MENU(tmpOptionMenu), tmpMenu); @@ -351,5 +267,7 @@ XS_MUTEX_UNLOCK(xs_fileinfowin); +#ifndef AUDACIOUS_PLUGIN xs_fileinfo_update(); +#endif }