Subversion Repositories Kolibri OS

Rev

Rev 3067 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3075 leency 1
//@RB - v0.6
3067 leency 2
 
3
#include "..\lib\kolibri.h"
4
#include "..\lib\figures.h"
5
#include "..\lib\file_system.h"
6
 
3075 leency 7
#include "lang.h--"
3067 leency 8
 
3075 leency 9
#ifdef LANG_RUS
10
	#define ITEM_HEIGHT 18
11
	#define ITEM_WIDTH  138
12
	char *ITEMS_LIST[]={
13
	"Сменить тему окон   ", "/sys/SKINSEL",       0,
14
	"Выбрать цвет фона   ", "/sys/media/palitra", 0,
15
	"Управление иконками ", "/sys/ICON",          0,
16
	"Настройка устройств ", "/sys/SETUP",         0,
17
	"Обновить стол       ", "/sys/REFRSCRN",      0,
18
	"Процессы            ", "/sys/CPU",           0,
19
	0};
20
#else
21
	#define ITEM_HEIGHT 18
22
	#define ITEM_WIDTH  122
23
	char *ITEMS_LIST[]={
24
	"Window skin         ", "/sys/SKINSEL",       0,
25
	"Background          ", "/sys/media/palitra", 0,
26
	"Icon manager        ", "/sys/ICON",          0,
27
	"Device setup        ", "/sys/SETUP",         0,
28
	"Refresh desktop     ", "/sys/REFRSCRN",      0,
29
	"Processes           ", "/sys/CPU",           0,
30
	0};
31
#endif
3067 leency 32
 
33
dword stak[100];
34
 
35
 
36
void main()
37
{
38
	mouse mm;
39
	byte thread_id;
40
	SetEventMask(100000b);
41
 
42
	loop() switch(WaitEvent())
43
	{
44
		case evMouse:
45
			mm.get();
46
 
47
			if (GetPointOwner(mm.x, mm.y)==1) && (mm.pkm)
48
			{
49
				SwitchToAnotherThread();
50
				CreateThread(#window,#stak);
51
			}
52
	}
53
}
54
 
55
 
56
void window()
57
{
58
	proc_info MenuForm;
59
	system_colors sc;
60
	mouse m;
61
	int items_num, items_cur;
62
	int id1, key, i;
63
 
64
	sc.get();
65
	SetEventMask(100111b);
66
 
67
	loop() switch(WaitEvent())
68
	{
69
	case evMouse:
70
				m.get();
71
 
72
				GetProcessInfo(#MenuForm, SelfInfo);
73
				id1=GetProcessSlot(MenuForm.ID);
74
				if (id1<>GetActiveProcess()) ExitProcess();
75
				id1=m.y-1/ITEM_HEIGHT;
76
				if (m.y<0) || (id1+1>items_num) || (m.x<0) || (m.x>ITEM_WIDTH) break;
77
				if (m.lkm) || (m.pkm)
78
				{
79
					//feel clicking
80
					DrawBar(1, items_cur*ITEM_HEIGHT+2, ITEM_WIDTH-1, ITEM_HEIGHT-2, sc.work_graph);
81
					WriteText(8,items_cur*ITEM_HEIGHT+6,0x80,sc.work_button_text,ITEMS_LIST[items_cur*3],0);
3075 leency 82
					pause(4);
3067 leency 83
 
84
					ItemProcess(items_cur);
85
				}
86
				if (items_cur<>id1)
87
				{
88
					items_cur=id1;
89
					goto _ITEMS_DRAW;
90
				}
91
 
92
				break;
93
 
94
		case evButton:
95
				break;
96
 
97
		case evKey:
98
				key = GetKey();
99
				if (key==27) ExitProcess();
100
				if (key==178) && (items_cur)
101
				{
102
					items_cur--;
103
					goto _ITEMS_DRAW;
104
				}
105
				if (key==177) && (items_cur+1
106
				{
107
					items_cur++;
108
					goto _ITEMS_DRAW;
109
				}
110
				if (key==13)
111
				{
112
					ItemProcess(items_cur);
113
				}
114
				break;
115
 
116
		case evReDraw:
117
				while (ITEMS_LIST[items_num*3]) items_num++;
118
				m.get();
119
				DefineAndDrawWindow(m.x+1,m.y,ITEM_WIDTH,items_num*ITEM_HEIGHT+1,0x01,sc.work,0, 0x01fffFFF);
120
				DrawRectangle(0,0,ITEM_WIDTH,items_num*ITEM_HEIGHT+1,sc.work_graph); //юсюфюъ
121
 
122
				_ITEMS_DRAW:
123
				for (i=0; i
124
				{
125
					if (i==items_cur)
126
					{
127
						DrawBar(1, i*ITEM_HEIGHT+1, ITEM_WIDTH-1, 1, sc.work_graph);
128
						DrawBar(1, i+1*ITEM_HEIGHT, ITEM_WIDTH-1, 1, 0xFFFfff);
129
						DrawBar(1, i*ITEM_HEIGHT+2, ITEM_WIDTH-1, ITEM_HEIGHT-2, sc.work_button);
130
						WriteText(8,i*ITEM_HEIGHT+6,0x80,sc.work_button_text,ITEMS_LIST[i*3],0);
131
					}
132
					else
133
					{
134
						DrawBar(1, i*ITEM_HEIGHT+1, ITEM_WIDTH-1, ITEM_HEIGHT, sc.work);
135
						WriteText(8,i*ITEM_HEIGHT+6,0x80,sc.work_text,ITEMS_LIST[i*3],0);
136
					}
137
				}
138
	}
139
}
140
 
141
void ItemProcess(int num_id)
142
{
143
	RunProgram(ITEMS_LIST[num_id*3+1], ITEMS_LIST[num_id*3+2]);
144
	ExitProcess();
145
}
146
 
147
stop: