-
Posts
13,723 -
Joined
-
Last visited
-
Days Won
388
Content Type
Profiles
Forums
Articles
Downloads
Gallery
Blogs
Everything posted by Jason Carr
-
Planning on taking a look at it here soon. Per #1, the nice thing about the installer is that DLLs should no longer need to be unblocked, so you shouldn't have to worry about that. Under normal circumstances, Windows only does that when files are downloaded directly from the browser and then extracted with the built-in zip utility. Per #2, I will be announcing the theme uploader web form very soon (just later today).
-
Beta 7 is out now as well with a new way to include fonts in custom themes without having to create a custom DLL, or requiring the user to install them manually: This was important, because all themes that are approved for including in the theme manager are not allowed to require the user to have to run through any manual installation steps.
-
Hello all, my latest goal was to figure out a solution for theme developers for all three types of themes to be able to include custom fonts without having to create a custom plugin/DLL or requiring the end user to manually install them. Microsoft really made it way more of a pain than it should have been, so I was struggling with it for hours, but I finally have a good solution. Unfortunately it did require changes to the LaunchBox codebase, so this solution will only work going forward, for LaunchBox/Big Box 9.6-beta-7 and later. Previously it was not possible to automatically include custom fonts in startup themes, as plugins are not currently supported. This solution will allow you to use custom fonts in startup themes without requiring the user to manually install them, and this solution can be used for LaunchBox and Big Box themes as well (it's also now the recommended method). Here's an example of a TextBlock with a custom font: <TextBlock FontFamily="LAUNCHBOX_ROOT_FOLDER/Startup Themes/ExampleTheme/Blazed.ttf#Blazed" /> Obviously, only the FontFamily property is important here. It always starts with "LAUNCHBOX_ROOT_FOLDER", as LaunchBox and Big Box will automatically replace this with the LaunchBox folder, wherever it is located. This part was necessary because of Microsoft's bugs/security workarounds, none of which make sense, but it's impossible to load a font from a relative path in XAML without including it in a project or DLL, so LaunchBox just replaces this part with the full path to the LaunchBox folder. In the above case, the "LaunchBox\Startup Themes\ExampleTheme\Blazed.ttf" font will be used for that TextBlock element. Note the "#Blazed" portion at the end however; unfortunately you also have to include the pound sign, followed by the name of the font. You can find the name of the font by simply double-clicking the font file in Windows, and the name of the font will be displayed at the top of the Font Viewer application, next to "Font name:". I'm not sure why this is necessary, but it's another requirement in order to get the fonts working properly. Next, let's take a look at an example with a space in the font file and/or the font name: <TextBlock FontFamily="LAUNCHBOX_ROOT_FOLDER/Startup Themes/ExampleTheme/Hearty Script.ttf#Hearty Script" /> Simply putting it in as expected with spaces does work, so that should not be a concern. Let me know if anyone runs into any issues. I will say that I did find one font that just refused to work with WPF period, so if you can't seem to make it work, do try another font. Unfortunately it seems there are some fonts out there that are either just poorly made or incompatible with WPF for one reason or another. Thanks again all. Calling you all out here so that everyone is aware of this new feature. @faeran @Mr. RetroLust @RetroHumanoid @wallmachine @eatkinola @bbweiners @keltoigael @Jack. @y2guru @whoozwah @SNAK3ATER @Rincewind @CriticalCid @shro2016 @broskiplays @Grila @NJDave71 @Hexxxer @PhillsDoodles @Zombeaver @Omen @Cookz718 @viking @OrochiMishima @nosh @ea4492 @Maddoc1007 @vsilvalopes @damageinc86 @walter10h @skainlurmis @Scottad @Nyny77 @Sithel @Akezhar @Thanos Reigns
-
Creating a Startup Theme with Video Support
Jason Carr replied to Jason Carr's topic in Custom Theme Tutorials
FYI all, @Retro808 discovered an issue where the video hitches up and doesn't play properly in the startup themes. I am able to reproduce as well on my slower machines. I have it on my plate to dive in to see if there's anything I can do to fix it. -
Creating a Startup Theme with Video Support
Jason Carr replied to Jason Carr's topic in Custom Theme Tutorials
Sorry it took me a bit to respond, Retro. -
Here's an example of using the on-screen keyboard: ShowOnScreenKeyboard("default text", resultingText => MessageBox.Show(resultingText)); That should show the on-screen keyboard, and then show a message box with what the user types. I've used an inline code format above, but you can also create a method with a string parameter, and then put the method name in for the second parameter instead if you wish.
-
The images in wheels are cached and compressed based on the user's CoverFlow image quality setting in Big Box, so you probably just need to increase that. There's already a decent solution for custom fonts available (see @Retro808's link above), but I'm going to work on a simpler solution that works for startup themes as well.
-
I just created a new forum section for "Custom Theme Tutorials" with the above tutorial in it. If anyone wants to, feel free to create some tutorials there.
-
Sorry for the delay on this @Retro808, but I have a full solution for everything here finally:
-
Creating a Startup Theme with Video Support
Jason Carr replied to Jason Carr's topic in Custom Theme Tutorials
Alright, finally, here's a full solution for prioritized videos using the PrioritizedPathSelector control that was just integrated into LaunchBox in version 9.6-beta-6. Keep in mind that you will need at least version 9.6-beta-6 for this solution to work. Previously the PrioritizedPathSelector control was available in a plugin, but for version 9.6-beta-6, it was integrated directly into LaunchBox/Big Box for use in the startup themes. Here's our example: <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:controls="clr-namespace:Unbroken.LaunchBox.Wpf.Controls;assembly=Unbroken.LaunchBox.Wpf" mc:Ignorable="d" d:DesignHeight="562" d:DesignWidth="1000" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" FocusVisualStyle="{x:Null}" BorderThickness="0" Margin="0" Padding="0" Background="#000"> <Canvas Name="Canvas"> <controls:PrioritizedPathSelector x:Name="VideoFileName" FolderPath="StartupThemes\VideoExampleTheme\Videos" FileExtension=".mp4" Priority1FileName="{Binding KnownPlatformOrPlaylistTitle}" Priority2FileName="{Binding Platform.NestedName}" Priority3FileName="{Binding SelectedGame.Platform}" Priority4FileName="_Default" /> <controls:VideoControl VideoPath="{Binding PrioritizedFilePath, ElementName=VideoFileName}" StretchVideo="true" CenterVideo="false" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="{Binding ElementName=Canvas, Path=ActualHeight}" Width="{Binding ElementName=Canvas, Path=ActualWidth}" /> </Canvas> </UserControl> This time, instead of using a TextBlock element for binding in the background, we use the new PrioritizedPathSelector control. It's also available in the same "Unbroken.LaunchBox.Wpf.Controls" namespace that the VideoControl is in, so we can use the same xmlns tag for this control as with the VideoControl. However, do keep in mind that there are a couple of different namespaces that the VideoControl is available in (for backwards compatibility reasons), so double-check that the xmlns:controls line in the file you're working with matches the above line exactly. The PrioritizedPathSelector element above specifies the Name of the element (used by the ElementName property of the VideoPath binding), the FolderPath, the FileExtension, and several prioritized file name properties. Usage should be fairly obvious, but let's talk through the four prioritized file names. There are a total of 5 prioritized file name properties available in the control, of which we are using four. The Priority1FileName is currently bound to KnownPlatformOrPlaylistTitle, which is the same binding that we were using previously. It contains some logic in the LaunchBox/Big Box backend to attempt to spit out an actual platform or arcade playlist name, instead of a nested playlist like "Nintendo Entertainment System All Games", for example. The Priority2FileName property is then used if the Priority1FileName file is not found. It attempts to use a file name that matches the "Nested Name" of the current platform or playlist. For example, "Nintendo Entertainment System All Games" would simply return "All Games". The Priority3FileName jumps straight to the name of the platform itself for the launching game, regardless of which list the game is launching from, which is a good fallback if the first two options are not found. Finally, the Priority4FileName property simply reverts to the "_Default.mp4" video file if no platform-specific video file is found. That pretty much sums it up; let me know if anything isn't working or if you have any questions. -
Creating a Startup Theme with Video Support
Jason Carr replied to Jason Carr's topic in Custom Theme Tutorials
Next, let's look at using bindings for dynamic video paths. Let's say you want to use different videos for each platform. Something like this would work in your Default.xaml file for the startup theme: <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:controls="clr-namespace:Unbroken.LaunchBox.Wpf.Controls;assembly=Unbroken.LaunchBox.Wpf" mc:Ignorable="d" d:DesignHeight="562" d:DesignWidth="1000" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" FocusVisualStyle="{x:Null}" BorderThickness="0" Margin="0" Padding="0" Background="#000"> <Canvas Name="Canvas"> <TextBlock x:Name="VideoFileName" Visibility="Collapsed"> <TextBlock.Text> <MultiBinding StringFormat="{}pack://siteoforigin:,,,/StartupThemes/VideoExampleTheme/Videos/{0}.mp4"> <Binding Path="KnownPlatformOrPlaylistTitle" /> </MultiBinding> </TextBlock.Text> </TextBlock> <controls:VideoControl VideoPath="{Binding Text, ElementName=VideoFileName}" StretchVideo="true" CenterVideo="false" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="{Binding ElementName=Canvas, Path=ActualHeight}" Width="{Binding ElementName=Canvas, Path=ActualWidth}" /> </Canvas> </UserControl> The only changes here are that we've added the TextBlock element and changed the VideoPath property of the VideoControl element to bind to the text in that TextBlock element. The TextBlock's visibility is set to Collapsed, which means that it will not show up at all and also won't take up any space; it's simply used for binding purposes behind the scenes. We use the MultiBinding in the TextBlock.Text element to replace the "{0}" portion of the StringFormat value with the "KnownPlatformOrPlaylistTitle" binding, which basically returns the active platform. Thus the value that is used for the VideoPath will be the full path to the platform-specific video file. Keep in mind that we have *not* specified a FallbackValue in the VideoPath binding. You may have seen some themes that do something similar to the above, but add a FallbackValue like this: VideoPath="{Binding Text, ElementName=VideoFileName, FallbackValue='pack://siteoforigin:,,,/StartupThemes/VideoExampleTheme/Videos/_Default.mp4'}" You might assume that the "_Default.mp4" video file will be used if the platform video file does not exist, but unfortunately that does not work, despite some themes suggesting that it does. The reason this doesn't work is because nothing in the XAML is checking to see if the platform video file exists or not, and the XAML doesn't care, so whether the file exists or not, the platform-specific video file will be returned, and the FallbackValue will never be used. I'm not sure of exactly when and where the FallbackValue is used, but I would guess that most likely it's used if the KnownPlatformOrPlaylistTitle binding turns out to be NULL. So naturally, the next step of the puzzle is figuring out how to prioritize bindings and use a default video if a platform video does not exist. A solution for that is coming in the next post. -
Hello all, there's been some recent discussion on attempting to create a startup theme with videos, so I thought I'd chime in with some solutions. Adding a video to a startup theme is actually rather easy, as it's the same as with Big Box themes. Here's an example "Default.xaml" file with a video: <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:controls="clr-namespace:Unbroken.LaunchBox.Wpf.Controls;assembly=Unbroken.LaunchBox.Wpf" mc:Ignorable="d" d:DesignHeight="562" d:DesignWidth="1000" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" FocusVisualStyle="{x:Null}" BorderThickness="0" Margin="0" Padding="0" Background="#000"> <Canvas Name="Canvas"> <controls:VideoControl VideoPath="pack://siteoforigin:,,,/StartupThemes/VideoExampleTheme/Videos/_Default.mp4" StretchVideo="true" CenterVideo="false" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="{Binding ElementName=Canvas, Path=ActualHeight}" Width="{Binding ElementName=Canvas, Path=ActualWidth}" /> </Canvas> </UserControl> Keep in mind that you need the xmlns:controls line near the top in order to use the VideoControl tag. Other than that, it's all in that VideoControl tag, and it will play the "LaunchBox\StartupThemes\VideoExampleTheme\Videos\_Default.mp4" video file full-screen. It will also work for both Windows Media Player and VLC. I'll be adding some subsequent posts in this topic for more involved solutions shortly, but I wanted to post a simple solution first.
-
@RULLUR @gillfigno@hotmail.com Let me know if you're still seeing that music issue with beta 6.
-
Beta 6 is out now with the following: - Improvement: Added three new properties to the Game object in order to better support theme developers: BindableVideoPath, BindableThemeVideoPath, and BindableThemeVideoOrVideoPath. These new properties can be used as a binding in the VideoControl for custom themes. - Improvement: Integrated the PrioritizedPathSelector control that was previously available as a custom plugin into Big Box, specifically for startup themes. A tutorial will be available on the forums shortly. - Fixed: In some situations, the new game startup screens were causing game music to play in the background while a game is running
-
Thank you @Cauptain and @alexposad; I have these packages integrated for the next beta. My apologies for the delay here. @Cauptain Unfortunately I don't plan on translating those particular items due to technical issues/restrictions; the names of the platform categories can certainly be changed by the end user though. Also I can manually change the name of the language; what did you want me to change it to? @alexposad I've changed the language name there. I've also increased the width of the Add button a bit, but it will only be changed in the default theme unfortunately. Thanks again guys; the new beta should be out soon.
-
Thanks for doing that testing; that's kind of what I figured. Of course what this means is that it's not a conflict or a LaunchBox issue at all; it's some sort of odd glitch with Cemu, so it should be reported to the Cemu developers.
-
Beta 5 is out now with the rest of the theme manager implemented. Pretty much everything should be there and working properly, including assigning particular views to particular platforms and playlists. The new theme submission web pages are done as well, sans for integrating them with the forums login system. I'm working with IPB to get that going here soon; planning on having it ready to go some time next week, and then we can start accepting theme submissions for including in Big Box. In the mean time, I'll be going through my never-ending to-do list of "minor" things, and we'll see what I can improve on.
- 138 replies
-
- 13
-
-
-
-
-
I've heard that this is an issue with Launch With in Big Box (on my list), but haven't heard it mentioned about LaunchBox itself for a long while. Can anyone else reproduce? There may be other additions, but I'm not entirely sure what they'll be yet. Yes, my main focus is still the poll items. There's not many left, but there are a few big ones. Yup, that's one of the big ones.
-
Just a matter of replacing the LaunchBox\Themes\CityHunter 2\Background.mp4 file I believe.
-
The plugin version has been removed because it always caused some serious stability issues, and also no longer works properly with the latest version of Big Box.
-
The Windows importer should do a good job with it already, so long as shortcuts for the games are available in the Start menu. Otherwise, you can just drag a batch of shortcuts over as Monkus mentioned. I do plan to add other importers eventually, but considering that's it's already fairly easy, it hasn't been a high priority.
-
Alright, then I'm lost on this. It especially doesn't make sense if multiple programs are causing the problem. The first thing to test would be to try running those games from the command-line, without LaunchBox. One possibility is that Cemu is just broken when running those games from the command-line, and I think that would be more likely than a conflict with LaunchBox or Big Box. What do you mean by this exactly? What problems exactly are caused by those programs? Or do you only have the Cemu issue if LaunchBox AND the above three programs are running?
-
PDF Reader Zoom In/Out not working properly
Jason Carr replied to TheNewClassics's topic in Features
I'll add this to my list to come back to at some point, but unfortunately I can't make it a priority for the time being.