char const *findExecs(char const *name) // 001 { static TstrBuf tmp; static TstrBuf rtn; int first = 1; tmp = name; rtn = ""; char *start = (char*)(char const*)tmp; char *end = (char*)(char const*)tmp; char c; while (isspace(*start)) start++; while ('\0' != *start) { end = start; while (('\0' != *end) && !isspace(*end)) end++; c = *end; *end = '\0'; // Process if (first) first = 0; else rtn.cat(" "); char const *fred = findExec(start); rtn.cat(fred); *end = c; start = end; while (isspace(*start)) start++; } return ((char const*)rtn); }
BrowserIcon::BrowserIcon(QFileInfo f, QString url, QWidget *parent) : QPushButton(QIcon::fromTheme(f.baseName()), "", parent) { setIconSize(QSize(ICONSIZE, ICONSIZE)); setFixedSize(QSize(ICONSIZE,ICONSIZE)); exec = findExec(f, url); }
optional<LRESULT> WindowImpl::processMessage(UINT message, WPARAM & wParam, LPARAM & lParam) { if( auto result = NativeControlImpl::processMessage(message,wParam,lParam) ) return result; switch( message ) { case WM_CLOSE: { auto canClose = findExec(this,cbClose); if( canClose ) { if( *canClose == false ) return 0; } hide(); return 0; } break; // TODO verify the need of creating on_minimize and on_maximize callbacks also case WM_SIZE: { WDims newDims = lParamToWDims(lParam); bool max = false; switch(wParam) { case SIZE_MINIMIZED: state_ |= ws_minimized; state_ &= ~ws_maximized; break; case SIZE_MAXIMIZED: max = true; state_ &= ~ws_minimized; state_ |= ws_maximized; break; case SIZE_RESTORED: state_ &= ~(ws_minimized | ws_maximized); break; } bool notChanged = true; auto resNewDims = findExec(this,cbResize,newDims); if( resNewDims ) { if( *resNewDims != newDims ) { if( max ) { ShowWindow(hWnd,SW_RESTORE); } setDims(*resNewDims); notChanged = false; } } if( notChanged ) { executeCallback(this, cbAfterResize, newDims); } } break; case WM_COMMAND: { ResourceManagerSingleton resourceManager; if( lParam == 0 ) { for( auto & component : components ) { auto result = component->processNotification(WM_COMMAND,HIWORD(wParam),LOWORD(wParam),lParam); if( result ) return result; } } else if( auto control = resourceManager->findControl(HWND(lParam)) ) { return control->processNotification(WM_COMMAND,HIWORD(wParam),wParam,lParam); } } break; case WM_NOTIFY: { ResourceManagerSingleton resourceManager; auto hdr = reinterpret_cast<LPNMHDR>(lParam); if( auto control = resourceManager->findControl(hdr->hwndFrom) ) { return control->processNotification(WM_NOTIFY,hdr->code,wParam,lParam); } } break; default: if( message >= WM_USER ) { if( executeCallback(this,cbUserEvent,toUserEvent(message,lParam)) ) { return 0; } } } return optional<LRESULT>(); }