mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-02 14:10:21 +02:00
+ Added third gdk article
This commit is contained in:
parent
0ca35bb1ee
commit
c2e90d2919
BIN
docs/gtk3ex/ex1.png
Normal file
BIN
docs/gtk3ex/ex1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.3 KiB |
106
docs/gtk3ex/ex1.pp
Normal file
106
docs/gtk3ex/ex1.pp
Normal file
@ -0,0 +1,106 @@
|
||||
program ex1;
|
||||
|
||||
{$mode objfpc}
|
||||
|
||||
uses
|
||||
glib,gtk;
|
||||
|
||||
var
|
||||
Window : PGtkWidget;
|
||||
WinBox : PGtkWidget;
|
||||
MenuBar : PGtkWidget;
|
||||
DisplayLabel : PgtkWidget;
|
||||
|
||||
procedure destroy(widget : pGtkWidget ; data: pgpointer ); cdecl;
|
||||
begin
|
||||
gtk_main_quit();
|
||||
end;
|
||||
|
||||
procedure menu(Data : GPointer; Action : Guint; Widget : pGtkWidget); cdecl;
|
||||
|
||||
Var
|
||||
TheLabel : PgtkWidget;
|
||||
LabelText : Pchar;
|
||||
S : AnsiString;
|
||||
|
||||
begin
|
||||
TheLabel := g_list_nth_data(gtk_container_children(GTK_CONTAINER(Widget)),0);
|
||||
gtk_label_get(gtk_Label(theLabel),@LabelText);
|
||||
S := 'Chosen menu : ' + Strpas(Labeltext);
|
||||
gtk_label_set_text(GTK_LABEL(DisplayLabel),pchar(S));
|
||||
end;
|
||||
|
||||
{
|
||||
TGtkItemFactoryEntry = record
|
||||
path : Pgchar;
|
||||
accelerator : Pgchar;
|
||||
callback : TGtkItemFactoryCallback;
|
||||
callback_action : guint;
|
||||
item_type : Pgchar;
|
||||
end;
|
||||
}
|
||||
|
||||
Type
|
||||
FC = TGtkItemFactoryCallback;
|
||||
|
||||
Const
|
||||
NrMenuItems = 21;
|
||||
TheMenu : Array[1..NrMenuItems] of TGtkItemFactoryEntry = (
|
||||
(path:'/_File';Accelerator:Nil;Callback:Nil;Callback_action:1;item_type:'<Branch>'),
|
||||
(path:'/File/_New';Accelerator:'<ctrl>N';Callback:FC(@Menu);Callback_action:1;item_type:Nil),
|
||||
(path:'/File/_Open';Accelerator:'<control>O';Callback:FC(@Menu);Callback_action:1;item_type:Nil),
|
||||
(path:'/File/_Save';Accelerator:'<control>S';Callback:FC(@Menu);Callback_action:1;item_type:Nil),
|
||||
(path:'/File/sep1';Accelerator:Nil;Callback:Nil;Callback_action:1;item_type:'<Separator>'),
|
||||
(path:'/File/E_xit';Accelerator:'<alt>X';Callback:FC(@destroy);Callback_action:1;item_type:Nil),
|
||||
(path:'/_Radio';Accelerator:Nil;Callback:Nil;Callback_action:1;item_type:'<Branch>'),
|
||||
(path:'/Radio/Radio _1';Accelerator:Nil;Callback:Nil;Callback_action:1;item_type:'<RadioItem>'),
|
||||
(path:'/Radio/Radio _2';Accelerator:Nil;Callback:Nil;Callback_action:1;item_type:'<RadioItem>'),
|
||||
(path:'/Radio/Radio _3';Accelerator:Nil;Callback:Nil;Callback_action:1;item_type:'<RadioItem>'),
|
||||
(path:'/_Check';Accelerator:Nil;Callback:Nil;Callback_action:1;item_type:'<Branch>'),
|
||||
(path:'/Check/Check _1';Accelerator:Nil;Callback:Nil;Callback_action:1;item_type:'<CheckItem>'),
|
||||
(path:'/Check/Check _2';Accelerator:Nil;Callback:Nil;Callback_action:1;item_type:'<CheckItem>'),
|
||||
(path:'/Check/Check _3';Accelerator:Nil;Callback:Nil;Callback_action:1;item_type:'<CheckItem>'),
|
||||
(path:'/_Toggle';Accelerator:Nil;Callback:Nil;Callback_action:1;item_type:'<Branch>'),
|
||||
(path:'/Toggle/Toggle _1';Accelerator:Nil;Callback:Nil;Callback_action:1;item_type:'<CheckItem>'),
|
||||
(path:'/Toggle/Toggle _2';Accelerator:Nil;Callback:Nil;Callback_action:1;item_type:'<CheckItem>'),
|
||||
(path:'/Toggle/Toggle _3';Accelerator:Nil;Callback:Nil;Callback_action:1;item_type:'<CheckItem>'),
|
||||
(path:'/_Help';Accelerator:Nil;Callback:Nil;Callback_action:1;item_type:'<LastBranch>'),
|
||||
(path:'/Help/Contents';Accelerator:'F1';Callback:FC(@Menu);Callback_action:1;item_type:Nil),
|
||||
(path:'/Help/About';Accelerator:'<mod1>A';Callback:FC(@Menu);Callback_action:1;item_type:Nil)
|
||||
);
|
||||
|
||||
|
||||
Procedure MakeMenu;
|
||||
|
||||
Var
|
||||
Factory : PGtkItemFactory;
|
||||
Accel : PGtkAccelGroup;
|
||||
|
||||
begin
|
||||
accel:=gtk_accel_group_new;
|
||||
factory :=gtk_item_factory_new(GTK_MENU_BAR_TYPE,'<main>',accel);
|
||||
gtk_item_factory_create_items(Factory,NrMenuItems,@TheMenu,Nil);
|
||||
gtk_window_add_accel_group(GTK_Window(Window),accel);
|
||||
MenuBar:=gtk_item_factory_get_widget (Factory, '<main>');
|
||||
end;
|
||||
|
||||
|
||||
begin
|
||||
gtk_init (@argc, @argv);
|
||||
window := gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title (GTK_WINDOW(Window),'Menu using an item factory');
|
||||
gtk_widget_set_usize (Window, 300, 200);
|
||||
gtk_signal_connect (PGTKOBJECT (window), 'destroy',
|
||||
GTK_SIGNAL_FUNC (@destroy), NULL);
|
||||
WinBox := gtk_vbox_new(False,0);
|
||||
gtk_widget_show(WinBox);
|
||||
Gtk_container_add(GTK_CONTAINER(Window),WinBox);
|
||||
MakeMenu;
|
||||
gtk_widget_show(MenuBar);
|
||||
Gtk_box_pack_start(GTK_BOX(Winbox),MenuBar,False,False,2);
|
||||
DisplayLabel := gtk_label_new('Chosen menu : (none)');
|
||||
gtk_widget_show(DisplayLabeL);
|
||||
Gtk_box_pack_start(GTK_BOX(WinBox),DisplayLabel,TRUE,TRUE,10);
|
||||
gtk_widget_show (window);
|
||||
gtk_main ();
|
||||
end.
|
BIN
docs/gtk3ex/ex2.png
Normal file
BIN
docs/gtk3ex/ex2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
145
docs/gtk3ex/ex2.pp
Normal file
145
docs/gtk3ex/ex2.pp
Normal file
@ -0,0 +1,145 @@
|
||||
program ex2;
|
||||
|
||||
{$mode objfpc}
|
||||
|
||||
uses
|
||||
gdk,glib,gtk;
|
||||
|
||||
|
||||
procedure destroy(widget : pGtkWidget ; data: pgpointer ); cdecl;
|
||||
begin
|
||||
gtk_main_quit();
|
||||
end;
|
||||
|
||||
procedure menu(widget : pGtkWidget ; data: pgpointer ); cdecl;
|
||||
|
||||
Var
|
||||
TheLabel : PgtkWidget;
|
||||
LabelText : Pchar;
|
||||
S : AnsiString;
|
||||
|
||||
begin
|
||||
TheLabel := g_list_nth_data(gtk_container_children(GTK_CONTAINER(Widget)),0);
|
||||
gtk_label_get(gtk_Label(theLabel),@LabelText);
|
||||
S := 'Chosen menu : ' + Strpas(Labeltext);
|
||||
gtk_label_set_text(GTK_LABEL(data),pchar(S));
|
||||
end;
|
||||
|
||||
Function AddMenuToMenuBar (MenuBar : PGtkMenuBar;
|
||||
ShortCuts : PGtkAccelGroup;
|
||||
Caption : AnsiString;
|
||||
CallBack : TgtkSignalFunc;
|
||||
CallBackdata : Pointer;
|
||||
AlignRight : Boolean;
|
||||
Var MenuItem : PgtkMenuItem
|
||||
) : PGtkMenu;
|
||||
|
||||
Var
|
||||
Key : guint;
|
||||
TheLabel : PGtkLabel;
|
||||
|
||||
begin
|
||||
MenuItem:=pgtkmenuitem(gtk_menu_item_new_with_label(''));
|
||||
If AlignRight Then
|
||||
gtk_menu_item_right_justify(MenuItem);
|
||||
TheLabel:=GTK_LABEL(GTK_BIN(MenuItem)^.child);
|
||||
Key:=gtk_label_parse_uline(TheLabel,Pchar(Caption));
|
||||
If Key<>0 then
|
||||
gtk_widget_add_accelerator(PGtkWidget(MenuItem),'activate_item',
|
||||
Shortcuts,Key,
|
||||
GDK_MOD1_MASK,GTK_ACCEL_LOCKED);
|
||||
Result:=PGtkMenu(gtk_menu_new);
|
||||
If CallBack<>Nil then
|
||||
gtk_signal_connect(PGtkObject(result),'activate',
|
||||
CallBack,CallBackdata);
|
||||
gtk_widget_show(PgtkWidget(MenuItem));
|
||||
gtk_menu_item_set_submenu(MenuItem, PgtkWidget(Result));
|
||||
gtk_menu_bar_append(MenuBar,PgtkWidget(MenuItem));
|
||||
end;
|
||||
|
||||
Function AddItemToMenu (Menu : PGtkMenu;
|
||||
ShortCuts : PGtkAccelGroup;
|
||||
Caption : AnsiString;
|
||||
ShortCut : AnsiString;
|
||||
CallBack : TgtkSignalFunc;
|
||||
CallBackdata : Pointer
|
||||
) : PGtkMenuItem;
|
||||
|
||||
Var
|
||||
Key,Modifiers : guint;
|
||||
LocalAccelGroup : PGtkAccelGroup;
|
||||
TheLabel : PGtkLabel;
|
||||
|
||||
begin
|
||||
Result:=pgtkmenuitem(gtk_menu_item_new_with_label(''));
|
||||
TheLabel:=GTK_LABEL(GTK_BIN(Result)^.child);
|
||||
Key:=gtk_label_parse_uline(TheLabel,Pchar(Caption));
|
||||
If Key<>0 then
|
||||
begin
|
||||
LocalAccelGroup:=gtk_menu_ensure_uline_accel_group(Menu);
|
||||
gtk_widget_add_accelerator(PGtkWidget(result),'activate_item',
|
||||
LocalAccelGroup,Key,
|
||||
0,TGtkAccelFlags(0));
|
||||
end;
|
||||
gtk_menu_append(Menu,pgtkWidget(result));
|
||||
If (ShortCut<>'') and (ShortCuts<>Nil) then
|
||||
begin
|
||||
gtk_accelerator_parse (pchar(ShortCut), @key, @modifiers);
|
||||
gtk_widget_add_accelerator(PGtkWidget(result),'activate_item',
|
||||
ShortCuts,Key,
|
||||
modifiers, GTK_ACCEL_VISIBLE);
|
||||
end;
|
||||
If CallBack<>Nil then
|
||||
gtk_signal_connect(PGtkObject(result),'activate',
|
||||
CallBack,CallBackdata);
|
||||
gtk_widget_show(PgtkWidget(result));
|
||||
end;
|
||||
|
||||
Function AddSeparatorToMenu(Menu : PgtkMenu) : PgtkMenuItem;
|
||||
|
||||
begin
|
||||
Result:=pgtkmenuitem(gtk_menu_item_new());
|
||||
gtk_menu_append(Menu,pgtkWidget(result));
|
||||
gtk_widget_show(PgtkWidget(result));
|
||||
end;
|
||||
|
||||
var
|
||||
Window : PGtkWidget;
|
||||
WinBox : PGtkWidget;
|
||||
MenuBar : PGtkMenuBar;
|
||||
FileMenu : PGtkMenu;
|
||||
TempMenuItem : PgtkMenuItem;
|
||||
DisplayLabel : PgtkWidget;
|
||||
HelpMenu : PgtkMenu;
|
||||
Accel : PGtkAccelGroup;
|
||||
|
||||
begin
|
||||
gtk_init (@argc, @argv);
|
||||
window := gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title (GTK_WINDOW(Window),'Menu made manually');
|
||||
gtk_widget_set_usize (Window, 300, 200);
|
||||
gtk_signal_connect (PGTKOBJECT (window), 'destroy',
|
||||
GTK_SIGNAL_FUNC (@destroy), NULL);
|
||||
accel:=gtk_accel_group_new;
|
||||
gtk_window_add_accel_group(GTK_Window(Window),accel);
|
||||
WinBox := gtk_vbox_new(False,0);
|
||||
gtk_widget_show(WinBox);
|
||||
Gtk_container_add(GTK_CONTAINER(Window),WinBox);
|
||||
MenuBar := PgtkMenuBar(gtk_menu_bar_new);
|
||||
gtk_widget_show(PgtkWidget(MenuBar));
|
||||
Gtk_box_pack_start(GTK_BOX(Winbox),PgtkWidget(MenuBar),False,False,2);
|
||||
DisplayLabel := gtk_label_new('Chosen menu : (none)');
|
||||
gtk_widget_show(DisplayLabeL);
|
||||
Gtk_box_pack_start(GTK_BOX(WinBox),DisplayLabel,TRUE,TRUE,10);
|
||||
FileMenu:=AddMenuToMenuBar(MenuBar,accel,'_File',Nil,Nil,False,TempMenuItem);
|
||||
AddItemToMenu(FileMenu,accel,'_New','<control>N',TgtkSignalFunc(@menu),DisplayLabel);
|
||||
AddItemToMenu(FileMenu,accel,'_Open','<control>O',TgtkSignalFunc(@menu),DisplayLabel);
|
||||
AddItemToMenu(FileMenu,accel,'_Save','<control>S',TgtkSignalFunc(@menu),DisplayLabel);
|
||||
AddSeparatorToMenu(PGtkMenu(FileMenu));
|
||||
AddItemToMenu(FileMenu,accel,'_Quit','<control>Q',TgtkSignalFunc(@destroy),Nil);
|
||||
HelpMenu:=AddMenuToMenuBar(MenuBar,Accel,'_Help',Nil,Nil,True,TempMenuItem);
|
||||
AddItemToMenu(HelpMenu,accel,'_Contents','F1',TgtkSignalFunc(@menu),DisplayLabel);
|
||||
AddItemToMenu(HelpMenu,accel,'_About','<alt>A',TgtkSignalFunc(@menu),DisplayLabel);
|
||||
gtk_widget_show (window);
|
||||
gtk_main ();
|
||||
end.
|
BIN
docs/gtk3ex/ex3.png
Normal file
BIN
docs/gtk3ex/ex3.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
197
docs/gtk3ex/ex3.pp
Normal file
197
docs/gtk3ex/ex3.pp
Normal file
@ -0,0 +1,197 @@
|
||||
program ex3;
|
||||
|
||||
{$mode objfpc}
|
||||
|
||||
uses
|
||||
gdk,glib,gtk;
|
||||
|
||||
|
||||
procedure destroy(widget : pGtkWidget ; data: pgpointer ); cdecl;
|
||||
begin
|
||||
gtk_main_quit();
|
||||
end;
|
||||
|
||||
procedure menu(widget : pGtkWidget ; data: pgpointer ); cdecl;
|
||||
|
||||
Var
|
||||
TheLabel : PgtkWidget;
|
||||
LabelText : Pchar;
|
||||
S : AnsiString;
|
||||
|
||||
begin
|
||||
If Data<>Nil then
|
||||
begin
|
||||
TheLabel := g_list_nth_data(gtk_container_children(GTK_CONTAINER(Widget)),0);
|
||||
gtk_label_get(gtk_Label(theLabel),@LabelText);
|
||||
S := 'Chosen menu : ' + Strpas(Labeltext);
|
||||
gtk_label_set_text(GTK_LABEL(data),pchar(S));
|
||||
end;
|
||||
end;
|
||||
|
||||
Function AddMenuToMenuBar (MenuBar : PGtkMenuBar;
|
||||
ShortCuts : PGtkAccelGroup;
|
||||
Caption : AnsiString;
|
||||
CallBack : TgtkSignalFunc;
|
||||
CallBackdata : Pointer;
|
||||
AlignRight : Boolean;
|
||||
Var MenuItem : PgtkMenuItem
|
||||
) : PGtkMenu;
|
||||
|
||||
Var
|
||||
Key : guint;
|
||||
TheLabel : PGtkLabel;
|
||||
|
||||
begin
|
||||
MenuItem:=pgtkmenuitem(gtk_menu_item_new_with_label(''));
|
||||
If AlignRight Then
|
||||
gtk_menu_item_right_justify(MenuItem);
|
||||
TheLabel:=GTK_LABEL(GTK_BIN(MenuItem)^.child);
|
||||
Key:=gtk_label_parse_uline(TheLabel,Pchar(Caption));
|
||||
If Key<>0 then
|
||||
gtk_widget_add_accelerator(PGtkWidget(MenuItem),'activate_item',
|
||||
Shortcuts,Key,
|
||||
GDK_MOD1_MASK,GTK_ACCEL_LOCKED);
|
||||
Result:=PGtkMenu(gtk_menu_new);
|
||||
If CallBack<>Nil then
|
||||
gtk_signal_connect(PGtkObject(result),'activate',
|
||||
CallBack,CallBackdata);
|
||||
gtk_widget_show(PgtkWidget(MenuItem));
|
||||
gtk_menu_item_set_submenu(MenuItem, PgtkWidget(Result));
|
||||
gtk_menu_bar_append(MenuBar,PgtkWidget(MenuItem));
|
||||
end;
|
||||
|
||||
Function AddItemToMenu (Menu : PGtkMenu;
|
||||
ShortCuts : PGtkAccelGroup;
|
||||
Caption : AnsiString;
|
||||
ShortCut : AnsiString;
|
||||
CallBack : TgtkSignalFunc;
|
||||
CallBackdata : Pointer
|
||||
) : PGtkMenuItem;
|
||||
|
||||
Var
|
||||
Key,Modifiers : guint;
|
||||
LocalAccelGroup : PGtkAccelGroup;
|
||||
TheLabel : PGtkLabel;
|
||||
|
||||
begin
|
||||
Result:=pgtkmenuitem(gtk_menu_item_new_with_label(''));
|
||||
TheLabel:=GTK_LABEL(GTK_BIN(Result)^.child);
|
||||
Key:=gtk_label_parse_uline(TheLabel,Pchar(Caption));
|
||||
If Key<>0 then
|
||||
begin
|
||||
LocalAccelGroup:=gtk_menu_ensure_uline_accel_group(Menu);
|
||||
gtk_widget_add_accelerator(PGtkWidget(result),'activate_item',
|
||||
LocalAccelGroup,Key,
|
||||
0,TGtkAccelFlags(0));
|
||||
end;
|
||||
gtk_menu_append(Menu,pgtkWidget(result));
|
||||
If (ShortCut<>'') and (ShortCuts<>Nil) then
|
||||
begin
|
||||
gtk_accelerator_parse (pchar(ShortCut), @key, @modifiers);
|
||||
gtk_widget_add_accelerator(PGtkWidget(result),'activate_item',
|
||||
ShortCuts,Key,
|
||||
modifiers, GTK_ACCEL_VISIBLE);
|
||||
end;
|
||||
If CallBack<>Nil then
|
||||
gtk_signal_connect(PGtkObject(result),'activate',
|
||||
CallBack,CallBackdata);
|
||||
gtk_widget_show(PgtkWidget(result));
|
||||
end;
|
||||
|
||||
Function AddImageItemToMenu (Menu : PGtkMenu;
|
||||
ShortCuts : PGtkAccelGroup;
|
||||
Caption : AnsiString;
|
||||
ShortCut : AnsiString;
|
||||
Bitmap : AnsiString;
|
||||
CallBack : TgtkSignalFunc;
|
||||
CallBackdata : Pointer
|
||||
) : PGtkMenuItem;
|
||||
|
||||
Var
|
||||
Key,Modifiers : guint;
|
||||
LocalAccelGroup : PGtkAccelGroup;
|
||||
TheLabel : PGtkLabel;
|
||||
Image : PGtkPixmap;
|
||||
hbox : PGtkHBox;
|
||||
pixmap : PGdkPixmap;
|
||||
BitMapdata : PGdkBitmap;
|
||||
|
||||
begin
|
||||
Result:=pgtkmenuitem(gtk_menu_item_new);
|
||||
hbox:=PGtkHBox(gtk_hbox_new(false,0));
|
||||
gtk_container_add(pgtkcontainer(result),pgtkWidget(hbox));
|
||||
pixmap:=gdk_pixmap_create_from_xpm(Nil,@BitmapData,Nil,pchar(BitMap));
|
||||
Image := PgtkPixMap(gtk_pixmap_new(Pixmap,BitmapData));
|
||||
gtk_box_pack_start(PGtkBox(hbox),pgtkWidget(image),false,false,0);
|
||||
TheLabel:=PgtkLabel(gtk_label_new(''));
|
||||
gtk_box_pack_start(PGtkBox(hbox),pgtkWidget(TheLabel),True,True,0);
|
||||
Key:=gtk_label_parse_uline(TheLabel,Pchar(Caption));
|
||||
If Key<>0 then
|
||||
begin
|
||||
LocalAccelGroup:=gtk_menu_ensure_uline_accel_group(Menu);
|
||||
gtk_widget_add_accelerator(PGtkWidget(result),'activate_item',
|
||||
LocalAccelGroup,Key,
|
||||
0,TGtkAccelFlags(0));
|
||||
end;
|
||||
gtk_menu_append(Menu,pgtkWidget(result));
|
||||
If (ShortCut<>'') and (ShortCuts<>Nil) then
|
||||
begin
|
||||
gtk_accelerator_parse (pchar(ShortCut), @key, @modifiers);
|
||||
gtk_widget_add_accelerator(PGtkWidget(result),'activate_item',
|
||||
ShortCuts,Key,
|
||||
modifiers, GTK_ACCEL_VISIBLE);
|
||||
end;
|
||||
If CallBack<>Nil then
|
||||
gtk_signal_connect(PGtkObject(result),'activate',
|
||||
CallBack,CallBackdata);
|
||||
gtk_widget_show_all(PgtkWidget(result));
|
||||
end;
|
||||
|
||||
Function AddSeparatorToMenu(Menu : PgtkMenu) : PgtkMenuItem;
|
||||
|
||||
begin
|
||||
Result:=pgtkmenuitem(gtk_menu_item_new());
|
||||
gtk_menu_append(Menu,pgtkWidget(result));
|
||||
gtk_widget_show(PgtkWidget(result));
|
||||
end;
|
||||
|
||||
var
|
||||
Window : PGtkWidget;
|
||||
WinBox : PGtkWidget;
|
||||
MenuBar : PGtkMenuBar;
|
||||
FileMenu : PGtkMenu;
|
||||
TempMenuItem : PgtkMenuItem;
|
||||
DisplayLabel : PgtkWidget;
|
||||
HelpMenu : PgtkMenu;
|
||||
Accel : PGtkAccelGroup;
|
||||
|
||||
begin
|
||||
gtk_init (@argc, @argv);
|
||||
window := gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title (GTK_WINDOW(Window),'Menu made manually');
|
||||
gtk_widget_set_usize (Window, 300, 200);
|
||||
gtk_signal_connect (PGTKOBJECT (window), 'destroy',
|
||||
GTK_SIGNAL_FUNC (@destroy), NULL);
|
||||
accel:=gtk_accel_group_new;
|
||||
gtk_window_add_accel_group(GTK_Window(Window),accel);
|
||||
WinBox := gtk_vbox_new(False,0);
|
||||
gtk_widget_show(WinBox);
|
||||
Gtk_container_add(GTK_CONTAINER(Window),WinBox);
|
||||
MenuBar := PgtkMenuBar(gtk_menu_bar_new);
|
||||
gtk_widget_show(PgtkWidget(MenuBar));
|
||||
Gtk_box_pack_start(GTK_BOX(Winbox),PgtkWidget(MenuBar),False,False,2);
|
||||
DisplayLabel := gtk_label_new('Chosen menu : (none)');
|
||||
gtk_widget_show(DisplayLabeL);
|
||||
Gtk_box_pack_start(GTK_BOX(WinBox),DisplayLabel,TRUE,TRUE,10);
|
||||
FileMenu:=AddMenuToMenuBar(MenuBar,accel,'_File',Nil,Nil,False,TempMenuItem);
|
||||
AddImageItemToMenu(FileMenu,accel,'_New','<control>N','filenew.xpm',TgtkSignalFunc(@menu),Nil);
|
||||
AddImageItemToMenu(FileMenu,accel,'_Open','<control>O','fileopen.xpm',TgtkSignalFunc(@menu),Nil);
|
||||
AddImageItemToMenu(FileMenu,accel,'_Save','<control>S','filesave.xpm',TgtkSignalFunc(@menu),Nil);
|
||||
AddSeparatorToMenu(PGtkMenu(FileMenu));
|
||||
AddItemToMenu(FileMenu,accel,'_Quit','<control>Q',TgtkSignalFunc(@destroy),Nil);
|
||||
HelpMenu:=AddMenuToMenuBar(MenuBar,Accel,'_Help',Nil,Nil,True,TempMenuItem);
|
||||
AddItemToMenu(HelpMenu,accel,'_Contents','F1',TgtkSignalFunc(@menu),DisplayLabel);
|
||||
AddItemToMenu(HelpMenu,accel,'_About','<alt>A',TgtkSignalFunc(@menu),DisplayLabel);
|
||||
gtk_widget_show (window);
|
||||
gtk_main ();
|
||||
end.
|
27
docs/gtk3ex/filenew.xpm
Normal file
27
docs/gtk3ex/filenew.xpm
Normal file
@ -0,0 +1,27 @@
|
||||
/* XPM */
|
||||
static char *filenew[] = {
|
||||
/* width height num_colors chars_per_pixel */
|
||||
" 16 15 5 1",
|
||||
/* colors */
|
||||
". c #000000",
|
||||
"# c #c0c0c0",
|
||||
"a c #ffffff",
|
||||
"b c #dcdcdc",
|
||||
"c c #bfbfbf",
|
||||
/* pixels */
|
||||
"cccc.......ccccc",
|
||||
"cccc.aaaabb.cccc",
|
||||
"cccc.aaaa#ab.ccc",
|
||||
"cccc.aaaa#aab.cc",
|
||||
"cccc.aaaa#....cc",
|
||||
"cccc.aaaaa###.cc",
|
||||
"cccc.aaaaaaaa.cc",
|
||||
"cccc.aaaaaaaa.cc",
|
||||
"cccc.aaaaaaaa.cc",
|
||||
"cccc.aaaaaaaa.cc",
|
||||
"cccc.aaaaaaaa.cc",
|
||||
"cccc.aaaaaaaa.cc",
|
||||
"cccc.aaaaaaaa.cc",
|
||||
"cccc..........cc",
|
||||
"cccccccccccccccc"
|
||||
};
|
28
docs/gtk3ex/fileopen.xpm
Normal file
28
docs/gtk3ex/fileopen.xpm
Normal file
@ -0,0 +1,28 @@
|
||||
/* XPM */
|
||||
static char *fileopen[] = {
|
||||
/* width height num_colors chars_per_pixel */
|
||||
" 16 15 6 1",
|
||||
/* colors */
|
||||
". c #000000",
|
||||
"# c #808080",
|
||||
"a c #c0c0c0",
|
||||
"b c #ffffff",
|
||||
"c c #dcdcdc",
|
||||
"d c #bfbfbf",
|
||||
/* pixels */
|
||||
"dddddddddddddd..",
|
||||
"ddddddddddddd...",
|
||||
"dd....dddddddddd",
|
||||
"dd.cbc.......ddd",
|
||||
"dd.bcbcbcbcb.ddd",
|
||||
"dd.cc..........d",
|
||||
"dd.bc.ccaaaaa#.d",
|
||||
"dd.c.ccacaaa#.dd",
|
||||
"dd.c.ccaaa#a#.dd",
|
||||
"dd..ccacaaa#.ddd",
|
||||
"dd..ccaaa#a#.ddd",
|
||||
"dd.########.dddd",
|
||||
"dd..........dddd",
|
||||
"dddddddddddddddd",
|
||||
"dddddddddddddddd"
|
||||
};
|
30
docs/gtk3ex/filesave.xpm
Normal file
30
docs/gtk3ex/filesave.xpm
Normal file
@ -0,0 +1,30 @@
|
||||
/* XPM */
|
||||
static char *filesave[] = {
|
||||
/* width height num_colors chars_per_pixel */
|
||||
" 16 16 7 1",
|
||||
/* colors */
|
||||
". c #ffffff",
|
||||
"# c #c3c3c3",
|
||||
"a c #666666",
|
||||
"b c #0000cc",
|
||||
"c c #000066",
|
||||
"d c #000000",
|
||||
"e c #b2c0dc",
|
||||
/* pixels */
|
||||
"eeeeeeeeeeeeeeee",
|
||||
"edddddddddddddee",
|
||||
"edb........bbdae",
|
||||
"edb.ddddd..bbdae",
|
||||
"edb........bbdae",
|
||||
"edb.ddd....bbdae",
|
||||
"edb........bbdae",
|
||||
"edb........bbdae",
|
||||
"edbbbbbbbbbbbdae",
|
||||
"edbcccccccccbdae",
|
||||
"edbcccccccccbdae",
|
||||
"edbcc#####ccbdae",
|
||||
"edbcc##cc#ccbdae",
|
||||
"edbcc##cc#ccbdae",
|
||||
"edddddddddddddae",
|
||||
"eeaaaaaaaaaaaaae"
|
||||
};
|
Loading…
Reference in New Issue
Block a user