コード例 #1
0
        private YamuiButton InsertButton(int i, string buttonText, ref int cumButtonWidth)
        {
            var size      = TextRenderer.MeasureText(buttonText, FontManager.GetStandardFont());
            var newButton = new YamuiButton {
                Anchor = AnchorStyles.Bottom | AnchorStyles.Right,
                Size   = new Size(Math.Max(size.Width + 10, MinButtonWidth), 25),
                Name   = "yamuiButton" + i,
                Tag    = i,
                Text   = buttonText
            };

            newButton.Location = new Point(Width - BorderWidth - ButtonPadding - newButton.Width - cumButtonWidth, Height - BorderWidth - ButtonPadding - newButton.Height);
            cumButtonWidth    += newButton.Width + 5;

            newButton.ButtonPressed += (sender, args) => {
                DialogIntResult = (int)((YamuiButton)sender).Tag;

                // the first button triggers the validation
                if (DialogIntResult == 0)
                {
                    if (ValidateChildren())
                    {
                        BindToData();
                        Close();
                    }
                    else
                    {
                        DialogIntResult = -1;
                    }
                }
                else
                {
                    Close();
                }
            };
            return(newButton);
        }
コード例 #2
0
ファイル: OptionPage.cs プロジェクト: massreuy/3P
        private void GeneratePage()
        {
            var lastCategory   = "";
            var yPos           = 0;
            var configInstance = Config.Instance;

            ForEachConfigPropertyWithDisplayAttribute((property, attribute) => {
                var valObj = property.GetValue(configInstance);

                // new group
                if (!lastCategory.EqualsCi(attribute.GroupName))
                {
                    if (!string.IsNullOrEmpty(lastCategory))
                    {
                        // ReSharper disable once AccessToModifiedClosure
                        yPos += 10;
                    }
                    lastCategory = attribute.GroupName;
                    scrollPanel.ContentPanel.Controls.Add(new YamuiLabel {
                        AutoSize = true,
                        Function = FontFunction.Heading,
                        Location = new Point(0, yPos),
                        Text     = lastCategory.ToUpper()
                    });
                    yPos += 30;
                }

                // name of the field
                var label = new HtmlLabel {
                    AutoSizeHeightOnly = true,
                    BackColor          = Color.Transparent,
                    Location           = new Point(30, yPos),
                    Size = new Size(190, 10),
                    IsSelectionEnabled = false,
                    Text = attribute.Name
                };
                scrollPanel.ContentPanel.Controls.Add(label);

                var listRangeAttr = property.GetCustomAttributes(typeof(RangeAttribute), false);
                var rangeAttr     = (listRangeAttr.Any()) ? (RangeAttribute)listRangeAttr.FirstOrDefault() : null;

                if (valObj is string)
                {
                    // string
                    var strControl = new YamuiTextBox {
                        Location = new Point(240, yPos),
                        Text     = (string)property.GetValue(configInstance),
                        Size     = new Size(300, 20),
                        Tag      = property.Name
                    };

                    scrollPanel.ContentPanel.Controls.Add(strControl);
                    var strButton = new YamuiButtonImage {
                        Text          = @"save",
                        BackGrndImage = ImageResources.Save,
                        Size          = new Size(20, 20),
                        Location      = new Point(545, yPos),
                        Tag           = strControl,
                        TabStop       = false
                    };
                    strButton.ButtonPressed += SaveButtonOnButtonPressed;
                    scrollPanel.ContentPanel.Controls.Add(strButton);
                    tooltip.SetToolTip(strButton, "Click to <b>set the value</b> of this field<br>Otherwise, your modifications will not be saved");

                    var undoButton = new YamuiButtonImage {
                        BackGrndImage = ImageResources.UndoUserAction,
                        Size          = new Size(20, 20),
                        Location      = new Point(565, yPos),
                        Tag           = strControl,
                        TabStop       = false
                    };
                    undoButton.ButtonPressed += UndoButtonOnButtonPressed;
                    scrollPanel.ContentPanel.Controls.Add(undoButton);
                    tooltip.SetToolTip(undoButton, "Click to <b>reset this field</b> to its default value");

                    tooltip.SetToolTip(strControl, attribute.Description + "<br><div class='ToolTipBottomGoTo'>Click on the save button <img src='Save'> to set your modifications</div>");
                }
                if (valObj is int || valObj is double)
                {
                    // number
                    var numControl = new YamuiTextBox {
                        Location = new Point(240, yPos),
                        Text     = ((valObj is int) ? ((int)property.GetValue(configInstance)).ToString() : ((double)property.GetValue(configInstance)).ToString(CultureInfo.CurrentCulture)),
                        Size     = new Size(300, 20),
                        Tag      = property.Name
                    };

                    scrollPanel.ContentPanel.Controls.Add(numControl);
                    var numButton = new YamuiButtonImage {
                        Text          = @"save",
                        BackGrndImage = ImageResources.Save,
                        Size          = new Size(20, 20),
                        Location      = new Point(545, yPos),
                        Tag           = numControl,
                        TabStop       = false
                    };
                    numButton.ButtonPressed += SaveButtonOnButtonPressed;
                    scrollPanel.ContentPanel.Controls.Add(numButton);
                    tooltip.SetToolTip(numButton, "Click to <b>set the value</b> of this field<br>Otherwise, your modifications will not be saved");

                    var undoButton = new YamuiButtonImage {
                        BackGrndImage = ImageResources.UndoUserAction,
                        Size          = new Size(20, 20),
                        Location      = new Point(565, yPos),
                        Tag           = numControl,
                        TabStop       = false
                    };
                    undoButton.ButtonPressed += UndoButtonOnButtonPressed;
                    scrollPanel.ContentPanel.Controls.Add(undoButton);
                    tooltip.SetToolTip(undoButton, "Click to <b>reset this field</b> to its default value");

                    tooltip.SetToolTip(numControl, attribute.Description + "<br>" + (rangeAttr != null ? "<br><b><i>" + "Min value = " + rangeAttr.Minimum + "<br>Max value = " + rangeAttr.Maximum + "</i></b><br>" : "") + "<div class='ToolTipBottomGoTo'>Click on the save button <img src='Save'> to set your modifications</div>");
                }
                else if (valObj is bool)
                {
                    // bool
                    var toggleControl = new YamuiButtonToggle {
                        Location = new Point(240, yPos),
                        Size     = new Size(40, 16),
                        Text     = null,
                        Checked  = (bool)valObj,
                        Tag      = property.Name
                    };
                    toggleControl.ButtonPressed += ToggleControlOnCheckedChanged;
                    scrollPanel.ContentPanel.Controls.Add(toggleControl);

                    // tooltip
                    tooltip.SetToolTip(toggleControl, attribute.Description + "<br><div class='ToolTipBottomGoTo'>Click to <b>toggle on/off</b> this feature<br>Your choice is automatically applied</div>");
                }

                yPos += label.Height + 15;
            });

            yPos   += 15;
            _btSave = new YamuiButton {
                Location      = new Point(30, yPos),
                Size          = new Size(120, 24),
                Text          = @"Save everything",
                BackGrndImage = ImageResources.Save
            };
            _btSave.ButtonPressed += SaveAllButtonOnButtonPressed;
            tooltip.SetToolTip(_btSave, "Click to <b>save</b> all the options<br><i>This as the same effect than clicking save for each option</i>");
            scrollPanel.ContentPanel.Controls.Add(_btSave);

            var defaultButton = new YamuiButton {
                Location      = new Point(155, yPos),
                Size          = new Size(120, 24),
                Text          = @"Reset to default",
                BackGrndImage = ImageResources.UndoUserAction
            };

            defaultButton.ButtonPressed += DefaultButtonOnButtonPressed;
            tooltip.SetToolTip(defaultButton, "Click to <b>reset</b> all the options to default");
            scrollPanel.ContentPanel.Controls.Add(defaultButton);

            // add a button for the updates
            if (_allowedGroups.Contains("Updates"))
            {
                var updateButton = new YamuiButton {
                    Location      = new Point(280, yPos),
                    Size          = new Size(150, 24),
                    Text          = @"Check for updates",
                    BackGrndImage = ImageResources.Update
                };
                updateButton.ButtonPressed += (sender, args) => UpdateHandler.CheckForUpdate();
                tooltip.SetToolTip(updateButton, "Click to <b>check for updates</b>");
                scrollPanel.ContentPanel.Controls.Add(updateButton);
            }

            scrollPanel.ContentPanel.Height = yPos + 50;
        }
コード例 #3
0
 private void BlinkButton(YamuiButton button, Color blinkColor)
 {
     button.UseCustomBackColor = true;
     Transition.run(button, "BackColor", ThemeManager.Current.ButtonNormalBack, blinkColor, new TransitionType_Flash(1, 300), (o, args) => { button.UseCustomBackColor = false; });
 }
コード例 #4
0
        /// <summary>
        /// Constructor, you should the method ShwDlg instead
        /// </summary>
        private YamuiFormMessageBox(string htmlContent, List <string> buttonsList, int maxHeight, int maxWidth, int minWidth = 300)
        {
            InitializeComponent();

            // register to the panel onclicked event and propagate it as a public field of this class
            contentLabel.LinkClicked += LinkClicked;

            // Set buttons
            int i = 0;
            int cumButtonWidth = 0;

            foreach (var buttonText in buttonsList)
            {
                var size = TextRenderer.MeasureText(buttonText, FontManager.GetStandardFont());

                var yamuiButton1 = new YamuiButton {
                    Anchor   = AnchorStyles.Bottom | AnchorStyles.Right,
                    Size     = new Size(Math.Max(size.Width + 10, 80), 25),
                    Name     = "yamuiButton" + i,
                    TabIndex = buttonsList.Count - i,
                    Tag      = i,
                    Text     = buttonText
                };
                yamuiButton1.Location       = new Point(Width - 12 - yamuiButton1.Width - cumButtonWidth, Height - 12 - yamuiButton1.Height);
                cumButtonWidth             += yamuiButton1.Width + 5;
                yamuiButton1.ButtonPressed += (sender, args) => {
                    _dialogResult = (int)((YamuiButton)sender).Tag;
                    Close();
                };
                Controls.Add(yamuiButton1);
                if (i == 0)
                {
                    ActiveControl = yamuiButton1;
                }
                i++;
            }

            // set label size
            contentLabel.SetNeededSize(htmlContent, Math.Max(cumButtonWidth + 12 + 30, minWidth), maxWidth);
            contentPanel.ContentPanel.Size = contentLabel.Size;

            // set form size
            Size = new Size(contentLabel.Width + 10, Math.Min(maxHeight, contentLabel.Height + 85));
            if (contentLabel.Height + 85 > maxHeight)
            {
                Width += 10;
            }
            MinimumSize = Size;

            // add outro animation
            Tag      = false;
            Closing += (sender, args) => {
                // cancel initialise close to run an animation, after that allow it
                if ((bool)Tag)
                {
                    return;
                }
                Tag         = true;
                args.Cancel = true;
                Transition.run(this, "Opacity", 1d, -0.01d, new TransitionType_Linear(400));
            };

            Shown += (sender, args) => {
                Focus();
                WinApi.SetForegroundWindow(Handle);
            };
        }
コード例 #5
0
        /// <summary>
        /// Dynamically generates the page
        /// </summary>
        private void GeneratePage()
        {
            var lastCategory = "";
            var yPos         = 0;

            ForEachConfigPropertyWithDisplayAttribute((property, attribute) => {
                // new group
                if (!lastCategory.EqualsCi(attribute.GroupName))
                {
                    if (!string.IsNullOrEmpty(lastCategory))
                    {
                        // ReSharper disable once AccessToModifiedClosure
                        yPos += 10;
                    }
                    lastCategory = attribute.GroupName;
                    scrollPanel.ContentPanel.Controls.Add(new YamuiLabel {
                        AutoSize = true,
                        Function = FontFunction.Heading,
                        Location = new Point(0, yPos),
                        Text     = lastCategory.ToUpper()
                    });
                    yPos += 30;
                }

                scrollPanel.ContentPanel.Controls.Add(InsertInputForItem(property, attribute, ref yPos));
                scrollPanel.ContentPanel.Controls.Add(InsertLabelForItem(attribute, ref yPos));
            });

            yPos += 15;

            // add a button for the updates
            if (_allowedGroups.Contains("Updates"))
            {
                var updateButton = new YamuiButton {
                    Location      = new Point(30, yPos),
                    Size          = new Size(150, 24),
                    Text          = @"Check for 3P updates",
                    BackGrndImage = ImageResources.Update
                };
                updateButton.ButtonPressed += (sender, args) => Updater <MainUpdaterWrapper> .Instance.CheckForUpdate();

                tooltip.SetToolTip(updateButton, "Click to <b>check for updates</b>");
                scrollPanel.ContentPanel.Controls.Add(updateButton);

                updateButton = new YamuiButton {
                    Location      = new Point(185, yPos),
                    Size          = new Size(170, 24),
                    Text          = @"Check for Prolint updates",
                    BackGrndImage = ImageResources.ProlintCode
                };
                updateButton.ButtonPressed += (sender, args) => {
                    Updater <ProlintUpdaterWrapper> .Instance.CheckForUpdate();

                    Updater <ProparseUpdaterWrapper> .Instance.CheckForUpdate();
                };
                tooltip.SetToolTip(updateButton, "Click to <b>check for updates</b>");
                scrollPanel.ContentPanel.Controls.Add(updateButton);

                yPos += updateButton.Height + 5;
            }

            // add a button for the updates
            if (_allowedGroups.Contains("General"))
            {
                var button = new YamuiButton {
                    Location = new Point(30, yPos),
                    Size     = new Size(170, 24),
                    Text     = @"Modify notepad++ options"
                };
                button.ButtonPressed += (sender, args) => Npp.ConfXml.ModifyingNppConfig();
                tooltip.SetToolTip(button, "Click to <b>modify notepad++ options</b>");
                scrollPanel.ContentPanel.Controls.Add(button);

                yPos += button.Height + 5;
            }

            scrollPanel.ContentPanel.Height = yPos + 50;
        }
