GithubHelp home page GithubHelp logo

nomiuo / nodenote Goto Github PK

View Code? Open in Web Editor NEW
368.0 36.0 85.0 368.79 MB

MindMap software designed by PyQt5 with rich text and python synaxhighlighter.

License: Mozilla Public License 2.0

Python 95.76% HTML 1.13% JavaScript 3.01% Batchfile 0.11%
pyqt5 mindmap notes-app python software

nodenote's Introduction

This project is being refactored...V3 is on the way. V3 will use PySide6.

NodeNote

1. 如何运行

输入框架IME最好选择搜狗输入法

1. 不同平台的方式

1. 使用脚本方式运行

  1. 安装python: Python版本 3.9
  2. 安装依赖: pip install -r requirements.txt
  3. 运行脚本: python example.py

2. 使用可执行文件运行(路径应为纯英文路径, 不要包含特殊字符)

  • Windows: 运行NodeNote.exe
  • Mac: 运行NodeNote.app
  • Linux:
    1. 安装依赖: sudo apt install libxcb-xinerama0 << (Unbuntu)
    2. 运行NodeNote二进制文件

2. 打开后的工作区介绍

  1. 进入工作区: 现版本采用工作区结构,
  • 双击上次打开的目录可以直接打开目录
  • 也可以选择打开工作区目录按钮, 选择你的文件夹
  1. 工作区结构: 第一次打开空白工作区会生成以下文件
  • .NOTENOTE: 记录你创建工作区的时间以及保存你上次打开过的文件
  • Resources: 程序运行所需的资源文件
  • Notes: 创建笔记所在的目录, 您的.note格式笔记最好都创建在该文件夹, 因为如果没有上次打开的文件, 则在该目录检索, 如果没有检索到, 则在该目录新建一个.note格式文件
  • History: 运行时的文件每隔3分钟会自动备份一份到该文件夹, 如果资源过大可以定时清理! 一个.note小型的话大概只有几KB.
  • Documents: 您的markdown文件备份
  • Attachments: 当你使用节点的附件功能时, 会自动拉取该文件到这个文件夹
  • Assets: 您的笔记所用到的图片都保存在这个文件夹

过去版本迁移

  • 将根目录的Assests移动到工作区目录
  • 将您的.note文件移动到Notes即可

2. 如何使用小部件

1. Alt+Q或者鼠标右键 创建属性控件: 支持富文本, markdown, 以及其他小部件的嵌套

支持的嵌套类型

  • 嵌套自身
  • 嵌套子图: 相当于一个存在于当前场景的自由的子场景
  • 嵌套todo控件:
    • 用于你的任务控制, 点开始按钮则开始计时, 左侧是总时间, 右侧是你开始计时之后的时间.
    • 结束计时后, 会将你的右侧时间加到左侧总时间上.
  • 嵌套附件控件:
    • cover是你的附件图片,可以自定义;
    • File是你要添加的附件.添加完成后, 会将你的附件拉到当前目录的Attachments中.
    • 添加完成后, 双击图片则会调用系统默认的打开程序打开你的附件.

支持的富文本操作:

您可以选中节点内的富文本拖拽到其他地方

Python高亮 : Ctrl+9 清空对齐格式: Ctrl+P 加粗: Ctrl+W
左对齐 : Ctrl+[ 右对齐 : Ctrl+] 居中对齐 : Ctrl+ \
斜体 : Ctrl+Q 下划线 : Ctrl+R 删除线: Ctrl+/
增大字体: Ctrl+G 缩小字体: Ctrl+H 改变字体颜色: Ctrl+N
超链接: Ctrl+M 数学公式格式参见: Ctrl+I 清空所有格式: Ctrl + L
撤销上一步: Crtl+Z 恢复上一步: Ctrl+Y 创建一个表格: Ctrl+1
增加一行表格: Ctrl+3 增加一列表格 : Ctrl+2 删除一行表格 : Ctrl+5
删除一列表格 : Ctrl+4 选中表格后合并表格行列: Ctrl+6 合并表格后拆分已合并内容: Ctrl+7
添加一个列表 : Ctrl+8 改变插入图片的大小 : Ctrl+U 文字向后缩进或向前缩进: Tab or Ctrl+Tab
复制html内容: Ctrl+C 复制纯文本内容: Ctrl+Shift+C 粘贴: Ctrl+V

支持的Markdown操作:

  • 选中小部件后在侧边栏进行编辑, 当退出侧边栏时, 会自动保存markdown到数据库以及备份文件中
  • 支持的Markdown类型有: 所有基本markdown以及UML, 代码块高亮, LaTeX, 绘图 具体可以移步该项目 >> tui.editor
  • 插入图片请使用相对路径: ../Assets/您的图片

支持的节点无限画布:

  • 其样式对应于Draw Widget的样式
  • 您可以通过W/A/S/D扩展画布的大小

支持的真值

  • 可以注意到每个节点都有四个端口, 上面两个是真值为真的输入输出端口, 下面两个是真值为假的输入输出端口
  • 通过按照相应真值的端口进行连线, 结合下面的逻辑部件, 可以表示出你想要的逻辑.

支持的复制节点以及粘贴

  • 您可以使用Alt+R复制该节点以及其内部所有内容
  • 然后可以通过Alt+T粘贴其到任意一个场景中

支持的扩大与缩小: 用Shift+鼠标左键 扩大与缩小

2. Alt+W鼠标右键创建逻辑控件: 使用两个与或非门进行逻辑的控制

  • 上面的是输入的与或非门, 下面的是输出的与或非门
  • 当你有多个输入的时候
    • 调整输入成或门, 则表示所有输入, 仅需一个成立, 则输出成立
    • 调整输入成与门, 则表示所有输入, 全部都得成立, 则输出成立
    • 调整输入成非门, 则表示将输入结果逆反, 例如你从逻辑部件的真值为假的端口连到逻辑控件, 则逆反后为真
  • 当你有多个输出的时候
    • 调整输出成或门, 则表示所有输出, 仅有部分成立
    • 调整输出成与门, 则表示所有输出, 全部都成立
    • 调整输出成非门, 则表示将输出结果逆反

3. Alt+E鼠标右键创建绘画部件

  • 请先连接数位板
  • 支持橡皮擦功能, 现在数位板驱动中, 将你的笔其中一个按钮设置为橡皮擦.

4. 通过双击其他部件端口创建连线

  • 连线选中后可以通过两个控制点控制连线的位置

  • 可以在属性控件上按Ctrl+0生成与之相关所有连线的ui动画, 观察逻辑流向

  • 也可以在连线上单独使用Ctrl+0生成选中连线的逻辑动画

5. 结合上述所有部件的碰撞检测

  • 您可以拖动属性部件碰撞其他部件
    • 直接拖动到其他属性部件: 将自身添加进其他属性部件的当前行
    • 拖动到其他属性部件时, 按住Ctrl: 将自身添加进其他属性部件的下一行
    • 拖动到连线: 自动插入该部件到连线的中间
  • 您可以在属性部件中进行碰撞检测
    • 删除属性控件的子控件会生成一个雪花图案, 通过碰撞雪花图案, 可以替代其位置
  • 您可以使用右键的上下文菜单调整自身在其他属性控件内的位置

6. 综合上述的逻辑控件和属性控件的功能

  • 您可以按Ctrl+up/down/left/right实现辅助对齐功能

  • 您可以按Ctrl+1/2/3/4/5/6/7/8 移动当前鼠标位置对应左右上下的部件移动50px

3. 如何使用场景

1. 创建子场景

  • 每个子场景都与一个属性控件绑定, 您可以通过Alt+鼠标左键点击小部件, 创建其子场景.

  • 创建子场景后, 会在侧边栏的目录中生成你的索引, 您可以通过索引找到相应的子场景
    • 可以通过Alt+Z返回上一次的场景
    • 可以通过Alt+X返回父场景

2. 属性控件与其他属性控件跨越场景的超链接跳转

  • 通过Alt+C复制该节点的id
  • 在其他节点中输入该id, 通过Ctrl+M将其变为超链接
  • 变为超链接后, 您可以自由修改其id字符串, 存储的跳转信息不会因为其字符串改变而改变了

3. 场景小部件的批量坐标移动

shift + w/a/s/d/j/k/l

4. 基本设置

  • 扩大场景(左右上下): alt + 1/2/3/4
  • 缩小场景(左右上下): alt + 5/6/7/8
  • 打开辅助线功能(默认开启): F1
  • 打开Undo&&Redo功能(默认开启): F2
  • 打开飘落的图片特效(默认开启): F11
  • 打开搜索栏: Ctrl+F
  • 缩放视图: Ctrl +-
  • 打开缩略图: Shift+B

4. 文件分享与导出操作

1. 导出该场景到.note文件

  • 不导出该场景下的子场景, 仅导出该场景的内容: Shift+S
  • 导出该场景下的所有递归子场景: Alt+S

2. 导出该场景到png图片

  • 导出该场景所有内容: Ctrl+Alt+P
  • 导出该场景选中部件的内容: Ctrl+Shift+P

5. UI的操作

  • 您可以通过Ctrl+B打开侧边栏
    • 侧边栏拥有文件夹视图: 您可以通过右键上下文菜单创建删除文件, 以及通过鼠标左键切换.note文件
    • 场景+Markdown视图: 这是您该.note笔记的结构
    • 样式自定义视图: 您可以通过该视图自定义所有样式
      • 目前的窗口样式可以通过qss文件进行修改, 我只做了一个, 感兴趣的朋友可以参照Resources/Stylesheets目录下的qss仿照一个, 然后可以通过样式按钮加载你写的qss文件.
      • 其他部件样式支持所有场景, 当前场景, 选中部件样式的修改
  • 您可以通过Alt+G调整侧边栏到左边或上边
  • 您可以通过拉动侧边栏以及内部的条进行调整大小

