#ifndef SHORTCUTS_SPEC_H
#define SHORTCUTS_SPEC_H
#include <Bitmap.h>
#include <ColumnListView.h>
#include "KeyInfos.h"
class CommandActuator;
class MetaKeyStateMap;
MetaKeyStateMap& GetNthKeyMap(int which);
class ShortcutsSpec : public BRow, public BArchivable {
public:
static void InitializeMetaMaps();
ShortcutsSpec(const char* command);
ShortcutsSpec(const ShortcutsSpec& copyMe);
ShortcutsSpec(BMessage* from);
~ShortcutsSpec();
virtual status_t Archive(BMessage* into, bool deep = true) const;
static BArchivable* Instantiate(BMessage* from);
const char* GetCellText(int whichColumn) const;
void SetCommand(const char* commandStr);
static const char* GetColumnName(int index);
bool ProcessColumnKeyStroke(int whichColumn,
const char* bytes, int32 key);
bool ProcessColumnMouseClick(int whichColumn);
bool ProcessColumnTextString(int whichColumn,
const char* string);
int32 GetSelectedColumn() const { return fSelectedColumn; }
void SetSelectedColumn(int32 i) { fSelectedColumn = i; }
enum {
SHIFT_COLUMN_INDEX = 0,
CONTROL_COLUMN_INDEX = 1,
COMMAND_COLUMN_INDEX = 2,
OPTION_COLUMN_INDEX = 3,
NUM_META_COLUMNS = 4,
KEY_COLUMN_INDEX = NUM_META_COLUMNS,
STRING_COLUMN_INDEX = 5
};
private:
void _CacheViewFont(BView* owner);
bool _AttemptTabCompletion();
char* fCommand;
uint32 fCommandLen;
uint32 fCommandNul;
BBitmap fBitmap;
char* fLastBitmapName;
bool fBitmapValid;
uint32 fKey;
int32 fMetaCellStateIndex[NUM_META_COLUMNS];
BPoint fCursorPt1;
BPoint fCursorPt2;
bool fCursorPtsValid;
mutable char fScratch[50];
int32 fSelectedColumn;
private:
static void _InitModifierNames();
static const char* sShiftName;
static const char* sControlName;
static const char* sOptionName;
static const char* sCommandName;
};
#endif