void WREDisplayHint( int id ) { char *buf; char *mditext; WREHintItem *hint; if( id < WRE_MDI_FIRST ) { hint = WREGetHintItem ( id ); if( hint ) { WRESetStatusByID( -1, hint->hint ); } } else { mditext = WREAllocRCString( WRE_HINT_MDIMSG ); if( mditext ) { buf = WREMemAlloc( strlen(mditext) + 20 + 1 ); if( buf ) { sprintf( buf, mditext, WRE_MDI_FIRST + 1 - id ); WRESetStatusText( NULL, buf, TRUE ); WREMemFree( buf ); } WREFreeRCString( mditext ); } } return; }
bool WRESetStatusByID( msg_id id1, msg_id id2 ) { char *str1; char *str2; bool ret; ret = false; str1 = NULL; str2 = NULL; if( id1 > 0 ) { str1 = AllocRCString( id1 ); } if( id2 > 0 ) { str2 = AllocRCString( id2 ); } ret = WRESetStatusText( str1, str2, TRUE ); if( str1 != NULL ) { FreeRCString( str1 ); } if( str2 != NULL ) { FreeRCString( str2 ); } return( ret ); }
BOOL WREToolBarHook( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { MINMAXINFO *minmax; WREToolBar *tbar; int bstate; Bool ret; if( (tbar = WREFindToolBar( hwnd )) == NULL || tbar->win == NULL ) { return( FALSE ); } ret = FALSE; switch( msg ) { case WM_USER: if( lParam ) { WRESetStatusText( NULL, "", TRUE ); } else { WREDisplayHint( wParam ); } if( lParam ) { bstate = BUTTON_UP; } else { bstate = BUTTON_DOWN; } WRESetToolBarItemState( tbar, wParam, bstate ); break; case WM_SIZE: if( wParam != SIZE_MAXIMIZED && wParam != SIZE_MINIMIZED ) { GetWindowRect( hwnd, &tbar->last_pos ); } break; case WM_MOVE: if( !IsZoomed( hwnd ) ) { GetWindowRect( hwnd, &tbar->last_pos ); } break; case WM_GETMINMAXINFO: minmax = (MINMAXINFO *)lParam; minmax->ptMinTrackSize.x = 2 * GetSystemMetrics( SM_CXFRAME ) + tbar->info->dinfo.border_size.x + tbar->info->dinfo.button_size.x - 1; minmax->ptMinTrackSize.y = 2 * GetSystemMetrics( SM_CYFRAME ) + tbar->info->dinfo.border_size.y + GetSystemMetrics( SM_CYCAPTION ) + tbar->info->dinfo.button_size.y - 1; break; case WM_DESTROY: WRECloseToolBar( tbar ); break; } return( ret ); }
void WRERibbonHelpHook( HWND hwnd, WPARAM wParam, BOOL pressed ) { _wre_touch( hwnd ); if( !pressed ) { WRESetStatusText( NULL, "", TRUE ); } else { WREDisplayHint( wParam ); } }
void WREHandleMenuSelect ( WPARAM wParam, LPARAM lParam ) { HMENU menu; HMENU popup; WORD flags; menu = WREGetMenuHandle(); flags = GET_WM_MENUSELECT_FLAGS(wParam,lParam); if( ( flags == (WORD)-1 ) && ( GET_WM_MENUSELECT_HMENU(wParam,lParam) == (HMENU)NULL ) ) { WRESetStatusText ( NULL, "", TRUE ); } else if ( flags & (MF_SYSMENU | MF_SEPARATOR) ) { WRESetStatusText ( NULL, "", TRUE ); } else if ( flags & MF_POPUP ) { popup = (HMENU) GET_WM_MENUSELECT_ITEM(wParam,lParam); #ifdef __NT__ popup = GetSubMenu( (HMENU)lParam, (int)popup ); #endif WREHandlePopupHint ( menu, popup ); } else { WREDisplayHint ( (int) GET_WM_MENUSELECT_ITEM(wParam,lParam) ); } }
bool WRESaveSymbols( WRHashTable *table, char **file_name, bool prompt ) { char *name; WREGetFileStruct gf; bool ok; if( table == NULL || file_name == NULL ) { return( FALSE ); } if( WRIsDefaultHashTable( table ) ) { return( TRUE ); } ok = true; WRESetStatusText( NULL, "", FALSE ); WRESetStatusByID( WRE_SAVEINGSYMBOLS, -1 ); if( prompt || *file_name == NULL ) { gf.file_name = *file_name; gf.title = WRESymSaveTitle; gf.filter = WRESymSaveFilter; gf.save_ext = FALSE; name = WREGetSaveFileName( &gf ); ok = (name != NULL); if( ok ) { if( *file_name != NULL ) { WRMemFree( *file_name ); } *file_name = name; } } else { name = *file_name; } if( ok ) { ok = WRWriteSymbolsToFile( table, name ); } if( ok ) { WRMakeHashTableClean( table ); } WRESetStatusReadyText(); return( ok ); }
static void WREAddSymbols( WRHashTable *table ) { int hash; MACRO_ENTRY *me; const char *endptr; PREPROC_VALUE val; WRHashValue value; WRHashEntry *entry; bool dup; unsigned add_count; unsigned busy_count; char busy_str[2]; if( table == NULL ) { return; } dup = true; add_count = 0; busy_count = 0; busy_str[1] = '\0'; for( hash = 0; hash < HASH_SIZE; hash++ ) { for( me = PPHashTable[hash]; me != NULL; me = me->next ) { if( me->parmcount == 0 && me->replacement_list != NULL ) { if( PPEvalExpr( me->replacement_list, &endptr, &val ) ) { if( *endptr == '\0' ) { if( val.type == PPTYPE_SIGNED ) { value = (WRHashValue)val.val.ivalue; } else { value = (WRHashValue)val.val.uvalue; } entry = WRAddHashEntry( table, me->name, value, &dup, false, false ); add_count++; if( add_count == MAX_SYM_ADDS ) { busy_count++; busy_str[0] = WREBusyChars[busy_count % 4]; WRESetStatusText( NULL, busy_str, TRUE ); add_count = 0; } } } } } } }
void WREHandlePopupHint( HMENU menu, HMENU popup ) { WREPopupListItem *p; DWORD hint; hint = -1; p = WREFindPopupListItem( menu ); if( p ) { hint = WREGetPopupHint( p, popup ); if( hint != -1 ) { WRESetStatusByID( -1, hint ); } } if( hint == -1 ) { WRESetStatusText( NULL, "", TRUE ); } return; }
static char *WRELoadSymbols( WRHashTable **table, char *file_name, bool prompt ) { char *name; int c; unsigned flags; char *inc_path; WREGetFileStruct gf; unsigned pp_count; unsigned busy_count; char busy_str[2]; bool ret; bool ok; name = NULL; ok = (table != NULL); if( ok ) { WRESetStatusText( NULL, "", FALSE ); WRESetStatusByID( WRE_LOADINGSYMBOLS, -1 ); } if( ok ) { if( file_name == NULL || prompt ) { gf.file_name = file_name; gf.title = WRESymLoadTitle; gf.filter = WRESymSaveFilter; gf.save_ext = FALSE; name = WREGetOpenFileName( &gf ); } else { name = WREStrDup( file_name ); } ok = (name != NULL); } WRESetWaitCursor( TRUE ); if( ok ) { flags = PPFLAG_IGNORE_INCLUDE | PPFLAG_EMIT_LINE; inc_path = NULL; ret = setjmp( SymEnv ); if( ret ) { PP_Fini(); WREDisplayErrorMsg( WRE_SYMOUTOFMEM ); ok = false; } } if( ok ) { ok = !PP_Init( name, flags, inc_path ); if( !ok ) { WREDisplayErrorMsg( WRE_NOLOADHEADERFILE ); } } if( ok ) { pp_count = 0; busy_count = 0; busy_str[1] = '\0'; do { pp_count++; c = PP_Char(); if( pp_count == MAX_PP_CHARS ) { busy_count++; busy_str[0] = WREBusyChars[busy_count % 4]; WRESetStatusText( NULL, busy_str, TRUE ); pp_count = 0; } } while( c != EOF ); if( *table == NULL ) { *table = WRInitHashTable(); } WREAddSymbols( *table ); WRMakeHashTableClean( *table ); PP_Fini(); WRESetStatusText( NULL, " ", TRUE ); } if( !ok ) { if( name != NULL ) { WRMemFree( name ); name = NULL; } } WRESetWaitCursor( FALSE ); WRESetStatusReadyText(); return( name ); }
bool WRESetStatusReadyText( void ) { WRESetStatusText( NULL, "", FALSE ); return( WRESetStatusByID( WRE_READYMSG, 0 ) ); }