ROOT logo
#ifndef __TGMrbLofKeyBindings_h__
#define __TGMrbLofKeyBindings_h__

//_________________________________________________[C++ CLASS DEFINITION FILE]
//////////////////////////////////////////////////////////////////////////////
// Name:           gutils/inc/TGMrbLofKeyBindings.h
// Purpose:        Define utilities to be used with the MARaBOU GUI
// Class:          TGMrbLofKeyBindings          -- key bindings
// Description:    Graphic utilities for the MARaBOU GUI.
// Author:         R. Lutter
// Revision:       $Id: TGMrbLofKeyBindings.h,v 1.6 2008-12-29 13:48:24 Rudolf.Lutter Exp $       
// Date:           
// Keywords:
//////////////////////////////////////////////////////////////////////////////

#include "Rtypes.h"
#include "GuiTypes.h"
#include "TGFrame.h"
#include "WidgetMessageTypes.h"
#include "TMrbLofNamedX.h"

#include "RQ_OBJECT.h"

enum				{	kC_KEY					= kC_USER + 100 	};	// to be used for ProcessMessage()
		
//______________________________________________________[C++ CLASS DEFINITION]
//////////////////////////////////////////////////////////////////////////////
// Name:           TGMrbLofKeyBindings
// Purpose:        Maintain a list of key bindings
// Description:    Stores key bindings for a window
// Keywords:
//////////////////////////////////////////////////////////////////////////////

class TGMrbLofKeyBindings : public TMrbLofNamedX {

	RQ_OBJECT("TGMrbLofKeyBindings")

	public:
		// global status bits
		enum EGMrbKeyAction {	kGMrbKeyActionAllDone	= 0,			// standard system codes
								kGMrbKeyActionExit,
								kGMrbKeyActionClose,
								kGMrbKeyActionSave,
								kGMrbKeyActionRestore,
								kGMrbKeyActionPrint,
								kGMrbKeyActionOpen,
								kGMrbKeyActionNew,
								kGMrbKeyActionFind,
								kGMrbKeyActionFindAgain,
								kGMrbKeyActionUndo,
								kGMrbKeyActionPaste,
								kGMrbKeyActionCopy,
								kGMrbKeyActionCut,
								kGMrbKeyActionUser		= 128,			// user may add his codes from here on
								kGMrbKeyActionAnyKey	= 256			// codes to handle other chars
							};
							
		enum				{	kGMrbKeyModifierMask	= kKeyShiftMask | kKeyLockMask | kKeyControlMask | kKeyMod1Mask };
		enum				{	kGMrbKeyIndexMask		= 0x0000FFFF		};	// index: keycode (0:7), modifier (8:15)
		enum				{	kGMrbKeyModifierBit		= 8					};	// therefore modifier shifted to bit 8
		enum				{	kGMrbKeyActionMask		= 0xFFFF0000		};	// action codes stored in high order bits
		enum				{	kGMrbKeyActionBit		= 16				};	// therefore action shifted to bit 16
		
	public:
		TGMrbLofKeyBindings(const TGWindow * Parent = NULL); 		// ctor
		~TGMrbLofKeyBindings() {};									// default dtor

		inline void SetParent(TGWindow * Parent) { fParent = Parent; };
		
		Bool_t BindKey(const Char_t * Key, EGMrbKeyAction Action = TGMrbLofKeyBindings::kGMrbKeyActionAllDone);
		Bool_t HandleKey(Event_t * Event);
		
		void KeyPressed(Int_t FrameId, Int_t Key);		 	//*SIGNAL*

		inline void Help() { gSystem->Exec(Form("mrbHelp %s", this->ClassName())); };

	protected:
		const TGWindow * fParent;
		
	ClassDef(TGMrbLofKeyBindings, 0) 	// [GraphUtils] A list of key bindings
};

