00001
00002
00003 #ifndef _LIBGDAMM_DATAMODEL_H
00004 #define _LIBGDAMM_DATAMODEL_H
00005
00006 #include <glibmm.h>
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include <glibmm/object.h>
00031 #include <libgda/gda-data-model.h>
00032
00033
00034 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00035 typedef struct _GdaDataModel GdaDataModel;
00036 typedef struct _GdaDataModelClass GdaDataModelClass;
00037 #endif
00038
00039
00040 namespace Gnome
00041 {
00042
00043 namespace Gda
00044 { class DataModel_Class; }
00045
00046 }
00047 namespace Gnome
00048 {
00049
00050 namespace Gda
00051 {
00052
00053
00054 class DataModel : public Glib::Object
00055 {
00056
00057 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00058
00059 public:
00060 typedef DataModel CppObjectType;
00061 typedef DataModel_Class CppClassType;
00062 typedef GdaDataModel BaseObjectType;
00063 typedef GdaDataModelClass BaseClassType;
00064
00065 private: friend class DataModel_Class;
00066 static CppClassType datamodel_class_;
00067
00068 private:
00069
00070 DataModel(const DataModel&);
00071 DataModel& operator=(const DataModel&);
00072
00073 protected:
00074 explicit DataModel(const Glib::ConstructParams& construct_params);
00075 explicit DataModel(GdaDataModel* castitem);
00076
00077 #endif
00078
00079 public:
00080 virtual ~DataModel();
00081
00082 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00083 static GType get_type() G_GNUC_CONST;
00084 static GType get_base_type() G_GNUC_CONST;
00085 #endif
00086
00088 GdaDataModel* gobj() { return reinterpret_cast<GdaDataModel*>(gobject_); }
00089
00091 const GdaDataModel* gobj() const { return reinterpret_cast<GdaDataModel*>(gobject_); }
00092
00093 GdaDataModel* gobj_copy();
00094
00095 private:
00096
00097 public:
00098
00099
00100 void changed();
00101
00102 void freeze();
00103
00104 void thaw();
00105
00106
00107 int get_n_rows();
00108
00109 int get_n_columns();
00110
00111 GdaFieldAttributes* describe_column(int col);
00112
00113 Glib::ustring get_column_title(int col);
00114
00115 void set_column_title(int col, const Glib::ustring& title);
00116
00117 int get_column_position (const Glib::ustring& title);
00118
00119 const GdaRow* get_row (int row);
00120
00121 const GdaValue* get_value_at(int col, int row);
00122
00123
00124 bool is_editable() const;
00125
00126 const GdaRow* append_row(const GList *values);
00127
00128 bool remove_row(const GdaRow *row);
00129
00130 bool update_row(const GdaRow *row);
00131
00132
00133 bool is_editing() const;
00134
00135 bool begin_edit();
00136
00137 bool cancel_edit();
00138
00139 bool end_edit();
00140
00141
00142 Glib::ustring to_comma_separated();
00143
00144 Glib::ustring to_tab_separated();
00145
00146 Glib::ustring to_xml(bool standalone);
00147
00148
00149 Glib::ustring get_command_text();
00150
00151 void set_command_text(const Glib::ustring& txt);
00152
00153 GdaCommandType get_command_type();
00154
00155 void set_command_type (GdaCommandType type);
00156
00157
00162 Glib::SignalProxy0<void> signal_changed();
00163
00164
00165 public:
00166
00167 public:
00168
00169
00170 protected:
00171
00172 virtual int get_n_rows_vfunc();
00173 virtual int get_n_columns_vfunc();
00174 virtual GdaFieldAttributes* describe_column_vfunc(int col);
00175 virtual const GdaValue* get_value_at_vfunc(int col, int row);
00176
00177
00178 virtual void on_changed();
00179
00180
00181 };
00182
00183 }
00184 }
00185
00186
00187 namespace Glib
00188 {
00190 Glib::RefPtr<Gnome::Gda::DataModel> wrap(GdaDataModel* object, bool take_copy = false);
00191 }
00192
00193
00194 #endif
00195