1 /* This file is part of GtkMathView-Bonobo, a Bonobo wrapper for GtkMathView.
2 * Copyright (C) 2003 Luca Padovani <lpadovan@cs.unibo.it>
3 * Pouria Masoudi <pmasoudi@cs.unibo.it>
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 * For more information, please visit the project's home page
20 * http://helm.cs.unibo.it/gtkmathview-bonobo
21 * or send an email to <lpadovan@cs.unibo.it>
28 #include "control-data.h"
30 GtkMathViewControlData*
31 gtk_math_view_control_data_new(GtkMathView *math_view)
33 GtkMathViewControlData *cd = g_new(GtkMathViewControlData,1);
34 cd->math_view = math_view;
35 gtk_widget_ref(GTK_WIDGET(math_view));
36 cd->item_factory = NULL;
37 cd->semantic_selection = FALSE;
38 cd->first_selected = NULL;
39 cd->root_selected = NULL;
40 cd->id_ns_uri = gdome_str_mkref("http://www.cs.unibo.it/helm");
41 cd->id_name = gdome_str_mkref("xref");
47 gtk_math_view_control_data_destroy(GtkMathViewControlData* cd)
49 GdomeException exc = 0;
50 gtk_widget_unref(GTK_WIDGET(cd->math_view));
52 if (cd->item_factory != NULL)
54 gtk_object_unref(cd->item_factory);
55 cd->item_factory = NULL;
57 if (cd->first_selected != NULL)
59 gdome_el_unref(cd->first_selected, &exc);
61 cd->first_selected = NULL;
63 if (cd->root_selected != NULL)
65 gdome_el_unref(cd->root_selected, &exc);
67 cd->root_selected = NULL;
69 if (cd->id_ns_uri != NULL)
71 gdome_str_unref(cd->id_ns_uri);
74 if (cd->id_name != NULL)
76 gdome_str_unref(cd->id_name);
83 gtk_math_view_control_data_get_id_ns_uri(GtkMathViewControlData* cd)
85 g_return_val_if_fail(cd != NULL, NULL);
86 return (cd->id_ns_uri != NULL) ? g_strdup(cd->id_ns_uri->str) : NULL;
90 gtk_math_view_control_data_set_id_ns_uri(GtkMathViewControlData* cd, const gchar* ns_uri)
92 g_return_if_fail(cd != NULL);
93 if (cd->id_ns_uri != NULL) gdome_str_unref(cd->id_ns_uri);
94 cd->id_ns_uri = (ns_uri != NULL) ? gdome_str_mkref_dup(ns_uri) : NULL;
98 gtk_math_view_control_data_get_id_name(GtkMathViewControlData* cd)
100 g_return_val_if_fail(cd != NULL, NULL);
101 return (cd->id_name != NULL) ? g_strdup(cd->id_name->str) : NULL;
105 gtk_math_view_control_data_set_id_name(GtkMathViewControlData* cd, const gchar* name)
107 g_return_if_fail(cd != NULL);
108 if (cd->id_name != NULL) gdome_str_unref(cd->id_name);
109 cd->id_name = (name != NULL) ? gdome_str_mkref_dup(name) : NULL;
113 gtk_math_view_control_data_set_root_selected(GtkMathViewControlData* cd, GdomeElement* elem)
115 g_return_if_fail(cd != NULL);
116 GdomeException exc = 0;
118 gtk_math_view_freeze(cd->math_view);
120 if (cd->root_selected != NULL)
122 gtk_math_view_unselect(cd->math_view, cd->root_selected);
123 gdome_el_unref(cd->root_selected, &exc);
127 cd->root_selected = elem;
128 if (cd->root_selected != NULL)
130 gdome_el_ref(cd->root_selected, &exc);
132 gtk_math_view_select(cd->math_view, cd->root_selected);
135 gtk_math_view_thaw(cd->math_view);