nsm-proxy: Add more instructions to GUI.
This commit is contained in:
parent
b48ca7c44b
commit
468c969162
|
@ -7,40 +7,39 @@ class NSM_Proxy_UI {open
|
||||||
Function {make_window()} {open
|
Function {make_window()} {open
|
||||||
} {
|
} {
|
||||||
Fl_Window {} {
|
Fl_Window {} {
|
||||||
label {NSM Proxy} open selected
|
label {NSM Proxy} open
|
||||||
xywh {106 75 485 475} type Double visible
|
xywh {1011 106 490 665} type Double color 47 labelcolor 55 visible
|
||||||
} {
|
} {
|
||||||
Fl_Box {} {
|
Fl_Box {} {
|
||||||
label {Command-line options are incompatible with robust session management, so the NSM protocol does not support them. This proxy exists to allow programs which require command-line options to be included in an NSM session. Be warned that referring to files outside of the session directory will impair your ability to reliably archive and transport sessions. Patching the program to use NSM natively will result in a better experience.
|
label {Command-line options are incompatible with robust session management for a variety of reasons, so the NSM server does not support them directly. This proxy exists to allow programs which require command-line options to be included in an NSM session. Be warned that referring to files outside of the session directory will impair your ability to reliably archive and transport sessions. Patching the program to use NSM natively will result in a better experience.
|
||||||
|
|
||||||
The program will be started with its current directory being a uniquely named directory under the current session directory. It is recommended that you only refer to files in the current directory.
|
The program will be started with its current directory being a uniquely named directory under the current session directory. It is recommended that you only refer to files in the current directory.
|
||||||
|
} selected
|
||||||
The environment variables $NSM_CLIENT_ID and $NSM_SESSION_NAME will contain the unique client ID (suitable for use as e.g. a JACK client name) and the display name for the session, respectively.}
|
xywh {15 11 460 233} box BORDER_BOX color 41 labelfont 8 labelcolor 55 align 128
|
||||||
xywh {15 14 455 286} box ROUNDED_BOX color 64 labelcolor 55 align 128
|
|
||||||
}
|
}
|
||||||
Fl_File_Input executable_input {
|
Fl_File_Input executable_input {
|
||||||
label {Executable: }
|
label {Executable: }
|
||||||
xywh {115 316 350 33}
|
xywh {115 262 350 33}
|
||||||
}
|
}
|
||||||
Fl_Input arguments_input {
|
Fl_Input arguments_input {
|
||||||
label {Arguments:}
|
label {Arguments:}
|
||||||
xywh {115 358 350 28}
|
xywh {115 414 350 28}
|
||||||
}
|
}
|
||||||
Fl_Input label_input {
|
Fl_Input label_input {
|
||||||
label {Label:}
|
label {Label:}
|
||||||
xywh {115 396 350 28}
|
xywh {115 452 350 28}
|
||||||
}
|
}
|
||||||
Fl_Return_Button start_button {
|
Fl_Return_Button start_button {
|
||||||
label Start
|
label Start
|
||||||
xywh {375 435 88 25}
|
xywh {380 625 88 25}
|
||||||
}
|
}
|
||||||
Fl_Button kill_button {
|
Fl_Button kill_button {
|
||||||
label Kill
|
label Kill
|
||||||
xywh {290 435 80 25} color 72
|
xywh {295 625 80 25} color 72 hide
|
||||||
}
|
}
|
||||||
Fl_Choice save_signal_choice {
|
Fl_Choice save_signal_choice {
|
||||||
label {Save Signal:} open
|
label {Save Signal:} open
|
||||||
tooltip {Some programs may respond to a certain Unix signal by saving their state to the file specified on the command-line. Usually if this is the case, the signal will be SIGUSR1. However, if you pick the wrong one, the client will likely respond as if to KILL.} xywh {115 435 170 25} down_box BORDER_BOX
|
xywh {110 625 170 25} down_box BORDER_BOX
|
||||||
} {
|
} {
|
||||||
MenuItem {} {
|
MenuItem {} {
|
||||||
label None
|
label None
|
||||||
|
@ -59,6 +58,14 @@ The environment variables $NSM_CLIENT_ID and $NSM_SESSION_NAME will contain the
|
||||||
xywh {30 30 40 24}
|
xywh {30 30 40 24}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Fl_Box {} {
|
||||||
|
label {The environment variables $NSM_CLIENT_ID and $NSM_SESSION_NAME will contain the unique client ID (suitable for use as e.g. a JACK client name) and the display name for the session, respectively.}
|
||||||
|
xywh {15 312 460 87} box BORDER_BOX color 41 labelfont 8 labelcolor 55 align 128
|
||||||
|
}
|
||||||
|
Fl_Box {} {
|
||||||
|
label {Some (very few) programs may respond to a specific Unix signal by somehow saving their state. If 'Save Signal' is set to something other than 'None', then NSM Proxy will deliver the specified signal to the proxied process upon an NSM 'Save' event. Most programs will treat these signals just like SIGTERM and die. You have been warned.}
|
||||||
|
xywh {15 497 460 114} box BORDER_BOX color 41 labelfont 8 labelcolor 55 align 128
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,7 +79,7 @@ public:
|
||||||
::kill( _pid, SIGTERM );
|
::kill( _pid, SIGTERM );
|
||||||
}
|
}
|
||||||
|
|
||||||
void start ( const char *executable, const char *arguments )
|
bool start ( const char *executable, const char *arguments )
|
||||||
{
|
{
|
||||||
if ( _executable )
|
if ( _executable )
|
||||||
free( _executable );
|
free( _executable );
|
||||||
|
@ -89,11 +89,15 @@ public:
|
||||||
_executable = strdup( executable );
|
_executable = strdup( executable );
|
||||||
_arguments = strdup( arguments );
|
_arguments = strdup( arguments );
|
||||||
|
|
||||||
start();
|
return start();
|
||||||
}
|
}
|
||||||
|
|
||||||
void start ( void )
|
bool start ( void )
|
||||||
{
|
{
|
||||||
|
if ( _pid )
|
||||||
|
/* already running */
|
||||||
|
return true;
|
||||||
|
|
||||||
int pid;
|
int pid;
|
||||||
if ( ! (pid = fork()) )
|
if ( ! (pid = fork()) )
|
||||||
{
|
{
|
||||||
|
@ -119,6 +123,7 @@ public:
|
||||||
|
|
||||||
_pid = pid;
|
_pid = pid;
|
||||||
|
|
||||||
|
return _pid > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void save_signal ( int s )
|
void save_signal ( int s )
|
||||||
|
@ -373,11 +378,19 @@ osc_show_gui ( const char *path, const char *types, lo_arg **argv, int argc, lo_
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
hide_gui ( void )
|
||||||
|
{
|
||||||
|
if ( gui_pid )
|
||||||
|
{
|
||||||
|
kill( gui_pid, SIGTERM );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
osc_hide_gui ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data )
|
osc_hide_gui ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data )
|
||||||
{
|
{
|
||||||
if ( gui_pid )
|
hide_gui();
|
||||||
kill( gui_pid, SIGTERM );
|
|
||||||
|
|
||||||
lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/nsm/client/gui_is_hidden", "" );
|
lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/nsm/client/gui_is_hidden", "" );
|
||||||
|
|
||||||
|
@ -471,7 +484,10 @@ osc_save_signal ( const char *path, const char *types, lo_arg **argv, int argc,
|
||||||
int
|
int
|
||||||
osc_start ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data )
|
osc_start ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data )
|
||||||
{
|
{
|
||||||
nsm_proxy->start( &argv[0]->s, &argv[1]->s );
|
if ( nsm_proxy->start( &argv[0]->s, &argv[1]->s ) );
|
||||||
|
{
|
||||||
|
hide_gui();
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -573,6 +589,8 @@ void handle_sigchld ( )
|
||||||
{
|
{
|
||||||
lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/nsm/client/gui_is_hidden", "" );
|
lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/nsm/client/gui_is_hidden", "" );
|
||||||
|
|
||||||
|
gui_pid = 0;
|
||||||
|
|
||||||
/* don't care... */
|
/* don't care... */
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue