From: Hans-Dieter K. <fs...@us...> - 2007-04-09 22:39:37
|
Update of /cvsroot/xine/xine-ui/src/xitk In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv21446/xitk Modified Files: common.h event.c kbindings.h kbindings.c stdctl.c Log Message: Stdctl extensions from Richard van Paasen: A line of text can be displayed on OSD using the new OSDWriteText command. A parameter (numeric or alphanum) can now be given with any command. Index: common.h =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/common.h,v retrieving revision 1.83 retrieving revision 1.84 diff -u -r1.83 -r1.84 --- common.h 24 Dec 2005 09:56:24 -0000 1.83 +++ common.h 9 Apr 2007 22:39:35 -0000 1.84 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2004 the xine project + * Copyright (C) 2000-2007 the xine project * * This file is part of xine, a unix video player. * @@ -343,7 +343,12 @@ int set; int arg; } numeric; - + + struct { + int set; + char *arg; + } alphanum; + int eventer_sticky; int stream_info_auto_update; Index: event.c =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/event.c,v retrieving revision 1.282 retrieving revision 1.283 diff -u -r1.282 -r1.283 --- event.c 29 Oct 2006 04:30:26 -0000 1.282 +++ event.c 9 Apr 2007 22:39:35 -0000 1.283 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2006 the xine project + * Copyright (C) 2000-2007 the xine project * * This file is part of xine, a unix video player. * @@ -906,7 +906,15 @@ case ACTID_OSD_SINFOS: osd_stream_infos(); break; - + + case ACTID_OSD_WTEXT: + if(gGui->alphanum.set) { + osd_display_info("%s", gGui->alphanum.arg); + } else { + osd_display_info(_("No text to display!")); + } + break; + case ACTID_OSD_MENU: oxine_menu(); break; Index: kbindings.h =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/kbindings.h,v retrieving revision 1.59 retrieving revision 1.60 diff -u -r1.59 -r1.60 --- kbindings.h 7 Apr 2007 23:52:56 -0000 1.59 +++ kbindings.h 9 Apr 2007 22:39:35 -0000 1.60 @@ -125,6 +125,7 @@ ACTID_ADDMEDIAMARK, ACTID_SKINDOWNLOAD, ACTID_OSD_SINFOS, + ACTID_OSD_WTEXT, ACTID_FILESELECTOR, ACTID_SUBSELECT, ACTID_SV_SYNC_p, Index: kbindings.c =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/kbindings.c,v retrieving revision 1.134 retrieving revision 1.135 diff -u -r1.134 -r1.135 --- kbindings.c 7 Apr 2007 23:52:56 -0000 1.134 +++ kbindings.c 9 Apr 2007 22:39:35 -0000 1.135 @@ -367,6 +367,8 @@ "StreamInfosShow", ACTID_STREAM_INFOS , "i", KEYMOD_META , 0 , 1}, { "display stream information using OSD", "OSDStreamInfos", ACTID_OSD_SINFOS , "i", KEYMOD_CONTROL , 0 , 0}, + { "display information using OSD", + "OSDWriteText", ACTID_OSD_WTEXT , "VOID", KEYMOD_CONTROL , 0 , 0}, { "show OSD menu", "OSDMenu", ACTID_OSD_MENU , "O", KEYMOD_NOMOD , 0 , 0}, { "enter key binding editor", Index: stdctl.c =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/stdctl.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- stdctl.c 13 Apr 2004 19:55:49 -0000 1.4 +++ stdctl.c 9 Apr 2007 22:39:35 -0000 1.5 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2004 the xine project + * Copyright (C) 2000-2007 the xine project * * This file is part of xine, a unix video player. * @@ -35,6 +35,8 @@ #include "common.h" +#undef DEBUG_STDCTL + extern gGui_t *gGui; extern _panel_t *panel; @@ -52,45 +54,96 @@ fd_set set; struct timeval tv; int secs, last_secs; + char *params; last_secs = -1; + params = NULL; while(gGui->running) { FD_ZERO(&set); FD_SET(stdctl.fd, &set); - + tv.tv_sec = 0; tv.tv_usec = 500000; select(stdctl.fd + 1, &set, NULL, NULL, &tv); - + if(FD_ISSET(stdctl.fd, &set)) { + len = read(stdctl.fd, &c, 255); + if(len > 0) { + c[len - 1] = '\0'; -#if 0 +#ifdef DEBUG_STDCTL fprintf(stdout, "Command Received = '%s'\n", c); #endif - + + /* Handle optional parameter */ + + /* alphanum: separated from the command by a '$' */ + /* syntax: "command$parameter" */ + /* example: "OSDWriteText$Some Information to Display" */ + + gGui->alphanum.set = 0; + params = strchr(c, '$'); + + if(params != NULL) { + + /* parameters available */ + + *params = '\0'; + params++; + + gGui->alphanum.set = 1; + gGui->alphanum.arg = params; + +#ifdef DEBUG_STDCTL + fprintf(stdout, "Command: '%s'\nParameters: '%s'\n", c, params); +#endif + } + + /* numeric: separated from the command by a '#' */ + /* syntax: "command#parameter" */ + /* example: "SetPosition%#99" */ + + gGui->numeric.set = 0; + params = strchr(c, '#'); + + if(params != NULL) { + + /* parameters available */ + + *params = '\0'; + params++; + + gGui->numeric.set = 1; + gGui->numeric.arg = atoi(params); + +#ifdef DEBUG_STDCTL + fprintf(stdout, "Command: '%s'\nParameters: '%d'\n", c, gGui->numeric.arg); +#endif + } + k = kbindings_lookup_action(gGui->kbindings, c); - + if(k) gui_execute_action_id((kbindings_get_action_id(k))); } - + if(panel_is_visible()) xitk_paint_widget_list (panel->widget_list); - + if(len == -1) break; - } if(gui_xine_get_pos_length(gGui->stream, NULL, &secs, NULL)) { + secs /= 1000; - + if (secs != last_secs) { fprintf(stdout, "time: %d\n", secs); fflush(stdout); |