#endif
 TGMrbLofKeyBindings.h:1
 TGMrbLofKeyBindings.h:2
 TGMrbLofKeyBindings.h:3
 TGMrbLofKeyBindings.h:4
 TGMrbLofKeyBindings.h:5
 TGMrbLofKeyBindings.h:6
 TGMrbLofKeyBindings.h:7
 TGMrbLofKeyBindings.h:8
 TGMrbLofKeyBindings.h:9
 TGMrbLofKeyBindings.h:10
 TGMrbLofKeyBindings.h:11
 TGMrbLofKeyBindings.h:12
 TGMrbLofKeyBindings.h:13
 TGMrbLofKeyBindings.h:14
 TGMrbLofKeyBindings.h:15
 TGMrbLofKeyBindings.h:16
 TGMrbLofKeyBindings.h:17
 TGMrbLofKeyBindings.h:18
 TGMrbLofKeyBindings.h:19
 TGMrbLofKeyBindings.h:20
 TGMrbLofKeyBindings.h:21
 TGMrbLofKeyBindings.h:22
 TGMrbLofKeyBindings.h:23
 TGMrbLofKeyBindings.h:24
 TGMrbLofKeyBindings.h:25
 TGMrbLofKeyBindings.h:26
 TGMrbLofKeyBindings.h:27
 TGMrbLofKeyBindings.h:28
 TGMrbLofKeyBindings.h:29
 TGMrbLofKeyBindings.h:30
 TGMrbLofKeyBindings.h:31
 TGMrbLofKeyBindings.h:32
 TGMrbLofKeyBindings.h:33
 TGMrbLofKeyBindings.h:34
 TGMrbLofKeyBindings.h:35
 TGMrbLofKeyBindings.h:36
 TGMrbLofKeyBindings.h:37
 TGMrbLofKeyBindings.h:38
 TGMrbLofKeyBindings.h:39
 TGMrbLofKeyBindings.h:40
 TGMrbLofKeyBindings.h:41
 TGMrbLofKeyBindings.h:42
 TGMrbLofKeyBindings.h:43
 TGMrbLofKeyBindings.h:44
 TGMrbLofKeyBindings.h:45
 TGMrbLofKeyBindings.h:46
 TGMrbLofKeyBindings.h:47
 TGMrbLofKeyBindings.h:48
 TGMrbLofKeyBindings.h:49
 TGMrbLofKeyBindings.h:50
 TGMrbLofKeyBindings.h:51
 TGMrbLofKeyBindings.h:52
 TGMrbLofKeyBindings.h:53
 TGMrbLofKeyBindings.h:54
 TGMrbLofKeyBindings.h:55
 TGMrbLofKeyBindings.h:56
 TGMrbLofKeyBindings.h:57
 TGMrbLofKeyBindings.h:58
 TGMrbLofKeyBindings.h:59
 TGMrbLofKeyBindings.h:60
 TGMrbLofKeyBindings.h:61
 TGMrbLofKeyBindings.h:62
 TGMrbLofKeyBindings.h:63
 TGMrbLofKeyBindings.h:64
 TGMrbLofKeyBindings.h:65
 TGMrbLofKeyBindings.h:66
 TGMrbLofKeyBindings.h:67
 TGMrbLofKeyBindings.h:68
 TGMrbLofKeyBindings.h:69
 TGMrbLofKeyBindings.h:70
 TGMrbLofKeyBindings.h:71
 TGMrbLofKeyBindings.h:72
 TGMrbLofKeyBindings.h:73
 TGMrbLofKeyBindings.h:74
 TGMrbLofKeyBindings.h:75
 TGMrbLofKeyBindings.h:76
 TGMrbLofKeyBindings.h:77
 TGMrbLofKeyBindings.h:78
 TGMrbLofKeyBindings.h:79
 TGMrbLofKeyBindings.h:80
 TGMrbLofKeyBindings.h:81
 TGMrbLofKeyBindings.h:82
 TGMrbLofKeyBindings.h:83