26 btnSoundOver =
new GuiSound(button_over_pcm, button_over_pcm_size, SOUND::PCM);
27 btnSoundClick =
new GuiSound(button_click_pcm, button_click_pcm_size, SOUND::PCM);
29 bgFileSelection =
new GuiImageData(bg_file_selection_png);
30 bgFileSelectionImg =
new GuiImage(bgFileSelection);
31 bgFileSelectionImg->setParent(
this);
32 bgFileSelectionImg->setAlignment(ALIGN_H::LEFT, ALIGN_V::MIDDLE);
34 bgFileSelectionEntry =
new GuiImageData(bg_file_selection_entry_png);
38 scrollbarImg =
new GuiImage(scrollbar);
39 scrollbarImg->setParent(
this);
40 scrollbarImg->setAlignment(ALIGN_H::RIGHT, ALIGN_V::TOP);
41 scrollbarImg->setPosition(0, 30);
44 arrowDownImg =
new GuiImage(arrowDown);
45 arrowDownOver =
new GuiImageData(scrollbar_arrowdown_over_png);
46 arrowDownOverImg =
new GuiImage(arrowDownOver);
49 arrowUpOver =
new GuiImageData(scrollbar_arrowup_over_png);
50 arrowUpOverImg =
new GuiImage(arrowUpOver);
52 scrollbarBoxImg =
new GuiImage(scrollbarBox);
53 scrollbarBoxOver =
new GuiImageData(scrollbar_box_over_png);
54 scrollbarBoxOverImg =
new GuiImage(scrollbarBoxOver);
56 arrowUpBtn =
new GuiButton(arrowUpImg->getWidth(), arrowUpImg->getHeight());
57 arrowUpBtn->setParent(
this);
58 arrowUpBtn->setImage(arrowUpImg);
59 arrowUpBtn->setImageOver(arrowUpOverImg);
60 arrowUpBtn->setAlignment(ALIGN_H::RIGHT, ALIGN_V::TOP);
61 arrowUpBtn->setPosition(0, -2);
62 arrowUpBtn->setSelectable(
false);
63 arrowUpBtn->setClickable(
false);
64 arrowUpBtn->setHoldable(
true);
65 arrowUpBtn->setTrigger(trigHeldA);
66 arrowUpBtn->setSoundOver(btnSoundOver);
67 arrowUpBtn->setSoundClick(btnSoundClick);
69 arrowDownBtn =
new GuiButton(arrowDownImg->getWidth(), arrowDownImg->getHeight());
70 arrowDownBtn->setParent(
this);
71 arrowDownBtn->setImage(arrowDownImg);
72 arrowDownBtn->setImageOver(arrowDownOverImg);
73 arrowDownBtn->setAlignment(ALIGN_H::RIGHT, ALIGN_V::BOTTOM);
74 arrowDownBtn->setSelectable(
false);
75 arrowDownBtn->setClickable(
false);
76 arrowDownBtn->setHoldable(
true);
77 arrowDownBtn->setTrigger(trigHeldA);
78 arrowDownBtn->setSoundOver(btnSoundOver);
79 arrowDownBtn->setSoundClick(btnSoundClick);
81 scrollbarBoxBtn =
new GuiButton(scrollbarBoxImg->getWidth(), scrollbarBoxImg->getHeight());
82 scrollbarBoxBtn->setParent(
this);
83 scrollbarBoxBtn->setImage(scrollbarBoxImg);
84 scrollbarBoxBtn->setImageOver(scrollbarBoxOverImg);
85 scrollbarBoxBtn->setAlignment(ALIGN_H::RIGHT, ALIGN_V::TOP);
86 scrollbarBoxBtn->setMinY(0);
87 scrollbarBoxBtn->setMaxY(130);
88 scrollbarBoxBtn->setSelectable(
false);
89 scrollbarBoxBtn->setClickable(
false);
90 scrollbarBoxBtn->setHoldable(
true);
91 scrollbarBoxBtn->setTrigger(trigHeldA);
93 for(
int i=0; i<FILE_PAGESIZE; ++i)
96 fileListText[i]->
setAlignment(ALIGN_H::LEFT, ALIGN_V::MIDDLE);
97 fileListText[i]->setMaxWidth(512);
99 fileListBg[i] =
new GuiImage(bgFileSelectionEntry);
100 fileListFolder[i] =
new GuiImage(fileFolder);
104 fileList[i]->setLabel(fileListText[i]);
105 fileList[i]->setImageOver(fileListBg[i]);
108 fileList[i]->setSoundClick(btnSoundClick);
213 if(
state == STATE::DISABLED || !controller)
217 int positionWiimote = 0;
219 arrowUpBtn->update(controller);
220 arrowDownBtn->update(controller);
221 scrollbarBoxBtn->update(controller);
223 auto pad = controller->getPadData();
224 int currentChan = controller->getChannel();
230 bool channelActive = pad.validPointer || pad.buttons_d != 0 || pad.buttons_h != 0;
233 if(scrollbarBoxBtn->getState() == STATE::HELD &&
234 scrollbarBoxBtn->getStateChan() == currentChan &&
236 browser.numEntries > FILE_PAGESIZE)
238 scrollbarBoxBtn->setPosition(0,0);
239 positionWiimote = pad.cursor_y - 60 - scrollbarBoxBtn->getTop();
241 if(positionWiimote < scrollbarBoxBtn->
getMinY())
242 positionWiimote = scrollbarBoxBtn->getMinY();
243 else if(positionWiimote > scrollbarBoxBtn->getMaxY())
244 positionWiimote = scrollbarBoxBtn->getMaxY();
246 browser.pageIndex = (positionWiimote * browser.numEntries)/130.0 - selectedItem;
248 if(browser.pageIndex <= 0)
250 browser.pageIndex = 0;
252 else if(browser.pageIndex+FILE_PAGESIZE >= browser.numEntries)
254 browser.pageIndex = browser.numEntries-FILE_PAGESIZE;
261 bool simulateDown = arrowDownBtn->getState() == STATE::HELD && arrowDownBtn->getStateChan() == currentChan;
262 bool simulateUp = arrowUpBtn->getState() == STATE::HELD && arrowUpBtn->getStateChan() == currentChan;
282 if(controller->right())
284 if(browser.pageIndex < browser.numEntries && browser.numEntries > FILE_PAGESIZE)
286 browser.pageIndex += FILE_PAGESIZE;
287 if(browser.pageIndex+FILE_PAGESIZE >= browser.numEntries)
288 browser.pageIndex = browser.numEntries-FILE_PAGESIZE;
292 else if(controller->left())
294 if(browser.pageIndex > 0)
296 browser.pageIndex -= FILE_PAGESIZE;
297 if(browser.pageIndex < 0)
298 browser.pageIndex = 0;
302 else if(controller->down() || simulateDown)
304 if(browser.pageIndex + selectedItem + 1 < browser.numEntries)
306 if(selectedItem == FILE_PAGESIZE-1)
314 fileList[selectedItem]->resetState();
315 fileList[++selectedItem]->setState(STATE::SELECTED, currentChan);
319 else if(controller->up() || simulateUp)
321 if(selectedItem == 0 && browser.pageIndex + selectedItem > 0)
327 else if(selectedItem > 0)
329 fileList[selectedItem]->resetState();
330 fileList[--selectedItem]->setState(STATE::SELECTED, currentChan);
336 for(
int i=0; i<FILE_PAGESIZE; ++i)
338 if(listChanged || numEntries != browser.numEntries)
340 if(browser.pageIndex+i < browser.numEntries)
343 fileList[i]->setState(STATE::DEFAULT);
347 fileListText[i]->setText(browserList[browser.pageIndex+i].displayname);
349 if(browserList[browser.pageIndex+i].isdir)
351 fileList[i]->setIcon(fileListFolder[i]);
352 fileListText[i]->setPosition(30,4);
357 fileListText[i]->setPosition(10,4);
363 fileList[i]->setState(STATE::DISABLED);
370 fileList[selectedItem]->setState(STATE::SELECTED, currentChan);
384 if(pad.validPointer && !
fileList[i]->isInside(pad.cursor_x, pad.cursor_y))
385 controller->setChannel(-1);
389 controller->setChannel(currentChan);
394 browser.selIndex = browser.pageIndex + i;
397 if(selectedItem == i)
398 fileListText[i]->setScroll(SCROLL::HORIZONTAL);
400 fileListText[i]->setScroll(SCROLL::NONE);
404 if(positionWiimote > 0)
406 position = positionWiimote;
407 scrollbarBoxBtn->setPosition(0,position+36);
409 else if(listChanged || numEntries != browser.numEntries)
411 if(
float((browser.pageIndex<<1))/(
float(FILE_PAGESIZE)) < 1.0)
415 else if(browser.pageIndex+FILE_PAGESIZE >= browser.numEntries)
421 position = 130 * (browser.pageIndex + FILE_PAGESIZE/2) / (
float)browser.numEntries;
423 scrollbarBoxBtn->setPosition(0,position+36);
427 numEntries = browser.numEntries;
Display, manage, and manipulate text in the GUI.
void setAlignment(ALIGN_H hor, ALIGN_V vert)
Sets the text alignment.