Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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 { }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
                }
            }
        }
Exemplo n.º 5
0
        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();
                }
            }
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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;
                        }
                    }
                }
            }
        }