G
Hallöchen,
hab hier ein kleines Darstellungsproblem bei der GTK-Programmierung. Hier erstmal ein kleiner Quältextausschnit:
#include <stdio.h>
#include <gtk/gtk.h>
GtkWidget* TextField; /* Weiß das man globale Vars vermeiden sollte, wird noch geändert :) */
/* ... */
static GtkItemFactoryEntry MainMenu[] = {
{ "/_File", NULL, NULL, 0, "<Branch>" },
{ "/File/_New", "<control>N", GTK_SIGNAL_FUNC( MenuNew ), 0, "<Item>" },
{ "/File/_Save", "<control>S", NULL, 0, "<Item>" },
{ "/File/_Load", "<control>L", GTK_SIGNAL_FUNC( MenuLoad ), 0, "<Item>" },
{ "/File/_Close", "<control>C", GTK_SIGNAL_FUNC( MenuClose ), 0, "<Item>" },
{ "/File/_Quit", "<control>Q", GTK_SIGNAL_FUNC( MenuQuit ), 0, "<Item>" },
{ "/_Edit", NULL, NULL, 0, "<Branch>" },
{ "/Edit/_Undo", NULL, NULL, 0, "<Item>" },
{ "/_Help", NULL, NULL, 0, "<LastBranch>" },
{ "/_Help/_About", NULL, NULL, 0, "<Item>" },
};
static gint nMenuItems = sizeof( MainMenu ) / sizeof( MainMenu[0] );
gint EndEditor( GtkWidget widget, gpointer datum )
{
g_print( "Good bye ...\n" );
gtk_main_quit();
return TRUE;
}
int main( int argc, char* argv[] )
{
GtkWidget* MainWidget;
GtkWidget* HBox, * VBox, * CombBox;
GtkWidget* MenuBar, * ToolBar, * ScrollBar;
GtkWidget* TB_NewButton, * TB_LoadButton, * TB_SaveButton, * TB_CompButton;
GtkItemFactory* ItemFactory;
GtkAccelGroup* AccelGroup;
gtk_init( &argc, &argv );
MainWidget = gtk_window_new( GTK_WINDOW_TOPLEVEL );
gtk_widget_set_usize( GTK_WIDGET( MainWidget ), 600, 450 );
gtk_signal_connect( GTK_OBJECT( MainWidget ), "delete_event",
GTK_SIGNAL_FUNC( EndEditor ), NULL );
gtk_window_set_title( GTK_WINDOW( MainWidget ), "TryA" );
AccelGroup = gtk_accel_group_new();
ItemFactory = gtk_item_factory_new( GTK_TYPE_MENU_BAR, "<main>",
AccelGroup );
gtk_item_factory_create_items( ItemFactory, nMenuItems, MainMenu, NULL );
gtk_accel_group_attach( AccelGroup, GTK_OBJECT( MainWidget ) );
MenuBar = gtk_item_factory_get_widget( ItemFactory, "<main>" );
ToolBar = gtk_toolbar_new( GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_TEXT );
TB_NewButton = gtk_toolbar_append_item( GTK_TOOLBAR( ToolBar ), "New",
"New file", "Private", NULL, GTK_SIGNAL_FUNC( MenuNew ),
NULL );
TB_LoadButton = gtk_toolbar_append_item( GTK_TOOLBAR( ToolBar ), "Load",
"Load file", "Private", NULL, GTK_SIGNAL_FUNC( MenuLoad ),
NULL );
TB_SaveButton = gtk_toolbar_append_item( GTK_TOOLBAR( ToolBar ), "Save",
"Save file", "Private", NULL, GTK_SIGNAL_FUNC( MenuSave ),
NULL );
TB_CompButton = gtk_toolbar_append_item( GTK_TOOLBAR( ToolBar ), "Compile",
"Compile file", "Private", NULL, GTK_SIGNAL_FUNC( MenuTmp ),
NULL );
gtk_toolbar_set_space_size( GTK_TOOLBAR ( ToolBar ), 5 );
VBox = gtk_vbox_new( FALSE, 0 );
HBox = gtk_hbox_new( FALSE, 0 );
CombBox = gtk_vbox_new( FALSE, 0 );
TextField = gtk_text_new( NULL, NULL );
gtk_text_set_editable( GTK_TEXT( TextField ), TRUE );
ScrollBar = gtk_vscrollbar_new( GTK_TEXT( TextField )->vadj );
gtk_box_pack_start( GTK_BOX( VBox ), MenuBar, FALSE, FALSE, 0 );
gtk_box_pack_start( GTK_BOX( VBox ), ToolBar, FALSE, TRUE, 0 );
gtk_box_pack_start( GTK_BOX( HBox ), TextField, TRUE, TRUE, 0 );
gtk_box_pack_end( GTK_BOX( HBox ), ScrollBar, FALSE, FALSE, 0 );
gtk_box_pack_start( GTK_BOX( CombBox ), VBox, TRUE, TRUE, 0 );
gtk_box_pack_end( GTK_BOX( CombBox ), HBox, TRUE, TRUE, 0 );
gtk_container_add( GTK_CONTAINER( MainWidget ), CombBox );
gtk_widget_show_all( MainWidget );
gtk_main();
return 0;
}
Wenn ich jetzt das Programm laufen lasse, ensteht ein großer freier Raum zwischen der Toolbar und dem Textfeld mit der Scrollbar. Weiß nicht genau woran das liegen könnte. Einer von euch ne Idee ?