* beginning of tooltips (only in the console at the moment ;)
[vlc.git] / modules / gui / skins / x11 / x11_window.h
1 /*****************************************************************************
2  * x11_window.h: X11 implementation of the Window class
3  *****************************************************************************
4  * Copyright (C) 2003 VideoLAN
5  * $Id: x11_window.h,v 1.4 2003/06/07 12:19:23 asmax Exp $
6  *
7  * Authors: Cyril Deguet     <asmax@videolan.org>
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
22  * USA.
23  *****************************************************************************/
24
25
26 #ifndef VLC_SKIN_X11_WIN
27 #define VLC_SKIN_X11_WIN
28
29 //--- X11 -------------------------------------------------------------------
30 #include <X11/Xlib.h>
31
32 #include "x11_timer.h"
33
34 //---------------------------------------------------------------------------
35 class Graphics;
36 class Event;
37
38
39 typedef struct
40 {
41     intf_thread_t *p_intf;
42     X11Timer *timer;
43     string text;
44 } tooltip_t;
45
46
47 //---------------------------------------------------------------------------
48 class X11Window : public SkinWindow
49 {
50     private:
51         // General parameters
52         Window Wnd;
53         Display *display;
54         GC Gc;
55         int CursorX;
56         int CursorY;
57         int WindowX;
58         int WindowY;
59         string Name;
60
61         // Drag&Drop
62         X11DropObject *DropObject;
63
64         // Tooltip texts
65         Window ToolTipWindow;
66         tooltip_t ToolTipInfo;
67
68         // Double-click handling
69         int ClickedX;
70         int ClickedY;
71         int ClickedTime;
72         int DblClickDelay;
73
74         // Left button down
75         bool LButtonDown;
76         // Right button down
77         bool RButtonDown;
78
79     public:
80         // Cosntructors
81         X11Window( intf_thread_t *_p_intf, Window wnd, int x, int y,
82             bool visible, int transition, int normalalpha, int movealpha,
83             bool dragdrop, string name );
84
85         // Destructors
86         virtual ~X11Window();
87
88         // Event processing
89         virtual bool ProcessOSEvent( Event *evt );
90
91         // Window graphic aspect
92         virtual void OSShow( bool show );
93         virtual void RefreshFromImage( int x, int y, int w, int h );
94         virtual void SetTransparency( int Value = -1 );
95         virtual void WindowManualMove();
96         virtual void WindowManualMoveInit();
97
98         // Window methods
99         virtual void Move( int left, int top );
100         virtual void Size( int width, int height );
101
102         // Specific X11 methods
103         Window GetHandle() { return Wnd; };
104
105         // Tooltip texts
106         virtual void ChangeToolTipText( string text );
107
108         // Getters
109         string GetName() { return Name; }
110 };
111 //---------------------------------------------------------------------------
112
113 #endif