Beispiel #1
0
        /// <summary>Switches the active panel</summary>
        /// <param name="NewPanel">The new active panel</param>
        private void SwitchPanel(pluginner.FileListPanel NewPanel)
        {
            if (NewPanel == ActivePanel)
            {
                return;
            }
            PassivePanel = ActivePanel;
            ActivePanel  = NewPanel;
#if DEBUG
            string PanelName = (NewPanel == p1) ? "LEFT" : "RIGHT";
            Console.WriteLine("FOCUS DEBUG: The " + PanelName + " panel (" + NewPanel.FS.CurrentDirectory + ") got focus");
#endif
            this.Title = string.Format(
                "{0} {1} - {2}",
                Winforms.Application.ProductName,
                Winforms.Application.ProductVersion,
                ActivePanel.FS.CurrentDirectory
                );

            PassivePanel.UrlBox.BackgroundColor = Xwt.Drawing.Colors.LightBlue;
            ActivePanel.UrlBox.BackgroundColor  = Xwt.Drawing.Colors.DodgerBlue;
        }
Beispiel #2
0
        public MainWindow(string[] argv)
        {
            this.Title = "File Commander";
            this.MainMenu = WindowMenu;

            //build user interface
            MainMenu.Items.Add(mnuFile);
            MainMenu.Items.Add(mnuView);
            MainMenu.Items.Add(mnuNavigate);
            MainMenu.Items.Add(mnuTools);
            MainMenu.Items.Add(mnuHelp);

            mnuFile.SubMenu = new Xwt.Menu();
            mnuFile.SubMenu.Items.Add(mnuFileUserMenu);
            mnuFile.SubMenu.Items.Add(mnuFileView);
            mnuFile.SubMenu.Items.Add(mnuFileEdit);
            mnuFile.SubMenu.Items.Add(mnuFileCompare);
            mnuFile.SubMenu.Items.Add(mnuFileCopy);
            mnuFile.SubMenu.Items.Add(mnuFileMove);
            mnuFile.SubMenu.Items.Add(mnuFileNewDir);
            mnuFile.SubMenu.Items.Add(mnuFileRemove);
            mnuFile.SubMenu.Items.Add(new Xwt.SeparatorMenuItem());
            mnuFile.SubMenu.Items.Add(mnuFileAtributes);
            mnuFile.SubMenu.Items.Add(new Xwt.SeparatorMenuItem());
            mnuFile.SubMenu.Items.Add(mnuFileQuickSelect);
            mnuFile.SubMenu.Items.Add(mnuFileQuickUnselect);
            mnuFile.SubMenu.Items.Add(mnuFileSelectAll);
            mnuFile.SubMenu.Items.Add(mnuFileUnselect);
            mnuFile.SubMenu.Items.Add(mnuFileInvertSelection);
            mnuFile.SubMenu.Items.Add(new Xwt.SeparatorMenuItem());
            mnuFile.SubMenu.Items.Add(mnuFileExit);

            mnuView.SubMenu = new Xwt.Menu();
            mnuView.SubMenu.Items.Add(mnuViewShort);
            mnuView.SubMenu.Items.Add(mnuViewDetails);
            mnuView.SubMenu.Items.Add(mnuViewIcons);
            mnuView.SubMenu.Items.Add(mnuViewThumbs);
            mnuView.SubMenu.Items.Add(new Xwt.SeparatorMenuItem());
            mnuView.SubMenu.Items.Add(mnuViewQuickView);
            mnuView.SubMenu.Items.Add(mnuViewTree);
            mnuView.SubMenu.Items.Add(mnuViewPCPCconnect);
            mnuView.SubMenu.Items.Add(mnuViewPCNETPCconnect);
            mnuView.SubMenu.Items.Add(new Xwt.SeparatorMenuItem());
            mnuView.SubMenu.Items.Add(mnuViewByName);
            mnuView.SubMenu.Items.Add(mnuViewByType);
            mnuView.SubMenu.Items.Add(mnuViewByDate);
            mnuView.SubMenu.Items.Add(mnuViewBySize);
            mnuView.SubMenu.Items.Add(new Xwt.SeparatorMenuItem());
            mnuView.SubMenu.Items.Add(mnuViewNoFilter);
            mnuView.SubMenu.Items.Add(mnuViewWithFilter);
            mnuView.SubMenu.Items.Add(new Xwt.SeparatorMenuItem());
            mnuView.SubMenu.Items.Add(mnuViewKeybrdHelp); //these checkboxes are don't work, because no code was written
            mnuView.SubMenu.Items.Add(mnuViewInfobar);
            mnuView.SubMenu.Items.Add(mnuViewDiskButtons);

            mnuNavigate.SubMenu = new Xwt.Menu();
            mnuNavigate.SubMenu.Items.Add(mnuNavigateTree);
            mnuNavigate.SubMenu.Items.Add(mnuNavigateHistory);
            mnuNavigate.SubMenu.Items.Add(mnuNavigateFind);
            mnuNavigate.SubMenu.Items.Add(mnuNavigateReload);

            mnuTools.SubMenu = new Xwt.Menu();
            mnuTools.SubMenu.Items.Add(mnuToolsOptions);
            mnuTools.SubMenu.Items.Add(mnuToolsPluginManager);
            mnuTools.SubMenu.Items.Add(mnuToolsEditUserMenu);
            mnuTools.SubMenu.Items.Add(mnuToolsKeychains);
            mnuTools.SubMenu.Items.Add(mnuToolsConfigEdit);
            mnuTools.SubMenu.Items.Add(new Xwt.SeparatorMenuItem());
            mnuTools.SubMenu.Items.Add(mnuToolsDiskLabel);
            mnuTools.SubMenu.Items.Add(mnuToolsFormat);
            mnuTools.SubMenu.Items.Add(mnuToolsSysInfo);

            mnuHelp.SubMenu = new Xwt.Menu();
            mnuHelp.SubMenu.Items.Add(mnuHelpHelpMe);
            mnuHelp.SubMenu.Items.Add(mnuHelpDebug);
            mnuHelp.SubMenu.Items.Add(mnuHelpAbout);

            TranslateMenu(MainMenu);

            this.CloseRequested += new Xwt.CloseRequestedHandler(MainWindow_CloseRequested);
            PanelLayout.KeyReleased += new EventHandler<Xwt.KeyEventArgs>(PanelLayout_KeyReleased);
            mnuFileView.Clicked += (o, ea) => { PanelLayout_KeyReleased(o, new Xwt.KeyEventArgs(Xwt.Key.F3, Xwt.ModifierKeys.None, false, 0)); };
            mnuFileEdit.Clicked += (o, ea) => { PanelLayout_KeyReleased(o, new Xwt.KeyEventArgs(Xwt.Key.F4, Xwt.ModifierKeys.None, false, 0)); };
            mnuFileCopy.Clicked += (o, ea) => { PanelLayout_KeyReleased(o, new Xwt.KeyEventArgs(Xwt.Key.F5, Xwt.ModifierKeys.None, false, 0)); };
            mnuFileMove.Clicked += (o, ea) => { PanelLayout_KeyReleased(o, new Xwt.KeyEventArgs(Xwt.Key.F6, Xwt.ModifierKeys.None, false, 0)); };
            mnuFileNewDir.Clicked += (o, ea) => { PanelLayout_KeyReleased(o, new Xwt.KeyEventArgs(Xwt.Key.F7, Xwt.ModifierKeys.None, false, 0)); };
            mnuFileRemove.Clicked += (o, ea) => { PanelLayout_KeyReleased(o, new Xwt.KeyEventArgs(Xwt.Key.F8, Xwt.ModifierKeys.None, false, 0)); };
            mnuFileSelectAll.Clicked += (o, ea) => { ActivePanel.ListingView.Select(null); };
            mnuFileUnselect.Clicked += (o, ea) => { ActivePanel.ListingView.Unselect(); };
            mnuFileInvertSelection.Clicked += (o, ea) => { ActivePanel.ListingView.InvertSelection(); };
            mnuFileQuickSelect.Clicked += (o, ea) => { PanelLayout_KeyReleased(o, new Xwt.KeyEventArgs(Xwt.Key.NumPadAdd, Xwt.ModifierKeys.None, false, 0)); };
            mnuFileQuickUnselect.Clicked += (o, ea) => { PanelLayout_KeyReleased(o, new Xwt.KeyEventArgs(Xwt.Key.NumPadSubtract, Xwt.ModifierKeys.None, false, 0)); };
            mnuFileExit.Clicked += (o, ea) => { this.Close(); };
            mnuViewNoFilter.Clicked += (o, ea) => { ActivePanel.LoadDir(); };
            mnuViewWithFilter.Clicked += new EventHandler(mnuViewWithFilter_Clicked);
            mnuNavigateReload.Clicked += new EventHandler(mnuNavigateReload_Clicked);
            mnuToolsOptions.Clicked += new EventHandler(mnuToolsOptions_Clicked);
            mnuHelpDebug.Clicked += ShowDebugInfo;
            mnuHelpAbout.Clicked += new EventHandler(mnuHelpAbout_Clicked);

            Layout.PackStart(PanelLayout, true, Xwt.WidgetPlacement.Fill, Xwt.WidgetPlacement.Fill, -12, -6, -12,12);
            Layout.PackStart(KeyBoardHelp, false,Xwt.WidgetPlacement.End,Xwt.WidgetPlacement.Fill,-12,-12,-12);

            this.Content = Layout;

            //check settings
            if (fcmd.Properties.Settings.Default.UserTheme != null)
            {
                if (fcmd.Properties.Settings.Default.UserTheme != "")
                {
                    if (File.Exists(fcmd.Properties.Settings.Default.UserTheme))
                        stylist = new pluginner.Stylist(fcmd.Properties.Settings.Default.UserTheme);
                    else
                    {
                        Xwt.MessageDialog.ShowError(Locale.GetString("ThemeNotFound"), fcmd.Properties.Settings.Default.UserTheme);
                        Xwt.Application.Exit();
                    }
                }
            }

            //load bookmarks
            string BookmarksStore = null;
            if (fcmd.Properties.Settings.Default.BookmarksFile != null && fcmd.Properties.Settings.Default.BookmarksFile.Length > 0)
            {
                BookmarksStore = File.ReadAllText(fcmd.Properties.Settings.Default.BookmarksFile, Encoding.UTF8);
            }

            //build panels
            PanelLayout.Panel1.Content = new pluginner.FileListPanel(BookmarksStore, fcmd.Properties.Settings.Default.UserTheme, Properties.Settings.Default.InfoBarContent1, Properties.Settings.Default.InfoBarContent2); //Левая, правая где сторона? Улица, улица, ты, брат, пьяна!
            PanelLayout.Panel2.Content = new pluginner.FileListPanel(BookmarksStore, fcmd.Properties.Settings.Default.UserTheme, Properties.Settings.Default.InfoBarContent1, Properties.Settings.Default.InfoBarContent2);

            p1 = (PanelLayout.Panel1.Content as pluginner.FileListPanel);
            p2 = (PanelLayout.Panel2.Content as pluginner.FileListPanel);
            p1.OpenFile += new pluginner.TypedEvent<string>(Panel_OpenFile);
            p2.OpenFile += new pluginner.TypedEvent<string>(Panel_OpenFile);

            List<pluginner.ListView2.CollumnInfo> LVCols = new List<pluginner.ListView2.CollumnInfo>();
            LVCols.Add(new pluginner.ListView2.CollumnInfo() { Title = "", Tag = "Icon", Width = 16, Visible = true });
            LVCols.Add(new pluginner.ListView2.CollumnInfo() { Title = "URL", Tag = "Path", Width = 0, Visible = false });
            LVCols.Add(new pluginner.ListView2.CollumnInfo() { Title = Locale.GetString("FName"), Tag = "FName", Width = 100, Visible = true });
            LVCols.Add(new pluginner.ListView2.CollumnInfo() { Title = Locale.GetString("FSize"), Tag = "FSize", Width = 50, Visible = true });
            LVCols.Add(new pluginner.ListView2.CollumnInfo() { Title = Locale.GetString("FDate"), Tag = "FDate", Width = 50, Visible = true });

            p1.FS = new base_plugins.fs.localFileSystem();

            p1.ListingView.Collumns = LVCols.ToArray();

            p2.FS = new base_plugins.fs.localFileSystem();
            p2.ListingView.Collumns = LVCols.ToArray();

            p1.GotFocus += (o, ea) => { SwitchPanel(p1); };
            p2.GotFocus += (o, ea) => { SwitchPanel(p2); };

            //build keyboard help bar
            for (int i = 1; i < 11; i++)
            {
                KeybHelpButtons[i] = new KeyboardHelpButton();
                KeybHelpButtons[i].FKey = "F" + i;
                KeybHelpButtons[i].Text = Locale.GetString("FCF" + i);
                KeybHelpButtons[i].CanGetFocus = false;
                KeyBoardHelp.PackStart(KeybHelpButtons[i],true,Xwt.WidgetPlacement.Fill,Xwt.WidgetPlacement.Fill,0,-6,0,-3);
            }
            KeybHelpButtons[1].Clicked += (o, ea) => { this.PanelLayout_KeyReleased(this,new Xwt.KeyEventArgs(Xwt.Key.F1,Xwt.ModifierKeys.None,false,0)); };
            KeybHelpButtons[2].Clicked += (o, ea) => { this.PanelLayout_KeyReleased(this, new Xwt.KeyEventArgs(Xwt.Key.F2, Xwt.ModifierKeys.None, false, 0)); };
            KeybHelpButtons[3].Clicked += (o, ea) => { this.PanelLayout_KeyReleased(this, new Xwt.KeyEventArgs(Xwt.Key.F3, Xwt.ModifierKeys.None, false, 0)); };
            KeybHelpButtons[4].Clicked += (o, ea) => { this.PanelLayout_KeyReleased(this, new Xwt.KeyEventArgs(Xwt.Key.F4, Xwt.ModifierKeys.None, false, 0)); };
            KeybHelpButtons[5].Clicked += (o, ea) => { this.PanelLayout_KeyReleased(this, new Xwt.KeyEventArgs(Xwt.Key.F5, Xwt.ModifierKeys.None, false, 0)); };
            KeybHelpButtons[6].Clicked += (o, ea) => { this.PanelLayout_KeyReleased(this, new Xwt.KeyEventArgs(Xwt.Key.F6, Xwt.ModifierKeys.None, false, 0)); };
            KeybHelpButtons[7].Clicked += (o, ea) => { this.PanelLayout_KeyReleased(this, new Xwt.KeyEventArgs(Xwt.Key.F7, Xwt.ModifierKeys.None, false, 0)); };
            KeybHelpButtons[8].Clicked += (o, ea) => { this.PanelLayout_KeyReleased(this, new Xwt.KeyEventArgs(Xwt.Key.F8, Xwt.ModifierKeys.None, false, 0)); };
            KeybHelpButtons[9].Clicked += (o, ea) => { this.PanelLayout_KeyReleased(this, new Xwt.KeyEventArgs(Xwt.Key.F9, Xwt.ModifierKeys.None, false, 0)); };
            KeybHelpButtons[10].Clicked += (o, ea) => { this.PanelLayout_KeyReleased(this, new Xwt.KeyEventArgs(Xwt.Key.F10, Xwt.ModifierKeys.None, false, 0)); };
            //todo: replace this shit-code with huge using of KeybHelpButtons[n].Tag property (note that it's difficult to be realized due to c# restrictions)

            //apply user's settings
            //milliseconds for double click
            pluginner.ListView2.MillisecondsForDoubleClick = Winforms.SystemInformation.DoubleClickTime;
            //window size
            this.Width = fcmd.Properties.Settings.Default.WinWidth;
            this.Height = fcmd.Properties.Settings.Default.WinHeight;
            //file size display policy
            char[] Policies = fcmd.Properties.Settings.Default.SizeShorteningPolicy.ToCharArray();

            //load last directory or the current directory if the last directory hasn't remembered
            if (Properties.Settings.Default.Panel1URL.Length != 0)
                p1.LoadDir(Properties.Settings.Default.Panel1URL, ConvertSDP(Policies[0]), ConvertSDP(Policies[1]), ConvertSDP(Policies[2]));
            else
                p1.LoadDir("file://" + System.IO.Directory.GetCurrentDirectory(), ConvertSDP(Policies[0]), ConvertSDP(Policies[1]), ConvertSDP(Policies[2]));

            if (Properties.Settings.Default.Panel2URL.Length != 0)
                p2.LoadDir(Properties.Settings.Default.Panel2URL, ConvertSDP(Policies[0]), ConvertSDP(Policies[1]), ConvertSDP(Policies[2]));
            else
                p2.LoadDir("file://" + System.IO.Directory.GetCurrentDirectory(), ConvertSDP(Policies[0]), ConvertSDP(Policies[1]), ConvertSDP(Policies[2]));

            //default panel
            switch (fcmd.Properties.Settings.Default.LastActivePanel)
            {
                case 1:
                    p1.ListingView.SetFocus();
                    ActivePanel = p1; PassivePanel = p2;
                    if(argv.Count() == 1) p1.LoadDir(argv[0]);
                    break;
                case 2:
                    p2.ListingView.SetFocus();
                    ActivePanel = p2; PassivePanel = p1;
                    if (argv.Count() == 1) p2.LoadDir(argv[0]);
                    break;
                default:
                    p1.ListingView.SetFocus();
                    ActivePanel = p1; PassivePanel = p2;
                    if (argv.Count() == 1) p1.LoadDir(argv[0]);
                    break;
            }
            #if DEBUG
            Console.WriteLine("DEBUG: MainWindow initialization has been completed.");
            #endif
        }
