Recent

Author Topic: TomiNote was written, I'm happy to share it.  (Read 7353 times)

tomitomy

  • Sr. Member
  • ****
  • Posts: 251
TomiNote was written, I'm happy to share it.
« on: November 18, 2017, 03:12:53 am »
Please visit the new version through the link below:
https://forum.lazarus.freepascal.org/index.php/topic,41279.msg286254.html



Hi, guys, my program TomiNote was written, I'm happy to share it.



TomiNote v1.0 Beta



TomiNote is a simple note collection tool that supports the following features:

01, support multi-language switch
02, support tree directory
03, support drag and drop nodes (need to press Ctrl or Alt key)
04, support recycle bin
05, support multi-node history
06, support import and export (file, folders, database)
07, support automatic save and automatic backup
08, support multi-node search and replace (support for regular expressions)
09, support sort node
10, support split the note into multiple sub-nodes (regular expression)
11, support multi-replace (regular expression)
12, Support adjust the user interface (full screen, full window)
13, support custom font name and font size
14, support custom foreground and background colors
15, support dynamic load child nodes (load child nodes when expanding the node)

For more features, please check the software help information, or wiki (https://github.com/tomitomy/TomiNote/wiki).

This program has only been tested in the Linux Mint MATE 64-bit and has not been tested on other platforms. If you compile this program on other platforms, you may need to make the appropriate adjustments.

If you compile this program GTK2 version, please apply all the patches here first:
https://bugs.freepascal.org/view.php?id=32583



TomiNote 是一个简单的笔记收集工具,它支持以下特性:

01、支持多语言切换
02、支持树形目录
03、支持拖拽节点(需要按下 Ctrl 或 Alt 键)
04、支持回收站
05、支持多节点历史记录
06、支持导入导出(文件、文件夹、数据库)
07、支持自动保存和自动备份
08、支持多节点搜索和替换(支持正则表达式)
09、支持节点排序
10、支持将节点文本分割为多个
« Last Edit: April 11, 2021, 07:13:49 am by tomitomy »

engkin

  • Hero Member
  • *****
  • Posts: 3112
Re: TomiNote was written, I'm happy to share it.
« Reply #1 on: November 18, 2017, 04:15:57 am »
谢谢

tomitomy

  • Sr. Member
  • ****
  • Posts: 251
Re: TomiNote was written, I'm happy to share it.
« Reply #2 on: November 18, 2017, 05:11:09 am »
谢谢

This is the first time I saw the Chinese reply, so happy!  :D

tomitomy

  • Sr. Member
  • ****
  • Posts: 251
Re: TomiNote was written, I'm happy to share it.
« Reply #3 on: November 20, 2017, 02:16:54 pm »
Update: TomiNote v1.0 beta2

Fix 2 Bugs:
1. Double click the search results, if not click on the entry, there will be an error.
2. The path of the import folder can't be remembered.

Optimize code, add "ucommon" unit.

Optimize the search and replacement features, adding several options:

Carriage returns and newline characters in search content or replace content will be converted to \r \n, tabs will be converted to \t, backslashes will be converted to \\, and if the search content or replace content contains with \r \n \t \\, the backslash in these symbols will not be converted.

Add "Ignore Case", "Multi Line", "Non Greedy" options.



更新:TomiNote v1.0 beta2

修复2个Bug:
1、双击搜索结果时,如果没有双击在条目上,会引发一个错误。
2、导入目录的路径不会被记住。

优化代码,增加了“ucommon”单元。

优化搜索和替换功能,增加了一些选项:

搜索内容和替换内容中的回车符和换行符将被转换为 \r \n,制表符将被转换为 \t,反斜线将被转换为 \\,如果搜索内容或替换内容中包含有 \r \n \t \\,则这些符号中的反斜线不会被转换。

增加“忽略大小写”、“多行模式”、“非贪婪”选项。



You can get this program and the source code here:
https://github.com/tomitomy/TomiNote


« Last Edit: November 20, 2017, 02:19:28 pm by tomitomy »

Ñuño_Martínez

  • Hero Member
  • *****
  • Posts: 1186
    • Burdjia
Re: TomiNote was written, I'm happy to share it.
« Reply #4 on: November 21, 2017, 05:55:49 pm »
Good job!  :)
Are you interested in game programming? Join the Pascal Game Development community!
Also visit the Game Development Portal

tomitomy

  • Sr. Member
  • ****
  • Posts: 251
Re: TomiNote was written, I'm happy to share it.
« Reply #5 on: November 22, 2017, 03:08:31 pm »
Good job!  :)
Thank you Ñuño_Martínez, I'm glad that some people like it.  :)

Chronos

  • Full Member
  • ***
  • Posts: 240
    • PascalClassLibrary
Re: TomiNote was written, I'm happy to share it.
« Reply #6 on: November 24, 2017, 01:06:12 am »
An interesting little application. Those little tools/utilities were always strong aspect of Delphi and its RAD IDE.

I has some free time so I tried to create DEB linux package and to configure Launchpad for daily build. The page is https://launchpad.net/tominote. I prepared debian packaging files and created launchpad recipe for daily build https://code.launchpad.net/~chronoscz/+recipe/tominote-daily.

It is imported from forked project https://github.com/chronoscz/TomiNote but if you include changes into your project I can redirect automatic import for original github repo. Also you can register in launchpad if you interested so project can be handed over to you.

Some remarks:
  • Please do not use menu items text with key character in parenthesis. It is really distracting and against usual UI design guidelines.
  • Because Linux needs to place files all over the filesystem then location for ini file and language files needs to be configurable. I added such support to forked repo.
  • If node name is renamed then weird error is displayed: "CalcRecordHard: History Record Error !"
  • I placed Czech language file to forked github repo. You can add/merge it in you repo.
« Last Edit: November 24, 2017, 01:08:44 am by Chronos »

tomitomy

  • Sr. Member
  • ****
  • Posts: 251
Re: TomiNote was written, I'm happy to share it.
« Reply #7 on: November 24, 2017, 10:57:51 am »
Thank you, Chronos. I'm glad you like this software. There's a couple of things I need to explain about this software:

1, I wrote this software in the original intention is for me to read and manage some ebooks, but programming is not my strong point, I just do my best to write this software, it can meet my needs, I'm happy.

2, because my English is very poor, I need to read the English article using translation software, so the English UI of this software may not be very reasonable, I don't know how to deal with the better English UI, if someone can help to improve the English UI, I will be very happy.

3, I'm not very good at using Github and other English websites, I just use it to backup source code, reading English website is difficult for me, so I don't know how to interact with other Github projects, I just simply upload, download or modify the code.

I'm not going to make too many changes to this software in the future, just will fix BUG. It would be nice if you would update the software and make it stronger.

About some of the questions you mentioned:

1, if change menu item caption in the source code, all language files need to be updated, and I'm not very satisfied with the current English Language UI, I hope to have a better English Language file(.po), and then update it into the source code. Currently, you can optimize menu item text in language files(.po).

2, I will merge your changes into my Guthub repository.

3, "CalcRecordHard: History Record Error!" CalcRecordHard is a function name in "uhistory" unit, "History Record Error" means that the history operation is not correctly recorded. I'll try to patch this BUG.

4, I will merge the Czech language file into my Guthub repository.

Thank you!  :)



The above content translate from Chinese to English by Google, I made a simple change.
« Last Edit: November 24, 2017, 11:01:03 am by tomitomy »

Chronos

  • Full Member
  • ***
  • Posts: 240
    • PascalClassLibrary
Re: TomiNote was written, I'm happy to share it.
« Reply #8 on: November 24, 2017, 03:10:41 pm »
I understand. My interest in your software is just for pure fun. Its nice to see that other people can produce useful software with Lazarus. Recently I just worked on some games but I have also some useful software on my list. Also your application looks pretty well prepared. Best way to produce free & open source software is for your own usage. Then time and effort put into it is justified by that you will use that app. But if you have good working peace of software with personal care then if would be also nice if other people can use that software. But its not always easy to distribute such software for multiple platforms. As I am mostly Ubuntu user so I want my application to be available as DEB packages. My brother use Fedora so he would welcome RPM packages. And there are lots of other package formats even not speaking about snap and flatpak. Nowadays we have harder task to distribute our creations not just as simple .exe file but in many other forms.

I will probably not use your application as I use different one on my Android phone. I need my notes/tasks always with me. So if there could be application which could run on Android and Windows/Linux and allows to sync "notes" between multiple devices then that would be useful. Unfortunately it isn't so easy to build app for Android with Lazarus. So we need to wait to more years for Lazarus/FPC to full support Android platform.

Anyway I am interesting in packaging various Lazarus applications to DEB packages so I can install them from any computer running Ubuntu/Debian.

And its nice that you have multi-language support in your application. Even language can be changed without need for application restart. I need to improve my apps to have same feature :) So its also interesting to see how other Lazarus applications are made by other people.

English language in your application is pretty good I think. I was not sure how to translate some parts but that can be improved over time. For example "to cover file" looked like "to overwrite file" but I didn't checked that string location in code because of time constraints. I can imagine that to learn English is much harder for you from China than for us from Europe. But I heard one joke that in China there are more English speaking people than in the US :) Because even if just part of population can speak English than still there are lot more people in China :)

I would even hire you for one task I need to do and don't have time for that. To build generic/customizable "information system"/ERP/CRM/accounting/... for storing various data. Its should be something like database management tool with good user interface. There are some financial systems written with Lazarus but they are usually tightly bounded to one purpose. One notable example which I use is Memento Database https://play.google.com/store/apps/details?id=com.luckydroid.droidbase which is such generic personal database. You can use it for storing anything, not just text notes and tasks, but you can record what you bought/sold/borrowed/lent, places which you visited, contacts, and much more. That could be future extension of your app if you would have time and motivation for further improvements :)

tomitomy

  • Sr. Member
  • ****
  • Posts: 251
Re: TomiNote was written, I'm happy to share it.
« Reply #9 on: November 25, 2017, 07:57:31 am »
I'm not a professional programmer, I just amateur write some programs, and I am not very proficient at lazarus, I was learning while writing, so I write more slowly, I spent a few months time to complete this software, And rewritten 2 times, I'm still satisfied with this software, perhaps it still has a lot of places need to be optimized. I don't know how to distribute the software, I just know to write it out, and then it works. Thank you for making it to a deb package and windows installation package, which makes it easier for more people to use it.

I also hope that this program will be ported to the Android platform, but I have never written Android program, I know nothing about the preparation of Andriod program, I do not know where to start. If I have time later, I may try to write Android program.

I did not write multilanguage support until now, Leledumbo pointed me (http://forum.lazarus.freepascal.org/index.php/topic,38801.0.html), this is a great forum with lots of kind people.

With regard to the English language part of the software source code, I would like to keep the status quo, because there are some shortcut character that not in the menu name. And language files are easy to be modified to suit your preferences.

I saw the word "hire", I was a bit surprised, I am just an amateur, I have no confidence in my ability.

I read the introduction of Memento, it is a powerful program, the function is very comprehensive, it needs a lot of energy and time to complete these functions, I think I will not improve my program to such a strong, I would rather take the time to go Read ebooks, I think it is more interesting than programming.

I changed the source code of TomiNote and tried to fix the BUG of "History Record Error". I do not know if it is completely fixed, please test it.

I did not incorporate the "install" folder into my Github repository because I could not understand the code inside.

Thank you! :)

tomitomy

  • Sr. Member
  • ****
  • Posts: 251
Re: TomiNote was written, I'm happy to share it.
« Reply #10 on: November 30, 2017, 12:48:55 pm »
Update: TomiNote v1.0 beta3

Fix bugs:
1. The error history record of the node naming box
2. Can't search for 'aab' in 'aaab'.
3. The regular expression character \ will be converted to \\ in search box.
4. The contents of the edit box are automatically scrolled when pasted or deleted

Optimize code:
1. Using the Boyer Moore function in the StrUtils unit for fast search and replace.
2. Improving the execution efficiency of ToLF function.
3. Removed all string type helper function.
4. Add the run parameters, you can specify the directory of the configuration file and the language file by parameters (implemented by Chronos)

The help content in the software is also updated.



