void SCMImportWindow::MessageReceived(BMessage *msg) { switch (msg->what) { case M_USE_PROVIDER: { SCMProjectImporter *importer = fProviderMgr.ImporterAt( fProviderField->Menu()->IndexOf( fProviderField->Menu()->FindMarked())); if (importer) SetProvider(importer); break; } case M_USE_CUSTOM_PROVIDER: { SetProvider(NULL); break; } case M_TOGGLE_ANONYMOUS: { fUserNameBox->SetEnabled(fAnonymousBox->Value() != B_CONTROL_ON); UpdateCommand(); break; } case M_UPDATE_COMMAND: { UpdateCommand(); break; } case M_SCM_IMPORT: { DoImport(); break; } default: { DWindow::MessageReceived(msg); break; } } }
void FSourceControlModule::ShowLoginDialog(const FSourceControlLoginClosed& InOnSourceControlLoginClosed, ELoginWindowMode::Type InLoginWindowMode, EOnLoginWindowStartup::Type InOnLoginWindowStartup) { #if SOURCE_CONTROL_WITH_SLATE // Get Active Provider Name ActiveProviderName = GetProvider().GetName().ToString(); // if we are showing a modal version of the dialog & a modeless version already exists, we must destroy the modeless dialog first if(InLoginWindowMode == ELoginWindowMode::Modal && SourceControlLoginPtr.IsValid()) { // unhook the delegate so it doesn't fire in this case SourceControlLoginWindowPtr->SetOnWindowClosed(FOnWindowClosed()); SourceControlLoginWindowPtr->RequestDestroyWindow(); SourceControlLoginWindowPtr = NULL; SourceControlLoginPtr = NULL; } if(SourceControlLoginWindowPtr.IsValid()) { SourceControlLoginWindowPtr->BringToFront(); } else { // set provider to 'none'. // When we open the window, we turn off the fact that source control is available, this solves issues that are present with // being a three state modeless system (Accepted settings, disabled, and not yet decided). if(InOnLoginWindowStartup == EOnLoginWindowStartup::ResetProviderToNone) { SetProvider("None"); } // temporarily disable access to source control features bTemporarilyDisabled = true; // Create the window SourceControlLoginWindowPtr = SNew(SWindow) .Title( LOCTEXT("SourceControlLoginTitle", "Source Control Login") ) .HasCloseButton(false) .SupportsMaximize(false) .SupportsMinimize(false) .SizingRule( ESizingRule::Autosized ); // Set the closed callback SourceControlLoginWindowPtr->SetOnWindowClosed(FOnWindowClosed::CreateRaw(this, &FSourceControlModule::OnSourceControlDialogClosed)); // Setup the content for the created login window. SourceControlLoginWindowPtr->SetContent( SNew(SBox) .WidthOverride(700.0f) [ SAssignNew(SourceControlLoginPtr, SSourceControlLogin) .ParentWindow(SourceControlLoginWindowPtr) .OnSourceControlLoginClosed(InOnSourceControlLoginClosed) ] ); TSharedPtr<SWindow> RootWindow = FGlobalTabmanager::Get()->GetRootWindow(); if(RootWindow.IsValid()) { if(InLoginWindowMode == ELoginWindowMode::Modal) { FSlateApplication::Get().AddModalWindow(SourceControlLoginWindowPtr.ToSharedRef(), RootWindow); } else { FSlateApplication::Get().AddWindowAsNativeChild(SourceControlLoginWindowPtr.ToSharedRef(), RootWindow.ToSharedRef()); } } else { if(InLoginWindowMode == ELoginWindowMode::Modal) { FSlateApplication::Get().AddModalWindow(SourceControlLoginWindowPtr.ToSharedRef(), RootWindow); } else { FSlateApplication::Get().AddWindow(SourceControlLoginWindowPtr.ToSharedRef()); } } } #else STUBBED("FSourceControlModule::ShowLoginDialog - no Slate"); #endif // SOURCE_CONTROL_WITH_SLATE }