Changeset 2280 for trunk


Ignore:
Timestamp:
Jan 4, 2011, 7:23:10 AM (11 years ago)
Author:
matkovic
Message:

-fixed "Fit to Screen"
-fixed Scrollbars
-fixed Dragging
-added custom names
-New: IControl- Presentation
--Loading adjusted
-New: Multi selection
-New: Copy /Past (not complete)
-New: Multi Dragging
-New: PluginContainerView Highlighting added

Location:
trunk/CrypPlugins/WorkspaceManager
Files:
5 added
2 deleted
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/WorkspaceManager/Model/PluginModel.cs

    r2070 r2280  
    176176        public void generateConnectors()
    177177        {
     178            InputConnectors.Clear();
     179            OutputConnectors.Clear();
    178180
    179181            if (Plugin != null)
  • trunk/CrypPlugins/WorkspaceManager/Model/WorkspaceModel.cs

    r1991 r2280  
    2222using Cryptool.PluginBase;
    2323using System.Reflection;
     24using System.Collections.ObjectModel;
     25using WorkspaceManager.View.Container;
     26using System.Windows.Threading;
     27using System.Threading;
    2428
    2529namespace WorkspaceManager.Model
     
    3741        /// The surrounding WorkspaceManagerEditor
    3842        /// </summary>
    39         public WorkspaceManager WorkspaceManagerEditor {
    40             get{
     43        public WorkspaceManager WorkspaceManagerEditor
     44        {
     45            get
     46            {
    4147                return workspaceManagerEditor;
    4248            }
    43             set{
     49            set
     50            {
    4451                workspaceManagerEditor = value;
    4552            }
     
    4754
    4855        /// <summary>
     56        /// The surrounding WorkspaceManagerEditor
     57        /// </summary>
     58        public WorkSpaceEditorView WorkspaceEditor
     59        {
     60            get
     61            {
     62                return (WorkSpaceEditorView)workspaceManagerEditor.Presentation;
     63            }
     64        }
     65
     66        [NonSerialized]
     67        private ObservableCollection<PluginContainerView> selectedPluginsList;
     68
     69        /// <summary>
     70        /// Selected Collection of Plugin's
     71        /// </summary>
     72        public ObservableCollection<PluginContainerView> SelectedPluginsList
     73        {
     74            get
     75            {
     76                return selectedPluginsList;
     77            }
     78            set
     79            {
     80                selectedPluginsList = value;
     81            }
     82        }
     83
     84        /// <summary>
    4985        /// All PluginModels of our Workspace Model
    5086        /// </summary>
     
    75111        /// </summary>
    76112        public WorkspaceModel()
    77         {
     113        {
     114            this.SelectedPluginsList = new ObservableCollection<PluginContainerView>();
    78115            this.AllPluginModels = new List<PluginModel>();
    79116            this.AllConnectionModels = new List<ConnectionModel>();
    80117            this.AllConnectorModels = new List<ConnectorModel>();
    81118            this.AllImageModels = new List<ImageModel>();
    82             this.AllTextModels = new List<TextModel>(); 
     119            this.AllTextModels = new List<TextModel>();
    83120        }
    84121
  • trunk/CrypPlugins/WorkspaceManager/Properties/Settings.Designer.cs

    r2180 r2280  
    11//------------------------------------------------------------------------------
    22// <auto-generated>
    3 //     Dieser Code wurde von einem Tool generiert.
    4 //     Laufzeitversion:4.0.30319.1
     3//     This code was generated by a tool.
     4//     Runtime Version:4.0.30319.1
    55//
    6 //     Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
    7 //     der Code erneut generiert wird.
     6//     Changes to this file may cause incorrect behavior and will be lost if
     7//     the code is regenerated.
    88// </auto-generated>
    99//------------------------------------------------------------------------------
     
    140140            }
    141141        }
     142       
     143        [global::System.Configuration.UserScopedSettingAttribute()]
     144        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     145        [global::System.Configuration.DefaultSettingValueAttribute("3")]
     146        public double MaxScale {
     147            get {
     148                return ((double)(this["MaxScale"]));
     149            }
     150            set {
     151                this["MaxScale"] = value;
     152            }
     153        }
     154       
     155        [global::System.Configuration.UserScopedSettingAttribute()]
     156        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     157        [global::System.Configuration.DefaultSettingValueAttribute("0.3")]
     158        public double MinScale {
     159            get {
     160                return ((double)(this["MinScale"]));
     161            }
     162            set {
     163                this["MinScale"] = value;
     164            }
     165        }
    142166    }
    143167}
  • trunk/CrypPlugins/WorkspaceManager/Properties/Settings.settings

    r2180 r2280  
    3333      <Value Profile="(Default)">0</Value>
    3434    </Setting>
     35    <Setting Name="MaxScale" Type="System.Double" Scope="User">
     36      <Value Profile="(Default)">3</Value>
     37    </Setting>
     38    <Setting Name="MinScale" Type="System.Double" Scope="User">
     39      <Value Profile="(Default)">0.3</Value>
     40    </Setting>
    3541  </Settings>
    3642</SettingsFile>
  • trunk/CrypPlugins/WorkspaceManager/View/Container/PluginContainerView.xaml

    r2119 r2280  
    66             xmlns:e="clr-namespace:WorkspaceManager.View.VisualComponents"
    77             xmlns:z="clr-namespace:WorkspaceManager.View.Converter"
     8             xmlns:y="clr-namespace:WorkspaceManager.View.Container"
     9             xmlns:g="clr-namespace:WorkspaceManager.Model"
     10             
    811             mc:Ignorable="d">
    912    <UserControl.Resources>
     
    2427            <z:CaptionWidthConverter x:Key="CaptionWidthConverter"></z:CaptionWidthConverter>
    2528            <z:ViewStateCaptionConverter x:Key="ViewStateCaptionConverter"></z:ViewStateCaptionConverter>
     29            <z:IsMouseOverColorConverter x:Key="IsMouseOverColorConverter"></z:IsMouseOverColorConverter>
    2630
    2731            <Button x:Key="SettingButton" Name="SettingButton" ToolTip="Settings" Style="{StaticResource ResourceKey=BottomBoxBtnStyle}" Height="30" Width="30" MouseEnter="SettingButton_MouseEnter" Click="OptionChooseHandler">
     
    6165                <SolidColorBrush Opacity="0.01" Color="#444444"></SolidColorBrush>
    6266            </DockPanel.Background>
    63            
    64             <!--<Grid DockPanel.Dock="Top">
    65                 <StackPanel Name="ControlPanel" Visibility="Visible" Opacity="0" Orientation="Horizontal" HorizontalAlignment="Right">
    66 
    67                     <Button x:Name="play" Height="20" Width="20" Margin="3" VerticalAlignment="Bottom" HorizontalAlignment="Left" Style="{StaticResource ResourceKey=DeletePluginContainerButtonStyle}" Click="Button_Click">
    68                         <Button.LayoutTransform>
    69                             <ScaleTransform ScaleX="0.8" ScaleY="0.8"></ScaleTransform>
    70                         </Button.LayoutTransform>
    71                         <Image x:Name="playimg" Source="/WorkspaceManager;component/View/Image/play.png" RenderOptions.ClearTypeHint="Enabled" HorizontalAlignment="Center" SnapsToDevicePixels="True" Margin="1,1,1,1"/>
    72                     </Button>
    73 
    74                     <Button Name="MinimizeButton" Height="20" Width="20" ToolTip="Minimize" Style="{StaticResource ResourceKey=OptionPluginContainerButtonStyle}" Click="OptionChooseHandler">
    75                         <Button.LayoutTransform>
    76                             <ScaleTransform ScaleX="0.8" ScaleY="0.8"></ScaleTransform>
    77                         </Button.LayoutTransform>
    78                         <Image Source="{Binding Path=ViewState, Converter={StaticResource ResourceKey=ViewStateIconConverter}}" HorizontalAlignment="Center" SnapsToDevicePixels="True">
    79                             <Image.Effect>
    80                                 <DropShadowEffect Color="Black" ShadowDepth="0"></DropShadowEffect>
    81                             </Image.Effect>
    82                         </Image>
    83                     </Button>
    84 
    85                     <Button x:Name="del" Height="20" Width="20" Style="{StaticResource ResourceKey=DeletePluginContainerButtonStyle}" Margin="0,0,0,5" Click="Button_Click">
    86                         <Button.LayoutTransform>
    87                             <ScaleTransform ScaleX="0.8" ScaleY="0.8"></ScaleTransform>
    88                         </Button.LayoutTransform>
    89                         <Image Source="/WorkspaceManager;component/View/Image/delete.png" HorizontalAlignment="Center" SnapsToDevicePixels="True" Margin="1,1,1,1"/>
    90                     </Button>
    91                 </StackPanel>
    92             </Grid>-->
    93            
    94            
    95            
    96        
    97             <!--<Border DockPanel.Dock="Bottom" Height="10" Width="{Binding ElementName=PresentationPanel, Path=ActualWidth}" Background="#82bbef" BorderBrush="#4c71bf" BorderThickness="1" Opacity="0.5" Margin="0,0,0,0">
    98                 <StackPanel/>
    99             </Border>-->
    100 
    10167            <Grid Name="MainGrid" Margin="5.5">
    10268                <Grid Name="ConnectorPanel" Panel.ZIndex="11111111">
     
    150116                            </Grid>
    151117                            <Grid Panel.ZIndex="1000" x:Name="ProgressPercentageRoot">
    152                                 <StackPanel Margin="-13" x:Name="ProgressPercentage" Orientation="Horizontal"  HorizontalAlignment="Center" VerticalAlignment="Bottom">
     118                                <StackPanel Margin="6" x:Name="ProgressPercentage" Orientation="Horizontal"  HorizontalAlignment="Center" VerticalAlignment="Bottom">
    153119                                    <StackPanel.RenderTransform>
    154120                                        <TranslateTransform Y="7"></TranslateTransform>
    155121                                    </StackPanel.RenderTransform>
    156                                     <TextBlock Name="Percentage" FontFamily="IrisUPC" FontSize="30" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="ExtraBold" Foreground="#333" Text="{Binding ElementName=ProgressBar, Path=Value, Converter={StaticResource ResourceKey=PercentageConverter}, FallbackValue=error}" >
     122                                    <TextBlock Name="Percentage" FontFamily="Tahoma" FontSize="12" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="ExtraBold" Foreground="#aa000000" Text="{Binding ElementName=ProgressBar, Path=Value, Converter={StaticResource ResourceKey=PercentageConverter}, FallbackValue=error}" >
    157123                                        <TextBlock.Effect>
    158124                                            <DropShadowEffect Direction="0" BlurRadius="3" ShadowDepth="0" Color="White"></DropShadowEffect>
    159125                                        </TextBlock.Effect>
    160126                                    </TextBlock>
    161                                     <TextBlock FontSize="20" FontFamily="IrisUPC" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="ExtraBold" Foreground="Black" Text="%">
     127                                    <TextBlock FontSize="20" FontFamily="IrisUPC" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="ExtraBold" Foreground="#aa000000" Text="%">
    162128                                        <TextBlock.Effect>
    163129                                            <DropShadowEffect Direction="0" BlurRadius="3" ShadowDepth="0" Color="White"></DropShadowEffect>
     
    167133                            </Grid>
    168134                            <DockPanel Name="InnerWindow" LastChildFill="True" Margin="5">
    169                                 <Border CornerRadius="5,5,5,5" BorderThickness="0.9" BorderBrush="#444444">
     135                                <Border CornerRadius="5,5,5,5" BorderThickness="1.3">
     136                                    <Border.BorderBrush>
     137                                        <MultiBinding Converter="{StaticResource IsMouseOverColorConverter}">
     138                                            <Binding Path="IsMouseOver"/>
     139                                            <Binding Path="IsSelected"/>
     140                                        </MultiBinding>
     141                                    </Border.BorderBrush>
    170142                                    <Border CornerRadius="5,5,5,5" BorderThickness="1.2">
    171143                                        <Border.Background>
     
    233205                                                    </Grid>
    234206                                       
    235                                                     <DockPanel DockPanel.Dock="Top" LastChildFill="True">
     207                                                    <DockPanel DockPanel.Dock="Top" LastChildFill="True" >
     208                                                        <DockPanel x:Name="IC" DockPanel.Dock="Top" Visibility="{Binding Path=ViewState, Converter={StaticResource ResourceKey=ViewStateConverter}, ConverterParameter=OptionPanel}">
     209                                                            <ItemsControl DockPanel.Dock="Top" ItemsSource="{Binding Path=ICCollection}" Visibility="{Binding Path=ICPanelVisibility}">
     210                                                                <ItemsControl.ItemsPanel>
     211                                                                    <ItemsPanelTemplate>
     212                                                                        <WrapPanel Background="#77FFFFFF" Width="auto" Height="35" HorizontalAlignment="Center"/>
     213                                                                    </ItemsPanelTemplate>
     214                                                                </ItemsControl.ItemsPanel>
     215                                                                <ItemsControl.ItemTemplate>
     216                                                                    <DataTemplate DataType="{x:Type y:ModelWrapper}">
     217                                                                        <y:IControlPlaceHolder Model="{Binding Path=Model}" PluginModel="{Binding Path=pm}" Margin="5"></y:IControlPlaceHolder>
     218                                                                    </DataTemplate>
     219                                                                </ItemsControl.ItemTemplate>
     220                                                                <!--<ItemsControl.ItemContainerStyle>
     221                                                                    <Style>
     222                                                                        <Setter Property="Canvas.Top" Value="{Binding Path=Y}" />
     223                                                                        <Setter Property="Canvas.Left" Value="{Binding Path=X}" />
     224                                                                    </Style>
     225                                                                </ItemsControl.ItemContainerStyle>-->
     226                                                            </ItemsControl>
     227                                                            <Border Background="{StaticResource ResourceKey=ICBrush}">
     228                                                                <Button Content="»" HorizontalAlignment="Center" VerticalAlignment="Center" Click="Button_Click_2">
     229                                                                    <Button.LayoutTransform>
     230                                                                        <RotateTransform Angle="-90"></RotateTransform>
     231                                                                    </Button.LayoutTransform>
     232                                                                </Button>
     233                                                            </Border>
     234                                                        </DockPanel>
     235
    236236                                                        <Grid x:Name="OptPanelParent" DockPanel.Dock="Top">
    237237                                                            <Border Margin="0,10,0,0" x:Name="IconPanel" Visibility="{Binding ElementName=ViewPanel, Path=Visibility, Converter={StaticResource ResourceKey=VisibilityConverter}}" ></Border>
     
    332332            </Grid>
    333333        </DockPanel>
    334         <TextBox x:Name="CTextBox" DockPanel.Dock="Bottom" Foreground="Black" FontSize="14" Opacity="0" HorizontalAlignment="Left" Style="{StaticResource ResourceKey=BasicTextBoxStyle}" Width="120" Margin="40,0,0,0" FontFamily="Palatino"></TextBox>
     334        <TextBox x:Name="CTextBox" DockPanel.Dock="Bottom" Foreground="Black" FontSize="12" Opacity="0.5" HorizontalAlignment="Left" TextChanged="CTextBox_TextChanged" Style="{StaticResource ResourceKey=BasicTextBoxStyle}" Width="120" Height="18" Margin="0,-10,0,0" FontFamily="Palatino"></TextBox>
    335335       
    336336       
  • trunk/CrypPlugins/WorkspaceManager/View/Container/PluginContainerView.xaml.cs

    r2120 r2280  
    2222using Cryptool.PluginBase;
    2323using System.ComponentModel;
     24using System.Collections.ObjectModel;
     25using Cryptool.PluginBase.Control;
    2426namespace WorkspaceManager.View.Container
    2527{
     
    7779        }
    7880
     81        public static readonly DependencyProperty IsSelectedDependencyProperty = DependencyProperty.Register("IsSelected", typeof(bool), typeof(PluginContainerView), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.AffectsMeasure));
     82
     83        [TypeConverter(typeof(bool))]
     84        public bool IsSelected
     85        {
     86            get { return (bool)base.GetValue(IsSelectedDependencyProperty); }
     87            set
     88            {
     89                base.SetValue(IsSelectedDependencyProperty, value);
     90            }
     91        }
     92
     93        public Visibility ICPanelVisibility
     94        {
     95            get { return (Visibility)GetValue(ICPanelVisibilityProperty); }
     96            set
     97            {
     98                SetValue(ICPanelVisibilityProperty, value);
     99            }
     100        }
     101
     102        public static readonly DependencyProperty ICPanelVisibilityProperty =
     103           DependencyProperty.Register(
     104           "ICPanelVisibility",
     105           typeof(Visibility),
     106           typeof(PluginContainerView),
     107           new UIPropertyMetadata(Visibility.Collapsed, null));
     108
     109
    79110        internal Point GetRoutingPoint(int routPoint)
    80111        {
     
    121152            }
    122153        }
     154
     155        private ObservableCollection<ModelWrapper> iCCollection = new ObservableCollection<ModelWrapper>();
     156
     157        public ObservableCollection<ModelWrapper> ICCollection
     158        { get { return iCCollection; } }
    123159
    124160        public static readonly DependencyProperty ViewStateProperty = DependencyProperty.Register("ViewState", typeof(PluginViewState), typeof(PluginContainerView), new FrameworkPropertyMetadata(PluginViewState.Min));
     
    260296            foreach (ConnectorModel ConnectorModel in model.InputConnectors)
    261297            {
     298                if (ConnectorModel.IControl)
     299                    continue;
     300
    262301                ConnectorView connector = new ConnectorView(ConnectorModel, this);
    263302                AddConnectorView(connector);
     
    266305            foreach (ConnectorModel ConnectorModel in model.OutputConnectors)
    267306            {
     307                if (ConnectorModel.IControl)
     308                {
     309                    PluginModel pm = null;
     310                    if (ConnectorModel.OutputConnections.Count > 0)
     311                    {
     312                        pm = ConnectorModel.OutputConnections[0].To.PluginModel;
     313                    }
     314
     315                    ICCollection.Add(new ModelWrapper(ConnectorModel, pm));
     316                    continue;
     317                }
    268318                ConnectorView connector = new ConnectorView(ConnectorModel, this);
    269319                AddConnectorView(connector);
    270320            }
    271321
     322            if (ICCollection.Count == 0)
     323                IC.Visibility = Visibility.Collapsed;
     324           
    272325            DataPanel.Children.Add(new DataPresentation(connectorViewList));
    273326            this.ViewState = Model.ViewState;
     327        }
     328
     329        static bool IsSubclassOfRawGeneric(Type generic, Type toCheck)
     330        {
     331            while (toCheck != typeof(object))
     332            {
     333                var cur = toCheck.IsGenericType ? toCheck.GetGenericTypeDefinition() : toCheck;
     334                if (generic == cur)
     335                {
     336                    return true;
     337                }
     338                toCheck = toCheck.BaseType;
     339            }
     340            return false;
    274341        }
    275342
     
    458525            this.Icon = this.Model.getImage();
    459526            this.PluginName.Text = model.Plugin.GetPluginInfoAttribute().Caption;
     527            this.CTextBox.Text = Model.Name;
     528            this.PreviewMouseLeftButtonDown += new MouseButtonEventHandler(PluginContainerView_MouseLeftButtonDown);
     529            //this.MouseEnter += new MouseEventHandler(PluginContainerView_MouseEnter);
     530            //this.MouseLeave += new MouseEventHandler(PluginContainerView_MouseLeave);
     531        }
     532
     533        //void PluginContainerView_MouseLeave(object sender, MouseEventArgs e)
     534        //{
     535        //    IsMouseOver = false;
     536        //}
     537
     538        //void PluginContainerView_MouseEnter(object sender, MouseEventArgs e)
     539        //{
     540        //    IsMouseOver = true;
     541        //}
     542
     543        void PluginContainerView_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
     544        {
     545            if (!Model.WorkspaceModel.SelectedPluginsList.Contains(this) && Model.WorkspaceModel.WorkspaceEditor.IsKeyMultiKeyDown)
     546            {
     547                Model.WorkspaceModel.SelectedPluginsList.Add(this);
     548                IsSelected = true;
     549            }
     550            else if (!Model.WorkspaceModel.WorkspaceEditor.IsKeyMultiKeyDown)
     551            {
     552                foreach (PluginContainerView plugin in Model.WorkspaceModel.SelectedPluginsList)
     553                {
     554                    plugin.IsSelected = false;
     555                }
     556                Model.WorkspaceModel.SelectedPluginsList.Clear();
     557                Model.WorkspaceModel.SelectedPluginsList.Add(this);
     558                IsSelected = true;
     559            }
    460560        }
    461561
     
    789889        private void Thumb_DragDelta_1(object sender, DragDeltaEventArgs e)
    790890        {
    791             this.SetPosition(new Point((Math.Round((Canvas.GetLeft(this) + e.HorizontalChange) / Properties.Settings.Default.GridScale)) * Properties.Settings.Default.GridScale,
    792                                                             (Math.Round((Canvas.GetTop(this) + e.VerticalChange) / Properties.Settings.Default.GridScale)) * Properties.Settings.Default.GridScale));
     891            foreach (PluginContainerView plugin in Model.WorkspaceModel.SelectedPluginsList)
     892            {
     893                plugin.SetPosition(new Point((Math.Round((Canvas.GetLeft(plugin) + e.HorizontalChange) / Properties.Settings.Default.GridScale)) * Properties.Settings.Default.GridScale,
     894                                                                (Math.Round((Canvas.GetTop(plugin) + e.VerticalChange) / Properties.Settings.Default.GridScale)) * Properties.Settings.Default.GridScale));
     895
     896                if (plugin.GetPosition().X == 0 || plugin.GetPosition().Y == 0)
     897                    break;
     898            }
     899
    793900            Model.WorkspaceModel.WorkspaceManagerEditor.HasChanges = true;
    794901        }
    795902
     903        private void CTextBox_TextChanged(object sender, TextChangedEventArgs e)
     904        {
     905            Model.Name = CTextBox.Text;
     906        }
     907
     908        private void Button_Click_2(object sender, RoutedEventArgs e)
     909        {
     910            if (ICPanelVisibility == Visibility.Visible)
     911                ICPanelVisibility = Visibility.Collapsed;
     912            else if (ICPanelVisibility == Visibility.Collapsed)
     913                ICPanelVisibility = Visibility.Visible;
     914        }
    796915    }
    797916
     
    808927        public PluginContainerView container;
    809928    }
     929
     930    public class ModelWrapper
     931    {
     932        public PluginModel pm { get; private set; }
     933
     934        public ModelWrapper(ConnectorModel model, PluginModel pm)
     935        {
     936            // TODO: Complete member initialization
     937            this.Model = model;
     938            this.pm = pm;
     939        }
     940
     941        public ConnectorModel Model { get; private set; }
     942    }
    810943}
  • trunk/CrypPlugins/WorkspaceManager/View/Container/WorkSpaceEditorView.xaml

    r2067 r2280  
    2121        </ResourceDictionary>
    2222    </UserControl.Resources>
    23     <Grid x:Name="MainGrid">
     23    <ContentControl x:Name="Main" Background="Aqua">
     24        <Grid x:Name="MainGrid">
    2425
    25         <Grid Background="{StaticResource ResourceKey=NormalBrush}">
    26             <!--<Grid.Background>
     26            <Grid Background="{StaticResource ResourceKey=NormalBrush}">
     27                <!--<Grid.Background>
    2728                <ImageBrush ImageSource="/WorkspaceManager;component/View/Image/bg.png" Opacity="0.95" Stretch="UniformToFill"/>
    2829            </Grid.Background>-->
    29             <Grid.Effect>
    30                 <BlurEffect Radius="{Binding ElementName=InformationPanel, Path=Visibility, Converter={StaticResource ResourceKey=BlurIconConverter}}"></BlurEffect>
    31             </Grid.Effect>
    32             <Border>
    33                 <Grid Name="ViewBoxParent">
    34                     <ScrollViewer x:Name="ViewBox" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
    35                         <e:ModifiedCanvas RenderTransformOrigin="0.5, 0.5" MouseLeftButtonDown="root_MouseLeftButtonDown" MouseMove="WorkSpaceEditorView_MouseMove">
    36                             <Thumb Style="{StaticResource ResourceKey=NormalThumbStyle}" DragDelta="Thumb_DragDelta" DragStarted="Thumb_DragStarted" Width="{Binding Path=ActualWidth}" Height="{Binding Path=ActualHeight}"></Thumb>
    37                             <Grid Name="UserControlWrapperParent" Width="{Binding Path=ActualWidth}" Height="{Binding Path=ActualHeight}"/>
    38                             <e:ModifiedCanvas.LayoutTransform>
    39                                 <ScaleTransform x:Name="RootScale" ScaleX="{Binding Source={x:Static p:Settings.Default}, Path=EditScale, Mode=OneWay}" ScaleY="{Binding Source={x:Static p:Settings.Default}, Path=EditScale, Mode=OneWay}"></ScaleTransform>
    40                             </e:ModifiedCanvas.LayoutTransform>
    41                         </e:ModifiedCanvas>
     30                <Grid.Effect>
     31                    <BlurEffect Radius="{Binding ElementName=InformationPanel, Path=Visibility, Converter={StaticResource ResourceKey=BlurIconConverter}}"></BlurEffect>
     32                </Grid.Effect>
     33                <Border>
     34                    <DockPanel Name="ViewBoxParent" LastChildFill="True">
     35                        <Border x:Name="BottomBoxParent" DockPanel.Dock="Bottom">
     36                            <e:BottomBox></e:BottomBox>
     37                        </Border>
     38                        <ScrollViewer x:Name="scrollViewer" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
     39                            <e:ModifiedCanvas RenderTransformOrigin="0.5, 0.5" MouseLeftButtonDown="root_MouseLeftButtonDown" MouseMove="WorkSpaceEditorView_MouseMove">
     40                                <Thumb Style="{StaticResource ResourceKey=NormalThumbStyle}" DragDelta="Thumb_DragDelta" DragStarted="Thumb_DragStarted" Width="{Binding Path=ActualWidth}" Height="{Binding Path=ActualHeight}"></Thumb>
     41                                <Grid Name="UserControlWrapperParent" Width="{Binding Path=ActualWidth}" Height="{Binding Path=ActualHeight}"/>
     42                                <e:ModifiedCanvas.LayoutTransform>
     43                                    <ScaleTransform x:Name="RootScale" ScaleX="{Binding Source={x:Static p:Settings.Default}, Path=EditScale, Mode=OneWay}" ScaleY="{Binding Source={x:Static p:Settings.Default}, Path=EditScale, Mode=OneWay}"></ScaleTransform>
     44                                </e:ModifiedCanvas.LayoutTransform>
     45                            </e:ModifiedCanvas>
     46                        </ScrollViewer>
     47
     48                    </DockPanel>
     49                </Border>
     50            </Grid>
     51
     52            <Grid Width="auto" Height="auto" Name="InformationPanel" Visibility="Hidden">
     53                <Grid.Background>
     54                    <SolidColorBrush Opacity="0.2" Color="Gray"/>
     55                </Grid.Background>
     56                <Grid x:Name="ProgressbarPanel" Height="40" VerticalAlignment="Bottom">
     57                    <Grid x:Name="PercentageTextPanel" VerticalAlignment="Center" HorizontalAlignment="Center"></Grid>
     58                </Grid>
     59                <DockPanel LastChildFill="True">
     60                    <DockPanel DockPanel.Dock="Top">
     61                        <DockPanel.Background>
     62                            <SolidColorBrush Color="Black" Opacity="0.3"></SolidColorBrush>
     63                        </DockPanel.Background>
     64                        <TextBlock DockPanel.Dock="Left" Text="Fullscreen" Foreground="WhiteSmoke" FontSize="20" Padding="5"></TextBlock>
     65                        <Button DockPanel.Dock="Right" Style="{StaticResource ResourceKey=OptionPluginContainerButtonStyle}" Name="CloseSettingsButton" Height="30" Width="30" Click="CloseButton_Click" Margin="5">
     66                            <Image Source="/WorkspaceManager;component/View/Image/delete.png" HorizontalAlignment="Center" SnapsToDevicePixels="True" Margin="1,1,1,1"/>
     67                        </Button>
     68                        <Grid></Grid>
     69                    </DockPanel>
     70                    <Grid DockPanel.Dock="Top" x:Name="CtrPanel" HorizontalAlignment="Stretch" Width="auto">
     71                        <Grid.Background>
     72                            <SolidColorBrush Color="Gray" Opacity="0.1"></SolidColorBrush>
     73                        </Grid.Background>
     74                    </Grid>
     75                    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Margin="40">
     76                        <Grid x:Name="PrstPanel" Panel.ZIndex="-100">
     77                            <Grid.LayoutTransform>
     78                                <ScaleTransform x:Name="Scale2" ScaleX="{Binding Source={x:Static p:Settings.Default}, Path=FullscreenScale, Mode=OneWay}" ScaleY="{Binding Source={x:Static p:Settings.Default}, Path=FullScreenScale, Mode=OneWay}"></ScaleTransform>
     79                            </Grid.LayoutTransform>
     80                        </Grid>
    4281                    </ScrollViewer>
    43                    
    44                     <Border x:Name="BottomBoxParent" VerticalAlignment="Bottom">
    45                         <e:BottomBox></e:BottomBox>
    46                     </Border>
    47                 </Grid>
    48             </Border>
     82                </DockPanel>
     83
     84            </Grid>
    4985        </Grid>
     86    </ContentControl>
    5087
    51         <Grid Width="auto" Height="auto" Name="InformationPanel" Visibility="Hidden">
    52             <Grid.Background>
    53                 <SolidColorBrush Opacity="0.2" Color="Gray"/>
    54             </Grid.Background>
    55             <Grid x:Name="ProgressbarPanel" Height="40" VerticalAlignment="Bottom">
    56                 <Grid x:Name="PercentageTextPanel" VerticalAlignment="Center" HorizontalAlignment="Center"></Grid>
    57             </Grid>
    58             <DockPanel LastChildFill="True">
    59                 <DockPanel DockPanel.Dock="Top">
    60                     <DockPanel.Background>
    61                         <SolidColorBrush Color="Black" Opacity="0.3"></SolidColorBrush>
    62                     </DockPanel.Background>
    63                     <TextBlock DockPanel.Dock="Left" Text="Fullscreen" Foreground="WhiteSmoke" FontSize="20" Padding="5"></TextBlock>
    64                     <Button DockPanel.Dock="Right" Style="{StaticResource ResourceKey=OptionPluginContainerButtonStyle}" Name="CloseSettingsButton" Height="30" Width="30" Click="CloseButton_Click" Margin="5">
    65                         <Image Source="/WorkspaceManager;component/View/Image/delete.png" HorizontalAlignment="Center" SnapsToDevicePixels="True" Margin="1,1,1,1"/>
    66                     </Button>
    67                     <Grid></Grid>
    68                 </DockPanel>
    69                 <Grid DockPanel.Dock="Top" x:Name="CtrPanel" HorizontalAlignment="Stretch" Width="auto">
    70                     <Grid.Background>
    71                         <SolidColorBrush Color="Gray" Opacity="0.1"></SolidColorBrush>
    72                     </Grid.Background>
    73                 </Grid>
    74                 <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Margin="40">
    75                     <Grid x:Name="PrstPanel" Panel.ZIndex="-100">
    76                         <Grid.LayoutTransform>
    77                             <ScaleTransform x:Name="Scale2" ScaleX="{Binding Source={x:Static p:Settings.Default}, Path=FullscreenScale, Mode=OneWay}" ScaleY="{Binding Source={x:Static p:Settings.Default}, Path=FullScreenScale, Mode=OneWay}"></ScaleTransform>
    78                         </Grid.LayoutTransform>
    79                     </Grid>
    80                 </ScrollViewer>
    81             </DockPanel>
    82 
    83         </Grid>
    84     </Grid>
    8588</UserControl>
  • trunk/CrypPlugins/WorkspaceManager/View/Container/WorkSpaceEditorView.xaml.cs

    r2118 r2280  
    1919using Cryptool.Core;
    2020using Cryptool.PluginBase;
     21using System.Collections.ObjectModel;
     22using System.Windows.Threading;
    2123
    2224namespace WorkspaceManager.View.Container
     
    3335    public partial class WorkSpaceEditorView : UserControl
    3436    {
     37
     38        private Point? lastCenterPositionOnTarget;
     39        private Point? lastMousePositionOnTarget;
     40        private Point? lastDragPoint;
    3541        private Point previousDragPoint = new Point();
    3642        private ConnectorView selectedConnector;
     
    3844        private CryptoLineView dummyLine = new CryptoLineView();
    3945        private PluginContainerView currentFullViewContainer;
    40         private Panel root { get { return (this.ViewBox.Content as Panel); } }
     46        private Panel root { get { return (this.scrollViewer.Content as Panel); } }
    4147        private BottomBox bottomBox { get { return (BottomBoxParent.Child as BottomBox); } }
     48        public bool IsKeyMultiKeyDown;
    4249
    4350        public UserContentWrapper UserContentWrapper { get; set; }
     
    6269            setBaseControl(WorkspaceModel);                       
    6370            InitializeComponent();
    64             ViewBox.DataContext = root;
     71            CompositionTarget.Rendering += new EventHandler(CompositionTarget_Rendering);
     72
     73            scrollViewer.DataContext = root;
     74            scrollViewer.ScrollChanged += OnScrollViewerScrollChanged;
     75            scrollViewer.PreviewMouseLeftButtonUp += OnMouseLeftButtonUp;
     76            scrollViewer.PreviewMouseWheel += OnPreviewMouseWheel;
     77
    6578            this.bottomBox.FitToScreen += new EventHandler<FitToScreenEventArgs>(bottomBox_FitToScreen);
    6679            this.UserContentWrapper = new UserContentWrapper(WorkspaceModel, bottomBox);
     
    6982        }
    7083
     84        void OnMouseMove(object sender, MouseEventArgs e)
     85        {
     86            if (lastDragPoint.HasValue)
     87            {
     88                Point posNow = e.GetPosition(scrollViewer);
     89
     90                double dX = posNow.X - lastDragPoint.Value.X;
     91                double dY = posNow.Y - lastDragPoint.Value.Y;
     92
     93                lastDragPoint = posNow;
     94
     95                scrollViewer.ScrollToHorizontalOffset(scrollViewer.HorizontalOffset - dX);
     96                scrollViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset - dY);
     97            }
     98        }
     99
     100        private void Thumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
     101        {
     102            scrollViewer.ScrollToHorizontalOffset(scrollViewer.HorizontalOffset - e.HorizontalChange);
     103            scrollViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset - e.VerticalChange);
     104            scrollViewer.Cursor = Cursors.SizeAll;
     105        }
     106
     107        void OnPreviewMouseWheel(object sender, MouseWheelEventArgs e)
     108        {
     109            lastMousePositionOnTarget = Mouse.GetPosition(scrollViewer);
     110
     111            if (e.Delta > 0)
     112            {
     113                Properties.Settings.Default.EditScale += 0.2;
     114            }
     115            if (e.Delta < 0)
     116            {
     117                Properties.Settings.Default.EditScale -= 0.2;
     118            }
     119
     120            e.Handled = true;
     121        }
     122
     123        void OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
     124        {
     125            scrollViewer.Cursor = Cursors.Arrow;
     126            scrollViewer.ReleaseMouseCapture();
     127            lastDragPoint = null;
     128        }
     129
     130        void OnScrollViewerScrollChanged(object sender, ScrollChangedEventArgs e)
     131        {
     132            if (e.ExtentHeightChange != 0 || e.ExtentWidthChange != 0)
     133            {
     134                Point? targetBefore = null;
     135                Point? targetNow = null;
     136
     137                if (!lastMousePositionOnTarget.HasValue)
     138                {
     139                    if (lastCenterPositionOnTarget.HasValue)
     140                    {
     141                        var centerOfViewport = new Point(scrollViewer.ViewportWidth / 2,
     142                                                         scrollViewer.ViewportHeight / 2);
     143                        Point centerOfTargetNow =
     144                              scrollViewer.TranslatePoint(centerOfViewport, scrollViewer);
     145
     146                        targetBefore = lastCenterPositionOnTarget;
     147                        targetNow = centerOfTargetNow;
     148                    }
     149                }
     150                else
     151                {
     152                    targetBefore = lastMousePositionOnTarget;
     153                    targetNow = Mouse.GetPosition(scrollViewer);
     154
     155                    lastMousePositionOnTarget = null;
     156                }
     157
     158                if (targetBefore.HasValue)
     159                {
     160                    double dXInTargetPixels = targetNow.Value.X - targetBefore.Value.X;
     161                    double dYInTargetPixels = targetNow.Value.Y - targetBefore.Value.Y;
     162
     163                    double multiplicatorX = e.ExtentWidth / scrollViewer.Width;
     164                    double multiplicatorY = e.ExtentHeight / scrollViewer.Height;
     165
     166                    double newOffsetX = scrollViewer.HorizontalOffset -
     167                                        dXInTargetPixels * multiplicatorX;
     168                    double newOffsetY = scrollViewer.VerticalOffset -
     169                                        dYInTargetPixels * multiplicatorY;
     170
     171                    if (double.IsNaN(newOffsetX) || double.IsNaN(newOffsetY))
     172                    {
     173                        return;
     174                    }
     175
     176                    scrollViewer.ScrollToHorizontalOffset(newOffsetX);
     177                    scrollViewer.ScrollToVerticalOffset(newOffsetY);
     178                }
     179            }
     180        }
     181
     182        void CompositionTarget_Rendering(object sender, EventArgs e)
     183        {
     184            if ((Keyboard.GetKeyStates(Key.LeftCtrl) & KeyStates.Down) > 0)
     185            {
     186                IsKeyMultiKeyDown = true;
     187            }
     188            else
     189                IsKeyMultiKeyDown = false;
     190
     191            if ((Keyboard.GetKeyStates(Key.LeftCtrl) & Keyboard.GetKeyStates(Key.C) & KeyStates.Down) > 0)
     192            {
     193                Copy();
     194            }
     195
     196            if ((Keyboard.GetKeyStates(Key.LeftCtrl) & Keyboard.GetKeyStates(Key.V) & KeyStates.Down) > 0)
     197            {
     198                Paste();
     199            }
     200        }
     201
     202        public void Copy()
     203        {
     204            if (IsMouseOver)
     205            {
     206                List<PluginModel> list = new List<PluginModel>();
     207                foreach (PluginContainerView plugin in Model.SelectedPluginsList)
     208                {
     209                    list.Add(plugin.Model);
     210                }
     211
     212                PluginCopyWrapper w = new PluginCopyWrapper(list.ToArray());
     213                Clipboard.SetData("PluginCopy", w);
     214                var v = Clipboard.GetData("PluginCopy");
     215            }
     216        }
     217
     218        public void Paste()
     219        {
     220            if (IsMouseOver)
     221            {
     222                PluginCopyWrapper v = (PluginCopyWrapper)Clipboard.GetData("PluginCopy");
     223
     224                if (!(v is PluginCopyWrapper))
     225                    return;
     226
     227                foreach (PluginModel model in v.Model)
     228                {
     229                    //this.loadPluginContainerView(model);
     230                    model.WorkspaceModel = this.Model;
     231                    model.generateConnectors();
     232                    this.AddPluginContainerView(model.Position, model);
     233                }
     234
     235                //foreach (ConnectionModel connModel in Model.AllConnectionModels)
     236                //{
     237                //    CryptoLineView conn = new CryptoLineView(connModel);
     238                //    connModel.UpdateableView = conn;
     239                //    connModel.OnDelete += DeleteConnection;
     240
     241                //    foreach (UIElement element in root.Children)
     242                //    {
     243                //        PluginContainerView container = element as PluginContainerView;
     244                //        if (container != null)
     245                //        {
     246                //            foreach (ConnectorView connector in container.ConnectorViewList)
     247                //            {
     248                //                if (connModel.From == connector.Model)
     249                //                {
     250                //                    conn.StartPointSource = connector;
     251                //                    conn.SetBinding(CryptoLineView.StartPointProperty, CreateConnectorBinding(connector));
     252                //                }
     253                //                else if (connModel.To == connector.Model)
     254                //                {
     255                //                    conn.EndPointSource = connector;
     256                //                    conn.SetBinding(CryptoLineView.EndPointProperty, CreateConnectorBinding(connector));
     257                //                }
     258                //            }
     259                //        }
     260                //    }
     261
     262                //    root.Children.Add(conn);
     263                //    ConnectionList.Add(conn);
     264                //    Canvas.SetZIndex(conn, 0);
     265                //}
     266            }
     267        }
     268
     269       
     270
    71271        void bottomBox_FitToScreen(object sender, FitToScreenEventArgs e)
    72272        {
    73273
    74             if (root.Children.Count != 0)
    75             {
    76                 if (root.DesiredSize.Height < ViewBoxParent.ActualHeight)
    77                     Properties.Settings.Default.EditScale = ViewBoxParent.ActualHeight / root.DesiredSize.Height;
    78 
    79                 if (root.DesiredSize.Width < ViewBoxParent.ActualWidth)
    80                     Properties.Settings.Default.EditScale = ViewBoxParent.ActualWidth / root.DesiredSize.Width;
    81                 this.UpdateLayout();
    82                 if (root.ActualWidth > root.ActualHeight)
    83                 {
    84                     this.UpdateLayout();
    85                     Properties.Settings.Default.EditScale = ViewBoxParent.ActualWidth / root.ActualWidth;
    86                     return;
    87                 }
    88                 else if (root.ActualWidth < root.ActualHeight)
    89                 {
    90 
    91                     this.UpdateLayout();
    92                     Properties.Settings.Default.EditScale = ViewBoxParent.ActualHeight / root.ActualHeight;
    93                     return;
    94                 }
     274            if (scrollViewer.ScrollableWidth > 0 || scrollViewer.ScrollableHeight > 0)
     275            {
     276                while (Properties.Settings.Default.EditScale > Properties.Settings.Default.MinScale && (scrollViewer.ScrollableHeight > 0 || scrollViewer.ScrollableWidth > 0))
     277                {
     278                    Properties.Settings.Default.EditScale -= 0.02;
     279                    scrollViewer.UpdateLayout();
     280                }
     281            }
     282            else
     283            {
     284                while (Properties.Settings.Default.EditScale < Properties.Settings.Default.MaxScale && scrollViewer.ScrollableHeight == 0 && scrollViewer.ScrollableWidth == 0)
     285                {
     286                    Properties.Settings.Default.EditScale += 0.02;
     287                    scrollViewer.UpdateLayout();
     288                }
     289                if (scrollViewer.ScrollableHeight > 0 || scrollViewer.ScrollableWidth > 0)
     290                    Properties.Settings.Default.EditScale -= 0.02;
    95291            }
    96292        }
     
    98294        private void setBaseControl(WorkspaceModel WorkspaceModel)
    99295        {
    100             //this.MouseLeftButtonDown += new MouseButtonEventHandler(WorkSpaceEditorView_OnMouseLeftButtonDown);
    101296            this.MouseLeave += new MouseEventHandler(WorkSpaceEditorView_MouseLeave);
    102297            this.Loaded += new RoutedEventHandler(WorkSpaceEditorView_Loaded);
     
    375570        internal void Load(WorkspaceModel WorkspaceModel)
    376571        {
    377             this.Model = WorkspaceModel;   
     572            this.Model = WorkspaceModel;
    378573
    379574            foreach (PluginModel model in this.Model.AllPluginModels)
    380575            {
    381                 this.loadPluginContainerView(model);
     576                bool skip = false;
     577                foreach (ConnectorModel connModel in model.InputConnectors)
     578                {
     579                    if (connModel.IControl && connModel.InputConnections.Count > 0)
     580                    {
     581                        skip = true;
     582                        break;
     583                    }
     584                }
     585                if(!skip)
     586                    this.loadPluginContainerView(model);
    382587            }
    383588            foreach (ConnectionModel connModel in WorkspaceModel.AllConnectionModels)
    384589            {
     590                if (connModel.To.IControl)
     591                    continue;
     592
    385593                CryptoLineView conn = new CryptoLineView(connModel);
    386594                connModel.UpdateableView = conn;
     
    445653        }
    446654
    447         private void Thumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
    448         {
    449             double y = e.VerticalChange, x = e.HorizontalChange;
    450 
    451             ViewBox.ScrollToHorizontalOffset(x);
    452             ViewBox.ScrollToVerticalOffset(y);
    453         }
    454 
    455655        private void Thumb_DragStarted(object sender, System.Windows.Controls.Primitives.DragStartedEventArgs e)
    456656        {
     657        }
     658    }
     659
     660    [Serializable]
     661    public class PluginCopyWrapper
     662    {
     663        public PluginModel[] Model { get; private set; }
     664
     665        public PluginCopyWrapper(PluginModel[] model)
     666        {
     667            this.Model = model;
    457668        }
    458669    }
  • trunk/CrypPlugins/WorkspaceManager/View/Resource/Brushes.xaml

    r2118 r2280  
    196196    </LinearGradientBrush>
    197197
     198    <LinearGradientBrush x:Key="ICBrush" StartPoint="0,0" EndPoint="0,1">
     199        <GradientBrush.GradientStops>
     200            <GradientStopCollection>
     201                <GradientStop Color="#777" Offset="1.0"/>
     202                <GradientStop Color="#888" Offset="0.0"/>
     203            </GradientStopCollection>
     204        </GradientBrush.GradientStops>
     205    </LinearGradientBrush>
     206
    198207</ResourceDictionary>
  • trunk/CrypPlugins/WorkspaceManager/View/Resource/Styles.xaml

    r2119 r2280  
    219219        <Setter Property="KeyboardNavigation.TabNavigation" Value="None"/>
    220220        <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
    221         <Setter Property="MinWidth" Value="120"/>
    222         <Setter Property="MinHeight" Value="20"/>
    223221        <Setter Property="AllowDrop" Value="true"/>
    224222        <Setter Property="Template">
    225223            <Setter.Value>
    226224                <ControlTemplate TargetType="{x:Type TextBoxBase}">
    227                     <Border
    228           Name="Border"
    229           CornerRadius="5"
    230           Padding="2"
    231           Background="Transparent"
    232           BorderThickness="1" >
    233                         <Border.BorderBrush>
    234                             <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
    235                                 <GradientBrush.GradientStops>
    236                                     <GradientStopCollection>
    237                                         <GradientStop Color="#99FFFFFF" Offset="0.0"/>
    238                                         <GradientStop Color="Transparent" Offset="1.0"/>
    239                                     </GradientStopCollection>
    240                                 </GradientBrush.GradientStops>
    241                             </LinearGradientBrush>
    242                         </Border.BorderBrush>
     225                   
     226                    <DockPanel LastChildFill="True">
     227                        <Rectangle DockPanel.Dock="Left" Fill="#555" Width="1" Height="auto"></Rectangle>
     228                        <Rectangle DockPanel.Dock="Top" Fill="#555" Height="1" Width="auto"></Rectangle>
    243229                        <ScrollViewer Margin="0" x:Name="PART_ContentHost"/>
    244                     </Border>
    245                     <ControlTemplate.Triggers>
    246                         <Trigger Property="IsEnabled" Value="False">
    247                             <Setter TargetName="Border" Property="Background" Value="{StaticResource DisabledBackgroundBrush}"/>
    248                             <Setter TargetName="Border" Property="BorderBrush" Value="{StaticResource DisabledBackgroundBrush}"/>
    249                             <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
    250                         </Trigger>
    251                     </ControlTemplate.Triggers>
     230                    </DockPanel>
     231                   
    252232                </ControlTemplate>
    253233            </Setter.Value>
  • trunk/CrypPlugins/WorkspaceManager/View/VisualComponents/BottomBox.xaml

    r2072 r2280  
    4949                    <Border Margin="1,1,1,1" Opacity="0.85" CornerRadius="5,5,0,0">
    5050                        <Slider x:Name="FullScreenScaleSlider" Ticks="1,2" TickPlacement="BottomRight" Style="{StaticResource ResourceKey=SliderStyle}"
    51                                 Minimum="0.1" Maximum="5" Width="100" Height="22"
     51                                Minimum="{Binding Source={x:Static p:Settings.Default}, Path=MinScale, Mode=OneWay}" Maximum="{Binding Source={x:Static p:Settings.Default}, Path=MaxScale, Mode=OneWay}" Width="100" Height="22"
    5252                                Value="{Binding Source={x:Static p:Settings.Default}, Path=EditScale, Mode=TwoWay}"/>
    5353                    </Border>
  • trunk/CrypPlugins/WorkspaceManager/WorkspaceManager.cs

    r2241 r2280  
    228228        public void Cut()
    229229        {
    230             throw new NotImplementedException();
     230           
    231231        }
    232232
    233233        public void Copy()
    234234        {
    235             throw new NotImplementedException();
     235           
    236236        }
    237237
    238238        public void Paste()
    239239        {
    240             throw new NotImplementedException();
     240           
    241241        }
    242242
    243243        public void Remove()
    244244        {
    245             throw new NotImplementedException();
     245           
    246246        }
    247247
     
    255255                this.GuiLogMessage("dx=" + dx + " dy=" + dy, NotificationLevel.Debug);
    256256                const int factor = 4;
    257                 ModifiedCanvas control = (ModifiedCanvas)((WorkSpaceEditorView)this.Presentation).ViewBox.Content;
     257                ModifiedCanvas control = (ModifiedCanvas)((WorkSpaceEditorView)this.Presentation).scrollViewer.Content;
    258258                PrintDialog dialog = new PrintDialog();
    259259                dialog.PageRangeSelection = PageRangeSelection.AllPages;
     
    787787
    788788        public void Active()
    789         {           
     789        {
     790            var b = true;
    790791        }
    791792
  • trunk/CrypPlugins/WorkspaceManager/WorkspaceManager.csproj

    r2167 r2280  
    108108      <DependentUpon>ConnectorView.xaml</DependentUpon>
    109109    </Compile>
    110     <Compile Include="View\Container\IControlContainer.xaml.cs">
    111       <DependentUpon>IControlContainer.xaml</DependentUpon>
     110    <Compile Include="View\Container\IControlPlaceHolder.xaml.cs">
     111      <DependentUpon>IControlPlaceHolder.xaml</DependentUpon>
    112112    </Compile>
    113113    <Compile Include="View\Container\PluginContainerView.xaml.cs">
     
    129129    <Compile Include="View\Converter\IconPanelVisibilityConverter.cs" />
    130130    <Compile Include="View\Converter\InputOutputConverter.cs" />
     131    <Compile Include="View\Converter\IsMouseOverColorConverter.cs" />
    131132    <Compile Include="View\Converter\MenuItemHeaderFixedConverter.cs" />
    132133    <Compile Include="View\Converter\NotificationLevelConverter.cs" />
    133134    <Compile Include="View\Converter\OptionTextCaptionConverter.cs" />
    134135    <Compile Include="View\Converter\OverlapConverter.cs" />
     136    <Compile Include="View\Converter\PluginModelImageConverter.cs" />
    135137    <Compile Include="View\Converter\ScaleToPercentageConverter.cs" />
    136138    <Compile Include="View\Converter\SelectedContentBrushConverter.cs" />
     
    195197    </Compile>
    196198    <Compile Include="View\VisualComponents\ModifiedCanvas\ModifiedCanvas.cs" />
     199    <Compile Include="View\VisualComponents\ObservableDictionary.cs" />
    197200    <Compile Include="View\VisualComponents\Search.xaml.cs">
    198201      <DependentUpon>Search.xaml</DependentUpon>
     
    231234      <SubType>Designer</SubType>
    232235    </Page>
    233     <Page Include="View\Container\IControlContainer.xaml">
     236    <Page Include="View\Container\IControlPlaceHolder.xaml">
    234237      <SubType>Designer</SubType>
    235238      <Generator>MSBuild:Compile</Generator>
  • trunk/CrypPlugins/WorkspaceManager/app.config

    r2180 r2280  
    4545                <value>0</value>
    4646            </setting>
     47            <setting name="MaxScale" serializeAs="String">
     48                <value>3</value>
     49            </setting>
     50            <setting name="MinScale" serializeAs="String">
     51                <value>0.3</value>
     52            </setting>
    4753        </WorkspaceManager.Properties.Settings>
    4854    </userSettings>
Note: See TracChangeset for help on using the changeset viewer.