AK
The definition and use of redefinable key accelerators



AK.h
#ifndef _AK_AK_h
#define _AK_AK_h
#include <CtrlLib/CtrlLib.h>
using namespace Upp;
#define KEYGROUPNAME "AK"
#define KEYNAMESPACE AKKeys
#define KEYFILE <AK/AK.key>
#include <CtrlLib/key_header.h>
#define KEYGROUPNAME "Setup"
#define KEYFILE <AK/Setup.key>
#include <CtrlLib/key_header.h>
class App : public TopWindow {
MenuBar menubar;
void Fn(String text);
void AkMenu(Bar& menu);
void SetupMenu(Bar& menu);
void MainMenu(Bar& menu);
void SetBar();
void SetLang(int lang);
public:
typedef App CLASSNAME;
App();
};
#endif
main.cpp
#include "AK.h"
#define KEYGROUPNAME "AK"
#define KEYNAMESPACE AKKeys
#define KEYFILE <AK/AK.key>
#include <CtrlLib/key_source.h>
using namespace AKKeys;
void App::Fn(String text)
{
PromptOK(text);
}
void App::AkMenu(Bar& menu)
{
menu.Add(AK_FN1, THISBACK1(Fn, "1"));
menu.Add(AK_FN2, THISBACK1(Fn, "2"));
menu.Add(AK_EXIT, THISBACK(Close));
}
void App::MainMenu(Bar& menu)
{
menu.Add("AK", THISBACK(AkMenu));
menu.Add(t_("Setup"), THISBACK(SetupMenu));
}
App::App()
{
SetLang(LNGC_('E','N','U','S', CHARSET_UTF8));
AddFrame(menubar);
menubar.Set(THISBACK(MainMenu));
Sizeable();
}
GUI_APP_MAIN
{
String keyfile = ConfigFile("keys.key");
RestoreKeys(LoadFile(keyfile));
App().Run();
SaveFile(keyfile, StoreKeys());
}
setup.cpp
#include "AK.h"
#define KEYGROUPNAME "Setup"
#define KEYFILE <AK/Setup.key>
#include <CtrlLib/key_source.h>
void App::SetLang(int lang)
{
SetLanguage(lang);
menubar.Set(THISBACK(MainMenu));
}
void App::SetupMenu(Bar& menu)
{
menu.Add(AK_ENGLISH, THISBACK1(SetLang, LNGC_('E','N','U','S', CHARSET_UTF8)))
.Radio(GetCurrentLanguage() == LNGC_('E','N','U','S', CHARSET_UTF8));
menu.Add(AK_CZECH, THISBACK1(SetLang, LNGC_('C','S','C','Z', CHARSET_UTF8)))
.Radio(GetCurrentLanguage() == LNGC_('C','S','C','Z', CHARSET_UTF8));
menu.Separator();
menu.Add(AK_KEYS, callback(EditKeys));
}
Setup.key
KEY(ENGLISH, t_("English"), K_CTRL_E)
KEY(CZECH, t_("Czech"), K_CTRL_R)
KEY(KEYS, t_("Setup keys"), K_CTRL_K)
Group1.key
KEY(UNTRANSLATED, "Untranslated", K_CTRL_U)
KEY(TRANSLATED, t_("Translated"), K_CTRL_S)
AK.key
KEY(FN1, "First function", K_CTRL_M)
KEY(FN2, t_("Second function"), K_CTRL_W)
KEY(EXIT, t_("Exit"), K_CTRL_Q)
|