public Tabcontainer(IRiddleHandler handler) { DataContext = handler; InitializeComponent(); Header = handler.Name; Preview(); }
// Show page fro the position public void LoadScene() { BookSource Cache = DataContext as BookSource; Handler = Cache.GetCurrentHandler(); PreparePage(); }
private void Preview() { IRiddleHandler h = DataContext as IRiddleHandler; h.ClearAnswer(); h.CreateReadOnly(); x_show.Content = h.DisplayPage; }
private void CreateContentClick(object sender, RoutedEventArgs e) { BookSource s = DataContext as BookSource; IRiddleHandler h = x_types.SelectedItem as IRiddleHandler; h.Create(); s.CreatePage(); s.SetPage(h.CreateRiddle()); LoadScene(); }
private List <IRiddleHandler> InitPlugins() { Assembly assem = Assembly.GetExecutingAssembly(); Uri ur = new Uri(assem.CodeBase); FileInfo fi = new FileInfo(ur.AbsolutePath); string s = fi.Directory.FullName; //find all dlls string[] dlls = Directory.GetFiles(s + "\\Plugins", "*.dll"); ICollection <Assembly> assemblies = new List <Assembly>(dlls.Length); List <IRiddleHandler> riddles = new List <IRiddleHandler>(); // first the basic ones: riddles.Add(new Write.Text.TextHandler()); riddles.Add(new Write.Picture.ImageHandler()); foreach (string dllFile in dlls) { AssemblyName an = AssemblyName.GetAssemblyName(dllFile); Assembly assembly = Assembly.Load(an); assemblies.Add(assembly); } Type rh = typeof(IRiddleHandler); foreach (Assembly a in assemblies) { Type[] types = a.GetTypes(); foreach (Type t in types) { if (t.IsAbstract || t.IsNotPublic || !rh.IsAssignableFrom(t)) { continue; } // create as instance object iRiddle = a.CreateInstance(t.ToString()); IRiddleHandler riddle = iRiddle as IRiddleHandler; if (riddle != null) { riddles.Add(riddle); } } } return(riddles); }
private void LoadClick(object sender, RoutedEventArgs e) { Assembly assem = Assembly.GetExecutingAssembly(); Uri ur = new Uri(assem.CodeBase); FileInfo fi = new FileInfo(ur.AbsolutePath); string s = fi.Directory.FullName + "TestBook.book"; Stream stream = new FileStream(s, FileMode.Open, FileAccess.Read); IFormatter f = new BinaryFormatter(); while (stream.Position < stream.Length) { String name; name = f.Deserialize(stream) as String; IRiddleHandler h = Handlers.Find(x => x.Name == name); h.Load(stream); } stream.Close(); MessageBox.Show($"Load succesfull to {s}"); RefreshAll(); }