Пример #1
0
        private void CreateColorControl(String name, int y)
        {
            const int colorSize = 12;

            GroupBox colorGroup = new GroupBox(this);
            colorGroup.SetPosition(10, y);
            colorGroup.SetText(name);
            colorGroup.SetSize(160, 35);
            colorGroup.Name = name + "groupbox";

            ColorDisplay disp = new ColorDisplay(colorGroup);
            disp.Name = name;
            disp.SetBounds(0, 10, colorSize, colorSize);

            TextBoxNumeric numeric = new TextBoxNumeric(colorGroup);
            numeric.Name = name + "Box";
            numeric.SetPosition(105, 7);
            numeric.SetSize(26, 16);
            numeric.SelectAllOnFocus = true;
            numeric.TextChanged += NumericTyped;

            HorizontalSlider slider = new HorizontalSlider(colorGroup);
            slider.SetPosition(colorSize + 5, 10);
            slider.SetRange(0, 255);
            slider.SetSize(80, colorSize);
            slider.Name = name + "Slider";
            slider.ValueChanged += SlidersMoved;
        }
Пример #2
0
        private void UpdateColorControls(String name, Color col, int sliderVal)
        {
            ColorDisplay disp = FindChildByName(name, true) as ColorDisplay;

            disp.Color = col;

            HorizontalSlider slider = FindChildByName(name + "Slider", true) as HorizontalSlider;

            slider.Value = sliderVal;

            TextBoxNumeric box = FindChildByName(name + "Box", true) as TextBoxNumeric;

            box.Value = sliderVal;
        }
Пример #3
0
        private void SlidersMoved(ControlBase control)
        {
            /*
             * HorizontalSlider* redSlider		= gwen_cast<HorizontalSlider>(	FindChildByName( "RedSlider",   true ) );
             * HorizontalSlider* greenSlider	= gwen_cast<HorizontalSlider>(	FindChildByName( "GreenSlider", true ) );
             * HorizontalSlider* blueSlider	= gwen_cast<HorizontalSlider>(	FindChildByName( "BlueSlider",  true ) );
             * HorizontalSlider* alphaSlider	= gwen_cast<HorizontalSlider>(	FindChildByName( "AlphaSlider", true ) );
             */

            HorizontalSlider slider = control as HorizontalSlider;

            if (slider != null)
            {
                SetColorByName(GetColorFromName(slider.Name), (int)slider.Value);
            }

            UpdateControls();
            //SetColor( Gwen::Color( redSlider->GetValue(), greenSlider->GetValue(), blueSlider->GetValue(), alphaSlider->GetValue() ) );
        }
Пример #4
0
        ControlBase CreateControls(ControlBase subject, int dock_idx, String name, int x, int y)
        {
            Control.GroupBox gb = new Control.GroupBox(this);
            gb.SetBounds(x, y, 200, 150);
            gb.Text = name;

            Control.Label l_width = new Control.Label(gb);
            l_width.SetSize(35, 15);
            l_width.Text = "Width:";
         
            Control.HorizontalSlider width = new HorizontalSlider(gb);
            width.Name = "Width";
            width.UserData = subject;
            width.Min = 50;
            width.Max = 350;
            width.Value = 100;
            width.SetSize(55, 15);
            width.ValueChanged += WidthChanged;
            Align.PlaceRightBottom(width, l_width);

            Control.Label l_height = new Control.Label(gb);
            l_height.SetSize(35, 15);
            l_height.Text = "Height:";
            Align.PlaceRightBottom(l_height, width, 10);

            Control.HorizontalSlider height = new Control.HorizontalSlider(gb);
            height.Name = "Height";
            height.UserData = subject;
            height.Min = 50;
            height.Max = 350;
            height.Value = 100;
            height.SetSize(55, 15);
            height.ValueChanged += HeightChanged;
            Align.PlaceRightBottom(height, l_height);

            Control.RadioButtonGroup dock = new RadioButtonGroup(gb, "Dock");
            dock.UserData = subject; // store control that we are controlling
            dock.AddOption("Left");
            dock.AddOption("Top");
            dock.AddOption("Right");
            dock.AddOption("Bottom");
            dock.AddOption("Fill");
            dock.SetSelection(dock_idx);
            Align.PlaceDownLeft(dock, l_width, 5);
            //dock.DrawDebugOutlines = true;
            dock.Invalidate();

            Control.Label l_margin = new Control.Label(gb);
            l_margin.Text = "Margin:";
            l_margin.SetBounds(75, 20, 35, 15);
            //Align.PlaceRightBottom(l_margin, dock);
            // can't use Align to anchor with 'dock' because radio group is resized only after layout ~_~
            // this is become really cumbersome
            //l_margin.DrawDebugOutlines = true;

            Control.HorizontalSlider margin = new HorizontalSlider(gb);
            margin.Name = "Margin";
            margin.UserData = subject;
            margin.Min = 0;
            margin.Max = 50;
            margin.Value = 10;
            margin.SetSize(55, 15);
            margin.ValueChanged += MarginChanged;
            Align.PlaceRightBottom(margin, l_margin);

            dock.SelectionChanged += DockChanged;

            return gb;
        }
