Merge Richard Cohen's 'declare-type-gncsearch' into stable.

This commit is contained in:
John Ralls 2023-06-16 12:39:20 -07:00
commit 48cf3a9a32
19 changed files with 235 additions and 544 deletions

View File

@ -47,6 +47,13 @@ static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe);
static void gnc_search_account_finalize (GObject *obj);
struct _GNCSearchAccount
{
GNCSearchCoreType parent;
QofGuidMatch how;
};
typedef struct _GNCSearchAccountPrivate GNCSearchAccountPrivate;
struct _GNCSearchAccountPrivate
@ -89,7 +96,7 @@ static void
gnc_search_account_finalize (GObject *obj)
{
GNCSearchAccount *o = (GNCSearchAccount *)obj;
g_assert (IS_GNCSEARCH_ACCOUNT (o));
g_assert (GNC_IS_SEARCH_ACCOUNT (o));
G_OBJECT_CLASS (gnc_search_account_parent_class)->finalize(obj);
}
@ -136,7 +143,7 @@ gncs_validate (GNCSearchCoreType *fe)
gboolean valid = TRUE;
g_return_val_if_fail (fi, FALSE);
g_return_val_if_fail (IS_GNCSEARCH_ACCOUNT (fi), FALSE);
g_return_val_if_fail (GNC_IS_SEARCH_ACCOUNT (fi), FALSE);
priv = _PRIVATE(fi);
@ -265,7 +272,7 @@ gncs_get_widget (GNCSearchCoreType *fe)
char *desc;
g_return_val_if_fail (fi, NULL);
g_return_val_if_fail (IS_GNCSEARCH_ACCOUNT (fi), NULL);
g_return_val_if_fail (GNC_IS_SEARCH_ACCOUNT (fi), NULL);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
gtk_box_set_homogeneous (GTK_BOX (box), FALSE);
@ -295,7 +302,7 @@ static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe)
GList *l = NULL, *node;
g_return_val_if_fail (fi, NULL);
g_return_val_if_fail (IS_GNCSEARCH_ACCOUNT (fi), NULL);
g_return_val_if_fail (GNC_IS_SEARCH_ACCOUNT (fi), NULL);
priv = _PRIVATE(fi);
for (node = priv->selected_accounts; node; node = node->next)
@ -315,7 +322,7 @@ static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe)
GNCSearchAccountPrivate *se_priv, *fse_priv;
g_return_val_if_fail (fse, NULL);
g_return_val_if_fail (IS_GNCSEARCH_ACCOUNT (fse), NULL);
g_return_val_if_fail (GNC_IS_SEARCH_ACCOUNT (fse), NULL);
fse_priv = _PRIVATE(fse);
se = gnc_search_account_new ();
@ -334,7 +341,7 @@ pass_parent (GNCSearchCoreType *fe, gpointer parent)
GNCSearchAccountPrivate *priv;
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_ACCOUNT (fi));
g_return_if_fail (GNC_IS_SEARCH_ACCOUNT (fi));
priv = _PRIVATE(fi);
priv->parent = GTK_WINDOW(parent);

View File

@ -26,30 +26,8 @@
#include "qof.h"
#define GNC_TYPE_SEARCH_ACCOUNT (gnc_search_account_get_type ())
#define GNCSEARCH_ACCOUNT(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, GNC_TYPE_SEARCH_ACCOUNT, GNCSearchAccount)
#define GNCSEARCH_ACCOUNT_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_ACCOUNT, GNCSearchAccountClass)
#define IS_GNCSEARCH_ACCOUNT(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, GNC_TYPE_SEARCH_ACCOUNT)
G_DECLARE_FINAL_TYPE (GNCSearchAccount, gnc_search_account, GNC, SEARCH_ACCOUNT, GNCSearchCoreType)
typedef struct _GNCSearchAccount GNCSearchAccount;
typedef struct _GNCSearchAccountClass GNCSearchAccountClass;
struct _GNCSearchAccount
{
GNCSearchCoreType parent;
QofGuidMatch how;
};
struct _GNCSearchAccountClass
{
GNCSearchCoreTypeClass parent_class;
/* virtual methods */
/* signals */
};
GType gnc_search_account_get_type (void);
GNCSearchAccount *gnc_search_account_new (void);
GNCSearchAccount *gnc_search_account_matchall_new (void);

View File

@ -43,18 +43,16 @@ static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe);
static void gnc_search_boolean_finalize (GObject *obj);
typedef struct _GNCSearchBooleanPrivate GNCSearchBooleanPrivate;
struct _GNCSearchBooleanPrivate
struct _GNCSearchBoolean
{
GNCSearchCoreType parent_instance;
gboolean value;
GtkWindow *parent;
gpointer dummy;
};
G_DEFINE_TYPE_WITH_PRIVATE(GNCSearchBoolean, gnc_search_boolean, GNC_TYPE_SEARCH_CORE_TYPE)
#define _PRIVATE(o) \
((GNCSearchBooleanPrivate*)gnc_search_boolean_get_instance_private((GNCSearchBoolean*)o))
G_DEFINE_TYPE(GNCSearchBoolean, gnc_search_boolean, GNC_TYPE_SEARCH_CORE_TYPE)
static void
gnc_search_boolean_class_init (GNCSearchBooleanClass *klass)
@ -84,7 +82,7 @@ static void
gnc_search_boolean_finalize (GObject *obj)
{
GNCSearchBoolean *o = (GNCSearchBoolean *)obj;
g_assert (IS_GNCSEARCH_BOOLEAN (o));
g_assert (GNC_IS_SEARCH_BOOLEAN (o));
G_OBJECT_CLASS (gnc_search_boolean_parent_class)->finalize(obj);
}
@ -107,7 +105,7 @@ void
gnc_search_boolean_set_value (GNCSearchBoolean *fi, gboolean value)
{
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_BOOLEAN (fi));
g_return_if_fail (GNC_IS_SEARCH_BOOLEAN (fi));
fi->value = value;
}
@ -116,13 +114,11 @@ static void
pass_parent (GNCSearchCoreType *fe, gpointer parent)
{
GNCSearchBoolean *fi = (GNCSearchBoolean *)fe;
GNCSearchBooleanPrivate *priv;
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_BOOLEAN (fi));
g_return_if_fail (GNC_IS_SEARCH_BOOLEAN (fi));
priv = _PRIVATE(fi);
priv->parent = GTK_WINDOW(parent);
fi->parent = GTK_WINDOW(parent);
}
static gboolean
@ -132,7 +128,7 @@ gncs_validate (GNCSearchCoreType *fe)
gboolean valid = TRUE;
g_return_val_if_fail (fi, FALSE);
g_return_val_if_fail (IS_GNCSEARCH_BOOLEAN (fi), FALSE);
g_return_val_if_fail (GNC_IS_SEARCH_BOOLEAN (fi), FALSE);
/* XXX */
@ -152,7 +148,7 @@ gncs_get_widget (GNCSearchCoreType *fe)
GNCSearchBoolean *fi = (GNCSearchBoolean *)fe;
g_return_val_if_fail (fi, NULL);
g_return_val_if_fail (IS_GNCSEARCH_BOOLEAN (fi), NULL);
g_return_val_if_fail (GNC_IS_SEARCH_BOOLEAN (fi), NULL);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
gtk_box_set_homogeneous (GTK_BOX (box), FALSE);
@ -172,7 +168,7 @@ static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe)
GNCSearchBoolean *fi = (GNCSearchBoolean *)fe;
g_return_val_if_fail (fi, NULL);
g_return_val_if_fail (IS_GNCSEARCH_BOOLEAN (fi), NULL);
g_return_val_if_fail (GNC_IS_SEARCH_BOOLEAN (fi), NULL);
return qof_query_boolean_predicate (QOF_COMPARE_EQUAL, fi->value);
}
@ -182,7 +178,7 @@ static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe)
GNCSearchBoolean *se, *fse = (GNCSearchBoolean *)fe;
g_return_val_if_fail (fse, NULL);
g_return_val_if_fail (IS_GNCSEARCH_BOOLEAN (fse), NULL);
g_return_val_if_fail (GNC_IS_SEARCH_BOOLEAN (fse), NULL);
se = gnc_search_boolean_new ();
gnc_search_boolean_set_value (se, fse->value);

