// Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved // Please see LICENSE.md in repository root for license information // https://github.com/AtomicGameEngine/AtomicGameEngine #include "AtomicEditor.h" #include #include "AEEvents.h" #include "UI/UIMainFrame.h" #include "UI/Modal/UIBuildComplete.h" #include #include #include #include #include #include #include using namespace tb; namespace AtomicEditor { /// Construct. UIBuildComplete::UIBuildComplete(Context* context, const String &title, const String &message, const String &buildFolder, bool success) : AEWidget(context) , window_(0) , dimmer_(0) { buildFolder_ = buildFolder; success_ = success; UI* tbui = GetSubsystem(); dimmer_ = new TBDimmer(); window_ = new TBWindow(); tbui->LoadResourceFile(window_->GetContentRoot(), "AtomicEditor/editor/ui/buildcomplete.tb.txt"); window_->ResizeToFitContent(); delegate_->AddChild(window_); message_ = delegate_->GetWidgetByIDAndType(TBIDC("message")); assert(message_); TBButton* reveal = delegate_->GetWidgetByIDAndType(TBIDC("reveal")); assert(reveal); if (!success) reveal->SetState(WIDGET_STATE_DISABLED, true); message_->SetText(message.CString()); window_->SetText(title.CString()); Center(); TBWidgetListener::AddGlobalListener(this); } /// Destruct. UIBuildComplete::~UIBuildComplete() { TBWidgetListener::RemoveGlobalListener(this); } bool UIBuildComplete::OnEvent(const TBWidgetEvent &ev) { BuildSystem* buildSystem = GetSubsystem(); if (ev.type == EVENT_TYPE_CLICK) { if (ev.target->GetID() == TBIDC("ok")) { buildSystem->ClearBuildCompleteUI(); return true; } else if (ev.target->GetID() == TBIDC("reveal")) { ProjectUtils* utils = GetSubsystem(); utils->RevealInFinder(buildFolder_); return true; } } return false; } void UIBuildComplete::SetMessage(const String& message) { message_->SetText(message.CString()); } void UIBuildComplete::Center() { UI* tbui = GetSubsystem(); TBRect rect = window_->GetRect(); TBWidget* root = tbui->GetRootWidget(); TBRect bounds(0, 0, root->GetRect().w, root->GetRect().h); window_->SetRect(rect.CenterIn(bounds).MoveIn(bounds).Clip(bounds)); delegate_->SetRect(bounds); } void UIBuildComplete::Show() { assert(!dimmer_->GetParent()); UI* tbui = GetSubsystem(); TBWidget* root = tbui->GetRootWidget(); root->AddChild(dimmer_); root->AddChild(delegate_); } void UIBuildComplete::Hide() { UI* tbui = GetSubsystem(); tbui->GetRootWidget()->SetFocusRecursive(WIDGET_FOCUS_REASON_UNKNOWN); if (dimmer_->GetParent()) dimmer_->GetParent()->RemoveChild(dimmer_); if (delegate_->GetParent()) delegate_->GetParent()->RemoveChild(delegate_); } void UIBuildComplete::OnWidgetDelete(TBWidget *widget) { if (widget == window_) { BuildSystem* buildSystem = GetSubsystem(); buildSystem->ClearBuildCompleteUI(); } } bool UIBuildComplete::OnWidgetDying(TBWidget *widget) { return false; } }