X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fgtkmisc.cpp;h=e4e784c1e9815854d4674c1c86eb1c76fb2df81f;hb=refs%2Fheads%2FTimePath%2Fdevelop;hp=76ad6e162c9939ca00e747fa47fb16becd1430e4;hpb=0110e3a8f3ab54c17a1785e17c7246adf8e13a46;p=xonotic%2Fnetradiant.git diff --git a/radiant/gtkmisc.cpp b/radiant/gtkmisc.cpp index 76ad6e16..e4e784c1 100644 --- a/radiant/gtkmisc.cpp +++ b/radiant/gtkmisc.cpp @@ -50,98 +50,114 @@ // ============================================================================= // Misc stuff -void command_connect_accelerator( const char* name ){ - const Command& command = GlobalCommands_find( name ); - GlobalShortcuts_register( name, 1 ); - global_accel_group_connect( command.m_accelerator, command.m_callback ); +void command_connect_accelerator(const char *name) +{ + const Command &command = GlobalCommands_find(name); + GlobalShortcuts_register(name, 1); + global_accel_group_connect(command.m_accelerator, command.m_callback); } -void command_disconnect_accelerator( const char* name ){ - const Command& command = GlobalCommands_find( name ); - global_accel_group_disconnect( command.m_accelerator, command.m_callback ); +void command_disconnect_accelerator(const char *name) +{ + const Command &command = GlobalCommands_find(name); + global_accel_group_disconnect(command.m_accelerator, command.m_callback); } -void toggle_add_accelerator( const char* name ){ - const Toggle& toggle = GlobalToggles_find( name ); - GlobalShortcuts_register( name, 2 ); - global_accel_group_connect( toggle.m_command.m_accelerator, toggle.m_command.m_callback ); +void toggle_add_accelerator(const char *name) +{ + const Toggle &toggle = GlobalToggles_find(name); + GlobalShortcuts_register(name, 2); + global_accel_group_connect(toggle.m_command.m_accelerator, toggle.m_command.m_callback); } -void toggle_remove_accelerator( const char* name ){ - const Toggle& toggle = GlobalToggles_find( name ); - global_accel_group_disconnect( toggle.m_command.m_accelerator, toggle.m_command.m_callback ); +void toggle_remove_accelerator(const char *name) +{ + const Toggle &toggle = GlobalToggles_find(name); + global_accel_group_disconnect(toggle.m_command.m_accelerator, toggle.m_command.m_callback); } -ui::CheckMenuItem create_check_menu_item_with_mnemonic( ui::Menu menu, const char* mnemonic, const char* commandName ){ - GlobalShortcuts_register( commandName, 2 ); - const Toggle& toggle = GlobalToggles_find( commandName ); - global_accel_group_connect( toggle.m_command.m_accelerator, toggle.m_command.m_callback ); - return create_check_menu_item_with_mnemonic( menu, mnemonic, toggle ); +ui::CheckMenuItem create_check_menu_item_with_mnemonic(ui::Menu menu, const char *mnemonic, const char *commandName) +{ + GlobalShortcuts_register(commandName, 2); + const Toggle &toggle = GlobalToggles_find(commandName); + global_accel_group_connect(toggle.m_command.m_accelerator, toggle.m_command.m_callback); + return create_check_menu_item_with_mnemonic(menu, mnemonic, toggle); } -ui::MenuItem create_menu_item_with_mnemonic( ui::Menu menu, const char *mnemonic, const char* commandName ){ - GlobalShortcuts_register( commandName, 1 ); - const Command& command = GlobalCommands_find( commandName ); - global_accel_group_connect( command.m_accelerator, command.m_callback ); - return create_menu_item_with_mnemonic( menu, mnemonic, command ); +ui::MenuItem create_menu_item_with_mnemonic(ui::Menu menu, const char *mnemonic, const char *commandName) +{ + GlobalShortcuts_register(commandName, 1); + const Command &command = GlobalCommands_find(commandName); + global_accel_group_connect(command.m_accelerator, command.m_callback); + return create_menu_item_with_mnemonic(menu, mnemonic, command); } -ui::ToolButton toolbar_append_button( ui::Toolbar toolbar, const char* description, const char* icon, const char* commandName ){ - return toolbar_append_button( toolbar, description, icon, GlobalCommands_find( commandName ) ); +ui::ToolButton +toolbar_append_button(ui::Toolbar toolbar, const char *description, const char *icon, const char *commandName) +{ + return toolbar_append_button(toolbar, description, icon, GlobalCommands_find(commandName)); } -ui::ToggleToolButton toolbar_append_toggle_button( ui::Toolbar toolbar, const char* description, const char* icon, const char* commandName ){ - return toolbar_append_toggle_button( toolbar, description, icon, GlobalToggles_find( commandName ) ); +ui::ToggleToolButton +toolbar_append_toggle_button(ui::Toolbar toolbar, const char *description, const char *icon, const char *commandName) +{ + return toolbar_append_toggle_button(toolbar, description, icon, GlobalToggles_find(commandName)); } // ============================================================================= // File dialog -bool color_dialog( ui::Widget parent, Vector3& color, const char* title ){ - GdkColor clr = { 0, guint16(color[0] * 65535), guint16(color[1] * 65535), guint16(color[2] * 65535) }; - ModalDialog dialog; - - auto dlg = ui::Widget(gtk_color_selection_dialog_new( title )); - gtk_color_selection_set_current_color( GTK_COLOR_SELECTION( gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG( dlg )) ), &clr ); - dlg.connect( "delete_event", G_CALLBACK( dialog_delete_callback ), &dialog ); - GtkWidget *ok_button, *cancel_button; - g_object_get(dlg, "ok-button", &ok_button, "cancel-button", &cancel_button, nullptr); - ui::Widget(ok_button).connect( "clicked", G_CALLBACK( dialog_button_ok ), &dialog ); - ui::Widget(cancel_button).connect( "clicked", G_CALLBACK( dialog_button_cancel ), &dialog ); - - if ( parent ) { - gtk_window_set_transient_for( GTK_WINDOW( dlg ), GTK_WINDOW( parent ) ); - } - - bool ok = modal_dialog_show( ui::Window(GTK_WINDOW( dlg )), dialog ) == eIDOK; - if ( ok ) { - gtk_color_selection_get_current_color( GTK_COLOR_SELECTION( gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG( dlg )) ), &clr ); - color[0] = clr.red / 65535.0f; - color[1] = clr.green / 65535.0f; - color[2] = clr.blue / 65535.0f; - } - - gtk_widget_destroy( dlg ); - - return ok; +bool color_dialog(ui::Window parent, Vector3 &color, const char *title) +{ + GdkColor clr = {0, guint16(color[0] * 65535), guint16(color[1] * 65535), guint16(color[2] * 65535)}; + ModalDialog dialog; + + auto dlg = ui::Window::from(gtk_color_selection_dialog_new(title)); + gtk_color_selection_set_current_color( + GTK_COLOR_SELECTION(gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(dlg))), &clr); + dlg.connect("delete_event", G_CALLBACK(dialog_delete_callback), &dialog); + GtkWidget *ok_button, *cancel_button; + g_object_get(G_OBJECT(dlg), "ok-button", &ok_button, "cancel-button", &cancel_button, nullptr); + ui::Widget::from(ok_button).connect("clicked", G_CALLBACK(dialog_button_ok), &dialog); + ui::Widget::from(cancel_button).connect("clicked", G_CALLBACK(dialog_button_cancel), &dialog); + + if (parent) { + gtk_window_set_transient_for(dlg, parent); + } + + bool ok = modal_dialog_show(dlg, dialog) == eIDOK; + if (ok) { + gtk_color_selection_get_current_color( + GTK_COLOR_SELECTION(gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(dlg))), + &clr); + color[0] = clr.red / 65535.0f; + color[1] = clr.green / 65535.0f; + color[2] = clr.blue / 65535.0f; + } + + dlg.destroy(); + + return ok; } -void button_clicked_entry_browse_file( ui::Widget widget, ui::Entry entry ){ - const char *filename = ui::Widget(gtk_widget_get_toplevel( widget )).file_dialog( TRUE, "Choose File", gtk_entry_get_text( entry ) ); +void button_clicked_entry_browse_file(ui::Widget widget, ui::Entry entry) +{ + const char *filename = widget.file_dialog(TRUE, "Choose File", gtk_entry_get_text(entry)); - if ( filename != 0 ) { - entry.text(filename); - } + if (filename != 0) { + entry.text(filename); + } } -void button_clicked_entry_browse_directory( ui::Widget widget, ui::Entry entry ){ - const char* text = gtk_entry_get_text( entry ); - char *dir = dir_dialog( ui::Widget(gtk_widget_get_toplevel( widget )), "Choose Directory", path_is_absolute( text ) ? text : "" ); - - if ( dir != 0 ) { - gchar* converted = g_filename_to_utf8( dir, -1, 0, 0, 0 ); - entry.text(converted); - g_free( dir ); - g_free( converted ); - } +void button_clicked_entry_browse_directory(ui::Widget widget, ui::Entry entry) +{ + const char *text = gtk_entry_get_text(entry); + char *dir = dir_dialog(widget.window(), "Choose Directory", path_is_absolute(text) ? text : ""); + + if (dir != 0) { + gchar *converted = g_filename_to_utf8(dir, -1, 0, 0, 0); + entry.text(converted); + g_free(dir); + g_free(converted); + } }