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: |