|
@@ -24,17 +24,105 @@ using System.Windows.Media;
|
|
|
|
|
|
namespace PDF_Office.ViewModels.Tools
|
|
|
{
|
|
|
+ public class AnnotPropertyPanel
|
|
|
+ {
|
|
|
+ public AnnotHandlerEventArgs annot;
|
|
|
+ public event EventHandler<Dictionary<AnnotArgsType, object>> DataChanged;
|
|
|
+ public event EventHandler<object> DefaultStored;
|
|
|
+ public AnnotPropertyPanel()
|
|
|
+ {
|
|
|
+ }
|
|
|
+
|
|
|
+ public void DataChangedInvoke(object sender,Dictionary<AnnotArgsType, object> keyValues)
|
|
|
+ {
|
|
|
+ DataChanged?.Invoke(sender,keyValues);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
public class AnnotToolContentViewModel : BindableBase, INavigationAware
|
|
|
{
|
|
|
+
|
|
|
+
|
|
|
+ #region 注释工具
|
|
|
+
|
|
|
+ private Brush highLightColor = new SolidColorBrush(Color.FromRgb(0xFF, 0xBB, 0x00));
|
|
|
+ public Brush HighLightColor
|
|
|
+ {
|
|
|
+ get { return highLightColor; }
|
|
|
+ set { SetProperty(ref highLightColor, value); }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private double highLightOpacity = 1;
|
|
|
+ public double HighLightOpacity
|
|
|
+ {
|
|
|
+ get { return highLightOpacity; }
|
|
|
+ set { SetProperty(ref highLightOpacity, value); }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private Brush underLine = new SolidColorBrush(Color.FromRgb(0xFF, 0xBB, 0x00));
|
|
|
+ public Brush UnderLineColor
|
|
|
+ {
|
|
|
+ get { return underLine; }
|
|
|
+ set { SetProperty(ref underLine, value); }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private double underLineOpacity = 1;
|
|
|
+ public double UnderLineOpacity
|
|
|
+ {
|
|
|
+ get { return underLineOpacity; }
|
|
|
+ set { SetProperty(ref underLineOpacity, value); }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ private Brush squigglyColor = new SolidColorBrush(Color.FromRgb(0xFF, 0xBB, 0x00));
|
|
|
+ public Brush SquigglyColor
|
|
|
+ {
|
|
|
+ get { return squigglyColor; }
|
|
|
+ set { SetProperty(ref squigglyColor, value); }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private double squigglyOpacity = 1;
|
|
|
+ public double SquigglyOpacity
|
|
|
+ {
|
|
|
+ get { return squigglyOpacity; }
|
|
|
+ set { SetProperty(ref squigglyOpacity, value); }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ private Brush strikeoutColor = new SolidColorBrush(Color.FromRgb(0xFF, 0xBB, 0x00));
|
|
|
+ public Brush StrikeoutColor
|
|
|
+ {
|
|
|
+ get { return strikeoutColor; }
|
|
|
+ set { SetProperty(ref strikeoutColor, value); }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private double strikeoutOpacity = 1;
|
|
|
+ public double StrikeoutOpacity
|
|
|
+ {
|
|
|
+ get { return strikeoutOpacity; }
|
|
|
+ set { SetProperty(ref strikeoutOpacity, value); }
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
private CPDFViewer PDFViewer;
|
|
|
private ViewContentViewModel viewContentViewModel;
|
|
|
- private PropertyPanelContentViewModel propertyPanelContentViewModel;
|
|
|
public DelegateCommand<CustomIconToggleBtn> MyToolsCommand { get; set; }
|
|
|
|
|
|
- public AnnotToolContentViewModel()
|
|
|
+ public AnnotToolContentViewModel(IRegionManager regionManager)
|
|
|
{
|
|
|
+ region = regionManager;
|
|
|
|
|
|
MyToolsCommand = new DelegateCommand<CustomIconToggleBtn>(BtnMyTools_Click);
|
|
|
+ PropertyRegionName = Guid.NewGuid().ToString();
|
|
|
}
|
|
|
|
|
|
private Dictionary<string, bool> ToolExpandDict = new Dictionary<string, bool>();
|
|
@@ -68,16 +156,20 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
annotAttribsList[AnnotAttrib.Color] = highlightArgs.Color;
|
|
|
annotAttribsList[AnnotAttrib.Transparency] = highlightArgs.Transparency;
|
|
|
annotAttribsList[AnnotAttrib.NoteText] = string.Empty;
|
|
|
-
|
|
|
- TextAnnotProperty textAnnotProperty = new TextAnnotProperty();
|
|
|
annotArgs = highlightArgs;
|
|
|
|
|
|
if (!ToolExpandDict.ContainsKey("HighLight"))
|
|
|
{
|
|
|
ToolExpandDict["HighLight"] = true;
|
|
|
}
|
|
|
+ AnnotPropertyPanel propertyPanel = new AnnotPropertyPanel();
|
|
|
+ propertyPanel.annot = highlightArgs;
|
|
|
+ propertyPanel.DataChanged += AnnotPropertyPanel_DataChanged;
|
|
|
+ propertyPanel.DefaultStored += AnnotProperty_DefaultStored;
|
|
|
+ viewContentViewModel.SelectedPrpoertyPanel("TextAnnotProperty", propertyPanel);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
break;
|
|
|
|
|
|
case "UnderLine":
|
|
@@ -100,8 +192,13 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
{
|
|
|
ToolExpandDict["UnderLine"] = true;
|
|
|
}
|
|
|
+ AnnotPropertyPanel propertyPanel = new AnnotPropertyPanel();
|
|
|
+ propertyPanel.annot = underlineArgs;
|
|
|
+ propertyPanel.DataChanged += AnnotPropertyPanel_DataChanged;
|
|
|
+ propertyPanel.DefaultStored += AnnotProperty_DefaultStored;
|
|
|
+ viewContentViewModel.SelectedPrpoertyPanel("TextAnnotProperty", propertyPanel);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
break;
|
|
|
|
|
|
case "Squiggly":
|
|
@@ -125,7 +222,13 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
{
|
|
|
ToolExpandDict["Squiggly"] = true;
|
|
|
}
|
|
|
+ AnnotPropertyPanel propertyPanel = new AnnotPropertyPanel();
|
|
|
+ propertyPanel.annot = squigglyArgs;
|
|
|
+ propertyPanel.DataChanged += AnnotPropertyPanel_DataChanged;
|
|
|
+ propertyPanel.DefaultStored += AnnotProperty_DefaultStored;
|
|
|
+ viewContentViewModel.SelectedPrpoertyPanel("TextAnnotProperty", propertyPanel);
|
|
|
}
|
|
|
+
|
|
|
break;
|
|
|
|
|
|
case "Strikeout":
|
|
@@ -148,7 +251,14 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
{
|
|
|
ToolExpandDict["Strikeout"] = true;
|
|
|
}
|
|
|
+
|
|
|
+ AnnotPropertyPanel propertyPanel = new AnnotPropertyPanel();
|
|
|
+ propertyPanel.annot = strikeoutArgs;
|
|
|
+ propertyPanel.DataChanged += AnnotPropertyPanel_DataChanged;
|
|
|
+ propertyPanel.DefaultStored += AnnotProperty_DefaultStored;
|
|
|
+ viewContentViewModel.SelectedPrpoertyPanel("TextAnnotProperty", propertyPanel);
|
|
|
}
|
|
|
+
|
|
|
break;
|
|
|
|
|
|
case "Freehand":
|
|
@@ -174,6 +284,12 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
{
|
|
|
ToolExpandDict["Freehand"] = true;
|
|
|
}
|
|
|
+
|
|
|
+ AnnotPropertyPanel propertyPanel = new AnnotPropertyPanel();
|
|
|
+ propertyPanel.annot = freehandArgs;
|
|
|
+ propertyPanel.DataChanged += AnnotPropertyPanel_DataChanged;
|
|
|
+ propertyPanel.DefaultStored += AnnotProperty_DefaultStored;
|
|
|
+ viewContentViewModel.SelectedPrpoertyPanel("FreehandAnnotProperty", propertyPanel);
|
|
|
}
|
|
|
break;
|
|
|
|
|
@@ -230,7 +346,14 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
{
|
|
|
ToolExpandDict["Freetext"] = true;
|
|
|
}
|
|
|
+
|
|
|
+ AnnotPropertyPanel propertyPanel = new AnnotPropertyPanel();
|
|
|
+ propertyPanel.annot = freetextArgs;
|
|
|
+ propertyPanel.DataChanged += AnnotPropertyPanel_DataChanged;
|
|
|
+ propertyPanel.DefaultStored += AnnotProperty_DefaultStored;
|
|
|
+ viewContentViewModel.SelectedPrpoertyPanel("FreetextAnnotProperty", propertyPanel);
|
|
|
}
|
|
|
+
|
|
|
break;
|
|
|
|
|
|
case "StickyNote":
|
|
@@ -257,7 +380,14 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
{
|
|
|
ToolExpandDict["StickyNote"] = true;
|
|
|
}
|
|
|
- }
|
|
|
+
|
|
|
+ AnnotPropertyPanel propertyPanel = new AnnotPropertyPanel();
|
|
|
+ propertyPanel.annot = stickyAnnotArgs;
|
|
|
+ propertyPanel.DataChanged += AnnotPropertyPanel_DataChanged;
|
|
|
+ propertyPanel.DefaultStored += AnnotProperty_DefaultStored;
|
|
|
+ viewContentViewModel.SelectedPrpoertyPanel("FreetextAnnotProperty", propertyPanel);
|
|
|
+ }
|
|
|
+
|
|
|
break;
|
|
|
|
|
|
case "Rect":
|
|
@@ -302,7 +432,14 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
{
|
|
|
ToolExpandDict["Rect"] = true;
|
|
|
}
|
|
|
+
|
|
|
+ AnnotPropertyPanel propertyPanel = new AnnotPropertyPanel();
|
|
|
+ propertyPanel.annot = squareArgs;
|
|
|
+ propertyPanel.DataChanged += AnnotPropertyPanel_DataChanged;
|
|
|
+ propertyPanel.DefaultStored += AnnotProperty_DefaultStored;
|
|
|
+ viewContentViewModel.SelectedPrpoertyPanel("SharpsAnnotProperty", propertyPanel);
|
|
|
}
|
|
|
+
|
|
|
break;
|
|
|
|
|
|
case "Circle":
|
|
@@ -348,6 +485,12 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
{
|
|
|
ToolExpandDict["Circle"] = true;
|
|
|
}
|
|
|
+
|
|
|
+ AnnotPropertyPanel propertyPanel = new AnnotPropertyPanel();
|
|
|
+ propertyPanel.annot = circleAnnotArgs;
|
|
|
+ propertyPanel.DataChanged += AnnotPropertyPanel_DataChanged;
|
|
|
+ propertyPanel.DefaultStored += AnnotProperty_DefaultStored;
|
|
|
+ viewContentViewModel.SelectedPrpoertyPanel("SharpsAnnotProperty", propertyPanel);
|
|
|
}
|
|
|
break;
|
|
|
|
|
@@ -414,7 +557,14 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
{
|
|
|
ToolExpandDict[annotBtn.Tag.ToString()] = true;
|
|
|
}
|
|
|
+
|
|
|
+ AnnotPropertyPanel propertyPanel = new AnnotPropertyPanel();
|
|
|
+ propertyPanel.annot = lineArgs;
|
|
|
+ propertyPanel.DataChanged += AnnotPropertyPanel_DataChanged;
|
|
|
+ propertyPanel.DefaultStored += AnnotProperty_DefaultStored;
|
|
|
+ viewContentViewModel.SelectedPrpoertyPanel("SharpsAnnotProperty", propertyPanel);
|
|
|
}
|
|
|
+
|
|
|
break;
|
|
|
|
|
|
case "Stamp":
|
|
@@ -425,8 +575,14 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
stampAnnotArgs.Type = StampType.STANDARD_STAMP;
|
|
|
|
|
|
annotAttribsList[AnnotAttrib.Transparency] = stampAnnotArgs.Opacity;
|
|
|
-
|
|
|
+
|
|
|
+ AnnotPropertyPanel propertyPanel = new AnnotPropertyPanel();
|
|
|
+ propertyPanel.annot = stampAnnotArgs;
|
|
|
+ propertyPanel.DataChanged += AnnotPropertyPanel_DataChanged;
|
|
|
+ propertyPanel.DefaultStored += AnnotProperty_DefaultStored;
|
|
|
+ viewContentViewModel.SelectedPrpoertyPanel("StampAnnotProperty", propertyPanel);
|
|
|
}
|
|
|
+
|
|
|
break;
|
|
|
|
|
|
case "Image":
|
|
@@ -443,13 +599,21 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
|
|
|
annotArgs = stampArgs;
|
|
|
}
|
|
|
+
|
|
|
+ AnnotPropertyPanel propertyPanel = new AnnotPropertyPanel();
|
|
|
+ propertyPanel.annot = stampArgs;
|
|
|
+ propertyPanel.DataChanged += AnnotPropertyPanel_DataChanged;
|
|
|
+ propertyPanel.DefaultStored += AnnotProperty_DefaultStored;
|
|
|
+ viewContentViewModel.SelectedPrpoertyPanel("ImageAnnotProperty", propertyPanel);
|
|
|
}
|
|
|
+
|
|
|
break;
|
|
|
|
|
|
case "Signature":
|
|
|
break;
|
|
|
|
|
|
case "Link":
|
|
|
+ // viewContentViewModel.SelectedPrpoertyPanel("LinkAnnotProperty");
|
|
|
break;
|
|
|
|
|
|
}
|
|
@@ -467,11 +631,43 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
else
|
|
|
{
|
|
|
PDFViewer.SetMouseMode(MouseModes.PanTool);
|
|
|
+ viewContentViewModel.SelectedPrpoertyPanel("PropertyPanelContent",null);
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
+ private void AnnotProperty_DefaultStored(object sender, object e)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void AnnotPropertyPanel_DataChanged(object sender, Dictionary<AnnotArgsType, object> e)
|
|
|
+ {
|
|
|
+ if (e != null)
|
|
|
+ {
|
|
|
+ foreach (AnnotArgsType argsType in e.Keys)
|
|
|
+ {
|
|
|
+ switch (argsType)
|
|
|
+ {
|
|
|
+ case AnnotArgsType.AnnotHighlight:
|
|
|
+ if (e[argsType] is Color)
|
|
|
+ {
|
|
|
+ HighLightColor = new SolidColorBrush((Color)e[argsType]);
|
|
|
+ }
|
|
|
+ if (e[argsType] is double)
|
|
|
+ {
|
|
|
+ HighLightOpacity = (double)e[argsType];
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public IRegionManager region;
|
|
|
+ public string PropertyRegionName { get; set; }
|
|
|
+
|
|
|
public bool IsNavigationTarget(NavigationContext navigationContext)
|
|
|
{
|
|
|
return true;
|
|
@@ -486,8 +682,10 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
navigationContext.Parameters.TryGetValue<ViewContentViewModel>(ParameterNames.ViewContentViewModel, out viewContentViewModel);
|
|
|
navigationContext.Parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out PDFViewer);
|
|
|
|
|
|
- navigationContext.Parameters.TryGetValue<PropertyPanelContentViewModel>(ParameterNames.PropertyPanelContentViewModel, out propertyPanelContentViewModel);
|
|
|
+ // navigationContext.Parameters.TryGetValue<PropertyPanelContentViewModel>(ParameterNames.PropertyPanelContentViewModel, out propertyPanelContentViewModel);
|
|
|
+
|
|
|
|
|
|
+
|
|
|
if (PDFViewer != null)
|
|
|
{
|
|
|
|