Audio-MikMod

 view release on metacpan or  search on metacpan

demo/player-gtk-ipc  view on Meta::CPAN

	# label for currently open file path 
	$filelabel = Gtk::Label->new('');
	$vbox->pack_start($filelabel, FALSE, FALSE, 0);
	$filelabel->show;

	my $separator = Gtk::HSeparator->new;
	$vbox->pack_start($separator, FALSE, TRUE, 1);
    	$separator->show;

	###################################
	# label for currently open song and error/status messages 
	$songlabel = Gtk::Label->new('');
	$vbox->pack_start($songlabel, FALSE, FALSE, 0);
	$songlabel->show;

	# progress bar

	###################################
	# buttons will go in here 
	my $buttonbox = Gtk::HBox->new(FALSE, 1);
	$vbox->add($buttonbox);
	$buttonbox->show;

	for my $type (qw(exit back play pause stop forward open)) {
		make_button($window, $pixmaps->{$type}, $subs->{$type},  $buttonbox);
	}

	$window->show;
}

sub make_button ($$$$) {
	my ($window,$xpm,$func,$box) = @_;
	my $mask;

	my $pixmap = Gtk::Gdk::Pixmap->create_from_xpm_d($window->window,$mask,@$xpm);
	my $pixmapwid = Gtk::Pixmap->new($pixmap, $mask);
	$pixmapwid->show;

	my $button = Gtk::Button->new;
	$button->add($pixmapwid);
	$button->signal_connect('clicked' => $func);

	$box->pack_start($button, 1, 1, 0);
	$button->show;
}

sub _open_fw {
	my $fw = Gtk::FileSelection->new('Song Selection');

	$fw->signal_connect('destroy', \&destroy_window, \$fw);

	$fw->ok_button->signal_connect('clicked', sub {
		_open($fw->get_filename);
		$fw->destroy;
	}, $fw);

	$fw->cancel_button->signal_connect('clicked', sub { $fw->destroy });
	$fw->show;
}

sub update_info ($$) {
	my ($fname,$mfile) = @_;

	if ($song_loaded) {
		$fname =~ s#^\S+/##;
		$filelabel->set($fname);
	} else {
		$filelabel->set($url);
	}

	$songlabel->set($mfile);
}

sub progress_update { 1 }

sub progress_timeout {
	my $progressbar = shift;
	my $new_val = $progressbar->get_current_percentage;
	$new_val += 0.02;
	$new_val  = 0.0 if $new_val >= 1.0;
	$progressbar->update($new_val);
	return 1;
}

sub destroy_window ($$$) {
	my ($widget, $wref, $wref2) = @_;
	$$wref = undef;
	$wref2 = undef if defined $wref2;
        return 0;
}

##################
# Sound functions
sub _init {
	MikMod_RegisterAllLoaders();
        MikMod_RegisterAllDrivers();

	if (MikMod_Init()) {
		printf STDERR "Could not initialize sound, reason: %s\n",
			MikMod_strerror();
		_done();
	}
}

sub _play {
	print "In _play()\n";
	if ($song_loaded) {

		if ($song_playing && $song_paused) {
			_pause();
		} elsif ($song_playing) {
			Player_SetPosition(0);
		} else {
			$song_playing = 1;
			Player_Start($songfile);	
			Player_SetPosition(0);
		}

		$child = forksub { _update() }

	} else {



( run in 2.252 seconds using v1.01-cache-2.11-cpan-0d23b851a93 )