View File

@ -26,30 +26,8 @@
#include "qof.h"
#define GNC_TYPE_SEARCH_BOOLEAN (gnc_search_boolean_get_type ())
#define GNCSEARCH_BOOLEAN(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, GNC_TYPE_SEARCH_BOOLEAN, GNCSearchBoolean)
#define GNCSEARCH_BOOLEAN_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_BOOLEAN, GNCSearchBooleanClass)
#define IS_GNCSEARCH_BOOLEAN(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, GNC_TYPE_SEARCH_BOOLEAN)
G_DECLARE_FINAL_TYPE (GNCSearchBoolean, gnc_search_boolean, GNC, SEARCH_BOOLEAN, GNCSearchCoreType)
typedef struct _GNCSearchBoolean GNCSearchBoolean;
typedef struct _GNCSearchBooleanClass GNCSearchBooleanClass;
struct _GNCSearchBoolean
{
GNCSearchCoreType parent;
gboolean value;
};
struct _GNCSearchBooleanClass
{
GNCSearchCoreTypeClass parent_class;
/* virtual methods */
/* signals */
};
GType gnc_search_boolean_get_type (void);
GNCSearchBoolean *gnc_search_boolean_new (void);
/* methods */

View File

@ -30,20 +30,9 @@ extern "C" {
#endif
#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_SEARCH_CORE_TYPE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_SEARCH_CORE_TYPE, GNCSearchCoreTypeClass))
G_DECLARE_DERIVABLE_TYPE (GNCSearchCoreType, gnc_search_core_type, GNC, SEARCH_CORE_TYPE, GObject)
typedef struct
{
GObject parent;
/* This appears to be unused */
GNCSearchParam * param;
} GNCSearchCoreType;
typedef struct
struct _GNCSearchCoreTypeClass
{
GObjectClass parent_class;
@ -55,12 +44,9 @@ typedef struct
GNCSearchCoreType * (*clone) (GNCSearchCoreType *fe);
GtkWidget * (*get_widget) (GNCSearchCoreType *);
QofQueryPredData* (*get_predicate) (GNCSearchCoreType *);
/* signals */
} GNCSearchCoreTypeClass;
};
/* These are internal functions */
GType gnc_search_core_type_get_type (void);
GNCSearchCoreType * gnc_search_core_type_new (void);
/* Create a new search core_type */

View File

@ -47,18 +47,18 @@ static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe);
static void gnc_search_date_finalize (GObject *obj);
typedef struct _GNCSearchDatePrivate GNCSearchDatePrivate;
struct _GNCSearchDatePrivate
struct _GNCSearchDate
{
GNCSearchCoreType parent_instance;
QofQueryCompare how;
time64 tt;
GtkWidget *entry;
GtkWindow *parent;
};
G_DEFINE_TYPE_WITH_PRIVATE(GNCSearchDate, gnc_search_date, GNC_TYPE_SEARCH_CORE_TYPE)
#define _PRIVATE(o) \
((GNCSearchDatePrivate*)gnc_search_date_get_instance_private((GNCSearchDate*)o))
G_DEFINE_TYPE(GNCSearchDate, gnc_search_date, GNC_TYPE_SEARCH_CORE_TYPE)
static void
gnc_search_date_class_init (GNCSearchDateClass *klass)
@ -91,14 +91,12 @@ static void
gnc_search_date_finalize (GObject *obj)
{
GNCSearchDate *o;
GNCSearchDatePrivate *priv;
g_assert (IS_GNCSEARCH_DATE (obj));
g_assert (GNC_IS_SEARCH_DATE (obj));
o = GNCSEARCH_DATE(obj);
priv = _PRIVATE(o);
if (priv->entry)
gtk_widget_destroy (priv->entry);
o = GNC_SEARCH_DATE(obj);
if (o->entry)
gtk_widget_destroy (o->entry);
G_OBJECT_CLASS (gnc_search_date_parent_class)->finalize(obj);
}
@ -121,7 +119,7 @@ void
gnc_search_date_set_date (GNCSearchDate *fi, time64 tt)
{
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_DATE (fi));
g_return_if_fail (GNC_IS_SEARCH_DATE (fi));
fi->tt = tt;
}
@ -130,7 +128,7 @@ void
gnc_search_date_set_how (GNCSearchDate *fi, QofQueryCompare how)
{
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_DATE (fi));
g_return_if_fail (GNC_IS_SEARCH_DATE (fi));
fi->how = how;
}
@ -138,13 +136,11 @@ static void
pass_parent (GNCSearchCoreType *fe, gpointer parent)
{
GNCSearchDate *fi = (GNCSearchDate *)fe;
GNCSearchDatePrivate *priv;
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_DATE (fi));
g_return_if_fail (GNC_IS_SEARCH_DATE (fi));
priv = _PRIVATE(fi);
priv->parent = GTK_WINDOW(parent);
fi->parent = GTK_WINDOW(parent);
}
static gboolean
@ -154,7 +150,7 @@ gncs_validate (GNCSearchCoreType *fe)
gboolean valid = TRUE;
g_return_val_if_fail (fi, FALSE);
g_return_val_if_fail (IS_GNCSEARCH_DATE (fi), FALSE);
g_return_val_if_fail (GNC_IS_SEARCH_DATE (fi), FALSE);
/* XXX */
@ -204,28 +200,24 @@ 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));
g_return_if_fail (GNC_IS_SEARCH_DATE (fi));
priv = _PRIVATE(fi);
if (priv->entry)
gtk_widget_grab_focus (GNC_DATE_EDIT(priv->entry)->date_entry);
if (fi->entry)
gtk_widget_grab_focus (GNC_DATE_EDIT(fi->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));
g_return_if_fail (GNC_IS_SEARCH_DATE (fi));
priv = _PRIVATE(fi);
if (priv->entry)
gnc_date_activates_default (GNC_DATE_EDIT (priv->entry), TRUE);
if (fi->entry)
gnc_date_activates_default (GNC_DATE_EDIT (fi->entry), TRUE);
}
static GtkWidget *
@ -233,12 +225,10 @@ 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);
g_return_val_if_fail (GNC_IS_SEARCH_DATE (fi), NULL);
priv = _PRIVATE(fi);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
gtk_box_set_homogeneous (GTK_BOX (box), FALSE);
@ -251,7 +241,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);
priv->entry = entry;
fi->entry = entry;
/* And return the box */
return box;
@ -260,15 +250,13 @@ gncs_get_widget (GNCSearchCoreType *fe)
static QofQueryPredData* 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);
g_return_val_if_fail (GNC_IS_SEARCH_DATE (fi), NULL);
/* Make sure we actually use the currently-entered date */
priv = _PRIVATE(fi);
if (priv->entry)
gnc_search_date_set_date_from_edit (fi, GNC_DATE_EDIT (priv->entry));
if (fi->entry)
gnc_search_date_set_date_from_edit (fi, GNC_DATE_EDIT (fi->entry));
if (fi->how == QOF_COMPARE_EQUAL || fi->how == QOF_COMPARE_NEQ)
return qof_query_date_predicate (fi->how, QOF_DATE_MATCH_DAY, fi->tt);
@ -281,7 +269,7 @@ static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe)
GNCSearchDate *se, *fse = (GNCSearchDate *)fe;
g_return_val_if_fail (fse, NULL);
g_return_val_if_fail (IS_GNCSEARCH_DATE (fse), NULL);
g_return_val_if_fail (GNC_IS_SEARCH_DATE (fse), NULL);
se = gnc_search_date_new ();
gnc_search_date_set_date (se, fse->tt);

View File

@ -27,31 +27,8 @@
#include "qof.h"
#define GNC_TYPE_SEARCH_DATE (gnc_search_date_get_type ())
#define GNCSEARCH_DATE(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, GNC_TYPE_SEARCH_DATE, GNCSearchDate)
#define GNCSEARCH_DATE_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_DATE, GNCSearchDateClass)
#define IS_GNCSEARCH_DATE(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, GNC_TYPE_SEARCH_DATE)
G_DECLARE_FINAL_TYPE (GNCSearchDate, gnc_search_date, GNC, SEARCH_DATE, GNCSearchCoreType)
typedef struct _GNCSearchDate GNCSearchDate;
typedef struct _GNCSearchDateClass GNCSearchDateClass;
struct _GNCSearchDate
{
GNCSearchCoreType parent;
QofQueryCompare how;
time64 tt;
};
struct _GNCSearchDateClass
{
GNCSearchCoreTypeClass parent_class;
/* virtual methods */
/* signals */
};
GType gnc_search_date_get_type (void);
GNCSearchDate *gnc_search_date_new (void);
/* methods */

View File

@ -47,19 +47,19 @@ static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe);
static void gnc_search_double_finalize (GObject *obj);
typedef struct _GNCSearchDoublePrivate GNCSearchDoublePrivate;
struct _GNCSearchDoublePrivate
struct _GNCSearchDouble
{
GNCSearchCoreType parent_instance;
QofQueryCompare how;
double value;
GtkWidget * entry;
GNCAmountEdit *gae;
GtkWindow *parent;
};
G_DEFINE_TYPE_WITH_PRIVATE(GNCSearchDouble, gnc_search_double, GNC_TYPE_SEARCH_CORE_TYPE)
#define _PRIVATE(o) \
((GNCSearchDoublePrivate*)gnc_search_double_get_instance_private((GNCSearchDouble*)o))
G_DEFINE_TYPE(GNCSearchDouble, gnc_search_double, GNC_TYPE_SEARCH_CORE_TYPE)
static void
gnc_search_double_class_init (GNCSearchDoubleClass *klass)
@ -91,7 +91,7 @@ static void
gnc_search_double_finalize (GObject *obj)
{
GNCSearchDouble *o = (GNCSearchDouble *)obj;
g_assert (IS_GNCSEARCH_DOUBLE (o));
g_assert (GNC_IS_SEARCH_DOUBLE (o));
G_OBJECT_CLASS (gnc_search_double_parent_class)->finalize(obj);
}
@ -114,7 +114,7 @@ void
gnc_search_double_set_value (GNCSearchDouble *fi, double value)
{
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_DOUBLE (fi));
g_return_if_fail (GNC_IS_SEARCH_DOUBLE (fi));
fi->value = value;
}
@ -123,7 +123,7 @@ void
gnc_search_double_set_how (GNCSearchDouble *fi, QofQueryCompare how)
{
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_DOUBLE (fi));
g_return_if_fail (GNC_IS_SEARCH_DOUBLE (fi));
fi->how = how;
}
@ -131,31 +131,26 @@ static void
pass_parent (GNCSearchCoreType *fe, gpointer parent)
{
GNCSearchDouble *fi = (GNCSearchDouble *)fe;
GNCSearchDoublePrivate *priv;
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_DOUBLE (fi));
g_return_if_fail (GNC_IS_SEARCH_DOUBLE (fi));
priv = _PRIVATE(fi);
priv->parent = GTK_WINDOW(parent);
fi->parent = GTK_WINDOW(parent);
}
static gboolean
gncs_validate (GNCSearchCoreType *fe)
{
GNCSearchDouble *fi = (GNCSearchDouble *)fe;
GNCSearchDoublePrivate *priv;
gboolean valid = TRUE;
GError *error = NULL;
g_return_val_if_fail (fi, FALSE);
g_return_val_if_fail (IS_GNCSEARCH_DOUBLE (fi), FALSE);
g_return_val_if_fail (GNC_IS_SEARCH_DOUBLE (fi), FALSE);
priv = _PRIVATE(fi);
if (!gnc_amount_edit_evaluate (GNC_AMOUNT_EDIT(priv->gae), &error))
if (!gnc_amount_edit_evaluate (GNC_AMOUNT_EDIT(fi->gae), &error))
{
gnc_error_dialog (GTK_WINDOW(priv->parent), "%s", error->message);
gnc_error_dialog (GTK_WINDOW(fi->parent), "%s", error->message);
valid = FALSE;
g_error_free (error);
}
@ -193,28 +188,24 @@ 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));
g_return_if_fail (GNC_IS_SEARCH_DOUBLE (fi));
priv = _PRIVATE(fi);
if (priv->entry)
gtk_widget_grab_focus (priv->entry);
if (fi->entry)
gtk_widget_grab_focus (fi->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));
g_return_if_fail (GNC_IS_SEARCH_DOUBLE (fi));
priv = _PRIVATE(fi);
if (priv->entry)
gtk_entry_set_activates_default(GTK_ENTRY (priv->entry), TRUE);
if (fi->entry)
gtk_entry_set_activates_default(GTK_ENTRY (fi->entry), TRUE);
}
static GtkWidget *
@ -222,12 +213,10 @@ 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);
g_return_val_if_fail (GNC_IS_SEARCH_DOUBLE (fi), NULL);
priv = _PRIVATE(fi);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
gtk_box_set_homogeneous (GTK_BOX (box), FALSE);
@ -241,8 +230,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);
priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
priv->gae = GNC_AMOUNT_EDIT (entry);
fi->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
fi->gae = GNC_AMOUNT_EDIT (entry);
/* And return the box */
return box;
@ -251,14 +240,12 @@ gncs_get_widget (GNCSearchCoreType *fe)
static QofQueryPredData* 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);
g_return_val_if_fail (GNC_IS_SEARCH_DOUBLE (fi), NULL);
/* force the computation of the entry, because we may not get the signal */
priv = _PRIVATE(fi);
entry_changed (priv->gae, fi);
entry_changed (fi->gae, fi);
return qof_query_double_predicate (fi->how, fi->value);
}
@ -268,7 +255,7 @@ static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe)
GNCSearchDouble *se, *fse = (GNCSearchDouble *)fe;
g_return_val_if_fail (fse, NULL);
g_return_val_if_fail (IS_GNCSEARCH_DOUBLE (fse), NULL);
g_return_val_if_fail (GNC_IS_SEARCH_DOUBLE (fse), NULL);
se = gnc_search_double_new ();
gnc_search_double_set_value (se, fse->value);

View File

@ -26,31 +26,8 @@
#include "qof.h"
#define GNC_TYPE_SEARCH_DOUBLE (gnc_search_double_get_type ())
#define GNCSEARCH_DOUBLE(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, GNC_TYPE_SEARCH_DOUBLE, GNCSearchDouble)
#define GNCSEARCH_DOUBLE_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_DOUBLE, GNCSearchDoubleClass)
#define IS_GNCSEARCH_DOUBLE(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, GNC_TYPE_SEARCH_DOUBLE)
G_DECLARE_FINAL_TYPE (GNCSearchDouble, gnc_search_double, GNC, SEARCH_DOUBLE, GNCSearchCoreType)
typedef struct _GNCSearchDouble GNCSearchDouble;
typedef struct _GNCSearchDoubleClass GNCSearchDoubleClass;
struct _GNCSearchDouble
{
GNCSearchCoreType parent;
QofQueryCompare how;
double value;
};
struct _GNCSearchDoubleClass
{
GNCSearchCoreTypeClass parent_class;
/* virtual methods */
/* signals */
};
GType gnc_search_double_get_type (void);
GNCSearchDouble *gnc_search_double_new (void);
/* methods */

