示例#1
0
        void FileSelected(GUIButton _btn, MouseButton mbtn)
        {
            if (mbtn != MouseButton.Left)
            {
                return;
            }

            BrowserOptionButton btn = (BrowserOptionButton)_btn;

            if (btn.IsNothing)
            {
                return;
            }

            string fileName = btn.Label.Text;

            if (btn.ParentOption)
            {
                DirectoryInfo parent = Directory.GetParent(CurrentDirectory);
                if (parent != null)
                {
                    CurrentDirectory = parent.FullName;
                    ScanDir();
                }
            }
            else
            {
                string path = Path.Combine(CurrentDirectory, fileName);

                if (btn.IsFolder)
                {
                    CurrentDirectory = path;
                    ScanDir();
                }
                else
                {
                    if (mode == FileBrowserMode.OpenFile)
                    {
                        for (int i = 0; i < options.Length; i++)
                        {
                            options[i].Toggled = false;
                        }
                        btn.Toggled = true;
                    }

                    FileName = mode == FileBrowserMode.OpenFile ? path : Path.GetFileName(path);
                }
            }
        }
示例#2
0
        void ScanDir()
        {
            if (options != null)
            {
                RemoveTopLevel(options);
            }

            if (Directory.Exists(CurrentDirectory))
            {
                string[] files, folders;

                try
                {
                    files   = Directory.GetFiles(CurrentDirectory);
                    folders = Directory.GetDirectories(CurrentDirectory);
                }
                catch (Exception e)
                {
                    options = new BrowserOptionButton[1];

                    BrowserOptionButton btn = new BrowserOptionButton(new UDim2(0, 0, 0, 40), new UDim2(1, 0, 0, 20),
                                                                      Theme, "An error occured! " + e.GetType().FullName,
                                                                      TextAlign.Left, false, false)
                    {
                        IsNothing = true
                    };
                    btn.OnMouseClick += (b, mbtn) => { FileSelected(b, mbtn); };
                    AddTopLevel(btn);

                    btn.NormalImage = Image.CreateBlank(new Color(194, 33, 33));
                    btn.HoverImage  = Image.CreateBlank(new Color(194, 33, 33));
                    btn.ActiveImage = Image.CreateBlank(new Color(194, 33, 33));

                    options[0] = btn;
                    return;
                }

                List <string> specificFiles = new List <string>();

                foreach (string file in files)
                {
                    string ext = Path.GetExtension(file);
                    if (exts.Length == 0 || exts.Contains(ext))
                    {
                        specificFiles.Add(Path.GetFileName(file));
                    }
                }

                options = new BrowserOptionButton[specificFiles.Count + folders.Length + 1];
                for (int i = 0; i < folders.Length + 1; i++)
                {
                    string file = i == 0 ? ".." : new DirectoryInfo((folders[i - 1])).Name;

                    BrowserOptionButton btn = new BrowserOptionButton(new UDim2(0, 0, 0, 40 + i * 20), new UDim2(1, 0, 0, 20),
                                                                      Theme, file, TextAlign.Left, i == 0, true);
                    btn.OnMouseClick += (b, mbtn) => { FileSelected(b, mbtn); };
                    AddTopLevel(btn);

                    btn.NormalImage = Image.CreateBlank(new Color(30, 30, 30));
                    btn.HoverImage  = Image.CreateBlank(new Color(50, 50, 50));
                    btn.ActiveImage = Image.CreateBlank(new Color(20, 20, 20));

                    options[i] = btn;
                }

                for (int i = folders.Length + 1; i < options.Length; i++)
                {
                    string file = specificFiles[i - (folders.Length + 1)];

                    BrowserOptionButton btn = new BrowserOptionButton(new UDim2(0, 0, 0, 40 + i * 20), new UDim2(1, 0, 0, 20),
                                                                      Theme, file, TextAlign.Left, false, false);
                    btn.OnMouseClick += (b, mbtn) => { FileSelected(b, mbtn); };
                    AddTopLevel(btn);

                    btn.NormalImage = Image.CreateBlank(new Color(30, 30, 30));
                    btn.HoverImage  = Image.CreateBlank(new Color(50, 50, 50));
                    btn.ActiveImage = Image.CreateBlank(new Color(20, 20, 20));

                    options[i] = btn;
                }
            }
            else
            {
                options = new BrowserOptionButton[1];

                BrowserOptionButton btn = new BrowserOptionButton(new UDim2(0, 0, 0, 40), new UDim2(1, 0, 0, 20),
                                                                  Theme, "Directory does not exist!", TextAlign.Left, false, false)
                {
                    IsNothing = true
                };
                btn.OnMouseClick += (b, mbtn) => { FileSelected(b, mbtn); };
                AddTopLevel(btn);

                btn.NormalImage = Image.CreateBlank(new Color(194, 33, 33));
                btn.HoverImage  = Image.CreateBlank(new Color(194, 33, 33));
                btn.ActiveImage = Image.CreateBlank(new Color(194, 33, 33));

                options[0] = btn;
            }
        }