/* GEOSLib example This small application removes GEOS disk write protection tag. e.g. boot disk is always protected after boot-up Maciej 'YTM/Elysium' Witkowiak 21.03.2000 */ #include char diskName[17] = ""; static const graphicStr clearScreen = { MOVEPENTO(0, 0), NEWPATTERN(2), RECTANGLETO(SC_PIX_WIDTH-1, SC_PIX_HEIGHT-1), GSTR_END }; static const dlgBoxStr mainDialog = { DB_DEFPOS(1), DB_TXTSTR(TXT_LN_X, TXT_LN_2_Y, CBOLDON "Remove protection on:" CPLAINTEXT), DB_TXTSTR(TXT_LN_X, TXT_LN_3_Y, diskName), DB_ICON(OK, DBI_X_0, DBI_Y_2), DB_ICON(DISK, DBI_X_1, DBI_Y_2), DB_ICON(CANCEL, DBI_X_2, DBI_Y_2), DB_END }; static const dlgBoxStr changeDiskDlg = { DB_DEFPOS(1), DB_TXTSTR(TXT_LN_X, TXT_LN_2_Y, CBOLDON "Insert new disk"), DB_TXTSTR(TXT_LN_X, TXT_LN_3_Y, "into drive." CPLAINTEXT), DB_ICON(OK, DBI_X_0, DBI_Y_2), DB_ICON(CANCEL, DBI_X_2, DBI_Y_2), DB_END }; static const dlgBoxStr errorDialog = { DB_DEFPOS(1), DB_TXTSTR(TXT_LN_X, TXT_LN_2_Y, CBOLDON "Error happened..."), DB_TXTSTR(TXT_LN_X, TXT_LN_3_Y, "exiting..." CPLAINTEXT), DB_ICON(OK, DBI_X_0, DBI_Y_2), DB_END }; void Error(void) { DoDlgBox(&errorDialog); EnterDeskTop(); } void main(void) { // Here we clear the screen. Not really needed anyway... GraphicsString(&clearScreen); // Get the name of current disk to show it in dialog box GetPtrCurDkNm(diskName); while (1) { switch (DoDlgBox(&mainDialog)) { // What's the result of dialog box? which icon was pressed? case OK: if (GetDirHead()) Error(); curDirHead[OFF_GS_DTYPE] = 0; if (PutDirHead()) Error(); break; case DISK: DoDlgBox(&changeDiskDlg); GetPtrCurDkNm(diskName); break; default: // CANCEL is the third option return; break; } } }