diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2008-05-26 17:48:19 +0000 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2008-05-26 17:48:19 +0000 |
| commit | c4a3724a2b981e8dbc20f5d319a80bf364f2c7b7 (patch) | |
| tree | 4887d64b9941ce8460ba6adb8d96569835af24ae /pokemodr/PokeModrUI.cpp | |
| parent | 9200ed0568719fc3ffbf9c1f2fd07a667097b875 (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.cpp | 115 |
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); } |
