DbusModel

DbusModel — A generic list model that can synchronize with other DbusModel objects across D-Bus.

Synopsis


#include <dbusmodel/dbusmodel.h>

#define             DBUS_TYPE_G_VALUE_ARRAY
                    DbusModelPrivate;
                    DbusModelIter;
                    DbusModel;
DbusModel *         dbus_model_new                      (const gchar *path,
                                                         guint n_columns,
                                                         ...);
DbusModel *         dbus_model_new_from_path            (const gchar *path);
void                dbus_model_set_n_columns            (DbusModel *self,
                                                         guint n_columns);
guint               dbus_model_get_n_columns            (DbusModel *self);
guint               dbus_model_get_n_rows               (DbusModel *self);
GType               dbus_model_get_column_type          (DbusModel *self,
                                                         guint column);
void                dbus_model_add                      (DbusModel *self,
                                                         ...);
void                dbus_model_remove                   (DbusModel *self,
                                                         DbusModelIter *iter);
void                dbus_model_set                      (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         ...);
void                dbus_model_set_valist               (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         va_list args);
void                dbus_model_set_value                (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column,
                                                         const GValue *value);
void                dbus_model_get                      (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         ...);
void                dbus_model_get_valist               (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         va_list args);
void                dbus_model_get_value                (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column,
                                                         GValue *value);
DbusModelIter *     dbus_model_get_first_iter           (DbusModel *self);
DbusModelIter *     dbus_model_get_last_iter            (DbusModel *self);
DbusModelIter *     dbus_model_get_iter_at_row          (DbusModel *self,
                                                         guint row);
guint64             dbus_model_get_uid                  (DbusModel *self,
                                                         DbusModelIter *iter);
gboolean            dbus_model_get_bool                 (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column);
guchar              dbus_model_get_uchar                (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column);
gint                dbus_model_get_int                  (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column);
guint               dbus_model_get_uint                 (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column);
gint64              dbus_model_get_int64                (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column);
guint64             dbus_model_get_uint64               (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column);
gdouble             dbus_model_get_double               (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column);
const gchar *       dbus_model_get_string               (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column);
DbusModelIter *     dbus_model_next                     (DbusModel *self,
                                                         DbusModelIter *iter);
DbusModelIter *     dbus_model_prev                     (DbusModel *self,
                                                         DbusModelIter *iter);
gboolean            dbus_model_is_first                 (DbusModel *self,
                                                         DbusModelIter *iter);
gboolean            dbus_model_is_last                  (DbusModel *self,
                                                         DbusModelIter *iter);

Description

DbusModel is a generic list model that can hold most GLib Types as column types. It is created with a path (usually unique to your program(s) and something that complies with the D-Bus path spec) on which it will find other DbusModels created with the same path through D-Bus, and will keep synchronized with them.

This allows to you build MVC programs with a sane model API, but have the controller (or multiple views) in a seperate process.

Details

DBUS_TYPE_G_VALUE_ARRAY

#define DBUS_TYPE_G_VALUE_ARRAY (dbus_g_type_get_collection ("GPtrArray", G_TYPE_VALUE))


DbusModelPrivate

typedef struct _DbusModelPrivate DbusModelPrivate;

Ignore this structure.


DbusModelIter

typedef struct _DbusModelIter DbusModelIter;

The DbusModelIter structure is private and should only be used with the provides DbusModel API. It is owned by DbusModel and should not be freed.


DbusModel

typedef struct {
} DbusModel;

All fields in the DbusModel structure are private and should never be accessed directly


dbus_model_new ()

DbusModel *         dbus_model_new                      (const gchar *path,
                                                         guint n_columns,
                                                         ...);

Creates a new DbusModel at the specified path, with n_columns of the types passed in.

Upon creation of a new DbusModel, the model will find other models with the same path and synchronize itself with these models.

path :

a path where models of this type with synchronize with each other

n_columns :

number of columns in the model

... :

n_columns number of GTypes

Returns :

a new DbusModel

dbus_model_new_from_path ()

DbusModel *         dbus_model_new_from_path            (const gchar *path);

path :

