示例#1
0
        public Sett SourceSettings()
        {
            if (!Directory.Exists(configDir))
            { // User probably removed the config directory, creat it again
                Directory.CreateDirectory(configDir);
            }
            if (!File.Exists(configFile))
            { // No config file detected, recreate it
                try
                {
                    File.Create(configFile).Dispose(); // create file
                }
                catch
                {
                    Debug.WriteLine("Could not create '" + configFile + "'.");
                }
                try
                {
                    System.IO.File.WriteAllText(configFile, defaultConfig); // fill with default config
                }
                catch
                {
                    Debug.WriteLine("Could not write to '" + configFile + "'. Possibly in use");
                }
            }

            FileAttributes fileAttributes = File.GetAttributes(configFile);

            if ((fileAttributes & FileAttributes.ReadOnly) != FileAttributes.ReadOnly)
            {
                try
                {
                    Debug.WriteLine("Hello " + configFile + "'.");
                    String jsonString = System.IO.File.ReadAllText(configFile);
                    //probably should validate its a json, and that it has the correct structure
                    Sett settings = JsonConvert.DeserializeObject <Sett>(jsonString);
                    if (settings == null)
                    {
                        return(null);
                    }
                    return(settings);
                }
                catch
                {
                    Debug.WriteLine("Empty File " + appConfigFile + "'.");
                }
            }
            return(null);
        }
示例#2
0
        public void saveConfig(Sett settings)
        {
            String         objectJson     = JsonConvert.SerializeObject(settings);
            FileAttributes fileAttributes = File.GetAttributes(configFile);

            if ((fileAttributes & FileAttributes.ReadOnly) != FileAttributes.ReadOnly)
            {
                try
                {
                    System.IO.File.WriteAllText(configFile, objectJson);
                }
                catch
                {
                    Debug.WriteLine("Could not get Stream for '" + configFile + "'. Possibly in use");
                }
            }
        }
示例#3
0
        static void Main()
        {
            Config     config   = new Config();
            Sett       settings = config.SourceSettings();
            List <App> apps     = config.SourceAppConfig();


            if (apps == null)   // error in json
            {
                const string message = "Configuration Volume file error.";
                const string caption = "Midi2Vol";
                MessageBox.Show(message, caption, MessageBoxButtons.OK, MessageBoxIcon.Error);
                config.removeAppConfig();
                Application.Restart(); // restart to load new app configs
                Environment.Exit(0);
            }
            else if (settings == null)   //error in json
            {
                const string message = "Configuration Setting file error.";
                const string caption = "Midi2Vol";
                MessageBox.Show(message, caption, MessageBoxButtons.OK, MessageBoxIcon.Error);
                config.removeSett();
                Application.Restart(); // restart to load new sett configs
                Environment.Exit(0);
            }

            else
            {
                TrayApplicationContext nanoSliderTray = new TrayApplicationContext(settings);
                MidiSlider             nanoSlider     = new MidiSlider(settings, apps, nanoSliderTray);

                if (RunningInstance() == null)
                {
                    Debug.WriteLine("lets run");
                    Task.Run(() => nanoSlider.Slider());
                    Application.Run(nanoSliderTray);//run everything before this line or wont be runned
                }
                else
                {
                    nanoSliderTray.ProgramAlreadyRuning();
                }
            }
        }
示例#4
0
 public MidiSlider(Sett settings, List <App> apps, TrayApplicationContext nanoSliderTray)
 {
     this.settings       = settings;
     this.apps           = apps;
     this.nanoSliderTray = nanoSliderTray;
 }
示例#5
0
        public TrayApplicationContext(Sett settings)
        {
            this.settings = settings;
            ;
            ContextMenu _trayMenu = new ContextMenu {
            };

            _trayIcon.Icon = GetIcon(settings.trayBarIcon)[0];
            _trayIcon.Text = Application.ProductName + " - Ver: " + Application.ProductVersion;
            // Main menu
            appConfig    = _trayMenu.MenuItems.Add("Volume Settings", configClick);
            settingsmenu = _trayMenu.MenuItems.Add("Midi2Vol Settings");
            icon         = _trayMenu.MenuItems.Add("Icon Settings");
            _trayMenu.MenuItems.Add("-");
            exit = _trayMenu.MenuItems.Add("Exit", ExitClick);

            // Settings submenu
            noti = settingsmenu.MenuItems.Add("Notify", notif);
            if (settings.notifyApp)
            {
                noti.Checked = true;
            }

            runStartup = settingsmenu.MenuItems.Add("Run on StartUp", startupClick);
            if (settings.bootStartUp)
            {
                runStartup.Checked = true;
            }

            notifyStatus = settingsmenu.MenuItems.Add("Notify Status", notifS);
            if (settings.notifyStatus)
            {
                notifyStatus.Checked = true;
            }

            // Icon submenu
            iconSlider  = icon.MenuItems.Add("Default", clickSlider);
            iconBento   = icon.MenuItems.Add("NanoBento", clickBento);
            iconWavez   = icon.MenuItems.Add("NanoWavez", clickWavez);
            iconMizu    = icon.MenuItems.Add("NanoMizu", clickMizu);
            iconWhite   = icon.MenuItems.Add("NanoWhite", clickWhite);
            iconDynamic = icon.MenuItems.Add("NanoDynamic", clickDynamic);


            switch (settings.trayBarIcon)
            {
            case "NanoSlider":
                iconSlider.Checked = true;
                break;

            case "NanoBento":
                iconBento.Checked = true;
                break;

            case "NanoWavez":
                iconWavez.Checked = true;
                break;

            case "NanoMizu":
                iconMizu.Checked = true;
                break;

            case "NanoWhite":
                iconWhite.Checked = true;
                break;

            case "NanoDynamic":
                iconDynamic.Checked = true;
                break;

            default:
                iconSlider.Checked = true;
                break;
            }

            _trayIcon.ContextMenu = _trayMenu;
            _trayIcon.Visible     = true;
        }