Пример #5
0
        public Screen_Settings(Base parent)
            : base(parent)
        {
            SetSize(parent.Width, parent.Height);

            Gwen.Control.Label label = new Gwen.Control.Label(this);
            label.Text = "Settings";
            label.SetPosition(30, 30);
            label.TextColor = Color.FromArgb(200, 80, 0, 250);
            label.Font      = Program.fontLogo;

            Gwen.Control.WindowControl settingsWindow = new Gwen.Control.WindowControl(this);
            settingsWindow.Width  = parent.Width / 2;
            settingsWindow.Height = parent.Height / 2;
            settingsWindow.SetPosition(parent.Width / 2 - settingsWindow.Width / 2, parent.Height / 2 - settingsWindow.Height / 2);

            Gwen.Control.Label musicLabel = new Gwen.Control.Label(settingsWindow);
            musicLabel.Text = "Music:";
            musicLabel.SetPosition(parent.Width / 10, parent.Height / 10);
            musicLabel.TextColor = Color.FromArgb(255, 0, 0, 0);
            musicLabel.Font      = Program.fontText;

            Gwen.Control.HorizontalSlider musicSlider = new Gwen.Control.HorizontalSlider(settingsWindow);
            musicSlider.SetPosition(parent.Width / 5, parent.Height / 10);
            musicSlider.SetSize(parent.Width / 10, musicLabel.Height);

            Gwen.Control.Label sfxLabel = new Gwen.Control.Label(settingsWindow);
            sfxLabel.Text = "SFX:";
            sfxLabel.SetPosition(parent.Width / 10, musicLabel.Y + musicLabel.Height);
            sfxLabel.TextColor = Color.FromArgb(255, 0, 0, 0);
            sfxLabel.Font      = Program.fontText;

            Gwen.Control.CheckBox sfxCheckBox = new Gwen.Control.CheckBox(settingsWindow);
            sfxCheckBox.SetPosition(parent.Width / 5, musicLabel.Y + musicLabel.Height);

            Gwen.Control.Label fpsLabel = new Gwen.Control.Label(settingsWindow);
            fpsLabel.Text = "FPS Limit:";
            fpsLabel.SetPosition(parent.Width / 10, sfxLabel.Y + sfxLabel.Height);
            fpsLabel.TextColor = Color.FromArgb(255, 0, 0, 0);
            fpsLabel.Font      = Program.fontText;

            Gwen.Control.HorizontalSlider fpsSlider = new Gwen.Control.HorizontalSlider(settingsWindow);
            fpsSlider.SetPosition(parent.Width / 5, sfxLabel.Y + sfxLabel.Height);
            fpsSlider.SetSize(parent.Width / 10, sfxLabel.Height);

            Gwen.Control.Label resolutionLabel = new Gwen.Control.Label(settingsWindow);
            resolutionLabel.Text = "Resolution:";
            resolutionLabel.SetPosition(parent.Width / 10, fpsLabel.Y + fpsLabel.Height);
            resolutionLabel.TextColor = Color.FromArgb(255, 0, 0, 0);
            resolutionLabel.Font      = Program.fontText;

            Gwen.Control.ComboBox resolution = new ComboBox(settingsWindow);
            resolution.AddItem("800x600");
            resolution.AddItem("1024x768");
            resolution.SetPosition(parent.Width / 5, fpsLabel.Y + fpsLabel.Height);
            resolution.SetSize(parent.Width / 10, resolutionLabel.Height);

            Gwen.Control.Label fullScreenLabel = new Gwen.Control.Label(settingsWindow);
            fullScreenLabel.Text = "Full screen:";
            fullScreenLabel.SetPosition(parent.Width / 10, resolutionLabel.Y + resolutionLabel.Height);
            fullScreenLabel.TextColor = Color.FromArgb(255, 0, 0, 0);
            fullScreenLabel.Font      = Program.fontText;

            Gwen.Control.CheckBox fullScreenCheckBox = new Gwen.Control.CheckBox(settingsWindow);
            fullScreenCheckBox.SetPosition(parent.Width / 5, resolutionLabel.Y + resolutionLabel.Height);
            if (fullScreen == true)
            {
                fullScreenCheckBox.Toggle();
            }
            fullScreenCheckBox.Checked   += fullScreenEnable;
            fullScreenCheckBox.UnChecked += fullScreenDisable;

            Gwen.Control.Button buttonOK = new Gwen.Control.Button(this);
            buttonOK.Text = "OK";
            buttonOK.Font = Program.fontButtonLabels;
            buttonOK.SetBounds(550, 500, 200, 50);
            buttonOK.Clicked += onButtonOKClick;
        }
