[rkward-cvs] rkward/rkward rkconsole.cpp,1.14,1.15 rkconsole.h,1.10,1.11 rkconsolepart.rc,1.2,1.3 rkwardui.rc,1.25,1.26

Thomas Friedrichsmeier tfry at users.sourceforge.net
Sun Oct 16 20:44:19 UTC 2005


Update of /cvsroot/rkward/rkward/rkward
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20055/rkward

Modified Files:
	rkconsole.cpp rkconsole.h rkconsolepart.rc rkwardui.rc 
Log Message:
Make Ctrl+C work in RKConsole. Add custom popup menu to RKConsole

Index: rkconsole.cpp
===================================================================
RCS file: /cvsroot/rkward/rkward/rkward/rkconsole.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** rkconsole.cpp	16 Oct 2005 18:48:34 -0000	1.14
--- rkconsole.cpp	16 Oct 2005 20:44:16 -0000	1.15
***************
*** 21,25 ****
  #include <qclipboard.h>
  #include <qapplication.h>
!  
  #include <klocale.h>
  #include <kaction.h>
--- 21,25 ----
  #include <qclipboard.h>
  #include <qapplication.h>
! 
  #include <klocale.h>
  #include <kaction.h>
***************
*** 252,255 ****
--- 252,263 ----
  }
  
+ QPopupMenu *RKConsole::createPopupMenu (const QPoint &pos) {
+ 	QPopupMenu *mp;
+ 	emit (fetchPopupMenu (&mp));
+ 	if (mp) return mp;
+ 
+ 	return KTextEdit::createPopupMenu (pos);
+ }
+ 
  ///################### END RKConsole ########################
  ///################### BEGIN RKConsolePart ####################
***************
*** 270,273 ****
--- 278,288 ----
  	interrupt_command->setIcon ("player_stop");
  	interrupt_command->setEnabled (false);
+ // ugly HACK: we need this to override the default Ctrl+C binding
+ 	interrupt_command->setShortcut ("Ctrl+C");
+ 
+ 	copy = new KAction (i18n ("Copy selection"), 0, console, SLOT (copy ()), actionCollection ());
+ 	paste = new KAction (i18n ("Paste"), KShortcut ("Ctrl+V"), console, SLOT (paste ()), actionCollection ());
+ 
+ 	connect (console, SIGNAL (fetchPopupMenu (QPopupMenu**)), this, SLOT (makePopupMenu (QPopupMenu**)));
  }
  
***************
*** 300,302 ****
--- 315,333 ----
  }
  
+ void RKConsolePart::makePopupMenu (QPopupMenu **menu) {
+ 	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);
+ 	copy->setEnabled (console->hasSelectedText ());
+ 	paste->plug (*menu, 10);
+ 	(*menu)->insertSeparator (11);
+ 	context_help->plug (*menu, 12);
+ 	(*menu)->insertSeparator (13);
+ 	interrupt_command->plug (*menu, 14);
+ }
+ 
  #include "rkconsole.moc"

Index: rkconsole.h
===================================================================
RCS file: /cvsroot/rkward/rkward/rkward/rkconsole.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** rkconsole.h	16 Oct 2005 18:48:34 -0000	1.10
--- rkconsole.h	16 Oct 2005 20:44:16 -0000	1.11
***************
*** 28,31 ****
--- 28,32 ----
  class KAction;
  class RCommand;
+ class QPopupMenu;
  
  /**
***************
*** 56,61 ****
--- 57,65 ----
  	void keyPressEvent (QKeyEvent * e);
  	void rCommandDone (RCommand *command);
+ /** reimplemented to provide our own context menu */
+ 	QPopupMenu *createPopupMenu (const QPoint &pos);
  signals:
  	void doingCommand (bool busy);
+ 	void fetchPopupMenu (QPopupMenu **menu);
  private:
  friend class RKConsolePart;
***************
*** 119,125 ****
  /** interrupt current command. */
  	void slotInterruptCommand ();
  private:
! 	KAction *context_help;
  	KAction* interrupt_command;
  
  	RKConsole *console;
--- 123,132 ----
  /** interrupt current command. */
  	void slotInterruptCommand ();
+ 	void makePopupMenu (QPopupMenu **menu);
  private:
! 	KAction* context_help;
  	KAction* interrupt_command;
+ 	KAction* copy;
+ 	KAction* paste;
  
  	RKConsole *console;

Index: rkconsolepart.rc
===================================================================
RCS file: /cvsroot/rkward/rkward/rkward/rkconsolepart.rc,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** rkconsolepart.rc	16 Oct 2005 18:48:34 -0000	1.2
--- rkconsolepart.rc	16 Oct 2005 20:44:16 -0000	1.3
***************
*** 1,4 ****
  <!DOCTYPE kpartgui>
! <kpartgui name="rkward" version="0.3.3">
  	<MenuBar>
  		<Menu name="run"><text>&Run</text>
--- 1,4 ----
  <!DOCTYPE kpartgui>
! <kpartgui name="rkward" version="0.3.4">
  	<MenuBar>
  		<Menu name="run"><text>&Run</text>
***************
*** 16,18 ****
--- 16,25 ----
  		<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>
+ 		<Action name="function_reference"></Action>
+ 		<Action name="interrupt"></Action>
+ 	</Menu> -->
  </kpartgui>
\ No newline at end of file

Index: rkwardui.rc
===================================================================
RCS file: /cvsroot/rkward/rkward/rkward/rkwardui.rc,v
retrieving revision 1.25
retrieving revision 1.26
diff -C2 -d -r1.25 -r1.26
*** rkwardui.rc	16 Oct 2005 18:48:34 -0000	1.25
--- rkwardui.rc	16 Oct 2005 20:44:16 -0000	1.26
***************
*** 67,74 ****
  		<Action name="paste_to_table"/>
  </ToolBar>
- <ToolBar fullWidth="true" name="runToolBar">
- 		<Separator/>
- 		<Action name="run_selection"/>
- 		<Action name="run_all"/>
- </ToolBar>
  </kpartgui>
--- 67,69 ----





More information about the rkward-tracker mailing list