//------------------------------------------------------------------------------------------------------------- public void RefreshBrowserListUI() //------------------------------------------------------------------------------------------------------------- { SuspendLayout(); BrowserFinder finder = new BrowserFinder(); browsers = finder.FindBrowsers().Where(b => !Settings.Default.HiddenBrowsers.Contains(b.Identifier)).ToList(); // remove existing browser buttons for (int i = Controls.Count - 1; i >= 0; i--) { Control control = Controls[i]; if (control is BrowserButtonControl) { Controls.RemoveAt(i); } } int index = 0; int totalWidth = 0; // add a button for each enabled browser to the form foreach (var browser in browsers) { var control = new BrowserButtonControl(browser, index); control.Left = control.Width * index++; totalWidth += control.Width; control.Click += BrowserButton_Click; Controls.Add(control); tooltipUrl.SetToolTip(control, BrowserSelectApp.url); } ResumeLayout(); // position Settings button at right edge of form Control settingsControl = this.Controls["SettingsButtonControl"]; if (settingsControl != null) { settingsControl.Left = totalWidth; } CenterWindow(); }
//------------------------------------------------------------------------------------------------------------- private void RefreshButton_Click(object sender, EventArgs e) //------------------------------------------------------------------------------------------------------------- { var mbox = MessageBox.Show("Refreshing the browser list will remove any custom ordering set on the list. Are you sure?", "Refresh Browser List", MessageBoxButtons.YesNo); if (mbox == DialogResult.No) { return; } //populate list of browsers for RulesGrid, BrowserList, and DefaultBrowserList BrowserFinder finder = new BrowserFinder(); browsers = finder.FindBrowsers(true); var browserColumn = ((DataGridViewComboBoxColumn)RulesGrid.Columns["browser"]); browserColumn.Items.Clear(); BrowserList.Items.Clear(); DefaultBrowserList.Items.Clear(); DefaultBrowserList.Items.Add("<choose with BrowserSelect>"); foreach (BrowserModel browser in browsers) { BrowserList.Items.Add(browser, !Settings.Default.HiddenBrowsers.Contains(browser.Identifier)); DefaultBrowserList.Items.Add(browser.ToString()); browserColumn.Items.Add(browser.ToString()); } if (String.IsNullOrEmpty(Settings.Default.DefaultBrowser)) { DefaultBrowserList.SelectedIndex = 0; } else { DefaultBrowserList.SelectedItem = Settings.Default.DefaultBrowser; } }
//------------------------------------------------------------------------------------------------------------- private void SettingsView_Load(object sender, EventArgs e) //------------------------------------------------------------------------------------------------------------- { MinimizeBox = false; //check if browser select is the default browser or not //to disable/enable "set Browser select as default" button using (RegistryKey key = Registry.CurrentUser.OpenSubKey( @"Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice")) { var defaultBrowser = key?.GetValue("ProgId"); //disable the set default if already default if (defaultBrowser != null && (string)defaultBrowser == "BrowserSelectURL") { SetDefaultButton.Enabled = false; } } var typeColumn = ((DataGridViewComboBoxColumn)RulesGrid.Columns["type"]); typeColumn.Items.Add("URL"); typeColumn.Items.Add("Process"); //populate list of browsers for RulesGrid, BrowserList, and DefaultBrowserList BrowserFinder finder = new BrowserFinder(); browsers = finder.FindBrowsers(); var browserColumn = ((DataGridViewComboBoxColumn)RulesGrid.Columns["browser"]); DefaultBrowserList.Items.Add("<choose with BrowserSelect>"); foreach (BrowserModel browser in browsers) { BrowserList.Items.Add(browser, !Settings.Default.HiddenBrowsers.Contains(browser.Identifier)); DefaultBrowserList.Items.Add(browser.ToString()); browserColumn.Items.Add(browser.ToString()); } if (String.IsNullOrEmpty(Settings.Default.DefaultBrowser)) { DefaultBrowserList.SelectedIndex = 0; } else { DefaultBrowserList.SelectedItem = Settings.Default.DefaultBrowser; } if (String.IsNullOrEmpty(Settings.Default.RedirectPolicy)) { RedirectPolicy.SelectedIndex = 0; } else { RedirectPolicy.SelectedItem = Settings.Default.RedirectPolicy; } //populate rules list data source and bind it to its grid foreach (var rule in Settings.Default.Rules) { rules.Add(rule); } var bs = new BindingSource(); bs.DataSource = rules; RulesGrid.DataSource = bs; isDirty = false; UpdateUIState(); CenterWindow(); this.BeginInvoke(new Action(() => { isLoaded = true; })); }