home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1998 March
/
VPR9803B.ISO
/
APUPDATE
/
VC
/
Tx300b
/
TX300B.LZH
/
CONFIG.C
< prev
next >
Wrap
Text File
|
1997-06-16
|
139KB
|
4,345 lines
// WZ EDITOR 標準機能 設定
// Copyright 1996 TY
// TX-C source program
//2.95 970125 設定ダイアログとカスタマイズダイアログを分離
//2.99 970319 表示フォントの指定を仕様変更して改良
//2.99 970320 印刷時のプロポーショナルON/OFFは画面表示に合わせる
#include <windows.h>
#include <windowsx.h>
#include "_filer.h"
#import "dialog"
#import "search"
#import "custmize"
extern "tx" BOOL TXAPI txSaveOption(tx* text);
extern "tx" BOOL TXAPI shcfgSave(tx* text);
static mchar _szcfgStd[] = SZCFG_STD; // "標準"設定
static void contextFromText(TX* text);
#define IDD_FONTKINDSTD 2000
#define IDD_FONTKINDANK 2001
#define IDD_PROP 2002
#define IDD_KINSOKU_ANK 2003
#define IDD_STYLE 2004
#define IDD_STYLEEDIT 2005
#define IDD_SAVE 2006
#define IDD_WIDTH 2007
#define IDD_DELETE 2010
#define IDD_VERTICAL 2011 // 2012も使用
#define IDD_LOAD 2015
#define IDD_MENUBAR 2016
#define IDD_MENUMOUSER 2017
#define IDD_MENUMOUSERCLIP 2018
#define IDD_KEY 2019
#define IDD_TOOLBAR 2020
#define IDD_PLUG 2021
#define IDD_STYLERESET 2022
#define IDD_PREVIEW 2023
#define IDD_PREVIEW2 2024
#define IDD_PREVIEW3 2025
#define IDD_HELP 2026
#define IDD_DETAIL 2027
#define IDD_CONFIGBASE 2028
#define IDD_EXTLIST 2029
#define IDD_UPDATEALL 2030
#define IDD_INIT 2031
#define IDD_PRINTERFONT 2033
#define IDD_SAVETO 2034
#define IDD_TEMP 2035
#define IDD_STYLEPREVIEW 2038
#define IDD_STYLEPREVIEWALWAYS 2039
#define IDD_NEW 2040 //2.00E2
#define IDD_COLORPARSE 2041
#define IDD_CUSTKEY 2042
#define IDD_CUSTMENUBAR 2043
#define IDD_CUSTCONTEXTMENU 2044
#define IDD_CUSTCONTEXTMENUSELECT 2045
#define IDD_CUSTTOOLBAR 2046
#define IDD_FONTDETAIL 2047
#define IDD_FORMATSTR 2048
#define IDD_ANK 2049
#define IDD_NEWKEYWORDFILE 2050
#define IDD_EDITKEYWORD 2051
#define IDD_SAVEAS 2052
#define IDD_KEYWORDNAME 2053
#define IDD_AUTOCORRECT 2054
#define IDD_WESTERN 2055 // 2056,2057も使用
#define IDD_WIDTHMODE 2058 // 2059,2060も使用
#define IDD_MYCOLOR 2070 //2.99C 970326
#define IDD_CUST_COLOR 2071 //2.99C 970326
#define IDD_CUSTSPEAK 2072 //3.00A5 970511
#define IDD_CUST_COLOR_VIEWMODE 2073//3.00B1 970613
#define IPAGE_FORM 0
#define IPAGE_DISPLAY 1
#define IPAGE_COLOR 2
#define IPAGE_WINDOW 3
#define IPAGE_FILE 4
#define IPAGE_EDIT 5
#define IPAGE_SEARCH 6
#define IPAGE_FORMDT 7
#define IPAGE_HELP 8
//
#define IPAGE_STYLE 9
#define IPAGE_VIEWMODE 10 //3.00B1 970613
//
#define IPAGE_CUST_TOP 11 // 次行のIDと同じ
#define IPAGE_CUST_FILE 11
#define IPAGE_CUST_SAVE 12
#define IPAGE_CUST_EDIT 13
#define IPAGE_CUST_COLOR 14
#define IPAGE_CUST_SEARCH 15
#define IPAGE_CUST_SCROLL 16
#define IPAGE_CUST_KINSOKU 17
#define IPAGE_CUST_COMPATI 18
#define IPAGE_CUST_KEY 19
#define IPAGE_CUST_MENU 20
#define IPAGE_CUST_TOOLBAR 21
#define IPAGE_CUST_MOUSE 22
#define IPAGE_CUST_MACRO 23
#define IPAGE_CUST_MACRODEV 24
#define IPAGE_CUST_STATBAR 25
#define IPAGE_CUST_WINDOW 26
#define IPAGE_CUST_OTHER 27
#define IPAGE_CUST_END 27 // 前行のIDと同じ
#define IPAGE_N 28
#define IPAGE_CUST_COLORSUB 99 //2.99C 970326 special
#define IPAGES_CONFIG 100
#define IPAGES_CUSTMIZE 101
static int _ipageMode;
//{###設定}
keyEdit
{
// キー定義ファイルの編集
mchar szfilename[CCHPATHNAME];
pathFullConfig(szfilename,"wz.key");//2.00E
txOpenForkExFast(text,szfilename);
}
menuEdit
{
// ユーザメニュー定義ファイルの編集
mchar szfilename[CCHPATHNAME];
pathFullConfig(szfilename,"wz.mnu");//2.00E
txOpenForkExFast(text,szfilename);
}
toolbarEdit
{
// ツールバー定義ファイルの編集
mchar szfilename[CCHPATHNAME];
pathFullConfig(szfilename,"wz.bar");//2.00E
txOpenForkExFast(text,szfilename);
}
// 設定ダイアログ
//{###設定}
typedef struct {
TX _text;
TX* text;
TX* textf; //2.91
TX _text0; //2.95 970127 for 設定が変更されたかどうか調べる
BOOL fEnglish0;//2.99D 970328
TXCONFIGSHARE shcfg;
SEARCHOPT searchopt;
BYTE autosaveDevice;
BYTE autosaveMode;
BYTE autosaveAtQuit;
BYTE autosaveAtOpen;
BBOOL fAfArticleDisc;//2.98 970309
BBOOL fAfTitle;//2.98 970309
BBOOL fInlineformScenario;//2.99 970319
BBOOL fInlineformIndentSpace;//2.99 970319
BBOOL fInlineformQueryQuit;//3.00A2 970507
BYTE modeInlineformZenhanSpace;//3.00A2 970507
BYTE modeInlineformWordlap;//3.00A2 970507
BYTE lcxInlineformIndentTogaki;//3.00A2 970507
BYTE lcxInlineformIndentSerifu;//3.00A2 970507
BYTE modeWidth;//2.99A 970321
int width;//2.99A 970321
BOOL fWzconfig;
BOOL fDummy1; //2.00B
BOOL fEdit; //2.00B
BYTE head_tfBold[TITLE_N];
BYTE head_tfUnderline[TITLE_N];
BYTE head_tfItalic[TITLE_N];
BYTE head_tmodeAlign[TITLE_N];
BYTE head_nline[TITLE_N];
BOOL fPreviewStyle; //2.00C スタイルのプレビューが表示されなかった
BOOL fPreviewStyleAlways; //2.00C 常にプレビューを表示
BOOL ret; //2.00E2 __dialogConfigの返り値
} CONFIGCONTEXT;
static CONFIGCONTEXT context;
permanent BOOL _fConfigShare;
permanent BOOL _fPrinterFontOnly;
static BOOL _fPrint;
static BOOL _fNoFlush;
//2.00B 位置を覚える
static BOOL _fWindowPos = FALSE;
static int _x;
static int _y;
static void contextToText(tx* text)
{
txCopyConfig(text,context.text);
text->autosaveDevice = context.autosaveDevice;
text->autosaveMode = context.autosaveMode;
text->autosaveAtQuit = context.autosaveAtQuit;
text->autosaveAtOpen = context.autosaveAtOpen;
text->fAfArticleDisc = context.fAfArticleDisc;//2.98 970309
text->fInlineformScenario = context.fInlineformScenario;//2.99 970319
text->fInlineformIndentSpace = context.fInlineformIndentSpace;//2.99 970319
text->fInlineformQueryQuit = context.fInlineformQueryQuit;//3.00A2 970507
text->modeInlineformZenhanSpace = context.modeInlineformZenhanSpace;//3.00A2 970507
text->modeInlineformWordlap = context.modeInlineformWordlap;//3.00A2 970507
text->lcxInlineformIndentTogaki = context.lcxInlineformIndentTogaki;//3.00A2 970507
text->lcxInlineformIndentSerifu = context.lcxInlineformIndentSerifu;//3.00A2 970507
text->fAfTitle = context.fAfTitle;//2.98 970309
#if 1//2.99A 970321 折り返し幅は、「文字数と行数を指定する」以外を選んでも保存するようにした
#if 1//2.99A 970321
text->tmodeWidth[text->dispstylemode] = context.modeWidth;
text->twidth[text->dispstylemode] = text->width = context.width;
#else
text->fSetWidthByWindow = (context.modeWidth == 0);
text->fSetWidthByLp = (context.modeWidth == 1);
text->tmodeWidth[text->dispstylemode] = context.modeWidth;
#endif
#endif
text->searchmodeInit = searchmodeFromSearchopt(&context.searchopt);
if (context.text->tFontstyle) {
memcpy(text->tFontstyle,context.text->tFontstyle,SIZE_TFONTSTYLE);
{
int i;
for (i = 0;i < TITLE_N;i++) {
FONTSTYLE* fs = &text->tFontstyle[FONTTX_H1 + i];
{
int nline = context.head_nline[i];
fs->perNline = nline ? nline * 50 + 50 : 0;
}
fs->fBold = context.head_tfBold[i];
fs->fUnderline = context.head_tfUnderline[i];
fs->fItalic = context.head_tfItalic[i];
//
fs->modeAlign = context.head_tmodeAlign[i];
}
}
}
strcpy(text->szKey,context.shcfg.szenvkey);
{
int i;
for (i = 0;i < FORMAT_N;i++) {
strfromesc(text->tszformat[i]);
}
for (i = 0;i < TITLE_N;i++) {//3.00B1 970612 見出しに'\'を指定できなかった
strfromesc(text->tsztitle[i]);
}
}
}
static void getcaption(TX* text,mchar buff[CCHPATHNAME])
{
//3.00A5 970511 引数text追加
//2.00B "(表示スタイル1)"の表示はわかりにくい
// (印刷の設定ができないと思われる)ので廃止
if (_fPrint) {
#if 1//2.00E2
sprintf(buff,"スタイルシートの設定 - %s - 本文フォントと見出しフォント",text->lp->szstyle);
#else
strcpy(buff,"本文フォントと見出しフォント");
#endif
} else {
mchar szcfgname[CCHNAME];//2.00E2
#if 1//3.00A5 970511 WZ文書ファイルの設定名は、ファイル名を表示するようにした
#if 1//3.00A6 970512 印刷スタイルの設定からの本文、見出しフォントの設定ダイアログ呼び出しのキャプション名改良。個別設定のキャプションに対応
mchar* szGuide = "文書の設定 - %s / カスタマイズ - 共通";
if (_ipageMode == IPAGE_STYLE) szGuide = "文書の設定 - %s - 本文フォントと見出しフォント";
if (_ipageMode == IPAGES_CONFIG) szGuide = "文書の設定 - %s";
if (_ipageMode == IPAGES_CUSTMIZE) szGuide = "カスタマイズ - 共通 / [ ]付きの項目:%sの設定";
sprintf(
buff,szGuide,
text->fWztext ? (text->szfilename[0] ? pathGetFileName(text->szfilename) : "WZ文書ファイル(無題)") : txConfigOp(text,TXCONFIGOP_EXTGETNAME,szcfgname)
);
#else
sprintf(
buff,
((_ipageMode == IPAGES_CONFIG) ? "文書の設定 - %s" : "カスタマイズ - 共通 / [ ]付きの項目:%sの設定"),//3.00A3 970508 カスタマイズダイアログのキャプションを改良
text->fWztext ? (text->szfilename[0] ? pathGetFileName(text->szfilename) : "WZ文書ファイル(無題)") : txConfigOp(text,TXCONFIGOP_EXTGETNAME,szcfgname)
);
#endif
#else
sprintf(
buff,
((_ipageMode == IPAGES_CONFIG) ? "文書の設定 - %s" : "カスタマイズ - 共通 / [ ]付きの項目:%sの設定"),//3.00A3 970508 カスタマイズダイアログのキャプションを改良
txConfigOp(text,TXCONFIGOP_EXTGETNAME,szcfgname)
);
#endif
#if 0//3.00B1 970613
if (txGetViewmode(text)) {//2.00E4
if (stricmp(szcfgname,"ビューモード")) {
strcat(buff,"/ビューモード");
}
}
#endif
if (text->fConfigsavePrim) {//2.00E2
// '/'の後の名前を付けて保存される場合
txConfigOp(text,TXCONFIGOP_EXTGETNAMEPRIM,szcfgname);
sprintf(buff+strlen(buff),"/%s",szcfgname);
}
}
}
static void DoCaption(HWND hwnd)
{
mchar buff[CCHPATHNAME];
getcaption(context.textf,buff);
SetWindowText(hwnd,buff);
}
//
// 設定
//
static int tidPrintFontStd[FONTTX_N];
static int tidPrintFontAnk[FONTTX_N];
//2.98 970307「表示」タブのフォントと「高度なフォントの指定」タブのフォントが入り乱れていた
// 以下、0なら無効。ダイアログを閉じたら0に初期化する。
static int idFontBase;//2.98 970307 「表示」タブのフォント
//2.98 970307 以下、「高度なフォントの指定」タブのフォント
static int idFontStd;
static int idFontAnk;
//##
static BOOL isexist3d(void)
{
BOOL ret = TRUE;
SetErrorMode(SEM_NOOPENFILEERRORBOX);
{
#ifdef __FLAT__
HINSTANCE hlib = LoadLibrary("CTL3D32.DLL");
#else
HINSTANCE hlib = LoadLibrary("CTL3DV2.DLL");
#endif
if (hlib < HINSTANCE_ERROR) {
ret = FALSE;
}
FreeLibrary(hlib);
}
return ret;
}
static mchar* _szGuideStdFont = "全角フォント(&F):";
#if 0//2.99C 970323
static void EnableDlgItem(HWND hwnd,int id,BOOL fEnable)
{
//2.96 970208
HWND hctrl = GetDlgItem(hwnd,id);
if (hctrl) EnableWindow(hctrl,fEnable);
}
#endif
static void EnableFontkindInit(HDIALOG hd,int id)
{
if (id) {
FONTNAMES* fontnames = fontnamesFromId(hd,id);
if (fontnames) {
fontnames->lfCharSet = SHIFTJIS_CHARSET;
fontnamesFlush(fontnames);
}
}
}
// フォント初期化
static void EnableFontkind(HWND hwnd,BOOL lfProp,BOOL lfWestern)
{
SetDlgItemText(hwnd,IDD_FONTKINDSTD,_szGuideStdFont);
{
HDIALOG hd = dialogFromHwndPshpage(hwnd);
EnableFontkindInit(hd,idFontStd);
EnableFontkindInit(hd,idFontBase);
}
BOOL fEnableAnk = TRUE;
EnableDlgItem(hwnd,IDD_FONTKINDANK,fEnableAnk);
if (idFontAnk) {
EnableDlgItem(hwnd,idFontAnk,fEnableAnk);
EnableDlgItem(hwnd,idFontAnk + 1,fEnableAnk);
}
#if 0 //2.00E2 プロポーショナルoffでも英字禁則できるようにした
EnableDlgItem(hwnd,IDD_KINSOKU_ANK,lfProp);
#endif
}
//##
static int _ipageNow;
static int _ipageConfig;
static int _ipageCustmize;
static int _tLogicalPage[IPAGE_N]; // 物理ページ番号と論理ページ番号の対応表
// 物理ページ番号を論理ページ番号に変換
static int ipageLogical(int ipage)
{
return _tLogicalPage[ipage];
}
static void fontsel(HDIALOG hd,TX* text,int ifonttx,BOOL fHigh)
{
FONTSTYLE* tfs = text->tFontstyle;
if (tfs) {
FONTSTYLE* fs = tfs + ifonttx;
SELFONTARG arg;
memset(&arg,0,sizeof(arg));
arg.lfPitch = DEFAULT_PITCH;
dialogSetH(hd);
dialogSetIntXY(hd,DTCXINT,0);
//
if (fHigh) {
dialogControlID(hd,IDD_FONTKINDSTD);
dialogCaption(hd,_szGuideStdFont);
} else {
dialogCaption(hd,"フォント(&F):");
}
arg.lfCharSet = SHIFTJIS_CHARSET;
dialogControlHelp(hd,276);
int id = dialogSelectFont(hd,NULL,0,
fs->tlfFaceName[IFONT_STD],
&fs->tlfHeight[IFONT_STD],
&arg
);
if (fHigh) {
idFontStd = id;
} else {
idFontBase = id;
}
dialogLF(hd);
dialogSpaceV(hd);
if (fHigh) {
dialogControlID(hd,IDD_FONTKINDANK);
dialogControlHelp(hd,277);
dialogCaption(hd,"半角フォント(&E):");
arg.lfCharSet = DEFAULT_CHARSET;
arg.fEnableDefaultFaceName = TRUE;//2.99 970320
arg.fEnableDefaultHeight = TRUE;
idFontAnk = dialogSelectFont(hd,NULL,0,
fs->tlfFaceName[IFONT_ANK],
&fs->tlfHeight[IFONT_ANK],
&arg
);
dialogLF(hd);
dialogSpaceV(hd);
}
dialogSetV(hd);
dialogResetInt(hd);
}
}
static void dialogGroupEndCheckB(HDIALOG hd,mchar *szcaption,BBOOL *data)
{
DTRECT r;
dialogGroupEndGetRect(hd,&r);
DTRECT r1 = r;
r.x += DTCX;
dialogSetPos(hd,&r);
dialogCheckB(hd,szcaption,data);
r1.y += r1.cy;
dialogSetPos(hd,&r1);
}
static int dialogSelectColor(HDIALOG hd,mchar* szCaption,BYTE* data,int wCaption,int wData)
{
return dialogSelectIDB(
hd,szCaption,data,wCaption,wData,
"なし","太字","下線","太字・下線","色分け","色分け・太字","色分け・下線","色分け・太字・下線"
);
}
static int dialogColorParse(TX* text)
{
HDIALOG hd = dialog("高度な色分け");
int lcx2 = 20;
DTRECT r1;
switch(text->filekind) {
case TEXT_C: {
dialogGroup(hd,"Cプログラムの色分け");
dialogControlHelp(hd,30);
dialogCheckB(hd,"C言語字句を色分け表示する(&P)",&text->fDispParse);
dialogSetH(hd);
dialogControlHelp(hd,31);
dialogColor(hd,"文字列の色(&S)...","文字列の色",&text->rgbString,lcx2,NULL);
dialogControlHelp(hd,32);
dialogColor(hd,"定数の色(&C)...","定数の色",&text->rgbConst,lcx2,NULL);
dialogLF(hd);
dialogControlHelp(hd,33);
dialogColor(hd,"コメントの色(&O)...","コメントの色",&text->rgbComment,lcx2,NULL);
dialogControlHelp(hd,34);
dialogColor(hd,"プリプロセッサの色(&R)...","プリプロセッサコマンド行の色",&text->rgbPreprocessor,lcx2,NULL);
#if 0//2.95 970128 エラーは今のところ判別しない
dialogLF(hd);
dialogControlHelp(hd,35);
dialogColor(hd,"エラー文字の色(&E)...","エラー文字列の色",&text->rgbErrorChar,lcx2,NULL);
#endif
dialogGroupEnd(hd);
break;
}
#if 1 //2.99D 970331 ASM,BASICの高度な色分けがなかった
case TEXT_PASCAL:
case TEXT_FORTRAN:
case TEXT_SCRIPT:
case TEXT_ASM:
case TEXT_BASIC: {
mchar* sz = "";
switch(text->filekind) {
case TEXT_PASCAL: sz = "pascal";break;
case TEXT_FORTRAN: sz = "FORTRAN";break;
case TEXT_SCRIPT: sz = "スクリプト";break;
case TEXT_ASM: sz = "アセンブラ";break;
case TEXT_BASIC: sz = "BASIC";break;
}
dialogGroup(hd,sz + "プログラムの色分け");
dialogControlHelp(hd,30);
dialogCheckB(hd,sz + "言語字句を色分け表示する(&P)",&text->fDispParse);
dialogControlHelp(hd,31);
dialogColor(hd,"文字列の色(&S)...","文字列の色",&text->rgbString,lcx2,NULL);
dialogControlHelp(hd,32);
dialogColor(hd,"定数の色(&C)...","定数の色",&text->rgbConst,lcx2,NULL);
dialogControlHelp(hd,33);
dialogColor(hd,"コメントの色(&O)...","コメントの色",&text->rgbComment,lcx2,NULL);
dialogGroupEnd(hd);
break;
}
#else
case TEXT_PASCAL: {
dialogGroup(hd,"pascalプログラムの色分け");
dialogControlHelp(hd,30);
dialogCheckB(hd,"pascal言語字句を色分け表示する(&P)",&text->fDispParse);
dialogControlHelp(hd,31);
dialogColor(hd,"文字列の色(&S)...","文字列の色",&text->rgbString,lcx2,NULL);
dialogControlHelp(hd,32);
dialogColor(hd,"定数の色(&C)...","定数の色",&text->rgbConst,lcx2,NULL);
dialogControlHelp(hd,33);
dialogColor(hd,"コメントの色(&O)...","コメントの色",&text->rgbComment,lcx2,NULL);
dialogGroupEnd(hd);
break;
}
case TEXT_FORTRAN: {
dialogGroup(hd,"FORTRANプログラムの色分け");
dialogControlHelp(hd,30);
dialogCheckB(hd,"FORTRAN言語字句を色分け表示する(&P)",&text->fDispParse);
dialogControlHelp(hd,31);
dialogColor(hd,"文字列の色(&S)...","文字列の色",&text->rgbString,lcx2,NULL);
dialogControlHelp(hd,32);
dialogColor(hd,"定数の色(&C)...","定数の色",&text->rgbConst,lcx2,NULL);
dialogControlHelp(hd,33);
dialogColor(hd,"コメントの色(&O)...","コメントの色",&text->rgbComment,lcx2,NULL);
dialogGroupEnd(hd);
break;
}
case TEXT_SCRIPT: {
dialogGroup(hd,"スクリプトプログラムの色分け");
dialogControlHelp(hd,30);
dialogCheckB(hd,"スクリプト言語字句を色分け表示する(&P)",&text->fDispParse);
dialogControlHelp(hd,31);
dialogColor(hd,"文字列の色(&S)...","文字列の色",&text->rgbString,lcx2,NULL);
dialogControlHelp(hd,32);
dialogColor(hd,"定数の色(&C)...","定数の色",&text->rgbConst,lcx2,NULL);
dialogControlHelp(hd,33);
dialogColor(hd,"コメントの色(&O)...","コメントの色",&text->rgbComment,lcx2,NULL);
dialogGroupEnd(hd);
break;
}
#endif
case TEXT_HTML: {
#if 1//2.99H 970405 HTML高度な色分け改良
if (text->editmode) {
dialogSetGroupRight(hd,DTCX * 40);
dialogGroup(hd,"タグ・文字列の色分け");
dialogControlHelp(hd,178);
dialogCheckB(hd,"タグ・文字列を色分け表示する(&P)",&text->fDispParse);
dialogControlHelp(hd,179);
dialogColor(hd,"タグの色(&T)...","タグの色",&text->rgbErrorChar,lcx2,NULL);
dialogControlHelp(hd,31);
dialogColor(hd,"文字列の色(&L)...","文字列の色",&text->rgbString,lcx2,NULL);
dialogGroupEnd(hd);
//
dialogGroup(hd,"部位の色");
dialogControlHelp(hd,180);
dialogColor(hd,"ホットテキストの色(&H)...","ホットテキストの色",&text->rgbHottext,lcx2,NULL);
dialogControlHelp(hd,181);
dialogColor(hd,"イタリックの色(&I)...","イタリック装飾がかかっている文字の色",&text->rgbConst,lcx2,NULL);
dialogControlHelp(hd,182);
dialogColor(hd,"フォントサイズの色(&F)...","フォントサイズが変更されている文字の色",&text->rgbPreprocessor,lcx2,NULL);
dialogGroupEnd(hd);
} else {
dialogGroup(hd,"タグ・文字列の色分け");
dialogControlHelp(hd,178);
dialogCheckB(hd,"タグ・文字列を色分け表示する(&P)",&text->fDispParse);
dialogControlHelp(hd,179);
dialogColor(hd,"タグの色(&T)...","タグの色",&text->rgbErrorChar,lcx2,NULL);
dialogControlHelp(hd,31);
dialogColor(hd,"文字列の色(&L)...","文字列の色",&text->rgbString,lcx2,NULL);
dialogGroupEnd(hd);
}
#else
dialogGroup(hd,"色分け");
#if 0//2.99D 970331
if (text->editmode) {
dialogSetH(hd);
dialogControlHelp(hd,180);
dialogColor(hd,"リンクの色(&L)...","リンクが張られた文字列の色",&text->rgbString,lcx2,NULL);
dialogControlHelp(hd,181);
dialogColor(hd,"イタリックの色(&I)...","イタリック装飾がかかっている文字の色",&text->rgbConst,lcx2,NULL);
dialogLF(hd);
dialogControlHelp(hd,182);
dialogColor(hd,"フォントサイズの色(&F)...","フォントサイズが変更されている文字の色",&text->rgbPreprocessor,lcx2,NULL);
dialogControlHelp(hd,183);
dialogColor(hd,"コメントの色(&C)...","コメントの色",&text->rgbComment,lcx2,NULL);
dialogLF(hd);
dialogSetV(hd);
dialogCaption(hd,0);
dialogCaption(hd,0);
} else {
#endif
dialogControlHelp(hd,178);
dialogCheckB(hd,"タグを色分け表示する(&P)",&text->fDispParse);
dialogControlHelp(hd,179);
dialogColor(hd,"タグの色(&T)...","タグの色",&text->rgbErrorChar,lcx2,NULL);
dialogCaption(hd,0);
dialogCaption(hd,0);
dialogCaption(hd,0);
#if 0//2.99D 970331
}
#endif
dialogGroupEnd(hd);
#endif
break;
}
default: {
dialogGroup(hd,"色分け");
dialogControlHelp(hd,177);
dialogCheckB(hd,"文字列の色分け表示(&P)",&text->fDispParse);
dialogControlHelp(hd,31);
dialogColor(hd,"\"文字列\"の色(&S)...","\"文字列\"の色",&text->rgbString,lcx2,NULL);
dialogGroupEnd(hd);
dialogGroup(hd,"文字装飾の色分け");
//2.00B イタリック文字の色分けを指定できるようにした
dialogControlHelp(hd,181);
dialogColor(hd,"イタリック装飾(&I)...","イタリック装飾がかかっている文字の色",&text->rgbConst,lcx2,NULL);
dialogGroupEnd(hd);
break;
}
}
return dialogOpen(hd);
}
static int dialogAddPreview(HDIALOG hd,int id,int lcy)
{
dialogSetIntXY(hd,0,0);
if (id == IDD_EDITKEYWORD) {
dialogCaption(hd,"キーワード:");
} else {
dialogCaption(hd,"プレビュー:");
}
DTRECT r;
dialogGetPos(hd,&r);
r.cx = DTCX * 59;
#if 1//2.99C 970326 WZ32:VGAで大きすぎた
r.cy = DTCY * lcy + _fwin40 * ((DTCY * lcy) / 3);
#else
r.cy = DTCY * (lcy + _fwin40 * lcy / 2);
#endif
DWORD ws = TXWS_TEXT|TXWS_OPENTEXT|WS_VSCROLL|WS_BORDER|WS_CHILD|WS_VISIBLE;
if (id == IDD_EDITKEYWORD) ws |= WS_TABSTOP|TXWS_ENABLEUNDO;
int ret = __dialogAddItem(hd,TXWS_SZCLASS,"",id,&r,ws);
dialogResetInt(hd);
return ret;
}
static BOOL _fInTxuser; //2.95 970127 再入防止
static void myPostMessage(HWND hwnd,int message,WPARAM wParam,LPARAM lParam)
{
MSG msg;
if (_fInTxuser) return;
if (PeekMessage(&msg,hwnd,message,message,PM_NOREMOVE)) {
//2.00B 設定ダイアログの[スタイル]タブのプレビューに異様に時間がかかった
// 既にポストされている場合は、ポストしない
} else {
PostMessage(hwnd,message,wParam,lParam);
}
}
static void FlushPreview(HWND hwnd,int id)
{
#if 0//2.00C
if (context.fPageChanging) return;//1.99C ページ切り替え中は描画しない。ちらつき防止
#endif
HDIALOG hd = dialogFromHwnd(hwnd);
HWND hctrl = GetDlgItem(hwnd,id);
TX* text = (LPVOID)SendMessage(hctrl,TXWM_GETTX,0,0);
if (text) {
TX* text1 = txGetFrameNow();//2.99C 970324
BOOL fInit = (txGetTextSize(text) == 0);
text->fNoCursor = TRUE; //2.00B 設定ダイアログでマウスカーソルがちらついたのを改善
txSetUndisp(text);
//
dialogRead(hd);
contextToText(text);
// default
text->fScrollBarV = TRUE;
text->fScrollBarH = FALSE;
text->fCursorMoveBySB = FALSE;
text->fNoPrinterFont = TRUE;//1.99C スタイルのプレビュー時は印刷フォント不要。高速化
text->fOutline = FALSE;//2.00B アウトラインウィンドウを出している時に設定を行おうとするとおかしかった
//
switch(id) {
case IDD_PREVIEW: {
if (fInit) {
txInsert(text,"\tWZ EDITOR 3.0\tAlphabet 漢字 カナ \\ ");txInsertReturn(text);
txInsert(text,"設定項目の説明を読むには、ダイアログ右上の[?]ボタンをクリックしてから、説明を読みたい項目をマウスクリックしてください。");txInsertReturn(text);
txInsert(text,"または、読みたい項目にフォーカス移動して{F1}を押して下さい。");txInsertReturn(text);//3.00A4 970509
txInsert(text,"aaa@bbb.co.jp");txInsertReturn(text);//2.99B 970322
txJumpFileTop(text);
}
break;
}
case IDD_PREVIEW2: {
// default
text->fDispUnder = FALSE;
text->fDispLine = FALSE;
text->fDispTab = FALSE;
text->fDispLf = FALSE;
text->fDispEof = FALSE;
if (context.fPreviewStyle || context.fPreviewStyleAlways) {
if (fInit) {
int i;
text->fForm = TRUE;
//2.00C 本文のプレビューが見やすい様に先頭にした
txInsert(text,"本文 BODY body 見出し HEAD head\n");
for (i = 0;i < SZTITLE_N;i++) {
txInsertf(text,"%s見出し%d HEAD head\n",text1->tsztitle[i],i + 1);
}
for (i = SZFORMAT_TITLE4;i <= SZFORMAT_TITLE6;i++) {
txInsertf(text,"%s見出し%d HEAD head\n",text1->tszformat[i],i - SZFORMAT_TITLE4 + 4);
}
txJumpFileTop(text);
txSetEditmode(text,2);
}
} else {
txSetEditmode(text,0);
txDeleteText(text);
}
break;
}
case IDD_PREVIEW3: {
#if 1//2.99B 970322 色の設定のプレビューの内容を、ファイルの種類で設定した内容によって変化するようにした
txDeleteText(text);
text->fForm = FALSE;
text->fHTML = FALSE;
text->fC = FALSE;
txInsertLine(text,"aaa@bbb.co.jp");
switch(text->filekind) {
case TEXT_C: {
text->fC = TRUE;
txInsert(text,"\"文字列\"\n");
txInsert(text,"#C-PreProcessor\n");
txInsert(text,"C-123error\n");
txInsert(text,"\tif (a == 12345) // コメント\n");
break;
}
case TEXT_HTML: {
text->fForm = TRUE;
text->fHTML = TRUE;
txInsert(text,"<H1>見出し</H1>\n");
txInsert(text,"本文 全角スペース\n");
txInsert(text,"<A HREF=\"readme.txt\">READ ME</A>\n");
txInsert(text,"<I>斜体</I>\n");
txInsert(text,"<FONT SIZE=7>大きな文字</FONT>\n");
txInsert(text,"<!--コメント-->\n");
txSetEditmode(text,text1->editmode);
break;
}
case TEXT_PASCAL: {
txInsert(text,"'文字列'\n");
txInsert(text,"\tif var 12345 {コメント} (*コメント*)\n");
break;
}
case TEXT_FORTRAN: {
txInsert(text,"'文字列'\n");
txInsert(text,"C コメント\n");
txInsert(text,"\tif var 12345 !コメント\n");
break;
}
case TEXT_SCRIPT: {
txInsert(text,"'文字列'\n");
txInsert(text,"# コメント\n");
txInsert(text,"\tif var 12345\n");
break;
}
case TEXT_ASM: {
txInsert(text,"'文字列'\n");
txInsert(text,"\tmov ax,12345 ; コメント\n");
break;
}
case TEXT_BASIC: {
txInsert(text,"\"文字列\"\n");
txInsert(text,"rem コメント\n");
txInsert(text,"'コメント\n");
txInsert(text,"\tif var = 12345 then\n");
break;
}
default: {
text->fForm = TRUE;
txInsertf(text,"%s見出し\n",text1->tsztitle[0]);
txInsertf(text,"\t本文 全角スペース\n");
txInsertf(text,"%s斜体%s\n",
text1->tszformat[SZFORMAT_ITALIC_TOP],
text1->tszformat[SZFORMAT_ITALIC_END]
);
txInsert(text,"\"文字列\"\n");
txSetEditmode(text,text1->editmode);
break;
}
}
txJumpFileTop(text);
#else
if (fInit) {
if (text1->fC) {
txInsertf(text,"%s見出し\n",text1->tsztitle[0]);
txInsertf(text,"\t本文 全角スペース\n");
txInsert(text,"\"文字列\"\n");
txInsert(text,"#C-PreProcessor\n");
txInsert(text,"C-123error\n");
txInsert(text,"\tif (a == 12345) // コメント\n");
txInsertLine(text,"aaa@bbb.co.jp");
} else if (text1->fHTML) {
text->fForm = TRUE;
text->fHTML = TRUE;
txInsert(text,"<H1>見出し</H1>\n");
txInsert(text,"本文 全角スペース\n");
txInsert(text,"<A HREF=\"readme.txt\">READ ME</A>\n");
txInsert(text,"<I>斜体</I>\n");
txInsert(text,"<FONT SIZE=7>大きな文字</FONT>\n");
txInsert(text,"<!--コメント-->\n");
txInsertLine(text,"aaa@bbb.co.jp");
txSetEditmode(text,text1->editmode);
} else {
text->fForm = TRUE;
txInsertf(text,"%s見出し\n",text1->tsztitle[0]);
txInsertf(text,"\t本文 全角スペース\n");
txInsertf(text,"%s斜体%s\n",
text1->tszformat[SZFORMAT_ITALIC_TOP],
text1->tszformat[SZFORMAT_ITALIC_END]
);
txInsert(text,"\"文字列\"\n");
txInsertLine(text,"aaa@bbb.co.jp");
txSetEditmode(text,text1->editmode);
}
// 選択の色分けを表示する
txJumpFileTop(text);
txSearchEx(text,"全角",0);
txSelect(text);
txRightWord(text);
}
#endif
break;
}
}
#if 1//2.93 for tabsize=0
txFlush(text);
txSetDisp(text);
txFlush(text);
#else
txSetDisp(text);
txFlush(text);
#endif
}
}
static void FlushPropFont(HDIALOG hd,int id,BOOL fProp)
{
if (id) {
FONTNAMES* fontnames = fontnamesFromId(hd,id);
if (fontnames) {
fontnames->lfPitch = fProp ? DEFAULT_PITCH : FIXED_PITCH;
fontnamesFlush(fontnames);
dialogWriteItem(hd,id);
}
}
}
static void FlushProp(HWND hwnd)
{
BOOL lfProp = IsDlgButtonChecked(hwnd,IDD_PROP);
BOOL lfWestern = context.text->lfWestern;
// set lfWestern
if (GetDlgItem(hwnd,IDD_WESTERN)) {
lfWestern = FALSE;
if (IsDlgButtonChecked(hwnd,IDD_WESTERN+1)) lfWestern = 1;
if (IsDlgButtonChecked(hwnd,IDD_WESTERN+2)) lfWestern = 2;
EnableDlgItem(hwnd,IDD_ANK,!lfWestern);
}
//
EnableFontkind(hwnd,lfProp,lfWestern);
{
HDIALOG hd = dialogFromHwndPshpage(hwnd);
FlushPropFont(hd,idFontStd,lfProp);
FlushPropFont(hd,idFontBase,lfProp);//2.98 970307
if (lfProp) {//2.00B プロポーショナルをOFFにしたときも半角フォントを覚える様にした
FlushPropFont(hd,idFontAnk,lfProp);
}
}
}
static void pathSetKeyword(txstr szpath,mchar* szkeywordfile)
{
#if 1//2.99D 970401 Net-WZでキーワードファイルがユーザ毎に独立してなかった
mchar szfilename[CCHPATHNAME];
strcpy(szfilename,szkeywordfile);
pathSetExt(szfilename,".tkw");
pathFullConfig(szpath,szfilename);
#else
szpath = text->szexedir;
szpath += szkeywordfile;
szpath += ".tkw";
#endif
}
static void FlushKeywordname(HDIALOG hd)
{
HWND hwnd = dialogGetWindow(hd);
HWND hctrl = GetDlgItem(hwnd,IDD_KEYWORDNAME);
TX* texta = dialogGetCustdata(hd);
txstr szName;
szName = texta->szkeywordfile;
if (szName == "") szName = "新規ファイル";
SetWindowText(hctrl,"キーワードファイル名: " + szName);
}
static BOOL dialogKeywordSaveAs(HDIALOG hd)
{
// 保存したかどうか返す
HWND hctrl = GetDlgItem(dialogGetWindow(hd),IDD_EDITKEYWORD);
TX* text = (LPVOID)SendMessage(hctrl,TXWM_GETTX,0,0);
//
TX* texta = dialogGetCustdata(hd);
txstr szName = texta->szkeywordfile;
int ret;
while(1) {
ret = IDYES;
HDIALOG hd = dialog("名前を付けて保存");
dialogStr(hd,"ファイル名(&N)",szName,16,16);
if (dialogOpen(hd)) {
if (szName[0]) {
txstr szfilename;
pathSetKeyword(szfilename,szName);
if (fileIsExist(szfilename)) {
ret = question(
"キーワードファイル %s は存在します。\n"
"\n"
"上書きしてもよいですか?",
szName
);
}
if (ret == IDYES) {
txSaveTo(text,szfilename);
statprintf("キーワードファイル %s に保存しました",szName);
}
} else {
information("名前を付けてください");
ret = IDCANCEL;
}
} else {
ret = IDNO;
}
if (ret != IDCANCEL) break;
}
if (ret == IDYES) {
sstrcpy(texta->szkeywordfile,szName);
return TRUE;
}
return FALSE;
}
BOOL dlgprocKeyword(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HDIALOG hd = dialogFromHwnd(hwnd);
switch(message) {
case WM_INITDIALOG: {
HDIALOG hd = dialogFromHwnd(hwnd);
TX* texta = dialogGetCustdata(hd);
HWND hctrl = GetDlgItem(hwnd,IDD_EDITKEYWORD);
TX* text = (LPVOID)SendMessage(hctrl,TXWM_GETTX,0,0);
if (text) {
txstr szfilename;
pathSetKeyword(szfilename,texta->szkeywordfile);
txInsertFile(text,szfilename);
txJumpFileTop(text);
text->fEdit = FALSE;
}
FlushKeywordname(hd);
break;
}
case WM_COMMAND: {
HDIALOG hd = dialogFromHwnd(hwnd);
TX* texta = dialogGetCustdata(hd);
int id = WM_COMMAND_GetId(wParam);
int notify = WM_COMMAND_GetNotify(wParam,lParam);
//
HWND hctrl = GetDlgItem(hwnd,IDD_EDITKEYWORD);
TX* text = (LPVOID)SendMessage(hctrl,TXWM_GETTX,0,0);
switch(id) {
case IDOK: {
if (text->fEdit) {
if (texta->szkeywordfile[0]) {
txstr szfilename;
pathSetKeyword(szfilename,texta->szkeywordfile);
txSaveTo(text,szfilename);
} else {
if (dialogKeywordSaveAs(hd)) {
FlushKeywordname(hd);
} else {
return TRUE; // hook
}
}
}
break;
}
case IDCANCEL: {
if (text->fEdit) {
int ret = question(
"キーワードは編集されています。\n"
"\n"
"編集内容を破棄してもよいですか?"
);
if (ret != IDYES) return TRUE; // hook
}
break;
}
case IDD_SAVEAS: {
if (dialogKeywordSaveAs(hd)) {
FlushKeywordname(hd);
text->fEdit = FALSE;
}
return TRUE;
}
}
return FALSE;
}
}
return FALSE;
}
static int dialogEditKeyword(TX* text)
{
HDIALOG hd = dialog("キーワードファイルの編集");
dialogSetGroupRight(hd,DTCX * 60);
dialogSetHookEx(hd,"\m.dlgprocKeyword");
dialogSetCustdata(hd,text);
dialogSetFocus(hd,IDD_EDITKEYWORD);
//
dialogControlID(hd,IDD_KEYWORDNAME);
dialogCaptionDynamic(hd,NULL,30);
//
dialogAddPreview(hd,IDD_EDITKEYWORD,10);
//
dialogLFV(hd);
int lcx = 24;
dialogControlID(hd,IDOK);
dialogCmd(hd,"&OK",lcx);
dialogControlID(hd,IDCANCEL);
dialogCmd(hd,"キャンセル(&C)",lcx);
dialogControlID(hd,IDD_SAVEAS);
dialogCmd(hd,"名前を付けて保存(&A)...",lcx);
return dialogOpen(hd);
}
static int dialogFormatstr(TX* text)
{
HDIALOG hd = dialog("書式文字列");
dialogSetGroupRight(hd,DTCX * 31);
DTRECT r1;
dialogGroup(hd,"見出し");
int lxg = 12;
int lx = 14;
dialogSetIntXY(hd,0,1);// 縦は1は空けて置かないとWZ16の2D表示が見にくい
dialogControlHelp(hd,287);
dialogStrC(hd,"章(&1):",text->tsztitle[0],lxg,CCHTITLE,lx);
dialogControlHelp(hd,287);
dialogStrC(hd,"節(&2):",text->tsztitle[1],lxg,CCHTITLE,lx);
dialogControlHelp(hd,287);
dialogStrC(hd,"項(&3):",text->tsztitle[2],lxg,CCHTITLE,lx);
dialogControlHelp(hd,287);
dialogStrC(hd,"中見出し(&4):",text->tszformat[SZFORMAT_TITLE4],lxg,CCHFORMAT,lx);
dialogControlHelp(hd,287);
dialogStrC(hd,"小見出し(&5):",text->tszformat[SZFORMAT_TITLE5],lxg,CCHFORMAT,lx);
dialogControlHelp(hd,287);
dialogStrC(hd,"表題(&6):",text->tszformat[SZFORMAT_TITLE6],lxg,CCHFORMAT,lx);
dialogResetInt(hd);
dialogGroupEnd(hd);
if (text->fPlaintext) dialogSetEnable(hd,FALSE);//3.00B1 970523
dialogGroup(hd,"文字装飾(&C)");
dialogSetIntXY(hd,0,1);
dialogSetH(hd);
for (int i = SZFORMAT_BOLD_TOP;i <= SZFORMAT_ITALIC_END;i++) {
static mchar* tsz[] = {
"太字:",NULL,
"下線:",NULL,
"斜体:",NULL,
};
mchar* szcaption = tsz[i - SZFORMAT_BOLD_TOP];
if (szcaption) {
dialogControlGuide(hd,"~",3);
dialogControlHelp(hd,287);
dialogStrC(hd,szcaption,text->tszformat[i],8,CCHFORMAT,7);
} else {
dialogControlHelp(hd,287);
dialogStrC(hd,szcaption,text->tszformat[i],0,CCHFORMAT,7);
dialogLF(hd);
}
}
//2.98 970305 脚注、ルビなどの書式文字列が設定できるようにした。
for (int i = SZFORMAT_FOOTNOTE_TOP;i <= SZFORMAT_LINK_END;i++) {
static mchar* tsz[] = {
"脚注:",NULL,
"ルビ:",NULL,
"特殊文字",NULL,
"校正",NULL,
"リンク:",NULL,//2.98 970308
};
mchar* szcaption = tsz[i - SZFORMAT_FOOTNOTE_TOP];
if (szcaption) {
dialogControlGuide(hd,"~",3);
dialogControlHelp(hd,287);
dialogStrC(hd,szcaption,text->tszformat[i],8,CCHFORMAT,7);
} else {
dialogControlHelp(hd,287);
dialogStrC(hd,szcaption,text->tszformat[i],0,CCHFORMAT,7);
dialogLF(hd);
}
}
dialogSetV(hd);
//
dialogResetInt(hd);
dialogGroupEndGetRect(hd,&r1);
dialogLFV(hd);
dialogSetGroupRight(hd,DTCX * 68);
dialogGroup(hd,"段落書式(&P)");
int lxg = 12;
int lx = 20;
dialogSetIntXY(hd,0,1);
for (int i = SZFORMAT_ARTICLE;i <= SZFORMAT_ARTICLENOTICE;i++) {
static mchar* tsz[] = {
"箇条書き:","番号付き:","注釈:",
};
dialogControlHelp(hd,287);
dialogStrC(hd,tsz[i - SZFORMAT_ARTICLE],text->tszformat[i],lxg,CCHFORMAT,lx);
}
for (int i = SZFORMAT_INDENT;i <= SZFORMAT_TAB;i++) {
static mchar* tsz[] = {
"インデント:",
"センタリング:",
"右寄せ:",
"改ページ:",
"表:",
"桁揃え:",
};
dialogControlHelp(hd,287);
dialogStrC(hd,tsz[i - SZFORMAT_INDENT],text->tszformat[i],lxg,CCHFORMAT,lx);
}
dialogControlHelp(hd,287);
dialogStrC(hd,"段落内改行:",text->tszformat[SZFORMAT_BR],lxg,CCHFORMAT,lx);
//2.00E
dialogControlHelp(hd,287);
dialogStrC(hd,"図:",text->tszformat[SZFORMAT_BITMAP],lxg,CCHFORMAT,lx);
//2.97 970223
dialogControlHelp(hd,287);
dialogStrC(hd,"水平線:",text->tszformat[SZFORMAT_HR],lxg,CCHFORMAT,lx);
//
dialogResetInt(hd);
dialogGroupEnd(hd);
dialogSetGroupBottom(hd,r1.y + r1.cy);
dialogGroup(hd,"記号(&K)");
dialogSetIntXY(hd,0,1);
//
dialogControlHelp(hd,287);
dialogStrC(hd,"セパレータ:",text->tszformat[SZFORMAT_SEPARATOR],lxg,CCHFORMAT,lx);
//2.98 970308
dialogControlHelp(hd,287);
dialogStrC(hd,"レターヘッダ終り",text->tszformat[SZFORMAT_BODY],lxg,CCHFORMAT,lx);
//
dialogResetInt(hd);
dialogGroupEnd(hd);
if (text->fPlaintext) dialogSetEnable(hd,TRUE);//3.00B1 970523
return dialogOpen(hd);
}
DWORD convprocWs(DWORD data,int mode)
{
static int t[] = {
WS_PAGE,WS_MAX,WS_DESTEXT
};
int n = sizeof(t) / sizeof(int);
if (mode == TXDIALOG_READ) {
//information("READ %d -> %d",data,t[data]);
return t[data];
} else {
int i;
for (i = 0;i < n;i++) {
//if (t[i] == data) information("WRITE %d -> %d",data,i);
if (t[i] == data) return i;
}
return 0;
}
}
DWORD convprocFk(DWORD data,int mode)
{
static int t[] = {
TEXT_PLAIN,
TEXT_MAIL,
//TEXT_WZ,
TEXT_HTML,TEXT_C,
TEXT_PASCAL,TEXT_FORTRAN,
TEXT_SCRIPT,TEXT_ASM,TEXT_BASIC
};
int n = sizeof(t) / sizeof(int);
if (mode == TXDIALOG_READ) {
//information("READ %d -> %d",data,t[data]);
return t[data];
} else {
int i;
for (i = 0;i < n;i++) {
//if (t[i] == data) information("WRITE %d -> %d",data,i);
if (t[i] == data) return i;
}
return 0;
}
}
static void dialogAddTxc32(HDIALOG hd)
{
TXCONFIGSHARE *shcfg = &context.shcfg;
dialogControlHelp(hd,137);
dialogStrC(hd,"&32bitインクルード:",shcfg->szenvinclude[1],14,CCHWORD,40);
dialogControlHelp(hd,470);
dialogStrC(hd,"32bit出力:",shcfg->szPathTxpcode[1],14,CCHWORD,40);
}
static void dialogAddTxc16(HDIALOG hd)
{
TXCONFIGSHARE *shcfg = &context.shcfg;
dialogControlHelp(hd,136);
dialogStrC(hd,"&16bitインクルード:",shcfg->szenvinclude[0],14,CCHWORD,40);
dialogControlHelp(hd,471);
dialogStrC(hd,"16bit出力:",shcfg->szPathTxpcode[0],14,CCHWORD,40);
}
//1.99 印刷スタイルは、印刷をしたときに選択されたスタイルを
// 覚えればいいので設定ダイアログには載せない
// コントロールのアクセスキーに'&0'-'&9','&Q','&X'-'&Z'は使わないこと
//2.99D 970330 dialogbig化
static HDIALOG configtxCreatePage(int iPage,HDC hdcPrinter,int arg)
{
tx *text = context.text;
TXCONFIGSHARE *shcfg = &context.shcfg;
//
HDIALOG hd = NULL;
int lcxHeadline = 60;
int xright0 = DTCX * 60; //2.95 970126
int lx2 = 18; // カラムの中央
int lx3 = 36; //2.99 970320
int lcx2 = 16; // カラムの半分の幅
int lxval = _fwin40 ? 6 : 4;// アップダウンコントロール付きの数値入力窓幅
DTRECT r,r1,r2;
switch(iPage) {
case IPAGE_FORM: {
hd = dialogbig(" 文字数・行数 ");
dialogSetGroupRight(hd,xright0);
dialogGroup(hd,"文字数・行数");
#if 1//2.99A 970321 文字数と行数の指定を変更。印刷スタイルに合わせた文字数で折り返し表示できるようにした
dialogControlRadioV(hd);
dialogControlID(hd,IDD_WIDTHMODE);
dialogControlHelp(hd,2);
//2.99B 970322 modeWidthの定義値変更により項目の順序変更
dialogRadioIDB(hd,&context.modeWidth,
"文字数と行数を指定する(&M)",
"標準の文字数を使う(&R)",
"印刷スタイルの文字数を使う(&P)"
);
#else
dialogControlRadioV(hd);
dialogControlReverseBool(hd);
dialogControlID(hd,IDD_WIDTHMODE);
dialogControlHelp(hd,2);
dialogSwitchB(hd,&text->fSetWidthByWindow,"文字数と行数を指定する(&M)","標準の文字数を使う(&R)");
#endif
//
dialogControlID(hd,IDD_WIDTH);
dialogControlGuide(hd,"文字(半角)",10);
dialogControlHelp(hd,1);
dialogControlUpdown(hd,MINWIDTH,MAXWIDTH);
#if 1//2.99A 970321
dialogInt(hd,"1行の文字数(&C):",&context.width,16,lxval);
#else
dialogIntI(hd,"1行の文字数(&C):",&text->width,16,lxval);
#endif
//
dialogControlGuide(hd,"行",6);
dialogControlHelp(hd,3);
dialogControlUpdown(hd,0,LINE_N);
dialogIntI(hd,"1ページの行数(&L):",&text->height,16,lxval);
//
dialogControlGuide(hd,"段",3);
dialogControlHelp(hd,438);
dialogControlUpdown(hd,1,10);
dialogIntB(hd,"段組(&N):",&text->nClm,16,lxval);
//2.93 タブサイズを任意指定できるように(32や9にしたい時もある)
dialogControlHelp(hd,274);
dialogControlGuide(hd,"文字(半角)",10);
dialogControlUpdown(hd,1,MAXTABSIZE);
dialogIntW(hd,"タブの文字数(&T)",&text->tabsize,16,lxval);
//
dialogControlID(hd,IDD_VERTICAL);
dialogControlReverseBool(hd);
dialogControlHelp(hd,9);
dialogSwitchB(hd,&text->fVertical,"横書き(&H)","縦書き(&V)");
//
dialogControlHelp(hd,6);
dialogCheckB(hd,"ページめくり(&B)",&text->fPageTurn);
dialogGroupEnd(hd);
//
dialogAddPreview(hd,IDD_PREVIEW,5);
break;
}
case IPAGE_DISPLAY: {
hd = dialogbig(" 表示 ");
dialogSetGroupRight(hd,xright0);
dialogHeadline(hd,"フォント",lcxHeadline);//2.99 970320
// フォント
fontsel(hd,text,FONTTX_TEXT,TRUE);
dialogSetH(hd);
dialogControlID(hd,IDD_PROP);
dialogControlHelp(hd,16);
dialogCheckB(hd,"プロポーショナル(&P)",&text->lfProp);
//2.00B 欧文表示と編集に対応
dialogSetPosLX(hd,lx2);
dialogControlHelp(hd,17);
dialogSelectIDB(hd,"言語(&W):",&text->lfWestern,14,18,"日本語+英語","欧文メイン+日本語","日本語メイン+欧文");
dialogLF(hd);
dialogControlHelp(hd,18);
dialogCheckB(hd,"太字(&B)",&text->lfBold);
//
dialogSetPosLX(hd,lx2);
dialogControlHelp(hd,13);
dialogSelectIDB(hd,"フォントの指定(&I):",&text->fMyFont,14,18,"共通","ファイルタイプ専用");
dialogLFSetV(hd);
dialogControlHelp(hd,439);
dialogSelectIDB(hd,"バックスラッシュ(&S):",&text->lfBackslash,lx2-2,24,"標準","英語フォントは'\'で表示");
dialogSetIntXY(hd,0,0);
dialogHeadline(hd,"表示",lcxHeadline);//2.99 970320
dialogSetH(hd);
dialogControlHelp(hd,4);
dialogControlGuide(hd,"ドット",6);
dialogControlUpdown(hd,0,50);
dialogIntI(hd,"行間(&D):",&text->cySpace,8,lxval);
//2.00E 文字間を空けて編集ができるようにした(特に縦書き時の字間の要望が強かった)
dialogControlHelp(hd,347);
dialogControlGuide(hd,"ドット",6);
dialogControlUpdown(hd,0,10);
dialogIntB(hd,"字間(&G):",&text->cxSpace,8,lxval);
dialogLF(hd);
dialogControlHelp(hd,5);
dialogCheckB(hd,"アンダーライン(&C)",&text->fDispUnder);//1.90
dialogSetPosLX(hd,lx2);
dialogControlHelp(hd,8);
dialogCheckB(hd,"右マージン(&M)",&text->fDispRightMargin);
dialogSetPosLX(hd,lx3);
dialogControlHelp(hd,26);
dialogCheckB(hd,"タブ(&T)",&text->fDispTab);
dialogLF(hd);
dialogControlHelp(hd,27);
dialogCheckB(hd,"全角スペース(&J)",&text->fDispJspace);
dialogSetPosLX(hd,lx2);
dialogControlHelp(hd,28);
dialogCheckB(hd,"改行(&R)",&text->fDispLf);
dialogSetPosLX(hd,lx3);
dialogControlHelp(hd,29);
dialogCheckB(hd,"E&OF",&text->fDispEof);
dialogLF(hd);
dialogControlHelp(hd,7);
dialogCheckB(hd,"行番号(&N):",&text->fDispLine);
//
dialogControlHelp(hd,132);
dialogSetPosLX(hd,lx2);
dialogSwitchB(hd,&text->fLineD,"表示行番号","段落行番号");
dialogLFSetV(hd);
dialogResetInt(hd);
dialogAddPreview(hd,IDD_PREVIEW,5);
break;
}
case IPAGE_FILE: {
hd = dialogbig(" ファイル ");
dialogSetGroupRight(hd,xright0);
dialogGroup(hd,"ファイルオープン時の処理");
dialogControlHelp(hd,74);
#ifdef __FLAT__
dialogSelectIDW(hd,"IMEの制御(&K):",&text->modeImeSetFocus,24,20,"制御しない","OFF","ON");
#else
dialogSelectIDW(hd,"IMEの制御(&K):",&text->modeImeSetFocus,24,20,"制御しない","OFF","ON","ON+カナロック");
#endif
dialogControlHelp(hd,447);
dialogCheckB(hd,"自動インライン整形をONにする(&S)",&text->fConfigInlineform);
if (!text->fWztext) {//2.00E4
dialogControlHelp(hd,398);
dialogSelectIDB(hd,"画面表示のモード(&E):",&text->editmodeOpen,24,20,"テキストモード","体裁モード","詳細モード");
}
dialogGroupEnd(hd);
dialogGroup(hd,"ファイル保存時の処理");
dialogControlHelp(hd,102);
dialogCheckB(hd,"世代管理を行う(&G)",&text->fSaveUndoBuff);
//
dialogControlHelp(hd,105);
dialogSelectIDB(hd,"タブ/スペースの変換(&T):",&text->modeConvertSpaceAtSave,24,20,"変換しない","タブをスペースに変換","スペースをタブに変換");
//
dialogControlHelp(hd,106);
dialogSelectIDB(hd,"全角/半角カタカナの変換(&J):",&text->modeConvertKanaAtSave,24,20,"変換しない","半角を全角に変換","全角を半角に変換");
//
dialogControlHelp(hd,107);
dialogCheckB(hd,"行末の空白を除去(&D)",&text->fDeleteTailSpaceAtSave);
dialogGroupEnd(hd);
dialogGroup(hd,"ファイルの形式");
dialogControlConvertEx(hd,"\m.convprocFk");
dialogControlHelp(hd,448);
dialogSelectIDB(
hd,"ファイルの種類(&P):",&text->filekind,14,20,
"標準",
//"WZ文書",
"メール文書",
"HTML文書",
"Cプログラム",
"pascalプログラム",
"FORTRANプログラム",
"スクリプトプログラム",
"アセンブラプログラム",//2.99B 970322 ASM,BASICの色分けを追加
"BASICプログラム"//2.99B 970322
);
dialogControlID(hd,IDD_FORMATSTR);
dialogControlHelp(hd,449);
dialogButton(hd,"書式文字列(&F)...",NULL,20);
dialogGroupEnd(hd);
break;
}
case IPAGE_SEARCH: {
//2.99 970320 検索ダイアログオプションの初期値を文書の設定に移動したほうがわかりやすいので移動
hd = dialogbig(" 検索 ");
dialogSetGroupRight(hd,xright0);
dialogGroup(hd,"検索ダイアログオプションの初期値");
dialogControlHelp(hd,115);
dialogCheck(hd,"大文字・小文字を区別(&C)",&context.searchopt.fSearchSenseCase);
dialogControlHelp(hd,115);
dialogCheck(hd,"全角・半角文字を区別(&B)",&context.searchopt.fSearchSenseZenhan);
dialogControlHelp(hd,115);
dialogCheck(hd,"ワードサーチ(&W)",&context.searchopt.fSearchWord);
dialogGroupEnd(hd);
//2.99C 970323 検索時に検索文字列の色分けを行うかどうか設定できるようにした
dialogControlHelp(hd,430);
dialogCheckB(hd,"検索時に検索文字列の色分けを行う(&S)",&text->fDispFindAtSearch);
break;
}
case IPAGE_WINDOW: {
hd = dialogbig(" ウィンドウ ");
dialogSetGroupRight(hd,xright0);
dialogGroup(hd,"ウィンドウサイズ");
dialogControlHelp(hd,149);
dialogControlRadioV(hd);
{
PMACROFUNC pfunc;
macroGetFuncAddress("convprocWs",&pfunc);
dialogControlConvert(hd,&pfunc);
}
dialogRadioIDI(hd,&text->modeWs,"文字数と行数から計算する(&C)","最大化する(&E)","サイズを指定する(&D)");
//
dialogSetH(hd);
dialogControlHelp(hd,149);
dialogControlGuide(hd,"文字",5);
dialogControlUpdown(hd,MINWIDTH,MAXWIDTH);
dialogIntI(hd," ",&text->lcxWindowDefault,4,lxval);
dialogControlGuide(hd,"行",3);
dialogControlUpdown(hd,0,LINE_N);
dialogIntI(hd,"x",&text->lcyWindowDefault,1,lxval);
dialogSetV(hd);
dialogLF(hd);
dialogGroupEnd(hd);
dialogGroup(hd,"各種バーの表示");
#if 1//3.00A5 970511 //3.00A5 970511 スクロールバーの設定の呼称:(行方向)、(桁方向)追加
dialogControlHelp(hd,154);
dialogCheckB(hd,"垂直(行方向)スクロールバー(&V)",&text->fScrollBarV);
//
dialogControlHelp(hd,155);
dialogSelectIDB(hd,"水平(桁方向)スクロールバー(&H):",&text->fScrollBarH,24,8,"OFF","ON","自動");
#else
dialogSetH(hd);
dialogControlHelp(hd,154);
dialogCheckB(hd,"垂直スクロールバー(&V)",&text->fScrollBarV);
#if 1//2.99D 970329 水平スクロールバー:自動を追加
dialogLF(hd);//3.00A5 970511
dialogControlHelp(hd,155);
dialogSelectIDB(hd,"水平スクロールバー(&H):",&text->fScrollBarH,16,8,"OFF","ON","自動");
#else
dialogControlHelp(hd,155);
dialogCheckB(hd,"水平スクロールバー(&H)",&text->fScrollBarH);
#endif
dialogLF(hd);
dialogSetV(hd);
#endif
dialogSpaceV(hd);
//2.98 970310
dialogControlHelp(hd,445);
dialogCheckB(hd,"タイトルバー(&I)",&text->fDispTitlebar);//2.99D 970331 fDispFull->fDispTitlebar
//2.95 970128
dialogControlHelp(hd,446);
dialogControlReverseBool(hd);
dialogCheckB(hd,"タイトルバーとメニューバー(&M)",&text->fDispFull);
//
dialogControlHelp(hd,156);
dialogCheckB(hd,"ツールバー(&T)",&text->fDispToolbar);
dialogControlHelp(hd,160);
dialogCheckB(hd,"ステータスバー(&S)",&text->fDispStatusbar);
dialogSpaceV(hd);
dialogSetH(hd);
dialogControlHelp(hd,157);
dialogCheckB(hd,"ルーラー(&R):",&text->fDispRuler);
dialogSetPosLX(hd,20);
dialogControlHelp(hd,157);
dialogRadioIntB(hd,&text->nGageRuler,"8単位","10単位");
dialogLF(hd);
dialogControlHelp(hd,159);
dialogCheckB(hd,"ファンクションキー(&F):",&text->fDispFunctionKey);
dialogSetPosLX(hd,20);
dialogControlHelp(hd,159);
dialogRadioIntW(hd,&text->nFunctionKey,"8","10","12");
dialogLF(hd);
dialogSetV(hd);
dialogGroupEnd(hd);
break;
}
case IPAGE_VIEWMODE: {//3.00B1 970613 ビューモードの設定は、文書の設定とは独立して行える様にした。ビューモードの設定は[文書の設定]ダイアログの[ビューモード]タブで行う。macro.at_viewmodeでツールバーなどをONにするプログラムは削除してください。
hd = dialogbig(" ビューモード ");
dialogSetGroupRight(hd,xright0);
#if 0 // fDispUnderをtxGetDispUnder化するのは難しい。
// 一時的にfDispUnderをON/OFFしている箇所があり、
// これをいじるとバグの懸念あり
dialogGroup(hd,"表示");
dialogControlHelp(hd,5);
dialogSelectIDB(hd,"アンダーライン(&U):",&shcfg->viewmodeModeDispUnder,13,16,"OFF","ON","文書の設定");
dialogGroupEnd(hd);
#endif
#if 0 // rgbTextなどをビューモードで独立化するのは難しい
// 純色に変換したりペンやブラシを作っているため
dialogGroup(hd,"色分け");
dialogControlID(hd,IDD_CUST_COLOR_VIEWMODE);
dialogControlHelp(hd,443);
dialogButton(hd,"色のカスタマイズ(&C)...",NULL,24);
dialogGroupEnd(hd);
#endif
dialogGroup(hd,"各種バーの表示");
dialogControlHelp(hd,512);
dialogSelectIDB(hd,"ツールバー(&T):",&shcfg->viewmodeModeDispToolbar,13,16,"OFF","ON","文書の設定");
dialogControlHelp(hd,513);
dialogSelectIDB(hd,"ルーラー(&R):",&shcfg->viewmodeModeDispRuler,13,16,"OFF","ON","文書の設定");
dialogControlHelp(hd,515);
dialogSelectIDB(hd,"ステータスバー(&S):",&shcfg->viewmodeModeDispStatusbar,13,16,"OFF","ON","文書の設定");
dialogControlHelp(hd,514);
dialogSelectIDB(hd,"ファンクションキー(&F):",&shcfg->viewmodeModeDispFunctionKey,13,16,"OFF","ON","文書の設定");
dialogGroupEnd(hd);
dialogCaption(hd,"※ビューモードの設定は全テキストで共通です");
break;
}
case IPAGE_COLOR: {
int cxcolor = 10;
hd = dialogbig(" 色分け ");
dialogSetGroupRight(hd,xright0);
dialogGroup(hd,"文字列の色分け");
dialogSetH(hd);
dialogControlHelp(hd,440);
dialogSelectColor(hd,"キーワード(&K):",&text->fDispKeyword,20,20);
dialogControlHelp(hd,41);
dialogColor(hd,"表示色...","キーワードの色",&text->rgbKeyword,cxcolor,NULL);
dialogLF(hd);
dialogControlHelp(hd,429);
dialogSelectColor(hd,"検索文字列(&S):",&text->fDispFind,20,20);
dialogControlHelp(hd,441);
dialogColor(hd,"表示色...","検索文字列の色",&text->rgbFind,cxcolor,NULL);
dialogLF(hd);
dialogControlHelp(hd,36);
dialogSelectColor(hd,"見出し・段落体裁(&H):",&text->fDispTitle,20,20);
dialogControlHelp(hd,38);
dialogColor(hd,"表示色...","見出しの色",&text->rgbTitle,cxcolor,NULL);
dialogLF(hd);
dialogSetV(hd);
//2.99 970313 URLの色分けON/OFF
dialogControlHelp(hd,414);
dialogCheckB(hd,"URL(&I)",&text->fColoringURL);
//
dialogSetH(hd);
dialogControlID(hd,IDD_COLORPARSE);
dialogControlHelp(hd,442);
dialogButton(hd,"高度な色分け(&W)...",NULL,24);
//2.99C 970326 「文書の設定」で色のカスタマイズを呼び出せる様にした(カスタマイズダイアログと行き来する場合もあるので)
dialogControlID(hd,IDD_CUST_COLOR);
dialogControlHelp(hd,443);
dialogButton(hd,"色のカスタマイズ(&C)...",NULL,24);
dialogSetV(hd);
dialogGroupEnd(hd);
dialogGroup(hd,"キーワードの指定");
dialogSetH(hd);
#if 1//2.99D 970401
{
txstr szpath;
mchar szfilename[CCHPATHNAME];
strcpy(szfilename,"*.tkw");
pathFullConfig(szpath,szfilename);
dialogControlRefer(hd,"-n " + szpath);
}
#else
dialogControlRefer(hd,"-n "+text->szexedir+"*.tkw");
#endif
dialogControlHelp(hd,42);
dialogStrC(hd,"キーワードファイル(&F):",text->szkeywordfile,20,cchof(text->szkeywordfile),13);
dialogControlID(hd,IDD_NEWKEYWORDFILE);
dialogCmd(hd,"編集(&E)...",12);
dialogLF(hd);
dialogSetV(hd);
//
dialogControlHelp(hd,444);
dialogStrC(hd,"キーワード(&W):",text->szKeyword,20,cchof(text->szKeyword),24);
dialogGroupEnd(hd);
//
dialogAddPreview(hd,IDD_PREVIEW3,5);
break;
}
case IPAGE_EDIT: {
hd = dialogbig(" 編集 ");
dialogSetGroupRight(hd,xright0);
#if 1 //3.00A2 970507 「文書の設定|編集」ダイアログは、インライン整形の設定増加に伴い、デザイン変更
//3.00A3 970507 「文書の設定|編集」デザイン変更
int y;
dialogHeadline(hd,"編集オプション",lcxHeadline);
// dialogGroup(hd,"編集オプション");
y = dialogGetPosY(hd);
dialogControlHelp(hd,53);
dialogSelectIDB(hd,"フリーカーソル(&F):",&text->modeFreeCursor,13,16,"OFF","ON","擬似ON");
//
dialogControlHelp(hd,11);
dialogSelectIDB(hd,"オートインデント(&I):",&text->modeAutoIndent,13,16,"行わない","行う","全角スペースも行う");
//
dialogControlID(hd,IDD_AUTOCORRECT);
dialogControlHelp(hd,450);
dialogButton(hd,"オートコレクト(&C)...",NULL,24);
//
dialogSetPosY(hd,y);
dialogSetPosLX(hd,34);
//
dialogControlHelp(hd,12);
dialogCheckB(hd,"タブでスペースコードを入力(&S)",&text->fTabToSpace);
//2.98 970309
dialogControlHelp(hd,404);
dialogCheckB(hd,"\"・\"で箇条書き(&R)",&context.fAfArticleDisc);
//2.98 970309
dialogControlHelp(hd,405);
dialogCheckB(hd,"\".\"で見出し(&H)",&context.fAfTitle);
//
dialogLF(hd);
// dialogGroupEnd(hd);
dialogHeadline(hd,"禁則処理",lcxHeadline);
// dialogGroup(hd,"禁則処理");
dialogSetH(hd);
dialogControlHelp(hd,10);
//2.99A 970321 禁則の設定改良
dialogSelectIDB(hd,"禁則(&K):",&text->fJkinsoku,10,28,
"しない",
"する",
"句読点も追い出す",
"できるだけ文字数を増やす"
);
//
dialogIndent(hd,2);
dialogControlID(hd,IDD_KINSOKU_ANK);
dialogControlHelp(hd,275);
dialogCheckB(hd,"英字禁則(&E)",&text->fWordlap);
dialogLFSetV(hd);
// dialogGroupEnd(hd);
dialogHeadline(hd,"インライン整形",lcxHeadline);
// dialogGroup(hd,"インライン整形");
dialogControlHelp(hd,451);
dialogControlGuide(hd,"文字(半角)",12);
dialogControlUpdown(hd,MINWIDTH,MAXWIDTH);
dialogIntB(hd,"1行の文字数(&W):",&text->widthInlineform,20,lxval);
dialogSetH(hd);
dialogControlHelp(hd,419);
dialogCheckB(hd,"スペースでインデント(&O)",&context.fInlineformIndentSpace);
dialogControlHelp(hd,506);
dialogCheckB(hd,"[中止の確認(&U)]",&context.fInlineformQueryQuit);// (全テキスト共通)
dialogLFSetV(hd);
dialogControlHelp(hd,412);
dialogCheckB(hd,"シナリオモード(&N)",&context.fInlineformScenario);
//
dialogControlGuide(hd,"文字(半角) 0=標準値",22);
dialogControlUpdown(hd,1,31);
dialogControlHelp(hd,502);
#if 1//3.00A3 970508
dialogIntB(hd,"タブインデント数(&T):",&context.lcxInlineformIndentTogaki,20,lxval);
#else
dialogIntB(hd,"ト書きのインデント数(&T):",&context.lcxInlineformIndentTogaki,20,lxval);
#endif
//
dialogControlGuide(hd,"文字(半角)",12);
dialogControlUpdown(hd,1,31);
dialogControlHelp(hd,503);
dialogIntB(hd,"せりふのインデント数(&L):",&context.lcxInlineformIndentSerifu,20,lxval);
//
dialogControlHelp(hd,504);
dialogSelectIDB(hd,"全角・半角文字間の余白(&P):",&context.modeInlineformZenhanSpace,30,20,"調整しない","余白を空ける","余白を詰める");
dialogControlHelp(hd,505);
dialogSelectIDB(hd,"英字禁則(&D):",&context.modeInlineformWordlap,30,20,"文書の設定に従う","OFF","ON");
// dialogGroupEnd(hd);
#else
dialogGroup(hd,"編集オプション");
dialogControlHelp(hd,53);
dialogSelectIDB(hd,"フリーカーソル(&F):",&text->modeFreeCursor,16,16,"OFF","ON","擬似ON");
//
dialogControlHelp(hd,11);
dialogSelectIDB(hd,"オートインデント(&I):",&text->modeAutoIndent,16,16,"行わない","行う","全角スペースも行う");
//
dialogControlHelp(hd,12);
dialogCheckB(hd,"タブでスペースコードを入力(&S)",&text->fTabToSpace);
//2.98 970309
dialogControlHelp(hd,404);
dialogCheckB(hd,"\"・\"で箇条書き(&R)",&context.fAfArticleDisc);
//2.98 970309
dialogControlHelp(hd,405);
dialogCheckB(hd,"\".\"で見出し(&H)",&context.fAfTitle);
//
dialogControlID(hd,IDD_AUTOCORRECT);
dialogControlHelp(hd,450);
dialogButton(hd,"オートコレクト(&C)...",NULL,24);
dialogGroupEnd(hd);
dialogGroup(hd,"禁則処理");
dialogControlHelp(hd,10);
//2.99A 970321 禁則の設定改良
dialogSelectIDB(hd,"禁則(&K):",&text->fJkinsoku,16,28,
"しない",
"する",
"句読点も追い出す",
"できるだけ文字数を増やす"
);
dialogControlID(hd,IDD_KINSOKU_ANK);
dialogControlHelp(hd,275);
dialogCheckB(hd,"英字禁則(&E)",&text->fWordlap);
dialogGroupEnd(hd);
dialogGroup(hd,"インライン整形");
dialogControlHelp(hd,451);
dialogControlGuide(hd,"文字(半角)",12);
dialogControlUpdown(hd,MINWIDTH,MAXWIDTH);
dialogIntB(hd,"1行の文字数(&W):",&text->widthInlineform,16,lxval);
dialogControlHelp(hd,412);
dialogCheckB(hd,"シナリオモード(&N)",&context.fInlineformScenario);
//2.99 970319
dialogControlHelp(hd,419);
dialogCheckB(hd,"スペースでインデント(&O)",&context.fInlineformIndentSpace);
dialogGroupEnd(hd);
#endif
break;
}
case IPAGE_FORMDT: {
if (text->fHTML) {
hd = dialogbig(" HTML ");
dialogSetGroupRight(hd,xright0);
dialogGroup(hd,"HTMLファイル保存時の処理");
dialogControlHelp(hd,184);
dialogCheckB(hd,"タグの書き換え確認(&T)",&shcfg->fConfirmHtmlChange);
dialogControlHelp(hd,397);
dialogCheckB(hd,"文字コードJIS,改行コードLFで保存(&J)",&shcfg->fHtmlSaveJisLf);
dialogGroupEnd(hd);
dialogGroup(hd,"テキストモード→体裁モード切換時の処理");
//3.00A3 970508
dialogControlHelp(hd,508);
dialogCheckB(hd,"改行を空白に変換(&R)",&shcfg->fHtmlConvertReturnToSpace);
dialogGroupEnd(hd);
dialogGroup(hd,"体裁モード→テキストモード切換時の処理");//3.00A3 970508 「体裁モードからテキストモードへ切り替え時のタグ出力」から名称変更
dialogSelectIDB(hd,"表の出力(&B):",&shcfg->modeHtmlOutTable,16,30,"各行を1行で出力","セルを1行毎に出力");
dialogGroupEnd(hd);
dialogGroup(hd,"HTML");
//2.99C 970326 "IE3とNetscape3の全てのタグを使用"追加
dialogSelectIDB(hd,"使用するタグ(&H):",&shcfg->modeHtml,16,35,"標準","IE3の拡張タグも使用","Netscape3の拡張タグも使用","IE3とNetscape3の全てのタグを使用");
//
dialogControlHelp(hd,420);
dialogControlRefer(hd,\"-d \*.*");
dialogStrC(hd,"リンクベースディレクトリ(&D):",shcfg->szPathHtmlBase,20,cchof(shcfg->szPathHtmlBase),26);
//2.99C 970323
dialogSelectIDB(hd,"ファイル名指定時の変換(&F):",&shcfg->modeHtmlFilenameCase,24,20,"そのまま","小文字へ","大文字へ");
dialogGroupEnd(hd);
}
break;
}
case IPAGE_HELP: {
hd = dialogbig(" ヘルプ ");
dialogSetGroupRight(hd,DTCX * 60);
dialogGroup(hd,"外部ヘルプファイル(&E)");
dialogControlRefer(hd,"*.hlp");
dialogControlHelp(hd,171);
dialogStrC(hd,"ヘルプ&1:",text->tszhelp[0],8,cchof(text->tszhelp[0]),30);
dialogControlRefer(hd,"*.hlp");
dialogControlHelp(hd,172);
dialogStrC(hd,"ヘルプ&2:",text->tszhelp[1],8,cchof(text->tszhelp[1]),30);
dialogCaption(hd," (\"tx\"を指定するとWZ APIヘルプが引けます)");
dialogGroupEnd(hd);
break;
}
case IPAGE_CUST_COLOR: {
hd = dialogbig(" 色 ");
dialogSetGroupRight(hd,xright0);
dialogGroup(hd,"部位の色");
dialogControlHelp(hd,134);
dialogControlID(hd,IDD_MYCOLOR);//2.99C 970326
if (arg) {//3.00B1 970613
dialogCheckB(hd,"ビューモードの部位の色を指定する(&V)",&text->fMyColor);
} else {
dialogCheckB(hd,"[このファイルタイプ専用の指定を行う]",&text->fMyColor);
}
dialogSetH(hd);
dialogControlHelp(hd,19);
dialogColor(hd,"文字(&E)...","テキストの色",&text->rgbText,lcx2,NULL);
dialogControlHelp(hd,20);
dialogColor(hd,"背景(&C)...","テキストの背景",&text->rgbBack,lcx2,NULL);
dialogLF(hd);
dialogControlHelp(hd,21);
dialogColor(hd,"選択文字(&B)...","選択テキストの色",&text->rgbBlockText,lcx2,NULL);
dialogControlHelp(hd,22);
dialogColor(hd,"選択背景(&L)...","選択テキストの背景",&text->rgbBlock,lcx2,NULL);
dialogLF(hd);
dialogControlHelp(hd,23);
dialogColor(hd,"行番号(&N)...","行番号の色",&text->rgbNline,lcx2,NULL);
dialogControlHelp(hd,24);
dialogColor(hd,"アンダーライン(&U)...","アンダーラインの色",&text->rgbUnderline,lcx2,NULL);
dialogLF(hd);
dialogControlHelp(hd,25);
dialogColor(hd,"制御文字(&O)...","制御文字の色",&text->rgbControl,lcx2,NULL);
dialogControlHelp(hd,453);
dialogColor(hd,"URL(&I)...","URLの色",&text->rgbURL,lcx2,NULL);//2.93
dialogSetV(hd);
dialogLF(hd);
dialogGroupEnd(hd);
dialogAddPreview(hd,IDD_PREVIEW,5);//2.99B 970322 カスタマイズの色にプレビューを付けた
break;
}
case IPAGE_CUST_SCROLL: {
hd = dialogbig(" スクロール ");
dialogSetGroupRight(hd,xright0);
dialogHeadline(hd,"加速",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"加速");
dialogControlHelp(hd,43);
dialogControlGuide(hd,"行後から",10);
dialogControlUpdown(hd,1,20);
dialogIntB(hd,"加速開始(&S):",&text->nKeyScrollAccStart,16,lxval);
dialogControlHelp(hd,44);
dialogControlGuide(hd,"行ずつ",10);
dialogControlUpdown(hd,1,20);
dialogIntB(hd,"行数(&L):",&text->nKeyScrollAcc,16,lxval);
dialogControlHelp(hd,45);
dialogControlGuide(hd,"文字ずつ",10);
dialogControlUpdown(hd,1,30);
dialogIntB(hd,"横スクロール(&H):",&text->nCursorScrollH,16,lxval);
// dialogGroupEnd(hd);
dialogHeadline(hd,"自動スクロール",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"自動スクロール");
dialogControlHelp(hd,46);
dialogSelectIDW(hd,"速度(&O):",&text->iScrollSpeed,16,14,"0:最低速","1:低速","2:中速","3:高速","4:最高速");
dialogControlHelp(hd,47);
dialogCheckB(hd,"倍速(&D)",&text->fScrollSpeedDouble);
dialogControlHelp(hd,48);
dialogCheckB(hd,"画面上下ジャンプと連動(&E)",&text->fVzEs);
// dialogGroupEnd(hd);
dialogHeadline(hd,"詳細",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"詳細");
dialogControlHelp(hd,49);
dialogCheckB(hd,"スクロールバーでカーソル移動(&R)",&text->fCursorMoveBySB);
dialogControlHelp(hd,50);
dialogSelectIDB(hd,"ページング単位(&P):",&text->fHalfPage,16,16,"全画面","半画面");
// dialogGroupEnd(hd);
break;
}
case IPAGE_CUST_SAVE: {
hd = dialogbig(" 保存 ");
dialogSetGroupRight(hd,xright0);
dialogHeadline(hd,"自動保存",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"自動保存");
dialogControlHelp(hd,92);
dialogCheckB(hd,"自動保存を行う(&V)",&text->fAutoSave);
dialogControlHelp(hd,93);
dialogCheckB(hd,"フロッピーには自動保存しない(&F)",&context.autosaveDevice);
dialogSetH(hd);//2.99C 970327
dialogControlHelp(hd,97);
dialogControlUpdown(hd,1,300);
dialogControlGuide(hd,"回の編集を行った後、",20);dialogIntW(hd,NULL,&text->nAutoSaveCmd,0,lxval);
dialogControlHelp(hd,98);
dialogControlUpdown(hd,0,300);
dialogControlGuide(hd,"秒後に自動保存する",20);dialogIntW(hd,NULL,&text->secAutoSaveWait,0,lxval);
dialogLFSetV(hd);//2.99C 970327
dialogControlHelp(hd,94);
dialogSelectIDB(hd,"自動保存の方法(&S):",&context.autosaveMode,37,19,"ファイルを上書き","一時ファイルに保存");
dialogControlHelp(hd,95);
dialogSelectIDB(hd,"編集内容を保存しないで閉じた時(&C):",&context.autosaveAtQuit,37,19,"何もしない","一時ファイルを削除","一時ファイルに保存");
dialogControlHelp(hd,96);
dialogSelectIDB(hd,"オープン時に一時ファイルが残っている時(&M):",&context.autosaveAtOpen,37,19,"ステータスバーメッセージ","警告","一時ファイルを開く");
// dialogGroupEnd(hd);
dialogHeadline(hd,"上書き保存のバックアップ",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"上書き保存のバックアップ");
dialogControlHelp(hd,103);
dialogCheckB(hd,"バックアップする(&B)",&text->fBackup);
dialogControlHelp(hd,104);
dialogControlRefer(hd,\"-d \*.*");
dialogStrC(hd,"ディレクトリ(&D):",text->szBackup,12,cchof(text->szBackup),30);
// dialogGroupEnd(hd);
dialogHeadline(hd,"詳細",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"詳細");
dialogControlHelp(hd,109);
dialogCheckB(hd,"編集位置を保存(&P)",&text->fSaveEditContext);
dialogControlHelp(hd,128);
dialogCheckB(hd,"ウィンドウの位置を保存(&O)",&text->fSaveWindowPos);
// dialogGroupEnd(hd);
break;
}
case IPAGE_CUST_MENU: {
int dtcybox = DTCYBOX + (_fwin40 ? 3 : 1);
hd = dialogbig(" メニュー ");
dialogSetGroupRight(hd,xright0);
dialogHeadline(hd,"[メニュー]",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"[メニュー]");
DTRECT r1,r2,r3;
dialogGetPos(hd,&r1);
r1.cx = DTCX * 16;
r1.cy = DTCY;
dialogControlHelp(hd,58);
_dialogAddLtext(hd,"メニューバー(&M):",&r1);
r2 = r1;
r2.x += r1.cx + DTCX;
r2.cx = DTCX * 26;
r2.cy = DTCY * 10;
_dialogAddCombobox(hd,IDD_MENUBAR,&r2);
_dialogAddControlInfo(hd,IDD_MENUBAR);
//
r3 = r2;r3.x += r3.cx + DTCX;
dialogSetPos(hd,&r3);
dialogControlID(hd,IDD_CUSTMENUBAR);
dialogButton(hd,"編集(&E) >>",NULL,12);
//
r1.y += dtcybox;
r2.y += dtcybox;
r3.y += dtcybox;
//
dialogControlHelp(hd,59);
_dialogAddLtext(hd,"右クリック(&C):",&r1);
_dialogAddCombobox(hd,IDD_MENUMOUSER,&r2);
_dialogAddControlInfo(hd,IDD_MENUMOUSER);
//
dialogSetPos(hd,&r3);
dialogControlID(hd,IDD_CUSTCONTEXTMENU);
dialogButton(hd,"編集(&F) >>",NULL,12);
//
r1.y += dtcybox;
r2.y += dtcybox;
r3.y += dtcybox;
//
dialogControlHelp(hd,60);
_dialogAddLtext(hd,"選択時右クリック(&D):",&r1);
_dialogAddCombobox(hd,IDD_MENUMOUSERCLIP,&r2);
_dialogAddControlInfo(hd,IDD_MENUMOUSERCLIP);
//
dialogSetPos(hd,&r3);
dialogControlID(hd,IDD_CUSTCONTEXTMENUSELECT);
dialogButton(hd,"編集(&G) >>",NULL,12);
//
r1.y += dtcybox;
r2.y += dtcybox;
r3.y += dtcybox;
dialogSetPos(hd,&r1);
//
dialogControlHelp(hd,61);
dialogCheckB(hd,"英語メニュー(&L)",&shcfg->fEnglish);
// dialogGroupEnd(hd);
dialogHeadline(hd,"ファイルメニューのヒストリ表示",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"ファイルメニューのヒストリ表示");
dialogControlGuide(hd,"(0から70まで)",15);
dialogControlHelp(hd,86);
dialogControlUpdown(hd,0,70);
dialogIntW(hd,"メニュー表示数(&H):",&text->nDispFileHist,16,lxval);
dialogControlHelp(hd,87);
dialogSelectIDB(hd,"表示(&I):",&text->modeDispFileHist,16,16,"フルパス","ファイル名優先");
// dialogGroupEnd(hd);
break;
}
case IPAGE_CUST_TOOLBAR: {
hd = dialogbig(" ツールバー ");
dialogSetGroupRight(hd,xright0);
dialogHeadline(hd,"ツールバー",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"ツールバー");
DTRECT r1,r2;
dialogGetPos(hd,&r1);
r1.cx = DTCX * 20;
r1.cy = DTCY;
dialogControlHelp(hd,66);
_dialogAddLtext(hd,"[ツールバー(&T)]:",&r1);
r2 = r1;
r2.x += r1.cx + DTCX;
r2.cx = DTCX * 22;
r2.cy = DTCY * 10;
_dialogAddCombobox(hd,IDD_TOOLBAR,&r2);
_dialogAddControlInfo(hd,IDD_TOOLBAR);
//
r2.x += r2.cx + DTCX;
dialogSetPos(hd,&r2);
dialogControlID(hd,IDD_CUSTTOOLBAR);
dialogButton(hd,"編集(&E) >>",NULL,12);
//
r1.y += DTCY * 2;
dialogSetPos(hd,&r1);
//
dialogControlHelp(hd,67);
dialogControlGuide(hd,"ドット",6);
dialogControlUpdown(hd,8,40);
dialogIntXYW(hd,"ボタンサイズ(&B):",&shcfg->cxenvbuttonsize,&shcfg->cyenvbuttonsize,20,lxval);
dialogControlHelp(hd,68);
if (_fwin40) dialogControlEnable(hd,FALSE);//2.99D 970402 Win95/NT4.0ではツールバーのボタン上下の余白は変更できない
dialogControlGuide(hd,"ドット",6);
dialogControlUpdown(hd,0,10);
dialogIntB(hd,"ボタンの上下の余白(&I):",&shcfg->cyenvtoolbarint,20,lxval);
// dialogGroupEndGetRect(hd,&r);
break;
}
case IPAGE_CUST_MOUSE: {
hd = dialogbig(" マウス ");
dialogSetGroupRight(hd,xright0);
dialogHeadline(hd,"マウス",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"マウス");
#if 1//3.00A2 970505
dialogControlHelp(hd,130);
dialogSelectIDB(hd,"マウスカーソルを消す(&M):",&text->fMouseNoHide,29,20,"文字入力で消す","消さない","キー入力で消す");
#else
dialogControlHelp(hd,130);
dialogControlReverseBool(hd);
dialogCheckB(hd,"文字入力中に、マウスカーソルを消す(&C)",&text->fMouseNoHide);//2.00B
#endif
dialogControlHelp(hd,131);
dialogControlReverseBool(hd);
dialogCheckB(hd,"ドラッグ(&D)&&ドロップを使って、カットアンドペーストを行う",&text->fMouseNoClipDD);//2.00B
dialogControlHelp(hd,69);
dialogCheckB(hd,"マウスクリックアクティブ時に、カーソルをクリック位置に移動する(&W)",&text->fSetLocateByMouseFocus);
dialogControlHelp(hd,70);
dialogSelectIDB(hd,"マウスポインタの形状(&M):",&text->fMouseArrow,33,16,"Iビーム","矢印");
dialogControlHelp(hd,71);
dialogSelectIDW(hd,"マウスのドラッグによるスクロールの速度(&S):",&text->iMouseScrollSpeed,33,16,"0:最低速","1:低速","2:中速","3:高速","4:最高速");
dialogControlHelp(hd,72);
dialogSelectIDW(hd,"マウスによる範囲選択のモード(&E):",&text->modeMouseClip,33,16,"Windows標準","開始方向感応","方向感応(VZライク)");
// dialogGroupEnd(hd);
break;
}
case IPAGE_CUST_KINSOKU: {
hd = dialogbig(" 禁則 ");
dialogSetGroupRight(hd,xright0);
//
dialogControlHelp(hd,459);
dialogStrC(hd,"行頭禁則文字(&T):",shcfg->szKinsokuTop,16,cchof(shcfg->szKinsokuTop),40);
dialogControlHelp(hd,460);
dialogStrC(hd,"行末禁則文字(&E):",shcfg->szKinsokuEnd,16,cchof(shcfg->szKinsokuEnd),40);
dialogControlHelp(hd,461);
dialogStrC(hd,"句読点(&K):",shcfg->szKinsokuKuten,16,cchof(shcfg->szKinsokuKuten),40);
break;
}
case IPAGE_CUST_COMPATI: {
hd = dialogbig(" 互換性 ");
dialogSetGroupRight(hd,xright0);
//
dialogHeadline(hd,"VZライク",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"VZライク");
dialogControlHelp(hd,56);
dialogCheckB(hd,"テキストスタックのペースト後、カーソルを移動する(&B)",&text->fJumpTxPasteEnd);
dialogControlHelp(hd,119);
dialogCheckB(hd,"タイトルサーチを行う(&T)",&text->fSearchTitle);
dialogControlHelp(hd,467);
dialogCheckB(hd,"VZライクのタグジャンプを行う(&U)",&text->modeTagJump);
dialogControlHelp(hd,170);
dialogCheckB(hd,"ステータスバーにページングモードを表示する(&P)",&text->fDispPagingMode);
// dialogGroupEnd(hd);
//
dialogHeadline(hd,"MIFESライク",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"MIFESライク");
dialogControlHelp(hd,120);
dialogCheckB(hd,"検索文字列の取得を行う(&G)",&text->fMiTakeSearchText);
// dialogGroupEnd(hd);
//
dialogHeadline(hd,"その他の互換性",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"その他の互換性");
dialogControlHelp(hd,400);
dialogCheckB(hd,"高速オープンを無効にする(&H)",&shcfg->fNoOpenHigh);
dialogControlHelp(hd,468);
dialogCheckB(hd,"表示フォントサイズをドット単位で指定する(&D)",&shcfg->fSpecifyFontsizeByDot);
// dialogGroupEnd(hd);
//
break;
}
case IPAGE_CUST_KEY: {
int dtcybox = DTCYBOX + DTCYINT;
int lxguide = 19;
hd = dialogbig(" キー ");
dialogSetGroupRight(hd,xright0);
dialogHeadline(hd,"キー",lcxHeadline);//2.99C 970326
// dialogGroup(hd,"キー");
DTRECT r1,r2;
dialogGetPos(hd,&r1);
r1.cx = DTCX * lxguide;
r1.cy = DTCY;
dialogControlHelp(hd,62);
_dialogAddLtext(hd,"キー定義(&K):",&r1);
r2 = r1;
r2.x += r1.cx + DTCX;
r2.cx = DTCX * 23;
r2.cy = DTCY * 10;
_dialogAddCombobox(hd,IDD_KEY,&r2);
_dialogAddControlInfo(hd,IDD_KEY);
//
r2.x += r2.cx + DTCX;
dialogSetPos(hd,&r2);
dialogControlID(hd,IDD_CUSTKEY);
dialogButton(hd,"編集(&E) >>",NULL,12);
r1.y += dtcybox;
dialogSetPos(hd,&r1);
//2.96 970209 [互換性]-[ユーザインターフェース]を[キー]へ移動
dialogControlHelp(hd,421);
dialogSelectIDB(hd,"ユーザインターフェース(&U):",&text->modeEditor,lxguide,18,"Windows準拠","VZライク","MIFESライク");
//
dialogControlHelp(hd,63);
dialogSelectIDW(hd,"範囲選択(方向キー)(&S):",&text->modeKeyClip,lxguide,18,"Windows標準","開始方向感応","方向感応(VZライク)");
//
dialogControlHelp(hd,65);
dialogCheckB(hd,"Altキーにコマンドを割り当てる(&L)",&text->fUseMenuKey);
// dialogGroupEnd(hd);
#if 0//2.99C 970326 カスタマイズ-[キー|カーソルの形状]は[キー|詳細]に吸収
dialogGroup(hd,"カーソルの形状");
dialogControlHelp(hd,51);
dialogSelectIDW(hd,"挿入形状(&I):",&text->nCursorFaceInsert,13,14,"Windows標準","フル","縦半分","縦1/4","アンダーバー");
dialogControlHelp(hd,52);
dialogSelectIDW(hd,"上書形状(&O):",&text->nCursorFaceWrite,13,14,"Windows標準","フル","縦半分","縦1/4","アンダーバー");
dialogLFV(hd);//2.99C 970323
dialogSpaceH(hd);
dialogCheckB(hd,"カーソルを点滅しない(&B)",&shcfg->fNoCursorBlink);//2.98 970304
dialogGroupEnd(hd);
#endif
dialogSetIntXY(hd,0,0);
dialogHeadline(hd,"詳細",lcxHeadline);//2.99C 970326
// dialogGroup(hd,"詳細");
dialogSetIntXY(hd,0,0);
//2.99A 970321 カスタマイズ-[キー]-[日本語入力の制御] -> [キー]-[詳細]
dialogSetH(hd);
dialogControlHelp(hd,76);
dialogCheckB(hd,"カーソル位置で漢字変換(&C)",&text->fImeCursor);
#ifdef __FLAT__
//2.00B WZ32でATOK9を使用したときの",、、、"対策をとった
dialogControlHelp(hd,175);
dialogCheckB(hd,"ATOK9対応(&T)",&shcfg->fAtok9);//2.99 970320 ATOK->ATOK9
#endif
dialogSetV(hd);
dialogLF(hd);
dialogControlHelp(hd,75);
dialogCheckB(hd,"アクティブでなくなった時にIMEをOFF(&P)",&text->fImeOffKillFocus);
//2.99C 970323 編集ファイルを変えてもIMEのON/OFF状態を保持する設定を追加
dialogControlHelp(hd,427);
dialogCheckB(hd,"IMEのON/OFF状態を保持(&H)",&shcfg->fImeStatusHold);
//2.99C 970326
dialogResetInt(hd);
dialogSetH(hd);
dialogControlAddY(hd,DTCYKEY - DTCY);
dialogCaptionDynamic(hd,"カーソル形状(&I):",12);
dialogControlHelp(hd,51);
dialogSelectIDW(hd,"挿入モード",&text->nCursorFaceInsert,8,14,"Windows標準","フル","縦半分","縦1/4","アンダーバー");
dialogControlHelp(hd,52);
dialogSelectIDW(hd,"上書モード",&text->nCursorFaceWrite,8,14,"Windows標準","フル","縦半分","縦1/4","アンダーバー");
dialogLFSetV(hd);
dialogSetIntXY(hd,0,0);
dialogControlHelp(hd,469);
dialogCheckB(hd,"カーソルを点滅しない(&B)",&shcfg->fNoCursorBlink);//2.98 970304
dialogControlHelp(hd,55);
dialogCheckB(hd,"カーソルの横移動で、前行・次行へ移動しない(&N)",&text->fCursorNoLf);
//2.99C 970323
dialogControlHelp(hd,428);
dialogCheckB(hd,"方向キーで範囲の先頭・末尾にジャンプしない(&D)",&shcfg->fNoUpDownAtClipMouse);
//2.00E 縦書き時にダイヤモンドカーソルの縦横入れ替えを可能にした
dialogControlHelp(hd,346);
dialogCheckB(hd,"縦書き時に、ダイヤモンドカーソルの縦横を入れ替える(&V)",&text->fTxkeyVertical);
//2.99A 970321 カスタマイズ-[検索]-[検索ダイアログで、WZ拡張コンボボックスを使う] -> [キー]-[詳細]-[WZ拡張コンボボックスを使う]
dialogControlHelp(hd,64);
dialogCheckB(hd,"WZ拡張コンボボックスを使う(&O)",&text->fVzTextBoxHist);
dialogResetInt(hd);
// dialogGroupEnd(hd);
break;
}
case IPAGE_CUST_FILE: {
hd = dialogbig(" ファイル ");
dialogSetGroupRight(hd,xright0);
dialogHeadline(hd,"ファイルオープン時の処理",lcxHeadline);//2.97 970224
// dialogGroup(hd,"ファイルオープン時の処理");
dialogSetPosLF(hd);//2.99D 970402
dialogControlHelp(hd,81);
dialogCheckB(hd,"新規ファイルの確認(&N)",&text->fConfirmNewFile);
dialogControlHelp(hd,82);
dialogCheckB(hd,"UNIX/MACファイルの確認(&O)",&text->fConfirmForeignFile);
dialogControlHelp(hd,80);
dialogCheckB(hd,"漢字コードを自動判別(&K)",&shcfg->fKcAuto);
#ifdef __FLAT__
// WZ32では無効。
// Windowsがドキュメント指向になってきているので、無意味。
#else
dialogControlHelp(hd,135);
dialogCheckB(hd,"デフォルト拡張子以外は他アプリで開く(&T)",&shcfg->fenvwinextap);
#endif
dialogControlHelp(hd,351);
dialogCheckB(hd,"[バイナリ編集を開始(&B)]",&text->fConfigBinedit);
//2.99D 970402 ファイルプレビューをオフできるようにした
dialogLFV(hd);
dialogControlHelp(hd,490);
dialogCheckB(hd,"ファイルプレビュー(&V)",&shcfg->fFilePreview);
dialogLF(hd);
// dialogGroupEnd(hd);
dialogHeadline(hd,"ファイルの排他制御",lcxHeadline);//2.97 970224
// dialogGroup(hd,"ファイルの排他制御");
dialogControlHelp(hd,89);
dialogSelectIDB(hd,"排他制御(&S):",&shcfg->modeenvfileshare,16,16,"なし","上書き禁止","読み書き禁止");
//
dialogControlHelp(hd,90);
dialogCheckB(hd,"保存時にファイルの日付を調べる(&C)",&shcfg->fenvcheckfiletime);
dialogControlHelp(hd,91);
dialogCheckB(hd,"アクティブ時にファイルの日付を調べる(&D)",&shcfg->fCheckFiletimeActive);
// dialogGroupEnd(hd);
dialogHeadline(hd,"文書パス",lcxHeadline);//2.97 970224
// dialogGroup(hd,"文書パス");
dialogControlHelp(hd,83);
dialogCheckB(hd,"文書パス検索を行う(&R)",&shcfg->fenvpathsearch);
dialogControlHelp(hd,84);
dialogStrC(hd,"文書パス(&P):",shcfg->szenvpath,16,CCHENVPATH,39);
dialogControlHelp(hd,85);
dialogStrC(hd,"デフォルト拡張子(&E):",shcfg->szenvext,16,CCHENVPATH,39);
// dialogGroupEnd(hd);
break;
}
case IPAGE_CUST_OTHER: {
hd = dialogbig(" その他 ");
dialogSetGroupRight(hd,xright0);
dialogHeadline(hd,"ファイルオープンダイアログ",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"ファイルオープンダイアログ");
//1.01A [オープンダイアログ]に[小型]追加
dialogControlHelp(hd,78);
if (_fwin40) {
dialogSelectIDB(hd,"形状(&D):",&text->modeOfn,16,20,"Windows3.1タイプ","Windows95タイプ","小型(VZライク)");
} else {
dialogSelectIDB(hd,"形状(&D):",&text->modeOfn,16,20,"Windows3.1タイプ","小型(VZライク)");
}
dialogControlHelp(hd,79);
dialogStrC(hd,"ファイルの種類(&W):",text->szFilter,16,cchof(text->szFilter),28);
// dialogGroupEnd(hd);
//2.99 970313
dialogHeadline(hd,"フォルダ毎の漢字コード指定",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"フォルダ毎の漢字コード指定");
dialogSetH(hd);
{
int lx = 0;
dialogCaption(hd,"フォルダ(&F)");lx += 33 + 1;dialogSetPosLX(hd,lx);
dialogCaption(hd,"漢字コード");lx += 12 + 1;dialogSetPosLX(hd,lx);
dialogCaptionDynamic(hd,"改行コード",9);
dialogLF(hd);
//
for (int i = 0;i < DIRECTORYATR_N;i++) {
DIRECTORYATR* da = &shcfg->tDirAtr[i];
dialogControlHelp(hd,415);
dialogStrC(hd,NULL,da->szDirectory,0,cchof(da->szDirectory),33);
dialogControlHelp(hd,416);
dialogSelectIDB(hd,NULL,&da->kc,0,12,"シフトJIS","JIS","EUC","UNICODE");
dialogControlHelp(hd,417);
dialogSelectIDB(hd,NULL,&da->cr,0,9,"CR+LF","CR","LF");
dialogLF(hd);
}
}
dialogSetV(hd);
// dialogGroupEnd(hd);
dialogHeadline(hd,"その他の設定",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"その他の設定");
dialogSetIntXY(hd,0,0);
// 設定ダイアログが画面からはみ出しているときにチェックしてもらうので、
// はみ出ない様、上部にないといけない
//2.99D 970330 上部にもってきた
if (_fwin40) {
//2.00E Win95では"設定ダイアログを小さなフォントで表示(&S)"の設定は無効なので無くした
} else {
dialogControlHelp(hd,73);
dialogCheckB(hd,"設定ダイアログを小さなフォントで表示(&S)",&shcfg->fenvsmallfont);
if (!_fwin40) {
dialogControlEnable(hd,isexist3d());
dialogControlHelp(hd,473);
dialogCheckB(hd,"ダイアログの立体表示(&3)",&shcfg->fenvctl3d);
}
}
#if 1//2.99E 970403
dialogControlHelp(hd,418);
#ifndef __FLAT__
dialogControlEnable(hd,FALSE);
#endif
dialogSelectIDB(hd,"ちらつかない表示(&I):",&text->fConfigDispSilent,22,18,"OFF","ON","状況に応じてON");
#else
dialogControlHelp(hd,418);
dialogCheckB(hd,"ちらつかない表示(&I)",&text->fDispSilent);
#endif
//
dialogControlHelp(hd,88);
dialogCheckB(hd,"WZの常駐(&T)",&shcfg->fenvstayalways);
dialogControlHelp(hd,57);
dialogCheckB(hd,"詳細モードで、ページ番号を時々計算し直す(&P)",&text->fFlushNpageSometime);
int y = dialogGetPosY(hd);//3.00A5 970511
dialogControlHelp(hd,77);
dialogCheckB(hd,"警告音を鳴らす(&B)",&text->fbeep);
#if 1//3.00A 970501 「WZ音声化マクロ」を標準搭載
#ifdef __FLAT__
//3.00A5 970511
dialogSetPosLX(hd,26);
dialogSetPosY(hd,y);
//
dialogControlHelp(hd,500);
dialogCheckB(hd,"音声化(&K)",&text->fSpeak);
//3.00A5 970511
dialogSetPosLX(hd,40);
dialogSetPosY(hd,y);
dialogControlID(hd,IDD_CUSTSPEAK);
dialogButton(hd,"音声化の設定(&L) >>",NULL,20);
#endif
#else
#ifdef __FLAT__
if (text->share->env_speak) {
dialogCheckB(hd,"音声化(&K)",&text->fSpeak);
}
#endif
#endif
dialogResetInt(hd);
// dialogGroupEnd(hd);
break;
}
case IPAGE_CUST_EDIT: {
int lxguide = 20;
hd = dialogbig(" 編集 ");
dialogSetGroupRight(hd,xright0);
dialogHeadline(hd,"アンドゥ・世代管理",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"アンドゥ・世代管理");
dialogControlHelp(hd,101);
dialogCheckB(hd,"一連操作をまとめる(&C)",&text->fUndoContinue);
dialogControlHelp(hd,99);
dialogCheckB(hd,"バッファサイズを制限しない(&U)",&text->fUnlimitUndoBuff);
dialogControlHelp(hd,100);
dialogControlUpdown(hd,0,999);
dialogControlGuide(hd,"KB",3);
dialogIntW(hd,"最大バッファサイズ(&S):",&text->kbUndoBuffMax,18,lxval+1);
// dialogGroupEndGetRect(hd,&r1);
dialogHeadline(hd,"カットアンドペースト",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"カットアンドペースト");
dialogControlHelp(hd,348);
dialogSelectIDB(hd,NULL,&text->modeClipboard,0,40,"Windowsクリップボードとテキストスタック併用","Windowsクリップボードのみ使用","テキストスタックのみ使用");
dialogControlHelp(hd,349);
dialogSelectIDB(hd,"コピーとペーストの動作(&P):",&text->fClipboardWinBased,lxguide,19,"VZライク","Windows準拠","貼り付け後に選択");
dialogControlHelp(hd,452);
dialogCheckB(hd,"選択しなくても行コピー/行カットする(&L)",&text->fClipboardNoSelect);
// dialogGroupEnd(hd);
dialogHeadline(hd,"編集モード",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"編集モード");
//3.00B1 970522
dialogControlHelp(hd,510);
dialogCheckB(hd,"編集した行の表示(&N)",&shcfg->fDispLineEdit);
//
dialogControlHelp(hd,108);
#ifdef __FLAT__
dialogSelectIDB(hd,"テンポラリファイル(&M):",&text->fTempMem,lxguide,16,"ディスクに作成","作成しない");
#else
dialogSelectIDB(hd,"テンポラリファイル(&M):",&text->fTempMem,lxguide,16,"ディスクに作成","メモリに作成");
#endif
dialogControlHelp(hd,350);
dialogSelectIDB(hd,"[EOFコード(&E)]:",&text->fAppendEof,lxguide,16,"そのまま","付加","除去");
dialogControlHelp(hd,112);
dialogCheckB(hd,"[DDEのサーバ(&D)]",&text->fddeServer);
dialogControlHelp(hd,113);
dialogCheckB(hd,"テキストスタックフル時の警告(&W)",&text->fWarnTextStackFull);
// dialogGroupEnd(hd);
break;
}
case IPAGE_CUST_SEARCH: {
hd = dialogbig(" 検索 ");
dialogSetGroupRight(hd,xright0);
dialogGroup(hd,"詳細");
dialogSetIntXY(hd,0,0);
//2.99A 970320
dialogControlHelp(hd,454);
dialogSelectIDB(hd,"検索ダイアログのモード(&S):",&shcfg->fSearchModeless,22,10,"モーダル","モードレス");
//
dialogControlHelp(hd,54);
dialogCheckB(hd,"検索・ジャンプ後に、カーソルを画面中央行へ移動する(&J)",&text->fJumpCursorCenter);
dialogControlHelp(hd,455);
dialogControlReverseBool(hd);
dialogCheckB(hd,"単語毎に検索オプションを記憶する(&U)",&shcfg->fNoMemorySearchOption);
dialogControlHelp(hd,116);
dialogCheckB(hd,"拡張正規表現を使う(&V)",&text->fVwxwExRexp);
dialogControlHelp(hd,117);
dialogCheckB(hd,"見つけた文字列を選択する(&R)",&text->fDispSearch);
dialogControlHelp(hd,118);
dialogCheckB(hd,"見つけた文字列は置き換えない(&E)",&text->fNoReplaceSelSearch);
//2.97 970225
dialogControlHelp(hd,456);
dialogCheckB(hd,"検索ダイアログの検索文字列フォントをテキストと同じにする(&F)",&shcfg->fSearchSetFont);
dialogControlHelp(hd,457);
dialogCheckB(hd,"モードレス検索ダイアログに、[上へ],[下へ]ボタンを付ける(&B)",&shcfg->fSearchButton);
dialogControlHelp(hd,458);
dialogCheckB(hd,"カーソル位置の文字列を取り込んで、検索ダイアログを開く(&I)",&shcfg->fSearchGetText);
//2.92
dialogControlHelp(hd,114);
dialogSelectIDB(hd,"検索ダイアログの形状(&D):",&text->modeSearchDialog,22,10,"WZ1.0","標準","小型");
dialogResetInt(hd);
dialogGroupEnd(hd);
break;
}
case IPAGE_STYLE: {
//2.99F 970403 WZ16 StackOver対策に6つに分割してサブダイアログにしてみたが、
// サブダイアログが開かなかったので、分割しても意味ない。
// 2つに分割してもだめで6つに分割したが、それでもだめだった
int lcx = 85;
hd = dialogbig(" スタイル ");
dialogSetGroupRight(hd,DTCX * lcx);
dialogSetH(hd);
//
FONTNAMES* fontnamesStd = fontnamesNew(hd);
fontnamesStd->lfPitch = DEFAULT_PITCH;
fontnamesStd->lfCharSet = text->lfWestern ? DEFAULT_CHARSET : SHIFTJIS_CHARSET;
fontnamesStd->hdcPrinter = hdcPrinter;
fontnamesStd->fPrinterFontOnly = _fPrinterFontOnly;
fontnamesFlush(fontnamesStd);
//
FONTNAMES* fontnamesAnk = fontnamesNew(hd);
fontnamesAnk->lfPitch = DEFAULT_PITCH;
fontnamesAnk->lfCharSet = DEFAULT_CHARSET;
fontnamesAnk->hdcPrinter = hdcPrinter;
fontnamesAnk->fPrinterFontOnly = _fPrinterFontOnly;
fontnamesFlush(fontnamesAnk);
//
SELFONTARG arg;
memset(&arg,0,sizeof(arg));
arg.lcxFaceName = 16;
arg.lcxFaceSize = 7; //2.00C 6だとWin3.1で1桁しか出ない
FONTSTYLE* tfs = text->tFontstyle;
if (tfs) {
int lxg = 16; //2.00D 13にしても平気そう
dialogSpaceV(hd);
dialogSpaceV(hd);
dialogSetIntXY(hd,0,0);
dialogSetPosLX(hd,lxg);
dialogCaptionDynamic(hd,"太",2);
dialogCaptionDynamic(hd,"下",2);
dialogCaptionDynamic(hd,"斜",2);
dialogCaptionDynamic(hd,NULL,11);
dialogCaptionDynamic(hd,"印刷時の",23);
dialogCaptionDynamic(hd,"印刷時の",23);
dialogCaptionDynamic(hd,"印刷時",7);
dialogLF(hd);
//
dialogCaptionDynamic(hd,"[+ 一覧]:",10);//2.00C
dialogSetPosLX(hd,lxg);
dialogCaptionDynamic(hd,"字",2);
dialogCaptionDynamic(hd,"線",2);
dialogCaptionDynamic(hd,"体",2);
dialogCaptionDynamic(hd," 配置",11);
dialogCaptionDynamic(hd,"全角フォント",23);
dialogCaptionDynamic(hd,"半角フォント",23);
dialogCaptionDynamic(hd,"行どり",7);
dialogLF(hd);
//
dialogSetIntXY(hd,0,DTCYINT/2);
for (int ifont = FONTTX_BODY;ifont <= FONTTX_H6;ifont++) {
FONTSTYLE* fs = tfs + ifont;
int i = ifont - FONTTX_BODY;
static mchar* tsz[] = {
"本文",
"章<H1>","節<H2>","項<H3>",
"中見出し<H4>","小見出し<H5>","表題<H6>",
};
int lx = 0;
// title
dialogSetPosLX(hd,lx);
dialogCaptionDynamic(hd,tsz[i],lxg);
lx += lxg;
// checkbox
if (i == 0) {
// 本文
lx += 16;
} else {
dialogSetPosLX(hd,lx);
dialogControlHelp(hd,278);
dialogCheckB(hd,NULL,&context.head_tfBold[i-1]);
lx += 2;
dialogSetPosLX(hd,lx);
dialogControlHelp(hd,279);
dialogCheckB(hd,NULL,&context.head_tfUnderline[i-1]);
lx += 2;
dialogSetPosLX(hd,lx);
dialogControlHelp(hd,280);
dialogCheckB(hd,NULL,&context.head_tfItalic[i-1]);
lx += 2;
// align
dialogSetPosLX(hd,lx);
dialogControlHelp(hd,281);
dialogSelectIDB(
hd,NULL,&context.head_tmodeAlign[i-1],0,10,
"無指定","左揃え","中央揃え","右揃え"
);
lx += 10;
}
// font
dialogSetPosLX(hd,lx);
arg.fontnames = fontnamesStd;
dialogControlHelp(hd,282);
tidPrintFontStd[ifont] = dialogSelectFont(hd,NULL,0,
fs->tlfFaceName[IFONT_STD],
&fs->tlfHeight[IFONT_STD],
&arg
);
arg.lfCharSet = DEFAULT_CHARSET;
arg.fontnames = fontnamesAnk;
arg.fEnableDefaultFaceName = TRUE;
arg.fEnableDefaultHeight = TRUE;
dialogControlHelp(hd,283);
tidPrintFontAnk[ifont] = dialogSelectFont(hd,NULL,0,
fs->tlfFaceName[IFONT_ANK],
&fs->tlfHeight[IFONT_ANK],
&arg
);
//
if (i == 0) {
// 本文
} else {
dialogControlHelp(hd,284);
dialogSelectIDB(
hd,NULL,&context.head_nline[i-1],0,8,
"標準","1行","1.5行","2行","2.5行","3行","3.5行","4行"
);
}
//
dialogLF(hd);
dialogSpaceV(hd);
}
}
dialogLF(hd);
if (!_fwin40) dialogSetIntXY(hd,0,0);
//2.00B
dialogControlID(hd,IDD_STYLEPREVIEW);
dialogControlHelp(hd,285);
dialogButton(hd,"プレビュー(&V)",NULL,16);
//2.00C
dialogSpaceH(hd);
dialogControlID(hd,IDD_STYLEPREVIEWALWAYS);
dialogControlHelp(hd,245);
dialogCheck(hd,"常に更新(&L)",&context.fPreviewStyleAlways);
//
dialogSpaceH(hd);
dialogControlID(hd,IDD_STYLERESET);
dialogControlHelp(hd,286);
dialogButton(hd,"リセット(&R)",NULL,16);
//
dialogSpaceH(hd);
dialogControlID(hd,IDD_PRINTERFONT);
context.fDummy1 = _fPrinterFontOnly;
dialogControlHelp(hd,122);
dialogCheck(hd,"プリンタフォントのみ表示(&P)",&context.fDummy1);//2.00B
//
dialogLF(hd);
dialogSpaceV(hd);
//
DTRECT r;
dialogGetPos(hd,&r);
r.cx = DTCX * (lcx - 1);
r.cy = DTCY * (_fwin40 ? 7 : 5);
__dialogAddItem(hd,TXWS_SZCLASS,"",IDD_PREVIEW2,&r,TXWS_TEXT|TXWS_OPENTEXT|WS_VSCROLL|WS_BORDER|WS_CHILD|WS_VISIBLE);
break;
}
case IPAGE_CUST_MACRO: {
int lxg = 14;
int lx = 40;
hd = dialogbig(" マクロ ");
dialogSetGroupRight(hd,xright0);
dialogHeadline(hd,"パス",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"パス");
dialogControlHelp(hd,125);
dialogStrC(hd,"マクロパス(&M):",shcfg->szenvtxpath,lxg,CCHENVPATH,lx);
// dialogGroupEnd(hd);
dialogHeadline(hd,"イベントマクロ",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"イベントマクロ");
dialogSetIntXY(hd,0,1);// 縦は1は空けて置かないとWZ16の2D表示が見にくい
dialogControlHelp(hd,142);
dialogStrC(hd,"オープン(&O):",text->szmacroopen,lxg,cchof(text->szmacroopen),lx);
dialogControlHelp(hd,142);
dialogStrC(hd,"オープン後(&P):",shcfg->szmacroopenpost,lxg,cchof(shcfg->szmacroopenpost),lx);
dialogControlHelp(hd,142);
dialogStrC(hd,"保存(&S):",text->szmacrosave,lxg,cchof(text->szmacrosave),lx);
dialogControlHelp(hd,142);
dialogStrC(hd,"保存後(&T):",text->szmacrosavepost,lxg,cchof(text->szmacrosavepost),lx);
dialogControlHelp(hd,142);
dialogStrC(hd,"クローズ(&C):",text->szmacroclose,lxg,cchof(text->szmacroclose),lx);
dialogControlHelp(hd,142);
dialogStrC(hd,"ビュー(&V):",text->szmacroview,lxg,cchof(text->szmacroview),lx);
dialogResetInt(hd);
// dialogGroupEnd(hd);
break;
}
case IPAGE_CUST_MACRODEV: {
hd = dialogbig(" マクロ開発 ");
TXCOPTION *opt = &shcfg->configTxc;
dialogSetGroupRight(hd,xright0);
dialogHeadline(hd,"パス",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"パス(&P)");
#ifdef __FLAT__
dialogAddTxc32(hd);
dialogAddTxc16(hd);
#else
dialogAddTxc16(hd);
dialogAddTxc32(hd);
#endif
// dialogGroupEnd(hd);
// デフォルトではTX-C拡張機能使用可能にしておく
// そうしないとマクロのコンパイルに支障がでる
dialogHeadline(hd,"TX-Cコンパイルオプション",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"TX-Cコンパイルオプション");
dialogSetH(hd);
dialogControlHelp(hd,138);
dialogCheckB(hd,"自動makeを行う(&M)",&opt->fautomake);
dialogControlReverseBool(hd);
dialogControlHelp(hd,139);
dialogCheckB(hd,"変数の自動定義を有効にする(&V)",&opt->fNoAutoDef);
dialogLF(hd);
dialogSetV(hd);
dialogControlHelp(hd,140);
dialogSelectIDB(hd,"stdoutのオープン(&O):",&opt->fstdout,20,20,"エラー発生時のみ","エラー,警告発生時","常にオープン");
dialogControlHelp(hd,141);
dialogControlUpdown(hd,1,100);
dialogIntW(hd,"エラーメッセージ表示数(&E):",&opt->nErrorMessage,20,lxval);
// dialogGroupEnd(hd);
dialogHeadline(hd,"TX-C警告・レポート出力",lcxHeadline);//2.99C 970327
dialogSetPosLF(hd);//2.99C 970327
// dialogGroup(hd,"TX-C警告・レポート出力");
dialogControlHelp(hd,143);
dialogCheckB(hd,"関数は呼ばれない(&N)",&opt->fWarnFuncNotCall);
dialogControlHelp(hd,144);
dialogCheckB(hd,"signed/unsignedミスマッチ(&S)",&opt->fWarnSignMismatch);
dialogControlHelp(hd,145);
dialogCheckB(hd,"小さいサイズへ代入(&L)",&opt->fWarnLoseDigit);
dialogLFV(hd);
dialogControlHelp(hd,146);
dialogCheckB(hd,"変数自動定義(&D)",&opt->fReportAutoDef);
dialogControlHelp(hd,147);
dialogCheckB(hd,"関数呼び出し変換(&F)",&opt->fReportTxapi);
// dialogGroupEnd(hd);
break;
}
case IPAGE_CUST_STATBAR: {
hd = dialogbig(" ステータスバー ");
dialogSetGroupRight(hd,xright0);
dialogGroup(hd,"ステータスバーに表示する項目");
dialogControlHelp(hd,161);
dialogCheckB(hd,"カーソル位置(&P)",&text->fDispLocate);
dialogControlHelp(hd,162);
dialogCheckB(hd,"挿入/上書(&I)",&text->fDispOverwrite);
dialogControlHelp(hd,163);
dialogCheckB(hd,"編集(&E)",&text->fDispEdit);
dialogControlHelp(hd,164);
dialogCheckB(hd,"選択(&B)",&text->fDispSelecting);
dialogControlHelp(hd,165);
dialogCheckB(hd,"段落書式・文字装飾(&F)",&text->fDispParaCharatr);
dialogControlHelp(hd,166);
dialogCheckB(hd,"画面表示モード(&D)",&text->fDispEditmode);
dialogControlHelp(hd,167);
dialogCheckB(hd,"右端に余白(&S)",&text->fDispSL_RSPACE);
dialogControlHelp(hd,168);
dialogCheckB(hd,"2ストロークキー(&K)",&text->fDispPrekey);
dialogControlHelp(hd,169);
dialogCheckB(hd,"2ストロークキーを左側に表示(&L)",&text->fDispPrekeyLeft);
dialogControlHelp(hd,472);
dialogCheckB(hd,"インライン整形モード(&O)",&text->fDispInlineform);
dialogGroupEnd(hd);
break;
}
case IPAGE_CUST_WINDOW: {
hd = dialogbig(" ウィンドウ ");
dialogSetGroupRight(hd,xright0);
dialogHeadline(hd,"余白",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"余白(&S)");
dialogControlHelp(hd,150);
dialogControlUpdown(hd,0,20);
dialogControlGuide(hd,"ドット空ける",12);
dialogIntB(hd,"横書き時に上端を(&H)",&text->nSpaceTopH,20,lxval);
dialogControlHelp(hd,151);
dialogControlUpdown(hd,0,20);
dialogControlGuide(hd,"ドット空ける",12);
dialogIntB(hd,"縦書き時に両端を(&V)",&text->nSpaceTopV,20,lxval);
dialogControlHelp(hd,152);
dialogCheckB(hd,"左端を空ける(&L)",&text->fSpaceLeft);
// dialogGroupEndGetRect(hd,&r1);
dialogHeadline(hd,"詳細",lcxHeadline);//2.99C 970327
// dialogGroup(hd,"詳細");
dialogControlHelp(hd,127);
dialogCheckB(hd,"デスクトップ内に納める(&I)",&text->fWsInsideDesk);
dialogControlHelp(hd,126);
dialogCheckB(hd,"上下分割時に、ツールバーを消す(&W)",&text->fWsWideAtSplit);
#ifndef __FLAT__//1.91A WZ32ではファイル名の大文字/小文字表示はしない
dialogControlHelp(hd,153);
dialogCheckB(hd,"タイトルバーに、ファイル名を小文字で表示(&M)",&text->fDispPathLc);
#endif
dialogControlHelp(hd,129);
dialogCheckB(hd,"タイトルバーに、ファイル名をフルパスで表示(&U)",&text->fDispPathFull);
#if 0 //2.99D 970329 未完成
// プロポーショナルスクロールバーは難しいので見送り
// 常にnlineAllを計算するのは困難なので。
// 代わりに文書の情報に行数表示機能を付けた。
if (_fwin40) {//2.99D 970329
dialogControlHelp(hd,437);
dialogCheckB(hd,"プロポーショナルスクロールバーを使う(&P)",&shcfg->fScrollbarProp);
}
#endif
// dialogGroupEnd(hd);
break;
}
}
return hd;
}
// hwndのidのコントロールのEnableを設定する
// idのコントロールがフォーカスを持っている時に!Enableするとキー入力が効かなくなるので、
// その場合は、idFocusのコントロールにフォーカスを移す
static void myEnableWindow(HWND hwnd,int id,BOOL fEnable,int idFocus)
{
HWND hctrl = GetDlgItem(hwnd,id);
if (!fEnable && GetFocus() == hctrl) {
SetFocus(GetDlgItem(hwnd,idFocus));
}
EnableWindow(hctrl,fEnable);
}
static void FlushWidth(HWND hwnd)
{
#if 1//2.99A 970321
myEnableWindow(
hwnd,
IDD_WIDTH,
IsDlgButtonChecked(hwnd,IDD_WIDTHMODE+0),//2.99C 970323 2->0 文字数が指定できなかった
IDD_WIDTHMODE
);
#else
int id = IDD_WIDTHMODE;
BOOL fcheck = !IsDlgButtonChecked(hwnd,id);
myEnableWindow(hwnd,IDD_WIDTH,!fcheck,IDD_WIDTHMODE);//1.99G
#endif
}
static void FlushStyle(HWND hwnd)
{
int id = IDD_STYLE;
HWND hctrl = GetDlgItem(hwnd,id);
txConfigOp(text1,TXCONFIGOP_PRINTENUM,(LPVOID)hctrl);
comboboxSelectStr(hctrl,context.text->szlpstyle);
}
//2.00B [設定]-[スタイル]の高速化、UI改善
static void FlushPrinter(HWND hwnd,BOOL fClicked)
{
int id = IDD_PRINTERFONT;
BOOL fcheck = IsDlgButtonChecked(hwnd,id);
if (fClicked) fcheck ^= 1;
_fPrinterFontOnly = fcheck;
{
HDIALOG hd = dialogFromHwndPshpage(hwnd);
{
FONTNAMES* fontnames = fontnamesFromId(hd,tidPrintFontStd[FONTTX_BODY]);
if (fontnames) {
fontnames->fPrinterFontOnly = fcheck;
fontnamesFlush(fontnames);
}
}
{
FONTNAMES* fontnames = fontnamesFromId(hd,tidPrintFontAnk[FONTTX_BODY]);
if (fontnames) {
fontnames->fPrinterFontOnly = fcheck;
fontnamesFlush(fontnames);
}
}
{
//2.00B WZ16でSetCursor(LoadCursor())はコンパイルできないので分割
HCURSOR hcursor = LoadCursor(NULL,IDC_WAIT);
hcursor = SetCursor(hcursor);
{
int i;
for (i = FONTTX_BODY;i <= FONTTX_H6;i++) {
dialogWriteItem(hd,tidPrintFontStd[i]);
dialogWriteItem(hd,tidPrintFontAnk[i]);
}
}
SetCursor(hcursor);
}
}
}
static void FlushMenubar(HWND hwnd,BOOL fChange)
{
tx* text = context.text;
int id = IDD_MENUBAR;
HWND hctrl = GetDlgItem(hwnd,id);
mchar* szhead = "bar_";
int lchHead = strlen(szhead);
mchar* szmenu = &text->szMenu[lchHead];
if (fChange) {
GetWindowText(hctrl,szmenu,CCHNAME - lchHead);
} else {
SendMessage(hctrl,CB_RESETCONTENT,0,0);
txmenuPickup(hctrl,PICKUP_MENUBARWZ,NULL);
//
comboboxSelectStr(hctrl,szmenu);
}
}
static void FlushMenu(HWND hwnd,int id,BOOL fChange)
{
tx* text = context.text;
HWND hctrl = GetDlgItem(hwnd,id);
mchar* szmenu = (id == IDD_MENUMOUSER) ? text->szMenuMouseR : text->szMenuMouseRClip;
if (fChange) {
GetWindowText(hctrl,szmenu,CCHNAME);
} else {
ComboBox_ResetContent(hctrl);
txmenuPickup(hctrl,PICKUP_MENU,NULL);
comboboxSelectStr(hctrl,szmenu);
}
}
static void FlushKey(HWND hwnd,BOOL fChange)
{
tx* text = context.text;
int id = IDD_KEY;
HWND hctrl = GetDlgItem(hwnd,id);
mchar* szkey = context.shcfg.szenvkey;
if (fChange) {
GetWindowText(hctrl,szkey,CCHNAME);
} else {
ComboBox_ResetContent(hctrl);
txmenuPickup(hctrl,PICKUP_KEYWZ,NULL);
comboboxSelectStr(hctrl,szkey);
}
}
static void FlushToolbar(HWND hwnd,BOOL fChange)
{
tx* text = context.text;
int id = IDD_TOOLBAR;
HWND hctrl = GetDlgItem(hwnd,id);
mchar* szname = text->szToolbar;
if (fChange) {
GetWindowText(hctrl,szname,CCHNAME);
} else {
ComboBox_ResetContent(hctrl);
txmenuPickup(hctrl,PICKUP_TOOLBARWZ,NULL);
comboboxSelectStr(hctrl,szname);
}
}
static mchar _szMsMintyo[] = "MS 明朝";
static mchar _szTimesNewRoman[] = "Times New Roman";
static mchar _szMsGossick[] = "MS ゴシック";
static mchar _szArial[] = "Arial";
static void ResetStyle(HDIALOG hd,TX* text)
{
dialogRead(hd);
FONTSTYLE* tfs = text->tFontstyle;
if (tfs) {
int ipointBody = 12;
// body
FONTSTYLE* fs = tfs + FONTTX_BODY;
strcpy(fs->tlfFaceName[IFONT_STD],_szMsMintyo);
fs->tlfHeight[IFONT_STD] = ipointBody;
strcpy(fs->tlfFaceName[IFONT_ANK],_szTimesNewRoman);
fs->tlfHeight[IFONT_ANK] = ipointBody;
// head
int i;
for (i = 0;i < TITLE_N;i++) {
context.head_tfBold[i] = FALSE;
context.head_tfUnderline[i] = FALSE;
context.head_tfItalic[i] = FALSE;
context.head_tmodeAlign[i] = 0;
context.head_nline[i] = 0;
//
int ipoint = ipointBody + ipointBody * (TITLE_N - i - 1) / (TITLE_N - 1);
FONTSTYLE* fs = tfs + i + FONTTX_H1;
strcpy(fs->tlfFaceName[IFONT_STD],_szMsGossick);
fs->tlfHeight[IFONT_STD] = ipoint;
strcpy(fs->tlfFaceName[IFONT_ANK],_szArial);
fs->tlfHeight[IFONT_ANK] = ipoint;
}
}
dialogWrite(hd);
}
static void FlushConfig(HDIALOG hd)
{
txConfigOp(context.text,TXCONFIGOP_EXTLOAD,0);
contextFromText(context.text);//3.00A2 970506 設定ダイアログで「読み込み」をしても折り返し幅が読み込まれなかった
dialogWrite((HDIALOG)dialogGetCustdata(hd));
}
static void FlushConfigList(HWND hwnd)
{
HWND hctrl = GetDlgItem(hwnd,IDD_EXTLIST);
int isel = SendMessage(hctrl,LB_GETCURSEL,0,0);
txConfigOp(text,TXCONFIGOP_EXTENUMLB,(LPVOID)hctrl);
SendMessage(hctrl,LB_SETCURSEL,isel,0);
}
//2.00E2 テキストの設定名を取得し、リストボックスのカレントとして表示
static void cdSetCur(HWND hwnd)
{
HWND hctrl = GetDlgItem(hwnd,IDD_EXTLIST);
mchar szcfgname[CCHNAME];
txConfigOp(context.text,TXCONFIGOP_EXTGETNAME,szcfgname);
SendMessage(hctrl,LB_SETCURSEL,
SendMessage(hctrl,LB_FINDSTRINGEXACT,-1,(LPARAM)szcfgname),0
);
}
static BOOL groupAdd(TX* text,mchar* szGroup)
{
if (strchr(szGroup,'[') || strchr(szGroup,']')) {
information("設定の名前に次の文字は使えません\n\t[ ]");
return FALSE;
}
//
if (!text->szfilename[0]) {
//3.00A2 970506 「ファイル|新規作成」で作成した新規ファイルで、[文書の設定]-[読み込み]を行うと「設定名前バッファオーバーフロー」エラーになった
if (!stricmp(szGroup,_szcfgStd)) return FALSE; // "標準"への関連付けなら、無視
information(
"(無題)のファイルに、設定「%s」を関連付けることはできません。\n"
"「%s」の設定内容を標準の設定として読み込みました。\n"
"[文書の設定]ダイアログで[OK]すると、標準の設定が「%s」の設定内容になります。\n"
"標準の設定を変更すると、思わぬファイルが思わぬ設定になったりしますから、気を付けてください。"
,szGroup,szGroup,szGroup
);
return FALSE;
}
// 基本設定名と同じならグループに登録しない
mchar szcfgname[CCHNAME];
txConfigOp(text,TXCONFIGOP_EXTGETNAMEPRIM,szcfgname);
//information("%s %s",szGroup,szcfgname);
if (!stricmp(szcfgname,szGroup)) return FALSE;
// 基本設定名がファイル名なら登録しない
if (szcfgname[0] != '.') return FALSE;
//
if (txConfigOp(text,TXCONFIGOP_EXTGRP_ADD,szGroup)) {
return TRUE;
} else {
information("設定の名前バッファがいっぱいで登録できません");
return FALSE;
}
}
BOOL dlgprocConfigDetail(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message) {
case WM_INITDIALOG: {
HWND hctrl = GetDlgItem(hwnd,IDD_EXTLIST);
txConfigOp(text,TXCONFIGOP_EXTENUMLB,(LPVOID)hctrl);
#if 1//2.00E2
cdSetCur(hwnd);
#else
SendMessage(hctrl,LB_SETCURSEL,0,0);
#endif
break;
}
case WM_COMMAND: {
HDIALOG hd = dialogFromHwnd(hwnd);
HDIALOG hd0 = hd;
HDIALOG hdParent = (HDIALOG)dialogGetCustdata(hd0);
int id = WM_COMMAND_GetId(wParam);
switch(id) {
case IDOK:
case IDD_SAVE:
case IDD_NEW:
case IDD_EXTLIST:
case IDD_DELETE:
case IDD_LOAD: {
HWND hctrl = GetDlgItem(hwnd,IDD_EXTLIST);
int isel = SendMessage(hctrl,LB_GETCURSEL,0,0);
if (isel != LB_ERR) {
mchar szname[CCHWORD];
SendMessage(hctrl,LB_GETTEXT,isel,(LPARAM)szname);
switch(id) {
case IDOK: {//2.00E2
strcpy(context.text->szfilename,szname);
FlushConfig(hd);
//
groupAdd(text,szname);
return FALSE;
}
case IDD_EXTLIST: {
EnableWindow(GetDlgItem(hwnd,IDD_DELETE),strcmp(szname,SZCFG_STD));
break;
}
case IDD_DELETE: {
int ret = question("ファイルタイプ「" + szname + "」の設定を削除します。よろしいですか?");
if (ret == IDYES) {
#if 1//2.00E2 グルーピング化により、sznameと違う設定が削除されることがある
txConfigOp(text,TXCONFIGOP_EXTNAME_DEL,szname);
txConfigOp(text,TXCONFIGOP_EXTGRP_DEL,szname);
FlushConfigList(hwnd);
cdSetCur(hwnd);
FlushConfig(hd);
#else
TX text;
strcpy(text.szfilename,szname);
txConfigOp(&text,TXCONFIGOP_EXTDEL,0);
#endif
}
break;
}
#if 0//2.00E2
case IDD_NEW: {//2.00E2
HDIALOG hd = dialog("新規登録");
txstr szstr;
dialogStr(hd,"名前(&N):",szstr,10,30);
if (dialogOpen(hd)) {
int ret = IDYES;
if (txConfigOp(context.text,TXCONFIGOP_EXTNAME_SEARCH,(LPVOID)szstr)) {
ret = question(szstr + "の設定は存在します。\n上書きして良いですか?");
}
if (ret == IDYES) {
dialogRead(hdParent);
groupAdd(text,szstr);
txConfigOp(context.text,TXCONFIGOP_EXTNAME_SAVE,(LPVOID)szstr);
FlushConfigList(hwnd);
cdSetCur(hwnd);
}
}
break;
}
case IDD_SAVE: {
dialogRead(hdParent);
mchar szcfgname[CCHNAME];//2.00E2
txstr szcfg = (mchar*)txConfigOp(context.text,TXCONFIGOP_EXTGETNAME,szcfgname);
mchar szcfgPrim[CCHNAME];//2.00E2
txConfigOp(context.text,TXCONFIGOP_EXTGETNAMEPRIM,szcfgPrim);
BOOL fNew = FALSE;
if (!stricmp(szcfg,szcfgPrim)) {
szcfg += "の設定は既に登録されています";
} else {
fNew = TRUE;
szcfg = szcfgPrim;
szcfg += "の設定を新しく登録しますか?";
}
HDIALOG hd = dialog("設定の登録");
dialogCaption(hd,szcfg);
dialogLFV(hd);
int lcx = 14;
int lcx2 = 25;
dialogSetPosLF(hd);
dialogSetPosLX(hd,lcx2 - lcx);
if (fNew) {
dialogControlID(hd,IDOK);
dialogCmdDefault(hd,"はい(&Y)",lcx);
dialogControlID(hd,IDCANCEL);
dialogCmd(hd,"いいえ(&N)",lcx);
} else {
dialogOK(hd,lcx);
dialogCancel(hd,lcx);
}
dialogSpaceV(hd);
dialogSetPosLX(hd,0);
dialogControlID(hd,IDD_SAVETO);
dialogCmd(hd,"名前を付けて登録(&A)...",lcx2);
//
int ret = dialogOpen(hd);
if (ret == IDOK) {
if (fNew) {
txConfigOp(context.text,TXCONFIGOP_EXTSAVEPRIM,0);
FlushConfigList(hwnd);
}
} else if (ret == IDD_SAVETO) {
HDIALOG hd = dialog("名前を付けて設定を登録");
txstr szstr;
dialogStr(hd,"名前(&N):",szstr,10,30);
if (dialogOpen(hd)) {
int ret = IDYES;
if (txConfigOp(context.text,TXCONFIGOP_EXTNAME_SEARCH,(LPVOID)szstr)) {
ret = question(szstr + "の設定は存在します。\n上書きして良いですか?");
}
if (ret == IDYES) {
txConfigOp(context.text,TXCONFIGOP_EXTNAME_SAVE,(LPVOID)szstr);
FlushConfigList(hwnd);
}
}
}
break;
}
#endif
case IDD_LOAD: {
strcpy(context.text->szfilename,szname);
FlushConfig(hd);
break;
}
}
}
DoCaption(dialogGetBaseWindow(hdParent));//2.00E2
return TRUE;
}
case IDD_UPDATEALL: {
txstr sz(500);
sz += "現在設定中の内容を全てのファイルタイプの設定として登録します。\n";
sz += "メニューとツールバーの種類は既定値になります。\n";
sz += "HTMLファイル,LOGファイル,INIファイル,Cファイルの設定は一部規定値になります。\n";
sz += "よろしいですか?";
int ret = question(sz);
if (ret == IDYES) {
dialogRead(hdParent);
//information("%s",context.text->tFontstyle[FONTTX_TEXT].tlfFaceName[IFONT_STD]);
txConfigOp(context.text,TXCONFIGOP_EXTSETALL,0);
//information("%s",context.text->tFontstyle[FONTTX_TEXT].tlfFaceName[IFONT_STD]);
}
DoCaption(dialogGetBaseWindow(hdParent));//2.00E2
return TRUE;
}
case IDD_INIT: {
int ret = question("全てのファイルタイプの設定を既定値に戻します。\nよろしいですか?");
if (ret == IDYES) {
txConfigOp(text,TXCONFIGOP_CONFIGDELALL,0);
FlushConfig(hd);
FlushConfigList(hwnd);
}
DoCaption(dialogGetBaseWindow(hdParent));//2.00E2
return TRUE;
}
}
break;
}
}
return FALSE;
}
// プロパティーシートではdlgprocのhwndはページのウィンドウハンドルである。
// hwndからシートのhwndを得る
static HWND hwndGetSheet(HWND hwnd)
{
if (_fpsh) return GetParent(hwnd);
return hwnd;
}
static void flush(BOOL fConfigTemp);
static void CloseConfig(HDIALOG hd)
{
#if 1//2.00E for WZ32
#if 1//2.00E2 WZ32で2回一時設定すると変だった
PostMessage(dialogGetBaseWindow(hd),WM_COMMAND,IDCANCEL,0);//2.00E "一時設定"すると設定ダイアログを閉じる様にした
#else
EndDialog(dialogGetBaseWindow(hd),FALSE);
#endif
#else
PostMessage(hwnd,WM_COMMAND,IDCANCEL,0);//2.00E "一時設定"すると設定ダイアログを閉じる様にした
#endif
}
static BOOL IsEdit(HDIALOG hd)
{
// 設定ダイアログが編集されているかどうか返す。
dialogRead(hd);
if (
memcmp(
&context._text.configTop,
&context._text0.configTop,
&context._text.configEnd - &context._text.configTop
)
) return TRUE;
if (memcmp(&text->share->config,&context.shcfg,sizeof(TXCONFIGSHARE))) {
return TRUE;
}
return FALSE;
}
static BOOL IsEditWindowsize(void)
{
// ウィンドウサイズの指定が編集されているかどうか返す。
if (context._text.modeWs != context._text0.modeWs) return TRUE;
if (context._text.lcxWindowDefault != context._text0.lcxWindowDefault) return TRUE;
if (context._text.lcyWindowDefault != context._text0.lcyWindowDefault) return TRUE;
return FALSE;
}
static BOOL IsClose(HDIALOG hd)
{
if (IsEdit(hd)) {
int ret = question(
"カスタマイズダイアログを閉じます。\n"
"\n"
"設定した内容を登録しますか?"
);
switch(ret) {
case IDCANCEL: return FALSE;
case IDYES: {
// save config
PostMessage(dialogGetBaseWindow(hd),WM_COMMAND,IDOK,0);
return TRUE;
}
default: {
CloseConfig(hd);
return TRUE;
}
}
}
CloseConfig(hd);
return TRUE;
}
waita
{
#ifdef __FLAT__
Sleep(200);
#endif
}
static BOOL ToCustmize(HDIALOG hd,mchar* szmacro)
{
if (IsClose(hd)) {
if (_fwin40) {
// 設定ダイアログが消えてすぐにキーカスタマイズダイアログが出て、
// ちらつき感があるのを抑える
callPost("\m.waita");
}
callPost(szmacro);
return TRUE;
}
return FALSE;
}
extern "edit" BOOL TXAPI txuiConvertChar(TX* text,CHARCONVERT* cc,BOOL fAc);
static void flushMyColor(HWND hwnd,HDIALOG hd)
{
if (!IsDlgButtonChecked(hwnd,IDD_MYCOLOR)) {
dialogRead(hd);
txConfigOp(context.text,TXCONFIGOP_SETMYCOLORDEFAULT,0);
dialogWrite(hd);
}
}
BOOL dlgprocConfig(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HDIALOG hd = dialogFromHwnd(hwnd);
switch(message) {
case WM_INITDIALOG: {
if (_fWindowPos) {
SetWindowPos(hwndGetSheet(hwnd),NULL,_x,_y,0,0,SWP_NOSIZE);
}
return INITDIALOG_FALSE;
}
case WM_TXDIALOGPAGECHANGE: {
#if 0//2.00C
context.fPageChanging = TRUE;
#endif
break;
}
case WM_TXDIALOGPAGECHANGED: {
#if 0//2.00C Win3.1でスタイルのプレビューができなかった。メッセージ送信のタイミングが違う様だ
context.fPageChanging = FALSE;
#endif
_ipageNow = wParam;
switch(ipageLogical(wParam)) {
case IPAGE_FORM: {
FlushWidth(hwnd);
FlushPreview(hwnd,IDD_PREVIEW);
break;
}
case IPAGE_DISPLAY: {
FlushProp(hwnd);
FlushPreview(hwnd,IDD_PREVIEW);
break;
}
case IPAGE_STYLE: {
if (context.fPreviewStyleAlways) {
FlushPreview(hwnd,IDD_PREVIEW2);
}
break;
}
case IPAGE_COLOR: {
FlushPreview(hwnd,IDD_PREVIEW3);
break;
}
case IPAGE_CUST_COLOR: {//2.99B 970322
FlushPreview(hwnd,IDD_PREVIEW);
break;
}
case IPAGE_CUST_MENU: {
FlushMenubar(hwnd,FALSE);
FlushMenu(hwnd,IDD_MENUMOUSER,FALSE);
FlushMenu(hwnd,IDD_MENUMOUSERCLIP,FALSE);
break;
}
case IPAGE_CUST_TOOLBAR: {
FlushToolbar(hwnd,FALSE);
break;
}
case IPAGE_CUST_KEY: {
FlushKey(hwnd,FALSE);
break;
}
}
break;
}
case WM_TXDIALOGCOLORSELECTED: {
myPostMessage(hwnd,WM_TXUSER,0,0);
break;
}
case WM_COMMAND: {
HDIALOG hd0 = hd;
int id = WM_COMMAND_GetId(wParam);
int notify = WM_COMMAND_GetNotify(wParam,lParam);
int iPage = ipageLogical(dialogGetPage(hd));
if (IDD_TABTOP <= id && id <= IDD_TABEND) {
// タブは無視
return FALSE;
}
// プロパティーシートではWM_TXDIALOGENTERIDLEが来ない
// Win3.1でもこの方式の方がENTERIDLEよりも動作が自然
myPostMessage(hwnd,WM_TXUSER,id,0);
//
switch(id) {
case IDD_NEW: {//2.00E2
HDIALOG hd;
BOOL fNewFile = !context.text->szfilename[0];
if (fNewFile) {
hd = dialog("新規登録 - (無題)の設定は新規登録できません");
} else {
hd = dialog("新規登録");
}
txstr szstr;
txConfigOp(context.text,TXCONFIGOP_EXTGETNAMEPRIM,(LPVOID)szstr);
if (fNewFile) dialogControlEnable(hd,FALSE);
dialogStr(hd,"名前(&N):",szstr,10,30);
dialogLFV(hd);
int lcx = 12;
if (fNewFile) dialogControlEnable(hd,FALSE);
dialogOK(hd,lcx);
dialogCancel(hd,lcx);
dialogSpaceV(hd);
dialogHelp(hd,lcx,"wz.chp 501");//3.00A2 970506 「設定|新規登録」ダイアログにヘルプを付けた
//
if (dialogOpen(hd)) {
int ret = IDYES;
if (txConfigOp(context.text,TXCONFIGOP_EXTNAME_SEARCH,(LPVOID)szstr)) {
ret = question(szstr + "の設定は存在します。\n上書きして良いですか?");
}
if (ret == IDYES) {
dialogRead(hd0);
groupAdd(text,szstr);
txConfigOp(context.text,TXCONFIGOP_EXTNAME_SAVE,(LPVOID)szstr);
// sh->szExtGroupはWZ.EXEが更新するので
strcpy(context.shcfg.szExtGroup,text->share->config.szExtGroup);
DoCaption(dialogGetBaseWindow(hd0));
}
}
return TRUE;
}
case IDD_DETAIL: {//2.00E2 グループ化対応により全面変更
HDIALOG hd = dialog("設定の読み込み");
int lcx = 16;
int mode = 0;
DTRECT r;
dialogSetHookEx(hd,"\m.dlgprocConfigDetail");
dialogSetCustdata(hd,(DWORD)hd0);
dialogSetContexthelp(hd,TRUE);
dialogCaption(hd,"一覧:");
dialogGetPos(hd,&r);
r.cx = DTCX * 30;
r.cy = DTCY * 14;
dialogControlHelp(hd,357);
__dialogAddItem(hd,"LISTBOX",NULL,IDD_EXTLIST,&r,LBS_NOTIFY|LBS_SORT|WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP|WS_GROUP|WS_BORDER);
_dialogAddControlInfo(hd,IDD_EXTLIST);
r.y += r.cy + DTCYINT;
dialogSetPos(hd,&r);
dialogLFV(hd);
#if 1//3.00A2 970506 「設定の読み込み」ダイアログボタン名称変更。OK->読み込み,キャンセル->閉じる
dialogControlID(hd,IDOK);
dialogCmd(hd,"読み込み",lcx);
dialogControlID(hd,IDCANCEL);
dialogCmd(hd,"閉じる",lcx);
dialogSpaceV(hd);
#else
dialogOK(hd,lcx);
dialogCancel(hd,lcx);
dialogSpaceV(hd);
#endif
#if 1//2.00E2
#if 0//2.00E2
dialogControlID(hd,IDD_NEW);
dialogCmd(hd,"新規(&N)...",lcx);
#endif
#else
dialogControlID(hd,IDD_LOAD);
dialogCmd(hd,"読み込み(&L)",lcx);
dialogControlID(hd,IDD_SAVE);
dialogCmd(hd,"登録(&S)...",lcx);
#endif
dialogControlID(hd,IDD_DELETE);
dialogControlHelp(hd,354);
dialogCmd(hd,"削除(&D)...",lcx);
dialogSpaceV(hd);
dialogControlID(hd,IDD_UPDATEALL);
dialogControlHelp(hd,355);
dialogCmd(hd,"全て更新(&A)...",lcx);
dialogControlID(hd,IDD_INIT);
dialogControlHelp(hd,356);
dialogCmd(hd,"初期化(&I)...",lcx);
//3.00A2 970506 「設定の読み込み」ダイアログにヘルプボタンを追加
dialogHelp(hd,lcx,"wz.chp 501");//3.00A3 970507 簡素化
dialogOpen(hd);
// キャプションを更新する
DoCaption(dialogGetBaseWindow(hd0));//2.00E2
//2.00E2 sh->szExtGroupはWZ.EXEが更新するので
strcpy(context.shcfg.szExtGroup,text->share->config.szExtGroup);
return TRUE;
}
case IDD_PLUG: {
HDIALOG hd = dialog("テキストファイルへの設定の埋め込み");
dialogSwitch(hd,&context.fWzconfig,"埋め込む","埋め込まない");
dialogCaption(hd," (設定ダイアログをOKすると埋め込み/埋め込みの解除を行います)");
//3.00A5 970511
dialogLFV(hd);
int lcx = 12;
dialogOK(hd,lcx);
dialogCancel(hd,lcx);
dialogSpaceV(hd);
dialogHelp(hd,lcx,"wz.chp 174");//3.00A5 970511 「設定|埋め込み」ダイアログにヘルプを付けた
//
if (dialogOpen(hd)) {
}
return TRUE;
}
case IDD_TEMP: {
//2.00B 設定ダイアログを閉じずにテキストに設定内容を反映する、[一時設定]ボタンを追加
HCURSOR hcursor = LoadCursor(NULL,IDC_WAIT);
hcursor = SetCursor(hcursor);
// 位置を覚える
// プロパティーシートではWM_MOVEがこないからここで覚える
// プロパティーシートで[更新]を使う事にtryしてみたが、うまくいかなかった
// [更新]を押すと[キャンセル]を押してもTRUEが返されてしまう。
_fWindowPos = TRUE;
WINDOWPLACEMENT wplace;
wplace.length = sizeof(WINDOWPLACEMENT);
GetWindowPlacement(hwndGetSheet(hwnd),(LPWINDOWPLACEMENT)&wplace);
_x = wplace.rcNormalPosition.left;
_y = wplace.rcNormalPosition.top;
//
dialogRead(hd);
flush(TRUE);
SetCursor(hcursor);
context.ret = TRUE;//2.00E2 uiConfigStyleExの"一時設定"対応
CloseConfig(hd);
return TRUE;
}
case IDD_HELP: {
int idh = 0;
switch(iPage) {
case IPAGE_FORM:idh = IDHC_FORMAT;break;
case IPAGE_COLOR:idh = IDHC_COLOR;break;
case IPAGE_CUST_SCROLL:idh = IDHC_SCROLL;break;
case IPAGE_CUST_KEY:idh = IDHC_INTERFACE;break;
case IPAGE_CUST_FILE:idh = IDHC_FILE;break;
case IPAGE_EDIT:idh = IDHC_EDIT;break;
case IPAGE_CUST_SEARCH:idh = IDHC_SEARCH;break;
case IPAGE_FORMDT:idh = IDHC_STRING;break;
case IPAGE_STYLE:idh = IDHC_STYLE;break;
case IPAGE_CUST_MACRO:idh = IDHC_MACRO;break;
case IPAGE_CUST_WINDOW:idh = IDHC_WINDOW;break;
case IPAGE_HELP:idh = IDHC_HELP;break;
}
if (idh) helpContext("wz",idh);
return TRUE;
}
case IDD_COLORPARSE: {
if (dialogColorParse(context.text)) {
myPostMessage(hwnd,WM_TXUSER,0,0);
}
return TRUE;
}
case IDD_CUST_COLOR_VIEWMODE:
case IDD_CUST_COLOR: {//2.99C 970326 new
BOOL fViewmode = (id == IDD_CUST_COLOR_VIEWMODE);
HDIALOG hd1 = configtxCreatePage(IPAGE_CUST_COLOR,NULL,fViewmode);
if (hd1) {
dialogSetContexthelp(hd1,TRUE);
dialogSetHookEx(hd1,"\m.dlgprocCustColor");
//
dialogRead(hd);
// backup
#define SIZE_COLOR (&text->MyColorEnd - &text->fMyColor)
TX buff;
memcpy(&buff.fMyColor,&context.text->fMyColor,SIZE_COLOR);
//
if (dialogOpen(hd1)) {
dialogWrite(hd);
#if 0// (未完成)
if (fViewmode) {
TXCONFIGSHARE* shcfg = &text->share->config;
shcfg->viewmodeRgbText = text->rgbText;
shcfg->viewmodeRgbBack = text->rgbBack;
shcfg->viewmodeRgbBlockText = text->rgbBlockText;
shcfg->viewmodeRgbBlock = text->rgbBlock;
shcfg->viewmodeRgbNline = text->rgbNline;
shcfg->viewmodeRgbUnderline = text->rgbUnderline;
shcfg->viewmodeRgbControl = text->rgbControl;
shcfg->viewmodeRgbURL = text->rgbURL;
}
#endif
} else {
// restore
memcpy(&context.text->fMyColor,&buff.fMyColor,SIZE_COLOR);
}
}
return TRUE;
}
case IDD_AUTOCORRECT: {
txuiConvertChar(context.text,&context.text->charconvert,TRUE);
return TRUE;
}
case IDD_NEWKEYWORDFILE: {
if (dialogEditKeyword(context.text)) {
dialogWrite(hd);
}
return TRUE;
}
case IDD_FORMATSTR: {
dialogFormatstr(context.text);
return TRUE;
}
case IDD_CUSTKEY: {
ToCustmize(hd,"custmize.key");
return TRUE;
}
case IDD_CUSTMENUBAR: {
ToCustmize(hd,"custmize.menubar");
return TRUE;
}
case IDD_CUSTTOOLBAR: {
ToCustmize(hd,"custmize.toolbar");
return TRUE;
}
case IDD_CUSTCONTEXTMENU: {
ToCustmize(hd,"custmize.menuMouseR");
return TRUE;
}
case IDD_CUSTCONTEXTMENUSELECT: {
ToCustmize(hd,"custmize.menuMouseRClip");
return TRUE;
}
case IDD_CUSTSPEAK: {//3.00A5 970511
ToCustmize(hd,"speak.txspeakConfig");
return TRUE;
}
}
//statprintf("%d",iPage);
switch(iPage) {
case IPAGE_FORM: {
switch(id) {
case IDD_VERTICAL: {
return FALSE;
}
}
break;
}
case IPAGE_STYLE: {
switch(id) {
case IDD_STYLERESET: {
ResetStyle(hd,context.text);
return TRUE;
}
case IDD_PRINTERFONT: {
FlushPrinter(hwnd,TRUE);
return FALSE;
}
case IDD_STYLEPREVIEWALWAYS: {
context.fPreviewStyleAlways = !IsDlgButtonChecked(hwnd,id);
CheckDlgButton(hwnd,id,context.fPreviewStyleAlways);
return TRUE;
}
case IDD_STYLEPREVIEW: {
HCURSOR hcursor = LoadCursor(NULL,IDC_WAIT);
hcursor = SetCursor(hcursor);
context.fPreviewStyle = TRUE;
FlushPreview(hwnd,IDD_PREVIEW2);
SetCursor(hcursor);
return TRUE;
}
}
break;
}
case IPAGE_CUST_MENU:
case IPAGE_CUST_KEY:
case IPAGE_CUST_TOOLBAR: {
if (notify == CBN_SELCHANGE) {
switch(id) {
case IDD_MENUBAR: {
FlushMenubar(hwnd,TRUE);
break;
}
case IDD_MENUMOUSER:
case IDD_MENUMOUSERCLIP: {
FlushMenu(hwnd,id,TRUE);
break;
}
case IDD_KEY: {
FlushKey(hwnd,TRUE);
break;
}
case IDD_TOOLBAR: {
FlushToolbar(hwnd,TRUE);
break;
}
}
}
break;
}
}
return FALSE;
}
#if 0
case WM_PAINT: {
int iPage = ipageLogical(dialogGetPage(hd));
if (iPage == IPAGE_FORM) {
FlushPreview(hwnd);
}
break;
}
case WM_TXDIALOGENTERIDLE: {
static DWORD wtm0;
DWORD wtm = GetCurrentTime();
if (wtm > wtm0 + 100) { // たまにフラッシュする
wtm0 = wtm;
myPostMessage(hwnd,WM_TXUSER,0,0);
}
break;
}
#endif
case WM_TXUSER: {
int idFrom = wParam;
int id = 0;
_fInTxuser = TRUE;
if (idFrom == IDD_MYCOLOR) {
//2.99C 970326 色の設定で、「このファイルタイプに専用の指定を行う」のチェックを外したとき、標準の色に戻らなかった
flushMyColor(hwnd,hd);
}
switch(ipageLogical(dialogGetPage(hd))) {
case IPAGE_FORM: {
FlushWidth(hwnd);
id = IDD_PREVIEW;
break;
}
case IPAGE_DISPLAY: {
if (idFrom == IDD_PROP) FlushProp(hwnd);
id = IDD_PREVIEW;
break;
}
case IPAGE_STYLE: {
if (context.fPreviewStyleAlways) {
id = IDD_PREVIEW2;
}
break;
}
case IPAGE_COLOR: id = IDD_PREVIEW3;break;
case IPAGE_CUST_COLOR: id = IDD_PREVIEW;break;//2.99B 970322
}
if (id) {
FlushPreview(hwnd,id);
}
_fInTxuser = FALSE;
break;
}
}
return FALSE;
}
//2.99C 970326 new
BOOL dlgprocCustColor(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message) {
case WM_INITDIALOG: {
SetWindowText(hwnd,"色のカスタマイズ");
myPostMessage(hwnd,WM_TXUSER,0,0);
break;
}
case WM_COMMAND: {
int id = WM_COMMAND_GetId(wParam);
int notify = WM_COMMAND_GetNotify(wParam,lParam);
myPostMessage(hwnd,WM_TXUSER,id,0);
break;
}
case WM_ACTIVATE: {
myPostMessage(hwnd,WM_TXUSER,0,0);
break;
}
case WM_TXUSER: {
int id = wParam;
_fInTxuser = TRUE;
if (id == IDD_MYCOLOR) {
flushMyColor(hwnd,dialogFromHwnd(hwnd));
}
FlushPreview(hwnd,IDD_PREVIEW);
_fInTxuser = FALSE;
break;
}
}
return FALSE;
}
static void flush(BOOL fConfigTemp)
{
BOOL fWsEdited = IsEditWindowsize();
BOOL fDispFullEdited = (context._text.fDispFull != context._text0.fDispFull);
TX* text = context.textf;//2.91 メール編集(インライン)で、一時設定ができなかった
wzlock(LOCK_CONFIG);
{
text->share->config = context.shcfg;
contextToText(text);
// SET Vertical - Horizon
txConfigOp(text,TXCONFIGOP_EXTSETDISPSTYLE,0);
//information("%d",text->width);
//information("%d",text->share->textBase.width);
//1.99H setup nSpaceTop
txConfigOp(text,TXCONFIGOP_EXTSETUPDISPSTYLE,0);
//
if (!fConfigTemp) {
// 設定を保存
if (txGetViewmode(text)) {
//3.00A4 970509 ビューモードの「ファイル|文書の設定」で[OK]すると、"ビューモード"の設定で保存するようにした
txConfigOp(text,TXCONFIGOP_EXTSAVEPRIM,"ビューモード");
}
if (text->fConfigsavePrim) {//3.00A 970502 Grepで設定保存すると、他の設定も一部(ステータスバーの表示など)書き換えられた
txConfigOp(text,TXCONFIGOP_SHARESAVE,0);
txConfigOp(text,TXCONFIGOP_EXTSAVE,0);
} else if (context.fWzconfig || text->fWztext) {
//2.00C3 configFileは出力しない。
txConfigOp(text,TXCONFIGOP_CONFIGSAVE2,0);
} else {
txConfigOp(text,TXCONFIGOP_CONFIGSAVE,0);
}
}
}
wzunlock(LOCK_CONFIG);
// 設定のテキスト埋めこみ、WZ文書ファイル
if (!fConfigTemp && !text->fEditViewMode && !text->fSemiViewMode) {
if (text->editmode == 0) {
if (context.fWzconfig) {
text->fWzconfig = context.fWzconfig;
txConfigOp(text,TXCONFIGOP_TEXTWRITE,0);
text->fEdit = TRUE; //txConfigOpではfEditは変化しないため
} else {
if (text->fWzconfig) {
txConfigOp(text,TXCONFIGOP_TEXTDEL,0);
text->fEdit = TRUE; //txConfigOpではfEditは変化しないため
text->fWzconfig = FALSE;
}
}
} else {
//1.99C
text->fWzconfig = context.fWzconfig;
#if 1//2.00B 設定が保存される場合のみ(埋め込み、.WZ)編集フラグを立てる
if (text->fWzconfig || text->fWztext) {
text->fEdit = TRUE;
}
#else
text->fEdit = TRUE;
#endif
}
}
if (txGetViewmode(text)) {
//1.99K
// viewmodeでは編集フラグを変更しない
text->fEdit = context.fEdit;
}
if (_fNoFlush) {
//2.00E2
} else {
#if 0 // やはりやめた方がいい。
if (context.shcfg.fEnglish && !context.fEnglish0) {
//2.99D 970328
// 英語メニューは設定ダイアログで英語メニューをONにしたときに自動で作成するようにした
call("custmize.createEnglishMenu");
}
#endif
// キー、メニュー、ツールバーの設定をフラッシュする
txFlushUI(text);
//
if (fDispFullEdited && !textf->fDispFull) {
call("window.FullY1");//3.00A2 970507 FullY->FullY1
}
//information("%d",text->modeWs);
if (txGetPageTurn(text) || fWsEdited) {
//1.99E ページめくりモードではウィンドウサイズ変更しないと
txFlushEx(text,TXFLUSHEX_TXFLUSHALL);
} else {
txFlush(text);
}
if (fDispFullEdited && textf->fDispFull) {
call("window.FullY2");
}
}
}
static void contextFromText(TX* text)
{
//3.00A2 970506 new
context.autosaveDevice = text->autosaveDevice;
context.autosaveMode = text->autosaveMode;
context.autosaveAtQuit = text->autosaveAtQuit;
context.autosaveAtOpen = text->autosaveAtOpen;
context.fAfArticleDisc = text->fAfArticleDisc;//2.98 970309
context.fInlineformScenario = text->fInlineformScenario;//2.99 970319
context.fInlineformIndentSpace = text->fInlineformIndentSpace;//2.99 970319
context.fInlineformQueryQuit = text->fInlineformQueryQuit;//3.00A2 970507
context.modeInlineformZenhanSpace = text->modeInlineformZenhanSpace;//3.00A2 970507
context.modeInlineformWordlap = text->modeInlineformWordlap;//3.00A2 970507
context.lcxInlineformIndentTogaki = text->lcxInlineformIndentTogaki;//3.00A2 970507
#if 0//3.00A3 970508 ト書きとタブインデントサイズ共通にしたが、標準値が違う
if (context.lcxInlineformIndentTogaki == 0) context.lcxInlineformIndentTogaki = 6;//3.00A2 970507
#endif
context.lcxInlineformIndentSerifu = text->lcxInlineformIndentSerifu;
if (context.lcxInlineformIndentSerifu == 0) context.lcxInlineformIndentSerifu = 2;//3.00A2 970507
context.fAfTitle = text->fAfTitle;//2.98 970309
context.modeWidth = text->tmodeWidth[text->dispstylemode];
context.width = text->twidth[text->dispstylemode];
//
if (context.text->tFontstyle) {
memcpy(context.text->tFontstyle,text->tFontstyle,SIZE_TFONTSTYLE);
int i;
for (i = 0;i < TITLE_N;i++) {
FONTSTYLE* fs = &text->tFontstyle[FONTTX_H1 + i];
context.head_nline[i] = fs->perNline ? (fs->perNline - 50) / 50 : 0;
context.head_tfBold[i] = fs->fBold;
context.head_tfUnderline[i] = fs->fUnderline;
context.head_tfItalic[i] = fs->fItalic;
context.head_tmodeAlign[i] = fs->modeAlign;
}
}
}
// ipage:何ページを出すか(IPAGE_Nならすべて出す)
static BOOL __dialogConfig(int ipage,HDC hdcPrinter)
{
_ipageMode = ipage;
mchar buff[CCHPATHNAME];
getcaption(text,buff);
HDIALOG hd = dialogbig(buff);
dialogSetContexthelp(hd,TRUE);
#if 0//1.99A 印刷と分離した
// init lp
txLpOp(text,TXLPOP_FLUSHDEVMODE);// get hDevMode
#endif
//
structClear(context);//2.00B
context.textf = text;//2.91
context._text = *text;
context.text = &context._text;
#if 1//3.00A2 970506
context.fEnglish0 = text->share->config.fEnglish;//2.99D 970328
//
context.fWzconfig = text->fWzconfig;
context.fEdit = text->fEdit;//1.99K
//
context.text->tFontstyle = NULL;
if (text->tFontstyle) {
context.text->tFontstyle = memAlloc(SIZE_TFONTSTYLE);
}
//
contextFromText(text);
#else
context.fEnglish0 = text->share->config.fEnglish;//2.99D 970328
context.autosaveDevice = text->autosaveDevice;
context.autosaveMode = text->autosaveMode;
context.autosaveAtQuit = text->autosaveAtQuit;
context.autosaveAtOpen = text->autosaveAtOpen;
context.fAfArticleDisc = text->fAfArticleDisc;//2.98 970309
context.fInlineformScenario = text->fInlineformScenario;//2.99 970319
context.fInlineformIndentSpace = text->fInlineformIndentSpace;//2.99 970319
context.fAfTitle = text->fAfTitle;//2.98 970309
#if 1//2.99A 970321
#if 1//2.99A 970321
context.modeWidth = text->tmodeWidth[text->dispstylemode];
context.width = text->twidth[text->dispstylemode];
#else
context.modeWidth = 2;
if (text->fSetWidthByLp) {
context.modeWidth = 1;
} else if (text->fSetWidthByWindow) {
context.modeWidth = 0;
}
#endif
#endif
context.fWzconfig = text->fWzconfig;
context.fEdit = text->fEdit;//1.99K
//
context.text->tFontstyle = NULL;
if (text->tFontstyle) {
UINT cb = SIZE_TFONTSTYLE;
LPVOID p = memAlloc(cb);
if (p) {
memcpy(p,text->tFontstyle,cb);
context.text->tFontstyle = p;
}
{
int i;
for (i = 0;i < TITLE_N;i++) {
FONTSTYLE* fs = &text->tFontstyle[FONTTX_H1 + i];
context.head_nline[i] = fs->perNline ? (fs->perNline - 50) / 50 : 0;
context.head_tfBold[i] = fs->fBold;
context.head_tfUnderline[i] = fs->fUnderline;
context.head_tfItalic[i] = fs->fItalic;
context.head_tmodeAlign[i] = fs->modeAlign;
}
}
}
#endif
//
searchmodeToSearchopt(text->searchmodeInit,&context.searchopt);
{
int i;
for (i = 0;i < FORMAT_N;i++) {
// strtoescによるバッファあふれを考慮
mchar buff[CCHFORMAT * 3];
strcpy(buff,context.text->tszformat[i]);
strtoesc(buff);
strcpymax(context.text->tszformat[i],buff,CCHFORMAT);
}
for (i = 0;i < TITLE_N;i++) {//3.00B1 970612 見出しに'\'を指定できなかった
// strtoescによるバッファあふれを考慮
mchar buff[CCHTITLE * 3];
strcpy(buff,context.text->tsztitle[i]);
strtoesc(buff);
strcpymax(context.text->tsztitle[i],buff,CCHTITLE);
}
}
//
wzlock(LOCK_CONFIG);
#if 0// test
{
SHARE* sh = text->share;
information("%s",sh->tszfkey[0][0]);
information("%s %d",sh->context.szenvkey,(LPBYTE)&sh->config - (LPBYTE)sh);
}
#endif
context.shcfg = text->share->config;
wzunlock(LOCK_CONFIG);
//
PMACROFUNC pfunc;
macroGetFuncAddress("dlgprocConfig",&pfunc);
dialogSetHook(hd,&pfunc);
//
if (ipage == IPAGES_CONFIG) {
int i = 0;
int iPage;
for (iPage = 0;iPage <= IPAGE_HELP;iPage++) {
_tLogicalPage[i++] = iPage;
HDIALOG hd1 = configtxCreatePage(iPage,hdcPrinter,0);
if (hd1) dialogAddPage(hd,hd1);
}
if (txGetViewmode(text)) {//3.00B1 970613
iPage = IPAGE_VIEWMODE;
_tLogicalPage[i++] = iPage;
HDIALOG hd1 = configtxCreatePage(iPage,hdcPrinter,0);
if (hd1) dialogAddPage(hd,hd1);
}
dialogSetStartPage(hd,_ipageConfig);
} else if (ipage == IPAGES_CUSTMIZE) {
int i = 0;
int iPage;
for (iPage = IPAGE_CUST_TOP;iPage <= IPAGE_CUST_END;iPage++) {
_tLogicalPage[i++] = iPage;
HDIALOG hd1 = configtxCreatePage(iPage,hdcPrinter,0);
if (hd1) dialogAddPage(hd,hd1);
}
dialogSetStartPage(hd,_ipageCustmize);
} else {
_tLogicalPage[0] = ipage;
HDIALOG hd1 = configtxCreatePage(ipage,hdcPrinter,0);
if (hd1) dialogAddPage(hd,hd1);
dialogSetStartPage(hd,0);
}
dialogAddPageComplete(hd);//1.97
//
if (!_fPrint) {
dialogControlHelp(hd,133);
dialogAddPageButton(hd,IDD_TEMP,"一時設定(&A)",12);
if (_ipageMode == IPAGES_CUSTMIZE) {
//3.00B1 970610 カスタマイズダイアログでは読み込みボタンを廃止した
} else {
dialogControlHelp(hd,173);
if (_fwin40) {
dialogAddPageButton(hd,IDD_DETAIL,"読み込み(&X)...",14);
} else {
dialogAddPageButton(hd,IDD_DETAIL,"読込(&X)...",10);
}
#if 1//3.00A5 970511 "文書の設定"と"カスタマイズ"ダイアログで、"新規登録"ボタンのコンテキストヘルプの内容を変更した
if (_ipageMode == IPAGES_CONFIG) {
dialogControlHelp(hd,509);
} else {
dialogControlHelp(hd,353);
}
#else
dialogControlHelp(hd,353);
#endif
dialogAddPageButton(hd,IDD_NEW,"新規登録(&Q)...",14);//2.95 970127 N->Q (Nはツライので)
}
if (
!text->fWztext && !text->fEditViewMode && !text->fSemiViewMode &&
_ipageMode != IPAGES_CUSTMIZE
) {
//2.00B WZ文書ファイルや、ビューモードのファイルでは、[埋め込み]ボタンを無くした
dialogControlHelp(hd,174);
if (_fwin40) {
dialogAddPageButton(hd,IDD_PLUG,"埋め込み(&Y)...",14);
} else {
dialogAddPageButton(hd,IDD_PLUG,"埋込(&Y)...",10);
}
}
#if 0//2.00E2 WZ16で収まらないし、内容が古くなった
dialogAddPageButton(hd,IDD_HELP,"ヘルプ(&H)",10);
#endif
}
//2.95 970127
context._text0 = *context.text;
//
if (dialogOpen(hd) == IDOK) {
context.ret = TRUE;//2.00E2
if (_fPrint) {
flush(TRUE);
} else {
flush(FALSE);
}
if (_ipageMode == IPAGES_CUSTMIZE) {
#if 1//2.99C 970324 設定ダイアログをOKしたときに常駐を解除しないようにした
if (text->share->config.fenvstayalways) {
call("file.flushStay");
}
#else
//2.96 970209
call("file.flushStay");
#endif
}
}
if (_ipageMode == IPAGES_CONFIG) {
_ipageConfig = _ipageNow;
} else if (_ipageMode == IPAGES_CUSTMIZE) {
_ipageCustmize = _ipageNow;
}
if (context.text->tFontstyle) {
memFree(context.text->tFontstyle);
}
idFontBase = 0;//2.98 970307
return context.ret;
}
//2.00B
static BOOL _dialogConfig(int ipage)
{
HDC hdcPrinter = txLpOp(text,TXLPOP_GETIC);
//information("%d",hdcPrinter);
BOOL ret = __dialogConfig(ipage,hdcPrinter);
txLpOp(text,TXLPOP_RELEASEIC);
return ret;
}
uiConfigForm
{
return _dialogConfig(IPAGE_FORM);
}
//2.00E2 [ツール]-[個別設定]から削除
uiConfigStyle
{
return _dialogConfig(IPAGE_STYLE);
}
//2.00D
uiConfigStylePrint
{
BOOL ret = FALSE;
_fPrint = TRUE;
ret = _dialogConfig(IPAGE_STYLE);
_fPrint = FALSE;
return ret;
}
//2.00E2
BOOL TXAPI txuiConfigStyleEx(TX* text)
{
BOOL ret = FALSE;
LPRINT* lp = text->lp;
if (txGetUsePrintFontstyle(text)) {
BYTE buff[SIZE_TFONTSTYLE];
memcpy(buff,text->tFontstyle,SIZE_TFONTSTYLE);
memcpy(&text->tFontstyle[FONTTX_BODY],lp->tFontstyle,sizeof(lp->tFontstyle));
//
ret = uiConfigStylePrint();
//
memcpy(lp->tFontstyle,&text->tFontstyle[FONTTX_BODY],sizeof(lp->tFontstyle));
memcpy(text->tFontstyle,buff,SIZE_TFONTSTYLE);
} else {
ret = uiConfigStyle();
}
return ret;
}
//2.00E2 [ファイル]-[印刷スタイルの設定]追加
uiConfigStyleEx
{
_fNoFlush = TRUE;
txConfigOp(text,TXCONFIGOP_PRINTREAD,(LPVOID)text->szlpstyle);
if (txuiConfigStyleEx(text)) {
txConfigOp(text,TXCONFIGOP_PRINTWRITE,(LPVOID)text->szlpstyle);
txFlush(text);
}
_fNoFlush = FALSE;
}
uiConfigColor
{
return _dialogConfig(IPAGE_COLOR);
}
uiConfigScroll
{
return _dialogConfig(IPAGE_CUST_SCROLL);
}
uiConfigUi
{
return _dialogConfig(IPAGE_CUST_KEY);
}
uiConfigFile
{
return _dialogConfig(IPAGE_CUST_FILE);
}
uiConfigEdit
{
return _dialogConfig(IPAGE_EDIT);
}
uiConfigSearch
{
return _dialogConfig(IPAGE_CUST_SEARCH);
}
uiConfigFormString
{
return _dialogConfig(IPAGE_FORMDT);
}
uiConfigMacro
{
return _dialogConfig(IPAGE_CUST_MACRO);
}
uiConfigWindow
{
return _dialogConfig(IPAGE_CUST_WINDOW);
}
uiConfigHelp
{
return _dialogConfig(IPAGE_HELP);
}
BOOL TXCMDBASE uiConfig(TX* text)
{
// 文書の設定
//{#VZ} +{F1}
//{#MI} +{F1}
//{#EMACS} +{F1}
return _dialogConfig(IPAGES_CONFIG);
}
BOOL TXCMDBASE uiCustmize(TX* text)
{
// カスタマイズ
return _dialogConfig(IPAGES_CUSTMIZE);
}
BOOL TXCMDBASE uiConfigNetwork(TX* text)
{
// ネットワーク版WZの共有設定
if (
!text->share->env_network
&& text->share->szUserName[0] == 0//2.00E7 ユーザ名が設定されている場合はOKとする for マルチコンフィグ
) {
information("ネットワーク版WZでないので実行できません");
return FALSE;
}
TXCONFIGSHARE* shcfg = &text->share->config;
BOOL fNetShareMenu = shcfg->fNetShareMenu;
BOOL fNetShareKey = shcfg->fNetShareKey;
BOOL fNetShareToolbar = shcfg->fNetShareToolbar;
BOOL fNetShareLpstyle = shcfg->fNetShareLpstyle;
BOOL fNetShareInifile = shcfg->fNetShareInifile;
txstr szCaption = "共有 - ";
if (text->share->szUserName[0]) {
szCaption += text->share->szUserName;
} else {
szCaption += "ルート";
}
HDIALOG hd = dialog(szCaption);
dialogSetContexthelp(hd,TRUE);
dialogControlHelp(hd,358);
dialogCheck(hd,"メニュー(&M)",&fNetShareMenu);
dialogControlHelp(hd,358);
dialogCheck(hd,"キー(&K)",&fNetShareKey);
dialogControlHelp(hd,358);
dialogCheck(hd,"ツールバー(&T)",&fNetShareToolbar);
dialogControlHelp(hd,358);
dialogCheck(hd,"印刷スタイル(&P)",&fNetShareLpstyle);
#if 0//2.00E4 マクロ設定はユーザ毎に別々が良い
dialogControlHelp(hd,358);
dialogCheck(hd,"マクロ設定(&C)",&fNetShareInifile);
#endif
if (dialogOpen(hd)) {
shcfg->fNetShareMenu = fNetShareMenu;
shcfg->fNetShareKey = fNetShareKey;
shcfg->fNetShareToolbar = fNetShareToolbar;
shcfg->fNetShareLpstyle = fNetShareLpstyle;
shcfg->fNetShareInifile = fNetShareInifile;
txConfigOp(text,TXCONFIGOP_SHARESAVE_NET,NULL);
return TRUE;
}
return FALSE;
}