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); }
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; }
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; }); }
/// <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); }; }
/// <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; }
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; }