View File

@ -47,20 +47,19 @@ static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe);
static void gnc_search_int64_finalize (GObject *obj);
typedef struct _GNCSearchInt64Private GNCSearchInt64Private;
struct _GNCSearchInt64Private
struct _GNCSearchInt64
{
GNCSearchCoreType parent_instance;
QofQueryCompare how;
gint64 value;
GtkWidget *entry;
GNCAmountEdit *gae;
GtkWindow *parent;
};
G_DEFINE_TYPE_WITH_PRIVATE(GNCSearchInt64, gnc_search_int64, GNC_TYPE_SEARCH_CORE_TYPE)
#define _PRIVATE(o) \
((GNCSearchInt64Private*)gnc_search_int64_get_instance_private((GNCSearchInt64*)o))
G_DEFINE_TYPE(GNCSearchInt64, gnc_search_int64, GNC_TYPE_SEARCH_CORE_TYPE)
static void
gnc_search_int64_class_init (GNCSearchInt64Class *klass)
@ -92,7 +91,7 @@ static void
gnc_search_int64_finalize (GObject *obj)
{
GNCSearchInt64 *o = (GNCSearchInt64 *)obj;
g_assert (IS_GNCSEARCH_INT64 (o));
g_assert (GNC_IS_SEARCH_INT64 (o));
G_OBJECT_CLASS (gnc_search_int64_parent_class)->finalize(obj);
}
@ -115,7 +114,7 @@ void
gnc_search_int64_set_value (GNCSearchInt64 *fi, gint64 value)
{
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_INT64 (fi));
g_return_if_fail (GNC_IS_SEARCH_INT64 (fi));
fi->value = value;
}
@ -124,7 +123,7 @@ void
gnc_search_int64_set_how (GNCSearchInt64 *fi, QofQueryCompare how)
{
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_INT64 (fi));
g_return_if_fail (GNC_IS_SEARCH_INT64 (fi));
fi->how = how;
}
@ -132,31 +131,26 @@ static void
pass_parent (GNCSearchCoreType *fe, gpointer parent)
{
GNCSearchInt64 *fi = (GNCSearchInt64 *)fe;
GNCSearchInt64Private *priv;
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_INT64 (fi));
g_return_if_fail (GNC_IS_SEARCH_INT64 (fi));
priv = _PRIVATE(fi);
priv->parent = GTK_WINDOW(parent);
fi->parent = GTK_WINDOW(parent);
}
static gboolean
gncs_validate (GNCSearchCoreType *fe)
{
GNCSearchInt64 *fi = (GNCSearchInt64 *)fe;
GNCSearchInt64Private *priv;
gboolean valid = TRUE;
GError *error = NULL;
g_return_val_if_fail (fi, FALSE);
g_return_val_if_fail (IS_GNCSEARCH_INT64 (fi), FALSE);
g_return_val_if_fail (GNC_IS_SEARCH_INT64 (fi), FALSE);
priv = _PRIVATE(fi);
if (!gnc_amount_edit_evaluate (GNC_AMOUNT_EDIT(priv->gae), &error))
if (!gnc_amount_edit_evaluate (GNC_AMOUNT_EDIT(fi->gae), &error))
{
gnc_error_dialog (GTK_WINDOW(priv->parent), "%s", error->message);
gnc_error_dialog (GTK_WINDOW(fi->parent), "%s", error->message);
valid = FALSE;
g_error_free (error);
}
@ -195,28 +189,24 @@ 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));
g_return_if_fail (GNC_IS_SEARCH_INT64 (fi));
priv = _PRIVATE(fi);
if (priv->entry)
gtk_widget_grab_focus (priv->entry);
if (fi->entry)
gtk_widget_grab_focus (fi->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));
g_return_if_fail (GNC_IS_SEARCH_INT64 (fi));
priv = _PRIVATE(fi);
if (priv->entry)
gtk_entry_set_activates_default(GTK_ENTRY (priv->entry), TRUE);
if (fi->entry)
gtk_entry_set_activates_default(GTK_ENTRY (fi->entry), TRUE);
}
static GtkWidget *
@ -224,12 +214,10 @@ 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);
g_return_val_if_fail (GNC_IS_SEARCH_INT64 (fi), NULL);
priv = _PRIVATE(fi);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
gtk_box_set_homogeneous (GTK_BOX (box), FALSE);
@ -248,8 +236,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);
priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
priv->gae = GNC_AMOUNT_EDIT (entry);
fi->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
fi->gae = GNC_AMOUNT_EDIT (entry);
/* And return the box */
return box;
@ -258,14 +246,12 @@ gncs_get_widget (GNCSearchCoreType *fe)
static QofQueryPredData* 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);
g_return_val_if_fail (GNC_IS_SEARCH_INT64 (fi), NULL);
/* force the computation of the entry, because we may not get the signal */
priv = _PRIVATE(fi);
entry_changed (priv->gae, fi);
entry_changed (fi->gae, fi);
return qof_query_int64_predicate (fi->how, fi->value);
}
@ -275,7 +261,7 @@ static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe)
GNCSearchInt64 *se, *fse = (GNCSearchInt64 *)fe;
g_return_val_if_fail (fse, NULL);
g_return_val_if_fail (IS_GNCSEARCH_INT64 (fse), NULL);
g_return_val_if_fail (GNC_IS_SEARCH_INT64 (fse), NULL);
se = gnc_search_int64_new ();
gnc_search_int64_set_value (se, fse->value);

View File

@ -26,31 +26,8 @@
#include "qof.h"
#define GNC_TYPE_SEARCH_INT64 (gnc_search_int64_get_type ())
#define GNCSEARCH_INT64(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, GNC_TYPE_SEARCH_INT64, GNCSearchInt64)
#define GNCSEARCH_INT64_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_INT64, GNCSearchInt64Class)
#define IS_GNCSEARCH_INT64(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, GNC_TYPE_SEARCH_INT64)
G_DECLARE_FINAL_TYPE (GNCSearchInt64, gnc_search_int64, GNC, SEARCH_INT64, GNCSearchCoreType)
typedef struct _GNCSearchInt64 GNCSearchInt64;
typedef struct _GNCSearchInt64Class GNCSearchInt64Class;
struct _GNCSearchInt64
{
GNCSearchCoreType parent;
QofQueryCompare how;
gint64 value;
};
struct _GNCSearchInt64Class
{
GNCSearchCoreTypeClass parent_class;
/* virtual methods */
/* signals */
};
GType gnc_search_int64_get_type (void);
GNCSearchInt64 *gnc_search_int64_new (void);
/* methods */

View File

