static GList * get_modified_documents (GtrWindow * window) { GtrNotebook *nb; GtrTab *tab; GtrPo *po; gint pages; GList *list = NULL; nb = gtr_window_get_notebook (window); pages = gtk_notebook_get_n_pages (GTK_NOTEBOOK (nb)); while (pages > 0) { tab = GTR_TAB (gtk_notebook_get_nth_page (GTK_NOTEBOOK (nb), pages - 1)); po = gtr_tab_get_po (tab); if (gtr_po_get_state (po) == GTR_PO_STATE_MODIFIED) list = g_list_prepend (list, po); pages--; } return list; }
static void buffer_end_user_action (GtkTextBuffer *buffer, GtrContextPanel *panel) { GtkTextIter start, end; gchar *text; GtrContextPanelPrivate *priv; GtrPo *po; GtrPoState po_state; priv = gtr_context_panel_get_instance_private(panel); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (priv->context)); gtk_text_buffer_get_bounds (buffer, &start, &end); text = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); gtr_msg_set_comment (priv->current_msg, text); g_free (text); /* Update the po state if needed after adding a comment */ po = gtr_tab_get_po (priv->tab); po_state = gtr_po_get_state (po); if (po_state != GTR_PO_STATE_MODIFIED) gtr_po_set_state (po, GTR_PO_STATE_MODIFIED); }
static void gtr_po_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { GtrPo *po = GTR_PO (object); switch (prop_id) { case PROP_LOCATION: g_value_take_object (value, gtr_po_get_location (po)); break; case PROP_STATE: g_value_set_enum (value, gtr_po_get_state (po)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }