/* math-buttons.c generated by valac 0.40.6, the Vala compiler * generated from math-buttons.vala, do not modify */ /* * Copyright (C) 2008-2012 Robert Ancell * * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. See http://www.gnu.org/copyleft/gpl.html the full text of the * license. */ #include #include #include #include "libcalculator.h" #include #include #include #include #include #include #define TYPE_BUTTON_MODE (button_mode_get_type ()) #define TYPE_MATH_BUTTONS (math_buttons_get_type ()) #define MATH_BUTTONS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MATH_BUTTONS, MathButtons)) #define MATH_BUTTONS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MATH_BUTTONS, MathButtonsClass)) #define IS_MATH_BUTTONS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MATH_BUTTONS)) #define IS_MATH_BUTTONS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MATH_BUTTONS)) #define MATH_BUTTONS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MATH_BUTTONS, MathButtonsClass)) typedef struct _MathButtons MathButtons; typedef struct _MathButtonsClass MathButtonsClass; typedef struct _MathButtonsPrivate MathButtonsPrivate; #define TYPE_MATH_CONVERTER (math_converter_get_type ()) #define MATH_CONVERTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MATH_CONVERTER, MathConverter)) #define MATH_CONVERTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MATH_CONVERTER, MathConverterClass)) #define IS_MATH_CONVERTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MATH_CONVERTER)) #define IS_MATH_CONVERTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MATH_CONVERTER)) #define MATH_CONVERTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MATH_CONVERTER, MathConverterClass)) typedef struct _MathConverter MathConverter; typedef struct _MathConverterClass MathConverterClass; enum { MATH_BUTTONS_0_PROPERTY, MATH_BUTTONS_MODE_PROPERTY, MATH_BUTTONS_PROGRAMMING_BASE_PROPERTY, MATH_BUTTONS_NUM_PROPERTIES }; static GParamSpec* math_buttons_properties[MATH_BUTTONS_NUM_PROPERTIES]; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define __g_list_free__g_object_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_object_unref0_ (var), NULL))) #define _g_free0(var) (var = (g_free (var), NULL)) #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) #define TYPE_MATH_VARIABLE_POPOVER (math_variable_popover_get_type ()) #define MATH_VARIABLE_POPOVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MATH_VARIABLE_POPOVER, MathVariablePopover)) #define MATH_VARIABLE_POPOVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MATH_VARIABLE_POPOVER, MathVariablePopoverClass)) #define IS_MATH_VARIABLE_POPOVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MATH_VARIABLE_POPOVER)) #define IS_MATH_VARIABLE_POPOVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MATH_VARIABLE_POPOVER)) #define MATH_VARIABLE_POPOVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MATH_VARIABLE_POPOVER, MathVariablePopoverClass)) typedef struct _MathVariablePopover MathVariablePopover; typedef struct _MathVariablePopoverClass MathVariablePopoverClass; #define TYPE_MATH_FUNCTION_POPOVER (math_function_popover_get_type ()) #define MATH_FUNCTION_POPOVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MATH_FUNCTION_POPOVER, MathFunctionPopover)) #define MATH_FUNCTION_POPOVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MATH_FUNCTION_POPOVER, MathFunctionPopoverClass)) #define IS_MATH_FUNCTION_POPOVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MATH_FUNCTION_POPOVER)) #define IS_MATH_FUNCTION_POPOVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MATH_FUNCTION_POPOVER)) #define MATH_FUNCTION_POPOVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MATH_FUNCTION_POPOVER, MathFunctionPopoverClass)) typedef struct _MathFunctionPopover MathFunctionPopover; typedef struct _MathFunctionPopoverClass MathFunctionPopoverClass; #define _g_variant_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_unref (var), NULL))) typedef enum { BUTTON_MODE_BASIC, BUTTON_MODE_ADVANCED, BUTTON_MODE_FINANCIAL, BUTTON_MODE_PROGRAMMING, BUTTON_MODE_KEYBOARD } ButtonMode; struct _MathButtons { GtkBox parent_instance; MathButtonsPrivate * priv; }; struct _MathButtonsClass { GtkBoxClass parent_class; }; struct _MathButtonsPrivate { MathEquation* equation; ButtonMode _mode; gint _programming_base; MathConverter* converter; GtkBuilder* basic_ui; GtkBuilder* advanced_ui; GtkBuilder* financial_ui; GtkBuilder* programming_ui; GtkWidget* bas_panel; GtkWidget* adv_panel; GtkWidget* fin_panel; GtkWidget* prog_panel; GtkWidget* active_panel; GtkComboBox* base_combo; GtkLabel* base_label; GtkWidget* bit_panel; GList* toggle_bit_buttons; GtkDialog* character_code_dialog; GtkEntry* character_code_entry; GSimpleActionGroup* action_group; }; static gpointer math_buttons_parent_class = NULL; GType button_mode_get_type (void) G_GNUC_CONST; GType math_buttons_get_type (void) G_GNUC_CONST; GType math_converter_get_type (void) G_GNUC_CONST; #define MATH_BUTTONS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_MATH_BUTTONS, MathButtonsPrivate)) static void _g_object_unref0_ (gpointer var); static inline void _g_list_free__g_object_unref0_ (GList* self); static void math_buttons_on_insert (MathButtons* self, GSimpleAction* action, GVariant* param); static void _math_buttons_on_insert_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self); static void math_buttons_on_insert_digit (MathButtons* self, GSimpleAction* action, GVariant* param); static void _math_buttons_on_insert_digit_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self); static void math_buttons_on_subtract (MathButtons* self, GSimpleAction* action, GVariant* param); static void _math_buttons_on_subtract_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self); static void math_buttons_on_square (MathButtons* self, GSimpleAction* action, GVariant* param); static void _math_buttons_on_square_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self); static void math_buttons_on_undo (MathButtons* self, GSimpleAction* action, GVariant* param); static void _math_buttons_on_undo_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self); static void math_buttons_on_solve (MathButtons* self, GSimpleAction* action, GVariant* param); static void _math_buttons_on_solve_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self); static void math_buttons_on_clear (MathButtons* self, GSimpleAction* action, GVariant* param); static void _math_buttons_on_clear_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self); static void math_buttons_on_factorize (MathButtons* self, GSimpleAction* action, GVariant* param); static void _math_buttons_on_factorize_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self); static void math_buttons_on_insert_exponent (MathButtons* self, GSimpleAction* action, GVariant* param); static void _math_buttons_on_insert_exponent_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self); static void math_buttons_on_bitshift (MathButtons* self, GSimpleAction* action, GVariant* param); static void _math_buttons_on_bitshift_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self); static void math_buttons_on_toggle_bit (MathButtons* self, GSimpleAction* action, GVariant* param); static void _math_buttons_on_toggle_bit_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self); static void math_buttons_on_insert_character (MathButtons* self, GSimpleAction* action, GVariant* param); static void _math_buttons_on_insert_character_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self); static void math_buttons_on_insert_numeric_point (MathButtons* self, GSimpleAction* action, GVariant* param); static void _math_buttons_on_insert_numeric_point_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self); static void math_buttons_on_set_number_mode (MathButtons* self, GSimpleAction* action, GVariant* param); static void _math_buttons_on_set_number_mode_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self); static void math_buttons_on_launch_finc_dialog (MathButtons* self, GSimpleAction* action, GVariant* param); static void _math_buttons_on_launch_finc_dialog_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self); MathButtons* math_buttons_new (MathEquation* equation); MathButtons* math_buttons_construct (GType object_type, MathEquation* equation); static void math_buttons_load_buttons (MathButtons* self); static void _math_buttons_load_buttons_gtk_widget_show (GtkWidget* _sender, gpointer self); static void __lambda22_ (MathButtons* self, GParamSpec* pspec); static void math_buttons_update_bit_panel (MathButtons* self); static void ___lambda22__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self); static void __lambda23_ (MathButtons* self, GParamSpec* pspec); static void math_buttons_number_mode_changed_cb (MathButtons* self); static void ___lambda23__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self); static void __lambda24_ (MathButtons* self, GParamSpec* pspec); static void ___lambda24__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self); static void __lambda25_ (MathButtons* self, GParamSpec* pspec); static void ___lambda25__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self); static void math_buttons_load_finc_dialogs (MathButtons* self); static void math_buttons_load_finc_dialog (MathButtons* self, const gchar* name, gchar** entry_names, int entry_names_length1, FinancialDialog function); static void math_buttons_finc_response_cb (MathButtons* self, GtkWidget* widget, gint response_id); static void _math_buttons_finc_response_cb_gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self); static void math_buttons_finc_activate_cb (MathButtons* self, GtkWidget* widget); static void _math_buttons_finc_activate_cb_gtk_entry_activate (GtkEntry* _sender, gpointer self); static void math_buttons_base_combobox_changed_cb (MathButtons* self, GtkComboBox* combo); void math_buttons_set_programming_base (MathButtons* self, gint value); static void math_buttons_base_changed_cb (MathButtons* self); ButtonMode math_buttons_get_mode (MathButtons* self); static GtkWidget* math_buttons_load_mode (MathButtons* self, ButtonMode mode); static GMenu* math_buttons_create_shift_menu (MathButtons* self, gboolean shift_left); MathVariablePopover* math_variable_popover_new (MathEquation* equation); MathVariablePopover* math_variable_popover_construct (GType object_type, MathEquation* equation); GType math_variable_popover_get_type (void) G_GNUC_CONST; MathFunctionPopover* math_function_popover_new (MathEquation* equation); MathFunctionPopover* math_function_popover_construct (GType object_type, MathEquation* equation); GType math_function_popover_get_type (void) G_GNUC_CONST; static void math_buttons_character_code_dialog_response_cb (MathButtons* self, GtkWidget* dialog, gint response_id); static void _math_buttons_character_code_dialog_response_cb_gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self); static gboolean math_buttons_character_code_dialog_delete_cb (MathButtons* self, GtkWidget* dialog, GdkEventAny* event); static gboolean _math_buttons_character_code_dialog_delete_cb_gtk_widget_delete_event (GtkWidget* _sender, GdkEventAny* event, gpointer self); static void math_buttons_character_code_dialog_activate_cb (MathButtons* self, GtkWidget* entry); static void _math_buttons_character_code_dialog_activate_cb_gtk_entry_activate (GtkEntry* _sender, gpointer self); static void _math_buttons_base_combobox_changed_cb_gtk_combo_box_changed (GtkComboBox* _sender, gpointer self); static void ___lambda21_ (MathButtons* self, GParamSpec* pspec); static void ____lambda21__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self); static void math_buttons_converter_changed_cb (MathButtons* self); void math_converter_get_conversion (MathConverter* self, Unit* * from_unit, Unit* * to_unit); MathConverter* math_converter_new (MathEquation* equation); MathConverter* math_converter_construct (GType object_type, MathEquation* equation); static void _math_buttons_converter_changed_cb_math_converter_changed (MathConverter* _sender, gpointer self); static gchar** _vala_array_dup1 (gchar** self, int length); static gchar** _vala_array_dup2 (gchar** self, int length); static gchar** _vala_array_dup3 (gchar** self, int length); static gchar** _vala_array_dup4 (gchar** self, int length); static gchar** _vala_array_dup5 (gchar** self, int length); static gchar** _vala_array_dup6 (gchar** self, int length); static gchar** _vala_array_dup7 (gchar** self, int length); static gchar** _vala_array_dup8 (gchar** self, int length); static gchar** _vala_array_dup9 (gchar** self, int length); static gchar** _vala_array_dup10 (gchar** self, int length); static GVariant* _variant_new2 (const gchar* value); static GVariant* _variant_new3 (const gchar* value); static GVariant* _variant_new4 (const gchar* value); void math_buttons_set_mode (MathButtons* self, ButtonMode value); void math_converter_set_category (MathConverter* self, const gchar* category); void math_converter_set_conversion (MathConverter* self, const gchar* unit_a, const gchar* unit_b); gint math_buttons_get_programming_base (MathButtons* self); static void math_buttons_finalize (GObject * obj); static void _vala_math_buttons_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec); static void _vala_math_buttons_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec); static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); static const gchar* MATH_BUTTONS_ctrm_entries[3] = {"ctrm_pint", "ctrm_fv", "ctrm_pv"}; static const gchar* MATH_BUTTONS_ddb_entries[3] = {"ddb_cost", "ddb_life", "ddb_period"}; static const gchar* MATH_BUTTONS_fv_entries[3] = {"fv_pmt", "fv_pint", "fv_n"}; static const gchar* MATH_BUTTONS_gpm_entries[2] = {"gpm_cost", "gpm_margin"}; static const gchar* MATH_BUTTONS_pmt_entries[3] = {"pmt_prin", "pmt_pint", "pmt_n"}; static const gchar* MATH_BUTTONS_pv_entries[3] = {"pv_pmt", "pv_pint", "pv_n"}; static const gchar* MATH_BUTTONS_rate_entries[3] = {"rate_fv", "rate_pv", "rate_n"}; static const gchar* MATH_BUTTONS_sln_entries[3] = {"sln_cost", "sln_salvage", "sln_life"}; static const gchar* MATH_BUTTONS_syd_entries[4] = {"syd_cost", "syd_salvage", "syd_life", "syd_period"}; static const gchar* MATH_BUTTONS_term_entries[3] = {"term_pmt", "term_fv", "term_pint"}; static const GActionEntry MATH_BUTTONS_action_entries[15] = {{"insert-general", _math_buttons_on_insert_gsimple_action_activate_callback, "s"}, {"insert-digit", _math_buttons_on_insert_digit_gsimple_action_activate_callback, "i"}, {"subtract", _math_buttons_on_subtract_gsimple_action_activate_callback}, {"square", _math_buttons_on_square_gsimple_action_activate_callback}, {"undo", _math_buttons_on_undo_gsimple_action_activate_callback}, {"solve", _math_buttons_on_solve_gsimple_action_activate_callback}, {"clear", _math_buttons_on_clear_gsimple_action_activate_callback}, {"factorize", _math_buttons_on_factorize_gsimple_action_activate_callback}, {"insert-exponent", _math_buttons_on_insert_exponent_gsimple_action_activate_callback}, {"bitshift", _math_buttons_on_bitshift_gsimple_action_activate_callback, "i"}, {"toggle-bit", _math_buttons_on_toggle_bit_gsimple_action_activate_callback, "i"}, {"insert-character", _math_buttons_on_insert_character_gsimple_action_activate_callback}, {"insert-numeric-point", _math_buttons_on_insert_numeric_point_gsimple_action_activate_callback}, {"set-number-mode", _math_buttons_on_set_number_mode_gsimple_action_activate_callback, "s", "'normal'"}, {"launch-finc-dialog", _math_buttons_on_launch_finc_dialog_gsimple_action_activate_callback, "s"}}; GType button_mode_get_type (void) { static volatile gsize button_mode_type_id__volatile = 0; if (g_once_init_enter (&button_mode_type_id__volatile)) { static const GEnumValue values[] = {{BUTTON_MODE_BASIC, "BUTTON_MODE_BASIC", "basic"}, {BUTTON_MODE_ADVANCED, "BUTTON_MODE_ADVANCED", "advanced"}, {BUTTON_MODE_FINANCIAL, "BUTTON_MODE_FINANCIAL", "financial"}, {BUTTON_MODE_PROGRAMMING, "BUTTON_MODE_PROGRAMMING", "programming"}, {BUTTON_MODE_KEYBOARD, "BUTTON_MODE_KEYBOARD", "keyboard"}, {0, NULL, NULL}}; GType button_mode_type_id; button_mode_type_id = g_enum_register_static ("ButtonMode", values); g_once_init_leave (&button_mode_type_id__volatile, button_mode_type_id); } return button_mode_type_id__volatile; } static void _g_object_unref0_ (gpointer var) { (var == NULL) ? NULL : (var = (g_object_unref (var), NULL)); } static inline void _g_list_free__g_object_unref0_ (GList* self) { g_list_free_full (self, (GDestroyNotify) _g_object_unref0_); } static void _math_buttons_on_insert_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) { math_buttons_on_insert ((MathButtons*) self, action, parameter); } static void _math_buttons_on_insert_digit_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) { math_buttons_on_insert_digit ((MathButtons*) self, action, parameter); } static void _math_buttons_on_subtract_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) { math_buttons_on_subtract ((MathButtons*) self, action, parameter); } static void _math_buttons_on_square_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) { math_buttons_on_square ((MathButtons*) self, action, parameter); } static void _math_buttons_on_undo_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) { math_buttons_on_undo ((MathButtons*) self, action, parameter); } static void _math_buttons_on_solve_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) { math_buttons_on_solve ((MathButtons*) self, action, parameter); } static void _math_buttons_on_clear_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) { math_buttons_on_clear ((MathButtons*) self, action, parameter); } static void _math_buttons_on_factorize_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) { math_buttons_on_factorize ((MathButtons*) self, action, parameter); } static void _math_buttons_on_insert_exponent_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) { math_buttons_on_insert_exponent ((MathButtons*) self, action, parameter); } static void _math_buttons_on_bitshift_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) { math_buttons_on_bitshift ((MathButtons*) self, action, parameter); } static void _math_buttons_on_toggle_bit_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) { math_buttons_on_toggle_bit ((MathButtons*) self, action, parameter); } static void _math_buttons_on_insert_character_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) { math_buttons_on_insert_character ((MathButtons*) self, action, parameter); } static void _math_buttons_on_insert_numeric_point_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) { math_buttons_on_insert_numeric_point ((MathButtons*) self, action, parameter); } static void _math_buttons_on_set_number_mode_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) { math_buttons_on_set_number_mode ((MathButtons*) self, action, parameter); } static void _math_buttons_on_launch_finc_dialog_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) { math_buttons_on_launch_finc_dialog ((MathButtons*) self, action, parameter); } static void _math_buttons_load_buttons_gtk_widget_show (GtkWidget* _sender, gpointer self) { math_buttons_load_buttons ((MathButtons*) self); } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } static void __lambda22_ (MathButtons* self, GParamSpec* pspec) { g_return_if_fail (pspec != NULL); math_buttons_update_bit_panel (self); } static void ___lambda22__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) { __lambda22_ ((MathButtons*) self, pspec); } static void __lambda23_ (MathButtons* self, GParamSpec* pspec) { g_return_if_fail (pspec != NULL); math_buttons_number_mode_changed_cb (self); } static void ___lambda23__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) { __lambda23_ ((MathButtons*) self, pspec); } static void __lambda24_ (MathButtons* self, GParamSpec* pspec) { g_return_if_fail (pspec != NULL); math_buttons_update_bit_panel (self); } static void ___lambda24__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) { __lambda24_ ((MathButtons*) self, pspec); } static void __lambda25_ (MathButtons* self, GParamSpec* pspec) { g_return_if_fail (pspec != NULL); math_buttons_update_bit_panel (self); } static void ___lambda25__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) { __lambda25_ ((MathButtons*) self, pspec); } MathButtons* math_buttons_construct (GType object_type, MathEquation* equation) { MathButtons * self = NULL; MathEquation* _tmp0_; GSimpleActionGroup* _tmp1_; GSimpleActionGroup* _tmp2_; g_return_val_if_fail (equation != NULL, NULL); self = (MathButtons*) g_object_new (object_type, "orientation", GTK_ORIENTATION_VERTICAL, "vexpand-set", TRUE, NULL); gtk_box_set_spacing ((GtkBox*) self, 6); g_signal_connect_object ((GtkWidget*) self, "show", (GCallback) _math_buttons_load_buttons_gtk_widget_show, self, 0); _tmp0_ = _g_object_ref0 (equation); _g_object_unref0 (self->priv->equation); self->priv->equation = _tmp0_; _tmp1_ = self->priv->action_group; g_action_map_add_action_entries ((GActionMap*) _tmp1_, MATH_BUTTONS_action_entries, G_N_ELEMENTS (MATH_BUTTONS_action_entries), self); _tmp2_ = self->priv->action_group; gtk_widget_insert_action_group ((GtkWidget*) self, "cal", (GActionGroup*) _tmp2_); g_signal_connect_object ((GObject*) equation, "notify::display", (GCallback) ___lambda22__g_object_notify, self, 0); g_signal_connect_object ((GObject*) equation, "notify::number-mode", (GCallback) ___lambda23__g_object_notify, self, 0); g_signal_connect_object ((GObject*) equation, "notify::angle-units", (GCallback) ___lambda24__g_object_notify, self, 0); g_signal_connect_object ((GObject*) equation, "notify::number-format", (GCallback) ___lambda25__g_object_notify, self, 0); math_buttons_number_mode_changed_cb (self); math_buttons_update_bit_panel (self); return self; } MathButtons* math_buttons_new (MathEquation* equation) { return math_buttons_construct (TYPE_MATH_BUTTONS, equation); } static void math_buttons_load_finc_dialogs (MathButtons* self) { g_return_if_fail (self != NULL); math_buttons_load_finc_dialog (self, "ctrm_dialog", MATH_BUTTONS_ctrm_entries, G_N_ELEMENTS (MATH_BUTTONS_ctrm_entries), FINANCIAL_DIALOG_CTRM_DIALOG); math_buttons_load_finc_dialog (self, "ddb_dialog", MATH_BUTTONS_ddb_entries, G_N_ELEMENTS (MATH_BUTTONS_ddb_entries), FINANCIAL_DIALOG_DDB_DIALOG); math_buttons_load_finc_dialog (self, "fv_dialog", MATH_BUTTONS_fv_entries, G_N_ELEMENTS (MATH_BUTTONS_fv_entries), FINANCIAL_DIALOG_FV_DIALOG); math_buttons_load_finc_dialog (self, "gpm_dialog", MATH_BUTTONS_gpm_entries, G_N_ELEMENTS (MATH_BUTTONS_gpm_entries), FINANCIAL_DIALOG_GPM_DIALOG); math_buttons_load_finc_dialog (self, "pmt_dialog", MATH_BUTTONS_pmt_entries, G_N_ELEMENTS (MATH_BUTTONS_pmt_entries), FINANCIAL_DIALOG_PMT_DIALOG); math_buttons_load_finc_dialog (self, "pv_dialog", MATH_BUTTONS_pv_entries, G_N_ELEMENTS (MATH_BUTTONS_pv_entries), FINANCIAL_DIALOG_PV_DIALOG); math_buttons_load_finc_dialog (self, "rate_dialog", MATH_BUTTONS_rate_entries, G_N_ELEMENTS (MATH_BUTTONS_rate_entries), FINANCIAL_DIALOG_RATE_DIALOG); math_buttons_load_finc_dialog (self, "sln_dialog", MATH_BUTTONS_sln_entries, G_N_ELEMENTS (MATH_BUTTONS_sln_entries), FINANCIAL_DIALOG_SLN_DIALOG); math_buttons_load_finc_dialog (self, "syd_dialog", MATH_BUTTONS_syd_entries, G_N_ELEMENTS (MATH_BUTTONS_syd_entries), FINANCIAL_DIALOG_SYD_DIALOG); math_buttons_load_finc_dialog (self, "term_dialog", MATH_BUTTONS_term_entries, G_N_ELEMENTS (MATH_BUTTONS_term_entries), FINANCIAL_DIALOG_TERM_DIALOG); } static void _math_buttons_finc_response_cb_gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self) { math_buttons_finc_response_cb ((MathButtons*) self, _sender, response_id); } static void _math_buttons_finc_activate_cb_gtk_entry_activate (GtkEntry* _sender, gpointer self) { math_buttons_finc_activate_cb ((MathButtons*) self, _sender); } static void math_buttons_load_finc_dialog (MathButtons* self, const gchar* name, gchar** entry_names, int entry_names_length1, FinancialDialog function) { GtkDialog* dialog = NULL; GtkBuilder* _tmp0_; GObject* _tmp1_; GtkDialog* _tmp2_; GtkDialog* _tmp3_; GtkDialog* _tmp4_; g_return_if_fail (self != NULL); g_return_if_fail (name != NULL); _tmp0_ = self->priv->financial_ui; _tmp1_ = gtk_builder_get_object (_tmp0_, name); _tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, gtk_dialog_get_type ()) ? ((GtkDialog*) _tmp1_) : NULL); dialog = _tmp2_; _tmp3_ = dialog; g_object_set_data_full ((GObject*) _tmp3_, "finc-function", (gpointer) ((gintptr) ((gint) function)), NULL); _tmp4_ = dialog; g_signal_connect_object (_tmp4_, "response", (GCallback) _math_buttons_finc_response_cb_gtk_dialog_response, self, 0); { gint i = 0; i = 0; { gboolean _tmp5_ = FALSE; _tmp5_ = TRUE; while (TRUE) { gint _tmp7_; GtkEntry* entry = NULL; GtkBuilder* _tmp8_; gint _tmp9_; const gchar* _tmp10_; GObject* _tmp11_; GtkEntry* _tmp12_; gint _tmp13_; GtkEntry* _tmp20_; if (!_tmp5_) { gint _tmp6_; _tmp6_ = i; i = _tmp6_ + 1; } _tmp5_ = FALSE; _tmp7_ = i; if (!(_tmp7_ < entry_names_length1)) { break; } _tmp8_ = self->priv->financial_ui; _tmp9_ = i; _tmp10_ = entry_names[_tmp9_]; _tmp11_ = gtk_builder_get_object (_tmp8_, _tmp10_); _tmp12_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp11_, gtk_entry_get_type ()) ? ((GtkEntry*) _tmp11_) : NULL); entry = _tmp12_; _tmp13_ = i; if (_tmp13_ != (entry_names_length1 - 1)) { GtkEntry* _tmp14_; GtkBuilder* _tmp15_; gint _tmp16_; const gchar* _tmp17_; GObject* _tmp18_; GtkEntry* _tmp19_; _tmp14_ = entry; _tmp15_ = self->priv->financial_ui; _tmp16_ = i; _tmp17_ = entry_names[_tmp16_ + 1]; _tmp18_ = gtk_builder_get_object (_tmp15_, _tmp17_); _tmp19_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp18_, gtk_entry_get_type ()) ? ((GtkEntry*) _tmp18_) : NULL); g_object_set_data_full ((GObject*) _tmp14_, "next-entry", _tmp19_, g_object_unref); } _tmp20_ = entry; g_signal_connect_object (_tmp20_, "activate", (GCallback) _math_buttons_finc_activate_cb_gtk_entry_activate, self, 0); _g_object_unref0 (entry); } } } _g_object_unref0 (dialog); } static void math_buttons_on_insert (MathButtons* self, GSimpleAction* action, GVariant* param) { MathEquation* _tmp0_; const gchar* _tmp1_; g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); _tmp0_ = self->priv->equation; _tmp1_ = g_variant_get_string (param, NULL); math_equation_insert (_tmp0_, _tmp1_); } static void math_buttons_on_insert_digit (MathButtons* self, GSimpleAction* action, GVariant* param) { MathEquation* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); _tmp0_ = self->priv->equation; math_equation_insert_digit (_tmp0_, (guint) g_variant_get_int32 (param)); } static void math_buttons_on_subtract (MathButtons* self, GSimpleAction* action, GVariant* param) { MathEquation* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); _tmp0_ = self->priv->equation; math_equation_insert_subtract (_tmp0_); } static void math_buttons_on_square (MathButtons* self, GSimpleAction* action, GVariant* param) { MathEquation* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); _tmp0_ = self->priv->equation; math_equation_insert_square (_tmp0_); } static void math_buttons_on_undo (MathButtons* self, GSimpleAction* action, GVariant* param) { MathEquation* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); _tmp0_ = self->priv->equation; gtk_source_buffer_undo ((GtkSourceBuffer*) _tmp0_); } static void math_buttons_on_solve (MathButtons* self, GSimpleAction* action, GVariant* param) { MathEquation* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); _tmp0_ = self->priv->equation; math_equation_solve (_tmp0_); } static void math_buttons_on_clear (MathButtons* self, GSimpleAction* action, GVariant* param) { MathEquation* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); _tmp0_ = self->priv->equation; math_equation_clear (_tmp0_); } static void math_buttons_on_factorize (MathButtons* self, GSimpleAction* action, GVariant* param) { MathEquation* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); _tmp0_ = self->priv->equation; math_equation_factorize (_tmp0_); } static void math_buttons_on_insert_exponent (MathButtons* self, GSimpleAction* action, GVariant* param) { MathEquation* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); _tmp0_ = self->priv->equation; math_equation_insert_exponent (_tmp0_); } static void math_buttons_on_bitshift (MathButtons* self, GSimpleAction* action, GVariant* param) { MathEquation* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); _tmp0_ = self->priv->equation; math_equation_shift (_tmp0_, (gint) g_variant_get_int32 (param)); } static void math_buttons_on_insert_numeric_point (MathButtons* self, GSimpleAction* action, GVariant* param) { MathEquation* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); _tmp0_ = self->priv->equation; math_equation_insert_numeric_point (_tmp0_); } static void math_buttons_update_bit_panel (MathButtons* self) { GtkWidget* _tmp0_; Number* x = NULL; MathEquation* _tmp1_; Number* _tmp2_; Number* _tmp3_; guint64 bits = 0ULL; gboolean enabled = FALSE; Number* _tmp4_; gboolean _tmp5_; GtkWidget* _tmp16_; gboolean _tmp17_; GtkLabel* _tmp18_; gboolean _tmp19_; gboolean _tmp20_; gint i = 0; GList* _tmp21_; gint number_base = 0; MathEquation* _tmp30_; gint _tmp31_; gint _tmp32_; gchar* label = NULL; gchar* _tmp33_; gint _tmp34_; gint _tmp40_; gint _tmp49_; GtkLabel* _tmp58_; const gchar* _tmp59_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->bit_panel; if (_tmp0_ == NULL) { return; } _tmp1_ = self->priv->equation; _tmp2_ = math_equation_get_number (_tmp1_); _tmp3_ = _tmp2_; x = _tmp3_; bits = (guint64) 0; _tmp4_ = x; enabled = _tmp4_ != NULL; _tmp5_ = enabled; if (_tmp5_) { Number* max = NULL; Number* _tmp6_; Number* fraction = NULL; Number* _tmp7_; Number* _tmp8_; gboolean _tmp9_ = FALSE; gboolean _tmp10_ = FALSE; Number* _tmp11_; _tmp6_ = number_new_unsigned_integer (G_MAXUINT64, (guint64) 0); max = _tmp6_; _tmp7_ = x; _tmp8_ = number_fractional_part (_tmp7_); fraction = _tmp8_; _tmp11_ = x; if (number_is_negative (_tmp11_)) { _tmp10_ = TRUE; } else { Number* _tmp12_; Number* _tmp13_; _tmp12_ = x; _tmp13_ = max; _tmp10_ = number_compare (_tmp12_, _tmp13_) > 0; } if (_tmp10_) { _tmp9_ = TRUE; } else { Number* _tmp14_; _tmp14_ = fraction; _tmp9_ = !number_is_zero (_tmp14_); } if (_tmp9_) { enabled = FALSE; } else { Number* _tmp15_; _tmp15_ = x; bits = number_to_unsigned_integer (_tmp15_); } _g_object_unref0 (fraction); _g_object_unref0 (max); } _tmp16_ = self->priv->bit_panel; _tmp17_ = enabled; gtk_widget_set_sensitive (_tmp16_, _tmp17_); _tmp18_ = self->priv->base_label; _tmp19_ = enabled; gtk_widget_set_sensitive ((GtkWidget*) _tmp18_, _tmp19_); _tmp20_ = enabled; if (!_tmp20_) { _g_object_unref0 (x); return; } i = 0; _tmp21_ = self->priv->toggle_bit_buttons; { GList* button_collection = NULL; GList* button_it = NULL; button_collection = _tmp21_; for (button_it = button_collection; button_it != NULL; button_it = button_it->next) { GtkButton* _tmp22_; GtkButton* button = NULL; _tmp22_ = _g_object_ref0 ((GtkButton*) button_it->data); button = _tmp22_; { gchar* text = NULL; gchar* _tmp23_; guint64 _tmp24_; gint _tmp25_; GtkButton* _tmp27_; const gchar* _tmp28_; gint _tmp29_; _tmp23_ = g_strdup ("0"); text = _tmp23_; _tmp24_ = bits; _tmp25_ = i; if ((_tmp24_ & (1ULL << _tmp25_)) != ((guint64) 0)) { gchar* _tmp26_; _tmp26_ = g_strdup ("1"); _g_free0 (text); text = _tmp26_; } _tmp27_ = button; _tmp28_ = text; gtk_button_set_label (_tmp27_, _tmp28_); _tmp29_ = i; i = _tmp29_ + 1; _g_free0 (text); _g_object_unref0 (button); } } } _tmp30_ = self->priv->equation; _tmp31_ = math_equation_get_number_base (_tmp30_); _tmp32_ = _tmp31_; number_base = _tmp32_; _tmp33_ = g_strdup (""); label = _tmp33_; _tmp34_ = number_base; if (_tmp34_ != 8) { const gchar* _tmp35_; guint64 _tmp36_; gchar* _tmp37_; gchar* _tmp38_; gchar* _tmp39_; _tmp35_ = label; _tmp36_ = bits; _tmp37_ = g_strdup_printf ("%llo₈", _tmp36_); _tmp38_ = _tmp37_; _tmp39_ = g_strconcat (_tmp35_, _tmp38_, NULL); _g_free0 (label); label = _tmp39_; _g_free0 (_tmp38_); } _tmp40_ = number_base; if (_tmp40_ != 10) { const gchar* _tmp41_; const gchar* _tmp44_; guint64 _tmp45_; gchar* _tmp46_; gchar* _tmp47_; gchar* _tmp48_; _tmp41_ = label; if (g_strcmp0 (_tmp41_, "") != 0) { const gchar* _tmp42_; gchar* _tmp43_; _tmp42_ = label; _tmp43_ = g_strconcat (_tmp42_, " = ", NULL); _g_free0 (label); label = _tmp43_; } _tmp44_ = label; _tmp45_ = bits; _tmp46_ = g_strdup_printf ("%llu₁₀", _tmp45_); _tmp47_ = _tmp46_; _tmp48_ = g_strconcat (_tmp44_, _tmp47_, NULL); _g_free0 (label); label = _tmp48_; _g_free0 (_tmp47_); } _tmp49_ = number_base; if (_tmp49_ != 16) { const gchar* _tmp50_; const gchar* _tmp53_; guint64 _tmp54_; gchar* _tmp55_; gchar* _tmp56_; gchar* _tmp57_; _tmp50_ = label; if (g_strcmp0 (_tmp50_, "") != 0) { const gchar* _tmp51_; gchar* _tmp52_; _tmp51_ = label; _tmp52_ = g_strconcat (_tmp51_, " = ", NULL); _g_free0 (label); label = _tmp52_; } _tmp53_ = label; _tmp54_ = bits; _tmp55_ = g_strdup_printf ("%llX₁₆", _tmp54_); _tmp56_ = _tmp55_; _tmp57_ = g_strconcat (_tmp53_, _tmp56_, NULL); _g_free0 (label); label = _tmp57_; _g_free0 (_tmp56_); } _tmp58_ = self->priv->base_label; _tmp59_ = label; gtk_label_set_text (_tmp58_, _tmp59_); _g_free0 (label); _g_object_unref0 (x); } static void math_buttons_base_combobox_changed_cb (MathButtons* self, GtkComboBox* combo) { const gchar* _tmp0_; const gchar* _tmp1_; g_return_if_fail (self != NULL); g_return_if_fail (combo != NULL); _tmp0_ = gtk_combo_box_get_active_id (combo); _tmp1_ = _tmp0_; math_buttons_set_programming_base (self, atoi (_tmp1_)); } static void math_buttons_base_changed_cb (MathButtons* self) { ButtonMode _tmp0_; ButtonMode _tmp1_; MathEquation* _tmp2_; gint _tmp3_; gint _tmp4_; GtkComboBox* _tmp5_; gint _tmp6_; gchar* _tmp7_; gchar* _tmp8_; g_return_if_fail (self != NULL); _tmp0_ = math_buttons_get_mode (self); _tmp1_ = _tmp0_; if (_tmp1_ != BUTTON_MODE_PROGRAMMING) { return; } _tmp2_ = self->priv->equation; _tmp3_ = math_equation_get_number_base (_tmp2_); _tmp4_ = _tmp3_; self->priv->_programming_base = _tmp4_; _tmp5_ = self->priv->base_combo; _tmp6_ = self->priv->_programming_base; _tmp7_ = g_strdup_printf ("%i", _tmp6_); _tmp8_ = _tmp7_; gtk_combo_box_set_active_id (_tmp5_, _tmp8_); _g_free0 (_tmp8_); math_buttons_update_bit_panel (self); } static gchar* g_unichar_to_string (gunichar self) { gchar* result = NULL; gchar* str = NULL; gchar* _tmp0_; const gchar* _tmp1_; _tmp0_ = g_new0 (gchar, 7); str = (gchar*) _tmp0_; _tmp1_ = str; g_unichar_to_utf8 (self, _tmp1_); result = str; return result; } static void _math_buttons_character_code_dialog_response_cb_gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self) { math_buttons_character_code_dialog_response_cb ((MathButtons*) self, _sender, response_id); } static gboolean _math_buttons_character_code_dialog_delete_cb_gtk_widget_delete_event (GtkWidget* _sender, GdkEventAny* event, gpointer self) { gboolean result; result = math_buttons_character_code_dialog_delete_cb ((MathButtons*) self, _sender, event); return result; } static void _math_buttons_character_code_dialog_activate_cb_gtk_entry_activate (GtkEntry* _sender, gpointer self) { math_buttons_character_code_dialog_activate_cb ((MathButtons*) self, _sender); } static void _math_buttons_base_combobox_changed_cb_gtk_combo_box_changed (GtkComboBox* _sender, gpointer self) { math_buttons_base_combobox_changed_cb ((MathButtons*) self, _sender); } static void ___lambda21_ (MathButtons* self, GParamSpec* pspec) { g_return_if_fail (pspec != NULL); math_buttons_base_changed_cb (self); } static void ____lambda21__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) { ___lambda21_ ((MathButtons*) self, pspec); } static GtkWidget* math_buttons_load_mode (MathButtons* self, ButtonMode mode) { GtkWidget* result = NULL; GtkBuilder* builder = NULL; gchar* builder_resource = NULL; GtkWidget* panel = NULL; GtkBuilder* _tmp33_; GObject* _tmp34_; GtkWidget* _tmp35_; GtkWidget* _tmp36_; GtkButton* button = NULL; GtkBuilder* _tmp45_; GObject* _tmp46_; GtkButton* _tmp47_; GtkButton* _tmp48_; GtkMenuButton* menu_button = NULL; GtkBuilder* _tmp55_; GObject* _tmp56_; GtkMenuButton* _tmp57_; GtkMenuButton* _tmp58_; GtkBuilder* _tmp62_; GObject* _tmp63_; GtkMenuButton* _tmp64_; GtkMenuButton* _tmp65_; GtkBuilder* _tmp69_; GObject* _tmp70_; GtkMenuButton* _tmp71_; GtkMenuButton* _tmp72_; GtkBuilder* _tmp77_; GObject* _tmp78_; GtkMenuButton* _tmp79_; GtkMenuButton* _tmp80_; GtkBuilder* _tmp115_; GError * _inner_error_ = NULL; g_return_val_if_fail (self != NULL, NULL); switch (mode) { default: case BUTTON_MODE_BASIC: { GtkWidget* _tmp0_; GtkBuilder* _tmp3_; GtkBuilder* _tmp4_; GtkBuilder* _tmp5_; gchar* _tmp6_; _tmp0_ = self->priv->bas_panel; if (_tmp0_ != NULL) { GtkWidget* _tmp1_; GtkWidget* _tmp2_; _tmp1_ = self->priv->bas_panel; _tmp2_ = _g_object_ref0 (_tmp1_); result = _tmp2_; _g_free0 (builder_resource); _g_object_unref0 (builder); return result; } _tmp3_ = gtk_builder_new (); _g_object_unref0 (self->priv->basic_ui); self->priv->basic_ui = _tmp3_; _tmp4_ = self->priv->basic_ui; _tmp5_ = _g_object_ref0 (_tmp4_); _g_object_unref0 (builder); builder = _tmp5_; _tmp6_ = g_strdup ("buttons-basic.ui"); _g_free0 (builder_resource); builder_resource = _tmp6_; break; } case BUTTON_MODE_ADVANCED: { GtkWidget* _tmp7_; GtkBuilder* _tmp10_; GtkBuilder* _tmp11_; GtkBuilder* _tmp12_; gchar* _tmp13_; _tmp7_ = self->priv->adv_panel; if (_tmp7_ != NULL) { GtkWidget* _tmp8_; GtkWidget* _tmp9_; _tmp8_ = self->priv->adv_panel; _tmp9_ = _g_object_ref0 (_tmp8_); result = _tmp9_; _g_free0 (builder_resource); _g_object_unref0 (builder); return result; } _tmp10_ = gtk_builder_new (); _g_object_unref0 (self->priv->advanced_ui); self->priv->advanced_ui = _tmp10_; _tmp11_ = self->priv->advanced_ui; _tmp12_ = _g_object_ref0 (_tmp11_); _g_object_unref0 (builder); builder = _tmp12_; _tmp13_ = g_strdup ("buttons-advanced.ui"); _g_free0 (builder_resource); builder_resource = _tmp13_; break; } case BUTTON_MODE_FINANCIAL: { GtkWidget* _tmp14_; GtkBuilder* _tmp17_; GtkBuilder* _tmp18_; GtkBuilder* _tmp19_; gchar* _tmp20_; _tmp14_ = self->priv->fin_panel; if (_tmp14_ != NULL) { GtkWidget* _tmp15_; GtkWidget* _tmp16_; _tmp15_ = self->priv->fin_panel; _tmp16_ = _g_object_ref0 (_tmp15_); result = _tmp16_; _g_free0 (builder_resource); _g_object_unref0 (builder); return result; } _tmp17_ = gtk_builder_new (); _g_object_unref0 (self->priv->financial_ui); self->priv->financial_ui = _tmp17_; _tmp18_ = self->priv->financial_ui; _tmp19_ = _g_object_ref0 (_tmp18_); _g_object_unref0 (builder); builder = _tmp19_; _tmp20_ = g_strdup ("buttons-financial.ui"); _g_free0 (builder_resource); builder_resource = _tmp20_; break; } case BUTTON_MODE_PROGRAMMING: { GtkWidget* _tmp21_; GtkBuilder* _tmp24_; GtkBuilder* _tmp25_; GtkBuilder* _tmp26_; gchar* _tmp27_; _tmp21_ = self->priv->prog_panel; if (_tmp21_ != NULL) { GtkWidget* _tmp22_; GtkWidget* _tmp23_; _tmp22_ = self->priv->prog_panel; _tmp23_ = _g_object_ref0 (_tmp22_); result = _tmp23_; _g_free0 (builder_resource); _g_object_unref0 (builder); return result; } _tmp24_ = gtk_builder_new (); _g_object_unref0 (self->priv->programming_ui); self->priv->programming_ui = _tmp24_; _tmp25_ = self->priv->programming_ui; _tmp26_ = _g_object_ref0 (_tmp25_); _g_object_unref0 (builder); builder = _tmp26_; _tmp27_ = g_strdup ("buttons-programming.ui"); _g_free0 (builder_resource); builder_resource = _tmp27_; break; } } { GtkBuilder* _tmp28_; const gchar* _tmp29_; gchar* _tmp30_; gchar* _tmp31_; _tmp28_ = builder; _tmp29_ = builder_resource; _tmp30_ = g_strdup_printf ("/org/gnome/calculator/%s", _tmp29_); _tmp31_ = _tmp30_; gtk_builder_add_from_resource (_tmp28_, _tmp31_, &_inner_error_); _g_free0 (_tmp31_); if (G_UNLIKELY (_inner_error_ != NULL)) { goto __catch4_g_error; } } goto __finally4; __catch4_g_error: { GError* e = NULL; const gchar* _tmp32_; e = _inner_error_; _inner_error_ = NULL; _tmp32_ = e->message; g_error ("math-buttons.vala:320: Error loading button UI: %s", _tmp32_); _g_error_free0 (e); } __finally4: if (G_UNLIKELY (_inner_error_ != NULL)) { _g_free0 (builder_resource); _g_object_unref0 (builder); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; } _tmp33_ = builder; _tmp34_ = gtk_builder_get_object (_tmp33_, "button_panel"); _tmp35_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp34_, gtk_widget_get_type ()) ? ((GtkWidget*) _tmp34_) : NULL); panel = _tmp35_; _tmp36_ = panel; gtk_box_pack_end ((GtkBox*) self, _tmp36_, TRUE, TRUE, (guint) 0); switch (mode) { default: case BUTTON_MODE_BASIC: { GtkWidget* _tmp37_; GtkWidget* _tmp38_; _tmp37_ = panel; _tmp38_ = _g_object_ref0 (_tmp37_); _g_object_unref0 (self->priv->bas_panel); self->priv->bas_panel = _tmp38_; break; } case BUTTON_MODE_ADVANCED: { GtkWidget* _tmp39_; GtkWidget* _tmp40_; _tmp39_ = panel; _tmp40_ = _g_object_ref0 (_tmp39_); _g_object_unref0 (self->priv->adv_panel); self->priv->adv_panel = _tmp40_; break; } case BUTTON_MODE_FINANCIAL: { GtkWidget* _tmp41_; GtkWidget* _tmp42_; _tmp41_ = panel; _tmp42_ = _g_object_ref0 (_tmp41_); _g_object_unref0 (self->priv->fin_panel); self->priv->fin_panel = _tmp42_; break; } case BUTTON_MODE_PROGRAMMING: { GtkWidget* _tmp43_; GtkWidget* _tmp44_; _tmp43_ = panel; _tmp44_ = _g_object_ref0 (_tmp43_); _g_object_unref0 (self->priv->prog_panel); self->priv->prog_panel = _tmp44_; break; } } _tmp45_ = builder; _tmp46_ = gtk_builder_get_object (_tmp45_, "calc_numeric_point_button"); _tmp47_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp46_, gtk_button_get_type ()) ? ((GtkButton*) _tmp46_) : NULL); button = _tmp47_; _tmp48_ = button; if (_tmp48_ != NULL) { GtkButton* _tmp49_; MathEquation* _tmp50_; Serializer* _tmp51_; Serializer* _tmp52_; gchar* _tmp53_; gchar* _tmp54_; _tmp49_ = button; _tmp50_ = self->priv->equation; _tmp51_ = math_equation_get_serializer (_tmp50_); _tmp52_ = _tmp51_; _tmp53_ = g_unichar_to_string (serializer_get_radix (_tmp52_)); _tmp54_ = _tmp53_; gtk_button_set_label (_tmp49_, _tmp54_); _g_free0 (_tmp54_); } _tmp55_ = builder; _tmp56_ = gtk_builder_get_object (_tmp55_, "calc_shift_left_button"); _tmp57_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp56_, gtk_menu_button_get_type ()) ? ((GtkMenuButton*) _tmp56_) : NULL); menu_button = _tmp57_; _tmp58_ = menu_button; if (_tmp58_ != NULL) { GtkMenuButton* _tmp59_; GMenu* _tmp60_; GMenu* _tmp61_; _tmp59_ = menu_button; _tmp60_ = math_buttons_create_shift_menu (self, TRUE); _tmp61_ = _tmp60_; gtk_menu_button_set_menu_model (_tmp59_, (GMenuModel*) _tmp61_); _g_object_unref0 (_tmp61_); } _tmp62_ = builder; _tmp63_ = gtk_builder_get_object (_tmp62_, "calc_shift_right_button"); _tmp64_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp63_, gtk_menu_button_get_type ()) ? ((GtkMenuButton*) _tmp63_) : NULL); _g_object_unref0 (menu_button); menu_button = _tmp64_; _tmp65_ = menu_button; if (_tmp65_ != NULL) { GtkMenuButton* _tmp66_; GMenu* _tmp67_; GMenu* _tmp68_; _tmp66_ = menu_button; _tmp67_ = math_buttons_create_shift_menu (self, FALSE); _tmp68_ = _tmp67_; gtk_menu_button_set_menu_model (_tmp66_, (GMenuModel*) _tmp68_); _g_object_unref0 (_tmp68_); } _tmp69_ = builder; _tmp70_ = gtk_builder_get_object (_tmp69_, "calc_memory_button"); _tmp71_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp70_, gtk_menu_button_get_type ()) ? ((GtkMenuButton*) _tmp70_) : NULL); _g_object_unref0 (menu_button); menu_button = _tmp71_; _tmp72_ = menu_button; if (_tmp72_ != NULL) { GtkMenuButton* _tmp73_; MathEquation* _tmp74_; MathVariablePopover* _tmp75_; MathVariablePopover* _tmp76_; _tmp73_ = menu_button; _tmp74_ = self->priv->equation; _tmp75_ = math_variable_popover_new (_tmp74_); g_object_ref_sink (_tmp75_); _tmp76_ = _tmp75_; gtk_menu_button_set_popover (_tmp73_, (GtkPopover*) _tmp76_); _g_object_unref0 (_tmp76_); } _tmp77_ = builder; _tmp78_ = gtk_builder_get_object (_tmp77_, "calc_function_button"); _tmp79_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp78_, gtk_menu_button_get_type ()) ? ((GtkMenuButton*) _tmp78_) : NULL); _g_object_unref0 (menu_button); menu_button = _tmp79_; _tmp80_ = menu_button; if (_tmp80_ != NULL) { GtkMenuButton* _tmp81_; MathEquation* _tmp82_; MathFunctionPopover* _tmp83_; MathFunctionPopover* _tmp84_; _tmp81_ = menu_button; _tmp82_ = self->priv->equation; _tmp83_ = math_function_popover_new (_tmp82_); g_object_ref_sink (_tmp83_); _tmp84_ = _tmp83_; gtk_menu_button_set_popover (_tmp81_, (GtkPopover*) _tmp84_); _g_object_unref0 (_tmp84_); } if (mode == BUTTON_MODE_PROGRAMMING) { GtkBuilder* _tmp85_; GObject* _tmp86_; GtkLabel* _tmp87_; GtkBuilder* _tmp88_; GObject* _tmp89_; GtkDialog* _tmp90_; GtkDialog* _tmp91_; GtkDialog* _tmp92_; GtkBuilder* _tmp93_; GObject* _tmp94_; GtkEntry* _tmp95_; GtkEntry* _tmp96_; GtkBuilder* _tmp97_; GObject* _tmp98_; GtkWidget* _tmp99_; gint i = 0; GtkBuilder* _tmp110_; GObject* _tmp111_; GtkComboBox* _tmp112_; GtkComboBox* _tmp113_; MathEquation* _tmp114_; _tmp85_ = builder; _tmp86_ = gtk_builder_get_object (_tmp85_, "base_label"); _tmp87_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp86_, gtk_label_get_type ()) ? ((GtkLabel*) _tmp86_) : NULL); _g_object_unref0 (self->priv->base_label); self->priv->base_label = _tmp87_; _tmp88_ = builder; _tmp89_ = gtk_builder_get_object (_tmp88_, "character_code_dialog"); _tmp90_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp89_, gtk_dialog_get_type ()) ? ((GtkDialog*) _tmp89_) : NULL); _g_object_unref0 (self->priv->character_code_dialog); self->priv->character_code_dialog = _tmp90_; _tmp91_ = self->priv->character_code_dialog; g_signal_connect_object (_tmp91_, "response", (GCallback) _math_buttons_character_code_dialog_response_cb_gtk_dialog_response, self, 0); _tmp92_ = self->priv->character_code_dialog; g_signal_connect_object ((GtkWidget*) _tmp92_, "delete-event", (GCallback) _math_buttons_character_code_dialog_delete_cb_gtk_widget_delete_event, self, 0); _tmp93_ = builder; _tmp94_ = gtk_builder_get_object (_tmp93_, "character_code_entry"); _tmp95_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp94_, gtk_entry_get_type ()) ? ((GtkEntry*) _tmp94_) : NULL); _g_object_unref0 (self->priv->character_code_entry); self->priv->character_code_entry = _tmp95_; _tmp96_ = self->priv->character_code_entry; g_signal_connect_object (_tmp96_, "activate", (GCallback) _math_buttons_character_code_dialog_activate_cb_gtk_entry_activate, self, 0); _tmp97_ = builder; _tmp98_ = gtk_builder_get_object (_tmp97_, "bit_table"); _tmp99_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp98_, gtk_widget_get_type ()) ? ((GtkWidget*) _tmp98_) : NULL); _g_object_unref0 (self->priv->bit_panel); self->priv->bit_panel = _tmp99_; __g_list_free__g_object_unref0_0 (self->priv->toggle_bit_buttons); self->priv->toggle_bit_buttons = NULL; i = 0; while (TRUE) { gchar* name = NULL; gint _tmp100_; gchar* _tmp101_; GtkButton* toggle_bit_button = NULL; GtkBuilder* _tmp102_; const gchar* _tmp103_; GObject* _tmp104_; GtkButton* _tmp105_; GtkButton* _tmp106_; GtkButton* _tmp107_; GtkButton* _tmp108_; gint _tmp109_; _tmp100_ = i; _tmp101_ = g_strdup_printf ("toggle_bit_%d_button", _tmp100_); name = _tmp101_; _tmp102_ = builder; _tmp103_ = name; _tmp104_ = gtk_builder_get_object (_tmp102_, _tmp103_); _tmp105_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp104_, gtk_button_get_type ()) ? ((GtkButton*) _tmp104_) : NULL); toggle_bit_button = _tmp105_; _tmp106_ = toggle_bit_button; if (_tmp106_ == NULL) { _g_object_unref0 (toggle_bit_button); _g_free0 (name); break; } _tmp107_ = toggle_bit_button; _tmp108_ = _g_object_ref0 (_tmp107_); self->priv->toggle_bit_buttons = g_list_append (self->priv->toggle_bit_buttons, _tmp108_); _tmp109_ = i; i = _tmp109_ + 1; _g_object_unref0 (toggle_bit_button); _g_free0 (name); } self->priv->toggle_bit_buttons = g_list_reverse (self->priv->toggle_bit_buttons); _tmp110_ = builder; _tmp111_ = gtk_builder_get_object (_tmp110_, "base_combo"); _tmp112_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp111_, gtk_combo_box_get_type ()) ? ((GtkComboBox*) _tmp111_) : NULL); _g_object_unref0 (self->priv->base_combo); self->priv->base_combo = _tmp112_; _tmp113_ = self->priv->base_combo; g_signal_connect_object (_tmp113_, "changed", (GCallback) _math_buttons_base_combobox_changed_cb_gtk_combo_box_changed, self, 0); _tmp114_ = self->priv->equation; g_signal_connect_object ((GObject*) _tmp114_, "notify::number-base", (GCallback) ____lambda21__g_object_notify, self, 0); math_buttons_base_changed_cb (self); } if (mode == BUTTON_MODE_FINANCIAL) { math_buttons_load_finc_dialogs (self); } _tmp115_ = builder; gtk_builder_connect_signals (_tmp115_, self); math_buttons_update_bit_panel (self); result = panel; _g_object_unref0 (menu_button); _g_object_unref0 (button); _g_free0 (builder_resource); _g_object_unref0 (builder); return result; } static void math_buttons_converter_changed_cb (MathButtons* self) { Unit* from_unit = NULL; Unit* to_unit = NULL; MathConverter* _tmp0_; Unit* _tmp1_ = NULL; Unit* _tmp2_ = NULL; ButtonMode _tmp3_; ButtonMode _tmp4_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->converter; math_converter_get_conversion (_tmp0_, &_tmp1_, &_tmp2_); _g_object_unref0 (from_unit); from_unit = _tmp1_; _g_object_unref0 (to_unit); to_unit = _tmp2_; _tmp3_ = math_buttons_get_mode (self); _tmp4_ = _tmp3_; if (_tmp4_ == BUTTON_MODE_FINANCIAL) { MathEquation* _tmp5_; Unit* _tmp6_; gchar* _tmp7_; gchar* _tmp8_; gchar* _tmp9_; MathEquation* _tmp10_; Unit* _tmp11_; gchar* _tmp12_; gchar* _tmp13_; gchar* _tmp14_; _tmp5_ = self->priv->equation; _tmp6_ = from_unit; _tmp7_ = unit_get_name (_tmp6_); _tmp8_ = _tmp7_; _tmp9_ = _tmp8_; math_equation_set_source_currency (_tmp5_, _tmp9_); _g_free0 (_tmp9_); _tmp10_ = self->priv->equation; _tmp11_ = to_unit; _tmp12_ = unit_get_name (_tmp11_); _tmp13_ = _tmp12_; _tmp14_ = _tmp13_; math_equation_set_target_currency (_tmp10_, _tmp14_); _g_free0 (_tmp14_); } else { MathEquation* _tmp15_; Unit* _tmp16_; gchar* _tmp17_; gchar* _tmp18_; gchar* _tmp19_; MathEquation* _tmp20_; Unit* _tmp21_; gchar* _tmp22_; gchar* _tmp23_; gchar* _tmp24_; _tmp15_ = self->priv->equation; _tmp16_ = from_unit; _tmp17_ = unit_get_name (_tmp16_); _tmp18_ = _tmp17_; _tmp19_ = _tmp18_; math_equation_set_source_units (_tmp15_, _tmp19_); _g_free0 (_tmp19_); _tmp20_ = self->priv->equation; _tmp21_ = to_unit; _tmp22_ = unit_get_name (_tmp21_); _tmp23_ = _tmp22_; _tmp24_ = _tmp23_; math_equation_set_target_units (_tmp20_, _tmp24_); _g_free0 (_tmp24_); } _g_object_unref0 (to_unit); _g_object_unref0 (from_unit); } static void _math_buttons_converter_changed_cb_math_converter_changed (MathConverter* _sender, gpointer self) { math_buttons_converter_changed_cb ((MathButtons*) self); } static void math_buttons_load_buttons (MathButtons* self) { MathConverter* _tmp0_; GtkWidget* panel = NULL; ButtonMode _tmp5_; ButtonMode _tmp6_; GtkWidget* _tmp7_; GtkWidget* _tmp8_; GtkWidget* _tmp9_; GtkWidget* _tmp10_; GtkWidget* _tmp12_; GtkWidget* _tmp13_; GtkWidget* _tmp14_; g_return_if_fail (self != NULL); if (!gtk_widget_get_visible ((GtkWidget*) self)) { return; } _tmp0_ = self->priv->converter; if (_tmp0_ == NULL) { MathEquation* _tmp1_; MathConverter* _tmp2_; MathConverter* _tmp3_; MathConverter* _tmp4_; _tmp1_ = self->priv->equation; _tmp2_ = math_converter_new (_tmp1_); g_object_ref_sink (_tmp2_); _g_object_unref0 (self->priv->converter); self->priv->converter = _tmp2_; _tmp3_ = self->priv->converter; g_signal_connect_object (_tmp3_, "changed", (GCallback) _math_buttons_converter_changed_cb_math_converter_changed, self, 0); _tmp4_ = self->priv->converter; gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) _tmp4_, FALSE, TRUE, (guint) 0); } _tmp5_ = math_buttons_get_mode (self); _tmp6_ = _tmp5_; _tmp7_ = math_buttons_load_mode (self, _tmp6_); panel = _tmp7_; _tmp8_ = self->priv->active_panel; _tmp9_ = panel; if (_tmp8_ == _tmp9_) { _g_object_unref0 (panel); return; } _tmp10_ = self->priv->active_panel; if (_tmp10_ != NULL) { GtkWidget* _tmp11_; _tmp11_ = self->priv->active_panel; gtk_widget_hide (_tmp11_); } _tmp12_ = panel; _tmp13_ = _g_object_ref0 (_tmp12_); _g_object_unref0 (self->priv->active_panel); self->priv->active_panel = _tmp13_; _tmp14_ = panel; if (_tmp14_ != NULL) { GtkWidget* _tmp15_; _tmp15_ = panel; gtk_widget_show (_tmp15_); } _g_object_unref0 (panel); } static GMenu* math_buttons_create_shift_menu (MathButtons* self, gboolean shift_left) { GMenu* result = NULL; GMenu* shift_menu = NULL; GMenu* _tmp0_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = g_menu_new (); shift_menu = _tmp0_; { gint i = 0; i = 1; { gboolean _tmp1_ = FALSE; _tmp1_ = TRUE; while (TRUE) { gint _tmp3_; gchar* format = NULL; gint _tmp4_; gchar* _tmp5_; gint _tmp6_; gint _tmp9_ = 0; gint positions = 0; GMenu* _tmp12_; const gchar* _tmp13_; gint _tmp14_; gchar* _tmp15_; gchar* _tmp16_; gint _tmp17_; gchar* _tmp18_; gchar* _tmp19_; if (!_tmp1_) { gint _tmp2_; _tmp2_ = i; i = _tmp2_ + 1; } _tmp1_ = FALSE; _tmp3_ = i; if (!(_tmp3_ < 16)) { break; } _tmp4_ = i; _tmp5_ = g_strdup (ngettext ("%d place", "%d places", (gulong) _tmp4_)); format = _tmp5_; _tmp6_ = i; if (_tmp6_ < 10) { const gchar* _tmp7_; gchar* _tmp8_; _tmp7_ = format; _tmp8_ = g_strconcat ("_", _tmp7_, NULL); _g_free0 (format); format = _tmp8_; } if (shift_left) { gint _tmp10_; _tmp10_ = i; _tmp9_ = _tmp10_; } else { gint _tmp11_; _tmp11_ = i; _tmp9_ = -_tmp11_; } positions = _tmp9_; _tmp12_ = shift_menu; _tmp13_ = format; _tmp14_ = i; _tmp15_ = g_strdup_printf (_tmp13_, _tmp14_); _tmp16_ = _tmp15_; _tmp17_ = positions; _tmp18_ = g_strdup_printf ("cal.bitshift(%d)", _tmp17_); _tmp19_ = _tmp18_; g_menu_append (_tmp12_, _tmp16_, _tmp19_); _g_free0 (_tmp19_); _g_free0 (_tmp16_); _g_free0 (format); } } } result = shift_menu; return result; } static void math_buttons_on_launch_finc_dialog (MathButtons* self, GSimpleAction* action, GVariant* param) { gchar* name = NULL; const gchar* _tmp0_; gchar* _tmp1_; GtkDialog* dialog = NULL; GtkBuilder* _tmp2_; GObject* _tmp3_; GtkDialog* _tmp4_; g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); _tmp0_ = g_variant_get_string (param, NULL); _tmp1_ = g_strdup (_tmp0_); name = _tmp1_; _tmp2_ = self->priv->financial_ui; _tmp3_ = gtk_builder_get_object (_tmp2_, name); _tmp4_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, gtk_dialog_get_type ()) ? ((GtkDialog*) _tmp3_) : NULL); dialog = _tmp4_; gtk_dialog_run (dialog); gtk_widget_hide ((GtkWidget*) dialog); _g_object_unref0 (dialog); _g_free0 (name); } static void math_buttons_on_insert_character (MathButtons* self, GSimpleAction* action, GVariant* param) { GtkDialog* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); _tmp0_ = self->priv->character_code_dialog; gtk_window_present ((GtkWindow*) _tmp0_); } static void math_buttons_finc_activate_cb (MathButtons* self, GtkWidget* widget) { GtkEntry* next_entry = NULL; gconstpointer _tmp0_; GtkEntry* _tmp1_; GtkEntry* _tmp2_; g_return_if_fail (self != NULL); g_return_if_fail (widget != NULL); _tmp0_ = g_object_get_data ((GObject*) widget, "next-entry"); _tmp1_ = _g_object_ref0 ((GtkEntry*) _tmp0_); next_entry = _tmp1_; _tmp2_ = next_entry; if (_tmp2_ == NULL) { GtkDialog* dialog = NULL; GtkWidget* _tmp3_; GtkDialog* _tmp4_; GtkDialog* _tmp5_; _tmp3_ = gtk_widget_get_toplevel (widget); _tmp4_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, gtk_dialog_get_type ()) ? ((GtkDialog*) _tmp3_) : NULL); dialog = _tmp4_; _tmp5_ = dialog; if (gtk_widget_is_toplevel ((GtkWidget*) _tmp5_)) { GtkDialog* _tmp6_; _tmp6_ = dialog; gtk_dialog_response (_tmp6_, (gint) GTK_RESPONSE_OK); _g_object_unref0 (dialog); _g_object_unref0 (next_entry); return; } _g_object_unref0 (dialog); } else { GtkEntry* _tmp7_; _tmp7_ = next_entry; gtk_widget_grab_focus ((GtkWidget*) _tmp7_); } _g_object_unref0 (next_entry); } static gchar** _vala_array_dup1 (gchar** self, int length) { gchar** result; int i; result = g_new0 (gchar*, length + 1); for (i = 0; i < length; i++) { gchar* _tmp0_; _tmp0_ = g_strdup (self[i]); result[i] = _tmp0_; } return result; } static gchar** _vala_array_dup2 (gchar** self, int length) { gchar** result; int i; result = g_new0 (gchar*, length + 1); for (i = 0; i < length; i++) { gchar* _tmp0_; _tmp0_ = g_strdup (self[i]); result[i] = _tmp0_; } return result; } static gchar** _vala_array_dup3 (gchar** self, int length) { gchar** result; int i; result = g_new0 (gchar*, length + 1); for (i = 0; i < length; i++) { gchar* _tmp0_; _tmp0_ = g_strdup (self[i]); result[i] = _tmp0_; } return result; } static gchar** _vala_array_dup4 (gchar** self, int length) { gchar** result; int i; result = g_new0 (gchar*, length + 1); for (i = 0; i < length; i++) { gchar* _tmp0_; _tmp0_ = g_strdup (self[i]); result[i] = _tmp0_; } return result; } static gchar** _vala_array_dup5 (gchar** self, int length) { gchar** result; int i; result = g_new0 (gchar*, length + 1); for (i = 0; i < length; i++) { gchar* _tmp0_; _tmp0_ = g_strdup (self[i]); result[i] = _tmp0_; } return result; } static gchar** _vala_array_dup6 (gchar** self, int length) { gchar** result; int i; result = g_new0 (gchar*, length + 1); for (i = 0; i < length; i++) { gchar* _tmp0_; _tmp0_ = g_strdup (self[i]); result[i] = _tmp0_; } return result; } static gchar** _vala_array_dup7 (gchar** self, int length) { gchar** result; int i; result = g_new0 (gchar*, length + 1); for (i = 0; i < length; i++) { gchar* _tmp0_; _tmp0_ = g_strdup (self[i]); result[i] = _tmp0_; } return result; } static gchar** _vala_array_dup8 (gchar** self, int length) { gchar** result; int i; result = g_new0 (gchar*, length + 1); for (i = 0; i < length; i++) { gchar* _tmp0_; _tmp0_ = g_strdup (self[i]); result[i] = _tmp0_; } return result; } static gchar** _vala_array_dup9 (gchar** self, int length) { gchar** result; int i; result = g_new0 (gchar*, length + 1); for (i = 0; i < length; i++) { gchar* _tmp0_; _tmp0_ = g_strdup (self[i]); result[i] = _tmp0_; } return result; } static gchar** _vala_array_dup10 (gchar** self, int length) { gchar** result; int i; result = g_new0 (gchar*, length + 1); for (i = 0; i < length; i++) { gchar* _tmp0_; _tmp0_ = g_strdup (self[i]); result[i] = _tmp0_; } return result; } static void math_buttons_finc_response_cb (MathButtons* self, GtkWidget* widget, gint response_id) { FinancialDialog function = 0; gconstpointer _tmp0_; gchar** entries = NULL; gchar** _tmp1_; gint entries_length1; gint _entries_size_; FinancialDialog _tmp2_; Number* arg[4] = {0}; Number* _tmp13_; Number* _tmp14_; Number* _tmp15_; Number* _tmp16_; Number* _tmp17_[4] = {0}; GtkEntry* first_entry = NULL; GtkBuilder* _tmp34_; gchar** _tmp35_; gint _tmp35__length1; const gchar* _tmp36_; GObject* _tmp37_; GtkEntry* _tmp38_; GtkEntry* _tmp39_; MathEquation* _tmp40_; FinancialDialog _tmp41_; Number* _tmp42_; Number* _tmp43_; Number* _tmp44_; Number* _tmp45_; g_return_if_fail (self != NULL); g_return_if_fail (widget != NULL); if (response_id != ((gint) GTK_RESPONSE_OK)) { return; } _tmp0_ = g_object_get_data ((GObject*) widget, "finc-function"); function = (FinancialDialog) ((gint) ((gintptr) _tmp0_)); _tmp1_ = g_new0 (gchar*, 0 + 1); entries = _tmp1_; entries_length1 = 0; _entries_size_ = entries_length1; _tmp2_ = function; switch (_tmp2_) { case FINANCIAL_DIALOG_CTRM_DIALOG: { gchar** _tmp3_; gint _tmp3__length1; _tmp3_ = (MATH_BUTTONS_ctrm_entries != NULL) ? _vala_array_dup1 (MATH_BUTTONS_ctrm_entries, G_N_ELEMENTS (MATH_BUTTONS_ctrm_entries)) : ((gpointer) MATH_BUTTONS_ctrm_entries); _tmp3__length1 = G_N_ELEMENTS (MATH_BUTTONS_ctrm_entries); entries = (_vala_array_free (entries, entries_length1, (GDestroyNotify) g_free), NULL); entries = _tmp3_; entries_length1 = _tmp3__length1; _entries_size_ = entries_length1; break; } case FINANCIAL_DIALOG_DDB_DIALOG: { gchar** _tmp4_; gint _tmp4__length1; _tmp4_ = (MATH_BUTTONS_ddb_entries != NULL) ? _vala_array_dup2 (MATH_BUTTONS_ddb_entries, G_N_ELEMENTS (MATH_BUTTONS_ddb_entries)) : ((gpointer) MATH_BUTTONS_ddb_entries); _tmp4__length1 = G_N_ELEMENTS (MATH_BUTTONS_ddb_entries); entries = (_vala_array_free (entries, entries_length1, (GDestroyNotify) g_free), NULL); entries = _tmp4_; entries_length1 = _tmp4__length1; _entries_size_ = entries_length1; break; } case FINANCIAL_DIALOG_FV_DIALOG: { gchar** _tmp5_; gint _tmp5__length1; _tmp5_ = (MATH_BUTTONS_fv_entries != NULL) ? _vala_array_dup3 (MATH_BUTTONS_fv_entries, G_N_ELEMENTS (MATH_BUTTONS_fv_entries)) : ((gpointer) MATH_BUTTONS_fv_entries); _tmp5__length1 = G_N_ELEMENTS (MATH_BUTTONS_fv_entries); entries = (_vala_array_free (entries, entries_length1, (GDestroyNotify) g_free), NULL); entries = _tmp5_; entries_length1 = _tmp5__length1; _entries_size_ = entries_length1; break; } case FINANCIAL_DIALOG_GPM_DIALOG: { gchar** _tmp6_; gint _tmp6__length1; _tmp6_ = (MATH_BUTTONS_gpm_entries != NULL) ? _vala_array_dup4 (MATH_BUTTONS_gpm_entries, G_N_ELEMENTS (MATH_BUTTONS_gpm_entries)) : ((gpointer) MATH_BUTTONS_gpm_entries); _tmp6__length1 = G_N_ELEMENTS (MATH_BUTTONS_gpm_entries); entries = (_vala_array_free (entries, entries_length1, (GDestroyNotify) g_free), NULL); entries = _tmp6_; entries_length1 = _tmp6__length1; _entries_size_ = entries_length1; break; } case FINANCIAL_DIALOG_PMT_DIALOG: { gchar** _tmp7_; gint _tmp7__length1; _tmp7_ = (MATH_BUTTONS_pmt_entries != NULL) ? _vala_array_dup5 (MATH_BUTTONS_pmt_entries, G_N_ELEMENTS (MATH_BUTTONS_pmt_entries)) : ((gpointer) MATH_BUTTONS_pmt_entries); _tmp7__length1 = G_N_ELEMENTS (MATH_BUTTONS_pmt_entries); entries = (_vala_array_free (entries, entries_length1, (GDestroyNotify) g_free), NULL); entries = _tmp7_; entries_length1 = _tmp7__length1; _entries_size_ = entries_length1; break; } case FINANCIAL_DIALOG_PV_DIALOG: { gchar** _tmp8_; gint _tmp8__length1; _tmp8_ = (MATH_BUTTONS_pv_entries != NULL) ? _vala_array_dup6 (MATH_BUTTONS_pv_entries, G_N_ELEMENTS (MATH_BUTTONS_pv_entries)) : ((gpointer) MATH_BUTTONS_pv_entries); _tmp8__length1 = G_N_ELEMENTS (MATH_BUTTONS_pv_entries); entries = (_vala_array_free (entries, entries_length1, (GDestroyNotify) g_free), NULL); entries = _tmp8_; entries_length1 = _tmp8__length1; _entries_size_ = entries_length1; break; } case FINANCIAL_DIALOG_RATE_DIALOG: { gchar** _tmp9_; gint _tmp9__length1; _tmp9_ = (MATH_BUTTONS_rate_entries != NULL) ? _vala_array_dup7 (MATH_BUTTONS_rate_entries, G_N_ELEMENTS (MATH_BUTTONS_rate_entries)) : ((gpointer) MATH_BUTTONS_rate_entries); _tmp9__length1 = G_N_ELEMENTS (MATH_BUTTONS_rate_entries); entries = (_vala_array_free (entries, entries_length1, (GDestroyNotify) g_free), NULL); entries = _tmp9_; entries_length1 = _tmp9__length1; _entries_size_ = entries_length1; break; } case FINANCIAL_DIALOG_SLN_DIALOG: { gchar** _tmp10_; gint _tmp10__length1; _tmp10_ = (MATH_BUTTONS_sln_entries != NULL) ? _vala_array_dup8 (MATH_BUTTONS_sln_entries, G_N_ELEMENTS (MATH_BUTTONS_sln_entries)) : ((gpointer) MATH_BUTTONS_sln_entries); _tmp10__length1 = G_N_ELEMENTS (MATH_BUTTONS_sln_entries); entries = (_vala_array_free (entries, entries_length1, (GDestroyNotify) g_free), NULL); entries = _tmp10_; entries_length1 = _tmp10__length1; _entries_size_ = entries_length1; break; } case FINANCIAL_DIALOG_SYD_DIALOG: { gchar** _tmp11_; gint _tmp11__length1; _tmp11_ = (MATH_BUTTONS_syd_entries != NULL) ? _vala_array_dup9 (MATH_BUTTONS_syd_entries, G_N_ELEMENTS (MATH_BUTTONS_syd_entries)) : ((gpointer) MATH_BUTTONS_syd_entries); _tmp11__length1 = G_N_ELEMENTS (MATH_BUTTONS_syd_entries); entries = (_vala_array_free (entries, entries_length1, (GDestroyNotify) g_free), NULL); entries = _tmp11_; entries_length1 = _tmp11__length1; _entries_size_ = entries_length1; break; } case FINANCIAL_DIALOG_TERM_DIALOG: { gchar** _tmp12_; gint _tmp12__length1; _tmp12_ = (MATH_BUTTONS_term_entries != NULL) ? _vala_array_dup10 (MATH_BUTTONS_term_entries, G_N_ELEMENTS (MATH_BUTTONS_term_entries)) : ((gpointer) MATH_BUTTONS_term_entries); _tmp12__length1 = G_N_ELEMENTS (MATH_BUTTONS_term_entries); entries = (_vala_array_free (entries, entries_length1, (GDestroyNotify) g_free), NULL); entries = _tmp12_; entries_length1 = _tmp12__length1; _entries_size_ = entries_length1; break; } default: break; } _tmp13_ = number_new_integer ((gint64) 0, (gint64) 0); _tmp14_ = number_new_integer ((gint64) 0, (gint64) 0); _tmp15_ = number_new_integer ((gint64) 0, (gint64) 0); _tmp16_ = number_new_integer ((gint64) 0, (gint64) 0); _tmp17_[0] = _tmp13_; _tmp17_[1] = _tmp14_; _tmp17_[2] = _tmp15_; _tmp17_[3] = _tmp16_; memcpy (arg, _tmp17_, 4 * sizeof (Number*)); { gint i = 0; i = 0; { gboolean _tmp18_ = FALSE; _tmp18_ = TRUE; while (TRUE) { gint _tmp20_; gchar** _tmp21_; gint _tmp21__length1; GtkEntry* entry = NULL; GtkBuilder* _tmp22_; gchar** _tmp23_; gint _tmp23__length1; gint _tmp24_; const gchar* _tmp25_; GObject* _tmp26_; GtkEntry* _tmp27_; gint _tmp28_; GtkEntry* _tmp29_; const gchar* _tmp30_; Number* _tmp31_; Number* _tmp32_; GtkEntry* _tmp33_; if (!_tmp18_) { gint _tmp19_; _tmp19_ = i; i = _tmp19_ + 1; } _tmp18_ = FALSE; _tmp20_ = i; _tmp21_ = entries; _tmp21__length1 = entries_length1; if (!(_tmp20_ < _tmp21__length1)) { break; } _tmp22_ = self->priv->financial_ui; _tmp23_ = entries; _tmp23__length1 = entries_length1; _tmp24_ = i; _tmp25_ = _tmp23_[_tmp24_]; _tmp26_ = gtk_builder_get_object (_tmp22_, _tmp25_); _tmp27_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp26_, gtk_entry_get_type ()) ? ((GtkEntry*) _tmp26_) : NULL); entry = _tmp27_; _tmp28_ = i; _tmp29_ = entry; _tmp30_ = gtk_entry_get_text (_tmp29_); _tmp31_ = mp_set_from_string (_tmp30_, 10); _g_object_unref0 (arg[_tmp28_]); arg[_tmp28_] = _tmp31_; _tmp32_ = arg[_tmp28_]; _tmp33_ = entry; gtk_entry_set_text (_tmp33_, "0"); _g_object_unref0 (entry); } } } _tmp34_ = self->priv->financial_ui; _tmp35_ = entries; _tmp35__length1 = entries_length1; _tmp36_ = _tmp35_[0]; _tmp37_ = gtk_builder_get_object (_tmp34_, _tmp36_); _tmp38_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp37_, gtk_entry_get_type ()) ? ((GtkEntry*) _tmp37_) : NULL); first_entry = _tmp38_; _tmp39_ = first_entry; gtk_widget_grab_focus ((GtkWidget*) _tmp39_); _tmp40_ = self->priv->equation; _tmp41_ = function; _tmp42_ = arg[0]; _tmp43_ = arg[1]; _tmp44_ = arg[2]; _tmp45_ = arg[3]; do_finc_expression (_tmp40_, _tmp41_, _tmp42_, _tmp43_, _tmp44_, _tmp45_); _g_object_unref0 (first_entry); _vala_array_destroy (arg, 4, (GDestroyNotify) g_object_unref); entries = (_vala_array_free (entries, entries_length1, (GDestroyNotify) g_free), NULL); } static gchar string_get (const gchar* self, glong index) { gchar result = '\0'; gchar _tmp0_; g_return_val_if_fail (self != NULL, '\0'); _tmp0_ = ((gchar*) self)[index]; result = _tmp0_; return result; } static void math_buttons_character_code_dialog_response_cb (MathButtons* self, GtkWidget* dialog, gint response_id) { gchar* text = NULL; GtkEntry* _tmp0_; const gchar* _tmp1_; gchar* _tmp2_; g_return_if_fail (self != NULL); g_return_if_fail (dialog != NULL); _tmp0_ = self->priv->character_code_entry; _tmp1_ = gtk_entry_get_text (_tmp0_); _tmp2_ = g_strdup (_tmp1_); text = _tmp2_; if (response_id == ((gint) GTK_RESPONSE_OK)) { Number* x = NULL; Number* _tmp3_; MathEquation* _tmp16_; Number* _tmp17_; _tmp3_ = number_new_integer ((gint64) 0, (gint64) 0); x = _tmp3_; { gint i = 0; i = 0; { gboolean _tmp4_ = FALSE; _tmp4_ = TRUE; while (TRUE) { const gchar* _tmp6_; gint _tmp7_; Number* _tmp8_; const gchar* _tmp9_; gint _tmp10_; Number* _tmp11_; Number* _tmp12_; Number* _tmp13_; Number* _tmp14_; Number* _tmp15_; if (!_tmp4_) { gint _tmp5_; _tmp5_ = i; i = _tmp5_ + 1; } _tmp4_ = FALSE; _tmp6_ = text; _tmp7_ = i; if (!(string_get (_tmp6_, (glong) _tmp7_) != '\0')) { break; } _tmp8_ = x; _tmp9_ = text; _tmp10_ = i; _tmp11_ = number_new_integer ((gint64) string_get (_tmp9_, (glong) _tmp10_), (gint64) 0); _tmp12_ = _tmp11_; _tmp13_ = number_add (_tmp8_, _tmp12_); _g_object_unref0 (x); x = _tmp13_; _g_object_unref0 (_tmp12_); _tmp14_ = x; _tmp15_ = number_shift (_tmp14_, 8); _g_object_unref0 (x); x = _tmp15_; } } } _tmp16_ = self->priv->equation; _tmp17_ = x; math_equation_insert_number (_tmp16_, _tmp17_); _g_object_unref0 (x); } gtk_widget_hide (dialog); _g_free0 (text); } static void math_buttons_character_code_dialog_activate_cb (MathButtons* self, GtkWidget* entry) { GtkDialog* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (entry != NULL); _tmp0_ = self->priv->character_code_dialog; math_buttons_character_code_dialog_response_cb (self, (GtkWidget*) _tmp0_, (gint) GTK_RESPONSE_OK); } static gboolean math_buttons_character_code_dialog_delete_cb (MathButtons* self, GtkWidget* dialog, GdkEventAny* event) { gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (dialog != NULL, FALSE); g_return_val_if_fail (event != NULL, FALSE); math_buttons_character_code_dialog_response_cb (self, dialog, (gint) GTK_RESPONSE_CANCEL); result = TRUE; return result; } static void math_buttons_on_toggle_bit (MathButtons* self, GSimpleAction* action, GVariant* param) { MathEquation* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); _tmp0_ = self->priv->equation; math_equation_toggle_bit (_tmp0_, (guint) g_variant_get_int32 (param)); } static void math_buttons_on_set_number_mode (MathButtons* self, GSimpleAction* action, GVariant* param) { const gchar* _tmp0_; GVariant* _tmp1_; GVariant* _tmp2_; GVariant* _tmp3_; const gchar* _tmp4_; gboolean _tmp5_; g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); _tmp0_ = g_variant_get_string (param, NULL); _tmp1_ = g_action_get_state ((GAction*) action); _tmp2_ = _tmp1_; _tmp3_ = _tmp2_; _tmp4_ = g_variant_get_string (_tmp3_, NULL); _tmp5_ = g_strcmp0 (_tmp0_, _tmp4_) == 0; _g_variant_unref0 (_tmp3_); if (_tmp5_) { MathEquation* _tmp6_; _tmp6_ = self->priv->equation; math_equation_set_number_mode (_tmp6_, NUMBER_MODE_NORMAL); } else { const gchar* _tmp7_; _tmp7_ = g_variant_get_string (param, NULL); if (g_strcmp0 (_tmp7_, "superscript") == 0) { MathEquation* _tmp8_; MathEquation* _tmp9_; gboolean _tmp10_; gboolean _tmp11_; _tmp8_ = self->priv->equation; math_equation_set_number_mode (_tmp8_, NUMBER_MODE_SUPERSCRIPT); _tmp9_ = self->priv->equation; _tmp10_ = gtk_text_buffer_get_has_selection ((GtkTextBuffer*) _tmp9_); _tmp11_ = _tmp10_; if (!_tmp11_) { MathEquation* _tmp12_; _tmp12_ = self->priv->equation; math_equation_remove_trailing_spaces (_tmp12_); } } else { const gchar* _tmp13_; _tmp13_ = g_variant_get_string (param, NULL); if (g_strcmp0 (_tmp13_, "subscript") == 0) { MathEquation* _tmp14_; MathEquation* _tmp15_; gboolean _tmp16_; gboolean _tmp17_; _tmp14_ = self->priv->equation; math_equation_set_number_mode (_tmp14_, NUMBER_MODE_SUBSCRIPT); _tmp15_ = self->priv->equation; _tmp16_ = gtk_text_buffer_get_has_selection ((GtkTextBuffer*) _tmp15_); _tmp17_ = _tmp16_; if (!_tmp17_) { MathEquation* _tmp18_; _tmp18_ = self->priv->equation; math_equation_remove_trailing_spaces (_tmp18_); } } } } } static GVariant* _variant_new2 (const gchar* value) { return g_variant_ref_sink (g_variant_new_string (value)); } static GVariant* _variant_new3 (const gchar* value) { return g_variant_ref_sink (g_variant_new_string (value)); } static GVariant* _variant_new4 (const gchar* value) { return g_variant_ref_sink (g_variant_new_string (value)); } static void math_buttons_number_mode_changed_cb (MathButtons* self) { MathEquation* _tmp0_; NumberMode _tmp1_; NumberMode _tmp2_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->equation; _tmp1_ = math_equation_get_number_mode (_tmp0_); _tmp2_ = _tmp1_; if (_tmp2_ == NUMBER_MODE_SUPERSCRIPT) { GSimpleActionGroup* _tmp3_; GVariant* _tmp4_; _tmp3_ = self->priv->action_group; _tmp4_ = _variant_new2 ("superscript"); g_action_group_change_action_state ((GActionGroup*) _tmp3_, "set-number-mode", _tmp4_); _g_variant_unref0 (_tmp4_); } else { MathEquation* _tmp5_; NumberMode _tmp6_; NumberMode _tmp7_; _tmp5_ = self->priv->equation; _tmp6_ = math_equation_get_number_mode (_tmp5_); _tmp7_ = _tmp6_; if (_tmp7_ == NUMBER_MODE_SUBSCRIPT) { GSimpleActionGroup* _tmp8_; GVariant* _tmp9_; _tmp8_ = self->priv->action_group; _tmp9_ = _variant_new3 ("subscript"); g_action_group_change_action_state ((GActionGroup*) _tmp8_, "set-number-mode", _tmp9_); _g_variant_unref0 (_tmp9_); } else { GSimpleActionGroup* _tmp10_; GVariant* _tmp11_; _tmp10_ = self->priv->action_group; _tmp11_ = _variant_new4 ("normal"); g_action_group_change_action_state ((GActionGroup*) _tmp10_, "set-number-mode", _tmp11_); _g_variant_unref0 (_tmp11_); } } } ButtonMode math_buttons_get_mode (MathButtons* self) { ButtonMode result; ButtonMode _tmp0_; g_return_val_if_fail (self != NULL, 0); _tmp0_ = self->priv->_mode; result = _tmp0_; return result; } void math_buttons_set_mode (MathButtons* self, ButtonMode value) { ButtonMode _tmp0_; ButtonMode _tmp1_; ButtonMode _tmp2_; gboolean _tmp6_ = FALSE; ButtonMode _tmp7_; ButtonMode _tmp8_; MathConverter* _tmp11_; ButtonMode _tmp12_; ButtonMode _tmp13_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->_mode; if (_tmp0_ == value) { return; } self->priv->_mode = value; _tmp1_ = math_buttons_get_mode (self); _tmp2_ = _tmp1_; if (_tmp2_ == BUTTON_MODE_PROGRAMMING) { MathEquation* _tmp3_; gint _tmp4_; _tmp3_ = self->priv->equation; _tmp4_ = self->priv->_programming_base; math_equation_set_number_base (_tmp3_, _tmp4_); } else { MathEquation* _tmp5_; _tmp5_ = self->priv->equation; math_equation_set_number_base (_tmp5_, 10); } math_buttons_load_buttons (self); _tmp7_ = math_buttons_get_mode (self); _tmp8_ = _tmp7_; if (_tmp8_ == BUTTON_MODE_ADVANCED) { _tmp6_ = TRUE; } else { ButtonMode _tmp9_; ButtonMode _tmp10_; _tmp9_ = math_buttons_get_mode (self); _tmp10_ = _tmp9_; _tmp6_ = _tmp10_ == BUTTON_MODE_FINANCIAL; } _tmp11_ = self->priv->converter; gtk_widget_set_visible ((GtkWidget*) _tmp11_, _tmp6_); _tmp12_ = math_buttons_get_mode (self); _tmp13_ = _tmp12_; if (_tmp13_ == BUTTON_MODE_ADVANCED) { MathConverter* _tmp14_; MathConverter* _tmp15_; MathEquation* _tmp16_; gchar* _tmp17_; gchar* _tmp18_; gchar* _tmp19_; MathEquation* _tmp20_; gchar* _tmp21_; gchar* _tmp22_; gchar* _tmp23_; _tmp14_ = self->priv->converter; math_converter_set_category (_tmp14_, NULL); _tmp15_ = self->priv->converter; _tmp16_ = self->priv->equation; _tmp17_ = math_equation_get_source_units (_tmp16_); _tmp18_ = _tmp17_; _tmp19_ = _tmp18_; _tmp20_ = self->priv->equation; _tmp21_ = math_equation_get_target_units (_tmp20_); _tmp22_ = _tmp21_; _tmp23_ = _tmp22_; math_converter_set_conversion (_tmp15_, _tmp19_, _tmp23_); _g_free0 (_tmp23_); _g_free0 (_tmp19_); } else { ButtonMode _tmp24_; ButtonMode _tmp25_; _tmp24_ = math_buttons_get_mode (self); _tmp25_ = _tmp24_; if (_tmp25_ == BUTTON_MODE_FINANCIAL) { MathConverter* _tmp26_; MathConverter* _tmp27_; MathEquation* _tmp28_; gchar* _tmp29_; gchar* _tmp30_; gchar* _tmp31_; MathEquation* _tmp32_; gchar* _tmp33_; gchar* _tmp34_; gchar* _tmp35_; _tmp26_ = self->priv->converter; math_converter_set_category (_tmp26_, "currency"); _tmp27_ = self->priv->converter; _tmp28_ = self->priv->equation; _tmp29_ = math_equation_get_source_currency (_tmp28_); _tmp30_ = _tmp29_; _tmp31_ = _tmp30_; _tmp32_ = self->priv->equation; _tmp33_ = math_equation_get_target_currency (_tmp32_); _tmp34_ = _tmp33_; _tmp35_ = _tmp34_; math_converter_set_conversion (_tmp27_, _tmp31_, _tmp35_); _g_free0 (_tmp35_); _g_free0 (_tmp31_); } } g_object_notify_by_pspec ((GObject *) self, math_buttons_properties[MATH_BUTTONS_MODE_PROPERTY]); } gint math_buttons_get_programming_base (MathButtons* self) { gint result; gint _tmp0_; g_return_val_if_fail (self != NULL, 0); _tmp0_ = self->priv->_programming_base; result = _tmp0_; return result; } void math_buttons_set_programming_base (MathButtons* self, gint value) { gint _tmp0_; ButtonMode _tmp1_; ButtonMode _tmp2_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->_programming_base; if (_tmp0_ == value) { return; } self->priv->_programming_base = value; _tmp1_ = math_buttons_get_mode (self); _tmp2_ = _tmp1_; if (_tmp2_ == BUTTON_MODE_PROGRAMMING) { MathEquation* _tmp3_; _tmp3_ = self->priv->equation; math_equation_set_number_base (_tmp3_, value); } g_object_notify_by_pspec ((GObject *) self, math_buttons_properties[MATH_BUTTONS_PROGRAMMING_BASE_PROPERTY]); } static void math_buttons_class_init (MathButtonsClass * klass) { math_buttons_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (MathButtonsPrivate)); G_OBJECT_CLASS (klass)->get_property = _vala_math_buttons_get_property; G_OBJECT_CLASS (klass)->set_property = _vala_math_buttons_set_property; G_OBJECT_CLASS (klass)->finalize = math_buttons_finalize; g_object_class_install_property (G_OBJECT_CLASS (klass), MATH_BUTTONS_MODE_PROPERTY, math_buttons_properties[MATH_BUTTONS_MODE_PROPERTY] = g_param_spec_enum ("mode", "mode", "mode", TYPE_BUTTON_MODE, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), MATH_BUTTONS_PROGRAMMING_BASE_PROPERTY, math_buttons_properties[MATH_BUTTONS_PROGRAMMING_BASE_PROPERTY] = g_param_spec_int ("programming-base", "programming-base", "programming-base", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); } static void math_buttons_instance_init (MathButtons * self) { GSimpleActionGroup* _tmp0_; self->priv = MATH_BUTTONS_GET_PRIVATE (self); self->priv->_programming_base = 10; self->priv->active_panel = NULL; _tmp0_ = g_simple_action_group_new (); self->priv->action_group = _tmp0_; } static void math_buttons_finalize (GObject * obj) { MathButtons * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_MATH_BUTTONS, MathButtons); _g_object_unref0 (self->priv->equation); _g_object_unref0 (self->priv->converter); _g_object_unref0 (self->priv->basic_ui); _g_object_unref0 (self->priv->advanced_ui); _g_object_unref0 (self->priv->financial_ui); _g_object_unref0 (self->priv->programming_ui); _g_object_unref0 (self->priv->bas_panel); _g_object_unref0 (self->priv->adv_panel); _g_object_unref0 (self->priv->fin_panel); _g_object_unref0 (self->priv->prog_panel); _g_object_unref0 (self->priv->active_panel); _g_object_unref0 (self->priv->base_combo); _g_object_unref0 (self->priv->base_label); _g_object_unref0 (self->priv->bit_panel); __g_list_free__g_object_unref0_0 (self->priv->toggle_bit_buttons); _g_object_unref0 (self->priv->character_code_dialog); _g_object_unref0 (self->priv->character_code_entry); _g_object_unref0 (self->priv->action_group); G_OBJECT_CLASS (math_buttons_parent_class)->finalize (obj); } GType math_buttons_get_type (void) { static volatile gsize math_buttons_type_id__volatile = 0; if (g_once_init_enter (&math_buttons_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (MathButtonsClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) math_buttons_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MathButtons), 0, (GInstanceInitFunc) math_buttons_instance_init, NULL }; GType math_buttons_type_id; math_buttons_type_id = g_type_register_static (gtk_box_get_type (), "MathButtons", &g_define_type_info, 0); g_once_init_leave (&math_buttons_type_id__volatile, math_buttons_type_id); } return math_buttons_type_id__volatile; } static void _vala_math_buttons_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { MathButtons * self; self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_MATH_BUTTONS, MathButtons); switch (property_id) { case MATH_BUTTONS_MODE_PROPERTY: g_value_set_enum (value, math_buttons_get_mode (self)); break; case MATH_BUTTONS_PROGRAMMING_BASE_PROPERTY: g_value_set_int (value, math_buttons_get_programming_base (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void _vala_math_buttons_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { MathButtons * self; self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_MATH_BUTTONS, MathButtons); switch (property_id) { case MATH_BUTTONS_MODE_PROPERTY: math_buttons_set_mode (self, g_value_get_enum (value)); break; case MATH_BUTTONS_PROGRAMMING_BASE_PROPERTY: math_buttons_set_programming_base (self, g_value_get_int (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { if ((array != NULL) && (destroy_func != NULL)) { int i; for (i = 0; i < array_length; i = i + 1) { if (((gpointer*) array)[i] != NULL) { destroy_func (((gpointer*) array)[i]); } } } } static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { _vala_array_destroy (array, array_length, destroy_func); g_free (array); }