mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-12 11:56:30 +00:00
Fixed plugin binding and reworked some interfaces to abstract classes
This commit is contained in:
1 parent
90cd27b0c6
commit
155073f14d
17 files changed
+88
-82
No files matched your search
@@ -1,8 +1,4 @@
|
||||
using System.IO;
|
||||
using System.Windows;
|
||||
using System.Windows.Markup;
|
||||
using Artemis.Core.Plugins.Interfaces;
|
||||
using Stylet;
|
||||
using Stylet;
|
||||
|
||||
namespace Artemis.UI.Stylet
|
||||
{
|
||||
@@ -10,30 +6,7 @@ namespace Artemis.UI.Stylet
|
||||
{
|
||||
public ArtemisViewManager(ViewManagerConfig config) : base(config)
|
||||
{
|
||||
}
|
||||
|
||||
public override UIElement CreateViewForModel(object model)
|
||||
{
|
||||
if (model is IModuleViewModel)
|
||||
return CreateViewForPlugin(model);
|
||||
|
||||
return base.CreateViewForModel(model);
|
||||
}
|
||||
|
||||
private UIElement CreateViewForPlugin(object model)
|
||||
{
|
||||
var viewName = model.GetType().Name.Replace("Model", "");
|
||||
var pluginInfo = ((IModuleViewModel) model).PluginInfo;
|
||||
var viewPath = $"{pluginInfo.Folder}{viewName}.xaml";
|
||||
// There doesn't have to be a view so make sure one exists
|
||||
if (!File.Exists(viewPath))
|
||||
return null;
|
||||
|
||||
// Compile the view if found, must be done on UI thread sadly
|
||||
object view = null;
|
||||
Execute.OnUIThread(() => view = XamlReader.Parse(File.ReadAllText(viewPath)));
|
||||
|
||||
return (UIElement) view;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -31,11 +31,10 @@ namespace Artemis.UI.Stylet
|
||||
ViewFactory = GetInstance,
|
||||
ViewAssemblies = new List<Assembly> {GetType().Assembly}
|
||||
};
|
||||
kernel.Bind<IViewManager>().ToConstant(new ArtemisViewManager(viewManagerConfig));
|
||||
kernel.Bind<IViewManager>().ToConstant(new ViewManager(viewManagerConfig));
|
||||
|
||||
kernel.Bind<IWindowManagerConfig>().ToConstant(this).InTransientScope();
|
||||
kernel.Bind<IWindowManager>().ToMethod(c => new WindowManager(c.Kernel.Get<IViewManager>(),
|
||||
() => c.Kernel.Get<IMessageBoxViewModel>(), c.Kernel.Get<IWindowManagerConfig>())).InSingletonScope();
|
||||
kernel.Bind<IWindowManager>().ToMethod(c => new WindowManager(c.Kernel.Get<IViewManager>(),() => c.Kernel.Get<IMessageBoxViewModel>(), c.Kernel.Get<IWindowManagerConfig>())).InSingletonScope();
|
||||
kernel.Bind<IEventAggregator>().To<EventAggregator>().InSingletonScope();
|
||||
kernel.Bind<IMessageBoxViewModel>().To<MessageBoxViewModel>(); // Not singleton!
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user