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(); } }; }
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; }