更新:TomiNote v1.0 beta3

修复 Bug:
1、节点命名框中历史记录出错
2、无法在 'aaab' 中搜索到 'aab'
3、搜索框中正则表达式的 \ 会被转换为 \\
4、粘贴和删除时编辑框内容自动滚动

优化代码:
1、使用 StrUtils 单元中的 Boyer Moore 函数提高搜索和替换速度。
2、提高 ToLF 函数的执行效率。
3、移除所有字符串帮手函数。
4、增加运行参数,可以通过参数指定配置文件和语言文件所在目录(由 Chronos 实现)

软件中的相关帮助内容也进行了更新。



You can get this program and the source code here:
https://github.com/tomitomy/TomiNote



I feel tired to fix the bugs, I hope it doesn't have more bug. Let me continue reading my ebook.


tomitomy

  • Sr. Member
  • ****
  • Posts: 251
Re: TomiNote was written, I'm happy to share it.
« Reply #11 on: December 02, 2017, 08:47:19 am »
Update: TomiNote v1.0 beta4

I had to update again because I used PasteFromClipboard the last time I updated, and PasteFromClipboard was going to trigger the TMemo.OnChange event anyway, out of control, causing a history record error.

History record error is intolerable, so I update again.

Fix bugs:
1. History record will be error if use the paste operation.
2. If open the same database in multiple programs, it will cause an error when saving the database, I added a warning when opening the file.

Other:
1. Upload the sample database to Github.



更新:TomiNote v1.0 beta4

我不得不再次更新,因为我前一次更新时,使用了 PasteFromClipboard,而 PasteFromClipboard 无论如何会触发 TMemo.OnChange 事件,无法控制,导致历史记录出错。

历史记录出错是无法容忍的,所以我再次进行了更新。

修复 Bug:
1、如果使用粘贴操作,会导致历史记录出错。
2、如果在多个程序中打开同一数据库文件,会导致保存数据时出错,我在打开文件时添加了一个警告。

其它:
1、上传示例数据库到 Github。



You can get this program and the source code here:
https://github.com/tomitomy/TomiNote

tomitomy

  • Sr. Member
  • ****
  • Posts: 251
Re: TomiNote was written, I'm happy to share it.
« Reply #12 on: December 08, 2017, 03:56:42 pm »
Update: TomiNote v1.0 beta5

The last update was not very successful, PasteFromClipboard can not be fully controlled, resulting in history record error, so this time I delete the PasteFromClipboard function, use SelText:=ClipBoard.AsText to paste text, this code will cause the contents of the memo box automatically scroll (In the GTK2 environment), it will make the user experience worse, I can not solve this problem, wait for Lazarus support GTK3.

At the previous update, I use the BoyerMoore string search function in StrUtils, but it has a BUG, so this time I didn't use it, I wrote an improved version of the BoyerMoore function.

I saw all the fixes before, are basically to fix the "history" and "search" two major functions, and the database didn't find any problems. so far, I have not received any feedback, except Chronos gave me some Feedback, probably no one to use this software, I can only test it myself, I feel it is relatively stable now, I will use for some time, if there is no problem, I will release version 1.0.

Fix Bug:
1, PasteFromClipboard caused  the history record error.
2, BoyerMoore function caused the search results error.
3, UTF8-BOM is not detected when importing the file, resulting BOM is also imported into the database.

other:
1, support \xFF escape characters in the search and replacement string, you can search for any character.

Note: The previous version did not detect the UTF8-BOM when importing the file, so UTF8-BOM might exist in the database. You can use the Replace function to replace \xEF\xBB\xBF with null to remove the UTF8-BOM. (Import operation only supports UTF8 format text file, please do not import other format files)



更新:TomiNote v1.0 beta5

上次更新不是很成功,PasteFromClipboard 无法完全控制,导致历史记录出错,所以这次我删除了 PasteFromClipboard 函数,改用 SelText := ClipBoard.AsText 实现粘贴操作,此代码会引起编辑框中的内容自动滚动(在 GTK2 环境下),它会让用户体验变差,我没有办法解决这个问题,等待 Lazarus 支持 GTK3 吧。

