aboutsummaryrefslogtreecommitdiff
path: root/lib/gtk-experiment-widgets/gtk-experiment-transcript.c
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-06-13 16:41:45 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-06-13 16:44:41 +0200
commitcbc720d17e5213cdb569c590fccb87fd7de4dd01 (patch)
tree9b52dae4dcb335cc3b27bf872afcd638022786d2 /lib/gtk-experiment-widgets/gtk-experiment-transcript.c
parent7f9099bf95de9c38fd6cf9d59326733e132fd761 (diff)
downloadexperiment-player-cbc720d17e5213cdb569c590fccb87fd7de4dd01.tar.gz
transcript widget reverse mode is saved in config file
* introduced widget flag attribute
Diffstat (limited to 'lib/gtk-experiment-widgets/gtk-experiment-transcript.c')
-rw-r--r--lib/gtk-experiment-widgets/gtk-experiment-transcript.c55
1 files changed, 46 insertions, 9 deletions
diff --git a/lib/gtk-experiment-widgets/gtk-experiment-transcript.c b/lib/gtk-experiment-widgets/gtk-experiment-transcript.c
index 2cfbf37..312722f 100644
--- a/lib/gtk-experiment-widgets/gtk-experiment-transcript.c
+++ b/lib/gtk-experiment-widgets/gtk-experiment-transcript.c
@@ -129,12 +129,13 @@ gtk_experiment_transcript_init(GtkExperimentTranscript *klass)
klass->priv = GTK_EXPERIMENT_TRANSCRIPT_GET_PRIVATE(klass);
klass->speaker = NULL;
- klass->reverse = FALSE;
klass->interactive_format.default_font = NULL;
klass->interactive_format.default_text_color = NULL;
klass->interactive_format.default_bg_color = NULL;
+ klass->priv->flag_mask = 0;
+
klass->priv->time_adjustment = gtk_adjustment_new(0., 0., 0.,
0., 0., 0.);
g_object_ref_sink(klass->priv->time_adjustment);
@@ -226,11 +227,13 @@ gtk_experiment_transcript_init(GtkExperimentTranscript *klass)
gtk_menu_shell_append(GTK_MENU_SHELL(klass->priv->menu), item);
gtk_widget_show(item);
- item = gtk_check_menu_item_new_with_mnemonic("_Reverse");
- g_signal_connect(item, "activate",
+ klass->priv->menu_reverse_item =
+ gtk_check_menu_item_new_with_mnemonic("_Reverse");
+ g_signal_connect(klass->priv->menu_reverse_item, "activate",
G_CALLBACK(reverse_activated), klass);
- gtk_menu_shell_append(GTK_MENU_SHELL(klass->priv->menu), item);
- gtk_widget_show(item);
+ gtk_menu_shell_append(GTK_MENU_SHELL(klass->priv->menu),
+ klass->priv->menu_reverse_item);
+ gtk_widget_show(klass->priv->menu_reverse_item);
}
/**
@@ -545,8 +548,9 @@ gtk_experiment_transcript_text_layer_redraw(GtkExperimentTranscript *trans)
current_time = (gint64)gtk_adjustment_get_value(GTK_ADJUSTMENT(trans->priv->time_adjustment));
current_time_px = TIME_TO_PX(current_time);
- renderer = trans->reverse ? render_contribution_topdown
- : render_contribution_bottomup;
+ renderer = gtk_experiment_transcript_get_reverse_mode(trans)
+ ? render_contribution_topdown
+ : render_contribution_bottomup;
for (GList *cur = experiment_reader_get_contribution_by_time(
trans->priv->contribs,
@@ -739,8 +743,9 @@ reverse_activated(GtkWidget *widget, gpointer data)
{
GtkExperimentTranscript *trans = GTK_EXPERIMENT_TRANSCRIPT(data);
- trans->reverse =
- gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
+ trans->priv->flag_mask &= ~GTK_EXPERIMENT_TRANSCRIPT_REVERSE_MASK;
+ if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)))
+ trans->priv->flag_mask |= GTK_EXPERIMENT_TRANSCRIPT_REVERSE_MASK;
if (gtk_widget_get_realized(GTK_WIDGET(trans)) &&
trans->priv->layer_text != NULL)
@@ -825,6 +830,38 @@ gtk_experiment_transcript_load_filename(GtkExperimentTranscript *trans,
}
/**
+ * @brief Set or unset reverse (top-down) render mode
+ *
+ * The render mode defaults to bottom-up mode for new widget instances.
+ *
+ * @param trans Widget instance
+ * @param reverse Activate reverse-mode (\c TRUE), or deactivate (\c FALSE)
+ */
+void
+gtk_experiment_transcript_set_reverse_mode(GtkExperimentTranscript *trans,
+ gboolean reverse)
+{
+ GtkCheckMenuItem *item =
+ GTK_CHECK_MENU_ITEM(trans->priv->menu_reverse_item);
+
+ gtk_check_menu_item_set_active(item, reverse);
+}
+
+/**
+ * @brief Get current reverse (top-down) render mode state
+ *
+ * @sa gtk_experiment_transcript_set_reverse_mode
+ *
+ * @param trans Widget instance
+ * @return \c TRUE if reverse-mode is active, else \c FALSE
+ */
+gboolean
+gtk_experiment_transcript_get_reverse_mode(GtkExperimentTranscript *trans)
+{
+ return trans->priv->flag_mask & GTK_EXPERIMENT_TRANSCRIPT_REVERSE_MASK;
+}
+
+/**
* @brief Set alignment (justification) of text blocks in a transcript widget
*
* The alignment defaults to \c PANGO_ALIGN_LEFT for new widget instances.