Commit 51bf1028 authored by ipkiss's avatar ipkiss
Browse files

* added wxwindows Open and Messages dialog boxes into the windows skins

   (it may break things on linux...)
parent 0cda1774
......@@ -2310,18 +2310,6 @@ dnl
AC_ARG_ENABLE(skins,
[ --enable-skins Win32 skins module (default enabled on Win32)])
if test "x${enable_skins}" != "xno"; then
if test "x${SYS}" = "xmingw32" -o "x${SYS}" = "xcygwin"; then
PLUGINS="${PLUGINS} skins"
CPPFLAGS_skins="${CPPFLAGS_skins} -O2 -fno-rtti -Imodules/gui/skins -Imodules/gui/skins/src -Imodules/gui/skins/win32 -Imodules/gui/skins/controls"
LDFLAGS_skins="${LDFLAGS_skins} -lstdc++ -lgdi32 -lcomdlg32 -lole32 -luuid -lcomctl32 -lmsimg32"
else
if test "x${enable_skins}" = "xyes"; then
PKG_CHECK_MODULES(GTK2, [gtk+-2.0 >= 2.0.0, gthread-2.0])
PLUGINS="${PLUGINS} skins"
CPPFLAGS_skins="${CPPFLAGS_skins} -O2 -fno-rtti -Imodules/gui/skins -Imodules/gui/skins/src -Imodules/gui/skins/gtk2 -Imodules/gui/skins/controls -Imodules/gui/skins/parser ${GTK2_CFLAGS}"
LDFLAGS_skins="${LDFLAGS_skins} -lstdc++ ${GTK2_LIBS}"
fi
fi
WXWINDOWS_PATH="${PATH}"
AC_ARG_WITH(wx-config-path,
[ --with-wx-config-path=PATH wx-config path (default search in \$PATH)],
......@@ -2340,6 +2328,19 @@ if test "x${enable_skins}" != "xno"; then
CPPFLAGS_skins="${CPPFLAGS_skins} `${WX_CONFIG} --cxxflags`"
LDFLAGS_skins="${LDFLAGS_skins} `${WX_CONFIG} --libs`"
fi
if test "x${SYS}" = "xmingw32" -o "x${SYS}" = "xcygwin"; then
PLUGINS="${PLUGINS} skins"
CPPFLAGS_skins="${CPPFLAGS_skins} -O2 -U_OFF_T_ -U_off_t -fno-rtti -Imodules/gui/skins"
LDFLAGS_skins="${LDFLAGS_skins} -loleaut32 -lwinspool -lwinmm -lshell32 -lctl3d32 -ladvapi32 -lwsock32 -lstdc++ -lgdi32 -lcomdlg32 -lole32 -luuid -lcomctl32 -lmsimg32"
else
if test "x${enable_skins}" = "xyes"; then
PKG_CHECK_MODULES(GTK2, [gtk+-2.0 >= 2.0.0, gthread-2.0])
PLUGINS="${PLUGINS} skins"
CPPFLAGS_skins="${CPPFLAGS_skins} -O2 -fno-rtti -Imodules/gui/skins -Imodules/gui/skins/src -Imodules/gui/skins/gtk2 -Imodules/gui/skins/controls -Imodules/gui/skins/parser ${GTK2_CFLAGS}"
LDFLAGS_skins="${LDFLAGS_skins} -lstdc++ ${GTK2_LIBS}"
fi
fi
fi
dnl
......
......@@ -58,6 +58,7 @@ SOURCES_skins = \
modules/gui/skins/src/vlcproc.h \
modules/gui/skins/src/window.cpp \
modules/gui/skins/src/window.h \
modules/gui/skins/src/wxdialogs.h \
\
modules/gui/skins/win32/win32_api.cpp \
modules/gui/skins/win32/win32_bitmap.cpp \
......@@ -96,6 +97,9 @@ SOURCES_skins = \
modules/gui/skins/gtk2/gtk2_theme.h \
modules/gui/skins/gtk2/gtk2_window.cpp \
modules/gui/skins/gtk2/gtk2_window.h \
\
modules/gui/wxwindows/messages.cpp \
modules/gui/wxwindows/open.cpp \
$(NULL)
EXTRA_DIST += \
......
......@@ -2,7 +2,7 @@
* gtk2_dialog.cpp: GTK2 implementation of some dialog boxes
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: gtk2_dialog.cpp,v 1.4 2003/04/16 21:40:07 ipkiss Exp $
* $Id: gtk2_dialog.cpp,v 1.5 2003/04/20 20:28:39 ipkiss Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
......@@ -110,8 +110,8 @@ bool GTK2OpenFileDialog::Open()
if( p_intf != NULL && p_intf->p_sys->p_theme != NULL )
{
TRACKMOUSEEVENT TrackEvent;
TrackEvent.cbSize = sizeof( TRACKMOUSEEVENT );
TrackEvent.dwFlags = TME_LEAVE|TME_CANCEL;
TrackEvent.cbSize = sizeof( TRACKMOUSEEVENT );
TrackEvent.dwFlags = TME_LEAVE|TME_CANCEL;
TrackEvent.dwHoverTime = 1;
list<Window *>::const_iterator win;
......@@ -185,178 +185,4 @@ bool GTK2OpenFileDialog::Open()
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// CALLBACKs
//---------------------------------------------------------------------------
/*LRESULT CALLBACK LogWindowProc( HWND hwnd, UINT uMsg, WPARAM wParam,
LPARAM lParam )
{
intf_thread_t *p_intf = (intf_thread_t *)GetWindowLongPtr( hwnd,
GWLP_USERDATA );
//msg_Err( p_intf, "Message to hwnd %i (%i)", (int)hwnd, (int)uMsg );
switch( uMsg )
{
case WM_PAINT:
PAINTSTRUCT Infos;
BeginPaint( hwnd , &Infos );
EndPaint( hwnd , &Infos );
return 0;
case WM_SIZE:
if( ( (GTK2Theme *)p_intf->p_sys->p_theme )
->GetLogHandle() == hwnd )
{
SetWindowPos( ( (GTK2LogWindow *)
p_intf->p_sys->p_theme->GetLogWindow() )->GetRichCtrl(),
0, 0, 0, LOWORD( lParam ), HIWORD( lParam ),
SWP_NOREDRAW|SWP_NOZORDER|SWP_NOMOVE );
}
return 0;
case WM_CLOSE:
OSAPI_PostMessage( NULL, VLC_LOG_SHOW, 0, (int)false );
p_intf->p_sys->p_theme->EvtBank->Get( "hide_log" )
->PostSynchroMessage();
return 0;
}
return DefWindowProc( hwnd, uMsg, wParam, lParam );
}
//---------------------------------------------------------------------------
DWORD CALLBACK LogWindowStream( DWORD_PTR dwCookie, LPBYTE pbBuff,
LONG cb, LONG *pcb )
{
int i;
char *text = (char *)( (string *)dwCookie )->c_str();
if( strlen( text ) < (unsigned int)cb )
{
*pcb = strlen( text );
for( i = 0; i < *pcb; i++ )
pbBuff[i] = text[i];
}
else
{
*pcb = cb;
for( i = 0; i < *pcb; i++ )
pbBuff[i] = text[i];
}
delete (string *)dwCookie;
return 0;
}*/
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// GTK2 Log Window class
//---------------------------------------------------------------------------
GTK2LogWindow::GTK2LogWindow( intf_thread_t *_p_intf ) : LogWindow( _p_intf )
{
/* hWindow = NULL;
hRichCtrl = NULL;
// Define window class
WNDCLASS WindowClass;
WindowClass.style = CS_VREDRAW|CS_HREDRAW;
WindowClass.lpfnWndProc = (WNDPROC)LogWindowProc;
WindowClass.lpszClassName = "LogWindow";
WindowClass.lpszMenuName = NULL;
WindowClass.cbClsExtra = 0;
WindowClass.cbWndExtra = 0;
WindowClass.hbrBackground = HBRUSH (COLOR_WINDOW);
WindowClass.hCursor = LoadCursor( NULL , IDC_ARROW );
WindowClass.hIcon = LoadIcon( GetModuleHandle( NULL ), "VLC_ICON" );
WindowClass.hInstance = GetModuleHandle( NULL );
// Register window class
RegisterClass( &WindowClass );
// Load library
LoadLibrary("riched20.dll");
// Init common controls
InitCommonControlsEx( NULL );
// Create log window
hWindow = CreateWindowEx( 0, "LogWindow", "Log Window",
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 300, 0, 0,
GetModuleHandle( NULL ), NULL );
// Store with it a pointer to the interface thread
SetWindowLongPtr( hWindow, GWLP_USERDATA, (LONG_PTR)p_intf );
// Create rich text control
hRichCtrl = CreateWindowEx( 0, RICHEDIT_CLASS, NULL,
WS_CHILD|WS_VISIBLE|WS_BORDER|ES_MULTILINE|ES_READONLY|WS_VSCROLL,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
hWindow, 0, GetModuleHandle( NULL ), 0);
// Change text format
SendMessage( hRichCtrl, EM_SETBKGNDCOLOR, 0, RGB(0,0,0) );
ChangeColor( RGB( 128, 128, 128 ) );
RtfHeader = "{\\rtf1 ";
Clear();*/
}
//---------------------------------------------------------------------------
GTK2LogWindow::~GTK2LogWindow()
{
/* DestroyWindow( hRichCtrl );
DestroyWindow( hWindow );*/
}
//---------------------------------------------------------------------------
void GTK2LogWindow::Clear()
{
/* EDITSTREAM *Stream;
Stream = new EDITSTREAM;
string *buffer = new string( RtfHeader );
Stream->dwCookie = (DWORD)buffer;
Stream->dwError = 0;
Stream->pfnCallback = (EDITSTREAMCALLBACK)LogWindowStream;
SendMessage( hRichCtrl, EM_STREAMIN, SF_RTF, (LPARAM)Stream );*/
}
//---------------------------------------------------------------------------
void GTK2LogWindow::AddLine( string line )
{
// Initialize stream
/* EDITSTREAM *Stream;
string *buffer = new string( RtfHeader + line + "\\par }" );
Stream = new EDITSTREAM;
Stream->dwCookie = (DWORD)buffer;
Stream->dwError = 0;
Stream->pfnCallback = (EDITSTREAMCALLBACK)LogWindowStream;
SendMessage( hRichCtrl, EM_STREAMIN, SF_RTF|SFF_SELECTION, (LPARAM)Stream );
SendMessage( hRichCtrl, WM_VSCROLL, SB_BOTTOM, 0 );*/
}
//---------------------------------------------------------------------------
void GTK2LogWindow::ChangeColor( int color, bool bold )
{
/* CHARFORMAT format;
memset(&format, 0, sizeof(CHARFORMAT));
format.cbSize = sizeof(CHARFORMAT);
format.dwMask = bold ? CFM_COLOR|CFM_BOLD : CFM_COLOR;
format.dwEffects = bold ? CFE_BOLD : 0;
format.crTextColor = color;
SendMessage( hRichCtrl, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&format );*/
}
//---------------------------------------------------------------------------
void GTK2LogWindow::Show()
{
/* ShowWindow( hWindow, SW_SHOW );
Visible = true;*/
}
//---------------------------------------------------------------------------
void GTK2LogWindow::Hide()
{
/* ShowWindow( hWindow, SW_HIDE );
Visible = false;*/
}
//---------------------------------------------------------------------------
#endif
......@@ -2,7 +2,7 @@
* gtk2_dialog.h: GTK2 implementation of some dialog boxes
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: gtk2_dialog.h,v 1.1 2003/04/12 21:43:27 asmax Exp $
* $Id: gtk2_dialog.h,v 1.2 2003/04/20 20:28:39 ipkiss Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
......@@ -51,32 +51,6 @@ class GTK2OpenFileDialog : OpenFileDialog
virtual bool Open();
};
//---------------------------------------------------------------------------
class GTK2LogWindow : LogWindow
{
private:
/* HWND hWindow;
HWND hRichCtrl;
string RtfHeader;*/
public:
// Constructors
GTK2LogWindow( intf_thread_t *_p_intf );
// Destructors
virtual ~GTK2LogWindow();
virtual void Clear();
virtual void AddLine( string line );
virtual void ChangeColor( int color, bool bold = false );
virtual void Show();
virtual void Hide();
/*
// Specific methods
HWND GetRichCtrl() { return hRichCtrl; };
HWND GetWindow() { return hWindow; };*/
};
//---------------------------------------------------------------------------
#endif
......@@ -2,7 +2,7 @@
* gtk2_theme.cpp: GTK2 implementation of the Theme class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: gtk2_theme.cpp,v 1.19 2003/04/20 16:16:34 asmax Exp $
* $Id: gtk2_theme.cpp,v 1.20 2003/04/20 20:28:39 ipkiss Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
......@@ -100,10 +100,6 @@ GTK2Theme::~GTK2Theme()
{
UnregisterClass( "SkinWindow", hinst );
}
if( GetClassInfo( hinst, "LogWindow", &wndclass ) )
{
UnregisterClass( "LogWindow", hinst );
}
if( GetClassInfo( hinst, "ParentWindow", &wndclass ) )
{
UnregisterClass( "ParentWindow", hinst );
......@@ -269,14 +265,6 @@ void GTK2Theme::AddWindow( string name, int x, int y, bool visible,
}
//---------------------------------------------------------------------------
/*HWND GTK2Theme::GetLogHandle()
{
if( Log != NULL )
return ( (GTK2LogWindow *)Log )->GetWindow();
else
return NULL;
}*/
//---------------------------------------------------------------------------
void GTK2Theme::ChangeTray()
{/*
if( ShowInTray )
......
......@@ -2,7 +2,7 @@
* gtk2_theme.h: GTK2 implementation of the Theme class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: gtk2_theme.h,v 1.2 2003/04/13 17:46:22 asmax Exp $
* $Id: gtk2_theme.h,v 1.3 2003/04/20 20:28:39 ipkiss Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
......@@ -39,7 +39,6 @@ class Window;
class EventBank;
class BitmapBank;
class FontBank;
class LogWindow;
//---------------------------------------------------------------------------
class GTK2Theme : public Theme
......@@ -62,8 +61,7 @@ class GTK2Theme : public Theme
virtual ~GTK2Theme();
/*
// Specific windows methods
HINSTANCE getInstance() { return hinst; }
HWND GetLogHandle();*/
HINSTANCE getInstance() { return hinst; } */
GdkWindow *GetParentWindow() { return ParentWindow; }
// !!!
......
......@@ -2,7 +2,7 @@
* os_dialog.h: Wrapper for the common dialogs
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: os_dialog.h,v 1.3 2003/04/16 21:40:07 ipkiss Exp $
* $Id: os_dialog.h,v 1.4 2003/04/20 20:28:39 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -27,11 +27,9 @@
#if defined( WIN32 )
#include "win32/win32_dialog.h"
#define OSOpenFileDialog Win32OpenFileDialog
#define OSLogWindow Win32LogWindow
#else
#else
#include "gtk2/gtk2_dialog.h"
#define OSOpenFileDialog GTK2OpenFileDialog
#define OSLogWindow GTK2LogWindow
#endif
......
This diff is collapsed.
......@@ -4,7 +4,7 @@
* skin.act: FleXML actions file
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: skin.act,v 1.3 2003/03/19 17:14:50 karibu Exp $
* $Id: skin.act,v 1.4 2003/04/20 20:28:39 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -140,7 +140,7 @@
</end>
<start tag="Theme">
<![CDATA[
StartTheme( {log}, {magnet} );
StartTheme( {magnet} );
]]>
</start>
<end tag="Theme">
......
/* XML application for skin.dtd (Id: skin.dtd,v 1.3 2003/03/19 17:14:50 karibu Exp).
* Includes actions from skin.act.
* Generated 2003/04/08 20:19:55.
* Generated 2003/04/20 20:23:13.
*
* This program was generated with the FleXML XML processor generator,
* (Id: flexml.pl,v 1.24 1999/12/13 16:18:30 krisrose Exp).
......@@ -226,7 +226,7 @@ void STag_Theme(void)
#line 141 "skin.act"
StartTheme( A_Theme_log, A_Theme_magnet );
StartTheme( A_Theme_magnet );
} /* STag_Theme */
......
......@@ -3,7 +3,7 @@
* skin.dtd: DTD for the VLC skins
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: skin.dtd,v 1.3 2003/03/19 17:14:50 karibu Exp $
* $Id: skin.dtd,v 1.4 2003/04/20 20:28:39 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -29,7 +29,6 @@
<!ELEMENT Theme (ThemeInfo,(Bitmap|Font|Window|Event)*)>
<!ATTLIST Theme
magnet CDATA "9"
log CDATA "false"
>
<!-- main elements -->
......
/* XML processor/application API for skin.dtd (Id: skin.dtd,v 1.3 2003/03/19 17:14:50 karibu Exp).
* Generated 2003/04/08 20:19:55.
* Generated 2003/04/20 20:23:13.
*
* This program was generated with the FleXML XML processor generator,
* (Id: flexml.pl,v 1.24 1999/12/13 16:18:30 krisrose Exp).
......@@ -174,8 +174,6 @@ typedef char* AT_PlayListControl_abs;
#define AU_PlayListControl_abs NULL
typedef char* AT_ImageControl_visible;
#define AU_ImageControl_visible NULL
typedef char* AT_Theme_log;
#define AU_Theme_log NULL
typedef char* AT_PlayListControl_width;
#define AU_PlayListControl_width NULL
typedef char* AT_SliderControl_help;
......@@ -350,7 +348,6 @@ extern AT_ControlGroup_y A_ControlGroup_y;
extern AT_PlayListControl_longfilename A_PlayListControl_longfilename;
extern AT_PlayListControl_abs A_PlayListControl_abs;
extern AT_ImageControl_visible A_ImageControl_visible;
extern AT_Theme_log A_Theme_log;
extern AT_PlayListControl_width A_PlayListControl_width;
extern AT_SliderControl_help A_SliderControl_help;
extern AT_ButtonControl_help A_ButtonControl_help;
......
......@@ -2,7 +2,7 @@
* wrappers.cpp: Wrappers around C++ objects
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: wrappers.cpp,v 1.8 2003/04/17 15:43:30 karibu Exp $
* $Id: wrappers.cpp,v 1.9 2003/04/20 20:28:39 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -94,10 +94,9 @@ void EndWindow()
{
}
//---------------------------------------------------------------------------
void StartTheme( char *log, char *magnet )
void StartTheme( char *magnet )
{
g_pIntf->p_sys->p_theme->StartTheme( ConvertBoolean( log ),
atoi( magnet ) );
g_pIntf->p_sys->p_theme->StartTheme( atoi( magnet ) );
}
//---------------------------------------------------------------------------
void EndTheme()
......
......@@ -2,7 +2,7 @@
* wrappers.h: Wrappers around C++ objects
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: wrappers.h,v 1.3 2003/03/19 17:14:50 karibu Exp $
* $Id: wrappers.h,v 1.4 2003/04/20 20:28:39 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -46,7 +46,7 @@ extern "C" {
//---------------------------------------------------------------------------
void AddThemeInfo( char *name, char *author, char *email,
char *webpage );
void StartTheme( char *log, char *magnet );
void StartTheme( char *magnet );
void EndTheme();
//---------------------------------------------------------------------------
......
......@@ -2,7 +2,7 @@
* dialog.cpp: Classes for some dialog boxes
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: dialog.cpp,v 1.3 2003/04/12 21:43:27 asmax Exp $
* $Id: dialog.cpp,v 1.4 2003/04/20 20:28:39 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -51,84 +51,3 @@ OpenFileDialog::~OpenFileDialog()
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Log Window
//---------------------------------------------------------------------------
LogWindow::LogWindow( intf_thread_t *_p_intf )
{
p_intf = _p_intf;
Visible = false;
}
//---------------------------------------------------------------------------
LogWindow::~LogWindow()
{
}
//---------------------------------------------------------------------------
void LogWindow::Update( msg_subscription_t *Sub )
{
//if( !Visible )
// return;
int i_start, i_stop;
int i_max_lines;
vlc_mutex_lock( Sub->p_lock );
i_stop = *Sub->pi_stop;
vlc_mutex_unlock( Sub->p_lock );
if( Sub->i_start != i_stop )
{
for( i_start = Sub->i_start;
i_start != i_stop;
i_start = (i_start+1) % VLC_MSG_QSIZE )
{
/* FIXME: kludge */
#ifdef WIN32
// Append all messages to log window
switch( Sub->p_msg[i_start].i_type )
{
case VLC_MSG_ERR:
ChangeColor( RGB( 255, 0, 0 ), true );
break;
case VLC_MSG_WARN:
ChangeColor( RGB( 255, 128, 0 ), true );
break;
default:
ChangeColor( RGB( 128, 128, 128 ) );
break;
#else
fprintf(stderr, "WARNING: FIXME in dialog.cpp");
// Append all messages to log window
switch( Sub->p_msg[i_start].i_type )
{
case VLC_MSG_ERR:
// ChangeColor( RGB( 255, 0, 0 ), true );
break;
case VLC_MSG_WARN:
// ChangeColor( RGB( 255, 128, 0 ), true );
break;
default:
// ChangeColor( RGB( 128, 128, 128 ) );
break;
#endif
}
// Add message
if( i_max_lines )
{
AddLine( (string)Sub->p_msg[i_start].psz_msg );
}
}
vlc_mutex_lock( Sub->p_lock );
Sub->i_start = i_start;
vlc_mutex_unlock( Sub->p_lock );
}
}
//---------------------------------------------------------------------------
......@@ -2,7 +2,7 @@
* skin_common.h: Private Skin interface description
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: skin_common.h,v 1.1 2003/03/18 02:21:47 ipkiss Exp $
* $Id: skin_common.h,v 1.2 2003/04/20 20:28:39 ipkiss Exp $
*
* Authors: Olivier Teulière <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -32,33 +32,41 @@
class Theme;
class wxIcon;
class OpenDialog;
class Messages;
/*****************************************************************************
* intf_sys_t: description and status of skin interface
*****************************************************************************/
//---------------------------------------------------------------------------
// intf_sys_t: description and status of skin interface
//---------------------------------------------------------------------------
struct intf_sys_t
{
/* Pointer to the theme main class */
// Pointer to the theme main class
Theme *p_theme;
char *p_new_theme_file;
/* The input thread */
input_thread_t * p_input;
// The input thread
input_thread_t *p_input;