Warning: session_start(): open(/var/lib/php/sessions/sess_32drjg7048oktf44uvsndcohng, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!7
abstract !include #1016674 // Module List
module LoadedModuleSearch > ModuleList {
transient S query;
transient new RestartableCountdown autoHide;
transient S moduleDescForSearch;
transient O[] quickSearchParams;
transient int yesPopupOffsetY = -13;
start {
moduleDescForSearch = "Loaded";
calculateWhenHidden = true;
dm_onTopInput_q(voidfunc(S s) { doSearch(s, false) });
dm_onTopInputChange_q(voidfunc(S s) { if (neq(s, query)) doSearch(s, false) });
dm_vmBus_onMessage('hideQuickSearchModules, rEnter dm_hideModule);
quickSearchParams = new O[] {
defaultAction := voidfunc(S s) {
dm_showModule(getModule(s))
}, popupItems := toObjectArray(concatMap(dm_moduleMenuItems(), func(final Pair> p) -> L { ll(p.a, voidfunc(S s) enter {
callF(p.b, getModule(s))
}) }))
};
}
afterVisualize {
onDoubleClickOrEnter(list, r dm_hideQuickSearchModules);
}
void doSearch(S s, bool withYesPopup) enter {
if "yes" {
if (dm_hasYesPopupForComponent(list)) {
print("HAVE POPUP");
print("Clicked? " + jlist_doubleClickOnItem(list, 0));
ret;
}
}
if (dm_osLoading() || dm_dontQuickSearch(s)) ret;
query = s;
O qsm = dm_quickSearchManager();
if (qsm != null) {
results = calc();
dm_call(qsm, 'setResultsForModule, dm_moduleID(), moduleDescForSearch, query, map(results, func(S s) -> Pair {
S moduleID = firstIntAsString(s);
ret pair(dm_programID(moduleID) + " - " + dm_moduleName(moduleID), moduleID);
}), quickSearchParams);
} else {
super.update();
if (nempty(query) && nempty(results)) {
dm_placeModuleUnderAIBar_v2(this, query);
if (withYesPopup && !dm_hasYesToAcceptPopup()) {
dm_showYesToAcceptPopupWithParams(list,
imageID := #1101462,
height := 247/2,
mover := voidfunc(Component c, Component popup) enter {
JList list = cast c;
Rect r = boundsInParent(c, dm_desktopPane());
if (r == null) ret;
Rect item = jlist_itemBounds(list, 0);
setLocation(popup, r.x+item.x-popup.getWidth(), r.y+item.y+yesPopupOffsetY);
});
}
dm_autoHide(autoHide);
} else
dm_hideModule();
}
}
L modulesToList() {
if (empty(query)) ret emptyList();
L modules = super.modulesToList();
L results = scoredSearch_eachTerm(dm_getInterestingString(),
map(modules, func(fO m) -> S {
"[" + dm_moduleID(m) + "] "
+ pcallF(func -> S { dm_moduleName(m) })
+ " / " + shortClassName(m)
+ " / " + getProgramID(m) }));
ret map(results, func(S s) -> O { dm_getModule(leadingSquareBracketStuff(s)) });
}
void selectFirstEntry() { selectRow(list, 0); }
void enhanceFrame(Container f) {
super.enhanceFrame(f);
setClosable(f, false);
}
}