Rework chart save procedure
* Fixed some design flows: AgDb should not know about the window * AgChart now only creates an AgDbSave structure, saving is done through AgWindow
This commit is contained in:
@@ -183,10 +183,32 @@ ag_window_save_action(GSimpleAction *action,
|
||||
{
|
||||
AgWindow *window = AG_WINDOW(user_data);
|
||||
AgWindowPrivate *priv = ag_window_get_instance_private(window);
|
||||
AgDb *db = ag_db_get();
|
||||
GError *err;
|
||||
gint old_id;
|
||||
AgDbSave *save_data;
|
||||
|
||||
recalculate_chart(window);
|
||||
|
||||
ag_chart_save_to_db(priv->chart, &(priv->saved_data), GTK_WIDGET(window));
|
||||
old_id = (priv->saved_data) ? priv->saved_data->db_id : -1;
|
||||
|
||||
save_data = ag_chart_get_db_save(priv->chart, old_id);
|
||||
|
||||
if (!ag_db_save_identical(priv->saved_data, save_data)) {
|
||||
if (!ag_db_save_chart(db, save_data, &err)) {
|
||||
ag_app_message_dialog(
|
||||
GTK_WIDGET(window),
|
||||
GTK_MESSAGE_ERROR,
|
||||
_("Unable to save: %s"),
|
||||
err->message
|
||||
);
|
||||
}
|
||||
|
||||
ag_db_save_data_free(priv->saved_data);
|
||||
priv->saved_data = save_data;
|
||||
} else {
|
||||
ag_db_save_data_free(save_data);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
Reference in New Issue
Block a user