28 bgFileSelection =
new GuiImageData(bg_file_selection_png);
29 bgFileSelectionImg =
new GuiImage(bgFileSelection);
30 bgFileSelectionImg->setParent(
this);
31 bgFileSelectionImg->setAlignment(ALIGN_H::LEFT, ALIGN_V::MIDDLE);
33 bgFileSelectionEntry =
new GuiImageData(bg_file_selection_entry_png);
37 scrollbarImg =
new GuiImage(scrollbar);
38 scrollbarImg->setParent(
this);
39 scrollbarImg->setAlignment(ALIGN_H::RIGHT, ALIGN_V::TOP);
40 scrollbarImg->setPosition(0, 30);
43 arrowDownImg =
new GuiImage(arrowDown);
44 arrowDownOver =
new GuiImageData(scrollbar_arrowdown_over_png);
45 arrowDownOverImg =
new GuiImage(arrowDownOver);
48 arrowUpOver =
new GuiImageData(scrollbar_arrowup_over_png);
49 arrowUpOverImg =
new GuiImage(arrowUpOver);
51 scrollbarBoxImg =
new GuiImage(scrollbarBox);
52 scrollbarBoxOver =
new GuiImageData(scrollbar_box_over_png);
53 scrollbarBoxOverImg =
new GuiImage(scrollbarBoxOver);
55 arrowUpBtn =
new GuiButton(arrowUpImg->getWidth(), arrowUpImg->getHeight());
56 arrowUpBtn->setParent(
this);
57 arrowUpBtn->setImage(arrowUpImg);
58 arrowUpBtn->setImageOver(arrowUpOverImg);
59 arrowUpBtn->setAlignment(ALIGN_H::RIGHT, ALIGN_V::TOP);
60 arrowUpBtn->setPosition(0, -2);
61 arrowUpBtn->setSelectable(
false);
62 arrowUpBtn->setClickable(
false);
63 arrowUpBtn->setHoldable(
true);
64 arrowUpBtn->setTrigger(trigHeldA);
66 arrowDownBtn =
new GuiButton(arrowDownImg->getWidth(), arrowDownImg->getHeight());
67 arrowDownBtn->setParent(
this);
68 arrowDownBtn->setImage(arrowDownImg);
69 arrowDownBtn->setImageOver(arrowDownOverImg);
70 arrowDownBtn->setAlignment(ALIGN_H::RIGHT, ALIGN_V::BOTTOM);
71 arrowDownBtn->setSelectable(
false);
72 arrowDownBtn->setClickable(
false);
73 arrowDownBtn->setHoldable(
true);
74 arrowDownBtn->setTrigger(trigHeldA);
76 scrollbarBoxBtn =
new GuiButton(scrollbarBoxImg->getWidth(), scrollbarBoxImg->getHeight());
77 scrollbarBoxBtn->setParent(
this);
78 scrollbarBoxBtn->setImage(scrollbarBoxImg);
79 scrollbarBoxBtn->setImageOver(scrollbarBoxOverImg);
80 scrollbarBoxBtn->setAlignment(ALIGN_H::RIGHT, ALIGN_V::TOP);
81 scrollbarBoxBtn->setMinY(0);
82 scrollbarBoxBtn->setMaxY(130);
83 scrollbarBoxBtn->setSelectable(
false);
84 scrollbarBoxBtn->setClickable(
false);
85 scrollbarBoxBtn->setHoldable(
true);
86 scrollbarBoxBtn->setTrigger(trigHeldA);
88 for(
int i=0; i<FILE_PAGESIZE; ++i)
91 fileListText[i]->
setAlignment(ALIGN_H::LEFT, ALIGN_V::MIDDLE);
92 fileListText[i]->setMaxWidth(512);
94 fileListBg[i] =
new GuiImage(bgFileSelectionEntry);
95 fileListFolder[i] =
new GuiImage(fileFolder);
99 fileList[i]->setLabel(fileListText[i]);
100 fileList[i]->setImageOver(fileListBg[i]);
206 if(
state == STATE::DISABLED || !controller)
210 int positionWiimote = 0;
212 arrowUpBtn->update(controller);
213 arrowDownBtn->update(controller);
214 scrollbarBoxBtn->update(controller);
216 auto pad = controller->getPadData();
217 int currentChan = controller->getChannel();
223 bool channelActive = pad.validPointer || pad.buttons_d != 0 || pad.buttons_h != 0;
226 if(scrollbarBoxBtn->getState() == STATE::HELD &&
227 scrollbarBoxBtn->getStateChan() == currentChan &&
229 browser.numEntries > FILE_PAGESIZE)
231 scrollbarBoxBtn->setPosition(0,0);
232 positionWiimote = pad.cursor_y - 60 - scrollbarBoxBtn->getTop();
234 if(positionWiimote < scrollbarBoxBtn->
getMinY())
235 positionWiimote = scrollbarBoxBtn->getMinY();
236 else if(positionWiimote > scrollbarBoxBtn->getMaxY())
237 positionWiimote = scrollbarBoxBtn->getMaxY();
239 browser.pageIndex = (positionWiimote * browser.numEntries)/130.0 - selectedItem;
241 if(browser.pageIndex <= 0)
243 browser.pageIndex = 0;
245 else if(browser.pageIndex+FILE_PAGESIZE >= browser.numEntries)
247 browser.pageIndex = browser.numEntries-FILE_PAGESIZE;
254 bool simulateDown = arrowDownBtn->getState() == STATE::HELD && arrowDownBtn->getStateChan() == currentChan;
255 bool simulateUp = arrowUpBtn->getState() == STATE::HELD && arrowUpBtn->getStateChan() == currentChan;
275 if(controller->right())
277 if(browser.pageIndex < browser.numEntries && browser.numEntries > FILE_PAGESIZE)
279 browser.pageIndex += FILE_PAGESIZE;
280 if(browser.pageIndex+FILE_PAGESIZE >= browser.numEntries)
281 browser.pageIndex = browser.numEntries-FILE_PAGESIZE;
285 else if(controller->left())
287 if(browser.pageIndex > 0)
289 browser.pageIndex -= FILE_PAGESIZE;
290 if(browser.pageIndex < 0)
291 browser.pageIndex = 0;
295 else if(controller->down() || simulateDown)
297 if(browser.pageIndex + selectedItem + 1 < browser.numEntries)
299 if(selectedItem == FILE_PAGESIZE-1)
307 fileList[selectedItem]->resetState();
308 fileList[++selectedItem]->setState(STATE::SELECTED, currentChan);
312 else if(controller->up() || simulateUp)
314 if(selectedItem == 0 && browser.pageIndex + selectedItem > 0)
320 else if(selectedItem > 0)
322 fileList[selectedItem]->resetState();
323 fileList[--selectedItem]->setState(STATE::SELECTED, currentChan);
329 for(
int i=0; i<FILE_PAGESIZE; ++i)
331 if(listChanged || numEntries != browser.numEntries)
333 if(browser.pageIndex+i < browser.numEntries)
336 fileList[i]->setState(STATE::DEFAULT);
340 fileListText[i]->setText(browserList[browser.pageIndex+i].displayname);
342 if(browserList[browser.pageIndex+i].isdir)
344 fileList[i]->setIcon(fileListFolder[i]);
345 fileListText[i]->setPosition(30,4);
350 fileListText[i]->setPosition(10,4);
356 fileList[i]->setState(STATE::DISABLED);
363 fileList[selectedItem]->setState(STATE::SELECTED, currentChan);
377 if(pad.validPointer && !
fileList[i]->isInside(pad.cursor_x, pad.cursor_y))
378 controller->setChannel(-1);
382 controller->setChannel(currentChan);
387 browser.selIndex = browser.pageIndex + i;
390 if(selectedItem == i)
391 fileListText[i]->setScroll(SCROLL::HORIZONTAL);
393 fileListText[i]->setScroll(SCROLL::NONE);
397 if(positionWiimote > 0)
399 position = positionWiimote;
400 scrollbarBoxBtn->setPosition(0,position+36);
402 else if(listChanged || numEntries != browser.numEntries)
404 if(
float((browser.pageIndex<<1))/(
float(FILE_PAGESIZE)) < 1.0)
408 else if(browser.pageIndex+FILE_PAGESIZE >= browser.numEntries)
414 position = 130 * (browser.pageIndex + FILE_PAGESIZE/2) / (
float)browser.numEntries;
416 scrollbarBoxBtn->setPosition(0,position+36);
420 numEntries = browser.numEntries;
Display, manage, and manipulate text in the GUI.
void setAlignment(ALIGN_H hor, ALIGN_V vert)
Sets the text alignment.