require 'Korundum' class Browser < KDE::MainWindow k_dcop 'void setURL(QString)' slots 'fileSetDefaultPage()', 'changeLocation()', 'bookLocation()', 'gotoPreviousPage()', 'openURLRequest(const KURL&, const KParts::URLArgs&)' TOOLBAR_ID_ADDBOOKMARK = 1 TOOLBAR_ID_BACK = 2 TOOLBAR_ID_QUIT = 3 def initialize( name ) super(nil, name) setCaption("KDE Tutorial - p7") @history = [] filemenu = Qt::PopupMenu.new filemenu.insertItem( i18n( "&Set default page" ), self, SLOT( 'fileSetDefaultPage()' ) ) filemenu.insertItem(i18n( "&Quit" ), $kapp, SLOT( 'quit()' )) about = i18n("p7 1.0\n\n" + "(C) 1999-2002 Antonio Larrosa Jimenez\n" + "larrosa@kde.org\t\tantlarr@supercable.es\n" + "Malaga (Spain)\n\n" + "Simple KDE Tutorial\n" + "This tutorial comes with ABSOLUTELY NO WARRANTY \n" + "This is free software, and you are welcome to redistribute it\n" + "under certain conditions\n"); helpmenu = helpMenu(about) menu = menuBar() menu.insertItem( i18n( "&File" ), filemenu) menu.insertSeparator() menu.insertItem(i18n("&Help"), helpmenu) toolbar = KDE::ToolBar.new(self) icons = KDE::IconLoader.new() toolbar.insertButton(icons.loadIcon("reload", KDE::Icon::Toolbar), TOOLBAR_ID_ADDBOOKMARK, SIGNAL('clicked(int)'),self,SLOT('bookLocation()'),true, i18n("Add to Bookmarks")) toolbar.insertButton(icons.loadIcon("back", KDE::Icon::Toolbar), TOOLBAR_ID_BACK, SIGNAL('clicked(int)'),self,SLOT('gotoPreviousPage()'), false, i18n("Back to previous page")) toolbar.insertButton(icons.loadIcon("exit", KDE::Icon::Toolbar), TOOLBAR_ID_QUIT, SIGNAL('clicked(int)'),$kapp,SLOT('quit()'),true, i18n("Quit the application")) addToolBar(toolbar) vbox = Qt::VBox.new( self ) @location = Qt::LineEdit.new( vbox ) config = $kapp.config() config.setGroup("Settings") @location.text = config.readEntry( "defaultPage", "http://localhost") connect( @location , SIGNAL( 'returnPressed()' ), self, SLOT( 'changeLocation()' ) ) split = Qt::Splitter.new( vbox ) split.setOpaqueResize() @browser = KDE::HTMLPart.new( split ) @browser.openURL( KDE::URL.new(@location.text()) ) connect( @browser.browserExtension(), SIGNAL( 'openURLRequest( const KURL&, const KParts::URLArgs& )' ), self, SLOT( 'openURLRequest(const KURL&, const KParts::URLArgs& )' ) ) setCentralWidget(vbox) end def changeLocation() @history.push( @browser.url().url() ); toolBar().setItemEnabled( TOOLBAR_ID_BACK, true) @browser.openURL( KDE::URL.new(@location.text()) ) end def setURL( url ) @location.text = url changeLocation() end def openURLRequest(url, part) setURL( url.url() ) end def gotoPreviousPage() @location.text = @history.pop() if @history.empty? toolBar().setItemEnabled(TOOLBAR_ID_BACK, false) end @browser.openURL( KDE::URL.new(@location.text()) ) end def bookLocation() dcopRef = KDE::DCOPRef.new("p8", "BookMarkList") if ! dcopRef.add(@location.text()) qWarning("Error with DCOP\n") end end def fileSetDefaultPage() config = $kapp.config() config.group = "Settings" config.writeEntry( "defaultPage", @browser.url().url() ) end end about = KDE::AboutData.new("p7", "Tutorial - p7", "0.1") KDE::CmdLineArgs.init(ARGV, about) a = KDE::UniqueApplication.new() window = Browser.new( "Tutorial - p7" ) window.resize( 300, 200 ) a.mainWidget = window window.show a.exec