示例#1
0
        public override void Initialize()
        {
            Tab = new ThemedTab {
                Text = "Devices"
            };
            Content = new Widget {
                Layout = new VBoxLayout(),
                Nodes  =
                {
                    (mainToolbar                     = new RemoteScriptingWidgets.Toolbar()),
                    new Widget {
                        Layout = new HBoxLayout(),
                        Nodes  =
                        {
                            (devicesScrollView       = new ThemedScrollView {
                                MinMaxWidth          =                                   300,
                                TabTravesable        = new TabTraversable()
                            }),
                            (deviceWidgetPlaceholder = new Widget()
                            {
                                Layout               = new HBoxLayout()
                            })
                        }
                    }
                }
            };
            RefreshMainToolbar();
            Content.AddChangeWatcher(
                () => CompiledAssembly.Instance,
                _ => {
                RefreshMainToolbar();
            }
                );

            void SelectDeviceBasedOnMousePosition()
            {
                devicesScrollView.SetFocus();
                var index = (devicesScrollView.Content.LocalMousePosition().Y / rowHeight).Floor();

                if (index < devices.Count)
                {
                    SelectDevice(index);
                }
            }

            var mouseDownGesture = new ClickGesture(0);

            mouseDownGesture.Began += SelectDeviceBasedOnMousePosition;
            devicesScrollView.Gestures.Add(mouseDownGesture);
            devicesScrollView.Content.CompoundPresenter.Insert(0, new SyncDelegatePresenter <Widget>(w => {
                w.PrepareRendererState();
                Renderer.DrawRect(
                    0, rowHeight * selectedDeviceIndex,
                    w.Width, rowHeight * (selectedDeviceIndex + 1),
                    devicesScrollView.IsFocused() ? Theme.Colors.SelectedBackground : Theme.Colors.SelectedInactiveBackground
                    );
            }));
        }
示例#2
0
        public override void Initialize()
        {
            Tab = new ThemedTab {
                Text = "Assembly"
            };
            RemoteScriptingWidgets.Toolbar toolbar;
            Content = new Widget {
                Layout = new VBoxLayout(),
                Nodes  =
                {
                    (toolbar            = new RemoteScriptingWidgets.Toolbar()),
                    (assemblyBuilderLog = new RemoteScriptingWidgets.TextView())
                }
            };
            toolbar.Content.Nodes.AddRange(
                buildAssemblyButton = new ToolbarButton("Build Assembly")
            {
                Clicked = () => BuildAssembly(requiredBuildGame: false)
            },
                buildGameAndAssemblyButton = new ToolbarButton("Build Game and Assembly")
            {
                Clicked = () => BuildAssembly()
            }
                );

            var preferences           = ProjectPreferences.Instance;
            var arePreferencesCorrect =
                !string.IsNullOrEmpty(preferences.ScriptsPath) &&
                !string.IsNullOrEmpty(preferences.ScriptsAssemblyName) &&
                !string.IsNullOrEmpty(preferences.RemoteStoragePath);

            if (!arePreferencesCorrect)
            {
                buildAssemblyButton.Enabled        = false;
                buildGameAndAssemblyButton.Enabled = false;
                SetStatusAndLog("Preferences is invalid.");
            }
        }