Changeset 2426


Ignore:
Timestamp:
Jan 22, 2011, 6:24:17 PM (10 years ago)
Author:
sauer
Message:

Wizard: sample input

Location:
trunk
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPluginBase/Editor/IEditor.cs

    r2241 r2426  
    6868        bool CanPrint { get; }
    6969
     70        string SamplesDir { set; }
     71
    7072        /// <summary>
    7173        /// Gets the editor specific plugins, e.g. connector plugins to build subworkspace and the
  • trunk/CrypPlugins/P2PEditor/P2PEditor.cs

    r2347 r2426  
    196196        }
    197197
     198        public string SamplesDir
     199        {
     200            set {  }
     201        }
     202
    198203        public List<EditorSpecificPluginInfo> EditorSpecificPlugins
    199204        {
  • trunk/CrypPlugins/SimpleEditor/SimpleEditor.cs

    r2241 r2426  
    201201        }
    202202
     203        public string SamplesDir
     204        {
     205            set {  }
     206        }
     207
    203208        public List<EditorSpecificPluginInfo> EditorSpecificPlugins
    204209        {
  • trunk/CrypPlugins/Wizard/Config/Analysis/wizard.config.classicEn.xml

    r2424 r2426  
    1717      Caesar is a classic algorithm to encrypt plaintext or to decrypt ciphertext... (add instead some really helpful text).
    1818    </description>
    19     <inputBox plugin="textInput" property="Input" defaultValue="Input your Message here!">
     19    <inputBox plugin="TextInput1" property="Text" defaultValue="Input your Message here!">
    2020      <description lang="en-US">
    2121        Message to encrypt
     
    2424
    2525    <input id ="CaesarEnKey">
     26      <headline lang="en-US" >Key Input</headline>
     27      <desc lang="en-US" >Input the key information.</desc>
    2628      <inputBox defaultValue="00 00 00">
    2729        <description lang="en-US">
     
    3436        </description>
    3537      </inputBox>
     38
     39      <loadSample file="WorkspaceManagerSamples\KeySearcher_AES_Sample.cwm"/>
    3640    </input>
    3741  </input>
  • trunk/CrypPlugins/Wizard/Wizard.cs

    r2241 r2426  
    2626        public event EditorSpecificPluginsChanged OnEditorSpecificPluginsChanged;
    2727        public event OpenTabHandler OnOpenTab;
     28       
     29        public Wizard()
     30        {
     31            wizardControl.OnOpenTab += (content, title, parent) => OnOpenTab(content, title, parent);
     32            wizardControl.OnGuiLogNotificationOccured += (sender, args) => OnGuiLogNotificationOccured(this, new GuiLogEventArgs(args.Message, this, args.NotificationLevel));
     33        }
    2834
    2935        private WizardSettings wizardSettings = new WizardSettings();
     
    210216        {
    211217            get { return false; }
     218        }
     219
     220        public string SamplesDir
     221        {
     222            set { wizardControl.SamplesDir = value; }
    212223        }
    213224
  • trunk/CrypPlugins/Wizard/Wizard.csproj

    r2310 r2426  
    104104      <Name>CrypPluginBase</Name>
    105105    </ProjectReference>
     106    <ProjectReference Include="..\WorkspaceManager\WorkspaceManager.csproj">
     107      <Project>{949B4294-2894-43B4-BD73-E0B031F5434F}</Project>
     108      <Name>WorkspaceManager</Name>
     109    </ProjectReference>
    106110  </ItemGroup>
    107111  <ItemGroup>
  • trunk/CrypPlugins/Wizard/WizardControl.xaml

    r2424 r2426  
    108108        </Grid>
    109109
    110         <ScrollViewer Grid.Row="2" HorizontalAlignment="Stretch" Name="inputPanel" VerticalAlignment="Stretch" >
     110        <ScrollViewer Grid.Row="2" HorizontalAlignment="Stretch" Name="inputPanel" VerticalAlignment="Stretch" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
    111111            <StackPanel Name="inputStack" Orientation="Vertical"/>
    112112        </ScrollViewer>
  • trunk/CrypPlugins/Wizard/WizardControl.xaml.cs

    r2424 r2426  
    2020using System.Collections;
    2121using System.Globalization;
     22using Cryptool.PluginBase;
     23using WorkspaceManager.Model;
    2224
    2325namespace Wizard
     
    3537        private const string defaultLang = "en-US";
    3638        private XElement wizardConfigXML;
     39        private Dictionary<string, PluginPropertyValue> propertyValueDict = new Dictionary<string, PluginPropertyValue>();
     40
     41        internal event OpenTabHandler OnOpenTab;
     42        internal event GuiLogNotificationEventHandler OnGuiLogNotificationOccured;
     43
     44        internal string SamplesDir { set; private get; }
    3745
    3846        public WizardControl()
     
    105113        private void SetupPage(XElement element)
    106114        {
     115            if ((element.Name == "loadSample") && (element.Attribute("file") != null))
     116            {
     117                LoadSample(element.Attribute("file").Value);
     118            }
     119
    107120            XElement parent = element.Parent;
    108121            if (parent == null)
     
    145158
    146159                    var textBox = new TextBox();
     160                    textBox.Tag = box;
    147161                    textBox.MinLines = 4;
    148162                    inputStack.Children.Add(textBox);
     
    156170                else
    157171                    inputPanel.Tag = element.Element("category");
     172                if (inputPanel.Tag == null)
     173                    inputPanel.Tag = element.Element("loadSample");
    158174
    159175                if (inputPanel.Tag != null)
     
    171187                IEnumerable<XElement> categories = element.Elements("category");
    172188                IEnumerable<XElement> inputs = element.Elements("input");
     189                IEnumerable<XElement> loadSamples = element.Elements("loadSamples");
    173190
    174191                if (inputs.Any())
    175192                    categories = categories.Union(inputs);
     193                if (loadSamples.Any())
     194                    categories = categories.Union(loadSamples);
    176195
    177196                if (categories.Any())
     
    213232
    214233                        RadioButton rb = new RadioButton();
    215                         string id = ele.Attribute("id").Value;
    216                         if (id != null)
    217                             rb.Name = id;
     234                        string id = GetElementID(ele);
    218235                        rb.Checked += rb_Checked;
    219236                        rb.HorizontalAlignment = HorizontalAlignment.Stretch;
     
    234251            }
    235252
     253        }
     254
     255        private string GetElementID(XElement element)
     256        {
     257            if (element.Parent != null)
     258            {
     259                return GetElementID(element.Parent) + "[" + element.Parent.Nodes().ToList().IndexOf(element) + "]." + element.Name;
     260            }
     261            else
     262                return "";
     263        }
     264
     265        private void LoadSample(string file)
     266        {
     267            file = SamplesDir + "\\" + file;
     268
     269            var newEditor = new WorkspaceManager.WorkspaceManager();
     270            var model = ModelPersistance.loadModel(file, newEditor);
     271            newEditor.Open(model);
     272
     273            foreach (var c in propertyValueDict)
     274            {
     275                var ppv = c.Value;
     276                try
     277                {
     278                    var plugin = model.AllPluginModels.Where(x => x.Name == ppv.PluginName).First().Plugin;
     279                    var settings = plugin.Settings;
     280                    var property = settings.GetType().GetProperty(ppv.PropertyName);
     281                    property.SetValue(settings, ppv.Value, null);
     282                }
     283                catch (Exception)
     284                {
     285                    GuiLogMessage(string.Format("Failed settings plugin property {0}.{1} to \"{2}\"!", ppv.PluginName, ppv.PropertyName, ppv.Value), NotificationLevel.Error);
     286                }
     287            }
     288
     289            OnOpenTab(newEditor, "WizardContent", null);
    236290        }
    237291
     
    322376                    if (b.IsChecked != null && (bool) b.IsChecked)
    323377                    {
    324                         choicePath.Add(b.Name);
     378                        choicePath.Add(GetElementID((XElement) b.Tag));
    325379                        SetupPage((XElement) b.Tag);
    326380                        break;
     
    330384            else if (inputPanel.IsVisible)
    331385            {
     386                foreach (var child in inputStack.Children)
     387                {
     388                    if (child is TextBox)
     389                    {
     390                        XElement ele = (XElement) ((TextBox)child).Tag;
     391                        if (ele.Attribute("plugin") != null && ele.Attribute("property") != null)
     392                            propertyValueDict.Add(GetElementID(ele), new PluginPropertyValue() {PluginName = ele.Attribute("plugin").Value,
     393                                PropertyName = ele.Attribute("property").Value, Value = ((TextBox)child).Text});
     394                    }
     395                }
    332396                var nextElement = (XElement) inputPanel.Tag;
    333                 choicePath.Add(nextElement.Attribute("id").Value);
     397                choicePath.Add(GetElementID(nextElement));
    334398                SetupPage(nextElement);
    335399            }
     
    365429            mainGridStoryboardLeft.Begin();
    366430        }
     431
     432        private void GuiLogMessage(string message, NotificationLevel loglevel)
     433        {
     434            if (OnGuiLogNotificationOccured != null)
     435                OnGuiLogNotificationOccured(null, new GuiLogEventArgs(message, null, loglevel));
     436        }
     437    }
     438
     439    internal struct PluginPropertyValue
     440    {
     441        public string PluginName;
     442        public string PropertyName;
     443        public string Value;
    367444    }
    368445}
  • trunk/CrypPlugins/WorkspaceManager/WorkspaceManager.cs

    r2305 r2426  
    414414        }
    415415
     416        public string SamplesDir
     417        {
     418            set {  }
     419        }
     420
    416421        /// <summary>
    417422        ///
Note: See TracChangeset for help on using the changeset viewer.