Bool WREProcessArgs( char **argv, int argc ) { int i; Bool ok; ok = TRUE; for( i = 1; i < argc; i++ ) { if( !stricmp( argv[i], CREATE_NEW_FLAG ) ) { WRECreateNewFiles = TRUE; } else if( !stricmp( argv[i], NO_IFACE_FLAG ) ) { WRENoInterface = TRUE; } else { if( WRFileExists( argv[i] ) ) { ok = WREOpenResource( argv[i] ) && ok; } else if( WRECreateNewFiles ) { ok = (WRECreateNewResource( argv[i] ) != NULL && ok); } else { ok = FALSE; } } } if( !ok ) { WREDisplayErrorMsg( WRE_INPUTFILESNOTLOADED ); } return( ok ); }
LRESULT WINEXPORT WREMainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) { HMENU menu; LRESULT ret; Bool pass_to_def; WREResInfo *res_info; WORD wp; about_info ai; if( WRECleanupStarted && message != WM_CLOSE ) { if( message == WM_DESTROY ) { PostQuitMessage( 0 ); } return( DefFrameProc( hWnd, WREMDIWin, message, wParam, lParam ) ); } pass_to_def = TRUE; ret = FALSE; res_info = WREGetCurrentRes(); menu = WREGetMenuHandle(); switch( message ) { case WM_DESTROYCLIPBOARD: WRForgetBitmapName(); break; case WM_INITMENU: if( wParam == (WPARAM)GetMenu( hWnd ) ) { WRESetCopyMenuItem( hWnd ); WRESetPasteMenuItem( hWnd ); } break; case WM_MENUSELECT: WREHandleMenuSelect( wParam, lParam ); break; case WM_MOVE: if( IsZoomed( hWnd ) ) { WRESetOption( WREOptScreenMax, TRUE ); } else if( !IsIconic( hWnd ) ) { WREUpdateScreenPosOpt(); WRESetOption( WREOptScreenMax, FALSE ); } break; case WM_SIZE: if( wParam == SIZE_MAXIMIZED ) { WRESetOption( WREOptScreenMax, TRUE ); } else if( wParam == SIZE_MINIMIZED ) { WREHideSessions( FALSE ); WREIsMinimized = TRUE; } else { WREUpdateScreenPosOpt(); WRESetOption( WREOptScreenMax, FALSE ); } if( wParam != SIZE_MINIMIZED && WREIsMinimized ) { WREHideSessions( TRUE ); BringWindowToTop( hWnd ); WREIsMinimized = FALSE; } WREResizeWindows(); pass_to_def = FALSE; break; case ACCEL_I_HAVE_CLOSED: WREEndEditAccelResource( (WAccelHandle)lParam ); if( WRENoInterface ) { WRERemoveResource( res_info ); } pass_to_def = FALSE; break; case ACCEL_PLEASE_SAVEME: WRESaveEditAccelResource( (WAccelHandle)lParam ); pass_to_def = FALSE; break; case MENU_I_HAVE_CLOSED: WREEndEditMenuResource( (WMenuHandle)lParam ); if( WRENoInterface ) { WRERemoveResource( res_info ); } pass_to_def = FALSE; break; case MENU_PLEASE_SAVEME: WRESaveEditMenuResource( (WMenuHandle)lParam ); pass_to_def = FALSE; break; case STRING_I_HAVE_CLOSED: WREEndEditStringResource( (WStringHandle)lParam ); if( WRENoInterface ) { WRERemoveResource( res_info ); } pass_to_def = FALSE; break; case STRING_PLEASE_SAVEME: WRESaveEditStringResource( (WStringHandle)lParam ); pass_to_def = FALSE; break; case ACCEL_PLEASE_OPENME: case MENU_PLEASE_OPENME: case STRING_PLEASE_OPENME: ret = pleaseOpenFile( message ); pass_to_def = FALSE; break; case WM_COMMAND: wp = LOWORD( wParam ); switch( wp ) { case IDM_OPTIONS: pass_to_def = FALSE; break; case IDM_LOAD_SYMBOLS: WRELoadResourceSymbols( res_info ); pass_to_def = FALSE; break; case IDM_EDIT_SYMBOLS: WREEditResourceSymbols( res_info ); pass_to_def = FALSE; break; case IDM_SAVE_SYMBOLS: WREResourceSaveSymbols( res_info ); pass_to_def = FALSE; break; case IDM_NEW: WRECreateNewResource( NULL ); pass_to_def = FALSE; break; case IDM_OPEN: WREOpenResource( NULL ); pass_to_def = FALSE; break; case IDM_SAVE: WRESaveResource( res_info, FALSE ); pass_to_def = FALSE; break; case IDM_SAVEAS: WRESaveResource( res_info, TRUE ); pass_to_def = FALSE; break; case IDM_DELETE: WREDeleteCurrResource( FALSE ); pass_to_def = FALSE; break; case IDM_PASTE: WREPasteResource( hWnd ); pass_to_def = FALSE; break; case IDM_CUT: WREClipCurrentResource( hWnd, TRUE ); pass_to_def = FALSE; break; case IDM_COPY: WREClipCurrentResource( hWnd, FALSE ); pass_to_def = FALSE; break; case IDM_NEW_CURSOR: WRENewImageResource( CursorService, (uint_16)RT_GROUP_CURSOR ); break; case IDM_NEW_BITMAP: WRENewImageResource( BitmapService, (uint_16)RT_BITMAP ); break; case IDM_NEW_ICON: WRENewImageResource( IconService, (uint_16)RT_GROUP_ICON ); break; case IDM_NEW_DIALOG: WRENewDialogResource(); break; case IDM_NEW_FONT: case IDM_NEW_RCDATA: pass_to_def = FALSE; break; case IDM_NEW_ACCELERATOR: WRENewAccelResource(); pass_to_def = FALSE; break; case IDM_NEW_MENU: WRENewMenuResource(); pass_to_def = FALSE; break; case IDM_NEW_STRING: WRENewStringResource(); pass_to_def = FALSE; break; case IDM_RES_SAVEAS: case IDM_RES_SAVE_INTO: if( res_info != NULL ) { if( res_info->current_type == (uint_16)RT_STRING ) { SaveMultObjects( wp == IDM_RES_SAVE_INTO ); } else { SaveObject( wp == IDM_RES_SAVE_INTO ); } } pass_to_def = FALSE; break; case IDM_RES_EDIT: WREHandleResEdit(); pass_to_def = FALSE; break; case IDM_RES_MEM_FLAGS: WREChangeMemFlags(); pass_to_def = FALSE; break; case IDM_RES_RENAME: WRERenameResource(); pass_to_def = FALSE; break; case IDM_MDI_CASCADE: case IDM_MDI_TILEV: case IDM_MDI_TILEH: case IDM_MDI_ARRANGE: WREHandleMDIArrangeEvents( wp ); pass_to_def = FALSE; break; case IDM_EXIT: /* clean up before we exit */ PostMessage( WREMainWin, WM_CLOSE, 0, 0 ); break; case IDM_SHOW_RIBBON: WREShowRibbon( menu ); pass_to_def = FALSE; break; case IDM_HELP: WREHelpRoutine(); pass_to_def = FALSE; break; case IDM_HELP_SEARCH: WREHelpSearchRoutine(); pass_to_def = FALSE; break; case IDM_HELP_ON_HELP: WREHelpOnHelpRoutine(); pass_to_def = FALSE; break; case IDM_ABOUT: ai.owner = hWnd; ai.inst = WREInst; ai.name = AllocRCString( WRE_ABOUT_NAME ); ai.version = banner1p2( _RESEDIT_VERSION_ ); ai.first_cr_year = AllocRCString( WRE_ABOUT_COPYRIGHT_YEAR ); ai.title = AllocRCString( WRE_ABOUT_TITLE ); DoAbout( &ai ); FreeRCString( ai.name ); FreeRCString( ai.first_cr_year ); FreeRCString( ai.title ); pass_to_def = FALSE; break; } break; case WM_DESTROY: WWinHelp( WREMainWin, "resedt.hlp", HELP_QUIT, 0 ); PostQuitMessage( 0 ); break; case WRE_FATAL_EXIT: WREFatalExit = TRUE; WREQueryKillApp( TRUE ); PostMessage( WREMainWin, WM_CLOSE, 0, 0 ); break; case WM_ENDSESSION: if( !wParam ) { WREFatalExit = FALSE; } break; case WM_QUERYENDSESSION: if( ret = WREQueryKillApp( FALSE ) ) { WREFatalExit = TRUE; } pass_to_def = FALSE; break; case WM_CLOSE: /* clean up before we exit */ if( WRECleanupStarted ) { pass_to_def = FALSE; break; } WRECleanupStarted = TRUE; if( !WRECleanup( WREFatalExit ) ) { WRECleanupStarted = FALSE; pass_to_def = FALSE; } } if( pass_to_def ) { ret = DefFrameProc( hWnd, WREMDIWin, message, wParam, lParam ); } return( ret ); }
int PASCAL WinMain( HINSTANCE hinstCurrent, HINSTANCE hinstPrevious, LPSTR lpszCmdLine, int nCmdShow ) { extern char **_argv; extern int _argc; MSG msg; Bool ret; /* touch unused vars to get rid of warning */ _wre_touch( lpszCmdLine ); _wre_touch( nCmdShow ); #ifdef __NT__ _wre_touch( hinstPrevious ); #endif WRInit(); WAccelInit(); WMenuInit(); WStringInit(); WREInitDisplayError( hinstCurrent ); /* store the handle to this instance of WRE in a static variable */ WREInst = hinstCurrent; peekArgs( _argv, _argc ); /* is this the first instance of the application? */ #ifndef __NT__ if( hinstPrevious == NULL ) { #endif /* if so call the routine to initialize the application */ if( !WREInit( hinstCurrent ) ) { return( FALSE ); } #ifndef __NT__ } #endif if( !WREInitInst( hinstCurrent ) ) { WREDisplayErrorMsg( WRE_INITFAILED ); return( FALSE ); } if( !WREDDEStart( hinstCurrent ) ) { WREDisplayErrorMsg( WRE_DDEINITFAILED ); return( FALSE ); } ret = WREProcessArgs( _argv, _argc ); startEditors(); // create a new empty res if none have been created at this point if( ret && WREGetNumRes() == 0 ) { WRECreateNewResource( NULL ); } /* create the message loop */ while( GetMessage( &msg, (HWND)NULL, 0, 0 ) ) { if( !WREIsEditWindowDialogMessage( &msg ) && !WREWasAcceleratorHandled( &msg ) && !WREIsResInfoWinMsg( &msg ) && !WRIsWRDialogMsg( &msg ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } } WREDDEEnd(); WStringFini(); WMenuFini(); WAccelFini(); WRFini(); return( msg.wParam ); }
bool WREAddAccelToDir( WRECurrentResInfo *curr ) { WResLangType lang; bool dup; int num_retries; WResID *rname, *tname; bool ok, tname_alloc; ok = true; tname_alloc = false; WREGetCurrentResource( curr ); if( curr->info == NULL ) { curr->info = WRECreateNewResource( NULL ); ok = (curr->info != NULL); } if( ok ) { if( curr->info->current_type == RESOURCE2INT( RT_ACCELERATOR ) ) { tname = &curr->type->Info.TypeName; } else { tname = WResIDFromNum( RESOURCE2INT( RT_ACCELERATOR ) ); tname_alloc = true; } lang.lang = DEF_LANG; lang.sublang = DEF_SUBLANG; } if( ok ) { dup = true; num_retries = 0; rname = NULL; while( ok && dup && num_retries <= MAX_RETRIES ) { rname = WRECreateAccTitle(); ok = (rname != NULL); if( ok ) { ok = WRENewResource( curr, tname, rname, DEF_MEMFLAGS, 0, 0, &lang, &dup, RESOURCE2INT( RT_ACCELERATOR ), tname_alloc ); if( !ok && dup ) { ok = true; } num_retries++; } if( rname != NULL ) { WRMemFree( rname ); } } if( dup ) { WREDisplayErrorMsg( WRE_CANTFINDUNUSEDNAME ); } } if( ok ) { curr->info->modified = true; } if( tname_alloc ) { WRMemFree( tname ); } return( ok ); }
static bool WREGetAndPasteBitmap( WREClipFormat *fmt, void *data, uint_32 dsize ) { WRECurrentResInfo curr; WResLangType lang; WResID *ctype; WResID *cname; bool dup; bool new_type; bool replace; bool ok; cname = NULL; ctype = NULL; new_type = TRUE; lang.lang = DEF_LANG; lang.sublang = DEF_SUBLANG; ok = (fmt != NULL && data != NULL && dsize != 0); if( ok ) { ctype = WResIDFromNum( fmt->type ); ok = (ctype != NULL); } if( ok ) { cname = WRRecallBitmapName(); if( cname == NULL ) { cname = WRECreateImageTitle( RESOURCE2INT( RT_BITMAP ) ); } ok = (cname != NULL); } if( ok ) { WREGetCurrentResource( &curr ); if( curr.info == NULL ) { curr.info = WRECreateNewResource( NULL ); ok = (curr.info != NULL); } } if( ok ) { ok = WREHandleClipDataNames( curr.info, ctype, &cname, &replace ); } if( ok ) { if( curr.info != NULL ) { if( curr.info->info->dir ) { new_type = (WREFindTypeNodeFromWResID( curr.info->info->dir, ctype ) == NULL ); } } ok = WRENewResource( &curr, ctype, cname, DEF_MEMFLAGS, 0, dsize, &lang, &dup, RESOURCE2INT( RT_BITMAP ), new_type ) && !dup; } if( ok ) { curr.lang->data = data; WRESetResModified( curr.info, TRUE ); } if( cname != NULL ) { WRMemFree( cname ); } if( ctype != NULL ) { WRMemFree( ctype ); } return( ok ); }
static bool WREGetAndPasteIconOrCursor( WREClipFormat *fmt ) { WRECurrentResInfo curr; WREClipData *cdata; WResLangType lang; WResID *ctype; WResID *cname; void *data; uint_32 dsize; bool dup; bool new_type; bool replace; bool ok; cdata = NULL; cname = NULL; ctype = NULL; new_type = TRUE; lang.lang = DEF_LANG; lang.sublang = DEF_SUBLANG; ok = (fmt != NULL); if( ok ) { ctype = WResIDFromNum( fmt->type ); ok = (ctype != NULL); } if( ok ) { ok = WREGetClipData( fmt, &data, &dsize ); } if( ok ) { cdata = (WREClipData *)data; data = NULL; ok = (cdata != NULL); } if( ok ) { data = WRMemAlloc( cdata->data_size ); ok = (data != NULL); } if( ok ) { memcpy( data, (BYTE *)cdata + cdata->data_offset, cdata->data_size ); cname = WREGetClipDataName( cdata ); ok = (cname != NULL); } if( ok ) { WREGetCurrentResource( &curr ); if( curr.info == NULL ) { curr.info = WRECreateNewResource( NULL ); ok = (curr.info != NULL); } } if( ok ) { ok = WREHandleClipDataNames( curr.info, ctype, &cname, &replace ); } if( ok ) { if( curr.info != NULL ) { if( curr.info->info->dir ) { new_type = (WREFindTypeNodeFromWResID( curr.info->info->dir, ctype ) == NULL ); } } ok = WRENewResource( &curr, ctype, cname, cdata->memflags, 0, (uint_32)cdata->data_size, &lang, &dup, fmt->type, new_type ) && !dup; } if( ok ) { if( fmt->type == RESOURCE2INT( RT_GROUP_ICON ) ) { ok = WRECreateIconEntries( &curr, data, dsize ); } else if( fmt->type == RESOURCE2INT( RT_GROUP_CURSOR ) ) { ok = WRECreateCursorEntries( &curr, data, dsize ); } else { ok = false; } } if( ok ) { WRESetResModified( curr.info, TRUE ); } if( data != NULL ) { WRMemFree( data ); } if( cdata != NULL ) { WRMemFree( cdata ); } if( cname != NULL ) { WRMemFree( cname ); } if( ctype != NULL ) { WRMemFree( ctype ); } if( !ok ) { if( data != NULL ) { WRMemFree( data ); } } return( ok ); }