Subversion Repositories Kolibri OS

Rev

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