2 CLASS(VoretDemoList) EXTENDS(VoretListBox)
\r
3 METHOD(VoretDemoList, configureVoretDemoList, void(entity))
\r
4 ATTRIB(VoretDemoList, rowsPerItem, float, 1)
\r
5 METHOD(VoretDemoList, resizeNotify, void(entity, vector, vector, vector, vector))
\r
6 METHOD(VoretDemoList, drawListBoxItem, void(entity, float, vector, float))
\r
7 METHOD(VoretDemoList, getDemos, void(entity))
\r
8 METHOD(VoretDemoList, startDemo, void(entity))
\r
9 METHOD(VoretDemoList, demoName, string(entity, float))
\r
10 METHOD(VoretDemoList, clickListBoxItem, void(entity, float, vector))
\r
11 METHOD(VoretDemoList, keyDown, float(entity, float, float, float))
\r
12 METHOD(VoretDemoList, destroy, void(entity))
\r
13 METHOD(VoretDemoList, showNotify, void(entity))
\r
14 ATTRIB(VoretDemoList, listDemo, float, -1)
\r
15 ATTRIB(VoretDemoList, realFontSize, vector, '0 0 0')
\r
16 ATTRIB(VoretDemoList, columnNameOrigin, float, 0)
\r
17 ATTRIB(VoretDemoList, columnNameSize, float, 0)
\r
18 ATTRIB(VoretDemoList, realUpperMargin, float, 0)
\r
19 ATTRIB(VoretDemoList, origin, vector, '0 0 0')
\r
20 ATTRIB(VoretDemoList, itemAbsSize, vector, '0 0 0')
\r
21 ATTRIB(VoretDemoList, lastClickedDemo, float, -1)
\r
22 ATTRIB(VoretDemoList, lastClickedTime, float, 0)
\r
23 ATTRIB(VoretDemoList, filterString, string, string_null)
\r
24 ENDCLASS(VoretDemoList)
\r
26 entity makeVoretDemoList();
\r
27 void StartDemo_Click(entity btn, entity me);
\r
28 void TimeDemo_Click(entity btn, entity me);
\r
29 void DemoList_Filter_Change(entity box, entity me);
\r
32 #ifdef IMPLEMENTATION
\r
34 entity makeVoretDemoList()
\r
37 me = spawnVoretDemoList();
\r
38 me.configureVoretDemoList(me);
\r
42 void configureVoretDemoListVoretDemoList(entity me)
\r
44 me.configureVoretListBox(me);
\r
48 string demoNameVoretDemoList(entity me, float i )
\r
51 s = search_getfilename(me.listDemo, i);
\r
52 s = substring(s, 6, strlen(s) - 6 - 4); // demos/, .dem
\r
57 void getDemosVoretDemoList(entity me)
\r
62 //subdirectory in filterString allowed
\r
63 s=strcat("demos/*", me.filterString, "*.dem");
\r
67 //dprint("Search demos with the pattern ", s, "\n");
\r
68 if(me.listDemo >= 0)
\r
69 search_end(me.listDemo);
\r
70 me.listDemo = search_begin(s, FALSE, TRUE);
\r
74 me.nItems=search_getsize(me.listDemo);
\r
77 void destroyVoretDemoList(entity me)
\r
79 search_end(me.listDemo);
\r
82 void resizeNotifyVoretDemoList(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
\r
84 me.itemAbsSize = '0 0 0';
\r
85 resizeNotifyVoretListBox(me, relOrigin, relSize, absOrigin, absSize);
\r
87 me.realFontSize_y = me.fontSize / (me.itemAbsSize_y = (absSize_y * me.itemHeight));
\r
88 me.realFontSize_x = me.fontSize / (me.itemAbsSize_x = (absSize_x * (1 - me.controlWidth)));
\r
89 me.realUpperMargin = 0.5 * (1 - me.realFontSize_y);
\r
91 me.columnNameOrigin = me.realFontSize_x;
\r
92 me.columnNameSize = 1 - 2 * me.realFontSize_x;
\r
95 void drawListBoxItemVoretDemoList(entity me, float i, vector absSize, float isSelected)
\r
99 draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED);
\r
101 s = me.demoName(me,i);
\r
102 s = draw_TextShortenToWidth(s, me.columnNameSize, 0, me.realFontSize);
\r
103 draw_Text(me.realUpperMargin * eY + (me.columnNameOrigin + 0.00 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0);
\r
106 void showNotifyVoretDemoList(entity me)
\r
111 void DemoList_Filter_Change(entity box, entity me)
\r
113 if(me.filterString)
\r
114 strunzone(me.filterString);
\r
117 me.filterString = strzone(box.text);
\r
119 me.filterString = string_null;
\r
124 void startDemoVoretDemoList(entity me)
\r
127 s = me.demoName(me,me.selectedItem);
\r
128 localcmd("playdemo demos/", s, ".dem\nwait\ntogglemenu\n");
\r
131 void StartDemo_Click(entity btn, entity me)
\r
136 void TimeDemo_Click(entity btn, entity me)
\r
139 s = me.demoName(me,me.selectedItem);
\r
140 localcmd("timedemo demos/", s, ".dem\nwait\ntogglemenu\n");
\r
143 void clickListBoxItemVoretDemoList(entity me, float i, vector where)
\r
145 if(i == me.lastClickedDemo)
\r
146 if(time < me.lastClickedTime + 0.3)
\r
149 me.setSelected(me, i);
\r
152 me.lastClickedDemo = i;
\r
153 me.lastClickedTime = time;
\r
156 float keyDownVoretDemoList(entity me, float scan, float ascii, float shift)
\r
158 if(scan == K_ENTER) {
\r
163 return keyDownListBox(me, scan, ascii, shift);
\r