📄 sbpad.c
字号:
if ( docCount ) { list = GetListPtr(lstBROWSE); LstSetListChoices(list, docTable, docCount); LstDrawList(list); SetListSel(lstBROWSE, lastFile); } list = GetListPtr(lstCat); LstSetListChoices(list, catList, catCount); UpdatePopup(trgCat, lstCat, curCat, catList); autoReturnToForm = 0; handled = true; break; case frmCloseEvent: destroyDocList(); break; case evtRefreshDOCs: refreshDocList(); lastFile = 0; list = GetListPtr(lstBROWSE); LstSetListChoices(list, docTable, docCount); LstDrawList(list); SetListSel(lstBROWSE, lastFile); break; case menuEvent: switch(e->data.menu.itemID) { case mnuSBPREF: frm = FrmGetActiveForm(); FrmSaveActiveState(&stateP); frmpop = FrmInitForm(SBPREF_FORM); FrmSetActiveForm(frmpop); { ControlPtr dellog; ListPtr list; ControlPtr popup; char num[33]; dellog = FrmGetObjectPtr(frmpop, FrmGetObjectIndex(frmpop, chkDELLOG)); CtlSetValue(dellog, ((sbpref.flags & 1) != 0)); list = (ListPtr) FrmGetObjectPtr(frmpop, FrmGetObjectIndex(frmpop, lstCHAR));// LstMakeItemVisible(list, sbpref.charset); popup = (ControlPtr) FrmGetObjectPtr(frmpop, FrmGetObjectIndex(frmpop, trgCHAR)); CtlSetLabel(popup, LstGetSelectionText(list, sbpref.charset));// CtlDrawControl(popup); StrPrintF(num, "%d", sbpref.cclabs1); fld_setText(fldCLABS1, num, 0); StrPrintF(num, "%d", sbpref.ccpass2); fld_setText(fldCPASS2, num, 0); if ( FrmDoDialog(frmpop) == btnOK ) { sbpref.charset = LstGetSelection(list); sbpref.flags = 0; if ( CtlGetValue(dellog) ) sbpref.flags |= 1; sbpref.cclabs1 = (word) xstrtol(fld_getTextPtr(fldCLABS1)); sbpref.ccpass2 = (word) xstrtol(fld_getTextPtr(fldCPASS2)); if ( sbpref.cclabs1 < 64 ) sbpref.cclabs1 = 64; if ( sbpref.ccpass2 < 64 ) sbpref.ccpass2 = 64; savePrefs(); } } FrmRestoreActiveState(&stateP); FrmSetActiveForm(frm); FrmDeleteForm(frmpop); os_charset = sbpref.charset; os_cclabs1 = sbpref.cclabs1; os_ccpass2 = sbpref.ccpass2;// FrmUpdateForm(MainForm, frmRedrawUpdateCode); break; case mnuClose: Exec("lnch"); break; case mnuAbout: DoAboutForm(); break; case mnuHelp: GPlmAlert(HelpStrTID, HelpStringID); break; case mnuHelpFS: GPlmAlert(HelpFSStrTID, HelpFSStringID); break; case mnuHelpMisc: GPlmAlert(HelpMiscStrTID, HelpMiscStringID); break; case mnuHelpSys: GPlmAlert(HelpSysStrTID, HelpSysStringID); break; case mnuHelpMS: GPlmAlert(HelpMSStrTID, HelpMSStringID); break; case mnuHelpCon: GPlmAlert(HelpConStrTID, HelpConStringID); break; case mnuHelpGraf: GPlmAlert(HelpGrafStrTID, HelpGrafStringID); break; case mnuBeam: if ( docCount ) { fileName = docTable[lastFile]; beamSendDB(fileName); } break; case mnuDetails: if ( docCount ) { fileName = docTable[lastFile]; if ( doFileDetails(fileName) && curCat != 0 ) { refreshDocList(); lastFile = 0; list = GetListPtr(lstBROWSE); LstSetListChoices(list, docTable, docCount); LstDrawList(list); SetListSel(lstBROWSE, lastFile); } } break; case mnuFSV: FrmGotoForm(FSVForm); break; case mnuNew: if ( BasicInputBox("New FileName:", temp, 255) ) { fileName = temp; mkPutFileExt(temp); createNewDOC(fileName); if ( dbExist(fileName) ) { StrCopy(curFileName, fileName); FrmGotoForm(ViewForm); } } break; case mnuEditCat: doCatEdit(); break; case mnuEdit: if ( docCount ) { fileName = docTable[lastFile]; if ( dbExist(fileName) ) { StrCopy(curFileName, fileName); FrmGotoForm(ViewForm); } } break; case mnuCopyFile: StrCopy(curFileName, docTable[lastFile]); if ( BasicInputBox("New FileName:", temp, 255) ) { mkPutFileExt(temp); fileName = temp; copyDOC(curFileName, fileName); refreshDocList(); } break; case mnuRename: StrCopy(curFileName, docTable[lastFile]); if ( BasicInputBox("New FileName:", temp, 255) ) { mkPutFileExt(temp); fileName = temp; renameDOC(curFileName, fileName); refreshDocList(); lastFile = 0; list = GetListPtr(lstBROWSE); LstSetListChoices(list, docTable, docCount); LstDrawList(list); SetListSel(lstBROWSE, lastFile); } break; case mnuRun: autoReturnToForm = MainForm; if ( docCount ) { fileName = docTable[lastFile]; StrCopy(curFileName, fileName); FrmGotoForm(SBOutForm); } break; case mnuDelete: if ( docCount ) { fileName = docTable[lastFile]; if ( FrmCustomAlert(ConfAlertID, "Delete '", fileName, "' ?") == 0 ) { fileName = docTable[lastFile]; LID = DmFindDatabase(0, fileName); if ( LID ) { DmDeleteDatabase(0, LID); refreshDocList(); lastFile = 0; list = GetListPtr(lstBROWSE); LstSetListChoices(list, docTable, docCount); LstDrawList(list); SetListSel(lstBROWSE, lastFile); } else FrmCustomAlert(InfoAlertID, fileName, ": The PalmOS API routine DmFindDatabase() FAILED!!!", ""); } } break; } handled = true; break; case popSelectEvent: switch (e->data.popSelect.controlID) { case trgCat: if ( curCat != e->data.popSelect.selection ) { curCat = e->data.popSelect.selection; sbpref.lastCat = curCat; refreshDocList(); lastFile = 0; list = GetListPtr(lstBROWSE); LstSetListChoices(list, docTable, docCount); LstDrawList(list); SetListSel(lstBROWSE, lastFile); UpdatePopup(trgCat, lstCat, curCat, catList); } handled = 1; break; } break; case lstSelectEvent: switch(e->data.lstSelect.listID) { case lstBROWSE: lastFile = GetListSel(lstBROWSE); handled = true; break; } break; case ctlSelectEvent: switch(e->data.ctlSelect.controlID) { case btnCLOSE: Exec("lnch"); handled = true; break; case btnOPEN: if ( docCount ) { fileName = docTable[lastFile]; if ( dbExist(fileName) ) { StrCopy(curFileName, fileName); FrmGotoForm(ViewForm); } } handled = true; break; case btnNEW: if ( BasicInputBox("New FileName:", temp, 255) ) { fileName = temp; mkPutFileExt(temp); createNewDOC(fileName); if ( dbExist(fileName) ) { StrCopy(curFileName, fileName); FrmGotoForm(ViewForm); } } handled = true; break; case btnRUN: autoReturnToForm = MainForm; if ( docCount ) { fileName = docTable[lastFile]; StrCopy(curFileName, fileName); FrmGotoForm(SBOutForm); } handled = true; break; case btnDELETE: if ( docCount ) { fileName = docTable[lastFile]; if ( FrmCustomAlert(ConfAlertID, "Delete '", fileName, "' ?") == 0 ) { fileName = docTable[lastFile]; LID = DmFindDatabase(0, fileName); if ( LID ) { DmDeleteDatabase(0, LID); refreshDocList(); lastFile = 0; list = GetListPtr(lstBROWSE); LstSetListChoices(list, docTable, docCount); LstDrawList(list); SetListSel(lstBROWSE, lastFile); } else FrmCustomAlert(InfoAlertID, fileName, ": The PalmOS API routine DmFindDatabase() FAILED!!!", ""); } } handled = true; break; } break; default: break; } return handled;}Boolean MainFormHandleEvent(EventPtr e){ return MainFormHandleEventSEG(e);}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Boolean ApplicationHandleEvent(EventPtr e){ FormPtr frm; Word formId; if (e->eType == frmLoadEvent) { formId = e->data.frmLoad.formID; frm = FrmInitForm(formId); FrmSetActiveForm(frm); switch(formId) { case MainForm: FrmSetEventHandler(frm, MainFormHandleEvent); break; case ViewForm: FrmSetEventHandler(frm, ViewFormHandleEvent); break; case FSVForm: FrmSetEventHandler(frm, FSViewFormHandleEvent); break; case SBOutForm: FrmSetEventHandler(frm, OutFormHandleEvent); break; } return true; } return false;}void freeCatList() SEC(IDE);void freeCatList(){ int i; if ( catList ) { for ( i = 0; i < catCount; i ++ ) tmp_free(catList[i]); tmp_free(catList); catList = NULL; catCount = 0; }}void loadCategories() SEC(IDE);void loadCategories(){ file_t f; int i, recs; byte *buff; freeCatList(); buff = tmp_alloc(64); if ( !dbExist("SmBa.IDE.CAT") ) { f = dbOpenAlw("SmBa.IDE.CAT", SmBa, idDATA); StrCopy(buff, "All"); dbWrite(f, 0xFFFF, buff, StrLen(buff)+1); StrCopy(buff, "Business"); dbWrite(f, 0xFFFF, buff, StrLen(buff)+1); StrCopy(buff, "Personal"); dbWrite(f, 0xFFFF, buff, StrLen(buff)+1); StrCopy(buff, "Library"); dbWrite(f, 0xFFFF, buff, StrLen(buff)+1); StrCopy(buff, "Graphics"); dbWrite(f, 0xFFFF, buff, StrLen(buff)+1); StrCopy(buff, "Math."); dbWrite(f, 0xFFFF, buff, StrLen(buff)+1); StrCopy(buff, "System"); dbWrite(f, 0xFFFF, buff, StrLen(buff)+1); StrCopy(buff, "Temp"); dbWrite(f, 0xFFFF, buff, StrLen(buff)+1); StrCopy(buff, "Unfiled"); dbWrite(f, 0xFFFF, buff, StrLen(buff)+1); dbClose(f); } f = dbOpen("SmBa.IDE.CAT"); recs = DmNumRecords(f); catList = tmp_alloc(sizeof(char_p) * recs); catCount = 0; for ( i = 0; i < recs; i ++ ) { dbRead(f, i, buff, 64); if ( StrCompare(buff, "Unfiled") == 0 ) catUnfiledID = i; catList[catCount] = tmp_alloc(StrLen(buff)+1); StrCopy(catList[catCount], buff); catCount ++; } tmp_free(buff); dbClose(f);}/**/void loadPrefs() SEC(IDE);void loadPrefs(){ word prefSize, prefVer; prefSize = sizeof(sbpref_t); prefVer = PrefGetAppPreferences(SmBa, 0, &sbpref, &prefSize, 1); if ( prefVer == noPreferenceFound ) { sbpref.lastDocSec = 0; sbpref.lastDocPos = 0; sbpref.lastDocForm = 0; sbpref.font = stdFont; sbpref.lastCat = curCat; sbpref.charset = 0; sbpref.flags = 0x1; sbpref.cclabs1 = sbpref.ccpass2 = 256; } if ( sbpref.cclabs1 <= 0 ) sbpref.cclabs1 = 256; if ( sbpref.ccpass2 <= 0 ) sbpref.ccpass2 = 256; os_charset = sbpref.charset; os_cclabs1 = sbpref.cclabs1; os_ccpass2 = sbpref.ccpass2;}/**/void savePrefs() SEC(IDE);void savePrefs(){ StrCopy(sbpref.lastFileName, curFileName); sbpref.lastCat = curCat; sbpref.lastDocSec = lastDocSec; sbpref.lastDocPos = lastDocPos;// sbpref.lastDocForm = ViewForm; sbpref.font = lastDocFont; PrefSetAppPreferences(SmBa, 0, 1, &sbpref, sizeof(sbpref_t), 1);}/** setup "color" screen mode*/void InitialScreenMode() SEC(IDE);void InitialScreenMode(){ DWord NewDepth; DWord SupportDepth = 1; Boolean SupportColor_flag = 0; FtrGet(sysFtrCreator, sysFtrNumDisplayDepth, &OldScreenDepth); ScrDisplayMode(scrDisplayModeGetSupportedDepths, NULL, NULL, &SupportDepth,NULL); ScrDisplayMode(scrDisplayModeGetSupportsColor, NULL, NULL, NULL, &SupportColor_flag); if (SupportDepth & 0x0080) NewDepth = 8; else if (SupportDepth & 0x0008) NewDepth = 4; else if (SupportDepth & 0x0002) NewDepth = 2; else NewDepth = 1; if ( !FtrSet(sysFtrCreator, sysFtrNumDisplayDepth, NewDepth) ) ScrDisplayMode(scrDisplayModeSetToDefaults,NULL,NULL,NULL,NULL); else { ScrDisplayMode(scrDisplayModeSet,NULL,NULL,&NewDepth,NULL); WinScreenMode(winScreenModeSet, 0, 0, &NewDepth, 0); }}/** restore screen mode*/void RecoverScreenMode() SEC(IDE);void RecoverScreenMode(){ FtrSet(sysFtrCreator, sysFtrNumDisplayDepth, OldScreenDepth); ScrDisplayMode(scrDisplayModeSetToDefaults, NULL, NULL, NULL, NULL);}/** load buildin fonts*/void loadFonts() SEC(IDE);void loadFonts(){ gHK40FontHandle = DmGetResource('pFNT', HK40FONT); FntDefineFont(HK40CustomFont, MemHandleLock(gHK40FontHandle)); gSM10FontHandle = DmGetResource('NFNT', SM10FONT); FntDefineFont(SM10CustomFont, MemHandleLock(gSM10FontHandle)); gDOSFontHandle = DmGetResource('NFNT', DOSFONT); FntDefineFont(DOSCustomFont, MemHandleLock(gDOSFontHandle)); gDOS4FontHandle = DmGetResource('NFNT', DOS4FONT); FntDefineFont(DOS4CustomFont, MemHandleLock(gDOS4FontHandle));}/** load buildin fonts*/void unloadFonts() SEC(IDE);void unloadFonts(){ MemHandleUnlock(gHK40FontHandle); DmReleaseResource(gHK40FontHandle); MemHandleUnlock(gSM10FontHandle); DmReleaseResource(gSM10FontHandle); MemHandleUnlock(gDOSFontHandle); DmReleaseResource(gDOSFontHandle); MemHandleUnlock(gDOS4FontHandle); DmReleaseResource(gDOS4FontHandle);}/**/Word StartApplication(void) SEC(IDE);Word StartApplication(void){ Err error; InitialScreenMode(); loadCategories(); error = SysLibFind(MathLibName, &MathLibRef); if ( error ) SysLibLoad(LibType, MathLibCreator, &MathLibRef); error = MathLibOpen(MathLibRef, MathLibVersion); if ( error ) { FrmAlert(AlertMathLib); RecoverScreenMode(); return 0; } loadFonts(); loadPrefs(); if ( sbpref.flags & 1 ) FileDelete(0, "SB.LOG"); if ( sbpref.lastDocForm == ViewForm && dbExist(sbpref.lastFileName) ) { StrCopy(curFileName, sbpref.lastFileName); FrmGotoForm(ViewForm); } else FrmGotoForm(MainForm); return 1;}/**/void StopApplication(void) SEC(IDE);void StopApplication(void){ Int librefs; closeDOC(); savePrefs();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -