the begining of the migration of darksnow as the officil darkice gui
This commit is contained in:
parent
db68789aec
commit
8230ba3f37
|
@ -0,0 +1,92 @@
|
||||||
|
# Darksnow - A gui for darkice
|
||||||
|
#
|
||||||
|
# Copyright (C) 2004-2005 Rafael Diniz <rafael@riseup.net>
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
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) $(CFLAGS) @GTK_LIBS@ @GTK_CFLAGS@ -DVERSION="\"$(VERSION)\"" darksnow.o interface.o config_files.o tooltips.o -o darksnow
|
||||||
|
|
||||||
|
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
|
|
@ -0,0 +1,3 @@
|
||||||
|
please read documentation/README.*
|
||||||
|
por favor leia documentation/README.*
|
||||||
|
|
|
@ -0,0 +1,329 @@
|
||||||
|
/* Darksnow - A GUI for darkice
|
||||||
|
* Copyright (C) 2004-2005 Rafael Diniz <rafael@riseup.net>
|
||||||
|
*
|
||||||
|
* 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 <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <libintl.h>
|
||||||
|
|
||||||
|
#ifndef __GTK_H__
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
#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 = (char *) gtk_entry_get_text ( GTK_ENTRY( GTK_COMBO(combo_icecast)->entry));
|
||||||
|
format = (char *) gtk_entry_get_text ( GTK_ENTRY(GTK_COMBO (combo_format)->entry ));
|
||||||
|
bitrate = (char *) gtk_entry_get_text ( GTK_ENTRY(GTK_COMBO(combo_bitrate)->entry));
|
||||||
|
bitratemode = (char *) gtk_entry_get_text ( GTK_ENTRY(GTK_COMBO(combo_bitratemode)->entry));
|
||||||
|
samplerate = (char *) gtk_entry_get_text ( GTK_ENTRY(GTK_COMBO(combo_samplerate)->entry));
|
||||||
|
quality = (char *) gtk_entry_get_text ( GTK_ENTRY(GTK_COMBO(combo_quality)->entry));
|
||||||
|
bitspersample = (char *) gtk_entry_get_text ( GTK_ENTRY(GTK_COMBO(combo_bitspersample)->entry));
|
||||||
|
channel = (char *) gtk_entry_get_text ( GTK_ENTRY(GTK_COMBO(combo_channel)->entry));
|
||||||
|
buffersize = (char *) gtk_entry_get_text ( GTK_ENTRY(GTK_COMBO(combo_buffersize)->entry));
|
||||||
|
device = (char *) gtk_entry_get_text ( GTK_ENTRY(GTK_COMBO(combo_device)->entry));
|
||||||
|
public = (char *) gtk_entry_get_text ( GTK_ENTRY(GTK_COMBO(combo_public)->entry));
|
||||||
|
verbosity = (char *) gtk_entry_get_text ( GTK_ENTRY(GTK_COMBO(combo_verbosity)->entry));
|
||||||
|
|
||||||
|
|
||||||
|
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 or JACK */
|
||||||
|
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("aac"), format))
|
||||||
|
fprintf(f_darkice_cfg, "aac");
|
||||||
|
else if (!strcmp( gettext("mp2"), format))
|
||||||
|
fprintf(f_darkice_cfg, "mp2");
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* Darksnow - A GUI for darkice
|
||||||
|
* Copyright (C) 2004-2005 Rafael Diniz <rafael@riseup.net>
|
||||||
|
*
|
||||||
|
* 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();
|
|
@ -0,0 +1,18 @@
|
||||||
|
AC_INIT(darksnow.c)
|
||||||
|
AC_CONFIG_HEADERS([config.h])
|
||||||
|
|
||||||
|
dnl set CC
|
||||||
|
AC_PROG_CC
|
||||||
|
|
||||||
|
dnl tests C compiler
|
||||||
|
AC_LANG_C
|
||||||
|
|
||||||
|
VERSION="0.6.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.0.0)
|
||||||
|
|
||||||
|
AC_OUTPUT(Makefile)
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* Darksnow - A GUI for darkice
|
||||||
|
* Copyright (C) 2004-2005 Rafael Diniz <rafael@riseup.net>
|
||||||
|
*
|
||||||
|
* 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 450
|
||||||
|
#define SIZE_Y 465
|
||||||
|
|
|
@ -0,0 +1,683 @@
|
||||||
|
/* Darksnow - A GUI for darkice
|
||||||
|
* Copyright (C) 2004-2005 Rafael Diniz <rafael@riseup.net>
|
||||||
|
*
|
||||||
|
* 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 <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
#include <libintl.h>
|
||||||
|
#include <locale.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/mman.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
|
||||||
|
|
||||||
|
#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_bar_append ( GTK_MENU_BAR (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_bar_append ( GTK_MENU_BAR (menu_bar), menu_item_help );
|
||||||
|
|
||||||
|
gtk_box_pack_start (GTK_BOX (vbox), menu_bar, FALSE, FALSE, 0);
|
||||||
|
|
||||||
|
|
||||||
|
/* sets up the about dialog */
|
||||||
|
|
||||||
|
sprintf(bar, gettext("DarkSnow version: %s\nSoftware written by Rafael Diniz\nLicense: GNU Public License v2"),VERSION);
|
||||||
|
dialog_about = gtk_dialog_new ();
|
||||||
|
label_about = gtk_label_new ( bar );
|
||||||
|
button_about = gtk_button_new_with_label ( gettext("Close"));
|
||||||
|
gtk_window_set_title(GTK_WINDOW (dialog_about), gettext("About DarkSnow"));
|
||||||
|
gtk_widget_set_size_request (GTK_WIDGET (dialog_about), 350, 200);
|
||||||
|
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_about)->action_area), button_about, TRUE, TRUE, 0);
|
||||||
|
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_about)->vbox), label_about, TRUE, TRUE, 0);
|
||||||
|
|
||||||
|
/* 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_widget_set_size_request (GTK_WIDGET (dialog_darkkill), 300, 200);
|
||||||
|
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_darkkill)->action_area), button_yes_darkkill, TRUE, TRUE, 0);
|
||||||
|
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_darkkill)->action_area), button_no_darkkill, TRUE, TRUE, 0);
|
||||||
|
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_darkkill)->vbox), 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_selection_new ( gettext("Open File") );
|
||||||
|
file_save = gtk_file_selection_new ( gettext("Save File") );
|
||||||
|
file_localdump = gtk_file_selection_new ( gettext("Local Dump File") );
|
||||||
|
|
||||||
|
/* 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_new ();
|
||||||
|
glist_icecast = NULL;
|
||||||
|
glist_icecast = g_list_append (glist_icecast, "Icecast 1");
|
||||||
|
glist_icecast = g_list_append (glist_icecast, "Icecast 2");
|
||||||
|
glist_icecast = g_list_append (glist_icecast, "Shoutcast");
|
||||||
|
gtk_combo_set_popdown_strings (GTK_COMBO (combo_icecast), glist_icecast);
|
||||||
|
gtk_entry_set_text ( GTK_ENTRY(GTK_COMBO(combo_icecast)->entry), "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_new ();
|
||||||
|
glist_verbosity = NULL;
|
||||||
|
glist_verbosity = g_list_append (glist_verbosity, "0");
|
||||||
|
glist_verbosity = g_list_append (glist_verbosity, "1");
|
||||||
|
glist_verbosity = g_list_append (glist_verbosity, "2");
|
||||||
|
glist_verbosity = g_list_append (glist_verbosity, "3");
|
||||||
|
glist_verbosity = g_list_append (glist_verbosity, "4");
|
||||||
|
glist_verbosity = g_list_append (glist_verbosity, "5");
|
||||||
|
glist_verbosity = g_list_append (glist_verbosity, "6");
|
||||||
|
glist_verbosity = g_list_append (glist_verbosity, "7");
|
||||||
|
glist_verbosity = g_list_append (glist_verbosity, "8");
|
||||||
|
glist_verbosity = g_list_append (glist_verbosity, "9");
|
||||||
|
glist_verbosity = g_list_append (glist_verbosity, "10");
|
||||||
|
gtk_combo_set_popdown_strings (GTK_COMBO (combo_verbosity), glist_verbosity);
|
||||||
|
|
||||||
|
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_new ();
|
||||||
|
glist_format = NULL;
|
||||||
|
glist_format = g_list_append (glist_format, gettext("mp3"));
|
||||||
|
glist_format = g_list_append (glist_format, gettext("ogg/vorbis"));
|
||||||
|
glist_format = g_list_append (glist_format, gettext("aac"));
|
||||||
|
glist_format = g_list_append (glist_format, gettext("mp2"));
|
||||||
|
gtk_combo_set_popdown_strings (GTK_COMBO (combo_format), glist_format);
|
||||||
|
|
||||||
|
|
||||||
|
label_bitratemode = gtk_label_new ( gettext("BitRateMode: "));
|
||||||
|
combo_bitratemode = gtk_combo_new ();
|
||||||
|
glist_bitratemode = NULL;
|
||||||
|
glist_bitratemode = g_list_append (glist_bitratemode, gettext("Constant"));
|
||||||
|
glist_bitratemode = g_list_append (glist_bitratemode, gettext("Average"));
|
||||||
|
glist_bitratemode = g_list_append (glist_bitratemode, gettext("Variable"));
|
||||||
|
gtk_combo_set_popdown_strings (GTK_COMBO (combo_bitratemode), glist_bitratemode);
|
||||||
|
|
||||||
|
label_bitrate = gtk_label_new ( gettext("BitRate: "));
|
||||||
|
combo_bitrate = gtk_combo_new ();
|
||||||
|
glist_bitrate = NULL;
|
||||||
|
glist_bitrate = g_list_append (glist_bitrate, "16");
|
||||||
|
glist_bitrate = g_list_append (glist_bitrate, "24");
|
||||||
|
glist_bitrate = g_list_append (glist_bitrate, "32");
|
||||||
|
glist_bitrate = g_list_append (glist_bitrate, "40");
|
||||||
|
glist_bitrate = g_list_append (glist_bitrate, "48");
|
||||||
|
glist_bitrate = g_list_append (glist_bitrate, "56");
|
||||||
|
glist_bitrate = g_list_append (glist_bitrate, "64");
|
||||||
|
glist_bitrate = g_list_append (glist_bitrate, "72");
|
||||||
|
glist_bitrate = g_list_append (glist_bitrate, "80");
|
||||||
|
glist_bitrate = g_list_append (glist_bitrate, "88");
|
||||||
|
glist_bitrate = g_list_append (glist_bitrate, "96");
|
||||||
|
glist_bitrate = g_list_append (glist_bitrate, "104");
|
||||||
|
glist_bitrate = g_list_append (glist_bitrate, "112");
|
||||||
|
glist_bitrate = g_list_append (glist_bitrate, "120");
|
||||||
|
glist_bitrate = g_list_append (glist_bitrate, "128");
|
||||||
|
glist_bitrate = g_list_append (glist_bitrate, "160");
|
||||||
|
glist_bitrate = g_list_append (glist_bitrate, "192");
|
||||||
|
glist_bitrate = g_list_append (glist_bitrate, "224");
|
||||||
|
glist_bitrate = g_list_append (glist_bitrate, "256");
|
||||||
|
gtk_combo_set_popdown_strings (GTK_COMBO (combo_bitrate), glist_bitrate);
|
||||||
|
gtk_entry_set_text ( GTK_ENTRY(GTK_COMBO(combo_bitrate)->entry), "32");
|
||||||
|
|
||||||
|
label_samplerate = gtk_label_new ( gettext("SampleRate: "));
|
||||||
|
combo_samplerate = gtk_combo_new ();
|
||||||
|
glist_samplerate = NULL;
|
||||||
|
glist_samplerate = g_list_append (glist_samplerate, "8000");
|
||||||
|
glist_samplerate = g_list_append (glist_samplerate, "11025");
|
||||||
|
glist_samplerate = g_list_append (glist_samplerate, "22050");
|
||||||
|
glist_samplerate = g_list_append (glist_samplerate, "44100");
|
||||||
|
glist_samplerate = g_list_append (glist_samplerate, "48000");
|
||||||
|
glist_samplerate = g_list_append (glist_samplerate, "96000");
|
||||||
|
gtk_combo_set_popdown_strings (GTK_COMBO (combo_samplerate), glist_samplerate);
|
||||||
|
gtk_entry_set_text ( GTK_ENTRY(GTK_COMBO(combo_samplerate)->entry), "22050");
|
||||||
|
|
||||||
|
|
||||||
|
label_quality = gtk_label_new ( gettext("Quality: "));
|
||||||
|
combo_quality = gtk_combo_new ();
|
||||||
|
glist_quality = g_list_append (glist_quality, "1.0");
|
||||||
|
glist_quality = g_list_append (glist_quality, "0.9");
|
||||||
|
glist_quality = g_list_append (glist_quality, "0.8");
|
||||||
|
glist_quality = g_list_append (glist_quality, "0.7");
|
||||||
|
glist_quality = g_list_append (glist_quality, "0.6");
|
||||||
|
glist_quality = g_list_append (glist_quality, "0.5");
|
||||||
|
glist_quality = g_list_append (glist_quality, "0.4");
|
||||||
|
glist_quality = g_list_append (glist_quality, "0.3");
|
||||||
|
glist_quality = g_list_append (glist_quality, "0.2");
|
||||||
|
glist_quality = g_list_append (glist_quality, "0.1");
|
||||||
|
gtk_combo_set_popdown_strings (GTK_COMBO (combo_quality), glist_quality);
|
||||||
|
gtk_entry_set_text ( GTK_ENTRY(GTK_COMBO(combo_quality)->entry), "0.8");
|
||||||
|
|
||||||
|
label_bitspersample = gtk_label_new ( gettext("Bits per Sample: "));
|
||||||
|
combo_bitspersample = gtk_combo_new ();
|
||||||
|
glist_bitspersample = NULL;
|
||||||
|
glist_bitspersample = g_list_append (glist_bitspersample, "16");
|
||||||
|
glist_bitspersample = g_list_append (glist_bitspersample, "8");
|
||||||
|
gtk_combo_set_popdown_strings (GTK_COMBO (combo_bitspersample), glist_bitspersample);
|
||||||
|
|
||||||
|
label_channel = gtk_label_new ( gettext("Number of channels: "));
|
||||||
|
combo_channel = gtk_combo_new ();
|
||||||
|
glist_channel = NULL;
|
||||||
|
glist_channel = g_list_append (glist_channel, "2 - Stereo");
|
||||||
|
glist_channel = g_list_append (glist_channel, "1 - Mono");
|
||||||
|
gtk_combo_set_popdown_strings (GTK_COMBO (combo_channel), glist_channel);
|
||||||
|
gtk_entry_set_text ( GTK_ENTRY(GTK_COMBO(combo_channel)->entry), "1 - Mono");
|
||||||
|
|
||||||
|
label_buffersize = gtk_label_new ( gettext ("Buffer Size: "));
|
||||||
|
combo_buffersize = gtk_combo_new ();
|
||||||
|
glist_buffersize = NULL;
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "1");
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "2");
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "3");
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "4");
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "5");
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "6");
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "7");
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "8");
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "9");
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "10");
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "11");
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "12");
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "13");
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "14");
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "15");
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "16");
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "17");
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "18");
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "19");
|
||||||
|
glist_buffersize = g_list_append (glist_buffersize, "20");
|
||||||
|
gtk_combo_set_popdown_strings (GTK_COMBO (combo_buffersize), glist_buffersize);
|
||||||
|
gtk_entry_set_text ( GTK_ENTRY(GTK_COMBO(combo_buffersize)->entry), "10");
|
||||||
|
|
||||||
|
label_device = gtk_label_new ( gettext ("Device Input: "));
|
||||||
|
combo_device = gtk_combo_new ();
|
||||||
|
glist_device = g_list_append (glist_device, "jack");
|
||||||
|
glist_device = g_list_append (glist_device, "jack_auto");
|
||||||
|
glist_device = g_list_append (glist_device, "/dev/dsp");
|
||||||
|
glist_device = g_list_append (glist_device, "/dev/dsp0");
|
||||||
|
glist_device = g_list_append (glist_device, "/dev/dsp1");
|
||||||
|
glist_device = g_list_append (glist_device, "/dev/dsp2");
|
||||||
|
glist_device = g_list_append (glist_device, "/dev/dsp3");
|
||||||
|
glist_device = g_list_append (glist_device, "hw:0,0");
|
||||||
|
glist_device = g_list_append (glist_device, "hw:0,1");
|
||||||
|
glist_device = g_list_append (glist_device, "hw:0,2");
|
||||||
|
glist_device = g_list_append (glist_device, "hw:1,0");
|
||||||
|
glist_device = g_list_append (glist_device, "hw:1,1");
|
||||||
|
glist_device = g_list_append (glist_device, "hw:1,2");
|
||||||
|
gtk_combo_set_popdown_strings (GTK_COMBO (combo_device), glist_device);
|
||||||
|
gtk_entry_set_text ( GTK_ENTRY(GTK_COMBO(combo_device)->entry), "/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_new ();
|
||||||
|
glist_public = NULL;
|
||||||
|
glist_public = g_list_append (glist_public, gettext("yes"));
|
||||||
|
glist_public = g_list_append (glist_public, gettext("no"));
|
||||||
|
gtk_combo_set_popdown_strings (GTK_COMBO (combo_public), glist_public);
|
||||||
|
|
||||||
|
|
||||||
|
/* 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), "delete_event",G_CALLBACK (gtk_widget_hide), dialog_about);
|
||||||
|
g_signal_connect_swapped (G_OBJECT (button_about), "clicked",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_widget_show), file_open);
|
||||||
|
g_signal_connect_swapped (G_OBJECT (menu_item_save), "activate", G_CALLBACK (gtk_widget_show), 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 (G_OBJECT (menu_item_about), "activate", G_CALLBACK (dark_about), NULL);
|
||||||
|
|
||||||
|
g_signal_connect_swapped (G_OBJECT (button_localdump), "clicked", G_CALLBACK (gtk_widget_show), file_localdump);
|
||||||
|
|
||||||
|
g_signal_connect ( G_OBJECT (GTK_FILE_SELECTION (file_open)->ok_button), "clicked", G_CALLBACK (dark_put_in_box), NULL);
|
||||||
|
g_signal_connect_swapped ( G_OBJECT (GTK_FILE_SELECTION (file_open)->cancel_button), "clicked", G_CALLBACK (gtk_widget_hide), file_open);
|
||||||
|
g_signal_connect_swapped ( G_OBJECT (file_open), "delete_event", G_CALLBACK (gtk_widget_hide), file_open);
|
||||||
|
|
||||||
|
g_signal_connect ( G_OBJECT (GTK_FILE_SELECTION (file_save)->ok_button), "clicked", G_CALLBACK (dark_write_config), NULL);
|
||||||
|
g_signal_connect_swapped ( G_OBJECT (GTK_FILE_SELECTION (file_save)->cancel_button), "clicked", G_CALLBACK (gtk_widget_hide), file_save);
|
||||||
|
g_signal_connect_swapped ( G_OBJECT (file_save), "delete_event", G_CALLBACK (gtk_widget_hide), file_save);
|
||||||
|
|
||||||
|
g_signal_connect ( G_OBJECT (GTK_FILE_SELECTION (file_localdump)->ok_button), "clicked", G_CALLBACK (dark_localdump), NULL);
|
||||||
|
g_signal_connect_swapped ( G_OBJECT (GTK_FILE_SELECTION (file_localdump)->cancel_button), "clicked", G_CALLBACK (gtk_widget_hide), file_localdump);
|
||||||
|
g_signal_connect_swapped ( G_OBJECT (file_localdump), "delete_event", G_CALLBACK (gtk_widget_hide), file_localdump);
|
||||||
|
|
||||||
|
/* 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_about);
|
||||||
|
gtk_widget_show (button_about);
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
|
@ -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 <zakame@ubuntu.com> 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 <rclbelem@gmail.com> 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 <rclbelem@gmail.com> 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 <rclbelem@gmail.com> Fri, 19 Aug 2005 18:20:24 -0400
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
5
|
|
@ -0,0 +1,16 @@
|
||||||
|
Source: darksnow
|
||||||
|
Section: sound
|
||||||
|
Priority: optional
|
||||||
|
Maintainer: Rodrigo Belem <rclbelem@gmail.com>
|
||||||
|
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/
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
This package was debianized by Rodrigo Belem <rclbelem@gmail.com> on
|
||||||
|
Fri, 19 Aug 2005 18:20:24 -0400.
|
||||||
|
|
||||||
|
It was downloaded from http://darksnow.radiolivre.org/
|
||||||
|
|
||||||
|
Copyright:
|
||||||
|
|
||||||
|
Upstream Author: Rafael Diniz <rafael@riseup.net>
|
||||||
|
|
||||||
|
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'.
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
documentation/CREDITS
|
||||||
|
documentation/README.en
|
||||||
|
documentation/README.pt_BR
|
|
@ -0,0 +1 @@
|
||||||
|
man/darksnow.1
|
|
@ -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
|
|
@ -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
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
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 "<defunct>" 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
|
|
@ -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
|
|
@ -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.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
<signature of Ty Coon>, 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.
|
|
@ -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!
|
|
@ -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!
|
|
@ -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:
|
|
@ -0,0 +1,169 @@
|
||||||
|
/* Darksnow - A GUI for darkice
|
||||||
|
* Copyright (C) 2004-2005 Rafael Diniz <rafael@riseup.net>
|
||||||
|
*
|
||||||
|
* 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 <gtk/gtk.h>
|
||||||
|
#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;
|
||||||
|
GtkWidget *label_about;
|
||||||
|
GtkWidget *button_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;
|
||||||
|
GList *glist_icecast;
|
||||||
|
GtkWidget *label_format;
|
||||||
|
GtkWidget *combo_format;
|
||||||
|
GList *glist_format;
|
||||||
|
GtkWidget *label_bitrate;
|
||||||
|
GtkWidget *combo_bitrate;
|
||||||
|
GList *glist_bitrate;
|
||||||
|
GtkWidget *label_bitratemode;
|
||||||
|
GtkWidget *combo_bitratemode;
|
||||||
|
GList *glist_bitratemode;
|
||||||
|
GtkWidget *label_samplerate;
|
||||||
|
GtkWidget *combo_samplerate;
|
||||||
|
GList *glist_samplerate;
|
||||||
|
GtkWidget *label_quality;
|
||||||
|
GtkWidget *combo_quality;
|
||||||
|
GList *glist_quality;
|
||||||
|
GtkWidget *label_bitspersample;
|
||||||
|
GtkWidget *combo_bitspersample;
|
||||||
|
GList *glist_bitspersample;
|
||||||
|
GtkWidget *label_channel;
|
||||||
|
GtkWidget *combo_channel;
|
||||||
|
GList *glist_channel;
|
||||||
|
GtkWidget *label_buffersize;
|
||||||
|
GtkWidget *combo_buffersize;
|
||||||
|
GList *glist_buffersize;
|
||||||
|
GtkWidget *label_device;
|
||||||
|
GtkWidget *combo_device;
|
||||||
|
GList *glist_device;
|
||||||
|
GtkWidget *label_public;
|
||||||
|
GtkWidget *combo_public;
|
||||||
|
GList *glist_public;
|
||||||
|
GtkWidget *label_verbosity;
|
||||||
|
GtkWidget *combo_verbosity;
|
||||||
|
GList *glist_verbosity;
|
||||||
|
|
||||||
|
|
||||||
|
/* text view stuff */
|
||||||
|
GtkWidget *text;
|
||||||
|
GtkTextBuffer *buffer;
|
||||||
|
GtkTextTagTable *tag_table;
|
||||||
|
GtkTextTag *tag;
|
||||||
|
|
||||||
|
/* text view has to scroll */
|
||||||
|
GtkWidget *scroll_text;
|
||||||
|
|
||||||
|
/* The GTK ToolTips */
|
||||||
|
GtkTooltips *tooltip;
|
Binary file not shown.
After Width: | Height: | Size: 2.6 KiB |
|
@ -0,0 +1,395 @@
|
||||||
|
/* Darksnow - A GUI for darkice
|
||||||
|
* Copyright (C) 2004-2005 Rafael Diniz <rafael@riseup.net>
|
||||||
|
*
|
||||||
|
* 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 <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <libintl.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
|
#ifndef __GLOBAL_H__
|
||||||
|
#include "global.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __CONSTANTS_H__
|
||||||
|
#include "constants.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __GTK_H__
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
#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 caracter 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 = (char *) gtk_entry_get_text ( GTK_ENTRY(GTK_COMBO(combo_verbosity)->entry));
|
||||||
|
|
||||||
|
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("Fork error! God save the queen!\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, 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;
|
||||||
|
|
||||||
|
darksnow_path = (char *) gtk_file_selection_get_filename (GTK_FILE_SELECTION (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_COMBO(combo_icecast)->entry), icecast);
|
||||||
|
gtk_entry_set_text ( GTK_ENTRY(GTK_COMBO(combo_format)->entry), format);
|
||||||
|
gtk_entry_set_text ( GTK_ENTRY(GTK_COMBO(combo_bitrate)->entry), bitrate);
|
||||||
|
gtk_entry_set_text ( GTK_ENTRY(GTK_COMBO(combo_bitratemode)->entry), bitratemode);
|
||||||
|
gtk_entry_set_text ( GTK_ENTRY(GTK_COMBO(combo_samplerate)->entry), samplerate);
|
||||||
|
gtk_entry_set_text ( GTK_ENTRY(GTK_COMBO(combo_quality)->entry), quality);
|
||||||
|
gtk_entry_set_text ( GTK_ENTRY(GTK_COMBO(combo_bitspersample)->entry), bitspersample);
|
||||||
|
gtk_entry_set_text ( GTK_ENTRY(GTK_COMBO(combo_channel)->entry), channel);
|
||||||
|
gtk_entry_set_text ( GTK_ENTRY(GTK_COMBO(combo_buffersize)->entry), buffersize);
|
||||||
|
gtk_entry_set_text ( GTK_ENTRY(GTK_COMBO(combo_device)->entry), device);
|
||||||
|
gtk_entry_set_text ( GTK_ENTRY(GTK_COMBO(combo_public)->entry), public);
|
||||||
|
gtk_entry_set_text ( GTK_ENTRY(GTK_COMBO(combo_verbosity)->entry), 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, gpointer data ) {
|
||||||
|
char *darksnow_path;
|
||||||
|
|
||||||
|
darksnow_path = (char *) gtk_file_selection_get_filename (GTK_FILE_SELECTION (file_save));
|
||||||
|
if (darksnow_config_store (0, darksnow_path))
|
||||||
|
gtk_widget_hide(file_save);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void dark_about ( GtkWidget *widget, gpointer data ) {
|
||||||
|
gtk_widget_show (dialog_about);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void dark_localdump (GtkWidget *widget, gpointer data){
|
||||||
|
gtk_entry_set_text ( (GtkEntry *) entry_localdump, (char *) gtk_file_selection_get_filename (GTK_FILE_SELECTION (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 <defunct> 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
|
||||||
|
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 not found!\nDownload darkice at http://darkice.sf.net/"));
|
||||||
|
else
|
||||||
|
sprintf(bar, gettext("Don't you know you should have the fucking\ndarkice to run this shit!!\nGet it at http://darkice.sf.net/\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_widget_set_size_request (GTK_WIDGET (dialog_darkdep), 350, 200);
|
||||||
|
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_darkdep)->action_area), button_darkdep, TRUE, TRUE, 0);
|
||||||
|
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_darkdep)->vbox), 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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,72 @@
|
||||||
|
/* Darksnow - A GUI for darkice
|
||||||
|
* Copyright (C) 2004-2005 Rafael Diniz <rafael@riseup.net>
|
||||||
|
*
|
||||||
|
* 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 <gtk/gtk.h>
|
||||||
|
#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, gpointer data);
|
||||||
|
|
||||||
|
/* Callback for OK button of the "Save File" file selector, displayed by dark_save */
|
||||||
|
void dark_write_config ( GtkWidget *widget, gpointer data );
|
||||||
|
|
||||||
|
/* Callback for About Menu Option */
|
||||||
|
void dark_about (GtkWidget *widget, gpointer data);
|
||||||
|
|
||||||
|
/* Callback for the local dump file selector 'ok' button */
|
||||||
|
void dark_localdump (GtkWidget *widget, 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);
|
|
@ -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 <rafael@riseup.net>.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
all:
|
||||||
|
msgfmt pt_BR.po -o pt_BR.mo
|
|
@ -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 <rafael@riseup.net>, 2005.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Darksnow 0.6\n"
|
||||||
|
"Report-Msgid-Bugs-To: Rafael Diniz <rafael@riseup.net>\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 <rafael@riseup.net>\n"
|
||||||
|
"Language-Team: Rafael Diniz <rafael@riseup.net>\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 not found!\n"
|
||||||
|
"Download darkice at http://darkice.sf.net/"
|
||||||
|
msgstr ""
|
||||||
|
"Darkice nao encontrado!\n"
|
||||||
|
"Baixe o darkice de http://darkice.sf.net/"
|
||||||
|
|
||||||
|
#: 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://darkice.sf.net/\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://darkice.sf.net/\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!"
|
|
@ -0,0 +1,65 @@
|
||||||
|
/* Darksnow - A GUI for darkice
|
||||||
|
* Copyright (C) 2004-2005 Rafael Diniz <rafael@riseup.net>
|
||||||
|
*
|
||||||
|
* 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 <gtk/gtk.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __GLOBAL_H__
|
||||||
|
#include "global.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_TOOLTIP
|
||||||
|
#define TOOLTIP 1
|
||||||
|
#else
|
||||||
|
#define TOOLTIP 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <libintl.h>
|
||||||
|
|
||||||
|
void set_all_tooltips(){
|
||||||
|
tooltip = gtk_tooltips_new ();
|
||||||
|
|
||||||
|
if (TOOLTIP) {
|
||||||
|
gtk_tooltips_set_tip (GTK_TOOLTIPS (tooltip), entry_server, gettext("Field that indicates the name of the server.\nEg: orelha2.radiolivre.org"), "");
|
||||||
|
gtk_tooltips_set_tip (GTK_TOOLTIPS (tooltip), entry_port, gettext("Field that indicates the server port that you'll connect.\nEg: 8000"), "");
|
||||||
|
gtk_tooltips_set_tip (GTK_TOOLTIPS (tooltip), 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_tooltips_set_tip (GTK_TOOLTIPS (tooltip), entry_pass, gettext("Field that indicates the password for the stream, provided by the server administrator."), "");
|
||||||
|
gtk_tooltips_set_tip (GTK_TOOLTIPS (tooltip), 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_tooltips_set_tip (GTK_TOOLTIPS (tooltip), 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_tooltips_set_tip (GTK_TOOLTIPS (tooltip), checkbutton_adddate, gettext("If you want to automatically \
|
||||||
|
insert a date string in the localDumpFile name, check this option."), "");
|
||||||
|
|
||||||
|
|
||||||
|
gtk_tooltips_set_tip (GTK_TOOLTIPS (tooltip), (GTK_COMBO(combo_verbosity))->entry, gettext("Field that indicates the verbosity level of darkice.\nUse a value greater than 0 if you want more information in 'Details Window'."), "");
|
||||||
|
gtk_tooltips_set_tip (GTK_TOOLTIPS (tooltip), (GTK_COMBO(combo_device))->entry, 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!)"), "");
|
||||||
|
|
||||||
|
}
|
||||||
|
else /* if compiling without tooltip */
|
||||||
|
free (tooltip);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
/* Darksnow - A GUI for darkice
|
||||||
|
* Copyright (C) 2004-2005 Rafael Diniz <rafael@riseup.net>
|
||||||
|
*
|
||||||
|
* 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();
|
Loading…
Reference in New Issue