NotificationView::NotificationView(NotificationWindow* win, notification_type type, const char* app, const char* title, const char* text, BMessage* details) : BView(BRect(0, 0, win->ViewWidth(), 1), "NotificationView", B_FOLLOW_LEFT_RIGHT, B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE | B_FRAME_EVENTS), fParent(win), fType(type), fRunner(NULL), fProgress(0.0f), fMessageID(""), fDetails(details), fBitmap(NULL), fIsFirst(false), fIsLast(false) { BMessage iconMsg; if (fDetails->FindMessage("icon", &iconMsg) == B_OK) fBitmap = new BBitmap(&iconMsg); if (!fBitmap) _LoadIcon(); const char* messageID = NULL; if (fDetails->FindString("messageID", &messageID) == B_OK) fMessageID = messageID; if (fDetails->FindFloat("progress", &fProgress) != B_OK) fProgress = 0.0f; // Progress is between 0 and 1 if (fProgress < 0.0f) fProgress = 0.0f; if (fProgress > 1.0f) fProgress = 1.0f; SetText(app, title, text); ResizeToPreferred(); switch (type) { case B_IMPORTANT_NOTIFICATION: SetViewColor(255, 255, 255); SetLowColor(255, 255, 255); break; case B_ERROR_NOTIFICATION: SetViewColor(ui_color(B_FAILURE_COLOR)); SetLowColor(ui_color(B_FAILURE_COLOR)); break; default: SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); break; } }
BOOL DialogBehaviorTreeEditor::OnInitDialog() { if (!m_pView->Create(NULL, NULL, WS_CHILD | WS_VISIBLE, CRect(0), this, AFX_IDW_PANE_FIRST, NULL)) return FALSE; if (!InitCommandBars()) return FALSE; _CreateRibbon(); _LoadIcon(); _CreateDockPane(); m_pView->SetPropertyDlg(m_property); m_pView->SetExplorer(m_pExplorer); m_pExplorer->SetView(m_pView); m_property->SetView(m_pView); return TRUE; }
bool CMainFrame::_OnCreateRibbon() { // Initialize the command bars if (!InitCommandBars()) return false; // Get a pointer to the command bars object. CXTPCommandBars* pCommandBars = GetCommandBars(); if(pCommandBars == NULL) return false; CXTPPaintManager::SetTheme(xtpThemeRibbon); //关闭默认菜单 ::SetMenu(m_hWnd, nullptr); m_hMenuDefault = nullptr; m_dwMenuBarState = AFX_MBS_HIDDEN; //初始化图标 _LoadIcon(); ///Ribbon CXTPRibbonBar* pRibbonBar = (CXTPRibbonBar*)pCommandBars->Add(_T("Ribbon"), xtpBarTop, RUNTIME_CLASS(CXTPRibbonBar)); if (!pRibbonBar) return false; pRibbonBar->EnableDocking(0); //pRibbonBar->GetTabPaintManager()->m_bSelectOnButtonDown = FALSE; ///创建系统按钮 CXTPControlPopup* pControlFile = (CXTPControlPopup*)pRibbonBar->AddSystemButton(); pControlFile->SetIconId(IDB_GEAR); CMenu sysMenu; sysMenu.LoadMenu(IDR_MAINFRAME); CXTPPopupBar* pCommandBar = new CXTPRibbonSystemPopupBar(); pCommandBar->SetCommandBars(pCommandBars); pControlFile->SetCommandBar(pCommandBar); pCommandBar->InternalRelease(); pCommandBar->LoadMenu(sysMenu.GetSubMenu(0)); pCommandBar->SetIconSize(CSize(32, 32)); ///RibbonHome CXTPRibbonTab* pTab = pRibbonBar->AddTab(L"Home"); //RibbonHome - GroupObject CXTPRibbonGroup* pGroup = pTab->AddGroup(L"Object"); //RibbonHome - GroupObject - Select pGroup->Add(xtpControlButton, IDC_Object_Select); //RibbonHome - GroupObject - Move pGroup->Add(xtpControlButton, IDC_Object_Move); //RibbonHome - GroupObject - Rotate pGroup->Add(xtpControlButton, IDC_Object_Rotate); //RibbonHome - GroupObject - Scale pGroup->Add(xtpControlButton, IDC_Object_Scale); //RibbonHome - GroupObject - Rmove pGroup->Add(xtpControlButton, IDC_Object_Remove); ///RibbonEffect pTab = pRibbonBar->AddTab(L"Effect"); //RibbonEffect - GroupSwitch pGroup = pTab->AddGroup(L"Switch"); //RibbonEffect - GroupSwitch - Shadow pGroup->Add(xtpControlButton, IDC_Effect_Shadow); //RibbonEffect - GroupSwitch - SSAO pGroup->Add(xtpControlButton, IDC_Effect_SSAO); //RibbonEffect - GroupSwitch - Sharpen pGroup->Add(xtpControlButton, IDC_Effect_Sharpen); //RibbonEffect - GroupSwitch - FXAA pGroup->Add(xtpControlButton, IDC_Effect_FXAA); return true; }
bool CMainFrame::_OnCreateRibbon() { // Initialize the command bars if (!InitCommandBars()) return false; // Get a pointer to the command bars object. CXTPCommandBars* pCommandBars = GetCommandBars(); if(pCommandBars == NULL) return false; CXTPPaintManager::SetTheme(xtpThemeRibbon); //关闭默认菜单 ::SetMenu(m_hWnd, nullptr); m_hMenuDefault = nullptr; m_dwMenuBarState = AFX_MBS_HIDDEN; //初始化图标 _LoadIcon(); ///Ribbon CXTPRibbonBar* pRibbonBar = (CXTPRibbonBar*)pCommandBars->Add(_T("Ribbon"), xtpBarTop, RUNTIME_CLASS(CXTPRibbonBar)); if (!pRibbonBar) return false; pRibbonBar->EnableDocking(0); //pRibbonBar->GetTabPaintManager()->m_bSelectOnButtonDown = FALSE; ///创建系统按钮 CXTPControlPopup* pControlFile = (CXTPControlPopup*)pRibbonBar->AddSystemButton(); pControlFile->SetIconId(IDB_GEAR); CMenu sysMenu; sysMenu.LoadMenu(IDR_MAINFRAME); CXTPPopupBar* pCommandBar = new CXTPRibbonSystemPopupBar(); pCommandBar->SetCommandBars(pCommandBars); pControlFile->SetCommandBar(pCommandBar); pCommandBar->InternalRelease(); pCommandBar->LoadMenu(sysMenu.GetSubMenu(0)); pCommandBar->SetIconSize(CSize(32, 32)); ///RibbonHome CXTPRibbonTab* pTab = pRibbonBar->AddTab(L"Home"); //RibbonHome - GroupObject CXTPRibbonGroup* pGroup = pTab->AddGroup(L"Object"); //RibbonHome - GroupObject - Select pGroup->Add(xtpControlButton, IDC_Object_Select); //RibbonHome - GroupObject - Move pGroup->Add(xtpControlButton, IDC_Object_Move); //RibbonHome - GroupObject - Rotate pGroup->Add(xtpControlButton, IDC_Object_Rotate); //RibbonHome - GroupObject - Scale pGroup->Add(xtpControlButton, IDC_Object_Scale); //RibbonHome - GroupObject - Rmove pGroup->Add(xtpControlButton, IDC_Object_Remove); ///RibbonHome - GroupTerrainModify pGroup = pTab->AddGroup(L"Terrain Modify"); //RibbonHome - GroupTerrainModify - Deform pGroup->Add(xtpControlButton, IDC_Terrain_Deform); //RibbonHome - GroupTerrainModify - Splat CXTPControlPopup* pBtn = dynamic_cast<CXTPControlPopup*>(pGroup->Add(xtpControlSplitButtonPopup, IDC_Terrain_Splat)); pBtn->GetCommandBar()->GetControls()->Add(xtpControlButton, IDC_Terrain_Splat_Layer0); pBtn->GetCommandBar()->GetControls()->Add(xtpControlButton, IDC_Terrain_Splat_Layer1); pBtn->GetCommandBar()->GetControls()->Add(xtpControlButton, IDC_Terrain_Splat_Layer2); pBtn->GetCommandBar()->GetControls()->Add(xtpControlButton, IDC_Terrain_Splat_Layer3); pBtn->GetCommandBar()->GetControls()->Add(xtpControlButton, IDC_Terrain_Splat_Layer4); //RibbonHome - GroupTerrainBrush pGroup = pTab->AddGroup(L"Terrain Brush"); //RibbonHome - GroupTerrainBrush - EditBrushSize CXTPControlEdit* pControl = (CXTPControlEdit*)pGroup->Add(xtpControlEdit, ID_Terrain_BrushSize1); pControl->ShowSpinButtons(TRUE); pControl = (CXTPControlEdit*)pGroup->Add(xtpControlEdit, ID_Terrain_BrushSize2); pControl->ShowSpinButtons(TRUE); //RibbonHome - GroupTerrainTexture pGroup = pTab->AddGroup(L"Layer Texture"); pGroup->SetControlsCentering(TRUE); m_terrainTexGallery = CXTPControlGalleryItems::CreateItems(pCommandBars, IDC_Terrain_LayerTexture); CXTPControlGallery* pControlGallery = (CXTPControlGallery*)pGroup->Add(new CXTPControlGallery(), IDC_Terrain_LayerTexture); pControlGallery->SetControlSize(CSize(250, 60)); //pControlGallery->SetResizable(); pControlGallery->SetItemsMargin(0, 1, 0, 1); pControlGallery->ShowLabels(FALSE); pControlGallery->ShowBorders(TRUE); pControlGallery->SetItems(m_terrainTexGallery); _CreateLayerTexIcon(); //RibbonHome - GroupVegetation pGroup = pTab->AddGroup(L"Vegetation"); //RibbonHome - GroupVegetation - Grass pGroup->Add(xtpControlButton, IDC_Vegetation_Grass); ///RibbonEffect pTab = pRibbonBar->AddTab(L"Effect"); //RibbonEffect - GroupSwitch pGroup = pTab->AddGroup(L"Switch"); //RibbonEffect - GroupSwitch - Shadow pGroup->Add(xtpControlButton, IDC_Effect_Shadow); //RibbonEffect - GroupSwitch - SSAO pGroup->Add(xtpControlButton, IDC_Effect_SSAO); //RibbonEffect - GroupSwitch - Sharpen pGroup->Add(xtpControlButton, IDC_Effect_Sharpen); //RibbonEffect - GroupSwitch - FXAA pGroup->Add(xtpControlButton, IDC_Effect_FXAA); ///RibbonAnimation m_animTab = pRibbonBar->InsertTab(-1, L"Animation"); m_animTab->SetContextTab(xtpRibbonTabContextColorRed, L"Animation"); //选中了带动画物体才显示 m_animTab->SetVisible(FALSE); //RibbonAnimation - GroupAnim pGroup = m_animTab->AddGroup(L"Anim"); //RibbonAnimation - GroupAnim - AnimList m_animList = dynamic_cast<CXTPControlComboBox*>(pGroup->Add(xtpControlComboBox, IDC_Animation_Names)); m_animList->SetDropDownListStyle(); m_animList->SetWidth(150); //RibbonAnimation - GroupAnim - Play pGroup->Add(xtpControlButton, IDC_Animation_Play); //RibbonAnimation - GroupAnim - Stop pGroup->Add(xtpControlButton, IDC_Animation_Stop); //RibbonAnimation - GroupEffect pGroup = m_animTab->AddGroup(L"Effect"); //RibbonAnimation - GroupEffect - EffectList m_effectList = dynamic_cast<CXTPControlComboBox*>(pGroup->Add(xtpControlComboBox, IDC_Animation_EffectList)); m_effectList->SetDropDownListStyle(); m_effectList->SetWidth(150); //RibbonAnimation - GroupEffect - AddEffect CXTPControlPopup* pAddBtn = dynamic_cast<CXTPControlPopup*>(pGroup->Add(xtpControlSplitButtonPopup, IDC_Effect_Add)); pAddBtn->GetCommandBar()->GetControls()->Add(xtpControlButton, IDC_Effect_AddParticle); pAddBtn->GetCommandBar()->GetControls()->Add(xtpControlButton, IDC_Effect_AddEntityEffect); pAddBtn->GetCommandBar()->GetControls()->Add(xtpControlButton, IDC_Effect_AddDLight); //RibbonAnimation - GroupEffect - EffectRemove pGroup->Add(xtpControlButton, IDC_Animation_EffectRemove); return true; }
static int MessageBoxTimeoutIndirect(const MSGBOXPARAMS *lpMsgBoxParams, UINT Timeout) { DLGTEMPLATE *tpl; DLGITEMTEMPLATE *iico, *itxt; #if 0 NONCLIENTMETRICSW nclm; #endif char capbuf[32]; HMODULE hUser32 = 0; LPVOID buf; BYTE *dest; LPCSTR caption, text; HFONT hFont; HICON Icon = (HICON)0; HDC hDC; int bufsize, ret, caplen, textlen, btnlen, i, btnleft, btntop, lmargin, nButtons = 0; LONG Buttons[MSGBOXEX_MAXBTNS]; char ButtonText[MSGBOXEX_MAXBTNS][MSGBOXEX_MAXBTNSTR]; DLGITEMTEMPLATE *ibtn[MSGBOXEX_MAXBTNS]; RECT btnrect, txtrect, rc; SIZE btnsize; MSGBOXINFO mbi; BOOL defbtn = FALSE; DWORD units = GetDialogBaseUnits(); #if 0 hUser32 = GetModuleHandle(L"USER32"); #endif if(!lpMsgBoxParams->lpszCaption || !*lpMsgBoxParams->lpszCaption) { _LoadString(hUser32, IDS_ERROR, &capbuf[0], 32); caption = &capbuf[0]; } else caption = (LPCSTR)lpMsgBoxParams->lpszCaption; if(!lpMsgBoxParams->lpszText || !*lpMsgBoxParams->lpszText) text = ""; else text = (LPCSTR)lpMsgBoxParams->lpszText; caplen = strlen(caption); textlen = strlen(text); /* Create selected buttons */ switch(lpMsgBoxParams->dwStyle & MB_TYPEMASK) { case MB_OKCANCEL: Buttons[0] = IDOK; Buttons[1] = IDCANCEL; nButtons = 2; break; case MB_CANCELTRYCONTINUE: Buttons[0] = IDCANCEL; Buttons[1] = IDTRYAGAIN; Buttons[2] = IDCONTINUE; nButtons = 3; break; case MB_ABORTRETRYIGNORE: Buttons[0] = IDABORT; Buttons[1] = IDRETRY; Buttons[2] = IDIGNORE; nButtons = 3; break; case MB_YESNO: Buttons[0] = IDYES; Buttons[1] = IDNO; nButtons = 2; break; case MB_YESNOCANCEL: Buttons[0] = IDYES; Buttons[1] = IDNO; Buttons[2] = IDCANCEL; nButtons = 3; break; case MB_RETRYCANCEL: Buttons[0] = IDRETRY; Buttons[1] = IDCANCEL; nButtons = 2; break; case MB_OK: /* fall through */ default: Buttons[0] = IDOK; nButtons = 1; break; } /* Create Help button */ if(lpMsgBoxParams->dwStyle & MB_HELP) Buttons[nButtons++] = IDHELP; #if 0 switch(lpMsgBoxParams->dwStyle & MB_ICONMASK) { case MB_ICONEXCLAMATION: Icon = _LoadIcon(0, IDI_EXCLAMATION); MessageBeep(MB_ICONEXCLAMATION); break; case MB_ICONQUESTION: Icon = _LoadIcon(0, IDI_QUESTION); MessageBeep(MB_ICONQUESTION); break; case MB_ICONASTERISK: Icon = _LoadIcon(0, IDI_ASTERISK); MessageBeep(MB_ICONASTERISK); break; case MB_ICONHAND: Icon = _LoadIcon(0, IDI_HAND); MessageBeep(MB_ICONHAND); break; case MB_USERICON: Icon = _LoadIcon(lpMsgBoxParams->hInstance, (LPCWSTR)lpMsgBoxParams->lpszIcon); MessageBeep(MB_OK); break; default: /* By default, Windows 95/98/NT does not associate an icon to message boxes. * So ReactOS should do the same. */ Icon = (HICON)0; MessageBeep(MB_OK); break; } #endif /* Basic space */ bufsize = DLGTEMPLATE_SIZE + 2 * sizeof(WORD) + /* menu and class */ (caplen + 1) * sizeof(WCHAR); /* title */ /* Space for icon */ #if 0 if (NULL != Icon) { bufsize = (bufsize + 3) & ~3; bufsize += DLGITEMTEMPLATE_SIZE + 4 * sizeof(WORD) + sizeof(WCHAR); } #endif /* Space for text */ bufsize = (bufsize + 3) & ~3; bufsize += DLGITEMTEMPLATE_SIZE + 3 * sizeof(WORD) + (textlen + 1) * sizeof(WCHAR); for(i = 0; i < nButtons; i++) { switch(Buttons[i]) { case IDOK: _LoadString(hUser32, IDS_OK, ButtonText[i], MSGBOXEX_MAXBTNSTR - 1); break; case IDCANCEL: _LoadString(hUser32, IDS_CANCEL, ButtonText[i], MSGBOXEX_MAXBTNSTR - 1); break; case IDYES: _LoadString(hUser32, IDS_YES, ButtonText[i], MSGBOXEX_MAXBTNSTR - 1); break; case IDNO: _LoadString(hUser32, IDS_NO, ButtonText[i], MSGBOXEX_MAXBTNSTR - 1); break; case IDTRYAGAIN: _LoadString(hUser32, IDS_TRYAGAIN, ButtonText[i], MSGBOXEX_MAXBTNSTR - 1); break; case IDCONTINUE: _LoadString(hUser32, IDS_CONTINUE, ButtonText[i], MSGBOXEX_MAXBTNSTR - 1); break; case IDABORT: _LoadString(hUser32, IDS_ABORT, ButtonText[i], MSGBOXEX_MAXBTNSTR - 1); break; case IDRETRY: _LoadString(hUser32, IDS_RETRY, ButtonText[i], MSGBOXEX_MAXBTNSTR - 1); break; case IDIGNORE: _LoadString(hUser32, IDS_IGNORE, ButtonText[i], MSGBOXEX_MAXBTNSTR - 1); break; case IDHELP: _LoadString(hUser32, IDS_HELP, ButtonText[i], MSGBOXEX_MAXBTNSTR - 1); break; default: ButtonText[i][0] = 0; break; } /* Space for buttons */ bufsize = (bufsize + 3) & ~3; bufsize += DLGITEMTEMPLATE_SIZE + 3 * sizeof(WORD) + (strlen(ButtonText[i]) + 1) * sizeof(WCHAR); } if (!(buf = calloc( 1, bufsize + SAFETY_MARGIN))) return 0; iico = itxt = NULL; hDC = CreateCompatibleDC(0); #if 0 nclm.cbSize = sizeof(nclm); SystemParametersInfo (SPI_GETNONCLIENTMETRICS, sizeof(nclm), &nclm, 0); hFont = CreateFontIndirect (&nclm.lfMessageFont); #else hFont = GetStockObject(DEFAULT_GUI_FONT); #endif tpl = (DLGTEMPLATE *)buf; tpl->style = WS_CAPTION | WS_POPUP | WS_VISIBLE | WS_CLIPSIBLINGS | WS_SYSMENU | DS_CENTER | DS_MODALFRAME | DS_NOIDLEMSG; tpl->dwExtendedStyle = WS_EX_DLGMODALFRAME | WS_EX_WINDOWEDGE | WS_EX_CONTROLPARENT; if(lpMsgBoxParams->dwStyle & MB_TOPMOST) tpl->dwExtendedStyle |= WS_EX_TOPMOST; if(lpMsgBoxParams->dwStyle & MB_RIGHT) tpl->dwExtendedStyle |= WS_EX_RIGHT; tpl->x = 100; tpl->y = 100; tpl->cdit = nButtons + (Icon != (HICON)0) + 1; dest = ((BYTE *)tpl + DLGTEMPLATE_SIZE); *(WORD*)dest = 0; /* no menu */ *(((WORD*)dest) + 1) = 0; /* use default window class */ dest += 2 * sizeof(WORD); dest += CopyToWchar ((PWCHAR)dest, caption, caplen); #if 0 /* Create icon */ if(Icon) { dest = (BYTE*)(((ULONG)dest + 3) & (~3)); iico = (DLGITEMTEMPLATE *)dest; iico->style = WS_CHILD | WS_VISIBLE | SS_ICON; iico->dwExtendedStyle = 0; iico->id = MSGBOX_IDICON; dest += DLGITEMTEMPLATE_SIZE; *(WORD*)dest = 0xFFFF; dest += sizeof(WORD); *(WORD*)dest = 0x0082; /* static control */ dest += sizeof(WORD); *(WORD*)dest = 0xFFFF; dest += sizeof(WORD); *(WCHAR*)dest = 0; dest += sizeof(WCHAR); *(WORD*)dest = 0; dest += sizeof(WORD); } #endif /* create static for text */ dest = (BYTE*)(((DWORD)dest + 3) & ~3); itxt = (DLGITEMTEMPLATE *)dest; itxt->style = WS_CHILD | WS_VISIBLE | SS_NOPREFIX; if(lpMsgBoxParams->dwStyle & MB_RIGHT) itxt->style |= SS_RIGHT; else itxt->style |= SS_LEFT; itxt->dwExtendedStyle = 0; itxt->id = MSGBOX_IDTEXT; dest += DLGITEMTEMPLATE_SIZE; *(WORD*)dest = 0xFFFF; dest += sizeof(WORD); *(WORD*)dest = 0x0082; /* static control */ dest += sizeof(WORD); dest += CopyToWchar ((PWCHAR)dest, text, textlen); *(WORD*)dest = 0; dest += sizeof(WORD); /* create buttons */ btnsize.cx = BTN_CX; btnsize.cy = BTN_CY; btnrect.left = btnrect.top = 0; for(i = 0; i < nButtons; i++) { dest = (BYTE*)(((DWORD)dest + 3) & ~3); ibtn[i] = (DLGITEMTEMPLATE *)dest; ibtn[i]->style = WS_CHILD | WS_VISIBLE | WS_TABSTOP; if(!defbtn && (i == ((lpMsgBoxParams->dwStyle & MB_DEFMASK) >> 8))) { ibtn[i]->style |= BS_DEFPUSHBUTTON; mbi.DefBtn = Buttons[i]; defbtn = TRUE; } else ibtn[i]->style |= BS_PUSHBUTTON; ibtn[i]->dwExtendedStyle = 0; ibtn[i]->id = Buttons[i]; dest += DLGITEMTEMPLATE_SIZE; *(WORD*)dest = 0xFFFF; dest += sizeof(WORD); *(WORD*)dest = 0x0080; /* button control */ dest += sizeof(WORD); btnlen = strlen(ButtonText[i]); dest += CopyToWchar ((PWCHAR)dest, ButtonText[i], btnlen); *(WORD*)dest = 0; dest += sizeof(WORD); SelectObject(hDC, hFont); DrawText(hDC, ButtonText[i], btnlen, &btnrect, DT_LEFT | DT_SINGLELINE | DT_CALCRECT); btnsize.cx = max(btnsize.cx, btnrect.right); btnsize.cy = max(btnsize.cy, btnrect.bottom); }