mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-18 00:21:33 -07:00
* add custom bootstrappers * add avalonedit to licenses page * add gif support * add stretch & stretchdirection to images * dont create a bitmapimage for gifs * remove maxheight and maxwidth sets * remove comment * add isenabled * add more textblock properties * add markdowntextblocks * update how transform elements are stored * overhaul textbox content * dont set fontsize if not set * fix warnings * add foreground property to control * add background property to textblock * count descendants and increase element cap * add auto complete * dont display completion window if there is no data * sort schema elements and types * make ! close the completion window * add end tag auto complete * fix pos being wrong * dont treat comments as elements * add imagebrushes * follow same conventions as brushes * fix exception messages * fix them again * update schema * fix crash * now it works * wrong attribute name * add solidcolorbrush * move converters into a separate file * add lineargradientbrushes * unify handlers * update schema * add fake BloxstrapCustomBootstrapper * stop adding an extra end character * add property element auto-complete * add title attribute to custombloxstrapbootstrapper * add shapes * add string translation support * use default wpf size instead of 100x100 * update min height of window * fix verticalalignment not working * uncap height and width * add effects * move transformation handler inside frameworkelement * fix title bar effect & transformation removal * add more frameworkelement properties * add layout transform * add font properties to control * improve window border stuff * make sure file contents are in CRLF * add cornerradius to progress bar * add progressring * Update wpfui * update schema * update function names * add children check to content * make sure only one content is defined * add fontfamily * update schema * only allow file uris for images * disable backdrop * move text setter to textblock handler from base * split up creator into multiple files * turn version into a constant * add grids * cleanup converters * add IgnoreTitleBarInset * add Version to schema * reveal custom bootstrapper stuff on selection * increase listbox height * only set statustext binding in textblock * update ui * rename ZIndex to Panel.ZIndex * add stackpanel * add border * fix being unable to apply transforms on grids * rearrange and add new editor button * use snackbars for saving * add close confirmation message * use viewmodel variable * remove pointless onpropertychanged call * add version string format * start editor window in the centre * update licenses page also resized the about window so everything could fit nicely * fix border not inheriting frameworkelement * add WindowCornerPreference * add the import dialog * add an export theme button * update version number * localise CustomDialog exceptions * localise custom theme editor * localise custom theme add dialog * localise frontend * localise appearance menu page * change customtheme error strings namespace * change icons on appearance page * update button margin on appearance page
85 lines
2.7 KiB
C#
85 lines
2.7 KiB
C#
using Bloxstrap.UI.Elements.Bootstrapper;
|
|
using CommunityToolkit.Mvvm.Input;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Input;
|
|
|
|
namespace Bloxstrap.UI.ViewModels.Editor
|
|
{
|
|
public class BootstrapperEditorWindowViewModel : NotifyPropertyChangedViewModel
|
|
{
|
|
private CustomDialog? _dialog = null;
|
|
|
|
public ICommand PreviewCommand => new RelayCommand(Preview);
|
|
public ICommand SaveCommand => new RelayCommand(Save);
|
|
public ICommand OpenThemeFolderCommand => new RelayCommand(OpenThemeFolder);
|
|
|
|
public Action<bool, string> ThemeSavedCallback { get; set; } = null!;
|
|
|
|
public string Directory { get; set; } = "";
|
|
|
|
public string Name { get; set; } = "";
|
|
public string Title { get; set; } = "Editing \"Custom Theme\"";
|
|
public string Code { get; set; } = "";
|
|
|
|
public bool CodeChanged { get; set; } = false;
|
|
|
|
private void Preview()
|
|
{
|
|
const string LOG_IDENT = "BootstrapperEditorWindowViewModel::Preview";
|
|
|
|
try
|
|
{
|
|
CustomDialog dialog = new CustomDialog();
|
|
|
|
dialog.ApplyCustomTheme(Name, Code);
|
|
|
|
_dialog?.CloseBootstrapper();
|
|
_dialog = dialog;
|
|
|
|
dialog.Message = Strings.Bootstrapper_StylePreview_TextCancel;
|
|
dialog.CancelEnabled = true;
|
|
dialog.ShowBootstrapper();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
App.Logger.WriteLine(LOG_IDENT, "Failed to preview custom theme");
|
|
App.Logger.WriteException(LOG_IDENT, ex);
|
|
|
|
Frontend.ShowMessageBox($"Failed to preview theme: {ex.Message}", MessageBoxImage.Error, MessageBoxButton.OK);
|
|
}
|
|
}
|
|
|
|
private void Save()
|
|
{
|
|
const string LOG_IDENT = "BootstrapperEditorWindowViewModel::Save";
|
|
|
|
string path = Path.Combine(Directory, "Theme.xml");
|
|
|
|
try
|
|
{
|
|
File.WriteAllText(path, Code);
|
|
CodeChanged = false;
|
|
ThemeSavedCallback.Invoke(true, "Your theme has been saved!");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
App.Logger.WriteLine(LOG_IDENT, "Failed to save custom theme");
|
|
App.Logger.WriteException(LOG_IDENT, ex);
|
|
|
|
//Frontend.ShowMessageBox($"Failed to save theme: {ex.Message}", MessageBoxImage.Error, MessageBoxButton.OK);
|
|
ThemeSavedCallback.Invoke(false, ex.Message);
|
|
}
|
|
}
|
|
|
|
private void OpenThemeFolder()
|
|
{
|
|
Process.Start("explorer.exe", Directory);
|
|
}
|
|
}
|
|
}
|