#!../gtkscript REM ******************************************* REM REM Encode to and decode from ROT13 REM Ported from the Yabasic example REM February 18, 2006 by Peter van Eerten REM REM Revised for GtkScript 0.72 at june 18, 2006 REM ******************************************* SUB convert ret$ = "" tmp$ = gtk_entry_get_text(entry$) FOR i = 1 TO LEN(tmp$) c$ = MID$(tmp$, i, 1) IF ASC(c$) >= 97 AND ASC(c$) <= 109 THEN c$ = CHR$(ASC(c$) + 13) ELSE IF ASC(c$) >= 110 AND ASC(c$) <= 122 THEN c$ = CHR$(ASC(c$) - 13) ELSE IF ASC(c$) >= 65 AND ASC(c$) <= 77 THEN c$ = CHR$(ASC(c$) + 13) ELSE IF ASC(c$) >= 78 AND ASC(c$) <= 90 THEN c$ = CHR$(ASC(c$) - 13) ENDIF ENDIF ENDIF ENDIF ret$ = ret$ + c$ NEXT REM Put in result entry gtk_entry_set_text(result$, CHR$(34) + ret$ + CHR$(34)) gtk_widget_grab_focus(entry$) ENDSUB REM **************************************** MAIN program REM Define location of configfile gtk_server_cfg("cfg=../../gtk-server.cfg") REM First, initialize GTK gtk_init(NULL, NULL) REM Create main window win$ = gtk_window_new(0) gtk_window_set_title(win$, CHR$(34) + "ROT13 converter" + CHR$(34)) gtk_window_set_default_size(win$, 350, 150) gtk_window_set_position(win$, 1) gtk_window_set_resizable(win$, 0) REM Create notebook notebook$ = gtk_notebook_new() gtk_notebook_set_tab_pos(notebook$, 2) gtk_server_connect(notebook$, "button-press-event", "notebook", 1) REM Create EXIT button myexit$ = gtk_button_new_with_label("Exit") gtk_widget_set_size_request(myexit$, 75, 40) REM Put on main window vbox1$ = gtk_vbox_new(0, 3) hbox1$ = gtk_hbox_new(0, 3) gtk_box_pack_end(hbox1$, myexit$, 0, 0, 1) gtk_box_pack_start(vbox1$, notebook$, 1, 1, 1) gtk_box_pack_start(vbox1$, hbox1$, 1, 1, 1) gtk_container_add(win$, vbox1$) REM Define notebook pages frame1$ = gtk_frame_new(NULL) frame2$ = gtk_frame_new(NULL) notelabel1$ = gtk_label_new("Convert") notelabel2$ = gtk_label_new("About...") REM Add the pages to the notebook gtk_notebook_insert_page(notebook$, frame1$, notelabel1$, 1) gtk_notebook_insert_page(notebook$, frame2$, notelabel2$, 2) REM Create converter part entry$ = gtk_entry_new() convert$ = gtk_button_new_with_label("Convert") gtk_widget_set_size_request(convert$, 75, 40) result$ = gtk_entry_new() REM Put it all on notebook page vbox2$ = gtk_vbox_new(0, 3) hbox2$ = gtk_hbox_new(0, 3) gtk_box_pack_start(vbox2$, entry$, 1, 1, 1) gtk_box_pack_start(hbox2$, convert$, 0, 0, 1) gtk_box_pack_start(vbox2$, hbox2$, 1, 1, 1) gtk_box_pack_start(vbox2$, result$, 1, 1, 1) gtk_container_add(frame1$, vbox2$) REM Create ABOUT part ex$ = "This is a small and simple demonstration with GtkScript.\n\n" ex$ = ex$ + "Compiled with " + gtk_server_version() + ".\n\n" ex$ = ex$ + "Goto http://www.gtk-server.org for more info." label$ = gtk_label_new(CHR$(34) + ex$ + CHR$(34)) gtk_label_set_line_wrap(label$, 1) gtk_label_set_justify(label$, 2) gtk_container_add(frame2$, label$) REM Show all widgets gtk_widget_show_all(win$) REM Get focus to input entry gtk_widget_grab_focus(entry$) REM Main program starts here DO event$ = gtk_server_callback("wait") IF event$ = entry$ OR event$ = convert$ THEN CALL convert ENDIF IF event$ = "notebook" THEN gtk_widget_grab_focus(entry$) ENDIF UNTIL event$ = myexit$ OR event$ = win$ REM Exit GTK gtk_exit(0) END