mirror of
https://github.com/n5ac/mmsstv.git
synced 2025-12-06 04:12:03 +01:00
246 lines
6 KiB
C++
246 lines
6 KiB
C++
|
|
//Copyright+LGPL
|
|||
|
|
|
|||
|
|
//-----------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba
|
|||
|
|
//-----------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
// This file is part of MMSSTV.
|
|||
|
|
|
|||
|
|
// MMSSTV is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License
|
|||
|
|
// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
|||
|
|
|
|||
|
|
// MMSSTV is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|||
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
|||
|
|
|
|||
|
|
// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see
|
|||
|
|
// <http://www.gnu.org/licenses/>.
|
|||
|
|
//-----------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
//---------------------------------------------------------------------
|
|||
|
|
#include <vcl.h>
|
|||
|
|
#pragma hdrstop
|
|||
|
|
|
|||
|
|
#include "MmcgDlg.h"
|
|||
|
|
//---------------------------------------------------------------------
|
|||
|
|
#pragma resource "*.dfm"
|
|||
|
|
//TMmcgDlgBox *MmcgDlgBox;
|
|||
|
|
//---------------------------------------------------------------------
|
|||
|
|
__fastcall TMmcgDlgBox::TMmcgDlgBox(TComponent* AOwner)
|
|||
|
|
: TForm(AOwner)
|
|||
|
|
{
|
|||
|
|
FormStyle = ((TForm *)AOwner)->FormStyle;
|
|||
|
|
Font->Name = ((TForm *)AOwner)->Font->Name;
|
|||
|
|
Font->Charset = ((TForm *)AOwner)->Font->Charset;
|
|||
|
|
|
|||
|
|
if( MsgEng ){
|
|||
|
|
SBInc->Caption = "String";
|
|||
|
|
SBMask->Caption = "Area";
|
|||
|
|
CancelBtn->Caption = "Cancel";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_DisEvent = 0;
|
|||
|
|
}
|
|||
|
|
//---------------------------------------------------------------------
|
|||
|
|
void __fastcall TMmcgDlgBox::UpdateCaption(void)
|
|||
|
|
{
|
|||
|
|
char bf[256];
|
|||
|
|
|
|||
|
|
if( MsgEng ){
|
|||
|
|
if( mmcg.m_Call[0] ){
|
|||
|
|
sprintf(bf, "MMCG [%s] Find: %d", mmcg.m_Call, mmcg.m_FindCnt);
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
sprintf(bf, "MMCG Find: %d", mmcg.m_FindCnt);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
if( mmcg.m_Call[0] ){
|
|||
|
|
sprintf(bf, "MMCG [%s] <20><><EFBFBD><EFBFBD> : %d", mmcg.m_Call, mmcg.m_FindCnt);
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
sprintf(bf, "MMCG <20><><EFBFBD><EFBFBD>: %d", mmcg.m_FindCnt);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
Caption = bf;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//---------------------------------------------------------------------
|
|||
|
|
int __fastcall TMmcgDlgBox::Execute(AnsiString &call, AnsiString &qth, AnsiString &op)
|
|||
|
|
{
|
|||
|
|
StrCopy(mmcg.m_Call, call.c_str(), MLCALL);
|
|||
|
|
mmcg.SetMask();
|
|||
|
|
SBMask->Down = TRUE;
|
|||
|
|
if( mmcg.m_mask == -1 ) SBMask->Enabled = FALSE;
|
|||
|
|
|
|||
|
|
char bf[256];
|
|||
|
|
|
|||
|
|
bf[0] = 0;
|
|||
|
|
if( isdigit(*op.c_str()) ){
|
|||
|
|
strcpy(bf, op.c_str());
|
|||
|
|
}
|
|||
|
|
else if( !qth.IsEmpty() ){
|
|||
|
|
strcpy(bf, qth.c_str());
|
|||
|
|
}
|
|||
|
|
m_DisEvent++;
|
|||
|
|
EditYomi->Text = bf;
|
|||
|
|
mmcg.Find(bf);
|
|||
|
|
UpdateCaption();
|
|||
|
|
m_DisEvent--;
|
|||
|
|
Grid->RowCount = mmcg.m_FindCnt ? mmcg.m_FindCnt + 1 : 2;
|
|||
|
|
if( ShowModal() == IDOK ){
|
|||
|
|
int n = Grid->Row - 1;
|
|||
|
|
if( (n >= 0)&&(n < mmcg.m_FindCnt) ){
|
|||
|
|
qth = mmcg.GetQTH(mmcg.m_fp[n]);
|
|||
|
|
op = mmcg.m_fp[n]->Code;
|
|||
|
|
return TRUE;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return FALSE;
|
|||
|
|
}
|
|||
|
|
//---------------------------------------------------------------------------
|
|||
|
|
void __fastcall TMmcgDlgBox::GridDrawCell(TObject *Sender, int Col,
|
|||
|
|
int Row, TRect &Rect, TGridDrawState State)
|
|||
|
|
{
|
|||
|
|
char bf[256];
|
|||
|
|
MMCG *mp;
|
|||
|
|
|
|||
|
|
Grid->Canvas->FillRect(Rect);
|
|||
|
|
int X = Rect.Left + 4;
|
|||
|
|
int Y = Rect.Top + 2;
|
|||
|
|
|
|||
|
|
if( Row ){
|
|||
|
|
Row--;
|
|||
|
|
bf[0] = 0;
|
|||
|
|
if( Row < mmcg.m_FindCnt ){
|
|||
|
|
mp = mmcg.m_fp[Row];
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
mp = NULL;
|
|||
|
|
}
|
|||
|
|
switch(Col){
|
|||
|
|
case 0: // Code
|
|||
|
|
if( mp != NULL ) strcpy(bf, mp->Code);
|
|||
|
|
break;
|
|||
|
|
case 1: // QTH
|
|||
|
|
if( mp != NULL ) strcpy(bf, mmcg.GetQTH(mp));
|
|||
|
|
break;
|
|||
|
|
case 2: // Key
|
|||
|
|
if( mp != NULL ) strcpy(bf, mp->Key);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
Grid->Canvas->TextOut(X, Y, bf);
|
|||
|
|
}
|
|||
|
|
else { // <20>^<5E>C<EFBFBD>g<EFBFBD><67>
|
|||
|
|
LPCSTR _tt[]={
|
|||
|
|
"Code","QTH","Key",
|
|||
|
|
};
|
|||
|
|
Grid->Canvas->TextOut(X, Y, _tt[Col]);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
//---------------------------------------------------------------------------
|
|||
|
|
void __fastcall TMmcgDlgBox::EditYomiChange(TObject *Sender)
|
|||
|
|
{
|
|||
|
|
if( m_DisEvent ) return;
|
|||
|
|
|
|||
|
|
char bf[256];
|
|||
|
|
|
|||
|
|
strcpy(bf, AnsiString(EditYomi->Text).c_str()); //ja7ude 0428
|
|||
|
|
mmcg.Find(bf);
|
|||
|
|
UpdateCaption();
|
|||
|
|
Grid->RowCount = mmcg.m_FindCnt ? mmcg.m_FindCnt + 1 : 2;
|
|||
|
|
Grid->Invalidate();
|
|||
|
|
}
|
|||
|
|
//---------------------------------------------------------------------------
|
|||
|
|
void __fastcall TMmcgDlgBox::EditYomiKeyPress(TObject *Sender, char &Key)
|
|||
|
|
{
|
|||
|
|
if( Key == 0x20 ){
|
|||
|
|
EditYomi->Text = "";
|
|||
|
|
Key = 0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
//---------------------------------------------------------------------------
|
|||
|
|
void __fastcall TMmcgDlgBox::EditYomiKeyDown(TObject *Sender, WORD &Key,
|
|||
|
|
TShiftState Shift)
|
|||
|
|
{
|
|||
|
|
switch(Key){
|
|||
|
|
case VK_UP:
|
|||
|
|
if( Grid->Row >= 2 ) Grid->Row--;
|
|||
|
|
Key = 0;
|
|||
|
|
break;
|
|||
|
|
case VK_DOWN:
|
|||
|
|
if( Grid->Row < Grid->RowCount - 1 ) Grid->Row++;
|
|||
|
|
Key = 0;
|
|||
|
|
break;
|
|||
|
|
case VK_HOME:
|
|||
|
|
Grid->Row = 1;
|
|||
|
|
Key = 0;
|
|||
|
|
break;
|
|||
|
|
case VK_END:
|
|||
|
|
Grid->Row = Grid->RowCount - 1;
|
|||
|
|
Key = 0;
|
|||
|
|
break;
|
|||
|
|
case VK_F1:
|
|||
|
|
SBInc->Down = SBInc->Down ? 0 : 1;
|
|||
|
|
SBIncClick(NULL);
|
|||
|
|
Key = 0;
|
|||
|
|
break;
|
|||
|
|
case VK_F2:
|
|||
|
|
SBMask->Down = SBMask->Down ? 0 : 1;
|
|||
|
|
SBMaskClick(NULL);
|
|||
|
|
Key = 0;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
//---------------------------------------------------------------------------
|
|||
|
|
void __fastcall TMmcgDlgBox::EditYomiKeyUp(TObject *Sender, WORD &Key,
|
|||
|
|
TShiftState Shift)
|
|||
|
|
{
|
|||
|
|
switch(Key){
|
|||
|
|
case VK_UP:
|
|||
|
|
Key = 0;
|
|||
|
|
break;
|
|||
|
|
case VK_DOWN:
|
|||
|
|
Key = 0;
|
|||
|
|
break;
|
|||
|
|
case VK_HOME:
|
|||
|
|
Key = 0;
|
|||
|
|
break;
|
|||
|
|
case VK_END:
|
|||
|
|
Key = 0;
|
|||
|
|
break;
|
|||
|
|
case VK_F1:
|
|||
|
|
Key = 0;
|
|||
|
|
break;
|
|||
|
|
case VK_F2:
|
|||
|
|
Key = 0;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
//---------------------------------------------------------------------------
|
|||
|
|
void __fastcall TMmcgDlgBox::SBMaskClick(TObject *Sender)
|
|||
|
|
{
|
|||
|
|
if( SBMask->Down ){
|
|||
|
|
mmcg.SetMask();
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
mmcg.m_mask = -1;
|
|||
|
|
}
|
|||
|
|
EditYomiChange(NULL);
|
|||
|
|
}
|
|||
|
|
//---------------------------------------------------------------------------
|
|||
|
|
void __fastcall TMmcgDlgBox::SBIncClick(TObject *Sender)
|
|||
|
|
{
|
|||
|
|
if( SBInc->Down ){
|
|||
|
|
mmcg.m_sinc = 1;
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
mmcg.m_sinc = 0;
|
|||
|
|
}
|
|||
|
|
EditYomiChange(NULL);
|
|||
|
|
}
|
|||
|
|
//---------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
|