/* * $Id$ * * EDE Directory tree class * Part of edelib. * Copyright (c) 2005-2007 EDE Authors. * * This program is licenced under terms of the * GNU General Public Licence version 2 or newer. * See COPYING for details. */ #include "Fl_Icon_Browser.h" #include #include class DirTree : public Fl_Icon_Browser { bool show_hidden_; bool ignore_case_; bool subdir_scan(int line); int find_best_match(const char* path, int parent=0); public: DirTree(int X, int Y, int W, int H, const char *l = 0) : Fl_Icon_Browser(X, Y, W, H, l), show_hidden_(false), ignore_case_(false) { type(FL_HOLD_BROWSER); } // All texts and datas are dynamically allocated and need to be freed ~DirTree() { for (int i=1; i<=size(); i++) { free (data(i)); // free ((void*)text(i)); } } // Load top-level directories into widget void init(); // Set given directory as current. Returns false if directory doesn't exist // (the closest parent directory will be selected) bool set_current(const char* path); // Return full system path to given item const char* system_path(int i) const { return (const char*)data(i); } // Shortcut function to redraw directory tree void reload() { char* path = strdup(system_path(get_focus())); clear(); init(); set_current(path); free(path); redraw(); } // setter/getter methods for flags void show_hidden(bool show) { show_hidden_= show; } bool show_hidden() const {return show_hidden_;} void ignore_case(bool i) { ignore_case_= i; } bool ignore_case() const {return ignore_case_;} }; //} // // End of "$Id: FileBrowser.h 4926 2006-04-10 21:03:29Z fabien $". //