#include <gtk/gtk.h>
#include "debugging/debugging.h"
-#include "version.h"
#include "aboutmsg.h"
#include "igl.h"
#include <gdk/gdkkeysyms.h>
#include <uilib/uilib.h>
+#include <gtk/gtkspinbutton.h>
#include "os/path.h"
#include "math/aabb.h"
void DoSides( int type, int axis ){
ModalDialog dialog;
+ //GtkEntry* sides_entry;
+ GtkWidget* sides_spin;
auto window = MainFrame_getWindow().create_dialog_window("Arbitrary sides", G_CALLBACK(dialog_delete_callback ), &dialog );
label.show();
hbox.pack_start( label, FALSE, FALSE, 0 );
}
+// {
+// auto entry = sides_entry;
+// entry.show();
+// hbox.pack_start( entry, FALSE, FALSE, 0 );
+// gtk_widget_grab_focus( entry );
+// }
{
- auto entry = sides_entry;
- entry.show();
- hbox.pack_start( entry, FALSE, FALSE, 0 );
- gtk_widget_grab_focus( entry );
+ GtkAdjustment* adj;
+ EBrushPrefab BrushPrefabType = (EBrushPrefab)type;
+ switch ( BrushPrefabType )
+ {
+ case eBrushPrism :
+ case eBrushCone :
+ adj = GTK_ADJUSTMENT( gtk_adjustment_new( 8, 3, 1022, 1, 10, 0 ) );
+ break;
+ case eBrushSphere :
+ adj = GTK_ADJUSTMENT( gtk_adjustment_new( 8, 3, 31, 1, 10, 0 ) );
+ break;
+ case eBrushRock :
+ adj = GTK_ADJUSTMENT( gtk_adjustment_new( 32, 10, 1000, 1, 10, 0 ) );
+ break;
+ default:
+ adj = GTK_ADJUSTMENT( gtk_adjustment_new( 8, 3, 31, 1, 10, 0 ) );
+ break;
+ }
+
+ GtkWidget* spin = gtk_spin_button_new( adj, 1, 0 );
+ gtk_widget_show( spin );
+ gtk_box_pack_start( GTK_BOX( hbox ), spin, FALSE, FALSE, 0 );
+ gtk_widget_set_size_request( spin, 64, -1 );
+ gtk_spin_button_set_numeric( GTK_SPIN_BUTTON( spin ), TRUE );
+
+ sides_spin = spin;
}
{
auto vbox = create_dialog_vbox( 4 );
}
if ( modal_dialog_show( window, dialog ) == eIDOK ) {
- const char *str = gtk_entry_get_text( sides_entry );
+// const char *str = gtk_entry_get_text( sides_entry );
- Scene_BrushConstructPrefab( GlobalSceneGraph(), (EBrushPrefab)type, atoi( str ), TextureBrowser_GetSelectedShader( GlobalTextureBrowser() ) );
+// Scene_BrushConstructPrefab( GlobalSceneGraph(), (EBrushPrefab)type, atoi( str ), TextureBrowser_GetSelectedShader( GlobalTextureBrowser() ) );
+ gtk_spin_button_update ( GTK_SPIN_BUTTON( sides_spin ) );
+ int sides = static_cast<int>( gtk_spin_button_get_value( GTK_SPIN_BUTTON( sides_spin ) ) );
+ Scene_BrushConstructPrefab( GlobalSceneGraph(), (EBrushPrefab)type, sides, TextureBrowser_GetSelectedShader( GlobalTextureBrowser() ) );
}
window.destroy();
OpenURL( cred.c_str() );
}
+static void AddParagraph( ui::VBox vbox, const char* text, bool use_markup ){
+ auto label = ui::Label( text );
+ gtk_label_set_use_markup( GTK_LABEL( label ), use_markup );
+ gtk_misc_set_alignment( GTK_MISC( label ), 0, 0 );
+ gtk_label_set_justify( label, GTK_JUSTIFY_LEFT );
+ label.show();
+ vbox.pack_start( label, TRUE, TRUE, 0 );
+}
+
+static void AddParagraph( ui::VBox vbox, const char* text ){
+ AddParagraph( vbox, text, false );
+}
+
void DoAbout(){
ModalDialog dialog;
ModalDialogButton ok_button( dialog, eIDOK );
- auto window = MainFrame_getWindow().create_modal_dialog_window("About NetRadiant", dialog );
+ auto window = MainFrame_getWindow().create_modal_dialog_window("About " RADIANT_NAME, dialog );
{
auto vbox = create_dialog_vbox( 4, 4 );
{
auto hbox = create_dialog_hbox( 4 );
- vbox.pack_start( hbox, FALSE, TRUE, 0 );
+ vbox.pack_start( hbox, FALSE, FALSE, 0 );
{
auto vbox2 = create_dialog_vbox( 4 );
- hbox.pack_start( vbox2, TRUE, FALSE, 0 );
+ hbox.pack_start( vbox2, FALSE, FALSE, 5 );
{
auto frame = create_dialog_frame( 0, ui::Shadow::IN );
vbox2.pack_start( frame, FALSE, FALSE, 0 );
}
{
- char const *label_text = "NetRadiant " RADIANT_VERSION "\n"
- __DATE__ "\n\n"
- RADIANT_ABOUTMSG "\n\n"
- "This program is free software\n"
- "licensed under the GNU GPL.\n\n"
- "NetRadiant is unsupported, however\n"
- "you may report your problems at\n"
- "https://gitlab.com/xonotic/netradiant/issues";
-
- auto label = ui::Label( label_text );
-
- label.show();
- hbox.pack_start( label, FALSE, FALSE, 0 );
- gtk_misc_set_alignment( GTK_MISC( label ), 1, 0.5 );
- gtk_label_set_justify( label, GTK_JUSTIFY_LEFT );
+ // HACK: that may not be related to font size
+ auto about_vbox = ui::VBox( FALSE, 5 );
+ about_vbox.show();
+ hbox.pack_start( about_vbox, FALSE, FALSE, 0 );
+
+ AddParagraph( about_vbox,
+ RADIANT_NAME " " RADIANT_VERSION_STRING " (" __DATE__ ")\n"
+ RADIANT_ABOUTMSG );
+ AddParagraph( about_vbox,
+ "Get news and latest build at "
+ "<a href='https://netradiant.gitlab.io/'>"
+ "netradiant.gitlab.io"
+ "</a>\n"
+ "Please report your issues at "
+ "<a href='https://gitlab.com/xonotic/netradiant/issues'>"
+ "gitlab.com/xonotic/netradiant/issues"
+ "</a>\n"
+ "The team cannot provide support for custom builds.", true );
+ AddParagraph( about_vbox,
+ RADIANT_NAME " is a community project maintained by "
+ "<a href='https://xonotic.org'>"
+ "Xonotic"
+ "</a>\n"
+ "and developed with help from "
+ "<a href='https://netradiant.gitlab.io/page/about/'>"
+ "other game projects"
+ "</a> and individuals. ", true );
+ AddParagraph( about_vbox,
+ "This program is free software licensed under the GNU GPL." );
}
{
auto vbox2 = create_dialog_vbox( 4 );
- hbox.pack_start( vbox2, FALSE, TRUE, 0 );
+ hbox.pack_start( vbox2, TRUE, TRUE, 0 );
{
auto button = create_modal_dialog_button( "OK", ok_button );
vbox2.pack_start( button, FALSE, FALSE, 0 );
+ gtk_widget_grab_focus( GTK_WIDGET( button ) );
}
{
auto button = create_dialog_button( "Credits", G_CALLBACK( about_button_credits ), 0 );