private void PopulateList() { ClearList(); panel.Controls.Add(CreateChooseItem()); List <ViewerInfo> viewers = GetSavedViewers(); List <ViewerInfo> discoveredViewers = GetDiscoveredViewers(); foreach (ViewerInfo viewer in discoveredViewers) { if (!viewers.Contains(viewer)) { viewers.Add(viewer); } } for (int i = viewers.Count - 1; i >= 0; i--) { ViewerInfo viewer = viewers[i]; panel.Controls.Add(viewer); } SaveViewerList(); }
private void chkRemember_CheckedChanged(object sender, EventArgs e) { try { RegistryKey rememberViewerKey = Registry.CurrentUser.CreateSubKey(REG_VWRAP_LAUNCHER); if (chkRemember.Checked) { ViewerInfo viewer = m_selectedViewerInfo; // Sanity check if (viewer == null) { chkRemember.Enabled = false; return; } rememberViewerKey.SetValue(REG_REMEMBER, viewer.Path + "|" + viewer.Arguments); } else { rememberViewerKey.DeleteValue(REG_REMEMBER); } } catch { } }
private void cmdOK_Click(object sender, EventArgs e) { ViewerInfo viewer = m_selectedViewerInfo; // Sanity check if (viewer == null) { cmdOK.Enabled = false; chkRemember.Enabled = false; return; } LaunchViewer(viewer.Path, viewer.Arguments); }
private void SaveViewerList() { try { Registry.CurrentUser.DeleteSubKey(REG_VIEWER_LIST); } catch (Exception) { } RegistryKey savedViewersKey = Registry.CurrentUser.CreateSubKey(REG_VIEWER_LIST); int j = 0; for (int i = panel.Controls.Count - 1; i >= 0; i--) { Panel item = panel.Controls[i] as Panel; if (item is ViewerInfo) { ViewerInfo viewer = (ViewerInfo)item; savedViewersKey.SetValue(j++.ToString(), viewer.Path + "|" + viewer.Arguments); } } }
private void chooseButton_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Multiselect = false; if (Environment.OSVersion.Platform != PlatformID.MacOSX && Environment.OSVersion.Platform != PlatformID.Unix) { dialog.Filter = "Viewer Executable (*.exe) |*.exe"; } if (dialog.ShowDialog() == DialogResult.OK) { // Extra paranoid sanity check if (File.Exists(dialog.FileName)) { ViewerInfo viewer = CreateViewerItem( Path.GetFileNameWithoutExtension(dialog.FileName), dialog.FileName, DEFAULT_ARGUMENTS); StartRemoval: foreach (Panel item in panel.Controls) { if (item is ViewerInfo) { ViewerInfo viewerEntry = (ViewerInfo)item; if (viewer.Equals(viewerEntry)) { panel.Controls.Remove(viewerEntry); viewerEntry.Dispose(); goto StartRemoval; } } } panel.Controls.Add(viewer); SaveViewerList(); } } }
private ViewerInfo CreateViewerItem(string name, string path, string arguments) { ViewerInfo viewerItem = new ViewerInfo(name, path, arguments); viewerItem.Width = panel.Width; viewerItem.Height = VIEWER_ITEM_HEIGHT; viewerItem.BackColor = panel.BackColor; viewerItem.Dock = DockStyle.Top; viewerItem.Click += HighlightItem; viewerItem.DoubleClick += DoubleClickItem; Label viewerLabel = new Label(); viewerLabel.Font = new Font(viewerLabel.Font, FontStyle.Bold); viewerLabel.AutoEllipsis = true; viewerLabel.Text = name; viewerLabel.Height = viewerItem.Height / 2; viewerLabel.Width = panel.Width; viewerLabel.TextAlign = ContentAlignment.MiddleLeft; viewerLabel.Dock = DockStyle.Top; viewerLabel.Click += HighlightItem; viewerLabel.DoubleClick += DoubleClickItem; Label viewerPathLabel = new Label(); viewerPathLabel.AutoEllipsis = true; viewerPathLabel.Text = path; viewerPathLabel.Height = viewerItem.Height / 2; viewerPathLabel.Width = panel.Width; viewerPathLabel.TextAlign = ContentAlignment.MiddleLeft; viewerPathLabel.Dock = DockStyle.Top; viewerPathLabel.Click += HighlightItem; viewerPathLabel.DoubleClick += DoubleClickItem; viewerItem.Controls.Add(viewerPathLabel); viewerItem.Controls.Add(viewerLabel); return(viewerItem); }
private List <ViewerInfo> GetDiscoveredViewers() { List <string> paths = FindSecondLifeWindows(); paths.AddRange(FindSecondLifeOSX()); paths.AddRange(FindSecondLifeLinux()); List <ViewerInfo> viewers = new List <ViewerInfo>(paths.Count); for (int i = 0; i < paths.Count; i++) { string path = paths[i]; ViewerInfo viewer = CreateViewerItem( Path.GetFileNameWithoutExtension(path), path, DEFAULT_ARGUMENTS); viewers.Add(viewer); } return(viewers); }
private List <ViewerInfo> GetSavedViewers() { List <ViewerInfo> viewers = new List <ViewerInfo>(); RegistryKey savedViewersKey = Registry.CurrentUser.OpenSubKey(REG_VIEWER_LIST); if (savedViewersKey != null) { string[] keys = savedViewersKey.GetValueNames(); for (int i = 0; i < keys.Length; i++) { string viewerPath = savedViewersKey.GetValue(keys[i]).ToString(); string args = String.Empty; // Unseparate the viewer path and arguments if (viewerPath.Contains("|")) { int pipeIdx = viewerPath.IndexOf('|'); args = viewerPath.Substring(pipeIdx + 1); viewerPath = viewerPath.Substring(0, pipeIdx); } // Make sure the viewer still exists if (File.Exists(viewerPath)) { ViewerInfo viewer = CreateViewerItem( Path.GetFileNameWithoutExtension(viewerPath), viewerPath, args); viewers.Add(viewer); } } } return(viewers); }
private void HighlightItem(object sender, EventArgs e) { if (!(sender is Panel)) { Control control = (Control)sender; HighlightItem(control.Parent, null); return; } Panel highlightItem = (Panel)sender; if (highlightItem != panel) { // Highlight this panel if (highlightItem is ViewerInfo) { m_selectedViewerInfo = (ViewerInfo)highlightItem; cmdOK.Enabled = true; chkRemember.Enabled = true; } else { m_selectedViewerInfo = null; cmdOK.Enabled = false; chkRemember.Enabled = false; } highlightItem.BackColor = System.Drawing.SystemColors.Highlight; foreach (Control control in highlightItem.Controls) { if (control is Label) { Label label = (Label)control; label.ForeColor = panel.BackColor; } } // Unhighlight all of the other panels foreach (Panel item in panel.Controls) { if (item != highlightItem) { item.BackColor = panel.BackColor; foreach (Control control in item.Controls) { if (control is Label) { Label label = (Label)control; label.ForeColor = label1.ForeColor; } } } } } else { // Unhighlight all of the panels cmdOK.Enabled = false; chkRemember.Enabled = false; m_selectedViewerInfo = null; foreach (Panel item in panel.Controls) { item.BackColor = panel.BackColor; foreach (Control control in item.Controls) { if (control is Label) { Label label = (Label)control; label.ForeColor = label1.ForeColor; } } } } }