all tasks
This commit is contained in:
parent
b83f433714
commit
68f8f3e56b
14735 changed files with 178959 additions and 0 deletions
3
Task/User-input-Graphical/0DESCRIPTION
Normal file
3
Task/User-input-Graphical/0DESCRIPTION
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
In this task, the goal is to input a string and the integer 75000, from [[graphical user interface]].
|
||||
|
||||
See also: [[User input/Text]]
|
||||
7
Task/User-input-Graphical/1META.yaml
Normal file
7
Task/User-input-Graphical/1META.yaml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
category:
|
||||
- GUI
|
||||
- Basic language learning
|
||||
note: Text processing
|
||||
requires:
|
||||
- Graphics
|
||||
80
Task/User-input-Graphical/Ada/user-input-graphical.ada
Normal file
80
Task/User-input-Graphical/Ada/user-input-graphical.ada
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
with Gtk.Button; use Gtk.Button;
|
||||
with Gtk.GEntry; use Gtk.GEntry;
|
||||
with Gtk.Label; use Gtk.Label;
|
||||
with Gtk.Window; use Gtk.Window;
|
||||
with Gtk.Widget; use Gtk.Widget;
|
||||
with Gtk.Table; use Gtk.Table;
|
||||
|
||||
with Gtk.Handlers;
|
||||
with Gtk.Main;
|
||||
|
||||
procedure Graphic_Input is
|
||||
Window : Gtk_Window;
|
||||
Grid : Gtk_Table;
|
||||
Label : Gtk_Label;
|
||||
Message : Gtk_Label;
|
||||
Edit : Gtk_GEntry;
|
||||
Button : Gtk_Button;
|
||||
|
||||
package Handlers is new Gtk.Handlers.Callback (Gtk_Widget_Record);
|
||||
package Return_Handlers is
|
||||
new Gtk.Handlers.Return_Callback (Gtk_Widget_Record, Boolean);
|
||||
|
||||
function Delete_Event (Widget : access Gtk_Widget_Record'Class)
|
||||
return Boolean is
|
||||
begin
|
||||
return False;
|
||||
end Delete_Event;
|
||||
|
||||
procedure Destroy (Widget : access Gtk_Widget_Record'Class) is
|
||||
begin
|
||||
Gtk.Main.Main_Quit;
|
||||
end Destroy;
|
||||
|
||||
procedure Clicked (Widget : access Gtk_Widget_Record'Class) is
|
||||
begin
|
||||
if Get_Text (Label) = "Enter integer:" then
|
||||
Set_Text (Message, "Entered:" & Integer'Image (Integer'Value (Get_Text (Edit))));
|
||||
Set_Sensitive (Button, False);
|
||||
else
|
||||
Set_Text (Message, "Entered:" & Get_Text (Edit));
|
||||
Set_Text (Label, "Enter integer:");
|
||||
end if;
|
||||
exception
|
||||
when Constraint_Error =>
|
||||
Set_Text (Message, "Error integer input");
|
||||
end Clicked;
|
||||
|
||||
begin
|
||||
Gtk.Main.Init;
|
||||
Gtk.Window.Gtk_New (Window);
|
||||
Gtk_New (Grid, 2, 3, False);
|
||||
Add (Window, Grid);
|
||||
Gtk_New (Label, "Enter string:");
|
||||
Attach (Grid, Label, 0, 1, 0, 1);
|
||||
Gtk_New (Edit);
|
||||
Attach (Grid, Edit, 1, 2, 0, 1);
|
||||
Gtk_New (Button, "OK");
|
||||
Attach (Grid, Button, 2, 3, 0, 1);
|
||||
Gtk_New (Message);
|
||||
Attach (Grid, Message, 0, 3, 1, 2);
|
||||
Return_Handlers.Connect
|
||||
( Window,
|
||||
"delete_event",
|
||||
Return_Handlers.To_Marshaller (Delete_Event'Access)
|
||||
);
|
||||
Handlers.Connect
|
||||
( Window,
|
||||
"destroy",
|
||||
Handlers.To_Marshaller (Destroy'Access)
|
||||
);
|
||||
Handlers.Connect
|
||||
( Button,
|
||||
"clicked",
|
||||
Handlers.To_Marshaller (Clicked'Access)
|
||||
);
|
||||
Show_All (Grid);
|
||||
Show (Window);
|
||||
|
||||
Gtk.Main.Main;
|
||||
end Graphic_Input;
|
||||
|
|
@ -0,0 +1 @@
|
|||
set input to text returned of (display dialog "Enter text:" default answer "")
|
||||
|
|
@ -0,0 +1 @@
|
|||
set input to text returned of (display dialog "Enter a number:" default answer "") as integer
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
InputBox, String, Input, Enter a string:
|
||||
InputBox, Int, Input, Enter an int:
|
||||
Msgbox, You entered "%String%" and "%Int%"
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
Gui, Add, Text,, String:
|
||||
Gui, Add, Text,, Int:
|
||||
Gui, Add, Button, gGo, Go!
|
||||
Gui, Add, Edit, vString ym
|
||||
Gui, Add, Edit, VInt
|
||||
Gui, Show, Center, Input
|
||||
Return
|
||||
|
||||
Go:
|
||||
Gui, Submit, NoHide
|
||||
Msgbox, You entered "%String%" and "%Int%"
|
||||
ExitApp
|
||||
Return
|
||||
25
Task/User-input-Graphical/BBC-BASIC/user-input-graphical.bbc
Normal file
25
Task/User-input-Graphical/BBC-BASIC/user-input-graphical.bbc
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
INSTALL @lib$+"WINLIB2"
|
||||
INSTALL @lib$+"WINLIB5"
|
||||
ES_NUMBER = 8192
|
||||
|
||||
form% = FN_newdialog("Rosetta Code", 100, 100, 100, 64, 8, 1000)
|
||||
PROC_static(form%, "String:", 100, 8, 8, 30, 14, 0)
|
||||
PROC_editbox(form%, "Example", 101, 40, 6, 52, 14, 0)
|
||||
PROC_static(form%, "Number:", 102, 8, 26, 30, 14, 0)
|
||||
PROC_editbox(form%, "75000", 103, 40, 24, 52, 14, ES_NUMBER)
|
||||
PROC_pushbutton(form%, "Read", FN_setproc(PROCread), 30, 43, 40, 16, 0)
|
||||
PROC_showdialog(form%)
|
||||
|
||||
REPEAT
|
||||
WAIT 1
|
||||
UNTIL !form% = 0
|
||||
QUIT
|
||||
|
||||
DEF PROCread
|
||||
LOCAL buffer%, number%
|
||||
DIM buffer% LOCAL 255
|
||||
SYS "GetDlgItemText", !form%, 101, buffer%, 255
|
||||
SYS "GetDlgItemInt", !form%, 103, 0, 1 TO number%
|
||||
PRINT "String = """ $$buffer% """"
|
||||
PRINT "Number = " ; number%
|
||||
ENDPROC
|
||||
25
Task/User-input-Graphical/C++/user-input-graphical-1.cpp
Normal file
25
Task/User-input-Graphical/C++/user-input-graphical-1.cpp
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
#ifndef TASK_H
|
||||
#define TASK_H
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
class QLabel ;
|
||||
class QLineEdit ;
|
||||
class QVBoxLayout ;
|
||||
class QHBoxLayout ;
|
||||
|
||||
class EntryWidget : public QWidget {
|
||||
|
||||
Q_OBJECT
|
||||
public :
|
||||
EntryWidget( QWidget *parent = 0 ) ;
|
||||
private :
|
||||
QHBoxLayout *upperpart , *lowerpart ;
|
||||
QVBoxLayout *entryLayout ;
|
||||
QLineEdit *stringinput ;
|
||||
QLineEdit *numberinput ;
|
||||
QLabel *stringlabel ;
|
||||
QLabel *numberlabel ;
|
||||
} ;
|
||||
|
||||
#endif
|
||||
28
Task/User-input-Graphical/C++/user-input-graphical-2.cpp
Normal file
28
Task/User-input-Graphical/C++/user-input-graphical-2.cpp
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#include <QLineEdit>
|
||||
#include <QLabel>
|
||||
#include <QHBoxLayout>
|
||||
#include <QVBoxLayout>
|
||||
#include <QString>
|
||||
#include "task.h"
|
||||
|
||||
EntryWidget::EntryWidget ( QWidget *parent )
|
||||
: QWidget( parent ) {
|
||||
entryLayout = new QVBoxLayout( this ) ;
|
||||
stringlabel = new QLabel( "Enter a string!" ) ;
|
||||
stringinput = new QLineEdit( "" ) ;
|
||||
stringinput->setMaxLength( 20 ) ;
|
||||
stringinput->setInputMask( QString( "AAAAAAAAAAAAAAAAAAA" ) ) ;
|
||||
upperpart = new QHBoxLayout ;
|
||||
upperpart->addWidget( stringlabel ) ;
|
||||
upperpart->addWidget( stringinput ) ;
|
||||
numberlabel = new QLabel( "Enter a number!" ) ;
|
||||
numberinput = new QLineEdit( "0" ) ;
|
||||
numberinput->setMaxLength( 5 ) ;
|
||||
numberinput->setInputMask( QString( "99999" ) ) ;
|
||||
lowerpart = new QHBoxLayout ;
|
||||
lowerpart->addWidget( numberlabel ) ;
|
||||
lowerpart->addWidget( numberinput ) ;
|
||||
entryLayout->addLayout( upperpart ) ;
|
||||
entryLayout->addLayout( lowerpart ) ;
|
||||
setLayout( entryLayout ) ;
|
||||
}
|
||||
9
Task/User-input-Graphical/C++/user-input-graphical-3.cpp
Normal file
9
Task/User-input-Graphical/C++/user-input-graphical-3.cpp
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#include <QApplication>
|
||||
#include "task.h"
|
||||
|
||||
int main( int argc , char *argv[ ] ) {
|
||||
QApplication app( argc , argv ) ;
|
||||
EntryWidget theWidget ;
|
||||
theWidget.show( ) ;
|
||||
return app.exec( ) ;
|
||||
}
|
||||
74
Task/User-input-Graphical/C/user-input-graphical.c
Normal file
74
Task/User-input-Graphical/C/user-input-graphical.c
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
void ok_hit(GtkButton *o, GtkWidget **w)
|
||||
{
|
||||
GtkMessageDialog *msg;
|
||||
|
||||
gdouble v = gtk_spin_button_get_value((GtkSpinButton *)w[1]);
|
||||
const gchar *c = gtk_entry_get_text((GtkEntry *)w[0]);
|
||||
|
||||
msg = (GtkMessageDialog *)
|
||||
gtk_message_dialog_new(NULL,
|
||||
GTK_DIALOG_MODAL,
|
||||
(v==75000) ? GTK_MESSAGE_INFO : GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_OK,
|
||||
"You wrote '%s' and selected the number %d%s",
|
||||
c, (gint)v,
|
||||
(v==75000) ? "" : " which is wrong (75000 expected)!");
|
||||
gtk_widget_show_all(GTK_WIDGET(msg));
|
||||
(void)gtk_dialog_run(GTK_DIALOG(msg));
|
||||
gtk_widget_destroy(GTK_WIDGET(msg));
|
||||
if ( v==75000 ) gtk_main_quit();
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
GtkWindow *win;
|
||||
GtkEntry *entry;
|
||||
GtkSpinButton *spin;
|
||||
GtkButton *okbutton;
|
||||
GtkLabel *entry_l, *spin_l;
|
||||
GtkHBox *hbox[2];
|
||||
GtkVBox *vbox;
|
||||
GtkWidget *widgs[2];
|
||||
|
||||
gtk_init(&argc, &argv);
|
||||
|
||||
win = (GtkWindow *)gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title(win, "Insert values");
|
||||
|
||||
entry_l = (GtkLabel *)gtk_label_new("Insert a string");
|
||||
spin_l = (GtkLabel *)gtk_label_new("Insert 75000");
|
||||
|
||||
entry = (GtkEntry *)gtk_entry_new();
|
||||
spin = (GtkSpinButton *)gtk_spin_button_new_with_range(0, 80000, 1);
|
||||
|
||||
widgs[0] = GTK_WIDGET(entry);
|
||||
widgs[1] = GTK_WIDGET(spin);
|
||||
|
||||
okbutton = (GtkButton *)gtk_button_new_with_label("Ok");
|
||||
|
||||
hbox[0] = (GtkHBox *)gtk_hbox_new(FALSE, 1);
|
||||
hbox[1] = (GtkHBox *)gtk_hbox_new(FALSE, 1);
|
||||
|
||||
vbox = (GtkVBox *)gtk_vbox_new(TRUE, 1);
|
||||
|
||||
gtk_container_add(GTK_CONTAINER(hbox[0]), GTK_WIDGET(entry_l));
|
||||
gtk_container_add(GTK_CONTAINER(hbox[0]), GTK_WIDGET(entry));
|
||||
gtk_container_add(GTK_CONTAINER(hbox[1]), GTK_WIDGET(spin_l));
|
||||
gtk_container_add(GTK_CONTAINER(hbox[1]), GTK_WIDGET(spin));
|
||||
|
||||
gtk_container_add(GTK_CONTAINER(vbox), GTK_WIDGET(hbox[0]));
|
||||
gtk_container_add(GTK_CONTAINER(vbox), GTK_WIDGET(hbox[1]));
|
||||
gtk_container_add(GTK_CONTAINER(vbox), GTK_WIDGET(okbutton));
|
||||
|
||||
gtk_container_add(GTK_CONTAINER(win), GTK_WIDGET(vbox));
|
||||
|
||||
g_signal_connect(G_OBJECT(win), "delete-event", (GCallback)gtk_main_quit, NULL);
|
||||
g_signal_connect(G_OBJECT(okbutton), "clicked", (GCallback)ok_hit, widgs);
|
||||
|
||||
gtk_widget_show_all(GTK_WIDGET(win));
|
||||
gtk_main();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
(import 'javax.swing.JOptionPane)
|
||||
(let [number (-> "Enter an Integer"
|
||||
JOptionPane/showInputDialog
|
||||
Integer/parseInt)
|
||||
string (JOptionPane/showInputDialog "Enter a String")]
|
||||
[number string])
|
||||
|
|
@ -0,0 +1 @@
|
|||
(capi:prompt-for-string "Enter a string:")
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
(do ((number 0) (okp t))
|
||||
((or (not okp) (= 75000 number)))
|
||||
(multiple-value-setq (number okp)
|
||||
(capi:prompt-for-integer "Enter an integer:")))
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
(capi:prompt-for-integer "Enter an integer:"
|
||||
:ok-check #'(lambda (n) (= n 75000)))
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
(capi:define-interface string/integer-prompt () ()
|
||||
(:panes
|
||||
(string-pane
|
||||
capi:text-input-pane
|
||||
:title "Enter a string:")
|
||||
(integer-pane
|
||||
capi:text-input-pane
|
||||
:title "Enter an integer:"
|
||||
:change-callback :redisplay-interface))
|
||||
(:layouts
|
||||
(main
|
||||
capi:column-layout
|
||||
'(string-pane integer-pane))))
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
(defun string/integer-prompt-value (pane)
|
||||
(with-slots (string-pane integer-pane) pane
|
||||
(let* ((string (capi:text-input-pane-text string-pane))
|
||||
(integer-string (capi:text-input-pane-text integer-pane))
|
||||
(integer (when (every 'digit-char-p integer-string)
|
||||
(parse-integer integer-string :junk-allowed t))))
|
||||
(values (cons string integer)))))
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
(defun do-prompting ()
|
||||
(capi:popup-confirmer
|
||||
(make-instance 'string/integer-prompt)
|
||||
"Enter some values:"
|
||||
:value-function 'string/integer-prompt-value
|
||||
:ok-check #'(lambda (result) (eql (cdr result) 75000))))
|
||||
20
Task/User-input-Graphical/Delphi/user-input-graphical.delphi
Normal file
20
Task/User-input-Graphical/Delphi/user-input-graphical.delphi
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
program UserInputGraphical;
|
||||
|
||||
{$APPTYPE CONSOLE}
|
||||
|
||||
uses SysUtils, Dialogs;
|
||||
|
||||
var
|
||||
s: string;
|
||||
lStringValue: string;
|
||||
lIntegerValue: Integer;
|
||||
begin
|
||||
lStringValue := InputBox('User input/Graphical', 'Enter a string', '');
|
||||
|
||||
repeat
|
||||
s := InputBox('User input/Graphical', 'Enter the number 75000', '75000');
|
||||
lIntegerValue := StrToIntDef(s, 0);
|
||||
if lIntegerValue <> 75000 then
|
||||
ShowMessage('Invalid entry: ' + s);
|
||||
until lIntegerValue = 75000;
|
||||
end.
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
s = input["Enter a string: "]
|
||||
i = parseInt[input["Enter an integer: "]]
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[s,i] = input["Dialog title", ["Enter a string", "Enter an integer"]]
|
||||
i = parseInt[i]
|
||||
61
Task/User-input-Graphical/Haskell/user-input-graphical-1.hs
Normal file
61
Task/User-input-Graphical/Haskell/user-input-graphical-1.hs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
import Graphics.UI.Gtk
|
||||
import Control.Monad
|
||||
|
||||
main = do
|
||||
initGUI
|
||||
|
||||
window <- windowNew
|
||||
set window [windowTitle := "Graphical user input", containerBorderWidth := 10]
|
||||
|
||||
vb <- vBoxNew False 0
|
||||
containerAdd window vb
|
||||
|
||||
hb1 <- hBoxNew False 0
|
||||
boxPackStart vb hb1 PackNatural 0
|
||||
hb2 <- hBoxNew False 0
|
||||
boxPackStart vb hb2 PackNatural 0
|
||||
|
||||
lab1 <- labelNew (Just "Enter number 75000")
|
||||
boxPackStart hb1 lab1 PackNatural 0
|
||||
nrfield <- entryNew
|
||||
entrySetText nrfield "75000"
|
||||
boxPackStart hb1 nrfield PackNatural 5
|
||||
|
||||
strfield <- entryNew
|
||||
boxPackEnd hb2 strfield PackNatural 5
|
||||
lab2 <- labelNew (Just "Enter a text")
|
||||
boxPackEnd hb2 lab2 PackNatural 0
|
||||
|
||||
accbox <- hBoxNew False 0
|
||||
boxPackStart vb accbox PackNatural 5
|
||||
im <- imageNewFromStock stockApply IconSizeButton
|
||||
acceptButton <- buttonNewWithLabel "Accept"
|
||||
buttonSetImage acceptButton im
|
||||
boxPackStart accbox acceptButton PackRepel 0
|
||||
|
||||
txtstack <- statusbarNew
|
||||
boxPackStart vb txtstack PackNatural 0
|
||||
id <- statusbarGetContextId txtstack "Line"
|
||||
|
||||
widgetShowAll window
|
||||
|
||||
onEntryActivate nrfield (showStat nrfield txtstack id)
|
||||
onEntryActivate strfield (showStat strfield txtstack id)
|
||||
|
||||
onPressed acceptButton $ do
|
||||
g <- entryGetText nrfield
|
||||
if g=="75000" then
|
||||
widgetDestroy window
|
||||
else do
|
||||
msgid <- statusbarPush txtstack id "You didn't enter 75000. Try again"
|
||||
return ()
|
||||
|
||||
onDestroy window mainQuit
|
||||
mainGUI
|
||||
|
||||
showStat :: Entry -> Statusbar -> ContextId -> IO ()
|
||||
showStat fld stk id = do
|
||||
txt <- entryGetText fld
|
||||
let mesg = "You entered \"" ++ txt ++ "\""
|
||||
msgid <- statusbarPush stk id mesg
|
||||
return ()
|
||||
|
|
@ -0,0 +1 @@
|
|||
*Main> main
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
CHARACTER string*100
|
||||
|
||||
DLG(Edit=string, Edit=num_value, Button='&OK', TItle='Enter 75000 for num_value')
|
||||
WRITE(Messagebox, Name) "You entered", string, num_value
|
||||
15
Task/User-input-Graphical/Icon/user-input-graphical.icon
Normal file
15
Task/User-input-Graphical/Icon/user-input-graphical.icon
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
procedure main()
|
||||
WOpen("size=800,800") | stop("Unable to open window")
|
||||
WWrite("Enter a string:")
|
||||
s := WRead()
|
||||
WWrite("You entered ",image(s))
|
||||
WWrite("Enter the integer 75000:")
|
||||
i := WRead()
|
||||
if i := integer(i) then
|
||||
WWrite("You entered: ",i)
|
||||
else
|
||||
WWrite(image(i)," isn't an integer")
|
||||
WDone()
|
||||
end
|
||||
|
||||
link graphics
|
||||
32
Task/User-input-Graphical/J/user-input-graphical.j
Normal file
32
Task/User-input-Graphical/J/user-input-graphical.j
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
SIMPLEGUI=: noun define
|
||||
pc simpleGui;
|
||||
xywh 136 39 44 12;cc accept button;cn "Accept";
|
||||
xywh 0 14 60 11;cc IntegerLabel static ss_right;cn "Enter an integer";
|
||||
xywh 65 13 60 12;cc integer edit;
|
||||
xywh 0 39 60 11;cc TextLabel static ss_right;cn "Enter text";
|
||||
xywh 64 38 60 12;cc text edit;
|
||||
pas 6 6;pcenter;
|
||||
rem form end;
|
||||
)
|
||||
|
||||
simpleGui_run=: verb define
|
||||
wd SIMPLEGUI
|
||||
wd 'set integer *', ": 75000
|
||||
wd 'pshow;'
|
||||
)
|
||||
|
||||
simpleGui_accept_button=: verb define
|
||||
ttxt=. text
|
||||
tint=. _". integer NB. invalid integers assigned value _
|
||||
if. tint ~: 75000 do.
|
||||
wdinfo 'Integer entered was not 75000.'
|
||||
else.
|
||||
simpleGui_close ''
|
||||
'simpleGui_text simpleGui_integer'=: ttxt;tint
|
||||
end.
|
||||
)
|
||||
|
||||
simpleGui_close=: wd bind 'pclose'
|
||||
simpleGui_cancel=: simpleGui_close
|
||||
|
||||
simpleGui_run''
|
||||
9
Task/User-input-Graphical/Java/user-input-graphical.java
Normal file
9
Task/User-input-Graphical/Java/user-input-graphical.java
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
import javax.swing.*;
|
||||
|
||||
public class GetInputSwing {
|
||||
public static void main(String[] args) throws Exception {
|
||||
int number = Integer.parseInt(
|
||||
JOptionPane.showInputDialog ("Enter an Integer"));
|
||||
String string = JOptionPane.showInputDialog ("Enter a String");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
var str = prompt("Enter a string");
|
||||
var value = 0;
|
||||
while (value != 75000) {
|
||||
value = parseInt( prompt("Enter the number 75000") );
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
' [RC] User input/graphical
|
||||
|
||||
' Typical LB graphical input/output example.This shows how LB takes user input.
|
||||
' You'd usually do more validating of input.
|
||||
|
||||
|
||||
nomainwin ' No console window needed.
|
||||
|
||||
textbox#w.tb1, 100, 20, 200, 30
|
||||
textbox#w.tb2, 100, 60, 200, 30
|
||||
textbox#w.tb3, 100,160, 200, 30
|
||||
|
||||
statictext #w.st1, "String =", 10, 30, 90, 30
|
||||
statictext #w.st2, "Integer =", 10, 70, 90, 30
|
||||
|
||||
button #w.b1, "Read and Show", [buttonClicked], LR, 180, 70
|
||||
|
||||
WindowWidth =360
|
||||
WindowHeight =240
|
||||
UpperLeftX = 40
|
||||
UpperLeftY = 40
|
||||
|
||||
open "User input of integer & string" for window as #w
|
||||
|
||||
#w "trapclose [quit]" ' Clean exit routine.
|
||||
#w.tb1 "!font courier 12"
|
||||
#w.tb2 "!font courier 12"
|
||||
#w.tb3 "!font courier 12 bold"
|
||||
#w.st1 "!font courier 12"
|
||||
#w.st2 "!font courier 12"
|
||||
|
||||
#w.tb1 "Change this string."
|
||||
#w.tb2 "Enter an integer here."
|
||||
#w.tb3 "Display will be here."
|
||||
|
||||
#w.tb1 "!selectall"
|
||||
|
||||
wait
|
||||
|
||||
[buttonClicked] ' Button-clicked routine collects data
|
||||
#w.tb1 "!contents? in1$"
|
||||
#w.tb2 "!contents? in2$"
|
||||
#w.tb3 in1$; " "; int( val( in2$))
|
||||
wait
|
||||
|
||||
[quit]
|
||||
close #w
|
||||
end
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
str = InputString["Input a string"]; nb =
|
||||
InputString["Input a number"]; Print[str, " " , ToString@nb]
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
/* NetRexx */
|
||||
options replace format comments java crossref symbols nobinary
|
||||
import javax.swing.JOptionPane
|
||||
|
||||
unumber = 0
|
||||
ustring = ''
|
||||
|
||||
do
|
||||
unumber = Integer.parseInt(JOptionPane.showInputDialog("Enter an Integer"))
|
||||
ustring = JOptionPane.showInputDialog("Enter a String")
|
||||
catch ex = Exception
|
||||
ex.printStackTrace
|
||||
end
|
||||
|
||||
unumber = unumber * 1.0 -- just to prove unumber is really a number
|
||||
say 'Number:' unumber.right(10)', String:' ustring
|
||||
|
||||
return
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
; file: input-gui.lsp
|
||||
; url: http://rosettacode.org/wiki/User_input/Graphical
|
||||
; author: oofoe 2012-02-02
|
||||
|
||||
; Colours
|
||||
(setq ok '(.8 1 .8) fail '(1 .5 .5))
|
||||
|
||||
; Load library and initialize GUI server:
|
||||
(load (append (env "NEWLISPDIR") "/guiserver.lsp"))
|
||||
(gs:init)
|
||||
|
||||
; Validation Callback
|
||||
|
||||
; There is a bug in the "gs:get-text" function that causes it to fail
|
||||
; silently if the text field is empty. Therfore, I set the field
|
||||
; background to red first and only clear it if the field returns
|
||||
; correctly.
|
||||
(define (validate)
|
||||
(gs:set-color 'string fail)
|
||||
(if (not (empty? (gs:get-text 'string)))
|
||||
(gs:set-color 'string ok))
|
||||
|
||||
(gs:set-color 'number fail)
|
||||
(if (= 75000 (int (gs:get-text 'number)))
|
||||
(gs:set-color 'number ok))
|
||||
)
|
||||
|
||||
; Create main window frame and set layout.
|
||||
(gs:frame 'main 100 100 256 128 "User Input/Graphical")
|
||||
(gs:set-flow-layout 'main "left" 4 4)
|
||||
|
||||
; Create and add widgets.
|
||||
(gs:label 'instructions "Please enter a string and the number 75000:")
|
||||
(gs:text-field 'string 'validate 32)
|
||||
(gs:text-field 'number 'validate 8)
|
||||
(gs:button 'check 'validate "validate...")
|
||||
(gs:add-to 'main 'instructions 'string 'number 'check)
|
||||
|
||||
; Show main window.
|
||||
(gs:set-visible 'main true)
|
||||
|
||||
; Start event loop.
|
||||
(gs:listen)
|
||||
|
||||
; No (exit) needed -- guiserver kills program on window close.
|
||||
37
Task/User-input-Graphical/Oz/user-input-graphical.oz
Normal file
37
Task/User-input-Graphical/Oz/user-input-graphical.oz
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
functor
|
||||
import
|
||||
Application
|
||||
QTk at 'x-oz://system/wp/QTk.ozf'
|
||||
System
|
||||
define
|
||||
Number NumberWidget
|
||||
Text
|
||||
StatusLabel
|
||||
WindowClosed
|
||||
GUI = td(action:OnClose
|
||||
return:WindowClosed
|
||||
lr(label(text:"Enter some text:" width:20)
|
||||
entry(return:Text glue:ew)
|
||||
glue:ew)
|
||||
lr(label(text:"Enter a number:" width:20)
|
||||
numberentry(max:100000 return:Number handle:NumberWidget)
|
||||
label(handle:StatusLabel width:20)
|
||||
glue:ew
|
||||
)
|
||||
button(text:"Ok" glue:ew
|
||||
action:OnClose
|
||||
)
|
||||
)
|
||||
proc {OnClose}
|
||||
if {NumberWidget get($)} \= 75000 then
|
||||
{StatusLabel set(text:"Invalid value")}
|
||||
else
|
||||
{Window close}
|
||||
end
|
||||
end
|
||||
Window = {QTk.build GUI}
|
||||
{Window show}
|
||||
{Wait WindowClosed}
|
||||
{System.showInfo "You entered; "#Text#", "#Number}
|
||||
{Application.exit 0}
|
||||
end
|
||||
41
Task/User-input-Graphical/Perl/user-input-graphical-1.pl
Normal file
41
Task/User-input-Graphical/Perl/user-input-graphical-1.pl
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
use Wx;
|
||||
|
||||
# ---------------------------------------------------------------
|
||||
|
||||
package MyApp;
|
||||
use base 'Wx::App';
|
||||
use Wx qw(wxHORIZONTAL wxVERTICAL wxALL wxALIGN_CENTER);
|
||||
use Wx::Event 'EVT_BUTTON';
|
||||
|
||||
our ($frame, $text_input, $integer_input);
|
||||
|
||||
sub OnInit
|
||||
{$frame = new Wx::Frame
|
||||
(undef, -1, 'Input window', [-1, -1], [250, 150]);
|
||||
|
||||
my $panel = new Wx::Panel($frame, -1);
|
||||
$text_input = new Wx::TextCtrl($panel, -1, '');
|
||||
$integer_input = new Wx::SpinCtrl
|
||||
($panel, -1, '', [-1, -1], [-1, -1],
|
||||
0, 0, 100_000);
|
||||
|
||||
my $okay_button = new Wx::Button($panel, -1, 'OK');
|
||||
EVT_BUTTON($frame, $okay_button, \&OnQuit);
|
||||
|
||||
my $sizer = new Wx::BoxSizer(wxVERTICAL);
|
||||
$sizer->Add($_, 0, wxALL | wxALIGN_CENTER, 5)
|
||||
foreach $text_input, $integer_input, $okay_button;
|
||||
$panel->SetSizer($sizer);
|
||||
|
||||
$frame->Show(1);}
|
||||
|
||||
sub OnQuit
|
||||
{print 'String: ', $text_input->GetValue, "\n";
|
||||
print 'Integer: ', $integer_input->GetValue, "\n";
|
||||
$frame->Close;}
|
||||
|
||||
# ---------------------------------------------------------------
|
||||
|
||||
package main;
|
||||
|
||||
MyApp->new->MainLoop;
|
||||
16
Task/User-input-Graphical/Perl/user-input-graphical-2.pl
Normal file
16
Task/User-input-Graphical/Perl/user-input-graphical-2.pl
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
use XUL::Gui;
|
||||
|
||||
display Window
|
||||
title => 'Input Window',
|
||||
width => 250,
|
||||
height => 150,
|
||||
TextBox( id => 'txt' ),
|
||||
TextBox( id => 'num', type => 'number' ),
|
||||
Button(
|
||||
label => 'OK',
|
||||
oncommand => sub {
|
||||
print "String: " . ID(txt)->value . "\n"
|
||||
. "Number: " . ID(num)->value . "\n";
|
||||
quit;
|
||||
},
|
||||
);
|
||||
10
Task/User-input-Graphical/PicoLisp/user-input-graphical.l
Normal file
10
Task/User-input-Graphical/PicoLisp/user-input-graphical.l
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
(and
|
||||
(call 'sh "-c"
|
||||
(pack
|
||||
"dialog \
|
||||
--inputbox 'Input a string' 8 60 \
|
||||
--inputbox 'Input a number' 8 20 \
|
||||
2>"
|
||||
(tmp "dlg") ) )
|
||||
(split (in (tmp "dlg") (line)) "^I")
|
||||
(cons (pack (car @)) (format (cadr @))) )
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
FUNCTION PBMAIN () AS LONG
|
||||
result$ = INPUTBOX$("Enter a string.")
|
||||
MSGBOX result$
|
||||
DO
|
||||
'This assumes that 75000 is the ONLY valid input.
|
||||
result$ = INPUTBOX$("Enter the number 75000.")
|
||||
IF VAL(result$) <> 75000 THEN
|
||||
MSGBOX "You need to enter 75000!"
|
||||
ELSE
|
||||
MSGBOX "You entered the right number."
|
||||
EXIT DO
|
||||
END IF
|
||||
LOOP
|
||||
END FUNCTION
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
#region Define the Windows Form
|
||||
[Void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
|
||||
|
||||
$Form1 = New-Object System.Windows.Forms.Form
|
||||
$label1 = New-Object System.Windows.Forms.Label
|
||||
$label2 = New-Object System.Windows.Forms.Label
|
||||
$txtInputText = New-Object System.Windows.Forms.TextBox
|
||||
$txtInputNumber = New-Object System.Windows.Forms.TextBox
|
||||
$btnAccept = New-Object System.Windows.Forms.Button
|
||||
$label3 = New-Object System.Windows.Forms.Label
|
||||
$btnCancel = New-Object System.Windows.Forms.Button
|
||||
$SuspendLayout
|
||||
#
|
||||
# label1
|
||||
#
|
||||
$label1.AutoSize = $true
|
||||
$label1.Location = New-Object System.Drawing.Point(23, 36)
|
||||
$label1.Name = "label1"
|
||||
$label1.Size = New-Object System.Drawing.Size(34, 13)
|
||||
$label1.TabIndex = 0
|
||||
$label1.Text = "String"
|
||||
#
|
||||
# label2
|
||||
#
|
||||
$label2.AutoSize = $true
|
||||
$label2.Location = New-Object System.Drawing.Point(13, 62)
|
||||
$label2.Name = "label2"
|
||||
$label2.Size = New-Object System.Drawing.Size(44, 13)
|
||||
$label2.TabIndex = 1
|
||||
$label2.Text = "Number"
|
||||
#
|
||||
# txtInputText
|
||||
#
|
||||
$txtInputText.Location = New-Object System.Drawing.Point(63, 33)
|
||||
$txtInputText.Name = "txtInputText"
|
||||
$txtInputText.Size = New-Object System.Drawing.Size(100, 20)
|
||||
$txtInputText.TabIndex = 0
|
||||
#
|
||||
# txtInputNumber
|
||||
#
|
||||
$txtInputNumber.Location = New-Object System.Drawing.Point(63, 59)
|
||||
$txtInputNumber.Name = "txtInputNumber"
|
||||
$txtInputNumber.Size = New-Object System.Drawing.Size(100, 20)
|
||||
$txtInputNumber.TabIndex = 1
|
||||
$txtInputNumber.Text = "75000"
|
||||
#
|
||||
# btnAccept
|
||||
#
|
||||
$btnAccept.DialogResult = [System.Windows.Forms.DialogResult]::OK
|
||||
$btnAccept.Location = New-Object System.Drawing.Point(16, 94)
|
||||
$btnAccept.Name = "btnAccept"
|
||||
$btnAccept.Size = New-Object System.Drawing.Size(75, 23)
|
||||
$btnAccept.TabIndex = 2
|
||||
$btnAccept.Text = "Accept"
|
||||
$btnAccept.UseVisualStyleBackColor = $true
|
||||
$btnAccept.add_Click({$rc="Accept"; $Form1.Close()})
|
||||
#
|
||||
# label3
|
||||
#
|
||||
$label3.AutoSize = $true
|
||||
$label3.Location = New-Object System.Drawing.Point(13, 9)
|
||||
$label3.Name = "label3"
|
||||
$label3.Size = New-Object System.Drawing.Size(173, 13)
|
||||
$label3.TabIndex = 5
|
||||
$label3.Text = "Please input a string and a number:"
|
||||
#
|
||||
# btnCancel
|
||||
#
|
||||
$btnCancel.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
|
||||
$btnCancel.Location = New-Object System.Drawing.Point(97, 94)
|
||||
$btnCancel.Name = "btnCancel"
|
||||
$btnCancel.Size = New-Object System.Drawing.Size(75, 23)
|
||||
$btnCancel.TabIndex = 3
|
||||
$btnCancel.Text = "Cancel"
|
||||
$btnCancel.UseVisualStyleBackColor = $true
|
||||
#
|
||||
# Form1
|
||||
#
|
||||
$Form1.AcceptButton = $btnAccept
|
||||
$Form1.CancelButton = $btnCancel
|
||||
$Form1.ClientSize = New-Object System.Drawing.Size(196, 129)
|
||||
$Form1.ControlBox = $false
|
||||
$Form1.Controls.Add($btnCancel)
|
||||
$Form1.Controls.Add($label3)
|
||||
$Form1.Controls.Add($btnAccept)
|
||||
$Form1.Controls.Add($txtInputNumber)
|
||||
$Form1.Controls.Add($txtInputText)
|
||||
$Form1.Controls.Add($label2)
|
||||
$Form1.Controls.Add($label1)
|
||||
$Form1.Name = "Form1"
|
||||
$Form1.Text = "RosettaCode"
|
||||
|
||||
#endregion Define the Windows Form
|
||||
|
||||
### Show the input form
|
||||
$f = $Form1.ShowDialog()
|
||||
if ( $f -eq [System.Windows.Forms.DialogResult]::Cancel ) { "User selected Cancel" }
|
||||
else { "User entered `"{0}`" for the text and {1} for the number" -f $txtInputText.Text, $txtInputNumber.Text }
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
string$=InputRequester("Some Title","Enter a string","")
|
||||
variable=Val(InputRequester("Some other Title","Enter a Number","75000"))
|
||||
7
Task/User-input-Graphical/Python/user-input-graphical.py
Normal file
7
Task/User-input-Graphical/Python/user-input-graphical.py
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
import Tkinter,tkSimpleDialog
|
||||
|
||||
root = Tkinter.Tk()
|
||||
root.withdraw()
|
||||
|
||||
number = tkSimpleDialog.askinteger("Integer", "Enter a Number")
|
||||
string = tkSimpleDialog.askstring("String", "Enter a String")
|
||||
20
Task/User-input-Graphical/R/user-input-graphical.r
Normal file
20
Task/User-input-Graphical/R/user-input-graphical.r
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
library(gWidgets)
|
||||
options(guiToolkit="RGtk2") ## using gWidgtsRGtk2
|
||||
|
||||
w <- gwindow("Enter a string and a number")
|
||||
lyt <- glayout(cont=w)
|
||||
lyt[1,1] <- "Enter a string"
|
||||
lyt[1,2] <- gedit("", cont=lyt)
|
||||
lyt[2,1] <- "Enter 75000"
|
||||
lyt[2,2] <- gedit("", cont=lyt)
|
||||
lyt[3,2] <- gbutton("validate", cont=lyt, handler=function(h,...) {
|
||||
txt <- svalue(lyt[1,2])
|
||||
x <- svalue(lyt[2,2])
|
||||
x <- gsub(",", "", x)
|
||||
x <- as.integer(x)
|
||||
|
||||
if(nchar(txt) > 0 && x == 75000)
|
||||
gmessage("Congratulations, you followed directions", parent=w)
|
||||
else
|
||||
gmessage("You failed this simple task", parent=w)
|
||||
})
|
||||
60
Task/User-input-Graphical/REBOL/user-input-graphical.rebol
Normal file
60
Task/User-input-Graphical/REBOL/user-input-graphical.rebol
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
REBOL [
|
||||
Title: "Graphical User Input"
|
||||
Author: oofoe
|
||||
Date: 2009-12-07
|
||||
URL: http://rosettacode.org/wiki/User_Input_-_graphical
|
||||
]
|
||||
|
||||
; Simple GUI's can be defined with 'layout', a special purpose dialect
|
||||
; for specifying interfaces. In this case, I describe a gradient
|
||||
; background with an instruction label, followed by the input fields
|
||||
; and a validation button. It's possible to check dynamically as the
|
||||
; user types but I wanted to keep this example as clear as possible.
|
||||
|
||||
view layout [
|
||||
|
||||
; You can define new widget styles. Here I create a padded label style
|
||||
; (so that everything will line up) and a simple indicator light to
|
||||
; show if there's a problem with an input field.
|
||||
|
||||
style label vtext 60 "unlabeled"
|
||||
style indicator box maroon 24x24
|
||||
|
||||
backdrop effect [gradient 0x1 black coal]
|
||||
|
||||
vtext "Please enter a string, and the number 75000:"
|
||||
|
||||
; By default, GUI widgets are arranged top down. The 'across' word
|
||||
; starts stacking widgets from left to right. 'return' starts a new
|
||||
; line -- just like on a typewriter!
|
||||
|
||||
across
|
||||
|
||||
; Notice I'm using my new label and indicator styles here. Widgets
|
||||
; that I need to access later (the input field and the indicator) are
|
||||
; assigned to variables.
|
||||
|
||||
label "string:" s: field 240 si: indicator return
|
||||
|
||||
label "number:" n: field 50 ni: indicator return
|
||||
|
||||
pad 66
|
||||
button "validate" [
|
||||
|
||||
; The user may have entered bogus values, so I reset the indicators:
|
||||
|
||||
si/color: ni/color: maroon
|
||||
|
||||
; Now I check to see if the values are correct. For the string, I just
|
||||
; care that there is one. For the integer, I make sure that it
|
||||
; evaluates to an integer and that it's value is 75000. Because I've
|
||||
; already set the indicator colour, I don't care the integer
|
||||
; conversion raises an error or not, so I ignore it if anything goes
|
||||
; wrong.
|
||||
|
||||
if 0 < length? get-face s [si/color: green]
|
||||
error? try [if 75000 = to-integer get-face n [ni/color: green]]
|
||||
|
||||
show [si ni] ; Repainting multiple objects at once.
|
||||
]
|
||||
]
|
||||
14
Task/User-input-Graphical/Rascal/user-input-graphical.rascal
Normal file
14
Task/User-input-Graphical/Rascal/user-input-graphical.rascal
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
import vis::Render;
|
||||
import vis::Figure;
|
||||
|
||||
public void UserInput2(){
|
||||
integer = "";
|
||||
string = "";
|
||||
row1 = [text("Enter a string "),
|
||||
textfield("",void(str s){string = s;}),
|
||||
text(str(){return " This input box will give a string by definition.\n You entered <string>";})];
|
||||
row2 = [text("Enter 75000"),
|
||||
textfield("",void(str v){integer = v;}),
|
||||
text(str(){return " <integer == "75000" ? "Correct" : "Wrong">";})];
|
||||
render(grid([row1, row2]));
|
||||
}
|
||||
39
Task/User-input-Graphical/Ruby/user-input-graphical-1.rb
Normal file
39
Task/User-input-Graphical/Ruby/user-input-graphical-1.rb
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
require 'tk'
|
||||
|
||||
def main
|
||||
root = TkRoot.new
|
||||
l1 = TkLabel.new(root, "text" => "input a string")
|
||||
e1 = TkEntry.new(root)
|
||||
l2 = TkLabel.new(root, "text" => "input the number 75000")
|
||||
e2 = TkEntry.new(root) do
|
||||
validate "focusout"
|
||||
validatecommand lambda {e2.value.to_i == 75_000}
|
||||
invalidcommand lambda {focus_number_entry(e2)}
|
||||
end
|
||||
ok = TkButton.new(root) do
|
||||
text "OK"
|
||||
command lambda {validate_input(e1, e2)}
|
||||
end
|
||||
Tk.grid(l1, e1)
|
||||
Tk.grid(l2, e2)
|
||||
Tk.grid("x",ok, "sticky" => "w")
|
||||
Tk.mainloop
|
||||
end
|
||||
|
||||
def validate_input(text_entry, number_entry)
|
||||
if number_entry.value.to_i != 75_000
|
||||
focus_number_entry(number_entry)
|
||||
else
|
||||
puts %Q{You entered: "#{text_entry.value}" and "#{number_entry.value}"}
|
||||
root.destroy
|
||||
end
|
||||
end
|
||||
|
||||
def focus_number_entry(widget)
|
||||
widget \
|
||||
.configure("background" => "red", "foreground" => "white") \
|
||||
.selection_range(0, "end") \
|
||||
.focus
|
||||
end
|
||||
|
||||
main
|
||||
7
Task/User-input-Graphical/Ruby/user-input-graphical-2.rb
Normal file
7
Task/User-input-Graphical/Ruby/user-input-graphical-2.rb
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
Shoes.app do
|
||||
string = ask('Enter a string:')
|
||||
begin
|
||||
number = ask('Enter the number 75000:')
|
||||
end while number.to_i != 75000
|
||||
para %Q{you entered the string "#{string}" and the number #{number}}
|
||||
end
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
Prgm
|
||||
Dialog
|
||||
Title "Rosetta Code"
|
||||
Request "A string", s
|
||||
DropDown "An integer", {"75000"}, n
|
||||
EndDlog
|
||||
74999 + n → n
|
||||
EndPrgm
|
||||
5
Task/User-input-Graphical/Tcl/user-input-graphical-1.tcl
Normal file
5
Task/User-input-Graphical/Tcl/user-input-graphical-1.tcl
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# create entry widget:
|
||||
pack [entry .e1]
|
||||
|
||||
# read its content:
|
||||
set input [.e get]
|
||||
4
Task/User-input-Graphical/Tcl/user-input-graphical-2.tcl
Normal file
4
Task/User-input-Graphical/Tcl/user-input-graphical-2.tcl
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
pack [entry .e1 -textvar input]
|
||||
|
||||
# show the content at any time by
|
||||
puts $input
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
strUserIn = InputBox("Enter Data")
|
||||
Wscript.Echo strUserIn
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
Dialog_Input_1(1, "`User Input example`,
|
||||
`??Enter a string `,
|
||||
`??Enter a number `")
|
||||
Loading…
Add table
Add a link
Reference in a new issue