Exemple #1
0
        static void StartGui(Connector conn, Settings settings)
        {
            Gui.Start(x => {
            //if changes UI: have to use this
            Action<string, Action<CmdArg>> xRegister = (cmd, a) => conn.Register(cmd, x.InSTAThread(a));
            var help = @"Help:
            Type (messages) to line at bottom of window.
            Commands start with ':'.
            All messages are trimmed by default, so to write ':-)' just write ' :-)'.
            Use tab for command completion.

            :chat                    # show message board
            :server.start <port>     # starts server and DOES NOT connect to it
            :server.stop
            :ip                      # get local IP address(es)
            :wsdl                    # open server with wsdl description of service to access chans
            :connect <host:port>     # connect to a server; default port is " + settings.DefaultServerPort + @"
            :disconnect              # closes client
            :host <port>             # :server.start, :connect
            :join <host> <name>      # :connect <host>, :name <name>
            :name <new name>         # get or set; 'anon' by default
            :down, :d                # scroll to end of message board
            :exit, :quit
            :help, :h                # show this help
            :send <msg>              # send msg as it is; even just whitespace / nothing...
            :text <theText>          # ~= :send <trim($theText)>
                         # wouldn't send nothing

            if line doesn't start with ':': gets translated to: ':text <$line>'
            ";

            xRegister(Cmd.Help, _ => x.SwitchToHelp(help));
            xRegister(Cmd.Chat, _ => x.SwitchToChat());
            xRegister(Cmd.Exit, _ => x.Exit());
            xRegister(Cmd.ScrollDown, _ => x.ScrollToBottom());
            xRegister(Cmd.NotifyError, a => x.ShowError(a.Source, a.Text));
            xRegister(Cmd.NotifySystem, a => x.ShowNotifySystem(a.Source, a.Text));
            xRegister(Cmd.ReceivedMsg, a => x.ShowMessage(a.Source, a.Text));
            xRegister(Cmd.CmdAccepted, a => x.ClearCmdLineIfSame(a));
            xRegister(Cmd.CompletionResponse, a => x.PushCompletion(a, a.Source));

            conn.Alias("d", Cmd.ScrollDown);
            conn.Alias("h", Cmd.Help);
            conn.Alias("quit", Cmd.Exit);

            conn.Run(Cmd.Help);

            x.Command += line => conn.RunOrDefault(Cmd.CmdParseRun, line);
            x.CompletionRequest += line => conn.RunOrDefault(Cmd.CompletionRequest, line);
            x.BoardChanged += () => conn.Run(Cmd.Chat);

            conn.RunOrDefault(Cmd.AfterGuiLoaded);
              });
        }