[rkward-cvs] SF.net SVN: rkward: [959] trunk/rkward/rkward
tfry at users.sourceforge.net
tfry at users.sourceforge.net
Tue Nov 28 09:46:37 UTC 2006
Revision: 959
http://svn.sourceforge.net/rkward/?rev=959&view=rev
Author: tfry
Date: 2006-11-28 01:46:36 -0800 (Tue, 28 Nov 2006)
Log Message:
-----------
Clean up old workaround for popup menu creation (KTextEdit times), add option to clear console
Modified Paths:
--------------
trunk/rkward/rkward/rkconsole.cpp
trunk/rkward/rkward/rkconsole.h
trunk/rkward/rkward/rkconsolepart.rc
Modified: trunk/rkward/rkward/rkconsole.cpp
===================================================================
--- trunk/rkward/rkward/rkconsole.cpp 2006-11-27 22:54:30 UTC (rev 958)
+++ trunk/rkward/rkward/rkconsole.cpp 2006-11-28 09:46:36 UTC (rev 959)
@@ -321,7 +321,7 @@
} else if (e->type () == QEvent::MouseButtonPress){
QMouseEvent *m = (QMouseEvent *)e;
if (m->button() == Qt::RightButton) {
- createPopupMenu(m->globalPos());
+ emit (popupMenuRequest (m->globalPos ()));
return (true);
}
return (false);
@@ -526,15 +526,6 @@
}
}
-void RKConsole::createPopupMenu (const QPoint &pos) {
- RK_TRACE (APP);
- QPopupMenu *mp;
- emit (fetchPopupMenu (&mp));
- if (mp) {
- mp->exec(pos);
- }
-}
-
void RKConsole::copy () {
RK_TRACE (APP);
view->copy();
@@ -597,10 +588,11 @@
interrupt_command->setShortcut ("Ctrl+C");
copy = new KAction (i18n ("Copy selection"), 0, console, SLOT (copy ()), actionCollection (), "rkconsole_copy");
+ clear = new KAction (i18n ("Clear Console"), 0, console, SLOT (clear ()), actionCollection (), "rkconsole_clear");
paste = new KAction (i18n ("Paste"), KShortcut ("Ctrl+V"), console, SLOT (paste ()), actionCollection (), "rkconsole_paste");
// same HACK here
paste->setShortcut ("Ctrl+V");
- connect (console, SIGNAL (fetchPopupMenu (QPopupMenu**)), this, SLOT (makePopupMenu (QPopupMenu**)));
+ connect (console, SIGNAL (popupMenuRequest (const QPoint &)), this, SLOT (makePopupMenu (const QPoint &)));
}
RKConsolePart::~RKConsolePart () {
@@ -632,21 +624,18 @@
setDoingCommand (false);
}
-void RKConsolePart::makePopupMenu (QPopupMenu **menu) {
+void RKConsolePart::makePopupMenu (const QPoint &pos) {
RK_TRACE (APP);
-/* // won't work, as both the factory (), and the KTextEdit will think, they own the menu -> crash
- *menu = static_cast<QPopupMenu *>(factory ()->container ("rkconsole_context_menu", this));
- factory ()->resetContainer ("rkconsole_context_menu"); */
- *menu = new QPopupMenu (console);
- copy->plug (*menu, 9);
-
+ QPopupMenu *menu = static_cast<QPopupMenu *> (factory ()->container ("rkconsole_context_menu", this));
copy->setEnabled (console->hasSelectedText ());
- paste->plug (*menu, 10);
- (*menu)->insertSeparator (11);
- context_help->plug (*menu, 12);
- (*menu)->insertSeparator (13);
- interrupt_command->plug (*menu, 14);
+
+ if (!menu) {
+ RK_ASSERT (false);
+ return;
+ }
+
+ menu->exec (pos);
}
#include "rkconsole.moc"
Modified: trunk/rkward/rkward/rkconsole.h
===================================================================
--- trunk/rkward/rkward/rkconsole.h 2006-11-27 22:54:30 UTC (rev 958)
+++ trunk/rkward/rkward/rkconsole.h 2006-11-28 09:46:36 UTC (rev 959)
@@ -73,13 +73,11 @@
\param e the QKeyEvent */
bool handleKeyPress (QKeyEvent * e);
void rCommandDone (RCommand *command);
-/** provides our own context menu */
- void createPopupMenu (const QPoint &pos);
/** reimplemented from RCommandReceiver::newOutput () to handle output of console commands */
void newOutput (RCommand *command, ROutput *output);
signals:
void doingCommand (bool busy);
- void fetchPopupMenu (QPopupMenu **menu);
+ void popupMenuRequest (const QPoint &pos);
private:
friend class RKConsolePart;
bool eventFilter (QObject *o, QEvent *e);
@@ -106,8 +104,6 @@
void commandsListDown ();
/** Sets the cursor position to the beginning of the last line. */
void cursorAtTheBeginning ();
-/** Clear the view, and add a prompt at the top. */
- void clear();
/** Sets the current command. This is used from commandsListUp (), and commandsListDown ();
\param command the new command */
void setCurrentCommand (QString command);
@@ -139,6 +135,8 @@
@sa submitBatch */
void paste ();
void copy ();
+/** Clear the view, and add a prompt at the top. */
+ void clear();
};
/** A part interface to RKConsole. Provides the context-help functionality
@@ -159,12 +157,13 @@
void setDoingCommand (bool busy);
/** interrupt current command. */
void slotInterruptCommand ();
- void makePopupMenu (QPopupMenu **menu);
+ void makePopupMenu (const QPoint &pos);
private:
KAction* context_help;
KAction* interrupt_command;
KAction* copy;
KAction* paste;
+ KAction* clear;
RKConsole *console;
};
Modified: trunk/rkward/rkward/rkconsolepart.rc
===================================================================
--- trunk/rkward/rkward/rkconsolepart.rc 2006-11-27 22:54:30 UTC (rev 958)
+++ trunk/rkward/rkward/rkconsolepart.rc 2006-11-28 09:46:36 UTC (rev 959)
@@ -1,5 +1,5 @@
<!DOCTYPE kpartgui>
-<kpartgui name="rkward" version="0.3.4">
+<kpartgui name="rkward" version="0.4.2">
<MenuBar>
<Menu name="run"><text>&Run</text>
<Merge/>
@@ -15,11 +15,14 @@
<Separator/>
<Merge/>
</ToolBar>
-<!-- unfortunately this won't work due to the internal going ons in KTextEdit
<Menu name="rkconsole_context_menu">
<Action name="rkconsole_copy"></Action>
<Action name="rkconsole_paste"></Action>
+ <Separator/>
<Action name="function_reference"></Action>
+ <Separator/>
<Action name="interrupt"></Action>
- </Menu> -->
+ <Separator/>
+ <Action name="rkconsole_clear"></Action>
+ </Menu>
</kpartgui>
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the rkward-tracker
mailing list