Changeset 1424


Ignore:
Timestamp:
May 12, 2010, 3:43:43 PM (12 years ago)
Author:
saternus
Message:

CT Plugin Loading

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypCore/PluginManager.cs

    r1259 r1424  
    127127        }
    128128
     129
     130        [Obsolete("will be removed soon")]
    129131        private int AvailablePluginsApproximation(DirectoryInfo directory)
    130132        {
  • trunk/CrypPluginBase/PluginExtension.cs

    r984 r1424  
    3535    public static class PluginExtension
    3636    {
     37        public static readonly string[] Interfaces = new string[] {
     38                typeof(Cryptool.PluginBase.Analysis.IDifferential).FullName,
     39                typeof(Cryptool.PluginBase.Analysis.IAnalysisMisc).FullName,
     40                typeof(Cryptool.PluginBase.Analysis.ISpecific).FullName,
     41                typeof(Cryptool.PluginBase.Analysis.IStatistic).FullName,
     42                typeof(Cryptool.PluginBase.Cryptography.IEncryption).FullName,
     43                typeof(Cryptool.PluginBase.Cryptography.ICheckSumHash).FullName,
     44                typeof(Cryptool.PluginBase.Cryptography.ICryptographicHash).FullName,
     45                typeof(Cryptool.PluginBase.Cryptography.ICryptographyMisc).FullName,
     46                typeof(Cryptool.PluginBase.Editor.IEditor).FullName,
     47                typeof(Cryptool.PluginBase.Generator.IKeyGenerator).FullName,
     48                typeof(Cryptool.PluginBase.Generator.IGeneratorMisc).FullName,
     49                typeof(Cryptool.PluginBase.Generator.IRandomNumberGenerator).FullName,
     50                typeof(Cryptool.PluginBase.IO.IInput).FullName,
     51                typeof(Cryptool.PluginBase.IO.IIOMisc).FullName,
     52                typeof(Cryptool.PluginBase.IO.IOutput).FullName,
     53                typeof(Cryptool.PluginBase.IO.IThroughput).FullName,
     54                typeof(Cryptool.PluginBase.Tool.ITool).FullName };
     55
    3756        public static event GuiLogNotificationEventHandler OnGuiLogNotificationOccured;
    3857
  • trunk/CrypTool 2.0.sln

    r1416 r1424  
    208208EndProject
    209209Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CrypStartup", "CrypStartup\CrypStartup.csproj", "{347B5433-A40E-4ACC-AD6B-A245509AB42E}"
     210EndProject
     211Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CrypTool", "CrypTool\CrypTool.csproj", "{3A40A779-9A54-4633-8A3C-CE0AD4623A85}"
    210212EndProject
    211213Global
     
    10121014                {347B5433-A40E-4ACC-AD6B-A245509AB42E}.Release|x86.ActiveCfg = Release|x86
    10131015                {347B5433-A40E-4ACC-AD6B-A245509AB42E}.Release|x86.Build.0 = Release|x86
     1016                {3A40A779-9A54-4633-8A3C-CE0AD4623A85}.Debug|x64.ActiveCfg = Debug|x64
     1017                {3A40A779-9A54-4633-8A3C-CE0AD4623A85}.Debug|x64.Build.0 = Debug|x64
     1018                {3A40A779-9A54-4633-8A3C-CE0AD4623A85}.Debug|x86.ActiveCfg = Debug|x86
     1019                {3A40A779-9A54-4633-8A3C-CE0AD4623A85}.Debug|x86.Build.0 = Debug|x86
     1020                {3A40A779-9A54-4633-8A3C-CE0AD4623A85}.Release|x64.ActiveCfg = Release|x64
     1021                {3A40A779-9A54-4633-8A3C-CE0AD4623A85}.Release|x64.Build.0 = Release|x64
     1022                {3A40A779-9A54-4633-8A3C-CE0AD4623A85}.Release|x86.ActiveCfg = Release|x86
     1023                {3A40A779-9A54-4633-8A3C-CE0AD4623A85}.Release|x86.Build.0 = Release|x86
    10141024        EndGlobalSection
    10151025        GlobalSection(SolutionProperties) = preSolution
  • trunk/CrypTool/CrypTool.csproj

    r1423 r1424  
    66    <ProductVersion>8.0.30703</ProductVersion>
    77    <SchemaVersion>2.0</SchemaVersion>
    8     <ProjectGuid>{CFC42945-D50A-4428-AC8C-4C9CC5589BA1}</ProjectGuid>
     8    <ProjectGuid>{3A40A779-9A54-4633-8A3C-CE0AD4623A85}</ProjectGuid>
    99    <OutputType>WinExe</OutputType>
    1010    <AppDesignerFolder>Properties</AppDesignerFolder>
     
    2222    <DebugType>full</DebugType>
    2323    <Optimize>false</Optimize>
    24     <OutputPath>bin\Debug\</OutputPath>
     24    <OutputPath>..\CrypBuild\x86\Debug\</OutputPath>
    2525    <DefineConstants>DEBUG;TRACE</DefineConstants>
    2626    <ErrorReport>prompt</ErrorReport>
     
    184184      <Name>CrypCore</Name>
    185185    </ProjectReference>
     186    <ProjectReference Include="..\CrypPluginBase\CrypPluginBase.csproj">
     187      <Project>{25DB2B47-A457-4EC2-960B-395CE07AE093}</Project>
     188      <Name>CrypPluginBase</Name>
     189    </ProjectReference>
    186190  </ItemGroup>
    187191  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  • trunk/CrypTool/MainWindow.xaml

    r1423 r1424  
    55        Loaded="Window_Loaded"
    66        IsGlassEnabled="True"
    7         Title="---------------------------FILL ME--------------------" Height="350" Width="525">
     7        Title="---------------------------FILL ME--------------------" Height="550" Width="525">
    88    <DockPanel LastChildFill="True">
    99        <dc:RibbonBar DockPanel.Dock="Top" Name="AppRibbon" IsRibbonVisible="False">
     
    107107            <dc:OutlookBar.Sections>
    108108                <dc:OutlookSection Header="Classic Ciphers" Image="images/01-Classic-28x26.png" Name="Classic_Ciphers">
    109                     <StackPanel Name="ClassicPaneStack">
    110 
    111                     </StackPanel>
     109                    <ScrollViewer ScrollViewer.VerticalScrollBarVisibility="Auto">
     110                        <StackPanel Name="ClassicPaneStack">
     111                            <ListView  BorderThickness="0" Name="ClassicCiphers" Margin="8,8,8,8"></ListView>
     112                        </StackPanel>
     113                    </ScrollViewer>
    112114                </dc:OutlookSection>
    113115
    114116                <dc:OutlookSection Header="Modern Ciphers" Image="images/02-Modern-28x26.png" Name="Modern_Ciphers">
    115                     <StackPanel Name="ModernPaneStack">
    116 
    117                     </StackPanel>
     117                    <ScrollViewer ScrollViewer.VerticalScrollBarVisibility="Auto">
     118                        <StackPanel Name="ModernPaneStack">
     119                            <dc:OdcExpander Header="Symmetric (Block and Stream)">
     120                                <ListView  BorderThickness="0" Name="ModernSymmetric"></ListView>
     121                            </dc:OdcExpander>
     122                            <dc:OdcExpander Header="Asymmetric">
     123                                <ListView  BorderThickness="0" Name="ModernAsymmetric"></ListView>
     124                            </dc:OdcExpander>
     125                            <dc:OdcExpander Header="Hybrid">
     126                                <ListView  BorderThickness="0" Name="ModernHybrid"></ListView>
     127                            </dc:OdcExpander>
     128                            <dc:OdcExpander Header="Misc">
     129                                <ListView  BorderThickness="0" Name="ModernMisc"></ListView>
     130                            </dc:OdcExpander>
     131                        </StackPanel>
     132                    </ScrollViewer>
    118133                </dc:OutlookSection>
    119134
    120135                <dc:OutlookSection Header="Hash Functions" Image="images/03-Hash-28x26.png" Name="Hash_Functions">
    121                     <StackPanel Name="HashPaneStack">
    122 
    123                     </StackPanel>
     136                    <ScrollViewer ScrollViewer.VerticalScrollBarVisibility="Auto">
     137                        <StackPanel Name="HashPaneStack">
     138                            <dc:OdcExpander Header="Cryptographic Hash Functions">
     139                                <ListView  BorderThickness="0" Name="HashCryptographic"></ListView>
     140                            </dc:OdcExpander>
     141                            <dc:OdcExpander Header="Checksum">
     142                                <ListView  BorderThickness="0" Name="HashChecksum"></ListView>
     143                            </dc:OdcExpander>
     144                        </StackPanel>
     145                    </ScrollViewer>
    124146                </dc:OutlookSection>
    125147
     
    131153
    132154                <dc:OutlookSection Header="Tools" Image="images/05-Tools-28x26.png" Name="Tools">
    133                     <StackPanel Name="ToolPaneStack">
    134 
    135                     </StackPanel>
     155                    <ScrollViewer ScrollViewer.VerticalScrollBarVisibility="Auto">
     156                        <StackPanel Name="ToolPaneStack">
     157                            <dc:OdcExpander Header="Standalone">
     158                                <ListView  BorderThickness="0" Name="ToolsStandalone"></ListView>
     159                            </dc:OdcExpander>
     160                            <dc:OdcExpander Header="Input">
     161                                <ListView  BorderThickness="0" Name="ToolsInput"></ListView>
     162                            </dc:OdcExpander>
     163                            <dc:OdcExpander Header="Output">
     164                                <ListView  BorderThickness="0" Name="ToolsOutput"></ListView>
     165                            </dc:OdcExpander>
     166                            <dc:OdcExpander Header="Misc">
     167                                <ListView  BorderThickness="0" Name="ToolsMisc"></ListView>
     168                            </dc:OdcExpander>
     169                            <dc:OdcExpander Header="Throughput">
     170                                <ListView  BorderThickness="0" Name="ToolsThroughput"></ListView>
     171                            </dc:OdcExpander>
     172                            <dc:OdcExpander Header="Generators">
     173                                <ListView  BorderThickness="0" Name="ToolsGenerators"></ListView>
     174                            </dc:OdcExpander>
     175                        </StackPanel>
     176                    </ScrollViewer>
    136177                </dc:OutlookSection>
    137178
  • trunk/CrypTool/MainWindow.xaml.cs

    r1423 r1424  
    1414using Odyssey.Controls;
    1515using Odyssey.Controls.Classes;
     16using Cryptool.PluginBase;
     17using Cryptool.PluginBase.IO;
     18using Cryptool.PluginBase.Tool;
     19using Cryptool.PluginBase.Generator;
     20using Cryptool.PluginBase.Cryptography;
    1621
    1722namespace CrypTool
     
    4146        private void LoadPlugins()
    4247        {
    43             //foreach (Type pluginType in this.LoadedTypes.Values)
    44             //{
    45             //    if (pluginType.GetEditorSpecificPluginAttribute() != null)
    46             //        continue;
     48            Dictionary<string, List<PluginInfo>> pluginInfos = new Dictionary<string, List<PluginInfo>>();
     49            foreach (Type pluginType in this.LoadedTypes.Values)
     50            {
     51                foreach (string interfaceName in PluginExtension.Interfaces)
     52                {
     53                    if (pluginType.GetInterface(interfaceName) != null)
     54                    {
     55                        if (!pluginInfos.ContainsKey(interfaceName))
     56                            pluginInfos.Add(interfaceName, new List<PluginInfo>());
    4757
    48             //    foreach (string interfaceName in PluginExtension.Interfaces)
    49             //    {
    50             //        if (pluginType.GetInterface(interfaceName) != null)
    51             //        {
    52             //            if (!this.currentPlugins.ContainsKey(interfaceName))
    53             //                this.currentPlugins.Add(interfaceName, new List<Type>());
     58                        PluginInfoAttribute attr = pluginType.GetPluginInfoAttribute();
    5459
    55             //            this.currentPlugins[interfaceName].Add(pluginType);
    56             //        }
    57             //    }
    58             //}
     60                        PluginInfo p =new PluginInfo()
     61                        {
     62                            Caption = attr.Caption,
     63                            DescriptionURL = attr.DescriptionUrl,
     64                            Icon = pluginType.GetImage(0),
     65                            PluginType = pluginType,
     66                            EncryptionType = pluginType.GetEncryptionTypeAttribute()
     67                        };
     68
     69                        pluginInfos[interfaceName].Add(p);
     70
     71                        AddIt(p, interfaceName);
     72                       
     73                    }
     74                }
     75            }
     76
     77        }
     78
     79        private void AddIt(PluginInfo pluginInfo, string interfaceName)
     80        {
     81            Image img = pluginInfo.Icon;
     82            if (img != null)
     83            {
     84                img.Margin = new Thickness(2, 0, 5, 0);
     85                img.Height = 25;
     86                img.Width = 25;
     87                TextBlock textBlock = new TextBlock();
     88                textBlock.FontWeight = FontWeights.DemiBold;
     89                textBlock.VerticalAlignment = VerticalAlignment.Center;
     90                textBlock.Text = pluginInfo.Caption;
     91                WrapPanel wrapPanel = new WrapPanel();
     92                wrapPanel.Margin = new Thickness(0, 2, 0, 2);
     93                wrapPanel.VerticalAlignment = VerticalAlignment.Center;
     94                wrapPanel.Children.Add(img);
     95                wrapPanel.Children.Add(textBlock);
     96                ListBoxItem navItem = new ListBoxItem();
     97                navItem.Content = wrapPanel;
     98
     99                ListView view = GetListBox(pluginInfo, interfaceName);
     100                    if (view != null)
     101                    view.Items.Add(navItem);
     102            }
     103        }
     104
     105        private ListView GetListBox(PluginInfo pluginInfo, string interfaceName)
     106        {
     107            if (interfaceName == typeof(ITool).FullName)
     108                return this.ToolsStandalone;
     109            else if (interfaceName == typeof(IInput).FullName)
     110                return this.ToolsInput;
     111            else if (interfaceName == typeof(IOutput).FullName)
     112                return this.ToolsOutput;
     113            else if (interfaceName == typeof(IIOMisc).FullName)
     114                return this.ToolsMisc;
     115            else if (interfaceName == typeof(IThroughput).FullName)
     116                return this.ToolsThroughput;
     117            else if (interfaceName == typeof(IGeneratorMisc).FullName)
     118                return this.ToolsGenerators;
     119            else if (interfaceName == typeof(IKeyGenerator).FullName)
     120                return this.ToolsGenerators;
     121            else if (interfaceName == typeof(IRandomNumberGenerator).FullName)
     122                return this.ToolsGenerators;
     123            else if (interfaceName == typeof(IEncryption).FullName)
     124            {
     125                if (pluginInfo.EncryptionType != null)
     126                {
     127                    switch (pluginInfo.EncryptionType.EncryptionType)
     128                    {
     129                        case EncryptionType.Asymmetric:
     130                            return this.ModernAsymmetric;
     131                        case EncryptionType.Classic:
     132                            return this.ClassicCiphers;   
     133                        case EncryptionType.SymmetricBlock:
     134                            return ModernSymmetric;
     135                        case EncryptionType.SymmetricStream:
     136                            return ModernSymmetric;
     137                        case EncryptionType.Hybrid:
     138                            return ModernHybrid;
     139                    }
     140                }
     141            }
     142            else if (interfaceName == typeof(ICryptographyMisc).FullName)
     143                return this.ModernMisc;
     144            else if (interfaceName == typeof(ICryptographicHash).FullName)
     145                return this.HashCryptographic;
     146            else if (interfaceName == typeof(ICheckSumHash).FullName)
     147                return this.HashChecksum;
     148
     149           
     150           
     151            return null;
     152
    59153        }
    60154
     
    64158        }
    65159    }
     160
     161    public class PluginInfo
     162    {
     163        public string Caption { get; set; }
     164        public string DescriptionURL { get; set; }
     165        public Image Icon { get; set; }
     166        public Type PluginType { get; set; }
     167        public EncryptionTypeAttribute EncryptionType { get; set; }
     168    }
    66169}
Note: See TracChangeset for help on using the changeset viewer.