This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository mteleplayer. commit 4abe5fee409097d3d66ad4ff3cb51d54ac2be484 Author: gznget <opensource@gznianguan.com> Date: Tue Jun 17 20:41:15 2014 +0200 Add audio volume scaler to GUI and volume control support functions. --- .../mteleplayer/bin/mteleplayer_clientside | 10 +- serverside/bin/mteleplayer | 103 ++++++++++++++++++-- 2 files changed, 101 insertions(+), 12 deletions(-) diff --git a/clientside/lib/telekinesis/client/applications/mteleplayer/bin/mteleplayer_clientside b/clientside/lib/telekinesis/client/applications/mteleplayer/bin/mteleplayer_clientside index bdf7cd6..b651400 100755 --- a/clientside/lib/telekinesis/client/applications/mteleplayer/bin/mteleplayer_clientside +++ b/clientside/lib/telekinesis/client/applications/mteleplayer/bin/mteleplayer_clientside @@ -108,7 +108,7 @@ $sstatusi{'runState'} = "R"; # The Main Gtk2 event loop my %mpState;$mpState{'MediaERROR'} = 0;$mpState{'FakeFS'} = 0;$mpState{'mediaPos'} = 0; $mpState{'mediaLength'} = 3;$mpState{'paused'} = 0; $mpState{'mute'} = 0; -$mpState{'volume'} = 75;# Change this to get from server side! +$mpState{'volume'} = 0;# Change this to get from server side! $mpState{'osd'} = 0; $mpState{'LASTINPUT'} = "";$mpState{'prevSecond'} = 0; ###########################33 @@ -243,7 +243,13 @@ sub handleTheLocalSocket { } elsif ($1 =~ /^TERMINATE/) { doSelfTerminate(); } - + if ($1 =~ /^SET\|AUDIOVOLUME\|(\d{1,3})\|.*/) { + my $newVol = $1; + if (($newVol >= 0) and ($newVol <= 100)) { + $mpState{'volume'} = $newVol; + mpCMD("volume $mpState{'volume'} 1"); + } + } if ($1 =~ /^XPOSTAT\|(\d*)\|(\d*)\|(\d*)\|(\d*)\|(\d)\|/) { $sstatusi{'xposX'} = $1; $sstatusi{'xposY'} = $2; diff --git a/serverside/bin/mteleplayer b/serverside/bin/mteleplayer index d95cf5b..f39406e 100755 --- a/serverside/bin/mteleplayer +++ b/serverside/bin/mteleplayer @@ -70,6 +70,7 @@ push @openMedia, $tmpOnlyOneFile; my $selfSID = sanitizer("tekiappsid","uno");# At some point change this to where we can have multiple instances running or just the UNO. (see roadmap notes) our %GTKS; our %TnW; +our %PRESISTENT;$PRESISTENT{'AudioVolume'} = 50; our %sstatusi;$sstatusi{'sockState'} = 0;$sstatusi{'sockRetryCnt'} = 0;$sstatusi{'runState'} = "I";$sstatusi{'X2GoResized'} = 0; $sstatusi{'lastCOMtime'} = (time()+2);$sstatusi{'remoteInitCnt'} = 0; @@ -231,7 +232,7 @@ sub initMainWindow { $GTKS{'CTRLS'}{'BtnPlayPauseEBOX'}{'PauseGFX'} = Gtk2::Image->new_from_pixbuf(Gtk2::Gdk::Pixbuf->new_from_file ("$theSHAREDIR/gfx/default/pause_btn_32.png")); $GTKS{'CTRLS'}{'BtnPlayPauseEBOX'}{'PauseGFX'}->set_size_request(32,32); $GTKS{'CTRLS'}{'BtnPlayPauseEBOX'}->signal_connect('button-release-event' => \&eventBtnClickPlayPause); -# $GTKS{'CTRLS'}{'BtnPlayPauseEBOX'}->add($GTKS{'CTRLS'}{'BtnPlayPauseEBOX'}{'PlayGFX'}); + $GTKS{'CTRLS'}{'BtnPlayPauseEBOX'}->add($GTKS{'CTRLS'}{'BtnPlayPauseEBOX'}{'PlayGFX'}); stateChangePAUSED(0);# Use this to initiate the play/pause button gfx... $GTKS{'CTRLS'}{'BtnPreviousEBOX'} = Gtk2::EventBox->new;$GTKS{'CTRLS'}{'BtnPreviousEBOX'}->set_size_request(32,32); @@ -242,17 +243,45 @@ sub initMainWindow { $GTKS{'CTRLS'}{'BtnNextEBOX'}{'GFX'} = Gtk2::Image->new_from_pixbuf(Gtk2::Gdk::Pixbuf->new_from_file ("$theSHAREDIR/gfx/default/nexttr_btn_32.png")); $GTKS{'CTRLS'}{'BtnNextEBOX'}{'GFX'}->set_size_request(32,32); $GTKS{'CTRLS'}{'BtnNextEBOX'}->add($GTKS{'CTRLS'}{'BtnNextEBOX'}{'GFX'}); - - my $MediaAreaButtonsHBox = Gtk2::HBox->new(FALSE, 0); - $MediaAreaButtonsHBox->pack_start($GTKS{'CTRLS'}->{'BtnPreviousEBOX'} ,FALSE, FALSE, 3); - $MediaAreaButtonsHBox->pack_start($GTKS{'CTRLS'}->{'BtnPlayPauseEBOX'} ,FALSE, FALSE, 3); - $MediaAreaButtonsHBox->pack_start($GTKS{'CTRLS'}->{'BtnNextEBOX'} ,FALSE, FALSE, 3); -# $MediaAreaButtonsHBox->show_all; + ############################################################################# + # Volume Slider stuff... + my $theVolAdj = Gtk2::Adjustment->new(0, 0, 101, 1.0, 1.0, 1.0); + $theVolAdj->signal_connect(value_changed => \&changeAudioVolume, $theVolAdj); + $GTKS{'CTRLS'}{'VolumeScaler'}{'EBOX'} = Gtk2::EventBox->new; + $GTKS{'CTRLS'}{'VolumeScaler'}{'EBOX'}->set_size_request(128,32); + $GTKS{'CTRLS'}{'VolumeScaler'}{'HSCALE'} = Gtk2::HScale->new($theVolAdj); + $GTKS{'CTRLS'}{'VolumeScaler'}{'HSCALE'}->set_update_policy('continuous'); + $GTKS{'CTRLS'}{'VolumeScaler'}{'HSCALE'}->set_digits(0); + $GTKS{'CTRLS'}{'VolumeScaler'}{'HSCALE'}->set_draw_value(FALSE); + $GTKS{'CTRLS'}{'VolumeScaler'}{'HSCALE'}->set_value($PRESISTENT{'AudioVolume'}); + $GTKS{'CTRLS'}{'VolumeScaler'}{'EBOX'}->add($GTKS{'CTRLS'}{'VolumeScaler'}{'HSCALE'}); + $GTKS{'CTRLS'}{'VolumeScaler'}{'EBOX'}->show; + $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'EBOX'} = Gtk2::EventBox->new; + $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'EBOX'}->set_size_request(32,32); + setVolumeICON($PRESISTENT{'AudioVolume'},"initGFX"); + $GTKS{'CTRLS'}{'VolumeScaler'}{'MainHBOX'} = Gtk2::HBox->new(FALSE, 0); + $GTKS{'CTRLS'}{'VolumeScaler'}{'MainHBOX'}->pack_start($GTKS{'CTRLS'}{'VolumeScaler'}{'EBOX'}, FALSE, FALSE, 3); + $GTKS{'CTRLS'}{'VolumeScaler'}{'MainHBOX'}->pack_start($GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'EBOX'}, FALSE, FALSE, 3); + $GTKS{'CTRLS'}{'VolumeScaler'}{'MainHBOX'}->show_all; + # Volume Slider stuff. + ############################################################################# + $GTKS{'CTRLS'}{'MediaButtons'}{'MainHBOX'} = Gtk2::HBox->new(FALSE, 0); + $GTKS{'CTRLS'}{'MediaButtons'}{'MainHBOX'}->pack_start($GTKS{'CTRLS'}->{'BtnPreviousEBOX'} ,FALSE, FALSE, 3); + $GTKS{'CTRLS'}{'MediaButtons'}{'MainHBOX'}->pack_start($GTKS{'CTRLS'}->{'BtnPlayPauseEBOX'} ,FALSE, FALSE, 3); + $GTKS{'CTRLS'}{'MediaButtons'}{'MainHBOX'}->pack_start($GTKS{'CTRLS'}->{'BtnNextEBOX'} ,FALSE, FALSE, 3); + + + + + $GTKS{'CTRLS'}{'CONTROLSTRIP'}{'MainHBOX'} = Gtk2::HBox->new(FALSE, 0); + $GTKS{'CTRLS'}{'CONTROLSTRIP'}{'MainHBOX'}->pack_start($GTKS{'CTRLS'}{'MediaButtons'}{'MainHBOX'} ,FALSE, FALSE, 3); + $GTKS{'CTRLS'}{'CONTROLSTRIP'}{'MainHBOX'}->pack_end($GTKS{'CTRLS'}{'VolumeScaler'}{'MainHBOX'} ,FALSE, FALSE, 3); +# $GTKS{'CTRLS'}{'CONTROLSTRIP'}{'MainHBOX'}->show_all; $GTKS{'MainVBox'}->pack_start($mTPMainMediaEBOX,TRUE, TRUE, 0); $GTKS{'MainVBox'}->pack_start($GTKS{'CTRLS'}{'MAIN'}, FALSE, FALSE, 0); $GTKS{'CTRLS'}{'MainVBox'}->pack_start($MTime_HBox, FALSE, FALSE, 0); - $GTKS{'CTRLS'}{'MainVBox'}->pack_start($MediaAreaButtonsHBox,FALSE, FALSE, 2); + $GTKS{'CTRLS'}{'MainVBox'}->pack_start($GTKS{'CTRLS'}{'CONTROLSTRIP'}{'MainHBOX'},FALSE, FALSE, 2); $GTKS{'MainAppWindow'}->add($GTKS{'MainVBox'}); @@ -430,7 +459,7 @@ sub handleTheLocalSocket { appDBugLog("INITAL MEDIA:$PlayerStatus{'initialMediaID'} $PlayerStatus{'initialMediaType'}"); if ($PlayerStatus{'currentMediaType'} eq "FILE") { appCOM("HELLO|$PlayerStatus{'currentMediaID'}|FILE|"); - appCOM("SET|AUDIOVOLUME|75|"); + appCOM("SET|AUDIOVOLUME|$PRESISTENT{'AudioVolume'}|"); appDBugLog("MPCMD|PLAYMEDIA|$PlayerStatus{'currentMediaID'}|FILE|$PlayerStatus{'currentMediaSeek'}|$StartPaused|"); @@ -438,7 +467,7 @@ sub handleTheLocalSocket { } else { appCOM("HELLO|"); - appCOM("SET|AUDIOVOLUME|75|"); + appCOM("SET|AUDIOVOLUME|$PRESISTENT{'AudioVolume'}|"); } @@ -739,6 +768,45 @@ sub doLocalQuickie { ################################################################################################################################# # various GUI event stuff.... +sub setVolumeICON { + my $volume = sanitizer("anumazlc",$_[0]); + my $icon; + if ($_[1] =~ /initGFX/) { + $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFXM'} = Gtk2::Image->new_from_pixbuf(Gtk2::Gdk::Pixbuf->new_from_file("$theSHAREDIR/gfx/default/audio_vol_m_32.png"));$GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFXM'}->set_size_request(32,32); + $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX20'} = Gtk2::Image->new_from_pixbuf(Gtk2::Gdk::Pixbuf->new_from_file("$theSHAREDIR/gfx/default/audio_vol_20_32.png"));$GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX20'}->set_size_request(32,32); + $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX40'} = Gtk2::Image->new_from_pixbuf(Gtk2::Gdk::Pixbuf->new_from_file("$theSHAREDIR/gfx/default/audio_vol_40_32.png"));$GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX40'}->set_size_request(32,32); + $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX60'} = Gtk2::Image->new_from_pixbuf(Gtk2::Gdk::Pixbuf->new_from_file("$theSHAREDIR/gfx/default/audio_vol_60_32.png"));$GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX60'}->set_size_request(32,32); + $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX80'} = Gtk2::Image->new_from_pixbuf(Gtk2::Gdk::Pixbuf->new_from_file("$theSHAREDIR/gfx/default/audio_vol_80_32.png"));$GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX80'}->set_size_request(32,32); + $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX100'} = Gtk2::Image->new_from_pixbuf(Gtk2::Gdk::Pixbuf->new_from_file("$theSHAREDIR/gfx/default/audio_vol_100_32.png"));$GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'GFX100'}->set_size_request(32,32); + } + if (($volume eq 0) or ($volume eq "m")) {$icon = "GFXM";} + elsif ($volume <= 20) {$icon = "GFX20";} + elsif ($volume <= 40) {$icon = "GFX40";} + elsif ($volume <= 60) {$icon = "GFX60";} + elsif ($volume <= 80) {$icon = "GFX80";} + elsif ($volume eq 100) {$icon = "GFX100";} + else {appDBugLog("Something is wrong with the '$volume' value in setVolumeICON!");} + if ($icon =~ /GFX/) { + if ($GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'CURRENT'} =~ /GFX/) { + $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'EBOX'}->remove($GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{$GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'CURRENT'}}); + } + $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'CURRENT'} = $icon; + $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'EBOX'}->add($GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{$icon}); + $GTKS{'CTRLS'}{'VolumeScaler'}{'IconBtn'}{'EBOX'}->show_all; + } +} + +sub changeAudioVolume { + if ($GTKS{'CTRLS'}{'VolumeScaler'}{'HSCALE'}) { + my $ValueFromScaler = sprintf("%d",$GTKS{'CTRLS'}{'VolumeScaler'}{'HSCALE'}->get_value); + if (($ValueFromScaler >= 0) and ($ValueFromScaler <= 100)) { + $PRESISTENT{'AudioVolume'} = $ValueFromScaler; + appDBugLog("MANUAL VOLUME CHANGE ($PRESISTENT{'AudioVolume'})"); + setVolumeICON($PRESISTENT{'AudioVolume'},0); + appCOM("SET|AUDIOVOLUME|$PRESISTENT{'AudioVolume'}|"); + } + } +} sub eventBtnClickPlayPause { appDBugLog("Clicked: Play/Pause"); @@ -795,6 +863,21 @@ sub keyPressHandler { } elsif (($keyVal eq 70) or ($keyVal eq 102)) {# Fullscreen toggler &toggleFullScreen; } +#elsif ($keyVal eq 65455) {# Audio Volume DOWN +# my $changeVolume = ($PRESISTENT{'AudioVolume'} - 5); +# if ($changeVolume < 0) {$changeVolume = 0;} +# if ($changeVolume ne $PRESISTENT{'AudioVolume'}) { +# $PRESISTENT{'AudioVolume'} = $changeVolume; +# &changeAudioVolume; +# } +# } elsif ($keyVal eq 65450) {# Audio Volume UP +# my $changeVolume = ($PRESISTENT{'AudioVolume'} + 5); +# if ($changeVolume > 100) {$changeVolume = 100;} +# if ($changeVolume ne $PRESISTENT{'AudioVolume'}) { +# $PRESISTENT{'AudioVolume'} = $changeVolume; +# &changeAudioVolume; +# } +# } return FALSE; } -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/mteleplayer.git