Beispiel #3
0
        /// <summary>Switches the active panel</summary>
        /// <param name="NewPanel">The new active panel</param>
        private void SwitchPanel(pluginner.FileListPanel NewPanel)
        {
            if (NewPanel == ActivePanel) return;
            PassivePanel = ActivePanel;
            ActivePanel = NewPanel;
            #if DEBUG
            string PanelName = (NewPanel == p1) ? "LEFT" : "RIGHT";
            Console.WriteLine("FOCUS DEBUG: The " + PanelName + " panel (" + NewPanel.FS.CurrentDirectory + ") got focus");
            #endif
            this.Title = string.Format(
                "{0} {1} - {2}",
                Winforms.Application.ProductName,
                Winforms.Application.ProductVersion,
                ActivePanel.FS.CurrentDirectory
            );

            PassivePanel.UrlBox.BackgroundColor = Xwt.Drawing.Colors.LightBlue;
            ActivePanel.UrlBox.BackgroundColor = Xwt.Drawing.Colors.DodgerBlue;
        }
Beispiel #4
0
        /// <summary>The entry form's keyboard keypress handler (except commandbar keypresses)</summary>
        void PanelLayout_KeyReleased(object sender, Xwt.KeyEventArgs e)
        {
#if DEBUG
            pluginner.FileListPanel p1 = (PanelLayout.Panel1.Content as pluginner.FileListPanel);
            pluginner.FileListPanel p2 = (PanelLayout.Panel2.Content as pluginner.FileListPanel);
            Console.WriteLine("KEYBOARD DEBUG: " + e.Modifiers.ToString() + "+" + e.Key.ToString() + " was pressed. Panels focuses: " + (ActivePanel == p1) + " | " + (ActivePanel == p2));
#endif
            if (e.Key == Xwt.Key.Return)
            {
                return;                                     //ENTER presses are handled by other event
            }
            string URL1;
            if (ActivePanel.ListingView.SelectedRow > -1)
            {
                URL1 = ActivePanel.GetValue(ActivePanel.dfURL);
            }
            else
            {
                URL1 = null;
            }
            pluginner.IFSPlugin FS1 = ActivePanel.FS;

            string URL2;
            if (PassivePanel.ListingView.SelectedRow > -1)
            {
                URL2 = PassivePanel.GetValue(PassivePanel.dfURL);
            }
            else
            {
                URL2 = null;
            }
            pluginner.IFSPlugin FS2 = PassivePanel.FS;

            switch (e.Key)
            {
            case Xwt.Key.NumPadAdd:                     //[+] gray - add selection
                string Filter = @"*.*";

                InputBox     ibx_qs    = new InputBox(Locale.GetString("QuickSelect"), Filter);
                Xwt.CheckBox chkRegExp = new Xwt.CheckBox(Locale.GetString("NameFilterUseRegExp"));
                ibx_qs.OtherWidgets.Add(chkRegExp, 0, 0);
                if (!ibx_qs.ShowDialog())
                {
                    return;
                }
                Filter = ibx_qs.Result;
                if (chkRegExp.State == Xwt.CheckBoxState.Off)
                {
                    Filter = Filter.Replace(".", @"\.");
                    Filter = Filter.Replace("*", ".*");
                    Filter = Filter.Replace("?", ".");
                }
                try
                {
                    System.Text.RegularExpressions.Regex re = new System.Text.RegularExpressions.Regex(Filter);

                    int Count = 0;
                    foreach (pluginner.ListView2Item lvi in ActivePanel.ListingView.Items)
                    {
                        if (re.IsMatch(lvi.Data[1].ToString()))
                        {
                            ActivePanel.ListingView.Select(lvi);
                            Count++;
                        }
                    }

                    ActivePanel.StatusBar.Text = string.Format(Locale.GetString("NameFilterFound"), Filter, Count);
                }
                catch (Exception ex)
                {
                    Xwt.MessageDialog.ShowError(Locale.GetString("NameFilterError"), ex.Message);
                }
                return;

            case Xwt.Key.NumPadSubtract:                     //[-] gray - add selection
                string Filter_qus = @"*.*";

                InputBox     ibx_qus       = new InputBox(Locale.GetString("QuickUnselect"), Filter_qus);
                Xwt.CheckBox chkRegExp_qus = new Xwt.CheckBox(Locale.GetString("NameFilterUseRegExp"));
                ibx_qus.OtherWidgets.Add(chkRegExp_qus, 0, 0);
                if (!ibx_qus.ShowDialog())
                {
                    return;
                }
                Filter_qus = ibx_qus.Result;
                if (chkRegExp_qus.State == Xwt.CheckBoxState.Off)
                {
                    Filter_qus = Filter_qus.Replace(".", @"\.");
                    Filter_qus = Filter_qus.Replace("*", ".*");
                    Filter_qus = Filter_qus.Replace("?", ".");
                }
                try
                {
                    System.Text.RegularExpressions.Regex re = new System.Text.RegularExpressions.Regex(Filter_qus);

                    int Count_qus = 0;
                    foreach (pluginner.ListView2Item lvi in ActivePanel.ListingView.Items)
                    {
                        if (re.IsMatch(lvi.Data[1].ToString()))
                        {
                            ActivePanel.ListingView.Unselect(lvi);
                            Count_qus++;
                        }
                    }
                }
                catch (Exception ex)
                {
                    Xwt.MessageDialog.ShowError(Locale.GetString("NameFilterError"), ex.Message);
                }
                return;

            //F KEYS
            case Xwt.Key.F3:                     //F3: View. Shift+F3: View as text.
                if (URL1 == null)
                {
                    return;
                }

                if (!FS1.FileExists(URL1))
                {
                    Xwt.MessageDialog.ShowWarning(string.Format(Locale.GetString("FileNotFound"), ActivePanel.GetValue(ActivePanel.dfDisplayName)));
                    return;
                }

                VEd V = new VEd();
                if (e.Modifiers == Xwt.ModifierKeys.None)
                {
                    V.LoadFile(URL1, FS1, false); V.Show();
                }
                else if (e.Modifiers == Xwt.ModifierKeys.Shift)
                {
                    V.LoadFile(URL1, FS1, new base_plugins.ve.PlainText(), false); V.Show();
                }
                //todo: handle Ctrl+F3 (Sort by name).
                return;

            case Xwt.Key.F4:                     //F4: Edit. Shift+F4: Edit as txt.
                if (URL1 == null)
                {
                    return;
                }

                if (!FS1.FileExists(URL1))
                {
                    Xwt.MessageDialog.ShowWarning(string.Format(Locale.GetString("FileNotFound"), ActivePanel.GetValue(ActivePanel.dfDisplayName)));
                    return;
                }

                VEd E = new VEd();
                if (e.Modifiers == Xwt.ModifierKeys.None)
                {
                    E.LoadFile(URL1, FS1, true); E.Show();
                }
                else if (e.Modifiers == Xwt.ModifierKeys.Shift)
                {
                    E.LoadFile(URL1, FS1, new base_plugins.ve.PlainText(), true); E.Show();
                }
                //todo: handle Ctrl+F4 (Sort by extension).
                return;

            case Xwt.Key.F5:                     //F5: Copy.
                if (URL1 == null)
                {
                    return;
                }
                Cp();
                //todo: handle Ctrl+F5 (Sort by timestamp).
                return;

            case Xwt.Key.F6:                     //F6: Move/Rename.
                if (URL1 == null)
                {
                    return;
                }
                Mv();
                //todo: handle Ctrl+F6 (Sort by size).
                return;

            case Xwt.Key.F7:                     //F7: New directory.
                InputBox ibx = new InputBox(Locale.GetString("NewDirURL"), ActivePanel.FS.CurrentDirectory + Locale.GetString("NewDirTemplate"));
                if (ibx.ShowDialog())
                {
                    MkDir(ibx.Result);
                }
                return;

            case Xwt.Key.F8:                     //F8: delete
                if (URL1 == null)
                {
                    return;
                }
                Rm();
                //todo: move to trash can/recycle bin & handle Shit+F8 (remove completely)
                return;

            case Xwt.Key.F10:                     //F10: Exit
                //todo: ask user, are it really want to close FC?
                Xwt.Application.Exit();
                //todo: handle Alt+F10 (directory tree)
                return;
            }
#if DEBUG
            Console.WriteLine("KEYBOARD DEBUG: the key isn't handled");
#endif
        }
