[Easytag-mailing] [PULL REQUEST 1/2] Port MP4 support to taglib
- From: Maia Kozheva <sikon ubuntu com>
- To: easytag-mailing lists sourceforge net
- Subject: [Easytag-mailing] [PULL REQUEST 1/2] Port MP4 support to taglib
- Date: Fri, 11 May 2012 06:56:52 -0000
As libmp4v2 cannot be legally linked to from GPL programs because of its
MPL license [1], the version of easytag in Debian instead patches
easytag to use taglib for MP4 tag reading and writing. Sadly, taglib's C
API does not expose all the tags that were supported by libmp4v2.
Attached are the same changes as a patch file.
Git branch: https://github.com/Sikon/easytag/tree/taglib
[1] http://bugs.debian.org/552705
Description: Replace libmp4v2 with taglib for MP4 support
Use taglib instead of libmp4v2 for MP4 files. Only the basic tags are
available for editing this way, but due to the licensing issues with
libmp4v2, it's better than nothing.
Origin: vendor
Author: Maia Kozheva <sikon ubuntu com>
Forwarded: https://github.com/stsquad/easytag/issues/13
Last-Update: 2011-06-08
---
Index: easytag/configure.in
===================================================================
--- easytag.orig/configure.in 2011-06-08 23:28:43.000000000 +0700
+++ easytag/configure.in 2011-06-08 23:28:50.000000000 +0700
@@ -63,9 +63,9 @@
AC_HELP_STRING([--disable-flac],[Disable support for FLAC files (default=enabled)]),
, enable_flac=yes)
-AC_ARG_ENABLE(mp4,
- AC_HELP_STRING([--disable-mp4],[Disable support for MP4 files (default=enabled)]),
- , enable_mp4=yes)
+AC_ARG_ENABLE(taglib,
+ AC_HELP_STRING([--disable-taglib],[Disable support for MP4 files via taglib (default=enabled)]),
+ , enable_taglib=yes)
AC_ARG_ENABLE(wavpack,
AC_HELP_STRING([--disable-wavpack],[Disable support for Wavpack files (default=enabled)]),
@@ -313,67 +313,35 @@
dnl ################################################
-dnl # libmp4v2 library
+dnl # taglib library
dnl ################################################
-if test "x$enable_mp4" = "xyes"; then
- dnl Librairies required for mp4 files, if not found 'enable_mp4' is disabled
- AC_MSG_CHECKING(for MP4 file support)
- AC_CHECK_HEADER(mp4v2/mp4v2.h, [], [mp4_available=no])
- AC_CHECK_LIB(mp4v2, MP4GetTrackMediaDataName, [], [mp4_available=no], [-lmp4v2])
+if test "x$enable_taglib" = "xyes"; then
+ dnl Libraries required for mp4 files, if not found 'enable_taglib' is disabled
+ PKG_CHECK_MODULES(TAGLIB_C, taglib_c >= 1.6.0, , taglib_available=no)
fi
-AC_MSG_CHECKING(for MP4/AAC file support)
-if test "x$enable_mp4" = "xyes"; then
- if test "x$mp4_available" = "xno"; then
+AC_MSG_CHECKING(for taglib_c)
+if test "x$enable_taglib" = "xyes"; then
+ if test "x$taglib_available_available" = "xno"; then
AC_MSG_RESULT(no)
- enable_mp4="no"
+ enable_taglib="no"
echo "***"
echo "*** Warning: MP4 file support disabled"
- echo "*** (Install libmp4v2 >= 1.9.0 to enable it)"
+ echo "*** (Install taglib_c >= 1.6.0 to enable it)"
echo "***"
else
- dnl Check version of mp4v2 installed
- LIBS_SAVE="$LIBS"
- CFLAGS_SAVE="$CFLAGS"
- LIBS="$LIBS $LIBMP4V2_LIBS"
- CFLAGS="$CFLAGS $LIBMP4V2_CFLAGS"
- AC_MSG_CHECKING(for libmp4v2 version)
- AC_TRY_RUN([
- #include <stdio.h>
- #include <mp4v2/mp4v2.h>
- int main (void)
- {
- FILE *output;
- output=fopen("conftest.mp4v2","w");
- fprintf(output,"MP4V2_PROJECT_name=%s\nMP4V2_PROJECT_version=%s\n",PACKAGE_TARNAME,PACKAGE_VERSION);
- fclose(output);
- exit(0);
- }
- ], . ./conftest.mp4v2; echo "${LIBMP4V2_NAME}-${LIBMP4V2_VERSION}", AC_MSG_WARN(could not determine libmp4v2 version),[echo $ac_n "cross compiling; assuming ${LIBMP4V2_NAME}-${LIBMP4V2_VERSION} $ac_c"])
- LIBS="$LIBS_SAVE"
- CFLAGS="$CFLAGS_SAVE"
- if test "$LIBMP4V2_VERSION" != ""; then
- LIBMP4V2_VERSION="($LIBMP4V2_NAME-$LIBMP4V2_VERSION)"
- fi
-
- dnl Version 1.6 of libmp4v2 introduces an index argument for MP4GetMetadataCoverart. So we define 'NEWMP4' if it is the case
- AC_COMPILE_IFELSE([
- #include <mp4v2/mp4v2.h>
- main () {
- MP4FileHandle hFile;
- MP4GetMetadataCoverArt(hFile, NULL, NULL,0); }
- ], AC_DEFINE(NEWMP4,1,[Define for MP4 lib with multiple image support]),)
-
AC_MSG_RESULT(yes)
- AC_DEFINE(ENABLE_MP4,1,[Define for MP4 support])
+ AC_DEFINE(ENABLE_MP4,1,[Define for taglib support])
+ CFLAGS="$CFLAGS $TAGLIB_C_CFLAGS"
+ LIBS="$LIBS $TAGLIB_C_LIBS"
fi
else
AC_MSG_RESULT(no)
- enable_mp4="no"
+ enable_taglib="no"
echo "***"
echo "*** MP4 file support disabled on commandline"
- echo "*** (Install libmp4v2 and use --enable-mp4 to enable it)"
+ echo "*** (Install taglib_c and use --enable-taglib to enable it)"
echo "***"
fi
@@ -494,7 +462,7 @@
echo Ogg Vorbis file support .: $enable_ogg
echo Speex file support ......: $enable_speex
echo FLAC file support .......: $enable_flac $LIBFLAC_VERSION
-echo MP4 file support ........: $enable_mp4 $LIBMP4V2_VERSION
+echo MP4 file support ........: $enable_taglib
echo WavPack support .........: $enable_wavpack
echo NLS/gettext .............: $USE_NLS
echo Install path ............: $prefix
Index: easytag/src/mp4_header.c
===================================================================
--- easytag.orig/src/mp4_header.c 2011-06-08 23:28:43.000000000 +0700
+++ easytag/src/mp4_header.c 2011-06-08 23:36:48.433768764 +0700
@@ -44,13 +44,13 @@
#undef PACKAGE_STRING
#undef PACKAGE_TARNAME
#undef PACKAGE_VERSION
-#include <mp4v2/mp4v2.h>
+#include <tag_c.h>
/****************
* Declarations *
****************/
-
+/*
static const struct
{
uint8_t profile;
@@ -106,7 +106,7 @@
};
#define NUMBER_OF(A) (sizeof(A) / sizeof(A[0]))
-
+*/
/**************
* Prototypes *
@@ -122,6 +122,7 @@
*
* Returns a format/sub-format information. Taken from mp4.h/mp4info.
*/
+/*
static void getType(MP4FileHandle file, MP4TrackId trackId, const char **format, const char **subformat )
{
unsigned i;
@@ -184,7 +185,7 @@
*subformat = media_data_name;
}
}
-
+*/
/*
* Mp4_Header_Read_File_Info:
@@ -193,10 +194,8 @@
*/
gboolean Mp4_Header_Read_File_Info (gchar *filename, ET_File_Info *ETFileInfo)
{
- MP4FileHandle file;
- MP4TrackId trackId = 1;
- //const char* trackType;
- const char *format, *subformat;
+ TagLib_File *file;
+ const TagLib_AudioProperties *properties;
if (!filename || !ETFileInfo)
return FALSE;
@@ -204,7 +203,7 @@
/* Get size of file */
ETFileInfo->size = Get_File_Size(filename);
- if ((file = MP4Read(filename, 0)) == MP4_INVALID_FILE_HANDLE )
+ if ((file = taglib_file_new_type(filename, TagLib_File_MP4)) == NULL )
{
gchar *filename_utf8 = filename_to_display(filename);
//g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
@@ -214,23 +213,20 @@
}
/* Check for audio track */
- if( MP4GetNumberOfTracks(file,MP4_AUDIO_TRACK_TYPE,0) < 1 )
+ if( !taglib_file_is_valid(file))
{
gchar *filename_utf8 = filename_to_display(filename);
Log_Print(LOG_ERROR,_("ERROR while opening file: '%s' (%s)."),filename_utf8,("Contains no audio track"));
- MP4Close(file);
g_free(filename_utf8);
return FALSE;
}
-
- /* Get the first track id (index 0) */
- trackId = MP4FindTrackId(file, 0, MP4_AUDIO_TRACK_TYPE, 0);
+
+ properties = taglib_file_audioproperties(file);
/* Get format/subformat */
{
- getType( file, trackId, &format, &subformat );
- ETFileInfo->mpc_version = g_strdup( format );
- ETFileInfo->mpc_profile = g_strdup( subformat );
+ ETFileInfo->mpc_version = g_strdup( "MPEG" );
+ ETFileInfo->mpc_profile = g_strdup( "4, Unknown" );
}
ETFileInfo->version = 4;
@@ -238,12 +234,12 @@
ETFileInfo->layer = 14;
ETFileInfo->variable_bitrate = TRUE;
- ETFileInfo->bitrate = MP4GetTrackBitRate(file, trackId) / 1000;
- ETFileInfo->samplerate = MP4GetTrackTimeScale(file, trackId);
- ETFileInfo->mode = MP4GetTrackAudioChannels(file, trackId);
- ETFileInfo->duration = MP4ConvertFromTrackDuration(file, trackId, MP4GetTrackDuration(file, trackId), MP4_SECS_TIME_SCALE);
+ ETFileInfo->bitrate = taglib_audioproperties_bitrate(properties);
+ ETFileInfo->samplerate = taglib_audioproperties_samplerate(properties);
+ ETFileInfo->mode = taglib_audioproperties_channels(properties);
+ ETFileInfo->duration = taglib_audioproperties_length(properties);
- MP4Close(file);
+ taglib_file_free(file);
return TRUE;
}
Index: easytag/src/mp4_tag.c
===================================================================
--- easytag.orig/src/mp4_tag.c 2011-06-08 23:28:43.000000000 +0700
+++ easytag/src/mp4_tag.c 2011-06-08 23:41:36.263768968 +0700
@@ -21,7 +21,7 @@
*/
/* Portions of this code was borrowed from the MPEG4IP tools project */
-#include <config.h> // For definition of ENABLE_MP4
+#include <config.h> // For definition of ENABLE_TAGLIB
#ifdef ENABLE_MP4
@@ -50,7 +50,7 @@
#undef PACKAGE_STRING
#undef PACKAGE_TARNAME
#undef PACKAGE_VERSION
-#include <mp4v2/mp4v2.h>
+#include <tag_c.h>
/****************
@@ -79,15 +79,9 @@
gboolean Mp4tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
{
FILE *file;
- MP4FileHandle mp4file = NULL;
- uint16_t track, track_total;
- uint16_t disk, disktotal;
- u_int8_t *coverArt;
- u_int32_t coverSize;
- Picture *prev_pic = NULL;
-#ifdef NEWMP4
- gint pic_num;
-#endif
+ TagLib_File *mp4file;
+ TagLib_Tag *tag;
+ unsigned track;
if (!filename || !FileTag)
return FALSE;
@@ -102,8 +96,8 @@
fclose(file); // We close it cause mp4 opens/closes file itself
/* Get data from tag */
- mp4file = MP4Read(filename, 0);
- if (mp4file == MP4_INVALID_FILE_HANDLE)
+ mp4file = taglib_file_new_type(filename, TagLib_File_MP4);
+ if (mp4file == NULL)
{
gchar *filename_utf8 = filename_to_display(filename);
Log_Print(LOG_ERROR,_("ERROR while opening file: '%s' (%s)."),filename_utf8,_("MP4 format invalid"));
@@ -112,25 +106,27 @@
}
/* TODO Add error detection */
+ tag = taglib_file_tag(mp4file);
/*********
* Title *
*********/
- MP4GetMetadataName(mp4file, &FileTag->title);
+ FileTag->title = g_strdup(taglib_tag_title(tag));
/**********
* Artist *
**********/
- MP4GetMetadataArtist(mp4file, &FileTag->artist);
+ FileTag->artist = g_strdup(taglib_tag_artist(tag));
/*********
* Album *
*********/
- MP4GetMetadataAlbum(mp4file, &FileTag->album);
+ FileTag->album = g_strdup(taglib_tag_album(tag));
/**********************
* Disk / Total Disks *
**********************/
+ /*
if (MP4GetMetadataDisk(mp4file, &disk, &disktotal))
{
if (disk != 0 && disktotal != 0)
@@ -142,42 +138,44 @@
//if (disktotal != 0)
// FileTag->disk_number_total = g_strdup_printf("%d",(gint)disktotal);
}
+ */
/********
* Year *
********/
- MP4GetMetadataYear(mp4file, &FileTag->year);
+ FileTag->year = g_strdup_printf("%u", taglib_tag_year(tag));
/*************************
* Track and Total Track *
*************************/
- if (MP4GetMetadataTrack(mp4file, &track, &track_total))
+ track = taglib_tag_track(tag);
+
{
if (track != 0)
FileTag->track = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)track); // Just to have numbers like this : '01', '05', '12', ...
- if (track_total != 0)
- FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)track_total); // Just to have numbers like this : '01', '05', '12', ...
+ //if (track_total != 0)
+ // FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)track_total); // Just to have numbers like this : '01', '05', '12', ...
}
/*********
* Genre *
*********/
- MP4GetMetadataGenre(mp4file, &FileTag->genre);
+ FileTag->genre = g_strdup(taglib_tag_genre(tag));
/***********
* Comment *
***********/
- MP4GetMetadataComment(mp4file, &FileTag->comment);
+ FileTag->comment = g_strdup(taglib_tag_comment(tag));
/**********************
* Composer or Writer *
**********************/
- MP4GetMetadataWriter(mp4file, &FileTag->composer);
+ // MP4GetMetadataWriter(mp4file, &FileTag->composer);
/*****************
* Encoding Tool *
*****************/
- MP4GetMetadataTool(mp4file, &FileTag->encoded_by);
+ // MP4GetMetadataTool(mp4file, &FileTag->encoded_by);
/* Unimplemented
Tempo / BPM
@@ -187,6 +185,7 @@
/***********
* Picture *
***********/
+ /*
#ifdef NEWMP4
// There version can handle multiple pictures!
// Version 1.6 of libmp4v2 introduces an index argument for MP4GetMetadataCoverart
@@ -210,10 +209,11 @@
pic->type = PICTURE_TYPE_FRONT_COVER;
pic->description = NULL;
}
-
+ */
/* Free allocated data */
- MP4Close(mp4file);
+ taglib_tag_free_strings();
+ taglib_file_free(mp4file);
return TRUE;
}
@@ -233,7 +233,8 @@
gchar *filename;
gchar *filename_utf8;
FILE *file;
- MP4FileHandle mp4file = NULL;
+ TagLib_File *mp4file = NULL;
+ TagLib_Tag *tag;
gint error = 0;
if (!ETFile || !ETFile->FileTag)
@@ -252,23 +253,25 @@
fclose(file);
/* Open file for writing */
- mp4file = MP4Modify(filename,0,0);
- if (mp4file == MP4_INVALID_FILE_HANDLE)
+ mp4file = taglib_file_new_type(filename, TagLib_File_MP4);
+ if (mp4file == NULL)
{
Log_Print(LOG_ERROR,_("ERROR while opening file: '%s' (%s)."),filename_utf8,_("MP4 format invalid"));
return FALSE;
}
+
+ tag = taglib_file_tag(mp4file);
/*********
* Title *
*********/
if (FileTag->title && g_utf8_strlen(FileTag->title, -1) > 0)
{
- MP4SetMetadataName(mp4file, FileTag->title);
+ taglib_tag_set_title(tag, FileTag->title);
}else
{
//MP4DeleteMetadataName(mp4file); // Not available on mpeg4ip-1.2 (only in 1.3)
- MP4SetMetadataName(mp4file, "");
+ taglib_tag_set_title(tag, "");
}
/**********
@@ -276,11 +279,11 @@
**********/
if (FileTag->artist && g_utf8_strlen(FileTag->artist, -1) > 0)
{
- MP4SetMetadataArtist(mp4file, FileTag->artist);
+ taglib_tag_set_artist(tag, FileTag->artist);
}else
{
//MP4DeleteMetadataArtist(mp4file);
- MP4SetMetadataArtist(mp4file, "");
+ taglib_tag_set_artist(tag, "");
}
/*********
@@ -288,11 +291,11 @@
*********/
if (FileTag->album && g_utf8_strlen(FileTag->album, -1) > 0)
{
- MP4SetMetadataAlbum(mp4file, FileTag->album);
+ taglib_tag_set_album(tag, FileTag->album);
}else
{
//MP4DeleteMetadataAlbum(mp4file);
- MP4SetMetadataAlbum(mp4file, "");
+ taglib_tag_set_album(tag, "");
}
/**********************
@@ -301,12 +304,9 @@
if (FileTag->disc_number && g_utf8_strlen(FileTag->disc_number, -1) > 0)
//|| FileTag->disc_number_total && g_utf8_strlen(FileTag->disc_number_total, -1) > 0)
{
- uint16_t disk = 0;
- uint16_t disktotal = 0;
-
/* At the present time, we manage only disk number like '1' or '1/2', we
* don't use disk number total... so here we try to decompose */
- if (FileTag->disc_number)
+ /*if (FileTag->disc_number)
{
gchar *dn_tmp = g_strdup(FileTag->disc_number);
gchar *tmp = strchr(dn_tmp,'/');
@@ -325,16 +325,16 @@
}
g_free(dn_tmp);
}
- /*if (FileTag->disc_number)
+ if (FileTag->disc_number)
disk = atoi(FileTag->disc_number);
if (FileTag->disc_number_total)
disktotal = atoi(FileTag->disc_number_total);
*/
- MP4SetMetadataDisk(mp4file, disk, disktotal);
+ // MP4SetMetadataDisk(mp4file, disk, disktotal);
}else
{
//MP4DeleteMetadataDisk(mp4file);
- MP4SetMetadataDisk(mp4file, 0, 0);
+ //MP4SetMetadataDisk(mp4file, 0, 0);
}
/********
@@ -342,30 +342,29 @@
********/
if (FileTag->year && g_utf8_strlen(FileTag->year, -1) > 0)
{
- MP4SetMetadataYear(mp4file, FileTag->year);
+ taglib_tag_set_year(tag, atoi(FileTag->year));
}else
{
//MP4DeleteMetadataYear(mp4file);
- MP4SetMetadataYear(mp4file, "");
+ taglib_tag_set_year(tag, 0);
}
/*************************
* Track and Total Track *
*************************/
if ( (FileTag->track && g_utf8_strlen(FileTag->track, -1) > 0)
- || (FileTag->track_total && g_utf8_strlen(FileTag->track_total, -1) > 0) )
+ /*|| (FileTag->track_total && g_utf8_strlen(FileTag->track_total, -1) > 0) */)
{
- uint16_t track = 0;
- uint16_t track_total = 0;
+ unsigned track = 0;
if (FileTag->track)
track = atoi(FileTag->track);
- if (FileTag->track_total)
- track_total = atoi(FileTag->track_total);
- MP4SetMetadataTrack(mp4file, track, track_total);
+ //if (FileTag->track_total)
+ // track_total = atoi(FileTag->track_total);
+ taglib_tag_set_track(tag, track);
}else
{
//MP4DeleteMetadataTrack(mp4file);
- MP4SetMetadataTrack(mp4file, 0, 0);
+ taglib_tag_set_track(tag, 0);
}
/*********
@@ -373,11 +372,11 @@
*********/
if (FileTag->genre && g_utf8_strlen(FileTag->genre, -1) > 0 )
{
- MP4SetMetadataGenre(mp4file, FileTag->genre);
+ taglib_tag_set_genre(tag, FileTag->genre);
}else
{
//MP4DeleteMetadataGenre(mp4file);
- MP4SetMetadataGenre(mp4file, "");
+ taglib_tag_set_genre(tag, "");
}
/***********
@@ -385,16 +384,17 @@
***********/
if (FileTag->comment && g_utf8_strlen(FileTag->comment, -1) > 0)
{
- MP4SetMetadataComment(mp4file, FileTag->comment);
+ taglib_tag_set_comment(tag, FileTag->comment);
}else
{
//MP4DeleteMetadataComment(mp4file);
- MP4SetMetadataComment(mp4file, "");
+ taglib_tag_set_comment(tag, "");
}
/**********************
* Composer or Writer *
**********************/
+ /*
if (FileTag->composer && g_utf8_strlen(FileTag->composer, -1) > 0)
{
MP4SetMetadataWriter(mp4file, FileTag->composer);
@@ -403,10 +403,12 @@
//MP4DeleteMetadataWriter(mp4file);
MP4SetMetadataWriter(mp4file, "");
}
+ */
/*****************
* Encoding Tool *
*****************/
+ /*
if (FileTag->encoded_by && g_utf8_strlen(FileTag->encoded_by, -1) > 0)
{
MP4SetMetadataTool(mp4file, FileTag->encoded_by);
@@ -415,10 +417,12 @@
//MP4DeleteMetadataTool(mp4file);
MP4SetMetadataTool(mp4file, "");
}
+ */
/***********
* Picture *
***********/
+ /*
{
// Can handle only one picture...
Picture *pic;
@@ -433,9 +437,10 @@
}
}
}
+ */
-
- MP4Close(mp4file);
+ taglib_file_save(mp4file);
+ taglib_file_free(mp4file);
if (error) return FALSE;
else return TRUE;
Index: easytag/src/easytag.c
===================================================================
--- easytag.orig/src/easytag.c 2011-06-08 23:28:43.000000000 +0700
+++ easytag/src/easytag.c 2011-06-08 23:28:50.000000000 +0700
@@ -4318,12 +4318,12 @@
#ifdef ENABLE_MP4
case MP4_TAG:
- gtk_widget_show(GTK_WIDGET(DiscNumberLabel));
- gtk_widget_show(GTK_WIDGET(DiscNumberEntry));
- gtk_widget_show(GTK_WIDGET(DiscNumberMButton));
- gtk_widget_show(GTK_WIDGET(ComposerLabel));
- gtk_widget_show(GTK_WIDGET(ComposerEntry));
- gtk_widget_show(GTK_WIDGET(ComposerMButton));
+ gtk_widget_hide(GTK_WIDGET(DiscNumberLabel));
+ gtk_widget_hide(GTK_WIDGET(DiscNumberEntry));
+ gtk_widget_hide(GTK_WIDGET(DiscNumberMButton));
+ gtk_widget_hide(GTK_WIDGET(ComposerLabel));
+ gtk_widget_hide(GTK_WIDGET(ComposerEntry));
+ gtk_widget_hide(GTK_WIDGET(ComposerMButton));
gtk_widget_hide(GTK_WIDGET(OrigArtistLabel));
gtk_widget_hide(GTK_WIDGET(OrigArtistEntry));
gtk_widget_hide(GTK_WIDGET(OrigArtistMButton));
@@ -4333,16 +4333,16 @@
gtk_widget_hide(GTK_WIDGET(URLLabel));
gtk_widget_hide(GTK_WIDGET(URLEntry));
gtk_widget_hide(GTK_WIDGET(URLMButton));
- gtk_widget_show(GTK_WIDGET(EncodedByLabel));
- gtk_widget_show(GTK_WIDGET(EncodedByEntry));
- gtk_widget_show(GTK_WIDGET(EncodedByMButton));
- gtk_widget_show(GTK_WIDGET(PictureLabel));
- gtk_widget_show(GTK_WIDGET(PictureScrollWindow));
- gtk_widget_show(GTK_WIDGET(PictureMButton));
- gtk_widget_show(GTK_WIDGET(PictureClearButton));
- gtk_widget_show(GTK_WIDGET(PictureAddButton));
- gtk_widget_show(GTK_WIDGET(PictureSaveButton));
- gtk_widget_show(GTK_WIDGET(PicturePropertiesButton));
+ gtk_widget_hide(GTK_WIDGET(EncodedByLabel));
+ gtk_widget_hide(GTK_WIDGET(EncodedByEntry));
+ gtk_widget_hide(GTK_WIDGET(EncodedByMButton));
+ gtk_widget_hide(GTK_WIDGET(PictureLabel));
+ gtk_widget_hide(GTK_WIDGET(PictureScrollWindow));
+ gtk_widget_hide(GTK_WIDGET(PictureMButton));
+ gtk_widget_hide(GTK_WIDGET(PictureClearButton));
+ gtk_widget_hide(GTK_WIDGET(PictureAddButton));
+ gtk_widget_hide(GTK_WIDGET(PictureSaveButton));
+ gtk_widget_hide(GTK_WIDGET(PicturePropertiesButton));
break;
#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]