/*****************************************************************************\ Snes9x - Portable Super Nintendo Entertainment System (TM) emulator. This file is licensed under the Snes9x License. For further information, consult the LICENSE file in the root directory. \*****************************************************************************/ #include #include #include "gtk_builder_window.h" extern const unsigned char snes9x_ui[]; extern const int snes9x_ui_size; Glib::RefPtr global_builder; bool global_builder_created = false; GtkBuilderWindow::GtkBuilderWindow(const char *root) { if (!global_builder_created) { global_builder = Gtk::Builder::create(); global_builder->add_from_string((const gchar *)snes9x_ui, snes9x_ui_size); global_builder_created = true; } window = get_object(root); } GtkBuilderWindow::~GtkBuilderWindow() { } void GtkBuilderWindow::enable_widget(const char *name, bool state) { auto widget = get_object(name); widget->set_sensitive(state); } void GtkBuilderWindow::show_widget(const char *name, bool state) { auto widget = get_object(name); widget->set_visible(state); } void GtkBuilderWindow::resize(int width, int height) { window->resize(width, height); } void GtkBuilderWindow::refresh() { window->queue_draw(); } int GtkBuilderWindow::get_width() { return window->get_width(); } int GtkBuilderWindow::get_height() { return window->get_height(); } void GtkBuilderWindow::set_button_label(const char *name, const char *label) { get_object(name)->set_label(label); } bool GtkBuilderWindow::get_check(const char *name) { return get_object(name)->get_active(); } int GtkBuilderWindow::get_entry_value(const char *name) { auto text = get_object(name)->get_text(); return std::stoi(text); } std::string GtkBuilderWindow::get_entry_text(const char *name) { return get_object(name)->get_text(); } void GtkBuilderWindow::set_entry_value(const char *name, unsigned int value) { get_object(name)->set_text(std::to_string(value)); } void GtkBuilderWindow::set_entry_text(const char *name, const char *text) { get_object(name)->set_text(text); } float GtkBuilderWindow::get_slider(const char *name) { return get_object(name)->get_value(); } int GtkBuilderWindow::get_combo(const char *name) { return get_object(name)->get_active_row_number(); } void GtkBuilderWindow::set_slider(const char *name, float value) { get_object(name)->set_value(value); } void GtkBuilderWindow::set_check(const char *name, bool value) { get_object(name)->set_active(value); } void GtkBuilderWindow::set_combo(const char *name, unsigned char value) { get_object(name)->set_active(value); } void GtkBuilderWindow::set_spin(const char *name, double value) { get_object(name)->set_value(value); } double GtkBuilderWindow::get_spin(const char *name) { return get_object(name)->get_value(); } void GtkBuilderWindow::combo_box_append(const char *name, const char *value) { return combo_box_append(get_object(name).get(), value); } void GtkBuilderWindow::combo_box_append(Gtk::ComboBox *combo, const char *value) { GtkListStore *store; GtkTreeIter iter; store = GTK_LIST_STORE(combo->get_model()->gobj()); gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, 0, value, -1); } GtkWindow *GtkBuilderWindow::get_window() { return window->gobj(); } bool GtkBuilderWindow::has_focus(const char *widget) { return get_object(widget)->is_focus(); }