aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Alex Bennee <alex@bennee.com>2010-07-14 16:00:32 +0100
committerGravatar Alex Bennee <alex@bennee.com>2010-07-14 16:00:32 +0100
commitd022d6443c6b7564ae05a3af70035822bccd0b19 (patch)
tree57706bd83b146d8754f2a8d1f9abb55e050bb44d /src
parent56302086c9c0d6af537d7603a7c63fb3606945f5 (diff)
EasyTag 2.1.3
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.in163
-rw-r--r--[-rwxr-xr-x]src/about.c251
-rw-r--r--[-rwxr-xr-x]src/bar.c2
-rw-r--r--[-rwxr-xr-x]src/browser.c122
-rw-r--r--[-rwxr-xr-x]src/browser.h12
-rw-r--r--src/cddb.c110
-rw-r--r--src/easytag.c56
-rw-r--r--[-rwxr-xr-x]src/easytag.h2
-rw-r--r--[-rwxr-xr-x]src/et_core.c0
-rw-r--r--[-rwxr-xr-x]src/et_core.h1
-rw-r--r--[-rwxr-xr-x]src/id3_tag.c0
-rw-r--r--src/id3lib/Makefile.in129
-rw-r--r--[-rwxr-xr-x]src/id3v24_tag.c43
-rw-r--r--src/libapetag/Makefile.in118
-rw-r--r--src/libmpg123/Makefile.in118
-rw-r--r--[-rwxr-xr-x]src/log.c20
-rw-r--r--[-rwxr-xr-x]src/misc.c400
-rw-r--r--[-rwxr-xr-x]src/msgbox.c2
-rw-r--r--[-rwxr-xr-x]src/msgbox.h0
-rw-r--r--[-rwxr-xr-x]src/picture.c5
-rw-r--r--[-rwxr-xr-x]src/prefs.c59
-rw-r--r--[-rwxr-xr-x]src/prefs.h2
-rw-r--r--[-rwxr-xr-x]src/scan.c547
-rw-r--r--[-rwxr-xr-x]src/scan.h16
-rw-r--r--[-rwxr-xr-x]src/setting.c16
-rw-r--r--[-rwxr-xr-x]src/setting.h6
-rw-r--r--[-rwxr-xr-x]src/win32/win32dep.c35
-rw-r--r--[-rwxr-xr-x]src/win32/win32dep.h2
28 files changed, 1492 insertions, 745 deletions
diff --git a/src/Makefile.in b/src/Makefile.in
index ec0e58d..858e54f 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.10 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005 Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -14,15 +14,11 @@
@SET_MAKE@
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
@@ -65,32 +61,34 @@ easytag_OBJECTS = $(am_easytag_OBJECTS)
am__DEPENDENCIES_1 =
easytag_DEPENDENCIES = $(am__DEPENDENCIES_1) libmpg123/libmpg123.a \
libapetag/libapetag.a id3lib/libid3bugfix.a
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
SOURCES = $(easytag_SOURCES)
DIST_SOURCES = $(easytag_SOURCES)
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
- install-exec-recursive install-info-recursive \
- install-recursive installcheck-recursive installdirs-recursive \
- pdf-recursive ps-recursive uninstall-info-recursive \
- uninstall-recursive
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
@@ -128,8 +126,10 @@ GLIB_MKENUMS = @GLIB_MKENUMS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GOBJECT_QUERY = @GOBJECT_QUERY@
+GREP = @GREP@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
+INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -143,11 +143,11 @@ LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
OBJEXT = @OBJEXT@
OGG_CFLAGS = @OGG_CFLAGS@
OGG_LIBS = @OGG_LIBS@
@@ -175,17 +175,13 @@ VORBIS_LIBS = @VORBIS_LIBS@
WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
WAVPACK_LIBS = @WAVPACK_LIBS@
XGETTEXT = @XGETTEXT@
-ac_ct_AR = @ac_ct_AR@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -197,28 +193,39 @@ build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
+builddir = @builddir@
datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
+htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
+localedir = $(datadir)/locale
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
+psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
SUBDIRS = libmpg123 libapetag id3lib
easytag_SOURCES = \
about.c \
@@ -294,7 +301,6 @@ EXTRA_DIST = \
win32/win_easytag.c
easytag_LDADD = $(GTK_LIBS) libmpg123/libmpg123.a libapetag/libapetag.a id3lib/libid3bugfix.a
-localedir = $(datadir)/locale
PACKAGE_DATA_DIR = $(datadir)/$(PACKAGE)
INCLUDES = -DLOCALE=\"$(localedir)\" -DPACKAGE_DATA_DIR=\"$(PACKAGE_DATA_DIR)\"
all: all-recursive
@@ -332,7 +338,7 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
- test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; for p in $$list; do \
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
if test -f $$p \
@@ -360,7 +366,7 @@ clean-binPROGRAMS:
done
easytag$(EXEEXT): $(easytag_OBJECTS) $(easytag_DEPENDENCIES)
@rm -f easytag$(EXEEXT)
- $(LINK) $(easytag_LDFLAGS) $(easytag_OBJECTS) $(easytag_LDADD) $(LIBS)
+ $(LINK) $(easytag_OBJECTS) $(easytag_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -401,22 +407,22 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wavpack_tag.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
@@ -427,10 +433,6 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-distclean-libtool:
- -rm -f libtool
-uninstall-info-am:
-
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
@@ -462,8 +464,7 @@ $(RECURSIVE_TARGETS):
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
-mostlyclean-recursive clean-recursive distclean-recursive \
-maintainer-clean-recursive:
+$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
@@ -564,23 +565,21 @@ distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
- $(mkdir_p) $(distdir)/win32
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
- esac; \
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
- else \
- dir=''; \
- fi; \
if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
@@ -594,7 +593,7 @@ distdir: $(DISTFILES)
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
- || $(mkdir_p) "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
@@ -602,6 +601,8 @@ distdir: $(DISTFILES)
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
distdir) \
|| exit 1; \
fi; \
@@ -612,7 +613,7 @@ all-am: Makefile $(PROGRAMS)
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(bindir)"; do \
- test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
install-exec: install-exec-recursive
@@ -646,7 +647,7 @@ distclean: distclean-recursive
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
- distclean-libtool distclean-tags
+ distclean-tags
dvi: dvi-recursive
@@ -660,12 +661,20 @@ info-am:
install-data-am:
+install-dvi: install-dvi-recursive
+
install-exec-am: install-binPROGRAMS
+install-html: install-html-recursive
+
install-info: install-info-recursive
install-man:
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
installcheck-am:
maintainer-clean: maintainer-clean-recursive
@@ -686,24 +695,26 @@ ps: ps-recursive
ps-am:
-uninstall-am: uninstall-binPROGRAMS uninstall-info-am
+uninstall-am: uninstall-binPROGRAMS
-uninstall-info: uninstall-info-recursive
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+ install-strip
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
- clean clean-binPROGRAMS clean-generic clean-libtool \
- clean-recursive ctags ctags-recursive distclean \
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-binPROGRAMS \
+ clean-generic clean-libtool ctags ctags-recursive distclean \
distclean-compile distclean-generic distclean-libtool \
- distclean-recursive distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-binPROGRAMS \
- install-data install-data-am install-exec install-exec-am \
- install-info install-info-am install-man install-strip \
- installcheck installcheck-am installdirs installdirs-am \
- maintainer-clean maintainer-clean-generic \
- maintainer-clean-recursive mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
- pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
- uninstall-binPROGRAMS uninstall-info-am
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-binPROGRAMS install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-recursive uninstall uninstall-am \
+ uninstall-binPROGRAMS
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/src/about.c b/src/about.c
index edaf3ab..f6efc08 100755..100644
--- a/src/about.c
+++ b/src/about.c
@@ -37,6 +37,7 @@
#include "about.h"
#include "easytag.h"
#include "misc.h"
+#include "log.h"
#include "msgbox.h"
#include "charset.h"
@@ -54,6 +55,17 @@
****************/
static GtkWidget *AboutWindow = NULL;
+enum
+{
+ // Columns for titles
+ EXTENSION_NAME = 0,
+ EXTENSION_STATUT,
+ EXTENSION_COMMENT,
+
+ EXTENSION_COLUMN_COUNT
+};
+
+
/**************
* Prototypes *
@@ -106,7 +118,7 @@ void Show_About_Window (void)
GtkWidget *ScrollWindow;
GtkWidget *TextView;
GtkTextBuffer *TextBuffer;
- GtkTextIter iter;
+ GtkTextIter textIter;
GtkWidget *Button;
GtkWidget *Logo;
GdkPixmap *pixmap;
@@ -125,7 +137,6 @@ void Show_About_Window (void)
"simple and nice GTK+ interface makes tagging easier under GNU/Linux."
"");
-
/* Translation contributions */
gchar *translations_thanks_text [][2]= {
{" - Bastian Kleineidam ", _("(German translation)")},
@@ -135,12 +146,12 @@ void Show_About_Window (void)
{" - Sergey Zhumatiy ", _("(Russian translation)")},
{" - Andrey Astafiev ", _("(Russian translation)")},
{" - Vincent van Adrighem ", _("(Dutch translation)")},
- {" - Björn Olievier ", _("(Dutch translation)")},
+ {" - Björn Olievier ", _("(Dutch translation)")},
{" - Patrik Israelsson ", _("(Swedish translation)")},
- {" - Anders Strömer ", _("(Swedish translation)")},
+ {" - Anders Strömer ", _("(Swedish translation)")},
{" - Szel Miklos ", _("(Hungarian translation)")},
{" - Nagy Boldizsar ", _("(Hungarian translation)")},
- {" - Mészáros Csaba ", _("(Hungarian translation)")},
+ {" - Mészáros Csaba ", _("(Hungarian translation)")},
{" - Cappelletti Lorenzo ", _("(Italian translation)")},
{" - Costantino Ceoldo ", _("(Italian translation)")},
{" - Takeshi Aihana ", _("(Japanese translation)")},
@@ -159,6 +170,7 @@ void Show_About_Window (void)
{" - Luchezar P. Petkov ", _("(Bulgarian translation)")},
{" - Yang Jinsong ", _("(Chinese translation)")},
{" - Yuval Hager ", _("(Hebrew translation)")},
+ {" - Miloš Popović ", _("(Serbian translation)")},
{NULL,NULL}
};
@@ -207,6 +219,16 @@ void Show_About_Window (void)
" - Pierre Dumuid\n"
"";
+ GtkWidget *ExtensionList;
+ GtkListStore *ExtensionListModel;
+ GtkTreeViewColumn* column;
+ GtkCellRenderer* renderer;
+ gchar *ExtensionList_Titles[] = { N_("Extension Name"),
+ N_("Status"),
+ N_("Comment")
+ };
+ GtkTreeIter treeIter;
+
/* Check if already opened */
if (AboutWindow)
@@ -272,56 +294,9 @@ void Show_About_Window (void)
Label = gtk_label_new(temp);
gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
-#ifdef ENABLE_MP3 // FIX ME : should separate gtk and id3lib
- sprintf(temp,_("(using: GTK+ %d.%d.%d)"),GTK_MAJOR_VERSION,GTK_MINOR_VERSION,
- GTK_MICRO_VERSION);
- Label = gtk_label_new(temp);
- gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
-#endif
-
-#ifdef ENABLE_MP3
- sprintf(temp, _("(MP3 file support enabled using: libid3tag %s)"), ID3_VERSION);
- Label = gtk_label_new(temp);
- gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
-#if (defined ENABLE_ID3LIB)
- sprintf(temp, _("(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"),
- ID3LIB_MAJOR_VERSION, ID3LIB_MINOR_VERSION, ID3LIB_PATCH_VERSION);
- Label = gtk_label_new(temp);
- gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
-#else
- Label = gtk_label_new(_("(ID3v2.3 tags support disabled)"));
- gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
-#endif
-#else
- sprintf(temp, _("(MP3 file support disabled)"));
+ sprintf(temp,_("(using: GTK+ %d.%d.%d)"),GTK_MAJOR_VERSION,GTK_MINOR_VERSION,GTK_MICRO_VERSION);
Label = gtk_label_new(temp);
gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
-#endif
-
-#ifndef ENABLE_OGG
- Label = gtk_label_new(_("(Ogg Vorbis file support disabled)"));
- gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
-#endif
-
-#ifndef ENABLE_SPEEX
- Label = gtk_label_new(_("(Speex file support disabled)"));
- gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
-#endif
-
-#ifndef ENABLE_FLAC
- Label = gtk_label_new(_("(FLAC file support disabled)"));
- gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
-#endif
-
-#ifndef ENABLE_MP4
- Label = gtk_label_new(_("(MP4/AAC file support disabled)"));
- gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
-#endif
-
-#ifndef ENABLE_WAVPACK
- Label = gtk_label_new(_("(WavPack file support disabled)"));
- gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
-#endif
/* Insert a blank line */
Label = gtk_label_new("");
@@ -341,6 +316,7 @@ void Show_About_Window (void)
gtk_misc_set_alignment(GTK_MISC(Label),1,0.5);
gtk_box_pack_start(GTK_BOX(hbox),Label,TRUE,TRUE,0);
Button = gtk_button_new_with_label(WEBPAGE);
+ //Button = gtk_link_button_new(WEBPAGE);
gtk_box_pack_start(GTK_BOX(hbox),Button,TRUE,TRUE,0);
g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(About_Window_Go_To_Home_Page),NULL);
gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
@@ -362,12 +338,141 @@ void Show_About_Window (void)
/*
+ * Tab for extensions
+ */
+
+ Label = gtk_label_new(_("Extensions"));
+ Frame = gtk_frame_new(NULL);
+ gtk_notebook_append_page(GTK_NOTEBOOK(AboutNoteBook),Frame,Label);
+
+ ScrollWindow = gtk_scrolled_window_new(NULL,NULL);
+ gtk_container_add(GTK_CONTAINER(Frame),ScrollWindow);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame),2);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ScrollWindow),
+ GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+
+ ExtensionListModel = gtk_list_store_new(EXTENSION_COLUMN_COUNT,
+ G_TYPE_STRING, /* Extension name */
+ G_TYPE_STRING, /* Statut */
+ G_TYPE_STRING /* Comment */
+ );
+ ExtensionList = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ExtensionListModel));
+
+ renderer = gtk_cell_renderer_text_new(); /* Extension name */
+ column = gtk_tree_view_column_new_with_attributes(_(ExtensionList_Titles[0]), renderer,
+ "text", EXTENSION_NAME,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(ExtensionList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ renderer = gtk_cell_renderer_text_new(); /* Statut */
+ column = gtk_tree_view_column_new_with_attributes(_(ExtensionList_Titles[1]), renderer,
+ "text", EXTENSION_STATUT,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(ExtensionList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ renderer = gtk_cell_renderer_text_new(); /* Comment */
+ column = gtk_tree_view_column_new_with_attributes(_(ExtensionList_Titles[2]), renderer,
+ "text", EXTENSION_COMMENT,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(ExtensionList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ gtk_container_add(GTK_CONTAINER(ScrollWindow),ExtensionList);
+ gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(ExtensionList)),
+ GTK_SELECTION_NONE);
+ gtk_tree_view_set_headers_clickable(GTK_TREE_VIEW(ExtensionList), FALSE);
+
+ // Load extensions list
+ // MP3
+#ifdef ENABLE_MP3
+ sprintf(temp, _("libid3tag %s"), ID3_VERSION);
+#endif
+ gtk_list_store_append(ExtensionListModel, &treeIter);
+ gtk_list_store_set(ExtensionListModel, &treeIter,
+ EXTENSION_NAME, _("MP3 file support"),
+#ifdef ENABLE_MP3
+ EXTENSION_STATUT, _("enabled"),
+ EXTENSION_COMMENT, temp,
+#else
+ EXTENSION_STATUT, _("disabled"),
+#endif
+ -1);
+#ifdef ENABLE_MP3
+#if (defined ENABLE_ID3LIB)
+ sprintf(temp, _("id3lib %d.%d.%d"), ID3LIB_MAJOR_VERSION, ID3LIB_MINOR_VERSION, ID3LIB_PATCH_VERSION);
+#endif
+ gtk_list_store_append(ExtensionListModel, &treeIter);
+ gtk_list_store_set(ExtensionListModel, &treeIter,
+ EXTENSION_NAME, _("ID3v2.3 tags writting support"),
+#if (defined ENABLE_ID3LIB)
+ EXTENSION_STATUT, _("available"), // May not be used
+ EXTENSION_COMMENT, temp,
+#else
+ EXTENSION_STATUT, _("disabled"),
+#endif
+ -1);
+#endif
+ // Ogg Vorbis
+ gtk_list_store_append(ExtensionListModel, &treeIter);
+ gtk_list_store_set(ExtensionListModel, &treeIter,
+ EXTENSION_NAME, _("Ogg Vorbis file support"),
+#ifdef ENABLE_OGG
+ EXTENSION_STATUT, _("enabled"),
+#else
+ EXTENSION_STATUT, _("disabled"),
+#endif
+ -1);
+ // Speex
+ gtk_list_store_append(ExtensionListModel, &treeIter);
+ gtk_list_store_set(ExtensionListModel, &treeIter,
+ EXTENSION_NAME, _("Speex file support"),
+#ifdef ENABLE_SPEEX
+ EXTENSION_STATUT, _("enabled"),
+#else
+ EXTENSION_STATUT, _("disabled"),
+#endif
+ -1);
+ // FLAC
+ gtk_list_store_append(ExtensionListModel, &treeIter);
+ gtk_list_store_set(ExtensionListModel, &treeIter,
+ EXTENSION_NAME, _("FLAC file support"),
+#ifdef ENABLE_FLAC
+ EXTENSION_STATUT, _("enabled"),
+#else
+ EXTENSION_STATUT, _("disabled"),
+#endif
+ -1);
+ // MP4
+ gtk_list_store_append(ExtensionListModel, &treeIter);
+ gtk_list_store_set(ExtensionListModel, &treeIter,
+ EXTENSION_NAME, _("MP4/AAC file support"),
+#ifdef ENABLE_MP4
+ EXTENSION_STATUT, _("enabled"),
+#else
+ EXTENSION_STATUT, _("disabled"),
+#endif
+ -1);
+ // WavPack
+ gtk_list_store_append(ExtensionListModel, &treeIter);
+ gtk_list_store_set(ExtensionListModel, &treeIter,
+ EXTENSION_NAME, _("WavPack file support"),
+#ifdef ENABLE_WAVPACK
+ EXTENSION_STATUT, _("enabled"),
+#else
+ EXTENSION_STATUT, _("disabled"),
+#endif
+ -1);
+
+
+ /*
* Tab for thanks
*/
Label = gtk_label_new(_("Thanks"));
Frame = gtk_frame_new(NULL);
- gtk_notebook_append_page (GTK_NOTEBOOK(AboutNoteBook),Frame,Label);
+ gtk_notebook_append_page(GTK_NOTEBOOK(AboutNoteBook),Frame,Label);
ScrollWindow = gtk_scrolled_window_new(NULL,NULL);
gtk_container_add(GTK_CONTAINER(Frame),ScrollWindow);
@@ -383,10 +488,10 @@ void Show_About_Window (void)
//gtk_text_buffer_create_tag(TextBuffer, "x-large", "scale", PANGO_SCALE_X_LARGE, NULL);
//gtk_text_buffer_create_tag(TextBuffer, "monospace", "family", "monospace", NULL);
- gtk_text_buffer_get_iter_at_offset(TextBuffer, &iter, 0);
+ gtk_text_buffer_get_iter_at_offset(TextBuffer, &textIter, 0);
temp_str = _("Translations:\n");
- gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &iter,
+ gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &textIter,
temp_str, -1,
"bold", "underline", "large", NULL);
@@ -397,7 +502,7 @@ void Show_About_Window (void)
temp_str = convert_string(translations_thanks_text[i][0], "iso-8859-1", "utf-8",TRUE);
else
temp_str = g_strdup(translations_thanks_text[i][0]);
- gtk_text_buffer_insert(TextBuffer, &iter, temp_str, -1);
+ gtk_text_buffer_insert(TextBuffer, &textIter, temp_str, -1);
g_free(temp_str);
// Translation language
@@ -405,19 +510,19 @@ void Show_About_Window (void)
temp_str = convert_string(translations_thanks_text[i][1], "iso-8859-1", "utf-8",TRUE);
else
temp_str = g_strdup(translations_thanks_text[i][1]);
- gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &iter, temp_str, -1,
+ gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &textIter, temp_str, -1,
"italic", NULL);
g_free(temp_str);
- gtk_text_buffer_insert(TextBuffer, &iter, "\n", -1);
+ gtk_text_buffer_insert(TextBuffer, &textIter, "\n", -1);
}
- gtk_text_buffer_insert(TextBuffer, &iter, "\n", -1);
+ gtk_text_buffer_insert(TextBuffer, &textIter, "\n", -1);
temp_str = _("General:\n");
- gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &iter,
+ gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &textIter,
temp_str, -1,
"bold", "underline", "large", NULL);
- gtk_text_buffer_insert(TextBuffer, &iter, general_thanks_text, -1);
+ gtk_text_buffer_insert(TextBuffer, &textIter, general_thanks_text, -1);
TextView = gtk_text_view_new_with_buffer(TextBuffer);
gtk_container_add(GTK_CONTAINER(ScrollWindow),TextView);
@@ -441,19 +546,19 @@ void Show_About_Window (void)
GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
TextBuffer = gtk_text_buffer_new(NULL);
- gtk_text_buffer_get_iter_at_offset(TextBuffer, &iter, 0);
+ gtk_text_buffer_get_iter_at_offset(TextBuffer, &textIter, 0);
gtk_text_buffer_create_tag(TextBuffer, "monospace", "family", "monospace", NULL);
gtk_text_buffer_create_tag(TextBuffer, "red_foreground", "foreground", "red", NULL);
gtk_text_buffer_create_tag(TextBuffer, "blue_foreground", "foreground", "blue", NULL);
gtk_text_buffer_create_tag(TextBuffer, "bold", "weight", PANGO_WEIGHT_BOLD, NULL);
- gtk_text_buffer_get_iter_at_offset(TextBuffer, &iter, 0);
+ gtk_text_buffer_get_iter_at_offset(TextBuffer, &textIter, 0);
// The file 'ChangeLog' to read
if ( (file=fopen(PACKAGE_DATA_DIR"/ChangeLog","r"))==0 )
{
gchar *msg = g_strdup_printf(_("Can't open file '%s' (%s)\n"),PACKAGE_DATA_DIR"/ChangeLog",g_strerror(errno));
- gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &iter,
+ gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &textIter,
msg, -1,
"monospace", "red_foreground", NULL);
g_free(msg);
@@ -479,26 +584,26 @@ void Show_About_Window (void)
first_version++;
// To set to bold the title of the version and to red the first version
if (first_version > 2) // As title takes 2 lines
- gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &iter,
+ gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &textIter,
tmp, -1,
"monospace", "bold", NULL);
else
- gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &iter,
+ gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &textIter,
tmp, -1,
"monospace", "bold", "blue_foreground", NULL);
}else
{
if (first_version > 2) // As title takes 2 lines
- gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &iter,
+ gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &textIter,
tmp, -1,
"monospace", NULL);
else
- gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &iter,
+ gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &textIter,
tmp, -1,
"monospace", "blue_foreground", NULL);
}
- gtk_text_buffer_insert(TextBuffer, &iter, "\n", -1);
+ gtk_text_buffer_insert(TextBuffer, &textIter, "\n", -1);
g_free(tmp);
}
fclose(file);
@@ -513,7 +618,7 @@ void Show_About_Window (void)
/*
* Close Button
*/
- Button = Create_Button_With_Pixmap(BUTTON_CLOSE);
+ Button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(AboutWindow)->action_area),Button,FALSE,FALSE,0);
g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(Quit_About_Window),NULL);
GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
@@ -532,6 +637,8 @@ void About_Window_Go_To_Home_Page (void)
#ifdef WIN32
ET_Win32_Notify_Uri(WEBPAGE);
#else
- system("gnome-moz-remote "WEBPAGE);
+ if (system("gnome-moz-remote "WEBPAGE)!=0)
+ if (system("x-www-browser "WEBPAGE)!=0)
+ system("www-browser "WEBPAGE);
#endif
}
diff --git a/src/bar.c b/src/bar.c
index fc44855..6f75403 100755..100644
--- a/src/bar.c
+++ b/src/bar.c
@@ -233,7 +233,7 @@ void Create_UI (GtkWidget **ppmenubar, GtkWidget **pptoolbar)
{ AM_OPEN_OPTIONS_WINDOW, GTK_STOCK_PREFERENCES, _("_Preferences ..."), "<Alt>P", _("Preferences ..."), G_CALLBACK(Open_OptionsWindow) },
{ MENU_HELP, NULL, _("_Help"), NULL, NULL, NULL },
- { AM_OPEN_ABOUT_WINDOW, GTK_STOCK_HELP, _("_About"), NULL, _("About"), G_CALLBACK(Show_About_Window) },
+ { AM_OPEN_ABOUT_WINDOW, GTK_STOCK_ABOUT, _("_About"), NULL, _("About"), G_CALLBACK(Show_About_Window) },
/*
diff --git a/src/browser.c b/src/browser.c
index e807e7a..3261692 100755..100644
--- a/src/browser.c
+++ b/src/browser.c
@@ -527,7 +527,7 @@ gboolean Browser_List_Key_Press (GtkWidget *list, GdkEvent *event, gpointer data
{
gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &currentIter,
LIST_FILE_POINTER, &currentETFile,
- LIST_FILE_NAME, &current_filename,
+ LIST_FILE_NAME, &current_filename,
-1);
/* UTF-8 comparison */
@@ -688,13 +688,13 @@ gboolean Browser_Tree_Node_Selected (GtkTreeSelection *selection, gpointer user_
{
gtk_tree_view_expand_row(GTK_TREE_VIEW(BrowserTree), selectedPath, FALSE);
}
+ gtk_tree_path_free(selectedPath);
/* Don't start a new reading, if another one is running... */
if (ReadingDirectory == TRUE)
return TRUE;
//Browser_Tree_Set_Node_Visible(BrowserTree, selectedPath);
- gtk_tree_path_free(selectedPath);
gtk_tree_model_get(GTK_TREE_MODEL(directoryTreeModel), &selectedIter,
TREE_COLUMN_FULL_PATH, &pathName, -1);
if (!pathName)
@@ -738,13 +738,40 @@ gboolean Browser_Tree_Node_Selected (GtkTreeSelection *selection, gpointer user_
gtk_entry_set_text(GTK_ENTRY(GTK_BIN(BrowserEntryCombo)->child), pathName_utf8);
/* Start to read the directory */
- /* The first time 'counter' is equal to zero and if we don't want to load
- * directory on startup, we skip the 'reading', but we must read it */
+ /* The first time, 'counter' is equal to zero. And if we don't want to load
+ * directory on startup, we skip the 'reading', but newt we must read it each time */
if (LOAD_ON_STARTUP || counter)
- Read_Directory(pathName);
- else
+ {
+ gboolean dir_loaded;
+ GtkTreeIter parentIter;
+
+ dir_loaded = Read_Directory(pathName);
+
+ // If the directory can't be loaded, the directory musn't exist.
+ // So we load the parent node and refresh the children
+ if (dir_loaded == FALSE)
+ {
+ if (gtk_tree_selection_get_selected(selection, NULL, &selectedIter))
+ {
+ if (gtk_tree_model_iter_parent(GTK_TREE_MODEL(directoryTreeModel),&parentIter,&selectedIter) )
+ {
+ gtk_tree_selection_select_iter(selection,&parentIter);
+ selectedPath = gtk_tree_model_get_path(GTK_TREE_MODEL(directoryTreeModel), &parentIter);
+ gtk_tree_view_collapse_row(GTK_TREE_VIEW(BrowserTree),selectedPath);
+ if (OPEN_SELECTED_BROWSER_NODE)
+ {
+ gtk_tree_view_expand_row(GTK_TREE_VIEW(BrowserTree),selectedPath,FALSE);
+ }
+ gtk_tree_path_free(selectedPath);
+ }
+ }
+ }
+
+ }else
+ {
/* As we don't use the function 'Read_Directory' we must add this function here */
Update_Command_Buttons_Sensivity();
+ }
counter++;
g_free(pathName);
@@ -796,7 +823,6 @@ gint Browser_Tree_Select_Dir (gchar *current_path)
{
GtkTreePath *rootPath = NULL;
GtkTreeIter parentNode, currentNode;
- struct stat stbuf;
gint index = 1; // Skip the first token as it is NULL due to leading /
gchar **parts;
gchar *nodeName;
@@ -815,26 +841,9 @@ gint Browser_Tree_Select_Dir (gchar *current_path)
ET_Win32_Path_Remove_Trailing_Backslash(current_path);
#endif
- /* If path is invalid: inform the user, but load the first directories
- * of the full path while parent directories are valid */
- if (stat(current_path,&stbuf)==-1)
- {
- GtkWidget *msgbox;
- gchar *msg;
- gchar *current_path_utf8;
-
- current_path_utf8 = filename_to_display(current_path);
- msg = g_strdup_printf(_("The entered path is invalid!:\n%s\n(%s)"),
- current_path_utf8,g_strerror(errno));
- msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
- g_free(msg);
- msg_box_hide_check_button(MSG_BOX(msgbox));
- msg_box_run(MSG_BOX(msgbox));
- gtk_widget_destroy(msgbox);
- g_free(current_path_utf8);
- return FALSE;
- }
-
+ /* Don't check here if the path is valid. It will be done later when
+ * selecting a node in the tree */
+
Browser_Update_Current_Path(current_path);
parts = g_strsplit((const gchar*)current_path, G_DIR_SEPARATOR_S, 0);
@@ -897,6 +906,7 @@ gint Browser_Tree_Select_Dir (gchar *current_path)
if (rootPath)
{
gtk_tree_view_expand_to_path(GTK_TREE_VIEW(BrowserTree), rootPath);
+ // Select the node to load the corresponding directory
gtk_tree_selection_select_path(gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserTree)), rootPath);
Browser_Tree_Set_Node_Visible(BrowserTree, rootPath);
gtk_tree_path_free(rootPath);
@@ -935,7 +945,8 @@ void Browser_List_Row_Selected (GtkTreeSelection *selection, gpointer data)
// Returns the last line selected (in ascending line order) to display the item
lastSelected = (GtkTreePath *)g_list_last(selectedRows)->data;
if (gtk_tree_model_get_iter(GTK_TREE_MODEL(fileListModel), &lastFile, lastSelected))
- gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &lastFile, LIST_FILE_POINTER, &fileETFile, -1);
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &lastFile,
+ LIST_FILE_POINTER, &fileETFile, -1);
Action_Select_Nth_File_By_Etfile(fileETFile);
}else
@@ -988,10 +999,10 @@ void Browser_List_Load_File_List (GList *etfilelist, ET_File *etfile_to_select)
// File list displays the current filename (name on HD)
gtk_list_store_append(fileListModel, &row);
gtk_list_store_set(fileListModel, &row,
- LIST_FILE_NAME, basename_utf8,
- LIST_FILE_POINTER, etfilelist->data,
- LIST_FILE_KEY, fileKey,
- LIST_FILE_OTHERDIR, activate_bg_color,
+ LIST_FILE_NAME, basename_utf8,
+ LIST_FILE_POINTER, etfilelist->data,
+ LIST_FILE_KEY, fileKey,
+ LIST_FILE_OTHERDIR, activate_bg_color,
-1);
g_free(basename_utf8);
@@ -1278,14 +1289,23 @@ void Browser_List_Set_Row_Appearance (GtkTreeIter *iter)
{
if (CHANGED_FILES_DISPLAYED_TO_BOLD)
{
- gtk_list_store_set(fileListModel, iter, LIST_FONT_WEIGHT, PANGO_WEIGHT_BOLD, LIST_ROW_BACKGROUND, backgroundcolor, LIST_ROW_FOREGROUND, NULL, -1);
+ gtk_list_store_set(fileListModel, iter,
+ LIST_FONT_WEIGHT, PANGO_WEIGHT_BOLD,
+ LIST_ROW_BACKGROUND, backgroundcolor,
+ LIST_ROW_FOREGROUND, NULL, -1);
} else
{
- gtk_list_store_set(fileListModel, iter, LIST_FONT_WEIGHT, PANGO_WEIGHT_NORMAL, LIST_ROW_BACKGROUND, backgroundcolor, LIST_ROW_FOREGROUND, &RED, -1);
+ gtk_list_store_set(fileListModel, iter,
+ LIST_FONT_WEIGHT, PANGO_WEIGHT_NORMAL,
+ LIST_ROW_BACKGROUND, backgroundcolor,
+ LIST_ROW_FOREGROUND, &RED, -1);
}
} else
{
- gtk_list_store_set(fileListModel, iter, LIST_FONT_WEIGHT, PANGO_WEIGHT_NORMAL, LIST_ROW_BACKGROUND, backgroundcolor, LIST_ROW_FOREGROUND, NULL ,-1);
+ gtk_list_store_set(fileListModel, iter,
+ LIST_FONT_WEIGHT, PANGO_WEIGHT_NORMAL,
+ LIST_ROW_BACKGROUND, backgroundcolor,
+ LIST_ROW_FOREGROUND, NULL ,-1);
}
// Frees allocated item from gtk_tree_model_get...
g_free(temp);
@@ -1317,7 +1337,8 @@ void Browser_List_Remove_File (ET_File *searchETFile)
valid = gtk_tree_model_get_iter(GTK_TREE_MODEL(fileListModel), &currentIter, currentPath);
if (valid)
{
- gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &currentIter, LIST_FILE_POINTER, &currentETFile, -1);
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &currentIter,
+ LIST_FILE_POINTER, &currentETFile, -1);
if (currentETFile == searchETFile)
{
@@ -1392,7 +1413,8 @@ GtkTreePath *Browser_List_Select_File_By_Etfile2 (ET_File *searchETFile, gboolea
valid = gtk_tree_model_get_iter(GTK_TREE_MODEL(fileListModel), &currentIter, startPath);
if (valid)
{
- gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &currentIter, LIST_FILE_POINTER, &currentETFile, -1);
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &currentIter,
+ LIST_FILE_POINTER, &currentETFile, -1);
// It is the good file?
if (currentETFile == searchETFile)
{
@@ -1410,7 +1432,8 @@ GtkTreePath *Browser_List_Select_File_By_Etfile2 (ET_File *searchETFile, gboolea
valid = gtk_tree_model_get_iter(GTK_TREE_MODEL(fileListModel), &currentIter, currentPath);
if (valid)
{
- gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &currentIter, LIST_FILE_POINTER, &currentETFile, -1);
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &currentIter,
+ LIST_FILE_POINTER, &currentETFile, -1);
if (currentETFile == searchETFile)
{
@@ -1548,7 +1571,8 @@ void Browser_List_Unselect_File_By_Etfile(ET_File *searchETFile)
valid = gtk_tree_model_get_iter(GTK_TREE_MODEL(fileListModel), &currentIter, currentPath);
if (valid)
{
- gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &currentIter, LIST_FILE_POINTER, &currentETFile, -1);
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &currentIter,
+ LIST_FILE_POINTER, &currentETFile, -1);
if (currentETFile == searchETFile)
{
@@ -3064,6 +3088,8 @@ GtkWidget *Create_Browser_Items (GtkWidget *parent)
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(BrowserList), FALSE);
gtk_container_add(GTK_CONTAINER(ScrollWindowFileList), BrowserList);
gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(BrowserList), FALSE);
+
+ // Column for File Name
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new();
gtk_tree_view_column_pack_start(column, renderer, FALSE);
@@ -3075,6 +3101,7 @@ GtkWidget *Create_Browser_Items (GtkWidget *parent)
NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(BrowserList), column);
gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
gtk_tree_view_set_reorderable(GTK_TREE_VIEW(BrowserList), FALSE);
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList)),GTK_SELECTION_MULTIPLE);
// When selecting a line
@@ -3274,14 +3301,14 @@ void Browser_Open_Rename_Directory_Window (void)
gtk_box_set_spacing(GTK_BOX(ButtonBox),10);
/* Button to cancel */
- Button = Create_Button_With_Pixmap(BUTTON_CANCEL);
+ Button = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
- //gtk_widget_grab_default(Button);
+ gtk_widget_grab_default(Button);
g_signal_connect_swapped(G_OBJECT(Button),"clicked",G_CALLBACK(Destroy_Rename_Directory_Window), G_OBJECT(RenameDirectoryCombo));
/* Button to save: to rename directory */
- Button = Create_Button_With_Pixmap(BUTTON_APPLY);
+ Button = gtk_button_new_from_stock(GTK_STOCK_APPLY);
gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
g_signal_connect_swapped(G_OBJECT(Button),"clicked", G_CALLBACK(Rename_Directory),NULL);
@@ -3670,14 +3697,14 @@ void Browser_Open_Run_Program_Tree_Window (void)
gtk_box_set_spacing(GTK_BOX(ButtonBox), 10);
/* Button to cancel */
- Button = Create_Button_With_Pixmap(BUTTON_CANCEL);
+ Button = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
gtk_widget_grab_default(Button);
g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(Destroy_Run_Program_Tree_Window),NULL);
/* Button to execute */
- Button = Create_Button_With_Pixmap(BUTTON_EXECUTE);
+ Button = gtk_button_new_from_stock(GTK_STOCK_EXECUTE);
gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
g_signal_connect_swapped(G_OBJECT(Button),"clicked", G_CALLBACK(Run_Program_With_Directory),G_OBJECT(RunProgramComboBox));
@@ -3830,14 +3857,14 @@ void Browser_Open_Run_Program_List_Window (void)
gtk_box_set_spacing(GTK_BOX(ButtonBox), 10);
/* Button to cancel */
- Button = Create_Button_With_Pixmap(BUTTON_CANCEL);
+ Button = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
gtk_widget_grab_default(Button);
g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(Destroy_Run_Program_List_Window),NULL);
/* Button to execute */
- Button = Create_Button_With_Pixmap(BUTTON_EXECUTE);
+ Button = gtk_button_new_from_stock(GTK_STOCK_EXECUTE);
gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
g_signal_connect_swapped(G_OBJECT(Button),"clicked", G_CALLBACK(Run_Program_With_Selected_Files),G_OBJECT(RunProgramComboBox));
@@ -3955,7 +3982,8 @@ gboolean Run_Program (gchar *program_name, GList *args_list)
{
GtkWidget *msgbox;
- msgbox = msg_box_new(_("Error..."),_("You must type a program name!"),GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ msgbox = msg_box_new(_("Error..."),_("You must type a program name!"),
+ GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
msg_box_hide_check_button(MSG_BOX(msgbox));
msg_box_run(MSG_BOX(msgbox));
gtk_widget_destroy(msgbox);
diff --git a/src/browser.h b/src/browser.h
index 3720c38..fb02029 100755..100644
--- a/src/browser.h
+++ b/src/browser.h
@@ -80,6 +80,18 @@ enum
LIST_FONT_WEIGHT,
LIST_ROW_BACKGROUND,
LIST_ROW_FOREGROUND,
+ // Tag fields
+ /*LIST_FILE_TITLE,
+ LIST_FILE_ARTIST,
+ LIST_FILE_ALBUM,
+ LIST_FILE_YEAR,
+ LIST_FILE_GENRE,
+ LIST_FILE_COMMENT,
+ LIST_FILE_COMPOSER,
+ LIST_FILE_ORIG_ARTIST,
+ LIST_FILE_COPYRIGHT,
+ LIST_FILE_URL,
+ LIST_FILE_ENCODED_BY,*/
LIST_COLUMN_COUNT
};
diff --git a/src/cddb.c b/src/cddb.c
index f3cc888..e8cf147 100644
--- a/src/cddb.c
+++ b/src/cddb.c
@@ -286,7 +286,7 @@ void Open_Cddb_Window (void)
gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,0);
// Button to generate CddbId and request string from the selected files
- CddbSearchAutoButton = Create_Button_With_Pixmap(BUTTON_SEARCH);
+ CddbSearchAutoButton = gtk_button_new_from_stock(GTK_STOCK_FIND);
gtk_box_pack_start(GTK_BOX(hbox),CddbSearchAutoButton,FALSE,FALSE,0);
GTK_WIDGET_SET_FLAGS(CddbSearchAutoButton,GTK_CAN_DEFAULT);
gtk_widget_grab_default(CddbSearchAutoButton);
@@ -347,7 +347,7 @@ void Open_Cddb_Window (void)
g_signal_connect(G_OBJECT(Button),"clicked",G_CALLBACK(ET_Sort_Displayed_File_List_And_Update_UI),GINT_TO_POINTER(SORTING_BY_ASCENDING_TRACK_NUMBER));
*/
// Button to quit
- Button = Create_Button_With_Pixmap(BUTTON_CLOSE);
+ Button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
gtk_box_pack_end(GTK_BOX(hbox),Button,FALSE,FALSE,0);
GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(Cddb_Destroy_Window),NULL);
@@ -396,7 +396,7 @@ void Open_Cddb_Window (void)
gtk_editable_paste_clipboard(GTK_EDITABLE(GTK_BIN(CddbSearchStringCombo)->child));
// Button to run the search
- CddbSearchButton = Create_Button_With_Pixmap(BUTTON_SEARCH);
+ CddbSearchButton = gtk_button_new_from_stock(GTK_STOCK_FIND);
gtk_box_pack_start(GTK_BOX(hbox),CddbSearchButton,FALSE,FALSE,0);
GTK_WIDGET_SET_FLAGS(CddbSearchButton,GTK_CAN_DEFAULT);
gtk_widget_grab_default(CddbSearchButton);
@@ -414,7 +414,7 @@ void Open_Cddb_Window (void)
gtk_tooltips_set_tip(Tips,CddbStopSearchButton,_("Stop the search ..."),NULL);
// Button to quit
- Button = Create_Button_With_Pixmap(BUTTON_CLOSE);
+ Button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
gtk_box_pack_end(GTK_BOX(hbox),Button,FALSE,FALSE,0);
GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(Cddb_Destroy_Window),NULL);
@@ -783,7 +783,7 @@ void Open_Cddb_Window (void)
g_signal_connect(G_OBJECT(CddbUseDLM2),"toggled",G_CALLBACK(Cddb_Use_Dlm_2_Check_Button_Toggled),NULL);
// Button to apply
- CddbApplyButton = Create_Button_With_Pixmap(BUTTON_APPLY);
+ CddbApplyButton = gtk_button_new_from_stock(GTK_STOCK_APPLY);
gtk_box_pack_end(GTK_BOX(hbox),CddbApplyButton,FALSE,FALSE,2);
g_signal_connect(G_OBJECT(CddbApplyButton),"clicked", G_CALLBACK(Cddb_Set_Track_Infos_To_File_List),NULL);
gtk_tooltips_set_tip(Tips,CddbApplyButton,_("Load the selected lines or all lines (if no line selected)."),NULL);
@@ -828,10 +828,6 @@ gboolean Cddb_Destroy_Window (GtkWidget *widget, GdkEvent *event, gpointer data)
{
Cddb_Window_Apply_Changes();
- // Save combobox history lists before exit
- Save_Cddb_Search_String_List(CddbSearchStringModel, MISC_COMBO_TEXT);
- Save_Cddb_Search_String_In_Result_List(CddbSearchStringInResultModel, MISC_COMBO_TEXT);
-
// FIX ME : This causes problem with memory !!
Cddb_Free_Album_List();
@@ -908,6 +904,9 @@ void Cddb_Window_Apply_Changes (void)
CDDB_USE_DLM = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbUseDLM2));
CDDB_USE_LOCAL_ACCESS = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbUseLocalAccess));
+ // Save combobox history lists before exit
+ Save_Cddb_Search_String_List(CddbSearchStringModel, MISC_COMBO_TEXT);
+ Save_Cddb_Search_String_In_Result_List(CddbSearchStringInResultModel, MISC_COMBO_TEXT);
}
}
@@ -1494,30 +1493,35 @@ GtkWidget *Create_Cddb_Track_List_Popup_Menu(GtkWidget *list)
CddbPopupMenu = gtk_menu_new();
g_signal_connect_swapped(G_OBJECT(list), "button_press_event",
- G_CALLBACK(Cddb_Popup_Menu_Handler), G_OBJECT(CddbPopupMenu));
+ G_CALLBACK(Cddb_Popup_Menu_Handler), G_OBJECT(CddbPopupMenu));
MenuItem = gtk_menu_item_new_with_label(_("Select all lines"));
gtk_menu_shell_append(GTK_MENU_SHELL(CddbPopupMenu), MenuItem);
- g_signal_connect(G_OBJECT(MenuItem),"activate", G_CALLBACK(Cddb_Track_List_Select_All),NULL);
+ g_signal_connect(G_OBJECT(MenuItem),"activate",
+ G_CALLBACK(Cddb_Track_List_Select_All),NULL);
MenuItem = gtk_menu_item_new_with_label(_("Unselect all lines"));
gtk_menu_shell_append(GTK_MENU_SHELL(CddbPopupMenu), MenuItem);
- g_signal_connect(G_OBJECT(MenuItem),"activate", G_CALLBACK(Cddb_Track_List_Unselect_All),NULL);
+ g_signal_connect(G_OBJECT(MenuItem),"activate",
+ G_CALLBACK(Cddb_Track_List_Unselect_All),NULL);
MenuItem = gtk_menu_item_new_with_label(_("Invert selection"));
gtk_menu_shell_append(GTK_MENU_SHELL(CddbPopupMenu), MenuItem);
- g_signal_connect(G_OBJECT(MenuItem),"activate", G_CALLBACK(Cddb_Track_List_Invert_Selection),NULL);
+ g_signal_connect(G_OBJECT(MenuItem),"activate",
+ G_CALLBACK(Cddb_Track_List_Invert_Selection),NULL);
MenuItem = gtk_menu_item_new();
gtk_menu_shell_append(GTK_MENU_SHELL(CddbPopupMenu), MenuItem);
MenuItem = gtk_menu_item_new_with_label(_("Sort by Track Number"));
gtk_menu_shell_append(GTK_MENU_SHELL(CddbPopupMenu),MenuItem);
- g_signal_connect(G_OBJECT(MenuItem),"activate",G_CALLBACK(Cddb_Track_List_Sort_By_Ascending_Track_Number),NULL);
+ g_signal_connect(G_OBJECT(MenuItem),"activate",
+ G_CALLBACK(Cddb_Track_List_Sort_By_Ascending_Track_Number),NULL);
MenuItem = gtk_menu_item_new_with_label(_("Sort by Track Name"));
gtk_menu_shell_append(GTK_MENU_SHELL(CddbPopupMenu),MenuItem);
- g_signal_connect(G_OBJECT(MenuItem),"activate",G_CALLBACK(Cddb_Track_List_Sort_By_Ascending_Track_Name),NULL);
+ g_signal_connect(G_OBJECT(MenuItem),"activate",
+ G_CALLBACK(Cddb_Track_List_Sort_By_Ascending_Track_Name),NULL);
gtk_widget_show_all(CddbPopupMenu);
return CddbPopupMenu;
@@ -1603,7 +1607,7 @@ gint Cddb_Open_Connection (gchar *host, gint port)
struct hostent *hostent;
struct sockaddr_in sockaddr;
gint optval = 1;
- gchar *msg;
+ gchar *msg;
if (!CddbWindow)
@@ -1753,13 +1757,14 @@ gint Cddb_Write_Result_To_File (gint socket_id, gulong *bytes_read_total)
gtk_main_iteration();
}
+ fclose(file);
+
if (bytes_read < 0)
{
Log_Print(_("Error when reading cddb response (%s)!"),g_strerror(errno));
return -1; // Error!
}
- fclose(file);
} else
{
Log_Print(_("Can't create file '%s' (%s)"),file_path,g_strerror(errno));
@@ -1767,7 +1772,6 @@ gint Cddb_Write_Result_To_File (gint socket_id, gulong *bytes_read_total)
g_free(file_path);
g_free(home_path);
-
return 0;
}
@@ -1789,11 +1793,12 @@ gint Cddb_Write_Result_To_File (gint socket_id, gulong *bytes_read_total)
*/
gint Cddb_Read_Line (FILE **file, gchar **cddb_out)
{
- gchar buffer[MAX_STRING_LEN];
-
+ gchar buffer[MAX_STRING_LEN];
+ gchar *result;
if (*file == NULL)
{
+ // Open the file for reading the first time
gchar *home_path;
gchar *file_path;
@@ -1812,7 +1817,8 @@ gint Cddb_Read_Line (FILE **file, gchar **cddb_out)
g_free(file_path);
}
- if (fgets(buffer,sizeof(buffer),*file))
+ result = fgets(buffer,sizeof(buffer),*file);
+ if (result != NULL && result != (gchar *)EOF)
{
if (buffer && strlen(buffer)>0 && buffer[strlen(buffer)-1]=='\n')
buffer[strlen(buffer)-1]='\0';
@@ -1821,8 +1827,9 @@ gint Cddb_Read_Line (FILE **file, gchar **cddb_out)
*cddb_out = g_strdup(buffer);
}else
{
- // On error or EOF
+ // On error, or EOF
fclose(*file);
+ *file = NULL;
//*cddb_out = NULL;
*cddb_out = g_strdup(""); // To avoid a crash
@@ -1841,6 +1848,7 @@ gint Cddb_Read_Line (FILE **file, gchar **cddb_out)
gint Cddb_Read_Http_Header (FILE **file, gchar **cddb_out)
{
+ // The 'file' is opened (if no error) in this function
if ( Cddb_Read_Line(file,cddb_out) < 0 )
return -1; // Error!
@@ -2291,6 +2299,8 @@ gboolean Cddb_Search_Album_List_From_String_Freedb (void)
g_free(cddb_server_cgi_path);
gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),FALSE);
gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),FALSE);
+ if (file)
+ fclose(file);
return FALSE;
}
g_free(cddb_out);
@@ -2413,6 +2423,13 @@ gboolean Cddb_Search_Album_List_From_String_Freedb (void)
g_free(cddb_server_name);
g_free(cddb_server_cgi_path);
+ // Close file opened for reading lines
+ if (file)
+ {
+ fclose(file);
+ file = NULL;
+ }
+
gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),FALSE);
gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),FALSE);
@@ -2463,8 +2480,8 @@ gboolean Cddb_Search_Album_List_From_String_Gnudb (void)
gint bytes_written;
gulong bytes_read_total = 0;
FILE *file;
- gint num_albums = 0;
- gint total_num_albums = 0;
+ gint num_albums = 0;
+ gint total_num_albums = 0;
gchar *next_page = NULL;
gint next_page_cpt = 0;
@@ -2603,6 +2620,8 @@ gboolean Cddb_Search_Album_List_From_String_Gnudb (void)
g_free(cddb_server_cgi_path);
gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),FALSE);
gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),FALSE);
+ if (file)
+ fclose(file);
return FALSE;
}
g_free(cddb_out);
@@ -2746,6 +2765,13 @@ gboolean Cddb_Search_Album_List_From_String_Gnudb (void)
g_free(cddb_server_name);
g_free(cddb_server_cgi_path);
+ // Close file opened for reading lines
+ if (file)
+ {
+ fclose(file);
+ file = NULL;
+ }
+
// Close connection
Cddb_Close_Connection(socket_id);
@@ -2935,16 +2961,16 @@ gboolean Cddb_Search_Album_From_Selected_Files (void)
// We check if the file corresponding to the discid exists in each directory
for (i=0; i<=CddbDirSize; i++)
{
- FILE *file;
gchar *file_path;
if (!CDDB_LOCAL_PATH || strlen(CDDB_LOCAL_PATH)==0)
{
GtkWidget *msgbox;
- msgbox = msg_box_new(_("Local CD search..."),_("The path for 'Local "
- "CD Data Base' wasn't defined!\nFill it in the "
- "preferences window."),GTK_STOCK_DIALOG_ERROR,BUTTON_YES,0);
+ msgbox = msg_box_new(_("Local CD search..."),
+ _("The path for 'Local CD Data Base' wasn't "
+ "defined!\nFill it in the preferences window."),
+ GTK_STOCK_DIALOG_ERROR,BUTTON_YES,0);
msg_box_hide_check_button(MSG_BOX(msgbox));
msg_box_run(MSG_BOX(msgbox));
gtk_widget_destroy(msgbox);
@@ -3014,8 +3040,10 @@ gboolean Cddb_Search_Album_From_Selected_Files (void)
CddbAlbumList = g_list_append(CddbAlbumList,cddbalbum);
- if (rc != 0) // Need to close it, if not done in Cddb_Read_Line
+ // Need to close it, if not done in Cddb_Read_Line
+ if (file)
fclose(file);
+ file = NULL;
}
g_free(file_path);
@@ -3138,6 +3166,8 @@ gboolean Cddb_Search_Album_From_Selected_Files (void)
g_free(cddb_server_cgi_path);
gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),FALSE);
gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),FALSE);
+ if (file)
+ fclose(file);
return FALSE;
}
g_free(cddb_out);
@@ -3222,6 +3252,13 @@ gboolean Cddb_Search_Album_From_Selected_Files (void)
g_free(cddb_server_name);
g_free(cddb_server_cgi_path);
+ // Close file opened for reading lines
+ if (file)
+ {
+ fclose(file);
+ file = NULL;
+ }
+
// Close connection
Cddb_Close_Connection(socket_id);
}
@@ -3291,7 +3328,7 @@ gboolean Cddb_Get_Album_Tracks_List (GtkTreeSelection* selection)
gchar *cddb_server_cgi_path;
gint bytes_written;
gulong bytes_read_total = 0;
- FILE *file;
+ FILE *file = NULL;
gboolean read_track_offset = FALSE;
GtkTreeIter row;
@@ -3397,6 +3434,8 @@ gboolean Cddb_Get_Album_Tracks_List (GtkTreeSelection* selection)
Log_Print("%s",msg);
g_free(msg);
g_free(cddb_out);
+ if (file)
+ fclose(file);
return FALSE;
}
g_free(cddb_out);
@@ -3561,6 +3600,13 @@ gboolean Cddb_Get_Album_Tracks_List (GtkTreeSelection* selection)
}
g_free(cddb_end_str);
+ // Close file opened for reading lines
+ if (file)
+ {
+ fclose(file);
+ file = NULL;
+ }
+
if (cddb_server_name)
{
// Remote access
@@ -3751,7 +3797,8 @@ gboolean Cddb_Set_Track_Infos_To_File_List (void)
msg = g_strdup_printf(_("Be careful, you are applying %d lines of the CDDB "
"results to %d lines in the list of files!\n\nDo you want to continue ?"),
rows_to_loop,file_selectedcount);
- msgbox = msg_box_new(_("Write Tag from CDDB..."),msg,GTK_STOCK_DIALOG_QUESTION,BUTTON_NO,BUTTON_YES,0);
+ msgbox = msg_box_new(_("Write Tag from CDDB..."),msg,
+ GTK_STOCK_DIALOG_QUESTION,BUTTON_NO,BUTTON_YES,0);
msg_box_hide_check_button(MSG_BOX(msgbox));
button = msg_box_run(MSG_BOX(msgbox));
gtk_widget_destroy(msgbox);
@@ -3760,6 +3807,7 @@ gboolean Cddb_Set_Track_Infos_To_File_List (void)
{
g_list_foreach(file_iterlist, (GFunc)g_free, NULL);
g_list_free(file_iterlist);
+ //gdk_window_raise(CddbWindow->window);
return FALSE;
}
}
diff --git a/src/easytag.c b/src/easytag.c
index 2b26967..6a3bd4e 100644
--- a/src/easytag.c
+++ b/src/easytag.c
@@ -60,7 +60,7 @@
# include "win32/win32dep.h"
#endif
-#include "../pixmaps/EasyTAG.xpm"
+#include "../pixmaps/EasyTAG_icon.xpm"
/****************
@@ -140,10 +140,10 @@ int main (int argc, char *argv[])
{
GtkWidget *MainVBox;
GtkWidget *HBox, *VBox;
- GdkPixmap *pixmap;
- GdkBitmap *mask;
gboolean created_settings;
struct stat statbuf;
+ GdkPixmap *pixmap;
+ GdkBitmap *mask;
#ifdef WIN32
@@ -316,7 +316,7 @@ int main (int argc, char *argv[])
/* Minimised window icon */
gtk_widget_realize(MainWindow);
- pixmap = gdk_pixmap_create_from_xpm_d(MainWindow->window,&mask,NULL,EasyTAG_xpm);
+ pixmap = gdk_pixmap_create_from_xpm_d(MainWindow->window,&mask,NULL,EasyTAG_icon_xpm);
gdk_window_set_icon(MainWindow->window,(GdkWindow *)NULL,pixmap,mask);
@@ -1038,18 +1038,18 @@ GtkWidget *Create_Tag_Area (void)
hbox = gtk_hbox_new(FALSE, 4);
gtk_table_attach(GTK_TABLE(Table),hbox,1,4,1,2,GTK_FILL,GTK_FILL,TablePadding,TablePadding);
- PictureClearButton = gtk_button_new();
- Icon = gtk_image_new_from_stock(GTK_STOCK_REMOVE, GTK_ICON_SIZE_SMALL_TOOLBAR);
- gtk_container_add(GTK_CONTAINER(PictureClearButton),Icon);
- gtk_box_pack_start(GTK_BOX(hbox),PictureClearButton,FALSE,FALSE,0);
- gtk_tooltips_set_tip(Tips,PictureClearButton,_("Remove selected pictures, else all pictures."),NULL);
-
PictureAddButton = gtk_button_new();
Icon = gtk_image_new_from_stock(GTK_STOCK_ADD, GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_container_add(GTK_CONTAINER(PictureAddButton),Icon);
gtk_box_pack_start(GTK_BOX(hbox),PictureAddButton,FALSE,FALSE,0);
gtk_tooltips_set_tip(Tips,PictureAddButton,_("Add pictures to the tag (drag and drop is also available)."),NULL);
+ PictureClearButton = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_REMOVE, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(PictureClearButton),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),PictureClearButton,FALSE,FALSE,0);
+ gtk_tooltips_set_tip(Tips,PictureClearButton,_("Remove selected pictures, else all pictures."),NULL);
+
Label = gtk_label_new(" ");
gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,0);
@@ -3097,7 +3097,7 @@ void Action_Select_Browser_Style (void)
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
-void Read_Directory (gchar *path_real)
+gboolean Read_Directory (gchar *path_real)
{
DIR *dir;
gchar *msg;
@@ -3110,7 +3110,8 @@ void Read_Directory (gchar *path_real)
GtkAction *uiaction;
GtkWidget *TBViewMode;
- if (!path_real) return;
+ if (!path_real)
+ return FALSE;
ReadingDirectory = TRUE; /* A flag to avoid to start an other reading */
@@ -3138,6 +3139,7 @@ void Read_Directory (gchar *path_real)
/* Placed only here, to empty the previous list of files */
if ((dir=opendir(path_real)) == NULL)
{
+ // Message if the directory doesn't exist...
GtkWidget *msgbox;
gchar *path_utf8 = filename_to_display(path_real);
gchar *msg;
@@ -3150,8 +3152,10 @@ void Read_Directory (gchar *path_real)
msg_box_hide_check_button(MSG_BOX(msgbox));
msg_box_run(MSG_BOX(msgbox));
gtk_widget_destroy(msgbox);
+
ReadingDirectory = FALSE; //Allow a new reading
- return;
+ Browser_Area_Set_Sensitive(TRUE);
+ return FALSE;
}
closedir(dir);
@@ -3266,6 +3270,8 @@ void Read_Directory (gchar *path_real)
g_free(msg);
Set_Unbusy_Cursor();
ReadingDirectory = FALSE;
+
+ return TRUE;
}
@@ -4173,7 +4179,7 @@ void Convert_Insert_Space (GtkWidget *entry)
strncpy(string,gtk_entry_get_text(GTK_ENTRY(entry)),string_length);
string[string_length]='\0';
- Scan_Process_Fields_Insert_Space(string);
+ Scan_Process_Fields_Insert_Space(&string);
gtk_entry_set_text(GTK_ENTRY(entry),string);
g_free(string);
}
@@ -4463,6 +4469,13 @@ gchar *signal_to_string (gint signal)
*/
void Display_Usage (void)
{
+ // Fix from Steve Ralston for gcc-3.2.2
+#ifdef WIN32
+ #define xPREFIX "c:"
+#else
+ #define xPREFIX ""
+#endif
+
g_print(_("\nUsage: easytag [option] "
"\n or: easytag [directory]\n"
"\n"
@@ -4473,13 +4486,12 @@ void Display_Usage (void)
"\n"
"Directory:\n"
"----------\n"
-#ifdef WIN32
- "c:/path_to/files Use an absolute path to load,\n"
-#else
- "/path_to/files Use an absolute path to load,\n"
-#endif
+ "%s/path_to/files Use an absolute path to load,\n"
"path_to/files Use a relative path.\n"
- "\n"));
+ "\n"),xPREFIX);
+
+ #undef xPREFIX
+
exit(0);
}
@@ -4535,8 +4547,8 @@ void Quit_MainWindow (void)
if (ET_Check_If_All_Files_Are_Saved() != TRUE)
{
/* Some files haven't been saved */
- msgbox = msg_box_new(_("Confirm..."),_("Some files have been modified but not "
- "saved...\nDo you want to save them before exiting the program?"),
+ msgbox = msg_box_new(_("Confirm..."),_("Some files have been modified but "
+ "not saved...\nDo you want to save them before exiting the program?"),
GTK_STOCK_DIALOG_QUESTION,BUTTON_CANCEL,BUTTON_NO,BUTTON_YES,0);
msg_box_hide_check_button(MSG_BOX(msgbox));
button = msg_box_run(MSG_BOX(msgbox));
diff --git a/src/easytag.h b/src/easytag.h
index 1b4fdd1..9823c75 100755..100644
--- a/src/easytag.h
+++ b/src/easytag.h
@@ -192,7 +192,7 @@ void File_Area_Set_Sensitive (gboolean activate);
void Tag_Area_Set_Sensitive (gboolean activate);
void Tag_Area_Display_Controls (ET_File *ETFile);
-void Read_Directory (gchar *path);
+gboolean Read_Directory (gchar *path);
void Quit_MainWindow (void);
void MainWindow_Apply_Changes (void);
void Update_Command_Buttons_Sensivity (void);
diff --git a/src/et_core.c b/src/et_core.c
index 3240088..3240088 100755..100644
--- a/src/et_core.c
+++ b/src/et_core.c
diff --git a/src/et_core.h b/src/et_core.h
index ccc7f76..6836656 100755..100644
--- a/src/et_core.h
+++ b/src/et_core.h
@@ -242,6 +242,7 @@ static const ET_File_Description ETFileDescription[] =
#endif
#ifdef ENABLE_OGG
{OGG_FILE, ".ogg", OGG_TAG},
+ {OGG_FILE, ".oga", OGG_TAG},
#endif
#ifdef ENABLE_SPEEX
{SPEEX_FILE, ".spx", OGG_TAG}, // Implemented by Pierre Dumuid
diff --git a/src/id3_tag.c b/src/id3_tag.c
index 9092fee..9092fee 100755..100644
--- a/src/id3_tag.c
+++ b/src/id3_tag.c
diff --git a/src/id3lib/Makefile.in b/src/id3lib/Makefile.in
index 6eea830..9e89aa5 100644
--- a/src/id3lib/Makefile.in
+++ b/src/id3lib/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.10 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005 Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -14,15 +14,11 @@
@SET_MAKE@
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
@@ -51,33 +47,33 @@ libid3bugfix_a_AR = $(AR) $(ARFLAGS)
libid3bugfix_a_LIBADD =
am_libid3bugfix_a_OBJECTS = c_wrapper.$(OBJEXT)
libid3bugfix_a_OBJECTS = $(am_libid3bugfix_a_OBJECTS)
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
- $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
SOURCES = $(libid3bugfix_a_SOURCES)
DIST_SOURCES = $(libid3bugfix_a_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
@@ -115,8 +111,10 @@ GLIB_MKENUMS = @GLIB_MKENUMS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GOBJECT_QUERY = @GOBJECT_QUERY@
+GREP = @GREP@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
+INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -130,11 +128,11 @@ LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
OBJEXT = @OBJEXT@
OGG_CFLAGS = @OGG_CFLAGS@
OGG_LIBS = @OGG_LIBS@
@@ -162,17 +160,13 @@ VORBIS_LIBS = @VORBIS_LIBS@
WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
WAVPACK_LIBS = @WAVPACK_LIBS@
XGETTEXT = @XGETTEXT@
-ac_ct_AR = @ac_ct_AR@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -184,28 +178,39 @@ build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
+builddir = @builddir@
datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
+htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
+localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
+psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
noinst_LIBRARIES = libid3bugfix.a
INCLUDES = -DLOCALE=\"$(localedir)\"
EXTRA_DIST = \
@@ -265,22 +270,22 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c_wrapper.Po@am__quote@
.cpp.o:
-@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
.cpp.obj:
-@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.cpp.lo:
-@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
@@ -291,10 +296,6 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-distclean-libtool:
- -rm -f libtool
-uninstall-info-am:
-
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
@@ -344,22 +345,21 @@ distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
- esac; \
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
- else \
- dir=''; \
- fi; \
if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
@@ -407,7 +407,7 @@ distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
- distclean-libtool distclean-tags
+ distclean-tags
dvi: dvi-am
@@ -421,12 +421,20 @@ info-am:
install-data-am:
+install-dvi: install-dvi-am
+
install-exec-am:
+install-html: install-html-am
+
install-info: install-info-am
install-man:
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
installcheck-am:
maintainer-clean: maintainer-clean-am
@@ -447,19 +455,22 @@ ps: ps-am
ps-am:
-uninstall-am: uninstall-info-am
+uninstall-am:
+
+.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
clean-libtool clean-noinstLIBRARIES ctags distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-exec \
- install-exec-am install-info install-info-am install-man \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
- pdf pdf-am ps ps-am tags uninstall uninstall-am \
- uninstall-info-am
+ pdf pdf-am ps ps-am tags uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/src/id3v24_tag.c b/src/id3v24_tag.c
index d15bfec..d1302ca 100755..100644
--- a/src/id3v24_tag.c
+++ b/src/id3v24_tag.c
@@ -79,8 +79,8 @@ static int libid3tag_Get_Frame_Str (const struct id3_frame *frame, unsigned
static void Id3tag_delete_frames (struct id3_tag *tag, const gchar *name, int start);
static void Id3tag_delete_txxframes (struct id3_tag *tag, const gchar *param1, int start);
-static struct id3_frame *Id3tag_findncreate_frame (struct id3_tag *tag, const gchar *name);
-static struct id3_frame *Id3tag_findncreate_txxframe (struct id3_tag *tag, const gchar *param1);
+static struct id3_frame *Id3tag_find_and_create_frame (struct id3_tag *tag, const gchar *name);
+static struct id3_frame *Id3tag_find_and_create_txxframe (struct id3_tag *tag, const gchar *param1);
static int id3taglib_set_field (struct id3_frame *frame, const gchar *str, enum id3_field_type type, int num, int clear, int id3v1);
static int etag_set_tags (const gchar *str, const char *frame_name, enum id3_field_type field_type, struct id3_tag *v1tag, struct id3_tag *v2tag, gboolean *strip_tags);
static int etag_write_tags (const gchar *filename, const struct id3_tag *v1tag, const struct id3_tag *v2tag, gboolean strip_tags);
@@ -359,21 +359,24 @@ gboolean Id3tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
if ( (frame = id3_tag_findframe(tag, "WXXX", 0)) )
update |= libid3tag_Get_Frame_Str(frame, EASYTAG_ID3_FIELD_LATIN1, &FileTag->url);
- /*********************
- * Encoded by (TENC) *
- *********************/
+ /*******************************
+ * Encoded by (TENC) or (TXXX) *
+ *******************************/
if ( (frame = id3_tag_findframe(tag, "TENC", 0)) )
update |= libid3tag_Get_Frame_Str(frame, ~0, &FileTag->encoded_by);
+
/* Encoded by in TXXX frames */
string1 = NULL;
for (i = 0; (frame = id3_tag_findframe(tag, "TXX", i)); i++)
{
+ // Do nothing if already read...
if (FileTag->encoded_by)
break;
+
tmpupdate = libid3tag_Get_Frame_Str(frame, ~0, &string1);
if (string1)
{
- if (strcasestr(string1, EASYTAG_STRING_ENCODEDBY MULTIFIELD_SEPARATOR) == string1)
+ if (strncasecmp(string1, EASYTAG_STRING_ENCODEDBY MULTIFIELD_SEPARATOR, strlen(EASYTAG_STRING_ENCODEDBY MULTIFIELD_SEPARATOR)) == 0)
{
FileTag->encoded_by = g_strdup(&string1[sizeof(EASYTAG_STRING_ENCODEDBY) + sizeof(MULTIFIELD_SEPARATOR) - 2]);
g_free(string1);
@@ -937,13 +940,15 @@ gboolean Id3tag_Write_File_v24Tag (ET_File *ETFile)
/***************
* Encoded by *
***************/
- if ( v2tag && FileTag->encoded_by && *FileTag->encoded_by
- && (frame = Id3tag_findncreate_txxframe(v2tag, EASYTAG_STRING_ENCODEDBY)))
- {
- id3taglib_set_field(frame, EASYTAG_STRING_ENCODEDBY, ID3_FIELD_TYPE_STRING, 0, 1, 0);
- id3taglib_set_field(frame, FileTag->encoded_by, ID3_FIELD_TYPE_STRING, 1, 0, 0);
- strip_tags = FALSE;
- }else
+ //if ( v2tag && FileTag->encoded_by && *FileTag->encoded_by
+ //&& (frame = Id3tag_find_and_create_txxframe(v2tag, EASYTAG_STRING_ENCODEDBY)))
+ //{
+ // id3taglib_set_field(frame, EASYTAG_STRING_ENCODEDBY, ID3_FIELD_TYPE_STRING, 0, 1, 0);
+ // id3taglib_set_field(frame, FileTag->encoded_by, ID3_FIELD_TYPE_STRING, 1, 0, 0);
+ // strip_tags = FALSE;
+ //}else
+ // Save encoder name in TENC frame instead of the TXX frame
+ etag_set_tags(FileTag->encoded_by, "TENC", ID3_FIELD_TYPE_STRINGLIST, NULL, v2tag, &strip_tags);
if (v2tag)
Id3tag_delete_txxframes(v2tag, EASYTAG_STRING_ENCODEDBY, 0);
@@ -1062,7 +1067,7 @@ Id3tag_delete_txxframes(struct id3_tag *tag, const gchar *param1, int start)
{
str = NULL;
if ((str = (gchar *)id3_ucs4_latin1duplicate(ucs4string))
- && (strcasestr(str, param1) == str) )
+ && (strncasecmp(str, param1, strlen(param1)) == 0) )
{
g_free(str);
id3_tag_detachframe(tag, frame);
@@ -1080,7 +1085,7 @@ Id3tag_delete_txxframes(struct id3_tag *tag, const gchar *param1, int start)
* create new if not found
*/
static struct id3_frame *
-Id3tag_findncreate_frame(struct id3_tag *tag, const gchar *name)
+Id3tag_find_and_create_frame (struct id3_tag *tag, const gchar *name)
{
struct id3_frame *frame;
@@ -1103,7 +1108,7 @@ Id3tag_findncreate_frame(struct id3_tag *tag, const gchar *name)
* create new if not found
*/
static struct id3_frame *
-Id3tag_findncreate_txxframe(struct id3_tag *tag, const gchar *param1)
+Id3tag_find_and_create_txxframe(struct id3_tag *tag, const gchar *param1)
{
const id3_ucs4_t *ucs4string;
struct id3_frame *frame;
@@ -1120,7 +1125,7 @@ Id3tag_findncreate_txxframe(struct id3_tag *tag, const gchar *param1)
{
str = NULL;
if ((str = (gchar *)id3_ucs4_latin1duplicate(ucs4string))
- && (strcasestr(str, param1) == str) )
+ && (strncasecmp(str, param1, strlen(param1)) == 0) )
{
g_free(str);
break;
@@ -1320,10 +1325,10 @@ etag_set_tags(const gchar *str,
*strip_tags = FALSE;
if (v2tag
- && (ftmp = Id3tag_findncreate_frame(v2tag, frame_name)))
+ && (ftmp = Id3tag_find_and_create_frame(v2tag, frame_name)))
id3taglib_set_field(ftmp, str, field_type, 0, 1, 0);
if (v1tag
- && (ftmp = Id3tag_findncreate_frame(v1tag, frame_name)))
+ && (ftmp = Id3tag_find_and_create_frame(v1tag, frame_name)))
id3taglib_set_field(ftmp, str, field_type, 0, 1, 1);
}else
if (v2tag)
diff --git a/src/libapetag/Makefile.in b/src/libapetag/Makefile.in
index 68858ad..1c5dda8 100644
--- a/src/libapetag/Makefile.in
+++ b/src/libapetag/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.10 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005 Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -14,15 +14,11 @@
@SET_MAKE@
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
@@ -52,25 +48,24 @@ libapetag_a_LIBADD =
am_libapetag_a_OBJECTS = apetaglib.$(OBJEXT) is_tag.$(OBJEXT) \
info_mac.$(OBJEXT) info_mpc.$(OBJEXT)
libapetag_a_OBJECTS = $(am_libapetag_a_OBJECTS)
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
SOURCES = $(libapetag_a_SOURCES)
DIST_SOURCES = $(libapetag_a_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
@@ -108,8 +103,10 @@ GLIB_MKENUMS = @GLIB_MKENUMS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GOBJECT_QUERY = @GOBJECT_QUERY@
+GREP = @GREP@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
+INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -123,11 +120,11 @@ LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
OBJEXT = @OBJEXT@
OGG_CFLAGS = @OGG_CFLAGS@
OGG_LIBS = @OGG_LIBS@
@@ -155,17 +152,13 @@ VORBIS_LIBS = @VORBIS_LIBS@
WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
WAVPACK_LIBS = @WAVPACK_LIBS@
XGETTEXT = @XGETTEXT@
-ac_ct_AR = @ac_ct_AR@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -177,28 +170,39 @@ build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
+builddir = @builddir@
datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
+htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
+localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
+psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
noinst_LIBRARIES = libapetag.a
INCLUDES = -DLOCALE=\"$(localedir)\"
libapetag_a_SOURCES = \
@@ -270,22 +274,22 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_tag.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
@@ -296,10 +300,6 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-distclean-libtool:
- -rm -f libtool
-uninstall-info-am:
-
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
@@ -349,22 +349,21 @@ distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
- esac; \
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
- else \
- dir=''; \
- fi; \
if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
@@ -412,7 +411,7 @@ distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
- distclean-libtool distclean-tags
+ distclean-tags
dvi: dvi-am
@@ -426,12 +425,20 @@ info-am:
install-data-am:
+install-dvi: install-dvi-am
+
install-exec-am:
+install-html: install-html-am
+
install-info: install-info-am
install-man:
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
installcheck-am:
maintainer-clean: maintainer-clean-am
@@ -452,19 +459,22 @@ ps: ps-am
ps-am:
-uninstall-am: uninstall-info-am
+uninstall-am:
+
+.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
clean-libtool clean-noinstLIBRARIES ctags distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-exec \
- install-exec-am install-info install-info-am install-man \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
- pdf pdf-am ps ps-am tags uninstall uninstall-am \
- uninstall-info-am
+ pdf pdf-am ps ps-am tags uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/src/libmpg123/Makefile.in b/src/libmpg123/Makefile.in
index 203fdc7..801b487 100644
--- a/src/libmpg123/Makefile.in
+++ b/src/libmpg123/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.10 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005 Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -14,15 +14,11 @@
@SET_MAKE@
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
@@ -53,25 +49,24 @@ am_libmpg123_a_OBJECTS = common.$(OBJEXT) dxhead.$(OBJEXT) \
getbits.$(OBJEXT) layer1.$(OBJEXT) layer2.$(OBJEXT) \
layer3.$(OBJEXT) mpg123.$(OBJEXT)
libmpg123_a_OBJECTS = $(am_libmpg123_a_OBJECTS)
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
SOURCES = $(libmpg123_a_SOURCES)
DIST_SOURCES = $(libmpg123_a_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
@@ -109,8 +104,10 @@ GLIB_MKENUMS = @GLIB_MKENUMS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GOBJECT_QUERY = @GOBJECT_QUERY@
+GREP = @GREP@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
+INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -124,11 +121,11 @@ LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
OBJEXT = @OBJEXT@
OGG_CFLAGS = @OGG_CFLAGS@
OGG_LIBS = @OGG_LIBS@
@@ -156,17 +153,13 @@ VORBIS_LIBS = @VORBIS_LIBS@
WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
WAVPACK_LIBS = @WAVPACK_LIBS@
XGETTEXT = @XGETTEXT@
-ac_ct_AR = @ac_ct_AR@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -178,28 +171,39 @@ build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
+builddir = @builddir@
datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
+htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
+localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
+psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
noinst_LIBRARIES = libmpg123.a
INCLUDES = -DLOCALE=\"$(localedir)\"
libmpg123_a_SOURCES = \
@@ -275,22 +279,22 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpg123.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
@@ -301,10 +305,6 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-distclean-libtool:
- -rm -f libtool
-uninstall-info-am:
-
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
@@ -354,22 +354,21 @@ distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
- esac; \
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
- else \
- dir=''; \
- fi; \
if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
@@ -417,7 +416,7 @@ distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
- distclean-libtool distclean-tags
+ distclean-tags
dvi: dvi-am
@@ -431,12 +430,20 @@ info-am:
install-data-am:
+install-dvi: install-dvi-am
+
install-exec-am:
+install-html: install-html-am
+
install-info: install-info-am
install-man:
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
installcheck-am:
maintainer-clean: maintainer-clean-am
@@ -457,19 +464,22 @@ ps: ps-am
ps-am:
-uninstall-am: uninstall-info-am
+uninstall-am:
+
+.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
clean-libtool clean-noinstLIBRARIES ctags distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-exec \
- install-exec-am install-info install-info-am install-man \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
- pdf pdf-am ps ps-am tags uninstall uninstall-am \
- uninstall-info-am
+ pdf pdf-am ps ps-am tags uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/src/log.c b/src/log.c
index 0dfc39b..155d753 100755..100644
--- a/src/log.c
+++ b/src/log.c
@@ -28,6 +28,7 @@
#include "log.h"
#include "easytag.h"
#include "bar.h"
+#include "setting.h"
#ifdef WIN32
# include "win32/win32dep.h"
@@ -41,6 +42,7 @@
GtkWidget *LogList = NULL;
GtkListStore *logListModel;
GList *LogPrintTmpList = NULL; // Temporary list to store messages for the LogList when this control wasn't yet created
+gint LogListNbrRows;
enum
{
@@ -142,8 +144,9 @@ GtkWidget *Create_Log_Area (void)
// Load pending messages in the Log list
Log_Print_Tmp_List();
- //gtk_widget_show_all(ScrollWindowLogList);
- gtk_widget_show_all(Frame);
+ if (SHOW_LOG_VIEW)
+ //gtk_widget_show_all(ScrollWindowLogList);
+ gtk_widget_show_all(Frame);
//return ScrollWindowLogList;
return Frame;
@@ -190,7 +193,10 @@ void Log_List_Set_Row_Visible (GtkTreeModel *treeModel, GtkTreeIter *rowIter)
void Log_Clean_Log_List (void)
{
if (logListModel)
+ {
gtk_list_store_clear(logListModel);
+ LogListNbrRows = 0;
+ }
}
@@ -236,6 +242,15 @@ void Log_Print (gchar const *format, ...)
if (LogList && logListModel)
{
gchar *time = Log_Format_Date();
+
+ // Remove lines that exceed the limit
+ if (LogListNbrRows > LOG_MAX_LINES - 1
+ && gtk_tree_model_get_iter_first(GTK_TREE_MODEL(logListModel), &iter))
+ {
+ gtk_list_store_remove(GTK_LIST_STORE(logListModel), &iter);
+ }
+
+ LogListNbrRows++;
gtk_list_store_append(logListModel, &iter);
gtk_list_store_set(logListModel, &iter,
LOG_TIME_TEXT, time,
@@ -296,6 +311,7 @@ void Log_Print_Tmp_List (void)
if (LogList && logListModel)
{
+ LogListNbrRows++;
gtk_list_store_append(logListModel, &iter);
gtk_list_store_set(logListModel, &iter,
LOG_TIME_TEXT, ((Log_Data *)LogPrintTmpList->data)->time,
diff --git a/src/misc.c b/src/misc.c
index 41f12ec..9346abe 100755..100644
--- a/src/misc.c
+++ b/src/misc.c
@@ -173,12 +173,15 @@ void Button_Load_Set_Sensivity (GtkWidget *button, GtkWidget *entry
GtkWidget *Create_Load_Filename_Popup_Menu (GtkWidget *list);
void Load_Filename_List_Insert_Blank_Line (GtkWidget *list);
void Load_Filename_List_Delete_Line (GtkWidget *list);
+void Load_Filename_List_Move_Up (GtkWidget *list);
+void Load_Filename_List_Move_Down (GtkWidget *list);
void Load_Filename_List_Delete_All_Blank_Lines (GtkWidget *list);
void Load_Filename_List_Reload (GtkWidget *list);
void Load_Filename_Update_Text_Line (GtkWidget *entry, GtkWidget *list);
void Load_Filename_Edit_Text_Line (GtkTreeSelection *selection, gpointer data);
-void Create_Xpm_Icon_Factory (const char **xpmdata, const char *name);
+void Create_Xpm_Icon_Factory (const char **xpm_data, const char *name_in_factory);
+void Create_Png_Icon_Factory (const char *png_file, const char *name_in_factory);
/* Browser */
static void Open_File_Selection_Window (GtkWidget *entry, gchar *title, GtkFileChooserAction action);
@@ -684,8 +687,8 @@ void Set_Unbusy_Cursor (void)
#include "../pixmaps/forbidden.xpm"
#include "../pixmaps/read_only.xpm"
//#include "../pixmaps/sequence_track.xpm"
-#include "../pixmaps/red_lines.xpm"
#include "../pixmaps/artist_album.xpm"
+#include "../pixmaps/red_lines.xpm"
#include "../pixmaps/add_folder.xpm"
#include "../pixmaps/parent_folder.xpm"
#include "../pixmaps/sound.xpm"
@@ -697,6 +700,7 @@ void Init_Custom_Icons (void)
{
Create_Xpm_Icon_Factory((const char**)select_all_xpm, "easytag-select-all");
Create_Xpm_Icon_Factory((const char**)scan_xpm, "easytag-scan");
+ ////Create_Png_Icon_Factory("scan.png", "easytag-scan");
Create_Xpm_Icon_Factory((const char**)invert_selection_xpm, "easytag-invert-selection");
Create_Xpm_Icon_Factory((const char**)add_xpm, "easytag-add");
Create_Xpm_Icon_Factory((const char**)unselect_all_xpm, "easytag-unselect-all");
@@ -708,6 +712,7 @@ void Init_Custom_Icons (void)
//Create_Xpm_Icon_Factory((const char**)sequence_track_xpm, "easytag-sequence-track");
Create_Xpm_Icon_Factory((const char**)red_lines_xpm, "easytag-red-lines");
Create_Xpm_Icon_Factory((const char**)artist_album_xpm, "easytag-artist-album");
+ ////Create_Png_Icon_Factory("artist_album.png", "easytag-artist-album");
Create_Xpm_Icon_Factory((const char**)parent_folder_xpm, "easytag-parent-folder");
Create_Xpm_Icon_Factory((const char**)add_folder_xpm, "easytag-add-folder");
Create_Xpm_Icon_Factory((const char**)sound_xpm, "easytag-sound");
@@ -722,22 +727,62 @@ void Init_Custom_Icons (void)
* Create an icon factory from the specified pixmap
* Also add it to the GTK stock images
*/
-void Create_Xpm_Icon_Factory (const char **xpmdata, const char *xpmname)
+void Create_Xpm_Icon_Factory (const char **xpm_data, const char *name_in_factory)
{
- GtkIconSet *set;
- GtkIconFactory *factory;
- GdkPixbuf *pixbuf;
+ GtkIconSet *icon;
+ GtkIconFactory *factory;
+ GdkPixbuf *pixbuf;
- if (!*xpmdata || !xpmname)
+ if (!*xpm_data || !name_in_factory)
return;
- pixbuf = gdk_pixbuf_new_from_xpm_data(xpmdata);
+ pixbuf = gdk_pixbuf_new_from_xpm_data(xpm_data);
- set = gtk_icon_set_new_from_pixbuf(pixbuf);
- factory = gtk_icon_factory_new();
- gtk_icon_factory_add(factory, xpmname, set);
- gtk_icon_set_unref(set);
- gtk_icon_factory_add_default(factory);
+ if (pixbuf)
+ {
+ icon = gtk_icon_set_new_from_pixbuf(pixbuf);
+ g_object_unref(G_OBJECT(pixbuf));
+
+ factory = gtk_icon_factory_new();
+ gtk_icon_factory_add(factory, name_in_factory, icon);
+ gtk_icon_set_unref(icon);
+ gtk_icon_factory_add_default(factory);
+ }
+}
+
+/*
+ * Create an icon factory from the specified png file
+ * Also add it to the GTK stock images
+ */
+void Create_Png_Icon_Factory (const char *png_file, const char *name_in_factory)
+{
+ GdkPixbuf *pixbuf;
+ GtkIconSet *icon;
+ GtkIconFactory *factory;
+ gchar *path;
+ GError *error = NULL;
+
+ if (!*png_file || !name_in_factory)
+ return;
+
+ path = g_strconcat(PACKAGE_DATA_DIR,"/",png_file,NULL);
+ pixbuf = gdk_pixbuf_new_from_file(path,&error);
+ g_free(path);
+
+ if (pixbuf)
+ {
+ icon = gtk_icon_set_new_from_pixbuf(pixbuf);
+ g_object_unref(G_OBJECT(pixbuf));
+
+ factory = gtk_icon_factory_new();
+ gtk_icon_factory_add(factory, name_in_factory, icon);
+ gtk_icon_set_unref(icon);
+ gtk_icon_factory_add_default(factory);
+ }else
+ {
+ Log_Print(error->message);
+ g_error_free(error);
+ }
}
/*
@@ -1443,7 +1488,7 @@ void Open_Write_Playlist_Window (void)
gtk_box_set_spacing(GTK_BOX(ButtonBox), 10);
/* Button to Cancel */
- Button = Create_Button_With_Pixmap(BUTTON_CLOSE);
+ Button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
GTK_WIDGET_SET_FLAGS(Button, GTK_CAN_DEFAULT);
gtk_widget_grab_default(Button);
@@ -1468,10 +1513,6 @@ void Destroy_Write_Playlist_Window (void)
{
if (WritePlaylistWindow)
{
- /* Save combobox history lists before exit */
- Save_Play_List_Name_List(PlayListNameMaskModel, MISC_COMBO_TEXT);
- Save_Playlist_Content_Mask_List(PlayListContentMaskModel, MISC_COMBO_TEXT);
-
Write_Playlist_Window_Apply_Changes();
gtk_widget_destroy(WritePlaylistWindow);
@@ -1515,8 +1556,13 @@ void Write_Playlist_Window_Apply_Changes (void)
PLAYLIST_CONTENT_NONE = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_content_none));
PLAYLIST_CONTENT_FILENAME = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_content_filename));
PLAYLIST_CONTENT_MASK = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_content_mask));
+
if (PLAYLIST_CONTENT_MASK_VALUE) g_free(PLAYLIST_CONTENT_MASK_VALUE);
PLAYLIST_CONTENT_MASK_VALUE = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(PlayListContentMaskCombo)->child)));
+
+ /* Save combobox history lists before exit */
+ Save_Play_List_Name_List(PlayListNameMaskModel, MISC_COMBO_TEXT);
+ Save_Playlist_Content_Mask_List(PlayListContentMaskModel, MISC_COMBO_TEXT);
}
}
@@ -2189,7 +2235,7 @@ void Open_Search_File_Window (void)
"changed", G_CALLBACK(Search_Result_List_Row_Selected), NULL);
// Button to run the search
- Button = Create_Button_With_Pixmap(BUTTON_SEARCH);
+ Button = gtk_button_new_from_stock(GTK_STOCK_FIND);
gtk_table_attach(GTK_TABLE(Table),Button,5,6,0,1,GTK_FILL,GTK_FILL,0,0);
GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
gtk_widget_grab_default(Button);
@@ -2197,7 +2243,7 @@ void Open_Search_File_Window (void)
g_signal_connect(G_OBJECT(GTK_BIN(SearchStringCombo)->child),"activate", G_CALLBACK(Search_File),NULL);
// Button to cancel
- Button = Create_Button_With_Pixmap(BUTTON_CLOSE);
+ Button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
gtk_table_attach(GTK_TABLE(Table),Button,5,6,1,2,GTK_FILL,GTK_FILL,0,0);
g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(Destroy_Search_File_Window),NULL);
@@ -2670,6 +2716,7 @@ void Open_Load_Filename_Window (void)
GtkWidget *Label;
GtkWidget *ButtonBox;
GtkWidget *Button;
+ GtkWidget *Icon;
GtkWidget *Entry;
GtkWidget *ButtonLoad;
GtkWidget *Separator;
@@ -2746,38 +2793,104 @@ void Open_Load_Filename_Window (void)
Separator = gtk_hseparator_new();
gtk_box_pack_start(GTK_BOX(VBox),Separator,FALSE,FALSE,0);
+ //
+ // Vbox for loaded files
+ //
loadedvbox = gtk_vbox_new(FALSE, 4);
- // Label of file content
- Label = gtk_label_new(_("Loaded File Content :"));
- gtk_box_pack_start(GTK_BOX(loadedvbox), Label, FALSE, FALSE, 0);
-
// Content of the loaded file
ScrollWindow = gtk_scrolled_window_new(NULL,NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ScrollWindow),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
gtk_widget_set_size_request(GTK_WIDGET(ScrollWindow), 250, 200);
+ gtk_box_pack_start(GTK_BOX(loadedvbox), ScrollWindow, TRUE, TRUE, 0);
LoadFileContentListModel = gtk_list_store_new(LOAD_FILE_CONTENT_COUNT, G_TYPE_STRING);
LoadFileContentList = gtk_tree_view_new_with_model(GTK_TREE_MODEL(LoadFileContentListModel));
+
renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes("",
- renderer, "text", LOAD_FILE_CONTENT_TEXT, NULL);
+ column = gtk_tree_view_column_new_with_attributes(_("Content of TXT file"),
+ renderer, "text", LOAD_FILE_CONTENT_TEXT, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(LoadFileContentList), column);
- gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(LoadFileContentList), FALSE);
+ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(LoadFileContentList), TRUE);
+ //gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(LoadFileContentList)),GTK_SELECTION_MULTIPLE);
+ gtk_tree_view_set_reorderable(GTK_TREE_VIEW(LoadFileContentList),TRUE);
gtk_container_add(GTK_CONTAINER(ScrollWindow),LoadFileContentList);
- gtk_box_pack_start(GTK_BOX(loadedvbox), ScrollWindow, TRUE, TRUE, 0);
// Signal to automatically load the file
g_signal_connect_swapped(G_OBJECT(ButtonLoad),"clicked", G_CALLBACK(Load_File_Content), G_OBJECT(GTK_BIN(FileToLoadCombo)->child));
g_signal_connect(G_OBJECT(LoadFileContentList),"key-press-event", G_CALLBACK(Load_Filename_List_Key_Press),NULL);
+ // Commands (like the popup menu)
+ hbox = gtk_hbox_new(FALSE,4);
+ gtk_box_pack_start(GTK_BOX(loadedvbox),hbox,FALSE,FALSE,0);
+
+ Button = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_ADD,GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(Button),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ //gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Insert a blank line before the selected line"),NULL);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked",
+ G_CALLBACK(Load_Filename_List_Insert_Blank_Line), G_OBJECT(LoadFileContentList));
+
+ Button = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_REMOVE,GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(Button),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ //gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Delete the selected line"),NULL);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked",
+ G_CALLBACK(Load_Filename_List_Delete_Line), G_OBJECT(LoadFileContentList));
+
+ Button = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_REMOVE,GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(Button),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ //gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Delete all blank lines"),NULL);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked",
+ G_CALLBACK(Load_Filename_List_Delete_All_Blank_Lines), G_OBJECT(LoadFileContentList));
+
+ Label = gtk_label_new(" ");
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,0);
+
+ Button = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_GO_UP, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(Button),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ //gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Move up the selected line"),NULL);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked",
+ G_CALLBACK(Load_Filename_List_Move_Up), G_OBJECT(LoadFileContentList));
+
+ Button = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_GO_DOWN, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(Button),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ //gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Move down the selected line"),NULL);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked",
+ G_CALLBACK(Load_Filename_List_Move_Down), G_OBJECT(LoadFileContentList));
+
+ Label = gtk_label_new(" ");
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,0);
+
+ Button = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_REFRESH,GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(Button),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ //gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Reload"),NULL);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked",
+ G_CALLBACK(Load_Filename_List_Reload), G_OBJECT(LoadFileContentList));
+
gtk_widget_show_all(loadedvbox);
+
+ //
+ // Vbox for file list files
+ //
filelistvbox = gtk_vbox_new(FALSE, 4);
- // Label of current list
- Label = gtk_label_new(_("Files Name List :"));
- gtk_box_pack_start(GTK_BOX(filelistvbox), Label, FALSE, FALSE, 0);
-
// List of current filenames
ScrollWindow = gtk_scrolled_window_new(NULL,NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ScrollWindow),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
@@ -2785,10 +2898,14 @@ void Open_Load_Filename_Window (void)
gtk_box_pack_start(GTK_BOX(filelistvbox), ScrollWindow, TRUE, TRUE, 0);
LoadFileNameListModel = gtk_list_store_new(LOAD_FILE_NAME_COUNT, G_TYPE_STRING,G_TYPE_POINTER);
LoadFileNameList = gtk_tree_view_new_with_model(GTK_TREE_MODEL(LoadFileNameListModel));
+
renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes("", renderer, "text", LOAD_FILE_NAME_TEXT, NULL);
+ column = gtk_tree_view_column_new_with_attributes(_("List of files"),
+ renderer, "text", LOAD_FILE_NAME_TEXT, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(LoadFileNameList), column);
- gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(LoadFileNameList), FALSE);
+ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(LoadFileNameList), TRUE);
+ //gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(LoadFileNameList)),GTK_SELECTION_MULTIPLE);
+ gtk_tree_view_set_reorderable(GTK_TREE_VIEW(LoadFileNameList),TRUE);
g_signal_connect(G_OBJECT(LoadFileNameList),"key-press-event", G_CALLBACK(Load_Filename_List_Key_Press),NULL);
gtk_container_add(GTK_CONTAINER(ScrollWindow),LoadFileNameList);
@@ -2796,8 +2913,73 @@ void Open_Load_Filename_Window (void)
g_signal_connect_swapped(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(LoadFileContentList))),"changed", G_CALLBACK(Load_Filename_Select_Row_In_Other_List), G_OBJECT(LoadFileNameList));
g_signal_connect_swapped(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(LoadFileNameList))),"changed", G_CALLBACK(Load_Filename_Select_Row_In_Other_List), G_OBJECT(LoadFileContentList));
+ // Commands (like the popup menu)
+ hbox = gtk_hbox_new(FALSE,4);
+ gtk_box_pack_start(GTK_BOX(filelistvbox),hbox,FALSE,FALSE,0);
+
+ Button = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_ADD,GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(Button),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ //gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Insert a blank line before the selected line"),NULL);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked",
+ G_CALLBACK(Load_Filename_List_Insert_Blank_Line), G_OBJECT(LoadFileNameList));
+
+ Button = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_REMOVE,GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(Button),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ //gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Delete the selected line"),NULL);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked",
+ G_CALLBACK(Load_Filename_List_Delete_Line), G_OBJECT(LoadFileNameList));
+
+ Button = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_REMOVE,GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(Button),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ //gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Delete all blank lines"),NULL);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked",
+ G_CALLBACK(Load_Filename_List_Delete_All_Blank_Lines), G_OBJECT(LoadFileNameList));
+
+ Label = gtk_label_new(" ");
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,0);
+
+ Button = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_GO_UP, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(Button),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ //gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Move up the selected line"),NULL);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked",
+ G_CALLBACK(Load_Filename_List_Move_Up), G_OBJECT(LoadFileNameList));
+
+ Button = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_GO_DOWN, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(Button),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ //gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Move down the selected line"),NULL);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked",
+ G_CALLBACK(Load_Filename_List_Move_Down), G_OBJECT(LoadFileNameList));
+
+ Label = gtk_label_new(" ");
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,0);
+
+ Button = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_REFRESH,GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(Button),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ //gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Reload"),NULL);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked",
+ G_CALLBACK(Load_Filename_List_Reload), G_OBJECT(LoadFileNameList));
+
gtk_widget_show_all(filelistvbox);
+
// Load the list of files in the list widget
Load_File_List();
@@ -2810,9 +2992,15 @@ void Open_Load_Filename_Window (void)
Create_Load_Filename_Popup_Menu(LoadFileContentList);
Create_Load_Filename_Popup_Menu(LoadFileNameList);
+ hbox = gtk_hbox_new(FALSE,4);
+ gtk_box_pack_start(GTK_BOX(VBox),hbox,FALSE,TRUE,0);
+
+ Label = gtk_label_new(_("Selected line:"));
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,0);
+
// Entry to edit a line into the list
Entry = gtk_entry_new();
- gtk_box_pack_start(GTK_BOX(VBox),Entry,FALSE,TRUE,0);
+ gtk_box_pack_start(GTK_BOX(hbox),Entry,TRUE,TRUE,0);
g_signal_connect(G_OBJECT(Entry),"changed",G_CALLBACK(Load_Filename_Update_Text_Line),G_OBJECT(LoadFileContentList));
// Signal to load the line text in the editing entry
@@ -2838,14 +3026,14 @@ void Open_Load_Filename_Window (void)
gtk_box_set_spacing(GTK_BOX(ButtonBox), 10);
// Button to cancel
- Button = Create_Button_With_Pixmap(BUTTON_CLOSE);
+ Button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
GTK_WIDGET_SET_FLAGS(Button, GTK_CAN_DEFAULT);
gtk_widget_grab_default(Button);
g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(Destroy_Load_Filename_Window),NULL);
// Button to load filenames
- Button = Create_Button_With_Pixmap(BUTTON_APPLY);
+ Button = gtk_button_new_from_stock(GTK_STOCK_APPLY);
gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(Load_Filename_Set_Filenames),NULL);
@@ -3146,11 +3334,13 @@ void Load_Filename_Set_Filenames (void)
found = gtk_tree_model_get_iter(GTK_TREE_MODEL(LoadFileNameListModel), &iter_name, currentPath);
if (found)
- gtk_tree_model_get(GTK_TREE_MODEL(LoadFileNameListModel), &iter_name, LOAD_FILE_NAME_POINTER, &ETFile, -1);
+ gtk_tree_model_get(GTK_TREE_MODEL(LoadFileNameListModel), &iter_name,
+ LOAD_FILE_NAME_POINTER, &ETFile, -1);
found = gtk_tree_model_get_iter(GTK_TREE_MODEL(LoadFileContentListModel), &iter_content, currentPath);
if (found)
- gtk_tree_model_get(GTK_TREE_MODEL(LoadFileContentListModel), &iter_content, LOAD_FILE_CONTENT_TEXT, &list_text, -1);
+ gtk_tree_model_get(GTK_TREE_MODEL(LoadFileContentListModel), &iter_content,
+ LOAD_FILE_CONTENT_TEXT, &list_text, -1);
if (ETFile && list_text && g_utf8_strlen(list_text, -1)>0)
{
@@ -3207,8 +3397,9 @@ GtkWidget *Create_Load_Filename_Popup_Menu(GtkWidget *list)
BrowserPopupMenu = gtk_menu_new();
- g_signal_connect_swapped(G_OBJECT(list),"button_press_event", G_CALLBACK(Load_Filename_Popup_Menu_Handler), G_OBJECT(BrowserPopupMenu));
-
+ g_signal_connect_swapped(G_OBJECT(list), "button_press_event",
+ G_CALLBACK(Load_Filename_Popup_Menu_Handler), G_OBJECT(BrowserPopupMenu));
+
MenuItem = gtk_image_menu_item_new_with_label(_("Insert a blank line"));
Image = gtk_image_new_from_stock(GTK_STOCK_ADD,GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(MenuItem),Image);
@@ -3230,6 +3421,21 @@ GtkWidget *Create_Load_Filename_Popup_Menu(GtkWidget *list)
MenuItem = gtk_menu_item_new();
gtk_menu_shell_append(GTK_MENU_SHELL(BrowserPopupMenu),MenuItem);
+ MenuItem = gtk_image_menu_item_new_with_label(_("Move up this line"));
+ Image = gtk_image_new_from_stock(GTK_STOCK_GO_UP,GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(MenuItem),Image);
+ gtk_menu_shell_append(GTK_MENU_SHELL(BrowserPopupMenu),MenuItem);
+ g_signal_connect_swapped(G_OBJECT(MenuItem),"activate", G_CALLBACK(Load_Filename_List_Move_Up),G_OBJECT(list));
+
+ MenuItem = gtk_image_menu_item_new_with_label(_("Move down this line"));
+ Image = gtk_image_new_from_stock(GTK_STOCK_GO_DOWN,GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(MenuItem),Image);
+ gtk_menu_shell_append(GTK_MENU_SHELL(BrowserPopupMenu),MenuItem);
+ g_signal_connect_swapped(G_OBJECT(MenuItem),"activate", G_CALLBACK(Load_Filename_List_Move_Down),G_OBJECT(list));
+
+ MenuItem = gtk_menu_item_new();
+ gtk_menu_shell_append(GTK_MENU_SHELL(BrowserPopupMenu),MenuItem);
+
MenuItem = gtk_image_menu_item_new_with_label(_("Reload"));
Image = gtk_image_new_from_stock(GTK_STOCK_REFRESH,GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(MenuItem),Image);
@@ -3243,7 +3449,7 @@ GtkWidget *Create_Load_Filename_Popup_Menu(GtkWidget *list)
/*
* Insert a blank line before the selected line in the treeview passed as parameter
*/
-void Load_Filename_List_Insert_Blank_Line(GtkWidget *treeview)
+void Load_Filename_List_Insert_Blank_Line (GtkWidget *treeview)
{
GtkTreeSelection *selection;
GtkTreeIter selectedIter;
@@ -3262,7 +3468,7 @@ void Load_Filename_List_Insert_Blank_Line(GtkWidget *treeview)
}
/*
- * Delete all blank lines in the treeview passed in as parameter
+ * Delete all blank lines in the treeview passed as parameter
*/
void Load_Filename_List_Delete_All_Blank_Lines (GtkWidget *treeview)
{
@@ -3297,9 +3503,9 @@ void Load_Filename_List_Delete_All_Blank_Lines (GtkWidget *treeview)
}
/*
- * Delete the selected line in the treeview passed in as parameter
+ * Delete the selected line in the treeview passed as parameter
*/
-void Load_Filename_List_Delete_Line(GtkWidget *treeview)
+void Load_Filename_List_Delete_Line (GtkWidget *treeview)
{
GtkTreeSelection *selection;
GtkTreeIter selectedIter, itercopy;
@@ -3327,6 +3533,109 @@ void Load_Filename_List_Delete_Line(GtkWidget *treeview)
}
/*
+ * Move up the selected line in the treeview passed as parameter
+ */
+void Load_Filename_List_Move_Up (GtkWidget *treeview)
+{
+ GtkTreeSelection *selection;
+ GList *selectedRows;
+ GList *selectedRowsCopy;
+ GtkTreeIter currentFile;
+ GtkTreeIter nextFile;
+ GtkTreePath *currentPath;
+ GtkTreeModel *treemodel;
+ gboolean valid;
+
+ if (!treeview) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
+ treemodel = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
+ selectedRows = gtk_tree_selection_get_selected_rows(selection, NULL);
+
+ if (g_list_length(selectedRows) == 0)
+ {
+ g_list_foreach(selectedRows, (GFunc)gtk_tree_path_free, NULL);
+ g_list_free(selectedRows);
+ return;
+ }
+
+ selectedRowsCopy = selectedRows;
+
+ while (selectedRows)
+ {
+ currentPath = (GtkTreePath*) selectedRows->data;
+ valid = gtk_tree_model_get_iter(treemodel, &currentFile, currentPath);
+ if (valid)
+ {
+ // Find the entry above the node...
+ if (gtk_tree_path_prev(currentPath))
+ {
+ // ...and if it exists, swap the two rows by iter
+ gtk_tree_model_get_iter(treemodel, &nextFile, currentPath);
+ gtk_list_store_swap(GTK_LIST_STORE(treemodel), &currentFile, &nextFile);
+ }
+ }
+
+ selectedRows = selectedRows->next;
+ if (!selectedRows) break;
+ }
+
+ g_list_foreach(selectedRowsCopy, (GFunc)gtk_tree_path_free, NULL);
+ g_list_free(selectedRowsCopy);
+
+}
+
+/*
+ * Move down the selected line in the treeview passed as parameter
+ */
+void Load_Filename_List_Move_Down (GtkWidget *treeview)
+{
+ GtkTreeSelection *selection;
+ GList *selectedRows;
+ GList *selectedRowsCopy;
+ GtkTreeIter currentFile;
+ GtkTreeIter nextFile;
+ GtkTreePath *currentPath;
+ GtkTreeModel *treemodel;
+ gboolean valid;
+
+ if (!treeview) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
+ treemodel = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
+ selectedRows = gtk_tree_selection_get_selected_rows(selection, NULL);
+
+ if (g_list_length(selectedRows) == 0)
+ {
+ g_list_foreach(selectedRows, (GFunc)gtk_tree_path_free, NULL);
+ g_list_free(selectedRows);
+ return;
+ }
+
+ selectedRowsCopy = selectedRows;
+
+ while (selectedRows)
+ {
+ currentPath = (GtkTreePath*) selectedRows->data;
+ valid = gtk_tree_model_get_iter(treemodel, &currentFile, currentPath);
+ if (valid)
+ {
+ // Find the entry below the node and swap the two nodes by iter
+ gtk_tree_path_next(currentPath);
+ if (gtk_tree_model_get_iter(treemodel, &nextFile, currentPath))
+ gtk_list_store_swap(GTK_LIST_STORE(treemodel), &currentFile, &nextFile);
+ }
+
+ if (!selectedRows->next) break;
+ selectedRows = selectedRows->next;
+ }
+
+ g_list_foreach(selectedRowsCopy, (GFunc)gtk_tree_path_free, NULL);
+ g_list_free(selectedRowsCopy);
+
+}
+
+/*
* Reload a list of choice
* The list parameter refers to a GtkTreeView (LoadFileNameList or LoadFileContentList)
*/
@@ -3337,6 +3646,7 @@ void Load_Filename_List_Reload (GtkWidget *treeview)
if (GTK_TREE_VIEW(treeview) == (GtkTreeView *)LoadFileContentList)
{
Load_File_Content(GTK_BIN(FileToLoadCombo)->child);
+
} else if (GTK_TREE_VIEW(treeview) == (GtkTreeView *)LoadFileNameList)
{
Load_File_List();
diff --git a/src/msgbox.c b/src/msgbox.c
index 3099e50..f9a8cb7 100755..100644
--- a/src/msgbox.c
+++ b/src/msgbox.c
@@ -184,7 +184,7 @@ GtkWidget *msg_box_new (gchar *title, gchar *message, const gchar *stock_id,
gtk_container_add(GTK_CONTAINER(GTK_DIALOG(mb)->action_area),ButtonBox);
/* Read buttons from variable arguments */
- va_start (cursor,stock_id);
+ va_start(cursor,stock_id);
while ( (cursor_value = va_arg(cursor,gint)) != 0 )
{
Button = Create_Button_With_Pixmap(cursor_value);
diff --git a/src/msgbox.h b/src/msgbox.h
index 6b5d663..6b5d663 100755..100644
--- a/src/msgbox.h
+++ b/src/msgbox.h
diff --git a/src/picture.c b/src/picture.c
index 8dd7b37..4f9edae 100755..100644
--- a/src/picture.c
+++ b/src/picture.c
@@ -731,7 +731,8 @@ void Picture_Save_Button_Clicked (GObject *object)
msg = g_strdup_printf(_("The following file already exists :\n'%s'\n"
"Do you want to overwrite?"),filename_utf8);
- msgbox = msg_box_new(_("Save file..."),msg,GTK_STOCK_DIALOG_QUESTION,BUTTON_NO,BUTTON_YES,0);
+ msgbox = msg_box_new(_("Save file..."),msg,
+ GTK_STOCK_DIALOG_QUESTION,BUTTON_NO,BUTTON_YES,0);
g_free(msg);
msg_box_hide_check_button(MSG_BOX(msgbox));
button = msg_box_run(MSG_BOX(msgbox));
@@ -984,7 +985,7 @@ void PictureEntry_Update (Picture *pic, gint select)
"has been read to determine how to create the image buffer."));
Log_Print("%s",msg);
msgbox = msg_box_new(_("Loading Picture File..."),msg,
- GTK_STOCK_DIALOG_ERROR,BUTTON_YES,0);
+ GTK_STOCK_DIALOG_ERROR,BUTTON_YES,0);
msg_box_hide_check_button(MSG_BOX(msgbox));
g_free(msg);
msg_box_run(MSG_BOX(msgbox));
diff --git a/src/prefs.c b/src/prefs.c
index 485e35f..7e862d9 100755..100644
--- a/src/prefs.c
+++ b/src/prefs.c
@@ -407,6 +407,38 @@ void Open_OptionsWindow (void)
g_signal_connect_swapped(G_OBJECT(Button),"clicked",
G_CALLBACK(File_Selection_Window_For_File), G_OBJECT(GTK_BIN(FilePlayerCombo)->child));
+ /* Log options */
+ Frame = gtk_frame_new (_("Log Options"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 2);
+
+ // Show / hide log view
+ ShowLogView = gtk_check_button_new_with_label(_("Show log view in main window"));
+ gtk_box_pack_start(GTK_BOX(vbox),ShowLogView,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ShowLogView),SHOW_LOG_VIEW);
+ gtk_tooltips_set_tip(Tips,ShowLogView,_("If activated, the log view would be "
+ "visible in the main window."),NULL);
+
+ // Max number of lines
+ hbox = gtk_hbox_new(FALSE,2);
+ gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0);
+ gtk_container_set_border_width(GTK_CONTAINER(hbox), 4);
+ Label = gtk_label_new (_("Max number of lines :"));
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,0);
+
+ LogMaxLinesSpinButton = gtk_spin_button_new((GtkAdjustment *)gtk_adjustment_new(2.0,2.0,6.0,1.0,1.0,1.0),1.0,0);
+ LogMaxLinesSpinButton = gtk_spin_button_new_with_range(10.0,1500.0,10.0);
+ gtk_box_pack_start(GTK_BOX(hbox),LogMaxLinesSpinButton,FALSE,FALSE,0);
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(LogMaxLinesSpinButton),(gfloat)LOG_MAX_LINES);
+ //g_signal_connect(G_OBJECT(NumberTrackFormated),"toggled",G_CALLBACK(Number_Track_Formated_Toggled),NULL);
+ //g_signal_emit_by_name(G_OBJECT(NumberTrackFormated),"toggled");
+/* gtk_tooltips_set_tip(Tips,GTK_BIN(FilePlayerCombo)->child,_("Enter the program used to "
+ "play the files. Some arguments can be passed for the program (as 'xmms -p') before "
+ "to receive files as other arguments."),NULL);
+*/
+
/*
@@ -883,6 +915,7 @@ void Open_OptionsWindow (void)
Table = gtk_table_new(4,2,FALSE);
gtk_box_pack_start(GTK_BOX(vbox),Table,FALSE,FALSE,0);
+ //gtk_container_set_border_width(GTK_CONTAINER(Table), 2);
//gtk_table_set_row_spacings(GTK_TABLE(Table),2);
gtk_table_set_col_spacings(GTK_TABLE(Table),2);
@@ -1137,7 +1170,7 @@ void Open_OptionsWindow (void)
CddbServerCgiPathAutomaticSearch = gtk_entry_new();
gtk_box_pack_start(GTK_BOX(hbox),CddbServerCgiPathAutomaticSearch,FALSE,FALSE,0);
if (CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH)
- gtk_entry_set_text(GTK_ENTRY(CddbServerCgiPathAutomaticSearch) ,CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH);
+ gtk_entry_set_text(GTK_ENTRY(CddbServerCgiPathAutomaticSearch),CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH);
// 2sd automatic search server
hbox = gtk_hbox_new(FALSE,2);
@@ -1381,25 +1414,25 @@ void Open_OptionsWindow (void)
/* Apply Button */
- Button = Create_Button_With_Pixmap(BUTTON_APPLY);
+ Button = gtk_button_new_from_stock(GTK_STOCK_APPLY);
// Disable temporarily the apply button
////gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
- g_signal_connect(G_OBJECT(Button),"clicked",G_CALLBACK(OptionsWindow_Apply_Button),NULL);
- GTK_WIDGET_SET_FLAGS(Button, GTK_CAN_DEFAULT);
+ ////g_signal_connect(G_OBJECT(Button),"clicked",G_CALLBACK(OptionsWindow_Apply_Button),NULL);
+ ////GTK_WIDGET_SET_FLAGS(Button, GTK_CAN_DEFAULT);
gtk_tooltips_set_tip(Tips,Button,_("Apply changes (but don't save) and close this window"),NULL);
/* Cancel Button */
- Button = Create_Button_With_Pixmap(BUTTON_CANCEL);
+ Button = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
gtk_container_add(GTK_CONTAINER(ButtonBox), Button);
g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(OptionsWindow_Cancel_Button),NULL);
GTK_WIDGET_SET_FLAGS(Button, GTK_CAN_DEFAULT);
- gtk_widget_grab_default (Button);
+ gtk_widget_grab_default(Button);
gtk_tooltips_set_tip(Tips,Button,_("Close this window without saving"),NULL);
/* Save Button */
- Button = Create_Button_With_Pixmap(BUTTON_SAVE);
+ Button = gtk_button_new_from_stock(GTK_STOCK_OK);
gtk_container_add(GTK_CONTAINER(ButtonBox), Button);
g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(OptionsWindow_Save_Button),NULL);
GTK_WIDGET_SET_FLAGS(Button, GTK_CAN_DEFAULT);
@@ -1616,12 +1649,6 @@ void OptionsWindow_Quit(void)
{
if (OptionsWindow)
{
- /* Save combobox history lists before exit */
- Save_Default_Path_To_MP3_List (DefaultPathModel, MISC_COMBO_TEXT);
- Save_Default_Tag_Comment_Text_List(DefaultCommentModel, MISC_COMBO_TEXT);
- Save_Audio_File_Player_List (FilePlayerModel, MISC_COMBO_TEXT);
- Save_Cddb_Local_Path_List (CddbLocalPathModel, MISC_COMBO_TEXT);
-
OptionsWindow_Apply_Changes();
/* Now quit */
@@ -1655,6 +1682,12 @@ void OptionsWindow_Apply_Changes (void)
/* Get the last visible notebook page */
OPTIONS_NOTEBOOK_PAGE = gtk_notebook_get_current_page(GTK_NOTEBOOK(OptionsNoteBook));
+
+ /* Save combobox history lists before exit */
+ Save_Default_Path_To_MP3_List (DefaultPathModel, MISC_COMBO_TEXT);
+ Save_Default_Tag_Comment_Text_List(DefaultCommentModel, MISC_COMBO_TEXT);
+ Save_Audio_File_Player_List (FilePlayerModel, MISC_COMBO_TEXT);
+ Save_Cddb_Local_Path_List (CddbLocalPathModel, MISC_COMBO_TEXT);
}
}
diff --git a/src/prefs.h b/src/prefs.h
index b88eed1..5c1e122 100755..100644
--- a/src/prefs.h
+++ b/src/prefs.h
@@ -111,6 +111,8 @@ GtkWidget *NumberTrackFormatedSpinButton;
GtkWidget *OggTagWriteXmmsComment;
GtkWidget *SetFocusToSameTagField;
GtkWidget *SetFocusToFirstTagField;
+GtkWidget *LogMaxLinesSpinButton;
+GtkWidget *ShowLogView;
/* Scanner */
diff --git a/src/scan.c b/src/scan.c
index ce080a0..a16adf9 100755..100644
--- a/src/scan.c
+++ b/src/scan.c
@@ -234,7 +234,9 @@ void Scan_Free_File_Fill_Tag_List (GList *list);
void Scan_Rename_Directory_Generate_Preview (void);
gchar **Scan_Return_File_Tag_Field_From_Mask_Code (File_Tag *FileTag, gchar code);
-void Scan_Process_Fields_Functions (gchar *string);
+void Scan_Process_Fields_Functions (gchar **string);
+
+gint Scan_Word_Is_Roman_Numeral (gchar *text);
void Process_Fields_Check_Button_Toggled (GtkObject *object, GList *list);
void Process_Fields_Convert_Check_Button_Toggled (GtkObject *object);
@@ -242,16 +244,17 @@ void Select_Fields_Invert_Selection (void);
void Select_Fields_Select_Unselect_All (void);
void Select_Fields_Set_Sensitive (void);
-void Mask_Editor_List_Row_Selected (GtkTreeSelection* selection, gpointer data);
-void Mask_Editor_List_New (void);
-void Mask_Editor_List_Duplicate (void);
-void Mask_Editor_List_Add (void);
-void Mask_Editor_List_Remove (void);
-void Mask_Editor_List_Move_Up (void);
-void Mask_Editor_List_Move_Down (void);
-void Mask_Editor_List_Save_Button (void);
-void Mask_Editor_Entry_Changed (void);
-gboolean Mask_Editor_List_Key_Press (GtkWidget *widget, GdkEvent *event);
+void Mask_Editor_List_Row_Selected (GtkTreeSelection* selection, gpointer data);
+void Mask_Editor_List_Set_Row_Visible (GtkTreeModel *treeModel, GtkTreeIter *rowIter);
+void Mask_Editor_List_New (void);
+void Mask_Editor_List_Duplicate (void);
+void Mask_Editor_List_Add (void);
+void Mask_Editor_List_Remove (void);
+void Mask_Editor_List_Move_Up (void);
+void Mask_Editor_List_Move_Down (void);
+void Mask_Editor_List_Save_Button (void);
+void Mask_Editor_Entry_Changed (void);
+gboolean Mask_Editor_List_Key_Press (GtkWidget *widget, GdkEvent *event);
void Mask_Editor_Clean_Up_Masks_List (void);
@@ -1067,18 +1070,14 @@ void Scan_Process_Fields (ET_File *ETFile)
File_Name *st_filename;
File_Tag *st_filetag;
gchar *filename_utf8;
- //GString *string2process;
- guint string_length;
- gchar *string;
- gchar *temp;
+ gchar *string;
if (!ScannerWindow || !ETFile) return;
- st_filename = (File_Name *)ETFile->FileNameNew->data;
- st_filetag = (File_Tag *)ETFile->FileTag->data;
- //string2process = g_string_sized_new(512);
-
+ st_filename = (File_Name *)ETFile->FileNameNew->data;
+ st_filetag = (File_Tag *)ETFile->FileTag->data;
+
/* Process the filename */
if (st_filename != NULL)
{
@@ -1092,17 +1091,11 @@ void Scan_Process_Fields (ET_File *ETFile)
if (!FileName)
FileName = ET_File_Name_Item_New();
- // FIX ME : we suppose that it will not grow more than 2 times its size...
- temp = g_path_get_basename(filename_utf8);
- string_length = 2 * g_utf8_strlen(temp,-1);
- string = g_malloc(string_length+1);
- strncpy(string,temp,string_length);
- g_free(temp);
- string[string_length]='\0';
+ string = g_path_get_basename(filename_utf8);
// Remove the extension to set it to lower case (to avoid problem with undo)
if ((pos=strrchr(string,'.'))!=NULL) *pos = 0;
- Scan_Process_Fields_Functions(string);
+ Scan_Process_Fields_Functions(&string);
string_utf8 = ET_File_Name_Generate(ETFile,string);
ET_Set_Filename_File_Name_Item(FileName,string_utf8,NULL);
@@ -1123,13 +1116,9 @@ void Scan_Process_Fields (ET_File *ETFile)
ET_Copy_File_Tag_Item(ETFile,FileTag);
}
- // FIX ME : we suppose that it will not grow more than 2 times its size...
- string_length = 2 * strlen(st_filetag->title);
- string = g_malloc(string_length+1);
- strncpy(string,st_filetag->title,string_length);
- string[string_length]='\0';
+ string = g_strdup(st_filetag->title);
- Scan_Process_Fields_Functions(string);
+ Scan_Process_Fields_Functions(&string);
ET_Set_Field_File_Tag_Item(&FileTag->title,string);
@@ -1145,13 +1134,9 @@ void Scan_Process_Fields (ET_File *ETFile)
ET_Copy_File_Tag_Item(ETFile,FileTag);
}
- // FIX ME : we suppose that it will not grow more than 2 times its size...
- string_length = 2 * strlen(st_filetag->artist);
- string = g_malloc(string_length+1);
- strncpy(string,st_filetag->artist,string_length);
- string[string_length]='\0';
-
- Scan_Process_Fields_Functions(string);
+ string = g_strdup(st_filetag->artist);
+
+ Scan_Process_Fields_Functions(&string);
ET_Set_Field_File_Tag_Item(&FileTag->artist,string);
@@ -1167,13 +1152,9 @@ void Scan_Process_Fields (ET_File *ETFile)
ET_Copy_File_Tag_Item(ETFile,FileTag);
}
- // FIX ME : we suppose that it will not grow more than 2 times its size...
- string_length = 2 * strlen(st_filetag->album);
- string = g_malloc(string_length+1);
- strncpy(string,st_filetag->album,string_length);
- string[string_length]='\0';
-
- Scan_Process_Fields_Functions(string);
+ string = g_strdup(st_filetag->album);
+
+ Scan_Process_Fields_Functions(&string);
ET_Set_Field_File_Tag_Item(&FileTag->album,string);
@@ -1189,13 +1170,9 @@ void Scan_Process_Fields (ET_File *ETFile)
ET_Copy_File_Tag_Item(ETFile,FileTag);
}
- // FIX ME : we suppose that it will not grow more than 2 times its size...
- string_length = 2 * strlen(st_filetag->genre);
- string = g_malloc(string_length+1);
- strncpy(string,st_filetag->genre,string_length);
- string[string_length]='\0';
-
- Scan_Process_Fields_Functions(string);
+ string = g_strdup(st_filetag->genre);
+
+ Scan_Process_Fields_Functions(&string);
ET_Set_Field_File_Tag_Item(&FileTag->genre,string);
@@ -1211,13 +1188,9 @@ void Scan_Process_Fields (ET_File *ETFile)
ET_Copy_File_Tag_Item(ETFile,FileTag);
}
- // FIX ME : we suppose that it will not grow more than 2 times its size...
- string_length = 2 * strlen(st_filetag->comment);
- string = g_malloc(string_length+1);
- strncpy(string,st_filetag->comment,string_length);
- string[string_length]='\0';
-
- Scan_Process_Fields_Functions(string);
+ string = g_strdup(st_filetag->comment);
+
+ Scan_Process_Fields_Functions(&string);
ET_Set_Field_File_Tag_Item(&FileTag->comment,string);
@@ -1233,13 +1206,9 @@ void Scan_Process_Fields (ET_File *ETFile)
ET_Copy_File_Tag_Item(ETFile,FileTag);
}
- // FIX ME : we suppose that it will not grow more than 2 times its size...
- string_length = 2 * strlen(st_filetag->composer);
- string = g_malloc(string_length+1);
- strncpy(string,st_filetag->composer,string_length);
- string[string_length]='\0';
-
- Scan_Process_Fields_Functions(string);
+ string = g_strdup(st_filetag->composer);
+
+ Scan_Process_Fields_Functions(&string);
ET_Set_Field_File_Tag_Item(&FileTag->composer,string);
@@ -1255,13 +1224,9 @@ void Scan_Process_Fields (ET_File *ETFile)
ET_Copy_File_Tag_Item(ETFile,FileTag);
}
- // FIX ME : we suppose that it will not grow more than 2 times its size...
- string_length = 2 * strlen(st_filetag->orig_artist);
- string = g_malloc(string_length+1);
- strncpy(string,st_filetag->orig_artist,string_length);
- string[string_length]='\0';
-
- Scan_Process_Fields_Functions(string);
+ string = g_strdup(st_filetag->orig_artist);
+
+ Scan_Process_Fields_Functions(&string);
ET_Set_Field_File_Tag_Item(&FileTag->orig_artist,string);
@@ -1277,13 +1242,9 @@ void Scan_Process_Fields (ET_File *ETFile)
ET_Copy_File_Tag_Item(ETFile,FileTag);
}
- // FIX ME : we suppose that it will not grow more than 2 times its size...
- string_length = 2 * strlen(st_filetag->copyright);
- string = g_malloc(string_length+1);
- strncpy(string,st_filetag->copyright,string_length);
- string[string_length]='\0';
-
- Scan_Process_Fields_Functions(string);
+ string = g_strdup(st_filetag->copyright);
+
+ Scan_Process_Fields_Functions(&string);
ET_Set_Field_File_Tag_Item(&FileTag->copyright,string);
@@ -1299,13 +1260,9 @@ void Scan_Process_Fields (ET_File *ETFile)
ET_Copy_File_Tag_Item(ETFile,FileTag);
}
- // FIX ME : we suppose that it will not grow more than 2 times its size...
- string_length = 2 * strlen(st_filetag->url);
- string = g_malloc(string_length+1);
- strncpy(string,st_filetag->url,string_length);
- string[string_length]='\0';
-
- Scan_Process_Fields_Functions(string);
+ string = g_strdup(st_filetag->url);
+
+ Scan_Process_Fields_Functions(&string);
ET_Set_Field_File_Tag_Item(&FileTag->url,string);
@@ -1321,13 +1278,9 @@ void Scan_Process_Fields (ET_File *ETFile)
ET_Copy_File_Tag_Item(ETFile,FileTag);
}
- // FIX ME : we suppose that it will not grow more than 2 times its size...
- string_length = 2 * strlen(st_filetag->encoded_by);
- string = g_malloc(string_length+1);
- strncpy(string,st_filetag->encoded_by,string_length);
- string[string_length]='\0';
-
- Scan_Process_Fields_Functions(string);
+ string = g_strdup(st_filetag->encoded_by);
+
+ Scan_Process_Fields_Functions(&string);
ET_Set_Field_File_Tag_Item(&FileTag->encoded_by,string);
@@ -1346,51 +1299,50 @@ void Scan_Process_Fields (ET_File *ETFile)
}
-void Scan_Process_Fields_Functions (gchar *string)
+void Scan_Process_Fields_Functions (gchar **string)
{
-
if (GTK_TOGGLE_BUTTON(ProcessFieldsConvertIntoSpace)->active)
{
- Scan_Convert_Underscore_Into_Space(string);
- Scan_Convert_P20_Into_Space(string);
+ Scan_Convert_Underscore_Into_Space(*string);
+ Scan_Convert_P20_Into_Space(*string);
}
if (GTK_TOGGLE_BUTTON(ProcessFieldsConvertSpace)->active)
- Scan_Convert_Space_Into_Undescore(string);
+ Scan_Convert_Space_Into_Undescore(*string);
if (GTK_TOGGLE_BUTTON(ProcessFieldsInsertSpace)->active)
Scan_Process_Fields_Insert_Space(string);
if (GTK_TOGGLE_BUTTON(ProcessFieldsOnlyOneSpace)->active)
- Scan_Process_Fields_Keep_One_Space(string);
+ Scan_Process_Fields_Keep_One_Space(*string);
if (GTK_TOGGLE_BUTTON(ProcessFieldsConvert)->active)
- Scan_Convert(string);
+ Scan_Convert_Character(string);
if (GTK_TOGGLE_BUTTON(ProcessFieldsAllUppercase)->active)
- Scan_Process_Fields_All_Uppercase(string);
+ Scan_Process_Fields_All_Uppercase(*string);
if (GTK_TOGGLE_BUTTON(ProcessFieldsAllDowncase)->active)
- Scan_Process_Fields_All_Downcase(string);
+ Scan_Process_Fields_All_Downcase(*string);
if (GTK_TOGGLE_BUTTON(ProcessFieldsFirstLetterUppercase)->active)
- Scan_Process_Fields_Letter_Uppercase(string);
+ Scan_Process_Fields_Letter_Uppercase(*string);
if (GTK_TOGGLE_BUTTON(ProcessFieldsFirstLettersUppercase)->active)
- Scan_Process_Fields_First_Letters_Uppercase(string);
+ Scan_Process_Fields_First_Letters_Uppercase(*string);
if (GTK_TOGGLE_BUTTON(ProcessFieldsRemoveSpace)->active)
- Scan_Process_Fields_Remove_Space(string);
+ Scan_Process_Fields_Remove_Space(*string);
}
-void Scan_Process_Fields_All_Uppercase (gchar *text)
+void Scan_Process_Fields_All_Uppercase (gchar *string)
{
gchar *temp;
gchar temp2[6]; // Must have at least 6 bytes of space
gunichar c;
- for (temp = text; *temp; temp = g_utf8_next_char(temp))
+ for (temp = string; *temp; temp = g_utf8_next_char(temp))
{
c = g_utf8_get_char(temp);
if (g_unichar_islower(c))
@@ -1398,13 +1350,13 @@ void Scan_Process_Fields_All_Uppercase (gchar *text)
}
}
-void Scan_Process_Fields_All_Downcase (gchar *text)
+void Scan_Process_Fields_All_Downcase (gchar *string)
{
gchar *temp;
gchar temp2[6];
gunichar c;
- for (temp = text; *temp; temp = g_utf8_next_char(temp))
+ for (temp = string; *temp; temp = g_utf8_next_char(temp))
{
c = g_utf8_get_char(temp);
if (g_unichar_isupper(c))
@@ -1412,7 +1364,7 @@ void Scan_Process_Fields_All_Downcase (gchar *text)
}
}
-void Scan_Process_Fields_Letter_Uppercase (gchar *text)
+void Scan_Process_Fields_Letter_Uppercase (gchar *string)
{
gchar *temp;
gchar temp2[6];
@@ -1421,7 +1373,7 @@ void Scan_Process_Fields_Letter_Uppercase (gchar *text)
gchar utf8_character[6];
gchar *word, *word1, *word2;
- for (temp = text; *temp; temp = g_utf8_next_char(temp))
+ for (temp = string; *temp; temp = g_utf8_next_char(temp))
{
c = g_utf8_get_char(temp);
if (set_to_upper_case && g_unichar_islower(c))
@@ -1431,11 +1383,12 @@ void Scan_Process_Fields_Letter_Uppercase (gchar *text)
set_to_upper_case = FALSE; // After the first time, all will be down case
}
- temp = text;
+ temp = string;
// Uppercase again the word 'I' in english
while ( temp )
{
+ word = temp; // Needed if there is only one word
word1 = g_utf8_strchr(temp,-1,' ');
word2 = g_utf8_strchr(temp,-1,'_');
@@ -1447,6 +1400,7 @@ void Scan_Process_Fields_Letter_Uppercase (gchar *text)
else if (word2)
word = word2;
else
+ // Last word of the string
break;
// Go to first character of the word (char. after ' ' or '_')
@@ -1463,7 +1417,11 @@ void Scan_Process_Fields_Letter_Uppercase (gchar *text)
}
}
-void Scan_Process_Fields_First_Letters_Uppercase (gchar *text)
+/*
+ * Function to set the first letter of each word to uppercase, according the "Chicago Manual of Style"
+ * No needed to reallocate
+ */
+void Scan_Process_Fields_First_Letters_Uppercase (gchar *string)
{
/**** DANIEL TEST *****
gchar *iter;
@@ -1487,31 +1445,35 @@ void Scan_Process_Fields_First_Letters_Uppercase (gchar *text)
****/
/**** Barış Çiçek version ****/
gchar *word, *word1, *word2, *temp;
- gint i;
+ gint i, len;
gchar utf8_character[6];
gunichar c;
gboolean set_to_upper_case, set_to_upper_case_tmp;
// There have to be space at the end of words to seperate them from prefix
+ // Chicago Manual of Style "Heading caps" Capitalization Rules (CMS 1993, 282) (http://www.docstyles.com/cmscrib.htm#Note2)
gchar *exempt[] =
{
"a ", "a_",
+ "against ", "against_",
"an ", "an_",
"and ", "and_",
"at ", "at_",
+ "between ", "between_",
"but ", "but_",
- "feat. ", "feat._",
+ //"feat. ", "feat._", // Removed by Slash Bunny
"for ", "for_",
"in ", "in_",
"nor ", "nor_",
"of ", "of_",
- "off ", "off_",
+ //"off ", "off_", // Removed by Slash Bunny
"on ", "on_",
"or ", "or_",
- "over ", "over_",
+ //"over ", "over_", // Removed by Slash Bunny
"so ", "so_",
"the ", "the_",
"to ", "to_",
"with ", "with_",
+ "yet ", "yet_",
NULL
};
@@ -1519,25 +1481,33 @@ void Scan_Process_Fields_First_Letters_Uppercase (gchar *text)
{
exempt[0] = NULL;
}
- Scan_Process_Fields_All_Downcase(text);
+ Scan_Process_Fields_All_Downcase(string);
- if (!g_utf8_validate(text,-1,NULL))
+ if (!g_utf8_validate(string,-1,NULL))
{
Log_Print("Scan_Process_Fields_First_Letters_Uppercase: Not a valid utf8! quiting");
return;
}
// Removes trailing whitespace
- text = g_strchomp(text);
+ string = g_strchomp(string);
- temp = text;
+ temp = string;
- // Set first character to uppercase
- c = g_utf8_get_char(temp);
- strncpy(text, utf8_character, g_unichar_to_utf8(g_unichar_toupper(c), utf8_character));
+ // If the word is a roman numeral, capitalize all of it
+ if ((len = Scan_Word_Is_Roman_Numeral(temp)))
+ {
+ strncpy(string, g_utf8_strup(temp, len), len);
+ } else
+ {
+ // Set first character to uppercase
+ c = g_utf8_get_char(temp);
+ strncpy(string, utf8_character, g_unichar_to_utf8(g_unichar_toupper(c), utf8_character));
+ }
// Uppercase first character of each word, except for 'exempt[]' words lists
while ( temp )
{
+ word = temp; // Needed if there is only one word
word1 = g_utf8_strchr(temp,-1,' ');
word2 = g_utf8_strchr(temp,-1,'_');
@@ -1549,23 +1519,37 @@ void Scan_Process_Fields_First_Letters_Uppercase (gchar *text)
else if (word2)
word = word2;
else
+ {
+ // Last word of the string: the first letter is always uppercase,
+ // even if it's in the exempt list. This is a Chicago Manual of Style rule.
+ // Last Word In String - Should Capitalize Regardless of Word (Chicago Manual of Style)
+ c = g_utf8_get_char(word);
+ strncpy(word, utf8_character, g_unichar_to_utf8(g_unichar_toupper(c), utf8_character));
break;
+ }
// Go to first character of the word (char. after ' ' or '_')
word = word+1;
- // Set uppercase the first character of this word
- c = g_utf8_get_char(word);
- strncpy(word, utf8_character, g_unichar_to_utf8(g_unichar_toupper(c), utf8_character));
-
- // Set lowercase the first character of this word if found in the exempt words list
- for (i=0; exempt[i]!=NULL; i++)
+ // If the word is a roman numeral, capitalize all of it
+ if ((len = Scan_Word_Is_Roman_Numeral(word)))
+ {
+ strncpy(word, g_utf8_strup(word, len), len);
+ } else
{
- if (g_ascii_strncasecmp(exempt[i], word, strlen(exempt[i])) == 0)
+ // Set uppercase the first character of this word
+ c = g_utf8_get_char(word);
+ strncpy(word, utf8_character, g_unichar_to_utf8(g_unichar_toupper(c), utf8_character));
+
+ // Set lowercase the first character of this word if found in the exempt words list
+ for (i=0; exempt[i]!=NULL; i++)
{
- c = g_utf8_get_char(word);
- strncpy(word, utf8_character, g_unichar_to_utf8(g_unichar_tolower(c), utf8_character));
- break;
+ if (g_ascii_strncasecmp(exempt[i], word, strlen(exempt[i])) == 0)
+ {
+ c = g_utf8_get_char(word);
+ strncpy(word, utf8_character, g_unichar_to_utf8(g_unichar_tolower(c), utf8_character));
+ break;
+ }
}
}
@@ -1574,13 +1558,17 @@ void Scan_Process_Fields_First_Letters_Uppercase (gchar *text)
// Uppercase letter placed after some characters like '(', '[', '{'
set_to_upper_case = FALSE;
- for (temp = text; *temp; temp = g_utf8_next_char(temp))
+ for (temp = string; *temp; temp = g_utf8_next_char(temp))
{
c = g_utf8_get_char(temp);
set_to_upper_case_tmp = ( c == (gunichar)'('
|| c == (gunichar)'['
|| c == (gunichar)'{'
|| c == (gunichar)'"'
+ || c == (gunichar)':'
+ || c == (gunichar)'.'
+ || c == (gunichar)'`'
+ || c == (gunichar)'-'
) ? TRUE : FALSE;
if (set_to_upper_case && g_unichar_islower(c))
@@ -1591,11 +1579,12 @@ void Scan_Process_Fields_First_Letters_Uppercase (gchar *text)
}
-void Scan_Process_Fields_Remove_Space (gchar *text)
+void Scan_Process_Fields_Remove_Space (gchar *string)
{
gchar *tmp, *tmp1;
+
+ tmp = tmp1 = string;
- tmp = tmp1 = text;
while (*tmp)
{
while (*tmp == ' ')
@@ -1606,14 +1595,28 @@ void Scan_Process_Fields_Remove_Space (gchar *text)
*tmp1 = '\0';
}
-void Scan_Process_Fields_Insert_Space (gchar *text)
+/*
+ * The function inserts a space before an uppercase letter
+ * It is needed to realloc the memory!
+ */
+void Scan_Process_Fields_Insert_Space (gchar **string)
{
gchar *iter;
gunichar c;
gint j;
-
- // FIXME: try to use realloc
- for (iter = g_utf8_next_char(text); *iter; iter = g_utf8_next_char(iter)) // i=1 to not consider first "uppercase" letter
+ guint string_length;
+ gchar *string1;
+
+ // FIX ME : we suppose that it will not grow more than 2 times its size...
+ string_length = 2 * strlen(*string);
+ //string1 = g_realloc(*string, string_length+1);
+ string1 = g_malloc(string_length+1);
+ strncpy(string1,*string,string_length);
+ string1[string_length]='\0';
+ g_free(*string);
+ *string = string1;
+
+ for (iter = g_utf8_next_char(*string); *iter; iter = g_utf8_next_char(iter)) // At start : g_utf8_next_char to not consider first "uppercase" letter
{
c = g_utf8_get_char(iter);
@@ -1626,10 +1629,16 @@ void Scan_Process_Fields_Insert_Space (gchar *text)
}
}
}
-void Scan_Process_Fields_Keep_One_Space (gchar *text)
+
+/*
+ * The function removes the duplicated spaces
+ * No needed to reallocate
+ */
+void Scan_Process_Fields_Keep_One_Space (gchar *string)
{
gchar *tmp, *tmp1;
- tmp = tmp1 = text;
+
+ tmp = tmp1 = string;
// Remove multiple consecutive underscores and spaces.
while (*tmp1)
@@ -1647,6 +1656,7 @@ void Scan_Process_Fields_Keep_One_Space (gchar *text)
/*
* Function to replace underscore '_' by a space
+ * No needed to reallocate
*/
void Scan_Convert_Underscore_Into_Space (gchar *string)
{
@@ -1658,6 +1668,7 @@ void Scan_Convert_Underscore_Into_Space (gchar *string)
/*
* Function to replace %20 by a space
+ * No needed to reallocate
*/
void Scan_Convert_P20_Into_Space (gchar *string)
{
@@ -1675,6 +1686,7 @@ void Scan_Convert_P20_Into_Space (gchar *string)
/*
* Function to replace space by '_'
+ * No needed to reallocate
*/
void Scan_Convert_Space_Into_Undescore (gchar *string)
{
@@ -1688,17 +1700,113 @@ void Scan_Convert_Space_Into_Undescore (gchar *string)
* Replace something with something else ;)
* Currently this only works with one character for each
*/
-void Scan_Convert (gchar *string)
+void Scan_Convert_Character (gchar **string)
{
- gchar *tmp;
gchar *from = gtk_editable_get_chars(GTK_EDITABLE(ProcessFieldsConvertFrom),0,-1 );
gchar *to = gtk_editable_get_chars(GTK_EDITABLE(ProcessFieldsConvertTo),0,-1 );
-
- if ( from && to && strlen(from)>0 && strlen(to)>0 )
- while ((tmp=strchr(string,*from))!=NULL)
- *tmp = *to;
+ const gchar *s;
+ const gchar *current;
+ GSList *tokens_list, *list;
+ gchar *token;
+ gint n_tokens;
+ gchar **result;
+
+
+ tokens_list = NULL;
+ n_tokens = 0;
+ s = current = *string;
+
+ // Find tokens
+ if (strlen(from) > 0)
+ {
+ while (s
+ && *s != '\0'
+ && (s = g_strstr_len(current,strlen(current),from)) )
+ {
+ token = g_strndup(current, s - current);
+ tokens_list = g_slist_prepend(tokens_list, token);
+ n_tokens++;
+ current = s + strlen(from);
+ }
+ // For the last token
+ if (s == NULL)
+ {
+ token = g_strndup(current,strlen(current));
+ tokens_list = g_slist_prepend(tokens_list, token);
+ n_tokens++;
+ }
+ }else
+ {
+ // We search an empty string... we suppose it exists between each UTF-8 character
+ while (s
+ && *s != '\0'
+ && (s = g_utf8_find_next_char(current,NULL)) )
+ {
+ token = g_strndup(current, s - current);
+ tokens_list = g_slist_prepend(tokens_list, token);
+ n_tokens++;
+ current = s;
+ }
+ }
+
+ // Load the tokens list in an array for g_strjoinv
+ result = g_new (gchar *, n_tokens + 1);
+ result[n_tokens] = NULL;
+ for (list = tokens_list; list != NULL; list = list->next)
+ result[--n_tokens] = list->data;
+ g_slist_free(tokens_list);
+
+ g_free(*string);
+
+ // Join all the tokens with the 'to' separator
+ *string = g_strjoinv(to,result);
+
+ g_strfreev(result);
}
+/*
+ * Quick roman numeral check (non-roman numerals may also return true)
+ * Patch from Slash Bunny (2007.08.12)
+ * (http://home.hiwaay.net/~lkseitz/math/roman/numerals.shtml)
+ * I = 1 (one)
+ * V = 5 (five)
+ * X = 10 (ten)
+ * L = 50 (fifty)
+ * C = 100 (one hundred)
+ * D = 500 (five hundred)
+ * M = 1000 (one thousand)
+ */
+gint Scan_Word_Is_Roman_Numeral (gchar *text)
+{
+ gchar *tmp;
+ gint len;
+
+ tmp = text;
+ len = 0;
+
+ while (*tmp)
+ {
+ if (*tmp == (gunichar)'i' ||
+ *tmp == (gunichar)'v' ||
+ *tmp == (gunichar)'x' ||
+ *tmp == (gunichar)'l' ||
+ *tmp == (gunichar)'c' ||
+ *tmp == (gunichar)'d' ||
+ *tmp == (gunichar)'m')
+ {
+ tmp++;
+ len++;
+ } else if (*tmp == ' ' || *tmp == '_')
+ {
+ return len;
+ } else
+ {
+ return 0;
+ }
+ }
+
+ return len;
+}
/*
@@ -1830,13 +1938,16 @@ void Open_ScannerWindow (gint scanner_type)
gtk_widget_set_size_request(ScannerOptionCombo, 160, -1);
/* Option for Tag */
- gtk_combo_box_append_text(GTK_COMBO_BOX(ScannerOptionCombo), _(Scanner_Option_Menu_Items[SCANNER_FILL_TAG]));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(ScannerOptionCombo),
+ _(Scanner_Option_Menu_Items[SCANNER_FILL_TAG]));
/* Option for FileName */
- gtk_combo_box_append_text(GTK_COMBO_BOX(ScannerOptionCombo), _(Scanner_Option_Menu_Items[SCANNER_RENAME_FILE]));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(ScannerOptionCombo),
+ _(Scanner_Option_Menu_Items[SCANNER_RENAME_FILE]));
/* Option for ProcessFields */
- gtk_combo_box_append_text(GTK_COMBO_BOX(ScannerOptionCombo), _(Scanner_Option_Menu_Items[SCANNER_PROCESS_FIELDS]));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(ScannerOptionCombo),
+ _(Scanner_Option_Menu_Items[SCANNER_PROCESS_FIELDS]));
// Selection of the item made at the end of the function
gtk_tooltips_set_tip(Tips, EventBox, _("Select the type of scanner to use"), NULL);
@@ -2135,19 +2246,23 @@ void Open_ScannerWindow (gint scanner_type)
gtk_box_pack_start(GTK_BOX(VBox),ProcessFieldsConvertIntoSpace,FALSE,FALSE,0);
gtk_box_pack_start(GTK_BOX(VBox),ProcessFieldsConvertSpace, FALSE,FALSE,0);
hbox = gtk_hbox_new(FALSE,2);
+ gtk_box_pack_start(GTK_BOX(VBox),hbox,FALSE,FALSE,0);
ProcessFieldsConvert = gtk_check_button_new_with_label(_("Convert:")); // Patch from Ben Hearsum, Oct. 3, 2003
ProcessFieldsConvertTo = gtk_entry_new();
ProcessFieldsConvertLabelTo = gtk_label_new(_("to: ")); // A "space" at the end to allow an other traduction for "to :" (needed in French!)
ProcessFieldsConvertFrom = gtk_entry_new();
- gtk_entry_set_max_length(GTK_ENTRY(ProcessFieldsConvertTo), 1);
- gtk_entry_set_max_length(GTK_ENTRY(ProcessFieldsConvertFrom), 1);
- gtk_widget_set_size_request(ProcessFieldsConvertTo,40,-1);
- gtk_widget_set_size_request(ProcessFieldsConvertFrom,40,-1);
+ //gtk_entry_set_max_length(GTK_ENTRY(ProcessFieldsConvertTo), 1); // Now, it isn't limited to one character
+ //gtk_entry_set_max_length(GTK_ENTRY(ProcessFieldsConvertFrom), 1);
+ gtk_widget_set_size_request(ProcessFieldsConvertTo,120,-1);
+ gtk_widget_set_size_request(ProcessFieldsConvertFrom,120,-1);
gtk_box_pack_start(GTK_BOX(hbox),ProcessFieldsConvert, FALSE,FALSE,0);
gtk_box_pack_start(GTK_BOX(hbox),ProcessFieldsConvertFrom, FALSE,FALSE,0);
- gtk_box_pack_start(GTK_BOX(hbox),ProcessFieldsConvertLabelTo,FALSE,FALSE,4);
+ gtk_box_pack_start(GTK_BOX(hbox),ProcessFieldsConvertLabelTo,FALSE,FALSE,0);
gtk_box_pack_start(GTK_BOX(hbox),ProcessFieldsConvertTo, FALSE,FALSE,0);
- gtk_box_pack_start(GTK_BOX(VBox),hbox,FALSE,FALSE,0);
+ if (PROCESS_FIELDS_CONVERT_FROM)
+ gtk_entry_set_text(GTK_ENTRY(ProcessFieldsConvertFrom),PROCESS_FIELDS_CONVERT_FROM);
+ if (PROCESS_FIELDS_CONVERT_TO)
+ gtk_entry_set_text(GTK_ENTRY(ProcessFieldsConvertTo),PROCESS_FIELDS_CONVERT_TO);
/* List creation for check buttons in group */
pf_cb_group1 = g_list_append (pf_cb_group1,ProcessFieldsConvertIntoSpace);
pf_cb_group1 = g_list_append (pf_cb_group1,ProcessFieldsConvertSpace);
@@ -2168,7 +2283,8 @@ void Open_ScannerWindow (gint scanner_type)
gtk_tooltips_set_tip(Tips,ProcessFieldsConvertSpace,
_("The space character is replaced by one underscore character. "
"Example, before: 'Text In An Entry', after: 'Text_In_An_Entry'."),NULL);
- gtk_tooltips_set_tip(Tips,ProcessFieldsConvert,_("Replace a character by an other one."),NULL);
+ gtk_tooltips_set_tip(Tips,ProcessFieldsConvert,
+ _("Replace a string by an other one. Note that the search is case sensitive."),NULL);
/* Separator line */
Separator = gtk_hseparator_new();
@@ -2217,16 +2333,16 @@ void Open_ScannerWindow (gint scanner_type)
gtk_box_pack_start(GTK_BOX(VBox),Separator,FALSE,FALSE,0);
/* Group: insert/remove spaces */
- ProcessFieldsRemoveSpace = gtk_check_button_new_with_label(_("Remove spaces"));
- ProcessFieldsInsertSpace = gtk_check_button_new_with_label(_("Insert a space before an uppercase letter"));
+ ProcessFieldsRemoveSpace = gtk_check_button_new_with_label(_("Remove spaces"));
+ ProcessFieldsInsertSpace = gtk_check_button_new_with_label(_("Insert a space before an uppercase letter"));
ProcessFieldsOnlyOneSpace = gtk_check_button_new_with_label(_("Remove duplicates of space or underscore"));
gtk_box_pack_start(GTK_BOX(VBox),ProcessFieldsRemoveSpace,FALSE,FALSE,0);
gtk_box_pack_start(GTK_BOX(VBox),ProcessFieldsInsertSpace,FALSE,FALSE,0);
gtk_box_pack_start(GTK_BOX(VBox),ProcessFieldsOnlyOneSpace,FALSE,FALSE,0);
/* List creation for check buttons in group */
- pf_cb_group3 = g_list_append (pf_cb_group3,ProcessFieldsRemoveSpace);
- pf_cb_group3 = g_list_append (pf_cb_group3,ProcessFieldsInsertSpace);
- pf_cb_group3 = g_list_append (pf_cb_group3,ProcessFieldsOnlyOneSpace);
+ pf_cb_group3 = g_list_append(pf_cb_group3,ProcessFieldsRemoveSpace);
+ pf_cb_group3 = g_list_append(pf_cb_group3,ProcessFieldsInsertSpace);
+ pf_cb_group3 = g_list_append(pf_cb_group3,ProcessFieldsOnlyOneSpace);
/* Toggled signals */
g_signal_connect(G_OBJECT(ProcessFieldsRemoveSpace), "toggled",G_CALLBACK(Process_Fields_Check_Button_Toggled),pf_cb_group3);
g_signal_connect(G_OBJECT(ProcessFieldsInsertSpace), "toggled",G_CALLBACK(Process_Fields_Check_Button_Toggled),pf_cb_group3);
@@ -2516,16 +2632,6 @@ void ScannerWindow_Quit (void)
{
if (ScannerWindow)
{
- if (SCAN_TAG_DEFAULT_MASK) g_free(SCAN_TAG_DEFAULT_MASK);
- SCAN_TAG_DEFAULT_MASK = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(ScanTagMaskCombo)->child)));
- Add_String_To_Combo_List(ScanTagListModel, SCAN_TAG_DEFAULT_MASK);
- Save_Rename_File_Masks_List(ScanTagListModel, MASK_EDITOR_TEXT);
-
- if (RENAME_FILE_DEFAULT_MASK) g_free(RENAME_FILE_DEFAULT_MASK);
- RENAME_FILE_DEFAULT_MASK = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(RenameFileMaskCombo)->child)));
- Add_String_To_Combo_List(RenameFileListModel, RENAME_FILE_DEFAULT_MASK);
- Save_Rename_File_Masks_List(RenameFileListModel, MASK_EDITOR_TEXT);
-
ScannerWindow_Apply_Changes();
gtk_widget_destroy(ScannerWindow);
@@ -2587,6 +2693,11 @@ void ScannerWindow_Apply_Changes (void)
PROCESS_COPYRIGHT_FIELD = GTK_TOGGLE_BUTTON(ProcessCopyrightField)->active;
PROCESS_URL_FIELD = GTK_TOGGLE_BUTTON(ProcessURLField)->active;
PROCESS_ENCODED_BY_FIELD = GTK_TOGGLE_BUTTON(ProcessEncodedByField)->active;
+
+ if (PROCESS_FIELDS_CONVERT_FROM) g_free(PROCESS_FIELDS_CONVERT_FROM);
+ PROCESS_FIELDS_CONVERT_FROM = g_strdup(gtk_entry_get_text(GTK_ENTRY(ProcessFieldsConvertFrom)));
+ if (PROCESS_FIELDS_CONVERT_TO) g_free(PROCESS_FIELDS_CONVERT_TO);
+ PROCESS_FIELDS_CONVERT_TO = g_strdup(gtk_entry_get_text(GTK_ENTRY(ProcessFieldsConvertTo)));
/* Group: convert one character */
PF_CONVERT_INTO_SPACE = GTK_TOGGLE_BUTTON(ProcessFieldsConvertIntoSpace)->active;
@@ -2600,9 +2711,21 @@ void ScannerWindow_Apply_Changes (void)
PF_CONVERT_FIRST_LETTERS_UPPERCASE = GTK_TOGGLE_BUTTON(ProcessFieldsFirstLettersUppercase)->active;
/* Group: remove/insert space */
- PF_REMOVE_SPACE = GTK_TOGGLE_BUTTON(ProcessFieldsConvertIntoSpace)->active;
- PF_INSERT_SPACE = GTK_TOGGLE_BUTTON(ProcessFieldsConvertSpace)->active;
+ PF_REMOVE_SPACE = GTK_TOGGLE_BUTTON(ProcessFieldsRemoveSpace)->active;
+ PF_INSERT_SPACE = GTK_TOGGLE_BUTTON(ProcessFieldsInsertSpace)->active;
PF_ONLY_ONE_SPACE = GTK_TOGGLE_BUTTON(ProcessFieldsOnlyOneSpace)->active;
+
+ // Save default masks...
+ if (SCAN_TAG_DEFAULT_MASK) g_free(SCAN_TAG_DEFAULT_MASK);
+ SCAN_TAG_DEFAULT_MASK = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(ScanTagMaskCombo)->child)));
+ Add_String_To_Combo_List(ScanTagListModel, SCAN_TAG_DEFAULT_MASK);
+ Save_Rename_File_Masks_List(ScanTagListModel, MASK_EDITOR_TEXT);
+
+ if (RENAME_FILE_DEFAULT_MASK) g_free(RENAME_FILE_DEFAULT_MASK);
+ RENAME_FILE_DEFAULT_MASK = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(RenameFileMaskCombo)->child)));
+ Add_String_To_Combo_List(RenameFileListModel, RENAME_FILE_DEFAULT_MASK);
+ Save_Rename_File_Masks_List(RenameFileListModel, MASK_EDITOR_TEXT);
+
}
}
@@ -2701,7 +2824,7 @@ gboolean Scan_Check_Rename_File_Mask (GtkObject *widget_to_show_hide, GtkEntry *
if (!mask || strlen(mask)<1)
goto Bad_Mask;
- // Since version 1.99.4, it is available!
+ // Since version 1.99.4, it is available! => OK
/*if ( strchr(mask,G_DIR_SEPARATOR)!=NULL ) // Renaming directory is not yet available
goto Bad_Mask;*/
// Not a valid path....
@@ -3017,15 +3140,15 @@ void Mask_Editor_List_Duplicate (void)
GList *selectedRows;
GList *toInsert = NULL;
GtkTreeSelection *selection;
- GtkTreeIter row;
- GtkTreeModel *treemodel;
+ GtkTreeIter rowIter;
+ GtkTreeModel *treeModel;
gboolean valid;
if (!MaskEditorList) return;
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(MaskEditorList));
selectedRows = gtk_tree_selection_get_selected_rows(selection, NULL);
- treemodel = gtk_tree_view_get_model(GTK_TREE_VIEW(MaskEditorList));
+ treeModel = gtk_tree_view_get_model(GTK_TREE_VIEW(MaskEditorList));
if (g_list_length(selectedRows) == 0)
{
@@ -3035,14 +3158,15 @@ void Mask_Editor_List_Duplicate (void)
return;
}
- /* Loop through selected rows, duplicating them into a GList */
- /* We cannot directly insert because the paths in selectedRows get out of date after an insertion */
- while(selectedRows)
+ /* Loop through selected rows, duplicating them into a GList
+ * We cannot directly insert because the paths in selectedRows
+ * get out of date after an insertion */
+ while (selectedRows)
{
- valid = gtk_tree_model_get_iter(treemodel, &row, (GtkTreePath*) selectedRows->data);
+ valid = gtk_tree_model_get_iter(treeModel, &rowIter, (GtkTreePath*) selectedRows->data);
if (valid)
{
- gtk_tree_model_get(treemodel, &row, MASK_EDITOR_TEXT, &text, -1);
+ gtk_tree_model_get(treeModel, &rowIter, MASK_EDITOR_TEXT, &text, -1);
toInsert = g_list_append(toInsert, text);
}
@@ -3050,18 +3174,22 @@ void Mask_Editor_List_Duplicate (void)
if (!selectedRows) break;
}
- /* Duplicate the relevant entries, by looping through the list backwards (to preserve original order) */
+ /* Duplicate the relevant entries, by looping through the list backwards
+ * (to preserve original order) */
toInsert = g_list_last(toInsert);
- while(toInsert)
+ while (toInsert)
{
- gtk_list_store_insert(GTK_LIST_STORE(treemodel), &row, 0);
- gtk_list_store_set(GTK_LIST_STORE(treemodel), &row, MASK_EDITOR_TEXT, (gchar*) toInsert->data, -1);
+ gtk_list_store_insert(GTK_LIST_STORE(treeModel), &rowIter, 0);
+ gtk_list_store_set(GTK_LIST_STORE(treeModel), &rowIter, MASK_EDITOR_TEXT, (gchar*) toInsert->data, -1);
g_free(toInsert->data);
toInsert = toInsert->prev;
if (!toInsert) break;
}
-
+ // Set focus to the last inserted line
+ if (toInsert)
+ Mask_Editor_List_Set_Row_Visible(treeModel,&rowIter);
+
/* Free data no longer needed */
selectedRows = g_list_first(selectedRows);
toInsert = g_list_first(toInsert);
@@ -3071,7 +3199,7 @@ void Mask_Editor_List_Duplicate (void)
g_list_free(toInsert);
}
-void Mask_Editor_List_Add(void)
+void Mask_Editor_List_Add (void)
{
gint i = 0;
GtkTreeIter iter;
@@ -3183,14 +3311,15 @@ void Mask_Editor_List_Move_Up (void)
selectedRowsCopy = selectedRows;
- while(selectedRows)
+ while (selectedRows)
{
currentPath = (GtkTreePath*) selectedRows->data;
valid = gtk_tree_model_get_iter(treemodel, &currentFile, currentPath);
if (valid)
{
/* Find the entry above the node... */
- if (gtk_tree_path_prev(currentPath)) {
+ if (gtk_tree_path_prev(currentPath))
+ {
/* ...and if it exists, swap the two rows by iter */
gtk_tree_model_get_iter(treemodel, &nextFile, currentPath);
gtk_list_store_swap(GTK_LIST_STORE(treemodel), &currentFile, &nextFile);
@@ -3225,7 +3354,8 @@ void Mask_Editor_List_Move_Down (void)
treemodel = gtk_tree_view_get_model(GTK_TREE_VIEW(MaskEditorList));
selectedRows = gtk_tree_selection_get_selected_rows(selection, NULL);
- if (g_list_length(selectedRows) == 0) {
+ if (g_list_length(selectedRows) == 0)
+ {
Log_Print(_("Move Down: No row selected!"));
g_list_foreach(selectedRows, (GFunc)gtk_tree_path_free, NULL);
g_list_free(selectedRows);
@@ -3242,8 +3372,8 @@ void Mask_Editor_List_Move_Down (void)
{
/* Find the entry below the node and swap the two nodes by iter */
gtk_tree_path_next(currentPath);
- gtk_tree_model_get_iter(treemodel, &nextFile, currentPath);
- gtk_list_store_swap(GTK_LIST_STORE(treemodel), &currentFile, &nextFile);
+ if (gtk_tree_model_get_iter(treemodel, &nextFile, currentPath))
+ gtk_list_store_swap(GTK_LIST_STORE(treemodel), &currentFile, &nextFile);
}
if (!selectedRows->next) break;
@@ -3255,6 +3385,25 @@ void Mask_Editor_List_Move_Down (void)
}
/*
+ * Set a row visible in the mask editor list (by scrolling the list)
+ */
+void Mask_Editor_List_Set_Row_Visible (GtkTreeModel *treeModel, GtkTreeIter *rowIter)
+{
+ /*
+ * TODO: Make this only scroll to the row if it is not visible
+ * (like in easytag GTK1)
+ * See function gtk_tree_view_get_visible_rect() ??
+ */
+ GtkTreePath *rowPath;
+
+ if (!treeModel) return;
+
+ rowPath = gtk_tree_model_get_path(treeModel, rowIter);
+ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(MaskEditorList), rowPath, NULL, FALSE, 0, 0);
+ gtk_tree_path_free(rowPath);
+}
+
+/*
* Save the currently displayed mask list in the mask editor
*/
void Mask_Editor_List_Save_Button (void)
diff --git a/src/scan.h b/src/scan.h
index 3173aa3..de151a2 100755..100644
--- a/src/scan.h
+++ b/src/scan.h
@@ -67,18 +67,18 @@ void Scan_Use_Process_Fields_Scanner (void);
gboolean Scan_Check_Rename_File_Mask (GtkObject *widget_to_show_hide, GtkEntry *widget_source);
-void Scan_Process_Fields_All_Uppercase (gchar *text);
-void Scan_Process_Fields_All_Downcase (gchar *text);
-void Scan_Process_Fields_Letter_Uppercase (gchar *text);
-void Scan_Process_Fields_First_Letters_Uppercase (gchar *text);
-void Scan_Process_Fields_Remove_Space (gchar *text);
-void Scan_Process_Fields_Insert_Space (gchar *text);
-void Scan_Process_Fields_Keep_One_Space (gchar *text);
+void Scan_Process_Fields_All_Uppercase (gchar *string);
+void Scan_Process_Fields_All_Downcase (gchar *string);
+void Scan_Process_Fields_Letter_Uppercase (gchar *string);
+void Scan_Process_Fields_First_Letters_Uppercase (gchar *string);
+void Scan_Process_Fields_Remove_Space (gchar *string);
+void Scan_Process_Fields_Insert_Space (gchar **string);
+void Scan_Process_Fields_Keep_One_Space (gchar *string);
void Scan_Convert_Underscore_Into_Space (gchar *string);
void Scan_Convert_P20_Into_Space (gchar *string);
void Scan_Convert_Space_Into_Undescore (gchar *string);
-void Scan_Convert (gchar *string);
+void Scan_Convert_Character (gchar **string);
void Init_ScannerWindow (void);
void Open_ScannerWindow (gint scanner_type);
diff --git a/src/setting.c b/src/setting.c
index 93d11a3..9b00a32 100755..100644
--- a/src/setting.c
+++ b/src/setting.c
@@ -138,6 +138,8 @@ tConfigVariable Config_Variables[] =
{"set_focus_to_first_tag_field", CV_TYPE_BOOL, &SET_FOCUS_TO_FIRST_TAG_FIELD },
{"sorting_file_mode", CV_TYPE_INT, &SORTING_FILE_MODE },
{"sorting_file_case_sensitive", CV_TYPE_BOOL, &SORTING_FILE_CASE_SENSITIVE },
+ {"log_max_lines", CV_TYPE_INT, &LOG_MAX_LINES },
+ {"sho_log_view", CV_TYPE_BOOL, &SHOW_LOG_VIEW },
{"replace_illegal_character_in_filename", CV_TYPE_BOOL, &REPLACE_ILLEGAL_CHARACTERS_IN_FILENAME },
{"filename_extension_lower_case", CV_TYPE_BOOL, &FILENAME_EXTENSION_LOWER_CASE },
@@ -211,6 +213,8 @@ tConfigVariable Config_Variables[] =
{"process_copyright_field", CV_TYPE_BOOL, &PROCESS_COPYRIGHT_FIELD },
{"process_url_field", CV_TYPE_BOOL, &PROCESS_URL_FIELD },
{"process_encoded_by_field", CV_TYPE_BOOL, &PROCESS_ENCODED_BY_FIELD },
+ {"process_fields_convert_from", CV_TYPE_STRING, &PROCESS_FIELDS_CONVERT_FROM },
+ {"process_fields_convert_to", CV_TYPE_STRING, &PROCESS_FIELDS_CONVERT_TO },
{"pf_convert_into_space", CV_TYPE_BOOL, &PF_CONVERT_INTO_SPACE },
{"pf_convert_space", CV_TYPE_BOOL, &PF_CONVERT_SPACE },
@@ -339,7 +343,7 @@ void Init_Config_Variables (void)
/*
* Common
*/
- LOAD_ON_STARTUP = 1;
+ LOAD_ON_STARTUP = 0;
DEFAULT_PATH_TO_MP3 = g_strdup(HOME_VARIABLE);
BROWSE_SUBDIR = 1;
#ifdef WIN32
@@ -377,6 +381,8 @@ void Init_Config_Variables (void)
#else
SORTING_FILE_CASE_SENSITIVE = 0;
#endif
+ LOG_MAX_LINES = 50;
+ SHOW_LOG_VIEW = 1;
MESSAGE_BOX_POSITION_NONE = 0;
MESSAGE_BOX_POSITION_CENTER = 0;
@@ -471,6 +477,9 @@ void Init_Config_Variables (void)
PROCESS_COPYRIGHT_FIELD = 1;
PROCESS_URL_FIELD = 1;
PROCESS_ENCODED_BY_FIELD = 1;
+
+ PROCESS_FIELDS_CONVERT_FROM = NULL;
+ PROCESS_FIELDS_CONVERT_TO = NULL;
PF_CONVERT_INTO_SPACE = 1;
PF_CONVERT_SPACE = 0;
@@ -646,6 +655,8 @@ void Apply_Changes_Of_Preferences_Window (void)
SORTING_FILE_CASE_SENSITIVE = GTK_TOGGLE_BUTTON(SortingFileCaseSensitive)->active;
SET_FOCUS_TO_SAME_TAG_FIELD = GTK_TOGGLE_BUTTON(SetFocusToSameTagField)->active;
SET_FOCUS_TO_FIRST_TAG_FIELD = GTK_TOGGLE_BUTTON(SetFocusToFirstTagField)->active;
+ LOG_MAX_LINES = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(LogMaxLinesSpinButton));
+ SHOW_LOG_VIEW = GTK_TOGGLE_BUTTON(ShowLogView)->active;
SORTING_FILE_MODE = gtk_combo_box_get_active(GTK_COMBO_BOX(SortingFileCombo));
@@ -782,6 +793,9 @@ void Apply_Changes_Of_Preferences_Window (void)
if (SHOW_HEADER_INFO) gtk_widget_show_all(HeaderInfosTable);
else gtk_widget_hide_all(HeaderInfosTable);
+ if (SHOW_LOG_VIEW) gtk_widget_show_all(LogArea);
+ else gtk_widget_hide_all(LogArea);
+
/* Update state of check-menu-item into main/popup menu to browse subdirs */
Check_Menu_Item_Update_Browse_Subdir();
diff --git a/src/setting.h b/src/setting.h
index fceba05..a2b3042 100755..100644
--- a/src/setting.h
+++ b/src/setting.h
@@ -126,6 +126,8 @@ gint NUMBER_TRACK_FORMATED_SPIN_BUTTON;
gint OGG_TAG_WRITE_XMMS_COMMENT;
gint SET_FOCUS_TO_SAME_TAG_FIELD;
gint SET_FOCUS_TO_FIRST_TAG_FIELD;
+gint LOG_MAX_LINES;
+gint SHOW_LOG_VIEW;
/* Scanner */
@@ -139,7 +141,7 @@ gint RFS_CONVERT_SPACE_INTO_UNDERSCORE;
gint PFS_DONT_UPPER_SOME_WORDS;
gint OVERWRITE_TAG_FIELD;
gint SET_DEFAULT_COMMENT;
-gchar *DEFAULT_COMMENT;
+gchar *DEFAULT_COMMENT;
gint SET_CRC32_COMMENT;
gint OPEN_SCANNER_WINDOW_ON_STARTUP;
gint SCANNER_WINDOW_ON_TOP;
@@ -166,6 +168,8 @@ gint PROCESS_ORIG_ARTIST_FIELD;
gint PROCESS_COPYRIGHT_FIELD;
gint PROCESS_URL_FIELD;
gint PROCESS_ENCODED_BY_FIELD;
+gchar *PROCESS_FIELDS_CONVERT_FROM;
+gchar *PROCESS_FIELDS_CONVERT_TO;
gint PF_CONVERT_INTO_SPACE;
gint PF_CONVERT_SPACE;
gint PF_CONVERT;
diff --git a/src/win32/win32dep.c b/src/win32/win32dep.c
index a644adc..9e400af 100755..100644
--- a/src/win32/win32dep.c
+++ b/src/win32/win32dep.c
@@ -456,38 +456,3 @@ BOOL WINAPI DllMain ( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved )
ET_dll_hInstance = hinstDLL;
return TRUE;
}
-
-
-/*
- * Copyright (C) 2002 Manuel Novoa III
- * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
- *
- * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
- */
-
-#include <string.h>
-#include <ctype.h>
-
-char *strcasestr(const char *s1, const char *s2)
-{
- register const char *s = s1;
- register const char *p = s2;
-
- do {
- if (!*p) {
- return (char *) s1;;
- }
- if ((*p == *s)
- || (tolower(*((unsigned char *)p)) == tolower(*((unsigned char *)s)))
- ) {
- ++p;
- ++s;
- } else {
- p = s2;
- if (!*s) {
- return NULL;
- }
- s = ++s1;
- }
- } while (1);
-} \ No newline at end of file
diff --git a/src/win32/win32dep.h b/src/win32/win32dep.h
index 7e5e1ae..9107852 100755..100644
--- a/src/win32/win32dep.h
+++ b/src/win32/win32dep.h
@@ -34,8 +34,6 @@
#define chown(a,b,c)
#define chmod(a,b)
-//#define strcasestr(haystack, needle) strstr(haystack, needle)
-char *strcasestr(const char *s1, const char *s2);