예제 #1
0
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);
}
예제 #2
0
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);
}
예제 #3
0
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>();
}