Browse Source

Implement client window flashing

This will be used in python to grab the player's attention on PMs or other
interesting events.
Adam Johnson 12 years ago
parent
commit
5beda0ab87
  1. 16
      Sources/Plasma/Apps/plClient/plClient.cpp
  2. 1
      Sources/Plasma/Apps/plClient/plClient.h
  3. 7
      Sources/Plasma/FeatureLib/pfPython/cyMisc.cpp
  4. 9
      Sources/Plasma/FeatureLib/pfPython/cyMisc.h
  5. 4
      Sources/Plasma/FeatureLib/pfPython/cyMiscGlue.cpp
  6. 2
      Sources/Plasma/NucleusLib/pnMessage/plClientMsg.h

16
Sources/Plasma/Apps/plClient/plClient.cpp

@ -772,6 +772,11 @@ hsBool plClient::MsgReceive(plMessage* msg)
}
break;
case plClientMsg::kFlashWindow:
{
FlashWindow();
}
break;
}
return true;
}
@ -2437,6 +2442,17 @@ void plClient::WindowActivate(bool active)
fWindowActive = active;
}
void plClient::FlashWindow()
{
#ifdef HS_BUILD_FOR_WIN32
FLASHWINFO info;
info.cbSize = sizeof(info);
info.dwFlags = FLASHW_TIMERNOFG | FLASHW_ALL;
info.hwnd = fWindowHndl;
info.uCount = -1;
FlashWindowEx(&info);
#endif
}
//============================================================================
void plClient::IOnAsyncInitComplete () {

1
Sources/Plasma/Apps/plClient/plClient.h

@ -290,6 +290,7 @@ public:
virtual void WindowActivate(bool active);
virtual hsBool WindowActive() const { return fWindowActive; }
void FlashWindow();
void SetMessagePumpProc( plMessagePumpProc proc ) { fMessagePumpProc = proc; }
void ResetDisplayDevice(int Width, int Height, int ColorDepth, hsBool Windowed, int NumAASamples, int MaxAnisotropicSamples, hsBool VSync = false);
void ResizeDisplayDevice(int Width, int Height, hsBool Windowed);

7
Sources/Plasma/FeatureLib/pfPython/cyMisc.cpp

@ -721,6 +721,13 @@ void cyMisc::ExcludeRegionSetNow(pyKey& sender, pyKey& exKey, uint16_t state)
plgDispatch::MsgSend( msg ); // whoosh... off it goes
}
void cyMisc::FlashWindow()
{
plKey clientKey = hsgResMgr::ResMgr()->FindKey(kClient_KEY);
plClientMsg* pMsg = new plClientMsg(plClientMsg::kFlashWindow);
pMsg->Send(clientKey); // whoosh... off it goes
}
#include "hsTimer.h"
/////////////////////////////////////////////////////////////////////////////
//

9
Sources/Plasma/FeatureLib/pfPython/cyMisc.h

@ -244,6 +244,15 @@ public:
//
static hsBool WasLocallyNotified(pyKey &selfkey);
/////////////////////////////////////////////////////////////////////////////
//
// Function : FlashWindow
// PARAMETERS :
//
// PURPOSE : Flashes the client window if it is not focused
//
static void FlashWindow();
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetClientName

4
Sources/Plasma/FeatureLib/pfPython/cyMiscGlue.cpp

@ -48,6 +48,8 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include <Python.h>
PYTHON_BASIC_GLOBAL_METHOD_DEFINITION(PtFlashWindow, cyMisc::FlashWindow, "Flashes the client window if it is not focused");
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetAgeName, "DEPRECIATED - use ptDniInfoSource instead")
{
return PyString_FromString(cyMisc::GetAgeName());
@ -514,6 +516,8 @@ PYTHON_GLOBAL_METHOD_DEFINITION(PtDumpLogs, args, "Params: folder\nDumps all cur
void cyMisc::AddPlasmaMethods(std::vector<PyMethodDef> &methods)
{
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtFlashWindow);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetAgeName);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetAgeInfo);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetAgeTime);

2
Sources/Plasma/NucleusLib/pnMessage/plClientMsg.h

@ -94,6 +94,8 @@ public:
kEnableRenderScene,
kResetGraphicsDevice,
kSetGraphicsDefaults,
kFlashWindow,
};
// graphics settings fields

Loading…
Cancel
Save