@ -47,20 +47,21 @@ static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe);
static void gnc_search_numeric_finalize (GObject *obj);
typedef struct _GNCSearchNumericPrivate GNCSearchNumericPrivate;
struct _GNCSearchNumericPrivate
struct _GNCSearchNumeric
{
GNCSearchCoreType parent_instance;
QofQueryCompare how;
gnc_numeric value;
QofNumericMatch option;
gboolean is_debcred;
GtkWidget * entry;
GNCAmountEdit *gae;
GtkWindow *parent;
};
G_DEFINE_TYPE_WITH_PRIVATE(GNCSearchNumeric, gnc_search_numeric, GNC_TYPE_SEARCH_CORE_TYPE)
#define _PRIVATE(o) \
((GNCSearchNumericPrivate*)gnc_search_numeric_get_instance_private((GNCSearchNumeric*)o))
G_DEFINE_TYPE(GNCSearchNumeric, gnc_search_numeric, GNC_TYPE_SEARCH_CORE_TYPE)
static void
gnc_search_numeric_class_init (GNCSearchNumericClass *klass)
@ -94,7 +95,7 @@ static void
gnc_search_numeric_finalize (GObject *obj)
{
GNCSearchNumeric *o = (GNCSearchNumeric *)obj;
g_assert (IS_GNCSEARCH_NUMERIC (o));
g_assert (GNC_IS_SEARCH_NUMERIC (o));
G_OBJECT_CLASS (gnc_search_numeric_parent_class)->finalize(obj);
}
@ -124,11 +125,9 @@ GNCSearchNumeric *
gnc_search_numeric_debcred_new (void)
{
GNCSearchNumeric *o;
GNCSearchNumericPrivate *priv;
o = g_object_new(GNC_TYPE_SEARCH_NUMERIC, NULL);
priv = _PRIVATE(o);
priv->is_debcred = TRUE;
o->is_debcred = TRUE;
return o;
}
@ -136,7 +135,7 @@ void
gnc_search_numeric_set_value (GNCSearchNumeric *fi, gnc_numeric value)
{
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_NUMERIC (fi));
g_return_if_fail (GNC_IS_SEARCH_NUMERIC (fi));
fi->value = value;
}
@ -145,7 +144,7 @@ void
gnc_search_numeric_set_how (GNCSearchNumeric *fi, QofQueryCompare how)
{
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_NUMERIC (fi));
g_return_if_fail (GNC_IS_SEARCH_NUMERIC (fi));
fi->how = how;
}
@ -153,7 +152,7 @@ void
gnc_search_numeric_set_option (GNCSearchNumeric *fi, QofNumericMatch option)
{
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_NUMERIC (fi));
g_return_if_fail (GNC_IS_SEARCH_NUMERIC (fi));
fi->option = option;
}
@ -161,31 +160,26 @@ static void
pass_parent (GNCSearchCoreType *fe, gpointer parent)
{
GNCSearchNumeric *fi = (GNCSearchNumeric *)fe;
GNCSearchNumericPrivate *priv;
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_NUMERIC (fi));
g_return_if_fail (GNC_IS_SEARCH_NUMERIC (fi));
priv = _PRIVATE(fi);
priv->parent = GTK_WINDOW(parent);
fi->parent = GTK_WINDOW(parent);
}
static gboolean
gncs_validate (GNCSearchCoreType *fe)
{
GNCSearchNumeric *fi = (GNCSearchNumeric *)fe;
GNCSearchNumericPrivate *priv;
gboolean valid = TRUE;
GError *error = NULL;
g_return_val_if_fail (fi, FALSE);
g_return_val_if_fail (IS_GNCSEARCH_NUMERIC (fi), FALSE);
g_return_val_if_fail (GNC_IS_SEARCH_NUMERIC (fi), FALSE);
priv = _PRIVATE(fi);
if (!gnc_amount_edit_evaluate (GNC_AMOUNT_EDIT(priv->gae), &error))
if (!gnc_amount_edit_evaluate (GNC_AMOUNT_EDIT(fi->gae), &error))
{
gnc_error_dialog (GTK_WINDOW(priv->parent), "%s", error->message);
gnc_error_dialog (GTK_WINDOW(fi->parent), "%s", error->message);
valid = FALSE;
g_error_free (error);
}
@ -202,29 +196,26 @@ static GtkWidget *
make_how_menu (GNCSearchCoreType *fe)
{
GNCSearchNumeric *fi = (GNCSearchNumeric *)fe;
GNCSearchNumericPrivate *priv;
GtkComboBox *combo;
priv = _PRIVATE(fi);
combo = GTK_COMBO_BOX(gnc_combo_box_new_search());
gnc_combo_box_search_add(combo, (priv->is_debcred ?
gnc_combo_box_search_add(combo, (fi->is_debcred ?
_("less than") : _("is less than")),
QOF_COMPARE_LT);
gnc_combo_box_search_add(combo, (priv->is_debcred ?
gnc_combo_box_search_add(combo, (fi->is_debcred ?
_("less than or equal to") :
_("is less than or equal to")),
QOF_COMPARE_LTE);
gnc_combo_box_search_add(combo, (priv->is_debcred ?
gnc_combo_box_search_add(combo, (fi->is_debcred ?
_("equal to") : _("equals")),
QOF_COMPARE_EQUAL);
gnc_combo_box_search_add(combo, (priv->is_debcred ?
gnc_combo_box_search_add(combo, (fi->is_debcred ?
_("not equal to") : _("does not equal")),
QOF_COMPARE_NEQ);
gnc_combo_box_search_add(combo, (priv->is_debcred ?
gnc_combo_box_search_add(combo, (fi->is_debcred ?
_("greater than") : _("is greater than")),
QOF_COMPARE_GT);
gnc_combo_box_search_add(combo, (priv->is_debcred ?
gnc_combo_box_search_add(combo, (fi->is_debcred ?
_("greater than or equal to") :
_("is greater than or equal to")),
QOF_COMPARE_GTE);
@ -255,28 +246,24 @@ 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));
g_return_if_fail (GNC_IS_SEARCH_NUMERIC (fi));
priv = _PRIVATE(fi);
if (priv->entry)
gtk_widget_grab_focus (priv->entry);
if (fi->entry)
gtk_widget_grab_focus (fi->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));
g_return_if_fail (GNC_IS_SEARCH_NUMERIC (fi));
priv = _PRIVATE(fi);
if (priv->entry)
gtk_entry_set_activates_default(GTK_ENTRY (priv->entry), TRUE);
if (fi->entry)
gtk_entry_set_activates_default(GTK_ENTRY (fi->entry), TRUE);
}
static GtkWidget *
@ -284,17 +271,15 @@ 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);
g_return_val_if_fail (GNC_IS_SEARCH_NUMERIC (fi), NULL);
priv = _PRIVATE(fi);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
gtk_box_set_homogeneous (GTK_BOX (box), FALSE);
/* Build and connect the option menu(s) */
if (priv->is_debcred)
if (fi->is_debcred)
{
menu = make_option_menu (fe);
gtk_box_pack_start (GTK_BOX (box), menu, FALSE, FALSE, 3);
@ -308,8 +293,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);
priv->gae = GNC_AMOUNT_EDIT (entry);
priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
fi->gae = GNC_AMOUNT_EDIT (entry);
fi->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
/* And return the box */
return box;
@ -318,14 +303,12 @@ gncs_get_widget (GNCSearchCoreType *fe)
static QofQueryPredData* 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);
g_return_val_if_fail (GNC_IS_SEARCH_NUMERIC (fi), NULL);
/* force the computation of the entry, because we may not get the signal */
priv = _PRIVATE(fi);
entry_changed (priv->gae, fi);
entry_changed (fi->gae, fi);
return qof_query_numeric_predicate (fi->how, fi->option, fi->value);
}
@ -333,18 +316,15 @@ static QofQueryPredData* 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);
g_return_val_if_fail (GNC_IS_SEARCH_NUMERIC (fse), NULL);
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->is_debcred = fse->is_debcred;
return (GNCSearchCoreType *)se;
}

View File

@ -27,33 +27,8 @@
#include "qof.h"
#define GNC_TYPE_SEARCH_NUMERIC (gnc_search_numeric_get_type ())
#define GNCSEARCH_NUMERIC(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, GNC_TYPE_SEARCH_NUMERIC, GNCSearchNumeric)
#define GNCSEARCH_NUMERIC_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_NUMERIC, GNCSearchNumericClass)
#define IS_GNCSEARCH_NUMERIC(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, GNC_TYPE_SEARCH_NUMERIC)
G_DECLARE_FINAL_TYPE (GNCSearchNumeric, gnc_search_numeric, GNC, SEARCH_NUMERIC, GNCSearchCoreType)
typedef struct _GNCSearchNumeric GNCSearchNumeric;
typedef struct _GNCSearchNumericClass GNCSearchNumericClass;
struct _GNCSearchNumeric
{
GNCSearchCoreType parent;
struct _GNCSearchNumericPrivate *priv;
QofQueryCompare how;
gnc_numeric value;
QofNumericMatch option;
};
struct _GNCSearchNumericClass
{
GNCSearchCoreTypeClass parent_class;
/* virtual methods */
/* signals */
};
GType gnc_search_numeric_get_type (void);
GNCSearchNumeric *gnc_search_numeric_new (void);
GNCSearchNumeric *gnc_search_numeric_debcred_new (void);

View File

@ -45,18 +45,17 @@ static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe);
static void gnc_search_reconciled_finalize (GObject *obj);
typedef struct _GNCSearchReconciledPrivate GNCSearchReconciledPrivate;
struct _GNCSearchReconciledPrivate
struct _GNCSearchReconciled
{
GNCSearchCoreType parent_instance;
QofCharMatch how;
cleared_match_t value;
GtkWindow *parent;
gpointer dummy;
};
G_DEFINE_TYPE_WITH_PRIVATE(GNCSearchReconciled, gnc_search_reconciled, GNC_TYPE_SEARCH_CORE_TYPE)
#define _PRIVATE(o) \
((GNCSearchReconciledPrivate*)gnc_search_reconciled_get_instance_private((GNCSearchReconciled*)o))
G_DEFINE_TYPE(GNCSearchReconciled, gnc_search_reconciled, GNC_TYPE_SEARCH_CORE_TYPE)
static void
gnc_search_reconciled_class_init (GNCSearchReconciledClass *klass)
@ -87,7 +86,7 @@ static void
gnc_search_reconciled_finalize (GObject *obj)
{
GNCSearchReconciled *o = (GNCSearchReconciled *)obj;
g_assert (IS_GNCSEARCH_RECONCILED (o));
g_assert (GNC_IS_SEARCH_RECONCILED (o));
G_OBJECT_CLASS (gnc_search_reconciled_parent_class)->finalize(obj);
}
@ -110,7 +109,7 @@ void
gnc_search_reconciled_set_value (GNCSearchReconciled *fi, cleared_match_t value)
{
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_RECONCILED (fi));
g_return_if_fail (GNC_IS_SEARCH_RECONCILED (fi));
fi->value = value;
}
@ -119,7 +118,7 @@ void
gnc_search_reconciled_set_how (GNCSearchReconciled *fi, QofCharMatch how)
{
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_RECONCILED (fi));
g_return_if_fail (GNC_IS_SEARCH_RECONCILED (fi));
fi->how = how;
}
@ -127,13 +126,11 @@ static void
pass_parent (GNCSearchCoreType *fe, gpointer parent)
{
GNCSearchReconciled *fi = (GNCSearchReconciled *)fe;
GNCSearchReconciledPrivate *priv;
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_RECONCILED (fi));
g_return_if_fail (GNC_IS_SEARCH_RECONCILED (fi));
priv = _PRIVATE(fi);
priv->parent = GTK_WINDOW(parent);
fi->parent = GTK_WINDOW(parent);
}
static gboolean
@ -143,7 +140,7 @@ gncs_validate (GNCSearchCoreType *fe)
gboolean valid = TRUE;
g_return_val_if_fail (fi, FALSE);
g_return_val_if_fail (IS_GNCSEARCH_RECONCILED (fi), FALSE);
g_return_val_if_fail (GNC_IS_SEARCH_RECONCILED (fi), FALSE);
/* XXX */
@ -203,7 +200,7 @@ gncs_get_widget (GNCSearchCoreType *fe)
GNCSearchReconciled *fi = (GNCSearchReconciled *)fe;
g_return_val_if_fail (fi, NULL);
g_return_val_if_fail (IS_GNCSEARCH_RECONCILED (fi), NULL);
g_return_val_if_fail (GNC_IS_SEARCH_RECONCILED (fi), NULL);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
gtk_box_set_homogeneous (GTK_BOX (box), FALSE);
@ -240,7 +237,7 @@ static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe)
int i;
g_return_val_if_fail (fi, NULL);
g_return_val_if_fail (IS_GNCSEARCH_RECONCILED (fi), NULL);
g_return_val_if_fail (GNC_IS_SEARCH_RECONCILED (fi), NULL);
/* This code should look a lot like xaccQueryAddClearedMatch() */
@ -267,7 +264,7 @@ static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe)
GNCSearchReconciled *se, *fse = (GNCSearchReconciled *)fe;
g_return_val_if_fail (fse, NULL);
g_return_val_if_fail (IS_GNCSEARCH_RECONCILED (fse), NULL);
g_return_val_if_fail (GNC_IS_SEARCH_RECONCILED (fse), NULL);
se = gnc_search_reconciled_new ();
gnc_search_reconciled_set_value (se, fse->value);

