mirror of
https://github.com/electronicarts/CnC_Generals_Zero_Hour.git
synced 2026-04-25 10:42:44 +02:00
Initial commit of Command & Conquer Generals and Command & Conquer Generals Zero Hour source code.
This commit is contained in:
@@ -0,0 +1,390 @@
|
||||
/*
|
||||
** Command & Conquer Generals Zero Hour(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// (c) 2001-2003 Electronic Arts Inc. //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// FILE: CallbackEditor.cpp ///////////////////////////////////////////////////
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Westwood Studios Pacific.
|
||||
//
|
||||
// Confidential Information
|
||||
// Copyright (C) 2001 - All Rights Reserved
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Project: GUIEdit
|
||||
//
|
||||
// File name: CallbackEditor.cpp
|
||||
//
|
||||
// Created: Colin Day, Sepember 2001
|
||||
//
|
||||
// Desc: A handy dandy little dialog to just edit the callbacks for
|
||||
// user windows ... a super convient luxury at a bargain price!
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SYSTEM INCLUDES ////////////////////////////////////////////////////////////
|
||||
#include <windows.h>
|
||||
|
||||
// USER INCLUDES //////////////////////////////////////////////////////////////
|
||||
#include "Common/Debug.h"
|
||||
#include "Common/FunctionLexicon.h"
|
||||
#include "GameClient/Gadget.h"
|
||||
#include "GameClient/GameWindowManager.h"
|
||||
#include "GUIEdit.h"
|
||||
#include "Resource.h"
|
||||
#include "Properties.h"
|
||||
|
||||
// DEFINES ////////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE TYPES //////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE DATA ///////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
static char *noNameWindowString = "Un-named Window";
|
||||
static GameWindow *currentWindow = NULL; ///< current window we're editing
|
||||
|
||||
// PUBLIC DATA ////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE PROTOTYPES /////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE FUNCTIONS //////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SaveCallbacks ==============================================================
|
||||
/** save the current callbacks for the selected window */
|
||||
void SaveCallbacks( GameWindow *window, HWND dialog )
|
||||
{
|
||||
|
||||
// sanity
|
||||
if( window == NULL || dialog == NULL )
|
||||
return;
|
||||
|
||||
// get edit data for window
|
||||
GameWindowEditData *editData = window->winGetEditData();
|
||||
DEBUG_ASSERTCRASH( editData, ("No edit data for window saving callbacks!\n") );
|
||||
|
||||
// get the currently selected item from each of the combos and save
|
||||
Int index;
|
||||
char buffer[ 256 ];
|
||||
|
||||
// system
|
||||
index = SendDlgItemMessage( dialog, COMBO_SYSTEM, CB_GETCURSEL, 0, 0 );
|
||||
SendDlgItemMessage( dialog, COMBO_SYSTEM, CB_GETLBTEXT, index, (LPARAM)buffer );
|
||||
editData->systemCallbackString = buffer;
|
||||
|
||||
// input
|
||||
index = SendDlgItemMessage( dialog, COMBO_INPUT, CB_GETCURSEL, 0, 0 );
|
||||
SendDlgItemMessage( dialog, COMBO_INPUT, CB_GETLBTEXT, index, (LPARAM)buffer );
|
||||
editData->inputCallbackString = buffer;
|
||||
|
||||
// tooltip
|
||||
index = SendDlgItemMessage( dialog, COMBO_TOOLTIP, CB_GETCURSEL, 0, 0 );
|
||||
SendDlgItemMessage( dialog, COMBO_TOOLTIP, CB_GETLBTEXT, index, (LPARAM)buffer );
|
||||
editData->tooltipCallbackString = buffer;
|
||||
|
||||
// draw
|
||||
index = SendDlgItemMessage( dialog, COMBO_DRAW, CB_GETCURSEL, 0, 0 );
|
||||
SendDlgItemMessage( dialog, COMBO_DRAW, CB_GETLBTEXT, index, (LPARAM)buffer );
|
||||
editData->drawCallbackString = buffer;
|
||||
|
||||
// if there was a window we have a change
|
||||
if( window )
|
||||
TheEditor->setUnsaved( TRUE );
|
||||
|
||||
} // end SaveCallbacks
|
||||
|
||||
// setCurrentWindow ===========================================================
|
||||
/** Set the window passed in as the active window for editing */
|
||||
//=============================================================================
|
||||
static void setCurrentWindow( GameWindow *window, HWND dialog )
|
||||
{
|
||||
GameWindowEditData *editData = NULL;
|
||||
|
||||
// get edit data from window if present
|
||||
if( window )
|
||||
editData = window->winGetEditData();
|
||||
|
||||
// save window
|
||||
currentWindow = window;
|
||||
|
||||
// sanity
|
||||
if( dialog == NULL )
|
||||
return;
|
||||
|
||||
// enable the callback combo boxes
|
||||
EnableWindow( GetDlgItem( dialog, COMBO_SYSTEM ), TRUE );
|
||||
EnableWindow( GetDlgItem( dialog, COMBO_INPUT ), TRUE );
|
||||
EnableWindow( GetDlgItem( dialog, COMBO_TOOLTIP ), TRUE );
|
||||
EnableWindow( GetDlgItem( dialog, COMBO_DRAW ), TRUE );
|
||||
|
||||
//
|
||||
// select the assigned callbacks, if no callback is assigned
|
||||
// in a slot then we select the "none string" for the combo box
|
||||
//
|
||||
AsciiString name;
|
||||
|
||||
// system
|
||||
if( editData )
|
||||
name = editData->systemCallbackString;
|
||||
if( name.isEmpty() )
|
||||
name = GUIEDIT_NONE_STRING;
|
||||
SendDlgItemMessage( dialog, COMBO_SYSTEM,
|
||||
CB_SELECTSTRING, -1, (LPARAM)name.str() );
|
||||
|
||||
// input
|
||||
name = NULL;
|
||||
if( editData )
|
||||
name = editData->inputCallbackString;
|
||||
if( name.isEmpty() )
|
||||
name = GUIEDIT_NONE_STRING;
|
||||
SendDlgItemMessage( dialog, COMBO_INPUT,
|
||||
CB_SELECTSTRING, -1, (LPARAM)name.str() );
|
||||
|
||||
// tooltip
|
||||
name = NULL;
|
||||
if( editData )
|
||||
name = editData->tooltipCallbackString;
|
||||
if( name.isEmpty() )
|
||||
name = GUIEDIT_NONE_STRING;
|
||||
SendDlgItemMessage( dialog, COMBO_TOOLTIP,
|
||||
CB_SELECTSTRING, -1, (LPARAM)name.str() );
|
||||
|
||||
// draw
|
||||
name = NULL;
|
||||
if( editData )
|
||||
name = editData->drawCallbackString;
|
||||
if( name.isEmpty() )
|
||||
name = GUIEDIT_NONE_STRING;
|
||||
SendDlgItemMessage( dialog, COMBO_DRAW,
|
||||
CB_SELECTSTRING, -1, (LPARAM)name.str() );
|
||||
|
||||
//
|
||||
// set the name of the window in the static control above
|
||||
// the callback editor boxes
|
||||
//
|
||||
name = GUIEDIT_NONE_STRING;
|
||||
if( window )
|
||||
{
|
||||
WinInstanceData *instData = window->winGetInstanceData();
|
||||
|
||||
if( !instData->m_decoratedNameString.isEmpty() )
|
||||
name = instData->m_decoratedNameString;
|
||||
else
|
||||
name = noNameWindowString;
|
||||
|
||||
} // end if
|
||||
SetWindowText( GetDlgItem( dialog, STATIC_WINDOW ), name.str() );
|
||||
|
||||
} // end setCurrentWindow
|
||||
|
||||
// loadUserWindows ============================================================
|
||||
/** Given the window list passed in, load the list box passed with the
|
||||
* names of USER windows found in the hierarchy. */
|
||||
//=============================================================================
|
||||
static void loadUserWindows( HWND listbox, GameWindow *root )
|
||||
{
|
||||
|
||||
// end recursion
|
||||
if( root == NULL )
|
||||
return;
|
||||
|
||||
// is this a candidate
|
||||
if( TheEditor->windowIsGadget( root ) == FALSE )
|
||||
{
|
||||
WinInstanceData *instData = root->winGetInstanceData();
|
||||
Int index;
|
||||
|
||||
AsciiString name;
|
||||
//
|
||||
// add name to the listbox, if there is no name we can only put
|
||||
// an unnamed label in there
|
||||
//
|
||||
if( !instData->m_decoratedNameString.isEmpty() )
|
||||
name = instData->m_decoratedNameString;
|
||||
else
|
||||
name = noNameWindowString;
|
||||
index = SendMessage( listbox, LB_ADDSTRING, 0, (LPARAM)name.str() );
|
||||
|
||||
// add data pointer to the window at the index just added
|
||||
SendMessage( listbox, LB_SETITEMDATA, index, (LPARAM)root );
|
||||
|
||||
// check the children
|
||||
loadUserWindows( listbox, root->winGetChild() );
|
||||
|
||||
} // end if
|
||||
|
||||
// check the rest of the list
|
||||
loadUserWindows( listbox, root->winGetNext() );
|
||||
|
||||
} // end loadUserWindows
|
||||
|
||||
//-------------------------------------------------------------------------------------------------
|
||||
/** save the layout callbacks */
|
||||
//-------------------------------------------------------------------------------------------------
|
||||
static void saveLayoutCallbacks( HWND dialog )
|
||||
{
|
||||
char buffer[ MAX_LAYOUT_FUNC_LEN ];
|
||||
Int sel;
|
||||
|
||||
// layout init
|
||||
sel = SendDlgItemMessage( dialog, COMBO_INIT, CB_GETCURSEL, 0, 0 );
|
||||
SendDlgItemMessage( dialog, COMBO_INIT, CB_GETLBTEXT, sel, (LPARAM)buffer );
|
||||
TheEditor->setLayoutInit( AsciiString(buffer) );
|
||||
|
||||
// layout update
|
||||
sel = SendDlgItemMessage( dialog, COMBO_UPDATE, CB_GETCURSEL, 0, 0 );
|
||||
SendDlgItemMessage( dialog, COMBO_UPDATE, CB_GETLBTEXT, sel, (LPARAM)buffer );
|
||||
TheEditor->setLayoutUpdate( AsciiString(buffer) );
|
||||
|
||||
// layout shutdown
|
||||
sel = SendDlgItemMessage( dialog, COMBO_SHUTDOWN, CB_GETCURSEL, 0, 0 );
|
||||
SendDlgItemMessage( dialog, COMBO_SHUTDOWN, CB_GETLBTEXT, sel, (LPARAM)buffer );
|
||||
TheEditor->setLayoutShutdown( AsciiString(buffer) );
|
||||
|
||||
} // end saveLayoutCallbacks
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PUBLIC FUNCTIONS ///////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// CallbackEditorDialogProc ===================================================
|
||||
/** Dialog procedure for grid settings dialog */
|
||||
//=============================================================================
|
||||
BOOL CALLBACK CallbackEditorDialogProc( HWND hWndDialog, UINT message,
|
||||
WPARAM wParam, LPARAM lParam )
|
||||
{
|
||||
|
||||
switch( message )
|
||||
{
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
|
||||
// load the combos with the callbacks
|
||||
InitCallbackCombos( hWndDialog, NULL );
|
||||
|
||||
// select the none string at the top index in each combo
|
||||
SendDlgItemMessage( hWndDialog, COMBO_SYSTEM, CB_SETCURSEL, 0, 0 );
|
||||
SendDlgItemMessage( hWndDialog, COMBO_INPUT, CB_SETCURSEL, 0, 0 );
|
||||
SendDlgItemMessage( hWndDialog, COMBO_TOOLTIP, CB_SETCURSEL, 0, 0 );
|
||||
SendDlgItemMessage( hWndDialog, COMBO_DRAW, CB_SETCURSEL, 0, 0 );
|
||||
|
||||
// load the listbox with all the USER windows in the edit window
|
||||
loadUserWindows( GetDlgItem( hWndDialog, LIST_WINDOWS ),
|
||||
TheWindowManager->winGetWindowList() );
|
||||
|
||||
// no current window
|
||||
setCurrentWindow( NULL, hWndDialog );
|
||||
|
||||
return TRUE;
|
||||
|
||||
} // end init dialog
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_COMMAND:
|
||||
{
|
||||
Int notifyCode = HIWORD( wParam ); // notification code
|
||||
// Int controlID = LOWORD( wParam ); // control ID
|
||||
HWND hWndControl = (HWND)lParam; // control window handle
|
||||
|
||||
switch( LOWORD( wParam ) )
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case LIST_WINDOWS:
|
||||
{
|
||||
|
||||
switch( notifyCode )
|
||||
{
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
case LBN_SELCHANGE:
|
||||
{
|
||||
Int selected;
|
||||
GameWindow *win;
|
||||
|
||||
// get the current selection of the window list
|
||||
selected = SendMessage( hWndControl, LB_GETCURSEL, 0, 0 );
|
||||
|
||||
// get the window of the selected listbox item
|
||||
win = (GameWindow *)SendMessage( hWndControl, LB_GETITEMDATA,
|
||||
selected, 0 );
|
||||
|
||||
|
||||
// sanity
|
||||
DEBUG_ASSERTCRASH( win, ("NULL window set in listbox item data") );
|
||||
|
||||
// save the callbacks for the curent window selected
|
||||
SaveCallbacks( currentWindow, hWndDialog );
|
||||
|
||||
// set the current window to the new selection
|
||||
setCurrentWindow( win, hWndDialog );
|
||||
|
||||
break;
|
||||
|
||||
} // end case selection change
|
||||
|
||||
} // end switch
|
||||
|
||||
break;
|
||||
|
||||
} // end window listbox
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDOK:
|
||||
{
|
||||
|
||||
// save callbacks, set current window to empty and end dialog
|
||||
SaveCallbacks( currentWindow, hWndDialog );
|
||||
setCurrentWindow( NULL, hWndDialog );
|
||||
|
||||
// save the layout callbacks
|
||||
saveLayoutCallbacks( hWndDialog );
|
||||
|
||||
// end dialog
|
||||
EndDialog( hWndDialog, TRUE );
|
||||
|
||||
break;
|
||||
|
||||
} // end ok
|
||||
|
||||
} // end switch( LOWORD( wParam ) )
|
||||
|
||||
return 0;
|
||||
|
||||
} // end of WM_COMMAND
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
default:
|
||||
return 0;
|
||||
|
||||
} // end of switch
|
||||
|
||||
} // end CallbackEditorDialogProc
|
||||
|
||||
|
||||
@@ -0,0 +1,290 @@
|
||||
/*
|
||||
** Command & Conquer Generals Zero Hour(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// (c) 2001-2003 Electronic Arts Inc. //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// FILE: CheckBoxProperties.cpp ///////////////////////////////////////////////
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Westwood Studios Pacific.
|
||||
//
|
||||
// Confidential Information
|
||||
// Copyright (C) 2001 - All Rights Reserved
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Project: GUIEdit
|
||||
//
|
||||
// File name: CheckBoxProperties.cpp
|
||||
//
|
||||
// Created: Colin Day, August 2001
|
||||
//
|
||||
// Desc: Check box properties
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SYSTEM INCLUDES ////////////////////////////////////////////////////////////
|
||||
|
||||
// USER INCLUDES //////////////////////////////////////////////////////////////
|
||||
#include "GUIEdit.h"
|
||||
#include "Properties.h"
|
||||
#include "Resource.h"
|
||||
#include "GameClient/GadgetCheckBox.h"
|
||||
|
||||
// DEFINES ////////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE TYPES //////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE DATA ///////////////////////////////////////////////////////////////
|
||||
|
||||
// PUBLIC DATA ////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE PROTOTYPES /////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE FUNCTIONS //////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// checkBoxPropertiesCallback =================================================
|
||||
/** Dialog callback for properties */
|
||||
//=============================================================================
|
||||
static LRESULT CALLBACK checkBoxPropertiesCallback( HWND hWndDialog,
|
||||
UINT message,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam )
|
||||
{
|
||||
Int returnCode;
|
||||
|
||||
//
|
||||
// handle any common messages between all property dialogs cause they
|
||||
// are designed to have controls doing the same functionality
|
||||
// and names
|
||||
//
|
||||
if( HandleCommonDialogMessages( hWndDialog, message,
|
||||
wParam, lParam, &returnCode ) == TRUE )
|
||||
return returnCode;
|
||||
|
||||
switch( message )
|
||||
{
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_COMMAND:
|
||||
{
|
||||
// Int notifyCode = HIWORD( wParam ); // notification code
|
||||
Int controlID = LOWORD( wParam ); // control ID
|
||||
// HWND hWndControl = (HWND)lParam; // control window handle
|
||||
|
||||
switch( controlID )
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDOK:
|
||||
{
|
||||
GameWindow *window = TheEditor->getPropertyTarget();
|
||||
|
||||
// sanity
|
||||
if( window )
|
||||
{
|
||||
ImageAndColorInfo *info;
|
||||
|
||||
// save the common properties
|
||||
if( SaveCommonDialogProperties( hWndDialog, window ) == FALSE )
|
||||
break;
|
||||
|
||||
// save the image and color data
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( CHECK_BOX_ENABLED );
|
||||
GadgetCheckBoxSetEnabledImage( window, info->image );
|
||||
GadgetCheckBoxSetEnabledColor( window, info->color );
|
||||
GadgetCheckBoxSetEnabledBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( CHECK_BOX_ENABLED_UNCHECKED_BOX );
|
||||
GadgetCheckBoxSetEnabledUncheckedBoxImage( window, info->image );
|
||||
GadgetCheckBoxSetEnabledUncheckedBoxColor( window, info->color );
|
||||
GadgetCheckBoxSetEnabledUncheckedBoxBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( CHECK_BOX_ENABLED_CHECKED_BOX );
|
||||
GadgetCheckBoxSetEnabledCheckedBoxImage( window, info->image );
|
||||
GadgetCheckBoxSetEnabledCheckedBoxColor( window, info->color );
|
||||
GadgetCheckBoxSetEnabledCheckedBoxBorderColor( window, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( CHECK_BOX_DISABLED );
|
||||
GadgetCheckBoxSetDisabledImage( window, info->image );
|
||||
GadgetCheckBoxSetDisabledColor( window, info->color );
|
||||
GadgetCheckBoxSetDisabledBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( CHECK_BOX_DISABLED_UNCHECKED_BOX );
|
||||
GadgetCheckBoxSetDisabledUncheckedBoxImage( window, info->image );
|
||||
GadgetCheckBoxSetDisabledUncheckedBoxColor( window, info->color );
|
||||
GadgetCheckBoxSetDisabledUncheckedBoxBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( CHECK_BOX_DISABLED_CHECKED_BOX );
|
||||
GadgetCheckBoxSetDisabledCheckedBoxImage( window, info->image );
|
||||
GadgetCheckBoxSetDisabledCheckedBoxColor( window, info->color );
|
||||
GadgetCheckBoxSetDisabledCheckedBoxBorderColor( window, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( CHECK_BOX_HILITE );
|
||||
GadgetCheckBoxSetHiliteImage( window, info->image );
|
||||
GadgetCheckBoxSetHiliteColor( window, info->color );
|
||||
GadgetCheckBoxSetHiliteBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( CHECK_BOX_HILITE_UNCHECKED_BOX );
|
||||
GadgetCheckBoxSetHiliteUncheckedBoxImage( window, info->image );
|
||||
GadgetCheckBoxSetHiliteUncheckedBoxColor( window, info->color );
|
||||
GadgetCheckBoxSetHiliteUncheckedBoxBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( CHECK_BOX_HILITE_CHECKED_BOX );
|
||||
GadgetCheckBoxSetHiliteCheckedBoxImage( window, info->image );
|
||||
GadgetCheckBoxSetHiliteCheckedBoxColor( window, info->color );
|
||||
GadgetCheckBoxSetHiliteCheckedBoxBorderColor( window, info->borderColor );
|
||||
|
||||
} // end if
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end OK
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDCANCEL:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end cancel
|
||||
|
||||
} // end switch( LOWORD( wParam ) )
|
||||
|
||||
return 0;
|
||||
|
||||
} // end of WM_COMMAND
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_CLOSE:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
return 0;
|
||||
|
||||
} // end close
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
default:
|
||||
return 0;
|
||||
|
||||
} // end of switch
|
||||
|
||||
} // end checkBoxPropertiesCallback
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PUBLIC FUNCTIONS ///////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// InitCheckBoxPropertiesDialog ===============================================
|
||||
/** Bring up the check box properties dialog */
|
||||
//=============================================================================
|
||||
HWND InitCheckBoxPropertiesDialog( GameWindow *window )
|
||||
{
|
||||
HWND dialog;
|
||||
|
||||
// create the dialog box
|
||||
dialog = CreateDialog( TheEditor->getInstance(),
|
||||
(LPCTSTR)CHECK_BOX_PROPERTIES_DIALOG,
|
||||
TheEditor->getWindowHandle(),
|
||||
(DLGPROC)checkBoxPropertiesCallback );
|
||||
if( dialog == NULL )
|
||||
return NULL;
|
||||
|
||||
// do the common initialization
|
||||
CommonDialogInitialize( window, dialog );
|
||||
|
||||
//
|
||||
// store in the image and color table the values for this putton
|
||||
//
|
||||
const Image *image;
|
||||
Color color, borderColor;
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetCheckBoxGetEnabledImage( window );
|
||||
color = GadgetCheckBoxGetEnabledColor( window );
|
||||
borderColor = GadgetCheckBoxGetEnabledBorderColor( window );
|
||||
StoreImageAndColor( CHECK_BOX_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetCheckBoxGetEnabledUncheckedBoxImage( window );
|
||||
color = GadgetCheckBoxGetEnabledUncheckedBoxColor( window );
|
||||
borderColor = GadgetCheckBoxGetEnabledUncheckedBoxBorderColor( window );
|
||||
StoreImageAndColor( CHECK_BOX_ENABLED_UNCHECKED_BOX, image, color, borderColor );
|
||||
|
||||
image = GadgetCheckBoxGetEnabledCheckedBoxImage( window );
|
||||
color = GadgetCheckBoxGetEnabledCheckedBoxColor( window );
|
||||
borderColor = GadgetCheckBoxGetEnabledCheckedBoxBorderColor( window );
|
||||
StoreImageAndColor( CHECK_BOX_ENABLED_CHECKED_BOX, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetCheckBoxGetDisabledImage( window );
|
||||
color = GadgetCheckBoxGetDisabledColor( window );
|
||||
borderColor = GadgetCheckBoxGetDisabledBorderColor( window );
|
||||
StoreImageAndColor( CHECK_BOX_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetCheckBoxGetDisabledUncheckedBoxImage( window );
|
||||
color = GadgetCheckBoxGetDisabledUncheckedBoxColor( window );
|
||||
borderColor = GadgetCheckBoxGetDisabledUncheckedBoxBorderColor( window );
|
||||
StoreImageAndColor( CHECK_BOX_DISABLED_UNCHECKED_BOX, image, color, borderColor );
|
||||
|
||||
image = GadgetCheckBoxGetDisabledCheckedBoxImage( window );
|
||||
color = GadgetCheckBoxGetDisabledCheckedBoxColor( window );
|
||||
borderColor = GadgetCheckBoxGetDisabledCheckedBoxBorderColor( window );
|
||||
StoreImageAndColor( CHECK_BOX_DISABLED_CHECKED_BOX, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetCheckBoxGetHiliteImage( window );
|
||||
color = GadgetCheckBoxGetHiliteColor( window );
|
||||
borderColor = GadgetCheckBoxGetHiliteBorderColor( window );
|
||||
StoreImageAndColor( CHECK_BOX_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetCheckBoxGetHiliteUncheckedBoxImage( window );
|
||||
color = GadgetCheckBoxGetHiliteUncheckedBoxColor( window );
|
||||
borderColor = GadgetCheckBoxGetHiliteUncheckedBoxBorderColor( window );
|
||||
StoreImageAndColor( CHECK_BOX_HILITE_UNCHECKED_BOX, image, color, borderColor );
|
||||
|
||||
image = GadgetCheckBoxGetHiliteCheckedBoxImage( window );
|
||||
color = GadgetCheckBoxGetHiliteCheckedBoxColor( window );
|
||||
borderColor = GadgetCheckBoxGetHiliteCheckedBoxBorderColor( window );
|
||||
StoreImageAndColor( CHECK_BOX_HILITE_CHECKED_BOX, image, color, borderColor );
|
||||
|
||||
// select the button enabled state for display
|
||||
SwitchToState( CHECK_BOX_ENABLED, dialog );
|
||||
|
||||
//
|
||||
// initialize the dialog with values from the window
|
||||
//
|
||||
|
||||
return dialog;
|
||||
|
||||
} // end InitCheckBoxPropertiesDialog
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,916 @@
|
||||
/*
|
||||
** Command & Conquer Generals Zero Hour(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// (c) 2001-2003 Electronic Arts Inc. //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// FILE: ColorDialog.cpp //////////////////////////////////////////////////////
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Westwood Studios Pacific.
|
||||
//
|
||||
// Confidential Information
|
||||
// Copyright (C) 2001 - All Rights Reserved
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Project: GUIEdit
|
||||
//
|
||||
// File name: ColorDialog.cpp
|
||||
//
|
||||
// Created: Colin Day, March 1999
|
||||
// Colin Day, July 2001
|
||||
//
|
||||
// Desc: Color picker dialog
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SYSTEM INCLUDES ////////////////////////////////////////////////////////////
|
||||
#include <windows.h>
|
||||
|
||||
// USER INCLUDES //////////////////////////////////////////////////////////////
|
||||
#include "GUIEdit.h"
|
||||
#include "Resource.h"
|
||||
#include "GUIEditColor.h"
|
||||
#include "Properties.h"
|
||||
#include "Common/Debug.h"
|
||||
|
||||
// DEFINES ////////////////////////////////////////////////////////////////////
|
||||
#define MODE_RGB 0
|
||||
#define MODE_HSV 1
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE TYPES //////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE DATA ///////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
static RGBColorInt selectedColor; // picked color
|
||||
static Int mode = MODE_HSV; // color selection mode
|
||||
static ICoord2D displayPos; // where to open window
|
||||
|
||||
// PUBLIC DATA ////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE PROTOTYPES /////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE FUNCTIONS //////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// rgbToHSV ===================================================================
|
||||
// Converts the RGB colors passed in to HSV values
|
||||
// RGB colors ranges from 0 - 1
|
||||
// hue ranges from 0 - 360
|
||||
// saturation and value ranges from 0 - 1
|
||||
// ============================================================================
|
||||
HSVColorReal rgbToHSV( RGBColorReal rgbColor )
|
||||
{
|
||||
Real max, min; // max and min of rgb
|
||||
Real red, green, blue; // rgb alias
|
||||
Real hue, saturation, value; // hsv alias
|
||||
HSVColorReal hsvColor;
|
||||
|
||||
red = rgbColor.red;
|
||||
green = rgbColor.green;
|
||||
blue = rgbColor.blue;
|
||||
|
||||
// find the max and min of the rgb triplet
|
||||
max = red;
|
||||
if (green > max)
|
||||
max = green;
|
||||
if (blue > max)
|
||||
max = blue;
|
||||
|
||||
min = red;
|
||||
if (green < red)
|
||||
min = green;
|
||||
if (blue < min)
|
||||
min = blue;
|
||||
|
||||
// set the value
|
||||
value = max;
|
||||
|
||||
// calculate saturation
|
||||
if (max != 0)
|
||||
saturation = (max - min) / max;
|
||||
else
|
||||
saturation = 0; // saturation is 0 if all RGB are 0
|
||||
|
||||
// calculate hue
|
||||
if (saturation == 0) {
|
||||
hue = 0; // hue is really undefined
|
||||
} // end if
|
||||
else { // chromatic case, determine hue
|
||||
Real delta = max - min;
|
||||
|
||||
if (red == max)
|
||||
hue = (green - blue) / delta; // color between yellow and magenta
|
||||
else if (green == max)
|
||||
hue = 2 + (blue - red) / delta; // color between cyan and yellow
|
||||
else if (blue == max)
|
||||
hue = 4 + (red - green) / delta; // color between magenta and cyan
|
||||
|
||||
hue = hue * 60; // convert hue to degrees
|
||||
if (hue < 0)
|
||||
hue += 360; // make sure hue is non negative
|
||||
|
||||
} // end else, chromatic case, determine hue
|
||||
|
||||
// set and return an HSVColor
|
||||
hsvColor.hue = hue;
|
||||
hsvColor.saturation = saturation;
|
||||
hsvColor.value = value;
|
||||
|
||||
// values aren't very nice to lets make them at least 1 ... isn't not
|
||||
// technically correct but it works nicer for light color dialog
|
||||
if (hsvColor.hue == 0.0f)
|
||||
hsvColor.hue = 1.0f;
|
||||
if (hsvColor.saturation == 0.0f)
|
||||
hsvColor.saturation += 0.01f;
|
||||
if (hsvColor.value == 0.0f)
|
||||
hsvColor.value += 0.01f;
|
||||
|
||||
// copy over alpha
|
||||
hsvColor.alpha = rgbColor.alpha;
|
||||
|
||||
return hsvColor;
|
||||
|
||||
} // end rgbToHSV
|
||||
|
||||
// hsvToRGB ===================================================================
|
||||
// Converts the HSV colors passed in to RGB values
|
||||
// RGB colors ranges from 0 - 1
|
||||
// hue ranges from 0 - 360
|
||||
// saturation and value ranges from 0 - 1
|
||||
// ============================================================================
|
||||
RGBColorReal hsvToRGB( HSVColorReal hsvColor )
|
||||
{
|
||||
Int i;
|
||||
Real f, p, q, t;
|
||||
Real red, green, blue; // rgb alias
|
||||
Real hue, saturation, value; // hsv alias
|
||||
RGBColorReal rgbColor;
|
||||
|
||||
hue = hsvColor.hue;
|
||||
saturation = hsvColor.saturation;
|
||||
value = hsvColor.value;
|
||||
|
||||
if( saturation == 0.0f )
|
||||
{
|
||||
// the colors is on the black and white center line
|
||||
if( hue == 0.0f )
|
||||
{ // achromatic color ... there is no hue
|
||||
red = green = blue = value;
|
||||
} // end if, achromatic color .. there is no hue
|
||||
else
|
||||
{
|
||||
DEBUG_LOG(( "HSVToRGB error, hue should be undefined" ));
|
||||
} // end else
|
||||
|
||||
} // end if
|
||||
else
|
||||
{
|
||||
|
||||
if( hue == 360.0f )
|
||||
hue = 0.0f;
|
||||
hue = hue / 60.0f; // h is now in [0, 6)
|
||||
i = REAL_TO_INT_FLOOR(hue); // largest int <= h
|
||||
f = hue - (Real) i; // f is the fractional part of h
|
||||
p = value * (1.0f - saturation);
|
||||
q = value * (1.0f - (saturation * f));
|
||||
t = value * (1.0f - (saturation * (1.0f - f)));
|
||||
switch (i) {
|
||||
case 0:
|
||||
red = value;
|
||||
green = t;
|
||||
blue = p;
|
||||
break;
|
||||
case 1:
|
||||
red = q;
|
||||
green = value;
|
||||
blue = p;
|
||||
break;
|
||||
case 2:
|
||||
red = p;
|
||||
green = value;
|
||||
blue = t;
|
||||
break;
|
||||
case 3:
|
||||
red = p;
|
||||
green = q;
|
||||
blue = value;
|
||||
break;
|
||||
case 4:
|
||||
red = t;
|
||||
green = p;
|
||||
blue = value;
|
||||
break;
|
||||
case 5:
|
||||
red = value;
|
||||
green = p;
|
||||
blue = q;
|
||||
break;
|
||||
} // end switch (i)
|
||||
|
||||
} // end else, chromatic case
|
||||
|
||||
// store and return and RGB color
|
||||
rgbColor.red = red;
|
||||
rgbColor.green = green;
|
||||
rgbColor.blue = blue;
|
||||
rgbColor.alpha = hsvColor.alpha;
|
||||
|
||||
return rgbColor;
|
||||
|
||||
} // end hsvToRGB
|
||||
|
||||
// FORWARD DECLARATIONS ///////////////////////////////////////////////////////
|
||||
BOOL CALLBACK SelectColorDlgProc( HWND hWnd, UINT uMsg,
|
||||
WPARAM wParam, LPARAM lParam );
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PUBLIC FUNCTIONS ///////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SelectColor ================================================================
|
||||
/** Bring up the color selection requestor.
|
||||
*
|
||||
* Returns:
|
||||
* Pointer to selected color
|
||||
* NULL for canceled request
|
||||
*/
|
||||
// ============================================================================
|
||||
RGBColorInt *SelectColor( Int red, Int green, Int blue, Int alpha,
|
||||
Int mouseX, Int mouseY )
|
||||
{
|
||||
|
||||
selectedColor.red = red;
|
||||
selectedColor.green = green;
|
||||
selectedColor.blue = blue;
|
||||
selectedColor.alpha = alpha;
|
||||
|
||||
displayPos.x = mouseX;
|
||||
displayPos.y = mouseY;
|
||||
|
||||
if( DialogBox( TheEditor->getInstance(), (LPCTSTR)COLOR_SELECT_DIALOG,
|
||||
TheEditor->getWindowHandle(), SelectColorDlgProc ) )
|
||||
return &selectedColor;
|
||||
else
|
||||
return NULL;
|
||||
|
||||
} // end SelectColor
|
||||
|
||||
// SelectColorDlgProc =========================================================
|
||||
/** Dialog procedure for color selector dialog */
|
||||
// ============================================================================
|
||||
BOOL CALLBACK SelectColorDlgProc( HWND hWndDlg, UINT uMsg,
|
||||
WPARAM wParam, LPARAM lParam )
|
||||
{
|
||||
static HWND hWndScrollColor1; // red / hue
|
||||
static HWND hWndScrollColor2; // green / saturation
|
||||
static HWND hWndScrollColor3; // blue / value
|
||||
static HWND hWndScrollAlpha; // alpha scrollbar
|
||||
static HWND hWndColorBar1; // red / hue
|
||||
static HWND hWndColorBar2; // green / saturation
|
||||
static HWND hWndColorBar3; // blue / value
|
||||
static HWND hWndPreview;
|
||||
|
||||
switch (uMsg) {
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
|
||||
// save some window handles for later comparing during processing
|
||||
hWndScrollColor1 = GetDlgItem( hWndDlg, SCROLL_COLOR1 );
|
||||
hWndScrollColor2 = GetDlgItem( hWndDlg, SCROLL_COLOR2 );
|
||||
hWndScrollColor3 = GetDlgItem( hWndDlg, SCROLL_COLOR3 );
|
||||
hWndScrollAlpha = GetDlgItem( hWndDlg, SCROLL_ALPHA );
|
||||
hWndColorBar1 = GetDlgItem( hWndDlg, BUTTON_COLORBAR1 );
|
||||
hWndColorBar2 = GetDlgItem( hWndDlg, BUTTON_COLORBAR2 );
|
||||
hWndColorBar3 = GetDlgItem( hWndDlg, BUTTON_COLORBAR3 );
|
||||
hWndPreview = GetDlgItem (hWndDlg, BUTTON_PREVIEW);
|
||||
|
||||
// init the scroll bars and labels to the current color
|
||||
if (mode == MODE_HSV)
|
||||
{
|
||||
RGBColorReal rgbColor;
|
||||
HSVColorReal hsvColor;
|
||||
|
||||
rgbColor.red = (Real) selectedColor.red / 255.0f;
|
||||
rgbColor.green = (Real) selectedColor.green / 255.0f;
|
||||
rgbColor.blue = (Real) selectedColor.blue / 255.0f;
|
||||
rgbColor.alpha = (Real) selectedColor.alpha;
|
||||
hsvColor = rgbToHSV (rgbColor);
|
||||
hsvColor.saturation *= 100.0f;
|
||||
hsvColor.value *= 100.0f;
|
||||
|
||||
// init the HSV and intensity scroll bar extents
|
||||
SendMessage( hWndScrollColor1, SBM_SETRANGE, 1, 360 );
|
||||
SendMessage( hWndScrollColor2, SBM_SETRANGE, 1, 100 );
|
||||
SendMessage( hWndScrollColor3, SBM_SETRANGE, 1, 100 );
|
||||
SendMessage( hWndScrollAlpha, SBM_SETRANGE, 0, 255 );
|
||||
|
||||
// set the scroll bars and labels
|
||||
SetScrollPos (hWndScrollColor1, SB_CTL, (Int) hsvColor.hue, TRUE);
|
||||
SetDlgItemInt (hWndDlg, LABEL_COLOR1,
|
||||
(Int) hsvColor.hue, FALSE);
|
||||
SetScrollPos (hWndScrollColor2, SB_CTL, (Int) hsvColor.saturation, TRUE);
|
||||
SetDlgItemInt (hWndDlg, LABEL_COLOR2,
|
||||
(Int) hsvColor.saturation, FALSE);
|
||||
SetScrollPos (hWndScrollColor3, SB_CTL, (Int) hsvColor.value, TRUE);
|
||||
SetDlgItemInt (hWndDlg, LABEL_COLOR3,
|
||||
(Int) hsvColor.value, FALSE);
|
||||
SetScrollPos (hWndScrollAlpha, SB_CTL, (Int) hsvColor.alpha, TRUE);
|
||||
SetDlgItemInt (hWndDlg, LABEL_ALPHA,
|
||||
(Int) hsvColor.alpha, FALSE);
|
||||
|
||||
} // end if
|
||||
else
|
||||
{
|
||||
|
||||
// init the RGB and intensity scroll bar extents
|
||||
SendMessage( hWndScrollColor1, SBM_SETRANGE, 1, 255 );
|
||||
SendMessage( hWndScrollColor2, SBM_SETRANGE, 1, 255 );
|
||||
SendMessage( hWndScrollColor3, SBM_SETRANGE, 1, 255 );
|
||||
SendMessage( hWndScrollAlpha, SBM_SETRANGE, 0, 255 );
|
||||
SetScrollPos (hWndScrollColor1, SB_CTL, selectedColor.red, TRUE);
|
||||
SetDlgItemInt (hWndDlg, LABEL_COLOR1,
|
||||
selectedColor.red, FALSE);
|
||||
SetScrollPos (hWndScrollColor2, SB_CTL, selectedColor.green, TRUE);
|
||||
SetDlgItemInt (hWndDlg, LABEL_COLOR2,
|
||||
selectedColor.green, FALSE);
|
||||
SetScrollPos (hWndScrollColor3, SB_CTL, selectedColor.blue, TRUE);
|
||||
SetDlgItemInt (hWndDlg, LABEL_COLOR3,
|
||||
selectedColor.blue, FALSE);
|
||||
SetScrollPos (hWndScrollAlpha, SB_CTL, selectedColor.alpha, TRUE);
|
||||
SetDlgItemInt (hWndDlg, LABEL_ALPHA,
|
||||
selectedColor.alpha, FALSE);
|
||||
|
||||
} // end else
|
||||
|
||||
//
|
||||
// move the window to the display position, but keep the whole
|
||||
// window on the screen
|
||||
//
|
||||
PositionWindowOnScreen( hWndDlg, displayPos.x, displayPos.y );
|
||||
|
||||
return TRUE;
|
||||
|
||||
} // end case WM_INITDIALOG
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_DRAWITEM: {
|
||||
UINT idCtl = (UINT) wParam; // control identifier
|
||||
LPDRAWITEMSTRUCT lpdis = (LPDRAWITEMSTRUCT) lParam; // item drawing
|
||||
HWND hWndControl;
|
||||
RECT rect;
|
||||
ICoord2D center;
|
||||
Int radius;
|
||||
|
||||
// Get the area we have to draw in
|
||||
hWndControl = GetDlgItem (hWndDlg, idCtl);
|
||||
GetClientRect (hWndControl, &rect);
|
||||
center.x = (rect.right - rect.left) / 2;
|
||||
center.y = (rect.bottom - rect.top) / 2;
|
||||
|
||||
// record radius we have to work with
|
||||
radius = (rect.right - rect.left) / 2;
|
||||
|
||||
switch (idCtl) {
|
||||
|
||||
case BUTTON_PREVIEW: {
|
||||
RGBColorReal rgbColor;
|
||||
HSVColorReal hsvColor;
|
||||
HBRUSH hBrushOld, hBrushNew;
|
||||
|
||||
if (mode == MODE_RGB) {
|
||||
rgbColor.red = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR1,
|
||||
NULL, FALSE);
|
||||
rgbColor.green = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR2,
|
||||
NULL, FALSE);
|
||||
rgbColor.blue = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR3,
|
||||
NULL, FALSE);
|
||||
} // end if
|
||||
else {
|
||||
hsvColor.hue = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR1,
|
||||
NULL, FALSE);
|
||||
hsvColor.saturation = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR2,
|
||||
NULL, FALSE);
|
||||
hsvColor.value = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR3,
|
||||
NULL, FALSE);
|
||||
// convert to ranges 0 - 1 for RGB conversion
|
||||
hsvColor.saturation /= 100.0f;
|
||||
hsvColor.value /= 100.0f;
|
||||
rgbColor = hsvToRGB (hsvColor);
|
||||
// convert RGB ranges to 0 - 255
|
||||
rgbColor.red *= 255;
|
||||
rgbColor.green *= 255;
|
||||
rgbColor.blue *= 255;
|
||||
} // end else
|
||||
|
||||
// create a new brush and select it into DC
|
||||
hBrushNew = CreateSolidBrush (RGB ((BYTE) rgbColor.red,
|
||||
(BYTE) rgbColor.green,
|
||||
(BYTE) rgbColor.blue));
|
||||
hBrushOld = (HBRUSH)SelectObject( lpdis->hDC, hBrushNew );
|
||||
|
||||
// draw the rectangle
|
||||
Rectangle (lpdis->hDC, rect.left, rect.top,
|
||||
rect.right, rect.bottom);
|
||||
|
||||
// put the old brush back and delete the new one
|
||||
SelectObject (lpdis->hDC, hBrushOld);
|
||||
DeleteObject (hBrushNew);
|
||||
|
||||
// validate this new area
|
||||
ValidateRect (hWndControl, NULL);
|
||||
|
||||
break;
|
||||
|
||||
} // end case BUTTON_PREVIEW
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// Draw the bar of either HUE or RED next to the scroll bar
|
||||
// --------------------------------------------------------------------
|
||||
case BUTTON_COLORBAR1: {
|
||||
Real step;
|
||||
Int x, y;
|
||||
RGBColorReal rgbColor;
|
||||
HSVColorReal hsvColor;
|
||||
|
||||
// compute how big of a red increment for each line as we step
|
||||
// down the bar
|
||||
if (mode == MODE_HSV)
|
||||
step = 360.0f / (Real) (rect.right - rect.left);
|
||||
else
|
||||
step = 255.0f / (Real) (rect.right - rect.left);
|
||||
|
||||
// compute the first color, create pen for it, and save the
|
||||
// original pen
|
||||
if (mode == MODE_HSV) {
|
||||
hsvColor.hue = 1;
|
||||
hsvColor.saturation = 1;
|
||||
hsvColor.value = 1;
|
||||
rgbColor = hsvToRGB (hsvColor);
|
||||
rgbColor.red *= 255.0f;
|
||||
rgbColor.green *= 255.0f;
|
||||
rgbColor.blue *= 255.0f;
|
||||
} // end if
|
||||
else {
|
||||
rgbColor.red = 0;
|
||||
rgbColor.green = 0;
|
||||
rgbColor.blue = 0;
|
||||
} // end else
|
||||
|
||||
// loop through each horizontal line available in the bar drawing
|
||||
// the correct color there
|
||||
for (x = 0; x < (rect.right - rect.left) - 1; x++) {
|
||||
|
||||
// draw a horizontal row of pixels with this color
|
||||
for (y = 0; y < rect.bottom; y++)
|
||||
SetPixel (lpdis->hDC, x, y, RGB ((BYTE) rgbColor.red,
|
||||
(BYTE) rgbColor.green,
|
||||
(BYTE) rgbColor.blue));
|
||||
|
||||
// increment the color, create new pen, and delete old pen
|
||||
if (mode == MODE_HSV) {
|
||||
hsvColor.hue += step;
|
||||
rgbColor = hsvToRGB (hsvColor);
|
||||
rgbColor.red *= 255;
|
||||
rgbColor.green *= 255;
|
||||
rgbColor.blue *= 255;
|
||||
} // end if
|
||||
else {
|
||||
rgbColor.red += step;
|
||||
} // end else
|
||||
|
||||
} // end for i
|
||||
|
||||
break;
|
||||
|
||||
} // end case BUTTON_COLORBAR1
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// Draw the bar of either SATURATION or GREEN next to the scroll bar
|
||||
// --------------------------------------------------------------------
|
||||
case BUTTON_COLORBAR2: {
|
||||
Real step;
|
||||
Int x, y;
|
||||
RGBColorReal rgbColor;
|
||||
HSVColorReal hsvColor;
|
||||
|
||||
// compute how big of a increment for each line as we step
|
||||
// down the bar
|
||||
if (mode == MODE_HSV)
|
||||
step = 1.0f / (Real) (rect.right - rect.left);
|
||||
else
|
||||
step = 255.0f / (Real) (rect.right - rect.left);
|
||||
|
||||
// compute the first color, create pen for it, and save the
|
||||
// original pen
|
||||
if (mode == MODE_HSV) {
|
||||
hsvColor.hue = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR1,
|
||||
NULL, FALSE);
|
||||
hsvColor.saturation = 1.0f / 100.0f;
|
||||
hsvColor.value = 1;
|
||||
rgbColor = hsvToRGB (hsvColor);
|
||||
rgbColor.red *= 255;
|
||||
rgbColor.green *= 255;
|
||||
rgbColor.blue *= 255;
|
||||
} // end if
|
||||
else {
|
||||
rgbColor.red = 0;
|
||||
rgbColor.green = 0;
|
||||
rgbColor.blue = 0;
|
||||
} // end else
|
||||
|
||||
// loop through each horizontal line available in the bar drawing
|
||||
// the correct color there
|
||||
for (x = 0; x < (rect.right - rect.left) - 1; x++) {
|
||||
|
||||
// draw a horizontal row of pixels with this color
|
||||
for (y = 0; y < rect.bottom; y++)
|
||||
SetPixel (lpdis->hDC, x, y, RGB ((BYTE) rgbColor.red,
|
||||
(BYTE) rgbColor.green,
|
||||
(BYTE) rgbColor.blue));
|
||||
|
||||
// increment the color, create new pen, and delete old pen
|
||||
if (mode == MODE_HSV) {
|
||||
hsvColor.saturation += step;
|
||||
rgbColor = hsvToRGB (hsvColor);
|
||||
rgbColor.red *= 255;
|
||||
rgbColor.green *= 255;
|
||||
rgbColor.blue *= 255;
|
||||
} // end if
|
||||
else {
|
||||
rgbColor.green += step;
|
||||
} // end else
|
||||
|
||||
} // end for i
|
||||
|
||||
break;
|
||||
|
||||
} // end case BUTTON_COLORBAR2
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// Draw the bar of either VALUE or BLUE next to the scroll bar
|
||||
// --------------------------------------------------------------------
|
||||
case BUTTON_COLORBAR3: {
|
||||
Real step;
|
||||
Int x, y;
|
||||
RGBColorReal rgbColor;
|
||||
HSVColorReal hsvColor;
|
||||
|
||||
// compute how big of a increment for each line as we step
|
||||
// down the bar
|
||||
if (mode == MODE_HSV)
|
||||
step = 1.0f / (Real) (rect.right - rect.left);
|
||||
else
|
||||
step = 255.0f / (Real) (rect.right - rect.left);
|
||||
|
||||
// compute the first color, create pen for it, and save the
|
||||
// original pen
|
||||
if (mode == MODE_HSV) {
|
||||
hsvColor.hue = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR1,
|
||||
NULL, FALSE);
|
||||
hsvColor.saturation =
|
||||
(Real) GetDlgItemInt (hWndDlg, LABEL_COLOR2, NULL, FALSE) / 100.0f;
|
||||
hsvColor.value = 1.0f / 100.0f;
|
||||
rgbColor = hsvToRGB (hsvColor);
|
||||
rgbColor.red *= 255.0f;
|
||||
rgbColor.green *= 255.0f;
|
||||
rgbColor.blue *= 255.0f;
|
||||
} // end if
|
||||
else {
|
||||
rgbColor.red = 0;
|
||||
rgbColor.green = 0;
|
||||
rgbColor.blue = 0;
|
||||
} // end else
|
||||
|
||||
// loop through each horizontal line available in the bar drawing
|
||||
// the correct color there
|
||||
for (x = 0; x < (rect.right - rect.left) - 1; x++) {
|
||||
|
||||
// draw a horizontal row of pixels with this color
|
||||
for (y = 0; y < rect.bottom; y++)
|
||||
SetPixel (lpdis->hDC, x, y, RGB ((BYTE) rgbColor.red,
|
||||
(BYTE) rgbColor.green,
|
||||
(BYTE) rgbColor.blue));
|
||||
|
||||
// increment the color, create new pen, and delete old pen
|
||||
if (mode == MODE_HSV) {
|
||||
hsvColor.value += step;
|
||||
rgbColor = hsvToRGB (hsvColor);
|
||||
rgbColor.red *= 255;
|
||||
rgbColor.green *= 255;
|
||||
rgbColor.blue *= 255;
|
||||
} // end if
|
||||
else {
|
||||
rgbColor.blue += step;
|
||||
} // end else
|
||||
|
||||
} // end for i
|
||||
|
||||
break;
|
||||
|
||||
} // end case BUTTON_COLORBAR3
|
||||
|
||||
} // end switch
|
||||
|
||||
return TRUE;
|
||||
|
||||
} // end case WM_DRAWITEM
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// horizontal scrolling on the color bars
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_HSCROLL:
|
||||
{
|
||||
Int nScrollCode = (Int) LOWORD (wParam); // scroll bar value
|
||||
Short nPos = (Short) HIWORD (wParam); // for thumbtrack only
|
||||
HWND hWndScroll = (HWND) lParam; // handle of scroll bar
|
||||
Int labelID; // identifier of the text label for this scroll bar
|
||||
Int thumbPos; // current thumb position
|
||||
Int minPos, maxPos; // max and min of this scrollbar
|
||||
|
||||
// get the thumb position for the scrollbar
|
||||
thumbPos = GetScrollPos (hWndScroll, SB_CTL);
|
||||
|
||||
// find out which scroll bar we're talking about and set the correct
|
||||
// labelID for that control
|
||||
if (hWndScroll == hWndScrollColor1)
|
||||
labelID = LABEL_COLOR1;
|
||||
else if (hWndScroll == hWndScrollColor2)
|
||||
labelID = LABEL_COLOR2;
|
||||
else if (hWndScroll == hWndScrollColor3)
|
||||
labelID = LABEL_COLOR3;
|
||||
else if( hWndScroll == hWndScrollAlpha )
|
||||
labelID = LABEL_ALPHA;
|
||||
|
||||
// find the max and min extents for this scroll bar
|
||||
SendMessage (hWndScroll, SBM_GETRANGE, (WPARAM) &minPos, (LPARAM) &maxPos);
|
||||
|
||||
switch (nScrollCode) {
|
||||
case SB_LINELEFT: {
|
||||
if (thumbPos > minPos)
|
||||
thumbPos--;
|
||||
break;
|
||||
} // end case SB_LINELEFT
|
||||
case SB_PAGELEFT: {
|
||||
if (thumbPos - 45 >= minPos)
|
||||
thumbPos -= 45;
|
||||
else
|
||||
thumbPos = minPos;
|
||||
break;
|
||||
} // end case SB_PAGELEFT
|
||||
case SB_LINERIGHT: {
|
||||
if (thumbPos < maxPos)
|
||||
thumbPos++;
|
||||
break;
|
||||
} // end case SB_LINERIGHT
|
||||
case SB_PAGERIGHT: {
|
||||
if (thumbPos + 45 < maxPos)
|
||||
thumbPos += 45;
|
||||
else
|
||||
thumbPos = maxPos;
|
||||
break;
|
||||
} // end case SB_PAGERIGHT
|
||||
case SB_THUMBTRACK: {
|
||||
thumbPos = nPos;
|
||||
break;
|
||||
} // end case SB_THUBTRACK
|
||||
default: {
|
||||
return 0;
|
||||
} // end default
|
||||
} // end switch nScrollCode
|
||||
|
||||
// set the new scrollbar position and the text with it
|
||||
SendMessage (hWndScroll, SBM_SETPOS, (WPARAM) thumbPos, (LPARAM) TRUE);
|
||||
SetDlgItemInt (hWndDlg, labelID, thumbPos, FALSE);
|
||||
|
||||
// if this was a color scroll bar, save the color change in
|
||||
// the appropriate color bead
|
||||
if (hWndScroll == hWndScrollColor1 ||
|
||||
hWndScroll == hWndScrollColor2 ||
|
||||
hWndScroll == hWndScrollColor3 ||
|
||||
hWndScroll == hWndScrollAlpha )
|
||||
{
|
||||
|
||||
RGBColorReal rgbColor;
|
||||
HSVColorReal hsvColor;
|
||||
|
||||
if (mode == MODE_RGB) {
|
||||
rgbColor.red = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR1,
|
||||
NULL, FALSE);
|
||||
rgbColor.green = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR2,
|
||||
NULL, FALSE);
|
||||
rgbColor.blue = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR3,
|
||||
NULL, FALSE);
|
||||
rgbColor.alpha = (Real) GetDlgItemInt( hWndDlg, LABEL_ALPHA,
|
||||
NULL, FALSE );
|
||||
|
||||
} // end if
|
||||
else {
|
||||
hsvColor.hue = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR1,
|
||||
NULL, FALSE);
|
||||
hsvColor.saturation = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR2,
|
||||
NULL, FALSE);
|
||||
hsvColor.value = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR3,
|
||||
NULL, FALSE);
|
||||
hsvColor.alpha = (Real) GetDlgItemInt( hWndDlg, LABEL_ALPHA,
|
||||
NULL, FALSE );
|
||||
|
||||
// convert to ranges 0 - 1 for RGB conversion
|
||||
hsvColor.saturation /= 100.0f;
|
||||
hsvColor.value /= 100.0f;
|
||||
rgbColor = hsvToRGB (hsvColor);
|
||||
// convert RGB ranges to 0 - 255
|
||||
rgbColor.red *= 255;
|
||||
rgbColor.green *= 255;
|
||||
rgbColor.blue *= 255;
|
||||
} // end else
|
||||
|
||||
// store the color
|
||||
selectedColor.red = (Int) rgbColor.red;
|
||||
selectedColor.green = (Int) rgbColor.green;
|
||||
selectedColor.blue = (Int) rgbColor.blue;
|
||||
selectedColor.alpha = (Int) rgbColor.alpha;
|
||||
|
||||
// force update of preview box
|
||||
// invalidate the preview box to force an update of its color
|
||||
InvalidateRect( hWndPreview, NULL, FALSE);
|
||||
UpdateWindow (hWndPreview);
|
||||
|
||||
// force updates of the colorbars
|
||||
InvalidateRect (hWndColorBar1, NULL, FALSE);
|
||||
InvalidateRect (hWndColorBar2, NULL, FALSE);
|
||||
InvalidateRect (hWndColorBar3, NULL, FALSE);
|
||||
UpdateWindow (hWndColorBar1);
|
||||
UpdateWindow (hWndColorBar2);
|
||||
UpdateWindow (hWndColorBar3);
|
||||
|
||||
} // end if, color bar scroll message
|
||||
|
||||
return 0;
|
||||
|
||||
} // end case WM_HSCROLL
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_COMMAND: {
|
||||
// Int wNotifyCode = HIWORD(wParam); // notification code
|
||||
Int wID = LOWORD(wParam); // id of control
|
||||
// HWND hWndControl = (HWND) lParam; // handle of control
|
||||
|
||||
switch (wID) {
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// color ok
|
||||
// --------------------------------------------------------------------
|
||||
case IDOK: {
|
||||
|
||||
EndDialog( hWndDlg, TRUE ); // color selected
|
||||
break;
|
||||
|
||||
} // end case IDOK
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDCANCEL: {
|
||||
|
||||
EndDialog( hWndDlg, FALSE ); // selection cancelled
|
||||
break;
|
||||
|
||||
} // end case IDCANCEL
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// Change from RGB mode to HSV mode and vice versa
|
||||
// --------------------------------------------------------------------
|
||||
case BUTTON_RGB_HSV: {
|
||||
HWND hWndScroll;
|
||||
RGBColorReal rgbColor;
|
||||
HSVColorReal hsvColor;
|
||||
|
||||
if (mode == MODE_RGB) { // switch to HSV
|
||||
rgbColor.red = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR1, NULL, FALSE);
|
||||
rgbColor.green = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR2, NULL, FALSE);
|
||||
rgbColor.blue = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR3, NULL, FALSE);
|
||||
|
||||
// convert rgb to range 0 - 1
|
||||
rgbColor.red /= 255.0f;
|
||||
rgbColor.green /= 255.0f;
|
||||
rgbColor.blue /= 255.0f;
|
||||
// convert the RGB to HSV
|
||||
hsvColor = rgbToHSV (rgbColor);
|
||||
// turn saturation and value to 0 - 100 ranges
|
||||
hsvColor.saturation *= 100.0f;
|
||||
hsvColor.value *= 100.0f;
|
||||
|
||||
// change the scrollbar extents and positions
|
||||
hWndScroll = GetDlgItem (hWndDlg, SCROLL_COLOR1);
|
||||
SetScrollRange (hWndScroll, SB_CTL, 1, 360, FALSE);
|
||||
SetScrollPos (hWndScroll, SB_CTL, (Int) hsvColor.hue, TRUE);
|
||||
SetDlgItemInt (hWndDlg, LABEL_COLOR1, (Int) hsvColor.hue, FALSE);
|
||||
|
||||
hWndScroll = GetDlgItem (hWndDlg, SCROLL_COLOR2);
|
||||
SetScrollRange (hWndScroll, SB_CTL, 1, 100, FALSE);
|
||||
SetScrollPos (hWndScroll, SB_CTL, (Int) hsvColor.saturation, TRUE);
|
||||
SetDlgItemInt (hWndDlg, LABEL_COLOR2, (Int) hsvColor.saturation, FALSE);
|
||||
|
||||
hWndScroll = GetDlgItem (hWndDlg, SCROLL_COLOR3);
|
||||
SetScrollRange (hWndScroll, SB_CTL, 1, 100, FALSE);
|
||||
SetScrollPos (hWndScroll, SB_CTL, (Int) hsvColor.value, TRUE);
|
||||
SetDlgItemInt (hWndDlg, LABEL_COLOR3, (Int) hsvColor.value, FALSE);
|
||||
|
||||
mode = MODE_HSV;
|
||||
|
||||
// change the text for the button
|
||||
SetWindowText (GetDlgItem (hWndDlg, BUTTON_RGB_HSV),
|
||||
"Switch to RGB");
|
||||
|
||||
} // end if, switch to HSV
|
||||
else { // switch to RGB
|
||||
hsvColor.hue = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR1, NULL, FALSE);
|
||||
hsvColor.saturation = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR2, NULL, FALSE);
|
||||
hsvColor.value = (Real) GetDlgItemInt (hWndDlg, LABEL_COLOR3, NULL, FALSE);
|
||||
|
||||
// convert saturation and value to range 0 - 1
|
||||
hsvColor.saturation /= 100.0f;
|
||||
hsvColor.value /= 100.0f;
|
||||
// convert the HSV to RGB
|
||||
rgbColor = hsvToRGB (hsvColor);
|
||||
// turn the rgb into 0 - 255 range
|
||||
rgbColor.red *= 255.0f;
|
||||
rgbColor.green *= 255.0f;
|
||||
rgbColor.blue *= 255.0f;
|
||||
|
||||
// change the scrollbar extents and positions
|
||||
hWndScroll = GetDlgItem (hWndDlg, SCROLL_COLOR1);
|
||||
SetScrollRange (hWndScroll, SB_CTL, 1, 255, FALSE);
|
||||
SetScrollPos (hWndScroll, SB_CTL, (Int) rgbColor.red, TRUE);
|
||||
SetDlgItemInt (hWndDlg, LABEL_COLOR1, (Int) rgbColor.red, FALSE);
|
||||
|
||||
hWndScroll = GetDlgItem (hWndDlg, SCROLL_COLOR2);
|
||||
SetScrollRange (hWndScroll, SB_CTL, 1, 255, FALSE);
|
||||
SetScrollPos (hWndScroll, SB_CTL, (Int) rgbColor.green, TRUE);
|
||||
SetDlgItemInt (hWndDlg, LABEL_COLOR2, (Int) rgbColor.green, FALSE);
|
||||
|
||||
hWndScroll = GetDlgItem (hWndDlg, SCROLL_COLOR3);
|
||||
SetScrollRange (hWndScroll, SB_CTL, 1, 255, FALSE);
|
||||
SetScrollPos (hWndScroll, SB_CTL, (Int) rgbColor.blue, TRUE);
|
||||
SetDlgItemInt (hWndDlg, LABEL_COLOR3, (Int) rgbColor.blue, FALSE);
|
||||
|
||||
// change the text for the button
|
||||
SetWindowText (GetDlgItem (hWndDlg, BUTTON_RGB_HSV),
|
||||
"Switch to HSV");
|
||||
|
||||
mode = MODE_RGB;
|
||||
|
||||
} // end else, switch to RGB
|
||||
|
||||
// invalidate all the vertical color bars so they are redrawn
|
||||
InvalidateRect (hWndColorBar1, NULL, TRUE);
|
||||
InvalidateRect (hWndColorBar2, NULL, TRUE);
|
||||
InvalidateRect (hWndColorBar3, NULL, TRUE);
|
||||
|
||||
} // end case BUTTON_RGB_HSV
|
||||
|
||||
} // end switch (LOWORD (wParam))
|
||||
|
||||
return 0;
|
||||
|
||||
} // end case WM_COMMAND
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// Only hide the window on a close rather than destroy it since it will
|
||||
// probably be needed again.
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_CLOSE:
|
||||
ShowWindow(hWndDlg, SW_HIDE);
|
||||
return 0;
|
||||
|
||||
default:
|
||||
return 0; // for all messages that are not processed
|
||||
|
||||
} // end of switch (uMsg)
|
||||
|
||||
} // End of SelectColor
|
||||
@@ -0,0 +1,983 @@
|
||||
/*
|
||||
** Command & Conquer Generals Zero Hour(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// (c) 2001-2003 Electronic Arts Inc. //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// FILE: ComboBoxProperties.cpp ////////////////////////////////////////////////
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Westwood Studios Pacific.
|
||||
//
|
||||
// Confidential Information
|
||||
// Copyright (C) 2001 - All Rights Reserved
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Project: GUIEdit
|
||||
//
|
||||
// File name: ComboBoxProperties.cpp
|
||||
//
|
||||
// Created: Colin Day, August 2001
|
||||
//
|
||||
// Desc: ComboBox properties dialog
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SYSTEM INCLUDES ////////////////////////////////////////////////////////////
|
||||
|
||||
// USER INCLUDES //////////////////////////////////////////////////////////////
|
||||
#include "GUIEdit.h"
|
||||
#include "Properties.h"
|
||||
#include "LayoutScheme.h"
|
||||
#include "Resource.h"
|
||||
#include "GameClient/GadgetComboBox.h"
|
||||
#include "GameClient/GadgetListBox.h"
|
||||
#include "GameClient/GadgetSlider.h"
|
||||
#include "GameClient/GadgetPushButton.h"
|
||||
#include "GameClient/GadgetTextEntry.h"
|
||||
#include "GameClient/GameWindowManager.h"
|
||||
|
||||
// DEFINES ////////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE TYPES //////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE DATA ///////////////////////////////////////////////////////////////
|
||||
|
||||
// PUBLIC DATA ////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE PROTOTYPES /////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE FUNCTIONS //////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
// comboBoxPropertiesCallback ==================================================
|
||||
/** Dialog callback for properties */
|
||||
//=============================================================================
|
||||
static LRESULT CALLBACK comboBoxPropertiesCallback( HWND hWndDialog,
|
||||
UINT message,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam )
|
||||
{
|
||||
Int returnCode;
|
||||
|
||||
//
|
||||
// handle any common messages between all property dialogs cause they
|
||||
// are designed to have controls doing the same functionality
|
||||
// and names
|
||||
//
|
||||
if( HandleCommonDialogMessages( hWndDialog, message,
|
||||
wParam, lParam, &returnCode ) == TRUE )
|
||||
return returnCode;
|
||||
|
||||
switch( message )
|
||||
{
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_COMMAND:
|
||||
{
|
||||
// Int notifyCode = HIWORD( wParam ); // notification code
|
||||
Int controlID = LOWORD( wParam ); // control ID
|
||||
// HWND hWndControl = (HWND)lParam; // control window handle
|
||||
|
||||
switch( controlID )
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case BUTTON_SUBCONTROL_COLOR:
|
||||
{
|
||||
ImageAndColorInfo *info;
|
||||
|
||||
//
|
||||
// using the current colors in the base of the comboBox, assign a
|
||||
// reasonable color scheme to all the sub control components
|
||||
//
|
||||
info = GetStateInfo( COMBOBOX_ENABLED );
|
||||
StoreColor( COMBOBOX_LISTBOX_ENABLED, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_DROP_DOWN_BUTTON_ENABLED, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_UP_BUTTON_ENABLED, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_DOWN_BUTTON_ENABLED, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_SLIDER_ENABLED_TOP, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_SLIDER_THUMB_ENABLED, info->color, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_ENABLED_SELECTED_ITEM_LEFT );
|
||||
StoreColor( COMBOBOX_EDIT_BOX_ENABLED_LEFT, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_DROP_DOWN_BUTTON_ENABLED_PUSHED, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_UP_BUTTON_ENABLED_PUSHED, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_ENABLED_SELECTED_ITEM_LEFT, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_DOWN_BUTTON_ENABLED_PUSHED, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_SLIDER_THUMB_ENABLED_PUSHED, info->color, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_DISABLED );
|
||||
StoreColor( COMBOBOX_DROP_DOWN_BUTTON_DISABLED, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_DISABLED, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_UP_BUTTON_DISABLED, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_DOWN_BUTTON_DISABLED, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_SLIDER_DISABLED_TOP, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_SLIDER_THUMB_DISABLED, info->color, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_DISABLED_SELECTED_ITEM_LEFT );
|
||||
StoreColor( COMBOBOX_EDIT_BOX_DISABLED_LEFT, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_DROP_DOWN_BUTTON_DISABLED_PUSHED, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_DISABLED_SELECTED_ITEM_LEFT, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_UP_BUTTON_DISABLED_PUSHED, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_DOWN_BUTTON_DISABLED_PUSHED, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_SLIDER_THUMB_DISABLED_PUSHED, info->color, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_HILITE );
|
||||
StoreColor( COMBOBOX_DROP_DOWN_BUTTON_HILITE, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_HILITE, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_UP_BUTTON_HILITE, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_DOWN_BUTTON_HILITE, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_SLIDER_HILITE_TOP, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_SLIDER_THUMB_HILITE, info->color, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_HILITE_SELECTED_ITEM_LEFT );
|
||||
StoreColor( COMBOBOX_DROP_DOWN_BUTTON_HILITE_PUSHED, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_EDIT_BOX_HILITE_LEFT, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_HILITE_SELECTED_ITEM_LEFT, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_UP_BUTTON_HILITE_PUSHED, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_DOWN_BUTTON_HILITE_PUSHED, info->color, info->borderColor );
|
||||
StoreColor( COMBOBOX_LISTBOX_SLIDER_THUMB_HILITE_PUSHED, info->color, info->borderColor );
|
||||
|
||||
break;
|
||||
|
||||
} // end case subcontrol color
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDOK:
|
||||
{
|
||||
GameWindow *window = TheEditor->getPropertyTarget();
|
||||
|
||||
// sanity
|
||||
if( window )
|
||||
{
|
||||
ImageAndColorInfo *info;
|
||||
|
||||
// save the common properties
|
||||
if( SaveCommonDialogProperties( hWndDialog, window ) == FALSE )
|
||||
break;
|
||||
|
||||
// save the image and color data
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_ENABLED );
|
||||
GadgetComboBoxSetEnabledImage( window, info->image );
|
||||
GadgetComboBoxSetEnabledColor( window, info->color );
|
||||
GadgetComboBoxSetEnabledBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_ENABLED_SELECTED_ITEM_LEFT );
|
||||
GadgetComboBoxSetEnabledSelectedItemImageLeft( window, info->image );
|
||||
GadgetComboBoxSetEnabledSelectedItemColor( window, info->color );
|
||||
GadgetComboBoxSetEnabledSelectedItemBorderColor( window, info->borderColor );
|
||||
info = GetStateInfo( COMBOBOX_ENABLED_SELECTED_ITEM_RIGHT );
|
||||
GadgetComboBoxSetEnabledSelectedItemImageRight( window, info->image );
|
||||
info = GetStateInfo( COMBOBOX_ENABLED_SELECTED_ITEM_CENTER );
|
||||
GadgetComboBoxSetEnabledSelectedItemImageCenter( window, info->image );
|
||||
info = GetStateInfo( COMBOBOX_ENABLED_SELECTED_ITEM_SMALL_CENTER );
|
||||
GadgetComboBoxSetEnabledSelectedItemImageSmallCenter( window, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_DISABLED );
|
||||
GadgetComboBoxSetDisabledImage( window, info->image );
|
||||
GadgetComboBoxSetDisabledColor( window, info->color );
|
||||
GadgetComboBoxSetDisabledBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_DISABLED_SELECTED_ITEM_LEFT );
|
||||
GadgetComboBoxSetDisabledSelectedItemImageLeft( window, info->image );
|
||||
GadgetComboBoxSetDisabledSelectedItemColor( window, info->color );
|
||||
GadgetComboBoxSetDisabledSelectedItemBorderColor( window, info->borderColor );
|
||||
info = GetStateInfo( COMBOBOX_DISABLED_SELECTED_ITEM_RIGHT );
|
||||
GadgetComboBoxSetDisabledSelectedItemImageRight( window, info->image );
|
||||
info = GetStateInfo( COMBOBOX_DISABLED_SELECTED_ITEM_CENTER );
|
||||
GadgetComboBoxSetDisabledSelectedItemImageCenter( window, info->image );
|
||||
info = GetStateInfo( COMBOBOX_DISABLED_SELECTED_ITEM_SMALL_CENTER );
|
||||
GadgetComboBoxSetDisabledSelectedItemImageSmallCenter( window, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_HILITE );
|
||||
GadgetComboBoxSetHiliteImage( window, info->image );
|
||||
GadgetComboBoxSetHiliteColor( window, info->color );
|
||||
GadgetComboBoxSetHiliteBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_HILITE_SELECTED_ITEM_LEFT );
|
||||
GadgetComboBoxSetHiliteSelectedItemImageLeft( window, info->image );
|
||||
GadgetComboBoxSetHiliteSelectedItemColor( window, info->color );
|
||||
GadgetComboBoxSetHiliteSelectedItemBorderColor( window, info->borderColor );
|
||||
info = GetStateInfo( COMBOBOX_HILITE_SELECTED_ITEM_RIGHT );
|
||||
GadgetComboBoxSetHiliteSelectedItemImageRight( window, info->image );
|
||||
info = GetStateInfo( COMBOBOX_HILITE_SELECTED_ITEM_CENTER );
|
||||
GadgetComboBoxSetHiliteSelectedItemImageCenter( window, info->image );
|
||||
info = GetStateInfo( COMBOBOX_HILITE_SELECTED_ITEM_SMALL_CENTER );
|
||||
GadgetComboBoxSetHiliteSelectedItemImageSmallCenter( window, info->image );
|
||||
|
||||
GameWindow *dropDownButton = GadgetComboBoxGetDropDownButton( window );
|
||||
if (dropDownButton)
|
||||
{
|
||||
// save the image and color data
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_DROP_DOWN_BUTTON_ENABLED );
|
||||
GadgetButtonSetEnabledImage( dropDownButton, info->image );
|
||||
GadgetButtonSetEnabledColor( dropDownButton, info->color );
|
||||
GadgetButtonSetEnabledBorderColor( dropDownButton, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_DROP_DOWN_BUTTON_ENABLED_PUSHED );
|
||||
GadgetButtonSetEnabledSelectedImage( dropDownButton, info->image );
|
||||
GadgetButtonSetEnabledSelectedColor( dropDownButton, info->color );
|
||||
GadgetButtonSetEnabledSelectedBorderColor( dropDownButton, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_DROP_DOWN_BUTTON_DISABLED );
|
||||
GadgetButtonSetDisabledImage( dropDownButton, info->image );
|
||||
GadgetButtonSetDisabledColor( dropDownButton, info->color );
|
||||
GadgetButtonSetDisabledBorderColor( dropDownButton, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_DROP_DOWN_BUTTON_DISABLED_PUSHED );
|
||||
GadgetButtonSetDisabledSelectedImage( dropDownButton, info->image );
|
||||
GadgetButtonSetDisabledSelectedColor( dropDownButton, info->color );
|
||||
GadgetButtonSetDisabledSelectedBorderColor( dropDownButton, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_DROP_DOWN_BUTTON_HILITE );
|
||||
GadgetButtonSetHiliteImage( dropDownButton, info->image );
|
||||
GadgetButtonSetHiliteColor( dropDownButton, info->color );
|
||||
GadgetButtonSetHiliteBorderColor( dropDownButton, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_DROP_DOWN_BUTTON_HILITE_PUSHED );
|
||||
GadgetButtonSetHiliteSelectedImage( dropDownButton, info->image );
|
||||
GadgetButtonSetHiliteSelectedColor( dropDownButton, info->color );
|
||||
GadgetButtonSetHiliteSelectedBorderColor( dropDownButton, info->borderColor );
|
||||
}
|
||||
|
||||
GameWindow *editBox = GadgetComboBoxGetEditBox( window );
|
||||
if (editBox)
|
||||
{
|
||||
// save the image and color data
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_EDIT_BOX_ENABLED_LEFT );
|
||||
GadgetTextEntrySetEnabledImageLeft( editBox, info->image );
|
||||
GadgetTextEntrySetEnabledColor( editBox, info->color );
|
||||
GadgetTextEntrySetEnabledBorderColor( editBox, info->borderColor );
|
||||
info = GetStateInfo( COMBOBOX_EDIT_BOX_ENABLED_RIGHT );
|
||||
GadgetTextEntrySetEnabledImageRight( editBox, info->image );
|
||||
info = GetStateInfo( COMBOBOX_EDIT_BOX_ENABLED_CENTER );
|
||||
GadgetTextEntrySetEnabledImageCenter( editBox, info->image );
|
||||
info = GetStateInfo( COMBOBOX_EDIT_BOX_ENABLED_SMALL_CENTER );
|
||||
GadgetTextEntrySetEnabledImageSmallCenter( editBox, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_EDIT_BOX_DISABLED_LEFT );
|
||||
GadgetTextEntrySetDisabledImageLeft( editBox, info->image );
|
||||
GadgetTextEntrySetDisabledColor( editBox, info->color );
|
||||
GadgetTextEntrySetDisabledBorderColor( editBox, info->borderColor );
|
||||
info = GetStateInfo( COMBOBOX_EDIT_BOX_DISABLED_RIGHT );
|
||||
GadgetTextEntrySetDisabledImageRight( editBox, info->image );
|
||||
info = GetStateInfo( COMBOBOX_EDIT_BOX_DISABLED_CENTER );
|
||||
GadgetTextEntrySetDisabledImageCenter( editBox, info->image );
|
||||
info = GetStateInfo( COMBOBOX_EDIT_BOX_DISABLED_SMALL_CENTER );
|
||||
GadgetTextEntrySetDisabledImageSmallCenter( editBox, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_EDIT_BOX_HILITE_LEFT );
|
||||
GadgetTextEntrySetHiliteImageLeft( editBox, info->image );
|
||||
GadgetTextEntrySetHiliteColor( editBox, info->color );
|
||||
GadgetTextEntrySetHiliteBorderColor( editBox, info->borderColor );
|
||||
info = GetStateInfo( COMBOBOX_EDIT_BOX_HILITE_RIGHT );
|
||||
GadgetTextEntrySetHiliteImageRight( editBox, info->image );
|
||||
info = GetStateInfo( COMBOBOX_EDIT_BOX_HILITE_CENTER );
|
||||
GadgetTextEntrySetHiliteImageCenter( editBox, info->image );
|
||||
info = GetStateInfo( COMBOBOX_EDIT_BOX_HILITE_SMALL_CENTER );
|
||||
GadgetTextEntrySetHiliteImageSmallCenter( editBox, info->image );
|
||||
|
||||
}
|
||||
|
||||
GameWindow *listBox = GadgetComboBoxGetListBox( window );
|
||||
if (listBox)
|
||||
{
|
||||
// save the image and color data
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_ENABLED );
|
||||
GadgetListBoxSetEnabledImage( listBox, info->image );
|
||||
GadgetListBoxSetEnabledColor( listBox, info->color );
|
||||
GadgetListBoxSetEnabledBorderColor( listBox, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_ENABLED_SELECTED_ITEM_LEFT );
|
||||
GadgetListBoxSetEnabledSelectedItemImageLeft( listBox, info->image );
|
||||
GadgetListBoxSetEnabledSelectedItemColor( listBox, info->color );
|
||||
GadgetListBoxSetEnabledSelectedItemBorderColor( listBox, info->borderColor );
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_ENABLED_SELECTED_ITEM_RIGHT );
|
||||
GadgetListBoxSetEnabledSelectedItemImageRight( listBox, info->image );
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_ENABLED_SELECTED_ITEM_CENTER );
|
||||
GadgetListBoxSetEnabledSelectedItemImageCenter( listBox, info->image );
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_ENABLED_SELECTED_ITEM_SMALL_CENTER );
|
||||
GadgetListBoxSetEnabledSelectedItemImageSmallCenter( listBox, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_DISABLED );
|
||||
GadgetListBoxSetDisabledImage( listBox, info->image );
|
||||
GadgetListBoxSetDisabledColor( listBox, info->color );
|
||||
GadgetListBoxSetDisabledBorderColor( listBox, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_DISABLED_SELECTED_ITEM_LEFT );
|
||||
GadgetListBoxSetDisabledSelectedItemImageLeft( listBox, info->image );
|
||||
GadgetListBoxSetDisabledSelectedItemColor( listBox, info->color );
|
||||
GadgetListBoxSetDisabledSelectedItemBorderColor( listBox, info->borderColor );
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_DISABLED_SELECTED_ITEM_RIGHT );
|
||||
GadgetListBoxSetDisabledSelectedItemImageRight( listBox, info->image );
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_DISABLED_SELECTED_ITEM_CENTER );
|
||||
GadgetListBoxSetDisabledSelectedItemImageCenter( listBox, info->image );
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_DISABLED_SELECTED_ITEM_SMALL_CENTER );
|
||||
GadgetListBoxSetDisabledSelectedItemImageSmallCenter( listBox, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_HILITE );
|
||||
GadgetListBoxSetHiliteImage( listBox, info->image );
|
||||
GadgetListBoxSetHiliteColor( listBox, info->color );
|
||||
GadgetListBoxSetHiliteBorderColor( listBox, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_HILITE_SELECTED_ITEM_LEFT );
|
||||
GadgetListBoxSetHiliteSelectedItemImageLeft( listBox, info->image );
|
||||
GadgetListBoxSetHiliteSelectedItemColor( listBox, info->color );
|
||||
GadgetListBoxSetHiliteSelectedItemBorderColor( listBox, info->borderColor );
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_HILITE_SELECTED_ITEM_RIGHT );
|
||||
GadgetListBoxSetHiliteSelectedItemImageRight( listBox, info->image );
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_HILITE_SELECTED_ITEM_CENTER );
|
||||
GadgetListBoxSetHiliteSelectedItemImageCenter( listBox, info->image );
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_HILITE_SELECTED_ITEM_SMALL_CENTER );
|
||||
GadgetListBoxSetHiliteSelectedItemImageSmallCenter( listBox, info->image );
|
||||
|
||||
// up button
|
||||
GameWindow *upButton = GadgetListBoxGetUpButton( listBox );
|
||||
if( upButton )
|
||||
{
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_UP_BUTTON_ENABLED );
|
||||
GadgetButtonSetEnabledImage( upButton, info->image );
|
||||
GadgetButtonSetEnabledColor( upButton, info->color );
|
||||
GadgetButtonSetEnabledBorderColor( upButton, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_UP_BUTTON_ENABLED_PUSHED );
|
||||
GadgetButtonSetEnabledSelectedImage( upButton, info->image );
|
||||
GadgetButtonSetEnabledSelectedColor( upButton, info->color );
|
||||
GadgetButtonSetEnabledSelectedBorderColor( upButton, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_UP_BUTTON_DISABLED );
|
||||
GadgetButtonSetDisabledImage( upButton, info->image );
|
||||
GadgetButtonSetDisabledColor( upButton, info->color );
|
||||
GadgetButtonSetDisabledBorderColor( upButton, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_UP_BUTTON_DISABLED_PUSHED );
|
||||
GadgetButtonSetDisabledSelectedImage( upButton, info->image );
|
||||
GadgetButtonSetDisabledSelectedColor( upButton, info->color );
|
||||
GadgetButtonSetDisabledSelectedBorderColor( upButton, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_UP_BUTTON_HILITE );
|
||||
GadgetButtonSetHiliteImage( upButton, info->image );
|
||||
GadgetButtonSetHiliteColor( upButton, info->color );
|
||||
GadgetButtonSetHiliteBorderColor( upButton, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_UP_BUTTON_HILITE_PUSHED );
|
||||
GadgetButtonSetHiliteSelectedImage( upButton, info->image );
|
||||
GadgetButtonSetHiliteSelectedColor( upButton, info->color );
|
||||
GadgetButtonSetHiliteSelectedBorderColor( upButton, info->borderColor );
|
||||
|
||||
} // end if
|
||||
|
||||
// down button
|
||||
GameWindow *downButton = GadgetListBoxGetDownButton( listBox );
|
||||
if( downButton )
|
||||
{
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_DOWN_BUTTON_ENABLED );
|
||||
GadgetButtonSetEnabledImage( downButton, info->image );
|
||||
GadgetButtonSetEnabledColor( downButton, info->color );
|
||||
GadgetButtonSetEnabledBorderColor( downButton, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_DOWN_BUTTON_ENABLED_PUSHED );
|
||||
GadgetButtonSetEnabledSelectedImage( downButton, info->image );
|
||||
GadgetButtonSetEnabledSelectedColor( downButton, info->color );
|
||||
GadgetButtonSetEnabledSelectedBorderColor( downButton, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_DOWN_BUTTON_DISABLED );
|
||||
GadgetButtonSetDisabledImage( downButton, info->image );
|
||||
GadgetButtonSetDisabledColor( downButton, info->color );
|
||||
GadgetButtonSetDisabledBorderColor( downButton, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_DOWN_BUTTON_DISABLED_PUSHED );
|
||||
GadgetButtonSetDisabledSelectedImage( downButton, info->image );
|
||||
GadgetButtonSetDisabledSelectedColor( downButton, info->color );
|
||||
GadgetButtonSetDisabledSelectedBorderColor( downButton, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_DOWN_BUTTON_HILITE );
|
||||
GadgetButtonSetHiliteImage( downButton, info->image );
|
||||
GadgetButtonSetHiliteColor( downButton, info->color );
|
||||
GadgetButtonSetHiliteBorderColor( downButton, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_DOWN_BUTTON_HILITE_PUSHED );
|
||||
GadgetButtonSetHiliteSelectedImage( downButton, info->image );
|
||||
GadgetButtonSetHiliteSelectedColor( downButton, info->color );
|
||||
GadgetButtonSetHiliteSelectedBorderColor( downButton, info->borderColor );
|
||||
|
||||
} // end if
|
||||
|
||||
// slider
|
||||
GameWindow *slider = GadgetListBoxGetSlider( listBox );
|
||||
if( slider )
|
||||
{
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_SLIDER_ENABLED_TOP );
|
||||
GadgetSliderSetEnabledImageTop( slider, info->image );
|
||||
GadgetSliderSetEnabledColor( slider, info->color );
|
||||
GadgetSliderSetEnabledBorderColor( slider, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_SLIDER_ENABLED_BOTTOM );
|
||||
GadgetSliderSetEnabledImageBottom( slider, info->image );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_SLIDER_ENABLED_CENTER );
|
||||
GadgetSliderSetEnabledImageCenter( slider, info->image );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_SLIDER_ENABLED_SMALL_CENTER );
|
||||
GadgetSliderSetEnabledImageSmallCenter( slider, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_SLIDER_DISABLED_TOP );
|
||||
GadgetSliderSetDisabledImageTop( slider, info->image );
|
||||
GadgetSliderSetDisabledColor( slider, info->color );
|
||||
GadgetSliderSetDisabledBorderColor( slider, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_SLIDER_DISABLED_BOTTOM );
|
||||
GadgetSliderSetDisabledImageBottom( slider, info->image );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_SLIDER_DISABLED_CENTER );
|
||||
GadgetSliderSetDisabledImageCenter( slider, info->image );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_SLIDER_DISABLED_SMALL_CENTER );
|
||||
GadgetSliderSetDisabledImageSmallCenter( slider, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_SLIDER_HILITE_TOP );
|
||||
GadgetSliderSetHiliteImageTop( slider, info->image );
|
||||
GadgetSliderSetHiliteColor( slider, info->color );
|
||||
GadgetSliderSetHiliteBorderColor( slider, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_SLIDER_HILITE_BOTTOM );
|
||||
GadgetSliderSetHiliteImageBottom( slider, info->image );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_SLIDER_HILITE_CENTER );
|
||||
GadgetSliderSetHiliteImageCenter( slider, info->image );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_SLIDER_HILITE_SMALL_CENTER );
|
||||
GadgetSliderSetHiliteImageSmallCenter( slider, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_SLIDER_THUMB_ENABLED );
|
||||
GadgetSliderSetEnabledThumbImage( slider, info->image );
|
||||
GadgetSliderSetEnabledThumbColor( slider, info->color );
|
||||
GadgetSliderSetEnabledThumbBorderColor( slider, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_SLIDER_THUMB_ENABLED_PUSHED );
|
||||
GadgetSliderSetEnabledSelectedThumbImage( slider, info->image );
|
||||
GadgetSliderSetEnabledSelectedThumbColor( slider, info->color );
|
||||
GadgetSliderSetEnabledSelectedThumbBorderColor( slider, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_SLIDER_THUMB_DISABLED );
|
||||
GadgetSliderSetDisabledThumbImage( slider, info->image );
|
||||
GadgetSliderSetDisabledThumbColor( slider, info->color );
|
||||
GadgetSliderSetDisabledThumbBorderColor( slider, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_SLIDER_THUMB_DISABLED_PUSHED );
|
||||
GadgetSliderSetDisabledSelectedThumbImage( slider, info->image );
|
||||
GadgetSliderSetDisabledSelectedThumbColor( slider, info->color );
|
||||
GadgetSliderSetDisabledSelectedThumbBorderColor( slider, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_SLIDER_THUMB_HILITE );
|
||||
GadgetSliderSetHiliteThumbImage( slider, info->image );
|
||||
GadgetSliderSetHiliteThumbColor( slider, info->color );
|
||||
GadgetSliderSetHiliteThumbBorderColor( slider, info->borderColor );
|
||||
|
||||
info = GetStateInfo( COMBOBOX_LISTBOX_SLIDER_THUMB_HILITE_PUSHED );
|
||||
GadgetSliderSetHiliteSelectedThumbImage( slider, info->image );
|
||||
GadgetSliderSetHiliteSelectedThumbColor( slider, info->color );
|
||||
GadgetSliderSetHiliteSelectedThumbBorderColor( slider, info->borderColor );
|
||||
|
||||
} // end if
|
||||
} // end if (listBox)
|
||||
// save specific list data
|
||||
ComboBoxData *comboData = (ComboBoxData *)window->winGetUserData();
|
||||
|
||||
GadgetComboBoxSetIsEditable(window, IsDlgButtonChecked( hWndDialog, CHECK_IS_EDITABLE ));
|
||||
GadgetComboBoxSetAsciiOnly(window, IsDlgButtonChecked( hWndDialog, CHECK_ASCII_TEXT ));
|
||||
GadgetComboBoxSetLettersAndNumbersOnly(window, IsDlgButtonChecked( hWndDialog, CHECK_LETTERS_AND_NUMBERS ));
|
||||
|
||||
// change in the size of the comboBox
|
||||
Int newMaxChars = GetDlgItemInt( hWndDialog, EDIT_MAX_CHARS, NULL, FALSE );
|
||||
if( newMaxChars != comboData->maxChars)
|
||||
GadgetComboBoxSetMaxChars( window, newMaxChars );
|
||||
|
||||
Int newMaxDisplay = GetDlgItemInt( hWndDialog, EDIT_MAX_ITEMS_DISPLAYED, NULL, FALSE );
|
||||
if( newMaxDisplay != comboData->maxDisplay )
|
||||
GadgetComboBoxSetMaxDisplay( window, newMaxDisplay );
|
||||
|
||||
|
||||
} // end if
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end OK
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDCANCEL:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end cancel
|
||||
|
||||
} // end switch( LOWORD( wParam ) )
|
||||
|
||||
return 0;
|
||||
|
||||
} // end of WM_COMMAND
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_CLOSE:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
return 0;
|
||||
|
||||
} // end close
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
default:
|
||||
return 0;
|
||||
|
||||
} // end of switch
|
||||
|
||||
} // end comboBoxPropertiesCallback
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PUBLIC FUNCTIONS ///////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// InitComboBoxPropertiesDialog ================================================
|
||||
/** Bring up the comboBox properties window */
|
||||
//=============================================================================
|
||||
HWND InitComboBoxPropertiesDialog( GameWindow *window )
|
||||
{
|
||||
HWND dialog;
|
||||
|
||||
// create the dialog box
|
||||
dialog = CreateDialog( TheEditor->getInstance(),
|
||||
(LPCTSTR)COMBO_BOX_PROPERTIES_DIALOG,
|
||||
TheEditor->getWindowHandle(),
|
||||
(DLGPROC)comboBoxPropertiesCallback );
|
||||
if( dialog == NULL )
|
||||
return NULL;
|
||||
|
||||
// do the common initialization
|
||||
CommonDialogInitialize( window, dialog );
|
||||
|
||||
//
|
||||
// store in the image and color table the values for this combo Box
|
||||
//
|
||||
const Image *image;
|
||||
Color color, borderColor;
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetComboBoxGetEnabledImage( window );
|
||||
color = GadgetComboBoxGetEnabledColor( window );
|
||||
borderColor = GadgetComboBoxGetEnabledBorderColor( window );
|
||||
StoreImageAndColor( COMBOBOX_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetComboBoxGetEnabledSelectedItemImageLeft( window );
|
||||
color = GadgetComboBoxGetEnabledSelectedItemColor( window );
|
||||
borderColor = GadgetComboBoxGetEnabledSelectedItemBorderColor( window );
|
||||
StoreImageAndColor( COMBOBOX_ENABLED_SELECTED_ITEM_LEFT, image, color, borderColor );
|
||||
image = GadgetComboBoxGetEnabledSelectedItemImageRight( window );
|
||||
StoreImageAndColor( COMBOBOX_ENABLED_SELECTED_ITEM_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetComboBoxGetEnabledSelectedItemImageCenter( window );
|
||||
StoreImageAndColor( COMBOBOX_ENABLED_SELECTED_ITEM_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetComboBoxGetEnabledSelectedItemImageSmallCenter( window );
|
||||
StoreImageAndColor( COMBOBOX_ENABLED_SELECTED_ITEM_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetComboBoxGetDisabledImage( window );
|
||||
color = GadgetComboBoxGetDisabledColor( window );
|
||||
borderColor = GadgetComboBoxGetDisabledBorderColor( window );
|
||||
StoreImageAndColor( COMBOBOX_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetComboBoxGetDisabledSelectedItemImageLeft( window );
|
||||
color = GadgetComboBoxGetDisabledSelectedItemColor( window );
|
||||
borderColor = GadgetComboBoxGetDisabledSelectedItemBorderColor( window );
|
||||
StoreImageAndColor( COMBOBOX_DISABLED_SELECTED_ITEM_LEFT, image, color, borderColor );
|
||||
image = GadgetComboBoxGetDisabledSelectedItemImageRight( window );
|
||||
StoreImageAndColor( COMBOBOX_DISABLED_SELECTED_ITEM_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetComboBoxGetDisabledSelectedItemImageCenter( window );
|
||||
StoreImageAndColor( COMBOBOX_DISABLED_SELECTED_ITEM_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetComboBoxGetDisabledSelectedItemImageSmallCenter( window );
|
||||
StoreImageAndColor( COMBOBOX_DISABLED_SELECTED_ITEM_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetComboBoxGetHiliteImage( window );
|
||||
color = GadgetComboBoxGetHiliteColor( window );
|
||||
borderColor = GadgetComboBoxGetHiliteBorderColor( window );
|
||||
StoreImageAndColor( COMBOBOX_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetComboBoxGetHiliteSelectedItemImageLeft( window );
|
||||
color = GadgetComboBoxGetHiliteSelectedItemColor( window );
|
||||
borderColor = GadgetComboBoxGetHiliteSelectedItemBorderColor( window );
|
||||
StoreImageAndColor( COMBOBOX_HILITE_SELECTED_ITEM_LEFT, image, color, borderColor );
|
||||
image = GadgetComboBoxGetHiliteSelectedItemImageRight( window );
|
||||
StoreImageAndColor( COMBOBOX_HILITE_SELECTED_ITEM_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetComboBoxGetHiliteSelectedItemImageCenter( window );
|
||||
StoreImageAndColor( COMBOBOX_HILITE_SELECTED_ITEM_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetComboBoxGetHiliteSelectedItemImageSmallCenter( window );
|
||||
StoreImageAndColor( COMBOBOX_HILITE_SELECTED_ITEM_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
GameWindow *listBox = GadgetComboBoxGetListBox( window );
|
||||
if (listBox)
|
||||
{
|
||||
image = GadgetListBoxGetEnabledSelectedItemImageLeft( listBox );
|
||||
color = GadgetListBoxGetEnabledSelectedItemColor( listBox );
|
||||
borderColor = GadgetListBoxGetEnabledSelectedItemBorderColor( listBox );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_ENABLED_SELECTED_ITEM_LEFT, image, color, borderColor );
|
||||
image = GadgetListBoxGetEnabledSelectedItemImageRight( listBox );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_ENABLED_SELECTED_ITEM_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetListBoxGetEnabledSelectedItemImageCenter( listBox );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_ENABLED_SELECTED_ITEM_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetListBoxGetEnabledSelectedItemImageSmallCenter( listBox );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_ENABLED_SELECTED_ITEM_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetListBoxGetDisabledImage( listBox );
|
||||
color = GadgetListBoxGetDisabledColor( listBox );
|
||||
borderColor = GadgetListBoxGetDisabledBorderColor( listBox );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetListBoxGetDisabledSelectedItemImageLeft( listBox );
|
||||
color = GadgetListBoxGetDisabledSelectedItemColor( listBox );
|
||||
borderColor = GadgetListBoxGetDisabledSelectedItemBorderColor( listBox );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_DISABLED_SELECTED_ITEM_LEFT, image, color, borderColor );
|
||||
image = GadgetListBoxGetDisabledSelectedItemImageRight( listBox );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_DISABLED_SELECTED_ITEM_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetListBoxGetDisabledSelectedItemImageCenter( listBox );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_DISABLED_SELECTED_ITEM_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetListBoxGetDisabledSelectedItemImageSmallCenter( listBox );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_DISABLED_SELECTED_ITEM_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetListBoxGetHiliteImage( listBox );
|
||||
color = GadgetListBoxGetHiliteColor( listBox );
|
||||
borderColor = GadgetListBoxGetHiliteBorderColor( listBox );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetListBoxGetHiliteSelectedItemImageLeft( listBox );
|
||||
color = GadgetListBoxGetHiliteSelectedItemColor( listBox );
|
||||
borderColor = GadgetListBoxGetHiliteSelectedItemBorderColor( listBox );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_HILITE_SELECTED_ITEM_LEFT, image, color, borderColor );
|
||||
image = GadgetListBoxGetHiliteSelectedItemImageRight( listBox );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_HILITE_SELECTED_ITEM_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetListBoxGetHiliteSelectedItemImageCenter( listBox );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_HILITE_SELECTED_ITEM_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetListBoxGetHiliteSelectedItemImageSmallCenter( listBox );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_HILITE_SELECTED_ITEM_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
GameWindow *upButton = GadgetListBoxGetUpButton( listBox );
|
||||
if( upButton )
|
||||
{
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
image = GadgetButtonGetEnabledImage( upButton );
|
||||
color = GadgetButtonGetEnabledColor( upButton );
|
||||
borderColor = GadgetButtonGetEnabledBorderColor( upButton );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_UP_BUTTON_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetEnabledSelectedImage( upButton );
|
||||
color = GadgetButtonGetEnabledSelectedColor( upButton );
|
||||
borderColor = GadgetButtonGetEnabledSelectedBorderColor( upButton );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_UP_BUTTON_ENABLED_PUSHED, image, color, borderColor );
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
image = GadgetButtonGetDisabledImage( upButton );
|
||||
color = GadgetButtonGetDisabledColor( upButton );
|
||||
borderColor = GadgetButtonGetDisabledBorderColor( upButton );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_UP_BUTTON_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetDisabledSelectedImage( upButton );
|
||||
color = GadgetButtonGetDisabledSelectedColor( upButton );
|
||||
borderColor = GadgetButtonGetDisabledSelectedBorderColor( upButton );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_UP_BUTTON_DISABLED_PUSHED, image, color, borderColor );
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
image = GadgetButtonGetHiliteImage( upButton );
|
||||
color = GadgetButtonGetHiliteColor( upButton );
|
||||
borderColor = GadgetButtonGetHiliteBorderColor( upButton );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_UP_BUTTON_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetHiliteSelectedImage( upButton );
|
||||
color = GadgetButtonGetHiliteSelectedColor( upButton );
|
||||
borderColor = GadgetButtonGetHiliteSelectedBorderColor( upButton );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_UP_BUTTON_HILITE_PUSHED, image, color, borderColor );
|
||||
|
||||
} // end if
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
GameWindow *downButton = GadgetListBoxGetDownButton( listBox );
|
||||
if( downButton )
|
||||
{
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
image = GadgetButtonGetEnabledImage( downButton );
|
||||
color = GadgetButtonGetEnabledColor( downButton );
|
||||
borderColor = GadgetButtonGetEnabledBorderColor( downButton );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_DOWN_BUTTON_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetEnabledSelectedImage( downButton );
|
||||
color = GadgetButtonGetEnabledSelectedColor( downButton );
|
||||
borderColor = GadgetButtonGetEnabledSelectedBorderColor( downButton );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_DOWN_BUTTON_ENABLED_PUSHED, image, color, borderColor );
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
image = GadgetButtonGetDisabledImage( downButton );
|
||||
color = GadgetButtonGetDisabledColor( downButton );
|
||||
borderColor = GadgetButtonGetDisabledBorderColor( downButton );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_DOWN_BUTTON_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetDisabledSelectedImage( downButton );
|
||||
color = GadgetButtonGetDisabledSelectedColor( downButton );
|
||||
borderColor = GadgetButtonGetDisabledSelectedBorderColor( downButton );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_DOWN_BUTTON_DISABLED_PUSHED, image, color, borderColor );
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
image = GadgetButtonGetHiliteImage( downButton );
|
||||
color = GadgetButtonGetHiliteColor( downButton );
|
||||
borderColor = GadgetButtonGetHiliteBorderColor( downButton );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_DOWN_BUTTON_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetHiliteSelectedImage( downButton );
|
||||
color = GadgetButtonGetHiliteSelectedColor( downButton );
|
||||
borderColor = GadgetButtonGetHiliteSelectedBorderColor( downButton );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_DOWN_BUTTON_HILITE_PUSHED, image, color, borderColor );
|
||||
|
||||
} // end if
|
||||
|
||||
GameWindow *slider = GadgetListBoxGetSlider( listBox );
|
||||
if( slider )
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetSliderGetEnabledImageTop( slider );
|
||||
color = GadgetSliderGetEnabledColor( slider );
|
||||
borderColor = GadgetSliderGetEnabledBorderColor( slider );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_SLIDER_ENABLED_TOP, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetEnabledImageBottom( slider );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_SLIDER_ENABLED_BOTTOM, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetEnabledImageCenter( slider );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_SLIDER_ENABLED_CENTER, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetEnabledImageSmallCenter( slider );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_SLIDER_ENABLED_SMALL_CENTER, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetSliderGetDisabledImageTop( slider );
|
||||
color = GadgetSliderGetDisabledColor( slider );
|
||||
borderColor = GadgetSliderGetDisabledBorderColor( slider );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_SLIDER_DISABLED_TOP, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetDisabledImageBottom( slider );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_SLIDER_DISABLED_BOTTOM, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetDisabledImageCenter( slider );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_SLIDER_DISABLED_CENTER, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetDisabledImageSmallCenter( slider );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_SLIDER_DISABLED_SMALL_CENTER, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetSliderGetHiliteImageTop( slider );
|
||||
color = GadgetSliderGetHiliteColor( slider );
|
||||
borderColor = GadgetSliderGetHiliteBorderColor( slider );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_SLIDER_HILITE_TOP, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetHiliteImageBottom( slider );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_SLIDER_HILITE_BOTTOM, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetHiliteImageCenter( slider );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_SLIDER_HILITE_CENTER, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetHiliteImageSmallCenter( slider );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_SLIDER_HILITE_SMALL_CENTER, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetSliderGetEnabledThumbImage( slider );
|
||||
color = GadgetSliderGetEnabledThumbColor( slider );
|
||||
borderColor = GadgetSliderGetEnabledThumbBorderColor( slider );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_SLIDER_THUMB_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetEnabledSelectedThumbImage( slider );
|
||||
color = GadgetSliderGetEnabledSelectedThumbColor( slider );
|
||||
borderColor = GadgetSliderGetEnabledSelectedThumbBorderColor( slider );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_SLIDER_THUMB_ENABLED_PUSHED, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetSliderGetDisabledThumbImage( slider );
|
||||
color = GadgetSliderGetDisabledThumbColor( slider );
|
||||
borderColor = GadgetSliderGetDisabledThumbBorderColor( slider );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_SLIDER_THUMB_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetDisabledSelectedThumbImage( slider );
|
||||
color = GadgetSliderGetDisabledSelectedThumbColor( slider );
|
||||
borderColor = GadgetSliderGetDisabledSelectedThumbBorderColor( slider );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_SLIDER_THUMB_DISABLED_PUSHED, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetSliderGetHiliteThumbImage( slider );
|
||||
color = GadgetSliderGetHiliteThumbColor( slider );
|
||||
borderColor = GadgetSliderGetHiliteThumbBorderColor( slider );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_SLIDER_THUMB_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetHiliteSelectedThumbImage( slider );
|
||||
color = GadgetSliderGetHiliteSelectedThumbColor( slider );
|
||||
borderColor = GadgetSliderGetHiliteSelectedThumbBorderColor( slider );
|
||||
StoreImageAndColor( COMBOBOX_LISTBOX_SLIDER_THUMB_HILITE_PUSHED, image, color, borderColor );
|
||||
|
||||
} // end if
|
||||
|
||||
GameWindow *dropDownButton = GadgetComboBoxGetDropDownButton( window );
|
||||
if ( dropDownButton )
|
||||
{
|
||||
image = GadgetButtonGetEnabledImage( dropDownButton );
|
||||
color = GadgetButtonGetEnabledColor( dropDownButton );
|
||||
borderColor = GadgetButtonGetEnabledBorderColor( dropDownButton );
|
||||
StoreImageAndColor( COMBOBOX_DROP_DOWN_BUTTON_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetEnabledSelectedImage(dropDownButton );
|
||||
color = GadgetButtonGetEnabledSelectedColor( dropDownButton );
|
||||
borderColor = GadgetButtonGetEnabledSelectedBorderColor( dropDownButton );
|
||||
StoreImageAndColor( COMBOBOX_DROP_DOWN_BUTTON_ENABLED_PUSHED, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetDisabledImage( dropDownButton );
|
||||
color = GadgetButtonGetDisabledColor( dropDownButton );
|
||||
borderColor = GadgetButtonGetDisabledBorderColor( dropDownButton );
|
||||
StoreImageAndColor( COMBOBOX_DROP_DOWN_BUTTON_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetDisabledSelectedImage( dropDownButton );
|
||||
color = GadgetButtonGetDisabledSelectedColor( dropDownButton );
|
||||
borderColor = GadgetButtonGetDisabledSelectedBorderColor( dropDownButton );
|
||||
StoreImageAndColor( COMBOBOX_DROP_DOWN_BUTTON_DISABLED_PUSHED, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetHiliteImage( dropDownButton );
|
||||
color = GadgetButtonGetHiliteColor( dropDownButton );
|
||||
borderColor = GadgetButtonGetHiliteBorderColor( dropDownButton );
|
||||
StoreImageAndColor( COMBOBOX_DROP_DOWN_BUTTON_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetHiliteSelectedImage( dropDownButton );
|
||||
color = GadgetButtonGetHiliteSelectedColor( dropDownButton );
|
||||
borderColor = GadgetButtonGetHiliteSelectedBorderColor( dropDownButton );
|
||||
StoreImageAndColor( COMBOBOX_DROP_DOWN_BUTTON_HILITE_PUSHED, image, color, borderColor );
|
||||
}
|
||||
GameWindow * editBox = GadgetComboBoxGetEditBox( window );
|
||||
if ( editBox )
|
||||
{
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetTextEntryGetEnabledImageLeft( editBox );
|
||||
color = GadgetTextEntryGetEnabledColor( editBox );
|
||||
borderColor = GadgetTextEntryGetEnabledBorderColor( editBox );
|
||||
StoreImageAndColor( COMBOBOX_EDIT_BOX_ENABLED_LEFT, image, color, borderColor );
|
||||
image = GadgetTextEntryGetEnabledImageRight( editBox );
|
||||
StoreImageAndColor( COMBOBOX_EDIT_BOX_ENABLED_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetTextEntryGetEnabledImageCenter( editBox );
|
||||
StoreImageAndColor( COMBOBOX_EDIT_BOX_ENABLED_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetTextEntryGetEnabledImageSmallCenter( editBox );
|
||||
StoreImageAndColor( COMBOBOX_EDIT_BOX_ENABLED_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetTextEntryGetDisabledImageLeft( editBox );
|
||||
color = GadgetTextEntryGetDisabledColor( editBox );
|
||||
borderColor = GadgetTextEntryGetDisabledBorderColor( editBox );
|
||||
StoreImageAndColor( COMBOBOX_EDIT_BOX_DISABLED_LEFT, image, color, borderColor );
|
||||
image = GadgetTextEntryGetDisabledImageRight( editBox );
|
||||
StoreImageAndColor( COMBOBOX_EDIT_BOX_DISABLED_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetTextEntryGetDisabledImageCenter( editBox );
|
||||
StoreImageAndColor( COMBOBOX_EDIT_BOX_DISABLED_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetTextEntryGetDisabledImageSmallCenter( editBox );
|
||||
StoreImageAndColor( COMBOBOX_EDIT_BOX_DISABLED_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetTextEntryGetHiliteImageLeft( editBox );
|
||||
color = GadgetTextEntryGetHiliteColor( editBox );
|
||||
borderColor = GadgetTextEntryGetHiliteBorderColor( editBox );
|
||||
StoreImageAndColor( COMBOBOX_EDIT_BOX_HILITE_LEFT, image, color, borderColor );
|
||||
image = GadgetTextEntryGetHiliteImageRight( editBox );
|
||||
StoreImageAndColor( COMBOBOX_EDIT_BOX_HILITE_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetTextEntryGetHiliteImageCenter( editBox );
|
||||
StoreImageAndColor( COMBOBOX_EDIT_BOX_HILITE_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetTextEntryGetHiliteImageSmallCenter( editBox );
|
||||
StoreImageAndColor( COMBOBOX_EDIT_BOX_HILITE_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// init comboBox specific property section
|
||||
ComboBoxData *comboData = (ComboBoxData *)window->winGetUserData();
|
||||
|
||||
SetDlgItemInt(dialog, EDIT_MAX_CHARS, comboData->maxChars, true);
|
||||
SetDlgItemInt(dialog, EDIT_MAX_ITEMS_DISPLAYED, comboData->maxDisplay,true );
|
||||
CheckDlgButton( dialog, CHECK_IS_EDITABLE, comboData->isEditable);
|
||||
CheckDlgButton( dialog, CHECK_ASCII_TEXT ,comboData->asciiOnly);
|
||||
CheckDlgButton( dialog, CHECK_LETTERS_AND_NUMBERS, comboData->lettersAndNumbersOnly);
|
||||
|
||||
// select the button enabled state for display
|
||||
SwitchToState( COMBOBOX_ENABLED, dialog );
|
||||
|
||||
//
|
||||
// initialize the dialog with values from the window
|
||||
//
|
||||
|
||||
return dialog;
|
||||
|
||||
} // end InitComboBoxPropertiesDialog
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,485 @@
|
||||
/*
|
||||
** Command & Conquer Generals Zero Hour(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// (c) 2001-2003 Electronic Arts Inc. //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// FILE: GenericProperties.cpp ////////////////////////////////////////////////
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Westwood Studios Pacific.
|
||||
//
|
||||
// Confidential Information
|
||||
// Copyright (C) 2001 - All Rights Reserved
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Project: GUIEdit
|
||||
//
|
||||
// File name: GenericProperties.cpp
|
||||
//
|
||||
// Created: Colin Day, August 2001
|
||||
//
|
||||
// Desc: Properties dialog for generic windows
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SYSTEM INCLUDES ////////////////////////////////////////////////////////////
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
#include <windows.h>
|
||||
#include <commctrl.h>
|
||||
#include <stdio.h>
|
||||
|
||||
// USER INCLUDES //////////////////////////////////////////////////////////////
|
||||
#include "Common/Debug.h"
|
||||
#include "Common/FunctionLexicon.h"
|
||||
#include "GUIEdit.h"
|
||||
#include "Properties.h"
|
||||
#include "Resource.h"
|
||||
#include "EditWindow.h"
|
||||
|
||||
// DEFINES ////////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE TYPES //////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE DATA ///////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// PUBLIC DATA ////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE PROTOTYPES /////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE FUNCTIONS //////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// genericPropertiesCallback ==================================================
|
||||
/** Dialog callback for properties */
|
||||
//=============================================================================
|
||||
static LRESULT CALLBACK genericPropertiesCallback( HWND hWndDialog,
|
||||
UINT message,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam )
|
||||
{
|
||||
Int returnCode;
|
||||
|
||||
//
|
||||
// handle any common messages between all property dialogs cause they
|
||||
// are designed to have controls doing the same functionality
|
||||
// and names
|
||||
//
|
||||
if( HandleCommonDialogMessages( hWndDialog, message,
|
||||
wParam, lParam, &returnCode ) == TRUE )
|
||||
return returnCode;
|
||||
|
||||
switch( message )
|
||||
{
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_DRAWITEM:
|
||||
{
|
||||
UINT controlID = (UINT)wParam; // control identifier
|
||||
LPDRAWITEMSTRUCT drawItem = (LPDRAWITEMSTRUCT)lParam; // item drawing
|
||||
RGBColorInt *color = GetControlColor( controlID );
|
||||
|
||||
// we only care about color button controls
|
||||
if( color )
|
||||
{
|
||||
HBRUSH hBrushNew, hBrushOld;
|
||||
RECT rect;
|
||||
HWND hWndControl = GetDlgItem( hWndDialog, controlID );
|
||||
|
||||
// if this control is disabled just let windows handle drawing
|
||||
if( IsWindowEnabled( hWndControl ) == FALSE )
|
||||
return FALSE;
|
||||
|
||||
// Get the area we have to draw in
|
||||
GetClientRect( hWndControl, &rect );
|
||||
|
||||
// create a new brush and select it into DC
|
||||
hBrushNew = CreateSolidBrush (RGB ((BYTE)color->red,
|
||||
(BYTE)color->green,
|
||||
(BYTE)color->blue));
|
||||
hBrushOld = (HBRUSH)SelectObject( drawItem->hDC, hBrushNew );
|
||||
|
||||
// draw the rectangle
|
||||
Rectangle( drawItem->hDC, rect.left, rect.top, rect.right, rect.bottom );
|
||||
|
||||
// put the old brush back and delete the new one
|
||||
SelectObject( drawItem->hDC, hBrushOld );
|
||||
DeleteObject( hBrushNew );
|
||||
|
||||
// validate this new area
|
||||
ValidateRect( hWndControl, NULL );
|
||||
|
||||
// we have taken care of it
|
||||
return TRUE;
|
||||
|
||||
} // end if
|
||||
|
||||
return FALSE;
|
||||
|
||||
} // end draw item
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_COMMAND:
|
||||
{
|
||||
// Int notifyCode = HIWORD( wParam ); // notification code
|
||||
Int controlID = LOWORD( wParam ); // control ID
|
||||
HWND hWndControl = (HWND)lParam; // control window handle
|
||||
|
||||
switch( controlID )
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case BUTTON_ENABLED_COLOR:
|
||||
case BUTTON_ENABLED_BORDER_COLOR:
|
||||
case BUTTON_DISABLED_COLOR:
|
||||
case BUTTON_DISABLED_BORDER_COLOR:
|
||||
case BUTTON_HILITE_COLOR:
|
||||
case BUTTON_HILITE_BORDER_COLOR:
|
||||
{
|
||||
RGBColorInt *currColor = GetControlColor( controlID );
|
||||
|
||||
// bring up color selector for this color control at the mouse
|
||||
if( currColor )
|
||||
{
|
||||
RGBColorInt *newColor;
|
||||
POINT mouse;
|
||||
|
||||
GetCursorPos( &mouse );
|
||||
newColor = SelectColor( currColor->red, currColor->green,
|
||||
currColor->blue, currColor->alpha,
|
||||
mouse.x, mouse.y );
|
||||
|
||||
if( newColor )
|
||||
{
|
||||
Color newGameColor = GameMakeColor( newColor->red,
|
||||
newColor->green,
|
||||
newColor->blue,
|
||||
newColor->alpha );
|
||||
SetControlColor( controlID, newGameColor );
|
||||
InvalidateRect( hWndControl, NULL, TRUE );
|
||||
|
||||
} // end if
|
||||
|
||||
} // end if
|
||||
|
||||
break;
|
||||
|
||||
} // end color buttons
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDOK:
|
||||
{
|
||||
GameWindow *window = TheEditor->getPropertyTarget();
|
||||
|
||||
// sanity
|
||||
if( window )
|
||||
{
|
||||
const Image *image;
|
||||
RGBColorInt *rgbColor;
|
||||
Color color;
|
||||
|
||||
// save the common properties
|
||||
if( SaveCommonDialogProperties( hWndDialog, window ) == FALSE )
|
||||
break;
|
||||
|
||||
// save callbacks
|
||||
SaveCallbacks( window, hWndDialog );
|
||||
|
||||
// save the enabled colors/images
|
||||
image = ComboBoxSelectionToImage( GetDlgItem( hWndDialog, COMBO_ENABLED_IMAGE ) );
|
||||
window->winSetEnabledImage( 0, image );
|
||||
rgbColor = GetControlColor( BUTTON_ENABLED_COLOR );
|
||||
color = GameMakeColor( rgbColor->red, rgbColor->green, rgbColor->blue, rgbColor->alpha );
|
||||
window->winSetEnabledColor( 0, color );
|
||||
rgbColor = GetControlColor( BUTTON_ENABLED_BORDER_COLOR );
|
||||
color = GameMakeColor( rgbColor->red, rgbColor->green, rgbColor->blue, rgbColor->alpha );
|
||||
window->winSetEnabledBorderColor( 0, color );
|
||||
|
||||
// save the disabled colors/images
|
||||
image = ComboBoxSelectionToImage( GetDlgItem( hWndDialog, COMBO_DISABLED_IMAGE ) );
|
||||
window->winSetDisabledImage( 0, image );
|
||||
rgbColor = GetControlColor( BUTTON_DISABLED_COLOR );
|
||||
color = GameMakeColor( rgbColor->red, rgbColor->green, rgbColor->blue, rgbColor->alpha );
|
||||
window->winSetDisabledColor( 0, color );
|
||||
rgbColor = GetControlColor( BUTTON_DISABLED_BORDER_COLOR );
|
||||
color = GameMakeColor( rgbColor->red, rgbColor->green, rgbColor->blue, rgbColor->alpha );
|
||||
window->winSetDisabledBorderColor( 0, color );
|
||||
|
||||
// save the hilite colors/images
|
||||
image = ComboBoxSelectionToImage( GetDlgItem( hWndDialog, COMBO_HILITE_IMAGE ) );
|
||||
window->winSetHiliteImage( 0, image );
|
||||
rgbColor = GetControlColor( BUTTON_HILITE_COLOR );
|
||||
color = GameMakeColor( rgbColor->red, rgbColor->green, rgbColor->blue, rgbColor->alpha );
|
||||
window->winSetHiliteColor( 0, color );
|
||||
rgbColor = GetControlColor( BUTTON_HILITE_BORDER_COLOR );
|
||||
color = GameMakeColor( rgbColor->red, rgbColor->green, rgbColor->blue, rgbColor->alpha );
|
||||
window->winSetHiliteBorderColor( 0, color );
|
||||
|
||||
} // end if
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end OK
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDCANCEL:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end cancel
|
||||
|
||||
} // end switch( LOWORD( wParam ) )
|
||||
|
||||
return 0;
|
||||
|
||||
} // end of WM_COMMAND
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_CLOSE:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
return 0;
|
||||
|
||||
} // end close
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
default:
|
||||
return 0;
|
||||
|
||||
} // end of switch
|
||||
|
||||
} // end genericPropertiesCallback
|
||||
|
||||
// InitCallbackCombos =========================================================
|
||||
/** load the callbacks combo boxes with the functions that the user cal
|
||||
* select to attach to this window */
|
||||
//=============================================================================
|
||||
void InitCallbackCombos( HWND dialog, GameWindow *window )
|
||||
{
|
||||
HWND combo;
|
||||
FunctionLexicon::TableEntry *entry;
|
||||
GameWindowEditData *editData = NULL;
|
||||
AsciiString name;
|
||||
|
||||
// get edit data from window
|
||||
if( window )
|
||||
editData = window->winGetEditData();
|
||||
|
||||
// load the system combo ----------------------------------------------------
|
||||
combo = GetDlgItem( dialog, COMBO_SYSTEM );
|
||||
entry = TheFunctionLexicon->getTable( FunctionLexicon::TABLE_GAME_WIN_SYSTEM );
|
||||
while( entry && entry ->key != NAMEKEY_INVALID )
|
||||
{
|
||||
SendMessage( combo, CB_ADDSTRING, 0, (LPARAM)entry->name );
|
||||
entry++;
|
||||
} // end while
|
||||
SendMessage( combo, CB_INSERTSTRING, 0, (LPARAM)GUIEDIT_NONE_STRING );
|
||||
|
||||
// select the current function of the window in the combo if present
|
||||
name.clear();
|
||||
if( editData )
|
||||
name = editData->systemCallbackString;
|
||||
if( name.isEmpty() )
|
||||
name = GUIEDIT_NONE_STRING;
|
||||
SendMessage( combo, CB_SELECTSTRING, -1, (LPARAM)name.str() );
|
||||
|
||||
// load the input combo -----------------------------------------------------
|
||||
combo = GetDlgItem( dialog, COMBO_INPUT );
|
||||
entry = TheFunctionLexicon->getTable( FunctionLexicon::TABLE_GAME_WIN_INPUT );
|
||||
while( entry && entry ->key != NAMEKEY_INVALID )
|
||||
{
|
||||
SendMessage( combo, CB_ADDSTRING, 0, (LPARAM)entry->name );
|
||||
entry++;
|
||||
} // end while
|
||||
SendMessage( combo, CB_INSERTSTRING, 0, (LPARAM)GUIEDIT_NONE_STRING );
|
||||
|
||||
// select the current function of the window in the combo if present
|
||||
name.clear();
|
||||
if( editData )
|
||||
name = editData->inputCallbackString;
|
||||
if( name.isEmpty() )
|
||||
name = GUIEDIT_NONE_STRING;
|
||||
SendMessage( combo, CB_SELECTSTRING, -1, (LPARAM)name.str() );
|
||||
|
||||
// load the tooltip combo ---------------------------------------------------
|
||||
combo = GetDlgItem( dialog, COMBO_TOOLTIP );
|
||||
entry = TheFunctionLexicon->getTable( FunctionLexicon::TABLE_GAME_WIN_TOOLTIP );
|
||||
while( entry && entry ->key != NAMEKEY_INVALID )
|
||||
{
|
||||
SendMessage( combo, CB_ADDSTRING, 0, (LPARAM)entry->name );
|
||||
entry++;
|
||||
} // end while
|
||||
SendMessage( combo, CB_INSERTSTRING, 0, (LPARAM)GUIEDIT_NONE_STRING );
|
||||
|
||||
// select the current function of the window in the combo if present
|
||||
name.clear();
|
||||
if( editData )
|
||||
name = editData->tooltipCallbackString;
|
||||
if( name.isEmpty() )
|
||||
name = GUIEDIT_NONE_STRING;
|
||||
SendMessage( combo, CB_SELECTSTRING, -1, (LPARAM)name.str() );
|
||||
|
||||
// load the draw combo ------------------------------------------------------
|
||||
combo = GetDlgItem( dialog, COMBO_DRAW );
|
||||
entry = TheFunctionLexicon->getTable( FunctionLexicon::TABLE_GAME_WIN_DRAW );
|
||||
while( entry && entry ->key != NAMEKEY_INVALID )
|
||||
{
|
||||
SendMessage( combo, CB_ADDSTRING, 0, (LPARAM)entry->name );
|
||||
entry++;
|
||||
} // end while
|
||||
entry = TheFunctionLexicon->getTable( FunctionLexicon::TABLE_GAME_WIN_DEVICEDRAW );
|
||||
while( entry && entry ->key != NAMEKEY_INVALID )
|
||||
{
|
||||
SendMessage( combo, CB_ADDSTRING, 0, (LPARAM)entry->name );
|
||||
entry++;
|
||||
} // end while
|
||||
SendMessage( combo, CB_INSERTSTRING, 0, (LPARAM)GUIEDIT_NONE_STRING );
|
||||
|
||||
// select the current function of the window in the combo if present
|
||||
name.clear();
|
||||
if( editData )
|
||||
name = editData->drawCallbackString;
|
||||
if( name.isEmpty() )
|
||||
name = GUIEDIT_NONE_STRING;
|
||||
SendMessage( combo, CB_SELECTSTRING, -1, (LPARAM)name.str() );
|
||||
|
||||
//=================================================================================================
|
||||
// callbacks for the layout itself
|
||||
//=================================================================================================
|
||||
|
||||
// init combo
|
||||
combo = GetDlgItem( dialog, COMBO_INIT );
|
||||
entry = TheFunctionLexicon->getTable( FunctionLexicon::TABLE_WIN_LAYOUT_INIT );
|
||||
while( entry && entry->key != NAMEKEY_INVALID )
|
||||
{
|
||||
SendMessage( combo, CB_ADDSTRING, 0, (LPARAM)entry->name );
|
||||
entry++;
|
||||
}
|
||||
entry = TheFunctionLexicon->getTable( FunctionLexicon::TABLE_WIN_LAYOUT_DEVICEINIT );
|
||||
while( entry && entry->key != NAMEKEY_INVALID )
|
||||
{
|
||||
SendMessage( combo, CB_ADDSTRING, 0, (LPARAM)entry->name );
|
||||
entry++;
|
||||
}
|
||||
SendMessage( combo, CB_INSERTSTRING, 0, (LPARAM)GUIEDIT_NONE_STRING );
|
||||
name = TheEditor->getLayoutInit();
|
||||
SendMessage( combo, CB_SELECTSTRING, -1, (LPARAM)name.str() );
|
||||
|
||||
// update combo
|
||||
combo = GetDlgItem( dialog, COMBO_UPDATE );
|
||||
entry = TheFunctionLexicon->getTable( FunctionLexicon::TABLE_WIN_LAYOUT_UPDATE );
|
||||
while( entry && entry->key != NAMEKEY_INVALID )
|
||||
{
|
||||
SendMessage( combo, CB_ADDSTRING, 0, (LPARAM)entry->name );
|
||||
entry++;
|
||||
}
|
||||
SendMessage( combo, CB_INSERTSTRING, 0, (LPARAM)GUIEDIT_NONE_STRING );
|
||||
name = TheEditor->getLayoutUpdate();
|
||||
SendMessage( combo, CB_SELECTSTRING, -1, (LPARAM)name.str() );
|
||||
|
||||
// shutdown combo
|
||||
combo = GetDlgItem( dialog, COMBO_SHUTDOWN );
|
||||
entry = TheFunctionLexicon->getTable( FunctionLexicon::TABLE_WIN_LAYOUT_SHUTDOWN );
|
||||
while( entry && entry->key != NAMEKEY_INVALID )
|
||||
{
|
||||
SendMessage( combo, CB_ADDSTRING, 0, (LPARAM)entry->name );
|
||||
entry++;
|
||||
}
|
||||
SendMessage( combo, CB_INSERTSTRING, 0, (LPARAM)GUIEDIT_NONE_STRING );
|
||||
name = TheEditor->getLayoutShutdown();
|
||||
SendMessage( combo, CB_SELECTSTRING, -1, (LPARAM)name.str() );
|
||||
|
||||
} // end InitCallbackCombos
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PUBLIC FUNCTIONS ///////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// InitUserWinPropertiesDialog ================================================
|
||||
/** Initialize the generic properties dialog for windows */
|
||||
//=============================================================================
|
||||
HWND InitUserWinPropertiesDialog( GameWindow *window )
|
||||
{
|
||||
HWND dialog;
|
||||
|
||||
// create the dialog box
|
||||
dialog = CreateDialog( TheEditor->getInstance(),
|
||||
(LPCTSTR)GENERIC_PROPERTIES_DIALOG,
|
||||
TheEditor->getWindowHandle(),
|
||||
(DLGPROC)genericPropertiesCallback );
|
||||
if( dialog == NULL )
|
||||
return NULL;
|
||||
|
||||
// do the common initialization
|
||||
CommonDialogInitialize( window, dialog );
|
||||
|
||||
//
|
||||
// initialize the dialog with values from the window
|
||||
//
|
||||
|
||||
// fill out the image combo boxes
|
||||
LoadImageListComboBox( GetDlgItem( dialog, COMBO_ENABLED_IMAGE ) );
|
||||
LoadImageListComboBox( GetDlgItem( dialog, COMBO_DISABLED_IMAGE ) );
|
||||
LoadImageListComboBox( GetDlgItem( dialog, COMBO_HILITE_IMAGE ) );
|
||||
|
||||
// select any images in the combo boxes
|
||||
const Image *image;
|
||||
|
||||
image = window->winGetEnabledImage( 0 );
|
||||
if( image )
|
||||
SendDlgItemMessage( dialog, COMBO_ENABLED_IMAGE, CB_SELECTSTRING,
|
||||
-1, (LPARAM)image->getName().str() );
|
||||
image = window->winGetDisabledImage( 0 );
|
||||
if( image )
|
||||
SendDlgItemMessage( dialog, COMBO_DISABLED_IMAGE, CB_SELECTSTRING,
|
||||
-1, (LPARAM)image->getName().str() );
|
||||
image = window->winGetHiliteImage( 0 );
|
||||
if( image )
|
||||
SendDlgItemMessage( dialog, COMBO_HILITE_IMAGE, CB_SELECTSTRING,
|
||||
-1, (LPARAM)image->getName().str() );
|
||||
|
||||
// initialize the color buttons
|
||||
SetControlColor( BUTTON_ENABLED_COLOR, window->winGetEnabledColor( 0 ) );
|
||||
SetControlColor( BUTTON_ENABLED_BORDER_COLOR, window->winGetEnabledBorderColor( 0 ) );
|
||||
SetControlColor( BUTTON_DISABLED_COLOR, window->winGetDisabledColor( 0 ) );
|
||||
SetControlColor( BUTTON_DISABLED_BORDER_COLOR, window->winGetDisabledBorderColor( 0 ) );
|
||||
SetControlColor( BUTTON_HILITE_COLOR, window->winGetHiliteColor( 0 ) );
|
||||
SetControlColor( BUTTON_HILITE_BORDER_COLOR, window->winGetHiliteBorderColor( 0 ) );
|
||||
|
||||
// load the combo boxes with the callbacks the user can use
|
||||
InitCallbackCombos( dialog, window );
|
||||
|
||||
return dialog;
|
||||
|
||||
} // end InitUserWinPropertiesDialog
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,265 @@
|
||||
/*
|
||||
** Command & Conquer Generals Zero Hour(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// (c) 2001-2003 Electronic Arts Inc. //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// FILE: GridSettings.cpp /////////////////////////////////////////////////////
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Westwood Studios Pacific.
|
||||
//
|
||||
// Confidential Information
|
||||
// Copyright (C) 2001 - All Rights Reserved
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Project: GUIEdit
|
||||
//
|
||||
// File name: GridSettings.cpp
|
||||
//
|
||||
// Created: Colin Day, July 2001
|
||||
//
|
||||
// Desc: New layout dialog procedure
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SYSTEM INCLUDES ////////////////////////////////////////////////////////////
|
||||
#include <windows.h>
|
||||
|
||||
// USER INCLUDES //////////////////////////////////////////////////////////////
|
||||
#include "Lib/BaseType.h"
|
||||
#include "Resource.h"
|
||||
#include "EditWindow.h"
|
||||
#include "GUIEdit.h"
|
||||
|
||||
// DEFINES ////////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE TYPES //////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE DATA ///////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
static RGBColorInt gridColor = { 0 };
|
||||
|
||||
// PUBLIC DATA ////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE PROTOTYPES /////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE FUNCTIONS //////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PUBLIC FUNCTIONS ///////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// initGridSettings ===========================================================
|
||||
/** Initialize the dialog values */
|
||||
//=============================================================================
|
||||
static void initGridSettings( HWND hWndDialog )
|
||||
{
|
||||
|
||||
// set resolution
|
||||
SetDlgItemInt( hWndDialog, EDIT_RESOLUTION,
|
||||
TheEditor->getGridResolution(), FALSE );
|
||||
|
||||
// check box for on/off
|
||||
if( TheEditor->isGridVisible() == TRUE )
|
||||
CheckDlgButton( hWndDialog, CHECK_VISIBLE, BST_CHECKED );
|
||||
|
||||
// check box for grid snap on/off
|
||||
if( TheEditor->isGridSnapOn() == TRUE )
|
||||
CheckDlgButton( hWndDialog, CHECK_SNAP_TO_GRID, BST_CHECKED );
|
||||
|
||||
// style
|
||||
CheckDlgButton( hWndDialog, RADIO_LINES, BST_CHECKED );
|
||||
|
||||
// color
|
||||
RGBColorInt *color = TheEditor->getGridColor();
|
||||
gridColor = *color;
|
||||
|
||||
} // end initGridSettings
|
||||
|
||||
// GridSettingsDialogProc =====================================================
|
||||
/** Dialog procedure for grid settings dialog */
|
||||
//=============================================================================
|
||||
BOOL CALLBACK GridSettingsDialogProc( HWND hWndDialog, UINT message,
|
||||
WPARAM wParam, LPARAM lParam )
|
||||
{
|
||||
|
||||
switch( message )
|
||||
{
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
|
||||
// initialize the values for the the dialog
|
||||
initGridSettings( hWndDialog );
|
||||
return TRUE;
|
||||
|
||||
} // end init dialog
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_DRAWITEM:
|
||||
{
|
||||
UINT controlID = (UINT)wParam; // control identifier
|
||||
LPDRAWITEMSTRUCT drawItem = (LPDRAWITEMSTRUCT)lParam; // item drawing
|
||||
RGBColorInt *color = &gridColor;
|
||||
|
||||
// we only care about color button controls
|
||||
if( color )
|
||||
{
|
||||
HBRUSH hBrushNew, hBrushOld;
|
||||
RECT rect;
|
||||
HWND hWndControl = GetDlgItem( hWndDialog, controlID );
|
||||
|
||||
// if this control is disabled just let windows handle drawing
|
||||
if( IsWindowEnabled( hWndControl ) == FALSE )
|
||||
return FALSE;
|
||||
|
||||
// Get the area we have to draw in
|
||||
GetClientRect( hWndControl, &rect );
|
||||
|
||||
// create a new brush and select it into DC
|
||||
hBrushNew = CreateSolidBrush (RGB ((BYTE)color->red,
|
||||
(BYTE)color->green,
|
||||
(BYTE)color->blue));
|
||||
hBrushOld = (HBRUSH)SelectObject( drawItem->hDC, hBrushNew );
|
||||
|
||||
// draw the rectangle
|
||||
Rectangle( drawItem->hDC, rect.left, rect.top, rect.right, rect.bottom );
|
||||
|
||||
// put the old brush back and delete the new one
|
||||
SelectObject( drawItem->hDC, hBrushOld );
|
||||
DeleteObject( hBrushNew );
|
||||
|
||||
// validate this new area
|
||||
ValidateRect( hWndControl, NULL );
|
||||
|
||||
// we have taken care of it
|
||||
return TRUE;
|
||||
|
||||
} // end if
|
||||
|
||||
return FALSE;
|
||||
|
||||
} // end draw item
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_COMMAND:
|
||||
{
|
||||
// Int notifyCode = HIWORD( wParam ); // notification code
|
||||
// Int controlID = LOWORD( wParam ); // control ID
|
||||
HWND hWndControl = (HWND)lParam; // control window handle
|
||||
|
||||
switch( LOWORD( wParam ) )
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case BUTTON_COLOR:
|
||||
{
|
||||
RGBColorInt *currColor = &gridColor;
|
||||
|
||||
// bring up color selector for this color control at the mouse
|
||||
if( currColor )
|
||||
{
|
||||
RGBColorInt *newColor;
|
||||
POINT mouse;
|
||||
|
||||
GetCursorPos( &mouse );
|
||||
newColor = SelectColor( currColor->red, currColor->green,
|
||||
currColor->blue, currColor->alpha,
|
||||
mouse.x, mouse.y );
|
||||
|
||||
if( newColor )
|
||||
{
|
||||
|
||||
gridColor = *newColor;
|
||||
InvalidateRect( hWndControl, NULL, TRUE );
|
||||
|
||||
} // end if
|
||||
|
||||
} // end if
|
||||
|
||||
break;
|
||||
|
||||
} // end color buttons
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDOK:
|
||||
{
|
||||
Int value;
|
||||
|
||||
// get the pixels between marks
|
||||
value = GetDlgItemInt( hWndDialog, EDIT_RESOLUTION, NULL, FALSE );
|
||||
TheEditor->setGridResolution( value );
|
||||
|
||||
// get grid on/off flag
|
||||
value = IsDlgButtonChecked( hWndDialog, CHECK_VISIBLE );
|
||||
TheEditor->setGridVisible( value );
|
||||
|
||||
// get snap on/off flag
|
||||
value = IsDlgButtonChecked( hWndDialog, CHECK_SNAP_TO_GRID );
|
||||
TheEditor->setGridSnap( value );
|
||||
|
||||
// grid color
|
||||
TheEditor->setGridColor( &gridColor );
|
||||
|
||||
// end this dialog
|
||||
EndDialog( hWndDialog, TRUE );
|
||||
|
||||
break;
|
||||
|
||||
} // end ok
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDCANCEL:
|
||||
{
|
||||
|
||||
EndDialog( hWndDialog, FALSE );
|
||||
break;
|
||||
|
||||
} // end cancel
|
||||
|
||||
} // end switch( LOWORD( wParam ) )
|
||||
|
||||
return 0;
|
||||
|
||||
} // end of WM_COMMAND
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_CLOSE:
|
||||
{
|
||||
|
||||
EndDialog( hWndDialog, FALSE );
|
||||
return 0;
|
||||
|
||||
} // end close
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
default:
|
||||
return 0;
|
||||
|
||||
} // end of switch
|
||||
|
||||
} // end GridSettingsDialogProc
|
||||
|
||||
@@ -0,0 +1,972 @@
|
||||
/*
|
||||
** Command & Conquer Generals Zero Hour(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// (c) 2001-2003 Electronic Arts Inc. //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// FILE: ListboxProperties.cpp ////////////////////////////////////////////////
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Westwood Studios Pacific.
|
||||
//
|
||||
// Confidential Information
|
||||
// Copyright (C) 2001 - All Rights Reserved
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Project: GUIEdit
|
||||
//
|
||||
// File name: ListboxProperties.cpp
|
||||
//
|
||||
// Created: Colin Day, August 2001
|
||||
//
|
||||
// Desc: Listbox properties dialog
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SYSTEM INCLUDES ////////////////////////////////////////////////////////////
|
||||
|
||||
// USER INCLUDES //////////////////////////////////////////////////////////////
|
||||
#include "GUIEdit.h"
|
||||
#include "Properties.h"
|
||||
#include "LayoutScheme.h"
|
||||
#include "Resource.h"
|
||||
#include "GameClient/GadgetListBox.h"
|
||||
#include "GameClient/GadgetPushButton.h"
|
||||
#include "Gameclient/GadgetSlider.h"
|
||||
#include "GameClient/GameWindowManager.h"
|
||||
|
||||
// DEFINES ////////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE TYPES //////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE DATA ///////////////////////////////////////////////////////////////
|
||||
|
||||
// PUBLIC DATA ////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE PROTOTYPES /////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE FUNCTIONS //////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// addScrollbar ===============================================================
|
||||
/** Add a scrollbar to a listbox window that doesn't have one */
|
||||
//=============================================================================
|
||||
static void addScrollbar( GameWindow *listbox )
|
||||
{
|
||||
|
||||
// create scrollbar stuffs
|
||||
GadgetListboxCreateScrollbar( listbox );
|
||||
|
||||
//
|
||||
// get the colors for the listbox and reset them to recolor the
|
||||
// newly created scrollbar parts
|
||||
//
|
||||
Color enabled = GadgetListBoxGetEnabledColor( listbox );
|
||||
Color enabledBorder = GadgetListBoxGetEnabledBorderColor( listbox );
|
||||
Color enabledSelectedItem = GadgetListBoxGetEnabledSelectedItemColor( listbox );
|
||||
Color enabledSelectedItemBorder = GadgetListBoxGetEnabledSelectedItemBorderColor( listbox );
|
||||
|
||||
Color disabled = GadgetListBoxGetDisabledColor( listbox );
|
||||
Color disabledBorder = GadgetListBoxGetDisabledBorderColor( listbox );
|
||||
Color disabledSelectedItem = GadgetListBoxGetDisabledSelectedItemColor( listbox );
|
||||
Color disabledSelectedItemBorder = GadgetListBoxGetDisabledSelectedItemBorderColor( listbox );
|
||||
|
||||
Color hilite = GadgetListBoxGetHiliteColor( listbox );
|
||||
Color hiliteBorder = GadgetListBoxGetHiliteBorderColor( listbox );
|
||||
Color hiliteSelectedItem = GadgetListBoxGetHiliteSelectedItemColor( listbox );
|
||||
Color hiliteSelectedItemBorder = GadgetListBoxGetHiliteSelectedItemBorderColor( listbox );
|
||||
|
||||
GadgetListBoxSetColors( listbox,
|
||||
enabled,
|
||||
enabledBorder,
|
||||
enabledSelectedItem,
|
||||
enabledSelectedItemBorder,
|
||||
disabled,
|
||||
disabledBorder,
|
||||
disabledSelectedItem,
|
||||
disabledSelectedItemBorder,
|
||||
hilite,
|
||||
hiliteBorder,
|
||||
hiliteSelectedItem,
|
||||
hiliteSelectedItemBorder );
|
||||
|
||||
//
|
||||
// now that colors are assigned based on the colors of the listbox
|
||||
// itself, assign the default listbox scroll images
|
||||
//
|
||||
ImageAndColorInfo *info;
|
||||
GameWindow *upButton = GadgetListBoxGetUpButton( listbox );
|
||||
if( upButton )
|
||||
{
|
||||
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_UP_BUTTON_ENABLED );
|
||||
GadgetButtonSetEnabledImage( upButton, info->image );
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_UP_BUTTON_ENABLED_PUSHED );
|
||||
GadgetButtonSetEnabledSelectedImage( upButton, info->image );
|
||||
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_UP_BUTTON_DISABLED );
|
||||
GadgetButtonSetDisabledImage( upButton, info->image );
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_UP_BUTTON_DISABLED_PUSHED );
|
||||
GadgetButtonSetDisabledSelectedImage( upButton, info->image );
|
||||
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_UP_BUTTON_HILITE );
|
||||
GadgetButtonSetHiliteImage( upButton, info->image );
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_UP_BUTTON_HILITE_PUSHED );
|
||||
GadgetButtonSetHiliteSelectedImage( upButton, info->image );
|
||||
|
||||
} // end if
|
||||
|
||||
GameWindow *downButton = GadgetListBoxGetDownButton( listbox );
|
||||
if( downButton )
|
||||
{
|
||||
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_DOWN_BUTTON_ENABLED );
|
||||
GadgetButtonSetEnabledImage( downButton, info->image );
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_DOWN_BUTTON_ENABLED_PUSHED );
|
||||
GadgetButtonSetEnabledSelectedImage( downButton, info->image );
|
||||
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_DOWN_BUTTON_DISABLED );
|
||||
GadgetButtonSetDisabledImage( downButton, info->image );
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_DOWN_BUTTON_DISABLED_PUSHED );
|
||||
GadgetButtonSetDisabledSelectedImage( downButton, info->image );
|
||||
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_DOWN_BUTTON_HILITE );
|
||||
GadgetButtonSetHiliteImage( downButton, info->image );
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_DOWN_BUTTON_HILITE_PUSHED );
|
||||
GadgetButtonSetHiliteSelectedImage( downButton, info->image );
|
||||
|
||||
} // end if
|
||||
|
||||
GameWindow *slider = GadgetListBoxGetSlider( listbox );
|
||||
if( slider )
|
||||
{
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_SLIDER_ENABLED_TOP );
|
||||
GadgetSliderSetEnabledImageTop( slider, info->image );
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_SLIDER_ENABLED_BOTTOM );
|
||||
GadgetSliderSetEnabledImageBottom( slider, info->image );
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_SLIDER_ENABLED_CENTER );
|
||||
GadgetSliderSetEnabledImageCenter( slider, info->image );
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_SLIDER_ENABLED_SMALL_CENTER );
|
||||
GadgetSliderSetEnabledImageSmallCenter( slider, info->image );
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_SLIDER_DISABLED_TOP );
|
||||
GadgetSliderSetDisabledImageTop( slider, info->image );
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_SLIDER_DISABLED_BOTTOM );
|
||||
GadgetSliderSetDisabledImageBottom( slider, info->image );
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_SLIDER_DISABLED_CENTER );
|
||||
GadgetSliderSetDisabledImageCenter( slider, info->image );
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_SLIDER_DISABLED_SMALL_CENTER );
|
||||
GadgetSliderSetDisabledImageSmallCenter( slider, info->image );
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_SLIDER_HILITE_TOP );
|
||||
GadgetSliderSetHiliteImageTop( slider, info->image );
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_SLIDER_HILITE_BOTTOM );
|
||||
GadgetSliderSetHiliteImageBottom( slider, info->image );
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_SLIDER_HILITE_CENTER );
|
||||
GadgetSliderSetHiliteImageCenter( slider, info->image );
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_SLIDER_HILITE_SMALL_CENTER );
|
||||
GadgetSliderSetHiliteImageSmallCenter( slider, info->image );
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_SLIDER_THUMB_ENABLED );
|
||||
GadgetSliderSetEnabledThumbImage( slider, info->image );
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_SLIDER_THUMB_ENABLED_PUSHED );
|
||||
GadgetSliderSetEnabledSelectedThumbImage( slider, info->image );
|
||||
GadgetSliderSetEnabledSelectedThumbColor( slider, info->color );
|
||||
GadgetSliderSetEnabledSelectedThumbBorderColor( slider, info->borderColor );
|
||||
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_SLIDER_THUMB_DISABLED );
|
||||
GadgetSliderSetDisabledThumbImage( slider, info->image );
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_SLIDER_THUMB_DISABLED_PUSHED );
|
||||
GadgetSliderSetDisabledSelectedThumbImage( slider, info->image );
|
||||
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_SLIDER_THUMB_HILITE );
|
||||
GadgetSliderSetHiliteThumbImage( slider, info->image );
|
||||
info = TheDefaultScheme->getImageAndColor( LISTBOX_SLIDER_THUMB_HILITE_PUSHED );
|
||||
GadgetSliderSetHiliteSelectedThumbImage( slider, info->image );
|
||||
|
||||
} // end if, slider
|
||||
|
||||
} // end addScrollbar
|
||||
|
||||
// removeScrollbar ============================================================
|
||||
/** Remove all scrollbar constructs froma listbox that has it already */
|
||||
//=============================================================================
|
||||
static void removeScrollbar( GameWindow *listbox )
|
||||
{
|
||||
ListboxData *listData = (ListboxData *)listbox->winGetUserData();
|
||||
|
||||
// delete the up button
|
||||
TheWindowManager->winDestroy( listData->upButton );
|
||||
listData->upButton = NULL;
|
||||
|
||||
// delete down button
|
||||
TheWindowManager->winDestroy( listData->downButton );
|
||||
listData->downButton = NULL;
|
||||
|
||||
// delete the slider
|
||||
TheWindowManager->winDestroy( listData->slider );
|
||||
listData->slider = NULL;
|
||||
|
||||
// remove the scrollbar flag from the listbox data
|
||||
listData->scrollBar = FALSE;
|
||||
|
||||
} // end removeScrollbar
|
||||
|
||||
// resizeMaxItems =============================================================
|
||||
/** Change the max items that a listbox can accomodate */
|
||||
//=============================================================================
|
||||
static void resizeMaxItems( GameWindow *listbox, UnsignedInt newMaxItems )
|
||||
{
|
||||
// ListboxData *listData = (ListboxData *)listbox->winGetUserData();
|
||||
|
||||
|
||||
|
||||
} // end resizeMaxItems
|
||||
|
||||
// listboxPropertiesCallback ==================================================
|
||||
/** Dialog callback for properties */
|
||||
//=============================================================================
|
||||
static LRESULT CALLBACK listboxPropertiesCallback( HWND hWndDialog,
|
||||
UINT message,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam )
|
||||
{
|
||||
Int returnCode;
|
||||
|
||||
//
|
||||
// handle any common messages between all property dialogs cause they
|
||||
// are designed to have controls doing the same functionality
|
||||
// and names
|
||||
//
|
||||
if( HandleCommonDialogMessages( hWndDialog, message,
|
||||
wParam, lParam, &returnCode ) == TRUE )
|
||||
return returnCode;
|
||||
|
||||
switch( message )
|
||||
{
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_COMMAND:
|
||||
{
|
||||
// Int notifyCode = HIWORD( wParam ); // notification code
|
||||
Int controlID = LOWORD( wParam ); // control ID
|
||||
// HWND hWndControl = (HWND)lParam; // control window handle
|
||||
|
||||
switch( controlID )
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case BUTTON_SUBCONTROL_COLOR:
|
||||
{
|
||||
ImageAndColorInfo *info;
|
||||
|
||||
//
|
||||
// using the current colors in the base of the listbox, assign a
|
||||
// reasonable color scheme to all the sub control components
|
||||
//
|
||||
info = GetStateInfo( LISTBOX_ENABLED );
|
||||
StoreColor( LISTBOX_UP_BUTTON_ENABLED, info->color, info->borderColor );
|
||||
StoreColor( LISTBOX_DOWN_BUTTON_ENABLED, info->color, info->borderColor );
|
||||
StoreColor( LISTBOX_SLIDER_ENABLED_TOP, info->color, info->borderColor );
|
||||
StoreColor( LISTBOX_SLIDER_THUMB_ENABLED, info->color, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_ENABLED_SELECTED_ITEM_LEFT );
|
||||
StoreColor( LISTBOX_UP_BUTTON_ENABLED_PUSHED, info->color, info->borderColor );
|
||||
StoreColor( LISTBOX_DOWN_BUTTON_ENABLED_PUSHED, info->color, info->borderColor );
|
||||
StoreColor( LISTBOX_SLIDER_THUMB_ENABLED_PUSHED, info->color, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_DISABLED );
|
||||
StoreColor( LISTBOX_UP_BUTTON_DISABLED, info->color, info->borderColor );
|
||||
StoreColor( LISTBOX_DOWN_BUTTON_DISABLED, info->color, info->borderColor );
|
||||
StoreColor( LISTBOX_SLIDER_DISABLED_TOP, info->color, info->borderColor );
|
||||
StoreColor( LISTBOX_SLIDER_THUMB_DISABLED, info->color, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_DISABLED_SELECTED_ITEM_LEFT );
|
||||
StoreColor( LISTBOX_UP_BUTTON_DISABLED_PUSHED, info->color, info->borderColor );
|
||||
StoreColor( LISTBOX_DOWN_BUTTON_DISABLED_PUSHED, info->color, info->borderColor );
|
||||
StoreColor( LISTBOX_SLIDER_THUMB_DISABLED_PUSHED, info->color, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_HILITE );
|
||||
StoreColor( LISTBOX_UP_BUTTON_HILITE, info->color, info->borderColor );
|
||||
StoreColor( LISTBOX_DOWN_BUTTON_HILITE, info->color, info->borderColor );
|
||||
StoreColor( LISTBOX_SLIDER_HILITE_TOP, info->color, info->borderColor );
|
||||
StoreColor( LISTBOX_SLIDER_THUMB_HILITE, info->color, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_HILITE_SELECTED_ITEM_LEFT );
|
||||
StoreColor( LISTBOX_UP_BUTTON_HILITE_PUSHED, info->color, info->borderColor );
|
||||
StoreColor( LISTBOX_DOWN_BUTTON_HILITE_PUSHED, info->color, info->borderColor );
|
||||
StoreColor( LISTBOX_SLIDER_THUMB_HILITE_PUSHED, info->color, info->borderColor );
|
||||
|
||||
break;
|
||||
|
||||
} // end case subcontrol color
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDOK:
|
||||
{
|
||||
GameWindow *window = TheEditor->getPropertyTarget();
|
||||
|
||||
// sanity
|
||||
if( window )
|
||||
{
|
||||
ImageAndColorInfo *info;
|
||||
|
||||
// save the common properties
|
||||
if( SaveCommonDialogProperties( hWndDialog, window ) == FALSE )
|
||||
break;
|
||||
|
||||
// save the image and color data
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( LISTBOX_ENABLED );
|
||||
GadgetListBoxSetEnabledImage( window, info->image );
|
||||
GadgetListBoxSetEnabledColor( window, info->color );
|
||||
GadgetListBoxSetEnabledBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_ENABLED_SELECTED_ITEM_LEFT );
|
||||
GadgetListBoxSetEnabledSelectedItemImageLeft( window, info->image );
|
||||
GadgetListBoxSetEnabledSelectedItemColor( window, info->color );
|
||||
GadgetListBoxSetEnabledSelectedItemBorderColor( window, info->borderColor );
|
||||
info = GetStateInfo( LISTBOX_ENABLED_SELECTED_ITEM_RIGHT );
|
||||
GadgetListBoxSetEnabledSelectedItemImageRight( window, info->image );
|
||||
info = GetStateInfo( LISTBOX_ENABLED_SELECTED_ITEM_CENTER );
|
||||
GadgetListBoxSetEnabledSelectedItemImageCenter( window, info->image );
|
||||
info = GetStateInfo( LISTBOX_ENABLED_SELECTED_ITEM_SMALL_CENTER );
|
||||
GadgetListBoxSetEnabledSelectedItemImageSmallCenter( window, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( LISTBOX_DISABLED );
|
||||
GadgetListBoxSetDisabledImage( window, info->image );
|
||||
GadgetListBoxSetDisabledColor( window, info->color );
|
||||
GadgetListBoxSetDisabledBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_DISABLED_SELECTED_ITEM_LEFT );
|
||||
GadgetListBoxSetDisabledSelectedItemImageLeft( window, info->image );
|
||||
GadgetListBoxSetDisabledSelectedItemColor( window, info->color );
|
||||
GadgetListBoxSetDisabledSelectedItemBorderColor( window, info->borderColor );
|
||||
info = GetStateInfo( LISTBOX_DISABLED_SELECTED_ITEM_RIGHT );
|
||||
GadgetListBoxSetDisabledSelectedItemImageRight( window, info->image );
|
||||
info = GetStateInfo( LISTBOX_DISABLED_SELECTED_ITEM_CENTER );
|
||||
GadgetListBoxSetDisabledSelectedItemImageCenter( window, info->image );
|
||||
info = GetStateInfo( LISTBOX_DISABLED_SELECTED_ITEM_SMALL_CENTER );
|
||||
GadgetListBoxSetDisabledSelectedItemImageSmallCenter( window, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( LISTBOX_HILITE );
|
||||
GadgetListBoxSetHiliteImage( window, info->image );
|
||||
GadgetListBoxSetHiliteColor( window, info->color );
|
||||
GadgetListBoxSetHiliteBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_HILITE_SELECTED_ITEM_LEFT );
|
||||
GadgetListBoxSetHiliteSelectedItemImageLeft( window, info->image );
|
||||
GadgetListBoxSetHiliteSelectedItemColor( window, info->color );
|
||||
GadgetListBoxSetHiliteSelectedItemBorderColor( window, info->borderColor );
|
||||
info = GetStateInfo( LISTBOX_HILITE_SELECTED_ITEM_RIGHT );
|
||||
GadgetListBoxSetHiliteSelectedItemImageRight( window, info->image );
|
||||
info = GetStateInfo( LISTBOX_HILITE_SELECTED_ITEM_CENTER );
|
||||
GadgetListBoxSetHiliteSelectedItemImageCenter( window, info->image );
|
||||
info = GetStateInfo( LISTBOX_HILITE_SELECTED_ITEM_SMALL_CENTER );
|
||||
GadgetListBoxSetHiliteSelectedItemImageSmallCenter( window, info->image );
|
||||
|
||||
// up button
|
||||
GameWindow *upButton = GadgetListBoxGetUpButton( window );
|
||||
if( upButton )
|
||||
{
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( LISTBOX_UP_BUTTON_ENABLED );
|
||||
GadgetButtonSetEnabledImage( upButton, info->image );
|
||||
GadgetButtonSetEnabledColor( upButton, info->color );
|
||||
GadgetButtonSetEnabledBorderColor( upButton, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_UP_BUTTON_ENABLED_PUSHED );
|
||||
GadgetButtonSetEnabledSelectedImage( upButton, info->image );
|
||||
GadgetButtonSetEnabledSelectedColor( upButton, info->color );
|
||||
GadgetButtonSetEnabledSelectedBorderColor( upButton, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( LISTBOX_UP_BUTTON_DISABLED );
|
||||
GadgetButtonSetDisabledImage( upButton, info->image );
|
||||
GadgetButtonSetDisabledColor( upButton, info->color );
|
||||
GadgetButtonSetDisabledBorderColor( upButton, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_UP_BUTTON_DISABLED_PUSHED );
|
||||
GadgetButtonSetDisabledSelectedImage( upButton, info->image );
|
||||
GadgetButtonSetDisabledSelectedColor( upButton, info->color );
|
||||
GadgetButtonSetDisabledSelectedBorderColor( upButton, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( LISTBOX_UP_BUTTON_HILITE );
|
||||
GadgetButtonSetHiliteImage( upButton, info->image );
|
||||
GadgetButtonSetHiliteColor( upButton, info->color );
|
||||
GadgetButtonSetHiliteBorderColor( upButton, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_UP_BUTTON_HILITE_PUSHED );
|
||||
GadgetButtonSetHiliteSelectedImage( upButton, info->image );
|
||||
GadgetButtonSetHiliteSelectedColor( upButton, info->color );
|
||||
GadgetButtonSetHiliteSelectedBorderColor( upButton, info->borderColor );
|
||||
|
||||
} // end if
|
||||
|
||||
// down button
|
||||
GameWindow *downButton = GadgetListBoxGetDownButton( window );
|
||||
if( downButton )
|
||||
{
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( LISTBOX_DOWN_BUTTON_ENABLED );
|
||||
GadgetButtonSetEnabledImage( downButton, info->image );
|
||||
GadgetButtonSetEnabledColor( downButton, info->color );
|
||||
GadgetButtonSetEnabledBorderColor( downButton, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_DOWN_BUTTON_ENABLED_PUSHED );
|
||||
GadgetButtonSetEnabledSelectedImage( downButton, info->image );
|
||||
GadgetButtonSetEnabledSelectedColor( downButton, info->color );
|
||||
GadgetButtonSetEnabledSelectedBorderColor( downButton, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( LISTBOX_DOWN_BUTTON_DISABLED );
|
||||
GadgetButtonSetDisabledImage( downButton, info->image );
|
||||
GadgetButtonSetDisabledColor( downButton, info->color );
|
||||
GadgetButtonSetDisabledBorderColor( downButton, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_DOWN_BUTTON_DISABLED_PUSHED );
|
||||
GadgetButtonSetDisabledSelectedImage( downButton, info->image );
|
||||
GadgetButtonSetDisabledSelectedColor( downButton, info->color );
|
||||
GadgetButtonSetDisabledSelectedBorderColor( downButton, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( LISTBOX_DOWN_BUTTON_HILITE );
|
||||
GadgetButtonSetHiliteImage( downButton, info->image );
|
||||
GadgetButtonSetHiliteColor( downButton, info->color );
|
||||
GadgetButtonSetHiliteBorderColor( downButton, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_DOWN_BUTTON_HILITE_PUSHED );
|
||||
GadgetButtonSetHiliteSelectedImage( downButton, info->image );
|
||||
GadgetButtonSetHiliteSelectedColor( downButton, info->color );
|
||||
GadgetButtonSetHiliteSelectedBorderColor( downButton, info->borderColor );
|
||||
|
||||
} // end if
|
||||
|
||||
// slider
|
||||
GameWindow *slider = GadgetListBoxGetSlider( window );
|
||||
if( slider )
|
||||
{
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( LISTBOX_SLIDER_ENABLED_TOP );
|
||||
GadgetSliderSetEnabledImageTop( slider, info->image );
|
||||
GadgetSliderSetEnabledColor( slider, info->color );
|
||||
GadgetSliderSetEnabledBorderColor( slider, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_SLIDER_ENABLED_BOTTOM );
|
||||
GadgetSliderSetEnabledImageBottom( slider, info->image );
|
||||
|
||||
info = GetStateInfo( LISTBOX_SLIDER_ENABLED_CENTER );
|
||||
GadgetSliderSetEnabledImageCenter( slider, info->image );
|
||||
|
||||
info = GetStateInfo( LISTBOX_SLIDER_ENABLED_SMALL_CENTER );
|
||||
GadgetSliderSetEnabledImageSmallCenter( slider, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
|
||||
info = GetStateInfo( LISTBOX_SLIDER_DISABLED_TOP );
|
||||
GadgetSliderSetDisabledImageTop( slider, info->image );
|
||||
GadgetSliderSetDisabledColor( slider, info->color );
|
||||
GadgetSliderSetDisabledBorderColor( slider, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_SLIDER_DISABLED_BOTTOM );
|
||||
GadgetSliderSetDisabledImageBottom( slider, info->image );
|
||||
|
||||
info = GetStateInfo( LISTBOX_SLIDER_DISABLED_CENTER );
|
||||
GadgetSliderSetDisabledImageCenter( slider, info->image );
|
||||
|
||||
info = GetStateInfo( LISTBOX_SLIDER_DISABLED_SMALL_CENTER );
|
||||
GadgetSliderSetDisabledImageSmallCenter( slider, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
|
||||
info = GetStateInfo( LISTBOX_SLIDER_HILITE_TOP );
|
||||
GadgetSliderSetHiliteImageTop( slider, info->image );
|
||||
GadgetSliderSetHiliteColor( slider, info->color );
|
||||
GadgetSliderSetHiliteBorderColor( slider, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_SLIDER_HILITE_BOTTOM );
|
||||
GadgetSliderSetHiliteImageBottom( slider, info->image );
|
||||
|
||||
info = GetStateInfo( LISTBOX_SLIDER_HILITE_CENTER );
|
||||
GadgetSliderSetHiliteImageCenter( slider, info->image );
|
||||
|
||||
info = GetStateInfo( LISTBOX_SLIDER_HILITE_SMALL_CENTER );
|
||||
GadgetSliderSetHiliteImageSmallCenter( slider, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( LISTBOX_SLIDER_THUMB_ENABLED );
|
||||
GadgetSliderSetEnabledThumbImage( slider, info->image );
|
||||
GadgetSliderSetEnabledThumbColor( slider, info->color );
|
||||
GadgetSliderSetEnabledThumbBorderColor( slider, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_SLIDER_THUMB_ENABLED_PUSHED );
|
||||
GadgetSliderSetEnabledSelectedThumbImage( slider, info->image );
|
||||
GadgetSliderSetEnabledSelectedThumbColor( slider, info->color );
|
||||
GadgetSliderSetEnabledSelectedThumbBorderColor( slider, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( LISTBOX_SLIDER_THUMB_DISABLED );
|
||||
GadgetSliderSetDisabledThumbImage( slider, info->image );
|
||||
GadgetSliderSetDisabledThumbColor( slider, info->color );
|
||||
GadgetSliderSetDisabledThumbBorderColor( slider, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_SLIDER_THUMB_DISABLED_PUSHED );
|
||||
GadgetSliderSetDisabledSelectedThumbImage( slider, info->image );
|
||||
GadgetSliderSetDisabledSelectedThumbColor( slider, info->color );
|
||||
GadgetSliderSetDisabledSelectedThumbBorderColor( slider, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( LISTBOX_SLIDER_THUMB_HILITE );
|
||||
GadgetSliderSetHiliteThumbImage( slider, info->image );
|
||||
GadgetSliderSetHiliteThumbColor( slider, info->color );
|
||||
GadgetSliderSetHiliteThumbBorderColor( slider, info->borderColor );
|
||||
|
||||
info = GetStateInfo( LISTBOX_SLIDER_THUMB_HILITE_PUSHED );
|
||||
GadgetSliderSetHiliteSelectedThumbImage( slider, info->image );
|
||||
GadgetSliderSetHiliteSelectedThumbColor( slider, info->color );
|
||||
GadgetSliderSetHiliteSelectedThumbBorderColor( slider, info->borderColor );
|
||||
|
||||
} // end if
|
||||
|
||||
// save specific list data
|
||||
ListboxData *listData = (ListboxData *)window->winGetUserData();
|
||||
|
||||
listData->forceSelect = IsDlgButtonChecked( hWndDialog, CHECK_FORCE_SELECT );
|
||||
listData->autoScroll = IsDlgButtonChecked( hWndDialog, CHECK_AUTO_SCROLL );
|
||||
listData->scrollIfAtEnd = IsDlgButtonChecked( hWndDialog, CHECK_SCROLL_IF_AT_END );
|
||||
listData->autoPurge = IsDlgButtonChecked( hWndDialog, CHECK_AUTO_PURGE );
|
||||
|
||||
// addition or subtraction of a scroll bar
|
||||
Bool wantScrollBar = IsDlgButtonChecked( hWndDialog, CHECK_HAS_SCROLLBAR );
|
||||
if( wantScrollBar == TRUE && listData->scrollBar == FALSE )
|
||||
addScrollbar( window );
|
||||
else if( wantScrollBar == FALSE && listData->scrollBar == TRUE )
|
||||
removeScrollbar( window );
|
||||
|
||||
// change in the size of the listbox
|
||||
Int newMaxItems = GetDlgItemInt( hWndDialog, EDIT_MAX_ITEMS, NULL, FALSE );
|
||||
if( newMaxItems != listData->listLength )
|
||||
GadgetListBoxSetListLength( window, newMaxItems );
|
||||
|
||||
// multi-select
|
||||
Bool wantMultiSelect = IsDlgButtonChecked( hWndDialog, CHECK_MULTI_SELECT );
|
||||
if( wantMultiSelect == TRUE && listData->multiSelect == FALSE )
|
||||
GadgetListBoxAddMultiSelect( window );
|
||||
else if( wantMultiSelect == FALSE && listData->multiSelect == TRUE )
|
||||
GadgetListBoxRemoveMultiSelect( window );
|
||||
|
||||
|
||||
// Wordwrap
|
||||
UnsignedInt bit = WIN_STATUS_ONE_LINE;
|
||||
window->winClearStatus( bit );
|
||||
if( IsDlgButtonChecked( hWndDialog, CHECK_NO_WORDWRAP ) )
|
||||
window->winSetStatus( bit );
|
||||
|
||||
// Multi-column
|
||||
Int newColumns = GetDlgItemInt( hWndDialog, EDIT_NUM_COLUMNS,NULL,FALSE);
|
||||
|
||||
if(newColumns > 1)
|
||||
{
|
||||
char *percentages = new char[60];
|
||||
char *token;
|
||||
GetDlgItemText(hWndDialog,EDIT_COLUMN_PERCENT,percentages,200);
|
||||
if(strlen(percentages) == 0)
|
||||
{
|
||||
MessageBox(NULL,"You have specified a column amount greater then 1, please enter the same about of percentages","whoops",MB_OK | MB_ICONSTOP | MB_APPLMODAL);
|
||||
break;
|
||||
}
|
||||
|
||||
Int *newPercentages = new Int[newColumns];
|
||||
Int i = 0;
|
||||
Int total = 0;
|
||||
token = strtok( percentages, "," );
|
||||
while( token != NULL )
|
||||
{
|
||||
newPercentages[i] = atoi(token);
|
||||
total += newPercentages[i];
|
||||
token = strtok( NULL, "," );
|
||||
i++;
|
||||
if(i > newColumns && token)
|
||||
{
|
||||
Char *whoopsMsg = new char[250];
|
||||
sprintf(whoopsMsg,"You have Specified %d columns but I have read in more then that for the percentages, please double check your data", newColumns);
|
||||
MessageBox(NULL, whoopsMsg,"Whoops",MB_OK | MB_ICONSTOP | MB_APPLMODAL);
|
||||
return 0;
|
||||
}
|
||||
else if( i < newColumns && !token )
|
||||
{
|
||||
Char *whoopsMsg = new char[250];
|
||||
sprintf(whoopsMsg,"You have Specified %d columns but I have read in only %d for the percentages, please double check your data", newColumns, i );
|
||||
MessageBox(NULL, whoopsMsg,"Whoops",MB_OK | MB_ICONSTOP | MB_APPLMODAL);
|
||||
return 0;
|
||||
}
|
||||
else if((total > 100 ) || (total < 100 && !token ))
|
||||
{
|
||||
Char *whoopsMsg = new char[250];
|
||||
sprintf(whoopsMsg,"Please Double check to make sure your percentages add up to 100.", newColumns, i - 1);
|
||||
MessageBox(NULL, whoopsMsg,"Whoops",MB_OK | MB_ICONSTOP | MB_APPLMODAL);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
listData->columnWidthPercentage = newPercentages;
|
||||
}
|
||||
listData->columns = newColumns;
|
||||
|
||||
} // end if
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end OK
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDCANCEL:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end cancel
|
||||
|
||||
} // end switch( LOWORD( wParam ) )
|
||||
|
||||
return 0;
|
||||
|
||||
} // end of WM_COMMAND
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_CLOSE:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
return 0;
|
||||
|
||||
} // end close
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
default:
|
||||
return 0;
|
||||
|
||||
} // end of switch
|
||||
|
||||
} // end listboxPropertiesCallback
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PUBLIC FUNCTIONS ///////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// InitListboxPropertiesDialog ================================================
|
||||
/** Bring up the listbox properties window */
|
||||
//=============================================================================
|
||||
HWND InitListboxPropertiesDialog( GameWindow *window )
|
||||
{
|
||||
HWND dialog;
|
||||
|
||||
// create the dialog box
|
||||
dialog = CreateDialog( TheEditor->getInstance(),
|
||||
(LPCTSTR)LISTBOX_PROPERTIES_DIALOG,
|
||||
TheEditor->getWindowHandle(),
|
||||
(DLGPROC)listboxPropertiesCallback );
|
||||
if( dialog == NULL )
|
||||
return NULL;
|
||||
|
||||
// do the common initialization
|
||||
CommonDialogInitialize( window, dialog );
|
||||
|
||||
//
|
||||
// store in the image and color table the values for this putton
|
||||
//
|
||||
const Image *image;
|
||||
Color color, borderColor;
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetListBoxGetEnabledImage( window );
|
||||
color = GadgetListBoxGetEnabledColor( window );
|
||||
borderColor = GadgetListBoxGetEnabledBorderColor( window );
|
||||
StoreImageAndColor( LISTBOX_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetListBoxGetEnabledSelectedItemImageLeft( window );
|
||||
color = GadgetListBoxGetEnabledSelectedItemColor( window );
|
||||
borderColor = GadgetListBoxGetEnabledSelectedItemBorderColor( window );
|
||||
StoreImageAndColor( LISTBOX_ENABLED_SELECTED_ITEM_LEFT, image, color, borderColor );
|
||||
image = GadgetListBoxGetEnabledSelectedItemImageRight( window );
|
||||
StoreImageAndColor( LISTBOX_ENABLED_SELECTED_ITEM_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetListBoxGetEnabledSelectedItemImageCenter( window );
|
||||
StoreImageAndColor( LISTBOX_ENABLED_SELECTED_ITEM_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetListBoxGetEnabledSelectedItemImageSmallCenter( window );
|
||||
StoreImageAndColor( LISTBOX_ENABLED_SELECTED_ITEM_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetListBoxGetDisabledImage( window );
|
||||
color = GadgetListBoxGetDisabledColor( window );
|
||||
borderColor = GadgetListBoxGetDisabledBorderColor( window );
|
||||
StoreImageAndColor( LISTBOX_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetListBoxGetDisabledSelectedItemImageLeft( window );
|
||||
color = GadgetListBoxGetDisabledSelectedItemColor( window );
|
||||
borderColor = GadgetListBoxGetDisabledSelectedItemBorderColor( window );
|
||||
StoreImageAndColor( LISTBOX_DISABLED_SELECTED_ITEM_LEFT, image, color, borderColor );
|
||||
image = GadgetListBoxGetDisabledSelectedItemImageRight( window );
|
||||
StoreImageAndColor( LISTBOX_DISABLED_SELECTED_ITEM_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetListBoxGetDisabledSelectedItemImageCenter( window );
|
||||
StoreImageAndColor( LISTBOX_DISABLED_SELECTED_ITEM_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetListBoxGetDisabledSelectedItemImageSmallCenter( window );
|
||||
StoreImageAndColor( LISTBOX_DISABLED_SELECTED_ITEM_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetListBoxGetHiliteImage( window );
|
||||
color = GadgetListBoxGetHiliteColor( window );
|
||||
borderColor = GadgetListBoxGetHiliteBorderColor( window );
|
||||
StoreImageAndColor( LISTBOX_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetListBoxGetHiliteSelectedItemImageLeft( window );
|
||||
color = GadgetListBoxGetHiliteSelectedItemColor( window );
|
||||
borderColor = GadgetListBoxGetHiliteSelectedItemBorderColor( window );
|
||||
StoreImageAndColor( LISTBOX_HILITE_SELECTED_ITEM_LEFT, image, color, borderColor );
|
||||
image = GadgetListBoxGetHiliteSelectedItemImageRight( window );
|
||||
StoreImageAndColor( LISTBOX_HILITE_SELECTED_ITEM_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetListBoxGetHiliteSelectedItemImageCenter( window );
|
||||
StoreImageAndColor( LISTBOX_HILITE_SELECTED_ITEM_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetListBoxGetHiliteSelectedItemImageSmallCenter( window );
|
||||
StoreImageAndColor( LISTBOX_HILITE_SELECTED_ITEM_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
GameWindow *upButton = GadgetListBoxGetUpButton( window );
|
||||
if( upButton )
|
||||
{
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
image = GadgetButtonGetEnabledImage( upButton );
|
||||
color = GadgetButtonGetEnabledColor( upButton );
|
||||
borderColor = GadgetButtonGetEnabledBorderColor( upButton );
|
||||
StoreImageAndColor( LISTBOX_UP_BUTTON_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetEnabledSelectedImage( upButton );
|
||||
color = GadgetButtonGetEnabledSelectedColor( upButton );
|
||||
borderColor = GadgetButtonGetEnabledSelectedBorderColor( upButton );
|
||||
StoreImageAndColor( LISTBOX_UP_BUTTON_ENABLED_PUSHED, image, color, borderColor );
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
image = GadgetButtonGetDisabledImage( upButton );
|
||||
color = GadgetButtonGetDisabledColor( upButton );
|
||||
borderColor = GadgetButtonGetDisabledBorderColor( upButton );
|
||||
StoreImageAndColor( LISTBOX_UP_BUTTON_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetDisabledSelectedImage( upButton );
|
||||
color = GadgetButtonGetDisabledSelectedColor( upButton );
|
||||
borderColor = GadgetButtonGetDisabledSelectedBorderColor( upButton );
|
||||
StoreImageAndColor( LISTBOX_UP_BUTTON_DISABLED_PUSHED, image, color, borderColor );
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
image = GadgetButtonGetHiliteImage( upButton );
|
||||
color = GadgetButtonGetHiliteColor( upButton );
|
||||
borderColor = GadgetButtonGetHiliteBorderColor( upButton );
|
||||
StoreImageAndColor( LISTBOX_UP_BUTTON_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetHiliteSelectedImage( upButton );
|
||||
color = GadgetButtonGetHiliteSelectedColor( upButton );
|
||||
borderColor = GadgetButtonGetHiliteSelectedBorderColor( upButton );
|
||||
StoreImageAndColor( LISTBOX_UP_BUTTON_HILITE_PUSHED, image, color, borderColor );
|
||||
|
||||
} // end if
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
GameWindow *downButton = GadgetListBoxGetDownButton( window );
|
||||
if( downButton )
|
||||
{
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
image = GadgetButtonGetEnabledImage( downButton );
|
||||
color = GadgetButtonGetEnabledColor( downButton );
|
||||
borderColor = GadgetButtonGetEnabledBorderColor( downButton );
|
||||
StoreImageAndColor( LISTBOX_DOWN_BUTTON_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetEnabledSelectedImage( downButton );
|
||||
color = GadgetButtonGetEnabledSelectedColor( downButton );
|
||||
borderColor = GadgetButtonGetEnabledSelectedBorderColor( downButton );
|
||||
StoreImageAndColor( LISTBOX_DOWN_BUTTON_ENABLED_PUSHED, image, color, borderColor );
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
image = GadgetButtonGetDisabledImage( downButton );
|
||||
color = GadgetButtonGetDisabledColor( downButton );
|
||||
borderColor = GadgetButtonGetDisabledBorderColor( downButton );
|
||||
StoreImageAndColor( LISTBOX_DOWN_BUTTON_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetDisabledSelectedImage( downButton );
|
||||
color = GadgetButtonGetDisabledSelectedColor( downButton );
|
||||
borderColor = GadgetButtonGetDisabledSelectedBorderColor( downButton );
|
||||
StoreImageAndColor( LISTBOX_DOWN_BUTTON_DISABLED_PUSHED, image, color, borderColor );
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
image = GadgetButtonGetHiliteImage( downButton );
|
||||
color = GadgetButtonGetHiliteColor( downButton );
|
||||
borderColor = GadgetButtonGetHiliteBorderColor( downButton );
|
||||
StoreImageAndColor( LISTBOX_DOWN_BUTTON_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetHiliteSelectedImage( downButton );
|
||||
color = GadgetButtonGetHiliteSelectedColor( downButton );
|
||||
borderColor = GadgetButtonGetHiliteSelectedBorderColor( downButton );
|
||||
StoreImageAndColor( LISTBOX_DOWN_BUTTON_HILITE_PUSHED, image, color, borderColor );
|
||||
|
||||
} // end if
|
||||
|
||||
GameWindow *slider = GadgetListBoxGetSlider( window );
|
||||
if( slider )
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetSliderGetEnabledImageTop( slider );
|
||||
color = GadgetSliderGetEnabledColor( slider );
|
||||
borderColor = GadgetSliderGetEnabledBorderColor( slider );
|
||||
StoreImageAndColor( LISTBOX_SLIDER_ENABLED_TOP, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetEnabledImageBottom( slider );
|
||||
StoreImageAndColor( LISTBOX_SLIDER_ENABLED_BOTTOM, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetEnabledImageCenter( slider );
|
||||
StoreImageAndColor( LISTBOX_SLIDER_ENABLED_CENTER, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetEnabledImageSmallCenter( slider );
|
||||
StoreImageAndColor( LISTBOX_SLIDER_ENABLED_SMALL_CENTER, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetSliderGetDisabledImageTop( slider );
|
||||
color = GadgetSliderGetDisabledColor( slider );
|
||||
borderColor = GadgetSliderGetDisabledBorderColor( slider );
|
||||
StoreImageAndColor( LISTBOX_SLIDER_DISABLED_TOP, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetDisabledImageBottom( slider );
|
||||
StoreImageAndColor( LISTBOX_SLIDER_DISABLED_BOTTOM, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetDisabledImageCenter( slider );
|
||||
StoreImageAndColor( LISTBOX_SLIDER_DISABLED_CENTER, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetDisabledImageSmallCenter( slider );
|
||||
StoreImageAndColor( LISTBOX_SLIDER_DISABLED_SMALL_CENTER, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetSliderGetHiliteImageTop( slider );
|
||||
color = GadgetSliderGetHiliteColor( slider );
|
||||
borderColor = GadgetSliderGetHiliteBorderColor( slider );
|
||||
StoreImageAndColor( LISTBOX_SLIDER_HILITE_TOP, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetHiliteImageBottom( slider );
|
||||
StoreImageAndColor( LISTBOX_SLIDER_HILITE_BOTTOM, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetHiliteImageCenter( slider );
|
||||
StoreImageAndColor( LISTBOX_SLIDER_HILITE_CENTER, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetHiliteImageSmallCenter( slider );
|
||||
StoreImageAndColor( LISTBOX_SLIDER_HILITE_SMALL_CENTER, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetSliderGetEnabledThumbImage( slider );
|
||||
color = GadgetSliderGetEnabledThumbColor( slider );
|
||||
borderColor = GadgetSliderGetEnabledThumbBorderColor( slider );
|
||||
StoreImageAndColor( LISTBOX_SLIDER_THUMB_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetEnabledSelectedThumbImage( slider );
|
||||
color = GadgetSliderGetEnabledSelectedThumbColor( slider );
|
||||
borderColor = GadgetSliderGetEnabledSelectedThumbBorderColor( slider );
|
||||
StoreImageAndColor( LISTBOX_SLIDER_THUMB_ENABLED_PUSHED, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetSliderGetDisabledThumbImage( slider );
|
||||
color = GadgetSliderGetDisabledThumbColor( slider );
|
||||
borderColor = GadgetSliderGetDisabledThumbBorderColor( slider );
|
||||
StoreImageAndColor( LISTBOX_SLIDER_THUMB_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetDisabledSelectedThumbImage( slider );
|
||||
color = GadgetSliderGetDisabledSelectedThumbColor( slider );
|
||||
borderColor = GadgetSliderGetDisabledSelectedThumbBorderColor( slider );
|
||||
StoreImageAndColor( LISTBOX_SLIDER_THUMB_DISABLED_PUSHED, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetSliderGetHiliteThumbImage( slider );
|
||||
color = GadgetSliderGetHiliteThumbColor( slider );
|
||||
borderColor = GadgetSliderGetHiliteThumbBorderColor( slider );
|
||||
StoreImageAndColor( LISTBOX_SLIDER_THUMB_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetHiliteSelectedThumbImage( slider );
|
||||
color = GadgetSliderGetHiliteSelectedThumbColor( slider );
|
||||
borderColor = GadgetSliderGetHiliteSelectedThumbBorderColor( slider );
|
||||
StoreImageAndColor( LISTBOX_SLIDER_THUMB_HILITE_PUSHED, image, color, borderColor );
|
||||
|
||||
} // end if
|
||||
|
||||
// init listbox specific property section
|
||||
ListboxData *listData = (ListboxData *)window->winGetUserData();
|
||||
|
||||
CheckDlgButton( dialog, CHECK_HAS_SCROLLBAR, listData->scrollBar );
|
||||
CheckDlgButton( dialog, CHECK_MULTI_SELECT, listData->multiSelect );
|
||||
CheckDlgButton( dialog, CHECK_FORCE_SELECT, listData->forceSelect );
|
||||
CheckDlgButton( dialog, CHECK_AUTO_SCROLL, listData->autoScroll );
|
||||
CheckDlgButton( dialog, CHECK_SCROLL_IF_AT_END, listData->scrollIfAtEnd );
|
||||
CheckDlgButton( dialog, CHECK_AUTO_PURGE, listData->autoPurge );
|
||||
SetDlgItemInt( dialog, EDIT_MAX_ITEMS, listData->listLength, FALSE );
|
||||
SetDlgItemInt( dialog, EDIT_NUM_COLUMNS, listData->columns, FALSE );
|
||||
if(listData->columns > 1)
|
||||
{
|
||||
char *percentages = new char[60];
|
||||
char *tempStr = new char[60];
|
||||
sprintf(percentages,"%d",listData->columnWidthPercentage[0]);
|
||||
for(Int i = 1; i < listData->columns; i++ )
|
||||
{
|
||||
strcat(percentages,",");
|
||||
strcat(percentages,itoa(listData->columnWidthPercentage[i],tempStr,10));
|
||||
}
|
||||
SetDlgItemText(dialog,EDIT_COLUMN_PERCENT,percentages);
|
||||
|
||||
}
|
||||
// WordWrap Check Box
|
||||
if( BitTest( window->winGetStatus(), WIN_STATUS_ONE_LINE ) )
|
||||
CheckDlgButton( dialog, CHECK_NO_WORDWRAP, BST_CHECKED );
|
||||
|
||||
|
||||
// select the button enabled state for display
|
||||
SwitchToState( LISTBOX_ENABLED, dialog );
|
||||
|
||||
//
|
||||
// initialize the dialog with values from the window
|
||||
//
|
||||
|
||||
return dialog;
|
||||
|
||||
} // end InitListboxPropertiesDialog
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,155 @@
|
||||
/*
|
||||
** Command & Conquer Generals Zero Hour(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// (c) 2001-2003 Electronic Arts Inc. //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// FILE: NewLayoutDialog.cpp //////////////////////////////////////////////////
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Westwood Studios Pacific.
|
||||
//
|
||||
// Confidential Information
|
||||
// Copyright (C) 2001 - All Rights Reserved
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Project: GUIEdit
|
||||
//
|
||||
// File name: NewLayoutDialog.cpp
|
||||
//
|
||||
// Created: Colin Day, July 2001
|
||||
//
|
||||
// Desc: New layout dialog procedure
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SYSTEM INCLUDES ////////////////////////////////////////////////////////////
|
||||
#include <windows.h>
|
||||
|
||||
// USER INCLUDES //////////////////////////////////////////////////////////////
|
||||
#include "Lib/BaseType.h"
|
||||
#include "Resource.h"
|
||||
#include "EditWindow.h"
|
||||
#include "GUIEdit.h"
|
||||
|
||||
// DEFINES ////////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE TYPES //////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE DATA ///////////////////////////////////////////////////////////////
|
||||
|
||||
// PUBLIC DATA ////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE PROTOTYPES /////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE FUNCTIONS //////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PUBLIC FUNCTIONS ///////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// initNewLayoutDialog ========================================================
|
||||
/** The new layout dialog is being shown, initialize anything we need to */
|
||||
//=============================================================================
|
||||
static void initNewLayoutDialog( HWND hWndDialog )
|
||||
{
|
||||
|
||||
// set default keyboard focus
|
||||
SetFocus( GetDlgItem( hWndDialog, IDOK ) );
|
||||
|
||||
} // end initNewLayoutDialog
|
||||
|
||||
// NewLayoutDialogProc ========================================================
|
||||
/** Dialog procedure for the new layout dialog when starting an entire
|
||||
* new layout in the editor */
|
||||
//=============================================================================
|
||||
LRESULT CALLBACK NewLayoutDialogProc( HWND hWndDialog, UINT message,
|
||||
WPARAM wParam, LPARAM lParam )
|
||||
{
|
||||
|
||||
switch( message )
|
||||
{
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
|
||||
// initialize the values for the the dialog
|
||||
initNewLayoutDialog( hWndDialog );
|
||||
return FALSE;
|
||||
|
||||
} // end init dialog
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_COMMAND:
|
||||
{
|
||||
|
||||
switch( LOWORD( wParam ) )
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDOK:
|
||||
{
|
||||
|
||||
// reset the editor
|
||||
TheEditor->newLayout();
|
||||
|
||||
// end this dialog
|
||||
EndDialog( hWndDialog, TRUE );
|
||||
|
||||
break;
|
||||
|
||||
} // end ok
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDCANCEL:
|
||||
{
|
||||
|
||||
EndDialog( hWndDialog, FALSE );
|
||||
break;
|
||||
|
||||
} // end cancel
|
||||
|
||||
} // end switch( LOWORD( wParam ) )
|
||||
|
||||
return 0;
|
||||
|
||||
} // end of WM_COMMAND
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_CLOSE:
|
||||
{
|
||||
|
||||
EndDialog( hWndDialog, FALSE );
|
||||
return 0;
|
||||
|
||||
} // end close
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
default:
|
||||
return 0;
|
||||
|
||||
} // end of switch
|
||||
|
||||
} // end NewLayoutDialogProc
|
||||
|
||||
@@ -0,0 +1,333 @@
|
||||
/*
|
||||
** Command & Conquer Generals Zero Hour(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// (c) 2001-2003 Electronic Arts Inc. //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// FILE: ProgressBarProperties.cpp ////////////////////////////////////////////
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Westwood Studios Pacific.
|
||||
//
|
||||
// Confidential Information
|
||||
// Copyright (C) 2001 - All Rights Reserved
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Project: GUIEdit
|
||||
//
|
||||
// File name: ProgressBarProperties.cpp
|
||||
//
|
||||
// Created: Colin Day, August 2001
|
||||
//
|
||||
// Desc: Progress bar properties
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SYSTEM INCLUDES ////////////////////////////////////////////////////////////
|
||||
|
||||
// USER INCLUDES //////////////////////////////////////////////////////////////
|
||||
#include "GUIEdit.h"
|
||||
#include "Properties.h"
|
||||
#include "Resource.h"
|
||||
#include "GameClient/GadgetProgressBar.h"
|
||||
|
||||
// DEFINES ////////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE TYPES //////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE DATA ///////////////////////////////////////////////////////////////
|
||||
|
||||
// PUBLIC DATA ////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE PROTOTYPES /////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE FUNCTIONS //////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// progressBarPropertiesCallback ==============================================
|
||||
/** Dialog callback for properties */
|
||||
//=============================================================================
|
||||
static LRESULT CALLBACK progressBarPropertiesCallback( HWND hWndDialog,
|
||||
UINT message,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam )
|
||||
{
|
||||
Int returnCode;
|
||||
|
||||
//
|
||||
// handle any common messages between all property dialogs cause they
|
||||
// are designed to have controls doing the same functionality
|
||||
// and names
|
||||
//
|
||||
if( HandleCommonDialogMessages( hWndDialog, message,
|
||||
wParam, lParam, &returnCode ) == TRUE )
|
||||
return returnCode;
|
||||
|
||||
switch( message )
|
||||
{
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_COMMAND:
|
||||
{
|
||||
// Int notifyCode = HIWORD( wParam ); // notification code
|
||||
Int controlID = LOWORD( wParam ); // control ID
|
||||
// HWND hWndControl = (HWND)lParam; // control window handle
|
||||
|
||||
switch( controlID )
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDOK:
|
||||
{
|
||||
GameWindow *window = TheEditor->getPropertyTarget();
|
||||
|
||||
// sanity
|
||||
if( window )
|
||||
{
|
||||
ImageAndColorInfo *info;
|
||||
|
||||
// save the common properties
|
||||
if( SaveCommonDialogProperties( hWndDialog, window ) == FALSE )
|
||||
break;
|
||||
|
||||
// save the image and color data
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( PROGRESS_BAR_ENABLED_LEFT );
|
||||
GadgetProgressBarSetEnabledImageLeft( window, info->image );
|
||||
GadgetProgressBarSetEnabledColor( window, info->color );
|
||||
GadgetProgressBarSetEnabledBorderColor( window, info->borderColor );
|
||||
info = GetStateInfo( PROGRESS_BAR_ENABLED_RIGHT );
|
||||
GadgetProgressBarSetEnabledImageRight( window, info->image );
|
||||
info = GetStateInfo( PROGRESS_BAR_ENABLED_CENTER );
|
||||
GadgetProgressBarSetEnabledImageCenter( window, info->image );
|
||||
info = GetStateInfo( PROGRESS_BAR_ENABLED_SMALL_CENTER );
|
||||
GadgetProgressBarSetEnabledImageSmallCenter( window, info->image );
|
||||
|
||||
info = GetStateInfo( PROGRESS_BAR_ENABLED_BAR_LEFT );
|
||||
GadgetProgressBarSetEnabledBarImageLeft( window, info->image );
|
||||
GadgetProgressBarSetEnabledBarColor( window, info->color );
|
||||
GadgetProgressBarSetEnabledBarBorderColor( window, info->borderColor );
|
||||
info = GetStateInfo( PROGRESS_BAR_ENABLED_BAR_RIGHT );
|
||||
GadgetProgressBarSetEnabledBarImageRight( window, info->image );
|
||||
info = GetStateInfo( PROGRESS_BAR_ENABLED_BAR_CENTER );
|
||||
GadgetProgressBarSetEnabledBarImageCenter( window, info->image );
|
||||
info = GetStateInfo( PROGRESS_BAR_ENABLED_BAR_SMALL_CENTER );
|
||||
GadgetProgressBarSetEnabledBarImageSmallCenter( window, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( PROGRESS_BAR_DISABLED_LEFT );
|
||||
GadgetProgressBarSetDisabledImageLeft( window, info->image );
|
||||
GadgetProgressBarSetDisabledColor( window, info->color );
|
||||
GadgetProgressBarSetDisabledBorderColor( window, info->borderColor );
|
||||
info = GetStateInfo( PROGRESS_BAR_DISABLED_RIGHT );
|
||||
GadgetProgressBarSetDisabledImageRight( window, info->image );
|
||||
info = GetStateInfo( PROGRESS_BAR_DISABLED_CENTER );
|
||||
GadgetProgressBarSetDisabledImageCenter( window, info->image );
|
||||
info = GetStateInfo( PROGRESS_BAR_DISABLED_SMALL_CENTER );
|
||||
GadgetProgressBarSetDisabledImageSmallCenter( window, info->image );
|
||||
|
||||
info = GetStateInfo( PROGRESS_BAR_DISABLED_BAR_LEFT );
|
||||
GadgetProgressBarSetDisabledBarImageLeft( window, info->image );
|
||||
GadgetProgressBarSetDisabledBarColor( window, info->color );
|
||||
GadgetProgressBarSetDisabledBarBorderColor( window, info->borderColor );
|
||||
info = GetStateInfo( PROGRESS_BAR_DISABLED_BAR_RIGHT );
|
||||
GadgetProgressBarSetDisabledBarImageRight( window, info->image );
|
||||
info = GetStateInfo( PROGRESS_BAR_DISABLED_BAR_CENTER );
|
||||
GadgetProgressBarSetDisabledBarImageCenter( window, info->image );
|
||||
info = GetStateInfo( PROGRESS_BAR_DISABLED_BAR_SMALL_CENTER );
|
||||
GadgetProgressBarSetDisabledBarImageSmallCenter( window, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( PROGRESS_BAR_HILITE_LEFT );
|
||||
GadgetProgressBarSetHiliteImageLeft( window, info->image );
|
||||
GadgetProgressBarSetHiliteColor( window, info->color );
|
||||
GadgetProgressBarSetHiliteBorderColor( window, info->borderColor );
|
||||
info = GetStateInfo( PROGRESS_BAR_HILITE_RIGHT );
|
||||
GadgetProgressBarSetHiliteImageRight( window, info->image );
|
||||
info = GetStateInfo( PROGRESS_BAR_HILITE_CENTER );
|
||||
GadgetProgressBarSetHiliteImageCenter( window, info->image );
|
||||
info = GetStateInfo( PROGRESS_BAR_HILITE_SMALL_CENTER );
|
||||
GadgetProgressBarSetHiliteImageSmallCenter( window, info->image );
|
||||
|
||||
info = GetStateInfo( PROGRESS_BAR_HILITE_BAR_LEFT );
|
||||
GadgetProgressBarSetHiliteBarImageLeft( window, info->image );
|
||||
GadgetProgressBarSetHiliteBarColor( window, info->color );
|
||||
GadgetProgressBarSetHiliteBarBorderColor( window, info->borderColor );
|
||||
info = GetStateInfo( PROGRESS_BAR_HILITE_BAR_RIGHT );
|
||||
GadgetProgressBarSetHiliteBarImageRight( window, info->image );
|
||||
info = GetStateInfo( PROGRESS_BAR_HILITE_BAR_CENTER );
|
||||
GadgetProgressBarSetHiliteBarImageCenter( window, info->image );
|
||||
info = GetStateInfo( PROGRESS_BAR_HILITE_BAR_SMALL_CENTER );
|
||||
GadgetProgressBarSetHiliteBarImageSmallCenter( window, info->image );
|
||||
|
||||
} // end if
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end OK
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDCANCEL:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end cancel
|
||||
|
||||
} // end switch( LOWORD( wParam ) )
|
||||
|
||||
return 0;
|
||||
|
||||
} // end of WM_COMMAND
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_CLOSE:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
return 0;
|
||||
|
||||
} // end close
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
default:
|
||||
return 0;
|
||||
|
||||
} // end of switch
|
||||
|
||||
} // end progressBarPropertiesCallback
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PUBLIC FUNCTIONS ///////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// InitProgressBarPropertiesDialog ============================================
|
||||
/** Bring up the progress bar properties dialog */
|
||||
//=============================================================================
|
||||
HWND InitProgressBarPropertiesDialog( GameWindow *window )
|
||||
{
|
||||
HWND dialog;
|
||||
|
||||
// create the dialog box
|
||||
dialog = CreateDialog( TheEditor->getInstance(),
|
||||
(LPCTSTR)PROGRESS_BAR_PROPERTIES_DIALOG,
|
||||
TheEditor->getWindowHandle(),
|
||||
(DLGPROC)progressBarPropertiesCallback );
|
||||
if( dialog == NULL )
|
||||
return NULL;
|
||||
|
||||
// do the common initialization
|
||||
CommonDialogInitialize( window, dialog );
|
||||
|
||||
//
|
||||
// store in the image and color table the values for this putton
|
||||
//
|
||||
const Image *image;
|
||||
Color color, borderColor;
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetProgressBarGetEnabledImageLeft( window );
|
||||
color = GadgetProgressBarGetEnabledColor( window );
|
||||
borderColor = GadgetProgressBarGetEnabledBorderColor( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_ENABLED_LEFT, image, color, borderColor );
|
||||
image = GadgetProgressBarGetEnabledImageRight( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_ENABLED_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetProgressBarGetEnabledImageCenter( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_ENABLED_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetProgressBarGetEnabledImageSmallCenter( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_ENABLED_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
image = GadgetProgressBarGetEnabledBarImageLeft( window );
|
||||
color = GadgetProgressBarGetEnabledBarColor( window );
|
||||
borderColor = GadgetProgressBarGetEnabledBarBorderColor( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_ENABLED_BAR_LEFT, image, color, borderColor );
|
||||
image = GadgetProgressBarGetEnabledBarImageRight( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_ENABLED_BAR_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetProgressBarGetEnabledBarImageCenter( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_ENABLED_BAR_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetProgressBarGetEnabledBarImageSmallCenter( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_ENABLED_BAR_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetProgressBarGetDisabledImageLeft( window );
|
||||
color = GadgetProgressBarGetDisabledColor( window );
|
||||
borderColor = GadgetProgressBarGetDisabledBorderColor( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_DISABLED_LEFT, image, color, borderColor );
|
||||
image = GadgetProgressBarGetDisabledImageRight( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_DISABLED_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetProgressBarGetDisabledImageCenter( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_DISABLED_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetProgressBarGetDisabledImageSmallCenter( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_DISABLED_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
image = GadgetProgressBarGetDisabledBarImageLeft( window );
|
||||
color = GadgetProgressBarGetDisabledBarColor( window );
|
||||
borderColor = GadgetProgressBarGetDisabledBarBorderColor( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_DISABLED_BAR_LEFT, image, color, borderColor );
|
||||
image = GadgetProgressBarGetDisabledBarImageRight( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_DISABLED_BAR_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetProgressBarGetDisabledBarImageCenter( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_DISABLED_BAR_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetProgressBarGetDisabledBarImageSmallCenter( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_DISABLED_BAR_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetProgressBarGetHiliteImageLeft( window );
|
||||
color = GadgetProgressBarGetHiliteColor( window );
|
||||
borderColor = GadgetProgressBarGetHiliteBorderColor( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_HILITE_LEFT, image, color, borderColor );
|
||||
image = GadgetProgressBarGetHiliteImageRight( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_HILITE_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetProgressBarGetHiliteImageCenter( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_HILITE_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetProgressBarGetHiliteImageSmallCenter( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_HILITE_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
image = GadgetProgressBarGetHiliteBarImageLeft( window );
|
||||
color = GadgetProgressBarGetHiliteBarColor( window );
|
||||
borderColor = GadgetProgressBarGetHiliteBarBorderColor( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_HILITE_BAR_LEFT, image, color, borderColor );
|
||||
image = GadgetProgressBarGetHiliteBarImageRight( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_HILITE_BAR_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetProgressBarGetHiliteBarImageCenter( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_HILITE_BAR_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetProgressBarGetHiliteBarImageSmallCenter( window );
|
||||
StoreImageAndColor( PROGRESS_BAR_HILITE_BAR_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
// select the button enabled state for display
|
||||
SwitchToState( PROGRESS_BAR_ENABLED_LEFT, dialog );
|
||||
|
||||
//
|
||||
// initialize the dialog with values from the window
|
||||
//
|
||||
|
||||
return dialog;
|
||||
|
||||
} // end InitProgressBarPropertiesDialog
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,266 @@
|
||||
/*
|
||||
** Command & Conquer Generals Zero Hour(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// (c) 2001-2003 Electronic Arts Inc. //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// FILE: PushButtonProperties.cpp /////////////////////////////////////////////
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Westwood Studios Pacific.
|
||||
//
|
||||
// Confidential Information
|
||||
// Copyright (C) 2001 - All Rights Reserved
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Project: GUIEdit
|
||||
//
|
||||
// File name: PushButtonProperties.cpp
|
||||
//
|
||||
// Created: Colin Day, August 2001
|
||||
//
|
||||
// Desc: Push button properties
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SYSTEM INCLUDES ////////////////////////////////////////////////////////////
|
||||
|
||||
// USER INCLUDES //////////////////////////////////////////////////////////////
|
||||
#include "GUIEdit.h"
|
||||
#include "Properties.h"
|
||||
#include "Resource.h"
|
||||
#include "GameClient/GadgetPushButton.h"
|
||||
|
||||
// DEFINES ////////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE TYPES //////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE DATA ///////////////////////////////////////////////////////////////
|
||||
|
||||
// PUBLIC DATA ////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE PROTOTYPES /////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE FUNCTIONS //////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// pushButtonPropertiesCallback ===============================================
|
||||
/** Dialog callback for properties */
|
||||
//=============================================================================
|
||||
static LRESULT CALLBACK pushButtonPropertiesCallback( HWND hWndDialog,
|
||||
UINT message,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam )
|
||||
{
|
||||
Int returnCode;
|
||||
|
||||
//
|
||||
// handle any common messages between all property dialogs cause they
|
||||
// are designed to have controls doing the same functionality
|
||||
// and names
|
||||
//
|
||||
if( HandleCommonDialogMessages( hWndDialog, message,
|
||||
wParam, lParam, &returnCode ) == TRUE )
|
||||
return returnCode;
|
||||
|
||||
switch( message )
|
||||
{
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_COMMAND:
|
||||
{
|
||||
// Int notifyCode = HIWORD( wParam ); // notification code
|
||||
Int controlID = LOWORD( wParam ); // control ID
|
||||
// HWND hWndControl = (HWND)lParam; // control window handle
|
||||
|
||||
switch( controlID )
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDOK:
|
||||
{
|
||||
GameWindow *window = TheEditor->getPropertyTarget();
|
||||
|
||||
// sanity
|
||||
if( window )
|
||||
{
|
||||
ImageAndColorInfo *info;
|
||||
|
||||
// save the common properties
|
||||
if( SaveCommonDialogProperties( hWndDialog, window ) == FALSE )
|
||||
break;
|
||||
|
||||
// save the image and color data
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( BUTTON_ENABLED );
|
||||
GadgetButtonSetEnabledImage( window, info->image );
|
||||
GadgetButtonSetEnabledColor( window, info->color );
|
||||
GadgetButtonSetEnabledBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( BUTTON_ENABLED_PUSHED );
|
||||
GadgetButtonSetEnabledSelectedImage( window, info->image );
|
||||
GadgetButtonSetEnabledSelectedColor( window, info->color );
|
||||
GadgetButtonSetEnabledSelectedBorderColor( window, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( BUTTON_DISABLED );
|
||||
GadgetButtonSetDisabledImage( window, info->image );
|
||||
GadgetButtonSetDisabledColor( window, info->color );
|
||||
GadgetButtonSetDisabledBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( BUTTON_DISABLED_PUSHED );
|
||||
GadgetButtonSetDisabledSelectedImage( window, info->image );
|
||||
GadgetButtonSetDisabledSelectedColor( window, info->color );
|
||||
GadgetButtonSetDisabledSelectedBorderColor( window, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( BUTTON_HILITE );
|
||||
GadgetButtonSetHiliteImage( window, info->image );
|
||||
GadgetButtonSetHiliteColor( window, info->color );
|
||||
GadgetButtonSetHiliteBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( BUTTON_HILITE_PUSHED );
|
||||
GadgetButtonSetHiliteSelectedImage( window, info->image );
|
||||
GadgetButtonSetHiliteSelectedColor( window, info->color );
|
||||
GadgetButtonSetHiliteSelectedBorderColor( window, info->borderColor );
|
||||
|
||||
UnsignedInt bit;
|
||||
bit = WIN_STATUS_RIGHT_CLICK;
|
||||
window->winClearStatus( bit );
|
||||
if( IsDlgButtonChecked( hWndDialog, CHECK_RIGHT_CLICK ) )
|
||||
window->winSetStatus( bit );
|
||||
|
||||
} // end if
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end OK
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDCANCEL:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end cancel
|
||||
|
||||
} // end switch( LOWORD( wParam ) )
|
||||
|
||||
return 0;
|
||||
|
||||
} // end of WM_COMMAND
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_CLOSE:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
return 0;
|
||||
|
||||
} // end close
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
default:
|
||||
return 0;
|
||||
|
||||
} // end of switch
|
||||
|
||||
} // end pushButtonPropertiesCallback
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PUBLIC FUNCTIONS ///////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// InitPushButtonPropertiesDialog =============================================
|
||||
/** Bring up the push button properties dialog */
|
||||
//=============================================================================
|
||||
HWND InitPushButtonPropertiesDialog( GameWindow *window )
|
||||
{
|
||||
HWND dialog;
|
||||
|
||||
// create the dialog box
|
||||
dialog = CreateDialog( TheEditor->getInstance(),
|
||||
(LPCTSTR)PUSH_BUTTON_PROPERTIES_DIALOG,
|
||||
TheEditor->getWindowHandle(),
|
||||
(DLGPROC)pushButtonPropertiesCallback );
|
||||
if( dialog == NULL )
|
||||
return NULL;
|
||||
|
||||
// do the common initialization
|
||||
CommonDialogInitialize( window, dialog );
|
||||
|
||||
//
|
||||
// store in the image and color table the values for this putton
|
||||
//
|
||||
const Image *image;
|
||||
Color color, borderColor;
|
||||
|
||||
image = GadgetButtonGetEnabledImage( window );
|
||||
color = GadgetButtonGetEnabledColor( window );
|
||||
borderColor = GadgetButtonGetEnabledBorderColor( window );
|
||||
StoreImageAndColor( BUTTON_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetEnabledSelectedImage( window );
|
||||
color = GadgetButtonGetEnabledSelectedColor( window );
|
||||
borderColor = GadgetButtonGetEnabledSelectedBorderColor( window );
|
||||
StoreImageAndColor( BUTTON_ENABLED_PUSHED, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetDisabledImage( window );
|
||||
color = GadgetButtonGetDisabledColor( window );
|
||||
borderColor = GadgetButtonGetDisabledBorderColor( window );
|
||||
StoreImageAndColor( BUTTON_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetDisabledSelectedImage( window );
|
||||
color = GadgetButtonGetDisabledSelectedColor( window );
|
||||
borderColor = GadgetButtonGetDisabledSelectedBorderColor( window );
|
||||
StoreImageAndColor( BUTTON_DISABLED_PUSHED, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetHiliteImage( window );
|
||||
color = GadgetButtonGetHiliteColor( window );
|
||||
borderColor = GadgetButtonGetHiliteBorderColor( window );
|
||||
StoreImageAndColor( BUTTON_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetButtonGetHiliteSelectedImage( window );
|
||||
color = GadgetButtonGetHiliteSelectedColor( window );
|
||||
borderColor = GadgetButtonGetHiliteSelectedBorderColor( window );
|
||||
StoreImageAndColor( BUTTON_HILITE_PUSHED, image, color, borderColor );
|
||||
|
||||
// select the button enabled state for display
|
||||
SwitchToState( BUTTON_ENABLED, dialog );
|
||||
|
||||
//
|
||||
// initialize the dialog with values from the window
|
||||
//
|
||||
|
||||
if( BitTest( window->winGetStatus(), WIN_STATUS_RIGHT_CLICK ) )
|
||||
CheckDlgButton( dialog, CHECK_RIGHT_CLICK, BST_CHECKED );
|
||||
|
||||
return dialog;
|
||||
|
||||
} // end InitPushButtonPropertiesDialog
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,361 @@
|
||||
/*
|
||||
** Command & Conquer Generals Zero Hour(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// (c) 2001-2003 Electronic Arts Inc. //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// FILE: RadioButtonProperties.cpp ////////////////////////////////////////////
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Westwood Studios Pacific.
|
||||
//
|
||||
// Confidential Information
|
||||
// Copyright (C) 2001 - All Rights Reserved
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Project: GUIEdit
|
||||
//
|
||||
// File name: RadioButtonProperties.cpp
|
||||
//
|
||||
// Created: Colin Day, August 2001
|
||||
//
|
||||
// Desc: Radio button properties
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SYSTEM INCLUDES ////////////////////////////////////////////////////////////
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
// USER INCLUDES //////////////////////////////////////////////////////////////
|
||||
#include "Common/NameKeyGenerator.h"
|
||||
#include "GameClient/GameWindowManager.h"
|
||||
#include "GUIEdit.h"
|
||||
#include "Properties.h"
|
||||
#include "Resource.h"
|
||||
#include "GameClient/GadgetRadioButton.h"
|
||||
#include "GameClient/Gadget.h"
|
||||
|
||||
// DEFINES ////////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE TYPES //////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE DATA ///////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// PUBLIC DATA ////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE PROTOTYPES /////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE FUNCTIONS //////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// radioButtonPropertiesCallback ==============================================
|
||||
/** Dialog callback for properties */
|
||||
//=============================================================================
|
||||
static LRESULT CALLBACK radioButtonPropertiesCallback( HWND hWndDialog,
|
||||
UINT message,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam )
|
||||
{
|
||||
Int returnCode;
|
||||
|
||||
//
|
||||
// handle any common messages between all property dialogs cause they
|
||||
// are designed to have controls doing the same functionality
|
||||
// and names
|
||||
//
|
||||
if( HandleCommonDialogMessages( hWndDialog, message,
|
||||
wParam, lParam, &returnCode ) == TRUE )
|
||||
return returnCode;
|
||||
|
||||
switch( message )
|
||||
{
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_COMMAND:
|
||||
{
|
||||
// Int notifyCode = HIWORD( wParam ); // notification code
|
||||
Int controlID = LOWORD( wParam ); // control ID
|
||||
// HWND hWndControl = (HWND)lParam; // control window handle
|
||||
|
||||
switch( controlID )
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case BUTTON_CLEAR_GROUP:
|
||||
{
|
||||
|
||||
SetDlgItemInt( hWndDialog, COMBO_GROUP, 0, FALSE );
|
||||
break;
|
||||
|
||||
} // end clear group
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDOK:
|
||||
{
|
||||
GameWindow *window = TheEditor->getPropertyTarget();
|
||||
|
||||
// sanity
|
||||
if( window )
|
||||
{
|
||||
ImageAndColorInfo *info;
|
||||
|
||||
// save the common properties
|
||||
if( SaveCommonDialogProperties( hWndDialog, window ) == FALSE )
|
||||
break;
|
||||
|
||||
// save the image and color data
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( RADIO_ENABLED );
|
||||
GadgetRadioSetEnabledImage( window, info->image );
|
||||
GadgetRadioSetEnabledColor( window, info->color );
|
||||
GadgetRadioSetEnabledBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( RADIO_ENABLED_UNCHECKED_BOX );
|
||||
GadgetRadioSetEnabledUncheckedBoxImage( window, info->image );
|
||||
GadgetRadioSetEnabledUncheckedBoxColor( window, info->color );
|
||||
GadgetRadioSetEnabledUncheckedBoxBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( RADIO_ENABLED_CHECKED_BOX );
|
||||
GadgetRadioSetEnabledCheckedBoxImage( window, info->image );
|
||||
GadgetRadioSetEnabledCheckedBoxColor( window, info->color );
|
||||
GadgetRadioSetEnabledCheckedBoxBorderColor( window, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( RADIO_DISABLED );
|
||||
GadgetRadioSetDisabledImage( window, info->image );
|
||||
GadgetRadioSetDisabledColor( window, info->color );
|
||||
GadgetRadioSetDisabledBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( RADIO_DISABLED_UNCHECKED_BOX );
|
||||
GadgetRadioSetDisabledUncheckedBoxImage( window, info->image );
|
||||
GadgetRadioSetDisabledUncheckedBoxColor( window, info->color );
|
||||
GadgetRadioSetDisabledUncheckedBoxBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( RADIO_DISABLED_CHECKED_BOX );
|
||||
GadgetRadioSetDisabledCheckedBoxImage( window, info->image );
|
||||
GadgetRadioSetDisabledCheckedBoxColor( window, info->color );
|
||||
GadgetRadioSetDisabledCheckedBoxBorderColor( window, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( RADIO_HILITE );
|
||||
GadgetRadioSetHiliteImage( window, info->image );
|
||||
GadgetRadioSetHiliteColor( window, info->color );
|
||||
GadgetRadioSetHiliteBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( RADIO_HILITE_UNCHECKED_BOX );
|
||||
GadgetRadioSetHiliteUncheckedBoxImage( window, info->image );
|
||||
GadgetRadioSetHiliteUncheckedBoxColor( window, info->color );
|
||||
GadgetRadioSetHiliteUncheckedBoxBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( RADIO_HILITE_CHECKED_BOX );
|
||||
GadgetRadioSetHiliteCheckedBoxImage( window, info->image );
|
||||
GadgetRadioSetHiliteCheckedBoxColor( window, info->color );
|
||||
GadgetRadioSetHiliteCheckedBoxBorderColor( window, info->borderColor );
|
||||
|
||||
// save group
|
||||
Int group = GetDlgItemInt( hWndDialog, COMBO_GROUP, NULL, FALSE );
|
||||
Int screen = TheNameKeyGenerator->nameToKey( AsciiString(TheEditor->getSaveFilename()) );
|
||||
GadgetRadioSetGroup( window, group, screen );
|
||||
|
||||
} // end if
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end OK
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDCANCEL:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end cancel
|
||||
|
||||
} // end switch( LOWORD( wParam ) )
|
||||
|
||||
return 0;
|
||||
|
||||
} // end of WM_COMMAND
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_CLOSE:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
return 0;
|
||||
|
||||
} // end close
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
default:
|
||||
return 0;
|
||||
|
||||
} // end of switch
|
||||
|
||||
} // end radioButtonPropertiesCallback
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PUBLIC FUNCTIONS ///////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// loadExistingGroupsCombo ====================================================
|
||||
/** fill the group combo box with all the other groups in the screen */
|
||||
//=============================================================================
|
||||
static void loadExistingGroupsCombo( HWND combo, GameWindow *window )
|
||||
{
|
||||
|
||||
// sanity
|
||||
if( combo == NULL )
|
||||
return;
|
||||
|
||||
// end of recursion
|
||||
if( window == NULL )
|
||||
return;
|
||||
|
||||
// if this is a radio button get the group
|
||||
if( BitTest( window->winGetStyle(), GWS_RADIO_BUTTON ) )
|
||||
{
|
||||
RadioButtonData *radioData = (RadioButtonData *)window->winGetUserData();
|
||||
char buffer[ 64 ];
|
||||
|
||||
// convert to string
|
||||
sprintf( buffer, "%d", radioData->group );
|
||||
|
||||
// only add it not already there
|
||||
if( SendMessage( combo, CB_FINDSTRINGEXACT, -1, (LPARAM)buffer ) == CB_ERR )
|
||||
SendMessage( combo, CB_ADDSTRING, 0, (LPARAM)buffer );
|
||||
|
||||
} // end if
|
||||
|
||||
// search our children
|
||||
GameWindow *child;
|
||||
for( child = window->winGetChild(); child; child = child->winGetNext() )
|
||||
loadExistingGroupsCombo( combo, child );
|
||||
|
||||
// search the next in line
|
||||
loadExistingGroupsCombo( combo, window->winGetNext() );
|
||||
|
||||
} // end loadExistingGroupsCombo
|
||||
|
||||
// InitRadioButtonPropertiesDialog ============================================
|
||||
/** Bring up the radio button properties dialog */
|
||||
//=============================================================================
|
||||
HWND InitRadioButtonPropertiesDialog( GameWindow *window )
|
||||
{
|
||||
HWND dialog;
|
||||
|
||||
// create the dialog box
|
||||
dialog = CreateDialog( TheEditor->getInstance(),
|
||||
(LPCTSTR)RADIO_BUTTON_PROPERTIES_DIALOG,
|
||||
TheEditor->getWindowHandle(),
|
||||
(DLGPROC)radioButtonPropertiesCallback );
|
||||
if( dialog == NULL )
|
||||
return NULL;
|
||||
|
||||
// do the common initialization
|
||||
CommonDialogInitialize( window, dialog );
|
||||
|
||||
//
|
||||
// store in the image and color table the values for this putton
|
||||
//
|
||||
const Image *image;
|
||||
Color color, borderColor;
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetRadioGetEnabledImage( window );
|
||||
color = GadgetRadioGetEnabledColor( window );
|
||||
borderColor = GadgetRadioGetEnabledBorderColor( window );
|
||||
StoreImageAndColor( RADIO_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetRadioGetEnabledUncheckedBoxImage( window );
|
||||
color = GadgetRadioGetEnabledUncheckedBoxColor( window );
|
||||
borderColor = GadgetRadioGetEnabledUncheckedBoxBorderColor( window );
|
||||
StoreImageAndColor( RADIO_ENABLED_UNCHECKED_BOX, image, color, borderColor );
|
||||
|
||||
image = GadgetRadioGetEnabledCheckedBoxImage( window );
|
||||
color = GadgetRadioGetEnabledCheckedBoxColor( window );
|
||||
borderColor = GadgetRadioGetEnabledCheckedBoxBorderColor( window );
|
||||
StoreImageAndColor( RADIO_ENABLED_CHECKED_BOX, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetRadioGetDisabledImage( window );
|
||||
color = GadgetRadioGetDisabledColor( window );
|
||||
borderColor = GadgetRadioGetDisabledBorderColor( window );
|
||||
StoreImageAndColor( RADIO_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetRadioGetDisabledUncheckedBoxImage( window );
|
||||
color = GadgetRadioGetDisabledUncheckedBoxColor( window );
|
||||
borderColor = GadgetRadioGetDisabledUncheckedBoxBorderColor( window );
|
||||
StoreImageAndColor( RADIO_DISABLED_UNCHECKED_BOX, image, color, borderColor );
|
||||
|
||||
image = GadgetRadioGetDisabledCheckedBoxImage( window );
|
||||
color = GadgetRadioGetDisabledCheckedBoxColor( window );
|
||||
borderColor = GadgetRadioGetDisabledCheckedBoxBorderColor( window );
|
||||
StoreImageAndColor( RADIO_DISABLED_CHECKED_BOX, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetRadioGetHiliteImage( window );
|
||||
color = GadgetRadioGetHiliteColor( window );
|
||||
borderColor = GadgetRadioGetHiliteBorderColor( window );
|
||||
StoreImageAndColor( RADIO_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetRadioGetHiliteUncheckedBoxImage( window );
|
||||
color = GadgetRadioGetHiliteUncheckedBoxColor( window );
|
||||
borderColor = GadgetRadioGetHiliteUncheckedBoxBorderColor( window );
|
||||
StoreImageAndColor( RADIO_HILITE_UNCHECKED_BOX, image, color, borderColor );
|
||||
|
||||
image = GadgetRadioGetHiliteCheckedBoxImage( window );
|
||||
color = GadgetRadioGetHiliteCheckedBoxColor( window );
|
||||
borderColor = GadgetRadioGetHiliteCheckedBoxBorderColor( window );
|
||||
StoreImageAndColor( RADIO_HILITE_CHECKED_BOX, image, color, borderColor );
|
||||
|
||||
// radio data
|
||||
RadioButtonData *radioData = (RadioButtonData *)window->winGetUserData();
|
||||
|
||||
// fill the group combo box with all the other groups in the screen
|
||||
loadExistingGroupsCombo( GetDlgItem( dialog, COMBO_GROUP ),
|
||||
TheWindowManager->winGetWindowList() );
|
||||
|
||||
// set the group for this radio button
|
||||
SetDlgItemInt( dialog, COMBO_GROUP, radioData->group, FALSE );
|
||||
|
||||
// select the button enabled state for display
|
||||
SwitchToState( RADIO_ENABLED, dialog );
|
||||
|
||||
//
|
||||
// initialize the dialog with values from the window
|
||||
//
|
||||
|
||||
return dialog;
|
||||
|
||||
} // end InitRadioButtonPropertiesDialog
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,484 @@
|
||||
/*
|
||||
** Command & Conquer Generals Zero Hour(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// (c) 2001-2003 Electronic Arts Inc. //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// FILE: SliderProperties.cpp /////////////////////////////////////////////////
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Westwood Studios Pacific.
|
||||
//
|
||||
// Confidential Information
|
||||
// Copyright (C) 2001 - All Rights Reserved
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Project: GUIEdit
|
||||
//
|
||||
// File name: SliderProperties.cpp
|
||||
//
|
||||
// Created: Colin Day, August 2001
|
||||
//
|
||||
// Desc: Slider properties
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SYSTEM INCLUDES ////////////////////////////////////////////////////////////
|
||||
|
||||
// USER INCLUDES //////////////////////////////////////////////////////////////
|
||||
#include "GUIEdit.h"
|
||||
#include "Properties.h"
|
||||
#include "Resource.h"
|
||||
#include "GameClient/GadgetSlider.h"
|
||||
#include "GameClient/Gadget.h"
|
||||
|
||||
// DEFINES ////////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE TYPES //////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE DATA ///////////////////////////////////////////////////////////////
|
||||
|
||||
// PUBLIC DATA ////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE PROTOTYPES /////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE FUNCTIONS //////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// sliderPropertiesCallback ===================================================
|
||||
/** Dialog callback for properties */
|
||||
//=============================================================================
|
||||
static LRESULT CALLBACK sliderPropertiesCallback( HWND hWndDialog,
|
||||
UINT message,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam )
|
||||
{
|
||||
Int returnCode;
|
||||
|
||||
//
|
||||
// handle any common messages between all property dialogs cause they
|
||||
// are designed to have controls doing the same functionality
|
||||
// and names
|
||||
//
|
||||
if( HandleCommonDialogMessages( hWndDialog, message,
|
||||
wParam, lParam, &returnCode ) == TRUE )
|
||||
return returnCode;
|
||||
|
||||
switch( message )
|
||||
{
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_COMMAND:
|
||||
{
|
||||
// Int notifyCode = HIWORD( wParam ); // notification code
|
||||
Int controlID = LOWORD( wParam ); // control ID
|
||||
// HWND hWndControl = (HWND)lParam; // control window handle
|
||||
|
||||
switch( controlID )
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case BUTTON_SUBCONTROL_COLOR:
|
||||
{
|
||||
ImageAndColorInfo *info;
|
||||
GameWindow *window = TheEditor->getPropertyTarget();
|
||||
Bool vert = FALSE;
|
||||
|
||||
if( window )
|
||||
vert = BitTest( window->winGetStyle(), GWS_VERT_SLIDER );
|
||||
|
||||
//
|
||||
// using the current colors in the base of the slider, assign a
|
||||
// reasonable color scheme to all the sub control components
|
||||
//
|
||||
if( vert )
|
||||
{
|
||||
|
||||
info = GetStateInfo( VSLIDER_ENABLED_TOP );
|
||||
StoreColor( VSLIDER_THUMB_ENABLED, info->color, info->borderColor );
|
||||
StoreColor( VSLIDER_THUMB_ENABLED_PUSHED, info->borderColor, info->color );
|
||||
|
||||
info = GetStateInfo( VSLIDER_DISABLED_TOP );
|
||||
StoreColor( VSLIDER_THUMB_DISABLED, info->color, info->borderColor );
|
||||
StoreColor( VSLIDER_THUMB_DISABLED_PUSHED, info->borderColor, info->color );
|
||||
|
||||
info = GetStateInfo( VSLIDER_HILITE_TOP );
|
||||
StoreColor( VSLIDER_THUMB_HILITE, info->color, info->borderColor );
|
||||
StoreColor( VSLIDER_THUMB_HILITE_PUSHED, info->borderColor, info->color );
|
||||
|
||||
} // end if, vertical slider
|
||||
else
|
||||
{
|
||||
|
||||
info = GetStateInfo( HSLIDER_ENABLED_LEFT );
|
||||
StoreColor( HSLIDER_THUMB_ENABLED, info->color, info->borderColor );
|
||||
StoreColor( HSLIDER_THUMB_ENABLED_PUSHED, info->borderColor, info->color );
|
||||
|
||||
info = GetStateInfo( HSLIDER_DISABLED_LEFT );
|
||||
StoreColor( HSLIDER_THUMB_DISABLED, info->color, info->borderColor );
|
||||
StoreColor( HSLIDER_THUMB_DISABLED_PUSHED, info->borderColor, info->color );
|
||||
|
||||
info = GetStateInfo( HSLIDER_HILITE_LEFT );
|
||||
StoreColor( HSLIDER_THUMB_HILITE, info->color, info->borderColor );
|
||||
StoreColor( HSLIDER_THUMB_HILITE_PUSHED, info->borderColor, info->color );
|
||||
|
||||
} // end else horizontal slider
|
||||
|
||||
break;
|
||||
|
||||
} // end case subcontrol color
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDOK:
|
||||
{
|
||||
GameWindow *window = TheEditor->getPropertyTarget();
|
||||
|
||||
// sanity
|
||||
if( window )
|
||||
{
|
||||
ImageAndColorInfo *info;
|
||||
Bool vert = BitTest( window->winGetStyle(), GWS_VERT_SLIDER );
|
||||
|
||||
// save the common properties
|
||||
if( SaveCommonDialogProperties( hWndDialog, window ) == FALSE )
|
||||
break;
|
||||
|
||||
// save the image and color data
|
||||
// ----------------------------------------------------------------
|
||||
if( vert )
|
||||
{
|
||||
info = GetStateInfo( VSLIDER_ENABLED_TOP );
|
||||
GadgetSliderSetEnabledImageTop( window, info->image );
|
||||
GadgetSliderSetEnabledColor( window, info->color );
|
||||
GadgetSliderSetEnabledBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( VSLIDER_ENABLED_BOTTOM );
|
||||
GadgetSliderSetEnabledImageBottom( window, info->image );
|
||||
} // end if
|
||||
else
|
||||
{
|
||||
info = GetStateInfo( HSLIDER_ENABLED_LEFT );
|
||||
GadgetSliderSetEnabledImageLeft( window, info->image );
|
||||
GadgetSliderSetEnabledColor( window, info->color );
|
||||
GadgetSliderSetEnabledBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( HSLIDER_ENABLED_RIGHT );
|
||||
GadgetSliderSetEnabledImageRight( window, info->image );
|
||||
} // end else
|
||||
|
||||
info = GetStateInfo( vert ? VSLIDER_ENABLED_CENTER : HSLIDER_ENABLED_CENTER );
|
||||
GadgetSliderSetEnabledImageCenter( window, info->image );
|
||||
|
||||
info = GetStateInfo( vert ? VSLIDER_ENABLED_SMALL_CENTER : HSLIDER_ENABLED_SMALL_CENTER );
|
||||
GadgetSliderSetEnabledImageSmallCenter( window, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
if( vert )
|
||||
{
|
||||
info = GetStateInfo( VSLIDER_DISABLED_TOP );
|
||||
GadgetSliderSetDisabledImageTop( window, info->image );
|
||||
GadgetSliderSetDisabledColor( window, info->color );
|
||||
GadgetSliderSetDisabledBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( VSLIDER_DISABLED_BOTTOM );
|
||||
GadgetSliderSetDisabledImageBottom( window, info->image );
|
||||
} // end if
|
||||
else
|
||||
{
|
||||
info = GetStateInfo( HSLIDER_DISABLED_LEFT );
|
||||
GadgetSliderSetDisabledImageLeft( window, info->image );
|
||||
GadgetSliderSetDisabledColor( window, info->color );
|
||||
GadgetSliderSetDisabledBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( HSLIDER_DISABLED_RIGHT );
|
||||
GadgetSliderSetDisabledImageRight( window, info->image );
|
||||
} // end else
|
||||
|
||||
info = GetStateInfo( vert ? VSLIDER_DISABLED_CENTER : HSLIDER_DISABLED_CENTER );
|
||||
GadgetSliderSetDisabledImageCenter( window, info->image );
|
||||
|
||||
info = GetStateInfo( vert ? VSLIDER_DISABLED_SMALL_CENTER : HSLIDER_DISABLED_SMALL_CENTER );
|
||||
GadgetSliderSetDisabledImageSmallCenter( window, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
if( vert )
|
||||
{
|
||||
info = GetStateInfo( VSLIDER_HILITE_TOP );
|
||||
GadgetSliderSetHiliteImageTop( window, info->image );
|
||||
GadgetSliderSetHiliteColor( window, info->color );
|
||||
GadgetSliderSetHiliteBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( VSLIDER_HILITE_BOTTOM );
|
||||
GadgetSliderSetHiliteImageBottom( window, info->image );
|
||||
} // end if
|
||||
else
|
||||
{
|
||||
info = GetStateInfo( HSLIDER_HILITE_LEFT );
|
||||
GadgetSliderSetHiliteImageLeft( window, info->image );
|
||||
GadgetSliderSetHiliteColor( window, info->color );
|
||||
GadgetSliderSetHiliteBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( HSLIDER_HILITE_RIGHT );
|
||||
GadgetSliderSetHiliteImageRight( window, info->image );
|
||||
} // end else
|
||||
|
||||
info = GetStateInfo( vert ? VSLIDER_HILITE_CENTER : HSLIDER_HILITE_CENTER );
|
||||
GadgetSliderSetHiliteImageCenter( window, info->image );
|
||||
|
||||
info = GetStateInfo( vert ? VSLIDER_HILITE_SMALL_CENTER : HSLIDER_HILITE_SMALL_CENTER );
|
||||
GadgetSliderSetHiliteImageSmallCenter( window, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( vert ? VSLIDER_THUMB_ENABLED : HSLIDER_THUMB_ENABLED );
|
||||
GadgetSliderSetEnabledThumbImage( window, info->image );
|
||||
GadgetSliderSetEnabledThumbColor( window, info->color );
|
||||
GadgetSliderSetEnabledThumbBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( vert ? VSLIDER_THUMB_ENABLED_PUSHED : HSLIDER_THUMB_ENABLED_PUSHED );
|
||||
GadgetSliderSetEnabledSelectedThumbImage( window, info->image );
|
||||
GadgetSliderSetEnabledSelectedThumbColor( window, info->color );
|
||||
GadgetSliderSetEnabledSelectedThumbBorderColor( window, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( vert ? VSLIDER_THUMB_DISABLED : HSLIDER_THUMB_DISABLED );
|
||||
GadgetSliderSetDisabledThumbImage( window, info->image );
|
||||
GadgetSliderSetDisabledThumbColor( window, info->color );
|
||||
GadgetSliderSetDisabledThumbBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( vert ? VSLIDER_THUMB_DISABLED_PUSHED : HSLIDER_THUMB_DISABLED_PUSHED );
|
||||
GadgetSliderSetDisabledSelectedThumbImage( window, info->image );
|
||||
GadgetSliderSetDisabledSelectedThumbColor( window, info->color );
|
||||
GadgetSliderSetDisabledSelectedThumbBorderColor( window, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( vert ? VSLIDER_THUMB_HILITE : HSLIDER_THUMB_HILITE );
|
||||
GadgetSliderSetHiliteThumbImage( window, info->image );
|
||||
GadgetSliderSetHiliteThumbColor( window, info->color );
|
||||
GadgetSliderSetHiliteThumbBorderColor( window, info->borderColor );
|
||||
|
||||
info = GetStateInfo( vert ? VSLIDER_THUMB_HILITE_PUSHED : HSLIDER_THUMB_HILITE_PUSHED );
|
||||
GadgetSliderSetHiliteSelectedThumbImage( window, info->image );
|
||||
GadgetSliderSetHiliteSelectedThumbColor( window, info->color );
|
||||
GadgetSliderSetHiliteSelectedThumbBorderColor( window, info->borderColor );
|
||||
|
||||
// slider data
|
||||
SliderData *sliderData = (SliderData *)window->winGetUserData();
|
||||
|
||||
sliderData->minVal = GetDlgItemInt( hWndDialog, EDIT_SLIDER_MIN, NULL, FALSE );
|
||||
sliderData->maxVal = GetDlgItemInt( hWndDialog, EDIT_SLIDER_MAX, NULL, FALSE );
|
||||
|
||||
// sanity
|
||||
if( sliderData->minVal > sliderData->maxVal )
|
||||
{
|
||||
Int temp = sliderData->minVal;
|
||||
sliderData->minVal = sliderData->maxVal;
|
||||
sliderData->maxVal = temp;
|
||||
|
||||
MessageBox( NULL, "Slider min greated than max, the values were swapped",
|
||||
"Warning", MB_OK | MB_ICONINFORMATION );
|
||||
|
||||
} // end if
|
||||
|
||||
} // end if
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end OK
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDCANCEL:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end cancel
|
||||
|
||||
} // end switch( LOWORD( wParam ) )
|
||||
|
||||
return 0;
|
||||
|
||||
} // end of WM_COMMAND
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_CLOSE:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
return 0;
|
||||
|
||||
} // end close
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
default:
|
||||
return 0;
|
||||
|
||||
} // end of switch
|
||||
|
||||
} // end sliderPropertiesCallback
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PUBLIC FUNCTIONS ///////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// InitSliderPropertiesDialog =================================================
|
||||
/** Slider properties dialog */
|
||||
//=============================================================================
|
||||
HWND InitSliderPropertiesDialog( GameWindow *window )
|
||||
{
|
||||
HWND dialog;
|
||||
|
||||
// create the dialog box
|
||||
dialog = CreateDialog( TheEditor->getInstance(),
|
||||
(LPCTSTR)SLIDER_PROPERTIES_DIALOG,
|
||||
TheEditor->getWindowHandle(),
|
||||
(DLGPROC)sliderPropertiesCallback );
|
||||
if( dialog == NULL )
|
||||
return NULL;
|
||||
|
||||
// do the common initialization
|
||||
CommonDialogInitialize( window, dialog );
|
||||
|
||||
//
|
||||
// init values
|
||||
//
|
||||
const Image *image;
|
||||
Color color, borderColor;
|
||||
Bool vert = BitTest( window->winGetStyle(), GWS_VERT_SLIDER );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
if( vert )
|
||||
image = GadgetSliderGetEnabledImageTop( window );
|
||||
else
|
||||
image = GadgetSliderGetEnabledImageLeft( window );
|
||||
color = GadgetSliderGetEnabledColor( window );
|
||||
borderColor = GadgetSliderGetEnabledBorderColor( window );
|
||||
StoreImageAndColor( vert ? VSLIDER_ENABLED_TOP : HSLIDER_ENABLED_LEFT, image, color, borderColor );
|
||||
|
||||
if( vert )
|
||||
image = GadgetSliderGetEnabledImageBottom( window );
|
||||
else
|
||||
image = GadgetSliderGetEnabledImageRight( window );
|
||||
StoreImageAndColor( vert ? VSLIDER_ENABLED_BOTTOM : HSLIDER_ENABLED_RIGHT, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetEnabledImageCenter( window );
|
||||
StoreImageAndColor( vert ? VSLIDER_ENABLED_CENTER : HSLIDER_ENABLED_CENTER, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetEnabledImageSmallCenter( window );
|
||||
StoreImageAndColor( vert ? VSLIDER_ENABLED_SMALL_CENTER : HSLIDER_ENABLED_SMALL_CENTER, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
if( vert )
|
||||
image = GadgetSliderGetDisabledImageTop( window );
|
||||
else
|
||||
image = GadgetSliderGetDisabledImageLeft( window );
|
||||
color = GadgetSliderGetDisabledColor( window );
|
||||
borderColor = GadgetSliderGetDisabledBorderColor( window );
|
||||
StoreImageAndColor( vert ? VSLIDER_DISABLED_TOP : HSLIDER_DISABLED_LEFT, image, color, borderColor );
|
||||
|
||||
if( vert )
|
||||
image = GadgetSliderGetDisabledImageBottom( window );
|
||||
else
|
||||
image = GadgetSliderGetDisabledImageRight( window );
|
||||
StoreImageAndColor( vert ? VSLIDER_DISABLED_BOTTOM : HSLIDER_DISABLED_RIGHT, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetDisabledImageCenter( window );
|
||||
StoreImageAndColor( vert ? VSLIDER_DISABLED_CENTER : HSLIDER_DISABLED_CENTER, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetDisabledImageSmallCenter( window );
|
||||
StoreImageAndColor( vert ? VSLIDER_DISABLED_SMALL_CENTER : HSLIDER_DISABLED_SMALL_CENTER, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
if( vert )
|
||||
image = GadgetSliderGetHiliteImageTop( window );
|
||||
else
|
||||
image = GadgetSliderGetHiliteImageLeft( window );
|
||||
color = GadgetSliderGetHiliteColor( window );
|
||||
borderColor = GadgetSliderGetHiliteBorderColor( window );
|
||||
StoreImageAndColor( vert ? VSLIDER_HILITE_TOP : HSLIDER_HILITE_LEFT, image, color, borderColor );
|
||||
|
||||
if( vert )
|
||||
image = GadgetSliderGetHiliteImageBottom( window );
|
||||
else
|
||||
image = GadgetSliderGetHiliteImageRight( window );
|
||||
StoreImageAndColor( vert ? VSLIDER_HILITE_BOTTOM : HSLIDER_HILITE_RIGHT, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetHiliteImageCenter( window );
|
||||
StoreImageAndColor( vert ? VSLIDER_HILITE_CENTER : HSLIDER_HILITE_CENTER, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetHiliteImageSmallCenter( window );
|
||||
StoreImageAndColor( vert ? VSLIDER_HILITE_SMALL_CENTER : HSLIDER_HILITE_SMALL_CENTER, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetSliderGetEnabledThumbImage( window );
|
||||
color = GadgetSliderGetEnabledThumbColor( window );
|
||||
borderColor = GadgetSliderGetEnabledThumbBorderColor( window );
|
||||
StoreImageAndColor( vert ? VSLIDER_THUMB_ENABLED : HSLIDER_THUMB_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetEnabledSelectedThumbImage( window );
|
||||
color = GadgetSliderGetEnabledSelectedThumbColor( window );
|
||||
borderColor = GadgetSliderGetEnabledSelectedThumbBorderColor( window );
|
||||
StoreImageAndColor( vert ? VSLIDER_THUMB_ENABLED_PUSHED : HSLIDER_THUMB_ENABLED_PUSHED, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetSliderGetDisabledThumbImage( window );
|
||||
color = GadgetSliderGetDisabledThumbColor( window );
|
||||
borderColor = GadgetSliderGetDisabledThumbBorderColor( window );
|
||||
StoreImageAndColor( vert ? VSLIDER_THUMB_DISABLED : HSLIDER_THUMB_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetDisabledSelectedThumbImage( window );
|
||||
color = GadgetSliderGetDisabledSelectedThumbColor( window );
|
||||
borderColor = GadgetSliderGetDisabledSelectedThumbBorderColor( window );
|
||||
StoreImageAndColor( vert ? VSLIDER_THUMB_DISABLED_PUSHED : HSLIDER_THUMB_DISABLED_PUSHED, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetSliderGetHiliteThumbImage( window );
|
||||
color = GadgetSliderGetHiliteThumbColor( window );
|
||||
borderColor = GadgetSliderGetHiliteThumbBorderColor( window );
|
||||
StoreImageAndColor( vert ? VSLIDER_THUMB_HILITE : HSLIDER_THUMB_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetSliderGetHiliteSelectedThumbImage( window );
|
||||
color = GadgetSliderGetHiliteSelectedThumbColor( window );
|
||||
borderColor = GadgetSliderGetHiliteSelectedThumbBorderColor( window );
|
||||
StoreImageAndColor( vert ? VSLIDER_THUMB_HILITE_PUSHED : HSLIDER_THUMB_HILITE_PUSHED, image, color, borderColor );
|
||||
|
||||
// slider data
|
||||
SliderData *sliderData = (SliderData *)window->winGetUserData();
|
||||
|
||||
SetDlgItemInt( dialog, EDIT_SLIDER_MIN, sliderData->minVal, FALSE );
|
||||
SetDlgItemInt( dialog, EDIT_SLIDER_MAX, sliderData->maxVal, FALSE );
|
||||
|
||||
// select the enabled state for display
|
||||
SwitchToState( vert ? VSLIDER_ENABLED_TOP : HSLIDER_ENABLED_LEFT, dialog );
|
||||
|
||||
return dialog;
|
||||
|
||||
} // end InitSliderPropertiesDialog
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,257 @@
|
||||
/*
|
||||
** Command & Conquer Generals Zero Hour(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// (c) 2001-2003 Electronic Arts Inc. //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// FILE: StaticTextProperties.cpp /////////////////////////////////////////////
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Westwood Studios Pacific.
|
||||
//
|
||||
// Confidential Information
|
||||
// Copyright (C) 2001 - All Rights Reserved
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Project: GUIEdit
|
||||
//
|
||||
// File name: StaticTextSliderProperties.cpp
|
||||
//
|
||||
// Created: Colin Day, August 2001
|
||||
//
|
||||
// Desc: Static text properties
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SYSTEM INCLUDES ////////////////////////////////////////////////////////////
|
||||
|
||||
// USER INCLUDES //////////////////////////////////////////////////////////////
|
||||
#include "GUIEdit.h"
|
||||
#include "Properties.h"
|
||||
#include "Resource.h"
|
||||
#include "GameClient/GadgetStaticText.h"
|
||||
#include "GameClient/Gadget.h"
|
||||
|
||||
// DEFINES ////////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE TYPES //////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE DATA ///////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
static Bool currCentered = FALSE;
|
||||
|
||||
// PUBLIC DATA ////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE PROTOTYPES /////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE FUNCTIONS //////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// staticTextPropertiesCallback ===============================================
|
||||
/** Dialog callback for properties */
|
||||
//=============================================================================
|
||||
static LRESULT CALLBACK staticTextPropertiesCallback( HWND hWndDialog,
|
||||
UINT message,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam )
|
||||
{
|
||||
Int returnCode;
|
||||
|
||||
//
|
||||
// handle any common messages between all property dialogs cause they
|
||||
// are designed to have controls doing the same functionality
|
||||
// and names
|
||||
//
|
||||
if( HandleCommonDialogMessages( hWndDialog, message,
|
||||
wParam, lParam, &returnCode ) == TRUE )
|
||||
return returnCode;
|
||||
|
||||
switch( message )
|
||||
{
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_COMMAND:
|
||||
{
|
||||
// Int notifyCode = HIWORD( wParam ); // notification code
|
||||
Int controlID = LOWORD( wParam ); // control ID
|
||||
// HWND hWndControl = (HWND)lParam; // control window handle
|
||||
|
||||
switch( controlID )
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case BUTTON_CENTERED:
|
||||
{
|
||||
|
||||
currCentered = 1 - currCentered;
|
||||
if( currCentered == TRUE )
|
||||
SetDlgItemText( hWndDialog, BUTTON_CENTERED, "Yes" );
|
||||
else
|
||||
SetDlgItemText( hWndDialog, BUTTON_CENTERED, "No" );
|
||||
break;
|
||||
|
||||
} // end centered
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDOK:
|
||||
{
|
||||
GameWindow *window = TheEditor->getPropertyTarget();
|
||||
|
||||
// sanity
|
||||
if( window )
|
||||
{
|
||||
ImageAndColorInfo *info;
|
||||
|
||||
// save the common properties
|
||||
if( SaveCommonDialogProperties( hWndDialog, window ) == FALSE )
|
||||
break;
|
||||
|
||||
// save the image and color data
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( STATIC_TEXT_ENABLED );
|
||||
GadgetStaticTextSetEnabledImage( window, info->image );
|
||||
GadgetStaticTextSetEnabledColor( window, info->color );
|
||||
GadgetStaticTextSetEnabledBorderColor( window, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( STATIC_TEXT_DISABLED );
|
||||
GadgetStaticTextSetDisabledImage( window, info->image );
|
||||
GadgetStaticTextSetDisabledColor( window, info->color );
|
||||
GadgetStaticTextSetDisabledBorderColor( window, info->borderColor );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( STATIC_TEXT_HILITE );
|
||||
GadgetStaticTextSetHiliteImage( window, info->image );
|
||||
GadgetStaticTextSetHiliteColor( window, info->color );
|
||||
GadgetStaticTextSetHiliteBorderColor( window, info->borderColor );
|
||||
|
||||
// text data
|
||||
TextData *textData = (TextData *)window->winGetUserData();
|
||||
textData->centered = currCentered;
|
||||
|
||||
} // end if
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end OK
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDCANCEL:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end cancel
|
||||
|
||||
} // end switch( LOWORD( wParam ) )
|
||||
|
||||
return 0;
|
||||
|
||||
} // end of WM_COMMAND
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_CLOSE:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
return 0;
|
||||
|
||||
} // end close
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
default:
|
||||
return 0;
|
||||
|
||||
} // end of switch
|
||||
|
||||
} // end staticTextPropertiesCallback
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PUBLIC FUNCTIONS ///////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// InitStaticTextPropertiesDialog =============================================
|
||||
/** Bring up the static text properties dialog */
|
||||
//=============================================================================
|
||||
HWND InitStaticTextPropertiesDialog( GameWindow *window )
|
||||
{
|
||||
HWND dialog;
|
||||
|
||||
// create the dialog box
|
||||
dialog = CreateDialog( TheEditor->getInstance(),
|
||||
(LPCTSTR)STATIC_TEXT_PROPERTIES_DIALOG,
|
||||
TheEditor->getWindowHandle(),
|
||||
(DLGPROC)staticTextPropertiesCallback );
|
||||
if( dialog == NULL )
|
||||
return NULL;
|
||||
|
||||
// do the common initialization
|
||||
CommonDialogInitialize( window, dialog );
|
||||
|
||||
//
|
||||
// store in the image and color table the values for this putton
|
||||
//
|
||||
const Image *image;
|
||||
Color color, borderColor;
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetStaticTextGetEnabledImage( window );
|
||||
color = GadgetStaticTextGetEnabledColor( window );
|
||||
borderColor = GadgetStaticTextGetEnabledBorderColor( window );
|
||||
StoreImageAndColor( STATIC_TEXT_ENABLED, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetStaticTextGetDisabledImage( window );
|
||||
color = GadgetStaticTextGetDisabledColor( window );
|
||||
borderColor = GadgetStaticTextGetDisabledBorderColor( window );
|
||||
StoreImageAndColor( STATIC_TEXT_DISABLED, image, color, borderColor );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetStaticTextGetHiliteImage( window );
|
||||
color = GadgetStaticTextGetHiliteColor( window );
|
||||
borderColor = GadgetStaticTextGetHiliteBorderColor( window );
|
||||
StoreImageAndColor( STATIC_TEXT_HILITE, image, color, borderColor );
|
||||
|
||||
// text data
|
||||
TextData *textData = (TextData *)window->winGetUserData();
|
||||
|
||||
if( textData->centered )
|
||||
SetDlgItemText( dialog, BUTTON_CENTERED, "Yes" );
|
||||
else
|
||||
SetDlgItemText( dialog, BUTTON_CENTERED, "No" );
|
||||
currCentered = textData->centered;
|
||||
|
||||
// select the button enabled state for display
|
||||
SwitchToState( STATIC_TEXT_ENABLED, dialog );
|
||||
|
||||
return dialog;
|
||||
|
||||
} // end InitStaticTextPropertiesDialog
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,622 @@
|
||||
/*
|
||||
** Command & Conquer Generals Zero Hour(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// (c) 2001-2003 Electronic Arts Inc. //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Westwood Studios Pacific.
|
||||
//
|
||||
// Confidential Information
|
||||
// Copyright (C) 2001 - All Rights Reserved
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Project: GUIEdit
|
||||
//
|
||||
// File name: C:\projects\RTS\code\Tools\GUIEdit\Source\Dialog Procedures\TabControlProperties.cpp
|
||||
//
|
||||
// Created: Graham Smallwood, November 2001
|
||||
//
|
||||
// Desc: Tab Control properties
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SYSTEM INCLUDES ////////////////////////////////////////////////////////////
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
// USER INCLUDES //////////////////////////////////////////////////////////////
|
||||
#include "Common/NameKeyGenerator.h"
|
||||
#include "GameClient/GameWindowManager.h"
|
||||
#include "GUIEdit.h"
|
||||
#include "HierarchyView.h"
|
||||
#include "Properties.h"
|
||||
#include "Resource.h"
|
||||
#include "GameClient/GadgetTabControl.h"
|
||||
#include "GameClient/Gadget.h"
|
||||
|
||||
// DEFINES ////////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE TYPES //////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE DATA ///////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// PUBLIC DATA ////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE PROTOTYPES /////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE FUNCTIONS //////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
///< Pane names are derived off the Tab Control's name.
|
||||
static void GadgetTabControlUpdatePaneNames( GameWindow *tabControl )
|
||||
{
|
||||
TabControlData *tabData = (TabControlData *)tabControl->winGetUserData();
|
||||
WinInstanceData *controlInstData = tabControl->winGetInstanceData();
|
||||
|
||||
for( Int paneIndex = 0; paneIndex < NUM_TAB_PANES; paneIndex++ )
|
||||
{
|
||||
WinInstanceData *paneInstData = tabData->subPanes[paneIndex]->winGetInstanceData();
|
||||
|
||||
char buffer[128];//legal limit is 64, which will be checked at save.
|
||||
sprintf( buffer, "%s Pane %d", controlInstData->m_decoratedNameString.str() ,paneIndex );
|
||||
paneInstData->m_decoratedNameString = buffer;
|
||||
if( TheHierarchyView )
|
||||
TheHierarchyView->updateWindowName( tabData->subPanes[paneIndex] );
|
||||
}
|
||||
}
|
||||
|
||||
// radioButtonPropertiesCallback ==============================================
|
||||
/** Dialog callback for properties */
|
||||
//=============================================================================
|
||||
static LRESULT CALLBACK tabControlPropertiesCallback( HWND hWndDialog,
|
||||
UINT message,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam )
|
||||
{
|
||||
Int returnCode;
|
||||
|
||||
//
|
||||
// handle any common messages between all property dialogs cause they
|
||||
// are designed to have controls doing the same functionality
|
||||
// and names
|
||||
//
|
||||
if( HandleCommonDialogMessages( hWndDialog, message,
|
||||
wParam, lParam, &returnCode ) == TRUE )
|
||||
return returnCode;
|
||||
|
||||
switch( message )
|
||||
{
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_COMMAND:
|
||||
{
|
||||
// Int notifyCode = HIWORD( wParam ); // notification code
|
||||
Int controlID = LOWORD( wParam ); // control ID
|
||||
// HWND hWndControl = (HWND)lParam; // control window handle
|
||||
|
||||
switch( controlID )
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDOK:
|
||||
{
|
||||
GameWindow *tabControl = TheEditor->getPropertyTarget();
|
||||
|
||||
// sanity
|
||||
if( tabControl )
|
||||
{
|
||||
// save the common properties
|
||||
if( SaveCommonDialogProperties( hWndDialog, tabControl ) == FALSE )
|
||||
break;
|
||||
|
||||
ImageAndColorInfo *info;
|
||||
|
||||
info = GetStateInfo( TC_TAB_0_ENABLED );
|
||||
GadgetTabControlSetEnabledImageTabZero( tabControl, info->image );
|
||||
GadgetTabControlSetEnabledColorTabZero( tabControl, info->color );
|
||||
GadgetTabControlSetEnabledBorderColorTabZero( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_1_ENABLED );
|
||||
GadgetTabControlSetEnabledImageTabOne( tabControl, info->image );
|
||||
GadgetTabControlSetEnabledColorTabOne( tabControl, info->color );
|
||||
GadgetTabControlSetEnabledBorderColorTabOne( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_2_ENABLED );
|
||||
GadgetTabControlSetEnabledImageTabTwo( tabControl, info->image );
|
||||
GadgetTabControlSetEnabledColorTabTwo( tabControl, info->color );
|
||||
GadgetTabControlSetEnabledBorderColorTabTwo( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_3_ENABLED );
|
||||
GadgetTabControlSetEnabledImageTabThree( tabControl, info->image );
|
||||
GadgetTabControlSetEnabledColorTabThree( tabControl, info->color );
|
||||
GadgetTabControlSetEnabledBorderColorTabThree( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_4_ENABLED );
|
||||
GadgetTabControlSetEnabledImageTabFour( tabControl, info->image );
|
||||
GadgetTabControlSetEnabledColorTabFour( tabControl, info->color );
|
||||
GadgetTabControlSetEnabledBorderColorTabFour( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_5_ENABLED );
|
||||
GadgetTabControlSetEnabledImageTabFive( tabControl, info->image );
|
||||
GadgetTabControlSetEnabledColorTabFive( tabControl, info->color );
|
||||
GadgetTabControlSetEnabledBorderColorTabFive( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_6_ENABLED );
|
||||
GadgetTabControlSetEnabledImageTabSix( tabControl, info->image );
|
||||
GadgetTabControlSetEnabledColorTabSix( tabControl, info->color );
|
||||
GadgetTabControlSetEnabledBorderColorTabSix( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_7_ENABLED );
|
||||
GadgetTabControlSetEnabledImageTabSeven( tabControl, info->image );
|
||||
GadgetTabControlSetEnabledColorTabSeven( tabControl, info->color );
|
||||
GadgetTabControlSetEnabledBorderColorTabSeven( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TAB_CONTROL_ENABLED );
|
||||
GadgetTabControlSetEnabledImageBackground( tabControl, info->image );
|
||||
GadgetTabControlSetEnabledColorBackground( tabControl, info->color );
|
||||
GadgetTabControlSetEnabledBorderColorBackground( tabControl, info->borderColor );
|
||||
|
||||
|
||||
|
||||
info = GetStateInfo( TC_TAB_0_DISABLED );
|
||||
GadgetTabControlSetDisabledImageTabZero( tabControl, info->image );
|
||||
GadgetTabControlSetDisabledColorTabZero( tabControl, info->color );
|
||||
GadgetTabControlSetDisabledBorderColorTabZero( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_1_DISABLED );
|
||||
GadgetTabControlSetDisabledImageTabOne( tabControl, info->image );
|
||||
GadgetTabControlSetDisabledColorTabOne( tabControl, info->color );
|
||||
GadgetTabControlSetDisabledBorderColorTabOne( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_2_DISABLED );
|
||||
GadgetTabControlSetDisabledImageTabTwo( tabControl, info->image );
|
||||
GadgetTabControlSetDisabledColorTabTwo( tabControl, info->color );
|
||||
GadgetTabControlSetDisabledBorderColorTabTwo( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_3_DISABLED );
|
||||
GadgetTabControlSetDisabledImageTabThree( tabControl, info->image );
|
||||
GadgetTabControlSetDisabledColorTabThree( tabControl, info->color );
|
||||
GadgetTabControlSetDisabledBorderColorTabThree( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_4_DISABLED );
|
||||
GadgetTabControlSetDisabledImageTabFour( tabControl, info->image );
|
||||
GadgetTabControlSetDisabledColorTabFour( tabControl, info->color );
|
||||
GadgetTabControlSetDisabledBorderColorTabFour( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_5_DISABLED );
|
||||
GadgetTabControlSetDisabledImageTabFive( tabControl, info->image );
|
||||
GadgetTabControlSetDisabledColorTabFive( tabControl, info->color );
|
||||
GadgetTabControlSetDisabledBorderColorTabFive( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_6_DISABLED );
|
||||
GadgetTabControlSetDisabledImageTabSix( tabControl, info->image );
|
||||
GadgetTabControlSetDisabledColorTabSix( tabControl, info->color );
|
||||
GadgetTabControlSetDisabledBorderColorTabSix( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_7_DISABLED );
|
||||
GadgetTabControlSetDisabledImageTabSeven( tabControl, info->image );
|
||||
GadgetTabControlSetDisabledColorTabSeven( tabControl, info->color );
|
||||
GadgetTabControlSetDisabledBorderColorTabSeven( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TAB_CONTROL_DISABLED );
|
||||
GadgetTabControlSetDisabledImageBackground( tabControl, info->image );
|
||||
GadgetTabControlSetDisabledColorBackground( tabControl, info->color );
|
||||
GadgetTabControlSetDisabledBorderColorBackground( tabControl, info->borderColor );
|
||||
|
||||
|
||||
|
||||
|
||||
info = GetStateInfo( TC_TAB_0_HILITE );
|
||||
GadgetTabControlSetHiliteImageTabZero( tabControl, info->image );
|
||||
GadgetTabControlSetHiliteColorTabZero( tabControl, info->color );
|
||||
GadgetTabControlSetHiliteBorderColorTabZero( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_1_HILITE );
|
||||
GadgetTabControlSetHiliteImageTabOne( tabControl, info->image );
|
||||
GadgetTabControlSetHiliteColorTabOne( tabControl, info->color );
|
||||
GadgetTabControlSetHiliteBorderColorTabOne( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_2_HILITE );
|
||||
GadgetTabControlSetHiliteImageTabTwo( tabControl, info->image );
|
||||
GadgetTabControlSetHiliteColorTabTwo( tabControl, info->color );
|
||||
GadgetTabControlSetHiliteBorderColorTabTwo( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_3_HILITE );
|
||||
GadgetTabControlSetHiliteImageTabThree( tabControl, info->image );
|
||||
GadgetTabControlSetHiliteColorTabThree( tabControl, info->color );
|
||||
GadgetTabControlSetHiliteBorderColorTabThree( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_4_HILITE );
|
||||
GadgetTabControlSetHiliteImageTabFour( tabControl, info->image );
|
||||
GadgetTabControlSetHiliteColorTabFour( tabControl, info->color );
|
||||
GadgetTabControlSetHiliteBorderColorTabFour( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_5_HILITE );
|
||||
GadgetTabControlSetHiliteImageTabFive( tabControl, info->image );
|
||||
GadgetTabControlSetHiliteColorTabFive( tabControl, info->color );
|
||||
GadgetTabControlSetHiliteBorderColorTabFive( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_6_HILITE );
|
||||
GadgetTabControlSetHiliteImageTabSix( tabControl, info->image );
|
||||
GadgetTabControlSetHiliteColorTabSix( tabControl, info->color );
|
||||
GadgetTabControlSetHiliteBorderColorTabSix( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TC_TAB_7_HILITE );
|
||||
GadgetTabControlSetHiliteImageTabSeven( tabControl, info->image );
|
||||
GadgetTabControlSetHiliteColorTabSeven( tabControl, info->color );
|
||||
GadgetTabControlSetHiliteBorderColorTabSeven( tabControl, info->borderColor );
|
||||
|
||||
info = GetStateInfo( TAB_CONTROL_HILITE );
|
||||
GadgetTabControlSetHiliteImageBackground( tabControl, info->image );
|
||||
GadgetTabControlSetHiliteColorBackground( tabControl, info->color );
|
||||
GadgetTabControlSetHiliteBorderColorBackground( tabControl, info->borderColor );
|
||||
|
||||
|
||||
TabControlData *tabData = (TabControlData *)tabControl->winGetUserData();
|
||||
|
||||
tabData->tabWidth = GetDlgItemInt( hWndDialog, TAB_WIDTH, NULL, FALSE );
|
||||
tabData->tabHeight = GetDlgItemInt(hWndDialog, TAB_HEIGHT, NULL, FALSE );
|
||||
tabData->tabCount = GetDlgItemInt(hWndDialog, TAB_COUNT, NULL, FALSE );
|
||||
tabData->paneBorder = GetDlgItemInt(hWndDialog, BORDER_WIDTH, NULL, FALSE );
|
||||
tabData->activeTab = GetDlgItemInt(hWndDialog, ACTIVE_TAB, NULL, FALSE );
|
||||
|
||||
if( IsDlgButtonChecked( hWndDialog, DISABLE_TAB_0 ) )
|
||||
tabData->subPaneDisabled[0] = TRUE;
|
||||
else
|
||||
tabData->subPaneDisabled[0] = FALSE;
|
||||
if( IsDlgButtonChecked( hWndDialog, DISABLE_TAB_1 ) )
|
||||
tabData->subPaneDisabled[1] = TRUE;
|
||||
else
|
||||
tabData->subPaneDisabled[1] = FALSE;
|
||||
if( IsDlgButtonChecked( hWndDialog, DISABLE_TAB_2 ) )
|
||||
tabData->subPaneDisabled[2] = TRUE;
|
||||
else
|
||||
tabData->subPaneDisabled[2] = FALSE;
|
||||
if( IsDlgButtonChecked( hWndDialog, DISABLE_TAB_3 ) )
|
||||
tabData->subPaneDisabled[3] = TRUE;
|
||||
else
|
||||
tabData->subPaneDisabled[3] = FALSE;
|
||||
if( IsDlgButtonChecked( hWndDialog, DISABLE_TAB_4 ) )
|
||||
tabData->subPaneDisabled[4] = TRUE;
|
||||
else
|
||||
tabData->subPaneDisabled[4] = FALSE;
|
||||
if( IsDlgButtonChecked( hWndDialog, DISABLE_TAB_5 ) )
|
||||
tabData->subPaneDisabled[5] = TRUE;
|
||||
else
|
||||
tabData->subPaneDisabled[5] = FALSE;
|
||||
if( IsDlgButtonChecked( hWndDialog, DISABLE_TAB_6 ) )
|
||||
tabData->subPaneDisabled[6] = TRUE;
|
||||
else
|
||||
tabData->subPaneDisabled[6] = FALSE;
|
||||
if( IsDlgButtonChecked( hWndDialog, DISABLE_TAB_7 ) )
|
||||
tabData->subPaneDisabled[7] = TRUE;
|
||||
else
|
||||
tabData->subPaneDisabled[7] = FALSE;
|
||||
|
||||
if( IsDlgButtonChecked( hWndDialog, LEFT_JUSTIFY) )
|
||||
tabData->tabOrientation = TP_TOPLEFT;
|
||||
else if( IsDlgButtonChecked( hWndDialog, CENTER_JUSTIFY ) )
|
||||
tabData->tabOrientation = TP_CENTER;
|
||||
else if( IsDlgButtonChecked( hWndDialog, RIGHT_JUSTIFY ) )
|
||||
tabData->tabOrientation = TP_BOTTOMRIGHT;
|
||||
|
||||
if( IsDlgButtonChecked( hWndDialog, TOP_SIDE ) )
|
||||
tabData->tabEdge = TP_TOP_SIDE;
|
||||
else if( IsDlgButtonChecked( hWndDialog, RIGHT_SIDE ) )
|
||||
tabData->tabEdge = TP_RIGHT_SIDE;
|
||||
else if( IsDlgButtonChecked( hWndDialog, LEFT_SIDE ) )
|
||||
tabData->tabEdge = TP_LEFT_SIDE;
|
||||
else if( IsDlgButtonChecked( hWndDialog, BOTTOM_SIDE ) )
|
||||
tabData->tabEdge = TP_BOTTOM_SIDE;
|
||||
|
||||
//safeties
|
||||
tabData->tabCount = max( tabData->tabCount, 1 );
|
||||
tabData->tabCount = min( tabData->tabCount, NUM_TAB_PANES );
|
||||
|
||||
GadgetTabControlComputeTabRegion( tabControl );
|
||||
GadgetTabControlResizeSubPanes( tabControl );
|
||||
GadgetTabControlShowSubPane( tabControl, tabData->activeTab );
|
||||
GadgetTabControlUpdatePaneNames( tabControl );
|
||||
|
||||
} // end if
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end OK
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDCANCEL:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end cancel
|
||||
|
||||
} // end switch( LOWORD( wParam ) )
|
||||
|
||||
return 0;
|
||||
|
||||
} // end of WM_COMMAND
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_CLOSE:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
return 0;
|
||||
|
||||
} // end close
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
default:
|
||||
return 0;
|
||||
|
||||
} // end of switch
|
||||
|
||||
} // end tabControlPropertiesCallback
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PUBLIC FUNCTIONS ///////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// InitTabControlPropertiesDialog ============================================
|
||||
/** Bring up the tab control properties dialog */
|
||||
//=============================================================================
|
||||
HWND InitTabControlPropertiesDialog( GameWindow *tabControl )
|
||||
{
|
||||
HWND dialog;
|
||||
|
||||
// create the dialog box
|
||||
dialog = CreateDialog( TheEditor->getInstance(),
|
||||
(LPCTSTR)TAB_CONTROL_PROPERTIES_DIALOG,
|
||||
TheEditor->getWindowHandle(),
|
||||
(DLGPROC)tabControlPropertiesCallback );
|
||||
if( dialog == NULL )
|
||||
return NULL;
|
||||
|
||||
// do the common initialization
|
||||
CommonDialogInitialize( tabControl, dialog );
|
||||
|
||||
//
|
||||
// store in the image and color table the values for this button
|
||||
//
|
||||
|
||||
const Image *image;
|
||||
Color color, borderColor;
|
||||
|
||||
image = GadgetTabControlGetEnabledImageTabZero( tabControl );
|
||||
color = GadgetTabControlGetEnabledColorTabZero( tabControl );
|
||||
borderColor = GadgetTabControlGetEnabledBorderColorTabZero( tabControl );
|
||||
StoreImageAndColor( TC_TAB_0_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetEnabledImageTabOne( tabControl );
|
||||
color = GadgetTabControlGetEnabledColorTabOne( tabControl );
|
||||
borderColor = GadgetTabControlGetEnabledBorderColorTabOne( tabControl );
|
||||
StoreImageAndColor( TC_TAB_1_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetEnabledImageTabTwo( tabControl );
|
||||
color = GadgetTabControlGetEnabledColorTabTwo( tabControl );
|
||||
borderColor = GadgetTabControlGetEnabledBorderColorTabTwo( tabControl );
|
||||
StoreImageAndColor( TC_TAB_2_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetEnabledImageTabThree( tabControl );
|
||||
color = GadgetTabControlGetEnabledColorTabThree( tabControl );
|
||||
borderColor = GadgetTabControlGetEnabledBorderColorTabThree( tabControl );
|
||||
StoreImageAndColor( TC_TAB_3_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetEnabledImageTabFour( tabControl );
|
||||
color = GadgetTabControlGetEnabledColorTabFour( tabControl );
|
||||
borderColor = GadgetTabControlGetEnabledBorderColorTabFour( tabControl );
|
||||
StoreImageAndColor( TC_TAB_4_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetEnabledImageTabFive( tabControl );
|
||||
color = GadgetTabControlGetEnabledColorTabFive( tabControl );
|
||||
borderColor = GadgetTabControlGetEnabledBorderColorTabFive( tabControl );
|
||||
StoreImageAndColor( TC_TAB_5_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetEnabledImageTabSix( tabControl );
|
||||
color = GadgetTabControlGetEnabledColorTabSix( tabControl );
|
||||
borderColor = GadgetTabControlGetEnabledBorderColorTabSix( tabControl );
|
||||
StoreImageAndColor( TC_TAB_6_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetEnabledImageTabSeven( tabControl );
|
||||
color = GadgetTabControlGetEnabledColorTabSeven( tabControl );
|
||||
borderColor = GadgetTabControlGetEnabledBorderColorTabSeven( tabControl );
|
||||
StoreImageAndColor( TC_TAB_7_ENABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetEnabledImageBackground( tabControl );
|
||||
color = GadgetTabControlGetEnabledColorBackground( tabControl );
|
||||
borderColor = GadgetTabControlGetEnabledBorderColorBackground( tabControl );
|
||||
StoreImageAndColor( TAB_CONTROL_ENABLED, image, color, borderColor );
|
||||
|
||||
|
||||
|
||||
image = GadgetTabControlGetDisabledImageTabZero( tabControl );
|
||||
color = GadgetTabControlGetDisabledColorTabZero( tabControl );
|
||||
borderColor = GadgetTabControlGetDisabledBorderColorTabZero( tabControl );
|
||||
StoreImageAndColor( TC_TAB_0_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetDisabledImageTabOne( tabControl );
|
||||
color = GadgetTabControlGetDisabledColorTabOne( tabControl );
|
||||
borderColor = GadgetTabControlGetDisabledBorderColorTabOne( tabControl );
|
||||
StoreImageAndColor( TC_TAB_1_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetDisabledImageTabTwo( tabControl );
|
||||
color = GadgetTabControlGetDisabledColorTabTwo( tabControl );
|
||||
borderColor = GadgetTabControlGetDisabledBorderColorTabTwo( tabControl );
|
||||
StoreImageAndColor( TC_TAB_2_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetDisabledImageTabThree( tabControl );
|
||||
color = GadgetTabControlGetDisabledColorTabThree( tabControl );
|
||||
borderColor = GadgetTabControlGetDisabledBorderColorTabThree( tabControl );
|
||||
StoreImageAndColor( TC_TAB_3_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetDisabledImageTabFour( tabControl );
|
||||
color = GadgetTabControlGetDisabledColorTabFour( tabControl );
|
||||
borderColor = GadgetTabControlGetDisabledBorderColorTabFour( tabControl );
|
||||
StoreImageAndColor( TC_TAB_4_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetDisabledImageTabFive( tabControl );
|
||||
color = GadgetTabControlGetDisabledColorTabFive( tabControl );
|
||||
borderColor = GadgetTabControlGetDisabledBorderColorTabFive( tabControl );
|
||||
StoreImageAndColor( TC_TAB_5_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetDisabledImageTabSix( tabControl );
|
||||
color = GadgetTabControlGetDisabledColorTabSix( tabControl );
|
||||
borderColor = GadgetTabControlGetDisabledBorderColorTabSix( tabControl );
|
||||
StoreImageAndColor( TC_TAB_6_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetDisabledImageTabSeven( tabControl );
|
||||
color = GadgetTabControlGetDisabledColorTabSeven( tabControl );
|
||||
borderColor = GadgetTabControlGetDisabledBorderColorTabSeven( tabControl );
|
||||
StoreImageAndColor( TC_TAB_7_DISABLED, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetDisabledImageBackground( tabControl );
|
||||
color = GadgetTabControlGetDisabledColorBackground( tabControl );
|
||||
borderColor = GadgetTabControlGetDisabledBorderColorBackground( tabControl );
|
||||
StoreImageAndColor( TAB_CONTROL_DISABLED, image, color, borderColor );
|
||||
|
||||
|
||||
|
||||
image = GadgetTabControlGetHiliteImageTabZero( tabControl );
|
||||
color = GadgetTabControlGetHiliteColorTabZero( tabControl );
|
||||
borderColor = GadgetTabControlGetHiliteBorderColorTabZero( tabControl );
|
||||
StoreImageAndColor( TC_TAB_0_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetHiliteImageTabOne( tabControl );
|
||||
color = GadgetTabControlGetHiliteColorTabOne( tabControl );
|
||||
borderColor = GadgetTabControlGetHiliteBorderColorTabOne( tabControl );
|
||||
StoreImageAndColor( TC_TAB_1_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetHiliteImageTabTwo( tabControl );
|
||||
color = GadgetTabControlGetHiliteColorTabTwo( tabControl );
|
||||
borderColor = GadgetTabControlGetHiliteBorderColorTabTwo( tabControl );
|
||||
StoreImageAndColor( TC_TAB_2_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetHiliteImageTabThree( tabControl );
|
||||
color = GadgetTabControlGetHiliteColorTabThree( tabControl );
|
||||
borderColor = GadgetTabControlGetHiliteBorderColorTabThree( tabControl );
|
||||
StoreImageAndColor( TC_TAB_3_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetHiliteImageTabFour( tabControl );
|
||||
color = GadgetTabControlGetHiliteColorTabFour( tabControl );
|
||||
borderColor = GadgetTabControlGetHiliteBorderColorTabFour( tabControl );
|
||||
StoreImageAndColor( TC_TAB_4_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetHiliteImageTabFive( tabControl );
|
||||
color = GadgetTabControlGetHiliteColorTabFive( tabControl );
|
||||
borderColor = GadgetTabControlGetHiliteBorderColorTabFive( tabControl );
|
||||
StoreImageAndColor( TC_TAB_5_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetHiliteImageTabSix( tabControl );
|
||||
color = GadgetTabControlGetHiliteColorTabSix( tabControl );
|
||||
borderColor = GadgetTabControlGetHiliteBorderColorTabSix( tabControl );
|
||||
StoreImageAndColor( TC_TAB_6_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetHiliteImageTabSeven( tabControl );
|
||||
color = GadgetTabControlGetHiliteColorTabSeven( tabControl );
|
||||
borderColor = GadgetTabControlGetHiliteBorderColorTabSeven( tabControl );
|
||||
StoreImageAndColor( TC_TAB_7_HILITE, image, color, borderColor );
|
||||
|
||||
image = GadgetTabControlGetHiliteImageBackground( tabControl );
|
||||
color = GadgetTabControlGetHiliteColorBackground( tabControl );
|
||||
borderColor = GadgetTabControlGetHiliteBorderColorBackground( tabControl );
|
||||
StoreImageAndColor( TAB_CONTROL_HILITE, image, color, borderColor );
|
||||
|
||||
|
||||
// tab data
|
||||
TabControlData *tabData = (TabControlData *)tabControl->winGetUserData();
|
||||
|
||||
//
|
||||
// initialize the dialog with values from the window
|
||||
//
|
||||
|
||||
SetDlgItemInt(dialog, TAB_WIDTH, tabData->tabWidth, FALSE);
|
||||
SetDlgItemInt(dialog, TAB_HEIGHT, tabData->tabHeight, FALSE);
|
||||
SetDlgItemInt(dialog, TAB_COUNT, tabData->tabCount, FALSE);
|
||||
SetDlgItemInt(dialog, BORDER_WIDTH, tabData->paneBorder, FALSE);
|
||||
SetDlgItemInt(dialog, ACTIVE_TAB, tabData->activeTab, FALSE);
|
||||
|
||||
if( tabData->subPaneDisabled[0] )
|
||||
CheckDlgButton( dialog, DISABLE_TAB_0, BST_CHECKED );
|
||||
else
|
||||
CheckDlgButton( dialog, DISABLE_TAB_0, BST_UNCHECKED );
|
||||
if( tabData->subPaneDisabled[1] )
|
||||
CheckDlgButton( dialog, DISABLE_TAB_1, BST_CHECKED );
|
||||
else
|
||||
CheckDlgButton( dialog, DISABLE_TAB_1, BST_UNCHECKED );
|
||||
if( tabData->subPaneDisabled[2] )
|
||||
CheckDlgButton( dialog, DISABLE_TAB_2, BST_CHECKED );
|
||||
else
|
||||
CheckDlgButton( dialog, DISABLE_TAB_2, BST_UNCHECKED );
|
||||
if( tabData->subPaneDisabled[3] )
|
||||
CheckDlgButton( dialog, DISABLE_TAB_3, BST_CHECKED );
|
||||
else
|
||||
CheckDlgButton( dialog, DISABLE_TAB_3, BST_UNCHECKED );
|
||||
if( tabData->subPaneDisabled[4] )
|
||||
CheckDlgButton( dialog, DISABLE_TAB_4, BST_CHECKED );
|
||||
else
|
||||
CheckDlgButton( dialog, DISABLE_TAB_4, BST_UNCHECKED );
|
||||
if( tabData->subPaneDisabled[5] )
|
||||
CheckDlgButton( dialog, DISABLE_TAB_5, BST_CHECKED );
|
||||
else
|
||||
CheckDlgButton( dialog, DISABLE_TAB_5, BST_UNCHECKED );
|
||||
if( tabData->subPaneDisabled[6] )
|
||||
CheckDlgButton( dialog, DISABLE_TAB_6, BST_CHECKED );
|
||||
else
|
||||
CheckDlgButton( dialog, DISABLE_TAB_6, BST_UNCHECKED );
|
||||
if( tabData->subPaneDisabled[7] )
|
||||
CheckDlgButton( dialog, DISABLE_TAB_7, BST_CHECKED );
|
||||
else
|
||||
CheckDlgButton( dialog, DISABLE_TAB_7, BST_UNCHECKED );
|
||||
|
||||
if( tabData->tabOrientation == TP_TOPLEFT )
|
||||
CheckDlgButton( dialog, LEFT_JUSTIFY, BST_CHECKED );
|
||||
else if( tabData->tabOrientation == TP_CENTER )
|
||||
CheckDlgButton( dialog, CENTER_JUSTIFY, BST_CHECKED );
|
||||
else if( tabData->tabOrientation == TP_BOTTOMRIGHT )
|
||||
CheckDlgButton( dialog, RIGHT_JUSTIFY, BST_CHECKED );
|
||||
|
||||
if( tabData->tabEdge == TP_TOP_SIDE )
|
||||
CheckDlgButton( dialog, TOP_SIDE, BST_CHECKED );
|
||||
else if( tabData->tabEdge == TP_RIGHT_SIDE )
|
||||
CheckDlgButton( dialog, RIGHT_SIDE, BST_CHECKED );
|
||||
else if( tabData->tabEdge == TP_LEFT_SIDE )
|
||||
CheckDlgButton( dialog, LEFT_SIDE, BST_CHECKED );
|
||||
else if( tabData->tabEdge == TP_BOTTOM_SIDE )
|
||||
CheckDlgButton( dialog, BOTTOM_SIDE, BST_CHECKED );
|
||||
|
||||
return dialog;
|
||||
|
||||
} // end InitTabControlPropertiesDialog
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,310 @@
|
||||
/*
|
||||
** Command & Conquer Generals Zero Hour(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// (c) 2001-2003 Electronic Arts Inc. //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// FILE: TextEntryProperties.cpp //////////////////////////////////////////////
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Westwood Studios Pacific.
|
||||
//
|
||||
// Confidential Information
|
||||
// Copyright (C) 2001 - All Rights Reserved
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Project: GUIEdit
|
||||
//
|
||||
// File name: TextEntryProperties.cpp
|
||||
//
|
||||
// Created: Colin Day, August 2001
|
||||
//
|
||||
// Desc: Text entry properties
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SYSTEM INCLUDES ////////////////////////////////////////////////////////////
|
||||
|
||||
// USER INCLUDES //////////////////////////////////////////////////////////////
|
||||
#include "GUIEdit.h"
|
||||
#include "Properties.h"
|
||||
#include "Resource.h"
|
||||
#include "GameClient/GadgetTextEntry.h"
|
||||
|
||||
// DEFINES ////////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE TYPES //////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE DATA ///////////////////////////////////////////////////////////////
|
||||
|
||||
// PUBLIC DATA ////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE PROTOTYPES /////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE FUNCTIONS //////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// textEntryPropertiesCallback ================================================
|
||||
/** Dialog callback for properties */
|
||||
//=============================================================================
|
||||
static LRESULT CALLBACK textEntryPropertiesCallback( HWND hWndDialog,
|
||||
UINT message,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam )
|
||||
{
|
||||
Int returnCode;
|
||||
|
||||
//
|
||||
// handle any common messages between all property dialogs cause they
|
||||
// are designed to have controls doing the same functionality
|
||||
// and names
|
||||
//
|
||||
if( HandleCommonDialogMessages( hWndDialog, message,
|
||||
wParam, lParam, &returnCode ) == TRUE )
|
||||
return returnCode;
|
||||
|
||||
switch( message )
|
||||
{
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_COMMAND:
|
||||
{
|
||||
// Int notifyCode = HIWORD( wParam ); // notification code
|
||||
Int controlID = LOWORD( wParam ); // control ID
|
||||
// HWND hWndControl = (HWND)lParam; // control window handle
|
||||
|
||||
switch( controlID )
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDOK:
|
||||
{
|
||||
GameWindow *window = TheEditor->getPropertyTarget();
|
||||
|
||||
// sanity
|
||||
if( window )
|
||||
{
|
||||
ImageAndColorInfo *info;
|
||||
|
||||
// save the common properties
|
||||
if( SaveCommonDialogProperties( hWndDialog, window ) == FALSE )
|
||||
break;
|
||||
|
||||
// save the image and color data
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( TEXT_ENTRY_ENABLED_LEFT );
|
||||
GadgetTextEntrySetEnabledImageLeft( window, info->image );
|
||||
GadgetTextEntrySetEnabledColor( window, info->color );
|
||||
GadgetTextEntrySetEnabledBorderColor( window, info->borderColor );
|
||||
info = GetStateInfo( TEXT_ENTRY_ENABLED_RIGHT );
|
||||
GadgetTextEntrySetEnabledImageRight( window, info->image );
|
||||
info = GetStateInfo( TEXT_ENTRY_ENABLED_CENTER );
|
||||
GadgetTextEntrySetEnabledImageCenter( window, info->image );
|
||||
info = GetStateInfo( TEXT_ENTRY_ENABLED_SMALL_CENTER );
|
||||
GadgetTextEntrySetEnabledImageSmallCenter( window, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( TEXT_ENTRY_DISABLED_LEFT );
|
||||
GadgetTextEntrySetDisabledImageLeft( window, info->image );
|
||||
GadgetTextEntrySetDisabledColor( window, info->color );
|
||||
GadgetTextEntrySetDisabledBorderColor( window, info->borderColor );
|
||||
info = GetStateInfo( TEXT_ENTRY_DISABLED_RIGHT );
|
||||
GadgetTextEntrySetDisabledImageRight( window, info->image );
|
||||
info = GetStateInfo( TEXT_ENTRY_DISABLED_CENTER );
|
||||
GadgetTextEntrySetDisabledImageCenter( window, info->image );
|
||||
info = GetStateInfo( TEXT_ENTRY_DISABLED_SMALL_CENTER );
|
||||
GadgetTextEntrySetDisabledImageSmallCenter( window, info->image );
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
info = GetStateInfo( TEXT_ENTRY_HILITE_LEFT );
|
||||
GadgetTextEntrySetHiliteImageLeft( window, info->image );
|
||||
GadgetTextEntrySetHiliteColor( window, info->color );
|
||||
GadgetTextEntrySetHiliteBorderColor( window, info->borderColor );
|
||||
info = GetStateInfo( TEXT_ENTRY_HILITE_RIGHT );
|
||||
GadgetTextEntrySetHiliteImageRight( window, info->image );
|
||||
info = GetStateInfo( TEXT_ENTRY_HILITE_CENTER );
|
||||
GadgetTextEntrySetHiliteImageCenter( window, info->image );
|
||||
info = GetStateInfo( TEXT_ENTRY_HILITE_SMALL_CENTER );
|
||||
GadgetTextEntrySetHiliteImageSmallCenter( window, info->image );
|
||||
|
||||
// text entry props
|
||||
EntryData *entryData = (EntryData *)window->winGetUserData();
|
||||
|
||||
entryData->maxTextLen = GetDlgItemInt( hWndDialog, EDIT_MAX_CHARS, NULL, TRUE );
|
||||
entryData->secretText = IsDlgButtonChecked( hWndDialog, CHECK_SECRET_TEXT );
|
||||
entryData->aSCIIOnly = IsDlgButtonChecked( hWndDialog, CHECK_ASCII_TEXT );
|
||||
if( IsDlgButtonChecked( hWndDialog, RADIO_LETTERS_AND_NUMBERS ) )
|
||||
{
|
||||
|
||||
entryData->alphaNumericalOnly = TRUE;
|
||||
entryData->numericalOnly = FALSE;
|
||||
|
||||
} // end if
|
||||
else if( IsDlgButtonChecked( hWndDialog, RADIO_NUMBERS ) )
|
||||
{
|
||||
|
||||
entryData->alphaNumericalOnly = FALSE;
|
||||
entryData->numericalOnly = TRUE;
|
||||
|
||||
} // end else if
|
||||
else
|
||||
{
|
||||
|
||||
entryData->alphaNumericalOnly = FALSE;
|
||||
entryData->numericalOnly = FALSE;
|
||||
|
||||
} // end else
|
||||
|
||||
} // end if
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end OK
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case IDCANCEL:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
break;
|
||||
|
||||
} // end cancel
|
||||
|
||||
} // end switch( LOWORD( wParam ) )
|
||||
|
||||
return 0;
|
||||
|
||||
} // end of WM_COMMAND
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_CLOSE:
|
||||
{
|
||||
|
||||
DestroyWindow( hWndDialog );
|
||||
return 0;
|
||||
|
||||
} // end close
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
default:
|
||||
return 0;
|
||||
|
||||
} // end of switch
|
||||
|
||||
} // end textEntryPropertiesCallback
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PUBLIC FUNCTIONS ///////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// InitTextEntryPropertiesDialog ==============================================
|
||||
/** Bring up the text entry properties dialog */
|
||||
//=============================================================================
|
||||
HWND InitTextEntryPropertiesDialog( GameWindow *window )
|
||||
{
|
||||
HWND dialog;
|
||||
|
||||
// create the dialog box
|
||||
dialog = CreateDialog( TheEditor->getInstance(),
|
||||
(LPCTSTR)TEXT_ENTRY_PROPERTIES_DIALOG,
|
||||
TheEditor->getWindowHandle(),
|
||||
(DLGPROC)textEntryPropertiesCallback );
|
||||
if( dialog == NULL )
|
||||
return NULL;
|
||||
|
||||
// do the common initialization
|
||||
CommonDialogInitialize( window, dialog );
|
||||
|
||||
//
|
||||
// store in the image and color table the values for this putton
|
||||
//
|
||||
const Image *image;
|
||||
Color color, borderColor;
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetTextEntryGetEnabledImageLeft( window );
|
||||
color = GadgetTextEntryGetEnabledColor( window );
|
||||
borderColor = GadgetTextEntryGetEnabledBorderColor( window );
|
||||
StoreImageAndColor( TEXT_ENTRY_ENABLED_LEFT, image, color, borderColor );
|
||||
image = GadgetTextEntryGetEnabledImageRight( window );
|
||||
StoreImageAndColor( TEXT_ENTRY_ENABLED_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetTextEntryGetEnabledImageCenter( window );
|
||||
StoreImageAndColor( TEXT_ENTRY_ENABLED_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetTextEntryGetEnabledImageSmallCenter( window );
|
||||
StoreImageAndColor( TEXT_ENTRY_ENABLED_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetTextEntryGetDisabledImageLeft( window );
|
||||
color = GadgetTextEntryGetDisabledColor( window );
|
||||
borderColor = GadgetTextEntryGetDisabledBorderColor( window );
|
||||
StoreImageAndColor( TEXT_ENTRY_DISABLED_LEFT, image, color, borderColor );
|
||||
image = GadgetTextEntryGetDisabledImageRight( window );
|
||||
StoreImageAndColor( TEXT_ENTRY_DISABLED_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetTextEntryGetDisabledImageCenter( window );
|
||||
StoreImageAndColor( TEXT_ENTRY_DISABLED_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetTextEntryGetDisabledImageSmallCenter( window );
|
||||
StoreImageAndColor( TEXT_ENTRY_DISABLED_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
image = GadgetTextEntryGetHiliteImageLeft( window );
|
||||
color = GadgetTextEntryGetHiliteColor( window );
|
||||
borderColor = GadgetTextEntryGetHiliteBorderColor( window );
|
||||
StoreImageAndColor( TEXT_ENTRY_HILITE_LEFT, image, color, borderColor );
|
||||
image = GadgetTextEntryGetHiliteImageRight( window );
|
||||
StoreImageAndColor( TEXT_ENTRY_HILITE_RIGHT, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetTextEntryGetHiliteImageCenter( window );
|
||||
StoreImageAndColor( TEXT_ENTRY_HILITE_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
image = GadgetTextEntryGetHiliteImageSmallCenter( window );
|
||||
StoreImageAndColor( TEXT_ENTRY_HILITE_SMALL_CENTER, image, WIN_COLOR_UNDEFINED, WIN_COLOR_UNDEFINED );
|
||||
|
||||
// fill out text entry properties
|
||||
EntryData *entryData = (EntryData *)window->winGetUserData();
|
||||
|
||||
SetDlgItemInt( dialog, EDIT_MAX_CHARS, entryData->maxTextLen, TRUE );
|
||||
if( entryData->secretText )
|
||||
CheckDlgButton( dialog, CHECK_SECRET_TEXT, BST_CHECKED );
|
||||
if( entryData->aSCIIOnly )
|
||||
CheckDlgButton( dialog, CHECK_ASCII_TEXT, BST_CHECKED );
|
||||
if( entryData->numericalOnly )
|
||||
CheckDlgButton( dialog, RADIO_NUMBERS, BST_CHECKED );
|
||||
else if( entryData->alphaNumericalOnly )
|
||||
CheckDlgButton( dialog, RADIO_LETTERS_AND_NUMBERS, BST_CHECKED );
|
||||
else
|
||||
CheckDlgButton( dialog, RADIO_ANY_TEXT, BST_CHECKED );
|
||||
|
||||
// select the button enabled state for display
|
||||
SwitchToState( TEXT_ENTRY_ENABLED_LEFT, dialog );
|
||||
|
||||
//
|
||||
// initialize the dialog with values from the window
|
||||
//
|
||||
|
||||
return dialog;
|
||||
|
||||
} // end InitTextEntryPropertiesDialog
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,165 @@
|
||||
/*
|
||||
** Command & Conquer Generals Zero Hour(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// (c) 2001-2003 Electronic Arts Inc. //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// FILE: .cpp /////////////////////////////////////////////////////////////////
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Westwood Studios Pacific.
|
||||
//
|
||||
// Confidential Information
|
||||
// Copyright (C) 2001 - All Rights Reserved
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Project: RTS3
|
||||
//
|
||||
// File name: .cpp
|
||||
//
|
||||
// Created:
|
||||
//
|
||||
// Desc:
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SYSTEM INCLUDES ////////////////////////////////////////////////////////////
|
||||
#include <stdlib.h>
|
||||
|
||||
// USER INCLUDES //////////////////////////////////////////////////////////////
|
||||
#include "GUIEditDisplay.h"
|
||||
#include "EditWindow.h"
|
||||
|
||||
// DEFINES ////////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE TYPES //////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE DATA ///////////////////////////////////////////////////////////////
|
||||
|
||||
// PUBLIC DATA ////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE PROTOTYPES /////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE FUNCTIONS //////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PUBLIC FUNCTIONS ///////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// GUIEditDisplay::GUIEditDisplay =============================================
|
||||
/** */
|
||||
//=============================================================================
|
||||
GUIEditDisplay::GUIEditDisplay( void )
|
||||
{
|
||||
|
||||
} // end GUIEditDisplay
|
||||
|
||||
// GUIEditDisplay::~GUIEditDisplay ============================================
|
||||
/** */
|
||||
//=============================================================================
|
||||
GUIEditDisplay::~GUIEditDisplay( void )
|
||||
{
|
||||
|
||||
} // end ~GUIEditDisplay
|
||||
|
||||
// GUIEditDisplay::drawLine ===================================================
|
||||
/** draw a line on the display in pixel coordinates with the specified color */
|
||||
//=============================================================================
|
||||
void GUIEditDisplay::drawLine( Int startX, Int startY,
|
||||
Int endX, Int endY,
|
||||
Real lineWidth, UnsignedInt lineColor )
|
||||
{
|
||||
|
||||
TheEditWindow->drawLine( startX, startY, endX, endY, lineWidth, lineColor );
|
||||
|
||||
} // end drawLIne
|
||||
|
||||
// GUIEditDisplay::drawOpenRect ===============================================
|
||||
/** draw a rect border on the display in pixel coordinates with the
|
||||
* specified color */
|
||||
//=============================================================================
|
||||
void GUIEditDisplay::drawOpenRect( Int startX, Int startY,
|
||||
Int width, Int height,
|
||||
Real lineWidth, UnsignedInt lineColor )
|
||||
{
|
||||
|
||||
TheEditWindow->drawOpenRect( startX, startY, width, height,
|
||||
lineWidth, lineColor );
|
||||
|
||||
} // end drawOpenRect
|
||||
|
||||
// GUIEditDisplay::drawFillRect ===============================================
|
||||
/** draw a filled rect on the display in pixel coords with the
|
||||
* specified color */
|
||||
//=============================================================================
|
||||
void GUIEditDisplay::drawFillRect( Int startX, Int startY,
|
||||
Int width, Int height,
|
||||
UnsignedInt color )
|
||||
{
|
||||
|
||||
TheEditWindow->drawFillRect( startX, startY,
|
||||
width, height,
|
||||
color );
|
||||
|
||||
} // end drawFillRect
|
||||
|
||||
// GUIEditDisplay::drawImage ==================================================
|
||||
/** draw an image fit within the screen coordinates */
|
||||
//=============================================================================
|
||||
void GUIEditDisplay::drawImage( const Image *image,
|
||||
Int startX, Int startY,
|
||||
Int endX, Int endY,
|
||||
Color color, DrawImageMode mode )
|
||||
{
|
||||
|
||||
TheEditWindow->drawImage( image,
|
||||
startX, startY,
|
||||
endX, endY,
|
||||
color );
|
||||
|
||||
|
||||
} // end drawImage
|
||||
|
||||
// GUIEditDisplay::setClipRegion ==============================================
|
||||
/** sets clipping rectangle for 2D drawing operations */
|
||||
//=============================================================================
|
||||
void GUIEditDisplay::setClipRegion( IRegion2D *region )
|
||||
{
|
||||
TheEditWindow->setClipRegion(region);
|
||||
}
|
||||
|
||||
// GUIEditDisplay::isClippingEnabled ==============================================
|
||||
/** returns current state of 2D image clipping */
|
||||
//=============================================================================
|
||||
Bool GUIEditDisplay::isClippingEnabled( void )
|
||||
{
|
||||
return TheEditWindow->isClippingEnabled();
|
||||
}
|
||||
|
||||
// GUIEditDisplay::isClippingEnabled ==============================================
|
||||
/** returns current state of 2D image clipping */
|
||||
//=============================================================================
|
||||
void GUIEditDisplay::enableClipping( Bool onoff )
|
||||
{
|
||||
TheEditWindow->enableClipping(onoff);
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,795 @@
|
||||
/*
|
||||
** Command & Conquer Generals Zero Hour(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// (c) 2001-2003 Electronic Arts Inc. //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// FILE: WinMain.cpp //////////////////////////////////////////////////////////
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Westwood Studios Pacific.
|
||||
//
|
||||
// Confidential Information
|
||||
// Copyright (C) 2001 - All Rights Reserved
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Project: RTS3
|
||||
//
|
||||
// File name: GUIEdit.cpp
|
||||
//
|
||||
// Created: Colin Day, July 2001
|
||||
//
|
||||
// Desc: GUI Edit and window layout entry point
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SYSTEM INCLUDES ////////////////////////////////////////////////////////////
|
||||
#include <stdlib.h>
|
||||
#include <windows.h>
|
||||
#include <commctrl.h>
|
||||
|
||||
// USER INCLUDES //////////////////////////////////////////////////////////////
|
||||
#include "Common/Debug.h"
|
||||
#include "Common/GameMemory.h"
|
||||
#include "Common/GameEngine.h"
|
||||
#include "GameClient/GameWindowManager.h"
|
||||
#include "Win32Device/GameClient/Win32Mouse.h"
|
||||
#include "Resource.h"
|
||||
#include "Lib/BaseType.h"
|
||||
#include "GUIEdit.h"
|
||||
#include "EditWindow.h"
|
||||
#include "DialogProc.h"
|
||||
#include "LayoutScheme.h"
|
||||
|
||||
// DEFINES ////////////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE TYPES //////////////////////////////////////////////////////////////
|
||||
|
||||
// PRIVATE DATA ///////////////////////////////////////////////////////////////
|
||||
static char *szWindowClass = "GUIEdit";
|
||||
|
||||
// PUBLIC DATA ////////////////////////////////////////////////////////////////
|
||||
HINSTANCE ApplicationHInstance; ///< main application instance
|
||||
HWND ApplicationHWnd; ///< main application HWnd
|
||||
Win32Mouse *TheWin32Mouse = NULL; ///< for Win32 mouse
|
||||
char *gAppPrefix = "ge_"; /// So GuiEdit can have a different debug log file name if we need it
|
||||
|
||||
const Char *g_strFile = "data\\Generals.str";
|
||||
const Char *g_csfFile = "data\\%s\\Generals.csf";
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE PROTOTYPES /////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
|
||||
LRESULT CALLBACK AboutCallback(HWND, UINT, WPARAM, LPARAM);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PRIVATE FUNCTIONS //////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// initInstance ===============================================================
|
||||
//
|
||||
// FUNCTION: initInstance(HANDLE, int)
|
||||
//
|
||||
// PURPOSE: Saves instance handle and creates main window
|
||||
//
|
||||
// COMMENTS:
|
||||
//
|
||||
// In this function, we save the instance handle in a global variable and
|
||||
// create and display the main program window.
|
||||
//
|
||||
//=============================================================================
|
||||
static BOOL initInstance( HINSTANCE hInstance, int nCmdShow )
|
||||
{
|
||||
|
||||
// store application instance
|
||||
ApplicationHInstance = hInstance;
|
||||
|
||||
// create app window and keep handle
|
||||
ApplicationHWnd = CreateWindowEx( 0, // extended style
|
||||
szWindowClass, // window class name
|
||||
"GUIEdit", // window name
|
||||
WS_OVERLAPPEDWINDOW, // window styles
|
||||
0, // x position
|
||||
0, // y position
|
||||
GetSystemMetrics( SM_CXSCREEN ), // width
|
||||
GetSystemMetrics( SM_CYSCREEN ), // height
|
||||
NULL, // parent
|
||||
NULL, // menu
|
||||
ApplicationHInstance, // instance
|
||||
NULL ); // creation data
|
||||
|
||||
if( ApplicationHWnd == NULL )
|
||||
return FALSE;
|
||||
|
||||
// display the window
|
||||
ShowWindow( ApplicationHWnd, SW_MAXIMIZE );
|
||||
UpdateWindow( ApplicationHWnd );
|
||||
|
||||
return TRUE;
|
||||
|
||||
} // end initInstance
|
||||
|
||||
// registerClass ==============================================================
|
||||
//
|
||||
// FUNCTION: registerClass()
|
||||
//
|
||||
// PURPOSE: Registers the window class.
|
||||
//
|
||||
// COMMENTS:
|
||||
//
|
||||
// This function and its usage is only necessary if you want this code
|
||||
// to be compatible with Win32 systems prior to the 'RegisterClassEx'
|
||||
// function that was added to Windows 95. It is important to call this function
|
||||
// so that the application will get 'well formed' small icons associated
|
||||
// with it.
|
||||
//
|
||||
//=============================================================================
|
||||
static ATOM registerClass(HINSTANCE hInstance)
|
||||
{
|
||||
WNDCLASSEX wcex;
|
||||
|
||||
wcex.cbSize = sizeof( WNDCLASSEX );
|
||||
|
||||
wcex.style = CS_HREDRAW | CS_VREDRAW;
|
||||
wcex.lpfnWndProc = (WNDPROC)WndProc;
|
||||
wcex.cbClsExtra = 0;
|
||||
wcex.cbWndExtra = 0;
|
||||
wcex.hInstance = hInstance;
|
||||
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)GUIEDIT_LARGE_ICON);
|
||||
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||
wcex.hbrBackground = (HBRUSH)GetStockObject( BLACK_BRUSH );
|
||||
wcex.lpszMenuName = (LPCSTR)GUIEDIT_MENU;
|
||||
wcex.lpszClassName = szWindowClass;
|
||||
wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)GUIEDIT_SMALL_ICON);
|
||||
|
||||
return RegisterClassEx( &wcex );
|
||||
|
||||
} // registerClass
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PUBLIC FUNCTIONS ///////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// WinMain ====================================================================
|
||||
/** Entry point for application */
|
||||
//=============================================================================
|
||||
Int APIENTRY WinMain(HINSTANCE hInstance,
|
||||
HINSTANCE hPrevInstance,
|
||||
LPSTR lpCmdLine,
|
||||
int nCmdShow)
|
||||
{
|
||||
MSG msg;
|
||||
Int returnValue;
|
||||
HACCEL hAccelTable;
|
||||
Bool quit = FALSE;
|
||||
|
||||
/// @todo remove this force set of working directory later
|
||||
Char buffer[ _MAX_PATH ];
|
||||
GetModuleFileName( NULL, buffer, sizeof( buffer ) );
|
||||
Char *pEnd = buffer + strlen( buffer );
|
||||
while( pEnd != buffer )
|
||||
{
|
||||
if( *pEnd == '\\' )
|
||||
{
|
||||
*pEnd = 0;
|
||||
break;
|
||||
}
|
||||
pEnd--;
|
||||
}
|
||||
::SetCurrentDirectory(buffer);
|
||||
|
||||
// start the log
|
||||
DEBUG_INIT(DEBUG_FLAGS_DEFAULT);
|
||||
initMemoryManager();
|
||||
|
||||
// register a class for our window with the OS
|
||||
registerClass( hInstance );
|
||||
|
||||
// Perform application initialization:
|
||||
if( !initInstance( hInstance, nCmdShow ) )
|
||||
return FALSE;
|
||||
|
||||
// load accellerator table
|
||||
hAccelTable = LoadAccelerators( hInstance, (LPCTSTR)GUIEDIT_ACCELERATORS );
|
||||
|
||||
// initialize the common controls
|
||||
INITCOMMONCONTROLSEX controls;
|
||||
controls.dwSize = sizeof( controls );
|
||||
controls.dwICC = ICC_BAR_CLASSES;
|
||||
InitCommonControlsEx( &controls );
|
||||
|
||||
// initialize GUIEdit data
|
||||
TheEditor = new GUIEdit;
|
||||
if( TheEditor == NULL )
|
||||
return FALSE;
|
||||
TheEditor->init();
|
||||
|
||||
//
|
||||
// see if we have any messages to process, a NULL window handle tells the
|
||||
// OS to look at the main window associated with the calling thread, us!
|
||||
//
|
||||
while( quit == FALSE )
|
||||
{
|
||||
|
||||
// is there is message ready for us?
|
||||
if( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) )
|
||||
{
|
||||
|
||||
// process ALL messages waiting
|
||||
while( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) )
|
||||
{
|
||||
|
||||
// get the message
|
||||
returnValue = GetMessage( &msg, NULL, 0, 0 );
|
||||
|
||||
// check for quitting
|
||||
if( returnValue == 0 )
|
||||
quit = TRUE;
|
||||
|
||||
// translate accelerator messages
|
||||
if( !TranslateAccelerator( msg.hwnd, hAccelTable, &msg ) )
|
||||
{
|
||||
|
||||
// translate and dispatch the message
|
||||
TranslateMessage( &msg );
|
||||
DispatchMessage( &msg );
|
||||
|
||||
} // end if
|
||||
|
||||
} // end while
|
||||
|
||||
} // end if
|
||||
else
|
||||
{
|
||||
|
||||
// udpate our universe
|
||||
TheEditor->update();
|
||||
Sleep(1);
|
||||
|
||||
} // end else
|
||||
|
||||
} // end while
|
||||
|
||||
// shutdown GUIEdit data
|
||||
delete TheEditor;
|
||||
TheEditor = NULL;
|
||||
|
||||
// close the log
|
||||
shutdownMemoryManager();
|
||||
DEBUG_SHUTDOWN();
|
||||
|
||||
return msg.wParam;
|
||||
|
||||
} // end WinMain
|
||||
|
||||
// WndProc ====================================================================
|
||||
//
|
||||
// FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
|
||||
//
|
||||
// PURPOSE: Processes messages for the main window.
|
||||
//
|
||||
// WM_COMMAND - process the application menu
|
||||
// WM_PAINT - Paint the main window
|
||||
// WM_DESTROY - post a quit message and return
|
||||
//
|
||||
//=============================================================================
|
||||
LRESULT CALLBACK WndProc( HWND hWnd, UINT message,
|
||||
WPARAM wParam, LPARAM lParam )
|
||||
{
|
||||
|
||||
switch( message )
|
||||
{
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_MOUSEMOVE:
|
||||
{
|
||||
|
||||
// keep focus in our app
|
||||
if( GetFocus() != hWnd )
|
||||
SetFocus( hWnd );
|
||||
return 0;
|
||||
|
||||
} // end move mouse
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_COMMAND:
|
||||
{
|
||||
Int controlID = LOWORD( wParam );
|
||||
// Int nofifyCode = HIWORD( wParam );
|
||||
// HWND hWndControl = (HWND)lParam;
|
||||
|
||||
switch( controlID )
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case MENU_EXIT:
|
||||
TheEditor->menuExit();
|
||||
break;
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
case MENU_NEW:
|
||||
TheEditor->menuNew();
|
||||
break;
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case MENU_OPEN:
|
||||
TheEditor->menuOpen();
|
||||
break;
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case MENU_SAVE:
|
||||
TheEditor->menuSave();
|
||||
break;
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case MENU_SAVEAS:
|
||||
TheEditor->menuSaveAs();
|
||||
break;
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case MENU_COPY:
|
||||
TheEditor->menuCopy();
|
||||
break;
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case MENU_CUT:
|
||||
TheEditor->menuCut();
|
||||
break;
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case MENU_PASTE:
|
||||
TheEditor->menuPaste();
|
||||
break;
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case MENU_CALLBACKS:
|
||||
DialogBox( TheEditor->getInstance(), (LPCTSTR)CALLBACK_EDITOR_DIALOG,
|
||||
TheEditor->getWindowHandle(), CallbackEditorDialogProc );
|
||||
break;
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case MENU_GRID_SETTINGS:
|
||||
DialogBox( TheEditor->getInstance(), (LPCTSTR)GRID_SETTINGS_DIALOG,
|
||||
TheEditor->getWindowHandle(), GridSettingsDialogProc );
|
||||
break;
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case MENU_SHOW_HIDDEN_OUTLINES:
|
||||
TheEditor->setShowHiddenOutlines( !TheEditor->getShowHiddenOutlines() );
|
||||
break;
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case MENU_SHOW_SEE_THRU_OUTLINES:
|
||||
TheEditor->setShowSeeThruOutlines( !TheEditor->getShowSeeThruOutlines() );
|
||||
break;
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case MENU_TEST_MODE:
|
||||
|
||||
// switch to test mode or edit mode
|
||||
if( TheEditor)
|
||||
{
|
||||
EditMode mode = TheEditor->getMode();
|
||||
|
||||
if( mode != MODE_TEST_RUN )
|
||||
TheEditor->setMode( MODE_TEST_RUN );
|
||||
else
|
||||
TheEditor->setMode( MODE_EDIT );
|
||||
|
||||
} // end if
|
||||
break;
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case MENU_BACKGROUND_COLOR:
|
||||
|
||||
if( TheEditWindow )
|
||||
{
|
||||
RGBColorReal color = TheEditWindow->getBackgroundColor();
|
||||
RGBColorInt *newColor;
|
||||
POINT mouse;
|
||||
|
||||
// get mouse point
|
||||
GetCursorPos( &mouse );
|
||||
|
||||
// select a new color
|
||||
newColor = SelectColor( (Int)(255.0f * color.red),
|
||||
(Int)(255.0f * color.green),
|
||||
(Int)(255.0f * color.blue),
|
||||
(Int)(255.0f * color.alpha),
|
||||
mouse.x, mouse.y );
|
||||
if( newColor )
|
||||
{
|
||||
|
||||
color.red = (Real)newColor->red / 255.0f;
|
||||
color.green = (Real)newColor->green / 255.0f;
|
||||
color.blue = (Real)newColor->blue / 255.0f;
|
||||
color.alpha = (Real)newColor->alpha / 255.0f;
|
||||
TheEditWindow->setBackgroundColor( color );
|
||||
|
||||
} // end if
|
||||
|
||||
} // end if
|
||||
|
||||
break;
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case MENU_SCHEME:
|
||||
{
|
||||
|
||||
// open the default scheme information
|
||||
if( TheDefaultScheme )
|
||||
TheDefaultScheme->openDialog();
|
||||
break;
|
||||
|
||||
} // end scheme
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case MENU_ABOUT:
|
||||
{
|
||||
|
||||
DialogBox( ApplicationHInstance, (LPCTSTR)ABOUT_DIALOG,
|
||||
hWnd, (DLGPROC)AboutCallback );
|
||||
break;
|
||||
|
||||
} // end about
|
||||
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
default:
|
||||
{
|
||||
|
||||
return DefWindowProc( hWnd, message, wParam, lParam );
|
||||
|
||||
} // end default
|
||||
|
||||
} // end switch( controlID )
|
||||
|
||||
return 0;
|
||||
|
||||
} // end command
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_CLOSE:
|
||||
{
|
||||
|
||||
// close gets initiated from the 'x' in the top right of the window
|
||||
TheEditor->menuExit();
|
||||
return 0;
|
||||
|
||||
} // end close
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_KEYDOWN:
|
||||
{
|
||||
Int virtualKey = wParam;
|
||||
// Int keyData = lParam;
|
||||
Bool controlDown = BitTest( GetKeyState( VK_CONTROL ), 0x1000 );
|
||||
|
||||
switch( virtualKey )
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case VK_ESCAPE:
|
||||
{
|
||||
|
||||
// unselect all windows
|
||||
if( TheEditor )
|
||||
if(TheEditor->getMode() == MODE_KEYBOARD_MOVE)
|
||||
TheEditor->setMode( MODE_EDIT );
|
||||
else
|
||||
TheEditor->clearSelections();
|
||||
break;
|
||||
|
||||
} // end escape
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case VK_DELETE:
|
||||
{
|
||||
|
||||
// delete all selected windows
|
||||
if( TheEditor )
|
||||
TheEditor->deleteSelected();
|
||||
break;
|
||||
|
||||
} // end delete
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case VK_LEFT:
|
||||
{
|
||||
|
||||
// delete all selected windows
|
||||
if( TheEditor && TheEditWindow)
|
||||
{
|
||||
if(TheEditor->getMode() == MODE_EDIT)
|
||||
{
|
||||
|
||||
if(TheEditor->selectionCount() <= 0 )
|
||||
break;
|
||||
ICoord2D zero;
|
||||
zero.x = zero.y = 0;
|
||||
TheEditWindow->setDragMoveOrigin(&zero);
|
||||
TheEditWindow->setDragMoveDest(&zero);
|
||||
|
||||
TheEditor->setMode(MODE_KEYBOARD_MOVE);
|
||||
}
|
||||
if(TheEditor->getMode() == MODE_KEYBOARD_MOVE)
|
||||
{
|
||||
ICoord2D temp;
|
||||
|
||||
temp = TheEditWindow->getDragMoveDest();
|
||||
if(!controlDown && TheEditor->isGridSnapOn())
|
||||
{
|
||||
temp.x -= TheEditor->getGridResolution();
|
||||
TheEditor->gridSnapLocation(&temp,&temp);
|
||||
}
|
||||
else
|
||||
{
|
||||
temp.x--;
|
||||
}
|
||||
TheEditWindow->setDragMoveDest(&temp);
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
} // end Left
|
||||
// --------------------------------------------------------------------
|
||||
case VK_RIGHT:
|
||||
{
|
||||
|
||||
// delete all selected windows
|
||||
if( TheEditor && TheEditWindow)
|
||||
{
|
||||
if(TheEditor->getMode() == MODE_EDIT)
|
||||
{
|
||||
|
||||
if(TheEditor->selectionCount() <= 0 )
|
||||
break;
|
||||
ICoord2D zero;
|
||||
zero.x = zero.y = 0;
|
||||
TheEditWindow->setDragMoveOrigin(&zero);
|
||||
TheEditWindow->setDragMoveDest(&zero);
|
||||
|
||||
TheEditor->setMode(MODE_KEYBOARD_MOVE);
|
||||
}
|
||||
if(TheEditor->getMode() == MODE_KEYBOARD_MOVE)
|
||||
{
|
||||
ICoord2D temp;
|
||||
|
||||
temp = TheEditWindow->getDragMoveDest();
|
||||
if(!controlDown && TheEditor->isGridSnapOn())
|
||||
{
|
||||
temp.x += TheEditor->getGridResolution();
|
||||
TheEditor->gridSnapLocation(&temp,&temp);
|
||||
}
|
||||
else
|
||||
{
|
||||
temp.x++;
|
||||
}
|
||||
TheEditWindow->setDragMoveDest(&temp);
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
} // end RIGHT
|
||||
// --------------------------------------------------------------------
|
||||
case VK_UP:
|
||||
{
|
||||
|
||||
// delete all selected windows
|
||||
if( TheEditor && TheEditWindow)
|
||||
{
|
||||
if(TheEditor->getMode() == MODE_EDIT)
|
||||
{
|
||||
|
||||
if(TheEditor->selectionCount() <= 0 )
|
||||
break;
|
||||
ICoord2D zero;
|
||||
zero.x = zero.y = 0;
|
||||
TheEditWindow->setDragMoveOrigin(&zero);
|
||||
TheEditWindow->setDragMoveDest(&zero);
|
||||
|
||||
TheEditor->setMode(MODE_KEYBOARD_MOVE);
|
||||
}
|
||||
if(TheEditor->getMode() == MODE_KEYBOARD_MOVE)
|
||||
{
|
||||
ICoord2D temp;
|
||||
|
||||
temp = TheEditWindow->getDragMoveDest();
|
||||
|
||||
if(!controlDown && TheEditor->isGridSnapOn())
|
||||
{
|
||||
temp.y -= TheEditor->getGridResolution();
|
||||
TheEditor->gridSnapLocation(&temp,&temp);
|
||||
}
|
||||
else
|
||||
{
|
||||
temp.y--;
|
||||
}
|
||||
TheEditWindow->setDragMoveDest(&temp);
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
} // end Up
|
||||
// --------------------------------------------------------------------
|
||||
case VK_DOWN:
|
||||
{
|
||||
|
||||
// delete all selected windows
|
||||
if( TheEditor && TheEditWindow)
|
||||
{
|
||||
if(TheEditor->getMode() == MODE_EDIT)
|
||||
{
|
||||
|
||||
if(TheEditor->selectionCount() <= 0 )
|
||||
break;
|
||||
ICoord2D zero;
|
||||
zero.x = zero.y = 0;
|
||||
TheEditWindow->setDragMoveOrigin(&zero);
|
||||
TheEditWindow->setDragMoveDest(&zero);
|
||||
|
||||
TheEditor->setMode(MODE_KEYBOARD_MOVE);
|
||||
}
|
||||
if(TheEditor->getMode() == MODE_KEYBOARD_MOVE)
|
||||
{
|
||||
ICoord2D temp;
|
||||
|
||||
temp = TheEditWindow->getDragMoveDest();
|
||||
if(!controlDown && TheEditor->isGridSnapOn())
|
||||
{
|
||||
temp.y += TheEditor->getGridResolution();
|
||||
TheEditor->gridSnapLocation(&temp,&temp);
|
||||
}
|
||||
else
|
||||
{
|
||||
temp.y++;
|
||||
}
|
||||
TheEditWindow->setDragMoveDest(&temp);
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
} // end Down
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
case VK_RETURN:
|
||||
{
|
||||
if( TheEditor && TheEditWindow && TheEditor->getMode() == MODE_KEYBOARD_MOVE )
|
||||
{
|
||||
ICoord2D tempOrigin, tempDest;
|
||||
tempDest = TheEditWindow->getDragMoveDest();
|
||||
tempOrigin = TheEditWindow->getDragMoveOrigin();
|
||||
|
||||
// move the windows
|
||||
TheEditor->dragMoveSelectedWindows( &tempOrigin, &tempDest );
|
||||
|
||||
// go back to normal mode
|
||||
TheEditor->setMode( MODE_EDIT );
|
||||
}
|
||||
break;
|
||||
}// end Enter
|
||||
|
||||
} // end switch( virtualKey )
|
||||
|
||||
return 0;
|
||||
|
||||
} // end key down
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_SIZE:
|
||||
{
|
||||
Int width = LOWORD( lParam );
|
||||
Int height = HIWORD( lParam );
|
||||
|
||||
// resize status bar
|
||||
if( TheEditor )
|
||||
{
|
||||
HWND statusBar = TheEditor->getStatusBarWindowHandle();
|
||||
|
||||
if( statusBar )
|
||||
{
|
||||
RECT rect;
|
||||
Int barX, barY;
|
||||
Int barWidth, barHeight;
|
||||
|
||||
// keep status window height the same
|
||||
GetWindowRect( statusBar, &rect );
|
||||
barWidth = width;
|
||||
barHeight = rect.bottom - rect.top;
|
||||
|
||||
barX = 0;
|
||||
barY = height - barHeight;
|
||||
MoveWindow( statusBar, barX, barY, barWidth, barHeight, TRUE );
|
||||
|
||||
} // end if
|
||||
|
||||
} // end if
|
||||
|
||||
return 0;
|
||||
|
||||
} // end size
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_PAINT:
|
||||
{
|
||||
PAINTSTRUCT ps;
|
||||
HDC hdc;
|
||||
|
||||
hdc = BeginPaint(hWnd, &ps);
|
||||
EndPaint(hWnd, &ps);
|
||||
break;
|
||||
|
||||
} // end paint
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
case WM_DESTROY:
|
||||
{
|
||||
|
||||
PostQuitMessage(0);
|
||||
break;
|
||||
|
||||
} // end destroy
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
default:
|
||||
{
|
||||
|
||||
return DefWindowProc(hWnd, message, wParam, lParam);
|
||||
|
||||
} // end default
|
||||
|
||||
} // end switch( message )
|
||||
|
||||
return DefWindowProc( hWnd, message, wParam, lParam );
|
||||
|
||||
} // end WndProc
|
||||
|
||||
// AboutCallback ==============================================================
|
||||
/** Mesage handler for about box. */
|
||||
//=============================================================================
|
||||
LRESULT CALLBACK AboutCallback( HWND hDlg, UINT message,
|
||||
WPARAM wParam, LPARAM lParam )
|
||||
{
|
||||
|
||||
switch (message)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
return TRUE;
|
||||
|
||||
case WM_COMMAND:
|
||||
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
|
||||
{
|
||||
EndDialog(hDlg, LOWORD(wParam));
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
} // end AboutCallback
|
||||
|
||||
Reference in New Issue
Block a user