Small adjustments and underline (color) for tagged text in the console

This commit is contained in:
Pan7 2015-09-12 04:39:34 +02:00
parent 9c76371876
commit 60ee00288d
7 changed files with 138 additions and 80 deletions

View file

@ -119,7 +119,7 @@ void FindTextureDialog::BuildDialog(){
vbox = gtk_vbox_new( FALSE, 5 );
gtk_widget_show( vbox );
gtk_box_pack_start( GTK_BOX( hbox ), vbox, TRUE, TRUE, 0 );
gtk_box_pack_start( GTK_BOX( hbox ), vbox, TRUE, TRUE, 5 );
table = gtk_table_new( 2, 3, FALSE );
gtk_widget_show( table );

View file

@ -319,10 +319,20 @@ bool UpdateSel( int iIndex, eclass_t *pec ){
gtk_button_set_label( GTK_BUTTON( widget ), " " );
gtk_widget_hide( widget );
g_object_ref( widget );
gtk_widget_hide( widget );
#if GTK_CHECK_VERSION( 3,12,0 )
gtk_container_remove( GTK_CONTAINER( LayoutFlowBox ), widget );
GtkWidget * parent = gtk_widget_get_parent( GTK_WIDGET( widget ) );
if( parent && GTK_IS_FLOW_BOX_CHILD( parent ) )
{
gtk_container_remove( GTK_CONTAINER( parent ), widget );
gtk_container_remove( GTK_CONTAINER( LayoutFlowBox ), parent );
g_object_unref( parent );
} else
if( parent && GTK_IS_FLOW_BOX( parent ) )
{
gtk_container_remove( GTK_CONTAINER( LayoutFlowBox ), widget );
}
#else
gtk_container_remove( GTK_CONTAINER( LayoutTable ), widget );
#endif
@ -1257,6 +1267,8 @@ void GroupDlg::Create(){
GtkWidget* notebook = gtk_notebook_new();
gtk_container_add( GTK_CONTAINER( content_area ), notebook );
gtk_notebook_set_tab_pos( GTK_NOTEBOOK( notebook ), GTK_POS_BOTTOM );
gtk_widget_set_hexpand( GTK_WIDGET( notebook ), TRUE );
gtk_widget_set_vexpand( GTK_WIDGET( notebook ), TRUE );
gtk_widget_show( notebook );
m_pNotebook = notebook;
@ -1273,24 +1285,12 @@ void GroupDlg::Create(){
{
GtkWidget* split1 = gtk_paned_new( GTK_ORIENTATION_VERTICAL );
#if GTK_CHECK_VERSION( 3,12,0 )
todo; //do we want a wide handle?
gtk_paned_set_wide_handle( GTK_PANED( split1 ), TRUE );
#else
#endif
gtk_box_pack_start( GTK_BOX( vbox ), split1, TRUE, TRUE, 0 );
gtk_widget_show( split1 );
{
GtkWidget* split2 = gtk_paned_new( GTK_ORIENTATION_VERTICAL );
#if GTK_CHECK_VERSION(3,12,0)
todo; //do we want a wide handle?
gtk_paned_set_wide_handle( GTK_PANED( split2 ), TRUE );
#else
#endif
gtk_paned_pack1( GTK_PANED( split1 ), split2, TRUE, TRUE );
gtk_paned_pack1( GTK_PANED( split1 ), split2, TRUE, FALSE );
gtk_widget_show( split2 );
g_object_set_data( G_OBJECT( dialog ), "split1", split1 );
@ -1298,12 +1298,12 @@ void GroupDlg::Create(){
{
GtkWidget* vbox2 = gtk_box_new( GTK_ORIENTATION_VERTICAL, 2 );
gtk_paned_pack2( GTK_PANED( split1 ), vbox2, TRUE, TRUE );
gtk_paned_pack2( GTK_PANED( split1 ), vbox2, TRUE, FALSE );
gtk_widget_show( vbox2 );
{
GtkWidget* scr = gtk_scrolled_window_new( NULL, NULL );
gtk_paned_pack1( GTK_PANED( split2 ), scr, TRUE, TRUE );
gtk_paned_pack1( GTK_PANED( split2 ), scr, TRUE, FALSE );
gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scr ), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS );
gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( scr ), GTK_SHADOW_IN );
gtk_widget_show( scr );
@ -1329,6 +1329,24 @@ void GroupDlg::Create(){
gtk_container_add( GTK_CONTAINER( scr ), view );
/* {
GtkTreeViewColumn * column = gtk_tree_view_get_column( GTK_TREE_VIEW( view ), 0 );
if( column )
{
gint height = 0;
gtk_tree_view_column_cell_get_size( column, NULL, NULL, NULL, NULL, &height );
if( height > 0 )
{
//show at least 3 rows
gtk_widget_set_size_request( GTK_WIDGET( view ), -1, height * 3 );
gtk_widget_set_size_request( GTK_WIDGET( scr ), -1, height * 3 );
gtk_scrolled_window_set_min_content_height( GTK_SCROLLED_WINDOW( scr ), height * 3 );
}
}
}
*/
gtk_widget_set_hexpand( GTK_WIDGET( view ), TRUE );
gtk_widget_set_vexpand( GTK_WIDGET( view ), TRUE );
gtk_widget_show( view );
g_object_unref( G_OBJECT( store ) );
@ -1338,10 +1356,9 @@ void GroupDlg::Create(){
{
GtkWidget* scr = gtk_scrolled_window_new( NULL, NULL );
gtk_paned_pack2( GTK_PANED( split2 ), scr, TRUE, TRUE );
gtk_paned_pack2( GTK_PANED( split2 ), scr, TRUE, FALSE );
gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scr ), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS );
gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( scr ), GTK_SHADOW_IN );
gtk_scrolled_window_set_min_content_height( GTK_SCROLLED_WINDOW( scr ), 20 );
gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( scr ), GTK_SHADOW_IN );
gtk_widget_show( scr );
{
@ -1349,8 +1366,22 @@ void GroupDlg::Create(){
gtk_text_view_set_wrap_mode( GTK_TEXT_VIEW( text ), GTK_WRAP_WORD );
gtk_text_view_set_editable( GTK_TEXT_VIEW( text ), FALSE );
gtk_container_add( GTK_CONTAINER( scr ), text );
gtk_widget_set_size_request( text, 0, -1 ); // allow shrinking
{
PangoLayout * cell = gtk_widget_create_pango_layout( GTK_WIDGET( text ), "X" );
PangoRectangle rect;
rect.height = 0;
pango_layout_get_pixel_extents( cell, NULL, &rect );
g_object_unref( cell );
//show at least 1 rows of text
gtk_widget_set_size_request( GTK_WIDGET( text ), -1, rect.height * 1 );
gtk_widget_set_size_request( GTK_WIDGET( scr ), -1, rect.height * 1 );
gtk_scrolled_window_set_min_content_height( GTK_SCROLLED_WINDOW( scr ), rect.height * 1 );
}
gtk_widget_set_hexpand( GTK_WIDGET( text ), TRUE );
gtk_widget_set_vexpand( GTK_WIDGET( text ), TRUE );
gtk_widget_show( text );
EntWidgets[EntComment] = text;
}
}
@ -1382,7 +1413,7 @@ void GroupDlg::Create(){
gtk_box_pack_start( GTK_BOX( vbox2 ), scr, TRUE, TRUE, 0 );
gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scr ), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC );
gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( scr ), GTK_SHADOW_IN );
gtk_scrolled_window_set_min_content_height( GTK_SCROLLED_WINDOW( scr ), 20 );
//gtk_scrolled_window_set_min_content_height( GTK_SCROLLED_WINDOW( scr ), 20 );
gtk_widget_show( scr );
{
@ -1411,6 +1442,23 @@ void GroupDlg::Create(){
gtk_container_add( GTK_CONTAINER( scr ), view );
{
GtkTreeViewColumn * column = gtk_tree_view_get_column( GTK_TREE_VIEW( view ), 0 );
if( column )
{
gint height = 0;
gtk_tree_view_column_cell_get_size( column, NULL, NULL, NULL, NULL, &height );
if( height > 0 )
{
//show at least 3 rows
gtk_widget_set_size_request( GTK_WIDGET( view ), -1, height * 1 );
gtk_widget_set_size_request( GTK_WIDGET( scr ), -1, height * 1 );
gtk_scrolled_window_set_min_content_height( GTK_SCROLLED_WINDOW( scr ), height * 1 );
}
}
}
gtk_widget_set_hexpand( GTK_WIDGET( view ), TRUE );
gtk_widget_set_vexpand( GTK_WIDGET( view ), TRUE );
gtk_widget_show( view );
g_object_unref( G_OBJECT( store ) );

View file

@ -476,6 +476,7 @@ void OnProjectViewSelChanged( GtkTreeSelection *treeselection, gpointer data )
static void OnDoProjectSettings_realize( GtkWidget *widget, gpointer data )
{
OnProjectViewSelChanged( gtk_tree_view_get_selection( GTK_TREE_VIEW( widget ) ), data );
OnSelchangeComboWhatgame( widget, data );
}
void DoProjectSettings(){
@ -514,6 +515,7 @@ void DoProjectSettings(){
gtk_container_add( GTK_CONTAINER( frame ), table );
gtk_grid_set_row_spacing( GTK_GRID( table ), 5 );
gtk_grid_set_column_spacing( GTK_GRID( table ), 5 );
gtk_container_set_border_width( GTK_CONTAINER( table ), 5 );
gtk_widget_show( table );
label = gtk_label_new( _( "basepath" ) );

View file

@ -844,34 +844,30 @@ static const int MSGBOX_PAD_MINOR = 2;
//! that uses it still works...
int WINAPI gtk_MessageBoxNew( void *parent, const char *message,
const char *caption, const guint32 flags,
const char *URL ) {
const char *URL )
{
GtkWidget *dialog, *content_area;
gint response_id;
int ret;
GtkDialogFlags dialog_flags = GTK_DIALOG_DESTROY_WITH_PARENT;
int loop = TRUE, ret = IDCANCEL;
dialog = gtk_dialog_new_with_buttons( caption, NULL, dialog_flags, NULL );
// create dialog window
GtkWidget *dlg = gtk_window_new( GTK_WINDOW_TOPLEVEL );
g_signal_connect( dlg, "delete_event",
G_CALLBACK( dialog_delete_callback ), NULL );
g_signal_connect( dlg, "destroy",
G_CALLBACK( gtk_widget_destroy ), NULL );
gtk_window_set_title( GTK_WINDOW( dlg ), caption );
gtk_window_set_resizable( GTK_WINDOW( dlg ), TRUE );
gtk_container_set_border_width( GTK_CONTAINER( dlg ), MSGBOX_PAD_MAJOR );
g_object_set_data( G_OBJECT( dlg ), "loop", &loop );
g_object_set_data( G_OBJECT( dlg ), "ret", &ret );
gtk_widget_realize( dlg );
gtk_container_set_border_width( GTK_CONTAINER( dialog ), MSGBOX_PAD_MAJOR );
if( parent ) {
gtk_window_set_transient_for( GTK_WINDOW( dlg ), GTK_WINDOW( parent ) );
gtk_window_set_position( GTK_WINDOW( dlg ), GTK_WIN_POS_CENTER_ON_PARENT );
gtk_window_set_transient_for( GTK_WINDOW( dialog ), GTK_WINDOW( parent ) );
gtk_window_set_position( GTK_WINDOW( dialog ), GTK_WIN_POS_CENTER_ON_PARENT );
}
GtkAccelGroup *accel = gtk_accel_group_new();
gtk_window_add_accel_group( GTK_WINDOW( dlg ), accel );
gtk_window_add_accel_group( GTK_WINDOW( dialog ), accel );
content_area = gtk_dialog_get_content_area( GTK_DIALOG( dialog ) );
// begin layout
GtkWidget *outer_vbox = gtk_box_new( GTK_ORIENTATION_VERTICAL, MSGBOX_PAD_MAJOR );
gtk_container_add( GTK_CONTAINER( dlg ), outer_vbox );
gtk_container_add( GTK_CONTAINER( content_area ), outer_vbox );
gtk_widget_show( outer_vbox );
// add icon
@ -930,16 +926,16 @@ int WINAPI gtk_MessageBoxNew( void *parent, const char *message,
switch( flags & MB_TYPEMASK ) {
case MB_OK:
default: {
GtkWidget *btn_ok = gtk_AddDlgButton( buttons_hbox, "Ok", IDOK, TRUE );
GtkWidget *btn_ok = gtk_dialog_add_button( GTK_DIALOG( dialog ), _( "OK" ), GTK_RESPONSE_OK );
gtk_widget_add_accelerator( btn_ok, "clicked", accel, GDK_KEY_Escape, (GdkModifierType)0, (GtkAccelFlags)0 );
gtk_widget_add_accelerator( btn_ok, "clicked", accel, GDK_KEY_Return, (GdkModifierType)0, (GtkAccelFlags)0 );
ret = IDOK;
break;
}
case MB_OKCANCEL: {
GtkWidget *btn_ok = gtk_AddDlgButton( buttons_hbox, "Ok", IDOK, TRUE );
GtkWidget *btn_ok = gtk_dialog_add_button( GTK_DIALOG( dialog ), _( "OK" ), GTK_RESPONSE_OK );
gtk_widget_add_accelerator( btn_ok, "clicked", accel, GDK_KEY_Return, (GdkModifierType)0, (GtkAccelFlags)0 );
GtkWidget *btn_cancel = gtk_AddDlgButton( buttons_hbox, "Cancel", IDCANCEL, FALSE );
GtkWidget *btn_cancel = gtk_dialog_add_button( GTK_DIALOG( dialog ), _( "Cancel" ), GTK_RESPONSE_CANCEL );
gtk_widget_add_accelerator( btn_cancel, "clicked", accel, GDK_KEY_Escape, (GdkModifierType)0, (GtkAccelFlags)0 );
ret = IDCANCEL;
break;
@ -948,18 +944,18 @@ int WINAPI gtk_MessageBoxNew( void *parent, const char *message,
//! @todo fill out
break;
}
case MB_YESNOCANCEL: {
case MB_YESNOCANCEL: {
//! @todo accelerators?
gtk_AddDlgButton( buttons_hbox, "Yes", IDYES, TRUE );
gtk_AddDlgButton( buttons_hbox, "No", IDNO, FALSE );
gtk_AddDlgButton( buttons_hbox, "Cancel", IDCANCEL, FALSE );
gtk_dialog_add_button( GTK_DIALOG( dialog ), _( "Yes" ), GTK_RESPONSE_YES );
gtk_dialog_add_button( GTK_DIALOG( dialog ), _( "No" ), GTK_RESPONSE_NO );
gtk_dialog_add_button( GTK_DIALOG( dialog ), _( "Cancel" ), GTK_RESPONSE_CANCEL );
ret = IDCANCEL;
break;
}
case MB_YESNO: {
//! @todo accelerators?
gtk_AddDlgButton( buttons_hbox, "Yes", IDYES, TRUE );
gtk_AddDlgButton( buttons_hbox, "No", IDNO, FALSE );
gtk_dialog_add_button( GTK_DIALOG( dialog ), _( "Yes" ), GTK_RESPONSE_YES );
gtk_dialog_add_button( GTK_DIALOG( dialog ), _( "No" ), GTK_RESPONSE_NO );
ret = IDNO;
break;
}
@ -982,20 +978,31 @@ int WINAPI gtk_MessageBoxNew( void *parent, const char *message,
g_signal_connect( btn_url, "clicked",
G_CALLBACK( dialog_url_callback ), NULL );
g_object_set_data( G_OBJECT( btn_url ), "URL", (void *)URL );
gtk_widget_set_can_default( btn_url, TRUE );
gtk_widget_grab_default( btn_url );
gtk_widget_show( btn_url );
}
// show it
gtk_widget_show( dlg );
gtk_grab_add( dlg );
gtk_widget_show( dialog );
while( loop )
gtk_main_iteration();
response_id = gtk_dialog_run( GTK_DIALOG( dialog ) );
gtk_grab_remove( dlg );
gtk_widget_destroy( dlg );
switch( response_id )
{
case GTK_RESPONSE_OK:
ret = IDOK;
break;
case GTK_RESPONSE_CANCEL:
ret = IDCANCEL;
break;
case GTK_RESPONSE_YES:
ret = IDYES;
break;
case GTK_RESPONSE_NO:
ret = IDNO;
break;
}
gtk_widget_destroy( dialog );
return ret;
}

View file

@ -2391,7 +2391,7 @@ static void textdirlist_cursor_changed( GtkTreeView *tree_view, gpointer user_da
textdirlist_activate( tree_view );
}
GtkWidget* create_texdirlist_widget( void )
GtkWidget* create_texdirlist_widget( gint * position )
{
GtkWidget *scr;
GtkWidget* view;
@ -2439,16 +2439,10 @@ GtkWidget* create_texdirlist_widget( void )
gtk_widget_show( scr );
#if GTK_CHECK_VERSION( 3,12,0 )
todo; //set the scrolledwindow to the default size that doesn't require scrollbars
#else
if( position )
{
gint view_width;
//trying to set a nice initial size for the scrolledwindow
gtk_widget_get_preferred_width( view, NULL, &view_width );
gtk_widget_set_size_request( scr, view_width + 25, -1 );
gtk_widget_get_preferred_width( view, NULL, position );
}
#endif
return scr;
}
@ -2688,7 +2682,7 @@ void MainFrame::Create(){
m_pCamWnd = new CamWnd();
{
GtkWidget* frame = create_framed_widget( m_pCamWnd->GetWidget() );
gtk_paned_add1( GTK_PANED( vsplit2 ), frame );
gtk_paned_pack1( GTK_PANED( vsplit2 ), frame, TRUE, TRUE );
}
// xy
@ -2715,15 +2709,17 @@ void MainFrame::Create(){
m_pTexWnd = new TexWnd();
{
GtkWidget* frame = create_framed_texwnd( m_pTexWnd );
GtkWidget* texDirList = create_texdirlist_widget();
gint pos = 0;
GtkWidget* texDirList = create_texdirlist_widget( &pos );
GtkWidget* texSplit = gtk_paned_new( GTK_ORIENTATION_HORIZONTAL );
gtk_paned_add2( GTK_PANED( vsplit2 ), texSplit );
gtk_paned_pack2( GTK_PANED( vsplit2 ), texSplit, TRUE, FALSE );
gtk_paned_add1( GTK_PANED( texSplit ), texDirList );
gtk_paned_add2( GTK_PANED( texSplit ), frame );
gtk_paned_set_position( GTK_PANED( texSplit ), pos );
gtk_widget_show( texSplit );
}

View file

@ -29,6 +29,8 @@
#include "gtkmisc.h"
#include "filters.h"
#include <glib/gi18n.h>
extern MainFrame* g_pParentWnd;
int modified; // for quit confirmation (0 = clean, 1 = unsaved,
@ -770,7 +772,7 @@ void Map_SaveFile( const char *filename, qboolean use_region ){
clock_t start, finish;
double elapsed_time;
start = clock();
Sys_Printf( "Saving map to %s\n",filename );
Sys_Printf( _( "Saving map to %s\n" ), filename );
Pointfile_Clear();
@ -785,12 +787,12 @@ void Map_SaveFile( const char *filename, qboolean use_region ){
rename( filename, backup );
}
Sys_Printf( "Map_SaveFile: %s\n", filename );
Sys_Printf( _( "Map_SaveFile: %s\n" ), filename );
// build the out data stream
FileStream file;
if ( !file.Open( filename,"w" ) ) {
Sys_FPrintf( SYS_ERR, "ERROR: couldn't open %s for write\n", filename );
Sys_FPrintf( SYS_ERR, _( "ERROR: couldn't open %s for write\n" ), filename );
return;
}
@ -802,7 +804,7 @@ void Map_SaveFile( const char *filename, qboolean use_region ){
finish = clock();
elapsed_time = (double)( finish - start ) / CLOCKS_PER_SEC;
Sys_Printf( "Saved in %-.2f second(s).\n",elapsed_time );
Sys_Printf( _( "Saved in %-.2f second(s).\n" ), elapsed_time );
modified = false;
if ( !strstr( filename, "autosave" ) ) {
@ -816,7 +818,7 @@ void Map_SaveFile( const char *filename, qboolean use_region ){
Sys_Beep();
Sys_Status( "Saved.", 0 );
Sys_Status( _( "Saved." ), 0 );
}
}
@ -827,7 +829,7 @@ void Map_SaveFile( const char *filename, qboolean use_region ){
===========
*/
void Map_New( void ){
Sys_Printf( "Map_New\n" );
Sys_Printf( _( "New Map.\n" ) );
Map_Free();
Q_strncpyz( currentmap, "unnamed.map", sizeof( currentmap ) );

View file

@ -1773,9 +1773,12 @@ extern "C" void Sys_FPrintf_VA( int level, const char *text, va_list args ) {
const GdkRGBA red = { 1, 0, 0, 1 };
const GdkRGBA black = { 0, 0, 0, 1 };
static GtkTextTag* error_tag = gtk_text_buffer_create_tag( buffer, "red_foreground", "foreground-rgba", &red, "foreground-set", TRUE, NULL );
static GtkTextTag* warning_tag = gtk_text_buffer_create_tag( buffer, "yellow_foreground", "foreground-rgba", &yellow, "foreground-set", TRUE, NULL );
static GtkTextTag* standard_tag = gtk_text_buffer_create_tag( buffer, "black_foreground", "foreground-rgba", &black, "foreground-set", TRUE, NULL );
// static GtkTextTag* error_tag = gtk_text_buffer_create_tag( buffer, "red_foreground", "foreground-rgba", &red, "foreground-set", TRUE, NULL );
// static GtkTextTag* warning_tag = gtk_text_buffer_create_tag( buffer, "yellow_foreground", "foreground-rgba", &yellow, "foreground-set", TRUE, NULL );
// static GtkTextTag* standard_tag = gtk_text_buffer_create_tag( buffer, "black_foreground", "foreground-rgba", &black, "foreground-set", TRUE, NULL );
static GtkTextTag* error_tag = gtk_text_buffer_create_tag( buffer, "red_underline", "underline", PANGO_UNDERLINE_SINGLE, "underline-set", TRUE, "underline-rgba", &red, "underline-rgba-set", TRUE, NULL );
static GtkTextTag* warning_tag = gtk_text_buffer_create_tag( buffer, "yellow_underline", "underline", PANGO_UNDERLINE_SINGLE, "underline-set", TRUE, "underline-rgba", &yellow, "underline-rgba-set", TRUE, NULL );
static GtkTextTag* standard_tag = NULL;
GtkTextTag* tag;
switch ( level )
{