mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
Adding new PluginVirtualDesktops plugin from Patrick at Dexpot
Change to Build.py and Rainmeter.sln to support new plugin New Example.rmskin for Rainstaller
This commit is contained in:
208
Plugins/PluginVirtualDesktops/DexpotMeasure.h
Normal file
208
Plugins/PluginVirtualDesktops/DexpotMeasure.h
Normal file
@ -0,0 +1,208 @@
|
||||
/*
|
||||
Copyright (C) 2010 Patrick Dubbert
|
||||
|
||||
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 2
|
||||
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, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include "VDMeasure.h"
|
||||
|
||||
#include <windows.h>
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#define STRINGBUFFER_SIZE MAX_PATH
|
||||
|
||||
class DexpotMeasure : public VDMeasure
|
||||
{
|
||||
public:
|
||||
DexpotMeasure(HMODULE instance, UINT id);
|
||||
virtual ~DexpotMeasure(void) {};
|
||||
|
||||
virtual UINT Initialize(LPCTSTR iniFile, LPCTSTR section);
|
||||
virtual void Finalize();
|
||||
virtual UINT Update();
|
||||
virtual LPCTSTR GetString(UINT flags);
|
||||
virtual void ExecuteBang(LPCTSTR args) {};
|
||||
|
||||
static DexpotMeasure* CreateMeasure(HMODULE instance, UINT id, LPCTSTR iniFile, LPCTSTR section);
|
||||
|
||||
protected:
|
||||
virtual void InitializeData() {};
|
||||
virtual void OnSwitched(int FromDesktop, int ToDesktop, WORD Flags, WORD Trigger) {};
|
||||
virtual void OnDesktopCountChanged(int) {};
|
||||
virtual void OnShutdown() {};
|
||||
virtual void OnDexpotStarted();
|
||||
virtual void OnDesktopConfigurationChanged() {};
|
||||
|
||||
static void SendBang(std::wstring&);
|
||||
|
||||
static HWND hWndDexpot;
|
||||
static HWND hWndMessageWindow;
|
||||
static TCHAR StringBuffer[STRINGBUFFER_SIZE];
|
||||
static BOOL PluginRegistered;
|
||||
static int CurrentDesktop;
|
||||
|
||||
private:
|
||||
static BOOL FindDexpotWindow();
|
||||
static HWND CreateMessageWindow();
|
||||
static LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
static int InstanceCount;
|
||||
static HWND hWndRainmeterControl;
|
||||
static std::set<DexpotMeasure*> DexpotMeasures;
|
||||
static UINT WM_DEXPOTSTARTED;
|
||||
};
|
||||
|
||||
|
||||
class DexpotDesktopCountMeasure : public DexpotMeasure
|
||||
{
|
||||
public:
|
||||
DexpotDesktopCountMeasure(HMODULE instance, UINT id);
|
||||
virtual ~DexpotDesktopCountMeasure(void) {};
|
||||
|
||||
virtual UINT Initialize(LPCTSTR iniFile, LPCTSTR section);
|
||||
virtual UINT Update();
|
||||
virtual void InitializeData();
|
||||
virtual void OnDesktopCountChanged(int);
|
||||
|
||||
private:
|
||||
enum DesktopCountType
|
||||
{
|
||||
Total,
|
||||
Columns,
|
||||
Rows,
|
||||
};
|
||||
|
||||
int DesktopCount;
|
||||
std::wstring OnChange;
|
||||
DesktopCountType CountType;
|
||||
};
|
||||
|
||||
|
||||
class DexpotCurrentDesktopMeasure : public DexpotMeasure
|
||||
{
|
||||
public:
|
||||
DexpotCurrentDesktopMeasure(HMODULE instance, UINT id);
|
||||
virtual ~DexpotCurrentDesktopMeasure(void) {};
|
||||
|
||||
virtual UINT Initialize(LPCTSTR iniFile, LPCTSTR section);
|
||||
virtual UINT Update();
|
||||
virtual void OnSwitched(int, int, WORD, WORD);
|
||||
|
||||
private:
|
||||
std::wstring OnChange;
|
||||
};
|
||||
|
||||
|
||||
class DexpotVDMActiveMeasure : public DexpotMeasure
|
||||
{
|
||||
public:
|
||||
DexpotVDMActiveMeasure(HMODULE instance, UINT id);
|
||||
virtual ~DexpotVDMActiveMeasure(void) {};
|
||||
|
||||
virtual UINT Initialize(LPCTSTR iniFile, LPCTSTR section);
|
||||
virtual UINT Update();
|
||||
virtual void OnShutdown();
|
||||
virtual void OnDexpotStarted();
|
||||
|
||||
private:
|
||||
std::wstring OnActivate;
|
||||
std::wstring OnDeactivate;
|
||||
};
|
||||
|
||||
|
||||
class DexpotSwitchDesktopMeasure : public DexpotMeasure
|
||||
{
|
||||
public:
|
||||
DexpotSwitchDesktopMeasure(HMODULE instance, UINT id);
|
||||
virtual ~DexpotSwitchDesktopMeasure(void) {};
|
||||
|
||||
virtual void ExecuteBang(LPCTSTR args);
|
||||
};
|
||||
|
||||
|
||||
class DexpotScreenshotMeasure : public DexpotMeasure
|
||||
{
|
||||
public:
|
||||
DexpotScreenshotMeasure(HMODULE instance, UINT id);
|
||||
virtual ~DexpotScreenshotMeasure(void) {};
|
||||
|
||||
virtual UINT Initialize(LPCTSTR iniFile, LPCTSTR section);
|
||||
virtual UINT Update();
|
||||
virtual LPCTSTR GetString(UINT flags);
|
||||
virtual void InitializeData();
|
||||
virtual void OnSwitched(int, int, WORD, WORD);
|
||||
|
||||
private:
|
||||
void UpdateScreenshot();
|
||||
|
||||
std::wstring OutputFile;
|
||||
int DesktopNumber;
|
||||
int Width;
|
||||
int Height;
|
||||
BOOL RefreshOnUpdate;
|
||||
};
|
||||
|
||||
|
||||
class DexpotDesktopNameMeasure : public DexpotMeasure
|
||||
{
|
||||
public:
|
||||
DexpotDesktopNameMeasure(HMODULE instance, UINT id);
|
||||
virtual ~DexpotDesktopNameMeasure(void) {};
|
||||
|
||||
virtual UINT Initialize(LPCTSTR iniFile, LPCTSTR section);
|
||||
virtual LPCTSTR GetString(UINT flags);
|
||||
virtual void InitializeData();
|
||||
virtual void OnDesktopConfigurationChanged();
|
||||
|
||||
static void SetDesktopName(UINT Desktop, std::wstring &Name);
|
||||
|
||||
private:
|
||||
int DesktopNumber;
|
||||
static std::vector<std::wstring> DesktopNames;
|
||||
};
|
||||
|
||||
|
||||
class DexpotDesktopWallpaperMeasure : public DexpotMeasure
|
||||
{
|
||||
public:
|
||||
DexpotDesktopWallpaperMeasure(HMODULE instance, UINT id);
|
||||
virtual ~DexpotDesktopWallpaperMeasure(void) {};
|
||||
|
||||
virtual UINT Initialize(LPCTSTR iniFile, LPCTSTR section);
|
||||
virtual LPCTSTR GetString(UINT flags);
|
||||
virtual void InitializeData();
|
||||
virtual void OnSwitched(int FromDesktop, int ToDesktop, WORD Flags, WORD Trigger);
|
||||
virtual void OnDesktopConfigurationChanged();
|
||||
|
||||
static void SetDesktopWallpaper(UINT Desktop, std::wstring &Wallpaper);
|
||||
|
||||
private:
|
||||
int DesktopNumber;
|
||||
static std::vector<std::wstring> DesktopWallpapers;
|
||||
};
|
||||
|
||||
|
||||
class DexpotCommandMeasure : public DexpotMeasure
|
||||
{
|
||||
public:
|
||||
DexpotCommandMeasure(HMODULE instance, UINT id);
|
||||
virtual ~DexpotCommandMeasure(void) {};
|
||||
|
||||
virtual void ExecuteBang(LPCTSTR args);
|
||||
};
|
Reference in New Issue
Block a user