1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
/*
$Id: filedialog_generic.h,v 1.13 2001/12/27 23:14:03 sphair Exp $
ClanGUI, copyrights by various people. Have a look in the CREDITS file.
This sourcecode is distributed using the Library GNU Public Licence,
version 2 or (at your option) any later version. Please read LICENSE
for details.
*/
#ifndef header_file_dialog_generic
#define header_file_dialog_generic
#include <string>
#include "API/Core/System/clanstring.h"
#include "API/signals.h"
#include "API/GUI/window.h"
#include "API/GUI/label.h"
#include "API/GUI/inputbox.h"
#include "API/GUI/button.h"
class CL_ComponentOptions;
class CL_FileDialog;
class CL_StyleManager;
class CL_ListBox;
/////////////////////////////////////////////////////////////////////////////
// CL_FileDialog_NewDir
class CL_FileDialog_CreateDir : public CL_Window
{
// Construction
public:
CL_FileDialog_CreateDir(CL_Component *parent);
std::string file;
// Implementation
private:
void on_quit(bool ok);
CL_Label label;
CL_InputBox input;
CL_Button button_ok;
CL_Button button_cancel;
CL_Slot slot_button_ok;
CL_Slot slot_button_cancel;
};
/////////////////////////////////////////////////////////////////////////////
// CL_FileDialog_Generic
class CL_FileDialog_Generic
{
// Construction
public:
CL_FileDialog_Generic(
CL_FileDialog *self,
const std::string &title,
const std::string &file,
const std::string &filter);
~CL_FileDialog_Generic();
// Attributes
public:
const std::string &get_file() const;
const std::string &get_filter() const;
const std::string &get_dir() const;
const std::string &get_path() const;
bool is_hidden_files_visible() const;
// Operations
public:
void set_file(const std::string &filename, bool refresh = true);
void set_dir(const std::string &dir, bool refresh = true);
void set_filter(const std::string &filter, bool refresh = true);
void show_hidden_files(bool enable);
void refresh();
// Slots:
private:
CL_Slot slot_file_activated;
CL_Slot slot_button_ok;
CL_Slot slot_button_cancel;
CL_Slot slot_button_parent;
CL_Slot slot_button_createdir;
CL_Slot slot_input_dir;
CL_Slot slot_input_file;
CL_Slot slot_input_filter;
CL_Slot slot_set_options;
// Callbacks:
public:
void on_file_activated(int index);
void on_button_quit(bool ok);
void on_button_parent();
void on_button_createdir();
void on_edit_dir();
void on_edit_file();
void on_edit_filter();
void on_set_options(const CL_ComponentOptions &options);
// Signals:
public:
CL_Signal_v1<const std::string &> sig_file_highlighted;
CL_Signal_v1<const std::string &> sig_file_selected;
CL_Signal_v1<const std::string &> sig_dir_entered;
// Implementation:
private:
bool check_filter(CL_String text, CL_String filter, bool case_sensitive = false);
void read_dir();
CL_FileDialog *filedialog;
bool show_hidden;
CL_Label *label_dir;
CL_InputBox *input_dir;
CL_Button *button_parent;
CL_Button *button_createdir;
CL_ListBox *listbox_files;
CL_Label *label_file;
CL_InputBox *input_file;
CL_Label *label_filter;
CL_InputBox *input_filter;
CL_Button *button_ok;
CL_Button *button_cancel;
std::string file;
std::string filter;
std::string dir;
std::string path;
};
#endif
|