Exemple #1
0
        /// <summary>
        /// Yava implementation.
        /// </summary>
        /// <param name="settingsFilepath">
        /// Path to the settings file to use.
        /// </param>
        /// <param name="foldersFilepath">
        /// Path to the folders file to use.
        /// </param>
        public Yava(String settingsFilepath, String foldersFilepath)
        {
            // form:
            this.DoubleBuffered = true;
            this.Icon = Util.ResourceAsIcon("Yava.Resources.gnome-joystick.ico");
            this.MinimumSize = new Size(640, 480);
            this.Text = "Yava Launcher";

            // gui components:
            foldersListView = new DoubleBufferedListView();
            foldersListView.Columns.Add("Folders");
            foldersListView.Dock = DockStyle.Left;
            foldersListView.Font = new Font("Verdana", 9);
            foldersListView.HideSelection = false;
            foldersListView.MultiSelect = true;
            foldersListView.FullRowSelect = true;
            foldersListView.ShowItemToolTips = true;
            foldersListView.View = View.Details;
            foldersListView.Width = 200;

            filesListView = new DoubleBufferedListView();
            filesListView.Columns.Add("Files");
            filesListView.Dock = DockStyle.Fill;
            filesListView.Font = new Font("Verdana", 9);
            filesListView.HideSelection = false;
            filesListView.FullRowSelect = true;
            filesListView.MultiSelect = false;
            filesListView.ShowItemToolTips = true;
            filesListView.View = View.Details;
            filesListView.Width = 400;

            Splitter splitter = new Splitter();
            splitter.Dock = DockStyle.Left;

            Controls.Add(filesListView);
            Controls.Add(splitter);
            Controls.Add(foldersListView);

            // settings:
            this.settingsFilepath = settingsFilepath;
            this.settings = SettingsLoad();

            // folders:
            this.foldersFilepath = foldersFilepath;
            this.foldersFileReader = new FoldersFileReader();

            // remembering selected folders and files:
            this.lastSelectedFolderName = null;
            this.folderNameToLastSelectedFilePath = new Dictionary<String, String>();

            // executing files:
            this.currentFileProcess = null;

            // apply settings before wiring events:
            this.Width = settings.LastYavaFormWidth;
            this.Height = settings.LastYavaFormHeight;
            this.foldersListView.Width = settings.LastFoldersListViewWidth;
            this.filesListView.Width = settings.LastFilesListViewWidth;
            this.lastSelectedFolderName = settings.LastSelectedFolderName;
            this.folderNameToLastSelectedFilePath = settings.FolderNameToLastSelectedFilePath;

            // wire events - form:
            this.FormClosing += OnFormClosing;
            this.ResizeEnd += OnResizeEnd;

            // wire events - listviews:
            foldersListView.ItemSelectionChanged += OnFoldersListViewItemSelectionChanged;
            filesListView.ItemSelectionChanged += OnFilesListViewItemSelectionChanged;

            // wire events - splitter:
            splitter.SplitterMoved += OnSplitterMoved;

            // wire events - keyboard:
            foldersListView.KeyDown += OnFoldersListViewKeyDown;
            filesListView.KeyDown += OnFilesListViewKeyDown;

            // wire events - keyboard global hotkeys:
            KeyboardHook.Hooker.Add("Kill Process", Keys.K, Keys.Control | Keys.Shift);
            KeyboardHook.Hooker.Add("Close Process", Keys.C, Keys.Control | Keys.Shift);
            KeyboardHook.Hooker.HotkeyDown += OnHotkeyDown;

            // wire events - mouse:
            filesListView.MouseDoubleClick += OnFilesListViewMouseDoubleClick;

            // initialize content and hotkeys
            // (both can raise exceptions, appropriate messageboxes will be displayed):
            LoadContent();
            GlobalHotkeysHook();
        }
Exemple #2
0
        /// <summary>
        /// Yava implementation.
        /// </summary>
        /// <param name="settingsFilepath">
        /// Path to the settings file to use.
        /// </param>
        /// <param name="foldersFilepath">
        /// Path to the folders file to use.
        /// </param>
        public Yava(String settingsFilepath, String foldersFilepath)
        {
            // form:
            this.DoubleBuffered = true;
            this.Icon           = Util.ResourceAsIcon("Yava.Resources.gnome-joystick.ico");
            this.MinimumSize    = new Size(640, 480);
            this.Text           = "Yava Launcher";

            // gui components:
            foldersListView = new DoubleBufferedListView();
            foldersListView.Columns.Add("Folders");
            foldersListView.Dock             = DockStyle.Left;
            foldersListView.Font             = new Font("Verdana", 9);
            foldersListView.HideSelection    = false;
            foldersListView.MultiSelect      = true;
            foldersListView.FullRowSelect    = true;
            foldersListView.ShowItemToolTips = true;
            foldersListView.View             = View.Details;
            foldersListView.Width            = 200;

            filesListView = new DoubleBufferedListView();
            filesListView.Columns.Add("Files");
            filesListView.Dock             = DockStyle.Fill;
            filesListView.Font             = new Font("Verdana", 9);
            filesListView.HideSelection    = false;
            filesListView.FullRowSelect    = true;
            filesListView.MultiSelect      = false;
            filesListView.ShowItemToolTips = true;
            filesListView.View             = View.Details;
            filesListView.Width            = 400;

            Splitter splitter = new Splitter();

            splitter.Dock = DockStyle.Left;

            Controls.Add(filesListView);
            Controls.Add(splitter);
            Controls.Add(foldersListView);

            // settings:
            this.settingsFilepath = settingsFilepath;
            this.settings         = SettingsLoad();

            // folders:
            this.foldersFilepath   = foldersFilepath;
            this.foldersFileReader = new FoldersFileReader();

            // remembering selected folders and files:
            this.lastSelectedFolderName           = null;
            this.folderNameToLastSelectedFilePath = new Dictionary <String, String>();

            // executing files:
            this.currentFileProcess = null;

            // apply settings before wiring events:
            this.Width  = settings.LastYavaFormWidth;
            this.Height = settings.LastYavaFormHeight;
            this.foldersListView.Width            = settings.LastFoldersListViewWidth;
            this.filesListView.Width              = settings.LastFilesListViewWidth;
            this.lastSelectedFolderName           = settings.LastSelectedFolderName;
            this.folderNameToLastSelectedFilePath = settings.FolderNameToLastSelectedFilePath;

            // wire events - form:
            this.FormClosing += OnFormClosing;
            this.ResizeEnd   += OnResizeEnd;

            // wire events - listviews:
            foldersListView.ItemSelectionChanged += OnFoldersListViewItemSelectionChanged;
            filesListView.ItemSelectionChanged   += OnFilesListViewItemSelectionChanged;

            // wire events - splitter:
            splitter.SplitterMoved += OnSplitterMoved;

            // wire events - keyboard:
            foldersListView.KeyDown += OnFoldersListViewKeyDown;
            filesListView.KeyDown   += OnFilesListViewKeyDown;

            // wire events - keyboard global hotkeys:
            KeyboardHook.Hooker.Add("Kill Process", Keys.K, Keys.Control | Keys.Shift);
            KeyboardHook.Hooker.Add("Close Process", Keys.C, Keys.Control | Keys.Shift);
            KeyboardHook.Hooker.HotkeyDown += OnHotkeyDown;

            // wire events - mouse:
            filesListView.MouseDoubleClick += OnFilesListViewMouseDoubleClick;

            // initialize content and hotkeys
            // (both can raise exceptions, appropriate messageboxes will be displayed):
            LoadContent();
            GlobalHotkeysHook();
        }