Bug Summary

File:math-preferences.c
Warning:line 163, column 9
Value stored to 'valid' is never read

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple x86_64-pc-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name math-preferences.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/rootdir/src -fcoverage-compilation-dir=/rootdir/src -resource-dir /usr/lib/llvm-19/lib/clang/19 -D HAVE_CONFIG_H -I . -I .. -D VERSION="1.25.0" -D LOCALE_DIR="/usr/share/locale" -D GETTEXT_PACKAGE="cafe-calc" -I /usr/include/ctk-3.0 -I /usr/include/pango-1.0 -I /usr/include/glib-2.0 -I /usr/lib/x86_64-linux-gnu/glib-2.0/include -I /usr/include/sysprof-6 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/x86_64-linux-gnu -I /usr/include/webp -I /usr/include/gio-unix-2.0 -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib/x86_64-linux-gnu/dbus-1.0/include -I /usr/include/libxml2 -internal-isystem /usr/lib/llvm-19/lib/clang/19/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2025-08-18-162928-15666-1 -x c math-preferences.c
1/*
2 * Copyright (C) 2008-2011 Robert Ancell
3 *
4 * This program is free software: you can redistribute it and/or modify it under
5 * the terms of the GNU General Public License as published by the Free Software
6 * Foundation, either version 2 of the License, or (at your option) any later
7 * version. See http://www.gnu.org/copyleft/gpl.html the full text of the
8 * license.
9 */
10
11#include <glib/gi18n.h>
12#include <ctk/ctk.h>
13
14#include "math-preferences.h"
15#include "utility.h"
16
17
18enum {
19 PROP_0,
20 PROP_EQUATION
21};
22
23struct MathPreferencesDialogPrivate
24{
25 MathEquation *equation;
26 CtkBuilder *ui;
27};
28
29G_DEFINE_TYPE_WITH_PRIVATE (MathPreferencesDialog, math_preferences, CTK_TYPE_DIALOG)static void math_preferences_init (MathPreferencesDialog *self
); static void math_preferences_class_init (MathPreferencesDialogClass
*klass); static GType math_preferences_get_type_once (void);
static gpointer math_preferences_parent_class = ((void*)0); static
gint MathPreferencesDialog_private_offset; static void math_preferences_class_intern_init
(gpointer klass) { math_preferences_parent_class = g_type_class_peek_parent
(klass); if (MathPreferencesDialog_private_offset != 0) g_type_class_adjust_private_offset
(klass, &MathPreferencesDialog_private_offset); math_preferences_class_init
((MathPreferencesDialogClass*) klass); } __attribute__ ((__unused__
)) static inline gpointer math_preferences_get_instance_private
(MathPreferencesDialog *self) { return (((gpointer) ((guint8
*) (self) + (glong) (MathPreferencesDialog_private_offset))))
; } GType math_preferences_get_type (void) { static GType static_g_define_type_id
= 0; if ((__extension__ ({ _Static_assert (sizeof *(&static_g_define_type_id
) == sizeof (gpointer), "Expression evaluates to false"); (void
) (0 ? (gpointer) * (&static_g_define_type_id) : ((void*)
0)); (!(__extension__ ({ _Static_assert (sizeof *(&static_g_define_type_id
) == sizeof (gpointer), "Expression evaluates to false"); __typeof__
(*(&static_g_define_type_id)) gapg_temp_newval; __typeof__
((&static_g_define_type_id)) gapg_temp_atomic = (&static_g_define_type_id
); __atomic_load (gapg_temp_atomic, &gapg_temp_newval, 5)
; gapg_temp_newval; })) && g_once_init_enter_pointer (
&static_g_define_type_id)); })) ) { GType g_define_type_id
= math_preferences_get_type_once (); (__extension__ ({ _Static_assert
(sizeof *(&static_g_define_type_id) == sizeof (gpointer)
, "Expression evaluates to false"); 0 ? (void) (*(&static_g_define_type_id
) = (g_define_type_id)) : (void) 0; g_once_init_leave_pointer
((&static_g_define_type_id), (gpointer) (guintptr) (g_define_type_id
)); })) ; } return static_g_define_type_id; } __attribute__ (
(__noinline__)) static GType math_preferences_get_type_once (
void) { GType g_define_type_id = g_type_register_static_simple
((ctk_dialog_get_type ()), g_intern_static_string ("MathPreferencesDialog"
), sizeof (MathPreferencesDialogClass), (GClassInitFunc)(void
(*)(void)) math_preferences_class_intern_init, sizeof (MathPreferencesDialog
), (GInstanceInitFunc)(void (*)(void)) math_preferences_init,
(GTypeFlags) 0); { {{ MathPreferencesDialog_private_offset =
g_type_add_instance_private (g_define_type_id, sizeof (MathPreferencesDialogPrivate
)); };} } return g_define_type_id; }
;
30
31#define UI_DIALOGS_RESOURCE_PATH"/org/cafe/calculator/ui/preferences.ui" "/org/cafe/calculator/ui/preferences.ui"
32#define GET_WIDGET(ui, name)((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object(ui, name))), ((ctk_widget_get_type
()))))))
\
33 CTK_WIDGET(ctk_builder_get_object(ui, name))((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object(ui, name))), ((ctk_widget_get_type
()))))))
34
35
36MathPreferencesDialog *
37math_preferences_dialog_new(MathEquation *equation)
38{
39 return g_object_new(math_preferences_get_type(), "equation", equation, NULL((void*)0));
40}
41
42
43static void
44preferences_response_cb (CtkWidget *widget,
45 gint id G_GNUC_UNUSED__attribute__ ((__unused__)))
46{
47 ctk_widget_hide(widget);
48}
49
50
51static gboolean
52preferences_dialog_delete_cb (CtkWidget *widget,
53 CdkEvent *event G_GNUC_UNUSED__attribute__ ((__unused__)))
54{
55 preferences_response_cb(widget, 0);
56 return TRUE(!(0));
57}
58
59
60void number_format_combobox_changed_cb(CtkWidget *combo, MathPreferencesDialog *dialog);
61G_MODULE_EXPORT__attribute__((visibility("default")))
62void
63number_format_combobox_changed_cb(CtkWidget *combo, MathPreferencesDialog *dialog)
64{
65 MpDisplayFormat value;
66 CtkTreeModel *model;
67 CtkTreeIter iter;
68
69 model = ctk_combo_box_get_model(CTK_COMBO_BOX(combo)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((combo)), ((ctk_combo_box_get_type ()))))))
);
70 ctk_combo_box_get_active_iter(CTK_COMBO_BOX(combo)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((combo)), ((ctk_combo_box_get_type ()))))))
, &iter);
71 ctk_tree_model_get(model, &iter, 1, &value, -1);
72 math_equation_set_number_format(dialog->priv->equation, value);
73}
74
75
76void angle_unit_combobox_changed_cb(CtkWidget *combo, MathPreferencesDialog *dialog);
77G_MODULE_EXPORT__attribute__((visibility("default")))
78void
79angle_unit_combobox_changed_cb(CtkWidget *combo, MathPreferencesDialog *dialog)
80{
81 MPAngleUnit value;
82 CtkTreeModel *model;
83 CtkTreeIter iter;
84
85 model = ctk_combo_box_get_model(CTK_COMBO_BOX(combo)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((combo)), ((ctk_combo_box_get_type ()))))))
);
86 ctk_combo_box_get_active_iter(CTK_COMBO_BOX(combo)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((combo)), ((ctk_combo_box_get_type ()))))))
, &iter);
87 ctk_tree_model_get(model, &iter, 1, &value, -1);
88 math_equation_set_angle_units(dialog->priv->equation, value);
89}
90
91
92void word_size_combobox_changed_cb(CtkWidget *combo, MathPreferencesDialog *dialog);
93G_MODULE_EXPORT__attribute__((visibility("default")))
94void
95word_size_combobox_changed_cb(CtkWidget *combo, MathPreferencesDialog *dialog)
96{
97 gint value;
98 CtkTreeModel *model;
99 CtkTreeIter iter;
100
101 model = ctk_combo_box_get_model(CTK_COMBO_BOX(combo)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((combo)), ((ctk_combo_box_get_type ()))))))
);
102 ctk_combo_box_get_active_iter(CTK_COMBO_BOX(combo)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((combo)), ((ctk_combo_box_get_type ()))))))
, &iter);
103 ctk_tree_model_get(model, &iter, 1, &value, -1);
104 math_equation_set_word_size(dialog->priv->equation, value);
105}
106
107
108void decimal_places_spin_change_value_cb(CtkWidget *spin, MathPreferencesDialog *dialog);
109G_MODULE_EXPORT__attribute__((visibility("default")))
110void
111decimal_places_spin_change_value_cb(CtkWidget *spin, MathPreferencesDialog *dialog)
112{
113 gint value = 0;
114
115 value = ctk_spin_button_get_value_as_int(CTK_SPIN_BUTTON(spin)((((CtkSpinButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((spin)), ((ctk_spin_button_get_type ()))))))
);
116 math_equation_set_accuracy(dialog->priv->equation, value);
117}
118
119
120void thousands_separator_check_toggled_cb(CtkWidget *check, MathPreferencesDialog *dialog);
121G_MODULE_EXPORT__attribute__((visibility("default")))
122void
123thousands_separator_check_toggled_cb(CtkWidget *check, MathPreferencesDialog *dialog)
124{
125 gboolean value;
126
127 value = ctk_toggle_button_get_active(CTK_TOGGLE_BUTTON(check)((((CtkToggleButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((check)), ((ctk_toggle_button_get_type ()))))))
);
128 math_equation_set_show_thousands_separators(dialog->priv->equation, value);
129}
130
131
132void trailing_zeroes_check_toggled_cb(CtkWidget *check, MathPreferencesDialog *dialog);
133G_MODULE_EXPORT__attribute__((visibility("default")))
134void
135trailing_zeroes_check_toggled_cb(CtkWidget *check, MathPreferencesDialog *dialog)
136{
137 gboolean value;
138
139 value = ctk_toggle_button_get_active(CTK_TOGGLE_BUTTON(check)((((CtkToggleButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((check)), ((ctk_toggle_button_get_type ()))))))
);
140 math_equation_set_show_trailing_zeroes(dialog->priv->equation, value);
141}
142
143
144static void
145set_combo_box_from_int(CtkWidget *combo, int value)
146{
147 CtkTreeModel *model;
148 CtkTreeIter iter;
149 gboolean valid;
150
151 model = ctk_combo_box_get_model(CTK_COMBO_BOX(combo)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((combo)), ((ctk_combo_box_get_type ()))))))
);
152 valid = ctk_tree_model_get_iter_first(model, &iter);
153
154 while (valid) {
155 gint v;
156
157 ctk_tree_model_get(model, &iter, 1, &v, -1);
158 if (v == value)
159 break;
160 valid = ctk_tree_model_iter_next(model, &iter);
161 }
162 if (!valid)
163 valid = ctk_tree_model_get_iter_first(model, &iter);
Value stored to 'valid' is never read
164
165 ctk_combo_box_set_active_iter(CTK_COMBO_BOX(combo)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((combo)), ((ctk_combo_box_get_type ()))))))
, &iter);
166}
167
168
169static void
170accuracy_cb (MathEquation *equation,
171 GParamSpec *spec G_GNUC_UNUSED__attribute__ ((__unused__)),
172 MathPreferencesDialog *dialog)
173{
174 ctk_spin_button_set_value(CTK_SPIN_BUTTON(ctk_builder_get_object(dialog->priv->ui, "decimal_places_spin"))((((CtkSpinButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object(dialog->priv->ui, "decimal_places_spin"
))), ((ctk_spin_button_get_type ()))))))
,
175 math_equation_get_accuracy(equation));
176 g_settings_set_int(g_settings_var, "accuracy", math_equation_get_accuracy(equation));
177}
178
179
180static void
181show_thousands_separators_cb (MathEquation *equation,
182 GParamSpec *spec G_GNUC_UNUSED__attribute__ ((__unused__)),
183 MathPreferencesDialog *dialog)
184{
185 ctk_toggle_button_set_active(CTK_TOGGLE_BUTTON(ctk_builder_get_object(dialog->priv->ui, "thousands_separator_check"))((((CtkToggleButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object(dialog->priv->ui, "thousands_separator_check"
))), ((ctk_toggle_button_get_type ()))))))
,
186 math_equation_get_show_thousands_separators(equation));
187 g_settings_set_boolean(g_settings_var, "show-thousands", math_equation_get_show_thousands_separators(equation));
188}
189
190
191static void
192show_trailing_zeroes_cb (MathEquation *equation,
193 GParamSpec *spec G_GNUC_UNUSED__attribute__ ((__unused__)),
194 MathPreferencesDialog *dialog)
195{
196 ctk_toggle_button_set_active(CTK_TOGGLE_BUTTON(ctk_builder_get_object(dialog->priv->ui, "trailing_zeroes_check"))((((CtkToggleButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object(dialog->priv->ui, "trailing_zeroes_check"
))), ((ctk_toggle_button_get_type ()))))))
,
197 math_equation_get_show_trailing_zeroes(equation));
198 g_settings_set_boolean(g_settings_var, "show-zeroes", math_equation_get_show_trailing_zeroes(equation));
199}
200
201
202static void
203number_format_cb (MathEquation *equation,
204 GParamSpec *spec G_GNUC_UNUSED__attribute__ ((__unused__)),
205 MathPreferencesDialog *dialog)
206{
207 set_combo_box_from_int(GET_WIDGET(dialog->priv->ui, "number_format_combobox")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object(dialog->priv->ui, "number_format_combobox"
))), ((ctk_widget_get_type ()))))))
, math_equation_get_number_format(equation));
208 g_settings_set_enum(g_settings_var, "number-format", math_equation_get_number_format(equation));
209}
210
211
212static void
213word_size_cb (MathEquation *equation,
214 GParamSpec *spec G_GNUC_UNUSED__attribute__ ((__unused__)),
215 MathPreferencesDialog *dialog)
216{
217 set_combo_box_from_int(GET_WIDGET(dialog->priv->ui, "word_size_combobox")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object(dialog->priv->ui, "word_size_combobox"
))), ((ctk_widget_get_type ()))))))
, math_equation_get_word_size(equation));
218 g_settings_set_int(g_settings_var, "word-size", math_equation_get_word_size(equation));
219}
220
221
222static void
223angle_unit_cb (MathEquation *equation,
224 GParamSpec *spec G_GNUC_UNUSED__attribute__ ((__unused__)),
225 MathPreferencesDialog *dialog)
226{
227 set_combo_box_from_int(GET_WIDGET(dialog->priv->ui, "angle_unit_combobox")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object(dialog->priv->ui, "angle_unit_combobox"
))), ((ctk_widget_get_type ()))))))
, math_equation_get_angle_units(equation));
228 g_settings_set_enum(g_settings_var, "angle-units", math_equation_get_angle_units(equation));
229}
230
231
232static void
233create_gui(MathPreferencesDialog *dialog)
234{
235 CtkWidget *widget;
236 CtkTreeModel *model;
237 CtkTreeIter iter;
238 CtkCellRenderer *renderer;
239 gchar *string, **tokens;
240 GError *error = NULL((void*)0);
241 static gchar *objects[] = { "preferences_table", "angle_unit_model", "number_format_model",
242 "word_size_model", "decimal_places_adjustment", "number_base_model", NULL((void*)0) };
243
244 // FIXME: Handle errors
245 dialog->priv->ui = ctk_builder_new();
246 ctk_builder_add_objects_from_resource(dialog->priv->ui, UI_DIALOGS_RESOURCE_PATH"/org/cafe/calculator/ui/preferences.ui", objects, &error);
247 if (error)
248 g_warning("Error loading preferences UI: %s", error->message);
249 g_clear_error(&error);
250
251 ctk_window_set_title(CTK_WINDOW(dialog)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog)), ((ctk_window_get_type ()))))))
,
252 /* Title of preferences dialog */
253 _("Preferences")gettext ("Preferences"));
254 ctk_container_set_border_width(CTK_CONTAINER(dialog)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog)), ((ctk_container_get_type ()))))))
, 8);
255 ctk_dialog_add_button(CTK_DIALOG(dialog)((((CtkDialog*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog)), ((ctk_dialog_get_type ()))))))
,
256 /* Icon name on close button in preferences dialog */
257 "ctk-close", CTK_RESPONSE_CLOSE);
258
259 ctk_window_set_icon_name (CTK_WINDOW(dialog)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog)), ((ctk_window_get_type ()))))))
, "accessories-calculator");
260
261 g_signal_connect(dialog, "response", G_CALLBACK(preferences_response_cb), NULL)g_signal_connect_data ((dialog), ("response"), (((GCallback) (
preferences_response_cb))), (((void*)0)), ((void*)0), (GConnectFlags
) 0)
;
262 g_signal_connect(dialog, "delete-event", G_CALLBACK(preferences_dialog_delete_cb), NULL)g_signal_connect_data ((dialog), ("delete-event"), (((GCallback
) (preferences_dialog_delete_cb))), (((void*)0)), ((void*)0),
(GConnectFlags) 0)
;
263 ctk_box_pack_start(CTK_BOX(ctk_dialog_get_content_area(CTK_DIALOG(dialog)))((((CtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_dialog_get_content_area(((((CtkDialog*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((dialog)), ((ctk_dialog_get_type ()))))))
))), ((ctk_box_get_type ()))))))
, GET_WIDGET(dialog->priv->ui, "preferences_table")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object(dialog->priv->ui, "preferences_table"
))), ((ctk_widget_get_type ()))))))
, TRUE(!(0)), TRUE(!(0)), 0);
264
265 widget = GET_WIDGET(dialog->priv->ui, "angle_unit_combobox")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object(dialog->priv->ui, "angle_unit_combobox"
))), ((ctk_widget_get_type ()))))))
;
266 model = ctk_combo_box_get_model(CTK_COMBO_BOX(widget)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((widget)), ((ctk_combo_box_get_type ()))))))
);
267 ctk_list_store_append(CTK_LIST_STORE(model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((model)), ((ctk_list_store_get_type ()))))))
, &iter);
268 ctk_list_store_set(CTK_LIST_STORE(model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((model)), ((ctk_list_store_get_type ()))))))
, &iter, 0,
269 /* Preferences dialog: Angle unit combo box: Use degrees for trigonometric calculations */
270 _("Degrees")gettext ("Degrees"), 1, MP_DEGREES, -1);
271 ctk_list_store_append(CTK_LIST_STORE(model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((model)), ((ctk_list_store_get_type ()))))))
, &iter);
272 ctk_list_store_set(CTK_LIST_STORE(model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((model)), ((ctk_list_store_get_type ()))))))
, &iter, 0,
273 /* Preferences dialog: Angle unit combo box: Use radians for trigonometric calculations */
274 _("Radians")gettext ("Radians"), 1, MP_RADIANS, -1);
275 ctk_list_store_append(CTK_LIST_STORE(model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((model)), ((ctk_list_store_get_type ()))))))
, &iter);
276 ctk_list_store_set(CTK_LIST_STORE(model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((model)), ((ctk_list_store_get_type ()))))))
, &iter, 0,
277 /* Preferences dialog: Angle unit combo box: Use gradians for trigonometric calculations */
278 _("Gradians")gettext ("Gradians"), 1, MP_GRADIANS, -1);
279 renderer = ctk_cell_renderer_text_new();
280 ctk_cell_layout_pack_start(CTK_CELL_LAYOUT(widget)((((CtkCellLayout*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((widget)), ((ctk_cell_layout_get_type ()))))))
, renderer, TRUE(!(0)));
281 ctk_cell_layout_add_attribute(CTK_CELL_LAYOUT(widget)((((CtkCellLayout*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((widget)), ((ctk_cell_layout_get_type ()))))))
, renderer, "text", 0);
282
283 widget = GET_WIDGET(dialog->priv->ui, "number_format_combobox")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object(dialog->priv->ui, "number_format_combobox"
))), ((ctk_widget_get_type ()))))))
;
284 model = ctk_combo_box_get_model(CTK_COMBO_BOX(widget)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((widget)), ((ctk_combo_box_get_type ()))))))
);
285 ctk_list_store_append(CTK_LIST_STORE(model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((model)), ((ctk_list_store_get_type ()))))))
, &iter);
286 ctk_list_store_set(CTK_LIST_STORE(model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((model)), ((ctk_list_store_get_type ()))))))
, &iter, 0,
287 /* Number display mode combo: Automatic, e.g. 1234 (or scientific for large number 1.234×10^99) */
288 _("Automatic")gettext ("Automatic"), 1, MP_DISPLAY_FORMAT_AUTOMATIC, -1);
289 ctk_list_store_append(CTK_LIST_STORE(model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((model)), ((ctk_list_store_get_type ()))))))
, &iter);
290 ctk_list_store_set(CTK_LIST_STORE(model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((model)), ((ctk_list_store_get_type ()))))))
, &iter, 0,
291 /* Number display mode combo: Fixed, e.g. 1234 */
292 _("Fixed")gettext ("Fixed"), 1, MP_DISPLAY_FORMAT_FIXED, -1);
293 ctk_list_store_append(CTK_LIST_STORE(model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((model)), ((ctk_list_store_get_type ()))))))
, &iter);
294 ctk_list_store_set(CTK_LIST_STORE(model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((model)), ((ctk_list_store_get_type ()))))))
, &iter, 0,
295 /* Number display mode combo: Scientific, e.g. 1.234×10^3 */
296 _("Scientific")gettext ("Scientific"), 1, MP_DISPLAY_FORMAT_SCIENTIFIC, -1);
297 ctk_list_store_append(CTK_LIST_STORE(model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((model)), ((ctk_list_store_get_type ()))))))
, &iter);
298 ctk_list_store_set(CTK_LIST_STORE(model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((model)), ((ctk_list_store_get_type ()))))))
, &iter, 0,
299 /* Number display mode combo: Engineering, e.g. 1.234k */
300 _("Engineering")gettext ("Engineering"), 1, MP_DISPLAY_FORMAT_ENGINEERING, -1);
301 renderer = ctk_cell_renderer_text_new();
302 ctk_cell_layout_pack_start(CTK_CELL_LAYOUT(widget)((((CtkCellLayout*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((widget)), ((ctk_cell_layout_get_type ()))))))
, renderer, TRUE(!(0)));
303 ctk_cell_layout_add_attribute(CTK_CELL_LAYOUT(widget)((((CtkCellLayout*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((widget)), ((ctk_cell_layout_get_type ()))))))
, renderer, "text", 0);
304
305 widget = GET_WIDGET(dialog->priv->ui, "word_size_combobox")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object(dialog->priv->ui, "word_size_combobox"
))), ((ctk_widget_get_type ()))))))
;
306 renderer = ctk_cell_renderer_text_new();
307 ctk_cell_layout_pack_start(CTK_CELL_LAYOUT(widget)((((CtkCellLayout*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((widget)), ((ctk_cell_layout_get_type ()))))))
, renderer, TRUE(!(0)));
308 ctk_cell_layout_add_attribute(CTK_CELL_LAYOUT(widget)((((CtkCellLayout*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((widget)), ((ctk_cell_layout_get_type ()))))))
, renderer, "text", 0);
309
310 /* Label used in preferences dialog. The %d is replaced by a spinbutton */
311 string = _("Show %d decimal _places")gettext ("Show %d decimal _places");
312 tokens = g_strsplit(string, "%d", 2);
313 widget = GET_WIDGET(dialog->priv->ui, "decimal_places_label1")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object(dialog->priv->ui, "decimal_places_label1"
))), ((ctk_widget_get_type ()))))))
;
314 if (tokens[0])
315 string = g_strstrip(tokens[0])g_strchomp (g_strchug (tokens[0]));
316 else
317 string = "";
318 if (string[0] != '\0')
319 ctk_label_set_text_with_mnemonic(CTK_LABEL(widget)((((CtkLabel*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((widget)), ((ctk_label_get_type ()))))))
, string);
320 else
321 ctk_widget_hide(widget);
322
323 widget = GET_WIDGET(dialog->priv->ui, "decimal_places_label2")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object(dialog->priv->ui, "decimal_places_label2"
))), ((ctk_widget_get_type ()))))))
;
324 if (tokens[0] && tokens[1])
325 string = g_strstrip(tokens[1])g_strchomp (g_strchug (tokens[1]));
326 else
327 string = "";
328 if (string[0] != '\0')
329 ctk_label_set_text_with_mnemonic(CTK_LABEL(widget)((((CtkLabel*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((widget)), ((ctk_label_get_type ()))))))
, string);
330 else
331 ctk_widget_hide(widget);
332
333 g_strfreev(tokens);
334
335 ctk_builder_connect_signals(dialog->priv->ui, dialog);
336
337 g_signal_connect(dialog->priv->equation, "notify::accuracy", G_CALLBACK(accuracy_cb), dialog)g_signal_connect_data ((dialog->priv->equation), ("notify::accuracy"
), (((GCallback) (accuracy_cb))), (dialog), ((void*)0), (GConnectFlags
) 0)
;
338 g_signal_connect(dialog->priv->equation, "notify::show-thousands-separators", G_CALLBACK(show_thousands_separators_cb), dialog)g_signal_connect_data ((dialog->priv->equation), ("notify::show-thousands-separators"
), (((GCallback) (show_thousands_separators_cb))), (dialog), (
(void*)0), (GConnectFlags) 0)
;
339 g_signal_connect(dialog->priv->equation, "notify::show-trailing_zeroes", G_CALLBACK(show_trailing_zeroes_cb), dialog)g_signal_connect_data ((dialog->priv->equation), ("notify::show-trailing_zeroes"
), (((GCallback) (show_trailing_zeroes_cb))), (dialog), ((void
*)0), (GConnectFlags) 0)
;
340 g_signal_connect(dialog->priv->equation, "notify::number-format", G_CALLBACK(number_format_cb), dialog)g_signal_connect_data ((dialog->priv->equation), ("notify::number-format"
), (((GCallback) (number_format_cb))), (dialog), ((void*)0), (
GConnectFlags) 0)
;
341 g_signal_connect(dialog->priv->equation, "notify::word-size", G_CALLBACK(word_size_cb), dialog)g_signal_connect_data ((dialog->priv->equation), ("notify::word-size"
), (((GCallback) (word_size_cb))), (dialog), ((void*)0), (GConnectFlags
) 0)
;
342 g_signal_connect(dialog->priv->equation, "notify::angle-units", G_CALLBACK(angle_unit_cb), dialog)g_signal_connect_data ((dialog->priv->equation), ("notify::angle-units"
), (((GCallback) (angle_unit_cb))), (dialog), ((void*)0), (GConnectFlags
) 0)
;
343
344 accuracy_cb(dialog->priv->equation, NULL((void*)0), dialog);
345 show_thousands_separators_cb(dialog->priv->equation, NULL((void*)0), dialog);
346 show_trailing_zeroes_cb(dialog->priv->equation, NULL((void*)0), dialog);
347 number_format_cb(dialog->priv->equation, NULL((void*)0), dialog);
348 word_size_cb(dialog->priv->equation, NULL((void*)0), dialog);
349 angle_unit_cb(dialog->priv->equation, NULL((void*)0), dialog);
350}
351
352
353static void
354math_preferences_set_property(GObject *object,
355 guint prop_id,
356 const GValue *value,
357 GParamSpec *pspec)
358{
359 MathPreferencesDialog *self;
360
361 self = MATH_PREFERENCES(object)((((MathPreferencesDialog*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((object)), (math_preferences_get_type()))
)))
;
362
363 switch (prop_id) {
364 case PROP_EQUATION:
365 self->priv->equation = g_value_get_object(value);
366 create_gui(self);
367 break;
368 default:
369 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec)do { GObject *_glib__object = (GObject*) ((object)); GParamSpec
*_glib__pspec = (GParamSpec*) ((pspec)); guint _glib__property_id
= ((prop_id)); g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'"
, "math-preferences.c", 369, ("property"), _glib__property_id
, _glib__pspec->name, g_type_name ((((((GTypeClass*) (((GTypeInstance
*) (_glib__pspec))->g_class))->g_type)))), (g_type_name
((((((GTypeClass*) (((GTypeInstance*) (_glib__object))->g_class
))->g_type)))))); } while (0)
;
370 break;
371 }
372}
373
374
375static void
376math_preferences_get_property(GObject *object,
377 guint prop_id,
378 GValue *value,
379 GParamSpec *pspec)
380{
381 MathPreferencesDialog *self;
382
383 self = MATH_PREFERENCES(object)((((MathPreferencesDialog*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((object)), (math_preferences_get_type()))
)))
;
384
385 switch (prop_id) {
386 case PROP_EQUATION:
387 g_value_set_object(value, self->priv->equation);
388 break;
389 default:
390 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec)do { GObject *_glib__object = (GObject*) ((object)); GParamSpec
*_glib__pspec = (GParamSpec*) ((pspec)); guint _glib__property_id
= ((prop_id)); g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'"
, "math-preferences.c", 390, ("property"), _glib__property_id
, _glib__pspec->name, g_type_name ((((((GTypeClass*) (((GTypeInstance
*) (_glib__pspec))->g_class))->g_type)))), (g_type_name
((((((GTypeClass*) (((GTypeInstance*) (_glib__object))->g_class
))->g_type)))))); } while (0)
;
391 break;
392 }
393}
394
395
396static void
397math_preferences_class_init(MathPreferencesDialogClass *klass)
398{
399 GObjectClass *object_class = G_OBJECT_CLASS(klass)((((GObjectClass*) (void *) g_type_check_class_cast ((GTypeClass
*) ((klass)), (((GType) ((20) << (2))))))))
;
400
401 object_class->get_property = math_preferences_get_property;
402 object_class->set_property = math_preferences_set_property;
403
404 g_object_class_install_property(object_class,
405 PROP_EQUATION,
406 g_param_spec_object("equation",
407 "equation",
408 "Equation being configured",
409 math_equation_get_type(),
410 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
411}
412
413
414static void
415math_preferences_init(MathPreferencesDialog *dialog)
416{
417 dialog->priv = math_preferences_get_instance_private (dialog);
418}