📄 compprefwinc.c
字号:
wlist[wcount++] = encryptSignLabel; wlist[wcount++] = encryptSignTF; wlist[wcount++] = mimeDigSignLabel; wlist[wcount++] = mimeDigSignTF; wlist[wcount++] = mimeEncryptLabel; wlist[wcount++] = mimeEncryptTF; wlist[wcount++] = mimeEncryptSignLabel; wlist[wcount++] = mimeEncryptSignTF; wlist[wcount++] = autoSaveTB; wlist[wcount++] = autoSaveForm; fieldRC->SetChildren(wlist, wcount); wcount = 0; wlist[wcount++] = *sizeRC; wlist[wcount++] = spaceTB; wlist[wcount++] = maxFieldsForm; wlist[wcount++] = *fieldRC; XtManageChildren(wlist, wcount); // appForm children sizeRC->Defer(False); fieldRC->Defer(False); HandleHelp();} // End constructor/*--------------------------------------------------------------- * Destructor */CompPrefWinC::~CompPrefWinC(){ delete fieldRC; delete sizeRC;}/*--------------------------------------------------------------- * Method to handle display */voidCompPrefWinC::Show(Widget parent){ CompPrefC *prefs = ishApp->compPrefs;//// See if this widget corresponds to a particular composition window// sendWin = NULL; if ( parent != (Widget)*ishApp->mainWin ) { unsigned count = ishApp->sendWinList.size(); for (int i=0; !sendWin && i<count; i++) { SendWinC *win = (SendWinC*)*ishApp->sendWinList[i]; if ( parent == (Widget)*win ) sendWin = win; } }//// Initialize settings// StringC str; if ( sendWin ) str += sendWin->ColumnCount(); else str += prefs->bodyCols; XmTextFieldSetString(bodyColTF, str); str.Clear(); if ( sendWin ) str += sendWin->BodyRowCount(); else str += prefs->bodyRows; XmTextFieldSetString(bodyRowTF, str); str.Clear(); if ( sendWin ) str += sendWin->HeadRowCount(); else str += prefs->headRows; XmTextFieldSetString(headRowTF, str); if ( sendWin ) { XmToggleButtonSetState(wrapTB, sendWin->Wrapping(), False); XmToggleButtonSetState(showCcTB, sendWin->ccVis, False); XmToggleButtonSetState(showBccTB, sendWin->bccVis, False); XmToggleButtonSetState(showFccTB, sendWin->fccVis, False); XmToggleButtonSetState(showOtherTB, sendWin->otherVis, False); } else { XmToggleButtonSetState(wrapTB, prefs->wrap, False); XmToggleButtonSetState(showCcTB, prefs->showCc, False); XmToggleButtonSetState(showBccTB, prefs->showBcc, False); XmToggleButtonSetState(showFccTB, prefs->showFcc, False); XmToggleButtonSetState(showOtherTB, prefs->showOther, False); } XmToggleButtonSetState(emacsTB, prefs->emacsMode, False); XmToggleButtonSetState(deleteTB, prefs->delMeansBs, False); XmToggleButtonSetState(spaceTB, prefs->spaceEndsAddr, False); Widget tb = maxFields1TB; switch (prefs->maxFieldsPerLine) { case 2: tb = maxFields2TB; break; case 3: tb = maxFields3TB; break; case 4: tb = maxFields4TB; break; case 5: tb = maxFields5TB; break; } XmToggleButtonSetState(tb, True, True); XmTextFieldSetString(editorTF, prefs->editCmd); XmTextFieldSetString(spellTF, prefs->spellCmd); XmTextFieldSetString(digSignTF, prefs->digSignCmd); XmTextFieldSetString(encryptTF, prefs->encryptCmd); XmTextFieldSetString(encryptSignTF, prefs->encryptSignCmd); XmTextFieldSetString(mimeDigSignTF, prefs->mimeDigSignCmd); XmTextFieldSetString(mimeEncryptTF, prefs->mimeEncryptCmd); XmTextFieldSetString(mimeEncryptSignTF, prefs->mimeEncryptSignCmd); XmToggleButtonSetState(autoSaveTB, prefs->autoSave, True); str.Clear(); str += prefs->autoSaveRate; TextFieldSetString(autoSaveRateTF, str); TextFieldSetString(autoSaveDirTF, prefs->OrigAutoSaveDir()); OptWinC::Show(parent);} // End ShowvoidCompPrefWinC::Show(){ Show(XtParent(*this));}/*--------------------------------------------------------------- * Method to apply settings */BooleanCompPrefWinC::Apply(){ CompPrefC *prefs = ishApp->compPrefs;//// Get number of body rows// char *cs = XmTextFieldGetString(bodyRowTF); int bodyRows = 0; if ( strlen(cs) > 0 ) bodyRows = atoi(cs); XtFree(cs); if ( bodyRows <= 0 ) { set_invalid(bodyRowTF, True, True); PopupMessage("Number of rows must be greater than 0"); return False; }//// Get number of body columns// cs = XmTextFieldGetString(bodyColTF); int bodyCols = 0; if ( strlen(cs) > 0 ) bodyCols = atoi(cs); XtFree(cs); if ( bodyCols <= 0 ) { set_invalid(bodyColTF, True, True); PopupMessage("Number of columns must be greater than 0"); return False; }//// Get number of rows in header fields// cs = XmTextFieldGetString(headRowTF); int headRows = 0; if ( strlen(cs) > 0 ) headRows = atoi(cs); XtFree(cs); if ( headRows <= 0 ) { set_invalid(headRowTF, True, True); PopupMessage("Number of rows must be greater than 0"); return False; }//// Get auto save rate and directory// Boolean autoSave = XmToggleButtonGetState(autoSaveTB); cs = XmTextFieldGetString(autoSaveRateTF); int autoSaveRate = 0; if ( strlen(cs) > 0 ) autoSaveRate = atoi(cs); XtFree(cs); if ( autoSave && autoSaveRate <= 0 ) { set_invalid(autoSaveRateTF, True, True); PopupMessage("The number of keystrokes must be greater than 0"); return False; } cs = XmTextFieldGetString(autoSaveDirTF); StringC autoSaveDir = cs; XtFree(cs); autoSaveDir.Trim(); if ( autoSave && autoSaveDir.size() == 0 ) { set_invalid(autoSaveDirTF, True, True); StringC msg("Please enter the name of a directory"); msg += "\nwhere compositions can be saved"; PopupMessage(msg); return False; } BusyCursor(True); Boolean doWrap = XmToggleButtonGetState(wrapTB); Boolean showCc = XmToggleButtonGetState(showCcTB); Boolean showBcc = XmToggleButtonGetState(showBccTB); Boolean showFcc = XmToggleButtonGetState(showFccTB); Boolean showOther = XmToggleButtonGetState(showOtherTB); Boolean emacsMode = XmToggleButtonGetState(emacsTB); Boolean delMeansBs = XmToggleButtonGetState(deleteTB); int maxFields = 1; if ( XmToggleButtonGetState(maxFields2TB) ) maxFields = 2; else if ( XmToggleButtonGetState(maxFields3TB) ) maxFields = 3; else if ( XmToggleButtonGetState(maxFields4TB) ) maxFields = 4; else if ( XmToggleButtonGetState(maxFields5TB) ) maxFields = 5;//// Update all composition windows// Boolean wrapChanged = False; Boolean sizeChanged = False; Boolean headSizeChanged = False; Boolean headVisChanged = False; Boolean keysChanged = False; if ( sendWin ) { wrapChanged = (doWrap != sendWin->Wrapping()); sizeChanged = (bodyRows != sendWin->BodyRowCount() || bodyCols != sendWin->ColumnCount()); headSizeChanged = (headRows != sendWin->HeadRowCount() || maxFields != sendWin->maxFieldsPerLine); headVisChanged = (showCc != sendWin->ccVis || showBcc != sendWin->bccVis || showFcc != sendWin->fccVis || showOther != sendWin->otherVis); } else { wrapChanged = (doWrap != prefs->wrap); sizeChanged = (bodyRows != prefs->bodyRows || bodyCols != prefs->bodyCols); headSizeChanged = (headRows != prefs->headRows || maxFields != prefs->maxFieldsPerLine); headVisChanged = (showCc != prefs->showCc || showBcc != prefs->showBcc || showFcc != prefs->showFcc || showOther != prefs->showOther); } keysChanged = (emacsMode != prefs->emacsMode || delMeansBs != prefs->delMeansBs); u_int count = ishApp->sendWinList.size(); int i; for (i=0; i<count; i++) { SendWinC *sendWin = (SendWinC*)*ishApp->sendWinList[i]; if ( sizeChanged ) sendWin->SetSize(bodyRows, bodyCols); if ( wrapChanged ) sendWin->SetWrap(doWrap); if ( keysChanged ) sendWin->SetKeys(emacsMode, delMeansBs); } prefs->bodyRows = bodyRows; prefs->bodyCols = bodyCols; prefs->headRows = headRows; prefs->wrap = doWrap; prefs->showCc = showCc; prefs->showBcc = showBcc; prefs->showFcc = showFcc; prefs->showOther = showOther; prefs->emacsMode = emacsMode; prefs->delMeansBs = delMeansBs; prefs->spaceEndsAddr = XmToggleButtonGetState(spaceTB); prefs->maxFieldsPerLine = maxFields;// if ( prefs->spaceEndsAddr ) prefs->stripComments = True; if ( headVisChanged || headSizeChanged ) { count = ishApp->sendWinList.size(); for (i=0; i<count; i++) { SendWinC *sendWin = (SendWinC*)*ishApp->sendWinList[i]; if ( headVisChanged ) sendWin->UpdateVisibleFields(); else sendWin->PlaceHeaderFields(); } }//// Set editor command// cs = XmTextFieldGetString(editorTF); prefs->editCmd = cs; XtFree(cs);//// Set spell command// cs = XmTextFieldGetString(spellTF); prefs->spellCmd = cs; XtFree(cs);//// Set digital signature and encryption commands// cs = XmTextFieldGetString(digSignTF); prefs->digSignCmd = cs; XtFree(cs); cs = XmTextFieldGetString(encryptTF); prefs->encryptCmd = cs; XtFree(cs); cs = XmTextFieldGetString(encryptSignTF); prefs->encryptSignCmd = cs; XtFree(cs); cs = XmTextFieldGetString(mimeDigSignTF); prefs->mimeDigSignCmd = cs; XtFree(cs); cs = XmTextFieldGetString(mimeEncryptTF); prefs->mimeEncryptCmd = cs; XtFree(cs); cs = XmTextFieldGetString(mimeEncryptSignTF); prefs->mimeEncryptSignCmd = cs; XtFree(cs);//// Set auto save parameters// prefs->autoSave = autoSave; prefs->autoSaveRate = autoSaveRate; prefs->SetAutoSaveDir(autoSaveDir); prefs->WriteDatabase();//// Write to file if necessary// if ( applyAll ) prefs->WriteFile(); BusyCursor(False); return True;} // End Apply
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -