diff --git a/Source/Chatbook/CloudToolbar.wl b/Source/Chatbook/CloudToolbar.wl index 897a547a..1846e0ec 100644 --- a/Source/Chatbook/CloudToolbar.wl +++ b/Source/Chatbook/CloudToolbar.wl @@ -4,6 +4,7 @@ BeginPackage[ "Wolfram`Chatbook`CloudToolbar`" ]; HoldComplete[ `makeChatCloudDockedCellContents; + `forceRefreshCloudPreferences; ]; Begin[ "`Private`" ]; @@ -84,7 +85,7 @@ cloudPreferencesButton[ ] := Enclose[ Infinity ]; - button = Button[ buttonIcon, togglePreferences @ EvaluationNotebook[ ], Method -> "Queued" ]; + button = Button[ buttonIcon, toggleCloudPreferences @ EvaluationNotebook[ ], Method -> "Queued" ]; cloudPreferencesButton[ ] = Pane[ button, FrameMargins -> { { 0, 10 }, { 0, 0 } } ] ], @@ -95,16 +96,16 @@ cloudPreferencesButton // endDefinition; (* ::**************************************************************************************************************:: *) (* ::Subsubsection::Closed:: *) -(*togglePreferences*) -togglePreferences // beginDefinition; +(*toggleCloudPreferences*) +toggleCloudPreferences // beginDefinition; -togglePreferences[ nbo_NotebookObject ] := - togglePreferences[ nbo, Flatten @ List @ CurrentValue[ nbo, DockedCells ] ]; +toggleCloudPreferences[ nbo_NotebookObject ] := + toggleCloudPreferences[ nbo, Flatten @ List @ CurrentValue[ nbo, DockedCells ] ]; -togglePreferences[ nbo_NotebookObject, { cell_Cell } ] := +toggleCloudPreferences[ nbo_NotebookObject, { cell_Cell } ] := SetOptions[ nbo, DockedCells -> { cell, $cloudPreferencesCell } ]; -togglePreferences[ nbo_NotebookObject, { Inherited|$Failed } ] := SetOptions[ +toggleCloudPreferences[ nbo_NotebookObject, { Inherited|$Failed } ] := SetOptions[ nbo, DockedCells -> { Cell[ BoxData @ DynamicBox @ ToBoxes @ MakeChatCloudDockedCellContents[ ], Background -> None ], @@ -112,13 +113,13 @@ togglePreferences[ nbo_NotebookObject, { Inherited|$Failed } ] := SetOptions[ } ]; -togglePreferences[ nbo_NotebookObject, { cell_Cell, _Cell } ] := +toggleCloudPreferences[ nbo_NotebookObject, { cell_Cell, _Cell } ] := SetOptions[ nbo, DockedCells -> { cell } ]; -togglePreferences[ nbo_NotebookObject, _ ] := +toggleCloudPreferences[ nbo_NotebookObject, _ ] := SetOptions[ nbo, DockedCells -> Inherited ]; -togglePreferences // endDefinition; +toggleCloudPreferences // endDefinition; (* ::**************************************************************************************************************:: *) (* ::Subsubsubsection::Closed:: *) @@ -195,6 +196,27 @@ $chatEnabledNotebookLabel := Grid[ Spacings -> 0.5 ]; +(* ::**************************************************************************************************************:: *) +(* ::Section::Closed:: *) +(*Utilities*) + +(* ::**************************************************************************************************************:: *) +(* ::Subsection::Closed:: *) +(*forceRefreshCloudPreferences*) +forceRefreshCloudPreferences // beginDefinition; + +forceRefreshCloudPreferences[ ] /; ! TrueQ @ $cloudNotebooks := Null; + +forceRefreshCloudPreferences[ ] := forceRefreshCloudPreferences @ EvaluationNotebook[ ]; + +forceRefreshCloudPreferences[ nbo_NotebookObject ] := ( + SetOptions[ nbo, DockedCells -> Inherited ]; + Pause[ 0.5 ]; + toggleCloudPreferences @ nbo +); + +forceRefreshCloudPreferences // endDefinition; + (* ::**************************************************************************************************************:: *) (* ::Section::Closed:: *) (*Package Footer*) diff --git a/Source/Chatbook/PersonaManager.wl b/Source/Chatbook/PersonaManager.wl index 1c7ea387..36b3b5ce 100644 --- a/Source/Chatbook/PersonaManager.wl +++ b/Source/Chatbook/PersonaManager.wl @@ -10,6 +10,7 @@ BeginPackage[ "Wolfram`Chatbook`PersonaManager`" ]; Begin[ "`Private`" ]; Needs[ "Wolfram`Chatbook`" ]; +Needs[ "Wolfram`Chatbook`CloudToolbar`" ]; Needs[ "Wolfram`Chatbook`Common`" ]; Needs[ "Wolfram`Chatbook`Dialogs`" ]; Needs[ "Wolfram`Chatbook`Personas`" ]; @@ -57,6 +58,7 @@ CreatePersonaManagerPanel[ ] := DynamicModule[{favorites, delimColor}, "Install from", Button[ grayDialogButtonLabel[ "Prompt Repository \[UpperRightArrow]" ], + If[ $CloudEvaluation, SetOptions[ EvaluationNotebook[ ], DockedCells -> Inherited ] ]; ResourceInstallFromRepository[ "Prompt" ], Appearance -> "Suppressed", BaselinePosition -> Baseline, @@ -64,6 +66,7 @@ CreatePersonaManagerPanel[ ] := DynamicModule[{favorites, delimColor}, ], Button[ grayDialogButtonLabel[ "URL" ], + If[ $CloudEvaluation, SetOptions[ EvaluationNotebook[ ], DockedCells -> Inherited ] ]; Block[ { PrintTemporary }, ResourceInstallFromURL[ "Prompt" ] ], Appearance -> "Suppressed", BaselinePosition -> Baseline, @@ -278,7 +281,7 @@ addRemovePersonaListingCheckbox[ name_String ] := CurrentChatSettings[ $FrontEnd, "VisiblePersonas" ] = With[ { current = Replace[ CurrentChatSettings[ $FrontEnd, "VisiblePersonas" ], Except[ { ___String } ] :> core ] }, If[ #1, Union[ current, { name } ], Complement[ current, { name } ] ] - ] + ] ] ] ]; @@ -298,7 +301,11 @@ uninstallButton[ name_String, installedQ_, pacletName_String ] := StringTemplate["This persona cannot be uninstalled because it is provided by the `1` paclet."][pacletName]]}, Dynamic[Which[!installedQ, "Disabled", CurrentValue["MouseOver"], "Hover", True, "Default"]], ImageSize -> Automatic], - Block[ { PrintTemporary }, ResourceUninstall[ "Prompt", name ]; GetPersonaData[] ], + Block[ { PrintTemporary }, + ResourceUninstall[ "Prompt", name ]; + GetPersonaData[ ]; + forceRefreshCloudPreferences[ ] + ], Appearance -> "Suppressed", Enabled -> installedQ, ImageMargins -> {{0, 13}, {0, 0}},