How to resolve the algorithm GUI component interaction step by step in the Raku programming language
How to resolve the algorithm GUI component interaction step by step in the Raku programming language
Table of Contents
Problem Statement
Almost every application needs to communicate with the user in some way. Therefore, a substantial part of the code deals with the interaction of program logic with GUI components. Typically, the following is needed:
For a minimal "application", write a program that presents a form with three components to the user:
The field is initialized to zero. The user may manually enter a new value into the field, or increment its value with the "increment" button. Entering a non-numeric value should be either impossible, or issue an error message. Pressing the "random" button presents a confirmation dialog, and resets the field's value to a random value if the answer is "Yes". (This task may be regarded as an extension of the task Simple windowed application).
Let's start with the solution:
Step by Step solution about How to resolve the algorithm GUI component interaction step by step in the Raku programming language
Source code in the raku programming language
use GTK::Simple;
use GTK::Simple::App;
my GTK::Simple::App $app .= new(title => 'GUI component interaction');
$app.set-content(
my $box = GTK::Simple::VBox.new(
my $value = GTK::Simple::Entry.new(text => '0'),
my $increment = GTK::Simple::Button.new(label => 'Increment'),
my $random = GTK::Simple::Button.new(label => 'Random'),
)
);
$app.size-request(400, 100);
$app.border-width = 20;
$box.spacing = 10;
$value.changed.tap: {
($value.text ||= '0') ~~ s:g/<-[0..9]>//;
}
$increment.clicked.tap: {
my $val = $value.text; $val += 1; $value.text = $val.Str
}
$random.clicked.tap: {
# Dirty hack to work around the fact that GTK::Simple doesn't provide
# access to GTK message dialogs yet :P
if run «zenity --question --text "Reset to random value?"» {
$value.text = (^100).pick.Str
}
}
$app.run;
You may also check:How to resolve the algorithm Check that file exists step by step in the RPL programming language
You may also check:How to resolve the algorithm Padovan sequence step by step in the Julia programming language
You may also check:How to resolve the algorithm Check input device is a terminal step by step in the Standard ML programming language
You may also check:How to resolve the algorithm Short-circuit evaluation step by step in the ALGOL 68 programming language
You may also check:How to resolve the algorithm FizzBuzz step by step in the Shen programming language