之前更新时使用的 StrUtils 中的 BoyerMoore 字符串搜索函数有 BUG,所以这次我没有使用 StrUtils 中的函数,而是仿照 StrUtils 中的 BoyerMoore 函数写了一个改进的版本。

我看了之前的所有修复,基本上都是在修补“历史记录”和“搜索”两大功能,数据库整体没有发现什么问题,到目前为止,我没有收到任何反馈,除了 Chronos 给了我一些反馈,大概没有什么人使用这个软件吧,我只能依靠自己进行测试,我感觉它已经比较稳定了,我会再使用一段时间,如果没有问题,我会发布 1.0 版本。

修复 Bug:
1、PasteFromClipboard 导致的历史记录出错。
2、BoyerMoore 函数导致的搜索结果出错。
3、在导入文件时没有检测 UTF8-BOM,导致 BOM 也被导入到数据库中。

其它:
1、在搜索和替换字符串中支持 \xFF 转义字符,可以搜索任意字符。

注意:之前的版本在导入文件时没有检测 UTF8-BOM,所以数据库中可能存在 UTF8-BOM 内容,可以使用替换功能将 \xEF\xBB\xBF 替换为空来去除 UTF8-BOM。(导入操作只支持 UTF8 格式的文本文件,请不要导入其它格式的文件)



You can get this program and the source code here:
https://github.com/tomitomy/TomiNote

tomitomy

  • Sr. Member
  • ****
  • Posts: 251
Re: TomiNote was written, I'm happy to share it.
« Reply #13 on: December 16, 2017, 08:20:18 am »
Note: This program is compiled in Lazarus 1.8.0RC4, and the "TEdit and TMemo" in other Lazarus versions may have changed, that will cause the history record error.

Update: TomiNote v1.0 beta6

After a week of use, I found some problems and fixed them, and I decided to continue to release the beta version until I found no new problems.

Fix Bug:
1, In some cases, the results will not be written to the database after the undo or redo, which is caused by "TMemo.SelText:=something" does not trigger the OnChange event.
2, If you import more than 256 sibling nodes, an error occurs because I used the wrong data type.
3, other bugs.

other:
1, To prevent the search operation from causing the program to become unresponsive, the count of search results is limited to 50000, which you can change in the Options dialog box.
2, Add "Rename" tool and "Script" tool to Node Utils.
3, "Script" tool has been enhanced to support mode=, loop=, case=.
4, "Script" editor support history.
5, Support move left and move right the node

The "Rename" tool can extract text from notes for use as node names, and you can add sequence numbers to node names, and you can rename only nodes of a certain depth.

The "Script" tool allows for multi-replace of nodes in batches. Its usage is the same as the Script tool that in the Text Utils, and a wider range of operations.

For specific usage, please check the software's help information.



更新:TomiNote v1.0 beta6

经过一周的使用,我又发现了一些问题并做了修复,我决定继续发布测试版,直到我不再发现新的问题为止。

修复 Bug:
1、在某些情况下,执行撤销或重做后,结果不会被写入数据库,这是由于“TMemo.SelText:=something 不触发 OnChange 事件”引起的。
2、如果导入的同级节点数量超过 256,则会出现错误,是由于我使用了错误的数据类型引起的。
3、其它一些 Bug。

其它:
1、为了避免搜索操作导致程序失去响应,搜索结果的数量被限制为50000,你可以在“选项”对话框中更改此值。
2、在节点工具集中增加了“重命名”工具和“脚本”工具。
3、“脚本”工具进行了增强,支持 mode=、loop=、case=。
4、“脚本”编辑框支持历史记录。
5、支持左移右移节点。

“重命名”工具可以从笔记中提取文本作为节点名称使用,还可以给节点名称添加序号,可以只对某一深度的节点进行重命名。
“脚本”工具可以批量对节点进行多重替换操作,它的用法和文本工具集中的“脚本”工具用法一样,只不过操作范围更广了。

具体用法请查看软件的帮助信息。



You can get this program and the source code here:
https://github.com/tomitomy/TomiNote


« Last Edit: December 17, 2017, 02:46:38 am by tomitomy »

 

TinyPortal © 2005-2018