[X2Go-Commits] [mteleplayer] 07/29: GUI and keyb control improvements + cleanups

git-admin at x2go.org git-admin at x2go.org
Fri Aug 29 21:12:01 CEST 2014


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch gzng
in repository mteleplayer.

commit 979582b0f55f70e4bec08156605b04b78bb3d426
Author: gznget <opensource at gznianguan.com>
Date:   Mon Jun 30 15:42:23 2014 +0200

    GUI and keyb control improvements + cleanups
---
 .../mteleplayer/bin/mteleplayer_clientside         |  143 ++++++++++++++++----
 serverside/bin/mteleplayer                         |   16 +++
 2 files changed, 133 insertions(+), 26 deletions(-)

diff --git a/clientside/lib/telekinesis/client/applications/mteleplayer/bin/mteleplayer_clientside b/clientside/lib/telekinesis/client/applications/mteleplayer/bin/mteleplayer_clientside
index 3cf427a..1fadc8d 100755
--- a/clientside/lib/telekinesis/client/applications/mteleplayer/bin/mteleplayer_clientside
+++ b/clientside/lib/telekinesis/client/applications/mteleplayer/bin/mteleplayer_clientside
@@ -95,7 +95,6 @@ $ENV{'MPSLAVEFIFOPATH'} = $SlaveFIFO;
 $ENV{'MTPSES_LOCALDATA'} = $LocalAppDataDIR;
 $ENV{'MTPC_SHAREPATH'} = $theSHAREDIR;
 my $myHomeDir = $ENV{'MTPC_HOMEPATH'};
-my $BlackoutFile = "$theSHAREDIR/blk.mpg";
 
 
 my $LocalSocket;