Returns :


dbus_model_set_n_columns ()

void                dbus_model_set_n_columns            (DbusModel *self,
                                                         guint n_columns);

Sets the number of columns in self to n_columns.

This function should only be called once.

self :

a DbusModel instance

n_columns :

the number of columns

dbus_model_get_n_columns ()

guint               dbus_model_get_n_columns            (DbusModel *self);

Gets the number of columns in self

self :

a DbusModel

Returns :

the number of columns per row in self

dbus_model_get_n_rows ()

guint               dbus_model_get_n_rows               (DbusModel *self);

Gets the number of rows in self

self :

a DbusModel

Returns :

the number of rows in self

dbus_model_get_column_type ()

GType               dbus_model_get_column_type          (DbusModel *self,
                                                         guint column);

Get the GType of column

self :

a DbusModel

column :

the column to get retrieve the type of

Returns :

the GType that column holds

dbus_model_add ()

void                dbus_model_add                      (DbusModel *self,
                                                         ...);

Creates and inserts a new row to the DbusModel, setting the row values upon creation. The row will be placed in the model according to the current sorting.

For example, to append a new row where column 0 is G_TYPE_INT and column 1 is G_TYPE_STRING:

 DbusModel *model;
 model = dbus_model_new ("org.myapp.Results", 2, G_TYPE_INT, G_TYPE_STRING);
 dbus_model_add (model, 0, 10, 1, "Rooney", -1);

self :

a DbusModel

... :

pairs of column number and value, terminated with -1

dbus_model_remove ()

void                dbus_model_remove                   (DbusModel *self,
                                                         DbusModelIter *iter);

Removes the row at the given position from the model.

self :

a DbusModel

iter :

a DbusModelIter pointing to the row to remove

dbus_model_set ()

void                dbus_model_set                      (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         ...);

Sets the value of one or more cells in the row references by iter. The variable argument list should contain integer column numbers, each column number followed by the value to be set. The list is terminated by a -1.

For example, to set column 0 with type G_TYPE_STRING, use:

  dbus_model_set (model, iter, 0, "foo", -1);

self :

a DbusModel

iter :

a DbusModelIter

... :

a list of column/value pairs, terminated by -1

dbus_model_set_valist ()

void                dbus_model_set_valist               (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         va_list args);

See #dbus_model_set(). This version takes a va_list for language bindings.

self :

a DbusModel

iter :

a DbusModelIter

args :

a list of column/value location pairs, terminated by -1

dbus_model_set_value ()

void                dbus_model_set_value                (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column,
                                                         const GValue *value);

Sets the data in column for the row iter points to, to value. The type of value must be convertable to the type of the column.

self :

a DbusModel

iter :

a DbusModelIter

column :

column number to set the value

value :

new value for cell

dbus_model_get ()

void                dbus_model_get                      (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         ...);

Gets the value of one or more cells in the row references by iter. The variable argument list should contain integer column numbers, each column number followed by a place to store the value being retrieved. The list is terminated by a -1.

For example, to get a value from column 0 with type G_TYPE_STRING use:

 dbus_model_get (model, iter, 0, &place_string_here, -1);

where place_string_here is a gchar* to be filled with the string. If appropriate, the returned values have to be freed or unreferenced.

self :

a DbusModel

iter :

a DbusModelIter

... :

a list of column/return location pairs, terminated by -1

dbus_model_get_valist ()

void                dbus_model_get_valist               (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         va_list args);

See #dbus_model_get(). This version takes a va_list for language bindings.

self :

a DbusModel

iter :

a DbusModelIter

args :

a list of column/return location pairs, terminated by -1

dbus_model_get_value ()

void                dbus_model_get_value                (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column,
                                                         GValue *value);

Sets an intializes value to that at column. When done with value g_value_unset() needs to be called to free any allocated memory.

self :

a DbusModel

iter :

a DbusModelIter

column :

column number to retrieve the value from

value :

an empty GValue to set

dbus_model_get_first_iter ()

DbusModelIter *     dbus_model_get_first_iter           (DbusModel *self);

Retrieves a DbusModelIter representing the first row in self.

