[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