mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-21 01:51:29 -07:00
Merge pull request #3189 from bloxstraplabs/feature/improve-studio-support
Improve studio support
This commit is contained in:
commit
729ee2bbf4
@ -42,6 +42,8 @@ namespace Bloxstrap
|
|||||||
|
|
||||||
public static bool IsProductionBuild => IsActionBuild && BuildMetadata.CommitRef.StartsWith("tag", StringComparison.Ordinal);
|
public static bool IsProductionBuild => IsActionBuild && BuildMetadata.CommitRef.StartsWith("tag", StringComparison.Ordinal);
|
||||||
|
|
||||||
|
public static bool IsStudioVisible => !String.IsNullOrEmpty(App.State.Prop.Studio.VersionGuid);
|
||||||
|
|
||||||
public static readonly MD5 MD5Provider = MD5.Create();
|
public static readonly MD5 MD5Provider = MD5.Create();
|
||||||
|
|
||||||
public static readonly Logger Logger = new();
|
public static readonly Logger Logger = new();
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
{
|
{
|
||||||
Terminate,
|
Terminate,
|
||||||
LaunchSettings,
|
LaunchSettings,
|
||||||
LaunchRoblox
|
LaunchRoblox,
|
||||||
|
LaunchRobloxStudio
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -91,7 +91,7 @@ namespace Bloxstrap
|
|||||||
|
|
||||||
App.Settings.Prop.EnableAnalytics = EnableAnalytics;
|
App.Settings.Prop.EnableAnalytics = EnableAnalytics;
|
||||||
|
|
||||||
if (!String.IsNullOrEmpty(App.State.Prop.Studio.VersionGuid))
|
if (App.IsStudioVisible)
|
||||||
WindowsRegistry.RegisterStudio();
|
WindowsRegistry.RegisterStudio();
|
||||||
|
|
||||||
App.Settings.Save();
|
App.Settings.Save();
|
||||||
@ -190,7 +190,7 @@ namespace Bloxstrap
|
|||||||
if (!String.IsNullOrEmpty(App.State.Prop.Player.VersionGuid))
|
if (!String.IsNullOrEmpty(App.State.Prop.Player.VersionGuid))
|
||||||
processes.AddRange(Process.GetProcessesByName(App.RobloxPlayerAppName));
|
processes.AddRange(Process.GetProcessesByName(App.RobloxPlayerAppName));
|
||||||
|
|
||||||
if (!String.IsNullOrEmpty(App.State.Prop.Studio.VersionGuid))
|
if (App.IsStudioVisible)
|
||||||
processes.AddRange(Process.GetProcessesByName(App.RobloxStudioAppName));
|
processes.AddRange(Process.GetProcessesByName(App.RobloxStudioAppName));
|
||||||
|
|
||||||
// prompt to shutdown roblox if its currently running
|
// prompt to shutdown roblox if its currently running
|
||||||
|
@ -21,6 +21,10 @@ namespace Bloxstrap
|
|||||||
LaunchRoblox(LaunchMode.Player);
|
LaunchRoblox(LaunchMode.Player);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case NextAction.LaunchRobloxStudio:
|
||||||
|
LaunchRoblox(LaunchMode.Studio);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
App.Terminate(isUnfinishedInstall ? ErrorCode.ERROR_INSTALL_USEREXIT : ErrorCode.ERROR_SUCCESS);
|
App.Terminate(isUnfinishedInstall ? ErrorCode.ERROR_INSTALL_USEREXIT : ErrorCode.ERROR_SUCCESS);
|
||||||
break;
|
break;
|
||||||
|
@ -53,6 +53,10 @@ namespace Bloxstrap
|
|||||||
{
|
{
|
||||||
const string LOG_IDENT = "LaunchSettings";
|
const string LOG_IDENT = "LaunchSettings";
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
App.Logger.WriteLine(LOG_IDENT, $"Launched with arguments: {string.Join(' ', args)}");
|
||||||
|
#endif
|
||||||
|
|
||||||
Args = args;
|
Args = args;
|
||||||
|
|
||||||
// build flag map
|
// build flag map
|
||||||
@ -125,7 +129,23 @@ namespace Bloxstrap
|
|||||||
{
|
{
|
||||||
RobloxLaunchMode = LaunchMode.Studio;
|
RobloxLaunchMode = LaunchMode.Studio;
|
||||||
|
|
||||||
// TODO: do this later
|
if (String.IsNullOrEmpty(data))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (data.StartsWith("roblox-studio:"))
|
||||||
|
{
|
||||||
|
RobloxLaunchArgs = data;
|
||||||
|
}
|
||||||
|
else if (data.StartsWith("roblox-studio-auth:"))
|
||||||
|
{
|
||||||
|
RobloxLaunchMode = LaunchMode.StudioAuth;
|
||||||
|
RobloxLaunchArgs = data;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// likely a local path
|
||||||
|
RobloxLaunchArgs = $"-task EditFile -localPlaceFile \"{data}\"";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
9
Bloxstrap/Resources/Strings.Designer.cs
generated
9
Bloxstrap/Resources/Strings.Designer.cs
generated
@ -1644,6 +1644,15 @@ namespace Bloxstrap.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Launch Roblox Studio.
|
||||||
|
/// </summary>
|
||||||
|
public static string LaunchMenu_LaunchRobloxStudio {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("LaunchMenu.LaunchRobloxStudio", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to See the Wiki for help.
|
/// Looks up a localized string similar to See the Wiki for help.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1237,6 +1237,9 @@ Would you like to enable test mode?</value>
|
|||||||
<value>Icons</value>
|
<value>Icons</value>
|
||||||
<comment>Name of the folder that gets created according to the "create shortcut icons" option. Ensure that it is a valid folder name.</comment>
|
<comment>Name of the folder that gets created according to the "create shortcut icons" option. Ensure that it is a valid folder name.</comment>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="LaunchMenu.LaunchRobloxStudio" xml:space="preserve">
|
||||||
|
<value>Launch Roblox Studio</value>
|
||||||
|
</data>
|
||||||
<data name="Dialog.Exception.Version" xml:space="preserve">
|
<data name="Dialog.Exception.Version" xml:space="preserve">
|
||||||
<value>Version {0}</value>
|
<value>Version {0}</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -64,6 +64,12 @@
|
|||||||
</StackPanel>
|
</StackPanel>
|
||||||
</ui:CardAction>
|
</ui:CardAction>
|
||||||
|
|
||||||
|
<ui:CardAction Margin="0,8,0,0" Icon="ArrowRight12" Visibility="{Binding RobloxStudioOptionVisibility, Mode=OneTime}" Command="{Binding LaunchRobloxStudioCommand, Mode=OneTime}">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock FontSize="14" Text="{x:Static resources:Strings.LaunchMenu_LaunchRobloxStudio}" />
|
||||||
|
</StackPanel>
|
||||||
|
</ui:CardAction>
|
||||||
|
|
||||||
<ui:CardAction Margin="0,8,0,0" TabIndex="1" Icon="Settings28" Command="{Binding LaunchSettingsCommand, Mode=OneTime}">
|
<ui:CardAction Margin="0,8,0,0" TabIndex="1" Icon="Settings28" Command="{Binding LaunchSettingsCommand, Mode=OneTime}">
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<TextBlock FontSize="14" Text="{x:Static resources:Strings.LaunchMenu_ConfigureSettings}" />
|
<TextBlock FontSize="14" Text="{x:Static resources:Strings.LaunchMenu_ConfigureSettings}" />
|
||||||
|
@ -49,14 +49,31 @@
|
|||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
|
<!-- https://stackoverflow.com/a/51967350 -->
|
||||||
|
<ColumnDefinition>
|
||||||
|
<ColumnDefinition.Style>
|
||||||
|
<Style TargetType="ColumnDefinition">
|
||||||
|
<Setter Property="Width" Value="*" />
|
||||||
|
<Style.Triggers>
|
||||||
|
<DataTrigger Binding="{Binding IsStudioOptionVisible}" Value="False">
|
||||||
|
<Setter Property="Width" Value="0" />
|
||||||
|
</DataTrigger>
|
||||||
|
</Style.Triggers>
|
||||||
|
</Style>
|
||||||
|
</ColumnDefinition.Style>
|
||||||
|
</ColumnDefinition>
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
<controls:OptionControl Grid.Column="0" Margin="0,0,4,0" Header="{x:Static resources:Strings.LaunchMenu_LaunchRoblox}">
|
<controls:OptionControl Grid.Column="0" Margin="0,0,2,0" Header="{x:Static resources:Strings.LaunchMenu_LaunchRoblox}">
|
||||||
<ui:ToggleSwitch IsChecked="{Binding PlayerIconTask.NewState, Mode=TwoWay}" />
|
<ui:ToggleSwitch IsChecked="{Binding PlayerIconTask.NewState, Mode=TwoWay}" />
|
||||||
</controls:OptionControl>
|
</controls:OptionControl>
|
||||||
|
|
||||||
<controls:OptionControl Grid.Column="1" Margin="4,0,0,0" Header="{x:Static resources:Strings.Menu_Title}">
|
<controls:OptionControl Grid.Column="1" Margin="2,0,2,0" Header="{x:Static resources:Strings.LaunchMenu_LaunchRobloxStudio}">
|
||||||
|
<ui:ToggleSwitch IsChecked="{Binding StudioIconTask.NewState, Mode=TwoWay}" />
|
||||||
|
</controls:OptionControl>
|
||||||
|
|
||||||
|
<controls:OptionControl Grid.Column="2" Margin="2,0,0,0" Header="{x:Static resources:Strings.Menu_Title}">
|
||||||
<ui:ToggleSwitch IsChecked="{Binding SettingsIconTask.NewState, Mode=TwoWay}" />
|
<ui:ToggleSwitch IsChecked="{Binding SettingsIconTask.NewState, Mode=TwoWay}" />
|
||||||
</controls:OptionControl>
|
</controls:OptionControl>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System.Windows.Input;
|
using System.Windows;
|
||||||
|
using System.Windows.Input;
|
||||||
using CommunityToolkit.Mvvm.Input;
|
using CommunityToolkit.Mvvm.Input;
|
||||||
|
|
||||||
using Bloxstrap.UI.Elements.About;
|
using Bloxstrap.UI.Elements.About;
|
||||||
@ -9,10 +10,14 @@ namespace Bloxstrap.UI.ViewModels.Installer
|
|||||||
{
|
{
|
||||||
public string Version => string.Format(Strings.Menu_About_Version, App.Version);
|
public string Version => string.Format(Strings.Menu_About_Version, App.Version);
|
||||||
|
|
||||||
|
public Visibility RobloxStudioOptionVisibility => App.IsStudioVisible ? Visibility.Visible : Visibility.Collapsed;
|
||||||
|
|
||||||
public ICommand LaunchSettingsCommand => new RelayCommand(LaunchSettings);
|
public ICommand LaunchSettingsCommand => new RelayCommand(LaunchSettings);
|
||||||
|
|
||||||
public ICommand LaunchRobloxCommand => new RelayCommand(LaunchRoblox);
|
public ICommand LaunchRobloxCommand => new RelayCommand(LaunchRoblox);
|
||||||
|
|
||||||
|
public ICommand LaunchRobloxStudioCommand => new RelayCommand(LaunchRobloxStudio);
|
||||||
|
|
||||||
public ICommand LaunchAboutCommand => new RelayCommand(LaunchAbout);
|
public ICommand LaunchAboutCommand => new RelayCommand(LaunchAbout);
|
||||||
|
|
||||||
public event EventHandler<NextAction>? CloseWindowRequest;
|
public event EventHandler<NextAction>? CloseWindowRequest;
|
||||||
@ -21,6 +26,8 @@ namespace Bloxstrap.UI.ViewModels.Installer
|
|||||||
|
|
||||||
private void LaunchRoblox() => CloseWindowRequest?.Invoke(this, NextAction.LaunchRoblox);
|
private void LaunchRoblox() => CloseWindowRequest?.Invoke(this, NextAction.LaunchRoblox);
|
||||||
|
|
||||||
|
private void LaunchRobloxStudio() => CloseWindowRequest?.Invoke(this, NextAction.LaunchRobloxStudio);
|
||||||
|
|
||||||
private void LaunchAbout() => new MainWindow().ShowDialog();
|
private void LaunchAbout() => new MainWindow().ShowDialog();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
using Bloxstrap.Models.SettingTasks;
|
namespace Bloxstrap.UI.ViewModels.Settings
|
||||||
using Bloxstrap.Resources;
|
|
||||||
|
|
||||||
namespace Bloxstrap.UI.ViewModels.Settings
|
|
||||||
{
|
{
|
||||||
public class ShortcutsViewModel : NotifyPropertyChangedViewModel
|
public class ShortcutsViewModel : NotifyPropertyChangedViewModel
|
||||||
{
|
{
|
||||||
|
public bool IsStudioOptionVisible => App.IsStudioVisible;
|
||||||
|
|
||||||
public ShortcutTask DesktopIconTask { get; } = new("Desktop", Paths.Desktop, $"{App.ProjectName}.lnk");
|
public ShortcutTask DesktopIconTask { get; } = new("Desktop", Paths.Desktop, $"{App.ProjectName}.lnk");
|
||||||
|
|
||||||
public ShortcutTask StartMenuIconTask { get; } = new("StartMenu", Paths.WindowsStartMenu, $"{App.ProjectName}.lnk");
|
public ShortcutTask StartMenuIconTask { get; } = new("StartMenu", Paths.WindowsStartMenu, $"{App.ProjectName}.lnk");
|
||||||
|
|
||||||
public ShortcutTask PlayerIconTask { get; } = new("RobloxPlayer", Paths.Desktop, $"{Strings.LaunchMenu_LaunchRoblox}.lnk", "-player");
|
public ShortcutTask PlayerIconTask { get; } = new("RobloxPlayer", Paths.Desktop, $"{Strings.LaunchMenu_LaunchRoblox}.lnk", "-player");
|
||||||
|
|
||||||
|
public ShortcutTask StudioIconTask { get; } = new("RobloxStudio", Paths.Desktop, $"{Strings.LaunchMenu_LaunchRobloxStudio}.lnk", "-studio");
|
||||||
|
|
||||||
public ShortcutTask SettingsIconTask { get; } = new("Settings", Paths.Desktop, $"{Strings.Menu_Title}.lnk", "-settings");
|
public ShortcutTask SettingsIconTask { get; } = new("Settings", Paths.Desktop, $"{Strings.Menu_Title}.lnk", "-settings");
|
||||||
|
|
||||||
public ExtractIconsTask ExtractIconsTask { get; } = new();
|
public ExtractIconsTask ExtractIconsTask { get; } = new();
|
||||||
|
Loading…
Reference in New Issue
Block a user