Inheritance: INotifyPropertyChanged
Esempio n. 1
0
		public Ventriloquist ()
		{
			// Load the dynamic library for aggregating audio output devices
			var libPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "xamspeech.dylib");
			Dlfcn.dlopen(libPath, 0);

			// Esure paths exist
			if(!Directory.Exists(audiopath)) {
				Directory.CreateDirectory(audiopath);
			}
			//Console.WriteLine (appsupportpath);
			//if(!Directory.Exists(appsupportpath)) {
			//	Directory.CreateDirectory (appsupportpath);
			//}
			config = Config.GetInstance();
			config.PropertyChanged += async (object sender, System.ComponentModel.PropertyChangedEventArgs e) => {
				if(e.PropertyName.Equals("localonly")) {
					server.Stop();
					foreach(var socket in allSockets) {
						try {
							socket.Close();
						} catch(Exception ex) {

						}
					}
					websocketserver.ListenerSocket.Close();
					websocketserver.Dispose();
					InitHTTPServer();
				}
			};
		}
Esempio n. 2
0
        public Ventriloquist()
        {
            // Configure logger
            string path = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location), "log4net.config");
            XmlConfigurator.ConfigureAndWatch(new FileInfo(path));
            logger.Info("Ventriliquest Starting up...");

            if (!Directory.Exists(appsupportpath))
            {
                Directory.CreateDirectory(appsupportpath);
            }
            config = Config.GetInstance();
            config.PropertyChanged += async (object sender, System.ComponentModel.PropertyChangedEventArgs e) =>
            {
                if (e.PropertyName.Equals("localonly"))
                {
                    server.Stop();
                    foreach (var socket in allSockets)
                    {
                        try
                        {
                            socket.Close();
                        }
                        catch (Exception ex)
                        {

                        }
                    }
                    websocketserver.ListenerSocket.Close();
                    websocketserver.Dispose();
                    InitHTTPServer();
                }
            };

            trayMenu = new ContextMenu();

            MenuItem outputDevice = new MenuItem("Output device");

            for (int deviceId = 0; deviceId < WaveOut.DeviceCount; deviceId++)
            {

                var capabilities = WaveOut.GetCapabilities(deviceId);
                //Console.WriteLine(String.Format("Device {0} ({1})", deviceId, capabilities.ProductName));
                var deviceItem = new MenuItem(capabilities.ProductName, OnDeviceConfig);
                deviceItem.Tag = deviceId;
                if(config.OutputDevice.Equals("NOPE")) {
                    config.OutputDevice = capabilities.ProductName;
                }
                if(capabilities.ProductName == config.OutputDevice) {
                    deviceItem.Checked = true;
                    OutputDeviceId = deviceId;
                    Console.WriteLine("Output Device: " + OutputDeviceId);
                }
                outputDevice.MenuItems.Add(deviceItem);
            }

            var networkconfigItem = new MenuItem("Local Connections Only", OnNetworkConfig);

            Console.WriteLine("network config'd as: " + config.LocalOnly);

            if(config.LocalOnly) {
                networkconfigItem.Checked = true;
            }

            var voiceconfigItem = new MenuItem("Voice Configuration", OnVoiceConfig);

            trayMenu.MenuItems.Add(new MenuItem("Version 1.1"));
            trayMenu.MenuItems.Add(outputDevice);
            trayMenu.MenuItems.Add(networkconfigItem);
            trayMenu.MenuItems.Add(voiceconfigItem);
            trayMenu.MenuItems.Add("Exit", OnExit);

            trayIcon = new NotifyIcon();
            trayIcon.Text = "Ventriloquist TTS Server";
            trayIcon.Icon = new Icon(SystemIcons.Application, 40, 40);

            trayIcon.ContextMenu = trayMenu;
            trayIcon.Visible = true;

        }