123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- {
- This file extracted from the GTK tutorial.
- notebook.c
- Converted from C to Pascal by Frank Loemker
- <[email protected]>
- }
- program notebook;
- uses
- glib,gdk,gtk;
- Function itos (I : Longint) : String;
- Var S : String[15];
- begin
- Str (I,S);
- itos:=S;
- end;
- { This function rotates the position of the tabs }
- procedure rotate_book (notebook:pGtkNotebook ); cdecl;
- begin
- gtk_notebook_set_tab_pos (notebook, TGtkPositionType((tab_pos(notebook^) +1) mod 4));
- end;
- { Add/Remove the page tabs and the borders }
- procedure tabsborder_book (notebook:pGtkNotebook ); cdecl;
- var tval, bval : gboolean;
- begin
- tval := false;
- bval := false;
- if show_tabs(notebook^) = 0 then
- tval := true;
- if show_border(notebook^) = 0 then
- bval := true;
- gtk_notebook_set_show_tabs (notebook, tval);
- gtk_notebook_set_show_border (notebook, bval);
- end;
- { Remove a page from the notebook }
- procedure remove_book (notebook: pGtkNotebook ); cdecl;
- var page : gint ;
- begin
- page := gtk_notebook_get_current_page(notebook);
- gtk_notebook_remove_page (notebook, page);
- { Need to refresh the widget --
- This forces the widget to redraw itself. }
- gtk_widget_draw(pGTKWIDGET(notebook), NIL);
- end;
- procedure delete (widget : pGtkWidget ; event: pGdkEvent; data: pgpointer ); cdecl;
- begin
- gtk_main_quit ();
- end;
- var
- window, button, table, thenotebook, frame, thelabel, checkbutton : pGtkWidget;
- i : integer;
- bufferf, bufferl : string[33];
- begin
- gtk_init (@argc, @argv);
- window := gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gtk_signal_connect (pGTKOBJECT (window), 'delete_event',
- GTK_SIGNAL_FUNC (@delete), NIL);
- gtk_container_set_border_width (pGTKCONTAINER (window), 10);
- table := gtk_table_new(2,6,FALSE);
- gtk_container_add (pGTKCONTAINER (window), table);
- { Create a new notebook, place the position of the tabs }
- thenotebook := gtk_notebook_new ();
- gtk_notebook_set_tab_pos (pGTKNOTEBOOK (thenotebook), GTK_POS_TOP);
- gtk_table_attach_defaults(pGTKTABLE(table), thenotebook, 0,6,0,1);
- { lets append a bunch of pages to the notebook }
- for i:=0 to 4 do begin
- bufferf := 'Append Frame '+itos(i+1)+#0;
- bufferl := 'Page '+itos(i+1)+#0;
- frame := gtk_frame_new (pchar(@bufferf[1]));
- gtk_container_set_border_width (pGTKCONTAINER (frame), 10);
- gtk_widget_set_usize (frame, 100, 75);
- thelabel := gtk_label_new (pchar(@bufferf[1]));
- gtk_container_add (pGTKCONTAINER (frame), thelabel);
- thelabel := gtk_label_new (pchar(@bufferl[1]));
- gtk_notebook_append_page (pGTKNOTEBOOK (thenotebook), frame, thelabel);
- end;
- { now lets add a page to a specific spot }
- checkbutton := gtk_check_button_new_with_label ('Check me please!');
- gtk_widget_set_usize(checkbutton, 100, 75);
- thelabel := gtk_label_new ('Add page');
- gtk_notebook_insert_page (pGTKNOTEBOOK (thenotebook), checkbutton, thelabel, 2);
- { Now finally lets prepend pages to the notebook }
- for i:=0 to 4 do begin
- bufferf := 'Prepend Frame '+itos(i+1)+#0;
- bufferl := 'PPage '+itos(i+1)+#0;
- frame := gtk_frame_new (pchar(@bufferf[1]));
- gtk_container_set_border_width (pGTKCONTAINER (frame), 10);
- gtk_widget_set_usize (frame, 100, 75);
- thelabel := gtk_label_new (pchar(@bufferf[1]));
- gtk_container_add (pGTKCONTAINER (frame), thelabel);
- thelabel := gtk_label_new (pchar(@bufferl[1]));
- gtk_notebook_prepend_page (pGTKNOTEBOOK(thenotebook), frame, thelabel);
- gtk_widget_show (frame);
- end;
- { Set what page to start at (page 4) }
- gtk_notebook_set_page (pGTKNOTEBOOK(thenotebook), 3);
- { create a bunch of buttons }
- button := gtk_button_new_with_label ('close');
- gtk_signal_connect_object (pGTKOBJECT (button), 'clicked',
- GTK_SIGNAL_FUNC (@delete), NIL);
- gtk_table_attach(pGTKTABLE(table), button, 0,1,1,2,
- GTK_FILL or GTK_EXPAND,GTK_FILL,0,0);
- button := gtk_button_new_with_label ('next page');
- gtk_signal_connect_object (pGTKOBJECT (button), 'clicked',
- GTK_SIGNAL_FUNC (@gtk_notebook_next_page),
- pGTKOBJECT (thenotebook));
- gtk_table_attach(pGTKTABLE(table), button, 1,2,1,2,
- GTK_FILL or GTK_EXPAND,GTK_FILL,0,0);
- button := gtk_button_new_with_label ('prev page');
- gtk_signal_connect_object (pGTKOBJECT (button), 'clicked',
- GTK_SIGNAL_FUNC (@gtk_notebook_prev_page),
- pGTKOBJECT (thenotebook));
- gtk_table_attach(pGTKTABLE(table), button, 2,3,1,2,
- GTK_FILL or GTK_EXPAND,GTK_FILL,0,0);
- button := gtk_button_new_with_label ('tab position');
- gtk_signal_connect_object (pGTKOBJECT (button), 'clicked',
- GTK_SIGNAL_FUNC (@rotate_book), pGTKOBJECT(thenotebook));
- gtk_table_attach(pGTKTABLE(table), button, 3,4,1,2,
- GTK_FILL or GTK_EXPAND,GTK_FILL,0,0);
- button := gtk_button_new_with_label ('tabs/border on/off');
- gtk_signal_connect_object (pGTKOBJECT (button), 'clicked',
- GTK_SIGNAL_FUNC (@tabsborder_book),
- pGTKOBJECT (thenotebook));
- gtk_table_attach(pGTKTABLE(table), button, 4,5,1,2,
- GTK_FILL or GTK_EXPAND,GTK_FILL,0,0);
- button := gtk_button_new_with_label ('remove page');
- gtk_signal_connect_object (pGTKOBJECT (button), 'clicked',
- GTK_SIGNAL_FUNC (@remove_book),
- pGTKOBJECT(thenotebook));
- gtk_table_attach(pGTKTABLE(table), button, 5,6,1,2,
- GTK_FILL ,GTK_FILL,0,0);
- gtk_widget_show_all(window);
- gtk_main ();
- end.
|