public PreferencesDialog(MainWindow mainWindow)
        {
            this.engineSettings = SettingsManager.EngineSettings;
            this.prefSettings = SettingsManager.Preferences;
            this.labelController = mainWindow.LabelController;
            this.trayIcon = mainWindow.TrayIcon;
            this.interfaceSettings = mainWindow.InterfaceSettings;

            Build();
            buildFoldersPanel();
            buildImportPanel();
            buildLabelPage();
            buildConnectionPage();
            restorePreferences();
            BuildGeneralPage();
            SetNames ();
            upnpCheckBox.Toggled += OnUpnpCheckBoxToggled;
            spinMaxActive.Sensitive = false;
            spinMaxSeed.Sensitive = false;
            //			spinMaxActive.ValueChanged += delegate {
            //				DownloadQueueService queue = ServiceManager.Get <DownloadQueueService> ();
            //				queue.MaxActive = spinMaxActive.ValueAsInt;
            //			};
            spinMaxDownload.ValueChanged += delegate {
                DownloadQueueService queue = ServiceManager.Get <DownloadQueueService> ();
                queue.MaxDownloads = spinMaxActive.ValueAsInt;
            };
            //			spinMaxSeed.ValueChanged += delegate {
            //				DownloadQueueService queue = ServiceManager.Get <DownloadQueueService> ();
            //				queue.MaxSeeds = spinMaxActive.ValueAsInt;
            //			};
        }
Example #2
0
        public MainClass(string [] args)
        {
            Ticker.Tick();

            // required for the MS .NET runtime that doesn't initialize glib automatically
            if (!GLib.Thread.Supported)
                GLib.Thread.Init();

            // Connect to dbus
            DBusInstance DBusInstance = ServiceManager.Get <DBusInstance> ();
            DBusInstance.Initialise ();

            if (DBusInstance.AlreadyRunning)
            {
                Console.WriteLine("Already running");
                DBusInstance.CommandParser.ParseCommands (args);
                return;
            }

            DBusInstance.CommandParser.RunCommand += HandleCommand;

            Ticker.Tick();
            CheckDataFolders();
            Ticker.Tock ("Checking folders");

            foreach (string arg in args)
                HandleCommand (arg);

            Ticker.Tick ();
            if (DebugEnabled) {
                BuildNlogConfig();
            }
            logger = DebugEnabled ? NLog.LogManager.GetCurrentClassLogger () : new EmptyLogger ();
            Ticker.Tock("NLog");

            logger.Info("Starting Monsoon");

            Ticker.Tick ();
            SetProcessName("monsoon");
            Ticker.Tock("Setting process name");

            string localeDir = Path.Combine(Defines.ApplicationDirectory, "locale");
            if (!Directory.Exists(localeDir)) {
                localeDir = Path.Combine(Defines.InstallPrefix, "share");
                localeDir = Path.Combine(localeDir, "locale");
            }

            Ticker.Tick ();
            Mono.Unix.Catalog.Init("monsoon", localeDir);
            logger.Debug("Using locale data from: {0}", localeDir);

            Application.Init("monsoon", ref args);
            Ticker.Tock("Locale");

            try {
                SettingsManager.Restore <EngineSettings> (SettingsManager.EngineSettings);
                SettingsManager.Restore <PreferencesSettings> (SettingsManager.Preferences);
                SettingsManager.Restore <TorrentSettings> (SettingsManager.DefaultTorrentSettings);
            }
            catch (Exception ex) {
                logger.Error("Couldn't restore old settings: {0}", ex.Message);
            }

            try
            {
                Ticker.Tick();
                mainWindow = new MainWindow ();
                Ticker.Tock ("Instantiating window");

            }
            catch(Exception e)
            {
                logger.ErrorException(e.Message, e);
                Environment.Exit (0);
            }

            LoadAddins ();

            GLib.ExceptionManager.UnhandledException += new GLib.UnhandledExceptionHandler(OnUnhandledException);

            Ticker.Tock ("Total time:");
            Application.Run();

            try {
                SettingsManager.Store <EngineSettings> (SettingsManager.EngineSettings);
                SettingsManager.Store <PreferencesSettings> (SettingsManager.Preferences);
                SettingsManager.Store <TorrentSettings> (SettingsManager.DefaultTorrentSettings);
            }
            catch (Exception ex) {
                logger.Error("Could save engine settings: {0}", ex.Message);
            }
            ServiceManager.Get <ListenPortController> ().Stop ();
            mainWindow.Destroy ();
        }