예제 #1
0
        public Client()
        {
            InitializeComponent();

            var transporter = new WebsocketClientTransporter();

            Carrot = new RCPClient();
            Carrot.SetTransporter(transporter);

            Carrot.ParameterAdded += (s, p) =>
            {
                UIParams.Add(p.Id, p);
                label1.Text = UIParams.Count.ToString() + ": " + p.Label;

                p.Updated += P_Updated;

                if (p is BangParameter)
                {
                    FTheBang         = p as BangParameter;
                    FTheBang.OnBang += Client_OnBang;
                }
                else if (p is ImageParameter)
                {
                    var imageParam = p as ImageParameter;
                    using (var stream = new MemoryStream(imageParam.Value))
                    {
                        stream.Seek(0, SeekOrigin.Begin);
                        var img = Image.FromStream(stream);
                        pictureBox1.Image = img;
                    }
                }
            };

            Carrot.ParameterRemoved += (s, p) =>
            {
                if (p is BangParameter)
                {
                    FTheBang.OnBang -= Client_OnBang;
                    FTheBang         = null;
                }
                //remove UI matching p
                UIParams.Remove(p.Id);
            };

            Carrot.StatusChanged = (status, message) =>
            {
                // e.g.:
                switch (status)
                {
                case RcpTypes.ClientStatus.Disconnected: /*show something*/ break;

                case RcpTypes.ClientStatus.Connected: Carrot.Initialize(); break;

                case RcpTypes.ClientStatus.VersionMissmatch: MessageBox.Show(message); break;

                case RcpTypes.ClientStatus.Ok: /*nop*/ break;
                }
            };

            transporter.Connect("127.0.0.1", 10000);
        }
예제 #2
0
        private void button1_Click(object sender, System.EventArgs e)
        {
            var group = FRabbit.CreateGroup("foo");

            var param = FRabbit.CreateNumberParameter <float>("my float", group);

            param.Order         = param.Id;
            param.Widget        = new SliderWidget();
            param.Default       = 7.0f;
            param.Value         = 2.0f;
            param.Minimum       = -10.0f;
            param.Maximum       = 10.0f;
            param.ValueUpdated += (s, a) => label1.Text = param.Value.ToString();

            var nt = FRabbit.CreateNumberParameter <int>("my int", group);

            nt.Value   = 3;
            nt.Minimum = -5;
            nt.Maximum = 5;

            var enm = FRabbit.CreateEnumParameter("my enum", group);

            enm.Entries = new string[3] {
                "aber", "biber", "zebra"
            };
            enm.Default = "biber";
            enm.Value   = "zebra";
            //enm.ValueUpdated += Enm_ValueUpdated;

            var str = FRabbit.CreateStringParameter("my string", group);

            str.Value = "foobar";

            var clr = FRabbit.CreateValueParameter <Color>("ma color", group);

            clr.Value = Color.Red;

            var strarr = FRabbit.CreateArrayParameter <string>("my string array", null, new int[] { 3 });

            strarr.Default = new string[3] {
                "a", "b", "c"
            };
            strarr.Value = new string[3] {
                "aa", "bv", "cc"
            };

            var intarr = FRabbit.CreateArrayParameter <int>("my int array", null, new int[] { 3 });

            intarr.Default = new int[3] {
                1, 2, 4
            };
            intarr.Value = new int[3] {
                4, 5, 6
            };

            FMyBang         = (BangParameter)FRabbit.CreateBangParameter("my bang");
            FMyBang.OnBang += FMyBang_OnBang;

            //enm.Value = "biber";
            //FRabbit.Update();

            //enm.Value = "aber";
            //FRabbit.Update();
        }