extern bool CmdEvent( gui_window * gui, gui_event gui_ev, void * param ) { gui_ctl_id id; char *text; char *cmd; int i; cmd = GUIGetExtra( gui ); switch( gui_ev ) { case GUI_INIT_DIALOG: GUISetText( gui, CTL_CMD_EDIT, "Hi Lisa!" ); GUISetFocus( gui, CTL_CMD_EDIT ); GUIClearList( gui, CTL_CMD_HISTORY ); for( i = 0; i < ArraySize( Stuff ); ++i ) { GUIAddText( gui, CTL_CMD_HISTORY, Stuff[i] ); } GUISetCurrSelect( gui, CTL_CMD_HISTORY, 1 ); return( TRUE ); case GUI_KEY_CONTROL: GUISetCurrSelect( gui, CTL_CMD_HISTORY, 2 ); cmd = GUIGetText( gui, CTL_CMD_HISTORY ); GUISetText( gui, CTL_CMD_EDIT, cmd ); GUISelectAll( gui, CTL_CMD_EDIT, TRUE ); GUIMemFree( cmd ); return( TRUE ); case GUI_CONTROL_DCLICKED: case GUI_CONTROL_CLICKED: GUI_GETID( param, id ); switch( id ) { case CTL_CMD_HISTORY: text = GUIGetText( gui, CTL_CMD_HISTORY ); GUISetText( gui, CTL_CMD_EDIT, text ); GUIMemFree( text ); if( gui_ev == GUI_CONTROL_CLICKED ) return( TRUE ); /* fall through */ case CTL_CMD_OK: text = GUIGetText( gui, CTL_CMD_EDIT ); if( text != NULL ) DoCmd( text ); GUIMemFree( text ); break; case CTL_CMD_CHECK: return( FALSE ); } GUICloseDialog( gui ); /* fall through */ case GUI_DESTROY: WndFree( cmd ); return( TRUE ); default: return( FALSE ); } }
static void GetVariableVals( gui_window *gui, a_dialog_header *curr_dialog, bool closing ) /***********************************************************************/ /* Get the input variable values. Decide how to set these */ /* default values based on edit control type. */ { char *text; int i; int is_checked; gui_control_class a_control_class; vhandle *pVariable; vhandle var_handle; bool drive_checked; drive_checked = FALSE; pVariable = curr_dialog->pVariables; for( i = 0; pVariable[i] != NO_VAR; i++ ) { var_handle = pVariable[i]; a_control_class = ControlClass( VarGetId( var_handle ), curr_dialog ); switch( a_control_class ) { case GUI_STATIC: if( !closing ) { SetDynamic( gui, var_handle, &drive_checked ); } break; case GUI_RADIO_BUTTON: case GUI_CHECK_BOX: is_checked = (int)GUIIsChecked( gui, VarGetId( var_handle ) ); if( is_checked ) { if( VarIsRestrictedFalse( var_handle ) ) { if( !closing ) { MsgBox( gui, "IDS_NODISKFOROPTION", GUI_OK ); GUISetChecked( gui, VarGetId( var_handle ), 0 ); if( var_handle == FullInstall ) { GUISetChecked( gui, VarGetId( SelectiveInstall ), 1 ); } } SetVariableByHandle( var_handle, "0" ); if( var_handle == FullInstall ) { SetVariableByHandle( SelectiveInstall, "1" ); } } else { SetVariableByHandle( var_handle, "1" ); } } else { SetVariableByHandle( var_handle, "0" ); } break; case GUI_EDIT: text = GUIGetText( gui, VarGetId( var_handle ) ); if( text != NULL ) { SetVariableByHandle( var_handle, text ); GUIMemFree( text ); } break; default: break; } } }
extern void DlgClickHistory( gui_window *gui, int edit, int list ) { char *cmd; cmd = GUIGetText( gui, list ); GUISetText( gui, edit, cmd ); GUIMemFree( cmd ); }
void WEXPORT WStatDialog::getCtrlText( WControlId id, WString & str ) { /*********************************************************************/ char *text = GUIGetText( handle(), id ); WString t( text ); GUIMemFree( text ); str = t; }
size_t WEXPORT WStatDialog::getCtrlTextLength( WControlId id ) { /**************************************************************/ char *text = GUIGetText( handle(), id ); if( text == NULL ) return( 0 ); size_t len = strlen( text ); GUIMemFree( text ); return( len ); }
static void GetDlgStatus( gui_window *gui, dlg_search *dlg ) { GUIMemFree( dlg->wnd->searchitem ); dlg->wnd->searchitem = GUIGetText( gui, CTL_SRCH_EDIT ); if( dlg->wnd->searchitem == NULL ) dlg->direction = 0; dlg->case_ignore = GUIIsChecked( gui, CTL_SRCH_CASE ); dlg->use_rx = GUIIsChecked( gui, CTL_SRCH_RX ); if( dlg->history != NULL ) { WndSaveToHistory( dlg->history, dlg->wnd->searchitem ); } }
extern unsigned GUIDlgBuffGetText( gui_window *gui, unsigned id, char *buff, unsigned max_len ) { char *str; str = GUIGetText( gui, id ); if( str == NULL ) { buff[0] = '\0'; } else { strncpy( buff, str, max_len-1 ); buff[max_len-1] = '\0'; GUIMemFree( str ); } return( strlen( buff ) ); }
static void MoveCursor( gui_window *gui, int edit, int list, int direction ) { int i,size; char *cmd; i = GUIGetCurrSelect( gui, list ); size = GUIGetListSize( gui, list ); if( size == 0 ) return; --size; i += direction; if( i < 0 ) i = 0; if( i > size ) i = size; GUISetCurrSelect( gui, list, i ); cmd = GUIGetText( gui, list ); GUISetText( gui, edit, cmd ); GUIMemFree( cmd ); GUISelectAll( gui, edit, true ); }
void WEXPORT WStatDialog::getCtrlText( WControlId id, char *buff, size_t len ) { /******************************************************************************/ char *text; size_t text_len; text = GUIGetText( handle(), id ); if( text == NULL ) { *buff = NULLCHAR; } else { text_len = strlen( text ); if( text_len > len - 1 ) text_len = len - 1; memcpy( buff, text, text_len ); buff[text_len] = NULLCHAR; GUIMemFree( text ); } }
extern unsigned GUIDlgBuffGetText( gui_window *gui, gui_ctl_id id, char *buff, unsigned buff_len ) { char *str; size_t len; if( buff_len == 0 ) return( 0 ); str = GUIGetText( gui, id ); if( str == NULL ) { len = 0; } else { --buff_len; // do space for terminating null char len = strlen( str ); if( len > buff_len ) len = buff_len; memcpy( buff, str, len ); GUIMemFree( str ); } buff[len] = '\0'; return( len ); }
/* * processFileName - process a new file name */ static process_rc processFileName( gui_window *gui ) { char *tmp; char *txt; size_t len; char path[_MAX_PATH]; char dir[_MAX_DIR]; char drive[_MAX_DRIVE]; char fname[_MAX_PATH]; char ext[_MAX_PATH]; char *buff; bool has_wild; struct stat buf; int rc; dlg_info *dlg = GUIGetExtra( gui ); tmp = GUIGetText( gui, CTL_EDIT ); if( tmp == NULL ) { return( PROCESS_FALSE ); } txt = alloca( strlen( tmp ) + 1 ); if( txt == NULL ) { GUIMemFree( tmp ); return( PROCESS_FALSE ); } strcpy( txt, tmp ); GUIMemFree( tmp ); splitPath( txt, drive, dir, fname, ext ); has_wild = hasWild( txt ); if( has_wild && fname[0] == 0 ) { return( PROCESS_FALSE ); } if( !has_wild ) { rc = stat( txt, &buf ); if( !rc ) { if( S_ISDIR( buf.st_mode ) ) { goToDir( gui, txt ); if( !initDialog( gui, dlg->fileExtensions[dlg->currExtIndex], NULL ) ) { return( PROCESS_FAIL ); } return( PROCESS_FALSE ); } } _makepath( path, drive, dir, NULL, NULL ); if( !goToDir( gui, path ) ) { return( PROCESS_FALSE ); } if( !rc && (dlg->currOFN->flags & OFN_OVERWRITEPROMPT) ) { buff = alloca( strlen( txt ) + 100 ); strcpy( buff, txt ); strcat( buff, LIT( File_Exists_Replace ) ); rc = GUIDisplayMessage( gui, buff, dlg->currOFN->title, GUI_YES_NO ); if( rc == GUI_RET_NO ) { return( PROCESS_FALSE ); } } _makepath( path, NULL, NULL, fname, ext ); if( dlg->currOFN->base_file_name != NULL ) { len = strlen( txt ); if( len >= dlg->currOFN->max_base_file_name ) { len = dlg->currOFN->max_base_file_name - 1; } memcpy( dlg->currOFN->base_file_name, txt, len ); dlg->currOFN->base_file_name[len] = 0; } if( dlg->currOFN->file_name != NULL ) { getcwd( path, sizeof( path ) ); len = strlen( path ); if( path[len - 1] != FILE_SEP_CHAR ) { path[len] = FILE_SEP_CHAR; path[len + 1] = 0; } strcat( path, fname ); strcat( path, ext ); len = strlen( path ); if( len >= dlg->currOFN->max_file_name ) { len = dlg->currOFN->max_file_name-1; } memcpy( dlg->currOFN->file_name, path, len ); dlg->currOFN->file_name[len] = 0; } return( PROCESS_TRUE ); } _makepath( path, drive, dir, NULL, NULL ); if( !goToDir( gui, path ) ) { return( PROCESS_FALSE ); } _makepath( path, NULL, NULL, fname, ext ); if( !initDialog( gui, path, NULL ) ) { return( PROCESS_FAIL ); } return( PROCESS_FALSE ); } /* processFileName */
/* * GetFileNameEvent - event handler for GetFileName dialog */ extern bool GetFileNameEvent( gui_window *gui, gui_event gui_ev, void *param ) { unsigned id; int sel; char *ptr; char path[_MAX_PATH]; dlg_info *dlg = GUIGetExtra( gui ); switch( gui_ev ) { case GUI_INIT_DIALOG: dlg->initted = false; InitTextList( gui, CTL_FILE_TYPES, GetFileTypesTextList() ); #if !defined( __UNIX__ ) && !defined( __NETWARE__ ) InitTextList( gui, CTL_DRIVES, GetDriveTextList() ); #endif if( !initDialog( gui, dlg->fileExtensions[dlg->currExtIndex], dlg->currOFN->file_name ) ) { dlg->dialogRC = OFN_RC_FAILED_TO_INITIALIZE; return( false ); } dlg->initted = true; GUISetFocus( gui, CTL_EDIT ); return( true ); break; case GUI_CONTROL_DCLICKED: GUI_GETID( param, id ); switch( id ) { case CTL_FILE_LIST: case CTL_DIR_LIST: ProcessOKorDClick( gui, id ); break; } break; case GUI_CONTROL_CLICKED: if( !dlg->initted ) break; GUI_GETID( param, id ); switch( id ) { case CTL_OK: ProcessOKorDClick( gui, id ); break; case CTL_CANCEL: GUICloseDialog( gui ); break; case CTL_FILE_LIST: ptr = GUIGetText( gui, id ); GUISetText( gui, CTL_EDIT, ptr ); GUIMemFree( ptr ); break; case CTL_DRIVES : sel = GUIGetCurrSelect( gui, id ); strcpy( path, GetDriveTextList()[sel] ); path[2] = 0; goToDir( gui, path ); if( !initDialog( gui, NULL, NULL ) ) { dlg->dialogRC = OFN_RC_RUNTIME_ERROR; GUICloseDialog( gui ); } break; case CTL_FILE_TYPES: sel = GUIGetCurrSelect( gui, id ); if( !initDialog( gui, dlg->fileExtensions[sel], NULL ) ) { dlg->dialogRC = OFN_RC_RUNTIME_ERROR; GUICloseDialog( gui ); } break; } return( true ); default: break; // makes GCC happy. } return( false ); } /* GetFileNameEvent */
/* * ProcessOKorDClick -- user clicked OK or double clicked on a file */ void ProcessOKorDClick( gui_window *gui, unsigned id ) { process_rc prc; int sel; int realsel; char path[_MAX_PATH]; char *optr; char *ptr; int i; unsigned focusid; dlg_info *dlg = GUIGetExtra( gui ); if( id == CTL_OK ) { /* hit enter or clicked ok */ GUIGetFocus( gui, &focusid ); switch( focusid ) { case CTL_DIR_LIST : id = focusid; break; case CTL_FILE_LIST : ptr = GUIGetText( gui, CTL_FILE_LIST ); GUISetText( gui, CTL_EDIT, ptr ); GUIMemFree( ptr ); break; } } switch( id ) { case CTL_FILE_LIST : case CTL_OK : prc = processFileName( gui ); if( prc == PROCESS_TRUE ) { dlg->dialogRC = OFN_RC_FILE_SELECTED; GUICloseDialog( gui ); } else if( prc == PROCESS_FAIL ) { dlg->dialogRC = OFN_RC_RUNTIME_ERROR; GUICloseDialog( gui ); } break; case CTL_DIR_LIST : sel = GUIGetCurrSelect( gui, id ); #if defined( __UNIX__ ) || defined( __NETWARE__ ) path[0] = FILE_SEP_CHAR; path[1] = 0; #else path[0] = 0; #endif realsel = 0; for( i=0;i<sel;i++ ) { ptr = GUIGetListItem( gui, id, i ); if( ptr == NULL ) { return; } optr = ptr; while( *ptr == INDENT_CHAR ) { ptr++; } if( *ptr == '-' ) { strcat( path, ptr+1 ); realsel++; if( i > 0 ) { strcat( path, FILE_SEP ); } } else { GUIMemFree( optr ); break; } GUIMemFree( optr ); } ptr = GUIGetListItem( gui, id, sel ); if( ptr == NULL ) { return; } optr = ptr; while( *ptr == INDENT_CHAR ) { ptr++; } strcat( path, ptr+1 ); GUIMemFree( optr ); goToDir( gui, path ); if( !initDialog( gui, NULL, NULL ) ) { dlg->dialogRC = OFN_RC_RUNTIME_ERROR; GUICloseDialog( gui ); } else { GUISetCurrSelect( gui, id, realsel ); } break; } } /* ProcessOKorDClick */