コード例 #6
0
        public override void OnShow()
        {
            foreach (Control control in scrollPanel.ContentPanel.Controls)
            {
                if (!control.Name.StartsWith("static"))
                {
                    control.Dispose();
                }
            }

            // build the interface
            var yPos = static_name.Location.Y + 35;

            foreach (var item in AppliMenu.Instance.ShortcutableItemList.OrderBy(item => item.ItemName))
            {
                // icon
                var imgButton = new YamuiPictureBox {
                    BackGrndImage = item.ItemImage,
                    Size          = new Size(20, 20),
                    Location      = new Point(static_name.Location.X - 30, yPos),
                    Tag           = item.ItemId,
                    TabStop       = false
                };
                scrollPanel.ContentPanel.Controls.Add(imgButton);

                // name
                var label = new HtmlLabel {
                    AutoSizeHeightOnly = true,
                    BackColor          = Color.Transparent,
                    Location           = new Point(static_name.Location.X, yPos + 2),
                    Size = new Size(340, 10),
                    IsSelectionEnabled = false,
                    Text = item.ItemName
                };
                scrollPanel.ContentPanel.Controls.Add(label);

                // keys
                var button = new YamuiButton {
                    Anchor        = AnchorStyles.Right | AnchorStyles.Top,
                    Location      = new Point(static_keys.Location.X + static_keys.Width - 220, yPos - 1),
                    Size          = new Size(220, 24),
                    Tag           = item.ItemId,
                    Text          = item.ItemSpec ?? "",
                    Name          = "bt" + item.ItemId,
                    TabStop       = true,
                    BackGrndImage = item.ItemImage,
                };
                scrollPanel.ContentPanel.Controls.Add(button);
                button.Click += ButtonOnButtonPressed;
                tooltip.SetToolTip(button, "<b>" + item.ItemName + "</b><br><br>Click to modify this shortcut<br><i>You can press ESCAPE to cancel the changes</i>");

                // reset
                button = new YamuiButtonImage {
                    Anchor        = AnchorStyles.Right | AnchorStyles.Top,
                    BackGrndImage = ImageResources.UndoUserAction,
                    Size          = new Size(20, 20),
                    Location      = new Point(button.Location.X + button.Width + 10, yPos),
                    Tag           = item.ItemId,
                    TabStop       = false,
                };
                scrollPanel.ContentPanel.Controls.Add(button);
                button.ButtonPressed += UndoButtonOnButtonPressed;
                tooltip.SetToolTip(button, "Click this button to reset the shortcut to its default value");

                // reset
                button = new YamuiButtonImage {
                    Anchor        = AnchorStyles.Right | AnchorStyles.Top,
                    BackGrndImage = ImageResources.Delete,
                    Size          = new Size(20, 20),
                    Location      = new Point(button.Location.X + button.Width, yPos),
                    Tag           = item.ItemId,
                    TabStop       = false,
                };
                scrollPanel.ContentPanel.Controls.Add(button);
                button.ButtonPressed += ButtonDeleteOnButtonPressed;
                tooltip.SetToolTip(button, "Click this button to clear this shortcut");

                yPos += label.Height + 15;
            }

            // Activate scrollbars
            scrollPanel.ContentPanel.Height = yPos + 20;
            Height = yPos;
        }