⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sbpad.c

📁 smallbasic for linux
💻 C
📖 第 1 页 / 共 5 页
字号:
		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 + -