forked from joelburget/slimlock
-
Notifications
You must be signed in to change notification settings - Fork 1
/
panel.h
127 lines (106 loc) · 2.89 KB
/
panel.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/* SLiM - Simple Login Manager
Copyright (C) 1997, 1998 Per Liden
Copyright (C) 2004-06 Simone Rota <sip@varlock.com>
Copyright (C) 2004-06 Johannes Winkelmann <jw@tks6.net>
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.
*/
#ifndef _PANEL_H_
#define _PANEL_H_
#include <X11/Xlib.h>
#include <X11/keysym.h>
#include <X11/Xutil.h>
#include <X11/Xft/Xft.h>
#include <X11/cursorfont.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <signal.h>
#include <iostream>
#include <string>
#ifdef NEEDS_BASENAME
#include <libgen.h>
#endif
#include "cfg.h"
#include "const.h"
#include "image.h"
class Panel {
public:
Panel(Display* dpy, int scr, Window root, Cfg* config,
const std::string& themedir);
~Panel();
void ClosePanel();
void WrongPassword(int timeout);
void Message(const std::string& text);
void EventHandler();
void ResetPasswd(void);
void SetName(const std::string& name);
const std::string& GetName(void) const;
const std::string& GetPasswd(void) const;
private:
Panel();
void Cursor(int visible);
unsigned long GetColor(const char* colorname);
void OnExpose(void);
bool OnKeyPress(XEvent& event);
void ShowText();
void SlimDrawString8(XftDraw *d, XftColor *color, XftFont *font,
int x, int y, const std::string& str,
XftColor* shadowColor,
int xOffset, int yOffset);
Cfg* cfg;
// Private data
Window Win;
Display* Dpy;
int Scr;
int X, Y;
GC TextGC;
XftFont* font;
XftColor inputshadowcolor;
XftColor inputcolor;
XftColor msgcolor;
XftColor msgshadowcolor;
XftFont* msgfont;
XftColor introcolor;
XftFont* introfont;
XftFont* welcomefont;
XftColor welcomecolor;
XftColor welcomeshadowcolor;
XftFont* enterfont;
XftColor entercolor;
XftColor entershadowcolor;
// Username/Password
std::string NameBuffer;
std::string PasswdBuffer;
std::string HiddenPasswdBuffer;
// screen stuff
int screen1_width;
int screen1_height;
// Configuration
int input_name_x;
int input_name_y;
int input_pass_x;
int input_pass_y;
int inputShadowXOffset;
int inputShadowYOffset;
int input_cursor_height;
int welcome_x;
int welcome_y;
int welcome_shadow_xoffset;
int welcome_shadow_yoffset;
int intro_x;
int intro_y;
int username_x;
int username_y;
int username_shadow_xoffset;
int username_shadow_yoffset;
int password_x;
int password_y;
std::string welcome_message;
std::string intro_message;
Image* image;
// For thesting themes
std::string themedir;
};
#endif