=begin
This is a ruby version of Jim Bublitz's pytde program, translated by Richard Dale
=end

require 'Korundum'

module UIWidgets

class Page1 < TQt::Object
	slots 'restrict(int)'
	
    def initialize(parent)
		super
        page = parent.addPage()

        x = 10
        y = 10

        editLbl   = TQt::Label.new("KTextEdit", page)
        editLbl.setGeometry(x, y, 50, 20)
        editLbl.show()

        textList = ["Now is the winter of our discontent\n",
                    "made glorious summer by this sun of York;\n",
                    "and all the clouds that lour'd upon our house\n",
                    "in the deep bosom of the ocean buried.\n"]

        parent.edit = KDE::TextEdit.new(page)
        parent.edit.setGeometry(x, y + 20, 300, 100)
		textList.each do |line|
			parent.edit.insert(line)
		end
        parent.edit.show()

        y = y + 125
        searchBtn  = TQt::PushButton.new("Search", page)
        replaceBtn = TQt::PushButton.new("Replace", page)
        gotoBtn    = TQt::PushButton.new("GoTo Line", page)

        searchBtn.setGeometry(x, y, 60, 22)
        replaceBtn.setGeometry(x + 90, y, 60, 22)
        gotoBtn.setGeometry(x + 180, y, 60, 22)

#        page.connect(searchBtn, TQ_SIGNAL("clicked()"), parent.edit, TQ_SLOT('search()'))
#        page.connect(replaceBtn, TQ_SIGNAL("clicked()"), parent.edit, TQ_SLOT('replace()'))
#        page.connect(gotoBtn, TQ_SIGNAL("clicked()"), parent.edit, TQ_SLOT('doGotoLine()'))

        searchBtn.show()
        replaceBtn.show()
        gotoBtn.show()

        y = y + 35

        lineeditLbl   = TQt::Label.new("KLineEdit", page)
        lineeditLbl.setGeometry(x, y, 70, 20)
        lineeditLbl.show()

        lineedit = KDE::LineEdit.new(page)
        lineedit.setGeometry(x, y + 20, 100, 20)
        lineedit.show()

        intLbl   = TQt::Label.new("KIntNumInput", page)
        intLbl.setGeometry(x + 195, y + 35, 95, 20)
        intLbl.show()

        intNum = KDE::IntNumInput.new(5, page)
        intNum.setGeometry(x + 195, y + 55, 175, 50)