6. 最后

感谢您使用NodeNote, 如果遇到任何问题或想提建, 欢迎创建一个issue

如果有朋友想参与项目, 非常欢迎. 目前要是有人能多写几个qss样式表就好了哈哈哈哈.

  1. fork该仓库
  2. 修改代码
  3. 创建新brand
  4. push到我的main分支
  5. 我会根据实际情况进行合并分支

版本更替

后续规划

代码重构, 增加双链, 除了网格布局新增其他布局样式, 绘图功能强化.

v2.36.21:

  • 侧边栏画板
  • 对齐功能
  • 动画演示变成树的遍历
  • 修复了序列化的一个错误
  • 修复线条的编辑框下上文菜单的点击
  • 所有场景的背景色更新sub view内的
  • effect cutline 计算boundingRect()
  • 修复搜索的错误
  • 修复还没建立线条就删除的错误
  • 修复了错误的majax解析闪退

v2.37.22:

  • 修复了bug
  • 增加了场景内的根据当前鼠标坐标批量移动小部件的功能

v2.37.23:

  • 修复了一些bug

nodenote's People

Contributors

actuallyfishcanswim avatar nomiuo avatar zbl2000 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nodenote's Issues

Vertical Node Orientation

Hello, I really liked using NodeNote but I encounter one problem when using it, the problem is if the nodes can be arranged like in the picture.

Before:
Artboard 2Github

After arranging: ( I edited it )
Artboard 3Github

【想法】作者有没有考虑和neo4j和notion结合起来

一直想做一个基于超级大图的笔记软件,但是不知道怎么做。
相比于所有笔记都放到一个txt文件,所有笔记都放到一个图里面更科学,如果图是三维的类似人脑的神经网络就更好了。网上其实有一个基于白板的应用,但是太贵了。

我理解的笔记在前端呈现层面就一张大图,然后随心所欲缩放链接定位重组,不会有内存和cpu的限制。
neo4j有非常多的图应用分享,也许非常适合做底层的图计算/知识图谱计算数据库。
notion其实也是一个数据库了,包装成了笔记软件,有向通用笔记本发展的趋势,因为用户基数非常庞大,看数据至少有100万用户了,但是notion呈现出来的笔记还是树状页面,还没有添加图的功能。

NodeNote也许可以添加一些接口,方便对接。

Resize node including its text/contents

Hello, I also encounter this problem when I'm adding a paragraph into the node. Because I can't resize the node together with its content, The paragraph looks like 1 very long sentence. The GIF Below is what it looks like.
Exeding the window

I suggest adding a way to resize like in the picture below.
2021-11-26 19_55_09-My Beautiful life

This is the resizing that I'm suggesting.
resizing

严重的问题2

【非常严重的问题】
1.使用win10默认中文输入法在node里打字的过程中,在等待选择对应字词时几秒钟后就会自动输入拼音。对输入长句、多音字影响极大。

QGraphicsView应用数位板的压感绘图

  • 目前的粗细与色彩饱和度无法随着数位板的压感变化
  • windows ink的驱动产生长按等于鼠标右键, 同时会出现波纹, 如何采用其他的驱动

异步存储(Asynchronous storage)

异步存储尝试1: qt线程池

  • 由于Python有GIL全局解释器锁, 在qt的主线程中使用线程池只能够保证UI线程能够在大规模的时间操作响应UI, 但是该卡还是卡.
  • 同时还会有一些小bug, 应当用一个线程管理线程池, 才能起作用.
  • 在线程池操作时, 出现多线程写一个文件的情况,考虑用while True捕获异常, 尝试使用过互斥锁, 但是该锁会在io操作结束之前就释放, 也就是将io操作交给操作系统后即释放锁

异步存储尝试2: asyncio + aiofiles + quamash

通过quamash获得qt事件循环放入asyncio的事件循环, 也会出现多协程同时写的问题, 协程锁没有用. 同时在关闭程序后的前一秒save任务会被强制关闭, 协程状态为pending.

对常用操作的一些建议

1.建议增加ctrl+滚轮实现平滑缩放的快捷键。会比当前的ctrl和+/-更方便和通用。
(说到通用,如果可以,希望能通过配置文件自定义快捷键)
2.建议在开启辅助线功能时,控件边界能够实现磁性吸附到辅助线上。

反馈发现的一些问题

【严重问题反馈】
【问题版本:win_NodeNote_v2.37.22】
1.当右键点击连接线上的文字时,软件会闪退。
2.当打开样式颜色编辑后,即使点击×或cancel也会使现有样式丢失。
【无伤大雅的小问题】
1.侧边栏markdown内容一旦填写就无法完全删除。
2.node里插入表格时,初始单元格几乎紧挨着难以区分,不易编辑。
【一些优化建议】
1.建议增加导出当前样式的功能。方便在不同场景中快速切换样式。

setup.py

Hi, is it possible to add a setup.py to this project?

I'd like to package it for GNU Guix and it would make things easier.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.