diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e476c6b..d33dcdf 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -41,21 +41,21 @@ jobs: - name: Build the solution run: | msbuild -t:restore /p:GitFlow="Github Action" - msbuild /p:Configuration=Release /p:Platform="Any CPU" /p:GitFlow="Github Action" + msbuild -target:"Ink Canvas" /p:Configuration=Release /p:Platform="Any CPU" /p:GitFlow="Github Action" env: Configuration: ${{ matrix.configuration }} - name: Build the solution (x64) run: | msbuild -t:restore /p:GitFlow="Github Action" - msbuild /p:Configuration=Release /p:Platform="x64" /p:GitFlow="Github Action" + msbuild -target:"Ink Canvas" /p:Configuration=Release /p:Platform="x64" /p:GitFlow="Github Action" env: Configuration: ${{ matrix.configuration }} - name: Build the solution (ARM64) run: | msbuild -t:restore /p:GitFlow="Github Action" - msbuild /p:Configuration=Release /p:Platform="ARM64" /p:GitFlow="Github Action" + msbuild -target:"Ink Canvas" /p:Configuration=Release /p:Platform="ARM64" /p:GitFlow="Github Action" env: Configuration: ${{ matrix.configuration }} diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml index f1d871d..ec83842 100644 --- a/Ink Canvas/MainWindow.xaml +++ b/Ink Canvas/MainWindow.xaml @@ -545,6 +545,7 @@ + diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs index 6a5a730..e1c26d2 100644 --- a/Ink Canvas/MainWindow.xaml.cs +++ b/Ink Canvas/MainWindow.xaml.cs @@ -356,16 +356,13 @@ namespace Ink_Canvas timeMachine.CommitStrokeRotateHistory(e.Removed, e.Added); return; } - if (e.Added.Count != 0 && e.Removed.Count != 0) + if ((e.Added.Count != 0 || e.Removed.Count != 0) && IsEraseByPoint) { - if (IsEraseByPoint) - { - if (AddedStroke == null) AddedStroke = new StrokeCollection(); - if (ReplacedStroke == null) ReplacedStroke = new StrokeCollection(); - AddedStroke.Add(e.Added); - ReplacedStroke.Add(e.Removed); - return; - } + if (AddedStroke == null) AddedStroke = new StrokeCollection(); + if (ReplacedStroke == null) ReplacedStroke = new StrokeCollection(); + AddedStroke.Add(e.Added); + ReplacedStroke.Add(e.Removed); + return; } if (e.Added.Count != 0) { @@ -799,6 +796,15 @@ namespace Ink_Canvas ToggleSwitchAutoKillPptService.IsOn = false; } + if (Settings.Automation.IsSaveScreenshotsInDateFolders) + { + ToggleSwitchSaveScreenshotsInDateFolders.IsOn = true; + } + else + { + ToggleSwitchSaveScreenshotsInDateFolders.IsOn = false; + } + if (Settings.Automation.IsAutoSaveStrokesAtScreenshot) { ToggleSwitchAutoSaveStrokesAtScreenshot.IsOn = true; @@ -2845,6 +2851,13 @@ namespace Ink_Canvas } } + private void ToggleSwitchSaveScreenshotsInDateFolders_Toggled(object sender, RoutedEventArgs e) + { + if (!isLoaded) return; + Settings.Automation.IsSaveScreenshotsInDateFolders = ToggleSwitchSaveScreenshotsInDateFolders.IsOn; + SaveSettingsToFile(); + } + private void ToggleSwitchAutoSaveStrokesAtScreenshot_Toggled(object sender, RoutedEventArgs e) { if (!isLoaded) return; @@ -5286,7 +5299,7 @@ namespace Ink_Canvas } else { - collection = new StrokeCollection () { lastTempStroke }; + collection = new StrokeCollection() { lastTempStroke }; } timeMachine.CommitStrokeUserInputHistory(collection); } @@ -5562,7 +5575,10 @@ namespace Ink_Canvas private void BtnWhiteBoardSwitchNext_Click(object sender, EventArgs e) { if (Settings.Automation.IsAutoSaveStrokesAtClear && inkCanvas.Strokes.Count > Settings.Automation.MinimumAutomationStrokeNumber) + { SaveScreenShot(true); + if (Settings.Automation.IsAutoSaveStrokesAtScreenshot) SaveInkCanvasStrokes(false); + } if (CurrentWhiteboardIndex >= WhiteboardTotalCount) { BtnWhiteBoardAdd_Click(sender, e); @@ -5583,7 +5599,10 @@ namespace Ink_Canvas { if (WhiteboardTotalCount >= 99) return; if (Settings.Automation.IsAutoSaveStrokesAtClear && inkCanvas.Strokes.Count > Settings.Automation.MinimumAutomationStrokeNumber) + { SaveScreenShot(true); + if (Settings.Automation.IsAutoSaveStrokesAtScreenshot) SaveInkCanvasStrokes(false); + } SaveStrokes(); ClearStrokes(true); @@ -6416,22 +6435,42 @@ namespace Ink_Canvas memoryGrahics.CopyFromScreen(rc.X, rc.Y, 0, 0, rc.Size, System.Drawing.CopyPixelOperation.SourceCopy); } - if (string.IsNullOrWhiteSpace(fileName)) - fileName = DateTime.Now.ToString("HH-mm-ss"); - var savePath = - $@"{Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)}\Ink Canvas Screenshots\{DateTime.Now.Date:yyyyMMdd}\{fileName}.png"; - - - if (!Directory.Exists(Path.GetDirectoryName(savePath))) + if (Settings.Automation.IsSaveScreenshotsInDateFolders) { - Directory.CreateDirectory(Path.GetDirectoryName(savePath)); + if (string.IsNullOrWhiteSpace(fileName)) + fileName = DateTime.Now.ToString("HH-mm-ss"); + var savePath = + $@"{Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)}\Ink Canvas Screenshots\{DateTime.Now.Date:yyyyMMdd}\{fileName}.png"; + + + if (!Directory.Exists(Path.GetDirectoryName(savePath))) + { + Directory.CreateDirectory(Path.GetDirectoryName(savePath)); + } + + bitmap.Save(savePath, ImageFormat.Png); + + if (!isHideNotification) + { + ShowNotification("截图成功保存至 " + savePath); + } } - - bitmap.Save(savePath, ImageFormat.Png); - - if (!isHideNotification) + else { - ShowNotification("截图成功保存至 " + savePath); + if (!Directory.Exists(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + @"\Ink Canvas Screenshots")) + { + Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + + @"\Ink Canvas Screenshots"); + } + + bitmap.Save(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + + @"\Ink Canvas Screenshots\" + DateTime.Now.ToString("u").Replace(':', '-') + ".png", ImageFormat.Png); + + if (!isHideNotification) + { + ShowNotification("截图成功保存至 " + Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + + @"\Ink Canvas Screenshots\" + DateTime.Now.ToString("u").Replace(':', '-') + ".png"); + } } } @@ -7010,12 +7049,12 @@ namespace Ink_Canvas if (newNotice) { - ShowNotification("墨迹成功保存至 " + Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + + ShowNotification("墨迹成功保存至 " + Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\Ink Canvas Strokes\User Saved\" + DateTime.Now.ToString("u").Replace(':', '-') + ".icstk"); } else { - AppendNotification("墨迹成功保存至 " + Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + + AppendNotification("墨迹成功保存至 " + Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\Ink Canvas Strokes\User Saved\" + DateTime.Now.ToString("u").Replace(':', '-') + ".icstk"); } } diff --git a/Ink Canvas/Settings.cs b/Ink Canvas/Settings.cs index 4739685..19f4258 100644 --- a/Ink Canvas/Settings.cs +++ b/Ink Canvas/Settings.cs @@ -116,10 +116,16 @@ namespace Ink_Canvas { [JsonProperty("isAutoKillPptService")] public bool IsAutoKillPptService { get; set; } = false; + [JsonProperty("isAutoKillEasiNote")] public bool IsAutoKillEasiNote { get; set; } = false; + + [JsonProperty("isSaveScreenshotsInDateFolders")] + public bool IsSaveScreenshotsInDateFolders { get; set; } = false; + [JsonProperty("isAutoSaveStrokesAtScreenshot")] public bool IsAutoSaveStrokesAtScreenshot { get; set; } = false; + [JsonProperty("isAutoSaveStrokesAtClear")] public bool IsAutoSaveStrokesAtClear { get; set; } = false; diff --git a/README.md b/README.md index 64a817d..485994c 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ # Ink-Canvas - [新版下载](https://github.com/WXRIW/Ink-Canvas/releases/latest "Latest Releases") | [使用指南](https://github.com/WXRIW/Ink-Canvas/blob/master/Manual.md "说明和指南") | [常见问题](https://github.com/WXRIW/Ink-Canvas#FAQ "FAQ") + [直接下载](https://github.com/WXRIW/Ink-Canvas/releases/latest "Latest Releases") | [使用指南](https://github.com/WXRIW/Ink-Canvas/blob/master/Manual.md "说明和指南") | [常见问题](https://github.com/WXRIW/Ink-Canvas#FAQ "FAQ") [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FWXRIW%2FInk-Canvas.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2FWXRIW%2FInk-Canvas?ref=badge_shield) [![交流群](https://img.shields.io/badge/-%E4%BA%A4%E6%B5%81%E7%BE%A4%20891915376-blue?style=flat&logo=TencentQQ)](https://jq.qq.com/?_wv=1027&k=NvlM1Rgg) ![GitHub issues](https://img.shields.io/github/issues/WXRIW/Ink-Canvas?logo=github) @@ -12,8 +12,9 @@ A fantastic Ink Canvas in WPF/C#, with fantastic support for Seewo Boards. -学校从传统投影仪换成了希沃白板,由于自带的“希沃白板”软件太难用,也没有同类好用的画板软件,所以开发了该画板。 +学校从传统投影仪换成了希沃白板,由于自带的“希沃白板”软件太难用,也没有同类好用的画板软件,所以开发了该画板。 + [](https://www.microsoft.com/store/apps/9NXJFDD97XJ3?cid=ghreadme) ## 🔧 特性 diff --git a/privacy.txt b/privacy.txt new file mode 100644 index 0000000..2c50a9c --- /dev/null +++ b/privacy.txt @@ -0,0 +1,30 @@ +隐私政策 + 本软件指 Ink Canvas 画板软件(以下称本软件)。 + 本软件重视用户隐私,本软件尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,本软件会按照本隐私权政策的规定使用和披露您的个人信息。 + 除本隐私权政策另有规定外,在未征得您事先许可的情况下,本软件不会将这些信息对外披露或向第三方提供。本软件会不时更新本隐私权政策。您在同意本软件服务使用协议之时,即视为您已经同意本隐私权政策全部内容。本隐私权政策属于本软件服务使用协议不可分割的一部分。 + 1. 适用范围 + 1)本软件收集到的您在本软件发布的有关信息数据,包括但不限于参与活动、成交信息及评价详情; + 2)违反法律规定或违反本软件规则行为及本软件已对您采取的措施。 + 2.信息使用 + a)本软件不会向任何无关第三方提供、出售、出租、分享或交易您的个人信息,除非事先得到您的许可,或该第三方和本软件(含本软件关联公司)单独或共同为您提供服务,且在该服务结束后,其将被禁止访问包括其以前能够访问的所有这些资料。 + b)本软件亦不允许任何第三方以任何手段收集、编辑、出售或者无偿传播您的个人信息。任何本软件平台用户如从事上述活动,一经发现,本软件有权立即终止与该用户的服务协议。 + c)为服务用户的目的,本软件可能通过使用您的个人信息,向您提供您感兴趣的信息,包括但不限于向您发出产品和服务信息,或者与本软件合作伙伴共享信息以便他们向您发送有关其产品和服务的信息(后者需要您的事先同意)。 + 3.信息披露 + 在如下情况下,本软件将依据您的个人意愿或法律的规定全部或部分的披露您的个人信息: + 1)经您事先同意,向第三方披露; + 2)为提供您所要求的产品和服务,而必须和第三方分享您的个人信息; + 3)根据法律的有关规定,或者行政或司法机构的要求,向第三方或者行政、司法机构披露; + 4)如您出现违反中国有关法律、法规或者本软件服务协议或相关规则的情况,需要向第三方披露; + 5)如您是适格的知识产权投诉人并已提起投诉,应被投诉人要求,向被投诉人披露,以便双方处理可能的权利纠纷; + 6)在本软件平台上创建的某一交易中,如交易任何一方履行或部分履行了交易义务并提出信息披露请求的,本软件有权决定向该用户提供其交易对方的联络方式等必要信息,以促成交易的完成或纠纷的解决。 + 7)其它本软件根据法律、法规或者网站政策认为合适的披露。 + 4. 信息存储和交换 + 本软件收集的有关您的信息和资料将保存在本软件及(或)其关联公司的服务器上,这些信息和资料可能传送至您所在国家、地区或本软件收集信息和资料所在地的境外并在境外被访问、存储和展示。 + 5. Cookie的使用 + a)在您未拒绝接受Cookies的情况下,本软件会在您的计算机上设定或取用Cookies + b)您有权选择接受或拒绝接受Cookies。您可以通过修改浏览器设置的方式拒绝接受Cookies。但如果您选择拒绝接受Cookies,则您可能无法登录或使用依赖于Cookies的本软件网络服务或功能。 + c)通过本软件所设Cookies所取得的有关信息,将适用本政策。 + 6. 信息安全 + a) 本软件帐号均有安全保护功能,请妥善保管您的用户名及密码信息。本软件将通过对用户密码进行加密等安全措施确保您的信息不丢失,不被滥用和变造。尽管有前述安全措施,但同时也请您注意在信息网络上不存在“完善的安全措施”。 + b) 在使用本软件网络服务进行网上交易时,您不可避免的要向交易对方或潜在的交易对方披露自己的个人信息,如联络方式或者邮政地址。请您妥善保护自己的个人信息,仅在必要的情形下向他人提供。如您发现自己的个人信息泄密,尤其是本软件用户名及密码发生泄露,请您立即联络本软件客服,以便本软件采取相应措施。 +