1
This commit is contained in:
@@ -122,13 +122,13 @@
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Pinned}" />
|
||||
</ui:SettingsCard.HeaderIcon>
|
||||
<ikw:SimpleStackPanel Orientation="Horizontal" Spacing="8">
|
||||
<TextBlock Text="{Binding ElementName=ViewboxFloatingBarScaleTransformValueSlider, Path=Value}"
|
||||
VerticalAlignment="Center" FontFamily="Consolas"/>
|
||||
<Slider x:Name="ViewboxFloatingBarScaleTransformValueSlider" Minimum="0.5"
|
||||
Maximum="1.25" Width="168"
|
||||
IsSnapToTickEnabled="True" Value="1" TickFrequency="0.05"
|
||||
TickPlacement="None" AutoToolTipPlacement="None"
|
||||
ValueChanged="ViewboxFloatingBarScaleTransformValueSlider_ValueChanged" />
|
||||
<TextBlock Text="{Binding ElementName=ViewboxFloatingBarScaleTransformValueSlider, Path=Value}"
|
||||
VerticalAlignment="Center" FontFamily="Consolas" Width="40" />
|
||||
</ikw:SimpleStackPanel>
|
||||
</ui:SettingsCard>
|
||||
|
||||
@@ -137,13 +137,13 @@
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.EaseOfAccess}" />
|
||||
</ui:SettingsCard.HeaderIcon>
|
||||
<ikw:SimpleStackPanel Orientation="Horizontal" Spacing="8">
|
||||
<TextBlock Text="{Binding ElementName=ViewboxFloatingBarOpacityValueSlider, Path=Value, StringFormat={}{0:F2}}"
|
||||
VerticalAlignment="Center" FontFamily="Consolas"/>
|
||||
<Slider x:Name="ViewboxFloatingBarOpacityValueSlider" Minimum="0.3"
|
||||
Maximum="1" Width="168"
|
||||
IsSnapToTickEnabled="True" Value="1" TickFrequency="0.05"
|
||||
TickPlacement="None" AutoToolTipPlacement="None"
|
||||
ValueChanged="ViewboxFloatingBarOpacityValueSlider_ValueChanged" />
|
||||
<TextBlock Text="{Binding ElementName=ViewboxFloatingBarOpacityValueSlider, Path=Value}"
|
||||
VerticalAlignment="Center" FontFamily="Consolas" Width="40" />
|
||||
</ikw:SimpleStackPanel>
|
||||
</ui:SettingsCard>
|
||||
|
||||
|
||||
@@ -106,6 +106,9 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
|
||||
ComboBoxEraserDisplayOption.SelectedIndex = settings.Appearance.EraserDisplayOption;
|
||||
|
||||
CardEnableTrayIcon.IsOn = settings.Appearance.EnableTrayIcon;
|
||||
|
||||
if (BtnHitokotoCustomize != null)
|
||||
BtnHitokotoCustomize.Visibility = settings.Appearance.ChickenSoupSource == 3 ? Visibility.Visible : Visibility.Collapsed;
|
||||
}
|
||||
|
||||
private MainWindow GetMainWindow() => Application.Current.MainWindow as MainWindow;
|
||||
@@ -232,6 +235,10 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
|
||||
{
|
||||
mw.ViewboxFloatingBarScaleTransform.ScaleX = val > 0.5 && val < 1.25 ? val : val <= 0.5 ? 0.5 : 1.25;
|
||||
mw.ViewboxFloatingBarScaleTransform.ScaleY = val > 0.5 && val < 1.25 ? val : val <= 0.5 ? 0.5 : 1.25;
|
||||
if (mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
|
||||
mw.ViewboxFloatingBarMarginAnimation(60);
|
||||
else
|
||||
mw.ViewboxFloatingBarMarginAnimation(100, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -249,6 +256,11 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Appearance.ViewboxFloatingBarOpacityInPPTValue = ViewboxFloatingBarOpacityInPPTValueSlider.Value;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
var mw = GetMainWindow();
|
||||
if (mw != null && mw.currentMode == 2)
|
||||
{
|
||||
mw.ViewboxFloatingBar.Opacity = ViewboxFloatingBarOpacityInPPTValueSlider.Value;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -0,0 +1,353 @@
|
||||
<ui:Page x:Class="Ink_Canvas.Windows.SettingsViews.Pages.AutomationPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:Ink_Canvas.Windows.SettingsViews.Pages"
|
||||
xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern"
|
||||
xmlns:ikw="http://schemas.inkore.net/lib/ui/wpf"
|
||||
xmlns:i18n="clr-namespace:Ink_Canvas.MarkupExtensions"
|
||||
xmlns:controls="clr-namespace:Ink_Canvas.Controls;assembly=InkCanvas.Controls"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
mc:Ignorable="d"
|
||||
Title="自动化">
|
||||
|
||||
<ScrollViewer PanningMode="VerticalFirst">
|
||||
<Grid Margin="59,0,59,0">
|
||||
<FrameworkElement.Resources>
|
||||
<sys:Double x:Key="SettingsCardSpacing">4</sys:Double>
|
||||
<Style x:Key="SettingsSectionHeaderTextBlockStyle"
|
||||
BasedOn="{StaticResource BodyStrongTextBlockStyle}"
|
||||
TargetType="TextBlock">
|
||||
<Style.Setters>
|
||||
<Setter Property="Margin" Value="1,30,0,6" />
|
||||
</Style.Setters>
|
||||
</Style>
|
||||
</FrameworkElement.Resources>
|
||||
<Grid>
|
||||
<ikw:SimpleStackPanel MaxWidth="1000"
|
||||
HorizontalAlignment="Stretch"
|
||||
Spacing="{StaticResource SettingsCardSpacing}">
|
||||
|
||||
<TextBlock Text="{i18n:I18n Key=AutoFold_Title}" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldInEasiNote"
|
||||
Header="希沃白板"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoFoldInEasiNote_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldInEasiNoteIgnoreDesktopAnno"
|
||||
Header="希沃白板 (忽略桌面批注)"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Clear}"
|
||||
Toggled="ToggleSwitchAutoFoldInEasiNoteIgnoreDesktopAnno_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldInEasiCamera"
|
||||
Header="希沃视频展台"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Camera}"
|
||||
Toggled="ToggleSwitchAutoFoldInEasiCamera_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldInEasiNote3"
|
||||
Header="EasiNote3"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoFoldInEasiNote3_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldInEasiNote3C"
|
||||
Header="EasiNote3C"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoFoldInEasiNote3C_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldInEasiNote5C"
|
||||
Header="EasiNote5C"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoFoldInEasiNote5C_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldInSeewoPincoTeacher"
|
||||
Header="Seewo Pinco Teacher"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoFoldInSeewoPincoTeacher_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldInHiteTouchPro"
|
||||
Header="鸿合 TouchPro"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoFoldInHiteTouchPro_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldInHiteLightBoard"
|
||||
Header="鸿合 光能板"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoFoldInHiteLightBoard_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldInHiteCamera"
|
||||
Header="鸿合 视频展台"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Camera}"
|
||||
Toggled="ToggleSwitchAutoFoldInHiteCamera_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldInWxBoardMain"
|
||||
Header="小白板"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoFoldInWxBoardMain_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldInOldZyBoard"
|
||||
Header="中银白板"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoFoldInOldZyBoard_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldInMSWhiteboard"
|
||||
Header="Microsoft Whiteboard"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoFoldInMSWhiteboard_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldInAdmoxWhiteboard"
|
||||
Header="Admox 白板"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoFoldInAdmoxWhiteboard_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldInAdmoxBooth"
|
||||
Header="Admox 展台"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Camera}"
|
||||
Toggled="ToggleSwitchAutoFoldInAdmoxBooth_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldInQPoint"
|
||||
Header="QPoint"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoFoldInQPoint_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldInYiYunVisualPresenter"
|
||||
Header="易云展台"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Camera}"
|
||||
Toggled="ToggleSwitchAutoFoldInYiYunVisualPresenter_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldInMaxHubWhiteboard"
|
||||
Header="MaxHub 白板"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoFoldInMaxHubWhiteboard_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldInPPTSlideShow"
|
||||
Header="PPT 放映"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoFoldInPPTSlideShow_Toggled"/>
|
||||
|
||||
<TextBlock Text="{i18n:I18n Key=AutoKill_Title}" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoKillPptService"
|
||||
Header="PPT 服务"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoKillPptService_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoKillEasiNote"
|
||||
Header="希沃白板"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoKillEasiNote_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoKillHiteAnnotation"
|
||||
Header="鸿合批注"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoKillHiteAnnotation_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoKillVComYouJiao"
|
||||
Header="VCom 幼教"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoKillVComYouJiao_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoKillSeewoLauncher2DesktopAnnotation"
|
||||
Header="希沃桌面批注"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoKillSeewoLauncher2DesktopAnnotation_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoKillInkCanvas"
|
||||
Header="InkCanvas"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoKillInkCanvas_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoKillICA"
|
||||
Header="ICA"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoKillICA_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoKillIDT"
|
||||
Header="IDT"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchAutoKillIDT_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoEnterAnnotationAfterKillHite"
|
||||
Header="杀进程后进入批注模式"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Edit}"
|
||||
Toggled="ToggleSwitchAutoEnterAnnotationAfterKillHite_Toggled"/>
|
||||
|
||||
<TextBlock Text="{i18n:I18n Key=AutoFold_Mode}" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoEnterAnnotationModeWhenExitFoldMode"
|
||||
Header="退出收纳时进入批注模式"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Edit}"
|
||||
Toggled="ToggleSwitchAutoEnterAnnotationModeWhenExitFoldMode_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldWhenExitWhiteboard"
|
||||
Header="退出白板时自动收纳"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Back}"
|
||||
Toggled="ToggleSwitchAutoFoldWhenExitWhiteboard_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoFoldAfterPPTSlideShow"
|
||||
Header="PPT 放映结束后自动收纳"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Back}"
|
||||
Toggled="ToggleSwitchAutoFoldAfterPPTSlideShow_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardKeepFoldAfterSoftwareExit"
|
||||
Header="软件退出后保持收纳"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Pin}"
|
||||
Toggled="ToggleSwitchKeepFoldAfterSoftwareExit_Toggled"/>
|
||||
|
||||
<TextBlock Text="{i18n:I18n Key=AutoSave_Title}" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardSaveScreenshotsInDateFolders"
|
||||
Header="截图按日期分文件夹"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Folder}"
|
||||
Toggled="ToggleSwitchSaveScreenshotsInDateFolders_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoSaveStrokesAtScreenshot"
|
||||
Header="截图时自动保存墨迹"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Save}"
|
||||
Toggled="ToggleSwitchAutoSaveStrokesAtScreenshot_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoSaveStrokesAtClear"
|
||||
Header="清屏时自动截图"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Save}"
|
||||
Toggled="ToggleSwitchAutoSaveStrokesAtClear_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardSaveStrokesAsXML"
|
||||
Header="墨迹保存为 XML"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Save}"
|
||||
Toggled="ToggleSwitchSaveStrokesAsXML_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardEnableAutoSaveStrokes"
|
||||
Header="定时自动保存墨迹"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Save}"
|
||||
Toggled="ToggleSwitchEnableAutoSaveStrokes_Toggled"/>
|
||||
|
||||
<ui:SettingsCard Header="自动保存间隔">
|
||||
<ui:SettingsCard.HeaderIcon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.QuietHours}"/>
|
||||
</ui:SettingsCard.HeaderIcon>
|
||||
<ComboBox x:Name="ComboBoxAutoSaveStrokesInterval"
|
||||
SelectionChanged="ComboBoxAutoSaveStrokesInterval_SelectionChanged">
|
||||
<ComboBoxItem Content="1 分钟" Tag="1"/>
|
||||
<ComboBoxItem Content="3 分钟" Tag="3"/>
|
||||
<ComboBoxItem Content="5 分钟" Tag="5"/>
|
||||
<ComboBoxItem Content="10 分钟" Tag="10"/>
|
||||
<ComboBoxItem Content="30 分钟" Tag="30"/>
|
||||
</ComboBox>
|
||||
</ui:SettingsCard>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoDelSavedFiles"
|
||||
Header="自动删除旧保存文件"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Delete}"
|
||||
Toggled="ToggleSwitchAutoDelSavedFiles_Toggled"/>
|
||||
|
||||
<ui:SettingsCard Header="自动删除天数阈值">
|
||||
<ui:SettingsCard.HeaderIcon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Calendar}"/>
|
||||
</ui:SettingsCard.HeaderIcon>
|
||||
<ComboBox x:Name="ComboBoxAutoDelSavedFilesDaysThreshold"
|
||||
SelectionChanged="ComboBoxAutoDelSavedFilesDaysThreshold_SelectionChanged">
|
||||
<ComboBoxItem Content="7"/>
|
||||
<ComboBoxItem Content="14"/>
|
||||
<ComboBoxItem Content="30"/>
|
||||
<ComboBoxItem Content="60"/>
|
||||
<ComboBoxItem Content="90"/>
|
||||
</ComboBox>
|
||||
</ui:SettingsCard>
|
||||
|
||||
<ui:SettingsCard Header="自动化最小笔画数">
|
||||
<ui:SettingsCard.HeaderIcon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Calculator}"/>
|
||||
</ui:SettingsCard.HeaderIcon>
|
||||
<Slider x:Name="SideControlMinimumAutomationSlider" Minimum="1" Maximum="50" Width="200" ValueChanged="SideControlMinimumAutomationSlider_ValueChanged"/>
|
||||
</ui:SettingsCard>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardSaveFullPageStrokes"
|
||||
Header="保存全页墨迹"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Save}"
|
||||
Toggled="ToggleSwitchSaveFullPageStrokes_Toggled"/>
|
||||
|
||||
<TextBlock Text="悬浮窗拦截" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardFloatingWindowInterceptorEnabled"
|
||||
Header="启用悬浮窗拦截"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Shield}"
|
||||
Toggled="ToggleSwitchFloatingWindowInterceptorEnabled_Toggled"/>
|
||||
|
||||
<ui:SettingsExpander Header="拦截规则"
|
||||
Visibility="{Binding IsOn, ElementName=CardFloatingWindowInterceptorEnabled, Converter={StaticResource BooleanToVisibilityConverter}}"
|
||||
IsExpanded="{Binding IsOn, ElementName=CardFloatingWindowInterceptorEnabled, Mode=OneWay}">
|
||||
<ui:SettingsExpander.HeaderIcon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Filter}"/>
|
||||
</ui:SettingsExpander.HeaderIcon>
|
||||
<ui:SettingsExpander.Items>
|
||||
<ui:SettingsCard Header="希沃白板 3">
|
||||
<ui:SettingsCard.HeaderIcon><ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"/></ui:SettingsCard.HeaderIcon>
|
||||
<controls:LabeledSettingsCard x:Name="CardSeewoWhiteboard3Floating" Toggled="ToggleSwitchSeewoWhiteboard3Floating_Toggled"/>
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsCard Header="希沃白板 5">
|
||||
<ui:SettingsCard.HeaderIcon><ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"/></ui:SettingsCard.HeaderIcon>
|
||||
<controls:LabeledSettingsCard x:Name="CardSeewoWhiteboard5Floating" Toggled="ToggleSwitchSeewoWhiteboard5Floating_Toggled"/>
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsCard Header="希沃白板 5C">
|
||||
<ui:SettingsCard.HeaderIcon><ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"/></ui:SettingsCard.HeaderIcon>
|
||||
<controls:LabeledSettingsCard x:Name="CardSeewoWhiteboard5CFloating" Toggled="ToggleSwitchSeewoWhiteboard5CFloating_Toggled"/>
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsCard Header="希沃品课侧栏">
|
||||
<ui:SettingsCard.HeaderIcon><ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"/></ui:SettingsCard.HeaderIcon>
|
||||
<controls:LabeledSettingsCard x:Name="CardSeewoPincoSideBarFloating" Toggled="ToggleSwitchSeewoPincoSideBarFloating_Toggled"/>
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsCard Header="希沃品课画笔">
|
||||
<ui:SettingsCard.HeaderIcon><ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Edit}"/></ui:SettingsCard.HeaderIcon>
|
||||
<controls:LabeledSettingsCard x:Name="CardSeewoPincoDrawingFloating" Toggled="ToggleSwitchSeewoPincoDrawingFloating_Toggled"/>
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsCard Header="希沃PPT小工具">
|
||||
<ui:SettingsCard.HeaderIcon><ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"/></ui:SettingsCard.HeaderIcon>
|
||||
<controls:LabeledSettingsCard x:Name="CardSeewoPPTFloating" Toggled="ToggleSwitchSeewoPPTFloating_Toggled"/>
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsCard Header="AiClass">
|
||||
<ui:SettingsCard.HeaderIcon><ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"/></ui:SettingsCard.HeaderIcon>
|
||||
<controls:LabeledSettingsCard x:Name="CardAiClassFloating" Toggled="ToggleSwitchAiClassFloating_Toggled"/>
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsCard Header="鸿合屏幕书写">
|
||||
<ui:SettingsCard.HeaderIcon><ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Edit}"/></ui:SettingsCard.HeaderIcon>
|
||||
<controls:LabeledSettingsCard x:Name="CardHiteAnnotationFloating" Toggled="ToggleSwitchHiteAnnotationFloating_Toggled"/>
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsCard Header="畅言智慧课堂">
|
||||
<ui:SettingsCard.HeaderIcon><ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"/></ui:SettingsCard.HeaderIcon>
|
||||
<controls:LabeledSettingsCard x:Name="CardChangYanFloating" Toggled="ToggleSwitchChangYanFloating_Toggled"/>
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsCard Header="畅言PPT">
|
||||
<ui:SettingsCard.HeaderIcon><ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"/></ui:SettingsCard.HeaderIcon>
|
||||
<controls:LabeledSettingsCard x:Name="CardChangYanPptFloating" Toggled="ToggleSwitchChangYanPptFloating_Toggled"/>
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsCard Header="天喻教育云">
|
||||
<ui:SettingsCard.HeaderIcon><ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"/></ui:SettingsCard.HeaderIcon>
|
||||
<controls:LabeledSettingsCard x:Name="CardIntelligentClassFloating" Toggled="ToggleSwitchIntelligentClassFloating_Toggled"/>
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsCard Header="希沃桌面画笔">
|
||||
<ui:SettingsCard.HeaderIcon><ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Edit}"/></ui:SettingsCard.HeaderIcon>
|
||||
<controls:LabeledSettingsCard x:Name="CardSeewoDesktopAnnotationFloating" Toggled="ToggleSwitchSeewoDesktopAnnotationFloating_Toggled"/>
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsCard Header="希沃桌面侧栏">
|
||||
<ui:SettingsCard.HeaderIcon><ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"/></ui:SettingsCard.HeaderIcon>
|
||||
<controls:LabeledSettingsCard x:Name="CardSeewoDesktopSideBarFloating" Toggled="ToggleSwitchSeewoDesktopSideBarFloating_Toggled"/>
|
||||
</ui:SettingsCard>
|
||||
</ui:SettingsExpander.Items>
|
||||
</ui:SettingsExpander>
|
||||
|
||||
<TextBlock Text="文件关联" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"/>
|
||||
|
||||
<ikw:SimpleStackPanel Orientation="Horizontal" Spacing="8" HorizontalAlignment="Left">
|
||||
<Button x:Name="BtnRegisterFileAssociation" Content="注册文件关联" Click="BtnRegisterFileAssociation_Click"/>
|
||||
<Button x:Name="BtnUnregisterFileAssociation" Content="取消文件关联" Click="BtnUnregisterFileAssociation_Click"/>
|
||||
<Button x:Name="BtnCheckFileAssociation" Content="检查关联状态" Click="BtnCheckFileAssociation_Click"/>
|
||||
</ikw:SimpleStackPanel>
|
||||
<TextBlock x:Name="TextBlockFileAssociationStatus" Margin="0,4,0,0"/>
|
||||
|
||||
<Rectangle Height="48" />
|
||||
</ikw:SimpleStackPanel>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</ui:Page>
|
||||
@@ -0,0 +1,647 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using Ink_Canvas.Windows.SettingsViews.Helpers;
|
||||
using System;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using Page = iNKORE.UI.WPF.Modern.Controls.Page;
|
||||
|
||||
namespace Ink_Canvas.Windows.SettingsViews.Pages
|
||||
{
|
||||
public partial class AutomationPage : Page
|
||||
{
|
||||
private bool _isLoaded = false;
|
||||
|
||||
public AutomationPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
Loaded += AutomationPage_Loaded;
|
||||
Unloaded += AutomationPage_Unloaded;
|
||||
}
|
||||
|
||||
private void AutomationPage_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
LoadSettings();
|
||||
_isLoaded = true;
|
||||
}
|
||||
|
||||
private void AutomationPage_Unloaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
_isLoaded = false;
|
||||
}
|
||||
|
||||
private MainWindow GetMainWindow() => Application.Current.MainWindow as MainWindow;
|
||||
|
||||
private void LoadSettings()
|
||||
{
|
||||
_isLoaded = false;
|
||||
var auto = SettingsManager.Settings.Automation;
|
||||
|
||||
CardAutoFoldInEasiNote.IsOn = auto.IsAutoFoldInEasiNote;
|
||||
CardAutoFoldInEasiNoteIgnoreDesktopAnno.IsOn = auto.IsAutoFoldInEasiNoteIgnoreDesktopAnno;
|
||||
CardAutoFoldInEasiCamera.IsOn = auto.IsAutoFoldInEasiCamera;
|
||||
CardAutoFoldInEasiNote3.IsOn = auto.IsAutoFoldInEasiNote3;
|
||||
CardAutoFoldInEasiNote3C.IsOn = auto.IsAutoFoldInEasiNote3C;
|
||||
CardAutoFoldInEasiNote5C.IsOn = auto.IsAutoFoldInEasiNote5C;
|
||||
CardAutoFoldInSeewoPincoTeacher.IsOn = auto.IsAutoFoldInSeewoPincoTeacher;
|
||||
CardAutoFoldInHiteTouchPro.IsOn = auto.IsAutoFoldInHiteTouchPro;
|
||||
CardAutoFoldInHiteLightBoard.IsOn = auto.IsAutoFoldInHiteLightBoard;
|
||||
CardAutoFoldInHiteCamera.IsOn = auto.IsAutoFoldInHiteCamera;
|
||||
CardAutoFoldInWxBoardMain.IsOn = auto.IsAutoFoldInWxBoardMain;
|
||||
CardAutoFoldInOldZyBoard.IsOn = auto.IsAutoFoldInOldZyBoard;
|
||||
CardAutoFoldInMSWhiteboard.IsOn = auto.IsAutoFoldInMSWhiteboard;
|
||||
CardAutoFoldInAdmoxWhiteboard.IsOn = auto.IsAutoFoldInAdmoxWhiteboard;
|
||||
CardAutoFoldInAdmoxBooth.IsOn = auto.IsAutoFoldInAdmoxBooth;
|
||||
CardAutoFoldInQPoint.IsOn = auto.IsAutoFoldInQPoint;
|
||||
CardAutoFoldInYiYunVisualPresenter.IsOn = auto.IsAutoFoldInYiYunVisualPresenter;
|
||||
CardAutoFoldInMaxHubWhiteboard.IsOn = auto.IsAutoFoldInMaxHubWhiteboard;
|
||||
CardAutoFoldInPPTSlideShow.IsOn = auto.IsAutoFoldInPPTSlideShow;
|
||||
|
||||
CardAutoKillPptService.IsOn = auto.IsAutoKillPptService;
|
||||
CardAutoKillEasiNote.IsOn = auto.IsAutoKillEasiNote;
|
||||
CardAutoKillHiteAnnotation.IsOn = auto.IsAutoKillHiteAnnotation;
|
||||
CardAutoKillVComYouJiao.IsOn = auto.IsAutoKillVComYouJiao;
|
||||
CardAutoKillSeewoLauncher2DesktopAnnotation.IsOn = auto.IsAutoKillSeewoLauncher2DesktopAnnotation;
|
||||
CardAutoKillInkCanvas.IsOn = auto.IsAutoKillInkCanvas;
|
||||
CardAutoKillICA.IsOn = auto.IsAutoKillICA;
|
||||
CardAutoKillIDT.IsOn = auto.IsAutoKillIDT;
|
||||
CardAutoEnterAnnotationAfterKillHite.IsOn = auto.IsAutoEnterAnnotationAfterKillHite;
|
||||
|
||||
CardAutoEnterAnnotationModeWhenExitFoldMode.IsOn = auto.IsAutoEnterAnnotationModeWhenExitFoldMode;
|
||||
CardAutoFoldWhenExitWhiteboard.IsOn = auto.IsAutoFoldWhenExitWhiteboard;
|
||||
CardAutoFoldAfterPPTSlideShow.IsOn = auto.IsAutoFoldAfterPPTSlideShow;
|
||||
CardKeepFoldAfterSoftwareExit.IsOn = auto.KeepFoldAfterSoftwareExit;
|
||||
|
||||
CardSaveScreenshotsInDateFolders.IsOn = auto.IsSaveScreenshotsInDateFolders;
|
||||
CardAutoSaveStrokesAtScreenshot.IsOn = auto.IsAutoSaveStrokesAtScreenshot;
|
||||
CardAutoSaveStrokesAtClear.IsOn = auto.IsAutoSaveStrokesAtClear;
|
||||
CardSaveStrokesAsXML.IsOn = auto.IsSaveStrokesAsXML;
|
||||
CardEnableAutoSaveStrokes.IsOn = auto.IsEnableAutoSaveStrokes;
|
||||
|
||||
var interval = auto.AutoSaveStrokesIntervalMinutes;
|
||||
foreach (ComboBoxItem item in ComboBoxAutoSaveStrokesInterval.Items)
|
||||
{
|
||||
if (item.Tag != null && int.TryParse(item.Tag.ToString(), out int tagVal) && tagVal == interval)
|
||||
{
|
||||
ComboBoxAutoSaveStrokesInterval.SelectedItem = item;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
CardAutoDelSavedFiles.IsOn = auto.AutoDelSavedFiles;
|
||||
ComboBoxAutoDelSavedFilesDaysThreshold.SelectedIndex = auto.AutoDelSavedFilesDaysThreshold switch
|
||||
{
|
||||
7 => 0, 14 => 1, 30 => 2, 60 => 3, 90 => 4, _ => 2
|
||||
};
|
||||
|
||||
SideControlMinimumAutomationSlider.Value = auto.MinimumAutomationStrokeNumber;
|
||||
CardSaveFullPageStrokes.IsOn = auto.IsSaveFullPageStrokes;
|
||||
|
||||
CardFloatingWindowInterceptorEnabled.IsOn = auto.FloatingWindowInterceptor.IsEnabled;
|
||||
if (auto.FloatingWindowInterceptor.InterceptRules != null)
|
||||
{
|
||||
CardSeewoWhiteboard3Floating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("SeewoWhiteboard3Floating") && auto.FloatingWindowInterceptor.InterceptRules["SeewoWhiteboard3Floating"];
|
||||
CardSeewoWhiteboard5Floating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("SeewoWhiteboard5Floating") && auto.FloatingWindowInterceptor.InterceptRules["SeewoWhiteboard5Floating"];
|
||||
CardSeewoWhiteboard5CFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("SeewoWhiteboard5CFloating") && auto.FloatingWindowInterceptor.InterceptRules["SeewoWhiteboard5CFloating"];
|
||||
CardSeewoPincoSideBarFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("SeewoPincoSideBarFloating") && auto.FloatingWindowInterceptor.InterceptRules["SeewoPincoSideBarFloating"];
|
||||
CardSeewoPincoDrawingFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("SeewoPincoDrawingFloating") && auto.FloatingWindowInterceptor.InterceptRules["SeewoPincoDrawingFloating"];
|
||||
CardSeewoPPTFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("SeewoPPTFloating") && auto.FloatingWindowInterceptor.InterceptRules["SeewoPPTFloating"];
|
||||
CardAiClassFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("AiClassFloating") && auto.FloatingWindowInterceptor.InterceptRules["AiClassFloating"];
|
||||
CardHiteAnnotationFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("HiteAnnotationFloating") && auto.FloatingWindowInterceptor.InterceptRules["HiteAnnotationFloating"];
|
||||
CardChangYanFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("ChangYanFloating") && auto.FloatingWindowInterceptor.InterceptRules["ChangYanFloating"];
|
||||
CardChangYanPptFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("ChangYanPptFloating") && auto.FloatingWindowInterceptor.InterceptRules["ChangYanPptFloating"];
|
||||
CardIntelligentClassFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("IntelligentClassFloating") && auto.FloatingWindowInterceptor.InterceptRules["IntelligentClassFloating"];
|
||||
CardSeewoDesktopAnnotationFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("SeewoDesktopAnnotationFloating") && auto.FloatingWindowInterceptor.InterceptRules["SeewoDesktopAnnotationFloating"];
|
||||
CardSeewoDesktopSideBarFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("SeewoDesktopSideBarFloating") && auto.FloatingWindowInterceptor.InterceptRules["SeewoDesktopSideBarFloating"];
|
||||
}
|
||||
|
||||
_isLoaded = true;
|
||||
}
|
||||
|
||||
#region AutoFold
|
||||
|
||||
private void ToggleSwitchAutoFoldInEasiNote_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldInEasiNote = CardAutoFoldInEasiNote.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
GetMainWindow()?.StartOrStoptimerCheckAutoFold();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldInEasiNoteIgnoreDesktopAnno_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldInEasiNoteIgnoreDesktopAnno = CardAutoFoldInEasiNoteIgnoreDesktopAnno.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldInEasiCamera_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldInEasiCamera = CardAutoFoldInEasiCamera.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
GetMainWindow()?.StartOrStoptimerCheckAutoFold();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldInEasiNote3_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldInEasiNote3 = CardAutoFoldInEasiNote3.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
GetMainWindow()?.StartOrStoptimerCheckAutoFold();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldInEasiNote3C_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldInEasiNote3C = CardAutoFoldInEasiNote3C.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
GetMainWindow()?.StartOrStoptimerCheckAutoFold();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldInEasiNote5C_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldInEasiNote5C = CardAutoFoldInEasiNote5C.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
GetMainWindow()?.StartOrStoptimerCheckAutoFold();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldInSeewoPincoTeacher_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldInSeewoPincoTeacher = CardAutoFoldInSeewoPincoTeacher.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
GetMainWindow()?.StartOrStoptimerCheckAutoFold();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldInHiteTouchPro_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldInHiteTouchPro = CardAutoFoldInHiteTouchPro.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
GetMainWindow()?.StartOrStoptimerCheckAutoFold();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldInHiteLightBoard_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldInHiteLightBoard = CardAutoFoldInHiteLightBoard.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
GetMainWindow()?.StartOrStoptimerCheckAutoFold();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldInHiteCamera_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldInHiteCamera = CardAutoFoldInHiteCamera.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
GetMainWindow()?.StartOrStoptimerCheckAutoFold();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldInWxBoardMain_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldInWxBoardMain = CardAutoFoldInWxBoardMain.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
GetMainWindow()?.StartOrStoptimerCheckAutoFold();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldInOldZyBoard_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldInOldZyBoard = CardAutoFoldInOldZyBoard.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
GetMainWindow()?.StartOrStoptimerCheckAutoFold();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldInMSWhiteboard_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldInMSWhiteboard = CardAutoFoldInMSWhiteboard.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
GetMainWindow()?.StartOrStoptimerCheckAutoFold();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldInAdmoxWhiteboard_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldInAdmoxWhiteboard = CardAutoFoldInAdmoxWhiteboard.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
GetMainWindow()?.StartOrStoptimerCheckAutoFold();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldInAdmoxBooth_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldInAdmoxBooth = CardAutoFoldInAdmoxBooth.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
GetMainWindow()?.StartOrStoptimerCheckAutoFold();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldInQPoint_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldInQPoint = CardAutoFoldInQPoint.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
GetMainWindow()?.StartOrStoptimerCheckAutoFold();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldInYiYunVisualPresenter_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldInYiYunVisualPresenter = CardAutoFoldInYiYunVisualPresenter.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
GetMainWindow()?.StartOrStoptimerCheckAutoFold();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldInMaxHubWhiteboard_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldInMaxHubWhiteboard = CardAutoFoldInMaxHubWhiteboard.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
GetMainWindow()?.StartOrStoptimerCheckAutoFold();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldInPPTSlideShow_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
var auto = SettingsManager.Settings.Automation;
|
||||
bool previousState = auto.IsAutoFoldInPPTSlideShow;
|
||||
auto.IsAutoFoldInPPTSlideShow = CardAutoFoldInPPTSlideShow.IsOn;
|
||||
if (previousState != auto.IsAutoFoldInPPTSlideShow)
|
||||
{
|
||||
LogHelper.WriteLogToFile($"PPT自动收纳设置已变更: {auto.IsAutoFoldInPPTSlideShow}", LogHelper.LogType.Trace);
|
||||
}
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
mw?.StartOrStoptimerCheckAutoFold();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region AutoKill
|
||||
|
||||
private void UpdateAutoKillTimer()
|
||||
{
|
||||
var mw = GetMainWindow();
|
||||
if (mw == null) return;
|
||||
var auto = SettingsManager.Settings.Automation;
|
||||
bool anyKill = auto.IsAutoKillEasiNote || auto.IsAutoKillPptService ||
|
||||
auto.IsAutoKillHiteAnnotation || auto.IsAutoKillInkCanvas ||
|
||||
auto.IsAutoKillICA || auto.IsAutoKillIDT || auto.IsAutoKillVComYouJiao ||
|
||||
auto.IsAutoKillSeewoLauncher2DesktopAnnotation;
|
||||
mw.UpdateAutoKillProcessTimer(anyKill);
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoKillPptService_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoKillPptService = CardAutoKillPptService.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
UpdateAutoKillTimer();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoKillEasiNote_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoKillEasiNote = CardAutoKillEasiNote.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
UpdateAutoKillTimer();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoKillHiteAnnotation_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoKillHiteAnnotation = CardAutoKillHiteAnnotation.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
UpdateAutoKillTimer();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoKillVComYouJiao_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoKillVComYouJiao = CardAutoKillVComYouJiao.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
UpdateAutoKillTimer();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoKillSeewoLauncher2DesktopAnnotation_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoKillSeewoLauncher2DesktopAnnotation = CardAutoKillSeewoLauncher2DesktopAnnotation.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
UpdateAutoKillTimer();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoKillInkCanvas_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoKillInkCanvas = CardAutoKillInkCanvas.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
UpdateAutoKillTimer();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoKillICA_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoKillICA = CardAutoKillICA.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
UpdateAutoKillTimer();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoKillIDT_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoKillIDT = CardAutoKillIDT.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
UpdateAutoKillTimer();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoEnterAnnotationAfterKillHite_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoEnterAnnotationAfterKillHite = CardAutoEnterAnnotationAfterKillHite.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Fold Mode
|
||||
|
||||
private void ToggleSwitchAutoEnterAnnotationModeWhenExitFoldMode_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoEnterAnnotationModeWhenExitFoldMode = CardAutoEnterAnnotationModeWhenExitFoldMode.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldWhenExitWhiteboard_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldWhenExitWhiteboard = CardAutoFoldWhenExitWhiteboard.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoFoldAfterPPTSlideShow_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoFoldAfterPPTSlideShow = CardAutoFoldAfterPPTSlideShow.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchKeepFoldAfterSoftwareExit_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.KeepFoldAfterSoftwareExit = CardKeepFoldAfterSoftwareExit.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Storage & Save
|
||||
|
||||
private void ToggleSwitchSaveScreenshotsInDateFolders_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsSaveScreenshotsInDateFolders = CardSaveScreenshotsInDateFolders.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoSaveStrokesAtScreenshot_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoSaveStrokesAtScreenshot = CardAutoSaveStrokesAtScreenshot.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoSaveStrokesAtClear_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsAutoSaveStrokesAtClear = CardAutoSaveStrokesAtClear.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchSaveStrokesAsXML_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsSaveStrokesAsXML = CardSaveStrokesAsXML.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchEnableAutoSaveStrokes_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsEnableAutoSaveStrokes = CardEnableAutoSaveStrokes.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
GetMainWindow()?.UpdateAutoSaveStrokesTimer();
|
||||
}
|
||||
|
||||
private void ComboBoxAutoSaveStrokesInterval_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded || ComboBoxAutoSaveStrokesInterval.SelectedItem == null) return;
|
||||
var selectedItem = ComboBoxAutoSaveStrokesInterval.SelectedItem as ComboBoxItem;
|
||||
if (selectedItem?.Tag != null && int.TryParse(selectedItem.Tag.ToString(), out int intervalMinutes))
|
||||
{
|
||||
SettingsManager.Settings.Automation.AutoSaveStrokesIntervalMinutes = intervalMinutes;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
GetMainWindow()?.UpdateAutoSaveStrokesTimer();
|
||||
}
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoDelSavedFiles_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.AutoDelSavedFiles = CardAutoDelSavedFiles.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ComboBoxAutoDelSavedFilesDaysThreshold_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.AutoDelSavedFilesDaysThreshold =
|
||||
int.Parse(((ComboBoxItem)ComboBoxAutoDelSavedFilesDaysThreshold.SelectedItem).Content.ToString());
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void SideControlMinimumAutomationSlider_ValueChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.MinimumAutomationStrokeNumber = (int)SideControlMinimumAutomationSlider.Value;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchSaveFullPageStrokes_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Automation.IsSaveFullPageStrokes = CardSaveFullPageStrokes.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Floating Window Interceptor
|
||||
|
||||
private void ToggleSwitchFloatingWindowInterceptorEnabled_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
if (mw == null) return;
|
||||
SettingsManager.Settings.Automation.FloatingWindowInterceptor.IsEnabled = CardFloatingWindowInterceptorEnabled.IsOn;
|
||||
if (mw._floatingWindowInterceptorManager != null)
|
||||
{
|
||||
if (SettingsManager.Settings.Automation.FloatingWindowInterceptor.IsEnabled)
|
||||
mw._floatingWindowInterceptorManager.Start();
|
||||
else
|
||||
mw._floatingWindowInterceptorManager.Stop();
|
||||
}
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchSeewoWhiteboard3Floating_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoWhiteboard3Floating, CardSeewoWhiteboard3Floating.IsOn);
|
||||
}
|
||||
|
||||
private void ToggleSwitchSeewoWhiteboard5Floating_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoWhiteboard5Floating, CardSeewoWhiteboard5Floating.IsOn);
|
||||
}
|
||||
|
||||
private void ToggleSwitchSeewoWhiteboard5CFloating_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoWhiteboard5CFloating, CardSeewoWhiteboard5CFloating.IsOn);
|
||||
}
|
||||
|
||||
private void ToggleSwitchSeewoPincoSideBarFloating_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoPincoSideBarFloating, CardSeewoPincoSideBarFloating.IsOn);
|
||||
}
|
||||
|
||||
private void ToggleSwitchSeewoPincoDrawingFloating_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoPincoDrawingFloating, CardSeewoPincoDrawingFloating.IsOn);
|
||||
}
|
||||
|
||||
private void ToggleSwitchSeewoPPTFloating_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoPPTFloating, CardSeewoPPTFloating.IsOn);
|
||||
}
|
||||
|
||||
private void ToggleSwitchAiClassFloating_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.AiClassFloating, CardAiClassFloating.IsOn);
|
||||
}
|
||||
|
||||
private void ToggleSwitchHiteAnnotationFloating_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.HiteAnnotationFloating, CardHiteAnnotationFloating.IsOn);
|
||||
}
|
||||
|
||||
private void ToggleSwitchChangYanFloating_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.ChangYanFloating, CardChangYanFloating.IsOn);
|
||||
}
|
||||
|
||||
private void ToggleSwitchChangYanPptFloating_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.ChangYanPptFloating, CardChangYanPptFloating.IsOn);
|
||||
}
|
||||
|
||||
private void ToggleSwitchIntelligentClassFloating_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.IntelligentClassFloating, CardIntelligentClassFloating.IsOn);
|
||||
}
|
||||
|
||||
private void ToggleSwitchSeewoDesktopAnnotationFloating_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoDesktopAnnotationFloating, CardSeewoDesktopAnnotationFloating.IsOn);
|
||||
}
|
||||
|
||||
private void ToggleSwitchSeewoDesktopSideBarFloating_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoDesktopSideBarFloating, CardSeewoDesktopSideBarFloating.IsOn);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region File Association
|
||||
|
||||
private void BtnRegisterFileAssociation_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
bool success = FileAssociationManager.RegisterFileAssociation();
|
||||
UpdateFileAssociationStatus();
|
||||
var mw = GetMainWindow();
|
||||
if (mw != null)
|
||||
mw.ShowNotification(success ? "文件关联注册成功" : "文件关联注册失败");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.WriteLogToFile($"注册文件关联失败: {ex.Message}", LogHelper.LogType.Error);
|
||||
UpdateFileAssociationStatus();
|
||||
}
|
||||
}
|
||||
|
||||
private void BtnUnregisterFileAssociation_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
bool success = FileAssociationManager.UnregisterFileAssociation();
|
||||
UpdateFileAssociationStatus();
|
||||
var mw = GetMainWindow();
|
||||
if (mw != null)
|
||||
mw.ShowNotification(success ? "文件关联已取消" : "取消文件关联失败");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.WriteLogToFile($"取消文件关联失败: {ex.Message}", LogHelper.LogType.Error);
|
||||
UpdateFileAssociationStatus();
|
||||
}
|
||||
}
|
||||
|
||||
private void BtnCheckFileAssociation_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
UpdateFileAssociationStatus();
|
||||
}
|
||||
|
||||
private void UpdateFileAssociationStatus()
|
||||
{
|
||||
try
|
||||
{
|
||||
bool isRegistered = FileAssociationManager.IsFileAssociationRegistered();
|
||||
if (isRegistered)
|
||||
{
|
||||
TextBlockFileAssociationStatus.Text = "✓ .icstk文件关联已注册";
|
||||
TextBlockFileAssociationStatus.Foreground = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.LightGreen);
|
||||
}
|
||||
else
|
||||
{
|
||||
TextBlockFileAssociationStatus.Text = "✗ .icstk文件关联未注册";
|
||||
TextBlockFileAssociationStatus.Foreground = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.LightCoral);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
TextBlockFileAssociationStatus.Text = "✗ 检查文件关联状态时出错";
|
||||
TextBlockFileAssociationStatus.Foreground = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.LightCoral);
|
||||
LogHelper.WriteLogToFile($"检查文件关联状态失败: {ex.Message}", LogHelper.LogType.Error);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -119,6 +119,9 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
|
||||
{
|
||||
SettingsManager.Settings.Canvas.DisablePressure = false;
|
||||
CardDisablePressure.IsOn = false;
|
||||
var mw = Application.Current.MainWindow as MainWindow;
|
||||
if (mw != null && mw.inkCanvas != null)
|
||||
mw.inkCanvas.DefaultDrawingAttributes.IgnorePressure = false;
|
||||
}
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
@@ -133,6 +136,9 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
|
||||
CardEnablePressureTouchMode.IsOn = false;
|
||||
}
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
var mw = Application.Current.MainWindow as MainWindow;
|
||||
if (mw != null && mw.inkCanvas != null)
|
||||
mw.inkCanvas.DefaultDrawingAttributes.IgnorePressure = CardDisablePressure.IsOn;
|
||||
}
|
||||
|
||||
private void ComboBoxEraserSize_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
@@ -140,6 +146,14 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Canvas.EraserSize = ComboBoxEraserSize.SelectedIndex;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
var mw = Application.Current.MainWindow as MainWindow;
|
||||
if (mw != null)
|
||||
{
|
||||
if (mw.ComboBoxEraserSizeFloatingBar != null)
|
||||
mw.ComboBoxEraserSizeFloatingBar.SelectedIndex = ComboBoxEraserSize.SelectedIndex;
|
||||
if (mw.BoardComboBoxEraserSize != null)
|
||||
mw.BoardComboBoxEraserSize.SelectedIndex = ComboBoxEraserSize.SelectedIndex;
|
||||
}
|
||||
}
|
||||
|
||||
private void ToggleSwitchHideStrokeWhenSelecting_Toggled(object sender, RoutedEventArgs e)
|
||||
@@ -221,6 +235,15 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
|
||||
SettingsManager.Settings.Canvas.EnableInkFade = ToggleSwitchEnableInkFade.IsOn;
|
||||
ExpanderEnableInkFade.IsExpanded = ToggleSwitchEnableInkFade.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
var mw = Application.Current.MainWindow as MainWindow;
|
||||
if (mw != null)
|
||||
{
|
||||
mw.UpdateInkFadeManager(ToggleSwitchEnableInkFade.IsOn, SettingsManager.Settings.Canvas.InkFadeTime);
|
||||
if (mw.ToggleSwitchInkFadeInPanel != null)
|
||||
mw.ToggleSwitchInkFadeInPanel.IsOn = ToggleSwitchEnableInkFade.IsOn;
|
||||
if (mw.ToggleSwitchInkFadeInPanel2 != null)
|
||||
mw.ToggleSwitchInkFadeInPanel2.IsOn = ToggleSwitchEnableInkFade.IsOn;
|
||||
}
|
||||
}
|
||||
|
||||
private void InkFadeTimeSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
|
||||
@@ -228,6 +251,11 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.Canvas.InkFadeTime = (int)e.NewValue;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
var mw = Application.Current.MainWindow as MainWindow;
|
||||
if (mw != null && SettingsManager.Settings.Canvas.EnableInkFade)
|
||||
{
|
||||
mw.UpdateInkFadeManager(true, (int)e.NewValue);
|
||||
}
|
||||
}
|
||||
|
||||
private void ToggleSwitchHideInkFadeControlInPenMenu_Toggled(object sender, RoutedEventArgs e)
|
||||
|
||||
@@ -70,6 +70,14 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.InkToShape.IsInkToShapeEnabled = CardEnableInkToShape.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
var mw = Application.Current.MainWindow as MainWindow;
|
||||
if (mw != null)
|
||||
{
|
||||
if (mw.FloatingBarToggleSwitchEnableInkToShape != null)
|
||||
mw.FloatingBarToggleSwitchEnableInkToShape.IsOn = CardEnableInkToShape.IsOn;
|
||||
if (mw.BoardToggleSwitchEnableInkToShape != null)
|
||||
mw.BoardToggleSwitchEnableInkToShape.IsOn = CardEnableInkToShape.IsOn;
|
||||
}
|
||||
}
|
||||
|
||||
private void ComboBoxShapeRecognitionEngine_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
|
||||
@@ -0,0 +1,278 @@
|
||||
<ui:Page x:Class="Ink_Canvas.Windows.SettingsViews.Pages.PowerPointPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:Ink_Canvas.Windows.SettingsViews.Pages"
|
||||
xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern"
|
||||
xmlns:ikw="http://schemas.inkore.net/lib/ui/wpf"
|
||||
xmlns:i18n="clr-namespace:Ink_Canvas.MarkupExtensions"
|
||||
xmlns:controls="clr-namespace:Ink_Canvas.Controls;assembly=InkCanvas.Controls"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
mc:Ignorable="d"
|
||||
Title="{i18n:I18n Key=Nav_PPT_Settings}">
|
||||
|
||||
<ScrollViewer PanningMode="VerticalFirst">
|
||||
<Grid Margin="59,0,59,0">
|
||||
<FrameworkElement.Resources>
|
||||
<sys:Double x:Key="SettingsCardSpacing">4</sys:Double>
|
||||
<Style x:Key="SettingsSectionHeaderTextBlockStyle"
|
||||
BasedOn="{StaticResource BodyStrongTextBlockStyle}"
|
||||
TargetType="TextBlock">
|
||||
<Style.Setters>
|
||||
<Setter Property="Margin" Value="1,30,0,6" />
|
||||
</Style.Setters>
|
||||
</Style>
|
||||
</FrameworkElement.Resources>
|
||||
<Grid>
|
||||
<ikw:SimpleStackPanel MaxWidth="1000"
|
||||
HorizontalAlignment="Stretch"
|
||||
Spacing="{StaticResource SettingsCardSpacing}">
|
||||
|
||||
<TextBlock Text="{i18n:I18n Key=PPT_GroupTitle}" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardSupportPowerPoint"
|
||||
Header="{i18n:I18n Key=PPT_SupportPowerPoint}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"
|
||||
Toggled="ToggleSwitchSupportPowerPoint_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardPowerPointEnhancement"
|
||||
Header="{i18n:I18n Key=PPT_Enhancement}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Puzzle}"
|
||||
Toggled="ToggleSwitchPowerPointEnhancement_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardSkipAnimationsWhenGoNext"
|
||||
Header="{i18n:I18n Key=PPT_SkipAnimations}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.FastForward}"
|
||||
Toggled="ToggleSwitchSkipAnimationsWhenGoNext_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardUseRotPptLink"
|
||||
Header="{i18n:I18n Key=PPT_UseRot}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Link}"
|
||||
Toggled="ToggleSwitchUseRotPptLink_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardSupportWPS"
|
||||
Header="{i18n:I18n Key=PPT_SupportWPS}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Document}"
|
||||
Toggled="ToggleSwitchSupportWPS_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardEnableWppProcessKill"
|
||||
Header="{i18n:I18n Key=PPT_KillWppProcess}"
|
||||
Description="{i18n:I18n Key=PPT_KillWppHint}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Cancel}"
|
||||
Toggled="ToggleSwitchEnableWppProcessKill_Toggled"/>
|
||||
|
||||
<TextBlock Text="{i18n:I18n Key=PPT_FlipButtonsTitle}" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardShowPPTButton"
|
||||
Header="{i18n:I18n Key=PPT_ShowFlipButtons}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.ShowResults}"
|
||||
Toggled="ToggleSwitchShowPPTButton_OnToggled"/>
|
||||
|
||||
<ui:SettingsExpander Header="{i18n:I18n Key=PPT_Position_Left}"
|
||||
Visibility="{Binding IsOn, ElementName=CardShowPPTButton, Converter={StaticResource BooleanToVisibilityConverter}}"
|
||||
IsExpanded="{Binding IsOn, ElementName=CardShowPPTButton, Mode=OneWay}">
|
||||
<ui:SettingsExpander.HeaderIcon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.CaretSolidLeft}"/>
|
||||
</ui:SettingsExpander.HeaderIcon>
|
||||
<ui:SettingsExpander.Content>
|
||||
<CheckBox x:Name="CheckboxEnableLSPPTButton" Checked="CheckboxEnableLSPPTButton_IsCheckChanged" Unchecked="CheckboxEnableLSPPTButton_IsCheckChanged"/>
|
||||
</ui:SettingsExpander.Content>
|
||||
<ui:SettingsExpander.Items>
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=PPT_LeftOffset}">
|
||||
<Slider x:Name="PPTButtonLeftPositionValueSlider" Minimum="-500" Maximum="500" Width="200" ValueChanged="PPTButtonLeftPositionValueSlider_ValueChanged"/>
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=PPT_LeftOpacity}" Visibility="{Binding IsChecked, ElementName=CheckboxSPPTHalfOpacity, Converter={StaticResource BooleanToVisibilityConverter}}">
|
||||
<Slider x:Name="PPTLSButtonOpacityValueSlider" Minimum="0.1" Maximum="1.0" Width="200" ValueChanged="PPTLSButtonOpacityValueSlider_ValueChanged"/>
|
||||
</ui:SettingsCard>
|
||||
</ui:SettingsExpander.Items>
|
||||
</ui:SettingsExpander>
|
||||
|
||||
<ui:SettingsExpander Header="{i18n:I18n Key=PPT_Position_Right}"
|
||||
Visibility="{Binding IsOn, ElementName=CardShowPPTButton, Converter={StaticResource BooleanToVisibilityConverter}}"
|
||||
IsExpanded="{Binding IsOn, ElementName=CardShowPPTButton, Mode=OneWay}">
|
||||
<ui:SettingsExpander.HeaderIcon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.CaretSolidRight}"/>
|
||||
</ui:SettingsExpander.HeaderIcon>
|
||||
<ui:SettingsExpander.Content>
|
||||
<CheckBox x:Name="CheckboxEnableRSPPTButton" Checked="CheckboxEnableRSPPTButton_IsCheckChanged" Unchecked="CheckboxEnableRSPPTButton_IsCheckChanged"/>
|
||||
</ui:SettingsExpander.Content>
|
||||
<ui:SettingsExpander.Items>
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=PPT_RightOffset}">
|
||||
<Slider x:Name="PPTButtonRightPositionValueSlider" Minimum="-500" Maximum="500" Width="200" ValueChanged="PPTButtonRightPositionValueSlider_ValueChanged"/>
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=PPT_RightOpacity}" Visibility="{Binding IsChecked, ElementName=CheckboxSPPTHalfOpacity, Converter={StaticResource BooleanToVisibilityConverter}}">
|
||||
<Slider x:Name="PPTRSButtonOpacityValueSlider" Minimum="0.1" Maximum="1.0" Width="200" ValueChanged="PPTRSButtonOpacityValueSlider_ValueChanged"/>
|
||||
</ui:SettingsCard>
|
||||
</ui:SettingsExpander.Items>
|
||||
</ui:SettingsExpander>
|
||||
|
||||
<ui:SettingsExpander Header="{i18n:I18n Key=PPT_Position_LeftBottom}"
|
||||
Visibility="{Binding IsOn, ElementName=CardShowPPTButton, Converter={StaticResource BooleanToVisibilityConverter}}"
|
||||
IsExpanded="{Binding IsOn, ElementName=CardShowPPTButton, Mode=OneWay}">
|
||||
<ui:SettingsExpander.HeaderIcon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.CaretSolidDown}"/>
|
||||
</ui:SettingsExpander.HeaderIcon>
|
||||
<ui:SettingsExpander.Content>
|
||||
<CheckBox x:Name="CheckboxEnableLBPPTButton" Checked="CheckboxEnableLBPPTButton_IsCheckChanged" Unchecked="CheckboxEnableLBPPTButton_IsCheckChanged"/>
|
||||
</ui:SettingsExpander.Content>
|
||||
<ui:SettingsExpander.Items>
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=PPT_LeftBottomOffset}">
|
||||
<Slider x:Name="PPTButtonLBPositionValueSlider" Minimum="-500" Maximum="500" Width="200" ValueChanged="PPTButtonLBPositionValueSlider_ValueChanged"/>
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=PPT_LeftBottomOpacity}" Visibility="{Binding IsChecked, ElementName=CheckboxBPPTHalfOpacity, Converter={StaticResource BooleanToVisibilityConverter}}">
|
||||
<Slider x:Name="PPTLBButtonOpacityValueSlider" Minimum="0.1" Maximum="1.0" Width="200" ValueChanged="PPTLBButtonOpacityValueSlider_ValueChanged"/>
|
||||
</ui:SettingsCard>
|
||||
</ui:SettingsExpander.Items>
|
||||
</ui:SettingsExpander>
|
||||
|
||||
<ui:SettingsExpander Header="{i18n:I18n Key=PPT_Position_RightBottom}"
|
||||
Visibility="{Binding IsOn, ElementName=CardShowPPTButton, Converter={StaticResource BooleanToVisibilityConverter}}"
|
||||
IsExpanded="{Binding IsOn, ElementName=CardShowPPTButton, Mode=OneWay}">
|
||||
<ui:SettingsExpander.HeaderIcon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.CaretSolidDown}"/>
|
||||
</ui:SettingsExpander.HeaderIcon>
|
||||
<ui:SettingsExpander.Content>
|
||||
<CheckBox x:Name="CheckboxEnableRBPPTButton" Checked="CheckboxEnableRBPPTButton_IsCheckChanged" Unchecked="CheckboxEnableRBPPTButton_IsCheckChanged"/>
|
||||
</ui:SettingsExpander.Content>
|
||||
<ui:SettingsExpander.Items>
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=PPT_RightBottomOffset}">
|
||||
<Slider x:Name="PPTButtonRBPositionValueSlider" Minimum="-500" Maximum="500" Width="200" ValueChanged="PPTButtonRBPositionValueSlider_ValueChanged"/>
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=PPT_RightBottomOpacity}" Visibility="{Binding IsChecked, ElementName=CheckboxBPPTHalfOpacity, Converter={StaticResource BooleanToVisibilityConverter}}">
|
||||
<Slider x:Name="PPTRBButtonOpacityValueSlider" Minimum="0.1" Maximum="1.0" Width="200" ValueChanged="PPTRBButtonOpacityValueSlider_ValueChanged"/>
|
||||
</ui:SettingsCard>
|
||||
</ui:SettingsExpander.Items>
|
||||
</ui:SettingsExpander>
|
||||
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=PPT_SideGroupTitle}"
|
||||
Visibility="{Binding IsOn, ElementName=CardShowPPTButton, Converter={StaticResource BooleanToVisibilityConverter}}">
|
||||
<ui:SettingsCard.HeaderIcon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.DockLeft}"/>
|
||||
</ui:SettingsCard.HeaderIcon>
|
||||
<ikw:SimpleStackPanel Orientation="Vertical" Spacing="6">
|
||||
<CheckBox x:Name="CheckboxSPPTDisplayPage" Content="{i18n:I18n Key=PPT_ShowPageNumber}" Checked="CheckboxSPPTDisplayPage_IsCheckChange" Unchecked="CheckboxSPPTDisplayPage_IsCheckChange"/>
|
||||
<CheckBox x:Name="CheckboxSPPTHalfOpacity" Content="{i18n:I18n Key=PPT_HalfOpacity}" Checked="CheckboxSPPTHalfOpacity_IsCheckChange" Unchecked="CheckboxSPPTHalfOpacity_IsCheckChange"/>
|
||||
<CheckBox x:Name="CheckboxSPPTBlackBackground" Content="{i18n:I18n Key=PPT_BlackBackground}" Checked="CheckboxSPPTBlackBackground_IsCheckChange" Unchecked="CheckboxSPPTBlackBackground_IsCheckChange"/>
|
||||
</ikw:SimpleStackPanel>
|
||||
</ui:SettingsCard>
|
||||
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=PPT_BottomGroupTitle}"
|
||||
Visibility="{Binding IsOn, ElementName=CardShowPPTButton, Converter={StaticResource BooleanToVisibilityConverter}}">
|
||||
<ui:SettingsCard.HeaderIcon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.DockBottom}"/>
|
||||
</ui:SettingsCard.HeaderIcon>
|
||||
<ikw:SimpleStackPanel Orientation="Vertical" Spacing="6">
|
||||
<CheckBox x:Name="CheckboxBPPTDisplayPage" Content="{i18n:I18n Key=PPT_ShowPageNumber}" Checked="CheckboxBPPTDisplayPage_IsCheckChange" Unchecked="CheckboxBPPTDisplayPage_IsCheckChange"/>
|
||||
<CheckBox x:Name="CheckboxBPPTHalfOpacity" Content="{i18n:I18n Key=PPT_HalfOpacity}" Checked="CheckboxBPPTHalfOpacity_IsCheckChange" Unchecked="CheckboxBPPTHalfOpacity_IsCheckChange"/>
|
||||
<CheckBox x:Name="CheckboxBPPTBlackBackground" Content="{i18n:I18n Key=PPT_BlackBackground}" Checked="CheckboxBPPTBlackBackground_IsCheckChange" Unchecked="CheckboxBPPTBlackBackground_IsCheckChange"/>
|
||||
</ikw:SimpleStackPanel>
|
||||
</ui:SettingsCard>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardEnablePPTButtonPageClickable"
|
||||
Header="{i18n:I18n Key=PPT_PageButtonClickable}"
|
||||
Description="{i18n:I18n Key=PPT_PageButtonClickableHint}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.TouchPointer}"
|
||||
Visibility="{Binding IsOn, ElementName=CardShowPPTButton, Converter={StaticResource BooleanToVisibilityConverter}}"
|
||||
Toggled="ToggleSwitchEnablePPTButtonPageClickable_OnToggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardEnablePPTButtonLongPressPageTurn"
|
||||
Header="{i18n:I18n Key=PPT_LongPressPageTurn}"
|
||||
Description="{i18n:I18n Key=PPT_LongPressPageTurnHint}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Touch}"
|
||||
Visibility="{Binding IsOn, ElementName=CardShowPPTButton, Converter={StaticResource BooleanToVisibilityConverter}}"
|
||||
Toggled="ToggleSwitchEnablePPTButtonLongPressPageTurn_OnToggled"/>
|
||||
|
||||
<TextBlock Text="{i18n:I18n Key=PPT_EnterAnnotationOnShow}" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardShowCanvasAtNewSlideShow"
|
||||
Header="{i18n:I18n Key=PPT_EnterAnnotationOnShow}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Edit}"
|
||||
Toggled="ToggleSwitchShowCanvasAtNewSlideShow_Toggled"/>
|
||||
|
||||
<TextBlock Text="{i18n:I18n Key=Nav_PPT_Settings}" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardEnableTwoFingerGestureInPresentationMode"
|
||||
Header="{i18n:I18n Key=PPT_TwoFingerGesture}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.TouchPointer}"
|
||||
Toggled="ToggleSwitchEnableTwoFingerGestureInPresentationMode_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardEnableFingerGestureSlideShowControl"
|
||||
Header="{i18n:I18n Key=PPT_FingerGestureSlide}"
|
||||
Description="{i18n:I18n Key=PPT_FingerGestureSlideHint}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Handwriting}"
|
||||
Toggled="ToggleSwitchEnableFingerGestureSlideShowControl_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardShowGestureButtonInSlideShow"
|
||||
Header="{i18n:I18n Key=PPT_ShowGestureButtonInShow}"
|
||||
Description="{i18n:I18n Key=PPT_ShowGestureButtonInShowHint}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.TouchPointer}"
|
||||
Toggled="ToggleSwitchShowGestureButtonInSlideShow_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardEnablePPTTimeCapsule"
|
||||
Header="{i18n:I18n Key=PPT_TimeCapsule}"
|
||||
Description="{i18n:I18n Key=PPT_TimeCapsuleHint}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.QuietHours}"
|
||||
Toggled="ToggleSwitchEnablePPTTimeCapsule_Toggled"/>
|
||||
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=PPT_TimeCapsulePosition}">
|
||||
<ui:SettingsCard.HeaderIcon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Location}"/>
|
||||
</ui:SettingsCard.HeaderIcon>
|
||||
<ComboBox x:Name="ComboBoxPPTTimeCapsulePosition"
|
||||
SelectionChanged="ComboBoxPPTTimeCapsulePosition_SelectionChanged">
|
||||
<ComboBoxItem Content="{i18n:I18n Key=PPT_TimeCapsulePos_TL}"/>
|
||||
<ComboBoxItem Content="{i18n:I18n Key=PPT_TimeCapsulePos_TR}"/>
|
||||
<ComboBoxItem Content="{i18n:I18n Key=PPT_TimeCapsulePos_Center}"/>
|
||||
</ComboBox>
|
||||
</ui:SettingsCard>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardShowPPTSidebarByDefault"
|
||||
Header="{i18n:I18n Key=PPT_ShowQuickPanelInShow}"
|
||||
Description="{i18n:I18n Key=PPT_ShowQuickPanelInShowHint}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.OpenPane}"
|
||||
Toggled="ToggleSwitchShowPPTSidebarByDefault_Toggled"/>
|
||||
|
||||
<TextBlock Text="{i18n:I18n Key=PPT_AutoScreenshot}" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoSaveScreenShotInPowerPoint"
|
||||
Header="{i18n:I18n Key=PPT_AutoScreenshot}"
|
||||
Description="{i18n:I18n Key=PPT_AutoScreenshotHint}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Camera}"
|
||||
Toggled="ToggleSwitchAutoSaveScreenShotInPowerPoint_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoSaveStrokesInPowerPoint"
|
||||
Header="{i18n:I18n Key=PPT_AutoSaveStrokes}"
|
||||
Description="{i18n:I18n Key=PPT_AutoSaveStrokesHint}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Save}"
|
||||
Toggled="ToggleSwitchAutoSaveStrokesInPowerPoint_Toggled"/>
|
||||
|
||||
<TextBlock Text="{i18n:I18n Key=PPT_RememberLastPage}" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardNotifyPreviousPage"
|
||||
Header="{i18n:I18n Key=PPT_RememberLastPage}"
|
||||
Description="{i18n:I18n Key=PPT_RememberLastPageHint}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.History}"
|
||||
Toggled="ToggleSwitchNotifyPreviousPage_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAlwaysGoToFirstPageOnReenter"
|
||||
Header="{i18n:I18n Key=PPT_GoToFirstPageOnReenter}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Rewind}"
|
||||
Toggled="ToggleSwitchAlwaysGoToFirstPageOnReenter_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardNotifyHiddenPage"
|
||||
Header="{i18n:I18n Key=PPT_NotifyHiddenPage}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Hide}"
|
||||
Toggled="ToggleSwitchNotifyHiddenPage_Toggled"/>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardNotifyAutoPlayPresentation"
|
||||
Header="{i18n:I18n Key=PPT_NotifyAutoPlay}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Play}"
|
||||
Toggled="ToggleSwitchNotifyAutoPlayPresentation_Toggled"/>
|
||||
|
||||
<Rectangle Height="48" />
|
||||
</ikw:SimpleStackPanel>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</ui:Page>
|
||||
@@ -0,0 +1,700 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using Ink_Canvas.Windows.SettingsViews.Helpers;
|
||||
using System;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using Page = iNKORE.UI.WPF.Modern.Controls.Page;
|
||||
|
||||
namespace Ink_Canvas.Windows.SettingsViews.Pages
|
||||
{
|
||||
public partial class PowerPointPage : Page
|
||||
{
|
||||
private bool _isLoaded = false;
|
||||
private DelayAction _sliderDelayAction = new DelayAction();
|
||||
|
||||
public PowerPointPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
Loaded += PowerPointPage_Loaded;
|
||||
Unloaded += PowerPointPage_Unloaded;
|
||||
}
|
||||
|
||||
private void PowerPointPage_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
LoadSettings();
|
||||
_isLoaded = true;
|
||||
}
|
||||
|
||||
private void PowerPointPage_Unloaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
_isLoaded = false;
|
||||
}
|
||||
|
||||
private MainWindow GetMainWindow() => Application.Current.MainWindow as MainWindow;
|
||||
|
||||
private void LoadSettings()
|
||||
{
|
||||
_isLoaded = false;
|
||||
var ppt = SettingsManager.Settings.PowerPointSettings;
|
||||
|
||||
CardSupportPowerPoint.IsOn = ppt.PowerPointSupport;
|
||||
CardPowerPointEnhancement.IsOn = ppt.EnablePowerPointEnhancement;
|
||||
CardSkipAnimationsWhenGoNext.IsOn = ppt.SkipAnimationsWhenGoNext;
|
||||
CardUseRotPptLink.IsOn = ppt.UseRotPptLink;
|
||||
CardSupportWPS.IsOn = ppt.IsSupportWPS;
|
||||
CardEnableWppProcessKill.IsOn = ppt.EnableWppProcessKill;
|
||||
|
||||
CardShowPPTButton.IsOn = ppt.ShowPPTButton;
|
||||
var displayOpt = ppt.PPTButtonsDisplayOption.ToString();
|
||||
CheckboxEnableLBPPTButton.IsChecked = displayOpt.Length > 0 && displayOpt[0] == '2';
|
||||
CheckboxEnableRBPPTButton.IsChecked = displayOpt.Length > 1 && displayOpt[1] == '2';
|
||||
CheckboxEnableLSPPTButton.IsChecked = displayOpt.Length > 2 && displayOpt[2] == '2';
|
||||
CheckboxEnableRSPPTButton.IsChecked = displayOpt.Length > 3 && displayOpt[3] == '2';
|
||||
|
||||
PPTButtonLeftPositionValueSlider.Value = ppt.PPTLSButtonPosition;
|
||||
PPTButtonRightPositionValueSlider.Value = ppt.PPTRSButtonPosition;
|
||||
PPTButtonLBPositionValueSlider.Value = ppt.PPTLBButtonPosition;
|
||||
PPTButtonRBPositionValueSlider.Value = ppt.PPTRBButtonPosition;
|
||||
|
||||
PPTLSButtonOpacityValueSlider.Value = ppt.PPTLSButtonOpacity;
|
||||
PPTRSButtonOpacityValueSlider.Value = ppt.PPTRSButtonOpacity;
|
||||
PPTLBButtonOpacityValueSlider.Value = ppt.PPTLBButtonOpacity;
|
||||
PPTRBButtonOpacityValueSlider.Value = ppt.PPTRBButtonOpacity;
|
||||
|
||||
var sOpt = ppt.PPTSButtonsOption.ToString();
|
||||
CheckboxSPPTDisplayPage.IsChecked = sOpt.Length > 0 && sOpt[0] == '2';
|
||||
CheckboxSPPTHalfOpacity.IsChecked = sOpt.Length > 1 && sOpt[1] == '2';
|
||||
CheckboxSPPTBlackBackground.IsChecked = sOpt.Length > 2 && sOpt[2] == '2';
|
||||
|
||||
var bOpt = ppt.PPTBButtonsOption.ToString();
|
||||
CheckboxBPPTDisplayPage.IsChecked = bOpt.Length > 0 && bOpt[0] == '2';
|
||||
CheckboxBPPTHalfOpacity.IsChecked = bOpt.Length > 1 && bOpt[1] == '2';
|
||||
CheckboxBPPTBlackBackground.IsChecked = bOpt.Length > 2 && bOpt[2] == '2';
|
||||
|
||||
CardEnablePPTButtonPageClickable.IsOn = ppt.EnablePPTButtonPageClickable;
|
||||
CardEnablePPTButtonLongPressPageTurn.IsOn = ppt.EnablePPTButtonLongPressPageTurn;
|
||||
|
||||
CardShowCanvasAtNewSlideShow.IsOn = ppt.IsShowCanvasAtNewSlideShow;
|
||||
|
||||
CardEnableTwoFingerGestureInPresentationMode.IsOn = ppt.IsEnableTwoFingerGestureInPresentationMode;
|
||||
CardEnableFingerGestureSlideShowControl.IsOn = ppt.IsEnableFingerGestureSlideShowControl;
|
||||
CardShowGestureButtonInSlideShow.IsOn = ppt.ShowGestureButtonInSlideShow;
|
||||
CardEnablePPTTimeCapsule.IsOn = ppt.EnablePPTTimeCapsule;
|
||||
ComboBoxPPTTimeCapsulePosition.SelectedIndex = ppt.PPTTimeCapsulePosition;
|
||||
CardShowPPTSidebarByDefault.IsOn = ppt.ShowPPTSidebarByDefault;
|
||||
|
||||
CardAutoSaveScreenShotInPowerPoint.IsOn = ppt.IsAutoSaveScreenShotInPowerPoint;
|
||||
CardAutoSaveStrokesInPowerPoint.IsOn = ppt.IsAutoSaveStrokesInPowerPoint;
|
||||
|
||||
CardNotifyPreviousPage.IsOn = ppt.IsNotifyPreviousPage;
|
||||
CardAlwaysGoToFirstPageOnReenter.IsOn = ppt.IsAlwaysGoToFirstPageOnReenter;
|
||||
CardNotifyHiddenPage.IsOn = ppt.IsNotifyHiddenPage;
|
||||
CardNotifyAutoPlayPresentation.IsOn = ppt.IsNotifyAutoPlayPresentation;
|
||||
|
||||
_isLoaded = true;
|
||||
}
|
||||
|
||||
#region PPT Basic
|
||||
|
||||
private void ToggleSwitchSupportPowerPoint_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
var ppt = SettingsManager.Settings.PowerPointSettings;
|
||||
ppt.PowerPointSupport = CardSupportPowerPoint.IsOn;
|
||||
if (!ppt.PowerPointSupport && ppt.IsSupportWPS)
|
||||
{
|
||||
ppt.IsSupportWPS = false;
|
||||
CardSupportWPS.IsOn = false;
|
||||
if (mw?.PPTManager != null) mw.PPTManager.IsSupportWPS = false;
|
||||
}
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
if (mw != null)
|
||||
{
|
||||
if (ppt.PowerPointSupport)
|
||||
{
|
||||
if (mw.PPTManager == null) mw.InitializePPTManagers();
|
||||
mw.StartPPTMonitoring();
|
||||
}
|
||||
else mw.StopPPTMonitoring();
|
||||
}
|
||||
}
|
||||
|
||||
private void ToggleSwitchPowerPointEnhancement_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
var ppt = SettingsManager.Settings.PowerPointSettings;
|
||||
ppt.EnablePowerPointEnhancement = CardPowerPointEnhancement.IsOn;
|
||||
if (ppt.EnablePowerPointEnhancement)
|
||||
{
|
||||
ppt.IsSupportWPS = false;
|
||||
CardSupportWPS.IsOn = false;
|
||||
if (mw?.PPTManager != null) mw.PPTManager.IsSupportWPS = false;
|
||||
}
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
if (mw != null)
|
||||
{
|
||||
if (ppt.EnablePowerPointEnhancement)
|
||||
mw.StartPowerPointProcessMonitoring();
|
||||
else
|
||||
mw.StopPowerPointProcessMonitoring();
|
||||
}
|
||||
}
|
||||
|
||||
private void ToggleSwitchSkipAnimationsWhenGoNext_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
SettingsManager.Settings.PowerPointSettings.SkipAnimationsWhenGoNext = CardSkipAnimationsWhenGoNext.IsOn;
|
||||
if (mw?.PPTManager != null)
|
||||
mw.PPTManager.SkipAnimationsWhenNavigating = CardSkipAnimationsWhenGoNext.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchUseRotPptLink_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
var ppt = SettingsManager.Settings.PowerPointSettings;
|
||||
ppt.UseRotPptLink = CardUseRotPptLink.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
try
|
||||
{
|
||||
if (mw != null)
|
||||
{
|
||||
mw.StopPPTMonitoring();
|
||||
if (ppt.UseRotPptLink && ppt.EnablePowerPointEnhancement)
|
||||
{
|
||||
ppt.EnablePowerPointEnhancement = false;
|
||||
CardPowerPointEnhancement.IsOn = false;
|
||||
mw.StopPowerPointProcessMonitoring();
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
mw.InitializePPTManagers();
|
||||
if (ppt.PowerPointSupport) mw.StartPPTMonitoring();
|
||||
LogHelper.WriteLogToFile($"已切换 PPT 联动架构为 {(ppt.UseRotPptLink ? "ROT" : "COM")}", LogHelper.LogType.Event);
|
||||
}
|
||||
}
|
||||
catch (Exception ex) { LogHelper.WriteLogToFile($"切换 PPT 联动架构失败: {ex}", LogHelper.LogType.Error); }
|
||||
}
|
||||
|
||||
private void ToggleSwitchSupportWPS_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
var ppt = SettingsManager.Settings.PowerPointSettings;
|
||||
ppt.IsSupportWPS = CardSupportWPS.IsOn;
|
||||
if (ppt.IsSupportWPS)
|
||||
{
|
||||
if (!ppt.PowerPointSupport)
|
||||
{
|
||||
ppt.PowerPointSupport = true;
|
||||
CardSupportPowerPoint.IsOn = true;
|
||||
if (mw != null)
|
||||
{
|
||||
if (mw.PPTManager == null) mw.InitializePPTManagers();
|
||||
mw.StartPPTMonitoring();
|
||||
}
|
||||
}
|
||||
if (ppt.EnablePowerPointEnhancement)
|
||||
{
|
||||
ppt.EnablePowerPointEnhancement = false;
|
||||
CardPowerPointEnhancement.IsOn = false;
|
||||
mw?.StopPowerPointProcessMonitoring();
|
||||
}
|
||||
}
|
||||
if (mw?.PPTManager != null)
|
||||
{
|
||||
mw.PPTManager.IsSupportWPS = ppt.IsSupportWPS;
|
||||
mw.PPTManager.SkipAnimationsWhenNavigating = ppt.SkipAnimationsWhenGoNext;
|
||||
}
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchEnableWppProcessKill_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.PowerPointSettings.EnableWppProcessKill = CardEnableWppProcessKill.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region PPT Flip Buttons
|
||||
|
||||
private void ToggleSwitchShowPPTButton_OnToggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
SettingsManager.Settings.PowerPointSettings.ShowPPTButton = CardShowPPTButton.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
if (mw?.PPTUIManager != null)
|
||||
{
|
||||
mw.PPTUIManager.ShowPPTButton = CardShowPPTButton.IsOn;
|
||||
mw.PPTUIManager.UpdateNavigationPanelsVisibility();
|
||||
}
|
||||
mw?.UpdatePPTBtnPreview();
|
||||
}
|
||||
|
||||
private void ToggleSwitchShowPPTSidebarByDefault_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
SettingsManager.Settings.PowerPointSettings.ShowPPTSidebarByDefault = CardShowPPTSidebarByDefault.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
if (mw != null && mw.BtnPPTSlideShowEnd?.Visibility == Visibility.Visible)
|
||||
mw.UpdatePPTQuickPanelVisibility();
|
||||
}
|
||||
|
||||
private void ToggleSwitchEnablePPTButtonPageClickable_OnToggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.PowerPointSettings.EnablePPTButtonPageClickable = CardEnablePPTButtonPageClickable.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchEnablePPTButtonLongPressPageTurn_OnToggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.PowerPointSettings.EnablePPTButtonLongPressPageTurn = CardEnablePPTButtonLongPressPageTurn.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region PPT Button Position & Opacity Sliders
|
||||
|
||||
private void PPTButtonLeftPositionValueSlider_ValueChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
SettingsManager.Settings.PowerPointSettings.PPTLSButtonPosition = (int)PPTButtonLeftPositionValueSlider.Value;
|
||||
mw?.UpdatePPTBtnSlidersStatus();
|
||||
mw?.UpdatePPTUIManagerSettings();
|
||||
_sliderDelayAction.DebounceAction(2000, null, () => SettingsManager.SaveSettingsToFile());
|
||||
mw?.UpdatePPTBtnPreview();
|
||||
}
|
||||
|
||||
private void PPTButtonRightPositionValueSlider_ValueChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
SettingsManager.Settings.PowerPointSettings.PPTRSButtonPosition = (int)PPTButtonRightPositionValueSlider.Value;
|
||||
mw?.UpdatePPTBtnSlidersStatus();
|
||||
mw?.UpdatePPTUIManagerSettings();
|
||||
_sliderDelayAction.DebounceAction(2000, null, () => SettingsManager.SaveSettingsToFile());
|
||||
mw?.UpdatePPTBtnPreview();
|
||||
}
|
||||
|
||||
private void PPTButtonLBPositionValueSlider_ValueChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
SettingsManager.Settings.PowerPointSettings.PPTLBButtonPosition = (int)PPTButtonLBPositionValueSlider.Value;
|
||||
mw?.UpdatePPTBtnSlidersStatus();
|
||||
mw?.UpdatePPTUIManagerSettings();
|
||||
_sliderDelayAction.DebounceAction(2000, null, () => SettingsManager.SaveSettingsToFile());
|
||||
mw?.UpdatePPTBtnPreview();
|
||||
}
|
||||
|
||||
private void PPTButtonRBPositionValueSlider_ValueChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
SettingsManager.Settings.PowerPointSettings.PPTRBButtonPosition = (int)PPTButtonRBPositionValueSlider.Value;
|
||||
mw?.UpdatePPTBtnSlidersStatus();
|
||||
mw?.UpdatePPTUIManagerSettings();
|
||||
_sliderDelayAction.DebounceAction(2000, null, () => SettingsManager.SaveSettingsToFile());
|
||||
mw?.UpdatePPTBtnPreview();
|
||||
}
|
||||
|
||||
private void PPTLSButtonOpacityValueSlider_ValueChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
double roundedValue = Math.Round(PPTLSButtonOpacityValueSlider.Value, 1);
|
||||
PPTLSButtonOpacityValueSlider.ValueChanged -= PPTLSButtonOpacityValueSlider_ValueChanged;
|
||||
PPTLSButtonOpacityValueSlider.Value = roundedValue;
|
||||
PPTLSButtonOpacityValueSlider.ValueChanged += PPTLSButtonOpacityValueSlider_ValueChanged;
|
||||
SettingsManager.Settings.PowerPointSettings.PPTLSButtonOpacity = roundedValue;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
var mw = GetMainWindow();
|
||||
if (mw?.PPTUIManager != null)
|
||||
{
|
||||
mw.PPTUIManager.PPTLSButtonOpacity = roundedValue;
|
||||
mw.PPTUIManager.UpdateNavigationButtonStyles();
|
||||
}
|
||||
mw?.UpdatePPTBtnPreview();
|
||||
}
|
||||
|
||||
private void PPTRSButtonOpacityValueSlider_ValueChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
double roundedValue = Math.Round(PPTRSButtonOpacityValueSlider.Value, 1);
|
||||
PPTRSButtonOpacityValueSlider.ValueChanged -= PPTRSButtonOpacityValueSlider_ValueChanged;
|
||||
PPTRSButtonOpacityValueSlider.Value = roundedValue;
|
||||
PPTRSButtonOpacityValueSlider.ValueChanged += PPTRSButtonOpacityValueSlider_ValueChanged;
|
||||
SettingsManager.Settings.PowerPointSettings.PPTRSButtonOpacity = roundedValue;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
var mw = GetMainWindow();
|
||||
if (mw?.PPTUIManager != null)
|
||||
{
|
||||
mw.PPTUIManager.PPTRSButtonOpacity = roundedValue;
|
||||
mw.PPTUIManager.UpdateNavigationButtonStyles();
|
||||
}
|
||||
mw?.UpdatePPTBtnPreview();
|
||||
}
|
||||
|
||||
private void PPTLBButtonOpacityValueSlider_ValueChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
double roundedValue = Math.Round(PPTLBButtonOpacityValueSlider.Value, 1);
|
||||
PPTLBButtonOpacityValueSlider.ValueChanged -= PPTLBButtonOpacityValueSlider_ValueChanged;
|
||||
PPTLBButtonOpacityValueSlider.Value = roundedValue;
|
||||
PPTLBButtonOpacityValueSlider.ValueChanged += PPTLBButtonOpacityValueSlider_ValueChanged;
|
||||
SettingsManager.Settings.PowerPointSettings.PPTLBButtonOpacity = roundedValue;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
var mw = GetMainWindow();
|
||||
if (mw?.PPTUIManager != null)
|
||||
{
|
||||
mw.PPTUIManager.PPTLBButtonOpacity = roundedValue;
|
||||
mw.PPTUIManager.UpdateNavigationButtonStyles();
|
||||
}
|
||||
mw?.UpdatePPTBtnPreview();
|
||||
}
|
||||
|
||||
private void PPTRBButtonOpacityValueSlider_ValueChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
double roundedValue = Math.Round(PPTRBButtonOpacityValueSlider.Value, 1);
|
||||
PPTRBButtonOpacityValueSlider.ValueChanged -= PPTRBButtonOpacityValueSlider_ValueChanged;
|
||||
PPTRBButtonOpacityValueSlider.Value = roundedValue;
|
||||
PPTRBButtonOpacityValueSlider.ValueChanged += PPTRBButtonOpacityValueSlider_ValueChanged;
|
||||
SettingsManager.Settings.PowerPointSettings.PPTRBButtonOpacity = roundedValue;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
var mw = GetMainWindow();
|
||||
if (mw?.PPTUIManager != null)
|
||||
{
|
||||
mw.PPTUIManager.PPTRBButtonOpacity = roundedValue;
|
||||
mw.PPTUIManager.UpdateNavigationButtonStyles();
|
||||
}
|
||||
mw?.UpdatePPTBtnPreview();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region PPT Button Display Checkboxes
|
||||
|
||||
private void CheckboxEnableLBPPTButton_IsCheckChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
var str = SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption.ToString();
|
||||
char[] c = str.ToCharArray();
|
||||
c[0] = CheckboxEnableLBPPTButton.IsChecked == true ? '2' : '1';
|
||||
SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption = int.Parse(new string(c));
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
|
||||
{
|
||||
mw.PPTUIManager.PPTButtonsDisplayOption = SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption;
|
||||
mw.PPTUIManager.UpdateNavigationPanelsVisibility();
|
||||
}
|
||||
mw?.UpdatePPTBtnPreview();
|
||||
}
|
||||
|
||||
private void CheckboxEnableRBPPTButton_IsCheckChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
var str = SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption.ToString();
|
||||
char[] c = str.ToCharArray();
|
||||
c[1] = CheckboxEnableRBPPTButton.IsChecked == true ? '2' : '1';
|
||||
SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption = int.Parse(new string(c));
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
|
||||
{
|
||||
mw.PPTUIManager.PPTButtonsDisplayOption = SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption;
|
||||
mw.PPTUIManager.UpdateNavigationPanelsVisibility();
|
||||
}
|
||||
mw?.UpdatePPTBtnPreview();
|
||||
}
|
||||
|
||||
private void CheckboxEnableLSPPTButton_IsCheckChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
var str = SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption.ToString();
|
||||
char[] c = str.ToCharArray();
|
||||
c[2] = CheckboxEnableLSPPTButton.IsChecked == true ? '2' : '1';
|
||||
SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption = int.Parse(new string(c));
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
|
||||
{
|
||||
mw.PPTUIManager.PPTButtonsDisplayOption = SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption;
|
||||
mw.PPTUIManager.UpdateNavigationPanelsVisibility();
|
||||
}
|
||||
mw?.UpdatePPTBtnPreview();
|
||||
}
|
||||
|
||||
private void CheckboxEnableRSPPTButton_IsCheckChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
var str = SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption.ToString();
|
||||
char[] c = str.ToCharArray();
|
||||
c[3] = CheckboxEnableRSPPTButton.IsChecked == true ? '2' : '1';
|
||||
SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption = int.Parse(new string(c));
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
|
||||
{
|
||||
mw.PPTUIManager.PPTButtonsDisplayOption = SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption;
|
||||
mw.PPTUIManager.UpdateNavigationPanelsVisibility();
|
||||
}
|
||||
mw?.UpdatePPTBtnPreview();
|
||||
}
|
||||
|
||||
private void CheckboxSPPTDisplayPage_IsCheckChange(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
var str = SettingsManager.Settings.PowerPointSettings.PPTSButtonsOption.ToString();
|
||||
char[] c = str.ToCharArray();
|
||||
c[0] = CheckboxSPPTDisplayPage.IsChecked == true ? '2' : '1';
|
||||
SettingsManager.Settings.PowerPointSettings.PPTSButtonsOption = int.Parse(new string(c));
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
|
||||
{
|
||||
mw.PPTUIManager.PPTSButtonsOption = SettingsManager.Settings.PowerPointSettings.PPTSButtonsOption;
|
||||
mw.PPTUIManager.UpdateNavigationButtonStyles();
|
||||
}
|
||||
mw?.UpdatePPTBtnPreview();
|
||||
}
|
||||
|
||||
private void CheckboxSPPTHalfOpacity_IsCheckChange(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
var ppt = SettingsManager.Settings.PowerPointSettings;
|
||||
var str = ppt.PPTSButtonsOption.ToString();
|
||||
char[] c = str.ToCharArray();
|
||||
bool isHalf = CheckboxSPPTHalfOpacity.IsChecked == true;
|
||||
c[1] = isHalf ? '2' : '1';
|
||||
ppt.PPTSButtonsOption = int.Parse(new string(c));
|
||||
if (isHalf)
|
||||
{
|
||||
if (ppt.PPTLSButtonOpacity == 1.0) ppt.PPTLSButtonOpacity = 0.5;
|
||||
if (ppt.PPTRSButtonOpacity == 1.0) ppt.PPTRSButtonOpacity = 0.5;
|
||||
PPTLSButtonOpacityValueSlider.Value = ppt.PPTLSButtonOpacity;
|
||||
PPTRSButtonOpacityValueSlider.Value = ppt.PPTRSButtonOpacity;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ppt.PPTLSButtonOpacity == 0.5) ppt.PPTLSButtonOpacity = 1.0;
|
||||
if (ppt.PPTRSButtonOpacity == 0.5) ppt.PPTRSButtonOpacity = 1.0;
|
||||
PPTLSButtonOpacityValueSlider.Value = ppt.PPTLSButtonOpacity;
|
||||
PPTRSButtonOpacityValueSlider.Value = ppt.PPTRSButtonOpacity;
|
||||
}
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
|
||||
{
|
||||
mw.PPTUIManager.PPTSButtonsOption = ppt.PPTSButtonsOption;
|
||||
mw.PPTUIManager.PPTLSButtonOpacity = ppt.PPTLSButtonOpacity;
|
||||
mw.PPTUIManager.PPTRSButtonOpacity = ppt.PPTRSButtonOpacity;
|
||||
mw.PPTUIManager.UpdateNavigationButtonStyles();
|
||||
}
|
||||
mw?.UpdatePPTBtnPreview();
|
||||
}
|
||||
|
||||
private void CheckboxSPPTBlackBackground_IsCheckChange(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
var str = SettingsManager.Settings.PowerPointSettings.PPTSButtonsOption.ToString();
|
||||
char[] c = str.ToCharArray();
|
||||
c[2] = CheckboxSPPTBlackBackground.IsChecked == true ? '2' : '1';
|
||||
SettingsManager.Settings.PowerPointSettings.PPTSButtonsOption = int.Parse(new string(c));
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
|
||||
{
|
||||
mw.PPTUIManager.PPTSButtonsOption = SettingsManager.Settings.PowerPointSettings.PPTSButtonsOption;
|
||||
mw.PPTUIManager.UpdateNavigationButtonStyles();
|
||||
}
|
||||
mw?.UpdatePPTBtnPreview();
|
||||
}
|
||||
|
||||
private void CheckboxBPPTDisplayPage_IsCheckChange(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
var str = SettingsManager.Settings.PowerPointSettings.PPTBButtonsOption.ToString();
|
||||
char[] c = str.ToCharArray();
|
||||
c[0] = CheckboxBPPTDisplayPage.IsChecked == true ? '2' : '1';
|
||||
SettingsManager.Settings.PowerPointSettings.PPTBButtonsOption = int.Parse(new string(c));
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
|
||||
{
|
||||
mw.PPTUIManager.PPTBButtonsOption = SettingsManager.Settings.PowerPointSettings.PPTBButtonsOption;
|
||||
mw.PPTUIManager.UpdateNavigationButtonStyles();
|
||||
}
|
||||
mw?.UpdatePPTBtnPreview();
|
||||
}
|
||||
|
||||
private void CheckboxBPPTHalfOpacity_IsCheckChange(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
var ppt = SettingsManager.Settings.PowerPointSettings;
|
||||
var str = ppt.PPTBButtonsOption.ToString();
|
||||
char[] c = str.ToCharArray();
|
||||
bool isHalf = CheckboxBPPTHalfOpacity.IsChecked == true;
|
||||
c[1] = isHalf ? '2' : '1';
|
||||
ppt.PPTBButtonsOption = int.Parse(new string(c));
|
||||
if (isHalf)
|
||||
{
|
||||
if (ppt.PPTLBButtonOpacity == 1.0) ppt.PPTLBButtonOpacity = 0.5;
|
||||
if (ppt.PPTRBButtonOpacity == 1.0) ppt.PPTRBButtonOpacity = 0.5;
|
||||
PPTLBButtonOpacityValueSlider.Value = ppt.PPTLBButtonOpacity;
|
||||
PPTRBButtonOpacityValueSlider.Value = ppt.PPTRBButtonOpacity;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ppt.PPTLBButtonOpacity == 0.5) ppt.PPTLBButtonOpacity = 1.0;
|
||||
if (ppt.PPTRBButtonOpacity == 0.5) ppt.PPTRBButtonOpacity = 1.0;
|
||||
PPTLBButtonOpacityValueSlider.Value = ppt.PPTLBButtonOpacity;
|
||||
PPTRBButtonOpacityValueSlider.Value = ppt.PPTRBButtonOpacity;
|
||||
}
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
|
||||
{
|
||||
mw.PPTUIManager.PPTBButtonsOption = ppt.PPTBButtonsOption;
|
||||
mw.PPTUIManager.PPTLBButtonOpacity = ppt.PPTLBButtonOpacity;
|
||||
mw.PPTUIManager.PPTRBButtonOpacity = ppt.PPTRBButtonOpacity;
|
||||
mw.PPTUIManager.UpdateNavigationButtonStyles();
|
||||
}
|
||||
mw?.UpdatePPTBtnPreview();
|
||||
}
|
||||
|
||||
private void CheckboxBPPTBlackBackground_IsCheckChange(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
var str = SettingsManager.Settings.PowerPointSettings.PPTBButtonsOption.ToString();
|
||||
char[] c = str.ToCharArray();
|
||||
c[2] = CheckboxBPPTBlackBackground.IsChecked == true ? '2' : '1';
|
||||
SettingsManager.Settings.PowerPointSettings.PPTBButtonsOption = int.Parse(new string(c));
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
|
||||
{
|
||||
mw.PPTUIManager.PPTBButtonsOption = SettingsManager.Settings.PowerPointSettings.PPTBButtonsOption;
|
||||
mw.PPTUIManager.UpdateNavigationButtonStyles();
|
||||
}
|
||||
mw?.UpdatePPTBtnPreview();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region PPT SlideShow Entry & Gesture
|
||||
|
||||
private void ToggleSwitchShowCanvasAtNewSlideShow_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.PowerPointSettings.IsShowCanvasAtNewSlideShow = CardShowCanvasAtNewSlideShow.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchEnableTwoFingerGestureInPresentationMode_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.PowerPointSettings.IsEnableTwoFingerGestureInPresentationMode = CardEnableTwoFingerGestureInPresentationMode.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchEnableFingerGestureSlideShowControl_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.PowerPointSettings.IsEnableFingerGestureSlideShowControl = CardEnableFingerGestureSlideShowControl.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchShowGestureButtonInSlideShow_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
SettingsManager.Settings.PowerPointSettings.ShowGestureButtonInSlideShow = CardShowGestureButtonInSlideShow.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
if (mw != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
|
||||
mw.UpdateGestureButtonVisibilityInPPTMode();
|
||||
}
|
||||
|
||||
private void ToggleSwitchEnablePPTTimeCapsule_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
var mw = GetMainWindow();
|
||||
SettingsManager.Settings.PowerPointSettings.EnablePPTTimeCapsule = CardEnablePPTTimeCapsule.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
if (mw != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
|
||||
{
|
||||
mw.UpdatePPTTimeCapsuleVisibility();
|
||||
mw.UpdatePPTQuickPanelVisibility();
|
||||
}
|
||||
}
|
||||
|
||||
private void ComboBoxPPTTimeCapsulePosition_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded || ComboBoxPPTTimeCapsulePosition == null) return;
|
||||
var mw = GetMainWindow();
|
||||
SettingsManager.Settings.PowerPointSettings.PPTTimeCapsulePosition = ComboBoxPPTTimeCapsulePosition.SelectedIndex;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
if (mw != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
|
||||
mw.UpdatePPTTimeCapsulePosition();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region PPT Auto Save & Notifications
|
||||
|
||||
private void ToggleSwitchAutoSaveScreenShotInPowerPoint_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.PowerPointSettings.IsAutoSaveScreenShotInPowerPoint = CardAutoSaveScreenShotInPowerPoint.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAutoSaveStrokesInPowerPoint_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.PowerPointSettings.IsAutoSaveStrokesInPowerPoint = CardAutoSaveStrokesInPowerPoint.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchNotifyPreviousPage_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.PowerPointSettings.IsNotifyPreviousPage = CardNotifyPreviousPage.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchAlwaysGoToFirstPageOnReenter_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.PowerPointSettings.IsAlwaysGoToFirstPageOnReenter = CardAlwaysGoToFirstPageOnReenter.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchNotifyHiddenPage_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.PowerPointSettings.IsNotifyHiddenPage = CardNotifyHiddenPage.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchNotifyAutoPlayPresentation_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isLoaded) return;
|
||||
SettingsManager.Settings.PowerPointSettings.IsNotifyAutoPlayPresentation = CardNotifyAutoPlayPresentation.IsOn;
|
||||
SettingsManager.SaveSettingsToFile();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -186,6 +186,17 @@
|
||||
</ui:NavigationViewItem.MenuItems>
|
||||
</ui:NavigationViewItem>
|
||||
|
||||
<!-- PowerPoint -->
|
||||
<ui:NavigationViewItem
|
||||
x:Name="PowerPointPageItem"
|
||||
Content="PowerPoint"
|
||||
Tag="PowerPointPage"
|
||||
ToolTipService.ToolTip="PowerPoint 设置">
|
||||
<ui:NavigationViewItem.Icon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Slideshow}"/>
|
||||
</ui:NavigationViewItem.Icon>
|
||||
</ui:NavigationViewItem>
|
||||
|
||||
<!-- 更新设置 -->
|
||||
<ui:NavigationViewItem
|
||||
x:Name="UpdatePageItem"
|
||||
@@ -219,6 +230,17 @@
|
||||
</ui:NavigationViewItem.Icon>
|
||||
</ui:NavigationViewItem>
|
||||
|
||||
<!-- 自动化 -->
|
||||
<ui:NavigationViewItem
|
||||
x:Name="AutomationPageItem"
|
||||
Content="自动化"
|
||||
Tag="AutomationPage"
|
||||
ToolTipService.ToolTip="自动化设置">
|
||||
<ui:NavigationViewItem.Icon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Sync}"/>
|
||||
</ui:NavigationViewItem.Icon>
|
||||
</ui:NavigationViewItem>
|
||||
|
||||
<!-- 画板设置 -->
|
||||
<ui:NavigationViewItem
|
||||
x:Name="CanvasPageItem"
|
||||
|
||||
@@ -44,6 +44,8 @@ namespace Ink_Canvas.Windows.SettingsViews
|
||||
{ "UpdatePage", typeof(UpdatePage) },
|
||||
{ "ExperimentalPage", typeof(ExperimentalPage) },
|
||||
{ "AdvancedPage", typeof(AdvancedPage) },
|
||||
{ "AutomationPage", typeof(AutomationPage) },
|
||||
{ "PowerPointPage", typeof(PowerPointPage) },
|
||||
{ "RandomDrawPage", typeof(RandomDrawPage) },
|
||||
{ "CanvasPage", typeof(CanvasPage) },
|
||||
{ "InkRecognitionPage", typeof(InkRecognitionPage) },
|
||||
|
||||
Reference in New Issue
Block a user