@@ -110,13 +109,17 @@ if (-S $TeKiLSockPath) {
 $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;
+my %mpState;$mpState{'MediaERROR'} = 0;$mpState{'FakeFS'} = 0;$mpState{'mediaPos'} = 0; $mpState{'mediaLength'} = 0;$mpState{'paused'} = 0;
+$mpState{'noshow'} = 1;
 $mpState{'mute'} = 0;
 $mpState{'volume'} = 0;# Change this to get from server side!
 $mpState{'osd'} = 0; 
 $mpState{'LASTINPUT'} = "";$mpState{'prevSecond'} = 0;
 ###########################33
-
+# INIT MEDIA INFO
+my %MediaINFO;
+setMediaInfo(0);
+# INIT MEDIA INFO
 ##########################
 $sstatusi{'lastCOMtime'} = (time()+2);
 $TnW{'timeoutRound'} = Glib::Timeout->add (1000, sub {appCOM("YO!");if ($sstatusi{'lastCOMtime'} < (time()-2)) {&doSelfTerminate;}1;});
@@ -278,8 +281,12 @@ if ($1 =~ /^MPCMD\|PLAYMEDIA\|([0-9a-zA-Z]{24,64})\|([A-Z]{3,4})\|(\d*)\|(\d*)\|
     appDBugLog("	FILE:$theMediaFilePath");
     if (-e $theMediaFilePath) {
       appDBugLog("		THAT FILE EXISTS!!");
-      mpCMD("loadfile $BlackoutFile");# just to get rid of the "old" file if there is one...
+      setMediaInfo(0);
+      $mpState{'noshow'} = 1;
+      overlayStateChange();
       mpCMD("loadfile $theMediaFilePath");
+      if ($mpState{'FakeFS'} ne 1) {mpCMD("osd 0");}
+      mpCMD("volume $mpState{'volume'} 1");
       mpCMD("pausing pause");# Load into a paused state 
       if ($StartSeek > 0) {
         mpCMD("seek $StartSeek 2");
@@ -295,6 +302,8 @@ if ($1 =~ /^MPCMD\|PLAYMEDIA\|([0-9a-zA-Z]{24,64})\|([A-Z]{3,4})\|(\d*)\|(\d*)\|
   $window->resize($sstatusi{'FinalPosW'},$sstatusi{'FinalPosH'});
   $window->move($sstatusi{'FinalPosX'},$sstatusi{'FinalPosY'});
   overlayStateChange();
+} elsif ($1 =~ /^MPCMD\|FRAMESTEP\|/) {
+  mpCMD("frame_step");
 } elsif ($1 =~ /^MPCMD\|PAUSE\|/) {
   mpCMD("pausing pause");
 } elsif ($1 =~ /^MPCMD\|PLAY\|/) {
@@ -304,6 +313,15 @@ if ($1 =~ /^MPCMD\|PLAYMEDIA\|([0-9a-zA-Z]{24,64})\|([A-Z]{3,4})\|(\d*)\|(\d*)\|
   if ($1 <= $mpState{'mediaLength'}) {
     mpCMD("seek $1 2");
   }
+} elsif ($1 =~ /^MPCMD\|KEYSEEK\|(\-?\d*)\|/) {
+  my $newPos = ($mpState{'mediaPos'}+$1);
+  if ($newPos < 0) {$newPos = 0;}
+  if ($newPos > ($mpState{'mediaLength'}-1)) {
+    mpCMD("pausing frame_step");
+    inList2Play("next");
+  } else {
+    mpCMD("seek $newPos 2");
+  }
 }
 
 
@@ -391,11 +409,18 @@ sub overlayStateChange {
 
             $newXPos{'W'} = $sstatusi{'xposW'};
             $newXPos{'H'} = $sstatusi{'xposH'};
+
             if (($sstatusi{'X2GoWVisible'} eq 1) and ($sstatusi{'xposV'} eq 1)) {
-              $newXPos{'V'} = 1;	  
+              if ($mpState{'noshow'} eq 1) {
+                $newXPos{'V'} = 0;
+              } else {
+                $newXPos{'V'} = 1;	  
+              }
             } else {
               $newXPos{'V'} = 0;
             }
+
+
             if (($newXPos{'X'} ne $sstatusi{'FinalPosX'}) or ($newXPos{'Y'} ne $sstatusi{'FinalPosY'})) {
               $sstatusi{'FinalPosX'} = $newXPos{'X'};
               $sstatusi{'FinalPosY'} = $newXPos{'Y'};
@@ -411,7 +436,7 @@ sub overlayStateChange {
             }
 
 
-            if ($newXPos{'V'} ne $sstatusi{'FinalPosV'}) {
+            if (($newXPos{'V'} ne $sstatusi{'FinalPosV'}) or ($mpState{'noshow'} eq 1)) {
 	      $sstatusi{'FinalPosV'} = $newXPos{'V'};
               if ($newXPos{'V'} eq 1) {
 		$window->show_all();
@@ -477,22 +502,47 @@ sub watch_mplayerOutput {
     $line =~ s/[\n\r\t]//g;
 ###############
 # Trigers...
-     if ($line =~ /^Starting playback\.\.\./) {#       mpCMD("get_file_name");
-       if ($mpState{'FakeFS'} ne 1) {mpCMD("osd 0");}
-         mpCMD("get_time_length");
-         mpCMD("volume $mpState{'volume'} 1");
-         if ($mpState{'notInitial'} ne 1) {
-           $mpState{'notInitial'} = 1;
-           appCOM("GIVEMEFIRSTMEDIATOINIT");
-         }
-     }
+#     if ($line =~ /^Starting playback\.\.\./) {#       mpCMD("get_file_name");
+#       if ($mpState{'FakeFS'} ne 1) {mpCMD("osd 0");}
+#         mpCMD("get_time_length");
+#         mpCMD("volume $mpState{'volume'} 1");
+#         if ($mpState{'notInitial'} ne 1) {
+#           $mpState{'notInitial'} = 1;
+#           appCOM("GIVEMEFIRSTMEDIATOINIT");
+#         }
+#     }
 # Triggers 
 ###############
 # ANSWERS
-     if ($line =~ /^ANS\_FILENAME\=\'(.*)\'$/) {
+     if ($line =~ /^ID/) {
+     #############################
+     # GET MEDIA INFO 
+       if ($mediaINFO{'MEDIAINFOSET'} ne 1) {
+         if ($line =~ /^ID_VIDEO_FORMAT\=(.*)$/) {
+           $mediaINFO{'VIDEOFORMAT'} = $1;
+         } elsif ($line =~ /^ID_AUDIO_FORMAT\=(.*)$/) {
+           $mediaINFO{'AUDIOFORMAT'} = $1;
+         } elsif ($line =~ /^ID_LENGTH\=([\.\d]*)$/) {
+           $mediaINFO{'LENGHT'} = $1;
+         } elsif ($line =~ /^ID_SEEKABLE\=1$/) { 
+           $mediaINFO{'SEEKABLE'} = 1;
+         } elsif ($line =~ /^ID_FILENAME\=(.*)$/) { 
+           $mediaINFO{'FILENAME'} = $1;
+         }
+       }
+     # GET MEDIA INFO
+     #############################
+     } elsif ($line =~ /^Playing(.*)$/) {  
+       appDBugLog("SET X:$1:X");
+       if ($1 =~ /mteleplayer\/blk\.mpg\.$/) {$mediaINFO{'AXEPTINFO'} = 0;}
+       else {$mediaINFO{'AXEPTINFO'} = 1;}
+     } elsif (($line =~ /======================================/) and ($mediaINFO{'MEDIAINFOSET'} ne 1)) {
+       appDBugLog("SET STATUS!");
+       setMediaInfo(1);# Trigger setMediaInfo DONE...
+     } elsif ($line =~ /^ANS\_FILENAME\=\'(.*)\'$/) {
        $mpState{'mediaFileName'} = $1;#       print "File: $1\n";
      } elsif ($line =~ /^ANS\_LENGTH\=([\d\.]*)$/) {
-       $mpState{'mediaLength'} = $1;
+#       $mpState{'mediaLength'} = $1;
      } elsif ($line =~ /^Cache fill:([\ \d\.\%]*)\((\d*) bytes\)/) {
        appDBugLog("Cache fill! [$1]	[$2]");
        my $cacheP = $1;$cacheP =~ s/\ //g;
@@ -510,24 +560,22 @@ sub watch_mplayerOutput {
        if ($newSecond ne $mpState{'prevSecond'}) {
          $mpState{'prevSecond'} = $newSecond;
          doReportTimePos($newSecond,$mpState{'mediaLength'});
-         if ($mpState{'mediaLength'} > 1) {
-           if (($mpState{'mediaLength'} - 1)  <= $mpState{'mediaPos'}) {
+	 appDBugLog("MP: :$mpState{'mediaLength'}:	:$mpState{'mediaPos'}:");
+#         if ($mpState{'mediaLength'} > 0) {
+           if (($mpState{'mediaLength'}-1) <=  $mpState{'mediaPos'}) {
 	     appDBugLog("LOADPOINT 1!	$mpState{'mediaLength'}	$mpState{'mediaPos'}");
              mpCMD("pausing frame_step");  
 	     inList2Play("next");               
            }
-         } else {
-           appDBugLog("LOADPOINT 3!");
-	   mpCMD("pausing loadfile $BlackoutFile");
-         }
+#         } 
        }
      } elsif ($line =~ /^Failed to open LIRC support/)  {#DO NOTHING!!
      } elsif (($line =~ /^Failed\ to\ open.*/) or ($line =~ /^File\ not\ found.*/)) {    
        appDBugLog("NOT A FILE!\n	$line");
-       mpCMD("pausing loadfile $BlackoutFile");
+# Do something HERE?
      } elsif ($line =~ /^Failed\ to\ recognize\ file\ format.*/) {
        appDBugLog("NOT A MEDIA FILE!\n	$line\n");
-       mpCMD("pausing loadfile $BlackoutFile");
+# DO SOMETHING HERE?
      } else {
        appDBugLog("UNCUAGHT:\n	$line\n");
      }
@@ -544,10 +592,53 @@ sub mpCMD {
 }
 
 
-
+sub setMediaInfo {
+       appDBugLog("SET setMediaINFO :$_[0]:");
+  if ($_[0] eq 0) {
+    $mediaINFO{'AUDIOFORMAT'} = 0;
+    $mediaINFO{'VIDEOFORMAT'} = 0;
+    $mediaINFO{'LENGHT'} = 0;
+    $mediaINFO{'SEEKABLE'} = 0;
+    $mediaINFO{'FILENAME'} = 0;
+    $mediaINFO{'ONLYAUDIO'} = 0;
+    $mediaINFO{'MEDIAINFOSET'} = 0;
+  } elsif ($_[0] eq 1) {
+    appDBugLog("SET setMediaINFO STEP 1");
+    foreach my $key (keys %mediaINFO) {
+          appDBugLog("SET\t$key	$mediaINFO{$key}");
+    }
+    unless ($mediaINFO{'FILENAME'} =~ /mteleplayer\/blk\.mpg$/) {
+      if ($mediaINFO{'VIDEOFORMAT'}) {$mediaINFO{'ONLYAUDIO'} = 1;}
+      $mpState{'mediaLength'} = $mediaINFO{'LENGHT'};
+      if ($mediaINFO{'VIDEOFORMAT'} eq 0) {
+        $mpState{'noshow'} = 1;
+      } else {
+        $mpState{'noshow'} = 0;
+      }
+      
+      doReportTimePos("0.00",$mpState{'mediaLength'});
+      $mediaINFO{'MEDIAINFOSET'} = 1;
+    } else {
+#      setMediaInfo(0);
+    }
+    overlayStateChange();
+  } elsif ((uc($_[0]) =~ /^([A-Z]{3,})$/) and (length($_[1]) > 0)) {
+    $mediaINFO{$1} = $_[1];
+  }
+}
 
 # MPLAYER STUFF
 ######################################################################
+sub shouldWeBeVisible {
+  my $visible = 1;
+  if ($mpState{'noshow'} eq 1) {$visible = 0;}
+
+  if ($visible eq 1) {
+    return 1;
+  } else {
+    return 0;
+  }
+}
 
 sub windowEvent { 
   my ($mw, $event) = @_; 
diff --git a/serverside/bin/mteleplayer b/serverside/bin/mteleplayer
index e529b89..b69f01d 100755
--- a/serverside/bin/mteleplayer
+++ b/serverside/bin/mteleplayer
@@ -263,6 +263,7 @@ sub initMainWindow {
     $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'}->can_focus(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'});
@@ -359,6 +360,7 @@ sub seekTimeScaler {
       $GTKS{'seekTimeScaler'}->set_update_policy('discontinuous');
       $GTKS{'seekTimeScaler'}->set_digits(0);
       $GTKS{'seekTimeScaler'}->set_draw_value(FALSE);
+      $GTKS{'seekTimeScaler'}->can_focus(0);
       $GTKS{'seekTimeScalerEBox'}->add($GTKS{'seekTimeScaler'});
       $GTKS{'seekTimeScaler'}->show;
     }
@@ -911,6 +913,20 @@ sub keyPressHandler {
     changeAudioVolume("down");
   } elsif ($keyVal eq 65450) {# Audio Volume UP
     changeAudioVolume("up");
+  } elsif ($keyVal eq 65363) {# SEEK +10s or frame step 
+   if ($modMasks{'ctrl'}) {
+     appCOM("MPCMD|FRAMESTEP|");
+     appDBugLog("FRAMESTEP");
+   } else {
+     appDBugLog("KEYSEEK +10");
+     appCOM("MPCMD|KEYSEEK|10|");
+   }
+  } elsif ($keyVal eq 65361) {# SEEK -10s 
+    appCOM("MPCMD|KEYSEEK|-10|");
+  } elsif ($keyVal eq 65362) {# SEEK +60s 
+    appCOM("MPCMD|KEYSEEK|60|");
+  } elsif ($keyVal eq 65364) {# SEEK -60s 
+    appCOM("MPCMD|KEYSEEK|-60|");
   }
   return FALSE; 
 }

--
Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/mteleplayer.git


More information about the x2go-commits mailing list