* removed KeymapMessageFilter, as it is no longer needed
* fixed a couple of issues with respect to internal/external naming of keymaps and the respective files, hopefully such that there's always one keymap active in the view: either one that has been selected or (Current) if any changes have been applied * replaced the dead-key-menubar with a menufield (thanks Axel, looking much better) cleanup: * removed remnants of Use-button (message constant and switch-case) * dropped 'Save' menu item, as it wasn't implemented anyway and would now never be enabled * removed fFirstTime, as it caused problems, but did not serve any purpose anymore git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30734 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -10,7 +10,6 @@ Preference Keymap :
|
|||||||
Keymap.cpp
|
Keymap.cpp
|
||||||
KeymapApplication.cpp
|
KeymapApplication.cpp
|
||||||
KeymapListItem.cpp
|
KeymapListItem.cpp
|
||||||
KeymapMessageFilter.cpp
|
|
||||||
KeymapWindow.cpp
|
KeymapWindow.cpp
|
||||||
|
|
||||||
: be tracker $(TARGET_LIBSTDC++)
|
: be tracker $(TARGET_LIBSTDC++)
|
||||||
|
|||||||
@@ -84,6 +84,13 @@ Keymap::SetTarget(BMessenger target, BMessage* modificationMessage)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
Keymap::SetName(const char* name)
|
||||||
|
{
|
||||||
|
strlcpy(fName, name, sizeof(fName));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Keymap::DumpKeymap()
|
Keymap::DumpKeymap()
|
||||||
{
|
{
|
||||||
@@ -151,7 +158,14 @@ Keymap::Load(entry_ref &ref)
|
|||||||
if (err < B_OK) {
|
if (err < B_OK) {
|
||||||
fprintf(stderr, "error reading keymap chars: %s\n", strerror(err));
|
fprintf(stderr, "error reading keymap chars: %s\n", strerror(err));
|
||||||
}
|
}
|
||||||
strlcpy(fName, ref.name, sizeof(fName));
|
|
||||||
|
// fetch name from attribute and fall back to filename
|
||||||
|
ssize_t bytesRead
|
||||||
|
= file.ReadAttr("keymap:name", B_STRING_TYPE, 0, fName, sizeof(fName));
|
||||||
|
if (bytesRead > 0)
|
||||||
|
fName[bytesRead] = '\0';
|
||||||
|
else
|
||||||
|
strlcpy(fName, ref.name, sizeof(fName));
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -64,6 +64,8 @@ public:
|
|||||||
int8 deadKey, const char* bytes,
|
int8 deadKey, const char* bytes,
|
||||||
int32 numBytes = -1);
|
int32 numBytes = -1);
|
||||||
|
|
||||||
|
void SetName(const char* name);
|
||||||
|
|
||||||
const key_map& Map() const { return fKeys; }
|
const key_map& Map() const { return fKeys; }
|
||||||
key_map& Map() { return fKeys; }
|
key_map& Map() { return fKeys; }
|
||||||
|
|
||||||
|
|||||||
@@ -1,74 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2009, Axel Dörfler, [email protected].
|
|
||||||
* Distributed under the terms of the MIT License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*! This class implements a filter that applies a certain keymap to
|
|
||||||
the keyboard input.
|
|
||||||
It's used to be able to make keymap changes live within the
|
|
||||||
application.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "KeymapMessageFilter.h"
|
|
||||||
|
|
||||||
#include <AppDefs.h>
|
|
||||||
#include <Message.h>
|
|
||||||
|
|
||||||
#include "Keymap.h"
|
|
||||||
|
|
||||||
|
|
||||||
KeymapMessageFilter::KeymapMessageFilter(message_delivery delivery,
|
|
||||||
message_source source, Keymap* keymap)
|
|
||||||
: BMessageFilter(delivery, source),
|
|
||||||
fKeymap(keymap)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
KeymapMessageFilter::~KeymapMessageFilter()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
KeymapMessageFilter::SetKeymap(Keymap* keymap)
|
|
||||||
{
|
|
||||||
fKeymap = keymap;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
filter_result
|
|
||||||
KeymapMessageFilter::Filter(BMessage* message, BHandler** /*_target*/)
|
|
||||||
{
|
|
||||||
if (fKeymap == NULL || message->what != B_KEY_DOWN)
|
|
||||||
return B_DISPATCH_MESSAGE;
|
|
||||||
|
|
||||||
void* keymap;
|
|
||||||
if (message->FindPointer("keymap", &keymap) == B_OK && keymap == fKeymap)
|
|
||||||
return B_DISPATCH_MESSAGE;
|
|
||||||
|
|
||||||
// TODO: add dead key handling!
|
|
||||||
|
|
||||||
int32 modifiers;
|
|
||||||
int32 key;
|
|
||||||
if (message->FindInt32("modifiers", &modifiers) == B_OK
|
|
||||||
&& message->FindInt32("key", &key) == B_OK) {
|
|
||||||
// replace "bytes", and "raw_char"/"byte"
|
|
||||||
char* string;
|
|
||||||
int32 numBytes;
|
|
||||||
fKeymap->GetChars(key, modifiers, 0, &string, &numBytes);
|
|
||||||
if (string != NULL) {
|
|
||||||
message->ReplaceString("bytes", string);
|
|
||||||
delete[] string;
|
|
||||||
}
|
|
||||||
|
|
||||||
fKeymap->GetChars(key, 0, 0, &string, &numBytes);
|
|
||||||
if (string != NULL) {
|
|
||||||
message->ReplaceInt32("raw_char", string[0]);
|
|
||||||
message->ReplaceInt8("byte", string[0]);
|
|
||||||
delete[] string;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return B_DISPATCH_MESSAGE;
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2009, Axel Dörfler, [email protected].
|
|
||||||
* Distributed under the terms of the MIT License.
|
|
||||||
*/
|
|
||||||
#ifndef KEYMAP_MESSAGE_FILTER_H
|
|
||||||
#define KEYMAP_MESSAGE_FILTER_H
|
|
||||||
|
|
||||||
|
|
||||||
#include <MessageFilter.h>
|
|
||||||
|
|
||||||
class Keymap;
|
|
||||||
|
|
||||||
|
|
||||||
class KeymapMessageFilter : public BMessageFilter {
|
|
||||||
public:
|
|
||||||
KeymapMessageFilter(
|
|
||||||
message_delivery delivery = B_ANY_DELIVERY,
|
|
||||||
message_source source = B_ANY_SOURCE,
|
|
||||||
Keymap* keymap = NULL);
|
|
||||||
virtual ~KeymapMessageFilter();
|
|
||||||
|
|
||||||
void SetKeymap(Keymap* keymap);
|
|
||||||
|
|
||||||
virtual filter_result Filter(BMessage* message, BHandler** _target);
|
|
||||||
|
|
||||||
private:
|
|
||||||
Keymap* fKeymap;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // KEYMAP_MESSAGE_FILTER_H
|
|
||||||
@@ -21,8 +21,10 @@
|
|||||||
#include <GroupLayoutBuilder.h>
|
#include <GroupLayoutBuilder.h>
|
||||||
#include <ListView.h>
|
#include <ListView.h>
|
||||||
#include <MenuBar.h>
|
#include <MenuBar.h>
|
||||||
|
#include <MenuField.h>
|
||||||
#include <MenuItem.h>
|
#include <MenuItem.h>
|
||||||
#include <Path.h>
|
#include <Path.h>
|
||||||
|
#include <PopUpMenu.h>
|
||||||
#include <Screen.h>
|
#include <Screen.h>
|
||||||
#include <ScrollView.h>
|
#include <ScrollView.h>
|
||||||
#include <StringView.h>
|
#include <StringView.h>
|
||||||
@@ -31,11 +33,9 @@
|
|||||||
#include "KeyboardLayoutView.h"
|
#include "KeyboardLayoutView.h"
|
||||||
#include "KeymapApplication.h"
|
#include "KeymapApplication.h"
|
||||||
#include "KeymapListItem.h"
|
#include "KeymapListItem.h"
|
||||||
#include "KeymapMessageFilter.h"
|
|
||||||
|
|
||||||
|
|
||||||
static const uint32 kMsgMenuFileOpen = 'mMFO';
|
static const uint32 kMsgMenuFileOpen = 'mMFO';
|
||||||
static const uint32 kMsgMenuFileSave = 'mMFS';
|
|
||||||
static const uint32 kMsgMenuFileSaveAs = 'mMFA';
|
static const uint32 kMsgMenuFileSaveAs = 'mMFA';
|
||||||
|
|
||||||
static const uint32 kChangeKeyboardLayout = 'cKyL';
|
static const uint32 kChangeKeyboardLayout = 'cKyL';
|
||||||
@@ -47,7 +47,6 @@ static const uint32 kMsgMenuFontChanged = 'mMFC';
|
|||||||
static const uint32 kMsgSystemMapSelected = 'SmST';
|
static const uint32 kMsgSystemMapSelected = 'SmST';
|
||||||
static const uint32 kMsgUserMapSelected = 'UmST';
|
static const uint32 kMsgUserMapSelected = 'UmST';
|
||||||
|
|
||||||
static const uint32 kMsgUseKeymap = 'UkyM';
|
|
||||||
static const uint32 kMsgRevertKeymap = 'Rvrt';
|
static const uint32 kMsgRevertKeymap = 'Rvrt';
|
||||||
static const uint32 kMsgKeymapUpdated = 'upkM';
|
static const uint32 kMsgKeymapUpdated = 'upkM';
|
||||||
|
|
||||||
@@ -59,11 +58,12 @@ static const uint32 kMsgDeadKeyTildeChanged = 'dkTc';
|
|||||||
|
|
||||||
static const char* kDeadKeyTriggerNone = "<none>";
|
static const char* kDeadKeyTriggerNone = "<none>";
|
||||||
|
|
||||||
|
static const char* kCurrentKeymapName = "(Current)";
|
||||||
|
|
||||||
|
|
||||||
KeymapWindow::KeymapWindow()
|
KeymapWindow::KeymapWindow()
|
||||||
: BWindow(BRect(80, 50, 880, 380), "Keymap", B_TITLED_WINDOW,
|
: BWindow(BRect(80, 50, 880, 380), "Keymap", B_TITLED_WINDOW,
|
||||||
B_ASYNCHRONOUS_CONTROLS | B_AUTO_UPDATE_SIZE_LIMITS),
|
B_ASYNCHRONOUS_CONTROLS | B_AUTO_UPDATE_SIZE_LIMITS)
|
||||||
fFirstTime(true)
|
|
||||||
{
|
{
|
||||||
SetLayout(new BGroupLayout(B_VERTICAL));
|
SetLayout(new BGroupLayout(B_VERTICAL));
|
||||||
|
|
||||||
@@ -87,7 +87,7 @@ KeymapWindow::KeymapWindow()
|
|||||||
.Add(fKeyboardLayoutView)
|
.Add(fKeyboardLayoutView)
|
||||||
//.Add(new BStringView("text label", "Sample and Clipboard:"))
|
//.Add(new BStringView("text label", "Sample and Clipboard:"))
|
||||||
.Add(BGroupLayoutBuilder(B_HORIZONTAL, 10)
|
.Add(BGroupLayoutBuilder(B_HORIZONTAL, 10)
|
||||||
.Add(_CreateDeadKeyMenu(), 0.0)
|
.Add(_CreateDeadKeyMenuField(), 0.0)
|
||||||
.AddGlue()
|
.AddGlue()
|
||||||
.Add(fSwitchShortcutsButton))
|
.Add(fSwitchShortcutsButton))
|
||||||
.Add(fTextControl)
|
.Add(fTextControl)
|
||||||
@@ -99,8 +99,6 @@ KeymapWindow::KeymapWindow()
|
|||||||
|
|
||||||
fKeyboardLayoutView->SetTarget(fTextControl->TextView());
|
fKeyboardLayoutView->SetTarget(fTextControl->TextView());
|
||||||
fTextControl->MakeFocus();
|
fTextControl->MakeFocus();
|
||||||
fTextControl->TextView()->AddFilter(new KeymapMessageFilter(
|
|
||||||
B_PROGRAMMED_DELIVERY, B_ANY_SOURCE, &fCurrentMap));
|
|
||||||
|
|
||||||
_UpdateButtons();
|
_UpdateButtons();
|
||||||
|
|
||||||
@@ -194,6 +192,7 @@ KeymapWindow::MessageReceived(BMessage* message)
|
|||||||
int32 i = 0;
|
int32 i = 0;
|
||||||
while (message->FindRef("refs", i++, &ref) == B_OK) {
|
while (message->FindRef("refs", i++, &ref) == B_OK) {
|
||||||
fCurrentMap.Load(ref);
|
fCurrentMap.Load(ref);
|
||||||
|
fAppliedMap = fCurrentMap;
|
||||||
}
|
}
|
||||||
fKeyboardLayoutView->SetKeymap(&fCurrentMap);
|
fKeyboardLayoutView->SetKeymap(&fCurrentMap);
|
||||||
fSystemListView->DeselectAll();
|
fSystemListView->DeselectAll();
|
||||||
@@ -210,9 +209,12 @@ KeymapWindow::MessageReceived(BMessage* message)
|
|||||||
BDirectory directory(&ref);
|
BDirectory directory(&ref);
|
||||||
BEntry entry(&directory, name);
|
BEntry entry(&directory, name);
|
||||||
entry.GetRef(&ref);
|
entry.GetRef(&ref);
|
||||||
|
fCurrentMap.SetName(name);
|
||||||
fCurrentMap.Save(ref);
|
fCurrentMap.Save(ref);
|
||||||
|
fAppliedMap = fCurrentMap;
|
||||||
_FillUserMaps();
|
_FillUserMaps();
|
||||||
|
fCurrentMapName = name;
|
||||||
|
_SelectCurrentMap();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -220,8 +222,6 @@ KeymapWindow::MessageReceived(BMessage* message)
|
|||||||
case kMsgMenuFileOpen:
|
case kMsgMenuFileOpen:
|
||||||
fOpenPanel->Show();
|
fOpenPanel->Show();
|
||||||
break;
|
break;
|
||||||
case kMsgMenuFileSave:
|
|
||||||
break;
|
|
||||||
case kMsgMenuFileSaveAs:
|
case kMsgMenuFileSaveAs:
|
||||||
fSavePanel->Show();
|
fSavePanel->Show();
|
||||||
break;
|
break;
|
||||||
@@ -267,7 +267,6 @@ KeymapWindow::MessageReceived(BMessage* message)
|
|||||||
BListView* otherListView;
|
BListView* otherListView;
|
||||||
|
|
||||||
if (message->what == kMsgSystemMapSelected) {
|
if (message->what == kMsgSystemMapSelected) {
|
||||||
fUserListView->DeselectAll();
|
|
||||||
listView = fSystemListView;
|
listView = fSystemListView;
|
||||||
otherListView = fUserListView;
|
otherListView = fUserListView;
|
||||||
} else {
|
} else {
|
||||||
@@ -290,21 +289,15 @@ KeymapWindow::MessageReceived(BMessage* message)
|
|||||||
KeymapListItem* item
|
KeymapListItem* item
|
||||||
= static_cast<KeymapListItem*>(listView->ItemAt(index));
|
= static_cast<KeymapListItem*>(listView->ItemAt(index));
|
||||||
if (item != NULL) {
|
if (item != NULL) {
|
||||||
if (!fFirstTime)
|
fCurrentMap.Load(item->EntryRef());
|
||||||
fCurrentMap.Load(item->EntryRef());
|
fAppliedMap = fCurrentMap;
|
||||||
else
|
|
||||||
fFirstTime = false;
|
|
||||||
|
|
||||||
fKeyboardLayoutView->SetKeymap(&fCurrentMap);
|
fKeyboardLayoutView->SetKeymap(&fCurrentMap);
|
||||||
|
_UseKeymap();
|
||||||
_UpdateButtons();
|
_UpdateButtons();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case kMsgUseKeymap:
|
|
||||||
_UseKeymap();
|
|
||||||
_UpdateButtons();
|
|
||||||
break;
|
|
||||||
case kMsgRevertKeymap:
|
case kMsgRevertKeymap:
|
||||||
_RevertKeymap();
|
_RevertKeymap();
|
||||||
_UpdateButtons();
|
_UpdateButtons();
|
||||||
@@ -399,9 +392,6 @@ KeymapWindow::_CreateMenu()
|
|||||||
menu->AddItem(new BMenuItem("Open" B_UTF8_ELLIPSIS,
|
menu->AddItem(new BMenuItem("Open" B_UTF8_ELLIPSIS,
|
||||||
new BMessage(kMsgMenuFileOpen), 'O'));
|
new BMessage(kMsgMenuFileOpen), 'O'));
|
||||||
menu->AddSeparatorItem();
|
menu->AddSeparatorItem();
|
||||||
item = new BMenuItem("Save", new BMessage(kMsgMenuFileSave), 'S');
|
|
||||||
item->SetEnabled(false);
|
|
||||||
menu->AddItem(item);
|
|
||||||
menu->AddItem(new BMenuItem("Save As" B_UTF8_ELLIPSIS,
|
menu->AddItem(new BMenuItem("Save As" B_UTF8_ELLIPSIS,
|
||||||
new BMessage(kMsgMenuFileSaveAs)));
|
new BMessage(kMsgMenuFileSaveAs)));
|
||||||
menu->AddSeparatorItem();
|
menu->AddSeparatorItem();
|
||||||
@@ -446,12 +436,10 @@ KeymapWindow::_CreateMenu()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BMenuBar*
|
BMenuField*
|
||||||
KeymapWindow::_CreateDeadKeyMenu()
|
KeymapWindow::_CreateDeadKeyMenuField()
|
||||||
{
|
{
|
||||||
BMenuBar* menuBar = new BMenuBar("deadkeymenubar");
|
BPopUpMenu* deadKeyMenu = new BPopUpMenu("Select Dead Keys", false, false);
|
||||||
fDeadKeyMenu = new BMenu("Select Dead Keys");
|
|
||||||
menuBar->AddItem(fDeadKeyMenu);
|
|
||||||
|
|
||||||
fAcuteMenu = new BMenu("Acute Trigger");
|
fAcuteMenu = new BMenu("Acute Trigger");
|
||||||
fAcuteMenu->SetRadioMode(true);
|
fAcuteMenu->SetRadioMode(true);
|
||||||
@@ -461,7 +449,7 @@ KeymapWindow::_CreateDeadKeyMenu()
|
|||||||
new BMessage(kMsgDeadKeyAcuteChanged)));
|
new BMessage(kMsgDeadKeyAcuteChanged)));
|
||||||
fAcuteMenu->AddItem(new BMenuItem(kDeadKeyTriggerNone,
|
fAcuteMenu->AddItem(new BMenuItem(kDeadKeyTriggerNone,
|
||||||
new BMessage(kMsgDeadKeyAcuteChanged)));
|
new BMessage(kMsgDeadKeyAcuteChanged)));
|
||||||
fDeadKeyMenu->AddItem(fAcuteMenu);
|
deadKeyMenu->AddItem(fAcuteMenu);
|
||||||
|
|
||||||
fCircumflexMenu = new BMenu("Circumflex Trigger");
|
fCircumflexMenu = new BMenu("Circumflex Trigger");
|
||||||
fCircumflexMenu->SetRadioMode(true);
|
fCircumflexMenu->SetRadioMode(true);
|
||||||
@@ -469,7 +457,7 @@ KeymapWindow::_CreateDeadKeyMenu()
|
|||||||
new BMessage(kMsgDeadKeyCircumflexChanged)));
|
new BMessage(kMsgDeadKeyCircumflexChanged)));
|
||||||
fCircumflexMenu->AddItem(new BMenuItem(kDeadKeyTriggerNone,
|
fCircumflexMenu->AddItem(new BMenuItem(kDeadKeyTriggerNone,
|
||||||
new BMessage(kMsgDeadKeyCircumflexChanged)));
|
new BMessage(kMsgDeadKeyCircumflexChanged)));
|
||||||
fDeadKeyMenu->AddItem(fCircumflexMenu);
|
deadKeyMenu->AddItem(fCircumflexMenu);
|
||||||
|
|
||||||
fDiaeresisMenu = new BMenu("Diaeresis Trigger");
|
fDiaeresisMenu = new BMenu("Diaeresis Trigger");
|
||||||
fDiaeresisMenu->SetRadioMode(true);
|
fDiaeresisMenu->SetRadioMode(true);
|
||||||
@@ -479,7 +467,7 @@ KeymapWindow::_CreateDeadKeyMenu()
|
|||||||
new BMessage(kMsgDeadKeyDiaeresisChanged)));
|
new BMessage(kMsgDeadKeyDiaeresisChanged)));
|
||||||
fDiaeresisMenu->AddItem(new BMenuItem(kDeadKeyTriggerNone,
|
fDiaeresisMenu->AddItem(new BMenuItem(kDeadKeyTriggerNone,
|
||||||
new BMessage(kMsgDeadKeyDiaeresisChanged)));
|
new BMessage(kMsgDeadKeyDiaeresisChanged)));
|
||||||
fDeadKeyMenu->AddItem(fDiaeresisMenu);
|
deadKeyMenu->AddItem(fDiaeresisMenu);
|
||||||
|
|
||||||
fGraveMenu = new BMenu("Grave Trigger");
|
fGraveMenu = new BMenu("Grave Trigger");
|
||||||
fGraveMenu->SetRadioMode(true);
|
fGraveMenu->SetRadioMode(true);
|
||||||
@@ -487,7 +475,7 @@ KeymapWindow::_CreateDeadKeyMenu()
|
|||||||
new BMessage(kMsgDeadKeyGraveChanged)));
|
new BMessage(kMsgDeadKeyGraveChanged)));
|
||||||
fGraveMenu->AddItem(new BMenuItem(kDeadKeyTriggerNone,
|
fGraveMenu->AddItem(new BMenuItem(kDeadKeyTriggerNone,
|
||||||
new BMessage(kMsgDeadKeyGraveChanged)));
|
new BMessage(kMsgDeadKeyGraveChanged)));
|
||||||
fDeadKeyMenu->AddItem(fGraveMenu);
|
deadKeyMenu->AddItem(fGraveMenu);
|
||||||
|
|
||||||
fTildeMenu = new BMenu("Tilde Trigger");
|
fTildeMenu = new BMenu("Tilde Trigger");
|
||||||
fTildeMenu->SetRadioMode(true);
|
fTildeMenu->SetRadioMode(true);
|
||||||
@@ -495,9 +483,9 @@ KeymapWindow::_CreateDeadKeyMenu()
|
|||||||
new BMessage(kMsgDeadKeyTildeChanged)));
|
new BMessage(kMsgDeadKeyTildeChanged)));
|
||||||
fTildeMenu->AddItem(new BMenuItem(kDeadKeyTriggerNone,
|
fTildeMenu->AddItem(new BMenuItem(kDeadKeyTriggerNone,
|
||||||
new BMessage(kMsgDeadKeyTildeChanged)));
|
new BMessage(kMsgDeadKeyTildeChanged)));
|
||||||
fDeadKeyMenu->AddItem(fTildeMenu);
|
deadKeyMenu->AddItem(fTildeMenu);
|
||||||
|
|
||||||
return menuBar;
|
return new BMenuField(NULL, deadKeyMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -633,8 +621,10 @@ KeymapWindow::_UpdateDeadKeyMenu()
|
|||||||
void
|
void
|
||||||
KeymapWindow::_UpdateButtons()
|
KeymapWindow::_UpdateButtons()
|
||||||
{
|
{
|
||||||
if (!fCurrentMap.Equals(fAppliedMap))
|
if (!fCurrentMap.Equals(fAppliedMap)) {
|
||||||
|
fCurrentMap.SetName(kCurrentKeymapName);
|
||||||
_UseKeymap();
|
_UseKeymap();
|
||||||
|
}
|
||||||
|
|
||||||
fRevertButton->SetEnabled(!fCurrentMap.Equals(fPreviousMap));
|
fRevertButton->SetEnabled(!fCurrentMap.Equals(fPreviousMap));
|
||||||
|
|
||||||
@@ -688,6 +678,7 @@ KeymapWindow::_RevertKeymap()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//! Saves current map to the "Key_map" file.
|
||||||
void
|
void
|
||||||
KeymapWindow::_UseKeymap()
|
KeymapWindow::_UseKeymap()
|
||||||
{
|
{
|
||||||
@@ -704,6 +695,7 @@ KeymapWindow::_UseKeymap()
|
|||||||
fAppliedMap.Load(ref);
|
fAppliedMap.Load(ref);
|
||||||
|
|
||||||
fCurrentMapName = _GetActiveKeymapName();
|
fCurrentMapName = _GetActiveKeymapName();
|
||||||
|
_SelectCurrentMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -792,7 +784,7 @@ KeymapWindow::_GetCurrentKeymap(entry_ref& ref)
|
|||||||
BString
|
BString
|
||||||
KeymapWindow::_GetActiveKeymapName()
|
KeymapWindow::_GetActiveKeymapName()
|
||||||
{
|
{
|
||||||
BString mapName = "(Current)"; // safe default
|
BString mapName = kCurrentKeymapName; // safe default
|
||||||
|
|
||||||
entry_ref ref;
|
entry_ref ref;
|
||||||
_GetCurrentKeymap(ref);
|
_GetCurrentKeymap(ref);
|
||||||
@@ -832,6 +824,5 @@ KeymapWindow::_SelectCurrentMap()
|
|||||||
&& !_SelectCurrentMap(fUserListView)) {
|
&& !_SelectCurrentMap(fUserListView)) {
|
||||||
// Select the "(Current)" entry if no name matches
|
// Select the "(Current)" entry if no name matches
|
||||||
fUserListView->Select(0L);
|
fUserListView->Select(0L);
|
||||||
fFirstTime = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
class BMenu;
|
class BMenu;
|
||||||
class BMenuBar;
|
class BMenuBar;
|
||||||
|
class BMenuField;
|
||||||
class BTextControl;
|
class BTextControl;
|
||||||
class KeyboardLayoutView;
|
class KeyboardLayoutView;
|
||||||
class KeymapListItem;
|
class KeymapListItem;
|
||||||
@@ -46,7 +47,7 @@ protected:
|
|||||||
void _UseKeymap();
|
void _UseKeymap();
|
||||||
void _RevertKeymap();
|
void _RevertKeymap();
|
||||||
|
|
||||||
BMenuBar* _CreateDeadKeyMenu();
|
BMenuField* _CreateDeadKeyMenuField();
|
||||||
void _UpdateDeadKeyMenu();
|
void _UpdateDeadKeyMenu();
|
||||||
|
|
||||||
void _FillSystemMaps();
|
void _FillSystemMaps();
|
||||||
@@ -66,7 +67,6 @@ protected:
|
|||||||
KeyboardLayoutView* fKeyboardLayoutView;
|
KeyboardLayoutView* fKeyboardLayoutView;
|
||||||
BTextControl* fTextControl;
|
BTextControl* fTextControl;
|
||||||
BButton* fSwitchShortcutsButton;
|
BButton* fSwitchShortcutsButton;
|
||||||
BMenu* fDeadKeyMenu;
|
|
||||||
BMenu* fAcuteMenu;
|
BMenu* fAcuteMenu;
|
||||||
BMenu* fCircumflexMenu;
|
BMenu* fCircumflexMenu;
|
||||||
BMenu* fDiaeresisMenu;
|
BMenu* fDiaeresisMenu;
|
||||||
@@ -76,7 +76,6 @@ protected:
|
|||||||
Keymap fCurrentMap;
|
Keymap fCurrentMap;
|
||||||
Keymap fPreviousMap;
|
Keymap fPreviousMap;
|
||||||
Keymap fAppliedMap;
|
Keymap fAppliedMap;
|
||||||
bool fFirstTime;
|
|
||||||
BString fCurrentMapName;
|
BString fCurrentMapName;
|
||||||
|
|
||||||
BFilePanel* fOpenPanel;
|
BFilePanel* fOpenPanel;
|
||||||
|
|||||||
Reference in New Issue
Block a user