/** * gda_report_engine_declare_object * @engine: a #GdaReportEngine object * @object: a #GObject to declare * @obj_name: the name to give to @object within @engine * * Declares an object which will be used in @engine, referenced by the @obj_name name. * * @object must be of a supported types, that it must be a #GdaConnection, #GdaStatement or #GdaHolder object. */ void gda_report_engine_declare_object (GdaReportEngine *engine, GObject *object, const gchar *obj_name) { gchar prefix, *real_name; GObject *current_obj; g_return_if_fail (GDA_IS_REPORT_ENGINE (engine)); g_return_if_fail (engine->priv); g_return_if_fail (G_IS_OBJECT (object)); g_return_if_fail (obj_name); if (GDA_IS_STATEMENT (object)) prefix = 'S'; else if (GDA_IS_CONNECTION (object)) prefix = 'C'; else if (GDA_IS_HOLDER (object)) prefix = 'H'; else { g_warning (_("Object type '%s' cannot be declared in this context"), G_OBJECT_TYPE_NAME (object)); return; } real_name = g_strdup_printf ("%c%s", prefix, obj_name); current_obj = g_hash_table_lookup (engine->priv->objects, real_name); if (current_obj) { if (current_obj != object) g_warning (_("An object with the '%s' name has already been declared"), obj_name); } else { /*g_print ("%s(): declared %p as %s\n", __FUNCTION__, object, real_name);*/ g_hash_table_insert (engine->priv->objects, real_name, object); g_object_ref (object); } }
/** * gda_pstmt_set_gda_statement: * @pstmt: a #GdaPStmt object * @stmt: (allow-none): a #GdaStatement object, or %NULL * * Informs @pstmt that it corresponds to the preparation of the @stmt statement */ void gda_pstmt_set_gda_statement (GdaPStmt *pstmt, GdaStatement *stmt) { g_return_if_fail (GDA_IS_PSTMT (pstmt)); g_return_if_fail (!stmt || GDA_IS_STATEMENT (stmt)); g_rec_mutex_lock (& pstmt->priv->mutex); GdaStatement *estmt; estmt = g_weak_ref_get (& pstmt->priv->gda_stmt_ref); if (estmt == stmt) { if (estmt) g_object_unref (estmt); g_rec_mutex_unlock (& pstmt->priv->mutex); return; } gda_stmt_reset_cb (NULL, pstmt); if (stmt) { g_object_ref (stmt); g_weak_ref_set (& pstmt->priv->gda_stmt_ref, stmt); g_signal_connect (G_OBJECT (stmt), "reset", G_CALLBACK (gda_stmt_reset_cb), pstmt); } g_rec_mutex_unlock (& pstmt->priv->mutex); }
/** * ui_formgrid_handle_user_prefs * @formgrid: a #UiFormGrid widget * @tcnc: (allow-none): a #TConnection, or %NULL to let @formgrid determine it itself * @stmt: the #GdaStatement which has been executed to produce the #GdaDataModel displayed in @formgrid * * Takes into account the UI preferences of the user */ void ui_formgrid_handle_user_prefs (UiFormGrid *formgrid, TConnection *tcnc, GdaStatement *stmt) { g_return_if_fail (UI_IS_FORMGRID (formgrid)); if (tcnc) g_return_if_fail (T_IS_CONNECTION (tcnc)); else { tcnc = get_t_connection (formgrid); if (!tcnc) return; } if (stmt) g_return_if_fail (GDA_IS_STATEMENT (stmt)); else return; GdaSqlStatement *sqlst; g_object_get ((GObject*) stmt, "structure", &sqlst, NULL); if (!sqlst) return; GError *lerror = NULL; if (((sqlst->stmt_type != GDA_SQL_STATEMENT_SELECT) && (sqlst->stmt_type != GDA_SQL_STATEMENT_COMPOUND)) || !t_connection_normalize_sql_statement (tcnc, sqlst, &lerror)) { if (lerror) g_print ("[%s]\n", lerror->message); goto out; } handle_user_prefs_for_sql_statement (formgrid, tcnc, sqlst); out: gda_sql_statement_free (sqlst); }
/** * gda_tree_mgr_select_new: * @cnc: a #GdaConnection object * @stmt: a #GdaStatement object representing a SELECT statement * @params: a #GdaSet object representing fixed parameters which are to be used when executing @stmt * * Creates a new #GdaTreeMgrSelect object which will add one tree node for each row in * the #GdaDataModel resulting from the execution of @stmt. * * Returns: (transfer full): a new #GdaTreeManager object * * Since: 4.2 */ GdaTreeManager* gda_tree_mgr_select_new (GdaConnection *cnc, GdaStatement *stmt, GdaSet *params) { g_return_val_if_fail (GDA_IS_CONNECTION (cnc), NULL); g_return_val_if_fail (GDA_IS_STATEMENT (stmt), NULL); g_return_val_if_fail (gda_statement_get_statement_type (stmt) == GDA_SQL_STATEMENT_SELECT, NULL); g_return_val_if_fail (!params || GDA_IS_SET (params), NULL); return (GdaTreeManager*) g_object_new (GDA_TYPE_TREE_MGR_SELECT, "connection", cnc, "statement", stmt, "params", params, NULL); }
/** * gda_batch_add_statement: * @batch: a #GdaBatch object * @stmt: a statement to add to @batch's statements list * * Add @stmt to the list of statements managed by @batch. A #GdaStatement object can be * added multiple times to a #GdaBatch object. */ void gda_batch_add_statement (GdaBatch *batch, GdaStatement *stmt) { g_return_if_fail (GDA_IS_BATCH (batch)); g_return_if_fail (batch->priv); g_return_if_fail (GDA_IS_STATEMENT (stmt)); g_signal_connect (G_OBJECT (stmt), "reset", G_CALLBACK (stmt_reset_cb), batch); batch->priv->statements = g_slist_append (batch->priv->statements, stmt); g_object_ref (stmt); }
/** * gda_batch_remove_statement: * @batch: a #GdaBatch object * @stmt: a statement to remove from @batch's statements list * * Removes @stmt from the list of statements managed by @batch. If @stmt is present several * times in @batch's statements' list, then only the first one is removed. */ void gda_batch_remove_statement (GdaBatch *batch, GdaStatement *stmt) { g_return_if_fail (GDA_IS_BATCH (batch)); g_return_if_fail (batch->priv); g_return_if_fail (GDA_IS_STATEMENT (stmt)); if (g_slist_index (batch->priv->statements, stmt) < 0) { g_warning (_("Statement could not be found in batch's statements")); return; } batch->priv->statements = g_slist_remove (batch->priv->statements, stmt); if (g_slist_index (batch->priv->statements, stmt) < 0) /* @stmt is no more in @batch's list */ g_signal_handlers_disconnect_by_func (G_OBJECT (stmt), G_CALLBACK (stmt_reset_cb), batch); g_object_unref (stmt); }