' $Id$ Strict Import noddybox.mwidget Incbin "icons.png" Const SUBCLASS:Int=False Const TESTTIMER:Int=False Global top:TMWindow Global tabs:TMTabber Global ok:TMButton Global cancel:TMButton Global check:TMCheckbox Global radio1:TMRadioButton Global radio2:TMRadioButton Global radio3:TMRadioButton Global radios:TMRadioButtonSet Global txtfield:TMTextField Global txtarea:TMTextArea Global list:TMListBox Global icons:TIconStrip=LoadIconStrip("incbin::icons.png") Global html:TMHTMLView Global html_url:TMTextField Global html_go:TMButton Global html_back:TMButton Global html_forward:TMButton Local slider1:TMSlider Local slider2:TMSlider Global tree:TMTreeView Global tree_node:TMTextField Global tree_add:TMButton Global tree_remove:TMButton ' ' CALLBACK FUNCTION VERSION ' Function OnTimer(w:TMWidget) w.Text("(Callback) Test Managed Widgets -- " + CurrentTime() + " " + CurrentDate()) End Function Function OnClose(o:TMWidget) Local w:TMWindow=TMWindow(o) w.closed=Confirm("(Callback) Really quit?") End Function Function OnMove(o:TMWidget, x:Int, y:Int) Local w:TMWindow=TMWindow(o) w.StatusText("(Callback) "+x+","+y) End Function Function OnResize(o:TMWidget, x:Int, y:Int) Local w:TMWindow=TMWindow(o) w.StatusText("(Callback) ["+x+","+y+"]") End Function Function OnPress_OK(o:TMWidget) top.Close() End Function Function OnPress_Cancel(o:TMWidget) Notify("Cancel pressed -- text='" + txtfield.GetText() + "'") End Function Function OnPress_Check(o:TMWidget, checked:Int) Notify("Ticked - " + checked) End Function Function OnSelected_Radio(o:TMWidget, index:Int) Notify("Radio changed - " + index) End Function Function OnTextChanged_Field(o:TMWidget, txt:String) top.StatusText(MilliSecs() + " -- " + txt) End Function Function ShowAreaStatus(o:TMWidget) Local t:TMTextArea=TMTextArea(o) Local s:String="" s:+"Pos: " + t.GetCursorColumn() + "," + t.GetCursorRow() + " " s:+"Len: " + t.GetLength() + " " s:+"[Sel: " + t.GetSelectionLength() + "," + t.GetSelectionRows() +"]" top.StatusText(MilliSecs() + " -- " + s) End Function Function OnMenu_Area(o:TMWidget) Notify("No menu!") End Function Function ShowChangedInt(o:TMWidget, val:Int) top.StatusText(MilliSecs() + " -- " + val) End Function Function OnForward(o:TMWidget) html.Forward() End Function Function OnBack(o:TMWidget) html.Back() End Function Function OnGO(o:TMWidget) html.Go(html_url.GetText()) End Function Function OnPageLoaded(o:TMWidget, url:String) top.StatusText(MilliSecs() + " -- Loaded " + url) End Function Function OnSelectURL(o:TMWidget, url:String) html_url.Text(url) End Function Function OnSelected_Tree(o:TMWidget, path:String, tag:Object) top.StatusText(MilliSecs() + " -- Selected " + path + " (" + tag.ToString() + ")") End Function Function OnClicked_Tree(o:TMWidget, path:String, tag:Object) top.StatusText(MilliSecs() + " -- Clicked " + path + " (" + tag.ToString() + ")") End Function Function OnExpanded_Tree(o:TMWidget, path:String, tag:Object) top.StatusText(MilliSecs() + " -- Expanded " + path + " (" + tag.ToString() + ")") End Function Function OnCollapsed_Tree(o:TMWidget, path:String, tag:Object) top.StatusText(MilliSecs() + " -- Collapsed " + path + " (" + tag.ToString() + ")") End Function Function OnMenu_Tree(o:TMWidget, path:String, tag:Object) top.StatusText(MilliSecs() + " -- Menu " + path + " (" + tag.ToString() + ")") End Function ' ' SUBCLASS VERSION ' Type MyApp Extends TMWindow Method OnTimer() Text("Test Managed Widgets -- " + CurrentTime() + " " + CurrentDate()) End Method Method OnClose() closed=Confirm("Really quit?") End Method Method OnMove(x:Int, y:Int) StatusText(x+","+y) End Method Method OnResize(x:Int, y:Int) StatusText("["+x+","+y+"]") End Method End Type Type MyOK Extends TMButton Method OnPress() top.Close() End Method End Type Type MyCancel Extends TMButton Method OnPress() Notify("Cancel pressed -- text='" + txtfield.GetText() + "'") End Method End Type Type MyCheck Extends TMCheckbox Method OnPress(checked:Int) Notify("Ticked - " + checked) End Method End Type Type MyRadio Extends TMRadioButtonSet Method OnSelected(index:Int) Notify("Radio changed - " + index) End Method End Type Type MyTextField Extends TMTextField Method OnTextChanged(txt:String) top.StatusText(MilliSecs() + " -- " + txt) End Method End Type Type MyTextArea Extends TMTextArea Method SetStatus() Local s:String="" s:+"Pos: " + GetCursorColumn() + "," + GetCursorRow() + " " s:+"Len: " + GetLength() + " " s:+"[Sel: " + GetSelectionLength() + "," + GetSelectionRows() +"]" top.StatusText(MilliSecs() + " -- " + s) End Method Method OnTextChanged() SetStatus() End Method Method OnSelection() SetStatus() End Method Method OnMenu() Notify("No menu!") End Method End Type Type MySlider Extends TMSlider Method OnValueChanged(val:Int) top.StatusText(MilliSecs() + " -- " + val) End Method End Type Type MyList Extends TMListBox Method OnIndexChanged(index:Int) top.StatusText(MilliSecs() + " -- " + index) End Method End Type Type MyForward Extends TMButton Method OnPress() html.Forward() End Method End Type Type MyBack Extends TMButton Method OnPress() html.Back() End Method End Type Type MyGo Extends TMButton Method OnPress() html.Go(html_url.GetText()) End Method End Type Type MyHTML Extends TMHTMLView Method OnPageLoaded(url:String) top.StatusText(MilliSecs() + " -- Loaded " + url) End Method Method OnSelectURL(url:String) html_url.Text(url) End Method End Type Type MyTree Extends TMTreeView Method OnSelected(path:String, tag:Object) top.StatusText(MilliSecs() + " -- Selected " + path + " (" + tag.ToString() + ")") End Method Method OnClicked(path:String, tag:Object) top.StatusText(MilliSecs() + " -- Clicked " + path + " (" + tag.ToString() + ")") End Method Method OnExpanded(path:String, tag:Object) top.StatusText(MilliSecs() + " -- Expanded " + path + " (" + tag.ToString() + ")") End Method Method OnCollapsed(path:String, tag:Object) top.StatusText(MilliSecs() + " -- Collapsed " + path + " (" + tag.ToString() + ")") End Method Method OnMenu(path:String, tag:Object) top.StatusText(MilliSecs() + " -- Menu " + path + " (" + tag.ToString() + ")") End Method End Type ' ' GENERIC SUBCLASSES ' Type AddToTree Extends TMButton Method OnPress() tree.Set(tree_node.GetText(),StripDir(tree_node.GetText())) End Method End Type Type RemoveFromTree Extends TMButton Method OnPress() tree.Remove(tree_node.GetText()) End Method End Type ' ' TEST ' If SUBCLASS top=New MyApp.Create("Test Managed Widgets",100,100,640,400,Null,WINDOW_TITLEBAR|WINDOW_CLIENTCOORDS|WINDOW_STATUS|WINDOW_RESIZABLE|WINDOW_MENU) Else top=New TMWindow.Create("Test Managed Widgets",100,100,640,400,Null,WINDOW_TITLEBAR|WINDOW_CLIENTCOORDS|WINDOW_STATUS|WINDOW_RESIZABLE|WINDOW_MENU) top.OnCloseEvent.Add(OnClose) top.OnTimerEvent.Add(OnTimer) top.OnMoveEvent.Add(OnMove) top.OnResizeEvent.Add(OnResize) EndIf top.MinSize(top.Width(),top.Height()) tabs=New TMTabber.Create(0,10,640,390,top) tabs.SetIconStrip(icons) tabs.AddItem(CreateListEntry("Buttons",0,0,"Test different button types")) tabs.AddItem(CreateListEntry("Text",0,1,"Test text entry fields")) tabs.AddItem(CreateListEntry("Sliders",0,2,"Test sliders")) tabs.AddItem(CreateListEntry("Lists",0,3,"Test list")) tabs.AddItem(CreateListEntry("HTML",0,-1,"Test HTML view")) tabs.AddItem(CreateListEntry("Tree View",0,-1,"Test tree view")) tabs.AddItem(CreateListEntry("Canvas",0,-1,"Test canvas")) If SUBCLASS ok=New MyOK.CreateOK("OK",10,300,80,30,tabs) cancel=New MyCancel.CreateCancel("Cancel",100,300,80,30,tabs) check=New MyCheck.Create("Checkbox",10,10,100,20,tabs) radio1=New TMRadioButton.Create("Radio 1",10,30,100,20,tabs) radio2=New TMRadioButton.Create("Radio 2",10,50,100,20,tabs) radio3=New TMRadioButton.Create("Radio 3",10,70,100,20,tabs) radio1.Checked(True) radios=New MyRadio.Create([radio1,radio2,radio3]) txtfield=New MyTextField.Create(90,10,80,20,tabs) txtarea=New MyTextArea.Create(10,40,620,300,tabs) slider1=New MySlider.Create(10,10,15,300,tabs,SLIDER_VERTICAL|SLIDER_SCROLLBAR) slider2=New MySlider.Create(30,10,300,15,tabs,SLIDER_HORIZONTAL|SLIDER_TRACKBAR) list=New MyList.Create(10,10,300,300,tabs) html=New MyHTML.Create(10,10,620,300,tabs,HTMLVIEW_NOCONTEXTMENU|HTMLVIEW_NONAVIGATE) html_url=New TMTextField.Create(10,320,620,20,tabs) html_go=New MyGo.Create("GO",10,345,90,20,tabs) html_back=New MyBack.Create("Back",110,345,90,20,tabs) html_forward=New MyForward.Create("Forward",210,345,90,20,tabs) tree=New MyTree.Create(10,10,620,250,tabs) Else ok=New TMButton.CreateOK("OK",10,300,80,30,tabs) cancel=New TMButton.CreateCancel("Cancel",100,300,80,30,tabs) check=New TMCheckbox.Create("Checkbox",10,10,100,20,tabs) radio1=New TMRadioButton.Create("Radio 1",10,30,100,20,tabs) radio2=New TMRadioButton.Create("Radio 2",10,50,100,20,tabs) radio3=New TMRadioButton.Create("Radio 3",10,70,100,20,tabs) radio1.Checked(True) radios=New TMRadioButtonSet.Create([radio1,radio2,radio3]) txtfield=New TMTextField.Create(90,10,80,20,tabs) txtarea=New TMTextArea.Create(10,40,620,300,tabs) slider1=New MySlider.Create(10,10,15,300,tabs,SLIDER_VERTICAL|SLIDER_SCROLLBAR) slider2=New MySlider.Create(30,10,300,15,tabs,SLIDER_HORIZONTAL|SLIDER_TRACKBAR) list=New TMListBox.Create(10,10,300,300,tabs) html=New TMHTMLView.Create(10,10,620,300,tabs,HTMLVIEW_NOCONTEXTMENU|HTMLVIEW_NONAVIGATE) html_url=New TMTextField.Create(10,320,620,20,tabs) html_go=New TMButton.Create("GO",10,345,90,20,tabs) html_back=New TMButton.Create("Back",110,345,90,20,tabs) html_forward=New TMButton.Create("Forward",210,345,90,20,tabs) tree=New TMTreeView.Create(10,10,620,250,tabs) ok.OnPressEvent.Add(OnPress_OK) cancel.OnPressEvent.Add(OnPress_Cancel) check.OnPressEvent.Add(OnPress_Check) radios.OnSelectedEvent.Add(OnSelected_Radio) txtfield.OnTextChangedEvent.Add(OnTextChanged_Field) txtarea.OnTextChangedEvent.Add(ShowAreaStatus) txtarea.OnSelectionEvent.Add(ShowAreaStatus) txtarea.OnMenuEvent.Add(OnMenu_Area) slider1.OnValueChangedEvent.Add(ShowChangedInt) slider2.OnValueChangedEvent.Add(ShowChangedInt) list.OnIndexChangedEvent.Add(ShowChangedInt) html.OnPageLoadedEvent.Add(OnPageLoaded) html.OnSelectURLEvent.Add(OnSelectURL) html_go.OnPressEvent.Add(OnGO) html_forward.OnPressEvent.Add(OnForward) html_back.OnPressEvent.Add(OnBack) tree.OnSelectedEvent.Add(OnSelected_Tree) tree.OnClickedEvent.Add(OnClicked_Tree) tree.OnExpandedEvent.Add(OnExpanded_Tree) tree.OnCollapsedEvent.Add(OnCollapsed_Tree) tree.OnMenuEvent.Add(OnMenu_Tree) EndIf Local label:TMLabel=New TMLabel.Create("Label:",10,10,80,20,tabs) list.SetIconStrip(icons) list.AddItem(CreateListEntry("Item 1",0,0)) list.AddItem(CreateListEntry("Item 2",0,1)) list.AddItem(CreateListEntry("Item 3",0,2)) list.AddItem(CreateListEntry("Item 4",0,3)) list.ItemEnabled(2,False) tabs.ItemEnabled(4,True) tabs.ItemEnabled(5,False) tabs.ItemEnabled(6,False) list.SetSelectedIndex(0) tree.SetIconStrip(icons) tree.BeginUpdate() tree.Set("/dir1","Dir1",0) tree.Set("/dir2","Dir2",1) tree.Set("/dir1/ent1","Ent1",2) tree.Set("/dir1/ent2","Ent2",3) tree.Set("/dir1/ent3","Ent3",3) tree.Set("/dir1/ent3","Ent3 (Edit)",3) tree.EndUpdate() html.Go("http://www.noddybox.demon.co.uk") tree_node=New TMTextField.Create(10,280,300,20,tabs) tree_add=New AddToTree.Create("Add",320,280,100,20,tabs) tree_remove=New RemoveFromTree.Create("Remove",430,280,100,20,tabs) tabs.SetPages([ [TMWidget(ok),TMWidget(cancel),TMWidget(check),TMWidget(radio1),TMWidget(radio2),TMWidget(radio3)], .. [TMWidget(label),TMWidget(txtfield),TMWidget(txtarea)], .. [TMWidget(slider1),TMWidget(slider2)], .. [TMWidget(list)], .. [TMWidget(html), TMWidget(html_url), TMWidget(html_go), TMWidget(html_back), TMWidget(html_forward)], .. [TMWidget(tree), TMWidget(tree_node), TMWidget(tree_add), TMWidget(tree_remove)]]) tabs.SetSelectedIndex(0) If TESTTIMER top.SetTimer(1) EndIf MWidgetMainLoop(top) End