Beispiel #5
0
        KeyboardHelpButton[] KeybHelpButtons = new KeyboardHelpButton[11];        //одна лишняя, которая нумбер [0]


        public MainWindow()
        {
            this.Title    = "File Commander";
            this.MainMenu = WindowMenu;

            //build user interface
            MainMenu.Items.Add(mnuFile);
            MainMenu.Items.Add(mnuView);
            MainMenu.Items.Add(mnuNavigate);
            MainMenu.Items.Add(mnuTools);
            MainMenu.Items.Add(mnuHelp);

            mnuFile.SubMenu = new Xwt.Menu();
            mnuFile.SubMenu.Items.Add(mnuFileUserMenu);
            mnuFile.SubMenu.Items.Add(mnuFileView);
            mnuFile.SubMenu.Items.Add(mnuFileEdit);
            mnuFile.SubMenu.Items.Add(mnuFileCompare);
            mnuFile.SubMenu.Items.Add(mnuFileCopy);
            mnuFile.SubMenu.Items.Add(mnuFileMove);
            mnuFile.SubMenu.Items.Add(mnuFileNewDir);
            mnuFile.SubMenu.Items.Add(mnuFileRemove);
            mnuFile.SubMenu.Items.Add(new Xwt.SeparatorMenuItem());
            mnuFile.SubMenu.Items.Add(mnuFileAtributes);
            mnuFile.SubMenu.Items.Add(new Xwt.SeparatorMenuItem());
            mnuFile.SubMenu.Items.Add(mnuFileQuickSelect);
            mnuFile.SubMenu.Items.Add(mnuFileQuickUnselect);
            mnuFile.SubMenu.Items.Add(mnuFileSelectAll);
            mnuFile.SubMenu.Items.Add(mnuFileUnselect);
            mnuFile.SubMenu.Items.Add(mnuFileInvertSelection);
            mnuFile.SubMenu.Items.Add(new Xwt.SeparatorMenuItem());
            mnuFile.SubMenu.Items.Add(mnuFileExit);

            mnuView.SubMenu = new Xwt.Menu();
            mnuView.SubMenu.Items.Add(mnuViewShort);
            mnuView.SubMenu.Items.Add(mnuViewDetails);
            mnuView.SubMenu.Items.Add(mnuViewIcons);
            mnuView.SubMenu.Items.Add(mnuViewThumbs);
            mnuView.SubMenu.Items.Add(new Xwt.SeparatorMenuItem());
            mnuView.SubMenu.Items.Add(mnuViewQuickView);
            mnuView.SubMenu.Items.Add(mnuViewTree);
            mnuView.SubMenu.Items.Add(mnuViewPCPCconnect);
            mnuView.SubMenu.Items.Add(mnuViewPCNETPCconnect);
            mnuView.SubMenu.Items.Add(new Xwt.SeparatorMenuItem());
            mnuView.SubMenu.Items.Add(mnuViewByName);
            mnuView.SubMenu.Items.Add(mnuViewByType);
            mnuView.SubMenu.Items.Add(mnuViewByDate);
            mnuView.SubMenu.Items.Add(mnuViewBySize);
            mnuView.SubMenu.Items.Add(new Xwt.SeparatorMenuItem());
            mnuView.SubMenu.Items.Add(mnuViewNoFilter);
            mnuView.SubMenu.Items.Add(mnuViewWithFilter);
            mnuView.SubMenu.Items.Add(new Xwt.SeparatorMenuItem());
            mnuView.SubMenu.Items.Add(mnuViewKeybrdHelp);             //these checkboxes are don't work, because no code was written
            mnuView.SubMenu.Items.Add(mnuViewInfobar);
            mnuView.SubMenu.Items.Add(mnuViewDiskButtons);

            mnuNavigate.SubMenu = new Xwt.Menu();
            mnuNavigate.SubMenu.Items.Add(mnuNavigateTree);
            mnuNavigate.SubMenu.Items.Add(mnuNavigateHistory);
            mnuNavigate.SubMenu.Items.Add(mnuNavigateFind);
            mnuNavigate.SubMenu.Items.Add(mnuNavigateReload);

            mnuTools.SubMenu = new Xwt.Menu();
            mnuTools.SubMenu.Items.Add(mnuToolsOptions);
            mnuTools.SubMenu.Items.Add(mnuToolsPluginManager);
            mnuTools.SubMenu.Items.Add(mnuToolsEditUserMenu);
            mnuTools.SubMenu.Items.Add(mnuToolsKeychains);
            mnuTools.SubMenu.Items.Add(mnuToolsConfigEdit);
            mnuTools.SubMenu.Items.Add(new Xwt.SeparatorMenuItem());
            mnuTools.SubMenu.Items.Add(mnuToolsDiskLabel);
            mnuTools.SubMenu.Items.Add(mnuToolsFormat);
            mnuTools.SubMenu.Items.Add(mnuToolsSysInfo);

            mnuHelp.SubMenu = new Xwt.Menu();
            mnuHelp.SubMenu.Items.Add(mnuHelpHelpMe);
            mnuHelp.SubMenu.Items.Add(mnuHelpDebug);
            mnuHelp.SubMenu.Items.Add(mnuHelpAbout);

            TranslateMenu(MainMenu);

            this.CloseRequested            += new Xwt.CloseRequestedHandler(MainWindow_CloseRequested);
            PanelLayout.KeyReleased        += new EventHandler <Xwt.KeyEventArgs>(PanelLayout_KeyReleased);
            mnuFileView.Clicked            += (o, ea) => { PanelLayout_KeyReleased(o, new Xwt.KeyEventArgs(Xwt.Key.F3, Xwt.ModifierKeys.None, false, 0)); };
            mnuFileEdit.Clicked            += (o, ea) => { PanelLayout_KeyReleased(o, new Xwt.KeyEventArgs(Xwt.Key.F4, Xwt.ModifierKeys.None, false, 0)); };
            mnuFileCopy.Clicked            += (o, ea) => { PanelLayout_KeyReleased(o, new Xwt.KeyEventArgs(Xwt.Key.F5, Xwt.ModifierKeys.None, false, 0)); };
            mnuFileMove.Clicked            += (o, ea) => { PanelLayout_KeyReleased(o, new Xwt.KeyEventArgs(Xwt.Key.F6, Xwt.ModifierKeys.None, false, 0)); };
            mnuFileNewDir.Clicked          += (o, ea) => { PanelLayout_KeyReleased(o, new Xwt.KeyEventArgs(Xwt.Key.F7, Xwt.ModifierKeys.None, false, 0)); };
            mnuFileRemove.Clicked          += (o, ea) => { PanelLayout_KeyReleased(o, new Xwt.KeyEventArgs(Xwt.Key.F8, Xwt.ModifierKeys.None, false, 0)); };
            mnuFileSelectAll.Clicked       += (o, ea) => { ActivePanel.ListingView.Select(null); };
            mnuFileUnselect.Clicked        += (o, ea) => { ActivePanel.ListingView.Unselect(); };
            mnuFileInvertSelection.Clicked += (o, ea) => { ActivePanel.ListingView.InvertSelection(); };
            mnuFileQuickSelect.Clicked     += (o, ea) => { PanelLayout_KeyReleased(o, new Xwt.KeyEventArgs(Xwt.Key.NumPadAdd, Xwt.ModifierKeys.None, false, 0)); };
            mnuFileQuickUnselect.Clicked   += (o, ea) => { PanelLayout_KeyReleased(o, new Xwt.KeyEventArgs(Xwt.Key.NumPadSubtract, Xwt.ModifierKeys.None, false, 0)); };
            mnuFileExit.Clicked            += (o, ea) => { this.Close(); };
            mnuViewNoFilter.Clicked        += (o, ea) => { ActivePanel.LoadDir(); };
            mnuViewWithFilter.Clicked      += new EventHandler(mnuViewWithFilter_Clicked);
            mnuNavigateReload.Clicked      += new EventHandler(mnuNavigateReload_Clicked);
            mnuToolsOptions.Clicked        += new EventHandler(mnuToolsOptions_Clicked);
            mnuHelpDebug.Clicked           += ShowDebugInfo;
            mnuHelpAbout.Clicked           += new EventHandler(mnuHelpAbout_Clicked);

            Layout.PackStart(PanelLayout, true, Xwt.WidgetPlacement.Fill, Xwt.WidgetPlacement.Fill, -12, -6, -12, 12);
            Layout.PackStart(KeyBoardHelp, false, Xwt.WidgetPlacement.End, Xwt.WidgetPlacement.Fill, -12, -12, -12);

            this.Content = Layout;

            //check settings
            if (fcmd.Properties.Settings.Default.UserTheme != null)
            {
                if (fcmd.Properties.Settings.Default.UserTheme != "")
                {
                    if (File.Exists(fcmd.Properties.Settings.Default.UserTheme))
                    {
                        stylist = new pluginner.Stylist(fcmd.Properties.Settings.Default.UserTheme);
                    }
                    else
                    {
                        Xwt.MessageDialog.ShowError(Locale.GetString("ThemeNotFound"), fcmd.Properties.Settings.Default.UserTheme);
                        Xwt.Application.Exit();
                    }
                }
            }

            //load bookmarks
            string BookmarksStore = null;

            if (fcmd.Properties.Settings.Default.BookmarksFile != null && fcmd.Properties.Settings.Default.BookmarksFile.Length > 0)
            {
                BookmarksStore = File.ReadAllText(fcmd.Properties.Settings.Default.BookmarksFile, Encoding.UTF8);
            }

            //build panels
            PanelLayout.Panel1.Content = new pluginner.FileListPanel(BookmarksStore, fcmd.Properties.Settings.Default.UserTheme, Properties.Settings.Default.InfoBarContent1, Properties.Settings.Default.InfoBarContent2);             //Левая, правая где сторона? Улица, улица, ты, брат, пьяна!
            PanelLayout.Panel2.Content = new pluginner.FileListPanel(BookmarksStore, fcmd.Properties.Settings.Default.UserTheme, Properties.Settings.Default.InfoBarContent1, Properties.Settings.Default.InfoBarContent2);

            p1           = (PanelLayout.Panel1.Content as pluginner.FileListPanel);
            p2           = (PanelLayout.Panel2.Content as pluginner.FileListPanel);
            p1.OpenFile += new pluginner.TypedEvent <string>(Panel_OpenFile);
            p2.OpenFile += new pluginner.TypedEvent <string>(Panel_OpenFile);

            List <pluginner.ListView2.CollumnInfo> LVCols = new List <pluginner.ListView2.CollumnInfo>();

            LVCols.Add(new pluginner.ListView2.CollumnInfo()
            {
                Title = "", Tag = "Icon", Width = 16, Visible = true
            });
            LVCols.Add(new pluginner.ListView2.CollumnInfo()
            {
                Title = "URL", Tag = "Path", Width = 0, Visible = false
            });
            LVCols.Add(new pluginner.ListView2.CollumnInfo()
            {
                Title = Locale.GetString("FName"), Tag = "FName", Width = 100, Visible = true
            });
            LVCols.Add(new pluginner.ListView2.CollumnInfo()
            {
                Title = Locale.GetString("FSize"), Tag = "FSize", Width = 50, Visible = true
            });
            LVCols.Add(new pluginner.ListView2.CollumnInfo()
            {
                Title = Locale.GetString("FDate"), Tag = "FDate", Width = 50, Visible = true
            });

            p1.FS = new base_plugins.fs.localFileSystem();
            p1.ListingView.Collumns = LVCols.ToArray();

            p2.FS = new base_plugins.fs.localFileSystem();
            p2.ListingView.Collumns = LVCols.ToArray();

            p1.GotFocus += (o, ea) => { SwitchPanel(p1); };
            p2.GotFocus += (o, ea) => { SwitchPanel(p2); };

            //build keyboard help bar
            for (int i = 1; i < 11; i++)
            {
                KeybHelpButtons[i]             = new KeyboardHelpButton();
                KeybHelpButtons[i].FKey        = "F" + i;
                KeybHelpButtons[i].Text        = Locale.GetString("FCF" + i);
                KeybHelpButtons[i].CanGetFocus = false;
                KeyBoardHelp.PackStart(KeybHelpButtons[i], true, Xwt.WidgetPlacement.Fill, Xwt.WidgetPlacement.Fill, 0, -6, 0, -3);
            }
            KeybHelpButtons[1].Clicked  += (o, ea) => { this.PanelLayout_KeyReleased(this, new Xwt.KeyEventArgs(Xwt.Key.F1, Xwt.ModifierKeys.None, false, 0)); };
            KeybHelpButtons[2].Clicked  += (o, ea) => { this.PanelLayout_KeyReleased(this, new Xwt.KeyEventArgs(Xwt.Key.F2, Xwt.ModifierKeys.None, false, 0)); };
            KeybHelpButtons[3].Clicked  += (o, ea) => { this.PanelLayout_KeyReleased(this, new Xwt.KeyEventArgs(Xwt.Key.F3, Xwt.ModifierKeys.None, false, 0)); };
            KeybHelpButtons[4].Clicked  += (o, ea) => { this.PanelLayout_KeyReleased(this, new Xwt.KeyEventArgs(Xwt.Key.F4, Xwt.ModifierKeys.None, false, 0)); };
            KeybHelpButtons[5].Clicked  += (o, ea) => { this.PanelLayout_KeyReleased(this, new Xwt.KeyEventArgs(Xwt.Key.F5, Xwt.ModifierKeys.None, false, 0)); };
            KeybHelpButtons[6].Clicked  += (o, ea) => { this.PanelLayout_KeyReleased(this, new Xwt.KeyEventArgs(Xwt.Key.F6, Xwt.ModifierKeys.None, false, 0)); };
            KeybHelpButtons[7].Clicked  += (o, ea) => { this.PanelLayout_KeyReleased(this, new Xwt.KeyEventArgs(Xwt.Key.F7, Xwt.ModifierKeys.None, false, 0)); };
            KeybHelpButtons[8].Clicked  += (o, ea) => { this.PanelLayout_KeyReleased(this, new Xwt.KeyEventArgs(Xwt.Key.F8, Xwt.ModifierKeys.None, false, 0)); };
            KeybHelpButtons[9].Clicked  += (o, ea) => { this.PanelLayout_KeyReleased(this, new Xwt.KeyEventArgs(Xwt.Key.F9, Xwt.ModifierKeys.None, false, 0)); };
            KeybHelpButtons[10].Clicked += (o, ea) => { this.PanelLayout_KeyReleased(this, new Xwt.KeyEventArgs(Xwt.Key.F10, Xwt.ModifierKeys.None, false, 0)); };
            //todo: replace this shit-code with huge using of KeybHelpButtons[n].Tag property (note that it's difficult to be realized due to c# restrictions)

            //apply user's settings
            //window size
            this.Width  = fcmd.Properties.Settings.Default.WinWidth;
            this.Height = fcmd.Properties.Settings.Default.WinHeight;
            //file size display policy
            char[] Policies = fcmd.Properties.Settings.Default.SizeShorteningPolicy.ToCharArray();

            //default directories
            if (Properties.Settings.Default.Panel1URL.Length != 0)
            {
                p1.LoadDir(Properties.Settings.Default.Panel1URL, ConvertSDP(Policies[0]), ConvertSDP(Policies[1]), ConvertSDP(Policies[2]));
            }
            else
            {
                p1.LoadDir("file://" + System.Windows.Forms.Application.StartupPath, ConvertSDP(Policies[0]), ConvertSDP(Policies[1]), ConvertSDP(Policies[2]));
            }

            if (Properties.Settings.Default.Panel2URL.Length != 0)
            {
                p2.LoadDir(Properties.Settings.Default.Panel2URL, ConvertSDP(Policies[0]), ConvertSDP(Policies[1]), ConvertSDP(Policies[2]));
            }
            else
            {
                p2.LoadDir("file://" + System.Windows.Forms.Application.StartupPath, ConvertSDP(Policies[0]), ConvertSDP(Policies[1]), ConvertSDP(Policies[2]));
            }

            //default panel
            switch (fcmd.Properties.Settings.Default.LastActivePanel)
            {
            case 1:
                p1.ListingView.SetFocus();
                ActivePanel = p1; PassivePanel = p2;
                break;

            case 2:
                p2.ListingView.SetFocus();
                ActivePanel = p2; PassivePanel = p1;
                break;

            default:
                p1.ListingView.SetFocus();
                ActivePanel = p1; PassivePanel = p2;
                break;
            }
            //this.Show();
        }