#ifndef __TREECTRL_H #define __TREECTRL_H #ifndef __MASKFLD_H #include "maskfld.h" #endif #ifndef __VARIANT_H #include "variant.h" #endif // Native control host window: autresizes its unique child control class TControl_host_window : public TField_window { protected: WINDOW _ctrl; protected: virtual long handler(WINDOW win, EVENT* ep); virtual void set_focus(); TControl_host_window(int x, int y, int dx, int dy, WINDOW parent, TWindowed_field* owner); }; class TGolem_client_field : public TWindowed_field { TGolem_field* _driver; protected: // TObject virtual word class_id() const; virtual bool is_kind_of(word cid) const; protected: // TWindowed_field virtual TField_window* create_window(int x, int y, int dx, int dy, WINDOW parent); virtual bool parse_item(TScanner& scan); public: TGolem_field* driver() const { return _driver; } virtual bool on_hit(); TGolem_client_field(TMask* m); virtual ~TGolem_client_field(); }; // Implemented in tree.cpp class TTree; class TTree_field : public TWindowed_field { public: // TObject virtual word class_id() const; virtual bool is_kind_of(word cid) const; protected: // TWindowed_field virtual TField_window* create_window(int x, int y, int dx, int dy, WINDOW parent); public: TTree* tree() const; void set_tree(TTree* t); virtual void force_update(); void hide_leaves(bool yes = true); void show_leaves(bool yes = true) { hide_leaves(!yes); } virtual bool select_current(); virtual bool goto_selected(); virtual void set_header(const char* head); virtual void set_row_height(int rh); virtual int selection(TString_array& ids) const; TTree_field(TMask* m) : TWindowed_field(m) { } virtual ~TTree_field() { } }; class TOutlook_field : public TWindowed_field { TString4 _str; // Current selection protected: // TMask_field virtual const TString& get_window_data(); virtual void set_window_data(const char* data); virtual bool on_key(KEY key); protected: // TWindowed_field virtual TField_window* create_window(int x, int y, int dx, int dy, WINDOW parent); public: virtual word class_id() const; virtual bool is_kind_of(word cid) const; int add_item(short icon, const char* text, int flags); void create(short dlg, int x, int y, int dx, int dy, WINDOW parent); void clear(); int items() const; virtual void set(const char* data); virtual const TString& get() const; virtual bool metro_style() const { return false; } TOutlook_field(TMask* m) : TWindowed_field(m) { } virtual ~TOutlook_field() { } }; class TMetrolist_field : public TOutlook_field { public: virtual word class_id() const; virtual bool is_kind_of(word cid) const; virtual bool metro_style() const { return true; } TMetrolist_field(TMask* m) : TOutlook_field(m) { } }; class TSlider_field : public TWindowed_field { short _buddy; real _range_min, _range_max; protected: // TMask_field virtual word class_id() const; virtual bool is_kind_of(word cid) const; virtual const TString& get_window_data(); virtual void set_window_data(const char* data); protected: // TWindowed_field virtual TField_window* create_window(int x, int y, int dx, int dy, WINDOW parent); virtual bool parse_item(TScanner& scanner); const char* get_buddy() const; void set_buddy(const char* b) const; public: virtual void set(const char* data); virtual const TString& get() const; virtual bool on_hit(); void set_range(const real& mi, const real& ma); void set_range(int mi, int ma); void range(real& mi, real& ma); TSlider_field(TMask* m); virtual ~TSlider_field() { } }; class TProp_field : public TWindowed_field { protected: virtual TField_window* create_window(int x, int y, int dx, int dy, WINDOW parent); virtual bool parse_item(TScanner& scanner); public: virtual word class_id() const; virtual bool is_kind_of(word cid) const; void freeze(bool on); bool set_property(const char* name, const char* value, const char* label = NULL); bool set_property(const char* name, COLOR value, const char* label = NULL); bool set_property(const char* name, long value, const char* label = NULL); bool set_property(const char* name, bool value, const char* label = NULL); bool has_property(const char* name) const; bool remove_property(const char* name); bool enable_property(const char* name, bool on = true); bool disable_property(const char* name) { return enable_property(name, false); } const TString& get_property(const char* name) const; COLOR get_color_property(const char* name) const; long get_long_property(const char* name) const; bool get_bool_property(const char* name) const; bool get_var_property(const char* name, TVariant& var) const; bool for_each_property(PROP_CALLBACK pcb, void* jolly); bool current_property(TString& name, TVariant& value) const; TProp_field(TMask* m); }; class TTreelist_field : public TTree_field { protected: // TObject virtual word class_id() const; virtual bool is_kind_of(word cid) const; protected: // TWindowed_field virtual TField_window* create_window(int x, int y, int dx, int dy, WINDOW parent); virtual bool parse_item(TScanner& scanner); public: TTreelist_field(TMask* m); virtual ~TTreelist_field() { } }; class THTML_field : public TWindowed_field { protected: // TObject virtual word class_id() const; virtual bool is_kind_of(word cid) const; protected: // TWindowed_field virtual TField_window* create_window(int x, int y, int dx, int dy, WINDOW parent); virtual void set_window_data(const char* data); public: THTML_field(TMask* m); virtual ~THTML_field() { } }; #endif