View File

@ -26,31 +26,8 @@
#include "Query.h" /* for cleared_match_t */
#define GNC_TYPE_SEARCH_RECONCILED (gnc_search_reconciled_get_type ())
#define GNCSEARCH_RECONCILED(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, GNC_TYPE_SEARCH_RECONCILED, GNCSearchReconciled)
#define GNCSEARCH_RECONCILED_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_RECONCILED, GNCSearchReconciledClass)
#define IS_GNCSEARCH_RECONCILED(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, GNC_TYPE_SEARCH_RECONCILED)
G_DECLARE_FINAL_TYPE (GNCSearchReconciled, gnc_search_reconciled, GNC, SEARCH_RECONCILED, GNCSearchCoreType)
typedef struct _GNCSearchReconciled GNCSearchReconciled;
typedef struct _GNCSearchReconciledClass GNCSearchReconciledClass;
struct _GNCSearchReconciled
{
GNCSearchCoreType parent;
QofCharMatch how;
cleared_match_t value;
};
struct _GNCSearchReconciledClass
{
GNCSearchCoreTypeClass parent_class;
/* virtual methods */
/* signals */
};
GType gnc_search_reconciled_get_type (void);
GNCSearchReconciled *gnc_search_reconciled_new (void);
/* methods */

View File

