* Copyright 2004-2014 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* Alexandre Deckner, alex@zappotek.com
* Axel DΓΆrfler, axeld@pinc-software.de
* JΓ©rΓ΄me Duval
* John Scipione, jscipione@gmai.com
* Sandor Vroemisse
*/
#ifndef KEYMAP_WINDOW_H
#define KEYMAP_WINDOW_H
#include <FilePanel.h>
#include <ListView.h>
#include <String.h>
#include <Window.h>
#include "Keymap.h"
class BMenu;
class BMenuBar;
class BMenuField;
class BTextControl;
class KeyboardLayoutView;
class KeymapListItem;
class KeymapWindow : public BWindow {
public:
KeymapWindow();
virtual ~KeymapWindow();
virtual bool QuitRequested();
virtual void MessageReceived(BMessage* message);
protected:
BMenuBar* _CreateMenu();
BView* _CreateMapLists();
void _AddKeyboardLayouts(BMenu* menu);
void _AddKeyboardLayoutMenu(BMenu* menu,
BDirectory directory);
status_t _SetKeyboardLayout(const char* path);
void _MarkKeyboardLayoutItem(const char* path,
BMenu* menu);
void _UpdateSwitchShortcutButton();
void _UpdateButtons();
void _SwitchShortcutKeys();
void _UseKeymap();
void _DefaultKeymap();
void _RevertKeymap();
BMenuField* _CreateDeadKeyMenuField();
void _UpdateDeadKeyMenu();
void _FillSystemMaps();
void _FillUserMaps();
void _SetListViewSize(BListView* listView);
status_t _GetCurrentKeymap(entry_ref& ref);
BString _GetActiveKeymapName();
bool _SelectCurrentMap(BListView* list);
void _SelectCurrentMap();
status_t _GetSettings(BFile& file, int mode) const;
status_t _LoadSettings(BRect& frame);
status_t _SaveSettings();
BPath _GetMarkedKeyboardLayoutPath(BMenu* menu);
private:
BListView* fSystemListView;
BListView* fUserListView;
BButton* fDefaultsButton;
BButton* fRevertButton;
BMenu* fLayoutMenu;
BMenu* fFontMenu;
KeyboardLayoutView* fKeyboardLayoutView;
BTextControl* fTextControl;
BButton* fSwitchShortcutsButton;
BMenu* fAcuteMenu;
BMenu* fCircumflexMenu;
BMenu* fDiaeresisMenu;
BMenu* fGraveMenu;
BMenu* fTildeMenu;
Keymap fCurrentMap;
Keymap fPreviousMap;
Keymap fAppliedMap;
BString fCurrentMapName;
BFilePanel* fOpenPanel;
BFilePanel* fSavePanel;
};
#endif