Subversion Repositories Kolibri OS

Rev

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

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