@ -47,18 +47,19 @@ static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe);
static void gnc_search_string_finalize (GObject *obj);
typedef struct _GNCSearchStringPrivate GNCSearchStringPrivate;
struct _GNCSearchStringPrivate
struct _GNCSearchString
{
GNCSearchCoreType parent_instance;
GNCSearchString_Type how;
gboolean ign_case;
char * value;
GtkWidget *entry;
GtkWindow *parent;
};
G_DEFINE_TYPE_WITH_PRIVATE(GNCSearchString, gnc_search_string, GNC_TYPE_SEARCH_CORE_TYPE)
#define _PRIVATE(o) \
((GNCSearchStringPrivate*)gnc_search_string_get_instance_private((GNCSearchString*)o))
G_DEFINE_TYPE(GNCSearchString, gnc_search_string, GNC_TYPE_SEARCH_CORE_TYPE)
static void
gnc_search_string_class_init (GNCSearchStringClass *klass)
@ -92,7 +93,7 @@ static void
gnc_search_string_finalize (GObject *obj)
{
GNCSearchString *o = (GNCSearchString *)obj;
g_assert (IS_GNCSEARCH_STRING (o));
g_assert (GNC_IS_SEARCH_STRING (o));
g_free (o->value);
@ -117,7 +118,7 @@ void
gnc_search_string_set_value (GNCSearchString *fi, const char *value)
{
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_STRING (fi));
g_return_if_fail (GNC_IS_SEARCH_STRING (fi));
if (fi->value)
g_free (fi->value);
@ -129,7 +130,7 @@ void
gnc_search_string_set_how (GNCSearchString *fi, GNCSearchString_Type how)
{
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_STRING (fi));
g_return_if_fail (GNC_IS_SEARCH_STRING (fi));
fi->how = how;
}
@ -137,7 +138,7 @@ void
gnc_search_string_set_case (GNCSearchString *fi, gboolean ignore_case)
{
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_STRING (fi));
g_return_if_fail (GNC_IS_SEARCH_STRING (fi));
fi->ign_case = ignore_case;
}
@ -145,18 +146,15 @@ static gboolean
gncs_validate (GNCSearchCoreType *fe)
{
GNCSearchString *fi = (GNCSearchString *)fe;
GNCSearchStringPrivate *priv;
gboolean valid = TRUE;
g_return_val_if_fail (fi, FALSE);
g_return_val_if_fail (IS_GNCSEARCH_STRING (fi), FALSE);
priv = _PRIVATE(fi);
g_return_val_if_fail (GNC_IS_SEARCH_STRING (fi), FALSE);
if (!fi->value || *(fi->value) == '\0')
{
GtkWidget *dialog;
dialog = gtk_message_dialog_new (GTK_WINDOW(priv->parent),
dialog = gtk_message_dialog_new (GTK_WINDOW(fi->parent),
GTK_DIALOG_MODAL,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_OK,
@ -194,7 +192,7 @@ gncs_validate (GNCSearchCoreType *fe)
fi->value, regmsg);
g_free (regmsg);
dialog = gtk_message_dialog_new (GTK_WINDOW(priv->parent),
dialog = gtk_message_dialog_new (GTK_WINDOW(fi->parent),
GTK_DIALOG_MODAL,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_OK,
@ -250,41 +248,35 @@ 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));
g_return_if_fail (GNC_IS_SEARCH_STRING (fi));
priv = _PRIVATE(fi);
if (priv->entry)
gtk_widget_grab_focus (priv->entry);
if (fi->entry)
gtk_widget_grab_focus (fi->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));
g_return_if_fail (GNC_IS_SEARCH_STRING (fi));
priv = _PRIVATE(fi);
if (priv->entry)
gtk_entry_set_activates_default(GTK_ENTRY (priv->entry), TRUE);
if (fi->entry)
gtk_entry_set_activates_default(GTK_ENTRY (fi->entry), TRUE);
}
static void
pass_parent (GNCSearchCoreType *fe, gpointer parent)
{
GNCSearchString *fi = (GNCSearchString *)fe;
GNCSearchStringPrivate *priv;
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_STRING (fi));
g_return_if_fail (GNC_IS_SEARCH_STRING (fi));
priv = _PRIVATE(fi);
priv->parent = GTK_WINDOW(parent);
fi->parent = GTK_WINDOW(parent);
}
static GtkWidget *
@ -292,12 +284,10 @@ 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);
g_return_val_if_fail (GNC_IS_SEARCH_STRING (fi), NULL);
priv = _PRIVATE(fi);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
gtk_box_set_homogeneous (GTK_BOX (box), FALSE);
@ -311,7 +301,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);
priv->entry = entry;
fi->entry = entry;
/* Build and connect the case-sensitive check button; defaults to off */
toggle = gtk_check_button_new_with_label (_("Match case"));
@ -330,7 +320,7 @@ static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe)
gboolean is_regex = FALSE;
g_return_val_if_fail (ss, NULL);
g_return_val_if_fail (IS_GNCSEARCH_STRING (ss), NULL);
g_return_val_if_fail (GNC_IS_SEARCH_STRING (ss), NULL);
switch (ss->how)
{
@ -368,7 +358,7 @@ static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe)
GNCSearchString *se, *fse = (GNCSearchString *)fe;
g_return_val_if_fail (fse, NULL);
g_return_val_if_fail (IS_GNCSEARCH_STRING (fse), NULL);
g_return_val_if_fail (GNC_IS_SEARCH_STRING (fse), NULL);
se = gnc_search_string_new ();
gnc_search_string_set_value (se, fse->value);

View File

@ -25,12 +25,7 @@
#include "search-core-type.h"
#define GNC_TYPE_SEARCH_STRING (gnc_search_string_get_type ())
#define GNCSEARCH_STRING(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, GNC_TYPE_SEARCH_STRING, GNCSearchString)
#define GNCSEARCH_STRING_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_STRING, GNCSearchStringClass)
#define IS_GNCSEARCH_STRING(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, GNC_TYPE_SEARCH_STRING)
typedef struct _GNCSearchString GNCSearchString;
typedef struct _GNCSearchStringClass GNCSearchStringClass;
G_DECLARE_FINAL_TYPE (GNCSearchString, gnc_search_string, GNC, SEARCH_STRING, GNCSearchCoreType)
typedef enum _search_string_how
{
@ -42,25 +37,6 @@ typedef enum _search_string_how
SEARCH_STRING_NOT_EQUAL
} GNCSearchString_Type;
struct _GNCSearchString
{
GNCSearchCoreType parent;
GNCSearchString_Type how;
gboolean ign_case;
char * value;
};
struct _GNCSearchStringClass
{
GNCSearchCoreTypeClass parent_class;
/* virtual methods */
/* signals */
};
GType gnc_search_string_get_type (void);
GNCSearchString *gnc_search_string_new (void);
/* methods */

View File

