diff --git a/darkice-gui/branches/darksnow-0.7.1/Makefile.in b/darkice-gui/branches/darksnow-0.7.1/Makefile.in new file mode 100644 index 0000000..2c59420 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/Makefile.in @@ -0,0 +1,93 @@ +# Darksnow - A gui for darkice +# +# Copyright (C) 2004-2005 Rafael Diniz +# +# This source code is free software; you can redistribute it and/or +# modify it under the terms of the GNU Public License as published +# by the Free Software Foundation; either version 2 of the License, +# or (at your option) any later version. +# +# This source code is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# Please refer to the GNU Public License for more details. +# +# You should have received a copy of the GNU Public License along with +# this source code; if not, write to: +# Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# + +# darksnow Makefile +PREFIX=@prefix@ +INTLPREFIX=@prefix@ +CC=@CC@ +VERSION=@VERSION@ +#CFLAGS+=-Wall -DGTK_DISABLE_DEPRECATED=1 +CFLAGS+=-Wall +INSTALL=install +ARCH=`uname -m` + +#set debugging symbols: +#CFLAGS+= -g + +#set funny messages +#CFLAGS+= -DFUNNY + +# use tooltips +CFLAGS+= -DUSE_TOOLTIP + +all: darksnow + +darksnow: darksnow.o interface.o config_files.o tooltips.o man_gzip + $(CC) darksnow.o interface.o config_files.o tooltips.o -o darksnow @GTK_LIBS@ @GTK_CFLAGS@ -DVERSION="\"$(VERSION)\"" + +darksnow.o: darksnow.c + $(CC) $(FUNNY) @GTK_CFLAGS@ -DINTLPREFIX="\"$(INTLPREFIX)\"" -DVERSION="\"$(VERSION)\"" -c darksnow.c -o darksnow.o + +interface.o: interface.c + $(CC) $(CFLAGS) $(FUNNY) @GTK_CFLAGS@ -DINTLPREFIX="\"$(INTLPREFIX)\"" -DVERSION="\"$(VERSION)\"" -c interface.c -o interface.o + +config_files.o: config_files.c + $(CC) $(CFLAGS) $(FUNNY) @GTK_CFLAGS@ -DINTLPREFIX="\"$(INTLPREFIX)\"" -DVERSION="\"$(VERSION)\"" -c config_files.c -o config_files.o + +tooltips.o: tooltips.c + $(CC) $(CFLAGS) $(FUNNY) @GTK_CFLAGS@ -DINTLPREFIX="\"$(INTLPREFIX)\"" -DVERSION="\"$(VERSION)\"" -c tooltips.c -o tooltips.o + +man_gzip: + gzip -c man/darksnow.1 > man/darksnow.1.gz + +clean: + rm -f *.o *~ darksnow man/darksnow.1.gz + rm -rf slack darksnow.tgz + +install: darksnow + $(INSTALL) -D --mode=0755 darksnow $(PREFIX)/bin/darksnow + $(INSTALL) -D --mode=0644 documentation/CHANGES $(PREFIX)/share/darksnow/changelog + $(INSTALL) -D --mode=0644 po/pt_BR.mo $(PREFIX)/share/locale/pt_BR/LC_MESSAGES/darksnow.mo + $(INSTALL) -D --mode=0644 icon/darksnow_icon.png $(PREFIX)/share/icons/hicolor/32x32/apps/darksnow.png + $(INSTALL) -D --mode=0644 man/darksnow.1.gz $(PREFIX)/share/man/man1/darksnow.1.gz + +make_pkg: darksnow + echo "Remember to run this option as root!" + rm -rf slack + $(INSTALL) -D --mode=0755 darksnow slack$(PREFIX)/bin/darksnow + $(INSTALL) -D --mode=0644 icon/darksnow_icon.png slack$(PREFIX)/share/icons/darksnow.png + $(INSTALL) -D --mode=0644 po/pt_BR.mo slack$(PREFIX)/share/locale/pt_BR/LC_MESSAGES/darksnow.mo + $(INSTALL) -D --mode=0644 documentation/CHANGES slack$(PREFIX)/doc/darksnow/CHANGES + $(INSTALL) -D --mode=0644 documentation/LICENSE slack$(PREFIX)/doc/darksnow/LICENSE + $(INSTALL) -D --mode=0644 documentation/README.en slack$(PREFIX)/doc/darksnow/README.en + $(INSTALL) -D --mode=0644 documentation/README.pt_BR slack$(PREFIX)/doc/darksnow/README.pt_BR + $(INSTALL) -D --mode=0644 documentation/CHANGES slack$(PREFIX)/doc/darksnow/CHANGES + $(INSTALL) -D --mode=0644 documentation/slack-desc slack/install/slack-desc + cd slack; makepkg -c y -l n ../darksnow-$(VERSION)-$(ARCH)-1rd.tgz + echo "Remember to run this option as root!" + +install_pkg: make_pkg + /sbin/installpkg darksnow-*-1rd.tgz + +upgrade_pkg: make_pkg + /sbin/upgradepkg darksnow-*-1rd.tgz + +dist-clean: clean + rm aclocal.m4 config.status config.log man/darksnow.1.gz Makefile + rm -r autom4te.cache diff --git a/darkice-gui/branches/darksnow-0.7.1/README b/darkice-gui/branches/darksnow-0.7.1/README new file mode 100644 index 0000000..a1e1e09 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/README @@ -0,0 +1,3 @@ +please read documentation/README.* +por favor leia documentation/README.* + diff --git a/darkice-gui/branches/darksnow-0.7.1/autogen.sh b/darkice-gui/branches/darksnow-0.7.1/autogen.sh new file mode 100755 index 0000000..17e46d9 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/autogen.sh @@ -0,0 +1,69 @@ +#!/bin/sh +# Run this to set up the build system: configure, makefiles, etc. +# (based on the version in enlightenment's cvs) + +package="darkice-gui" + +srcdir=`dirname $0` +test -z "$srcdir" && srcdir=. + +cd "$srcdir" +DIE=0 + +(autoheader --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "You must have autoconf installed to compile $package." + echo "Download the appropriate package for your distribution," + echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" + DIE=1 +} + +(autoconf --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "You must have autoconf installed to compile $package." + echo "Download the appropriate package for your distribution," + echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" + DIE=1 +} + +(automake --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "You must have automake installed to compile $package." + echo "Download the appropriate package for your system," + echo "or get the source from one of the GNU ftp sites" + echo "listed in http://www.gnu.org/order/ftp.html" + DIE=1 +} + +(libtool --help) < /dev/null > /dev/null 2>&1 || { + echo + echo "You must have libtool installed to compile $package." + echo "Download the appropriate package for your system," + echo "or get the source from one of the GNU ftp sites" + echo "listed in http://www.gnu.org/order/ftp.html" + DIE=1 +} + +if test "$DIE" -eq 1; then + exit 1 +fi + +if test -z "$*"; then + echo "I am going to run ./configure with no arguments - if you wish " + echo "to pass any to it, please specify them on the $0 command line." +fi + +echo "Generating configuration files for $package, please wait...." + +echo " aclocal $ACLOCAL_FLAGS" +aclocal $ACLOCAL_FLAGS +echo " autoheader" +autoheader +echo " libtoolize --automake" +libtoolize --automake +echo " automake --add-missing $AUTOMAKE_FLAGS" +automake --add-missing $AUTOMAKE_FLAGS +echo " autoconf" +autoconf + +$srcdir/configure "$@" && echo diff --git a/darkice-gui/branches/darksnow-0.7.1/config_files.c b/darkice-gui/branches/darksnow-0.7.1/config_files.c new file mode 100644 index 0000000..3ec5438 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/config_files.c @@ -0,0 +1,336 @@ +/* Darksnow - A GUI for darkice + * Copyright (C) 2004-2005 Rafael Diniz + * + * This source code is free software; you can redistribute it and/or + * modify it under the terms of the GNU Public License as published + * by the Free Software Foundation; either version 2 of the License, + * or (at your option) any later version. + * + * This source code is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * Please refer to the GNU Public License for more details. + * + * You should have received a copy of the GNU Public License along with + * this source code; if not, write to: + * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#include +#include +#include +#include +#include + +#ifndef __GTK_H__ +#include +#endif + + +#ifndef __GLOBAL_H__ +#include "global.h" +#endif + +#ifndef __CONSTANTS_H__ +#include "constants.h" +#endif + +#ifndef __CONFIG_FILES_H__ +#include "config_files.h" +#endif + +gboolean darksnow_config_store(char opt, char *save_path) { + int i; + char mp[128]; + char *server; + char *port; + char *mountpoint; + char *pass; + char *remotedump; + char *localdump; + char *radioname; + char adddate; + char *description; + char *url; + char *genre; + char *icecast; + char *format; + char *bitrate; + char *bitratemode; + char *samplerate; + char *quality; + char *bitspersample; + char *channel; + char *buffersize; + char *device; + char *public; + char *verbosity; + + FILE *f_darksnow_cfg; + + /* Entry inputs */ + server = (char *) gtk_entry_get_text ( (GtkEntry *) entry_server); + port = (char *) gtk_entry_get_text (( GtkEntry *) entry_port); + mountpoint = (char *) gtk_entry_get_text ( (GtkEntry *) entry_mountpoint); + pass = (char *) gtk_entry_get_text ( (GtkEntry *) entry_pass); + radioname = (char *) gtk_entry_get_text ( (GtkEntry *) entry_radioname); + description = (char *) gtk_entry_get_text ( (GtkEntry *) entry_description); + url = (char *) gtk_entry_get_text ( (GtkEntry *) entry_url); + genre = (char *) gtk_entry_get_text ( (GtkEntry *) entry_genre); + remotedump = (char *) gtk_entry_get_text ( (GtkEntry *) entry_remotedump); + localdump = (char *) gtk_entry_get_text ( (GtkEntry *) entry_localdump); + + adddate = (char) (gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON (checkbutton_adddate) ))? '1': '0'; + + /* Combo box inputs */ + icecast = gtk_combo_box_text_get_active_text ( GTK_COMBO_BOX_TEXT(combo_icecast)); + format = gtk_combo_box_text_get_active_text ( GTK_COMBO_BOX_TEXT(combo_format)); + bitrate = gtk_combo_box_text_get_active_text ( GTK_COMBO_BOX_TEXT(combo_bitrate)); + bitratemode = gtk_combo_box_text_get_active_text ( GTK_COMBO_BOX_TEXT(combo_bitratemode)); + samplerate = gtk_combo_box_text_get_active_text ( GTK_COMBO_BOX_TEXT(combo_samplerate)); + quality = gtk_combo_box_text_get_active_text ( GTK_COMBO_BOX_TEXT(combo_quality)); + bitspersample = gtk_combo_box_text_get_active_text ( GTK_COMBO_BOX_TEXT(combo_bitspersample)); + channel = gtk_combo_box_text_get_active_text ( GTK_COMBO_BOX_TEXT(combo_channel)); + buffersize = gtk_combo_box_text_get_active_text ( GTK_COMBO_BOX_TEXT(combo_buffersize)); + device = gtk_combo_box_text_get_active_text ( GTK_COMBO_BOX_TEXT(combo_device)); + public = gtk_combo_box_text_get_active_text ( GTK_COMBO_BOX_TEXT(combo_public)); + verbosity = gtk_combo_box_text_get_active_text ( GTK_COMBO_BOX_TEXT(combo_verbosity)); + + + if (!( f_darksnow_cfg = (opt != 0)? fopen(darksnow_cfg, "w") : fopen(save_path, "w"))) { + printf("Error: Cannot open %s\n", (opt != 0)? darksnow_cfg: save_path); + return FALSE; + } + + /* for compatibility issues, mountpoint can start with slash */ + i = 0; + while( mountpoint[i] == ' ' || mountpoint[i] == '/' ) i++; + strcpy (mp, mountpoint+i); + + + /* Entry writes */ + fprintf (f_darksnow_cfg, "server=%s\n", server); + fprintf (f_darksnow_cfg, "port=%s\n", port); + fprintf (f_darksnow_cfg, "mountpoint=%s\n", mp); + fprintf (f_darksnow_cfg, "pass=%s\n", pass); + fprintf (f_darksnow_cfg, "radioname=%s\n", radioname); + fprintf (f_darksnow_cfg, "description=%s\n", description); + fprintf (f_darksnow_cfg, "url=%s\n", url); + fprintf (f_darksnow_cfg, "genre=%s\n", genre); + fprintf (f_darksnow_cfg, "icecast=%s\n", icecast); + fprintf (f_darksnow_cfg, "format=%s\n", format); + fprintf (f_darksnow_cfg, "bitrate=%s\n", bitrate); + fprintf (f_darksnow_cfg, "bitratemode=%s\n", bitratemode); + fprintf (f_darksnow_cfg, "samplerate=%s\n", samplerate); + fprintf (f_darksnow_cfg, "quality=%s\n", quality); + fprintf (f_darksnow_cfg, "bitspersample=%s\n", bitspersample); + fprintf (f_darksnow_cfg, "channel=%s\n", channel); + fprintf (f_darksnow_cfg, "buffersize=%s\n", buffersize); + fprintf (f_darksnow_cfg, "device=%s\n", device); + fprintf (f_darksnow_cfg, "public=%s\n", public); + fprintf (f_darksnow_cfg, "verbosity=%s\n", verbosity); + fprintf (f_darksnow_cfg, "remotedump=%s\n", remotedump); + fprintf (f_darksnow_cfg, "localdump=%s\n", localdump); + fprintf (f_darksnow_cfg, "adddate=%c\n", adddate); + + fclose (f_darksnow_cfg); + + return TRUE; +} + +gboolean darksnow2darkice_cfg() { + FILE *f_darksnow_cfg; + FILE *f_darkice_cfg; + char destination = 0; + int i; + + /* strings section */ + char foo[256] = {0}; + char server[256] = {0}; + char port[128] = {0}; + char mountpoint[128] = {0}; + char pass[128] = {0}; + char remotedump[256] = {0}; + char localdump[256] = {0}; + char adddate; + char radioname[128] = {0}; + char description[256] = {0}; + char url[256] = {0}; + char genre[128] = {0}; + char icecast[128] = {0}; + char format[128] = {0}; + char bitrate[128] = {0}; + char bitratemode[128] = {0}; + char samplerate[128] = {0}; + char quality[128] = {0}; + char bitspersample[128] = {0}; + char channel[128] = {0}; + char buffersize[128] = {0}; + char device[128] = {0}; + char public[128] = {0}; + + if (!(f_darksnow_cfg = fopen(darksnow_cfg, "r"))) { + printf("Error: Cannot open %s\n", darksnow_cfg); + exit (-1); + } + + if (!(f_darkice_cfg = fopen(darkice_cfg, "w"))) { + printf("Error: Cannot open %s\n", darkice_cfg); + exit (-1); + } + + /* read de configuration from darksnow config file */ + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, server); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, port); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, mountpoint); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, pass); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, radioname); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, description); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, url); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, genre); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, icecast); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, format); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, bitrate); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, bitratemode); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, samplerate); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, quality); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, bitspersample); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, channel); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, buffersize); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, device); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, public); + fscanf(f_darksnow_cfg, "%*[^=]=%*[^\n]\n"); /* the verbosity level is not needed */ + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, remotedump); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, localdump); + fscanf(f_darksnow_cfg, "%[^=]=%c\n", foo, &adddate); + + /* set destination flag - 0-> icecast1, 1->icecast2, 2->shoutcast, 3->file */ + if (!strcmp("Icecast 1", icecast)) + destination = 0; + else if (!strcmp("Icecast 2", icecast)) + destination = 1; + else if (!strcmp("Shoutcast", icecast)) + destination = 2; + /* File output support not yet codded */ + else if (!strcmp("File", icecast)) + destination = 3; + + /* write the config file for darkice */ + + /* the reader of the config file */ + fprintf(f_darkice_cfg, "[general]"); + fprintf(f_darkice_cfg, "\nduration = "); + fprintf(f_darkice_cfg, "0"); /* duration of encoding, in seconds. 0 means forever */ + fprintf(f_darkice_cfg, "\nbufferSecs = "); + fprintf(f_darkice_cfg, "%s", buffersize); /* size of internal slip buffer, in seconds */ + fprintf(f_darkice_cfg, "\n\n[input]"); + fprintf(f_darkice_cfg, "\ndevice = "); + fprintf(f_darkice_cfg, "%s", device); /* OSS, ALSA, Pulse or JACK */ + if (!strcmp(device, "pulseaudio")) { + fprintf(f_darkice_cfg, "\npaSourceName = default"); + } + fprintf(f_darkice_cfg, "\nsampleRate = "); + fprintf(f_darkice_cfg, "%s", samplerate); /* sample rate in Hz. try 11025, 22050 or 44100 */ + fprintf(f_darkice_cfg, "\nbitsPerSample = "); + fprintf(f_darkice_cfg, "%s", bitspersample); /* bits per sample. try 16 */ + + fprintf(f_darkice_cfg, "\nchannel = "); /* channels. 1 = mono, 2 = stereo */ + if (!strcmp(channel, "1 - Mono")) + fprintf(f_darkice_cfg, "1"); + else + fprintf(f_darkice_cfg, "2"); + + /* destionation type */ + switch (destination) { + case 0: + fprintf(f_darkice_cfg, "\n\n[icecast-0]"); /* icecast 1 version server */ + break; + case 1: + fprintf(f_darkice_cfg, "\n\n[icecast2-0]"); /* icecast 2 version server */ + break; + case 2: + fprintf(f_darkice_cfg, "\n\n[shoutcast-0]"); /* shoutcast server */ /* FIXME - not yet implemented */ + break; + case 3: + fprintf(f_darkice_cfg, "\n\n[file-0]"); /* file output */ /* FIXME - not yet implemented */ + break; + } + + /* write bitratemode */ + fprintf(f_darkice_cfg, "\nbitrateMode = "); + if (!strcmp(gettext("Constant"), bitratemode)) + fprintf(f_darkice_cfg, "cbr"); /* Constant bitrate mode */ + else + if (!strcmp(gettext("Average"), bitratemode)) + fprintf(f_darkice_cfg, "abr"); /* average bitrate mode */ + else + if (!strcmp(gettext("Variable"), bitratemode)) + fprintf(f_darkice_cfg, "vbr"); /* variable bitrate mode */ + + + /* write format */ + if (destination == 1) { + fprintf(f_darkice_cfg, "\nformat = "); + if (!strcmp( gettext("mp3"), format)) + fprintf(f_darkice_cfg, "mp3"); + else if (!strcmp( gettext("ogg/vorbis"), format)) + fprintf(f_darkice_cfg, "vorbis"); + else if (!strcmp( gettext("ogg/opus"), format)) + fprintf(f_darkice_cfg, "opus"); + else if (!strcmp( gettext("aac"), format)) + fprintf(f_darkice_cfg, "aac"); + else if (!strcmp( gettext("mp2"), format)) + fprintf(f_darkice_cfg, "mp2"); + else if (!strcmp( gettext("aacp"), format)) + fprintf(f_darkice_cfg, "aacp"); + } + + fprintf(f_darkice_cfg, "\nbitrate = "); + fprintf(f_darkice_cfg, "%s", bitrate); /* bitrate of the stream sent to the server */ + fprintf(f_darkice_cfg, "\nquality = "); + fprintf(f_darkice_cfg, "%s", quality); /* encoding quality */ + fprintf(f_darkice_cfg, "\nserver = "); + fprintf(f_darkice_cfg, "%s", server); + fprintf(f_darkice_cfg, "\nport = "); + fprintf(f_darkice_cfg, "%s", port); /* port of the IceCast2 server, usually 8000 */ + fprintf(f_darkice_cfg, "\npassword = "); + fprintf(f_darkice_cfg, "%s", pass); /* source password to the IceCast2 server */ + fprintf(f_darkice_cfg, "\nmountPoint = "); + fprintf(f_darkice_cfg, "%s", mountpoint); /* mount point of this stream on the IceCast2 server */ + fprintf(f_darkice_cfg, "\nname = "); + fprintf(f_darkice_cfg, "%s", radioname); /* name of the stream */ + fprintf(f_darkice_cfg, "\ndescription = "); + fprintf(f_darkice_cfg, "%s", description); /* description of the stream */ + fprintf(f_darkice_cfg, "\nurl = "); + fprintf(f_darkice_cfg, "%s", url); /* URL related to the stream */ + fprintf(f_darkice_cfg, "\ngenre = "); + fprintf(f_darkice_cfg, "%s", genre); /* genre of the stream */ + fprintf(f_darkice_cfg, "\npublic = "); + if (!strcmp( gettext("yes"), public)) + fprintf(f_darkice_cfg, "yes"); /* list this stream */ + else + fprintf(f_darkice_cfg, "no"); /* do not list this stream */ + + for (i = 0; remotedump[i] != 0 && remotedump[i] == ' '; i++); /* set the remotedumpfile name */ + if (remotedump[i] != 0) { + fprintf(f_darkice_cfg, "\nremoteDumpFile = "); + fprintf(f_darkice_cfg, "%s", remotedump+i); + } + + for (i = 0; localdump[i] != 0 && localdump[i] == ' '; i++); /* set the localdumpfile name */ + if (localdump[i] != 0) { + fprintf(f_darkice_cfg, "\nlocalDumpFile = "); + fprintf(f_darkice_cfg, "%s", localdump+i); + fprintf(f_darkice_cfg, "\nfileAddDate = "); + fprintf(f_darkice_cfg, "%s", (adddate == '1')? "yes":"no"); + } + + fprintf(f_darkice_cfg, "\n"); + + fclose(f_darksnow_cfg); + fclose(f_darkice_cfg); + + + return TRUE; +} diff --git a/darkice-gui/branches/darksnow-0.7.1/config_files.h b/darkice-gui/branches/darksnow-0.7.1/config_files.h new file mode 100644 index 0000000..9426fb1 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/config_files.h @@ -0,0 +1,25 @@ +/* Darksnow - A GUI for darkice + * Copyright (C) 2004-2005 Rafael Diniz + * + * This source code is free software; you can redistribute it and/or + * modify it under the terms of the GNU Public License as published + * by the Free Software Foundation; either version 2 of the License, + * or (at your option) any later version. + * + * This source code is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * Please refer to the GNU Public License for more details. + * + * You should have received a copy of the GNU Public License along with + * this source code; if not, write to: + * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#define __CONFIG_FILES_H__ + +/* writes darksnow config file to disk. if opt != 0, save in path, else, save in darksnow config directory */ +gboolean darksnow_config_store( char opt, char *save_path); + +gboolean darksnow2darkice_cfg(); diff --git a/darkice-gui/branches/darksnow-0.7.1/configure.in b/darkice-gui/branches/darksnow-0.7.1/configure.in new file mode 100644 index 0000000..2157c9a --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/configure.in @@ -0,0 +1,20 @@ +AC_INIT +AC_CONFIG_SRCDIR([darksnow.c]) +AC_CONFIG_HEADERS([config.h]) + +dnl set CC +AC_PROG_CC + +dnl tests C compiler +AC_LANG([C]) + +VERSION="0.7.1" +AC_SUBST(VERSION) + +AC_CHECK_FUNC(mmap,,AC_MSG_ERROR(Sorry, you need mmap. If you are reading this, email-me and report this problem and your system description - rafael@riseup.net)) +AC_CHECK_FUNC(gettext,,AC_MSG_ERROR(Sorry, you need gettext. If you are reading this, email-me and report this problem and your system description - rafael@riseup.net)) + +AM_PATH_GTK_2_0(2.14.0) + +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT diff --git a/darkice-gui/branches/darksnow-0.7.1/constants.h b/darkice-gui/branches/darksnow-0.7.1/constants.h new file mode 100644 index 0000000..85ace81 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/constants.h @@ -0,0 +1,25 @@ +/* Darksnow - A GUI for darkice + * Copyright (C) 2004-2005 Rafael Diniz + * + * This source code is free software; you can redistribute it and/or + * modify it under the terms of the GNU Public License as published + * by the Free Software Foundation; either version 2 of the License, + * or (at your option) any later version. + * + * This source code is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * Please refer to the GNU Public License for more details. + * + * You should have received a copy of the GNU Public License along with + * this source code; if not, write to: + * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#define __CONSTANTS_H__ + +/* the size of main window */ +#define SIZE_X 480 +#define SIZE_Y 505 + diff --git a/darkice-gui/branches/darksnow-0.7.1/darksnow.c b/darkice-gui/branches/darksnow-0.7.1/darksnow.c new file mode 100644 index 0000000..50755f6 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/darksnow.c @@ -0,0 +1,676 @@ +/* Darksnow - A GUI for darkice + * Copyright (C) 2004-2005 Rafael Diniz + * + * This source code is free software; you can redistribute it and/or + * modify it under the terms of the GNU Public License as published + * by the Free Software Foundation; either version 2 of the License, + * or (at your option) any later version. + * + * This source code is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * Please refer to the GNU Public License for more details. + * + * You should have received a copy of the GNU Public License along with + * this source code; if not, write to: + * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#ifndef __GLOBAL_H__ +#include "global.h" +#endif + +/* some defines */ +#ifndef __CONSTANTS_H__ +#include "constants.h" +#endif + +#ifndef __INTERFACE_H__ +#include "interface.h" +#endif + +#ifndef __TOOLTIPS_H__ +#include "tooltips.h" +#endif + +int main( int argc, char *argv[], char *envp[]) { + DIR *directory; + char *foo; + char bar[256]; + char locale[16]; + int i = 0, j = 0, fd; + + if (!gtk_init_check (&argc, &argv)) { + fprintf(stderr, "Display cannot be initialized, wait for the curses interface :-P\n"); + exit (-1); + } + + if (envp[i] == NULL) { + fprintf(stderr, "hummmm, Environment variables not found?\n"); + exit(-1); + } + + + /* Sets the shared area */ + /* 00 means streaming stopped, don't update label */ + /* 01 means streaming stopped, update label */ + /* 10 means streaming started, don't update label */ + /* 11 means streaming started, update label */ + shared_area = mmap (0, 3, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0); + sprintf ((char *) shared_area, "00"); + + /* get the user HOME */ + while (envp[i] != NULL && strncmp("HOME", envp[i++], 4)); + if (envp[i] != NULL) + strcpy(home, envp[i-1]+5); + + /* if not exists, create the config directory */ + strcat(home,"/.darksnow"); + if ( !(directory = opendir(home)) ) { + if (mkdir(home, S_IRWXU )) + fprintf(stderr, "Error: %s cannot be created\n", home); + } + else + closedir(directory); + + /* sets the location of the configuration files */ + strcpy (darksnow_cfg, home); + strcat (darksnow_cfg, "/darksnow.cfg"); + strcpy (darkice_cfg, home); + strcat (darkice_cfg, "/darkice.cfg"); + strcpy (darksnow_temp, home); + strcat (darksnow_temp, "/darksnow.temp"); + + /* the fifo for the debug window of darkice */ + unlink(darksnow_temp); + if(mkfifo(darksnow_temp, S_IRWXU )) + fprintf(stderr, "error creating the fifo at %s\n", darksnow_temp); + darkice_fd = open (darksnow_temp, O_RDONLY | O_NONBLOCK); + + /* internacionalization stuff */ + setlocale (LC_ALL, ""); + + strcpy(locale, INTLPREFIX); + strcat(locale, "/share/locale"); + + bindtextdomain ("darksnow", locale); + textdomain ("darksnow"); + + /* check if darkice exists in path */ + i = 0; j = 5; + while (envp[i] != NULL && strncmp("PATH", envp[i++], 4)); + + while ( (sscanf(envp[i-1]+j,"%[^:]:",bar) != -1) && j){ + j = j + strlen(bar) + 1; + fd = 0; + while ( (bar[fd] != '=') && (bar[fd] != 0) ) ++fd; + if (bar[fd] == '=') goto end; + if ( (fd = open(strcat(bar,"/darkice"), O_RDONLY)) != -1) { + j = 0; /* 0 means darkice is found */ + close (fd); + } + } + + + if (j){ + end: + darkice_not_found(); + exit(-1); + } + + + /* Now the GTK+ stuff ... */ + + g_timeout_add (1000, (GSourceFunc) status_loop, 0); /* status_loop() updates the streaming status */ + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + button_start = gtk_button_new_with_label ( gettext("Start Streaming") ); + button_stop = gtk_button_new_with_label ( gettext("Stop Streaming") ); + button_detail = gtk_button_new_with_label ( gettext("Show Details") ); + show_detail = 0; + label_status = gtk_label_new ( gettext("Streaming Status: Stopped")); + table = gtk_table_new (2, 1, FALSE); + vbox = gtk_vbox_new (FALSE, 0); /* packs the menu_bar and the table */ + + + /* main window stuff */ + gtk_window_set_title (GTK_WINDOW (window), "DarkSnow"); + gtk_widget_set_size_request (GTK_WIDGET (window), SIZE_X, SIZE_Y); + gtk_container_set_border_width (GTK_CONTAINER (window), 0); + + + /* sets up the upper menu stuff */ + menu_bar = gtk_menu_bar_new(); + + menu_file = gtk_menu_new(); + menu_item_file = gtk_menu_item_new_with_label ( gettext("File") ); + menu_item_open = gtk_menu_item_new_with_label ( gettext("Open Configuration") ); + menu_item_save = gtk_menu_item_new_with_label ( gettext("Save Configuration") ); + menu_item_quit_nd = gtk_menu_item_new_with_label ( gettext("Quit and don't stop darkice") ); + menu_item_quit = gtk_menu_item_new_with_label ( gettext("Quit") ); + gtk_menu_shell_append (GTK_MENU_SHELL (menu_file), menu_item_open); + gtk_menu_shell_append (GTK_MENU_SHELL (menu_file), menu_item_save); + gtk_menu_shell_append (GTK_MENU_SHELL (menu_file), menu_item_quit_nd); + gtk_menu_shell_append (GTK_MENU_SHELL (menu_file), menu_item_quit); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item_file), menu_file); + gtk_menu_shell_append ( GTK_MENU_SHELL (menu_bar), menu_item_file ); + + menu_help = gtk_menu_new(); + menu_item_help = gtk_menu_item_new_with_label ( gettext("Help") ); + menu_item_about = gtk_menu_item_new_with_label ( gettext("About") ); + gtk_menu_shell_append (GTK_MENU_SHELL (menu_help), menu_item_about); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item_help), menu_help); + gtk_menu_shell_append ( GTK_MENU_SHELL (menu_bar), menu_item_help ); + + gtk_box_pack_start (GTK_BOX (vbox), menu_bar, FALSE, FALSE, 0); + + + /* sets up the about dialog */ + dialog_about = gtk_about_dialog_new (); + const gchar *authors[] = {"Rafael Diniz", NULL}; + gtk_about_dialog_set_program_name( GTK_ABOUT_DIALOG( dialog_about), "DarkSnow"); + gtk_about_dialog_set_version( GTK_ABOUT_DIALOG( dialog_about), VERSION); + gtk_about_dialog_set_authors( GTK_ABOUT_DIALOG(dialog_about), authors); +/* gtk_about_dialog_set_license_type( GTK_ABOUT_DIALOG(dialog_about), GTK_LICENSE_GPL_3_0);*/ + gtk_about_dialog_set_website( GTK_ABOUT_DIALOG(dialog_about), "http://darksnow.radiolivre.org"); + + /* sets up the exit window */ + dialog_darkkill = gtk_dialog_new (); + label_darkkill = gtk_label_new (gettext("Darkice is running.\nDo you want to kill darkice?\n")); + button_yes_darkkill = gtk_button_new_with_label (gettext("Yes")); + button_no_darkkill = gtk_button_new_with_label (gettext("No")); + + gtk_window_set_title(GTK_WINDOW (dialog_darkkill), gettext("Darkice is running")); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_action_area( GTK_DIALOG (dialog_darkkill))), button_yes_darkkill, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_action_area( GTK_DIALOG (dialog_darkkill))), button_no_darkkill, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area( GTK_DIALOG (dialog_darkkill))), label_darkkill, TRUE, TRUE, 0); + + g_signal_connect_swapped (G_OBJECT (dialog_darkkill), "delete_event",G_CALLBACK (gtk_widget_hide), dialog_darkkill); + g_signal_connect (G_OBJECT (button_yes_darkkill), "clicked",G_CALLBACK (delete_event), NULL); + g_signal_connect (G_OBJECT (button_no_darkkill), "clicked",G_CALLBACK (delete_event_nd), NULL); + + /* sets up the file selectors */ + file_open = gtk_file_chooser_dialog_new ( gettext("Open File"), + NULL, + GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, + NULL); + file_save = gtk_file_chooser_dialog_new ( gettext("Save File"), + NULL, + GTK_FILE_CHOOSER_ACTION_SAVE, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, + NULL); + file_localdump = gtk_file_chooser_dialog_new ( gettext("Local Dump File"), + NULL, + GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, + NULL); + + gtk_file_chooser_set_local_only ( GTK_FILE_CHOOSER( file_open), FALSE); + gtk_file_chooser_set_local_only ( GTK_FILE_CHOOSER( file_save), FALSE); + gtk_file_chooser_set_local_only ( GTK_FILE_CHOOSER( file_localdump), FALSE); + + /* sets up the notebook stuff */ + notebook = gtk_notebook_new (); + gtk_notebook_set_tab_pos ( GTK_NOTEBOOK (notebook), GTK_POS_TOP ); + + table_server = gtk_table_new (1, 1, FALSE); + table_audio = gtk_table_new (1, 1, FALSE); + table_description = gtk_table_new (1, 1, FALSE); + + label_notebook_server = gtk_label_new ( gettext("Server Options")); + label_notebook_audio = gtk_label_new ( gettext("Audio Options")); + label_notebook_description = gtk_label_new ( gettext("Streaming Description")); + + gtk_notebook_insert_page ( GTK_NOTEBOOK (notebook), table_server, label_notebook_server, 1); + gtk_notebook_insert_page ( GTK_NOTEBOOK (notebook), table_audio, label_notebook_audio, 2); + gtk_notebook_insert_page ( GTK_NOTEBOOK (notebook), table_description, label_notebook_description, 3); + + /* Server Options Widgets */ + label_icecast = gtk_label_new ( gettext("Streaming Destination: ")); + combo_icecast = gtk_combo_box_text_new_with_entry (); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_icecast), "Icecast 1"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_icecast), "Icecast 2"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_icecast), "Shoutcast"); + gtk_entry_set_text (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (combo_icecast))),"Icecast 2"); + + label_server = gtk_label_new ( gettext("Server: ")); + entry_server = gtk_entry_new (); + label_port = gtk_label_new ( gettext("Port: ")); + entry_port = gtk_entry_new (); + label_mountpoint = gtk_label_new ( gettext("Mount Point: ")); + entry_mountpoint = gtk_entry_new (); + label_pass = gtk_label_new ( gettext("Password: ")); + entry_pass = gtk_entry_new (); + gtk_entry_set_visibility (GTK_ENTRY(entry_pass), FALSE); + + label_verbosity = gtk_label_new ( gettext ("Verbosity level: ")); + combo_verbosity = gtk_combo_box_text_new_with_entry(); + + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_verbosity), "0"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_verbosity), "1"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_verbosity), "2"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_verbosity), "3"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_verbosity), "4"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_verbosity), "5"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_verbosity), "6"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_verbosity), "7"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_verbosity), "8"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_verbosity), "9"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_verbosity), "10"); + gtk_entry_set_text (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (combo_verbosity))),"0"); + + label_remotedump = gtk_label_new ( gettext ("Remote Dump File: ")); + entry_remotedump = gtk_entry_new (); + + button_localdump = gtk_button_new_with_label ( gettext("Local Dump File")); + entry_localdump = gtk_entry_new (); + + checkbutton_adddate = gtk_check_button_new_with_label ( gettext ("Add date to local dump filename? ")); + + /* End Server Options Widgets */ + + /* Audio Options Widgets */ + label_format = gtk_label_new ( gettext("Format: ")); + combo_format = gtk_combo_box_text_new_with_entry (); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_format), gettext("mp3")); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_format), gettext("ogg/vorbis")); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_format), gettext("aac")); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_format), gettext("mp2")); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_format), gettext("aacp")); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_format), gettext("ogg/opus")); + gtk_entry_set_text (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (combo_format))),"ogg/vorbis"); + + label_bitratemode = gtk_label_new ( gettext("BitRateMode: ")); + combo_bitratemode = gtk_combo_box_text_new_with_entry (); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitratemode), gettext("Constant")); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitratemode), gettext("Average")); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitratemode), gettext("Variable")); + gtk_entry_set_text (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (combo_bitratemode))), gettext("Constant")); + + label_bitrate = gtk_label_new ( gettext("BitRate: ")); + combo_bitrate = gtk_combo_box_text_new_with_entry (); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitrate), "16"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitrate), "24"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitrate), "32"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitrate), "40"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitrate), "48"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitrate), "56"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitrate), "64"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitrate), "72"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitrate), "80"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitrate), "88"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitrate), "96"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitrate), "104"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitrate), "112"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitrate), "120"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitrate), "128"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitrate), "160"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitrate), "192"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitrate), "224"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitrate), "256"); + gtk_entry_set_text ( GTK_ENTRY(gtk_bin_get_child (GTK_BIN (combo_bitrate))),"128"); + + label_samplerate = gtk_label_new ( gettext("SampleRate: ")); + combo_samplerate = gtk_combo_box_text_new_with_entry (); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_samplerate), "8000"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_samplerate), "11025"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_samplerate), "16000"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_samplerate), "22050"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_samplerate), "24000"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_samplerate), "32000"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_samplerate), "44100"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_samplerate), "48000"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_samplerate), "96000"); + gtk_entry_set_text ( GTK_ENTRY(gtk_bin_get_child (GTK_BIN (combo_samplerate))),"48000"); + + label_quality = gtk_label_new ( gettext("Quality: ")); + combo_quality = gtk_combo_box_text_new_with_entry (); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_quality), "1.0"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_quality), "0.9"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_quality), "0.8"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_quality), "0.7"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_quality), "0.6"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_quality), "0.5"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_quality), "0.4"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_quality), "0.3"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_quality), "0.2"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_quality), "0.1"); + gtk_entry_set_text ( GTK_ENTRY(gtk_bin_get_child (GTK_BIN (combo_quality))),"0.8"); + + label_bitspersample = gtk_label_new ( gettext("Bits per Sample: ")); + combo_bitspersample = gtk_combo_box_text_new_with_entry (); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitspersample), "16"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_bitspersample), "8"); + gtk_entry_set_text (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (combo_bitspersample))),"16"); + + label_channel = gtk_label_new ( gettext("Number of channels: ")); + combo_channel = gtk_combo_box_text_new_with_entry (); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_channel), "2 - Stereo"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_channel), "1 - Mono"); + gtk_entry_set_text ( GTK_ENTRY(gtk_bin_get_child (GTK_BIN (combo_channel))),"1 - Mono"); + + label_buffersize = gtk_label_new ( gettext ("Buffer Size: ")); + combo_buffersize = gtk_combo_box_text_new_with_entry (); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "1"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "2"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "3"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "4"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "5"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "6"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "7"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "8"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "9"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "10"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "11"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "12"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "13"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "14"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "15"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "16"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "17"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "18"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "19"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_buffersize), "20"); + gtk_entry_set_text ( GTK_ENTRY(gtk_bin_get_child (GTK_BIN (combo_buffersize))),"10"); + + label_device = gtk_label_new ( gettext ("Device Input: ")); + combo_device = gtk_combo_box_text_new_with_entry (); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_device), "jack"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_device), "jack_auto"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_device), "default"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_device), "pulseaudio"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_device), "/dev/dsp"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_device), "/dev/dsp0"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_device), "/dev/dsp1"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_device), "/dev/dsp2"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_device), "/dev/dsp3"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_device), "hw:0,0"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_device), "hw:0,1"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_device), "hw:0,2"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_device), "hw:1,0"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_device), "hw:1,1"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_device), "hw:1,2"); + gtk_entry_set_text ( GTK_ENTRY(gtk_bin_get_child (GTK_BIN (combo_device))),"/dev/dsp"); + + /* End Audio Options Widgets */ + + /* configuration widgets stuff - label + entry */ + label_radioname = gtk_label_new ( gettext("Radio Name: ")); + entry_radioname = gtk_entry_new (); + label_url = gtk_label_new ( gettext("URL: ")); + entry_url = gtk_entry_new (); + label_description = gtk_label_new ( gettext("Description: ")); + entry_description = gtk_entry_new (); + label_genre = gtk_label_new ( gettext("Genre: ")); + entry_genre = gtk_entry_new (); + + /* configuration widgets stuff - label + combo box */ + + + label_public = gtk_label_new ( gettext("Public: ")); + combo_public = gtk_combo_box_text_new_with_entry (); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_public), "yes"); + gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT (combo_public), "no"); + gtk_entry_set_text ( GTK_ENTRY(gtk_bin_get_child (GTK_BIN (combo_public))),"no"); + + /* text view stuff */ + tag = gtk_text_tag_new (""); + tag_table = gtk_text_tag_table_new(); + gtk_text_tag_table_add(tag_table, tag); + buffer = gtk_text_buffer_new(tag_table); + foo = gettext("DarkSnow - A graphical user interface for darkice\nThe Revolution will be streamed!"); + gtk_text_buffer_set_text(buffer, foo,strlen(foo)); + text = gtk_text_view_new_with_buffer (buffer); + gtk_text_view_set_editable(GTK_TEXT_VIEW (text), FALSE); + + /* scroll for the textview widget */ + scroll_text = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy ( GTK_SCROLLED_WINDOW (scroll_text), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_container_add (GTK_CONTAINER (scroll_text), text); + + + /* the magic :-) */ + gtk_box_pack_end (GTK_BOX (vbox), table, TRUE, TRUE, 5); + gtk_container_add (GTK_CONTAINER (window), vbox); + + + /* set the widgets tooltips */ + set_all_tooltips(); + + + g_signal_connect (G_OBJECT (window), "delete_event",G_CALLBACK (main_quit), NULL); + + g_signal_connect_swapped (G_OBJECT (dialog_about), "response",G_CALLBACK (gtk_widget_hide), dialog_about); + + g_signal_connect (G_OBJECT (button_start), "clicked", G_CALLBACK (dark_start), NULL); + g_signal_connect (G_OBJECT (button_stop), "clicked", G_CALLBACK (dark_stop), NULL); + g_signal_connect (G_OBJECT (button_detail), "clicked", G_CALLBACK (dark_detail), NULL); + + g_signal_connect_swapped (G_OBJECT (menu_item_open), "activate", G_CALLBACK (gtk_dialog_run), file_open); + g_signal_connect_swapped (G_OBJECT (menu_item_save), "activate", G_CALLBACK (gtk_dialog_run), file_save); + g_signal_connect (G_OBJECT (menu_item_quit), "activate", G_CALLBACK (main_quit), NULL); + g_signal_connect (G_OBJECT (menu_item_quit_nd), "activate", G_CALLBACK (delete_event_nd), NULL); + g_signal_connect_swapped (G_OBJECT (menu_item_about), "activate", G_CALLBACK (gtk_dialog_run), dialog_about); + g_signal_connect_swapped (G_OBJECT (button_localdump), "clicked", G_CALLBACK (gtk_dialog_run), file_localdump); + + g_signal_connect ( G_OBJECT (GTK_FILE_CHOOSER_DIALOG (file_open)), "response", G_CALLBACK (dark_put_in_box), NULL); + g_signal_connect ( G_OBJECT (GTK_FILE_CHOOSER_DIALOG (file_save)), "response", G_CALLBACK (dark_write_config), NULL); + g_signal_connect ( G_OBJECT (GTK_FILE_CHOOSER_DIALOG (file_localdump)), "response", G_CALLBACK (dark_localdump), NULL); + + + /* pack the notebook, the buttons and textview widgets into the main table */ + gtk_table_attach (GTK_TABLE (table), notebook, 0, SIZE_X, 0, 400, (GTK_FILL | GTK_SHRINK | GTK_EXPAND), (GTK_FILL | GTK_SHRINK), 5, 5); + gtk_table_attach (GTK_TABLE (table), button_start, 0, SIZE_X/2, 401, 430, (GTK_SHRINK | GTK_FILL), (GTK_SHRINK | GTK_FILL), 45, 5); + gtk_table_attach (GTK_TABLE (table), button_stop, SIZE_X/2+1, SIZE_X, 401, 430, (GTK_SHRINK | GTK_FILL), (GTK_SHRINK | GTK_FILL), 45, 5); + gtk_table_attach (GTK_TABLE (table), scroll_text, 0, SIZE_X, 431, 560, (GTK_FILL | GTK_SHRINK | GTK_EXPAND), (GTK_FILL | GTK_SHRINK | GTK_EXPAND), 5, 5); + gtk_table_attach (GTK_TABLE (table), label_status, 0, 3*SIZE_X/5, 561, 570, (GTK_FILL | GTK_SHRINK), (GTK_FILL | GTK_SHRINK ), 0, 3); + gtk_table_attach (GTK_TABLE (table), button_detail, 3*SIZE_X/5+1, SIZE_X, 561, 570, (GTK_FILL | GTK_SHRINK), (GTK_FILL | GTK_SHRINK), 10, 3); + + + /* main notebook tab */ + gtk_table_attach (GTK_TABLE (table_server), label_icecast, 0, SIZE_X/2, 0, 25, (GTK_FILL | GTK_SHRINK), (GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_server), combo_icecast, SIZE_X/2+1, SIZE_X, 0, 25, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_server), label_server, 0, SIZE_X/2, 26, 50, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_server), entry_server, SIZE_X/2+1, SIZE_X, 26, 50, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_server), label_port, 0, SIZE_X/2, 51, 75, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_server), entry_port, SIZE_X/2+1, SIZE_X, 51, 75, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_server), label_mountpoint, 0, SIZE_X/2, 76, 100, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_server), entry_mountpoint, SIZE_X/2+1, SIZE_X, 76, 100, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_server), label_pass, 0, SIZE_X/2, 101, 125, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_server), entry_pass, SIZE_X/2+1, SIZE_X, 101, 125, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_server), label_verbosity, 0, SIZE_X/2, 126, 150, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_server), combo_verbosity, SIZE_X/2+1, SIZE_X, 126, 150, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_server), label_remotedump, 0, SIZE_X/2, 151, 175, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_server), entry_remotedump, SIZE_X/2+1, SIZE_X, 151, 175, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_server), button_localdump, 0, SIZE_X/2, 176, 200, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_server), entry_localdump, SIZE_X/2+1, SIZE_X, 176, 200, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_server), checkbutton_adddate, 0, SIZE_X, 201, 225, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + + + + + + /* audio notebook tab */ + gtk_table_attach (GTK_TABLE (table_audio), label_format, 0, SIZE_X/2, 0, 25, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_audio), combo_format, SIZE_X/2+1, SIZE_X, 0, 25, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_audio), label_bitratemode, 0, SIZE_X/2, 26, 50, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_audio), combo_bitratemode, SIZE_X/2+1, SIZE_X, 26, 50, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_audio), label_bitrate, 0, SIZE_X/2, 51, 75, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_audio), combo_bitrate, SIZE_X/2+1, SIZE_X, 51, 75, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_audio), label_samplerate, 0, SIZE_X/2, 76, 100, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_audio), combo_samplerate, SIZE_X/2+1, SIZE_X, 76, 100, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_audio), label_quality, 0, SIZE_X/2, 101, 125, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_audio), combo_quality, SIZE_X/2+1, SIZE_X, 101, 125, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_audio), label_bitspersample, 0, SIZE_X/2, 126, 150, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_audio), combo_bitspersample, SIZE_X/2+1, SIZE_X, 126, 150, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_audio), label_channel, 0, SIZE_X/2, 151, 175, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_audio), combo_channel, SIZE_X/2+1, SIZE_X, 151, 175, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_audio), label_buffersize, 0, SIZE_X/2, 176, 200, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_audio), combo_buffersize, SIZE_X/2+1, SIZE_X, 176, 200, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_audio), label_device, 0, SIZE_X/2, 201, 225, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_audio), combo_device, SIZE_X/2+1, SIZE_X, 201, 225, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + + /* description notebook tab */ + gtk_table_attach (GTK_TABLE (table_description), label_radioname, 0, SIZE_X/2, 0, 25, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_description), entry_radioname, SIZE_X/2+1, SIZE_X, 0, 25, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_description), label_description, 0, SIZE_X/2, 26, 50, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_description), entry_description, SIZE_X/2+1, SIZE_X, 26, 50, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_description), label_url, 0, SIZE_X/2, 51, 75, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_description), entry_url, SIZE_X/2+1, SIZE_X, 51, 75, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_description), label_genre, 0, SIZE_X/2, 76, 100, (GTK_FILL | GTK_SHRINK),(GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_description), entry_genre, SIZE_X/2+1, SIZE_X, 76, 100, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + gtk_table_attach (GTK_TABLE (table_description), label_public, 0, SIZE_X/2, 101, 125, (GTK_FILL | GTK_SHRINK), (GTK_FILL | GTK_SHRINK), 0, 5); + gtk_table_attach (GTK_TABLE (table_description), combo_public, SIZE_X/2+1, SIZE_X, 101, 125, (GTK_FILL | GTK_SHRINK | GTK_EXPAND),(GTK_FILL | GTK_SHRINK), 10, 5); + + + + + /* show all widgets */ + gtk_widget_show (button_start); + gtk_widget_show (button_stop); + gtk_widget_show (button_detail); + gtk_widget_show (label_status); + + + gtk_widget_show (label_icecast); + gtk_widget_show (combo_icecast); + + gtk_widget_show (label_server); + gtk_widget_show (entry_server); + + gtk_widget_show (label_port); + gtk_widget_show (entry_port); + + gtk_widget_show (label_mountpoint); + gtk_widget_show (entry_mountpoint); + + gtk_widget_show (label_pass); + gtk_widget_show (entry_pass); + + gtk_widget_show (label_remotedump); + gtk_widget_show (entry_remotedump); + + gtk_widget_show (button_localdump); + gtk_widget_show (entry_localdump); + + gtk_widget_show (checkbutton_adddate); + + gtk_widget_show (label_format); + gtk_widget_show (combo_format); + + gtk_widget_show (label_bitratemode); + gtk_widget_show (combo_bitratemode); + + gtk_widget_show (label_bitrate); + gtk_widget_show (combo_bitrate); + + gtk_widget_show (label_samplerate); + gtk_widget_show (combo_samplerate); + + gtk_widget_show (label_quality); + gtk_widget_show (combo_quality); + + gtk_widget_show (label_bitspersample); + gtk_widget_show (combo_bitspersample); + + gtk_widget_show (label_channel); + gtk_widget_show (combo_channel); + + gtk_widget_show (label_buffersize); + gtk_widget_show (combo_buffersize); + + gtk_widget_show (label_device); + gtk_widget_show (combo_device); + + gtk_widget_show (label_verbosity); + gtk_widget_show (combo_verbosity); + + gtk_widget_show (label_radioname); + gtk_widget_show (entry_radioname); + + gtk_widget_show (label_description); + gtk_widget_show (entry_description); + + gtk_widget_show (label_url); + gtk_widget_show (entry_url); + + gtk_widget_show (label_genre); + gtk_widget_show (entry_genre); + + gtk_widget_show (label_public); + gtk_widget_show (combo_public); + + /* gtk_widget_show (text); + gtk_widget_show (scroll_text);*/ + + gtk_widget_show (table_server); + gtk_widget_show (table_audio); + gtk_widget_show (table_description); + + gtk_widget_show (label_notebook_server); + gtk_widget_show (label_notebook_audio); + gtk_widget_show (label_notebook_description); + + gtk_widget_show (notebook); + + gtk_widget_show (menu_bar); + gtk_widget_show (menu_item_file); + gtk_widget_show (menu_item_open); + gtk_widget_show (menu_item_save); + gtk_widget_show (menu_item_quit); + gtk_widget_show (menu_item_quit_nd); + gtk_widget_show (menu_item_help); + gtk_widget_show (menu_item_about); + + gtk_widget_show (table); + + gtk_widget_show (vbox); + + gtk_widget_show (window); + + gtk_main (); + + close (darkice_fd); + + return 0; +} diff --git a/darkice-gui/branches/darksnow-0.7.1/debian/changelog b/darkice-gui/branches/darksnow-0.7.1/debian/changelog new file mode 100644 index 0000000..2595195 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/debian/changelog @@ -0,0 +1,36 @@ +darksnow (0.6-0ubuntu2) dapper; urgency=low + + * debian/compat: + + Set compat to 5. + * debian/rules: + + use dh_iconcache . + + -- Zak B. Elep Tue, 11 Apr 2006 05:13:19 -0400 + +darksnow (0.6-0ubuntu1) dapper; urgency=low + + * New upstream release + * updated the address of FSF at debian/copyright + * updated debian/rules and patches to the new version + + -- Rodrigo Belem Fri, 4 Nov 2005 15:01:09 +0000 + +darksnow (0.5.3-0ubuntu1) breezy; urgency=low + + * New upstream release + * updated debian/rules and patches to the new version + * man page now part of the upstream release + + -- Rodrigo Belem Fri, 18 Oct 2005 00:26:46 -0400 + +darksnow (0.5.2-0ubuntu1) breezy; urgency=low + + * added Homepage to package description + * removed unnecessary cdbs rules tarball.mk, autotools-vars.mk + * removed unnecessary Build-Depends: build-essential, autotools-dev + * created a manpage + * created a patch to fix Makefile.in to Debian way + * Initial Release. + + -- Rodrigo Belem Fri, 19 Aug 2005 18:20:24 -0400 + diff --git a/darkice-gui/branches/darksnow-0.7.1/debian/compat b/darkice-gui/branches/darksnow-0.7.1/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/debian/compat @@ -0,0 +1 @@ +5 diff --git a/darkice-gui/branches/darksnow-0.7.1/debian/control b/darkice-gui/branches/darksnow-0.7.1/debian/control new file mode 100644 index 0000000..d4cd74e --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/debian/control @@ -0,0 +1,16 @@ +Source: darksnow +Section: sound +Priority: optional +Maintainer: Rodrigo Belem +Build-Depends: cdbs (>= 0.4.23-1.1), debhelper (>= 4.1.0), patchutils (>= 0.2.25), libgtk2.0-dev +Standards-Version: 3.6.2 + +Package: darksnow +Architecture: any +Depends: ${shlibs:Depends}, darkice +Description: simple graphical user interface to darkice + DarkSnow is a graphical interface written in GTK+2 for the darkice + live streamer. + . + Homepage: http://darksnow.radiolivre.org/ + diff --git a/darkice-gui/branches/darksnow-0.7.1/debian/copyright b/darkice-gui/branches/darksnow-0.7.1/debian/copyright new file mode 100644 index 0000000..24f23b8 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/debian/copyright @@ -0,0 +1,28 @@ +This package was debianized by Rodrigo Belem on +Fri, 19 Aug 2005 18:20:24 -0400. + +It was downloaded from http://darksnow.radiolivre.org/ + +Copyright: + +Upstream Author: Rafael Diniz + +License: + + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 dated June, 1991. + + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + 02110-1301, USA. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. + diff --git a/darkice-gui/branches/darksnow-0.7.1/debian/docs b/darkice-gui/branches/darksnow-0.7.1/debian/docs new file mode 100644 index 0000000..007605f --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/debian/docs @@ -0,0 +1,3 @@ +documentation/CREDITS +documentation/README.en +documentation/README.pt_BR diff --git a/darkice-gui/branches/darksnow-0.7.1/debian/manpages b/darkice-gui/branches/darksnow-0.7.1/debian/manpages new file mode 100644 index 0000000..b0998f7 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/debian/manpages @@ -0,0 +1 @@ +man/darksnow.1 diff --git a/darkice-gui/branches/darksnow-0.7.1/debian/patches/fixing_Makefile.in.patch b/darkice-gui/branches/darksnow-0.7.1/debian/patches/fixing_Makefile.in.patch new file mode 100644 index 0000000..873b774 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/debian/patches/fixing_Makefile.in.patch @@ -0,0 +1,55 @@ +--- darksnow-0.6/Makefile.in 2005-10-26 16:12:18.000000000 +0000 ++++ Makefile.in.debian 2005-10-26 16:17:20.000000000 +0000 +@@ -22,12 +22,12 @@ + INTLPREFIX=@prefix@ + CC=@CC@ + VERSION=@VERSION@ +-CFLAGS+=-Wall ++CFLAGS+=-Wall -fPIC + INSTALL=install + ARCH=`uname -m` + + #set debugging symbols: +-#CFLAGS+= -g ++CFLAGS+= -g + + #set funny messages + #CFLAGS+= -DFUNNY +@@ -60,34 +60,12 @@ + rm -rf slack darksnow.tgz + + install: darksnow +- $(INSTALL) -D --mode=0755 darksnow $(PREFIX)/bin/darksnow +- $(INSTALL) -D --mode=0644 documentation/CHANGES $(PREFIX)/share/darksnow/changelog +- $(INSTALL) -D --mode=0644 po/pt_BR.mo $(PREFIX)/share/locale/pt_BR/LC_MESSAGES/darksnow.mo +- $(INSTALL) -D --mode=0644 icon/darksnow_icon.png $(PREFIX)/share/icons/hicolor/32x32/apps/darksnow.png +- $(INSTALL) -D --mode=0644 man/darksnow.1.gz $(PREFIX)/share/man/man1/darksnow.1.gz +- +-make_pkg: darksnow +- echo "Remember to run this option as root!" +- rm -rf slack +- $(INSTALL) -D --mode=0755 darksnow slack$(PREFIX)/bin/darksnow +- $(INSTALL) -D --mode=0644 icon/darksnow_icon.png slack$(PREFIX)/share/icons/darksnow.png +- $(INSTALL) -D --mode=0644 po/pt_BR.mo slack$(PREFIX)/share/locale/pt_BR/LC_MESSAGES/darksnow.mo +- $(INSTALL) -D --mode=0644 documentation/CHANGES slack$(PREFIX)/doc/darksnow/CHANGES +- $(INSTALL) -D --mode=0644 documentation/LICENSE slack$(PREFIX)/doc/darksnow/LICENSE +- $(INSTALL) -D --mode=0644 documentation/README.en slack$(PREFIX)/doc/darksnow/README.en +- $(INSTALL) -D --mode=0644 documentation/README.pt_BR slack$(PREFIX)/doc/darksnow/README.pt_BR +- $(INSTALL) -D --mode=0644 documentation/CHANGES slack$(PREFIX)/doc/darksnow/CHANGES +- $(INSTALL) -D --mode=0644 documentation/slack-desc slack/install/slack-desc +- cd slack; makepkg -c y -l n ../darksnow-$(VERSION)-$(ARCH)-1rd.tgz +- echo "Remember to run this option as root!" +- +-install_pkg: make_pkg +- /sbin/installpkg darksnow-*-1rd.tgz +- +-upgrade_pkg: make_pkg +- /sbin/upgradepkg darksnow-*-1rd.tgz ++ $(INSTALL) -D --mode=0755 $(CURDIR)/darksnow $(DESTDIR)$(PREFIX)/bin/darksnow ++ $(INSTALL) -D --mode=0644 $(CURDIR)/documentation/CHANGES $(DESTDIR)$(PREFIX)/share/doc/darksnow/changelog ++ $(INSTALL) -D --mode=0644 $(CURDIR)/po/pt_BR.mo $(DESTDIR)$(PREFIX)/share/locale/pt_BR/LC_MESSAGES/darksnow.mo ++ $(INSTALL) -D --mode=0644 $(CURDIR)/icon/darksnow_icon.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/32x32/apps/darksnow.png ++ $(INSTALL) -D --mode=0644 $(CURDIR)/man/darksnow.1.gz $(DESTDIR)$(PREFIX)/share/man/man1/darksnow.1.gz + + dist-clean: clean + rm aclocal.m4 config.status config.log man/darksnow.1.gz Makefile diff --git a/darkice-gui/branches/darksnow-0.7.1/debian/rules b/darkice-gui/branches/darksnow-0.7.1/debian/rules new file mode 100755 index 0000000..5782fdc --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/debian/rules @@ -0,0 +1,23 @@ +#!/usr/bin/make -f + +#DEB_AUTO_UPDATE_DEBIAN_CONTROL := yes + +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/rules/simple-patchsys.mk +include /usr/share/cdbs/1/class/autotools.mk + +# Use dh_iconcache +install/darksnow:: + dh_iconcache -pdarksnow + +binary-post-install/darksnow:: + rm -f $(CURDIR)/debian/darksnow/usr/share/doc/darksnow/README + +clean:: + rm -f config.guess.cdbs-orig + rm -f config.sub.cdbs-orig + rm -f config.status + rm -f config.log + rm -f Makefile + rm -f *.o *~ darksnow + diff --git a/darkice-gui/branches/darksnow-0.7.1/documentation/CHANGES b/darkice-gui/branches/darksnow-0.7.1/documentation/CHANGES new file mode 100644 index 0000000..9f60ac6 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/documentation/CHANGES @@ -0,0 +1,61 @@ +0.7.1 + Added pulseaudio support. + Small fixes. +0.7 + Added Opus support. + GTK3 support. +0.6.1 + Added MP2 format option. + Other small changes. +0.6 + Added AAC format option. + Changed the way that darksnow gets the darkice output (now it uses fifo) + Fixed a memory leak and some minor improvements done. +0.5.3 + Added some copyright notes, some minor changes and a debian directory, for package creation. +0.5.2 + Added remote and local dump file options. + Some bug fixes. +0.5.1 + Added jack support. (needs darkice 0.15 or greater) +0.5 + a little bug fix and now automatic slackware package creation works ok. +0.4.9 + fixed two bugs, one of them very serious that prevented darksnow running in ppc and probably other + big endian archs. +0.4.8 + fixed a wrong behaviour of the darkice output window +0.4.7 + lots of bug fixes + description window now works correctly +0.4.6 + show/hide darkice output window + initial tooltips support + limited autoconf support +0.4.5 + darkice verbosity level option included - this breaks compatibily with older config_files. +0.4.4 + now is possible to exit darksnow without killing darkice +0.4.3 + fixed "" bug + mountpoint string can start with slash + some minor enhancements and bug fixes +0.4.2 + brazilian portuguese translation fix +0.4.1: + streaming status now works in most cases. + some minor interface adjustments + small bugs fixed +0.4: + load and save configuration from file added. +0.3.1: + small bug fix +0.3: + notebooks added + better widgets arrangement + first useable version +0.2.1: +0.2: +0.1: +0.0: + Initial version diff --git a/darkice-gui/branches/darksnow-0.7.1/documentation/CREDITS b/darkice-gui/branches/darksnow-0.7.1/documentation/CREDITS new file mode 100644 index 0000000..27d154b --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/documentation/CREDITS @@ -0,0 +1,4 @@ +Thanks to: +- rhatto: bug feedback and package creation, +- Eddy parris (http://www.communecation.net/): icon creation. +- Rodrigo Belem: for the darksnow debianization diff --git a/darkice-gui/branches/darksnow-0.7.1/documentation/LICENSE b/darkice-gui/branches/darksnow-0.7.1/documentation/LICENSE new file mode 100644 index 0000000..dcfa4c2 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/documentation/LICENSE @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/darkice-gui/branches/darksnow-0.7.1/documentation/README.en b/darkice-gui/branches/darksnow-0.7.1/documentation/README.en new file mode 100644 index 0000000..8039987 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/documentation/README.en @@ -0,0 +1,47 @@ +# darksnow - a gtk2 interface for darkice +# Copyright (C) 2004 Rafael Diniz +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +This is darksnow, a GUI for darkice (darkice.sf.net), developed by Rafael Diniz. + +Requirements: +- darkice 0.14 (darkice >= 0.15 for jack support), +- gtk2, +- killall (kill processes by name), +- linux 2.4 or greater and probably any recent BSD system (including OpenBSD, NetBSD, FreeBSD, +Solaris and MacOS X). + +Compiling: +$ ./configure --prefix=/usr +$ make +Installing, as root: +# make install +or, if you use Slackware, create a package (as root): +# make make_pkg +and install or upgrade: +# make install_pkg +or +# make upgrade_pkg + + +to run, type: +$ darksnow + +Any trouble, email-me: +rafael@riseup.net + +_The Revolution will be Streamed_ +Get off the internet, I'll see you in the streets! diff --git a/darkice-gui/branches/darksnow-0.7.1/documentation/README.pt_BR b/darkice-gui/branches/darksnow-0.7.1/documentation/README.pt_BR new file mode 100644 index 0000000..701ab70 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/documentation/README.pt_BR @@ -0,0 +1,47 @@ +# darksnow - uma interface grafica em gtk2 para o darkice +# Copyright (C) 2004 Rafael Diniz +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +Este eh o darksnow, uma interface grafica para o darkice (darkice.sf.net) desenvolvida por Rafael Diniz. + +Pre-requisitos: +- darkice 0.14 (darkice 0.15 para suporte ao jack), +- gtk2, +- killall, (mata processos por nome), +- linux 2.4 ou superior e provavelmente qualquer sistema BSD recente (incluindo OpenBSD, NetBSD, FreeBSD, +Solaris e MacOS X). + +Para compilar o programa, digite: +$ ./configure --prefix=/usr +$ make +e para instalar, como root: +# make install +ou, se voce usa Slackware, crie um pacote (como root): +# make make_pkg +e instale ou atualize usando +# make install_pkg +ou +# make upgrade_pkg + + +Para executar o programa, digite: +$ darksnow + +Qualquer problema, mande um email para: +rafael@riseup.net + +_A Revolução será transmitida pela Internet_ +Saia da Internet, vejo você nas ruas! diff --git a/darkice-gui/branches/darksnow-0.7.1/documentation/slack-desc b/darkice-gui/branches/darksnow-0.7.1/documentation/slack-desc new file mode 100644 index 0000000..9004f2a --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/documentation/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +darksnow: darksnow (streaming tool) +darksnow: +darksnow: Darksnow is a graphical interface written in GTK+2 for the darkice +darksnow: live streamer. +darksnow: +darksnow: +darksnow: +darksnow: +darksnow: +darksnow: +darksnow: diff --git a/darkice-gui/branches/darksnow-0.7.1/global.h b/darkice-gui/branches/darksnow-0.7.1/global.h new file mode 100644 index 0000000..fc7ee55 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/global.h @@ -0,0 +1,154 @@ +/* Darksnow - A GUI for darkice + * Copyright (C) 2004-2005 Rafael Diniz + * + * This source code is free software; you can redistribute it and/or + * modify it under the terms of the GNU Public License as published + * by the Free Software Foundation; either version 2 of the License, + * or (at your option) any later version. + * + * This source code is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * Please refer to the GNU Public License for more details. + * + * You should have received a copy of the GNU Public License along with + * this source code; if not, write to: + * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#define __GLOBAL_H__ + +#ifndef __GTK_H__ +#include +#endif + +/* shared area */ +void *shared_area; + +/* darkice execution child process pid */ +int pid; + +/* file descriptor used by darkice output pipe */ +int darkice_fd; + +/* the user home */ +char home[64]; +char darksnow_cfg[64]; +char darkice_cfg[64]; +char darksnow_temp[64]; +char show_detail; + +/* main window Widgets */ +GtkWidget *window; +GtkWidget *button_start; +GtkWidget *button_stop; +GtkWidget *button_detail; +GtkWidget *label_status; +GtkWidget *table; + +/* About Dialog box */ +GtkWidget *dialog_about; + +/* darkice not found dialog box */ +GtkWidget *dialog_darkdep; +GtkWidget *label_darkdep; +GtkWidget *button_darkdep; + +/* "kill darkice?" dialog box */ +GtkWidget *dialog_darkkill; +GtkWidget *label_darkkill; +GtkWidget *button_yes_darkkill; +GtkWidget *button_no_darkkill; +GtkWidget *button_cancel_darkkill; + +/* menu stuff */ +GtkWidget *menu_bar; +GtkWidget *menu_file; +GtkWidget *menu_item_file; +GtkWidget *menu_item_open; +GtkWidget *menu_item_save; +GtkWidget *menu_item_quit_nd; +GtkWidget *menu_item_quit; +GtkWidget *menu_help; +GtkWidget *menu_item_help; +GtkWidget *menu_item_about; +GtkWidget *vbox; + +/* open and save file selectors */ +GtkWidget *file_open; +GtkWidget *file_save; +GtkWidget *file_localdump; + +/* notebook stuff */ +GtkWidget *notebook; +GtkWidget *label_notebook_server; +GtkWidget *table_server; +GtkWidget *label_notebook_audio; +GtkWidget *table_audio; +GtkWidget *label_notebook_description; +GtkWidget *table_description; + +/* darksnow configuration stuff - button + entry */ + +GtkWidget *button_localdump; +GtkWidget *entry_localdump; +GtkWidget *checkbutton_adddate; +GtkWidget *label_remotedump; +GtkWidget *entry_remotedump; + +/* darksnow configuration stuff - label + entry */ +GtkWidget *label_server; +GtkWidget *entry_server; +GtkWidget *label_port; +GtkWidget *entry_port; +GtkWidget *label_mountpoint; +GtkWidget *entry_mountpoint; +GtkWidget *label_pass; +GtkWidget *entry_pass; +GtkWidget *label_radioname; +GtkWidget *entry_radioname; +GtkWidget *label_description; +GtkWidget *entry_description; +GtkWidget *label_url; +GtkWidget *entry_url; +GtkWidget *label_genre; +GtkWidget *entry_genre; + +/* darksnow configuration stuff - label + combo box */ +GtkWidget *label_icecast; +GtkWidget *combo_icecast; +GtkWidget *label_format; +GtkWidget *combo_format; +GtkWidget *label_bitrate; +GtkWidget *combo_bitrate; +GtkWidget *label_bitratemode; +GtkWidget *combo_bitratemode; +GtkWidget *label_samplerate; +GtkWidget *combo_samplerate; +GtkWidget *label_quality; +GtkWidget *combo_quality; +GtkWidget *label_bitspersample; +GtkWidget *combo_bitspersample; +GtkWidget *label_channel; +GtkWidget *combo_channel; +GtkWidget *label_buffersize; +GtkWidget *combo_buffersize; +GtkWidget *label_device; +GtkWidget *combo_device; +GtkWidget *label_public; +GtkWidget *combo_public; +GtkWidget *label_verbosity; +GtkWidget *combo_verbosity; + +/* text view stuff */ +GtkWidget *text; +GtkTextBuffer *buffer; +GtkTextTagTable *tag_table; +GtkTextTag *tag; + +/* text view has to scroll */ +GtkWidget *scroll_text; + +/* The GTK ToolTips */ +GtkTooltip *tooltip; diff --git a/darkice-gui/branches/darksnow-0.7.1/icon/darksnow_icon.png b/darkice-gui/branches/darksnow-0.7.1/icon/darksnow_icon.png new file mode 100644 index 0000000..fd02aec Binary files /dev/null and b/darkice-gui/branches/darksnow-0.7.1/icon/darksnow_icon.png differ diff --git a/darkice-gui/branches/darksnow-0.7.1/interface.c b/darkice-gui/branches/darksnow-0.7.1/interface.c new file mode 100644 index 0000000..14ba081 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/interface.c @@ -0,0 +1,409 @@ +/* Darksnow - A GUI for darkice + * Copyright (C) 2004-2005 Rafael Diniz + * + * This source code is free software; you can redistribute it and/or + * modify it under the terms of the GNU Public License as published + * by the Free Software Foundation; either version 2 of the License, + * or (at your option) any later version. + * + * This source code is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * Please refer to the GNU Public License for more details. + * + * You should have received a copy of the GNU Public License along with + * this source code; if not, write to: + * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef __GLOBAL_H__ +#include "global.h" +#endif + +#ifndef __CONSTANTS_H__ +#include "constants.h" +#endif + +#ifndef __GTK_H__ +#include +#endif + +#ifndef __CONFIG_FILES_H__ +#include "config_files.h" +#endif + +#ifndef __INTERFACE_H__ +#include "interface.h" +#endif + +#ifdef FUNNY +#define FUN 1 +#else +#define FUN 0 +#endif + +/* callback that start darkice */ +void dark_start( GtkWidget *widget, gpointer data) { + char *darkice_verbosity; + char command[128], foo, dark_output[128]; + + /* if the first char of shared area is 1, means that the streaming is running and we cannot start another darkice */ + sscanf((char *) shared_area, "%c", &foo); + if (foo == '1') + return; + + + /* call the function that load the values from widgets and save to the darksnow config file */ + darksnow_config_store(1, NULL); + /* call the function that translate the darksnow config file to the darkice config file */ + darksnow2darkice_cfg(); + + darkice_verbosity = gtk_combo_box_text_get_active_text ( GTK_COMBO_BOX_TEXT(combo_verbosity)); + + strcpy(command,"darkice"); + strcat(command," -v "); + strcat(command, darkice_verbosity); + strcat(command," -c "); + strcat(command, darkice_cfg); + strcat(command," > "); + strcat(command, darksnow_temp); + + + if ((pid = fork()) == -1) { + printf("Could not start 'darkice' process, Fork error! \n"); + gtk_main_quit(); + } + + if (!pid) { + /* streaming started */ + sprintf ((char *) shared_area, "11"); + system(command); + /* if the system() returns, this means that the streaming stopped */ + sprintf ((char *) shared_area, "01"); + _exit(-1); + } + + strcpy(dark_output, gettext("--> Command <--\n")); + strcat(dark_output, command); + strcat(dark_output, gettext("\n--> Darkice output <--\n") ); + + gtk_text_buffer_set_text (buffer, dark_output , strlen(dark_output)); + + /* print the darkice output for the first time */ + usleep(200000); + text_box_loop (1); +} + +/* callback that stop darkice */ +void dark_stop( GtkWidget *widget, gpointer data ){ + char out[32]; + + system("killall darkice &> /dev/null"); + strcpy(out, gettext("Darkice off") ); + gtk_text_buffer_set_text (buffer, out, strlen(out)); + +} + +void dark_put_in_box ( GtkWidget *widget, gint response_id, gpointer data ) { + FILE *f_darksnow_cfg; + char *darksnow_path; + char foo[256] = {0}; + char server[256] = {0}; + char port[128] = {0}; + char mountpoint[128] = {0}; + char pass[128] = {0}; + char remotedump[256] = {0}; + char localdump[256] = {0}; + char adddate; + char radioname[128] = {0}; + char description[256] = {0}; + char url[256] = {0}; + char genre[128] = {0}; + char icecast[128] = {0}; + char format[128] = {0}; + char bitrate[128] = {0}; + char bitratemode[128] = {0}; + char samplerate[128] = {0}; + char quality[128] = {0}; + char bitspersample[128] = {0}; + char channel[128] = {0}; + char buffersize[128] = {0}; + char device[128] = {0}; + char public[128] = {0}; + char verbosity[8] = {0}; + DIR *directory; + + if (response_id != GTK_RESPONSE_ACCEPT) { + gtk_widget_hide(file_open); + return ; + } + + darksnow_path = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_open)); + + if ( (directory = opendir(darksnow_path))) { + printf("Error: %s is a directory\n", darksnow_path); + closedir (directory); + return; + } + + if (!(f_darksnow_cfg = fopen(darksnow_path, "r"))) { + printf("Error: Cannot open %s\n", darksnow_path); + return; + } + + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, server); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, port); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, mountpoint); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, pass); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, radioname); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, description); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, url); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, genre); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, icecast); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, format); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, bitrate); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, bitratemode); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, samplerate); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, quality); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, bitspersample); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, channel); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, buffersize); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, device); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, public); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, verbosity); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, remotedump); + fscanf(f_darksnow_cfg, "%[^=]=%[^\n]\n", foo, localdump); + fscanf(f_darksnow_cfg, "%[^=]=%c\n", foo, &adddate); + + gtk_entry_set_text ( (GtkEntry *) entry_server, server); + gtk_entry_set_text ( (GtkEntry *) entry_port, port); + gtk_entry_set_text ( (GtkEntry *) entry_mountpoint, mountpoint); + gtk_entry_set_text ( (GtkEntry *) entry_pass, pass); + gtk_entry_set_text ( (GtkEntry *) entry_radioname, radioname); + gtk_entry_set_text ( (GtkEntry *) entry_description, description); + gtk_entry_set_text ( (GtkEntry *) entry_url, url); + gtk_entry_set_text ( (GtkEntry *) entry_genre, genre); + gtk_entry_set_text ( (GtkEntry *) entry_server, server); + gtk_entry_set_text ( (GtkEntry *) entry_remotedump, remotedump); + gtk_entry_set_text ( (GtkEntry *) entry_localdump, localdump); + gtk_entry_set_text ( GTK_ENTRY(gtk_bin_get_child (GTK_BIN (combo_icecast))), icecast); + gtk_entry_set_text ( GTK_ENTRY(gtk_bin_get_child (GTK_BIN (combo_format))), format); + gtk_entry_set_text ( GTK_ENTRY(gtk_bin_get_child (GTK_BIN (combo_bitrate))), bitrate); + gtk_entry_set_text ( GTK_ENTRY(gtk_bin_get_child (GTK_BIN (combo_bitratemode))), bitratemode); + gtk_entry_set_text ( GTK_ENTRY(gtk_bin_get_child (GTK_BIN (combo_samplerate))), samplerate); + gtk_entry_set_text ( GTK_ENTRY(gtk_bin_get_child (GTK_BIN (combo_quality))), quality); + gtk_entry_set_text ( GTK_ENTRY(gtk_bin_get_child (GTK_BIN (combo_bitspersample))), bitspersample); + gtk_entry_set_text ( GTK_ENTRY(gtk_bin_get_child (GTK_BIN (combo_channel))), channel); + gtk_entry_set_text ( GTK_ENTRY(gtk_bin_get_child (GTK_BIN (combo_buffersize))), buffersize); + gtk_entry_set_text ( GTK_ENTRY(gtk_bin_get_child (GTK_BIN (combo_device))), device); + gtk_entry_set_text ( GTK_ENTRY(gtk_bin_get_child (GTK_BIN (combo_public))), public); + gtk_entry_set_text ( GTK_ENTRY(gtk_bin_get_child (GTK_BIN (combo_verbosity))),verbosity); + + + if (adddate == '1') + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON (checkbutton_adddate), TRUE); + else + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON (checkbutton_adddate), FALSE); + + fclose(f_darksnow_cfg); + + gtk_widget_hide(file_open); + +} + +void dark_write_config ( GtkWidget *widget, gint response_id, gpointer data ) { + char *darksnow_path; + + if (response_id != GTK_RESPONSE_ACCEPT) { + gtk_widget_hide(file_save); + return ; + } + + darksnow_path = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_save)); + if (darksnow_config_store (0, darksnow_path)) + gtk_widget_hide(file_save); + +} + + + + +void dark_localdump (GtkWidget *widget, gint response_id, gpointer data){ + if (response_id != GTK_RESPONSE_ACCEPT) { + gtk_widget_hide(file_localdump); + return ; + } + + gtk_entry_set_text ( (GtkEntry *) entry_localdump, gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_localdump))); + gtk_widget_hide (file_localdump); + +} + +void clean_text_view_memory(){ + GtkTextIter start_iter, end_iter; + + gtk_text_buffer_get_bounds (buffer, &start_iter, &end_iter); + gtk_text_iter_forward_lines (&start_iter, 6); + gtk_text_iter_backward_lines (&end_iter, 6); + gtk_text_buffer_delete(buffer, &start_iter, &end_iter); + +} + + +gboolean status_loop (gboolean foo) { + char status[3]; + static int alarm_id = 0; + + + /** This checks if the status of the transmission if ON or OFF, using the shared area **/ + sscanf((char *) shared_area, "%s", status); + + /* if the update label flag is on */ + if (status[1] == '1') { + /** streaming stopped **/ + if (status [0] == '0') { + gtk_label_set_text(GTK_LABEL (label_status), gettext("Streaming Status: Stopped")); + text_box_loop(1); + if (alarm_id) + g_source_remove(alarm_id); + } + /** streaming started **/ + else { + gtk_label_set_text(GTK_LABEL (label_status), gettext("Streaming Status: Started")); + text_box_loop(0); + alarm_id = g_timeout_add (4000, (GSourceFunc) text_box_loop, 0); + } + + strncpy((char *) shared_area+1, "0", 1); + } + + /* I need nothing from child, just do this to prevent processes */ + waitpid(pid, NULL, WNOHANG); + + return TRUE; +} + +#define BUFFER_SIZE 16384 + +gboolean text_box_loop (int option) { + char dark_output[BUFFER_SIZE]; + char status[3]; + int i; + static int bytes_written = 0; + + sscanf((char *) shared_area, "%s", status); + + if (status[0] == '1' || option == 1) { + + while ( (i = read (darkice_fd, dark_output, BUFFER_SIZE - 1)) && i > 0 ) { + dark_output[i] = 0; + gtk_text_buffer_insert_at_cursor (buffer, dark_output, strlen(dark_output)); + bytes_written = bytes_written + i; + + /* 32 * BUFFER_SIZE = */ + if (bytes_written > 524288){ + clean_text_view_memory(); + bytes_written = 0; + } + } + } + return TRUE; +} + +/* callback que chama a funcao de saida do programa, eh issu mermo, mata tudo mermaum!! */ +gboolean delete_event(GtkWidget *widget, GdkEvent *event, gpointer data) { + + system("killall darkice &> /dev/null"); + gtk_main_quit (); + return FALSE; +} + +/* callback that exit without killing darkice */ +gboolean delete_event_nd (GtkWidget *widget, GdkEvent *event, gpointer data) { + char foo; + + sscanf((char *) shared_area, "%c", &foo); + if (foo == '1') + kill(pid,SIGTERM); + + gtk_main_quit (); + return FALSE; +} + +gboolean main_quit (GtkWidget *widget, GdkEvent *event, gpointer data) { + char status = '0'; + + sscanf ((char *) shared_area, "%c", &status); + + /* if darkice is running, ask for killing it */ + if (status == '1') { + gtk_widget_show (button_yes_darkkill); + gtk_widget_show (button_no_darkkill); + gtk_widget_show (label_darkkill); + gtk_widget_show (dialog_darkkill); + } + else + exit(0); + //delete_event_nd(NULL, NULL, NULL); + + return FALSE; + +} + + +/* function that is called when darkice is not found */ +void darkice_not_found() { + char bar[192]; + + /* sets up the darkice not found dialog */ + if (!FUN) + sprintf(bar, gettext("Darkice binary 'darkice' not found on path!\nDownload darkice at http://code.google.com/p/darkice/")); + else + sprintf(bar, gettext("Don't you know you should have the fucking\ndarkice to run this shit!!\nGet it at http://code.google.com/p/darkice/\n")); + + dialog_darkdep = gtk_dialog_new (); + label_darkdep = gtk_label_new ( bar ); + button_darkdep = gtk_button_new_with_label ( gettext("Close")); + gtk_window_set_title(GTK_WINDOW (dialog_darkdep), gettext("Error")); + + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_action_area( GTK_DIALOG (dialog_darkdep))), button_darkdep, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area( GTK_DIALOG (dialog_darkdep))), label_darkdep, TRUE, TRUE, 0); + + g_signal_connect (G_OBJECT (dialog_darkdep), "delete_event",G_CALLBACK (delete_event), NULL); + g_signal_connect (G_OBJECT (button_darkdep), "clicked",G_CALLBACK (delete_event), NULL); + + gtk_widget_show (button_darkdep); + gtk_widget_show (label_darkdep); + gtk_widget_show (dialog_darkdep); + + gtk_main (); + +} + +void dark_detail (GtkWidget *widget, gpointer data) { + if (show_detail) { + show_detail = 0; + gtk_button_set_label (GTK_BUTTON(button_detail), gettext("Show Details")); + gtk_widget_hide (scroll_text); + gtk_widget_hide (text); + gtk_window_resize (GTK_WINDOW(window), SIZE_X, SIZE_Y); + } + else{ + show_detail = 1; + gtk_button_set_label (GTK_BUTTON(button_detail), gettext("Hide Details")); + gtk_widget_show (text); + gtk_widget_show (scroll_text); + gtk_window_resize (GTK_WINDOW(window), SIZE_X, SIZE_Y+110); + } +} diff --git a/darkice-gui/branches/darksnow-0.7.1/interface.h b/darkice-gui/branches/darksnow-0.7.1/interface.h new file mode 100644 index 0000000..1a8c144 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/interface.h @@ -0,0 +1,69 @@ +/* Darksnow - A GUI for darkice + * Copyright (C) 2004-2005 Rafael Diniz + * + * This source code is free software; you can redistribute it and/or + * modify it under the terms of the GNU Public License as published + * by the Free Software Foundation; either version 2 of the License, + * or (at your option) any later version. + * + * This source code is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * Please refer to the GNU Public License for more details. + * + * You should have received a copy of the GNU Public License along with + * this source code; if not, write to: + * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + + +#define __INTERFACE_H__ + +#ifndef __GTK_H__ +#include +#endif + +/* Callback for button_start click */ +void dark_start (GtkWidget *widget, gpointer data); + +/* Callback for button_stop click */ +void dark_stop (GtkWidget *widget, gpointer data); + +/* Callback for button_load click */ +void dark_load (GtkWidget *widget, gpointer data); + +/* Callback for OK button of the "Open File" file selector, displayed by dark_open */ +void dark_put_in_box (GtkWidget *widget, gint response_id, gpointer data); + +/* Callback for OK button of the "Save File" file selector, displayed by dark_save */ +void dark_write_config ( GtkWidget *widget, gint response_id, gpointer data ); + +/* Callback for the local dump file selector 'ok' button */ +void dark_localdump (GtkWidget *widget, gint response_id, gpointer data); + +/* Cleans the buffer inside the view box */ +void clean_text_view_memory(); + +/* The function that updates the streaming status */ +gboolean status_loop (gboolean foo); + +/* The function that updates the darkice output window, when option == 1, means that */ +/* the "streaming_started" flag will be ignored, if option == 0, the "streaming_started" */ +/* flag will not be ignored and the debug window will not be updated. */ +gboolean text_box_loop (int option); + +/* Callback that call the gtk_main_quit() */ +gboolean delete_event (GtkWidget *widget, GdkEvent *event, gpointer data ); + +/* Callback that call the gtk_main_quit() without killing darkice */ +gboolean delete_event_nd (GtkWidget *widget, GdkEvent *event, gpointer data ); + +/* Callback that shows a dialog asking for killing or not darkice before quitting */ +gboolean main_quit (GtkWidget *widget, GdkEvent *event, gpointer data); + +/* darkice not found function */ +void darkice_not_found(); + +/* callback function that is called when Detail button is clicked */ +void dark_detail (GtkWidget *widget, gpointer data); diff --git a/darkice-gui/branches/darksnow-0.7.1/man/darksnow.1 b/darkice-gui/branches/darksnow-0.7.1/man/darksnow.1 new file mode 100644 index 0000000..f044608 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/man/darksnow.1 @@ -0,0 +1,62 @@ +.\" Process this file with +.\" groff -man -Tascii foo.1 +.\" +.TH DARKSNOW 1 "August 2005" UNIX "User Manuals" +.SH NAME +darksnow \- A simple frontend to DarkIce + + +.SH DESCRIPTION +\fBDarkSnow\fP is a graphical interface written in GTK+2 for the +darkice live streamer. + +.SH SEE ALSO +.BR darkice (1) +.br + + +.SH AUTHOR +.nf +darksnow was written by Rafael Diniz . + +This manual page was written by Rodrigo Belem. +.fi + + +.SH BUGS +.nf +Send feedback or report bugs to: rafael@riseup.net +.fi + + +.SH COPYING + +Permission is granted to copy, distribute and/or modify this manual +under the terms of the GNU Free Documentation License, Version 1.1 or +any later version published by the Free Software Foundation; +Permission is granted to make and distribute verbatim copies of this +manual page provided the above copyright notice and this permission +notice are preserved on all copies. + +-- + +DarkSnow source code is free software; you can redistribute it and/or +modify it under the terms of the GNU Public License as published by +the Free Software Foundation; either version 2 of the License, or (at +your option) any later version. + +DarkSnow source code is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +Please refer to the GNU Public License for more details. + +You should have received a copy of the GNU Public License along with +this source code; if not, write to: +Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, +USA. + +.SH AVAILABILITY + +The most recent version of \fIDarkSnow\fR can be obtained from its +homepage at \fIhttp://darksnow.radiolivre.org\fR. + diff --git a/darkice-gui/branches/darksnow-0.7.1/po/Makefile b/darkice-gui/branches/darksnow-0.7.1/po/Makefile new file mode 100644 index 0000000..d83bb56 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/po/Makefile @@ -0,0 +1,2 @@ +all: + msgfmt pt_BR.po -o pt_BR.mo diff --git a/darkice-gui/branches/darksnow-0.7.1/po/pt_BR.po b/darkice-gui/branches/darksnow-0.7.1/po/pt_BR.po new file mode 100644 index 0000000..4de1156 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/po/pt_BR.po @@ -0,0 +1,387 @@ +# translation of darksnow to Brazilian portuguese. +# This file is distributed under the GNU GPLv2. +# Copyright (C) 2005, Rafael Diniz +# Rafael Diniz , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: Darksnow 0.6\n" +"Report-Msgid-Bugs-To: Rafael Diniz \n" +"POT-Creation-Date: 2004-02-05 00:52-0300\n" +"PO-Revision-Date: 2005-11-03 22:42+0000\n" +"Last-Translator: Rafael Diniz \n" +"Language-Team: Rafael Diniz \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: config_files.c:259 darksnow.c:290 +msgid "Constant" +msgstr "Constante" + +#: config_files.c:262 darksnow.c:291 +msgid "Average" +msgstr "Media" + +#: config_files.c:265 darksnow.c:292 +msgid "Variable" +msgstr "Variavel" + +#: config_files.c:272 darksnow.c:281 +msgid "mp3" +msgstr "mp3" + +#: config_files.c:274 darksnow.c:282 +msgid "ogg/vorbis" +msgstr "ogg/vorbis" + +#: config_files.c:276 darksnow.c:283 +msgid "aac" +msgstr "aac" + +#: config_files.c:301 darksnow.c:425 +msgid "yes" +msgstr "sim" + +#: darksnow.c:142 +msgid "Start Streaming" +msgstr "Iniciar Transmissao" + +#: darksnow.c:143 +msgid "Stop Streaming" +msgstr "Parar Transmissao" + +#: darksnow.c:144 interface.c:384 +msgid "Show Details" +msgstr "Mostrar Detalhes" + +#: darksnow.c:146 interface.c:262 +msgid "Streaming Status: Stopped" +msgstr "Estado da Transmissao: Parada" + +#: darksnow.c:161 +msgid "File" +msgstr "Arquivo" + +#: darksnow.c:162 +msgid "Open Configuration" +msgstr "Abrir Configuracao" + +#: darksnow.c:163 +msgid "Save Configuration" +msgstr "Salvar Configuracao" + +#: darksnow.c:164 +msgid "Quit and don't stop darkice" +msgstr "Sair sem desligar o darkice" + +#: darksnow.c:165 +msgid "Quit" +msgstr "Sair" + +#: darksnow.c:174 +msgid "Help" +msgstr "Ajuda" + +#: darksnow.c:175 +msgid "About" +msgstr "Sobre" + +#: darksnow.c:185 +#, c-format +msgid "" +"DarkSnow version: %s\n" +"Software written by Rafael Diniz\n" +"License: GNU Public License v2" +msgstr "" +"Versao do DarkSnow: %s\n" +"Programa escrito por Rafael Diniz\n" +"Licenca: GNU GPL v2" + +#: darksnow.c:188 interface.c:364 +msgid "Close" +msgstr "Fechar" + +#: darksnow.c:189 +msgid "About DarkSnow" +msgstr "Sobre o DarkSnow" + +#: darksnow.c:196 +msgid "" +"Darkice is running.\n" +"Do you want to kill darkice?\n" +msgstr "" +"O Darkice esta sendo executado.\n" +"Voce quer que o darkice seja desligado?\n" + +#: darksnow.c:197 +msgid "Yes" +msgstr "Sim" + +#: darksnow.c:198 +msgid "No" +msgstr "Nao" + +#: darksnow.c:200 +msgid "Darkice is running" +msgstr "Darkice sendo executado" + +#: darksnow.c:211 +msgid "Open File" +msgstr "Abrir Arquivo" + +#: darksnow.c:212 +msgid "Save File" +msgstr "Salvar Arquivo" + +#: darksnow.c:213 darksnow.c:270 +msgid "Local Dump File" +msgstr "Arquivo de Dump Local" + +#: darksnow.c:223 +msgid "Server Options" +msgstr "Opcoes do Servidor" + +#: darksnow.c:224 +msgid "Audio Options" +msgstr "Opcoes de Audio" + +#: darksnow.c:225 +msgid "Streaming Description" +msgstr "Descricao da Transmissao" + +#: darksnow.c:232 +msgid "Streaming Destination: " +msgstr "Destino da Transmissao: " + +#: darksnow.c:241 +msgid "Server: " +msgstr "Servidor: " + +#: darksnow.c:243 +msgid "Port: " +msgstr "Porta: " + +#: darksnow.c:245 +msgid "Mount Point: " +msgstr "Ponto de Montagem: " + +#: darksnow.c:247 +msgid "Password: " +msgstr "Senha: " + +#: darksnow.c:251 +msgid "Verbosity level: " +msgstr "Nivel de verbosidade: " + +#: darksnow.c:267 +msgid "Remote Dump File: " +msgstr "Arquivo de Dump Remoto: " + +#: darksnow.c:273 +msgid "Add date to local dump filename? " +msgstr "Adicinar a data ao nome do arquivo de dump local? " + +#: darksnow.c:278 +msgid "Format: " +msgstr "Formato: " + +#: darksnow.c:287 +msgid "BitRateMode: " +msgstr "Modo de codificacao: " + +#: darksnow.c:295 +msgid "BitRate: " +msgstr "Razao de bits: " + +#: darksnow.c:320 +msgid "SampleRate: " +msgstr "Taxa de Amostragem: " + +#: darksnow.c:333 +msgid "Quality: " +msgstr "Qualidade: " + +#: darksnow.c:348 +msgid "Bits per Sample: " +msgstr "Bits por Amostra: " + +#: darksnow.c:355 +msgid "Number of channels: " +msgstr "Numero de canais: " + +#: darksnow.c:363 +msgid "Buffer Size: " +msgstr "Tamanho do Buffer: " + +#: darksnow.c:389 +msgid "Device Input: " +msgstr "Dispositivo de Entrada: " + +#: darksnow.c:410 +msgid "Radio Name: " +msgstr "Nome da Radio: " + +#: darksnow.c:412 +msgid "URL: " +msgstr "URL: " + +#: darksnow.c:414 +msgid "Description: " +msgstr "Descricao: " + +#: darksnow.c:416 +msgid "Genre: " +msgstr "Genero: " + +#: darksnow.c:422 +msgid "Public: " +msgstr "Publica: " + +#: darksnow.c:426 +msgid "no" +msgstr "nao" + +#: darksnow.c:435 +msgid "" +"DarkSnow - A graphical user interface for darkice\n" +"The Revolution will be streamed!" +msgstr "" +"DarkSnow - Uma interface grafica para o darkice\n" +"A Revolucao sera transmitida pela Internet!" + +#: interface.c:97 +msgid "--> Command <--\n" +msgstr "--> Comando <--\n" + + +#: interface.c:99 +msgid "" +"\n" +"--> Darkice output <--\n" +msgstr "" +"\n" +"--> Saida do Darkice <--\n" + + +#: interface.c:113 +msgid "Darkice off" +msgstr "Darkice desligado" + +#: interface.c:269 +msgid "Streaming Status: Started" +msgstr "Estado da Transmissao: Iniciada" + +#: interface.c:358 +#, c-format +msgid "" +"Darkice binary 'darkice' not found on path!\n" +"Download darkice at http://code.google.com/p/darkice/" +msgstr "" +"Darkice nao encontrado!\n" +"Baixe o darkice de http://code.google.com/p/darkice/" + +#: interface.c:360 +#, c-format +msgid "" +"Don't you know you should have the fucking\n" +"darkice to run this shit!!\n" +"Get it at http://code.google.com/p/darkice/\n" +msgstr "" +"Puta vida, caraio, se num tah ligado que\n" +" vc tem que ter o darkice pra rodar essa merda??\n" +" baixa logo daquela merda de \n" +"http://code.google.com/p/darkice/\n" +"manu!!!\n" + +#: interface.c:365 +msgid "Error" +msgstr "Erro" + +#: interface.c:391 +msgid "Hide Details" +msgstr "Esconder Detalhes" + +#: tooltips.c:42 +msgid "" +"Field that indicates the name of the server.\n" +"Eg: orelha2.radiolivre.org" +msgstr "" +"Campo que indica o nome do servidor.\n" +"Ex: orelha2.radiolivre.org" + +#: tooltips.c:43 +msgid "" +"Field that indicates the server port that you'll connect.\n" +"Eg: 8000" +msgstr "" +"Campo que indica a porta do servidor na qual voce ira se conectar.\n" +"Ex: 8000" + +#: tooltips.c:44 +msgid "" +"Field that indicates the mount point for the stream.\n" +"Eg: radio_x.ogg\n" +" Remember to put a \".ogg\" at the end of the mountpoint if you want to use " +"ogg/vorbis!" +msgstr "" +"Campo que indica o ponto de montagem para o stream.\n" +"Ex: radio_x.ogg\n" +" Lembre-se de colocar um \".ogg\" no final do ponto de montagem caso voce queira " +"usar ogg/vorbis!" + +#: tooltips.c:45 +msgid "" +"Field that indicates the password for the stream, provided by the server " +"administrator." +msgstr "" +"Campo que indica a senha do stream, fornecida pelo administrador do servidor." + +#: tooltips.c:46 +msgid "" +"Field that indicates the file the IceCast server should dump the contents of " +"this stream on its side (server side).\n" +"Eg: remote_file_name.mp3" +msgstr "" +"Campo que indica o arquivo no qual o servidor IceCast ira depositar o conteudo " +"deste stream, no seu lado (server side).\n " +"Ex: arquivo_remoto.mp3" + +#: tooltips.c:48 +msgid "" +"Field that indicates the file where the same data sent to the stream will be " +"dumped.\n" +"Eg: local_file_name.mp3" +msgstr "" +"Campo que indica o arquivo no qual sera depositado os mesmos dados enviados " +"ao stream.\n" +"Ex: arquivo_local.mp3" + +#: tooltips.c:50 +msgid "" +"If you want to automatically insert a date string in the localDumpFile name, " +"check this option." +msgstr "" +"Se voce quer que seja inserida a data no nome do arquivo de dump local, marque " +"essa opcao." + +#: tooltips.c:54 +msgid "" +"Field that indicates the verbosity level of darkice.\n" +"Use a value greater than 0 if you want more information in 'Details Window'." +msgstr "" +"Campo que indica o nivel de verbosidade do darkice.\n" +"Use um valor maior que 0 caso voce queira maior quantidade de informacao na janela de detalhes." + +#: tooltips.c:55 +msgid "" +"For OSS DSP audio device to record from, use /dev/dsp_ (eg. /dev/dsp), for " +"ALSA, use hw:_,_ (eg. hw:0,0), and to create an unconnected input port in " +"jack, use 'jack', or use 'jack_auto' to automatically make Jack connect to " +"the first source. (if you choose jack you must set the samplerate to the " +"same jack samplerate!)" +msgstr "" +"Para usar como dispositivo de captura um dispositivo OSS, usar /dev/dsp_ (ex: /dev/dsp), para " +"usar um dispositivo ALSA, usar hw:_,_ (ex: hw:0,0), e para criar uma porta de entrada desconectada no jack, " +"usar 'jack', ou use 'jack_auto' para automaticamente fazer o jack conectar ao primeiro dispositivo fonte. " +"(Se voce escolheu o jack, lembre-se de utilizar a mesma taxa de amostragem utilizada pelo jack!" diff --git a/darkice-gui/branches/darksnow-0.7.1/tooltips.c b/darkice-gui/branches/darksnow-0.7.1/tooltips.c new file mode 100644 index 0000000..e432f49 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/tooltips.c @@ -0,0 +1,61 @@ +/* Darksnow - A GUI for darkice + * Copyright (C) 2004-2005 Rafael Diniz + * + * This source code is free software; you can redistribute it and/or + * modify it under the terms of the GNU Public License as published + * by the Free Software Foundation; either version 2 of the License, + * or (at your option) any later version. + * + * This source code is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * Please refer to the GNU Public License for more details. + * + * You should have received a copy of the GNU Public License along with + * this source code; if not, write to: + * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#ifndef __GTK_H__ +#include +#endif + +#ifndef __GLOBAL_H__ +#include "global.h" +#endif + +#ifdef USE_TOOLTIP +#define TOOLTIP 1 +#else +#define TOOLTIP 0 +#endif + +#include +#include +#include + +void set_all_tooltips(){ + + + if (TOOLTIP) { + gtk_widget_set_tooltip_text ( entry_server, gettext("Field that indicates the name of the server.\nEg: orelha2.radiolivre.org")); + gtk_widget_set_tooltip_text ( entry_port, gettext("Field that indicates the server port that you'll connect.\nEg: 8000")); + gtk_widget_set_tooltip_text ( entry_mountpoint, gettext("Field that indicates the mount point for the stream.\nEg: radio_x.ogg\n Remember to put a \".ogg\" at the end of the mountpoint if you want to use ogg/vorbis!")); + gtk_widget_set_tooltip_text ( entry_pass, gettext("Field that indicates the password for the stream, provided by the server administrator.")); + gtk_widget_set_tooltip_text ( entry_remotedump, gettext("Field that indicates the file \ +the IceCast server should dump the contents of this stream on its side (server side).\nEg: remote_file_name.mp3")); + gtk_widget_set_tooltip_text ( entry_localdump, gettext("Field that indicates the file where \ +the same data sent to the stream will be dumped.\nEg: local_file_name.mp3")); + gtk_widget_set_tooltip_text ( checkbutton_adddate, gettext("If you want to automatically \ +insert a date string in the localDumpFile name, check this option.")); + gtk_widget_set_tooltip_text ( combo_verbosity, gettext("Field that indicates the verbosity level of darkice.\nUse a value greater than 0 if you want more information in 'Details Window'.")); + gtk_widget_set_tooltip_text ( combo_device, gettext("For OSS DSP audio \ +device to record from, use /dev/dsp_ (eg. /dev/dsp), for ALSA, use hw:_,_ (eg. hw:0,0), and to create an \ +unconnected input \ +port in jack, use 'jack', or use 'jack_auto' to automatically make Jack connect \ +to the first source. (if you choose jack you must set the samplerate to the same jack samplerate!)")); + + } + +} diff --git a/darkice-gui/branches/darksnow-0.7.1/tooltips.h b/darkice-gui/branches/darksnow-0.7.1/tooltips.h new file mode 100644 index 0000000..d174f48 --- /dev/null +++ b/darkice-gui/branches/darksnow-0.7.1/tooltips.h @@ -0,0 +1,22 @@ +/* Darksnow - A GUI for darkice + * Copyright (C) 2004-2005 Rafael Diniz + * + * This source code is free software; you can redistribute it and/or + * modify it under the terms of the GNU Public License as published + * by the Free Software Foundation; either version 2 of the License, + * or (at your option) any later version. + * + * This source code is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * Please refer to the GNU Public License for more details. + * + * You should have received a copy of the GNU Public License along with + * this source code; if not, write to: + * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#define __TOOLTIPS_H__ + +void set_all_tooltips();