mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Convert to newer method of allocating private data structures for
objects. This allows glib to consolidate the space for all of the various public and private data structures on an object and reduce memory fragmentation. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@11848 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
6b5cfa04cf
commit
087de2b80a
@ -54,7 +54,7 @@ static void gnc_general_search_init (GNCGeneralSearch *gsl);
|
||||
static void gnc_general_search_class_init (GNCGeneralSearchClass *class);
|
||||
static void gnc_general_search_destroy (GtkObject *object);
|
||||
|
||||
#define _PRIVATE(x) (((GNCSearchString *)(x))->priv)
|
||||
typedef struct _GNCGeneralSearchPrivate GNCGeneralSearchPrivate;
|
||||
|
||||
struct _GNCGeneralSearchPrivate {
|
||||
GUID guid;
|
||||
@ -66,6 +66,9 @@ struct _GNCGeneralSearchPrivate {
|
||||
gint component_id;
|
||||
};
|
||||
|
||||
#define _PRIVATE(o) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_GENERAL_SEARCH, GNCGeneralSearchPrivate))
|
||||
|
||||
static GtkHBoxClass *parent_class;
|
||||
static guint general_search_signals[LAST_SIGNAL];
|
||||
|
||||
@ -122,12 +125,13 @@ gnc_general_search_class_init (GNCGeneralSearchClass *klass)
|
||||
object_class->destroy = gnc_general_search_destroy;
|
||||
|
||||
klass->changed = NULL;
|
||||
|
||||
g_type_class_add_private(klass, sizeof(GNCGeneralSearchPrivate));
|
||||
}
|
||||
|
||||
static void
|
||||
gnc_general_search_init (GNCGeneralSearch *gsl)
|
||||
{
|
||||
gsl->priv = g_malloc0 (sizeof (*gsl->priv));
|
||||
gsl->selected_item = NULL;
|
||||
}
|
||||
|
||||
@ -135,6 +139,7 @@ static void
|
||||
gnc_general_search_destroy (GtkObject *object)
|
||||
{
|
||||
GNCGeneralSearch *gsl;
|
||||
GNCGeneralSearchPrivate *priv;
|
||||
|
||||
g_return_if_fail (object != NULL);
|
||||
g_return_if_fail (GNC_IS_GENERAL_SEARCH (object));
|
||||
@ -144,21 +149,15 @@ gnc_general_search_destroy (GtkObject *object)
|
||||
gsl->entry = NULL;
|
||||
gsl->button = NULL;
|
||||
|
||||
if (gsl->priv) {
|
||||
/* Clear the callbacks */
|
||||
if (gsl->priv->sw) {
|
||||
gnc_search_dialog_set_select_cb (gsl->priv->sw, NULL,
|
||||
NULL, FALSE);
|
||||
gnc_search_dialog_disconnect (gsl->priv->sw, gsl);
|
||||
gsl->priv->sw = NULL;
|
||||
}
|
||||
priv = _PRIVATE(gsl);
|
||||
/* Clear the callbacks */
|
||||
if (priv->sw) {
|
||||
gnc_search_dialog_set_select_cb (priv->sw, NULL, NULL, FALSE);
|
||||
gnc_search_dialog_disconnect (priv->sw, gsl);
|
||||
priv->sw = NULL;
|
||||
|
||||
/* Unregister ourselves */
|
||||
gnc_unregister_gui_component (gsl->priv->component_id);
|
||||
|
||||
/* And let go */
|
||||
g_free (gsl->priv);
|
||||
gsl->priv = NULL;
|
||||
gnc_unregister_gui_component (priv->component_id);
|
||||
}
|
||||
|
||||
if (GTK_OBJECT_CLASS (parent_class)->destroy)
|
||||
@ -169,12 +168,14 @@ gnc_general_search_destroy (GtkObject *object)
|
||||
static void
|
||||
reset_selection_text (GNCGeneralSearch *gsl)
|
||||
{
|
||||
GNCGeneralSearchPrivate *priv;
|
||||
const char *text;
|
||||
|
||||
priv = _PRIVATE(gsl);
|
||||
if (gsl->selected_item == NULL)
|
||||
text = "";
|
||||
else
|
||||
text = gncObjectPrintable (gsl->priv->type, gsl->selected_item);
|
||||
text = gncObjectPrintable (priv->type, gsl->selected_item);
|
||||
|
||||
gtk_entry_set_text(GTK_ENTRY(gsl->entry), text);
|
||||
}
|
||||
@ -184,10 +185,12 @@ static void
|
||||
refresh_handler (GHashTable *changes, gpointer data)
|
||||
{
|
||||
GNCGeneralSearch *gsl = data;
|
||||
GNCGeneralSearchPrivate *priv;
|
||||
const EventInfo *info;
|
||||
|
||||
priv = _PRIVATE(gsl);
|
||||
if (changes) {
|
||||
info = gnc_gui_get_entity_events (changes, &gsl->priv->guid);
|
||||
info = gnc_gui_get_entity_events (changes, &priv->guid);
|
||||
if (info) {
|
||||
if (info->event_mask & GNC_EVENT_DESTROY)
|
||||
gsl->selected_item = NULL;
|
||||
@ -209,7 +212,10 @@ static int
|
||||
on_close_cb (GtkDialog *dialog, gpointer user_data)
|
||||
{
|
||||
GNCGeneralSearch *gsl = user_data;
|
||||
gsl->priv->sw = NULL;
|
||||
GNCGeneralSearchPrivate *priv;
|
||||
|
||||
priv = _PRIVATE(gsl);
|
||||
priv->sw = NULL;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -218,21 +224,23 @@ static void
|
||||
search_cb(GtkButton * button, gpointer user_data)
|
||||
{
|
||||
GNCGeneralSearch *gsl = user_data;
|
||||
GNCGeneralSearchPrivate *priv;
|
||||
GNCSearchWindow *sw;
|
||||
|
||||
if (gsl->priv->sw) {
|
||||
gnc_search_dialog_raise (gsl->priv->sw);
|
||||
priv = _PRIVATE(gsl);
|
||||
if (priv->sw) {
|
||||
gnc_search_dialog_raise (priv->sw);
|
||||
return;
|
||||
}
|
||||
|
||||
sw = (gsl->priv->search_cb)(gsl->selected_item, gsl->priv->user_data);
|
||||
sw = (priv->search_cb)(gsl->selected_item, priv->user_data);
|
||||
|
||||
/* NULL means nothing to 'select' */
|
||||
if (sw == NULL)
|
||||
return;
|
||||
|
||||
/* Ok, save this search window and setup callbacks */
|
||||
gsl->priv->sw = sw;
|
||||
priv->sw = sw;
|
||||
|
||||
/* Catch when the search dialog closes */
|
||||
gnc_search_dialog_connect_on_close (sw, GTK_SIGNAL_FUNC (on_close_cb),
|
||||
@ -272,6 +280,7 @@ gnc_general_search_new (GNCIdTypeConst type, const char *label,
|
||||
GNCSearchCB search_cb, gpointer user_data)
|
||||
{
|
||||
GNCGeneralSearch *gsl;
|
||||
GNCGeneralSearchPrivate *priv;
|
||||
const QofParam *get_guid;
|
||||
|
||||
g_return_val_if_fail (type && label && search_cb, NULL);
|
||||
@ -279,15 +288,16 @@ gnc_general_search_new (GNCIdTypeConst type, const char *label,
|
||||
get_guid = qof_class_get_parameter (type, QOF_PARAM_GUID);
|
||||
g_return_val_if_fail (get_guid, NULL);
|
||||
|
||||
gsl = g_object_new (gnc_general_search_get_type (), NULL);
|
||||
gsl = g_object_new (GNC_TYPE_GENERAL_SEARCH, NULL);
|
||||
|
||||
create_children (gsl, label);
|
||||
|
||||
gsl->priv->type = type;
|
||||
gsl->priv->search_cb = search_cb;
|
||||
gsl->priv->user_data = user_data;
|
||||
gsl->priv->get_guid = get_guid;
|
||||
gsl->priv->component_id =
|
||||
priv = _PRIVATE(gsl);
|
||||
priv->type = type;
|
||||
priv->search_cb = search_cb;
|
||||
priv->user_data = user_data;
|
||||
priv->get_guid = get_guid;
|
||||
priv->component_id =
|
||||
gnc_register_gui_component (GNCGENERALSEARCH_CLASS,
|
||||
refresh_handler, NULL, gsl);
|
||||
|
||||
@ -306,9 +316,12 @@ gnc_general_search_new (GNCIdTypeConst type, const char *label,
|
||||
void
|
||||
gnc_general_search_set_selected (GNCGeneralSearch *gsl, gpointer selection)
|
||||
{
|
||||
GNCGeneralSearchPrivate *priv;
|
||||
|
||||
g_return_if_fail(gsl != NULL);
|
||||
g_return_if_fail(GNC_IS_GENERAL_SEARCH(gsl));
|
||||
|
||||
priv = _PRIVATE(gsl);
|
||||
if (selection != gsl->selected_item) {
|
||||
gsl->selected_item = selection;
|
||||
reset_selection_text (gsl);
|
||||
@ -316,18 +329,17 @@ gnc_general_search_set_selected (GNCGeneralSearch *gsl, gpointer selection)
|
||||
general_search_signals[SELECTION_CHANGED]);
|
||||
}
|
||||
|
||||
gnc_gui_component_clear_watches (gsl->priv->component_id);
|
||||
gnc_gui_component_clear_watches (priv->component_id);
|
||||
|
||||
if (selection)
|
||||
{
|
||||
const QofParam *get_guid = gsl->priv->get_guid;
|
||||
gsl->priv->guid = * ((GUID *)(get_guid->param_getfcn
|
||||
if (selection) {
|
||||
const QofParam *get_guid = priv->get_guid;
|
||||
priv->guid = * ((GUID *)(get_guid->param_getfcn
|
||||
(gsl->selected_item, get_guid)));
|
||||
gnc_gui_component_watch_entity
|
||||
(gsl->priv->component_id, &(gsl->priv->guid),
|
||||
(priv->component_id, &(priv->guid),
|
||||
GNC_EVENT_MODIFY | GNC_EVENT_DESTROY);
|
||||
} else
|
||||
gsl->priv->guid = *xaccGUIDNULL ();
|
||||
priv->guid = *xaccGUIDNULL ();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -36,14 +36,17 @@
|
||||
#include "dialog-search.h"
|
||||
#include "gnc-book.h"
|
||||
|
||||
#define GNC_TYPE_GENERAL_SEARCH \
|
||||
(gnc_general_search_get_type ())
|
||||
|
||||
#define GNC_GENERAL_SEARCH(obj) \
|
||||
G_TYPE_CHECK_INSTANCE_CAST (obj, gnc_general_search_get_type(), GNCGeneralSearch)
|
||||
G_TYPE_CHECK_INSTANCE_CAST (obj, GNC_TYPE_GENERAL_SEARCH, GNCGeneralSearch)
|
||||
|
||||
#define GNC_GENERAL_SEARCH_CLASS(klass) \
|
||||
G_TYPE_CLASS_CAST (klass, gnc_general_search_get_type(), \
|
||||
G_TYPE_CLASS_CAST (klass, GNC_TYPE_GENERAL_SEARCH, \
|
||||
GNCGeneralSearchClass)
|
||||
#define GNC_IS_GENERAL_SEARCH(obj) \
|
||||
G_TYPE_CHECK_INSTANCE_TYPE (obj, gnc_general_search_get_type ())
|
||||
G_TYPE_CHECK_INSTANCE_TYPE (obj, GNC_TYPE_GENERAL_SEARCH)
|
||||
|
||||
/*
|
||||
* If this returns NULL, then do nothing (probably an edit window). If
|
||||
@ -54,7 +57,6 @@ typedef GNCSearchWindow *(*GNCSearchCB) (gpointer start, gpointer user_data);
|
||||
|
||||
typedef struct {
|
||||
GtkHBox hbox;
|
||||
struct _GNCGeneralSearchPrivate *priv;
|
||||
|
||||
GtkWidget * entry; /* display of selection name */
|
||||
GtkWidget * button; /* button for popping up search window */
|
||||
|
@ -42,13 +42,16 @@ static void gnc_search_account_class_init (GNCSearchAccountClass *class);
|
||||
static void gnc_search_account_init (GNCSearchAccount *gspaper);
|
||||
static void gnc_search_account_finalize (GObject *obj);
|
||||
|
||||
#define _PRIVATE(x) (((GNCSearchAccount *)(x))->priv)
|
||||
typedef struct _GNCSearchAccountPrivate GNCSearchAccountPrivate;
|
||||
|
||||
struct _GNCSearchAccountPrivate {
|
||||
gboolean match_all;
|
||||
GList * selected_accounts;
|
||||
};
|
||||
|
||||
#define _PRIVATE(o) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_ACCOUNT, GNCSearchAccountPrivate))
|
||||
|
||||
static GNCSearchCoreTypeClass *parent_class;
|
||||
|
||||
|
||||
@ -94,12 +97,13 @@ gnc_search_account_class_init (GNCSearchAccountClass *class)
|
||||
gnc_search_core_type->get_widget = gncs_get_widget;
|
||||
gnc_search_core_type->get_predicate = gncs_get_predicate;
|
||||
gnc_search_core_type->clone = gncs_clone;
|
||||
|
||||
g_type_class_add_private(class, sizeof(GNCSearchAccountPrivate));
|
||||
}
|
||||
|
||||
static void
|
||||
gnc_search_account_init (GNCSearchAccount *o)
|
||||
{
|
||||
o->priv = g_malloc0 (sizeof (*o->priv));
|
||||
o->how = GUID_MATCH_ANY;
|
||||
}
|
||||
|
||||
@ -109,8 +113,6 @@ gnc_search_account_finalize (GObject *obj)
|
||||
GNCSearchAccount *o = (GNCSearchAccount *)obj;
|
||||
g_assert (IS_GNCSEARCH_ACCOUNT (o));
|
||||
|
||||
g_free(o->priv);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize(obj);
|
||||
}
|
||||
|
||||
@ -124,7 +126,7 @@ gnc_search_account_finalize (GObject *obj)
|
||||
GNCSearchAccount *
|
||||
gnc_search_account_new (void)
|
||||
{
|
||||
GNCSearchAccount *o = g_object_new(gnc_search_account_get_type (), NULL);
|
||||
GNCSearchAccount *o = g_object_new(GNC_TYPE_SEARCH_ACCOUNT, NULL);
|
||||
return o;
|
||||
}
|
||||
|
||||
@ -138,8 +140,12 @@ gnc_search_account_new (void)
|
||||
GNCSearchAccount *
|
||||
gnc_search_account_matchall_new (void)
|
||||
{
|
||||
GNCSearchAccount *o = g_object_new(gnc_search_account_get_type (), NULL);
|
||||
o->priv->match_all = TRUE;
|
||||
GNCSearchAccount *o;
|
||||
GNCSearchAccountPrivate *priv;
|
||||
|
||||
o = g_object_new(GNC_TYPE_SEARCH_ACCOUNT, NULL);
|
||||
priv = _PRIVATE(o);
|
||||
priv->match_all = TRUE;
|
||||
o->how = GUID_MATCH_ALL;
|
||||
return o;
|
||||
}
|
||||
@ -148,12 +154,14 @@ static gboolean
|
||||
gncs_validate (GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchAccount *fi = (GNCSearchAccount *)fe;
|
||||
GNCSearchAccountPrivate *priv;
|
||||
gboolean valid = TRUE;
|
||||
|
||||
g_return_val_if_fail (fi, FALSE);
|
||||
g_return_val_if_fail (IS_GNCSEARCH_ACCOUNT (fi), FALSE);
|
||||
|
||||
if (fi->priv->selected_accounts == NULL && fi->how ) {
|
||||
priv = _PRIVATE(fi);
|
||||
if (priv->selected_accounts == NULL && fi->how ) {
|
||||
valid = FALSE;
|
||||
gnc_error_dialog (NULL, _("You have not selected any accounts"));
|
||||
}
|
||||
@ -192,12 +200,14 @@ static GtkWidget *
|
||||
make_menu (GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchAccount *fi = (GNCSearchAccount *)fe;
|
||||
GNCSearchAccountPrivate *priv;
|
||||
GtkWidget *menu, *item, *first, *opmenu;
|
||||
int current = 0, index = 0;
|
||||
|
||||
menu = gtk_menu_new ();
|
||||
|
||||
if (fi->priv->match_all) {
|
||||
priv = _PRIVATE(fi);
|
||||
if (priv->match_all) {
|
||||
ADD_MENU_ITEM (_("matches all accounts"), GUID_MATCH_ALL);
|
||||
first = item;
|
||||
} else {
|
||||
@ -218,7 +228,10 @@ make_menu (GNCSearchCoreType *fe)
|
||||
static char *
|
||||
describe_button (GNCSearchAccount *fi)
|
||||
{
|
||||
if (fi->priv->selected_accounts)
|
||||
GNCSearchAccountPrivate *priv;
|
||||
|
||||
priv = _PRIVATE(fi);
|
||||
if (priv->selected_accounts)
|
||||
return (_("Selected Accounts"));
|
||||
return (_("Choose Accounts"));
|
||||
}
|
||||
@ -226,6 +239,7 @@ describe_button (GNCSearchAccount *fi)
|
||||
static void
|
||||
button_clicked (GtkButton *button, GNCSearchAccount *fi)
|
||||
{
|
||||
GNCSearchAccountPrivate *priv;
|
||||
GtkDialog *dialog;
|
||||
GtkWidget *account_tree;
|
||||
GtkWidget *accounts_scroller;
|
||||
@ -240,9 +254,10 @@ button_clicked (GtkButton *button, GNCSearchAccount *fi)
|
||||
gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE);
|
||||
|
||||
/* Select the currently-selected accounts */
|
||||
if (fi->priv->selected_accounts)
|
||||
priv = _PRIVATE(fi);
|
||||
if (priv->selected_accounts)
|
||||
gnc_tree_view_account_set_selected_accounts (GNC_TREE_VIEW_ACCOUNT(account_tree),
|
||||
fi->priv->selected_accounts, FALSE);
|
||||
priv->selected_accounts, FALSE);
|
||||
|
||||
/* Create the account scroller and put the tree in it */
|
||||
accounts_scroller = gtk_scrolled_window_new (NULL, NULL);
|
||||
@ -271,10 +286,10 @@ button_clicked (GtkButton *button, GNCSearchAccount *fi)
|
||||
|
||||
/* Now run the dialog */
|
||||
if (gtk_dialog_run (dialog) == GTK_RESPONSE_OK) {
|
||||
if (fi->priv->selected_accounts)
|
||||
g_list_free (fi->priv->selected_accounts);
|
||||
if (priv->selected_accounts)
|
||||
g_list_free (priv->selected_accounts);
|
||||
|
||||
fi->priv->selected_accounts =
|
||||
priv->selected_accounts =
|
||||
gnc_tree_view_account_get_selected_accounts (GNC_TREE_VIEW_ACCOUNT (account_tree));
|
||||
|
||||
desc = describe_button (fi);
|
||||
@ -316,13 +331,15 @@ gncs_get_widget (GNCSearchCoreType *fe)
|
||||
|
||||
static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchAccountPrivate *priv;
|
||||
GNCSearchAccount *fi = (GNCSearchAccount *)fe;
|
||||
GList *l = NULL, *node;
|
||||
|
||||
g_return_val_if_fail (fi, NULL);
|
||||
g_return_val_if_fail (IS_GNCSEARCH_ACCOUNT (fi), NULL);
|
||||
|
||||
for (node = fi->priv->selected_accounts; node; node = node->next) {
|
||||
priv = _PRIVATE(fi);
|
||||
for (node = priv->selected_accounts; node; node = node->next) {
|
||||
Account *acc = node->data;
|
||||
const GUID *guid = xaccAccountGetGUID (acc);
|
||||
l = g_list_prepend (l, (gpointer)guid);
|
||||
@ -335,14 +352,17 @@ static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe)
|
||||
static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchAccount *se, *fse = (GNCSearchAccount *)fe;
|
||||
GNCSearchAccountPrivate *se_priv, *fse_priv;
|
||||
|
||||
g_return_val_if_fail (fse, NULL);
|
||||
g_return_val_if_fail (IS_GNCSEARCH_ACCOUNT (fse), NULL);
|
||||
fse_priv = _PRIVATE(fse);
|
||||
|
||||
se = gnc_search_account_new ();
|
||||
se_priv = _PRIVATE(se);
|
||||
se->how = fse->how;
|
||||
se->priv->match_all = fse->priv->match_all;
|
||||
se->priv->selected_accounts = g_list_copy (fse->priv->selected_accounts);
|
||||
se_priv->match_all = fse_priv->match_all;
|
||||
se_priv->selected_accounts = g_list_copy (fse_priv->selected_accounts);
|
||||
|
||||
return (GNCSearchCoreType *)se;
|
||||
}
|
||||
|
@ -24,16 +24,16 @@
|
||||
#include "search-core-type.h"
|
||||
#include "QueryNew.h"
|
||||
|
||||
#define GNCSEARCH_ACCOUNT(obj) GTK_CHECK_CAST (obj, gnc_search_account_get_type (), GNCSearchAccount)
|
||||
#define GNCSEARCH_ACCOUNT_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gnc_search_account_get_type (), GNCSearchAccountClass)
|
||||
#define IS_GNCSEARCH_ACCOUNT(obj) GTK_CHECK_TYPE (obj, gnc_search_account_get_type ())
|
||||
#define GNC_TYPE_SEARCH_ACCOUNT (gnc_search_account_get_type ())
|
||||
#define GNCSEARCH_ACCOUNT(obj) GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_ACCOUNT, GNCSearchAccount)
|
||||
#define GNCSEARCH_ACCOUNT_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_ACCOUNT, GNCSearchAccountClass)
|
||||
#define IS_GNCSEARCH_ACCOUNT(obj) GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_ACCOUNT)
|
||||
|
||||
typedef struct _GNCSearchAccount GNCSearchAccount;
|
||||
typedef struct _GNCSearchAccountClass GNCSearchAccountClass;
|
||||
|
||||
struct _GNCSearchAccount {
|
||||
GNCSearchCoreType parent;
|
||||
struct _GNCSearchAccountPrivate *priv;
|
||||
|
||||
guid_match_t how;
|
||||
};
|
||||
|
@ -39,11 +39,15 @@ static void gnc_search_boolean_class_init (GNCSearchBooleanClass *class);
|
||||
static void gnc_search_boolean_init (GNCSearchBoolean *gspaper);
|
||||
static void gnc_search_boolean_finalize (GObject *obj);
|
||||
|
||||
#define _PRIVATE(x) (((GNCSearchBoolean *)(x))->priv)
|
||||
typedef struct _GNCSearchBooleanPrivate GNCSearchBooleanPrivate;
|
||||
|
||||
struct _GNCSearchBooleanPrivate {
|
||||
gpointer dummy;
|
||||
};
|
||||
|
||||
#define _PRIVATE(o) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_BOOLEAN, GNCSearchBooleanPrivate))
|
||||
|
||||
static GNCSearchCoreTypeClass *parent_class;
|
||||
|
||||
guint
|
||||
@ -88,12 +92,13 @@ gnc_search_boolean_class_init (GNCSearchBooleanClass *class)
|
||||
gnc_search_core_type->get_widget = gncs_get_widget;
|
||||
gnc_search_core_type->get_predicate = gncs_get_predicate;
|
||||
gnc_search_core_type->clone = gncs_clone;
|
||||
|
||||
g_type_class_add_private(class, sizeof(GNCSearchBooleanPrivate));
|
||||
}
|
||||
|
||||
static void
|
||||
gnc_search_boolean_init (GNCSearchBoolean *o)
|
||||
{
|
||||
o->priv = g_malloc0 (sizeof (*o->priv));
|
||||
o->how = COMPARE_EQUAL;
|
||||
o->value = TRUE;
|
||||
}
|
||||
@ -104,8 +109,6 @@ gnc_search_boolean_finalize (GObject *obj)
|
||||
GNCSearchBoolean *o = (GNCSearchBoolean *)obj;
|
||||
g_assert (IS_GNCSEARCH_BOOLEAN (o));
|
||||
|
||||
g_free(o->priv);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize(obj);
|
||||
}
|
||||
|
||||
@ -119,7 +122,7 @@ gnc_search_boolean_finalize (GObject *obj)
|
||||
GNCSearchBoolean *
|
||||
gnc_search_boolean_new (void)
|
||||
{
|
||||
GNCSearchBoolean *o = g_object_new(gnc_search_boolean_get_type (), NULL);
|
||||
GNCSearchBoolean *o = g_object_new(GNC_TYPE_SEARCH_BOOLEAN, NULL);
|
||||
return o;
|
||||
}
|
||||
|
||||
|
@ -24,16 +24,16 @@
|
||||
#include "search-core-type.h"
|
||||
#include "QueryNew.h"
|
||||
|
||||
#define GNCSEARCH_BOOLEAN(obj) GTK_CHECK_CAST (obj, gnc_search_boolean_get_type (), GNCSearchBoolean)
|
||||
#define GNCSEARCH_BOOLEAN_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gnc_search_boolean_get_type (), GNCSearchBooleanClass)
|
||||
#define IS_GNCSEARCH_BOOLEAN(obj) GTK_CHECK_TYPE (obj, gnc_search_boolean_get_type ())
|
||||
#define GNC_TYPE_SEARCH_BOOLEAN (gnc_search_boolean_get_type ())
|
||||
#define GNCSEARCH_BOOLEAN(obj) GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_BOOLEAN, GNCSearchBoolean)
|
||||
#define GNCSEARCH_BOOLEAN_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_BOOLEAN, GNCSearchBooleanClass)
|
||||
#define IS_GNCSEARCH_BOOLEAN(obj) GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_BOOLEAN)
|
||||
|
||||
typedef struct _GNCSearchBoolean GNCSearchBoolean;
|
||||
typedef struct _GNCSearchBooleanClass GNCSearchBooleanClass;
|
||||
|
||||
struct _GNCSearchBoolean {
|
||||
GNCSearchCoreType parent;
|
||||
struct _GNCSearchBooleanPrivate *priv;
|
||||
|
||||
query_compare_t how;
|
||||
gboolean value;
|
||||
|
@ -48,10 +48,15 @@ static void gnc_search_core_type_class_init (GNCSearchCoreTypeClass *class);
|
||||
static void gnc_search_core_type_init (GNCSearchCoreType *gspaper);
|
||||
static void gnc_search_core_type_finalize (GObject *obj);
|
||||
|
||||
#define _PRIVATE(x) (((GNCSearchCoreType *)(x))->priv)
|
||||
typedef struct _GNCSearchCoreTypePrivate GNCSearchCoreTypePrivate;
|
||||
|
||||
struct _GNCSearchCoreTypePrivate {
|
||||
gpointer dummy;
|
||||
};
|
||||
|
||||
#define _PRIVATE(o) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_CORE_TYPE, GNCSearchCoreTypePrivate))
|
||||
|
||||
static GtkObjectClass *parent_class;
|
||||
|
||||
static GHashTable *typeTable = NULL;
|
||||
@ -94,19 +99,20 @@ gnc_search_core_type_class_init (GNCSearchCoreTypeClass *klass)
|
||||
klass->validate = validate;
|
||||
klass->grab_focus = grab_focus;
|
||||
klass->editable_enters = editable_enters;
|
||||
|
||||
g_type_class_add_private(klass, sizeof(GNCSearchCoreTypePrivate));
|
||||
}
|
||||
|
||||
static void
|
||||
gnc_search_core_type_init (GNCSearchCoreType *o)
|
||||
{
|
||||
o->priv = g_malloc0 (sizeof (*o->priv));
|
||||
}
|
||||
|
||||
static void
|
||||
gnc_search_core_type_finalize (GObject *obj)
|
||||
{
|
||||
GNCSearchCoreType *o = (GNCSearchCoreType *)obj;
|
||||
g_free(o->priv);
|
||||
g_assert (GNC_IS_SEARCH_CORE_TYPE (o));
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize(obj);
|
||||
}
|
||||
|
@ -29,12 +29,11 @@
|
||||
#define GNC_TYPE_SEARCH_CORE_TYPE (gnc_search_core_type_get_type ())
|
||||
#define GNC_SEARCH_CORE_TYPE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_SEARCH_CORE_TYPE, GNCSearchCoreType))
|
||||
#define GNC_SEARCH_CORE_TYPE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GNC_TYPE_SEARCH_CORE_TYPE, GNCSearchCoreTypeClass))
|
||||
#define GNC_IS_SEARCH_CORE_TYPE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_SEARCH_CORE_TYPE)
|
||||
#define GNC_IS_SEARCH_CORE_TYPE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_SEARCH_CORE_TYPE))
|
||||
#define GNC_SEARCH_CORE_TYPE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_SEARCH_CORE_TYPE, GNCSearchCoreTypeClass))
|
||||
|
||||
typedef struct {
|
||||
GtkObject parent;
|
||||
struct _GNCSearchCoreTypePrivate *priv;
|
||||
|
||||
GNCSearchParam * param;
|
||||
} GNCSearchCoreType;
|
||||
|
@ -43,12 +43,15 @@ static void gnc_search_date_class_init (GNCSearchDateClass *class);
|
||||
static void gnc_search_date_init (GNCSearchDate *gspaper);
|
||||
static void gnc_search_date_finalize (GObject *obj);
|
||||
|
||||
#define _PRIVATE(x) (((GNCSearchDate *)(x))->priv)
|
||||
typedef struct _GNCSearchDatePrivate GNCSearchDatePrivate;
|
||||
|
||||
struct _GNCSearchDatePrivate {
|
||||
GtkWidget *entry;
|
||||
};
|
||||
|
||||
#define _PRIVATE(o) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_DATE, GNCSearchDatePrivate))
|
||||
|
||||
static GNCSearchCoreTypeClass *parent_class;
|
||||
|
||||
guint
|
||||
@ -95,12 +98,13 @@ gnc_search_date_class_init (GNCSearchDateClass *class)
|
||||
gnc_search_core_type->get_widget = gncs_get_widget;
|
||||
gnc_search_core_type->get_predicate = gncs_get_predicate;
|
||||
gnc_search_core_type->clone = gncs_clone;
|
||||
|
||||
g_type_class_add_private(class, sizeof(GNCSearchDatePrivate));
|
||||
}
|
||||
|
||||
static void
|
||||
gnc_search_date_init (GNCSearchDate *o)
|
||||
{
|
||||
o->priv = g_malloc0 (sizeof (*o->priv));
|
||||
o->ts.tv_sec = time(NULL);
|
||||
o->how = COMPARE_LT;
|
||||
}
|
||||
@ -108,13 +112,15 @@ gnc_search_date_init (GNCSearchDate *o)
|
||||
static void
|
||||
gnc_search_date_finalize (GObject *obj)
|
||||
{
|
||||
GNCSearchDate *o = (GNCSearchDate *)obj;
|
||||
g_assert (IS_GNCSEARCH_DATE (o));
|
||||
GNCSearchDate *o;
|
||||
GNCSearchDatePrivate *priv;
|
||||
|
||||
if (o->priv->entry)
|
||||
gtk_widget_destroy (o->priv->entry);
|
||||
g_assert (IS_GNCSEARCH_DATE (obj));
|
||||
|
||||
g_free(o->priv);
|
||||
o = GNCSEARCH_DATE(obj);
|
||||
priv = _PRIVATE(o);
|
||||
if (priv->entry)
|
||||
gtk_widget_destroy (priv->entry);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize(obj);
|
||||
}
|
||||
@ -129,7 +135,7 @@ gnc_search_date_finalize (GObject *obj)
|
||||
GNCSearchDate *
|
||||
gnc_search_date_new (void)
|
||||
{
|
||||
GNCSearchDate *o = g_object_new(gnc_search_date_get_type (), NULL);
|
||||
GNCSearchDate *o = g_object_new(GNC_TYPE_SEARCH_DATE, NULL);
|
||||
return o;
|
||||
}
|
||||
|
||||
@ -225,24 +231,28 @@ static void
|
||||
grab_focus (GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchDate *fi = (GNCSearchDate *)fe;
|
||||
GNCSearchDatePrivate *priv;
|
||||
|
||||
g_return_if_fail (fi);
|
||||
g_return_if_fail (IS_GNCSEARCH_DATE (fi));
|
||||
|
||||
if (fi->priv->entry)
|
||||
gtk_widget_grab_focus (GNC_DATE_EDIT(fi->priv->entry)->date_entry);
|
||||
priv = _PRIVATE(fi);
|
||||
if (priv->entry)
|
||||
gtk_widget_grab_focus (GNC_DATE_EDIT(priv->entry)->date_entry);
|
||||
}
|
||||
|
||||
static void
|
||||
editable_enters (GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchDate *fi = (GNCSearchDate *)fe;
|
||||
GNCSearchDatePrivate *priv;
|
||||
|
||||
g_return_if_fail (fi);
|
||||
g_return_if_fail (IS_GNCSEARCH_DATE (fi));
|
||||
|
||||
if (fi->priv->entry)
|
||||
gnc_date_editable_enters (GNC_DATE_EDIT (fi->priv->entry), TRUE);
|
||||
priv = _PRIVATE(fi);
|
||||
if (priv->entry)
|
||||
gnc_date_editable_enters (GNC_DATE_EDIT (priv->entry), TRUE);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
@ -250,10 +260,12 @@ gncs_get_widget (GNCSearchCoreType *fe)
|
||||
{
|
||||
GtkWidget *entry, *menu, *box;
|
||||
GNCSearchDate *fi = (GNCSearchDate *)fe;
|
||||
GNCSearchDatePrivate *priv;
|
||||
|
||||
g_return_val_if_fail (fi, NULL);
|
||||
g_return_val_if_fail (IS_GNCSEARCH_DATE (fi), NULL);
|
||||
|
||||
priv = _PRIVATE(fi);
|
||||
box = gtk_hbox_new (FALSE, 3);
|
||||
|
||||
/* Build and connect the option menu */
|
||||
@ -265,7 +277,7 @@ gncs_get_widget (GNCSearchCoreType *fe)
|
||||
g_signal_connect (G_OBJECT (entry), "date_changed", G_CALLBACK (date_changed), fe);
|
||||
gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 3);
|
||||
g_object_ref (entry);
|
||||
fi->priv->entry = entry;
|
||||
priv->entry = entry;
|
||||
|
||||
/* And return the box */
|
||||
return box;
|
||||
@ -274,13 +286,15 @@ gncs_get_widget (GNCSearchCoreType *fe)
|
||||
static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchDate *fi = (GNCSearchDate *)fe;
|
||||
GNCSearchDatePrivate *priv;
|
||||
|
||||
g_return_val_if_fail (fi, NULL);
|
||||
g_return_val_if_fail (IS_GNCSEARCH_DATE (fi), NULL);
|
||||
|
||||
/* Make sure we actually use the currently-entered date */
|
||||
if (fi->priv->entry)
|
||||
fi->ts = gnc_date_edit_get_date_ts (GNC_DATE_EDIT (fi->priv->entry));
|
||||
priv = _PRIVATE(fi);
|
||||
if (priv->entry)
|
||||
fi->ts = gnc_date_edit_get_date_ts (GNC_DATE_EDIT (priv->entry));
|
||||
|
||||
return gncQueryDatePredicate (fi->how, DATE_MATCH_NORMAL, fi->ts);
|
||||
}
|
||||
|
@ -25,16 +25,16 @@
|
||||
#include "QueryNew.h"
|
||||
#include "gnc-date.h"
|
||||
|
||||
#define GNCSEARCH_DATE(obj) GTK_CHECK_CAST (obj, gnc_search_date_get_type (), GNCSearchDate)
|
||||
#define GNCSEARCH_DATE_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gnc_search_date_get_type (), GNCSearchDateClass)
|
||||
#define IS_GNCSEARCH_DATE(obj) GTK_CHECK_TYPE (obj, gnc_search_date_get_type ())
|
||||
#define GNC_TYPE_SEARCH_DATE (gnc_search_date_get_type ())
|
||||
#define GNCSEARCH_DATE(obj) GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_DATE, GNCSearchDate)
|
||||
#define GNCSEARCH_DATE_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_DATE, GNCSearchDateClass)
|
||||
#define IS_GNCSEARCH_DATE(obj) GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_DATE)
|
||||
|
||||
typedef struct _GNCSearchDate GNCSearchDate;
|
||||
typedef struct _GNCSearchDateClass GNCSearchDateClass;
|
||||
|
||||
struct _GNCSearchDate {
|
||||
GNCSearchCoreType parent;
|
||||
struct _GNCSearchDatePrivate *priv;
|
||||
|
||||
query_compare_t how;
|
||||
Timespec ts;
|
||||
|
@ -42,13 +42,16 @@ static void gnc_search_double_class_init (GNCSearchDoubleClass *class);
|
||||
static void gnc_search_double_init (GNCSearchDouble *gspaper);
|
||||
static void gnc_search_double_finalize (GObject *obj);
|
||||
|
||||
#define _PRIVATE(x) (((GNCSearchDouble *)(x))->priv)
|
||||
typedef struct _GNCSearchDoublePrivate GNCSearchDoublePrivate;
|
||||
|
||||
struct _GNCSearchDoublePrivate {
|
||||
GtkWidget * entry;
|
||||
GNCAmountEdit *gae;
|
||||
};
|
||||
|
||||
#define _PRIVATE(o) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_DOUBLE, GNCSearchDoublePrivate))
|
||||
|
||||
static GNCSearchCoreTypeClass *parent_class;
|
||||
|
||||
guint
|
||||
@ -95,12 +98,13 @@ gnc_search_double_class_init (GNCSearchDoubleClass *class)
|
||||
gnc_search_core_type->get_widget = gncs_get_widget;
|
||||
gnc_search_core_type->get_predicate = gncs_get_predicate;
|
||||
gnc_search_core_type->clone = gncs_clone;
|
||||
|
||||
g_type_class_add_private(class, sizeof(GNCSearchDoublePrivate));
|
||||
}
|
||||
|
||||
static void
|
||||
gnc_search_double_init (GNCSearchDouble *o)
|
||||
{
|
||||
o->priv = g_malloc0 (sizeof (*o->priv));
|
||||
o->how = COMPARE_EQUAL;
|
||||
}
|
||||
|
||||
@ -110,8 +114,6 @@ gnc_search_double_finalize (GObject *obj)
|
||||
GNCSearchDouble *o = (GNCSearchDouble *)obj;
|
||||
g_assert (IS_GNCSEARCH_DOUBLE (o));
|
||||
|
||||
g_free(o->priv);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize(obj);
|
||||
}
|
||||
|
||||
@ -125,7 +127,7 @@ gnc_search_double_finalize (GObject *obj)
|
||||
GNCSearchDouble *
|
||||
gnc_search_double_new (void)
|
||||
{
|
||||
GNCSearchDouble *o = g_object_new(gnc_search_double_get_type (), NULL);
|
||||
GNCSearchDouble *o = g_object_new(GNC_TYPE_SEARCH_DOUBLE, NULL);
|
||||
return o;
|
||||
}
|
||||
|
||||
@ -221,24 +223,28 @@ static void
|
||||
grab_focus (GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchDouble *fi = (GNCSearchDouble *)fe;
|
||||
GNCSearchDoublePrivate *priv ;
|
||||
|
||||
g_return_if_fail (fi);
|
||||
g_return_if_fail (IS_GNCSEARCH_DOUBLE (fi));
|
||||
|
||||
if (fi->priv->entry)
|
||||
gtk_widget_grab_focus (fi->priv->entry);
|
||||
priv = _PRIVATE(fi);
|
||||
if (priv->entry)
|
||||
gtk_widget_grab_focus (priv->entry);
|
||||
}
|
||||
|
||||
static void
|
||||
editable_enters (GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchDouble *fi = (GNCSearchDouble *)fe;
|
||||
GNCSearchDoublePrivate *priv ;
|
||||
|
||||
g_return_if_fail (fi);
|
||||
g_return_if_fail (IS_GNCSEARCH_DOUBLE (fi));
|
||||
|
||||
if (fi->priv->entry)
|
||||
gtk_entry_set_activates_default(GTK_ENTRY (fi->priv->entry), TRUE);
|
||||
priv = _PRIVATE(fi);
|
||||
if (priv->entry)
|
||||
gtk_entry_set_activates_default(GTK_ENTRY (priv->entry), TRUE);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
@ -246,10 +252,12 @@ gncs_get_widget (GNCSearchCoreType *fe)
|
||||
{
|
||||
GtkWidget *entry, *menu, *box;
|
||||
GNCSearchDouble *fi = (GNCSearchDouble *)fe;
|
||||
GNCSearchDoublePrivate *priv ;
|
||||
|
||||
g_return_val_if_fail (fi, NULL);
|
||||
g_return_val_if_fail (IS_GNCSEARCH_DOUBLE (fi), NULL);
|
||||
|
||||
priv = _PRIVATE(fi);
|
||||
box = gtk_hbox_new (FALSE, 3);
|
||||
|
||||
/* Build and connect the option menu */
|
||||
@ -262,8 +270,8 @@ gncs_get_widget (GNCSearchCoreType *fe)
|
||||
gnc_amount_edit_set_damount (GNC_AMOUNT_EDIT (entry), fi->value);
|
||||
g_signal_connect (G_OBJECT (entry), "amount_changed", G_CALLBACK (entry_changed), fe);
|
||||
gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 3);
|
||||
fi->priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
|
||||
fi->priv->gae = GNC_AMOUNT_EDIT (entry);
|
||||
priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
|
||||
priv->gae = GNC_AMOUNT_EDIT (entry);
|
||||
|
||||
/* And return the box */
|
||||
return box;
|
||||
@ -272,12 +280,14 @@ gncs_get_widget (GNCSearchCoreType *fe)
|
||||
static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchDouble *fi = (GNCSearchDouble *)fe;
|
||||
GNCSearchDoublePrivate *priv ;
|
||||
|
||||
g_return_val_if_fail (fi, NULL);
|
||||
g_return_val_if_fail (IS_GNCSEARCH_DOUBLE (fi), NULL);
|
||||
|
||||
/* force the computation of the entry, because we may not get the signal */
|
||||
entry_changed (fi->priv->gae, fi);
|
||||
priv = _PRIVATE(fi);
|
||||
entry_changed (priv->gae, fi);
|
||||
|
||||
return gncQueryDoublePredicate (fi->how, fi->value);
|
||||
}
|
||||
|
@ -24,16 +24,16 @@
|
||||
#include "search-core-type.h"
|
||||
#include "QueryNew.h"
|
||||
|
||||
#define GNCSEARCH_DOUBLE(obj) GTK_CHECK_CAST (obj, gnc_search_double_get_type (), GNCSearchDouble)
|
||||
#define GNCSEARCH_DOUBLE_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gnc_search_double_get_type (), GNCSearchDoubleClass)
|
||||
#define IS_GNCSEARCH_DOUBLE(obj) GTK_CHECK_TYPE (obj, gnc_search_double_get_type ())
|
||||
#define GNC_TYPE_SEARCH_DOUBLE (gnc_search_double_get_type ())
|
||||
#define GNCSEARCH_DOUBLE(obj) GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_DOUBLE, GNCSearchDouble)
|
||||
#define GNCSEARCH_DOUBLE_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_DOUBLE, GNCSearchDoubleClass)
|
||||
#define IS_GNCSEARCH_DOUBLE(obj) GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_DOUBLE)
|
||||
|
||||
typedef struct _GNCSearchDouble GNCSearchDouble;
|
||||
typedef struct _GNCSearchDoubleClass GNCSearchDoubleClass;
|
||||
|
||||
struct _GNCSearchDouble {
|
||||
GNCSearchCoreType parent;
|
||||
struct _GNCSearchDoublePrivate *priv;
|
||||
|
||||
query_compare_t how;
|
||||
double value;
|
||||
|
@ -42,13 +42,17 @@ static void gnc_search_int64_class_init (GNCSearchInt64Class *class);
|
||||
static void gnc_search_int64_init (GNCSearchInt64 *gspaper);
|
||||
static void gnc_search_int64_finalize (GObject *obj);
|
||||
|
||||
#define _PRIVATE(x) (((GNCSearchInt64 *)(x))->priv)
|
||||
|
||||
typedef struct _GNCSearchInt64Private GNCSearchInt64Private;
|
||||
|
||||
struct _GNCSearchInt64Private {
|
||||
GtkWidget *entry;
|
||||
GNCAmountEdit *gae;
|
||||
};
|
||||
|
||||
#define _PRIVATE(o) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_INT64, GNCSearchInt64Private))
|
||||
|
||||
static GNCSearchCoreTypeClass *parent_class;
|
||||
|
||||
guint
|
||||
@ -95,12 +99,13 @@ gnc_search_int64_class_init (GNCSearchInt64Class *class)
|
||||
gnc_search_core_type->get_widget = gncs_get_widget;
|
||||
gnc_search_core_type->get_predicate = gncs_get_predicate;
|
||||
gnc_search_core_type->clone = gncs_clone;
|
||||
|
||||
g_type_class_add_private(class, sizeof(GNCSearchInt64Private));
|
||||
}
|
||||
|
||||
static void
|
||||
gnc_search_int64_init (GNCSearchInt64 *o)
|
||||
{
|
||||
o->priv = g_malloc0 (sizeof (*o->priv));
|
||||
o->how = COMPARE_EQUAL;
|
||||
}
|
||||
|
||||
@ -110,8 +115,6 @@ gnc_search_int64_finalize (GObject *obj)
|
||||
GNCSearchInt64 *o = (GNCSearchInt64 *)obj;
|
||||
g_assert (IS_GNCSEARCH_INT64 (o));
|
||||
|
||||
g_free(o->priv);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize(obj);
|
||||
}
|
||||
|
||||
@ -125,7 +128,7 @@ gnc_search_int64_finalize (GObject *obj)
|
||||
GNCSearchInt64 *
|
||||
gnc_search_int64_new (void)
|
||||
{
|
||||
GNCSearchInt64 *o = g_object_new(gnc_search_int64_get_type (), NULL);
|
||||
GNCSearchInt64 *o = g_object_new(GNC_TYPE_SEARCH_INT64, NULL);
|
||||
return o;
|
||||
}
|
||||
|
||||
@ -223,24 +226,28 @@ static void
|
||||
grab_focus (GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchInt64 *fi = (GNCSearchInt64 *)fe;
|
||||
GNCSearchInt64Private *priv;
|
||||
|
||||
g_return_if_fail (fi);
|
||||
g_return_if_fail (IS_GNCSEARCH_INT64 (fi));
|
||||
|
||||
if (fi->priv->entry)
|
||||
gtk_widget_grab_focus (fi->priv->entry);
|
||||
priv = _PRIVATE(fi);
|
||||
if (priv->entry)
|
||||
gtk_widget_grab_focus (priv->entry);
|
||||
}
|
||||
|
||||
static void
|
||||
editable_enters (GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchInt64 *fi = (GNCSearchInt64 *)fe;
|
||||
GNCSearchInt64Private *priv;
|
||||
|
||||
g_return_if_fail (fi);
|
||||
g_return_if_fail (IS_GNCSEARCH_INT64 (fi));
|
||||
|
||||
if (fi->priv->entry)
|
||||
gtk_entry_set_activates_default(GTK_ENTRY (fi->priv->entry), TRUE);
|
||||
priv = _PRIVATE(fi);
|
||||
if (priv->entry)
|
||||
gtk_entry_set_activates_default(GTK_ENTRY (priv->entry), TRUE);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
@ -248,10 +255,12 @@ gncs_get_widget (GNCSearchCoreType *fe)
|
||||
{
|
||||
GtkWidget *entry, *menu, *box;
|
||||
GNCSearchInt64 *fi = (GNCSearchInt64 *)fe;
|
||||
GNCSearchInt64Private *priv;
|
||||
|
||||
g_return_val_if_fail (fi, NULL);
|
||||
g_return_val_if_fail (IS_GNCSEARCH_INT64 (fi), NULL);
|
||||
|
||||
priv = _PRIVATE(fi);
|
||||
box = gtk_hbox_new (FALSE, 3);
|
||||
|
||||
/* Build and connect the option menu */
|
||||
@ -268,8 +277,8 @@ gncs_get_widget (GNCSearchCoreType *fe)
|
||||
}
|
||||
g_signal_connect (G_OBJECT (entry), "amount_changed", G_CALLBACK (entry_changed), fe);
|
||||
gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 3);
|
||||
fi->priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
|
||||
fi->priv->gae = GNC_AMOUNT_EDIT (entry);
|
||||
priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
|
||||
priv->gae = GNC_AMOUNT_EDIT (entry);
|
||||
|
||||
/* And return the box */
|
||||
return box;
|
||||
@ -278,12 +287,14 @@ gncs_get_widget (GNCSearchCoreType *fe)
|
||||
static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchInt64 *fi = (GNCSearchInt64 *)fe;
|
||||
GNCSearchInt64Private *priv;
|
||||
|
||||
g_return_val_if_fail (fi, NULL);
|
||||
g_return_val_if_fail (IS_GNCSEARCH_INT64 (fi), NULL);
|
||||
|
||||
/* force the computation of the entry, because we may not get the signal */
|
||||
entry_changed (fi->priv->gae, fi);
|
||||
priv = _PRIVATE(fi);
|
||||
entry_changed (priv->gae, fi);
|
||||
|
||||
return gncQueryInt64Predicate (fi->how, fi->value);
|
||||
}
|
||||
|
@ -24,16 +24,16 @@
|
||||
#include "search-core-type.h"
|
||||
#include "QueryNew.h"
|
||||
|
||||
#define GNCSEARCH_INT64(obj) GTK_CHECK_CAST (obj, gnc_search_int64_get_type (), GNCSearchInt64)
|
||||
#define GNCSEARCH_INT64_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gnc_search_int64_get_type (), GNCSearchInt64Class)
|
||||
#define IS_GNCSEARCH_INT64(obj) GTK_CHECK_TYPE (obj, gnc_search_int64_get_type ())
|
||||
#define GNC_TYPE_SEARCH_INT64 (gnc_search_int64_get_type ())
|
||||
#define GNCSEARCH_INT64(obj) GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_INT64, GNCSearchInt64)
|
||||
#define GNCSEARCH_INT64_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_INT64, GNCSearchInt64Class)
|
||||
#define IS_GNCSEARCH_INT64(obj) GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_INT64)
|
||||
|
||||
typedef struct _GNCSearchInt64 GNCSearchInt64;
|
||||
typedef struct _GNCSearchInt64Class GNCSearchInt64Class;
|
||||
|
||||
struct _GNCSearchInt64 {
|
||||
GNCSearchCoreType parent;
|
||||
struct _GNCSearchInt64Private *priv;
|
||||
|
||||
query_compare_t how;
|
||||
gint64 value;
|
||||
|
@ -42,7 +42,7 @@ static void gnc_search_numeric_class_init (GNCSearchNumericClass *class);
|
||||
static void gnc_search_numeric_init (GNCSearchNumeric *gspaper);
|
||||
static void gnc_search_numeric_finalize (GObject *obj);
|
||||
|
||||
#define _PRIVATE(x) (((GNCSearchNumeric *)(x))->priv)
|
||||
typedef struct _GNCSearchNumericPrivate GNCSearchNumericPrivate;
|
||||
|
||||
struct _GNCSearchNumericPrivate {
|
||||
gboolean is_debcred;
|
||||
@ -50,6 +50,9 @@ struct _GNCSearchNumericPrivate {
|
||||
GNCAmountEdit *gae;
|
||||
};
|
||||
|
||||
#define _PRIVATE(o) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_NUMERIC, GNCSearchNumericPrivate))
|
||||
|
||||
static GNCSearchCoreTypeClass *parent_class;
|
||||
|
||||
guint
|
||||
@ -96,12 +99,13 @@ gnc_search_numeric_class_init (GNCSearchNumericClass *class)
|
||||
gnc_search_core_type->get_widget = gncs_get_widget;
|
||||
gnc_search_core_type->get_predicate = gncs_get_predicate;
|
||||
gnc_search_core_type->clone = gncs_clone;
|
||||
|
||||
g_type_class_add_private(class, sizeof(GNCSearchNumericPrivate));
|
||||
}
|
||||
|
||||
static void
|
||||
gnc_search_numeric_init (GNCSearchNumeric *o)
|
||||
{
|
||||
o->priv = g_malloc0 (sizeof (*o->priv));
|
||||
o->value = gnc_numeric_zero ();
|
||||
o->how = COMPARE_EQUAL;
|
||||
o->option = NUMERIC_MATCH_ANY;
|
||||
@ -113,8 +117,6 @@ gnc_search_numeric_finalize (GObject *obj)
|
||||
GNCSearchNumeric *o = (GNCSearchNumeric *)obj;
|
||||
g_assert (IS_GNCSEARCH_NUMERIC (o));
|
||||
|
||||
g_free(o->priv);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize(obj);
|
||||
}
|
||||
|
||||
@ -128,7 +130,7 @@ gnc_search_numeric_finalize (GObject *obj)
|
||||
GNCSearchNumeric *
|
||||
gnc_search_numeric_new (void)
|
||||
{
|
||||
GNCSearchNumeric *o = g_object_new(gnc_search_numeric_get_type (), NULL);
|
||||
GNCSearchNumeric *o = g_object_new(GNC_TYPE_SEARCH_NUMERIC, NULL);
|
||||
return o;
|
||||
}
|
||||
|
||||
@ -142,8 +144,12 @@ gnc_search_numeric_new (void)
|
||||
GNCSearchNumeric *
|
||||
gnc_search_numeric_debcred_new (void)
|
||||
{
|
||||
GNCSearchNumeric *o = g_object_new(gnc_search_numeric_get_type (), NULL);
|
||||
o->priv->is_debcred = TRUE;
|
||||
GNCSearchNumeric *o;
|
||||
GNCSearchNumericPrivate *priv;
|
||||
|
||||
o = g_object_new(GNC_TYPE_SEARCH_NUMERIC, NULL);
|
||||
priv = _PRIVATE(o);
|
||||
priv->is_debcred = TRUE;
|
||||
return o;
|
||||
}
|
||||
|
||||
@ -228,29 +234,31 @@ static GtkWidget *
|
||||
make_how_menu (GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchNumeric *fi = (GNCSearchNumeric *)fe;
|
||||
GNCSearchNumericPrivate *priv;
|
||||
GtkWidget *menu, *item, *first = NULL, *opmenu;
|
||||
int current = 0, index = 0;
|
||||
|
||||
menu = gtk_menu_new ();
|
||||
|
||||
ADD_MENU_ITEM (fi->how, (fi->priv->is_debcred ?
|
||||
priv = _PRIVATE(fi);
|
||||
ADD_MENU_ITEM (fi->how, (priv->is_debcred ?
|
||||
_("less than") : _("is less than")),
|
||||
COMPARE_LT, G_CALLBACK (how_option_changed));
|
||||
first = item; /* Force one */
|
||||
ADD_MENU_ITEM (fi->how, (fi->priv->is_debcred ?
|
||||
ADD_MENU_ITEM (fi->how, (priv->is_debcred ?
|
||||
_("less than or equal to") :
|
||||
_("is less than or equal to")),
|
||||
COMPARE_LTE, G_CALLBACK (how_option_changed));
|
||||
ADD_MENU_ITEM (fi->how, (fi->priv->is_debcred ?
|
||||
ADD_MENU_ITEM (fi->how, (priv->is_debcred ?
|
||||
_("equal to") : _("equals")),
|
||||
COMPARE_EQUAL, G_CALLBACK (how_option_changed));
|
||||
ADD_MENU_ITEM (fi->how, (fi->priv->is_debcred ?
|
||||
ADD_MENU_ITEM (fi->how, (priv->is_debcred ?
|
||||
_("not equal to") : _("does not equal")),
|
||||
COMPARE_NEQ, G_CALLBACK (how_option_changed));
|
||||
ADD_MENU_ITEM (fi->how, (fi->priv->is_debcred ?
|
||||
ADD_MENU_ITEM (fi->how, (priv->is_debcred ?
|
||||
_("greater than") : _("is greater than")),
|
||||
COMPARE_GT, G_CALLBACK (how_option_changed));
|
||||
ADD_MENU_ITEM (fi->how, (fi->priv->is_debcred ?
|
||||
ADD_MENU_ITEM (fi->how, (priv->is_debcred ?
|
||||
_("greater than or equal to") :
|
||||
_("is greater than or equal to")),
|
||||
COMPARE_GTE, G_CALLBACK (how_option_changed));
|
||||
@ -294,24 +302,28 @@ static void
|
||||
grab_focus (GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchNumeric *fi = (GNCSearchNumeric *)fe;
|
||||
GNCSearchNumericPrivate *priv;
|
||||
|
||||
g_return_if_fail (fi);
|
||||
g_return_if_fail (IS_GNCSEARCH_NUMERIC (fi));
|
||||
|
||||
if (fi->priv->entry)
|
||||
gtk_widget_grab_focus (fi->priv->entry);
|
||||
priv = _PRIVATE(fi);
|
||||
if (priv->entry)
|
||||
gtk_widget_grab_focus (priv->entry);
|
||||
}
|
||||
|
||||
static void
|
||||
editable_enters (GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchNumeric *fi = (GNCSearchNumeric *)fe;
|
||||
GNCSearchNumericPrivate *priv;
|
||||
|
||||
g_return_if_fail (fi);
|
||||
g_return_if_fail (IS_GNCSEARCH_NUMERIC (fi));
|
||||
|
||||
if (fi->priv->entry)
|
||||
gtk_entry_set_activates_default(GTK_ENTRY (fi->priv->entry), TRUE);
|
||||
priv = _PRIVATE(fi);
|
||||
if (priv->entry)
|
||||
gtk_entry_set_activates_default(GTK_ENTRY (priv->entry), TRUE);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
@ -319,14 +331,16 @@ gncs_get_widget (GNCSearchCoreType *fe)
|
||||
{
|
||||
GtkWidget *entry, *menu, *box;
|
||||
GNCSearchNumeric *fi = (GNCSearchNumeric *)fe;
|
||||
GNCSearchNumericPrivate *priv;
|
||||
|
||||
g_return_val_if_fail (fi, NULL);
|
||||
g_return_val_if_fail (IS_GNCSEARCH_NUMERIC (fi), NULL);
|
||||
|
||||
priv = _PRIVATE(fi);
|
||||
box = gtk_hbox_new (FALSE, 3);
|
||||
|
||||
/* Build and connect the option menu(s) */
|
||||
if (fi->priv->is_debcred) {
|
||||
if (priv->is_debcred) {
|
||||
menu = make_option_menu (fe);
|
||||
gtk_box_pack_start (GTK_BOX (box), menu, FALSE, FALSE, 3);
|
||||
}
|
||||
@ -339,8 +353,8 @@ gncs_get_widget (GNCSearchCoreType *fe)
|
||||
gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT (entry), fi->value);
|
||||
g_signal_connect (G_OBJECT (entry), "amount_changed", G_CALLBACK (entry_changed), fe);
|
||||
gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 3);
|
||||
fi->priv->gae = GNC_AMOUNT_EDIT (entry);
|
||||
fi->priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
|
||||
priv->gae = GNC_AMOUNT_EDIT (entry);
|
||||
priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
|
||||
|
||||
/* And return the box */
|
||||
return box;
|
||||
@ -349,12 +363,14 @@ gncs_get_widget (GNCSearchCoreType *fe)
|
||||
static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchNumeric *fi = (GNCSearchNumeric *)fe;
|
||||
GNCSearchNumericPrivate *priv;
|
||||
|
||||
g_return_val_if_fail (fi, NULL);
|
||||
g_return_val_if_fail (IS_GNCSEARCH_NUMERIC (fi), NULL);
|
||||
|
||||
/* force the computation of the entry, because we may not get the signal */
|
||||
entry_changed (fi->priv->gae, fi);
|
||||
priv = _PRIVATE(fi);
|
||||
entry_changed (priv->gae, fi);
|
||||
|
||||
return gncQueryNumericPredicate (fi->how, fi->option, fi->value);
|
||||
}
|
||||
@ -362,15 +378,18 @@ static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe)
|
||||
static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchNumeric *se, *fse = (GNCSearchNumeric *)fe;
|
||||
GNCSearchNumericPrivate *se_priv, *fse_priv;
|
||||
|
||||
g_return_val_if_fail (fse, NULL);
|
||||
g_return_val_if_fail (IS_GNCSEARCH_NUMERIC (fse), NULL);
|
||||
fse_priv = _PRIVATE(fse);
|
||||
|
||||
se = gnc_search_numeric_new ();
|
||||
gnc_search_numeric_set_value (se, fse->value);
|
||||
gnc_search_numeric_set_how (se, fse->how);
|
||||
se_priv = _PRIVATE(se);
|
||||
gnc_search_numeric_set_option (se, fse->option);
|
||||
se->priv->is_debcred = fse->priv->is_debcred;
|
||||
se_priv->is_debcred = fse_priv->is_debcred;
|
||||
|
||||
return (GNCSearchCoreType *)se;
|
||||
}
|
||||
|
@ -25,9 +25,10 @@
|
||||
#include "gnc-numeric.h"
|
||||
#include "QueryNew.h"
|
||||
|
||||
#define GNCSEARCH_NUMERIC(obj) GTK_CHECK_CAST (obj, gnc_search_numeric_get_type (), GNCSearchNumeric)
|
||||
#define GNCSEARCH_NUMERIC_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gnc_search_numeric_get_type (), GNCSearchNumericClass)
|
||||
#define IS_GNCSEARCH_NUMERIC(obj) GTK_CHECK_TYPE (obj, gnc_search_numeric_get_type ())
|
||||
#define GNC_TYPE_SEARCH_NUMERIC (gnc_search_numeric_get_type ())
|
||||
#define GNCSEARCH_NUMERIC(obj) GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_NUMERIC, GNCSearchNumeric)
|
||||
#define GNCSEARCH_NUMERIC_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_NUMERIC, GNCSearchNumericClass)
|
||||
#define IS_GNCSEARCH_NUMERIC(obj) GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_NUMERIC)
|
||||
|
||||
typedef struct _GNCSearchNumeric GNCSearchNumeric;
|
||||
typedef struct _GNCSearchNumericClass GNCSearchNumericClass;
|
||||
|
@ -40,11 +40,15 @@ static void gnc_search_reconciled_class_init (GNCSearchReconciledClass *class);
|
||||
static void gnc_search_reconciled_init (GNCSearchReconciled *gspaper);
|
||||
static void gnc_search_reconciled_finalize (GObject *obj);
|
||||
|
||||
#define _PRIVATE(x) (((GNCSearchReconciled *)(x))->priv)
|
||||
typedef struct _GNCSearchReconciledPrivate GNCSearchReconciledPrivate;
|
||||
|
||||
struct _GNCSearchReconciledPrivate {
|
||||
gpointer dummy;
|
||||
};
|
||||
|
||||
#define _PRIVATE(o) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_RECONCILED, GNCSearchReconciledPrivate))
|
||||
|
||||
static GNCSearchCoreTypeClass *parent_class;
|
||||
|
||||
guint
|
||||
@ -89,12 +93,13 @@ gnc_search_reconciled_class_init (GNCSearchReconciledClass *class)
|
||||
gnc_search_core_type->get_widget = gncs_get_widget;
|
||||
gnc_search_core_type->get_predicate = gncs_get_predicate;
|
||||
gnc_search_core_type->clone = gncs_clone;
|
||||
|
||||
g_type_class_add_private(class, sizeof(GNCSearchReconciledPrivate));
|
||||
}
|
||||
|
||||
static void
|
||||
gnc_search_reconciled_init (GNCSearchReconciled *o)
|
||||
{
|
||||
o->priv = g_malloc0 (sizeof (*o->priv));
|
||||
o->how = COMPARE_EQUAL;
|
||||
o->value = CLEARED_NO;
|
||||
}
|
||||
@ -105,8 +110,6 @@ gnc_search_reconciled_finalize (GObject *obj)
|
||||
GNCSearchReconciled *o = (GNCSearchReconciled *)obj;
|
||||
g_assert (IS_GNCSEARCH_RECONCILED (o));
|
||||
|
||||
g_free(o->priv);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize(obj);
|
||||
}
|
||||
|
||||
@ -120,7 +123,7 @@ gnc_search_reconciled_finalize (GObject *obj)
|
||||
GNCSearchReconciled *
|
||||
gnc_search_reconciled_new (void)
|
||||
{
|
||||
GNCSearchReconciled *o = g_object_new(gnc_search_reconciled_get_type (), NULL);
|
||||
GNCSearchReconciled *o = g_object_new(GNC_TYPE_SEARCH_RECONCILED, NULL);
|
||||
return o;
|
||||
}
|
||||
|
||||
|
@ -24,16 +24,16 @@
|
||||
#include "search-core-type.h"
|
||||
#include "Query.h" /* for cleared_match_t */
|
||||
|
||||
#define GNCSEARCH_RECONCILED(obj) GTK_CHECK_CAST (obj, gnc_search_reconciled_get_type (), GNCSearchReconciled)
|
||||
#define GNCSEARCH_RECONCILED_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gnc_search_reconciled_get_type (), GNCSearchReconciledClass)
|
||||
#define IS_GNCSEARCH_RECONCILED(obj) GTK_CHECK_TYPE (obj, gnc_search_reconciled_get_type ())
|
||||
#define GNC_TYPE_SEARCH_RECONCILED (gnc_search_reconciled_get_type ())
|
||||
#define GNCSEARCH_RECONCILED(obj) GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_RECONCILED, GNCSearchReconciled)
|
||||
#define GNCSEARCH_RECONCILED_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_RECONCILED, GNCSearchReconciledClass)
|
||||
#define IS_GNCSEARCH_RECONCILED(obj) GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_RECONCILED)
|
||||
|
||||
typedef struct _GNCSearchReconciled GNCSearchReconciled;
|
||||
typedef struct _GNCSearchReconciledClass GNCSearchReconciledClass;
|
||||
|
||||
struct _GNCSearchReconciled {
|
||||
GNCSearchCoreType parent;
|
||||
struct _GNCSearchReconciledPrivate *priv;
|
||||
|
||||
char_match_t how;
|
||||
cleared_match_t value;
|
||||
|
@ -43,12 +43,15 @@ static void gnc_search_string_class_init (GNCSearchStringClass *class);
|
||||
static void gnc_search_string_init (GNCSearchString *gspaper);
|
||||
static void gnc_search_string_finalize (GObject *obj);
|
||||
|
||||
#define _PRIVATE(x) (((GNCSearchString *)(x))->priv)
|
||||
typedef struct _GNCSearchStringPrivate GNCSearchStringPrivate;
|
||||
|
||||
struct _GNCSearchStringPrivate {
|
||||
GtkWidget *entry;
|
||||
};
|
||||
|
||||
#define _PRIVATE(o) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_STRING, GNCSearchStringPrivate))
|
||||
|
||||
static GNCSearchCoreTypeClass *parent_class;
|
||||
|
||||
guint
|
||||
@ -95,12 +98,13 @@ gnc_search_string_class_init (GNCSearchStringClass *class)
|
||||
gnc_search_core_type->get_widget = gncs_get_widget;
|
||||
gnc_search_core_type->get_predicate = gncs_get_predicate;
|
||||
gnc_search_core_type->clone = gncs_clone;
|
||||
|
||||
g_type_class_add_private(class, sizeof(GNCSearchStringPrivate));
|
||||
}
|
||||
|
||||
static void
|
||||
gnc_search_string_init (GNCSearchString *o)
|
||||
{
|
||||
o->priv = g_malloc0 (sizeof (*o->priv));
|
||||
o->value = NULL;
|
||||
o->how = SEARCH_STRING_CONTAINS;
|
||||
o->ign_case = TRUE;
|
||||
@ -113,7 +117,6 @@ gnc_search_string_finalize (GObject *obj)
|
||||
g_assert (IS_GNCSEARCH_STRING (o));
|
||||
|
||||
g_free (o->value);
|
||||
g_free(o->priv);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize(obj);
|
||||
}
|
||||
@ -128,7 +131,7 @@ gnc_search_string_finalize (GObject *obj)
|
||||
GNCSearchString *
|
||||
gnc_search_string_new (void)
|
||||
{
|
||||
GNCSearchString *o = g_object_new(gnc_search_string_get_type (), NULL);
|
||||
GNCSearchString *o = g_object_new(GNC_TYPE_SEARCH_STRING, NULL);
|
||||
return o;
|
||||
}
|
||||
|
||||
@ -295,24 +298,28 @@ static void
|
||||
grab_focus (GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchString *fi = (GNCSearchString *)fe;
|
||||
GNCSearchStringPrivate *priv;
|
||||
|
||||
g_return_if_fail (fi);
|
||||
g_return_if_fail (IS_GNCSEARCH_STRING (fi));
|
||||
|
||||
if (fi->priv->entry)
|
||||
gtk_widget_grab_focus (fi->priv->entry);
|
||||
priv = _PRIVATE(fi);
|
||||
if (priv->entry)
|
||||
gtk_widget_grab_focus (priv->entry);
|
||||
}
|
||||
|
||||
static void
|
||||
editable_enters (GNCSearchCoreType *fe)
|
||||
{
|
||||
GNCSearchString *fi = (GNCSearchString *)fe;
|
||||
GNCSearchStringPrivate *priv;
|
||||
|
||||
g_return_if_fail (fi);
|
||||
g_return_if_fail (IS_GNCSEARCH_STRING (fi));
|
||||
|
||||
if (fi->priv->entry)
|
||||
gtk_entry_set_activates_default(GTK_ENTRY (fi->priv->entry), TRUE);
|
||||
priv = _PRIVATE(fi);
|
||||
if (priv->entry)
|
||||
gtk_entry_set_activates_default(GTK_ENTRY (priv->entry), TRUE);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
@ -320,10 +327,12 @@ gncs_get_widget (GNCSearchCoreType *fe)
|
||||
{
|
||||
GtkWidget *entry, *toggle, *menu, *box;
|
||||
GNCSearchString *fi = (GNCSearchString *)fe;
|
||||
GNCSearchStringPrivate *priv;
|
||||
|
||||
g_return_val_if_fail (fi, NULL);
|
||||
g_return_val_if_fail (IS_GNCSEARCH_STRING (fi), NULL);
|
||||
|
||||
priv = _PRIVATE(fi);
|
||||
box = gtk_hbox_new (FALSE, 3);
|
||||
|
||||
/* Build and connect the option menu */
|
||||
@ -336,7 +345,7 @@ gncs_get_widget (GNCSearchCoreType *fe)
|
||||
gtk_entry_set_text (GTK_ENTRY (entry), fi->value);
|
||||
g_signal_connect (G_OBJECT (entry), "changed", G_CALLBACK (entry_changed), fe);
|
||||
gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 3);
|
||||
fi->priv->entry = entry;
|
||||
priv->entry = entry;
|
||||
|
||||
/* Build and connect the toggle button */
|
||||
toggle = gtk_toggle_button_new_with_label (_("Case Insensitive?"));
|
||||
|
@ -23,9 +23,10 @@
|
||||
|
||||
#include "search-core-type.h"
|
||||
|
||||
#define GNCSEARCH_STRING(obj) GTK_CHECK_CAST (obj, gnc_search_string_get_type (), GNCSearchString)
|
||||
#define GNCSEARCH_STRING_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gnc_search_string_get_type (), GNCSearchStringClass)
|
||||
#define IS_GNCSEARCH_STRING(obj) GTK_CHECK_TYPE (obj, gnc_search_string_get_type ())
|
||||
#define GNC_TYPE_SEARCH_STRING (gnc_search_string_get_type ())
|
||||
#define GNCSEARCH_STRING(obj) GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_STRING, GNCSearchString)
|
||||
#define GNCSEARCH_STRING_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_STRING, GNCSearchStringClass)
|
||||
#define IS_GNCSEARCH_STRING(obj) GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_STRING)
|
||||
|
||||
typedef struct _GNCSearchString GNCSearchString;
|
||||
typedef struct _GNCSearchStringClass GNCSearchStringClass;
|
||||
@ -39,7 +40,6 @@ typedef enum _search_string_how {
|
||||
|
||||
struct _GNCSearchString {
|
||||
GNCSearchCoreType parent;
|
||||
struct _GNCSearchStringPrivate *priv;
|
||||
|
||||
GNCSearchString_Type how;
|
||||
gboolean ign_case;
|
||||
|
Loading…
Reference in New Issue
Block a user