Пример #6
0
        private Base CreateSliderOption(Base parent, string labelText, float min, float max, float value, string valueStringFormat, int labelMaxWidth, int valueLabelMaxWidth, Action<float> onChange)
        {
            Base b = new Base(parent);
            b.Dock = Pos.Top;
            b.Padding = new Padding(0, 0, 0, 4);

            Label label = new Label(b);
            label.Text = labelText;
            label.Dock = Pos.Left;
            label.Padding = new Padding(0, 0, Math.Max(0, labelMaxWidth - label.Width), 0);

            Label valueLabel = new Label(b);
            valueLabel.Dock = Pos.Right;

            HorizontalSlider slider = new HorizontalSlider(b);
            slider.Dock = Pos.Fill;
            slider.Height = 20;
            slider.Min = min;
            slider.Max = max;
            slider.Value = value;

            slider.ValueChanged += (s, e) =>
            {
                int prevWidth = valueLabel.Width;
                valueLabel.Text = slider.Value.ToString(valueStringFormat);
                valueLabel.Padding = new Padding(valueLabel.Padding.Left - (valueLabel.Width - prevWidth), 0, 0, 0);
            };
            slider.ValueChanged += (s, e) => onChange(slider.Value);

            valueLabel.Text = value.ToString(valueStringFormat);
            valueLabel.Padding = new Padding(Math.Max(0, valueLabelMaxWidth - valueLabel.Width), 0, 0, 0);
            onChange(value);

            b.SizeToChildren();

            return b;
        }
