Subversion Repositories Kolibri OS

Rev

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

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