статус бар

ієрархія спадкування

Статус бари це прості віджети, які використовуються для відображення текстових повідомлень. Вони зберігають стек повідомлень, які поміщені в них, так що спроба повторного виклику верхнього повідомлення стека (popping) викличе відображення _предидущего_ текстового повідомлення.

Щоб дозволити різним блокам додатки використовувати один статус бар для відображення повідомлень, вікно статус бару використовує Ідентифікатори Контексту виклику (Context Identifiers), які в подальшому застосовуються для для ідентифікації різних "користувачів". Отображаемое повідомлення Розміщена завжди на верху стека, в незалежності від контексту виклику. Взагалі, повідомлення впорядковані в стеці за методом LIFO: останній-увійшов-перший-вийшов, без будь-якої залежності від контексту.

Створюємо статус бар командою:

$ Statusbar = new Gtk :: Statusbar ();

Новий Ідентифікатор Контексту можна отримати методом get_context_id, передавши в якості аргументу короткий опис створюваного контексту.

Є три функції для роботи зі статус барами:

$ Statusbar-> push ($ context_id, $ text);

$ Statusbar-> remove ($ context_id, $ message_id);

Перша, push (). використовується для додавання нових повідомлень в статус бар. Вона повертає ідентифікатор повідомлення, який дозволяє видаляти їх функцією gtk_statusbar_remove з стека статус бару.

Функція pop () видаляє верхнє повідомлення стека зазначеного Ідентифікатора Контексту.

Наступний приклад створює статус бар і дві кнопки: одна поміщає повідомлення на статус бар, а інша викликає їх на статус барз з стека.

Status Bar Program Source

#! / Usr / bin / perl -w use Gtk; use strict; set_locale Gtk; init Gtk; my $ false = 0; my $ true = 1; my $ window; my $ vbox; my $ button; my $ statusbar; my $ context_id; my $ count = 1; # Створюємо вікно додатка $ window = new Gtk :: Window ( "toplevel"); $ Window-> set_usize (200, 100); $ Window-> set_title ( "GTK Statusbar Example"); $ Window-> signal_connect ( "delete_event", sub exit (0);>); $ Vbox = new Gtk :: VBox ($ false, 1); $ Window-> add ($ vbox); $ Vbox-> show (); # Створюємо статус бар $ statusbar = new Gtk :: Statusbar (); $ Vbox-> pack_start ($ statusbar, $ true, $ true, 0); $ Statusbar-> show (); # Створюємо новий Ідентифікатор Контексту, який будемо далі використовувати для управління стеком $ context_id = $ statusbar-> get_context_id ( "Statusbar Example"); # Створено кнопку додавання повідомлень $ button = new Gtk :: Button ( "Push Item"); $ Button-> signal_connect ( "clicked", \ push_item, $ context_id); $ Vbox-> pack_start ($ button, $ true, $ true, 2); $ Button-> show (); # Створюємо кнопку для відображення тексту повідомлення стека $ button = new Gtk :: Button ( "Pop Last Item"); $ Button-> signal_connect ( "clicked", \ pop_item, $ context_id); $ Vbox-> pack_start ($ button, $ true, $ true, 2); $ Button-> show (); $ Window-> show (); main Gtk; exit (0); ### Функції # Розміщуємо повідомлення в стек. І збільшуємо значення лічильника. subpush_itempush ($ context_id, $ buff);> # Викликаємо верхнє сообщеіе з стека subpop_itempop ($ context_id);> # Кінець прикладу

статус бар