123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- (* Button Boxes
- *
- * The Button Box widgets are used to arrange buttons with padding.
- *)
- function create_bbox (horizontal : gboolean;
- title : pgchar;
- spacing : gint;
- layout : TGtkButtonBoxStyle): PGtkWidget;
- var
- frame,
- bbox,
- button : PGtkWidget;
- begin
- frame := gtk_frame_new (title);
- if horizontal then
- bbox := gtk_hbutton_box_new ()
- else
- bbox := gtk_vbutton_box_new ();
- gtk_container_set_border_width (GTK_CONTAINER (bbox), 5);
- gtk_container_add (GTK_CONTAINER (frame), bbox);
- gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), layout);
- gtk_box_set_spacing (GTK_BOX (bbox), spacing);
- button := gtk_button_new_from_stock (GTK_STOCK_OK);
- gtk_container_add (GTK_CONTAINER (bbox), button);
- button := gtk_button_new_from_stock (GTK_STOCK_CANCEL);
- gtk_container_add (GTK_CONTAINER (bbox), button);
- button := gtk_button_new_from_stock (GTK_STOCK_HELP);
- gtk_container_add (GTK_CONTAINER (bbox), button);
- create_bbox := frame;
- end;
- var bbox_window : PGtkWidget;
- function do_button_box : PGtkWidget;
- var
- main_vbox,
- vbox,
- hbox,
- frame_horz,
- frame_vert : PGtkWidget;
- begin
- if bbox_window = NULL then
- begin
- bbox_window := gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gtk_window_set_title (GTK_WINDOW (bbox_window), 'Button Boxes');
- g_signal_connect (bbox_window, 'destroy',
- G_CALLBACK (@gtk_widget_destroyed),
- @bbox_window);
- gtk_container_set_border_width (GTK_CONTAINER (bbox_window), 10);
- main_vbox := gtk_vbox_new (FALSE, 0);
- gtk_container_add (GTK_CONTAINER (bbox_window), main_vbox);
- frame_horz := gtk_frame_new ('Horizontal Button Boxes');
- gtk_box_pack_start (GTK_BOX (main_vbox), frame_horz, TRUE, TRUE, 10);
- vbox := gtk_vbox_new (FALSE, 0);
- gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);
- gtk_container_add (GTK_CONTAINER (frame_horz), vbox);
- gtk_box_pack_start (GTK_BOX (vbox),
- create_bbox (TRUE, 'Spread', 40, GTK_BUTTONBOX_SPREAD),
- TRUE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (vbox),
- create_bbox (TRUE, 'Edge', 40, GTK_BUTTONBOX_EDGE),
- TRUE, TRUE, 5);
- gtk_box_pack_start (GTK_BOX (vbox),
- create_bbox (TRUE, 'Start', 40, GTK_BUTTONBOX_START),
- TRUE, TRUE, 5);
- gtk_box_pack_start (GTK_BOX (vbox),
- create_bbox (TRUE, 'End', 40, GTK_BUTTONBOX_END),
- TRUE, TRUE, 5);
- frame_vert := gtk_frame_new ('Vertical Button Boxes');
- gtk_box_pack_start (GTK_BOX (main_vbox), frame_vert, TRUE, TRUE, 10);
- hbox := gtk_hbox_new (FALSE, 0);
- gtk_container_set_border_width (GTK_CONTAINER (hbox), 10);
- gtk_container_add (GTK_CONTAINER (frame_vert), hbox);
- gtk_box_pack_start (GTK_BOX (hbox),
- create_bbox (FALSE, 'Spread', 30, GTK_BUTTONBOX_SPREAD),
- TRUE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (hbox),
- create_bbox (FALSE, 'Edge', 30, GTK_BUTTONBOX_EDGE),
- TRUE, TRUE, 5);
- gtk_box_pack_start (GTK_BOX (hbox),
- create_bbox (FALSE, 'Start', 30, GTK_BUTTONBOX_START),
- TRUE, TRUE, 5);
- gtk_box_pack_start (GTK_BOX (hbox),
- create_bbox (FALSE, 'End', 30, GTK_BUTTONBOX_END),
- TRUE, TRUE, 5);
- end;
- if not GTK_WIDGET_VISIBLE (bbox_window) then
- gtk_widget_show_all (bbox_window)
- else
- begin
- gtk_widget_destroy (bbox_window);
- bbox_window := NULL;
- end;
- do_button_box := bbox_window;
- end;
|