summaryrefslogtreecommitdiffstats
path: root/pokemodr/PokeModrUI.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2008-05-26 17:48:19 +0000
committerBen Boeckel <MathStuf@gmail.com>2008-05-26 17:48:19 +0000
commitc4a3724a2b981e8dbc20f5d319a80bf364f2c7b7 (patch)
tree4887d64b9941ce8460ba6adb8d96569835af24ae /pokemodr/PokeModrUI.cpp
parent9200ed0568719fc3ffbf9c1f2fd07a667097b875 (diff)
[FIX] GroupModels will now add an item to itself if pasted to
[FIX] Actions are now correctly done git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@177 6ecfd1a5-f3ed-3746-8530-beee90d26b22
Diffstat (limited to 'pokemodr/PokeModrUI.cpp')
-rw-r--r--pokemodr/PokeModrUI.cpp115
1 files changed, 72 insertions, 43 deletions
diff --git a/pokemodr/PokeModrUI.cpp b/pokemodr/PokeModrUI.cpp
index 69ce08bf..7e007ce5 100644
--- a/pokemodr/PokeModrUI.cpp
+++ b/pokemodr/PokeModrUI.cpp
@@ -32,9 +32,9 @@
// KDE includes
#include <KAction>
+#include <KActionCollection>
#include <KCmdLineArgs>
#include <KFileDialog>
-#include <KIcon>
#include <KLocalizedString>
#include <KMenu>
#include <KMenuBar>
@@ -52,47 +52,7 @@ PokeModrUI::PokeModrUI(KConfigGroup config, QWidget* parent) :
m_config(config)
{
setupUi(this);
- // FIXME: Somehow get KAction/KMenus into the ui files
- KMenuBar* menubar = new KMenuBar(this);
- KMenu* menuFile = new KMenu("&File", menubar);
- menuFile->addAction(KStandardAction::openNew(this, SLOT(newPokemod()), menuFile));
- menuFile->addAction(KStandardAction::open(this, SLOT(openPokemod()), menuFile));
- m_recent = KStandardAction::openRecent(this, SLOT(openPokemod(const KUrl&)), menuFile);
- m_recent->loadEntries(m_config);
- menuFile->addAction(m_recent);
- menuFile->addAction(KStandardAction::close(this, SLOT(closePokemod()), menuFile));
- menuFile->addSeparator();
- menuFile->addAction(KStandardAction::save(this, SLOT(savePokemod()), menuFile));
- menuFile->addAction(KStandardAction::saveAs(this, SLOT(saveAsPokemod()), menuFile));
- menuFile->addSeparator();
- menuFile->addAction(KStandardAction::quit(this, SLOT(closeAllPokemods()), menuFile));
- menubar->addMenu(menuFile);
- KMenu* menuEdit = new KMenu("&Edit", menubar);
- menuEdit->addAction(KStandardAction::cut(menuEdit));
- menuEdit->addAction(KStandardAction::copy(menuEdit));
- menuEdit->addAction(KStandardAction::paste(menuEdit));
- menuEdit->addSeparator();
- menuEdit->addAction(KStandardAction::preferences(this, SLOT(preferences()), menuEdit));
- menubar->addMenu(menuEdit);
- menubar->addMenu(customHelpMenu(false));
- setMenuBar(menubar);
- KToolBar* toolbar = new KToolBar("toolbar", this, Qt::TopToolBarArea, false, true, true);
- toolbar->addAction(KStandardAction::openNew(this, SLOT(newPokemod()), toolbar));
- toolbar->addAction(KStandardAction::open(this, SLOT(openPokemod()), toolbar));
- toolbar->addAction(m_recent);
- toolbar->addAction(KStandardAction::close(this, SLOT(closePokemod()), toolbar));
- toolbar->addSeparator();
- toolbar->addAction(KStandardAction::save(this, SLOT(savePokemod()), toolbar));
- toolbar->addAction(KStandardAction::saveAs(this, SLOT(saveAsPokemod()), toolbar));
- toolbar->addSeparator();
- toolbar->addAction(KStandardAction::cut(toolbar));
- toolbar->addAction(KStandardAction::copy(toolbar));
- toolbar->addAction(KStandardAction::paste(toolbar));
- toolbar->addSeparator();
- toolbar->addAction(KStandardAction::preferences(this, SLOT(preferences()), toolbar));
- toolbar->addSeparator();
- toolbar->addAction(KStandardAction::quit(this, SLOT(closeAllPokemods()), toolbar));
- addToolBar(toolbar);
+ setupActions();
splitter->setSizes(QList<int>() << config.readEntry("treeWidth", 100) << config.readEntry("panelWidth", 100));
connect(buttonApply, SIGNAL(clicked()), this, SLOT(update()));
KCmdLineArgs* args = KCmdLineArgs::parsedArgs();
@@ -374,7 +334,76 @@ void PokeModrUI::on_treePokemod_clicked(const QModelIndex& index)
void PokeModrUI::on_treePokemod_customContextMenuRequested(const QPoint& position)
{
- KMenu* menu = treePokemod->contextMenu(treePokemod->indexAt(position));
+ QModelIndex index = treePokemod->indexAt(position);
+ KMenu* menu = treePokemod->contextMenu(index);
if (menu)
+ {
+ QString type = treePokemod->model()->data(index, BaseModel::TypeRole).toString();
+ KAction* paste = new KAction("&Paste", this);
+ connect(paste, SIGNAL(triggered()), this, SLOT(pasteObject()));
+ menu->addSeparator();
+ if (!type.isEmpty())
+ {
+ KAction* copy = new KAction("&Copy", this);
+ connect(copy, SIGNAL(triggered()), this, SLOT(copyObject()));
+ menu->addAction(copy);
+ paste->setEnabled(m_clipboard.doctype().name() == type);
+ }
+ menu->addAction(paste);
menu->popup(treePokemod->mapToGlobal(position));
+ }
+}
+
+void PokeModrUI::setupActions()
+{
+ KAction* openNew = KStandardAction::openNew(this, SLOT(newPokemod()), this);
+ KAction* open = KStandardAction::open(this, SLOT(openPokemod()), this);
+ m_recent = KStandardAction::openRecent(this, SLOT(openPokemod(const KUrl&)), this);
+ m_recent->loadEntries(m_config);
+ KAction* close = KStandardAction::close(this, SLOT(closePokemod()), this);
+ KAction* save = KStandardAction::save(this, SLOT(savePokemod()), this);
+ KAction* saveAs = KStandardAction::saveAs(this, SLOT(saveAsPokemod()), this);
+ KAction* quit = KStandardAction::quit(this, SLOT(closeAllPokemods()), this);
+ KAction* cut = KStandardAction::cut(this);
+ KAction* copy = KStandardAction::copy(this);
+ KAction* paste = KStandardAction::paste(this);
+ KAction* preferences = KStandardAction::preferences(this, SLOT(preferences()), this);
+ KMenuBar* menubar = new KMenuBar(this);
+ KMenu* menuFile = new KMenu("&File", menubar);
+ menuFile->addAction(openNew);
+ menuFile->addAction(open);
+ menuFile->addAction(m_recent);
+ menuFile->addAction(close);
+ menuFile->addSeparator();
+ menuFile->addAction(save);
+ menuFile->addAction(saveAs);
+ menuFile->addSeparator();
+ menuFile->addAction(quit);
+ menubar->addMenu(menuFile);
+ KMenu* menuEdit = new KMenu("&Edit", menubar);
+ menuEdit->addAction(cut);
+ menuEdit->addAction(copy);
+ menuEdit->addAction(paste);
+ menuEdit->addSeparator();
+ menuEdit->addAction(preferences);
+ menubar->addMenu(menuEdit);
+ menubar->addMenu(customHelpMenu(false));
+ setMenuBar(menubar);
+ KToolBar* toolbar = new KToolBar("toolbar", this, Qt::TopToolBarArea, false, true, true);
+ toolbar->addAction(openNew);
+ toolbar->addAction(open);
+ toolbar->addAction(m_recent);
+ toolbar->addAction(close);
+ toolbar->addSeparator();
+ toolbar->addAction(save);
+ toolbar->addAction(saveAs);
+ toolbar->addSeparator();
+ toolbar->addAction(cut);
+ toolbar->addAction(copy);
+ toolbar->addAction(paste);
+ toolbar->addSeparator();
+ toolbar->addAction(preferences);
+ toolbar->addSeparator();
+ toolbar->addAction(quit);
+ addToolBar(toolbar);
}