Subversion Repositories Kolibri OS

Rev

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