@ -47,18 +47,19 @@ static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe);
static void gnc_search_owner_finalize (GObject *obj);
typedef struct _GNCSearchOwnerPrivate
struct _GNCSearchOwner
{
GNCSearchCoreType parent_instance;
QofGuidMatch how;
GncOwner owner;
GtkWindow * parent;
GtkWidget * owner_box;
GtkWidget * owner_choice;
} GNCSearchOwnerPrivate;
G_DEFINE_TYPE_WITH_PRIVATE(GNCSearchOwner, gnc_search_owner, GNC_TYPE_SEARCH_CORE_TYPE)
#define _PRIVATE(o) \
((GNCSearchOwnerPrivate*)gnc_search_owner_get_instance_private((GNCSearchOwner*)o))
G_DEFINE_TYPE(GNCSearchOwner, gnc_search_owner, GNC_TYPE_SEARCH_CORE_TYPE)
enum
{
@ -95,7 +96,7 @@ gnc_search_owner_init (GNCSearchOwner *o)
static void
gnc_search_owner_finalize (GObject *obj)
{
g_assert (IS_GNCSEARCH_OWNER (obj));
g_assert (GNC_IS_SEARCH_OWNER (obj));
G_OBJECT_CLASS (gnc_search_owner_parent_class)->finalize(obj);
}
@ -118,17 +119,15 @@ static gboolean
gncs_validate (GNCSearchCoreType *fe)
{
GNCSearchOwner *fi = (GNCSearchOwner *)fe;
GNCSearchOwnerPrivate *priv;
gboolean valid = TRUE;
g_return_val_if_fail (fi, FALSE);
g_return_val_if_fail (IS_GNCSEARCH_OWNER (fi), FALSE);
g_return_val_if_fail (GNC_IS_SEARCH_OWNER (fi), FALSE);
priv = _PRIVATE(fi);
if (priv->owner.owner.undefined == NULL)
if (fi->owner.owner.undefined == NULL)
{
valid = FALSE;
gnc_error_dialog (GTK_WINDOW(priv->parent), "%s", _("You have not selected an owner"));
gnc_error_dialog (GTK_WINDOW(fi->parent), "%s", _("You have not selected an owner"));
}
/* XXX */
@ -140,39 +139,33 @@ static int
owner_changed_cb (GtkWidget *widget, gpointer data)
{
GNCSearchOwner *fe = data;
GNCSearchOwnerPrivate *priv;
priv = _PRIVATE(fe);
gnc_owner_get_owner (priv->owner_choice, &(priv->owner));
gnc_owner_get_owner (fe->owner_choice, &(fe->owner));
return FALSE;
}
static void
set_owner_widget (GNCSearchOwner *fe)
{
GNCSearchOwnerPrivate *priv;
/* Remove the old choice widget */
priv = _PRIVATE(fe);
if (priv->owner_choice)
gtk_container_remove (GTK_CONTAINER (priv->owner_box), priv->owner_choice);
if (fe->owner_choice)
gtk_container_remove (GTK_CONTAINER (fe->owner_box), fe->owner_choice);
/* Create a new choice widget */
priv->owner_choice =
gnc_owner_select_create (NULL, priv->owner_box,
gnc_get_current_book(), &(priv->owner));
fe->owner_choice =
gnc_owner_select_create (NULL, fe->owner_box,
gnc_get_current_book(), &(fe->owner));
/* Setup the "changed" callback */
g_signal_connect (G_OBJECT (priv->owner_choice), "changed",
g_signal_connect (G_OBJECT (fe->owner_choice), "changed",
G_CALLBACK (owner_changed_cb), fe);
gtk_widget_show_all (priv->owner_choice);
gtk_widget_show_all (fe->owner_choice);
}
static void
type_combo_changed (GtkWidget *widget, GNCSearchOwner *fe)
{
GNCSearchOwnerPrivate *priv;
GncOwnerType type;
g_return_if_fail(GTK_IS_COMBO_BOX(widget));
@ -180,14 +173,13 @@ type_combo_changed (GtkWidget *widget, GNCSearchOwner *fe)
type = gnc_combo_box_search_get_active(GTK_COMBO_BOX(widget));
/* If the type changed or if we don't have a type create the owner_choice */
priv = _PRIVATE(fe);
if (type != gncOwnerGetType (&(priv->owner)))
if (type != gncOwnerGetType (&(fe->owner)))
{
priv->owner.type = type;
priv->owner.owner.undefined = NULL;
fe->owner.type = type;
fe->owner.owner.undefined = NULL;
set_owner_widget (fe);
}
else if (priv->owner_choice == NULL)
else if (fe->owner_choice == NULL)
set_owner_widget (fe);
}
@ -195,12 +187,10 @@ static GtkWidget *
make_type_menu (GNCSearchCoreType *fe)
{
GNCSearchOwner *fi = (GNCSearchOwner *)fe;
GNCSearchOwnerPrivate *priv;
GtkComboBox *combo;
GncOwnerType type;
priv = _PRIVATE(fi);
type = gncOwnerGetType (&(priv->owner));
type = gncOwnerGetType (&(fi->owner));
combo = GTK_COMBO_BOX(gnc_combo_box_new_search());
gnc_combo_box_search_add(combo, _("Customer"), GNC_OWNER_CUSTOMER);
@ -235,13 +225,11 @@ static void
pass_parent (GNCSearchCoreType *fe, gpointer parent)
{
GNCSearchOwner *fi = (GNCSearchOwner *)fe;
GNCSearchOwnerPrivate *priv;
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_OWNER (fi));
g_return_if_fail (GNC_IS_SEARCH_OWNER (fi));
priv = _PRIVATE(fi);
priv->parent = GTK_WINDOW(parent);
fi->parent = GTK_WINDOW(parent);
}
static GtkWidget *
@ -249,12 +237,10 @@ gncs_get_widget (GNCSearchCoreType *fe)
{
GtkWidget *how_menu, *type_menu, *box;
GNCSearchOwner *fi = (GNCSearchOwner *)fe;
GNCSearchOwnerPrivate *priv;
g_return_val_if_fail (fi, NULL);
g_return_val_if_fail (IS_GNCSEARCH_OWNER (fi), NULL);
g_return_val_if_fail (GNC_IS_SEARCH_OWNER (fi), NULL);
priv = _PRIVATE(fi);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
gtk_box_set_homogeneous (GTK_BOX (box), FALSE);
@ -263,8 +249,8 @@ gncs_get_widget (GNCSearchCoreType *fe)
gtk_box_pack_start (GTK_BOX (box), how_menu, FALSE, FALSE, 3);
/* Create the owner box */
priv->owner_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_set_homogeneous (GTK_BOX (priv->owner_box), FALSE);
fi->owner_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_set_homogeneous (GTK_BOX (fi->owner_box), FALSE);
/* Build and connect the "type" option menu.
* Note that this will build the owner_choice and
@ -274,7 +260,7 @@ gncs_get_widget (GNCSearchCoreType *fe)
gtk_box_pack_start (GTK_BOX (box), type_menu, FALSE, FALSE, 3);
/* connect the owner box */
gtk_box_pack_start (GTK_BOX (box), priv->owner_box, FALSE, FALSE, 3);
gtk_box_pack_start (GTK_BOX (box), fi->owner_box, FALSE, FALSE, 3);
/* And return the box */
return box;
@ -283,15 +269,13 @@ gncs_get_widget (GNCSearchCoreType *fe)
static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe)
{
GNCSearchOwner *fi = (GNCSearchOwner *)fe;
GNCSearchOwnerPrivate *priv;
const GncGUID *guid;
GList *l = NULL;
g_return_val_if_fail (fi, NULL);
g_return_val_if_fail (IS_GNCSEARCH_OWNER (fi), NULL);
g_return_val_if_fail (GNC_IS_SEARCH_OWNER (fi), NULL);
priv = _PRIVATE(fi);
guid = gncOwnerGetGUID (&(priv->owner));
guid = gncOwnerGetGUID (&(fi->owner));
l = g_list_prepend (l, (gpointer)guid);
return qof_query_guid_predicate (fi->how, l);
@ -300,16 +284,13 @@ static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe)
static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe)
{
GNCSearchOwner *se, *fse = (GNCSearchOwner *)fe;
GNCSearchOwnerPrivate *se_priv, *fse_priv;
g_return_val_if_fail (fse, NULL);
g_return_val_if_fail (IS_GNCSEARCH_OWNER (fse), NULL);
g_return_val_if_fail (GNC_IS_SEARCH_OWNER (fse), NULL);
se = gnc_search_owner_new ();
se->how = fse->how;
se_priv = _PRIVATE(se);
fse_priv = _PRIVATE(fse);
gncOwnerCopy (&(fse_priv->owner), &(se_priv->owner));
gncOwnerCopy (&(fse->owner), &(se->owner));
return (GNCSearchCoreType *)se;
}

View File

@ -26,30 +26,8 @@
#include "qof.h"
#define GNC_TYPE_SEARCH_OWNER (gnc_search_owner_get_type ())
#define GNCSEARCH_OWNER(obj) G_TYPE_CHECK_INSTANCE_CAST(obj, gnc_search_owner_get_type (), GNCSearchOwner)
#define GNCSEARCH_OWNER_CLASS(klass) G_TYPE_CHECK_CLASS_CAST(klass, gnc_search_owner_get_type (), GNCSearchOwnerClass)
#define IS_GNCSEARCH_OWNER(obj) G_TYPE_CHECK_INSTANCE_TYPE(obj, gnc_search_owner_get_type ())
G_DECLARE_FINAL_TYPE (GNCSearchOwner, gnc_search_owner, GNC, SEARCH_OWNER, GNCSearchCoreType)
typedef struct _GNCSearchOwner GNCSearchOwner;
typedef struct _GNCSearchOwnerClass GNCSearchOwnerClass;
struct _GNCSearchOwner
{
GNCSearchCoreType parent;
QofGuidMatch how;
};
struct _GNCSearchOwnerClass
{
GNCSearchCoreTypeClass parent_class;
/* virtual methods */
/* signals */
};
GType gnc_search_owner_get_type (void);
GNCSearchOwner *gnc_search_owner_new (void);
/* methods */