#        intNum.setSuffix(" GB")
#        intNum.setPrefix("hdc    ")
        intNum.setLabel("Capacity")
        intNum.setRange(0, 10, 1, true)
        intNum.show()

        y = y + 50

        dblLbl   = TQt::Label.new("KDoubleNumInput", page)
        dblLbl.setGeometry(x + 195, y + 80, 115, 20)
        dblLbl.show()

        dblNum = KDE::DoubleNumInput.new(page)
        dblNum.setValue(2.5)
        dblNum.setGeometry(x + 195, y + 100, 175, 50)
        dblNum.setLabel("Variable")
        dblNum.setRange(0.0, 10.0, 0.5, true)
        dblNum.show()

        restricteditLbl   = TQt::Label.new("KRestrictedLine", page)
        restricteditLbl.setGeometry(x, y, 95, 20)
        restricteditLbl.show()

        @restrictlineedit = KDE::RestrictedLine.new(page)
        @restrictlineedit.setGeometry(x, y + 20, 100, 20)
        @restrictlineedit.show()

        buttons = ["Numbers Only", "Upper Case Only", "Lower Case Only"]

        n = buttons.length

        @validLbl = TQt::Label.new("", page)
        @validLbl.setGeometry(x, y + 50, 250, 20)
        @validLbl.show()

        grp = TQt::ButtonGroup.new(n, TQt::Vertical, "Select valid chars", page, "button grp")
        grp.setGeometry(x, y + 75, 150, 5+30*n)
		
		(0...n).each { |i| TQt::RadioButton.new(buttons[i], grp) }

        connect(grp, TQ_SIGNAL("clicked(int)"), TQ_SLOT('restrict(int)'))

        grp.find(0).setChecked(true)
        restrict(0)

        grp.show()

        page.show()
        $tdeApp.processEvents()

        y = y + 195
        sqzLbl = TQt::Label.new("This text is too long to fit in the label below", page)
        sqzLbl.setGeometry(x, y, 350, 20)
        sqzLbl.show()

        sqzLbl1 = TQt::Label.new("KSqueezedTxtLabel:", page)
        sqzLbl1.setGeometry(x, y + 20, 120, 20)
        sqzLbl1.show()

        squeeze = KDE::SqueezedTextLabel.new("This text is too long to fit in the label below", page)
        squeeze.setGeometry(x + 125, y + 20, 125, 20)
        squeeze.setBackgroundMode(TQt::Widget::PaletteBase)
        squeeze.show()
	end

    def restrict(which)
        r = {0 => "0123456789", 1 => "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 2 => "abcdefghijklmnopqrstuvwxyz"}
        @restrictlineedit.setValidChars(r[which])
        @validLbl.setText("Valid: " + @restrictlineedit.validChars())
	end
end

class Page2
    def initialize(parent)
        page = parent.addPage()

        x1 = 10
        y1 = 10
        x2 = 240
        y2 = 100

        cbLbl = TQt::Label.new("KComboBox", page)
        cbLbl.setGeometry(x1, y1, 75, 20)
        cbLbl.show()

        combo = KDE::ComboBox.new(page)
        combo.insertStringList(["One", "Two", "Three"])
        combo.setGeometry(x1, y1 + 20, 100, 25)
        combo.show()

        ccbLbl = TQt::Label.new("KColorCombo", page)
        ccbLbl.setGeometry(x2, y1, 100, 20)
        ccbLbl.show()

        colorCombo = KDE::ColorCombo.new(page)
        colorCombo.setGeometry(x2, y1 + 20, 100, 25)
        colorCombo.show()

        editListBox = KDE::EditListBox.new("KEditListBox", page)
        editListBox.setGeometry(x1, y2, 220, 175)
        editListBox.insertStringList(["One", "Two", "Three"])
        editListBox.show()

        lbLbl = TQt::Label.new("TDEListBox", page)
        lbLbl.setGeometry(x2, y2, 100, 20)
        lbLbl.show()

        listBox = KDE::ListBox.new(page)
        listBox.setGeometry(x2, y2 + 20, 100, 100)
        listBox.insertStringList(["One", "Two", "Three"])
        listBox.show()
	end
end

class Page3
    def initialize(parent)
        page = parent.addPage()

        x = 10
        y = 10

        fontLbl   = TQt::Label.new("TDEFontChooser", page)
        fontLbl.setGeometry(x, y, 95, 20)
        fontLbl.show()

        fontChoose = KDE::FontChooser.new(page)
        fontChoose.setGeometry(x, y + 20, 375, 300)
        fontChoose.show()

        y = y + 330
	end
end

class Page4
    def initialize(parent)
        page = parent.addPage()

        x = 10
        y = 10

        cbLbl   = TQt::Label.new("KColorButton", page)
        cbLbl.setGeometry(x, y, 75, 20)
        cbLbl.show()

        cb = KDE::ColorButton.new(page)
        cb.setColor(TQt::Color.new(255, 0, 0))
        cb.setGeometry(x, y + 20, 30, 30)
        cb.show()

        ccbLbl = TQt::Label.new("KColorCombo", page)
        ccbLbl.setGeometry(x + 150, y, 100, 20)
        ccbLbl.show()

        colorCombo = KDE::ColorCombo.new(page)
        colorCombo.setGeometry(x + 150, y + 20, 100, 25)
        colorCombo.show()

        y = y + 60

        cpLbl   = TQt::Label.new("KColorPatch", page)
        cpLbl.setGeometry(x, y, 75, 20)
        cpLbl.show()

        cp = KDE::ColorPatch.new(page)
        cp.setColor(TQt::Color.new(255, 0, 0))
        cp.setGeometry(x, y + 20, 20, 20)
        cp.show()

        x = x + 150

        ccLbl   = TQt::Label.new("KColorCells", page)
        ccLbl.setGeometry(x, y, 75, 20)
        ccLbl.show()

        cc = KDE::ColorCells.new(page, 1, 5)
        cc.setColor(0, TQt::Color.new(0, 0, 0))
        cc.setColor(1, TQt::Color.new(255, 0, 0))
        cc.setColor(2, TQt::Color.new(0, 255, 0))
        cc.setColor(3, TQt::Color.new(0, 0, 255))
        cc.setColor(4, TQt::Color.new(255, 255, 255))
        cc.setGeometry(x, y + 20, 100, 20)
        cc.show()

        x = 10
        y = y + 50

        dcLbl   = TQt::Label.new("KDualColorButton", page)
        dcLbl.setGeometry(x, y, 105, 20)
        dcLbl.show()

        dc = KDE::DualColorButton.new(TQt::Color.new(255, 0, 0), TQt::Color.new(0, 0, 0), page)
        dc.setGeometry(x, y + 20, 40, 40)
        dc.show()

        gsLbl   = TQt::Label.new("KGradientSelector", page)
        gsLbl.setGeometry(x + 80, y + 30, 110, 20)
        gsLbl.show()

        gs = KDE::GradientSelector.new(page)
        gs.setGeometry(x + 80, y + 50, 250, 20)
        gs.setColors(TQt::Color.new(255, 0, 0), TQt::Color.new(255, 255, 0))
        gs.show()

        y = y + 80

        hsLbl   = TQt::Label.new("KHSSelector", page)
        hsLbl.setGeometry(x, y, 95, 20)
        hsLbl.show()

        hs = KDE::HSSelector.new(page)
        hs.setGeometry(x, y + 20, 350, 80)
        hs.show()

        y = y + 110

        ptLbl   = TQt::Label.new("KPaletteTable", page)
        ptLbl.setGeometry(x, y, 95, 20)
        ptLbl.show()

        pt = KDE::PaletteTable.new(page, 340, 24)
        pt.setPalette("Royal")
        pt.setGeometry(x, y + 20, 340, 40)
        pt.show()
	end
end

class Page5
    def initialize(parent)
        page = parent.addPage()

        x = 10
        y = 10

        rpLbl   = TQt::Label.new("KRootPermsIcon", page)
        rpLbl.setGeometry(x, y, 95, 20)
        rpLbl.show()

        rp = KDE::RootPermsIcon.new(page)
        rp.setGeometry(x, y + 20, 32, 32)
        rp.show()

        wpLbl   = TQt::Label.new("KWritePermsIcon", page)
        wpLbl.setGeometry(x + 125, y, 95, 20)
        wpLbl.show()

        wp = KDE::WritePermsIcon.new("/usr/bin/gcc", page)
        wp.setGeometry(x + 125, y + 20, 32, 32)
        wp.show()

        y = y + 75

        pw1Lbl = TQt::Label.new("KPasswordEdit - echo *", page)
        pw1Lbl.setGeometry(x, y, 150, 20)
        pw1Lbl.show()

        pw1 = KDE::PasswordEdit.new(KDE::PasswordEdit::OneStar, page, "")
        pw1.setGeometry(x, y + 20, 100, 20)
        pw1.show()

        y = y + 50

        pw2Lbl = TQt::Label.new("KPasswordEdit - echo ***", page)
        pw2Lbl.setGeometry(x, y, 150, 20)
        pw2Lbl.show()

        pw2 = KDE::PasswordEdit.new(KDE::PasswordEdit::ThreeStars, page, "")
        pw2.setGeometry(x, y + 20, 100, 20)
        pw2.show()

        y = y + 50

        pw3Lbl = TQt::Label.new("KPasswordEdit - no echo", page)
        pw3Lbl.setGeometry(x, y, 150, 20)
        pw3Lbl.show()

        pw3 = KDE::PasswordEdit.new(KDE::PasswordEdit::NoEcho, page, "")
        pw3.setGeometry(x, y + 20, 100, 20)
        pw3.show()

        y = y + 50

        urlLbl = TQt::Label.new("KURLLabel", page)
        urlLbl.setGeometry(x, y, 100, 20)
        urlLbl.show()

        url = KDE::URLLabel.new("http://developer.kde.org/language-bindings/ruby/", "Korundum", page)
        url.setGeometry(x, y + 20, 100, 20)
        url.setUseTips(true)
        url.setTipText("http://developer.kde.org/language-bindings/ruby/")
        url.show()

        x = 70
        y = y + 50

        bbLbl   = TQt::Label.new("KButtonBox", page)
        bbLbl.setGeometry(x, y, 75, 20)
        bbLbl.show()

        bbox = KDE::ButtonBox.new(page, TQt::Horizontal)
        bbox.setGeometry(x, y + 20, 300, 22)
        bbox.addButton("Button 1")
        bbox.addButton("Button 2")
        bbox.addButton("Button 3")
        bbox.show()

        y = y + 50

#        dbLbl   = TQt::Label.new("KDirectionButton", page)
#        dbLbl.setGeometry(x, y, 95, 20)
#        dbLbl.show()

#        dbUp    = KDE::DirectionButton.new(TQt::t::UpArrow, page)
#        dbDown  = KDE::DirectionButton.new(TQt::t::DownArrow, page)
#        dbRight = KDE::DirectionButton.new(TQt::t::RightArrow, page)
#        dbLeft  = KDE::DirectionButton.new(TQt::t::LeftArrow, page)

#        dbUp.setGeometry(x, y + 20, 22, 22)
#        dbDown.setGeometry(x + 30, y + 20, 22, 22)
#        dbRight.setGeometry(x + 60, y + 20, 22, 22)
#        dbLeft.setGeometry(x + 90, y + 20, 22, 22)

#        dbUp.show()
#        dbDown.show()
#        dbRight.show()
#        dbLeft.show()

        x = x + 150

#        kbLbl   = TQt::Label.new("KKeyButton", page)
#        kbLbl.setGeometry(x, y, 95, 20)
#        kbLbl.show()

#        kb = KDE::KeyButton.new(page)
#        kb.setText("Enter")
#        kb.setGeometry(x, y + 20, 50, 32)
#        kb.show()

        x = 70
        y = y + 50

#        tbLbl   = TQt::Label.new("KTabButton", page)
#        tbLbl.setGeometry(x, y, 95, 20)
#        tbLbl.show()

#        tbUp    = KDE::TabButton.new(TQt::t::UpArrow, page)
#        tbDown  = KDE::TabButton.new(TQt::t::DownArrow, page)
#        tbRight = KDE::TabButton.new(TQt::t::RightArrow, page)
#        tbLeft  = KDE::TabButton.new(TQt::t::LeftArrow, page)

#        tbUp.setGeometry(x, y + 20, 22, 25)
#        tbDown.setGeometry(x + 30, y + 20, 22, 25)
#        tbRight.setGeometry(x + 60, y + 20, 22, 25)
#        tbLeft.setGeometry(x + 90, y + 20, 22, 25)

#        tbUp.show()
#        tbDown.show()
#        tbRight.show()
#        tbLeft.show()
	end
end

class Page6 < TQt::Object
	slots 'toggleClicked()'
	
    def initialize(parent)
		super
        page = parent.addPage()

        x = 20
        y = 10

        red          = TQt::Color.new(255, 0, 0)
        green        = TQt::Color.new(0, 255, 0)
        yellow       = TQt::Color.new(255, 255, 0)
        blue         = TQt::Color.new(0, 0, 255)

        ledcolor     = [red, green, yellow, blue]
        ledshape     = [KDE::Led::Rectangular, KDE::Led::Circular]
        ledlook      = [KDE::Led::Flat, KDE::Led::Raised, KDE::Led::Sunken]
        ledsize      = [10, 18, 25]
        @ledlist = []

		ledlook.each do |look|
            ledcolor.each do |color|
                ledshape.each do |shape|
                    ledsize.each do |size|
                        led = KDE::Led.new(color, KDE::Led::On, look, shape, page)
                        led.setGeometry(x, y, size, size)
                        @ledlist << led
                        led.show()
                        x = x + 50
					end
                    x = x + 50
				end
                x = 20
                y = y + 30
			end
            y = y + 10
		end

        toggle = TQt::PushButton.new("Toggle", page)
        toggle.setGeometry(150, 400, 60, 22)
        toggle.show()

        connect(toggle, TQ_SIGNAL("clicked()"), TQ_SLOT('toggleClicked()'))

        page.show()
	end

    def toggleClicked()
		@ledlist.each { |led| led.toggle() }
	end
end

class Page7 < TQt::Object
	slots 'add1()'

    def initialize(parent)
		super
        page = parent.addPage()

        x = 10
        y = 10

        tabLbl   = TQt::Label.new("KTabCtl", page)
        tabLbl.setGeometry(x, y, 95, 20)
        tabLbl.show()

        tab = KDE::TabCtl.new(page)
        tab.setGeometry(x, y + 20, 300, 100)

        page1 = TQt::Widget.new(tab)
        p1Lbl = TQt::Label.new("This is page 1", page1)
        p1Lbl.setGeometry(20, 20, 100, 20)
        page2 = TQt::Widget.new(tab)
        p2Lbl = TQt::Label.new("This is page 2", page2)
        p2Lbl.setGeometry(50, 20, 100, 20)
        page3 = TQt::Widget.new(tab)
        p3Lbl = TQt::Label.new("This is page 3", page3)
        p3Lbl.setGeometry(20, 50, 100, 20)

        tab.addTab(page1, "Tab 1")
        tab.addTab(page2, "Tab 2")
        tab.addTab(page3, "Tab 3")
        tab.show()

        x = 10
        y = 150

        progLbl   = TQt::Label.new("KProgress", page)
        progLbl.setGeometry(x, y + 50, 95, 20)
        progLbl.show()

        @p1 = KDE::Progress.new(page)
        @p2 = KDE::Progress.new(15, page)
        @p1.setTotalSteps(25)
        @p2.setTotalSteps(25)

        @p1.setGeometry(x, y + 80, 125, 20)
        @p2.setGeometry(x, y + 120, 125, 20)

        @p2.setPercentageVisible(false)

        @p1.show()
        @p2.show()

        @total = 0

        y = y + 150
        sepLbl   = TQt::Label.new("KSeparator", page)
        sepLbl.setGeometry(x, y, 95, 20)
        sepLbl.show()

        sep = KDE::Separator.new(TQt::Frame::HLine, page)
        sep.setGeometry(x, y + 20, 75, 10)
        sep.show()

        page.show()

        @timer = TQt::Timer.new(page)
		connect(@timer, TQ_SIGNAL('timeout()'), TQ_SLOT('add1()'))
		@timer.start(100)

        add1()
	end

    def add1()
        @total = @total + 1
        @p1.advance(1)
        @p2.advance(1)

        if @total == 26
			@timer.stop
		end
	end
end

class Page8
    def initialize(parent)
        page = parent.addPage()

        x = 40
        y = 10

        dpLbl   = TQt::Label.new("KDatePicker", page)
        dpLbl.setGeometry(x, y, 95, 20)
        dpLbl.show()

        dp = KDE::DatePicker.new(page)
        dp.setGeometry(x, y + 20, 300, 170)
        dp.show()

        y = y + 210

        dtLbl   = TQt::Label.new("KDateTable", page)
        dtLbl.setGeometry(x, y, 95, 20)
        dtLbl.show()

        dt = KDE::DateTable.new(page)
        dt.setGeometry(x, y + 20, 300, 130)
        dt.show()
	end
end

class PageThisApp
    def initialize(parent)
        page = parent.addPage()

        x = 10
        y = 10

        taLbl   = TQt::Label.new("This application uses TDEMainWindow as its top level widget\n and TDEListView in the"\
                          " left-hand panel", page)
        taLbl.setGeometry(x, y, 300, 60)
        taLbl.show()
	end
end

class PageNotImpl
    def initialize(parent)
        page = parent.addPage()

        x = 10
        y = 10

        niLbl   = TQt::Label.new("Nothing is currently implemented for this widget", page)
        niLbl.setGeometry(x, y, 300, 20)
        niLbl.show()
	end
end

class CSDlg < KDE::Dialog
	slots 'closeClicked()'
	
    def initialize(parent, name = "char select dlg", modal = false)
        super(parent, name, modal)

        setGeometry(150, 50, 700, 320)
        x = 10
        y = 10

        csLbl   = TQt::Label.new("KCharSelect", self)
        csLbl.setGeometry(x, y, 95, 20)
        csLbl.show()
        cs = KDE::CharSelect.new(self, "chselect", nil, TQt::Char.new(0), 0)
        cs.setGeometry(x, y + 20, 680, 250)
        cs.show()

        closeBtn = TQt::PushButton.new("Close", self)
        closeBtn.setGeometry( 610, 280, 60, 22)
        closeBtn.show()

        connect(closeBtn, TQ_SIGNAL("clicked()"), TQ_SLOT('closeClicked()'))
	end

    def closeClicked()
        done(1)
	end
end

def UIWidgets.widKAnimWidget(parent)
    parent.currentPageObj = PageNotImpl.new(parent)
end

def UIWidgets.widKAuthIcon(parent)
    parent.currentPageObj = Page5.new(parent)
end

def UIWidgets.widKButtonBox(parent)
    parent.currentPageObj = Page5.new(parent)
end

def UIWidgets.widKCharSelect(parent)
    dlg = CSDlg.new(parent)
    dlg.show()
end

def UIWidgets.widKColorButton(parent)
    parent.currentPageObj = Page4.new(parent)
end

def UIWidgets.widKColorCells(parent)
    parent.currentPageObj = Page4.new(parent)
end

def UIWidgets.widKColorCombo(parent)
    parent.currentPageObj = Page2.new(parent)
end

def UIWidgets.widKColorPatch(parent)
    parent.currentPageObj = Page4.new(parent)
end

def UIWidgets.widKComboBox(parent)
    parent.currentPageObj = Page2.new(parent)
end

def UIWidgets.widTDECompletionBox(parent)
    parent.currentPageObj = PageNotImpl.new(parent)
end

def UIWidgets.widKContainerLayout(parent)
    parent.currentPageObj = PageNotImpl.new(parent)
end

def UIWidgets.widKCursor(parent)
    parent.currentPageObj = PageNotImpl.new(parent)
end

def UIWidgets.widKDatePicker(parent)
    parent.currentPageObj = Page8.new(parent)
end

def UIWidgets.widKDateTable(parent)
    parent.currentPageObj = Page8.new(parent)
end

def UIWidgets.widKDirectionButton(parent)
    parent.currentPageObj = Page5.new(parent)
end

def UIWidgets.widKDualColorButton(parent)
    parent.currentPageObj = Page4.new(parent)
end

def UIWidgets.widKTextEdit(parent)
    parent.currentPageObj = Page1.new(parent)
end

def UIWidgets.widKEditListBox(parent)
    parent.currentPageObj = Page2.new(parent)
end

def UIWidgets.widTDEFontChooser(parent)
    parent.currentPageObj = Page3.new(parent)
end

def UIWidgets.widKHSSelector(parent)
    parent.currentPageObj = Page4.new(parent)
end

def UIWidgets.widTDEIconView(parent)
    parent.currentPageObj = PageNotImpl.new(parent)
end

def UIWidgets.widKJanusWidget(parent)
    parent.currentPageObj = PageNotImpl.new(parent)
end

#def UIWidgets.widKKeyButton(parent)
#    parent.currentPageObj = Page5.new(parent)

def UIWidgets.widKKeyChooser(parent)
    parent.currentPageObj = PageNotImpl.new(parent)
end

def UIWidgets.widKLed(parent)
    parent.currentPageObj = Page6.new(parent)
end

def UIWidgets.widKLineEdit(parent)
    parent.currentPageObj = Page1.new(parent)
end

def UIWidgets.widTDEListBox(parent)
    parent.currentPageObj = Page2.new(parent)
end

def UIWidgets.widTDEListView(parent)
    parent.currentPageObj = PageThisApp.new(parent)
end

def UIWidgets.widKNumInput(parent)
    parent.currentPageObj = Page1.new(parent)
end

def UIWidgets.widKPaletteTable(parent)
    parent.currentPageObj = Page4.new(parent)
end

def UIWidgets.widKPasswordEdit(parent)
    parent.currentPageObj = Page5.new(parent)
end

def UIWidgets.widKProgress(parent)
    parent.currentPageObj = Page7.new(parent)
end

def UIWidgets.widKRootPixmap(parent)
    parent.currentPageObj = PageNotImpl.new(parent)
end

def UIWidgets.widTDEMainWindow(parent)
    parent.currentPageObj = PageThisApp.new(parent)
end

def UIWidgets.widKRestrictedLine(parent)
    parent.currentPageObj = Page1.new(parent)
end

def UIWidgets.widKRuler(parent)
    parent.currentPageObj = PageNotImpl.new(parent)
end

def UIWidgets.widTDESelector(parent)
    parent.currentPageObj = Page4.new(parent)
end

def UIWidgets.widKSeparator(parent)
    parent.currentPageObj = Page7.new(parent)
end

def UIWidgets.widKSqueezedTextLabel(parent)
    parent.currentPageObj = Page1.new(parent)
end

def UIWidgets.widKTabButton(parent)
    parent.currentPageObj = Page5.new(parent)
end

def UIWidgets.widKTabCtl(parent)
    parent.currentPageObj = Page7.new(parent)
end

def UIWidgets.widKTextBrowser(parent)
    parent.currentPageObj = PageNotImpl.new(parent)
end

def UIWidgets.widKURLLabel(parent)
    parent.currentPageObj = Page5.new(parent)
end


if $0 == __FILE__
    puts
    puts "Please run uisampler.rb"
    puts
end

end
