diff options
Diffstat (limited to 'languages/cpp/app_templates/kapp/app.cpp')
| -rw-r--r-- | languages/cpp/app_templates/kapp/app.cpp | 247 | 
1 files changed, 247 insertions, 0 deletions
| diff --git a/languages/cpp/app_templates/kapp/app.cpp b/languages/cpp/app_templates/kapp/app.cpp new file mode 100644 index 00000000..774efe8e --- /dev/null +++ b/languages/cpp/app_templates/kapp/app.cpp @@ -0,0 +1,247 @@ +%{CPP_TEMPLATE} + +#include "%{APPNAMELC}.h" +#include "pref.h" + +#include <tqdragobject.h> +#include <kprinter.h> +#include <tqpainter.h> +#include <tqpaintdevicemetrics.h> + +#include <tdeglobal.h> +#include <tdelocale.h> +#include <kiconloader.h> +#include <tdeversion.h> +#include <kstatusbar.h> +#include <tdeaccel.h> +#include <tdeio/netaccess.h> +#include <tdefiledialog.h> +#include <tdeconfig.h> +#include <kurl.h> +#include <kurldrag.h> +#include <kurlrequesterdlg.h> + +#include <tdestdaccel.h> +#include <tdeaction.h> +#include <kstdaction.h> + +%{APPNAME}::%{APPNAME}() +    : TDEMainWindow( 0, "%{APPNAME}" ), +      m_view(new %{APPNAME}View(this)), +      m_printer(0) +{ +    // accept dnd +    setAcceptDrops(true); + +    // tell the TDEMainWindow that this is indeed the main widget +    setCentralWidget(m_view); + +    // then, setup our actions +    setupActions(); + +    // and a status bar +    statusBar()->show(); + +    // Apply the create the main window and ask the mainwindow to +		// automatically save settings if changed: window size, toolbar +    // position, icon size, etc.  Also to add actions for the statusbar +		// toolbar, and keybindings if necessary. +    setupGUI(); + +    // allow the view to change the statusbar and caption +    connect(m_view, TQT_SIGNAL(signalChangeStatusbar(const TQString&)), +            this,   TQT_SLOT(changeStatusbar(const TQString&))); +    connect(m_view, TQT_SIGNAL(signalChangeCaption(const TQString&)), +            this,   TQT_SLOT(changeCaption(const TQString&))); + +} + +%{APPNAME}::~%{APPNAME}() +{ +} + +void %{APPNAME}::load(const KURL& url) +{ +    TQString target; +    // the below code is what you should normally do.  in this +    // example case, we want the url to our own.  you probably +    // want to use this code instead for your app + +    #if 0 +    // download the contents +    if (TDEIO::NetAccess::download(url, target)) +    { +        // set our caption +        setCaption(url); + +        // load in the file (target is always local) +        loadFile(target); + +        // and remove the temp file +        TDEIO::NetAccess::removeTempFile(target); +    } +    #endif + +    setCaption(url.prettyURL()); +    m_view->openURL(url); +} + +void %{APPNAME}::setupActions() +{ +    KStdAction::openNew(this, TQT_SLOT(fileNew()), actionCollection()); +    KStdAction::open(this, TQT_SLOT(fileOpen()), actionCollection()); +    KStdAction::save(this, TQT_SLOT(fileSave()), actionCollection()); +    KStdAction::saveAs(this, TQT_SLOT(fileSaveAs()), actionCollection()); +    KStdAction::print(this, TQT_SLOT(filePrint()), actionCollection()); +    KStdAction::quit(kapp, TQT_SLOT(quit()), actionCollection()); + +    KStdAction::preferences(this, TQT_SLOT(optionsPreferences()), actionCollection()); + +    // this doesn't do anything useful.  it's just here to illustrate +    // how to insert a custom menu and menu item +    TDEAction *custom = new TDEAction(i18n("Cus&tom Menuitem"), 0, +                                  this, TQT_SLOT(optionsPreferences()), +                                  actionCollection(), "custom_action"); +} + +void %{APPNAME}::saveProperties(TDEConfig *config) +{ +    // the 'config' object points to the session managed +    // config file.  anything you write here will be available +    // later when this app is restored + +    if (!m_view->currentURL().isEmpty()) { +#if KDE_IS_VERSION(3,1,3) +        config->writePathEntry("lastURL", m_view->currentURL()); +#else +        config->writeEntry("lastURL", m_view->currentURL()); +#endif +    } +} + +void %{APPNAME}::readProperties(TDEConfig *config) +{ +    // the 'config' object points to the session managed +    // config file.  this function is automatically called whenever +    // the app is being restored.  read in here whatever you wrote +    // in 'saveProperties' + +    TQString url = config->readPathEntry("lastURL"); + +    if (!url.isEmpty()) +        m_view->openURL(KURL(url)); +} + +void %{APPNAME}::dragEnterEvent(TQDragEnterEvent *event) +{ +    // accept uri drops only +    event->accept(KURLDrag::canDecode(event)); +} + +void %{APPNAME}::dropEvent(TQDropEvent *event) +{ +    // this is a very simplistic implementation of a drop event.  we +    // will only accept a dropped URL.  the TQt dnd code can do *much* +    // much more, so please read the docs there +    KURL::List urls; + +    // see if we can decode a URI.. if not, just ignore it +    if (KURLDrag::decode(event, urls) && !urls.isEmpty()) +    { +        // okay, we have a URI.. process it +        const KURL &url = urls.first(); + +        // load in the file +        load(url); +    } +} + +void %{APPNAME}::fileNew() +{ +    // this slot is called whenever the File->New menu is selected, +    // the New shortcut is pressed (usually CTRL+N) or the New toolbar +    // button is clicked + +    // create a new window +    (new %{APPNAME})->show(); +} + +void %{APPNAME}::fileOpen() +{ +    // this slot is called whenever the File->Open menu is selected, +    // the Open shortcut is pressed (usually CTRL+O) or the Open toolbar +    // button is clicked +/* +    // this brings up the generic open dialog +    KURL url = KURLRequesterDlg::getURL(TQString(), this, i18n("Open Location") ); +*/ +    // standard filedialog +    KURL url = KFileDialog::getOpenURL(TQString(), TQString(), this, i18n("Open Location")); +    if (!url.isEmpty()) +        m_view->openURL(url); +} + +void %{APPNAME}::fileSave() +{ +    // this slot is called whenever the File->Save menu is selected, +    // the Save shortcut is pressed (usually CTRL+S) or the Save toolbar +    // button is clicked + +    // save the current file +} + +void %{APPNAME}::fileSaveAs() +{ +    // this slot is called whenever the File->Save As menu is selected, +    KURL file_url = KFileDialog::getSaveURL(); +    if (!file_url.isEmpty() && file_url.isValid()) +    { +        // save your info, here +    } +} + +void %{APPNAME}::filePrint() +{ +    // this slot is called whenever the File->Print menu is selected, +    // the Print shortcut is pressed (usually CTRL+P) or the Print toolbar +    // button is clicked +    if (!m_printer) m_printer = new KPrinter; +    if (m_printer->setup(this)) +    { +        // setup the printer.  with TQt, you always "print" to a +        // TQPainter.. whether the output medium is a pixmap, a screen, +        // or paper +        TQPainter p; +        p.begin(m_printer); + +        // we let our view do the actual printing +        TQPaintDeviceMetrics metrics(m_printer); +        m_view->print(&p, metrics.height(), metrics.width()); + +        // and send the result to the printer +        p.end(); +    } +} + +void %{APPNAME}::optionsPreferences() +{ +    // popup some sort of preference dialog, here +    %{APPNAME}Preferences dlg; +    if (dlg.exec()) +    { +        // redo your settings +    } +} + +void %{APPNAME}::changeStatusbar(const TQString& text) +{ +    // display the text on the statusbar +    statusBar()->message(text); +} + +void %{APPNAME}::changeCaption(const TQString& text) +{ +    // display the text on the caption +    setCaption(text); +} +#include "%{APPNAMELC}.moc" | 
