From 9242a80a84fa5c96dbadec9594177875aeeec1ac Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Tue, 10 Jul 2012 18:37:21 +0000 Subject: only added MyDetails and Skins. not adopted yet git-svn-id: http://svn.miranda-ng.org/main/trunk@892 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/ExternalAPI/m_skins.h | 142 ++++++++++++++++++++++++++ plugins/ExternalAPI/m_skins_cpp.h | 210 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 352 insertions(+) create mode 100644 plugins/ExternalAPI/m_skins.h create mode 100644 plugins/ExternalAPI/m_skins_cpp.h (limited to 'plugins/ExternalAPI') diff --git a/plugins/ExternalAPI/m_skins.h b/plugins/ExternalAPI/m_skins.h new file mode 100644 index 0000000000..da01064c64 --- /dev/null +++ b/plugins/ExternalAPI/m_skins.h @@ -0,0 +1,142 @@ +/* +Copyright (C) 2008 Ricardo Pescuma Domenecci + +This is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +This 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with this file; see the file license.txt. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. +*/ + + +#ifndef __M_SKINS_H__ +# define __M_SKINS_H__ + +#include + +#define MIID_SKINS { 0x917db7a4, 0xd0fe, 0x4b1c, { 0x8c, 0xa3, 0x6d, 0xc1, 0x44, 0x80, 0xf5, 0xcc } } + + +typedef void * SKINNED_DIALOG; +typedef void * SKINNED_FIELD; +typedef void * SKINNED_DIALOG_STATE; +typedef void * SKINNED_FIELD_STATE; + +typedef void (*SkinOptionsChangedCallback)(void *param, SKINNED_DIALOG dlg); + + +#define SKN_HALIGN_LEFT 1 +#define SKN_HALIGN_CENTER 2 +#define SKN_HALIGN_RIGHT 3 + +#define SKN_VALIGN_TOP 1 +#define SKN_VALIGN_CENTER 2 +#define SKN_VALIGN_BOTTOM 3 + + +/// Some common parameters: +/// - name : internal name and name used inside skin file +/// - description : name shown to the user +/// - module : the module name where the settings will be stored +/// Do not translate any parameters. +struct SKIN_INTERFACE +{ + int cbSize; + + // Global methods + SKINNED_DIALOG (*RegisterDialog)(const char *name, const char *description, const char *module); + void (*DeleteDialog)(SKINNED_DIALOG dlg); + void (*SetSkinChangedCallback)(SKINNED_DIALOG dlg, SkinOptionsChangedCallback cb, void *param); + void (*FinishedConfiguring)(SKINNED_DIALOG dlg); + + // Dialog methods + SKINNED_FIELD (*AddTextField)(SKINNED_DIALOG dlg, const char *name, const char *description); + SKINNED_FIELD (*AddIconField)(SKINNED_DIALOG dlg, const char *name, const char *description); + SKINNED_FIELD (*AddImageField)(SKINNED_DIALOG dlg, const char *name, const char *description); + SKINNED_FIELD (*GetField)(SKINNED_DIALOG dlg, const char *name); + void (*SetDialogSize)(SKINNED_DIALOG dlg, int width, int height); + void (*SetInfoInt)(SKINNED_DIALOG dlg, const char *name, int value); + void (*SetInfoDouble)(SKINNED_DIALOG dlg, const char *name, double value); + void (*SetInfoBool)(SKINNED_DIALOG dlg, const char *name, BOOL value); + void (*SetInfoString)(SKINNED_DIALOG dlg, const char *name, const TCHAR *value); + void (*RemoveInfo)(SKINNED_DIALOG dlg, const char *name); + + // Field methods + void (*SetEnabled)(SKINNED_FIELD field, BOOL enabled); + void (*SetToolTipA)(SKINNED_FIELD field, const char *tooltip); + void (*SetToolTipW)(SKINNED_FIELD field, const WCHAR *tooltip); + + // TextField methods + void (*SetTextA)(SKINNED_FIELD field, const char *text); + void (*SetTextW)(SKINNED_FIELD field, const WCHAR *text); + + // IconField methods + void (*SetIcon)(SKINNED_FIELD field, HICON hIcon); + + // ImageField methods + void (*SetImage)(SKINNED_FIELD field, HBITMAP hBmp); + + // Run the skin and get an state from it + SKINNED_DIALOG_STATE (*Run)(SKINNED_DIALOG dialog); + + // Dialog State methods + SKINNED_FIELD_STATE (*GetFieldState)(SKINNED_DIALOG_STATE dlg, const char *name); + RECT (*GetDialogBorders)(SKINNED_DIALOG_STATE dlg); + + // Field State methods + RECT (*GetRect)(SKINNED_FIELD_STATE field); // With borders + RECT (*GetInsideRect)(SKINNED_FIELD_STATE field); // Without borders + RECT (*GetRawRect)(SKINNED_FIELD_STATE field); // With borders, without processing to assert inside window + RECT (*GetRawInsideRect)(SKINNED_FIELD_STATE field); // Without borders, without processing to assert inside window + RECT (*GetBorders)(SKINNED_FIELD_STATE field); + BOOL (*IsVisible)(SKINNED_FIELD_STATE field); + char * (*GetToolTipA)(SKINNED_FIELD field); // You have to free the result + WCHAR * (*GetToolTipW)(SKINNED_FIELD field); // You have to free the result + int (*GetHorizontalAlign)(SKINNED_FIELD_STATE field); // one of SKN_HALIGN_* + int (*GetVerticalAlign)(SKINNED_FIELD_STATE field); // one of SKN_VALIGN_* + + // TextField State methods + char * (*GetTextA)(SKINNED_FIELD_STATE field); // You have to free the result + WCHAR * (*GetTextW)(SKINNED_FIELD_STATE field); // You have to free the result + HFONT (*GetFont)(SKINNED_FIELD_STATE field); + COLORREF (*GetFontColor)(SKINNED_FIELD_STATE field); + + // IconField State methods + HICON (*GetIcon)(SKINNED_FIELD_STATE field); + + // ImageField State methods + HBITMAP (*GetImage)(SKINNED_FIELD_STATE field); +}; + + + +/* +Skins/GetInterface service +Fill the function pointers for a SKIN_INTERFACE struct + +wparam = 0 +lparam = (SKIN_INTERFACE *) struct to be filled +returns: 0 on success +*/ +#define MS_SKINS_GETINTERFACE "Skins/GetInterface" + + + + +static int mir_skins_getInterface(struct SKIN_INTERFACE *dest) +{ + dest->cbSize = sizeof(SKIN_INTERFACE); + return CallService(MS_SKINS_GETINTERFACE, 0, (LPARAM) dest); +} + + +#endif // __M_SKINS_H__ diff --git a/plugins/ExternalAPI/m_skins_cpp.h b/plugins/ExternalAPI/m_skins_cpp.h new file mode 100644 index 0000000000..bdc7337419 --- /dev/null +++ b/plugins/ExternalAPI/m_skins_cpp.h @@ -0,0 +1,210 @@ +/* +Copyright (C) 2008 Ricardo Pescuma Domenecci + +This is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +This 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with this file; see the file license.txt. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. +*/ + + +#ifndef __M_SKINS_CPP_H__ +# define __M_SKINS_CPP_H__ + +#include "m_skins.h" + +extern struct SKIN_INTERFACE mski; + + +class SkinFieldState +{ +public: + SkinFieldState(SKINNED_FIELD_STATE field) : tooltip(NULL) { this->field = field; } + virtual ~SkinFieldState() { if (tooltip != NULL) mir_free(tooltip); } + + bool isValid() { return field != NULL; } + + RECT getRect(bool raw = false) { return raw ? mski.GetRawRect(field) : mski.GetRect(field); } + RECT getInsideRect(bool raw = false) { return raw ? mski.GetRawInsideRect(field) : mski.GetInsideRect(field); } + RECT getBorders() { return mski.GetBorders(field); } + bool isVisible() { return mski.IsVisible(field) != FALSE; } + int getHorizontalAlign() { return mski.GetHorizontalAlign(field); } // one of SKN_HALIGN_* + int getVerticalAlign() { return mski.GetVerticalAlign(field); } // one of SKN_VALIGN_* + + const TCHAR * getToolTip() { + if (tooltip != NULL) + mir_free(tooltip); + +#ifdef UNICODE + tooltip = mski.GetToolTipW(field); +#else + tooltip = mski.GetToolTipA(field); +#endif + return tooltip; + } + +protected: + SKINNED_FIELD_STATE field; + TCHAR *tooltip; +}; + +class SkinTextFieldState : public SkinFieldState +{ +public: + SkinTextFieldState(SKINNED_FIELD_STATE field) : SkinFieldState(field), text(NULL) {} + virtual ~SkinTextFieldState() { if (text != NULL) mir_free(text); } + + const TCHAR * getText() { + if (text != NULL) + mir_free(text); + +#ifdef UNICODE + text = mski.GetTextW(field); +#else + text = mski.GetTextA(field); +#endif + return text; + } + + HFONT getFont() { return mski.GetFont(field); } + COLORREF getFontColor() { return mski.GetFontColor(field); } + +private: + TCHAR *text; +}; + +class SkinIconFieldState : public SkinFieldState +{ +public: + SkinIconFieldState(SKINNED_FIELD_STATE field) : SkinFieldState(field) {} + + HICON getIcon() { return mski.GetIcon(field); } +}; + +class SkinImageFieldState : public SkinFieldState +{ +public: + SkinImageFieldState(SKINNED_FIELD_STATE field) : SkinFieldState(field) {} + + HBITMAP getImage() { return mski.GetImage(field); } +}; + + +class SkinDialogState +{ +public: + SkinDialogState(SKINNED_DIALOG_STATE dlg) { this->dlg = dlg; } + + bool isValid() { return dlg != NULL; } + + RECT getBorders() { return mski.GetDialogBorders(dlg); } + + SkinFieldState getField(const char *name) { return SkinFieldState( mski.GetFieldState(dlg, name) ); } + SkinTextFieldState getTextField(const char *name) { return SkinTextFieldState( mski.GetFieldState(dlg, name) ); } + SkinIconFieldState getIconField(const char *name) { return SkinIconFieldState( mski.GetFieldState(dlg, name) ); } + SkinImageFieldState getImageField(const char *name) { return SkinImageFieldState( mski.GetFieldState(dlg, name) ); } + +private: + SKINNED_DIALOG_STATE dlg; +}; + + +class SkinField +{ +public: + SkinField(SKINNED_FIELD field) { this->field = field; } + + bool isValid() { return field != NULL; } + + void setEnabled(bool enabled) { mski.SetEnabled(field, enabled); } + + void setToolTip(const TCHAR *tooltip) { +#ifdef UNICODE + mski.SetToolTipW(field, tooltip); +#else + mski.SetToolTipA(field, tooltip); +#endif + } + +protected: + SKINNED_FIELD field; +}; + +class SkinTextField : public SkinField +{ +public: + SkinTextField(SKINNED_FIELD field) : SkinField(field) {} + + void setText(const TCHAR *text) { +#ifdef UNICODE + mski.SetTextW(field, text); +#else + mski.SetTextA(field, text); +#endif + } +}; + +class SkinIconField : public SkinField +{ +public: + SkinIconField(SKINNED_FIELD field) : SkinField(field) {} + + void setIcon(HICON hIcon) { mski.SetIcon(field, hIcon); } +}; + +class SkinImageField : public SkinField +{ +public: + SkinImageField(SKINNED_FIELD field) : SkinField(field) {} + + void setImage(HBITMAP hBmp) { mski.SetImage(field, hBmp); } +}; + + +class SkinDialog +{ +public: + SkinDialog(const char *name, const char *description, const char *module) { dlg = mski.RegisterDialog(name, description, module); } + ~SkinDialog() { mski.DeleteDialog(dlg); dlg = NULL; } + + bool isValid() { return dlg != NULL; } + + void setSkinChangedCallback(SkinOptionsChangedCallback cb, void *param) { mski.SetSkinChangedCallback(dlg, cb, param); } + + void finishedConfiguring() { mski.FinishedConfiguring(dlg); } + + void setSize(int width, int height) { mski.SetDialogSize(dlg, width, height); } + + SkinTextField addTextField(const char *name, const char *description) { return SkinTextField( mski.AddTextField(dlg, name, description) ); } + SkinIconField addIconField(const char *name, const char *description) { return SkinIconField( mski.AddIconField(dlg, name, description) ); } + SkinImageField addImageField(const char *name, const char *description) { return SkinImageField( mski.AddImageField(dlg, name, description) ); } + + SkinField getField(const char *name) { return SkinField( mski.GetField(dlg, name) ); } + SkinTextField getTextField(const char *name) { return SkinTextField( mski.GetField(dlg, name) ); } + SkinIconField getIconField(const char *name) { return SkinIconField( mski.GetField(dlg, name) ); } + SkinImageField getImageField(const char *name) { return SkinImageField( mski.GetField(dlg, name) ); } + + void setInfoInt(const char *name, int value) { mski.SetInfoInt(dlg, name, value); } + void setInfoDouble(const char *name, double value) { mski.SetInfoDouble(dlg, name, value); } + void setInfoBool(const char *name, bool value) { mski.SetInfoBool(dlg, name, value); } + void setInfoString(const char *name, const TCHAR *value) { mski.SetInfoString(dlg, name, value); } + void removeInfo(const char *name) { mski.RemoveInfo(dlg, name); } + + SkinDialogState run() { return SkinDialogState( mski.Run(dlg) ); } + +private: + SKINNED_DIALOG dlg; +}; + + +#endif // __M_SKINS_CPP_H__ \ No newline at end of file -- cgit v1.2.3