![]() |
![]() |
![]() |
Dee Reference Manual | ![]() |
---|---|---|---|---|
Top | Description | Object Hierarchy | Implemented Interfaces | Properties |
#include <dee.h> DeeFilter; struct DeeFilterModel; struct DeeFilterModelClass; DeeModelIter * dee_filter_model_append_iter (DeeFilterModel *self
,DeeModelIter *iter
); gboolean dee_filter_model_contains (DeeFilterModel *self
,DeeModelIter *iter
); DeeModelIter * dee_filter_model_insert_iter (DeeFilterModel *self
,DeeModelIter *iter
,guint pos
); DeeModelIter * dee_filter_model_insert_iter_before (DeeFilterModel *self
,DeeModelIter *iter
,DeeModelIter *pos
); DeeModelIter * dee_filter_model_insert_iter_with_original_order (DeeFilterModel *self
,DeeModelIter *iter
); DeeModel * dee_filter_model_new (DeeModel *orig_model
,DeeFilter *filter
); DeeModelIter * dee_filter_model_prepend_iter (DeeFilterModel *self
,DeeModelIter *iter
);
A DeeFilterModel should be regarded as a view on a specific subset of of another DeeModel, filtered according to a given "filtering rule".
Filter models re-use the DeeModelIters of the back end model they filter. This means that any iter from the filter model can be used directly on the back end model. This is a powerful invariant, but implies the restriction that a row in the filter model contains the exact same data as the corresponding row in the back end model (ie. you can not apply a "transfomation map" to the filtered data).
The reuse of row iters also minimizes the amount of memory shuffling needed to set up a filter model. The filtering functions, DeeFilterMapFunc and DeeFilterMapNotify, has also been designed to minimize the amount of work done to create a filter model. So if the filter functions are written optimally the resulting filter models should be cheap to construct.
Another important feature of the filter model is also that the rows need not be in the same order as the original rows in the back end model.
There is a suite of filters shipped with Dee which you can browse in the Filters section.
typedef struct { DeeFilterMapFunc map_func; DeeFilterMapNotify map_notify; GDestroyNotify destroy; gpointer userdata; } DeeFilter;
Structure encapsulating the mapping logic used to construct a DeeFilterModel
struct DeeFilterModel;
All fields in the DeeFilterModel structure are private and should never be accessed directly
DeeModelIter * dee_filter_model_append_iter (DeeFilterModel *self
,DeeModelIter *iter
);
Includes iter
from the back end model in the filtered model, appending
it to the end of the filtered rows.
This method is usually called when implementing DeeFilterMapFunc or DeeFilterMapNotify methods.
Returns : |
Always returns iter . [transfer none]
|
gboolean dee_filter_model_contains (DeeFilterModel *self
,DeeModelIter *iter
);
Check if iter
from the back end model is mapped in self
.
|
The DeeFilterModel to check |
|
The DeeModelIter to check. [transfer none] |
Returns : |
TRUE if and only if iter is contained in self . |
DeeModelIter * dee_filter_model_insert_iter (DeeFilterModel *self
,DeeModelIter *iter
,guint pos
);
Includes iter
from the back end model in the filtered model, inserting it at
pos
pushing other rows down.
This method is usually called when implementing DeeFilterMapFunc or DeeFilterMapNotify methods.
Returns : |
Always returns iter . [transfer none]
|
DeeModelIter * dee_filter_model_insert_iter_before (DeeFilterModel *self
,DeeModelIter *iter
,DeeModelIter *pos
);
Includes iter
from the back end model in the filtered model, inserting it at
the position before pos
pushing other rows down.
This method is usually called when implementing DeeFilterMapFunc or DeeFilterMapNotify methods.
Returns : |
Always returns iter . [transfer none]
|
DeeModelIter * dee_filter_model_insert_iter_with_original_order (DeeFilterModel *self
,DeeModelIter *iter
);
self
: A DeeFilterModel instance
iter
: Iterator
Inserts iter
in self
in a way that is consistent with the ordering of the
rows in the original DeeModel behind self
. THis method assumes that self
is already ordered this way. If that's not the case then this method has
undefined behaviour.
This method is mainly intended as a helper for DeeFilterMapNotify functions of DeeFilter implementations that creates filter models sorted in accordance with the original models.
Returns : |
Always returns iter . [transfer none]
|
DeeModel * dee_filter_model_new (DeeModel *orig_model
,DeeFilter *filter
);
|
The back end model. This will be set as the "back-end" property |
|
Structure containing the logic used to create the filter model.
The filter model will create it's own copy of filter so unless
filter is allocated statically or on the stack you need to free it
after calling this method. |
Returns : |
A newly allocated DeeFilterModel. Free with g_object_unref() . [transfer full][type DeeFilterModel]
|
DeeModelIter * dee_filter_model_prepend_iter (DeeFilterModel *self
,DeeModelIter *iter
);
Includes iter
from the back end model in the filtered model, prepending
it to the beginning of the filtered rows.
This method is usually called when implementing DeeFilterMapFunc or DeeFilterMapNotify methods.
Returns : |
Always returns iter . [transfer none]
|