예제 #1
0
            public PerServerView(PerServerSettings settings)
            {
                // Remember
                Settings = settings;

                // Create view
                Refresh();
            }
예제 #2
0
        public ProcessingItem( PerServerSettings.PerServerView view, VCRNETControl context )
        {
            // Remember
            m_Context = context;
            View = view;

            // Attach to settings
            PerServerSettings settings = view.Settings;

            // Create a snap shot
            ServerName = settings.ServerName;
            ServerPort = settings.ServerPort;

            // Report
            View.StartProcessing();
        }
예제 #3
0
        public ProcessingItem(PerServerSettings.PerServerView view, VCRNETControl context)
        {
            // Remember
            m_Context = context;
            View      = view;

            // Attach to settings
            PerServerSettings settings = view.Settings;

            // Create a snap shot
            ServerName = settings.ServerName;
            ServerPort = settings.ServerPort;

            // Report
            View.StartProcessing();
        }
예제 #4
0
            public PerServerView( PerServerSettings settings )
            {
                // Remember
                Settings = settings;

                // Create view
                Refresh();
            }
예제 #5
0
        private void cmdAdd_Click( object sender, EventArgs e )
        {
            // Create a brand new item
            var settings =
                new PerServerSettings
                {
                    RefreshInterval = (int)selInterval.Value,
                    ServerPort = (ushort)selPort.Value,
                    WakeUpBroadcast = txSubNet.Text,
                    ServerName = txServer.Text,
                };

            // Update view
            settings.View.Refresh();

            // Create the update list
            var list = new List<PerServerSettings>();

            // Existing
            foreach (PerServerSettings.PerServerView view in lstServers.Items)
                list.Add( view.Settings );

            // the new one
            list.Add( settings );

            // Old value
            PerServerSettings[] oldSettings = m_Settings.Servers;

            // Update
            m_Settings.Servers = list.ToArray();

            // Try save
            try
            {
                // Store to disk
                m_Settings.Save();

                // Unselect
                foreach (PerServerSettings.PerServerView view in lstServers.Items)
                    view.Selected = false;

                // Select
                settings.View.Selected = true;

                // Update in memory
                lstServers.Items.Add( settings.View );

                // Show
                settings.View.EnsureVisible();

                // Refresh icon list
                CreateTrayIcons();
            }
            catch (Exception ex)
            {
                // Back
                m_Settings.Servers = oldSettings;

                // Report
                MessageBox.Show( this, ex.Message, string.Format( Properties.Resources.AddServerTitle, settings.ServerName ) );
            }
        }
