summaryrefslogtreecommitdiff
path: root/mate-dictionary/libgdict/gdict-context.h
diff options
context:
space:
mode:
Diffstat (limited to 'mate-dictionary/libgdict/gdict-context.h')
-rw-r--r--mate-dictionary/libgdict/gdict-context.h204
1 files changed, 204 insertions, 0 deletions
diff --git a/mate-dictionary/libgdict/gdict-context.h b/mate-dictionary/libgdict/gdict-context.h
new file mode 100644
index 00000000..974a820b
--- /dev/null
+++ b/mate-dictionary/libgdict/gdict-context.h
@@ -0,0 +1,204 @@
+/* gdict-context.h - Abstract class for dictionary contexts
+ *
+ * Copyright (C) 2005 Emmanuele Bassi <[email protected]>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ */
+
+#ifndef __GDICT_CONTEXT_H__
+#define __GDICT_CONTEXT_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GDICT_TYPE_DATABASE (gdict_database_get_type ())
+#define GDICT_TYPE_STRATEGY (gdict_strategy_get_type ())
+#define GDICT_TYPE_MATCH (gdict_match_get_type ())
+#define GDICT_TYPE_DEFINITION (gdict_definition_get_type ())
+
+#define GDICT_TYPE_CONTEXT (gdict_context_get_type ())
+#define GDICT_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GDICT_TYPE_CONTEXT, GdictContext))
+#define GDICT_IS_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GDICT_TYPE_CONTEXT))
+#define GDICT_CONTEXT_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GDICT_TYPE_CONTEXT, GdictContextIface))
+
+/* These are the boxed containers for action results. */
+typedef struct _GdictDatabase GdictDatabase;
+typedef struct _GdictStrategy GdictStrategy;
+typedef struct _GdictMatch GdictMatch;
+typedef struct _GdictDefinition GdictDefinition;
+
+typedef struct _GdictContext GdictContext; /* dummy typedef */
+typedef struct _GdictContextIface GdictContextIface;
+
+#define GDICT_CONTEXT_ERROR (gdict_context_error_quark ())
+
+/**
+ * GdictContextError:
+ * @GDICT_CONTEXT_ERROR_PARSE:
+ * @GDICT_CONTEXT_ERROR_NOT_IMPLEMENTED:
+ * @GDICT_CONTEXT_ERROR_INVALID_DATABASE:
+ * @GDICT_CONTEXT_ERROR_INVALID_STRATEGY:
+ * @GDICT_CONTEXT_ERROR_INVALID_COMMAND:
+ * @GDICT_CONTEXT_ERROR_NO_MATCH:
+ * @GDICT_CONTEXT_ERROR_NO_DATABASES:
+ * @GDICT_CONTEXT_ERROR_NO_STRATEGIES:
+ *
+ * #GdictContext error enumeration.
+ */
+typedef enum {
+ GDICT_CONTEXT_ERROR_PARSE,
+ GDICT_CONTEXT_ERROR_NOT_IMPLEMENTED,
+ GDICT_CONTEXT_ERROR_INVALID_DATABASE,
+ GDICT_CONTEXT_ERROR_INVALID_STRATEGY,
+ GDICT_CONTEXT_ERROR_INVALID_COMMAND,
+ GDICT_CONTEXT_ERROR_NO_MATCH,
+ GDICT_CONTEXT_ERROR_NO_DATABASES,
+ GDICT_CONTEXT_ERROR_NO_STRATEGIES
+} GdictContextError;
+
+GQuark gdict_context_error_quark (void);
+
+/**
+ * GdictDatabase:
+ *
+ * A #GdictDatabase represents a database inside a dictionary source.
+ *
+ * The #GdictDatabase structure is private and should only be accessed
+ * using the available functions.
+ */
+GType gdict_database_get_type (void) G_GNUC_CONST;
+GdictDatabase * gdict_database_ref (GdictDatabase *db);
+void gdict_database_unref (GdictDatabase *db);
+const gchar *gdict_database_get_name (GdictDatabase *db);
+const gchar *gdict_database_get_full_name (GdictDatabase *db);
+
+/**
+ * GdictStrategy:
+ *
+ * A #GdictStrategy represents a matching strategy implemented by
+ * a dictionary source.
+ *
+ * The #GdictStrategy structure is private and should only be accessed
+ * using the available functions.
+ */
+GType gdict_strategy_get_type (void) G_GNUC_CONST;
+GdictStrategy * gdict_strategy_ref (GdictStrategy *strat);
+void gdict_strategy_unref (GdictStrategy *strat);
+const gchar *gdict_strategy_get_name (GdictStrategy *strat);
+const gchar *gdict_strategy_get_description (GdictStrategy *strat);
+
+/**
+ * GdictMatch:
+ *
+ * A #GdictMatch represents a single match for the searched word.
+ *
+ * The #GdictMatch structure is private and should only be accessed
+ * using the available functions.
+ */
+GType gdict_match_get_type (void) G_GNUC_CONST;
+GdictMatch * gdict_match_ref (GdictMatch *match);
+void gdict_match_unref (GdictMatch *match);
+const gchar *gdict_match_get_word (GdictMatch *match);
+const gchar *gdict_match_get_database (GdictMatch *match);
+
+/**
+ * GdictDefinition:
+ *
+ * A #GdictDefinition represents a single definition for the searched
+ * word.
+ *
+ * The #GdictDefinition structure is private and should only be
+ * accessed using the available functions.
+ */
+GType gdict_definition_get_type (void) G_GNUC_CONST;
+GdictDefinition * gdict_definition_ref (GdictDefinition *def);
+void gdict_definition_unref (GdictDefinition *def);
+gint gdict_definition_get_total (GdictDefinition *def);
+const gchar *gdict_definition_get_word (GdictDefinition *def);
+const gchar *gdict_definition_get_database (GdictDefinition *def);
+const gchar *gdict_definition_get_text (GdictDefinition *def);
+
+/**
+ * GdictContextIface:
+ *
+ * Interface defintion
+ */
+struct _GdictContextIface
+{
+ /*< private >*/
+ GTypeInterface base_iface;
+
+ /*< public >*/
+ /* methods, not signals */
+ gboolean (*get_databases) (GdictContext *context,
+ GError **error);
+ gboolean (*get_strategies) (GdictContext *context,
+ GError **error);
+ gboolean (*match_word) (GdictContext *context,
+ const gchar *database,
+ const gchar *strategy,
+ const gchar *word,
+ GError **error);
+ gboolean (*define_word) (GdictContext *context,
+ const gchar *database,
+ const gchar *word,
+ GError **error);
+
+ /* signals */
+ void (*lookup_start) (GdictContext *context);
+ void (*lookup_end) (GdictContext *context);
+
+ void (*database_found) (GdictContext *context,
+ GdictDatabase *database);
+ void (*strategy_found) (GdictContext *context,
+ GdictStrategy *strategy);
+ void (*match_found) (GdictContext *context,
+ GdictMatch *match);
+ void (*definition_found) (GdictContext *context,
+ GdictDefinition *definition);
+
+ /* fired each time there's an error; the GError is owned
+ * by the context, and should never be modified or freed
+ */
+ void (*error) (GdictContext *context,
+ const GError *error);
+};
+
+GType gdict_context_get_type (void) G_GNUC_CONST;
+
+/* Configuration */
+void gdict_context_set_local_only (GdictContext *context,
+ gboolean local_only);
+gboolean gdict_context_get_local_only (GdictContext *context);
+
+/* Actions */
+gboolean gdict_context_lookup_databases (GdictContext *context,
+ GError **error);
+gboolean gdict_context_lookup_strategies (GdictContext *context,
+ GError **error);
+gboolean gdict_context_match_word (GdictContext *context,
+ const gchar *database,
+ const gchar *strategy,
+ const gchar *word,
+ GError **error);
+gboolean gdict_context_define_word (GdictContext *context,
+ const gchar *database,
+ const gchar *word,
+ GError **error);
+
+G_END_DECLS
+
+#endif /* __GDICT_CONTEXT_H__ */