summaryrefslogtreecommitdiffstats
path: root/korundum/rubylib/examples/uisampler.rb
diff options
context:
space:
mode:
Diffstat (limited to 'korundum/rubylib/examples/uisampler.rb')
-rw-r--r--korundum/rubylib/examples/uisampler.rb238
1 files changed, 238 insertions, 0 deletions
diff --git a/korundum/rubylib/examples/uisampler.rb b/korundum/rubylib/examples/uisampler.rb
new file mode 100644
index 00000000..10af08de
--- /dev/null
+++ b/korundum/rubylib/examples/uisampler.rb
@@ -0,0 +1,238 @@
+=begin
+This is a ruby version of Jim Bublitz's pykde program, translated by Richard Dale
+=end
+
+require 'Korundum'
+
+require 'uimodules/uiwidgets.rb'
+require 'uimodules/uidialogs.rb'
+require 'uimodules/uimenus.rb'
+require 'uimodules/uimisc.rb'
+require 'uimodules/uixml.rb'
+
+$listItems = {"Dialogs" =>
+ {"KDE::AboutDialog" => ["KDE::AboutApplication", "KDE::AboutContainer", "KDE::ImageTrackLabel",
+ "KDE::AboutContainerBase", "KDE::AboutContributor", "KDE::AboutWidget"],
+ "KDE::AboutKDE" => [],
+ "KDE::BugReport" => [],
+ "KDE::ColorDialog" => [],
+ "KDE::Dialog" => [],
+ "KDE::DialogBase" => ["KDE::DialogBaseButton", "KDE::DialogBase::SButton", "KDE::DialogBaseTile"],
+ "KDE::FontDialog" => [],
+ "KDE::KeyDialog" => [],
+ "KDE::InputDialog" => [],
+ "KDE::MessageBox" => [],
+ "KDE::PasswordDialog" => [],
+ "KDE::Wizard" => []},
+ "Widgets" =>
+ {"KDE::AnimWidget" => [],
+ "KDE::AuthIcon" => ["KDE::RootPermsIcon", "KDE::WritePermsIcon"],
+ "KDE::ButtonBox" => [],
+ "KDE::CharSelect" => ["KDE::CharSelectTable"],
+ "KDE::ColorButton" => [],
+ "KDE::ColorCells" => [],
+ "KDE::ColorCombo" => [],
+ "KDE::ColorPatch" => [],
+ "KDE::ComboBox" => [],
+ "KDE::CompletionBox" => [],
+ "KDE::ContainerLayout" => ["KDE::ContainerLayout::KContainerLayoutItem"],
+ "KDE::Cursor" => [],
+ "KDE::DatePicker" => ["KDE::DateInternalMonthPicker", "KDE::DateInternalYearSelector"],
+ "KDE::DateTable" => [],
+ "KDE::DualColorButton" => [],
+ "KDE::EditListBox" => [],
+ "KDE::FontChooser" => [],
+ "KDE::HSSelector" => [],
+ "KDE::IconView" => [],
+ "KDE::JanusWidget" => ["KDE::JanusWidget::IconListBox"],
+ "KDE::KeyChooser" => [],
+ "KDE::Led" => [],
+ "KDE::LineEdit" => [],
+ "KDE::ListBox" => [],
+ "KDE::ListView" => [],
+ "KDE::NumInput" => ["KDE::DoubleNumInput", "KDE::IntNumInput"],
+ "KDE::PaletteTable" => [],
+ "KDE::PasswordEdit" => [],
+ "KDE::Progress" => [],
+ "KDE::RootPixmap" => [],
+ "KDE::MainWindow" => [],
+ "KDE::RestrictedLine" => [],
+ "KDE::Ruler" => [],
+ "KDE::Selector" => ["KDE::GradientSelector", "KDE::ValueSelector", "KDE::HSSelector", "KDE::XYSelector"],
+ "KDE::Separator" => [],
+ "KDE::SqueezedTextLabel" => [],
+ "KDE::TabCtl" => [],
+ "KDE::TextBrowser" => [],
+ "KDE::TextEdit" => ["KDE::EdFind", "KDE::EdGotoLine", "KDE::EdReplace"],
+ "KDE::URLLabel" => []},
+ "XML" =>
+ {"KDE::ActionCollection" => [],
+ "KDE::EditToolbar" => [],
+ "KDE::EditToolbarWidget" => [],
+ "KDE::XMLGUIBuilder" => [],
+ "KDE::XMLGUIClient" => ["KDE::XMLGUIClient::DocStruct"],
+ "KDE::XMLGUIFactory" => []},
+ "Menus/Toolbars" =>
+ {"KDE::AccelMenu" => [],
+ "KDE::Action" => ["KDE::FontAction", "KDE::FontSizeAction", "KDE::ListAction", "KDE::RecentFilesAction", "KDE::RadioAction",
+ "KDE::SelectAction", "KDE::ToggleAction"],
+ "KDE::ActionMenu" => [],
+ "KDE::ActionSeparator" => [],
+ "KDE::ContextMenuManager" => [],
+ "KDE::DCOPActionProxy" => [],
+ "KDE::HelpMenu" => [],
+ "KDE::MenuBar" => [],
+ "KDE::PanelApplet" => [],
+ "KDE::PanelExtension" => [],
+ "KDE::PanelMenu" => [],
+ "KDE::PopupFrame" => [],
+ "KDE::PopupMenu" => [],
+ "KDE::PopupTitle" => [],
+ "KDE::StatusBar" => [],
+ "KDE::StatusBarLabel" => [],
+ "KDE::StdAction" => [],
+ "KDE::ToolBar" => ["KDE::ToolBarButton", "KDE::ToolBarButtonList", "KDE::ToolBarPopupAction",
+ "KDE::ToolBarRadioGroup", "KDE::ToolBarSeparator"],
+ "KDE::WindowListMenu" => []},
+ "Other" =>
+ {"KDE::AlphaPainter" => [],
+ "KDE::CModule" => [],
+ "KDE::Color" => [],
+ "KDE::ColorDrag" => [],
+ "KDE::Command" => ["KDE::MacroCommand"],
+ "KDE::CommandHistory" => [],
+ "KDE::DateValidator" => [],
+ "KDE::DockWindow" => ["KDE::DockButton_Private - KPanelMenu", "KDE::DockButton_Private",
+ "KDE::DockSplitter", "KDE::DockTabCtl_PrivateStruct", "KDE::DockWidgetAbstractHeader",
+ "KDE::DockWidgetAbstractHeaderDrag", "KDE::DockWidgetHeader",
+ "KDE::DockWidgetHeaderDrag", "KDE::DockWidgetPrivate"],
+ "KDE::DoubleValidator" => [],
+ "KDE::IntValidator" => [],
+ "KDE::PixmapIO" => [],
+ "KDE::SharedPixmap" => [],
+ "KDE::SystemTray" => [],
+ "KDE::ThemeBase" => ["KDE::ThemeCache", "KDE::ThemePixmap", "KDE::ThemeStyle"],
+ "QXEmbed" => []}}
+
+BLANK_MSG = <<END_OF_STRING
+<b>UISampler</b> - provides examples of <b>Korundum</b> widgets<p>
+Select a dialog/widget/menu/etc example from the tree at left
+END_OF_STRING
+
+
+class MainWin < KDE::MainWindow
+ TREE_WIDTH = 220
+
+ slots 'lvClicked(QListViewItem*)'
+
+ attr_accessor :edit, :currentPageObj
+
+ def initialize(*args)
+ super
+
+ setCaption("Samples of Korundum widget usage")
+ # The following leave about 375 x 390 for the rt hand panel
+ mainGeom = Qt::Rect.new(0, 0, 640, 500)
+ setGeometry(mainGeom)
+
+ # create the main view - list view on the left and an
+ # area to display frames on the right
+ @mainView = Qt::Splitter.new(self, "main view")
+ @tree = KDE::ListView.new(@mainView, "tree")
+ @page = Qt::WidgetStack.new(@mainView, "page")
+ blankPage = Qt::Widget.new(@page, "blank")
+ blankPage.setGeometry(0, 0, 375, 390)
+ blankPage.setBackgroundMode(Qt::Widget::PaletteBase)
+
+ blankLbl = Qt::Label.new(BLANK_MSG, blankPage)
+ blankLbl.setGeometry(40, 10, 380, 150)
+ blankLbl.setBackgroundMode(Qt::Widget::PaletteBase)
+
+ blankPM = Qt::Pixmap.new("rbtestimage.png")
+ pmLbl = Qt::Label.new("", blankPage)
+ pmLbl.setPixmap(blankPM)
+ pmLbl.setGeometry(40, 160, 300, 200)
+ pmLbl.setBackgroundMode(Qt::Widget::PaletteBase)
+
+ @page.addWidget(blankPage, 1)
+ @page.raiseWidget(1)
+
+ setCentralWidget(@mainView)
+
+ initListView()
+ connect(@tree, SIGNAL("clicked(QListViewItem*)"), self, SLOT('lvClicked(QListViewItem*)'))
+
+ @edit = nil
+ @currentPageObj = nil
+ @prefix = {"Dialogs" => "UIDialogs::dlg", "Widgets" => "UIWidgets::wid", "XML" => "UIXML::xml",
+ "Menus/Toolbars" => "UIMenus::menu", "Other" => "UIMisc::misc"}
+ end
+
+ def initListView()
+ @tree.addColumn("Category", TREE_WIDTH - 21)
+# tree.setMaximumWidth(treeWidth)
+ @mainView.setSizes([TREE_WIDTH, 375])
+ @tree.setRootIsDecorated(true)
+ @tree.setVScrollBarMode(Qt::ScrollView::AlwaysOn)
+ topLevel = $listItems.keys()
+ topLevel.each do |item_1|
+ parent = Qt::ListViewItem.new(@tree, String.new(item_1))
+ secondLevel = $listItems[item_1].keys()
+ secondLevel.each do |item_2|
+ child = Qt::ListViewItem.new(parent, String.new(item_2))
+ $listItems[item_1][item_2].each do |item_3|
+ Qt::ListViewItem.new(child, String.new(item_3))
+ end
+ end
+ end
+ end
+
+ def lvClicked(lvItem)
+ if lvItem.nil?
+ return
+ end
+
+ if $listItems.keys().include?(lvItem.text(0))
+ return
+ end
+
+ p = lvItem.parent()
+ if $listItems.keys().include?(p.text(0))
+ pfx = @prefix[p.text(0)]
+ funcCall = pfx + lvItem.text(0).sub("KDE::","K") + "(self)"
+ else
+ pfx = @prefix[p.parent().text(0)]
+ funcCall = pfx + lvItem.parent().text(0).sub("KDE::","K") + "(self)"
+ end
+ eval funcCall
+ end
+
+ def addPage()
+ @edit = nil
+ @currentPageObj = nil
+ current = @page.widget(2)
+ if !current.nil?
+ @page.removeWidget(current)
+ current.dispose
+ end
+
+ newPage = Qt::Widget.new(@page)
+ newPage.setGeometry(0, 0, 375, 390)
+# newPage.setBackgroundMode(QWidget.PaletteBase)
+ @page.addWidget(newPage, 2)
+ @page.raiseWidget(2)
+
+ return newPage
+ end
+end
+
+#-------------------- main ------------------------------------------------
+
+appName = "UISampler"
+about = KDE::AboutData.new("uisampler", appName, "0.1")
+KDE::CmdLineArgs.init(ARGV, about)
+app = KDE::Application.new()
+mainWindow = MainWin.new(nil, "main window")
+mainWindow.show
+app.exec
+