예제 #6
0
        public VCRNETControl( string[] args )
        {
            // Report
            Log( "VCC [2013/06/01] starting up" );

            // Autostart service
            if (m_Settings.AutoStartService)
                if (!ThreadPool.QueueUserWorkItem( StartService ))
                    StartService( null );

            // This is us
            Type me = GetType();

            // Pattern start
            string prefix = me.Namespace + ".TrayIcons.";
            string suffix = ".ICO";

            // Load tray icons
            foreach (string resname in me.Assembly.GetManifestResourceNames())
                if (resname.StartsWith( prefix ))
                    if (resname.EndsWith( suffix ))
                    {
                        // Icon
                        string iconname = resname.Substring( prefix.Length, resname.Length - prefix.Length - suffix.Length );

                        // Load
                        using (Stream stream = me.Assembly.GetManifestResourceStream( resname ))
                        {
                            // Load the icon
                            Icon icon = new Icon( stream );

                            // Check for debugger
                            if (Debugger.IsAttached)
                                using (var bmp = icon.ToBitmap())
                                {
                                    // Change
                                    using (var gc = Graphics.FromImage( bmp ))
                                    using (var color = new SolidBrush( Color.Black ))
                                    {
                                        // Paint
                                        gc.FillRectangle( color, 0, 15, bmp.Width, 5 );
                                    }

                                    // Free icon
                                    icon.Dispose();

                                    // Reload
                                    icon = Icon.FromHandle( bmp.GetHicon() );
                                }

                            // Get the related color
                            var colorIndex = (TrayColors)Enum.Parse( typeof( TrayColors ), iconname, true );

                            // Add to map
                            m_TrayIcons[colorIndex] = icon;
                        }
                    }

            // Load picture
            using (var stream = me.Assembly.GetManifestResourceStream( me.Namespace + ".Icons.Connected.ico" ))
                m_Connected = Image.FromStream( stream );

            // Startup
            InitializeComponent();

            // Load the top menu string
            m_TopMenu = mnuDefault.Text;

            // Correct IDE problems (destroyed when language changes)
            selHibernate.Value = 5;
            selHibernate.Minimum = 1;
            selHibernate.Maximum = 30;
            selInterval.Value = 10;
            selInterval.Minimum = 5;
            selInterval.Maximum = 300;
            selPort.Maximum = ushort.MaxValue;
            selPort.Value = 80;
            selPort.Minimum = 1;
            selStreamPort.Maximum = ushort.MaxValue;
            selStreamPort.Value = 2910;
            selStreamPort.Minimum = 1;
            lstServers.View = View.Details;
            errorMessages.SetIconAlignment( txArgs, ErrorIconAlignment.MiddleLeft );
            errorMessages.SetIconAlignment( txMultiCast, ErrorIconAlignment.MiddleLeft );

            // Make sure that handle exists
            CreateHandle();

            // Load servers
            if (null != m_Settings.Servers)
                foreach (var setting in m_Settings.Servers)
                    lstServers.Items.Add( setting.View );

            // Load settings
            ckAutoStart.Checked = m_Settings.AutoStartService;
            ckHibernate.Checked = (m_Settings.HibernationDelay > 0);
            selHibernate.Value = ckHibernate.Checked ? (int)m_Settings.HibernationDelay : 5;
            txMultiCast.Text = m_Settings.MulticastIP;
            selStreamPort.Value = m_Settings.MinPort;
            selDelay.Value = m_Settings.StartupDelay;
            txArgs.Text = m_Settings.ViewerArgs;
            txViewer.Text = m_Settings.Viewer;

            // The default
            CultureItem selectedItem = null;

            // Fill language list
            foreach (var info in CultureInfo.GetCultures( CultureTypes.NeutralCultures ))
            {
                // Skip all sub-languages
                if (info.NativeName.IndexOf( '(' ) >= 0) continue;

                // Create
                var item = new CultureItem( info );

                // Add to map
                selLanguage.Items.Add( item );

                // Remember default
                if (Equals( m_Settings.Language, info.TwoLetterISOLanguageName )) selectedItem = item;
            }

            // Copy over
            selLanguage.SelectedItem = selectedItem;

            // Update GUI
            CheckLocal();
            CheckStream();

            // No local service
            frameLocal.Enabled = false;

            // See if local service exists
            try
            {
                // Attach to registry
                using (var vcr = Registry.LocalMachine.OpenSubKey( @"SYSTEM\CurrentControlSet\Services\VCR.NET Service" ))
                    if (null != vcr)
                    {
                        // Load path
                        string image = (string)vcr.GetValue( "ImagePath" );
                        if (!string.IsNullOrEmpty( image ))
                        {
                            // Correct
                            if (image.StartsWith( "\"" ) && image.EndsWith( "\"" ) && (image.Length > 1))
                            {
                                // Remove quotes
                                image = image.Substring( 1, image.Length - 2 ).Replace( "\"\"", "\"" );
                            }
                        }

                        // Attach to configuration file
                        var config = new FileInfo( image + ".config" );
                        if (config.Exists)
                        {
                            // Load DOM
                            XmlDocument dom = new XmlDocument();
                            dom.Load( config.FullName );

                            // Check for port
                            var portNode = (XmlElement)dom.SelectSingleNode( "configuration/appSettings/add[@key='TCPPort']" );
                            var port = ushort.Parse( portNode.GetAttribute( "value" ) );

                            // At least there is a valid local server
                            frameLocal.Enabled = true;

                            // Check for defaulting
                            if (lstServers.Items.Count < 1)
                            {
                                // Create a new entry
                                var settings =
                                    new PerServerSettings
                                    {
                                        ServerName = "localhost",
                                        RefreshInterval = 10,
                                        ServerPort = port,
                                    };

                                // Add
                                m_Settings.Servers = new PerServerSettings[] { settings };

                                // Try add
                                try
                                {
                                    // Save
                                    m_Settings.Save();

                                    // Add to list
                                    lstServers.Items.Add( settings.View );
                                }
                                catch
                                {
                                    // Reset
                                    m_Settings.Servers = null;
                                }
                            }
                        }
                    }
            }
            catch
            {
                // Ignore any error
            }

            // Install tray icons
            CreateTrayIcons();

            // Prepare buttons
            lstServers_SelectedIndexChanged( lstServers, EventArgs.Empty );
        }