Subversion Repositories Kolibri OS

Rev

Rev 5674 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5674 Rev 5738
Line 1... Line 1...
1
#define MEMSIZE 0x3E80
1
#ifndef AUTOBUILD
2
#include "..\lib\kolibri.h" 
-
 
3
#include "..\lib\gui.h" 
2
#include "lang.h--"
4
#include "..\lib\strings.h" 
-
 
5
#include "..\lib\random.h" 
-
 
6
#include "..\lib\mem.h" 
-
 
7
#include "..\lib\file_system.h"
-
 
8
 
-
 
9
#ifndef ru
-
 
10
	char *BUTTONS_CAPTIONS[]={
-
 
11
	"Ïåðåçàãðóçêà    [Enter]"w, 13,
-
 
12
	"Âûêëþ÷åíèå        [End]"w, 181,
-
 
13
	//"ßäðî             [Home]"w, 180,
-
 
14
	"Îòìåíà            [Esc]"w, 27,
-
 
15
	0};
-
 
16
#else
-
 
17
	char *BUTTONS_CAPTIONS[]={
-
 
18
	" Reboot        [Enter]",13,
-
 
19
	" Power off       [End]",181,
-
 
20
	//" Kernel         [Home]",180,
-
 
21
	" Close           [Esc]",27,
-
 
22
	0};
-
 
23
#endif
3
#endif
Line 24... Line 4...
24
 
4
 
25
unsigned char moon[6*6] = FROM "moon.raw";
-
 
26
 
5
#define MEMSIZE 4096*4
27
int WIN_SIZE_X, WIN_SIZE_Y;
6
#include "../lib/gui.h"
28
int PANEL_X, PANEL_Y;
7
#include "../lib/file_system.h"
-
 
8
 
29
 
9
#ifdef LANG_RUS
-
 
10
#define TEXT_TITLE "Завершение работы"
-
 
11
#define TEXT_RDSAVE1 "Нажмите Ctrl+S для сохранения изменений"
30
#define NIGHT_PALEL_HEIGHT	50
12
#define TEXT_RDSAVE2 "сделанных в процессе работы в системе."
31
#define STARS_COUNT			25
-
 
32
 
13
#define TEXT_REBOOT "Перезагрузка"
33
#define PANEL_SIZE_X		260
14
#define TEXT_OFF "Выключение"
34
#define PANEL_SIZE_Y		148
15
#define TEXT_CANCEL "Отмена"
35
 
16
#else
36
:void ShadowScreen(dword img, w, h)
-
 
37
{
17
#define TEXT_TITLE "Shutdown computer"
-
 
18
#define TEXT_RDSAVE1 "Press Ctrl+S to save all changes"
38
	dword to = w*h*3 + img;
19
#define TEXT_RDSAVE2 "that were done during system work."
39
	for ( ; img < to; img+=4)
-
 
40
	{
20
#define TEXT_REBOOT "Reboot"
41
		ESDWORD[img] >>= 1;
21
#define TEXT_OFF "Power off"
42
		$and ESDWORD[img], 7F7F7F7Fh
22
#define TEXT_CANCEL "Close"
43
	}
-
 
44
	//for ( ; img < to; img+=4) { ESDWORD[img] >>= 2;	$and ESDWORD[img], 3F3F3F3Fh }
-
 
Line -... Line 23...
-
 
23
#endif
-
 
24
 
-
 
25
#define WIN_W 440
Line 45... Line 26...
45
}
26
#define WIN_H 200
46
 
27
#define BOT_PANEL_H 70
47
 
28
 
48
void main()
29
void main()
-
 
30
{
Line 49... Line -...
49
{   
-
 
50
	int key;
-
 
51
	dword s1,s2, s3, s4, sides_w,i;
-
 
52
 
-
 
53
	WIN_SIZE_X=GetScreenWidth()+1;
-
 
54
	WIN_SIZE_Y=GetScreenHeight()+1;
-
 
55
	PANEL_X=WIN_SIZE_X-PANEL_SIZE_X/2;
-
 
56
	PANEL_Y=WIN_SIZE_Y-PANEL_SIZE_Y/2;
-
 
57
 
-
 
58
	sides_w = WIN_SIZE_X-PANEL_SIZE_X/2;
-
 
59
	s1 = mem_Alloc(WIN_SIZE_X*PANEL_Y*3);
-
 
60
	s2 = mem_Alloc(sides_w*PANEL_Y*3);
-
 
61
	s3 = mem_Alloc(sides_w*PANEL_Y*3);
-
 
62
	s4 = mem_Alloc(WIN_SIZE_X*PANEL_Y*3);	
-
 
63
 
-
 
64
	CopyScreen(s1, 0, 0, WIN_SIZE_X, PANEL_Y);
-
 
65
	ShadowScreen(s1, WIN_SIZE_X, PANEL_Y);
-
 
66
 
-
 
67
	CopyScreen(s2, 0, PANEL_Y, sides_w, PANEL_SIZE_Y+1);
-
 
68
	ShadowScreen(s2, sides_w, PANEL_SIZE_Y+1);
-
 
69
 
-
 
70
	CopyScreen(s3, sides_w+PANEL_SIZE_X+1, PANEL_Y, sides_w-1, PANEL_SIZE_Y+1);
-
 
71
	ShadowScreen(s3, sides_w, PANEL_SIZE_Y+1);
-
 
72
 
-
 
73
	CopyScreen(s4, 0, PANEL_Y+PANEL_SIZE_Y+1, WIN_SIZE_X, PANEL_Y-1);
-
 
74
	ShadowScreen(s4, WIN_SIZE_X, PANEL_Y-1);
31
	int key;
75
 
32
	int WIN_X = GetScreenWidth() - WIN_W / 2;
76
 
-
 
77
	goto _DRAW;
33
	int WIN_Y = GetScreenHeight() - WIN_H / 2;
78
	loop()
34
 
79
   {
35
	loop()
80
		WaitEventTimeout(7);
36
	{
81
		switch(EAX & 0xFF)
37
	  switch(WaitEvent())
82
		{
38
	  {
Line 83... Line 39...
83
		case evButton:
39
		 case evButton:
84
			key=GetButtonID();               
40
			key=GetButtonID();               
85
			if (key==1) ExitProcess();
41
			if (key==1) ExitProcess();
86
			GOTO _BUTTON_MARK;
42
			GOTO _BUTTON_MARK;
87
			
-
 
88
		case evKey:
43
	  
89
			key = GetKey();
44
		case evKey:
90
			_BUTTON_MARK:
-
 
91
			if (key== 13) ExitSystem(REBOOT);   //ENTER
-
 
92
			if (key==180) ExitSystem(KERNEL);   //HOME
45
			key = GetKey();
93
			if (key==181) ExitSystem(TURN_OFF); //END
-
 
94
			if (key== 27) ExitProcess();        //ESC
-
 
95
			if (key== 19) //CTRL+S
46
			_BUTTON_MARK:
Line 96... Line 47...
96
			{
47
			if (key==ASCII_KEY_ENTER) ExitSystem(REBOOT);
97
				RunProgram("rdsave",0);
-
 
98
				ExitProcess();
48
			if (key==ASCII_KEY_END) ExitSystem(TURN_OFF);
99
			}
49
			if (key==ASCII_KEY_ESC) ExitProcess();
100
			break;
50
			if (key==19) RunProgram("rdsave",0);
101
         
51
			break;
-
 
52
		 
102
		case evReDraw:
53
		 case evReDraw:
-
 
54
			DefineAndDrawWindow(WIN_X, WIN_Y, WIN_W-1, WIN_H-1, 0x41, 0, 0, 0);
103
			system.color.get();
55
			DrawWideRectangle(0, 0, WIN_W, WIN_H, 2, 0xA3A7AA);
104
			DefineAndDrawWindow(0,0,WIN_SIZE_X, WIN_SIZE_Y, 0x01, 0, 0, 0x01fffFFF);
56
			DrawBar(2, 2, WIN_W-4, WIN_H-BOT_PANEL_H-2, 0x202020);
-
 
57
			DrawBar(2, WIN_H-BOT_PANEL_H-2, WIN_W-4, BOT_PANEL_H, 0x4B4B4B);
105
			//_PutImage(0,0,WIN_SIZE_X,WIN_SIZE_Y,shadow_buf);
58
			WriteText(30, 27, 10110001b, 0xFFFfff, TEXT_TITLE);
106
			_PutImage(0,0,WIN_SIZE_X, PANEL_Y,s1);
-
 
107
			_PutImage(0,PANEL_Y,sides_w, PANEL_SIZE_Y+1,s2);
-
 
108
			_PutImage(sides_w+PANEL_SIZE_X+1,PANEL_Y,sides_w-1, PANEL_SIZE_Y+1,s3);
59
			WriteText(30, 70, 10110000b, 0xFFFfff, TEXT_RDSAVE1);
109
			_PutImage(0,PANEL_Y+PANEL_SIZE_Y+1,WIN_SIZE_X, PANEL_Y-1,s4);
60
			WriteText(30, 85, 10110000b, 0xFFFfff, TEXT_RDSAVE2);
110
			draw_main_area(PANEL_X, PANEL_Y, PANEL_SIZE_X, PANEL_SIZE_Y);
61
			EndButton( 20, 0x4E91C5, ASCII_KEY_ESC, TEXT_CANCEL, "Esc");
Line 111... Line -...
111
			break;
-
 
112
		default: _DRAW:
62
			EndButton(160, 0x55C891, ASCII_KEY_ENTER, TEXT_REBOOT, "Enter");
113
			draw_stars();
63
			EndButton(300, 0xC75C54, ASCII_KEY_END, TEXT_OFF, "End");
-
 
64
			break;
-
 
65
	  }
114
      }
66
   }
115
   }
-
 
116
}
67
}
117
 
-
 
118
 
-
 
119
void draw_main_area()
68
 
120
{
-
 
121
	int i=0;
69
void EndButton(dword x, bgcol, id, but_text, hotkey_text)
122
	
70
{
123
	DrawRectangle(PANEL_X, PANEL_Y, PANEL_SIZE_X, PANEL_SIZE_Y, 0);
-
 
124
	DrawBar(PANEL_X+1, PANEL_Y+NIGHT_PALEL_HEIGHT+1, PANEL_SIZE_X-1, PANEL_SIZE_Y-NIGHT_PALEL_HEIGHT-1, system.color.work);
-
 
125
	
-
 
126
	for (i=0; i<3; i++)
71
	word buty=WIN_H-60;
127
	{
-
 
128
		DefineButton(PANEL_X+33, i*23 + PANEL_Y+NIGHT_PALEL_HEIGHT+16, 190,19, BUTTONS_CAPTIONS[i*2+1],system.color.work_button);
-
 
129
		WriteText(PANEL_X+59, i*23 + PANEL_Y+NIGHT_PALEL_HEIGHT+22, 0x80,system.color.work_button_text, BUTTONS_CAPTIONS[i*2]);
-
 
130
	}
-
 
131
		
-
 
132
	draw_stars();
-
 
133
}
-
 
134
 
-
 
135
dword stars_col[4]={0xD2CF19, 0x716900, 0x002041, 0xEAE0DE}; //0x005BFF - ãîëóáîé, ðåäêî
-
 
136
 
-
 
137
void draw_stars()
-
 
138
{
-
 
139
 
-
 
140
	int i, x_pic, y_pic, col;
-
 
141
	
-
 
142
	DrawBar(PANEL_X+1, PANEL_Y+1, PANEL_SIZE_X-1, NIGHT_PALEL_HEIGHT, 0x002041);
-
 
143
	
-
 
144
	for (i=0; i
-
 
145
	{
-
 
146
		x_pic = random(PANEL_SIZE_X-2);
-
 
147
		y_pic = random(NIGHT_PALEL_HEIGHT-2);
-
 
148
		col = random(4);
-
 
149
		PutPixel(PANEL_X+2 +x_pic, PANEL_Y+2 +y_pic, stars_col[col]);
-
 
150
		if (stars_col[col]==0xD2CF19)
-
 
151
		{
-
 
152
			PutPixel(PANEL_X+2 +x_pic+1, PANEL_Y+2 +y_pic, stars_col[col+1]);
-
 
153
			PutPixel(PANEL_X+2 +x_pic-1, PANEL_Y+2 +y_pic, stars_col[col+1]);
-
 
154
			PutPixel(PANEL_X+2 +x_pic, PANEL_Y+2 +y_pic-1, stars_col[col+1]);
-
 
155
			PutPixel(PANEL_X+2 +x_pic, PANEL_Y+2 +y_pic+1, stars_col[col+1]);
-
 
156
		}
-
 
157
 
-
 
158
	}
-
 
159
	_PutImage(PANEL_X+PANEL_SIZE_X-60+random(3),PANEL_Y+10+random(3), 6,6, #moon);
-