' IUP Simple Editor
IMPORT iup.bas
CONST IUP_CENTER = 0xFFFF
CONST IUP_DEFAULT = -2
FUNCTION Open_CB
LOCAL filedlg, filename, och, olen, fstr
filedlg = IUP::FileDlg()
IUP::SetAttribute(filedlg, "DIALOGTYPE", "OPEN")
IUP::SetAttribute(filedlg, "EXTFILTER", "Text Files|*.txt|All Files|*.*|")
IUP::Popup(filedlg, IUP_CENTER, IUP_CENTER)
IF IUP::GetInt(filedlg, "STATUS") <> -1 THEN
filename = IUP::GetAttribute(filedlg, "VALUE")
och = FREEFILE()
OPEN filename FOR BINARY AS och
olen = FILELEN(filename)
fstr = INPUT(olen, och)
IUP::StoreAttribute(multitext, "VALUE", fstr)
CLOSE(och)
END IF
IUP::Destroy(filedlg)
Open_CB = IUP_DEFAULT
END FUNCTION
FUNCTION SaveAs_CB
LOCAL filedlg, filename, sch, fstr
filedlg = IUP::FileDlg()
IUP::SetAttribute(filedlg, "DIALOGTYPE", "SAVE")
IUP::SetAttribute(filedlg, "EXTFILTER", "Text Files|*.txt|All Files|*.*|")
IUP::Popup(filedlg, IUP_CENTER, IUP_CENTER)
IF IUP::GetInt(filedlg, "STATUS") <> -1 THEN
filename = IUP::GetAttribute(filedlg, "VALUE")
fstr = IUP::GetAttribute(multitext, "VALUE")
sch = FREEFILE()
OPEN filename FOR BINARY AS sch
PRINT #sch, fstr
CLOSE(sch)
END IF
IUP::Destroy(filedlg)
SaveAs_CB = IUP_DEFAULT
END FUNCTION
FUNCTION Font_CB
LOCAL fontdlg, font
fontdlg = IUP::FontDlg()
font = IUP::GetAttribute(multitext, "FONT")
IUP::StoreAttribute(fontdlg, "VALUE", font)
IUP::Popup(fontdlg, IUP_CENTER, IUP_CENTER)
IF IUP::GetInt(fontdlg, "STATUS") = 1 THEN
font = IUP::GetAttribute(fontdlg, "VALUE")
IUP::StoreAttribute(multitext, "FONT", font)
END IF
IUP::Destroy(fontdlg)
Font_CB = IUP_DEFAULT
END FUNCTION
FUNCTION About_CB
IUP::Message("About", " Simple Editor\n\nIUP ScriptBasic Binding")
About_CB = IUP_DEFAULT
END FUNCTION
SUB Win_exit
Iup::ExitLoop = TRUE
END SUB
' *** MAIN ***
IUP::Open
IUP::ImageLibOpen()
multitext = IUP::Text()
vbox = IUP::Vbox(multitext)
IUP::SetAttribute(multitext, "MULTILINE", "YES")
IUP::SetAttribute(multitext, "EXPAND", "YES")
lbl_statusbar = IUP::Label("Lin 1, Col 1")
IUP::SetAttribute(lbl_statusbar, "NAME", "STATUSBAR")
IUP::SetAttribute(lbl_statusbar, "EXPAND", "HORIZONTAL")
IUP::SetAttribute(lbl_statusbar, "PADDING", "10x5")
item_open = IUP::Item("Open")
btn_open = IUP::Button()
IUP::SetAttribute(btn_open, "IMAGE", "IUP_FileOpen")
IUP::SetAttribute(btn_open, "FLAT", "Yes")
IUP::SetAttribute(btn_open, "CANFOCUS", "No")
item_saveas = IUP::Item("Save As")
btn_save = IUP::Button("")
IUP::SetAttribute(btn_save, "IMAGE", "IUP_FileSave")
IUP::SetAttribute(btn_save, "FLAT", "Yes")
IUP::SetAttribute(btn_save, "CANFOCUS", "No")
item_exit = IUP::Item("Exit")
item_find = IUP::Item("Find...")
btn_find = IUP::Button("")
IUP::SetAttribute(btn_find, "IMAGE", "IUP_EditFind")
IUP::SetAttribute(btn_find, "FLAT", "Yes")
IUP::SetAttribute(btn_find, "CANFOCUS", "No")
toolbar_hb = IUP::Hbox( _
btn_open, _
btn_save, _
IUP::SetAttributes(IUP::Label(), "SEPARATOR=VERTICAL"), _
btn_find)
IUP::SetAttribute(toolbar_hb, "MARGIN", "5x5")
IUP::SetAttribute(toolbar_hb, "GAP", "2")
item_goto = IUP::Item("Go To...")
item_font = IUP::Item("Font...")
item_about = IUP::Item("About...")
Iup::SetCallback(item_exit,"ACTION", ADDRESS(Win_exit()))
IUP::SetCallback(item_open, "ACTION", ADDRESS(Open_CB()))
IUP::SetCallback(item_saveas, "ACTION", ADDRESS(SaveAs_CB()))
IUP::SetCallback(item_font, "ACTION", ADDRESS(Font_CB()))
IUP::SetCallback(item_about, "ACTION", ADDRESS(About_CB()))
file_menu = IUP::Menu( _
item_open, _
item_saveas, _
IUP::Separator(), _
item_exit)
edit_menu = IUP::Menu( _
item_find, _
item_goto)
format_menu = IUP::Menu(item_font)
help_menu = IUP::Menu(item_about)
sub_menu_file = IUP::Submenu("File", file_menu)
sub_menu_edit = IUP::Submenu("Edit", edit_menu)
sub_menu_format = IUP::Submenu("Format", format_menu)
sub_menu_help = IUP::Submenu("Help", help_menu)
menu = IUP::Menu( _
sub_menu_file, _
sub_menu_edit, _
sub_menu_format, _
sub_menu_help)
vbox = IUP::Vbox(toolbar_hb, multitext, lbl_statusbar)
dlg = IUP::Dialog(vbox)
IUP::SetAttributeHandle(dlg, "MENU", menu)
IUP::SetAttribute(dlg, "TITLE", "Simple Editor")
IUP::SetAttribute(dlg, "SIZE", "QUARTERxQUARTER")
IUP::ShowXY(dlg, IUP_CENTER, IUP_CENTER)
IUP::SetAttribute(dlg, "USERSIZE")
IUP::MainLoop
IUP::Close