% PLGI port of progressbar_example.py in PyGObject-Tutorial. % Copyright (C) GNU Free Documentation License 1.3 % This file is distributed under the same license as the Python GTK+ 3 Tutorial package. % Keri Harris , 2015. :- use_module(library(plgi)). :- plgi_use_namespace('Gtk'). on_show_text_toggled(Button, ProgressBar) :- gtk_toggle_button_get_active(Button, IsActive), ( IsActive == true -> Text = 'some text' ; Text = {null} ), gtk_progress_bar_set_text(ProgressBar, Text), gtk_progress_bar_set_show_text(ProgressBar, IsActive). on_activity_mode_toggled(Button, ProgressBar) :- ( gtk_toggle_button_get_active(Button, true) -> gtk_progress_bar_set_pulse_step(ProgressBar, 0.01) ; gtk_progress_bar_set_pulse_step(ProgressBar, 0.0), gtk_progress_bar_set_fraction(ProgressBar, 0.0) ). on_right_to_left_toggled(Button, ProgressBar) :- gtk_toggle_button_get_active(Button, IsActive), gtk_progress_bar_set_inverted(ProgressBar, IsActive). update_progress_bar(ProgressBar, true) :- gtk_progress_bar_get_pulse_step(ProgressBar, PulseStep), ( PulseStep > 0.0 -> gtk_progress_bar_pulse(ProgressBar) ; gtk_progress_bar_get_fraction(ProgressBar, Value), NewValue0 is Value + 0.01, ( NewValue0 > 1.0 -> NewValue = 0.0 ; NewValue = NewValue0 ), gtk_progress_bar_set_fraction(ProgressBar, NewValue) ). main :- gtk_window_new('GTK_WINDOW_TOPLEVEL', Window), gtk_window_set_title(Window, 'ProgressBar Demo'), gtk_container_set_border_width(Window, 10), gtk_box_new('GTK_ORIENTATION_VERTICAL', 6, VBox), gtk_container_add(Window, VBox), gtk_progress_bar_new(ProgressBar), gtk_box_pack_start(VBox, ProgressBar, true, true, 0), gtk_check_button_new_with_label('Show text', Button1), g_signal_connect(Button1, 'toggled', on_show_text_toggled/2, ProgressBar, _), gtk_box_pack_start(VBox, Button1, true, true, 0), gtk_check_button_new_with_label('Activity mode', Button2), g_signal_connect(Button2, 'toggled', on_activity_mode_toggled/2, ProgressBar, _), gtk_box_pack_start(VBox, Button2, true, true, 0), gtk_check_button_new_with_label('Right to Left', Button3), g_signal_connect(Button3, 'toggled', on_right_to_left_toggled/2, ProgressBar, _), gtk_box_pack_start(VBox, Button3, true, true, 0), g_timeout_add(50, update_progress_bar/2, ProgressBar, _), gtk_progress_bar_set_pulse_step(ProgressBar, 0.0), g_signal_connect(Window, 'destroy', gtk_main_quit/0, {null}, _), gtk_widget_show_all(Window), gtk_main, halt. :- main.