mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Merge Richard Cohen's 'declare-type-gncsearch' into stable.
This commit is contained in:
commit
48cf3a9a32
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user