Пример #7
0
        public SettingsMenu (Application app, Base parent, CompositorColorCorrectionNode colorCorrectionNode)
        {
            this.application = app;
            this.parent = parent;
            this.colorCorrectionNode = colorCorrectionNode;
            window = new WindowControl (parent);
            window.DisableResizing();
            window.Title = Localizer.Instance.GetValueForName("settings");
            window.Hide();

            float gamma = (float) ConfigManager.Instance["freezing_archer"].GetDouble("general", "gamma");
            colorCorrectionNode.Gamma = gamma;
            string language = ConfigManager.Instance["freezing_archer"].GetString("general", "language");
            Localizer.Instance.CurrentLocale = (LocaleEnum) Enum.Parse(typeof (LocaleEnum), language);

            languageLabel = new Label (window);
            languageLabel.AutoSizeToContents = true;
            languageLabel.Y = 10;
            languageLabel.Text = Localizer.Instance.GetValueForName("language");

            languageDropdown = new ComboBox (window);
            languageDropdown.Width = CONTROL_WIDTH;
            languageDropdown.Y = 10;
            foreach (var lang in Localizer.Instance.Locales)
            {
                var item = languageDropdown.AddItem(Localizer.Instance.GetValueForName(lang.Key.ToString()), lang.Key.ToString());
                item.AutoSizeToContents = false;
                item.Width = CONTROL_WIDTH;
            }
            languageDropdown.SelectByText(Localizer.Instance.GetValueForName(Localizer.Instance.CurrentLocale.ToString()));
            languageDropdown.ItemSelected += handleSelect;

            gammaSlider = new HorizontalSlider (window);
            gammaSlider.SnapToNotches = false;
            gammaSlider.Min = 0;
            gammaSlider.Max = 3;
            gammaSlider.Value = gamma;
            gammaSlider.ValueChanged += (sender, arguments) => {
                var slider = sender as HorizontalSlider;
                ConfigManager.Instance["freezing_archer"].SetDouble("general", "gamma", slider.Value);
                if (slider != null)
                    this.colorCorrectionNode.Gamma = slider.Value;
            };
            gammaSlider.Width = CONTROL_WIDTH;
            gammaSlider.Height = 20;
            gammaSlider.Y = 10 + languageDropdown.Y + languageDropdown.Height;

            gammaLabel = new Label (window);
            gammaLabel.AutoSizeToContents = true;
            gammaLabel.Y = 10 + languageLabel.Y + languageLabel.Height;
            gammaLabel.Text = Localizer.Instance.GetValueForName("gamma");

            int max_width = languageLabel.Width > gammaLabel.Width ? languageLabel.Width : gammaLabel.Width;

            languageLabel.X = 10 + max_width - languageLabel.Width;
            gammaLabel.X = 10 + max_width - gammaLabel.Width;
            languageDropdown.X = 10 + max_width + 5;
            gammaSlider.X = 10 + max_width + 5;

            window.Width = 40 + max_width + CONTROL_WIDTH;

            resetButton = new Button (window);
            resetButton.Text = Localizer.Instance.GetValueForName("reset");
            resetButton.Width = (window.Width / 2) - 20;
            resetButton.X = 10;
            resetButton.Y = gammaSlider.Y + gammaSlider.Height + 10;
            resetButton.Clicked += (sender, arguments) => {
                var general = ConfigManager.DefaultConfig.B.FirstOrDefault (a => a.Key == "general");
                var gamma_pair = general.Value.FirstOrDefault(a => a.Key == "gamma");
                
                float _gamma = (float) gamma_pair.Value.Double;
                gammaSlider.Value = _gamma;
                colorCorrectionNode.Gamma = _gamma;

                var language_pair = general.Value.FirstOrDefault(a => a.Key == "language");

                string lang = language_pair.Value.String;
                Localizer.Instance.CurrentLocale = (LocaleEnum) Enum.Parse(typeof (LocaleEnum), lang);
            };

            saveButton = new Button (window);
            saveButton.Text = Localizer.Instance.GetValueForName("save");
            saveButton.Width = (window.Width / 2) - 20;
            saveButton.X = resetButton.X + resetButton.Width + 10;
            saveButton.Y = gammaSlider.Y + gammaSlider.Height + 10;
            saveButton.Clicked += (sender, arguments) => ConfigManager.Instance.SaveAll();

            window.Height += languageDropdown.Height + gammaSlider.Height + 50;
            window.X = (parent.Width - window.Width) / 2;
            window.Y = (parent.Height - window.Height) / 2;

            ValidMessages = new[] { (int) MessageId.UpdateLocale };
            application.MessageManager += this;
        }