self :

a DbusModel

Returns :

transfer none. transfer none.

dbus_model_get_last_iter ()

DbusModelIter *     dbus_model_get_last_iter            (DbusModel *self);

Retrieves a DbusModelIter representing the last row in self.

self :

a DbusModel

Returns :

transfer none. transfer none.

dbus_model_get_iter_at_row ()

DbusModelIter *     dbus_model_get_iter_at_row          (DbusModel *self,
                                                         guint row);

Retrieves a DbusModelIter representing the row at the given index.

self :

a DbusModel

row :

position of the row to retrieve

Returns :

transfer none. transfer none.

dbus_model_get_uid ()

guint64             dbus_model_get_uid                  (DbusModel *self,
                                                         DbusModelIter *iter);

self :

iter :

Returns :


dbus_model_get_bool ()

gboolean            dbus_model_get_bool                 (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column);

self :

a DbusModel

iter :

a DbusModelIter

column :

the column to retrieve a boolean from

Returns :

if iter and column are valid, the boolean stored at column. Otherwise FALSE

dbus_model_get_uchar ()

guchar              dbus_model_get_uchar                (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column);

self :

a DbusModel

iter :

a DbusModelIter

column :

the column to retrieve a uchar from

Returns :

if iter and column are valid, the uchar stored at column. Otherwise 0.

dbus_model_get_int ()

gint                dbus_model_get_int                  (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column);

self :

a DbusModel

iter :

a DbusModelIter

column :

the column to retrieve a int from

Returns :

if iter and column are valid, the int stored at column. Otherwise 0.

dbus_model_get_uint ()

guint               dbus_model_get_uint                 (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column);

self :

a DbusModel

iter :

a DbusModelIter

column :

the column to retrieve a uint from

Returns :

if iter and column are valid, the uint stored at column. Otherwise 0.

dbus_model_get_int64 ()

gint64              dbus_model_get_int64                (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column);

self :

a DbusModel

iter :

a DbusModelIter

column :

the column to retrieve a int64 from

Returns :

if iter and column are valid, the int64 stored at column. Otherwise 0.

dbus_model_get_uint64 ()

guint64             dbus_model_get_uint64               (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column);

self :

a DbusModel

iter :

a DbusModelIter

column :

the column to retrieve a uint64 from

Returns :

if iter and column are valid, the uint64 stored at column. Otherwise 0.

dbus_model_get_double ()

gdouble             dbus_model_get_double               (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column);

self :

a DbusModel

iter :

a DbusModelIter

column :

the column to retrieve a double from

Returns :

if iter and column are valid, the double stored at column. Otherwise 0.

dbus_model_get_string ()

const gchar *       dbus_model_get_string               (DbusModel *self,
                                                         DbusModelIter *iter,
                                                         guint column);

self :

a DbusModel

iter :

a DbusModelIter

column :

the column to retrieve a string from

Returns :

if iter and column are valid, the string stored at column. Otherwise NULL.

dbus_model_next ()

DbusModelIter *     dbus_model_next                     (DbusModel *self,
                                                         DbusModelIter *iter);

Returns a DbusModelIter that points to the next position in the model.

self :

a DbusModel

iter :

a DbusModelIter

Returns :

transfer none. transfer none.

dbus_model_prev ()

DbusModelIter *     dbus_model_prev                     (DbusModel *self,
                                                         DbusModelIter *iter);

Returns a DbusModelIter that points to the previous position in the model.

self :

a DbusModel

iter :

a DbusModelIter

Returns :

transfer none. transfer none.

dbus_model_is_first ()

gboolean            dbus_model_is_first                 (DbusModel *self,
                                                         DbusModelIter *iter);

Where iter is at the start of self.

self :

a DbusModel

iter :

a DbusModelIter

Returns :

TRUE if iter is the first iter in the model

dbus_model_is_last ()

gboolean            dbus_model_is_last                  (DbusModel *self,
                                                         DbusModelIter *iter);

Whether iter is at the end of self.

self :

a DbusModel

iter :

a DbusModelIter

Returns :

TRUE if iter is the last iter in the model