support print
@ -5,7 +5,7 @@
|
||||
|
||||
一个舒适的笔记平台!
|
||||
|
||||
更多信息,请访问 [VNote 主页](https://tamlok.gitee.io/vnote) 或者[由 Gitee 托管的主页](https://tamlok.gitee.io/vnote) 。
|
||||
更多信息,请访问[VNote主页](https://vnotex.github.io/vnote)或者[由Gitee托管的主页](https://tamlok.gitee.io/vnote)。
|
||||
|
||||

|
||||
|
||||
@ -31,19 +31,19 @@ VNote 不是一个简单的 Markdown 编辑器。通过提供强大的笔记管
|
||||
* 邮件:`tamlokveer at gmail.com`;
|
||||
* [Slack](https://join.slack.com/t/vnote/shared_invite/enQtNDg2MzY0NDg3NzI4LTVhMzBlOTY0YzVhMmQyMTFmZDdhY2M3MDQxYTBjOTA2Y2IxOGRiZjg2NzdhMjkzYmUyY2VkMWJlZTNhMTQyODU);
|
||||
* [Telegram](https://t.me/vnotex);
|
||||
* 微信公众号: vnotex ;
|
||||
* 微信公众号:`vnotex`;
|
||||
|
||||
## 捐赠
|
||||
有很多方式可以帮助VNote的开发:
|
||||
|
||||
* 持续关注 VNote 并反馈问题以帮助改进;
|
||||
* 推荐 VNote 给朋友,口碑传播;
|
||||
* 参与 VNote 的开发,发起 [拉取请求](https://github.com/vnotex/vnote/pulls) 一起改进 VNote;
|
||||
* 如果 VNote 真的好用,可以考虑捐赠;
|
||||
* 持续关注VNote并反馈问题以帮助改进。
|
||||
* 推荐VNote给朋友,口碑传播。
|
||||
* 参与VNote的开发,发起[拉取请求](https://github.com/vnotex/vnote/pulls)一起改进VNote。
|
||||
* 如果VNote真的好用,可以考虑捐赠。
|
||||
|
||||
**PayPal**: [PayPal.Me/vnotemd](https://www.paypal.me/vnotemd)
|
||||
**PayPal**:[PayPal.Me/vnotemd](https://www.paypal.me/vnotemd)
|
||||
|
||||
**支付宝**: `tamlokveer@gmail.com`
|
||||
**支付宝**:`tamlokveer@gmail.com`
|
||||
|
||||
<img src="pics/alipay.png" width="256px" height="256px" />
|
||||
|
||||
|
@ -45,7 +45,7 @@ void CoreConfig::init(const QJsonObject &p_app,
|
||||
|
||||
m_toolBarIconSize = READINT(QStringLiteral("toolbar_icon_size"));
|
||||
if (m_toolBarIconSize <= 0) {
|
||||
m_toolBarIconSize = 16;
|
||||
m_toolBarIconSize = 18;
|
||||
}
|
||||
|
||||
m_docksTabBarIconSize = READINT(QStringLiteral("docks_tabbar_icon_size"));
|
||||
|
@ -127,7 +127,7 @@ namespace vnotex
|
||||
QString m_shortcuts[Shortcut::MaxShortcut];
|
||||
|
||||
// Icon size of MainWindow tool bar.
|
||||
int m_toolBarIconSize = 16;
|
||||
int m_toolBarIconSize = 18;
|
||||
|
||||
// Icon size of MainWindow QDockWidgets tab bar.
|
||||
int m_docksTabBarIconSize = 20;
|
||||
|
@ -60,6 +60,7 @@ namespace vnotex
|
||||
ApplySnippet,
|
||||
Tag,
|
||||
Debug,
|
||||
Print,
|
||||
MaxShortcut
|
||||
};
|
||||
Q_ENUM(Shortcut)
|
||||
|
@ -194,6 +194,20 @@ bool NotebookDatabaseAccess::addNode(Node *p_node, bool p_ignoreId)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool NotebookDatabaseAccess::addNodeRecursively(Node *p_node, bool p_ignoreId)
|
||||
{
|
||||
if (!p_node) {
|
||||
return false;
|
||||
}
|
||||
|
||||
auto paNode = p_node->getParent();
|
||||
if (paNode && !addNodeRecursively(paNode, p_ignoreId)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return addNode(p_node, p_ignoreId);
|
||||
}
|
||||
|
||||
QSharedPointer<NotebookDatabaseAccess::NodeRecord> NotebookDatabaseAccess::queryNode(ID p_id)
|
||||
{
|
||||
auto db = getDatabase();
|
||||
|
@ -49,6 +49,8 @@ namespace vnotex
|
||||
public:
|
||||
bool addNode(Node *p_node, bool p_ignoreId);
|
||||
|
||||
bool addNodeRecursively(Node *p_node, bool p_ignoreId);
|
||||
|
||||
// Whether there is a record with the same ID in DB and has the same path.
|
||||
bool existsNode(const Node *p_node);
|
||||
|
||||
|
@ -187,8 +187,8 @@ bool NotebookTagMgr::updateNodeTags(Node *p_node)
|
||||
auto db = m_notebook->getDatabaseAccess();
|
||||
|
||||
// Make sure the node exists in DB.
|
||||
if (!db->addNode(p_node, false)) {
|
||||
qWarning() << "failed to add node to DB" << p_node->fetchPath() << p_node->getId();
|
||||
if (!db->addNodeRecursively(p_node, false)) {
|
||||
qWarning() << "failed to add node to DB" << p_node->fetchPath() << p_node->getId() << (p_node->getParent() ? p_node->getParent()->getId() : -1);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,6 @@
|
||||
<file>icons/inplace_preview_editor.svg</file>
|
||||
<file>icons/image_host_editor.svg</file>
|
||||
<file>icons/settings_menu.svg</file>
|
||||
<file>icons/whatsthis.svg</file>
|
||||
<file>icons/help_menu.svg</file>
|
||||
<file>icons/import_menu.svg</file>
|
||||
<file>icons/export_menu.svg</file>
|
||||
@ -79,6 +78,7 @@
|
||||
<file>icons/close.svg</file>
|
||||
<file>icons/delete.svg</file>
|
||||
<file>icons/debug_editor.svg</file>
|
||||
<file>icons/print_editor.svg</file>
|
||||
<file>icons/stay_on_top.svg</file>
|
||||
<file>icons/outline_editor.svg</file>
|
||||
<file>icons/find_replace_editor.svg</file>
|
||||
|
@ -1 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1636007276787" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3786" width="512" height="512" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M1022.06544 583.40119c0 11.0558-4.034896 20.61962-12.111852 28.696576-8.077979 8.077979-17.639752 12.117992-28.690436 12.117992L838.446445 624.215758c0 72.690556-14.235213 134.320195-42.718941 184.89915l132.615367 133.26312c8.076956 8.065699 12.117992 17.634636 12.117992 28.690436 0 11.050684-4.034896 20.614503-12.117992 28.691459-7.653307 8.065699-17.209964 12.106736-28.690436 12.106736-11.475356 0-21.040199-4.041036-28.690436-12.106736L744.717737 874.15318c-2.124384 2.118244-5.308913 4.88424-9.558703 8.283664-4.259 3.3984-13.180184 9.463536-26.78504 18.171871-13.598716 8.715499-27.415396 16.473183-41.439808 23.276123-14.029528 6.797823-31.462572 12.966313-52.289923 18.49319-20.827351 5.517667-41.446971 8.28571-61.842487 8.28571L552.801776 379.38668l-81.611739 0 0 571.277058c-21.668509 0-43.250036-2.874467-64.707744-8.615215-21.473057-5.734608-39.960107-12.749372-55.476499-21.039175-15.518438-8.289804-29.541827-16.572444-42.077328-24.867364-12.541641-8.290827-21.781072-15.193027-27.739784-20.714787l-9.558703-8.93244L154.95056 998.479767c-8.500605 8.921183-18.699897 13.386892-30.606065 13.386892-10.201339 0-19.335371-3.40454-27.409257-10.202363-8.079002-7.652284-12.437264-17.10968-13.080923-28.372188-0.633427-11.263531 2.659573-21.143553 9.893324-29.647227l128.787178-144.727219c-24.650423-48.464805-36.980239-106.699114-36.980239-174.710091L42.738895 624.207571c-11.057847 0-20.61655-4.041036-28.690436-12.111852-8.079002-8.082072-12.120039-17.640776-12.120039-28.696576 0-11.050684 4.041036-20.61962 12.120039-28.689413 8.073886-8.072863 17.632589-12.107759 28.690436-12.107759l142.81466 0L185.553555 355.156836l-110.302175-110.302175c-8.074909-8.077979-12.113899-17.640776-12.113899-28.691459 0-11.04966 4.044106-20.61962 12.113899-28.690436 8.071839-8.076956 17.638729-12.123109 28.691459-12.123109 11.056823 0 20.612457 4.052293 28.692482 12.123109l110.302175 110.302175 538.128077 0 110.303198-110.302175c8.070816-8.076956 17.632589-12.123109 28.690436-12.123109 11.050684 0 20.617573 4.052293 28.689413 12.123109 8.077979 8.070816 12.119015 17.640776 12.119015 28.690436 0 11.050684-4.041036 20.614503-12.119015 28.691459l-110.302175 110.302175 0 187.448206 142.815683 0c11.0558 0 20.618597 4.034896 28.690436 12.113899 8.076956 8.069793 12.117992 17.638729 12.117992 28.683273l0 0L1022.06544 583.40119 1022.06544 583.40119zM716.021162 216.158085 307.968605 216.158085c0-56.526411 19.871583-104.667851 59.616796-144.414087 39.733956-39.746236 87.88256-59.611679 144.411017-59.611679 56.529481 0 104.678084 19.865443 144.413064 59.611679C696.156742 111.48921 716.021162 159.631674 716.021162 216.158085L716.021162 216.158085 716.021162 216.158085 716.021162 216.158085z" p-id="3787" fill="#000000"></path></svg>
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1637134014354" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9411" width="512" height="512" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M512 64c51.3 0 99.5 20 135.8 56.2 20.6 20.6 36 45.1 45.4 71.8H330.9c9.4-26.7 24.8-51.2 45.4-71.8C412.5 84 460.7 64 512 64z m0-64C370.6 0 256 114.6 256 256h512C768 114.6 653.4 0 512 0z" p-id="9412" fill="#000000"></path><path d="M832 704v-98h160c17.7 0 32-14.3 32-32s-14.3-32-32-32H832V368c86 0 158.8-56.6 183.2-134.5 6.5-20.6-9-41.5-30.6-41.5-7 0-13.5 2.2-18.9 6.1-5.4 3.9-9.5 9.5-11.6 16.1-6 19.3-16.6 36.9-31.1 51.7-24.3 24.6-57.8 38.1-92.4 38.1H193.3c-34.6 0-68.1-13.4-92.4-38.1-14.6-14.8-25.1-32.4-31.1-51.7C65.7 201 53.2 192 39.3 192c-18.2 0-32 14.9-32 31.9 0 3.2 0.5 6.4 1.5 9.6C33.2 311.4 106 368 192 368v174H32c-17.7 0-32 14.3-32 32 0 8.8 3.6 16.8 9.4 22.6 5.8 5.8 13.8 9.4 22.6 9.4h160v98c-86 0-158.8 56.6-183.2 134.5-6.5 20.6 9 41.5 30.6 41.5 7 0 13.5-2.2 18.9-6.2 5.4-3.9 9.5-9.5 11.6-16.1 6-19.3 16.6-36.9 31.1-51.7 24.3-24.6 57.8-38.1 92.4-38.1h5.1C228 914.1 357.2 1024 512 1024c88.4 0 168.4-35.8 226.3-93.7 43.5-43.5 74.6-99.6 87.3-162.3h5.1c34.6 0 68.1 13.4 92.4 38.1 14.6 14.8 25.1 32.4 31.1 51.7 4.1 13.3 16.5 22.3 30.5 22.3 18.2 0 32-14.9 32-31.9 0-3.1-0.5-6.4-1.5-9.6C990.8 760.6 918 704 832 704z m-64 0c0 21.8-2.7 43.3-8 64-3.1 12.1-7.1 24-12.1 35.6-12.9 30.5-31.4 57.9-54.9 81.4-23.5 23.5-50.9 42-81.4 54.9-0.2 0.1-0.4 0.2-0.7 0.3-31.8 13.4-67-10.3-67-44.8V480c0-8.8-3.6-16.8-9.4-22.6-6-6-14.2-9.6-23.4-9.4-17.5 0.4-31.3 15.1-31.3 32.6v414.7c0 34.5-35.1 58.2-67 44.8-0.2-0.1-0.4-0.2-0.7-0.3-30.2-12.8-57.6-31.3-81.1-54.8-23.5-23.5-42-50.9-54.9-81.4-4.9-11.6-8.9-23.5-12.1-35.6-5.3-20.8-8-42.2-8-64V368h512v336z" p-id="9413" fill="#000000"></path></svg>
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.9 KiB |
@ -1,10 +1 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
<path style="fill:#000000" d="M445,386.7l-84.8-85.9c13.8-24.1,21-50.9,21-77.9c0-87.6-71.2-158.9-158.6-158.9C135.2,64,64,135.3,64,222.9
|
||||
c0,87.6,71.2,158.9,158.6,158.9c27.9,0,55.5-7.7,80.1-22.4l84.4,85.6c1.9,1.9,4.6,3.1,7.3,3.1c2.7,0,5.4-1.1,7.3-3.1l43.3-43.8
|
||||
C449,397.1,449,390.7,445,386.7z M222.6,125.9c53.4,0,96.8,43.5,96.8,97c0,53.5-43.4,97-96.8,97c-53.4,0-96.8-43.5-96.8-97
|
||||
C125.8,169.4,169.2,125.9,222.6,125.9z"/>
|
||||
</svg>
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1637134995193" class="icon" viewBox="0 0 1026 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4928" width="513" height="512" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M1009.371429 943.542857l-248.685714-256c0 0-7.314286-7.314286-14.628571-7.314286 51.2-65.828571 87.771429-160.914286 87.771429-256C826.514286 190.171429 643.657143 0 409.6 0 190.171429 0 0 190.171429 0 424.228571s190.171429 424.228571 416.914286 424.228571c102.4 0 204.8-43.885714 270.628571-102.4l7.314286 7.314286 248.685714 256c14.628571 14.628571 43.885714 14.628571 58.514286 0C1031.314286 987.428571 1031.314286 965.485714 1009.371429 943.542857L1009.371429 943.542857zM416.914286 782.628571c-197.485714 0-351.085714-160.914286-351.085714-358.4S219.428571 65.828571 416.914286 65.828571c197.485714 0 351.085714 160.914286 351.085714 358.4S614.4 782.628571 416.914286 782.628571L416.914286 782.628571z" p-id="4929" fill="#000000"></path></svg>
|
Before Width: | Height: | Size: 905 B After Width: | Height: | Size: 1.1 KiB |
1
src/data/core/icons/print_editor.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1637130589924" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12363" width="512" height="512" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M24.380952 265.886178 902.094615 265.886178C942.428977 265.886178 975.238095 298.903371 975.238095 339.485775L975.238095 779.447155 999.619049 754.99187 853.333333 754.99187 877.714285 779.447155 877.714285 681.626016 877.714285 657.170731 853.333333 657.170731 170.666667 657.170731 146.285714 657.170731 146.285714 681.626016 146.285714 779.447155 170.666667 754.99187 121.955642 754.99187C81.590725 754.99187 48.761905 721.971868 48.761905 681.392275L48.761905 241.430895 24.380952 265.886178 24.380952 265.886178ZM24.380952 216.97561 0 216.97561 0 241.430895 0 681.392275C0 748.954229 54.630068 803.902438 121.955642 803.902438L170.666667 803.902438 195.047619 803.902438 195.047619 779.447155 195.047619 681.626016 170.666667 706.081301 853.333333 706.081301 828.952382 681.626016 828.952382 779.447155 828.952382 803.902438 853.333333 803.902438 999.619049 803.902438 1024 803.902438 1024 779.447155 1024 339.485775C1024 271.92663 969.395277 216.97561 902.094615 216.97561L24.380952 216.97561 24.380952 216.97561ZM755.809523 999.544715 780.190477 975.089431 243.809523 975.089431 268.190477 999.544715 268.190477 776.325203C268.190477 762.818923 257.274752 751.869918 243.809523 751.869918 230.344297 751.869918 219.428572 762.818923 219.428572 776.325203L219.428572 999.544715C219.428572 1013.050995 230.344297 1024 243.809523 1024L780.190477 1024C793.655703 1024 804.571428 1013.050995 804.571428 999.544715L804.571428 776.325203C804.571428 762.818923 793.655703 751.869918 780.190477 751.869918 766.725248 751.869918 755.809523 762.818923 755.809523 776.325203L755.809523 999.544715ZM207.238095 437.073171 524.190477 437.073171 524.190477 388.162603 207.238095 388.162603 207.238095 437.073171 207.238095 437.073171ZM219.428572 241.430895 219.428572 45.788618 195.047619 70.243903 828.952382 70.243903 804.571428 45.788618 804.571428 241.430933 853.333333 241.430933 853.333333 45.788618 853.333333 21.333333 828.952382 21.333333 195.047619 21.333333 170.666667 21.333333 170.666667 45.788618 170.666667 241.430895 219.428572 241.430895 219.428572 241.430895Z" p-id="12364" fill="#000000"></path></svg>
|
After Width: | Height: | Size: 2.4 KiB |
@ -1,7 +1 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
<polygon fill="#000000" points="96,288 243,288 191.9,480 416,224 269,224 320,32 "/>
|
||||
</svg>
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1637135307796" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2546" width="512" height="512" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M353.877333 597.333333l-75.392 301.568c-7.978667 31.829333 31.402667 53.589333 54.144 29.909334L844.373333 395.52A32 32 0 0 0 821.333333 341.333333h-190.293333l71.338667-213.888A32 32 0 0 0 672 85.333333h-298.666667a32 32 0 0 0-30.762666 23.210667l-128 448A32 32 0 0 0 245.333333 597.333333h108.544z m202.453334-234.112a32 32 0 0 0 30.336 42.112h159.573333l-376.490667 392.362667 56.149334-224.597333a32 32 0 0 0-31.018667-39.765334h-107.093333l109.653333-384h230.144l-71.253333 213.888z" p-id="2547" fill="#000000"></path></svg>
|
Before Width: | Height: | Size: 568 B After Width: | Height: | Size: 906 B |
@ -1,10 +1 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
<path style="fill:#000000" d="M445,386.7l-84.8-85.9c13.8-24.1,21-50.9,21-77.9c0-87.6-71.2-158.9-158.6-158.9C135.2,64,64,135.3,64,222.9
|
||||
c0,87.6,71.2,158.9,158.6,158.9c27.9,0,55.5-7.7,80.1-22.4l84.4,85.6c1.9,1.9,4.6,3.1,7.3,3.1c2.7,0,5.4-1.1,7.3-3.1l43.3-43.8
|
||||
C449,397.1,449,390.7,445,386.7z M222.6,125.9c53.4,0,96.8,43.5,96.8,97c0,53.5-43.4,97-96.8,97c-53.4,0-96.8-43.5-96.8-97
|
||||
C125.8,169.4,169.2,125.9,222.6,125.9z"/>
|
||||
</svg>
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1637134995193" class="icon" viewBox="0 0 1026 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4928" width="513" height="512" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M1009.371429 943.542857l-248.685714-256c0 0-7.314286-7.314286-14.628571-7.314286 51.2-65.828571 87.771429-160.914286 87.771429-256C826.514286 190.171429 643.657143 0 409.6 0 190.171429 0 0 190.171429 0 424.228571s190.171429 424.228571 416.914286 424.228571c102.4 0 204.8-43.885714 270.628571-102.4l7.314286 7.314286 248.685714 256c14.628571 14.628571 43.885714 14.628571 58.514286 0C1031.314286 987.428571 1031.314286 965.485714 1009.371429 943.542857L1009.371429 943.542857zM416.914286 782.628571c-197.485714 0-351.085714-160.914286-351.085714-358.4S219.428571 65.828571 416.914286 65.828571c197.485714 0 351.085714 160.914286 351.085714 358.4S614.4 782.628571 416.914286 782.628571L416.914286 782.628571z" p-id="4929" fill="#000000"></path></svg>
|
Before Width: | Height: | Size: 905 B After Width: | Height: | Size: 1.1 KiB |
@ -1,10 +1 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
<path style="fill:#000000" d="M445,386.7l-84.8-85.9c13.8-24.1,21-50.9,21-77.9c0-87.6-71.2-158.9-158.6-158.9C135.2,64,64,135.3,64,222.9
|
||||
c0,87.6,71.2,158.9,158.6,158.9c27.9,0,55.5-7.7,80.1-22.4l84.4,85.6c1.9,1.9,4.6,3.1,7.3,3.1c2.7,0,5.4-1.1,7.3-3.1l43.3-43.8
|
||||
C449,397.1,449,390.7,445,386.7z M222.6,125.9c53.4,0,96.8,43.5,96.8,97c0,53.5-43.4,97-96.8,97c-53.4,0-96.8-43.5-96.8-97
|
||||
C125.8,169.4,169.2,125.9,222.6,125.9z"/>
|
||||
</svg>
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1637134995193" class="icon" viewBox="0 0 1026 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4928" width="513" height="512" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M1009.371429 943.542857l-248.685714-256c0 0-7.314286-7.314286-14.628571-7.314286 51.2-65.828571 87.771429-160.914286 87.771429-256C826.514286 190.171429 643.657143 0 409.6 0 190.171429 0 0 190.171429 0 424.228571s190.171429 424.228571 416.914286 424.228571c102.4 0 204.8-43.885714 270.628571-102.4l7.314286 7.314286 248.685714 256c14.628571 14.628571 43.885714 14.628571 58.514286 0C1031.314286 987.428571 1031.314286 965.485714 1009.371429 943.542857L1009.371429 943.542857zM416.914286 782.628571c-197.485714 0-351.085714-160.914286-351.085714-358.4S219.428571 65.828571 416.914286 65.828571c197.485714 0 351.085714 160.914286 351.085714 358.4S614.4 782.628571 416.914286 782.628571L416.914286 782.628571z" p-id="4929" fill="#000000"></path></svg>
|
Before Width: | Height: | Size: 905 B After Width: | Height: | Size: 1.1 KiB |
@ -1,18 +1 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
<path style="fill:#000000" d="M450,138.3l-47.7,48.5l-2.7,2.8l-1.6,1.7c-1.1,0.8-2.4,1.2-3.9,1.2c-1.6,0-3.1-0.6-4.3-1.6l-0.9-0.9l-2.7-2.7l-41.3-42.1
|
||||
l-2.2-2.2l-1.7-1.7c-1-1.5-1.6-3.4-1.6-5.3c0-1.7,0.6-3.2,1.6-4.4l0.7-0.8l2.6-2.6l47.9-48.7c-5.1-10.1-24.7-14.9-35.1-14.1
|
||||
c-17.1,1.3-34.7,7-52.8,25.5c-0.7,0.8-1.5,1.6-2.2,2.3C277.5,120,272.6,156,282.6,189c0.7,1.4,1.3,3.1,1.6,4.6
|
||||
c1.1,5.5-0.4,10.2-4,13.5l-37.9,36.4c-11.8-12-13.5-13.6-13.5-13.6c-2-2-6-3.3-9.5-1.2l-5.9,3.6c-22.7-23.1-32.3-32.4-35.4-43.6
|
||||
c-3.2-11.7-0.3-27.3,2.7-33.1c2.5-4.6,10.3-8.9,16.9-9.4l8.6,8.8c2,2,5.1,2,7.1,0l30.9-31.4c2-2,2-5.3,0-7.3l-49.9-50.7
|
||||
c-2-2-5.2-2-7.1,0l-30.9,31.4c-2,2-2,5.3,0,7.3l3.3,3.4c0,4.9-0.7,12.5-4.7,16.6c-6.2,6.3-18.5-1-26.5,4.7
|
||||
c-7.9,5.6-17.9,14.6-24.3,21c-6.3,6.4-30.5,31.8-47.8,74.6c-17.3,42.8-4,82.5,5.4,92.9c5,5.5,14.1,11.1,12.5,0.7
|
||||
c-1.6-10.5-4.2-46.9,7.7-61.8c11.9-14.9,27.6-27.1,48-28.1c19.6-1,30.9,5.7,56.3,31.5l-2.8,5.2c-1.8,3.4-0.8,7.7,1.2,9.7
|
||||
c0,0,1.5,1.6,12.1,12.4l-97.2,93.2c-16.2,14.3-15.3,40.5-0.3,56c15.2,15.2,41.1,16.3,55.2-0.2l91.4-98.6
|
||||
c49.1,52.3,93.3,107.4,93.3,107.4c2,2,5.2,2,7.1,0l49.9-50.7c2-2,2-5.2,0-7.3c0,0-55.2-45.7-107-96.2l35.5-38.3
|
||||
c3.3-3.7,7.9-5.2,13.3-4.1c1.5,0.3,3.1,1,4.5,1.7c32.4,10.2,67.8,5.2,94-19.8c0.8-0.7,1.5-1.5,2.3-2.3c18.1-18.4,23.7-36.4,25-53.8
|
||||
C464.7,163.5,460.2,143.8,450,138.3z"/>
|
||||
</svg>
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1637134516381" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="19374" width="512" height="512" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M993.31142 624.247465l-94.120714-73.598993c1.237983-11.349845 2.21797-24.617663 2.21797-38.655472s-1.023986-27.305627-2.21797-38.655471l94.206712-73.640994c17.493761-13.823811 22.313695-38.357476 11.135848-58.793196l-97.876662-169.341685c-10.709854-19.497733-34.729525-28.415612-56.617226-20.351721l-111.060481 44.58539c-21.24771-15.35979-43.561404-28.329613-66.645089-38.697471l-16.895769-117.800389C652.666077 16.895769 633.210343 0 610.212657 0h-196.263316c-22.997686 0-42.45342 16.895769-45.183383 38.869469l-16.937768 118.228383c-22.357694 10.111862-44.329394 22.869687-66.55909 38.741471l-111.358478-44.713389c-21.289709-8.319886-45.525378 0.469994-56.191231 20.009726l-98.004661 169.597682c-11.561842 19.541733-6.825907 44.885386 11.093849 59.049192l94.120713 73.556995c-1.49398 14.421803-2.21797 26.921632-2.21797 38.655471s0.72599 24.233669 2.133971 38.655472l-94.206712 73.684992C13.18682 638.157275 8.406885 662.68894 19.542733 683.12666l97.876662 169.341685c10.623855 19.455734 34.601527 28.329613 56.617226 20.351722l111.060481-44.585391c21.24771 15.317791 43.605404 28.287613 66.687088 38.697471l16.895769 117.75839c2.773962 22.399694 22.229696 39.295463 45.225382 39.295463h196.263317c22.997686 0 42.45342-16.895769 45.183382-38.869468l16.937769-118.184385c22.357694-10.111862 44.329394-22.869687 66.55909-38.74147l111.358477 44.713389c21.20571 8.233887 45.525378-0.469994 56.191232-20.009727l98.388655-170.195673c10.881851-19.965727 6.101917-44.499392-11.475843-58.451201z m-25.813648 37.545487l-101.63061 171.431656-122.15233-49.065329c-6.911906-2.773962-14.761798-1.705977-20.735716 2.729963-26.453638 19.797729-52.009289 34.687526-78.206931 45.397379a21.319709 21.319709 0 0 0-13.055822 16.725771l-21.545705 132.308192-199.123278-2.26197-18.645745-130.004222a21.409707 21.409707 0 0 0-13.055821-16.725771c-27.263627-11.177847-53.503269-26.409639-78.036933-45.269382a21.24571 21.24571 0 0 0-13.013823-4.437939c-2.687963 0-5.375927 0.469994-7.97789 1.535979L154.664885 831.558631l-97.876661-169.341685c-0.895988-1.663977-0.72599-3.583951 0.297996-4.39394l103.550584-80.936893a21.377708 21.377708 0 0 0 8.02189-19.455734c-2.261969-17.877756-3.285955-32.341558-3.285955-45.439379s1.065985-27.519624 3.285955-45.439379a21.337708 21.337708 0 0 0-8.02189-19.455734l-104.058578-84.860839 101.630611-171.431657 122.15233 49.06533c6.953905 2.815962 14.761798 1.749976 20.777716-2.729963 26.409639-19.839729 52.009289-34.687526 78.206931-45.397379a21.405707 21.405707 0 0 0 13.013822-16.725772l21.589705-132.35019 199.165277 2.303968 18.601745 130.046222a21.409707 21.409707 0 0 0 13.055822 16.725772c27.221628 11.135848 53.461269 26.36764 78.036933 45.269381 6.015918 4.607937 13.90981 5.717922 20.949713 2.857961l125.652283-47.401352 97.876661 169.341684c0.895988 1.663977 0.72599 3.541952-0.297996 4.351941l-103.550584 80.936893a21.337708 21.337708 0 0 0-8.02189 19.455734c1.621978 12.969823 3.285955 28.54361 3.285955 45.439379 0 16.937768-1.663977 32.469556-3.285955 45.439379a21.377708 21.377708 0 0 0 8.02189 19.455734l103.422586 80.894894c1.105985 0.895988 1.319982 2.815962 0.635991 4.009945z" p-id="19375" fill="#000000"></path><path d="M512.037999 298.661917c-117.630392 0-213.331083 95.700692-213.331083 213.331083s95.700692 213.331083 213.331083 213.331083S725.369083 629.623392 725.369083 511.993s-95.700692-213.331083-213.331084-213.331083z m0 383.99475c-94.120713 0-170.663667-76.542954-170.663666-170.663667s76.542954-170.663667 170.663666-170.663667 170.663667 76.542954 170.663667 170.663667-76.542954 170.663667-170.663667 170.663667z" p-id="19376" fill="#000000"></path></svg>
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 3.9 KiB |
@ -1,18 +1 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
<path style="fill:#000000" d="M450,138.3l-47.7,48.5l-2.7,2.8l-1.6,1.7c-1.1,0.8-2.4,1.2-3.9,1.2c-1.6,0-3.1-0.6-4.3-1.6l-0.9-0.9l-2.7-2.7l-41.3-42.1
|
||||
l-2.2-2.2l-1.7-1.7c-1-1.5-1.6-3.4-1.6-5.3c0-1.7,0.6-3.2,1.6-4.4l0.7-0.8l2.6-2.6l47.9-48.7c-5.1-10.1-24.7-14.9-35.1-14.1
|
||||
c-17.1,1.3-34.7,7-52.8,25.5c-0.7,0.8-1.5,1.6-2.2,2.3C277.5,120,272.6,156,282.6,189c0.7,1.4,1.3,3.1,1.6,4.6
|
||||
c1.1,5.5-0.4,10.2-4,13.5l-37.9,36.4c-11.8-12-13.5-13.6-13.5-13.6c-2-2-6-3.3-9.5-1.2l-5.9,3.6c-22.7-23.1-32.3-32.4-35.4-43.6
|
||||
c-3.2-11.7-0.3-27.3,2.7-33.1c2.5-4.6,10.3-8.9,16.9-9.4l8.6,8.8c2,2,5.1,2,7.1,0l30.9-31.4c2-2,2-5.3,0-7.3l-49.9-50.7
|
||||
c-2-2-5.2-2-7.1,0l-30.9,31.4c-2,2-2,5.3,0,7.3l3.3,3.4c0,4.9-0.7,12.5-4.7,16.6c-6.2,6.3-18.5-1-26.5,4.7
|
||||
c-7.9,5.6-17.9,14.6-24.3,21c-6.3,6.4-30.5,31.8-47.8,74.6c-17.3,42.8-4,82.5,5.4,92.9c5,5.5,14.1,11.1,12.5,0.7
|
||||
c-1.6-10.5-4.2-46.9,7.7-61.8c11.9-14.9,27.6-27.1,48-28.1c19.6-1,30.9,5.7,56.3,31.5l-2.8,5.2c-1.8,3.4-0.8,7.7,1.2,9.7
|
||||
c0,0,1.5,1.6,12.1,12.4l-97.2,93.2c-16.2,14.3-15.3,40.5-0.3,56c15.2,15.2,41.1,16.3,55.2-0.2l91.4-98.6
|
||||
c49.1,52.3,93.3,107.4,93.3,107.4c2,2,5.2,2,7.1,0l49.9-50.7c2-2,2-5.2,0-7.3c0,0-55.2-45.7-107-96.2l35.5-38.3
|
||||
c3.3-3.7,7.9-5.2,13.3-4.1c1.5,0.3,3.1,1,4.5,1.7c32.4,10.2,67.8,5.2,94-19.8c0.8-0.7,1.5-1.5,2.3-2.3c18.1-18.4,23.7-36.4,25-53.8
|
||||
C464.7,163.5,460.2,143.8,450,138.3z"/>
|
||||
</svg>
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1637134516381" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="19374" width="512" height="512" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M993.31142 624.247465l-94.120714-73.598993c1.237983-11.349845 2.21797-24.617663 2.21797-38.655472s-1.023986-27.305627-2.21797-38.655471l94.206712-73.640994c17.493761-13.823811 22.313695-38.357476 11.135848-58.793196l-97.876662-169.341685c-10.709854-19.497733-34.729525-28.415612-56.617226-20.351721l-111.060481 44.58539c-21.24771-15.35979-43.561404-28.329613-66.645089-38.697471l-16.895769-117.800389C652.666077 16.895769 633.210343 0 610.212657 0h-196.263316c-22.997686 0-42.45342 16.895769-45.183383 38.869469l-16.937768 118.228383c-22.357694 10.111862-44.329394 22.869687-66.55909 38.741471l-111.358478-44.713389c-21.289709-8.319886-45.525378 0.469994-56.191231 20.009726l-98.004661 169.597682c-11.561842 19.541733-6.825907 44.885386 11.093849 59.049192l94.120713 73.556995c-1.49398 14.421803-2.21797 26.921632-2.21797 38.655471s0.72599 24.233669 2.133971 38.655472l-94.206712 73.684992C13.18682 638.157275 8.406885 662.68894 19.542733 683.12666l97.876662 169.341685c10.623855 19.455734 34.601527 28.329613 56.617226 20.351722l111.060481-44.585391c21.24771 15.317791 43.605404 28.287613 66.687088 38.697471l16.895769 117.75839c2.773962 22.399694 22.229696 39.295463 45.225382 39.295463h196.263317c22.997686 0 42.45342-16.895769 45.183382-38.869468l16.937769-118.184385c22.357694-10.111862 44.329394-22.869687 66.55909-38.74147l111.358477 44.713389c21.20571 8.233887 45.525378-0.469994 56.191232-20.009727l98.388655-170.195673c10.881851-19.965727 6.101917-44.499392-11.475843-58.451201z m-25.813648 37.545487l-101.63061 171.431656-122.15233-49.065329c-6.911906-2.773962-14.761798-1.705977-20.735716 2.729963-26.453638 19.797729-52.009289 34.687526-78.206931 45.397379a21.319709 21.319709 0 0 0-13.055822 16.725771l-21.545705 132.308192-199.123278-2.26197-18.645745-130.004222a21.409707 21.409707 0 0 0-13.055821-16.725771c-27.263627-11.177847-53.503269-26.409639-78.036933-45.269382a21.24571 21.24571 0 0 0-13.013823-4.437939c-2.687963 0-5.375927 0.469994-7.97789 1.535979L154.664885 831.558631l-97.876661-169.341685c-0.895988-1.663977-0.72599-3.583951 0.297996-4.39394l103.550584-80.936893a21.377708 21.377708 0 0 0 8.02189-19.455734c-2.261969-17.877756-3.285955-32.341558-3.285955-45.439379s1.065985-27.519624 3.285955-45.439379a21.337708 21.337708 0 0 0-8.02189-19.455734l-104.058578-84.860839 101.630611-171.431657 122.15233 49.06533c6.953905 2.815962 14.761798 1.749976 20.777716-2.729963 26.409639-19.839729 52.009289-34.687526 78.206931-45.397379a21.405707 21.405707 0 0 0 13.013822-16.725772l21.589705-132.35019 199.165277 2.303968 18.601745 130.046222a21.409707 21.409707 0 0 0 13.055822 16.725772c27.221628 11.135848 53.461269 26.36764 78.036933 45.269381 6.015918 4.607937 13.90981 5.717922 20.949713 2.857961l125.652283-47.401352 97.876661 169.341684c0.895988 1.663977 0.72599 3.541952-0.297996 4.351941l-103.550584 80.936893a21.337708 21.337708 0 0 0-8.02189 19.455734c1.621978 12.969823 3.285955 28.54361 3.285955 45.439379 0 16.937768-1.663977 32.469556-3.285955 45.439379a21.377708 21.377708 0 0 0 8.02189 19.455734l103.422586 80.894894c1.105985 0.895988 1.319982 2.815962 0.635991 4.009945z" p-id="19375" fill="#000000"></path><path d="M512.037999 298.661917c-117.630392 0-213.331083 95.700692-213.331083 213.331083s95.700692 213.331083 213.331083 213.331083S725.369083 629.623392 725.369083 511.993s-95.700692-213.331083-213.331084-213.331083z m0 383.99475c-94.120713 0-170.663667-76.542954-170.663666-170.663667s76.542954-170.663667 170.663666-170.663667 170.663667 76.542954 170.663667 170.663667-76.542954 170.663667-170.663667 170.663667z" p-id="19376" fill="#000000"></path></svg>
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 3.9 KiB |
@ -1 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1629419488608" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5513" width="512" height="512" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M285.538462 118.153846h-216.615385C53.169231 118.153846 39.384615 131.938462 39.384615 147.692308v256c0 15.753846 13.784615 29.538462 29.538462 29.538461h216.615385c15.753846 0 29.538462-13.784615 29.538461-29.538461v-256c0-15.753846-13.784615-29.538462-29.538461-29.538462z m669.538461 0h-531.692308c-15.753846 0-29.538462 13.784615-29.538461 29.538462v59.076923c0 15.753846 13.784615 29.538462 29.538461 29.538461h531.692308c15.753846 0 29.538462-13.784615 29.538462-29.538461v-59.076923c0-15.753846-13.784615-29.538462-29.538462-29.538462z m-531.692308 315.076923h334.769231c15.753846 0 29.538462-13.784615 29.538462-29.538461v-59.076923c0-15.753846-13.784615-29.538462-29.538462-29.538462h-334.769231c-15.753846 0-29.538462 13.784615-29.538461 29.538462v59.076923c0 15.753846 13.784615 29.538462 29.538461 29.538461z m-137.846153 157.538462h-216.615385c-15.753846 0-29.538462 13.784615-29.538462 29.538461v256c0 15.753846 13.784615 29.538462 29.538462 29.538462h216.615385c15.753846 0 29.538462-13.784615 29.538461-29.538462v-256c0-15.753846-13.784615-29.538462-29.538461-29.538461z m669.538461 0h-531.692308c-15.753846 0-29.538462 13.784615-29.538461 29.538461v59.076923c0 15.753846 13.784615 29.538462 29.538461 29.538462h531.692308c15.753846 0 29.538462-13.784615 29.538462-29.538462v-59.076923c0-15.753846-13.784615-29.538462-29.538462-29.538461z m-196.923077 196.923077h-334.769231c-15.753846 0-29.538462 13.784615-29.538461 29.538461v59.076923c0 15.753846 13.784615 29.538462 29.538461 29.538462h334.769231c15.753846 0 29.538462-13.784615 29.538462-29.538462v-59.076923c0-15.753846-13.784615-29.538462-29.538462-29.538461z" p-id="5514" fill="#000000"></path></svg>
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1637134861186" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2726" width="512" height="512" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M512 64h64v192h-64V64z m0 576h64v192h-64v-192zM160 480v-64h192v64H160z m576 0v-64h192v64h-192zM250.016 199.008l44.992-44.992 136 136-44.992 44.992z m406.976 407.008l44.992-44.992 136 136-44.992 44.992zM114.016 923.008l-44.992-44.992 316.992-316.992 44.992 44.992z m588-588l-44.992-44.992 136-136 44.992 44.992z" p-id="2727" fill="#000000"></path></svg>
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 729 B |
@ -1,4 +1 @@
|
||||
<svg t="1600732290374" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11728" width="512" height="512">
|
||||
<path d="M725.333333 725.333333V128a85.333333 85.333333 0 0 0-85.333333-85.333333H394.24a128 128 0 0 0-90.453333 37.546666L122.88 261.12A128 128 0 0 0 85.333333 351.573333V725.333333a85.333333 85.333333 0 0 0 85.333334 85.333334h469.333333a85.333333 85.333333 0 0 0 85.333333-85.333334zM170.666667 384h213.333333a42.666667 42.666667 0 0 0 42.666667-42.666667V128h213.333333v597.333333H170.666667z m640-170.666667v597.333334a85.333333 85.333333 0 0 1-85.333334 85.333333H256a85.333333 85.333333 0 0 0 85.333333 85.333333h384a170.666667 170.666667 0 0 0 170.666667-170.666666V298.666667a85.333333 85.333333 0 0 0-85.333333-85.333334z" p-id="11729" fill="#000000">
|
||||
</path>
|
||||
</svg>
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1637142310647" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11342" width="512" height="512" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M256 256V149.333333c0-58.88 47.829333-106.666667 106.666667-106.666666h512c58.88 0 106.666667 47.829333 106.666666 106.666666v512c0 58.88-47.829333 106.666667-106.666666 106.666667h-106.666667v106.666667c0 58.88-47.829333 106.666667-106.666667 106.666666H149.333333c-58.88 0-106.666667-47.829333-106.666666-106.666666V362.666667c0-58.88 47.829333-106.666667 106.666666-106.666667h106.666667z m0 85.333333H149.333333c-11.733333 0-21.333333 9.6-21.333333 21.333334v512c0 11.733333 9.6 21.333333 21.333333 21.333333h512c11.733333 0 21.333333-9.6 21.333334-21.333333v-106.666667H362.666667c-58.88 0-106.666667-47.829333-106.666667-106.666667V341.333333z m85.333333-192v512c0 11.733333 9.6 21.333333 21.333334 21.333334h512c11.733333 0 21.333333-9.6 21.333333-21.333334V149.333333c0-11.733333-9.6-21.333333-21.333333-21.333333H362.666667c-11.733333 0-21.333333 9.6-21.333334 21.333333z" p-id="11343" fill="#000000"></path></svg>
|
Before Width: | Height: | Size: 825 B After Width: | Height: | Size: 1.3 KiB |
@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
<g>
|
||||
<path fill="#000000" d="M345.1,77.1C317.6,56.2,286.6,49,247.3,49c-29.8,0-55.3,6.1-75.5,19.7C142,89,128,123.1,128,177h76.8
|
||||
c0-14.4-1.4-29.9,7-43.2c8.4-13.3,20.1-23.5,40.2-23.5c20.4,0,30.9,5.9,40.8,18.1c8.4,10.4,11.6,22.8,11.6,36
|
||||
c0,11.4-5.8,21.9-12.7,31.4c-3.8,5.6-8.8,10.6-15.1,15.4c0,0-41.5,24.7-56.1,48.1c-10.9,17.4-14.8,39.2-15.7,65.3
|
||||
c-0.1,1.9,0.6,5.8,7.2,5.8c6.5,0,56,0,61.8,0c5.8,0,7-4.4,7.1-6.2c0.4-9.5,1.6-24.1,3.3-29.6c3.3-10.4,9.7-19.5,19.7-27.3
|
||||
l20.7-14.3c18.7-14.6,33.6-26.5,40.2-35.9c11.3-15.4,19.2-34.4,19.2-56.9C384,123.5,370.5,96.4,345.1,77.1z M242,370.2
|
||||
c-25.9-0.8-47.3,17.2-48.2,45.3c-0.8,28.2,19.5,46.7,45.5,47.5c27,0.8,47.9-16.6,48.7-44.7C288.8,390.2,269,371,242,370.2z"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.2 KiB |
@ -109,7 +109,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/dialogs/settings/appearancepage.cpp" line="70"/>
|
||||
<source>Keep dock widgets when expanding content area:</source>
|
||||
<source>Dock widgets kept when expanding content area:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
@ -690,9 +690,8 @@
|
||||
<translation>ファイルベースのないバッファ(%1)をスキップしました。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../export/exporter.cpp" line="120"/>
|
||||
<source>Failed to create output folder %1.</source>
|
||||
<translation>出力フォルダ%1の作成に失敗しました。</translation>
|
||||
<translation type="vanished">出力フォルダ%1の作成に失敗しました。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../export/exporter.cpp" line="64"/>
|
||||
@ -701,6 +700,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../export/exporter.cpp" line="38"/>
|
||||
<location filename="../../../export/exporter.cpp" line="120"/>
|
||||
<source>Failed to create output folder (%1).</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@ -1503,8 +1503,12 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/dialogs/importnotebookdialog.cpp" line="103"/>
|
||||
<source>Not a valid (%1) root folder (%2).</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Not a valid %1 root folder (%2).</source>
|
||||
<translation>有効な%1ルートフォルダ(%2)ではありません。</translation>
|
||||
<translation type="vanished">有効な%1ルートフォルダ(%2)ではありません。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/dialogs/importnotebookdialog.cpp" line="127"/>
|
||||
@ -1700,7 +1704,7 @@ Remove them from the configuration?</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/systemtrayhelper.cpp" line="44"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="414"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="565"/>
|
||||
<source>Quit</source>
|
||||
<translation>終了</translation>
|
||||
</message>
|
||||
@ -1803,49 +1807,59 @@ Remove them from the configuration?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="503"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="577"/>
|
||||
<source>Menu</source>
|
||||
<translation type="unfinished">メニュー</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="624"/>
|
||||
<source>Home Page</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="645"/>
|
||||
<source>Contributors</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="529"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="305"/>
|
||||
<source>Configuration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="531"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="307"/>
|
||||
<source>Edit User Configuration File</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="556"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="332"/>
|
||||
<source>Edit Markdown User Styles</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="569"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="345"/>
|
||||
<source>Edit the user styles of Markdown editor read mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="643"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="419"/>
|
||||
<source>Quick Access Not Set</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="289"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="375"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="385"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="526"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="536"/>
|
||||
<source>Settings</source>
|
||||
<translation>設定</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="305"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="456"/>
|
||||
<source>Expand Content Area</source>
|
||||
<translation>コンテンツ領域の拡大</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="327"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="478"/>
|
||||
<source>Press %1 To Exit Full Screen</source>
|
||||
<translation>%1 を押して全画面表示を終了する</translation>
|
||||
</message>
|
||||
@ -1860,88 +1874,81 @@ Remove them from the configuration?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="335"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="486"/>
|
||||
<source>Stay on Top</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="347"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="498"/>
|
||||
<source>Windows</source>
|
||||
<translation>ウインドウ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="540"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="316"/>
|
||||
<source>Open User Configuration Folder</source>
|
||||
<translation>ユーザー設定フォルダを開く</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="547"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="323"/>
|
||||
<source>Open Default Configuration Folder</source>
|
||||
<translation>既定の設定フォルダを開く</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="400"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="551"/>
|
||||
<source>Reset Main Window Layout</source>
|
||||
<translation>メインウィンドウのレイアウトをリセット</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="408"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="559"/>
|
||||
<source>Restart</source>
|
||||
<translation>再起動</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="426"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="622"/>
|
||||
<source>Help</source>
|
||||
<translation>ヘルプ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="436"/>
|
||||
<source>What's This?</source>
|
||||
<translation>これは何ですか?</translation>
|
||||
<translation type="vanished">これは何ですか?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="441"/>
|
||||
<source>Enter WhatsThis mode and click somewhere to show help information</source>
|
||||
<translation>[これは何]モードに入り、ヘルプ情報を表示する場所をクリックします</translation>
|
||||
<translation type="vanished">[これは何]モードに入り、ヘルプ情報を表示する場所をクリックします</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="445"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="600"/>
|
||||
<source>Shortcuts Help</source>
|
||||
<translation>ショートカットヘルプ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="456"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="611"/>
|
||||
<source>Markdown Guide</source>
|
||||
<translation>Markdown ガイド</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="469"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="586"/>
|
||||
<source>View Logs</source>
|
||||
<translation>ログの表示</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="482"/>
|
||||
<source>%1 Home Page</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="488"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="630"/>
|
||||
<source>Feedback and Discussions</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="496"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="638"/>
|
||||
<source>Check for Updates</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="509"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="515"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="651"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="657"/>
|
||||
<source>About</source>
|
||||
<translation>バージョン情報</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="512"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="654"/>
|
||||
<source><h3>%1</h3>
|
||||
<span>%2</span>
|
||||
</source>
|
||||
@ -1950,7 +1957,7 @@ Remove them from the configuration?</source>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="518"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="660"/>
|
||||
<source>About Qt</source>
|
||||
<translation>Qtについて</translation>
|
||||
</message>
|
||||
@ -2520,66 +2527,66 @@ Remove them from the configuration?</source>
|
||||
<context>
|
||||
<name>vnotex::MarkdownViewWindow</name>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="445"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="447"/>
|
||||
<source>Markdown Viewer</source>
|
||||
<translation>Markdownビューア</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="793"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="825"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="795"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="827"/>
|
||||
<source>Clear Obsolete Images</source>
|
||||
<translation>古いイメージをクリア</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="794"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="796"/>
|
||||
<source>These images seems to be not in use anymore. Please confirm the deletion of them.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="795"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="797"/>
|
||||
<source>Deleted local images could be found in the recycle bin of notebook if it is from a bundle notebook.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="819"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="821"/>
|
||||
<source>Clearing obsolete images...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="820"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="822"/>
|
||||
<source>Abort</source>
|
||||
<translation type="unfinished">中止</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="834"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="836"/>
|
||||
<source>Clear image (%1)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="846"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="848"/>
|
||||
<source>Cleared %n obsolete images</source>
|
||||
<translation type="unfinished">
|
||||
<numerusform></numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1259"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1261"/>
|
||||
<source>View Mode Not Supported In Read Mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1277"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1279"/>
|
||||
<source>Edit Only</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1288"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1290"/>
|
||||
<source>Edit with Preview</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1001"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1010"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1003"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1012"/>
|
||||
<source>Replace is not supported in read mode</source>
|
||||
<translation>置換は読み取りモードではサポートされていません</translation>
|
||||
</message>
|
||||
@ -4732,9 +4739,13 @@ Description: %3</source>
|
||||
<translation>ウインドウリスト</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/viewsplit.cpp" line="151"/>
|
||||
<source>Workspaces and Splits</source>
|
||||
<translation>ワークスペースと分割</translation>
|
||||
<translation type="vanished">ワークスペースと分割</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/viewsplit.cpp" line="151"/>
|
||||
<source>Menu</source>
|
||||
<translation type="unfinished">メニュー</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/viewsplit.cpp" line="413"/>
|
||||
|
@ -109,8 +109,12 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/dialogs/settings/appearancepage.cpp" line="70"/>
|
||||
<source>Dock widgets kept when expanding content area:</source>
|
||||
<translation>扩展内容区时保留的停靠部件:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keep dock widgets when expanding content area:</source>
|
||||
<translation>扩展内容区时保留停靠部件:</translation>
|
||||
<translation type="vanished">扩展内容区时保留停靠部件:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/dialogs/settings/appearancepage.cpp" line="125"/>
|
||||
@ -695,20 +699,16 @@
|
||||
<translation>跳过非基于文件的缓冲区(%1)。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../export/exporter.cpp" line="38"/>
|
||||
<location filename="../../../export/exporter.cpp" line="120"/>
|
||||
<source>Failed to create output folder %1.</source>
|
||||
<translation>无法创建输出文件夹 %1。</translation>
|
||||
<source>Failed to create output folder (%1).</source>
|
||||
<translation>无法创建输出文件夹(%1)。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../export/exporter.cpp" line="64"/>
|
||||
<source>Format %1 is not supported to export as Markdown.</source>
|
||||
<translation>格式%1不支持导出为Markdown。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../export/exporter.cpp" line="38"/>
|
||||
<source>Failed to create output folder (%1).</source>
|
||||
<translation>无法创建输出文件夹 (%1)。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../export/exporter.cpp" line="73"/>
|
||||
<location filename="../../../export/exporter.cpp" line="139"/>
|
||||
@ -889,7 +889,7 @@
|
||||
<message>
|
||||
<location filename="../../../widgets/findandreplacewidget.cpp" line="109"/>
|
||||
<source>\1, \2 for back reference in regular expression</source>
|
||||
<translation>在正则表达式中使用 \1, \2 来后向引用</translation>
|
||||
<translation>在正则表达式中使用\1和\2来后向引用</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/findandreplacewidget.cpp" line="112"/>
|
||||
@ -1510,8 +1510,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/dialogs/importnotebookdialog.cpp" line="103"/>
|
||||
<source>Not a valid %1 root folder (%2).</source>
|
||||
<translation>无效的%1根文件夹 (%2)。</translation>
|
||||
<source>Not a valid (%1) root folder (%2).</source>
|
||||
<translation>无效的(%1)根文件夹(%2)。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/dialogs/importnotebookdialog.cpp" line="127"/>
|
||||
@ -1673,7 +1673,7 @@ Remove them from the configuration?</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/systemtrayhelper.cpp" line="44"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="414"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="565"/>
|
||||
<source>Quit</source>
|
||||
<translation>退出</translation>
|
||||
</message>
|
||||
@ -1776,49 +1776,54 @@ Remove them from the configuration?</source>
|
||||
<translation>可以在设置对话框中管理快速访问。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="503"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="577"/>
|
||||
<source>Menu</source>
|
||||
<translation>菜单</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="645"/>
|
||||
<source>Contributors</source>
|
||||
<translation>贡献者</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="529"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="305"/>
|
||||
<source>Configuration</source>
|
||||
<translation>配置</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="531"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="307"/>
|
||||
<source>Edit User Configuration File</source>
|
||||
<translation>编辑用户配置文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="556"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="332"/>
|
||||
<source>Edit Markdown User Styles</source>
|
||||
<translation>编辑Markdown用户样式</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="569"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="345"/>
|
||||
<source>Edit the user styles of Markdown editor read mode</source>
|
||||
<translation>编辑Markdown编辑器阅读模式的用户样式</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="643"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="419"/>
|
||||
<source>Quick Access Not Set</source>
|
||||
<translation>快速访问未设置</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="289"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="375"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="385"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="526"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="536"/>
|
||||
<source>Settings</source>
|
||||
<translation>设置</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="305"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="456"/>
|
||||
<source>Expand Content Area</source>
|
||||
<translation>扩展内容区</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="327"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="478"/>
|
||||
<source>Press %1 To Exit Full Screen</source>
|
||||
<translation>按%1退出全屏</translation>
|
||||
</message>
|
||||
@ -1833,88 +1838,86 @@ Remove them from the configuration?</source>
|
||||
<translation>导入</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="335"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="486"/>
|
||||
<source>Stay on Top</source>
|
||||
<translation>置顶</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="347"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="498"/>
|
||||
<source>Windows</source>
|
||||
<translation>窗口</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="540"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="316"/>
|
||||
<source>Open User Configuration Folder</source>
|
||||
<translation>打开用户配置文件夹</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="547"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="323"/>
|
||||
<source>Open Default Configuration Folder</source>
|
||||
<translation>打开默认配置文件夹</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="400"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="551"/>
|
||||
<source>Reset Main Window Layout</source>
|
||||
<translation>重置主窗口布局</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="408"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="559"/>
|
||||
<source>Restart</source>
|
||||
<translation>重启</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="426"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="622"/>
|
||||
<source>Help</source>
|
||||
<translation>帮助</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="436"/>
|
||||
<source>What's This?</source>
|
||||
<translation>这是什么?</translation>
|
||||
<translation type="vanished">这是什么?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="441"/>
|
||||
<source>Enter WhatsThis mode and click somewhere to show help information</source>
|
||||
<translation>进入 WhatsThis 模式,点击某处以显示帮助信息</translation>
|
||||
<translation type="vanished">进入WhatsThis模式,点击某处以显示帮助信息</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="445"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="600"/>
|
||||
<source>Shortcuts Help</source>
|
||||
<translation>快捷键帮助</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="456"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="611"/>
|
||||
<source>Markdown Guide</source>
|
||||
<translation>Markdown指南</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="469"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="586"/>
|
||||
<source>View Logs</source>
|
||||
<translation>查看日志</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="482"/>
|
||||
<source>%1 Home Page</source>
|
||||
<translation>%1 主页</translation>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="624"/>
|
||||
<source>Home Page</source>
|
||||
<translation>主页</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="488"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="630"/>
|
||||
<source>Feedback and Discussions</source>
|
||||
<translation>反馈和讨论</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="496"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="638"/>
|
||||
<source>Check for Updates</source>
|
||||
<translation>检查更新</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="509"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="515"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="651"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="657"/>
|
||||
<source>About</source>
|
||||
<translation>关于</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="512"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="654"/>
|
||||
<source><h3>%1</h3>
|
||||
<span>%2</span>
|
||||
</source>
|
||||
@ -1923,7 +1926,7 @@ Remove them from the configuration?</source>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="518"/>
|
||||
<location filename="../../../widgets/toolbarhelper.cpp" line="660"/>
|
||||
<source>About Qt</source>
|
||||
<translation>关于Qt</translation>
|
||||
</message>
|
||||
@ -2528,66 +2531,66 @@ Remove them from the configuration?</source>
|
||||
<context>
|
||||
<name>vnotex::MarkdownViewWindow</name>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="445"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="447"/>
|
||||
<source>Markdown Viewer</source>
|
||||
<translation>Markdown查看器</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="793"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="825"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="795"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="827"/>
|
||||
<source>Clear Obsolete Images</source>
|
||||
<translation>清空无用图片</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="794"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="796"/>
|
||||
<source>These images seems to be not in use anymore. Please confirm the deletion of them.</source>
|
||||
<translation>这些图片似乎已经不再使用。请确认并删除。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="795"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="797"/>
|
||||
<source>Deleted local images could be found in the recycle bin of notebook if it is from a bundle notebook.</source>
|
||||
<translation>如果这是一个自包含笔记本,已删除的本地图片可以在笔记本回收站中找回。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="819"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="821"/>
|
||||
<source>Clearing obsolete images...</source>
|
||||
<translation>正在清空无用图片...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="820"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="822"/>
|
||||
<source>Abort</source>
|
||||
<translation>终止</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="834"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="836"/>
|
||||
<source>Clear image (%1)</source>
|
||||
<translation>清空图片(%1)</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="846"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="848"/>
|
||||
<source>Cleared %n obsolete images</source>
|
||||
<translation>
|
||||
<numerusform>清空 %n 无用图片</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1259"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1261"/>
|
||||
<source>View Mode Not Supported In Read Mode</source>
|
||||
<translation>阅读模式不支持查看模式</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1277"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1279"/>
|
||||
<source>Edit Only</source>
|
||||
<translation>纯编辑</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1288"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1290"/>
|
||||
<source>Edit with Preview</source>
|
||||
<translation>预览辅助的编辑</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1001"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1010"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1003"/>
|
||||
<location filename="../../../widgets/markdownviewwindow.cpp" line="1012"/>
|
||||
<source>Replace is not supported in read mode</source>
|
||||
<translation>阅读模式不支持替换</translation>
|
||||
</message>
|
||||
@ -4742,9 +4745,13 @@ Description: %3</source>
|
||||
<translation>窗口列表</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/viewsplit.cpp" line="151"/>
|
||||
<source>Workspaces and Splits</source>
|
||||
<translation>工作空间和拆分</translation>
|
||||
<translation type="vanished">工作空间和拆分</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/viewsplit.cpp" line="151"/>
|
||||
<source>Menu</source>
|
||||
<translation>菜单</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../widgets/viewsplit.cpp" line="413"/>
|
||||
|
@ -61,7 +61,7 @@
|
||||
"MoveOneSplitRight" : "Ctrl+G, Shift+L",
|
||||
"OpenLastClosedFile" : "Ctrl+Shift+T"
|
||||
},
|
||||
"toolbar_icon_size" : 16,
|
||||
"toolbar_icon_size" : 18,
|
||||
"docks_tabbar_icon_size" : 24,
|
||||
"note_management" : {
|
||||
"external_node" : {
|
||||
@ -120,7 +120,8 @@
|
||||
"FindPrevious" : "Shift+F3",
|
||||
"ApplySnippet" : "Ctrl+G, I",
|
||||
"Tag" : "Ctrl+G, B",
|
||||
"Debug" : "F12"
|
||||
"Debug" : "F12",
|
||||
"Print" : ""
|
||||
},
|
||||
"spell_check_auto_detect_language" : false,
|
||||
"spell_check_default_dictionary" : "en_US",
|
||||
|
@ -2,10 +2,10 @@
|
||||
1. All the keys without special notice are **case insensitive**;
|
||||
2. On macOS, `Ctrl` corresponds to `Command` except in Vi mode;
|
||||
3. The key sequence `Ctrl+G, I` means that first press both `Ctrl` and `G` simultaneously, release them, then press `I` and release;
|
||||
4. For a **complete latest shortcuts list**, please view the `vnotex.json` configuration file.
|
||||
4. For a **complete latest shortcuts list** or modifying default shortcuts, please view the `vnotex.json` configuration file.
|
||||
|
||||
## General
|
||||
- `Ctrl+G E`
|
||||
- `Ctrl+G, E`
|
||||
Toggle expanding the content area.
|
||||
- `Ctrl+Alt+N`
|
||||
Create a note in current folder.
|
||||
@ -23,11 +23,11 @@ Recover last closed file.
|
||||
Open Flash Page.
|
||||
- `Ctrl+Alt+I`
|
||||
Open Quick Access.
|
||||
- `Ctrl+G X`
|
||||
- `Ctrl+G, X`
|
||||
Close current tab.
|
||||
- `Ctrl+G D`
|
||||
- `Ctrl+G, D`
|
||||
Locate to the folder of current note.
|
||||
- `Ctrl+G O`
|
||||
- `Ctrl+G, O`
|
||||
Open the Outline popup.
|
||||
|
||||
## Text Editor
|
||||
@ -89,7 +89,7 @@ Shares the same shortcuts with Text Editor.
|
||||
|
||||
- `Ctrl+T`
|
||||
Edit current note or save changes and exit edit mode.
|
||||
- `Ctrl+G Q`
|
||||
- `Ctrl+G, Q`
|
||||
Discard current changes and exit edit mode.
|
||||
|
||||
#### Text Editing
|
||||
@ -117,4 +117,4 @@ Increase or decrease the indentation. If any text is selected, the indentation w
|
||||
Insert two spaces followed by a new line, namely a soft linebreak in Markdown.
|
||||
|
||||
## Navigation Mode
|
||||
`Ctrl+G W` will turn VNote into **Navigation Mode**. In this mode, VNote will display at most two characters on some major widgets, and then pressing corresponding characters will jump to that widget.
|
||||
`Ctrl+G, W` will turn VNote into **Navigation Mode**. In this mode, VNote will display at most two characters on some major widgets, and then pressing corresponding characters will jump to that widget.
|
||||
|
@ -22,9 +22,9 @@ VNote 支持通过在节点浏览器上下文菜单中的 `打开方式` 来调
|
||||
|
||||
一个外部程序可以包含3个属性:
|
||||
|
||||
1. `name`: 该程序在 VNote 中的名字;
|
||||
2. `command`: 当使用该外部程序打开笔记时执行的命令;
|
||||
1. `name`:该程序在VNote中的名字;
|
||||
2. `command`:当使用该外部程序打开笔记时执行的命令;
|
||||
1. 使用`%1`占位符,会被替换为真实的文件路径(自动加上双引号包裹);
|
||||
3. `shortcut`: 分配给该外部程序的快捷键;
|
||||
3. `shortcut`:分配给该外部程序的快捷键;
|
||||
|
||||
修改配置前请**关闭VNote**。
|
||||
|
@ -1,7 +1,7 @@
|
||||
<p>VNote中一些不容错过的特性:</p>
|
||||
<h3 id="markdown-">Markdown编辑器</h3>
|
||||
<ul>
|
||||
<li>上下文菜单中的 <strong>解析为 Markdown 并粘贴</strong>: 解析富文本为 Markdown 文本,并按需获取图片到本地。</li>
|
||||
<li>上下文菜单中的<strong>解析为Markdown并粘贴</strong>:解析富文本为Markdown文本,并按需获取图片到本地。</li>
|
||||
<li>上下文菜单中的<strong>多功能粘贴</strong>:粘贴为图片、附件或者连接。</li>
|
||||
<li>上下文菜单中的<strong>交叉复制</strong>:将所选文本复制为富文本。</li>
|
||||
</ul>
|
||||
|
@ -247,4 +247,4 @@ alert-dark
|
||||
|
||||
一般来说,您应该在一个块元素(例如代码块、列表和块引用)后面插入一个空行来显式结束该元素。
|
||||
|
||||
[^1]: 该指南参考了 [Mastering Markdown](https://guides.github.com/features/mastering-markdown/).
|
||||
[^1]: 该指南参考了[Mastering Markdown](https://guides.github.com/features/mastering-markdown/)。
|
||||
|
@ -2,10 +2,10 @@
|
||||
1. 以下按键除特别说明外,都不区分大小写;
|
||||
2. 在macOS下,`Ctrl`对应于`Command`,在Vi模式下除外;
|
||||
3. 按键序列`Ctrl+G, I`表示先同时按下`Ctrl`和`G`,释放,然后按下`I`并释放;
|
||||
4. 可以通过查看配置文件 `vnotex.json` 来获取一个**完整的最新的快捷键列表**。
|
||||
4. 可以通过查看配置文件`vnotex.json`来获取一个**完整的最新的快捷键列表**或者修改默认快捷键。
|
||||
|
||||
## 通用
|
||||
- `Ctrl+G E`
|
||||
- `Ctrl+G, E`
|
||||
是否扩展内容区。
|
||||
- `Ctrl+Alt+N`
|
||||
在当前文件夹下新建笔记。
|
||||
@ -15,7 +15,7 @@
|
||||
高级查找。
|
||||
- `Ctrl+J`/`Ctrl+K`
|
||||
VNote的很多部件均支持`Ctrl+J`和`Ctrl+K`导航。
|
||||
- `Ctrl+Left Mouse`
|
||||
- `Ctrl+Left, Mouse`
|
||||
任意滚动。
|
||||
- `Ctrl+Shift+T`
|
||||
恢复上一个关闭的文件。
|
||||
@ -23,11 +23,11 @@ VNote 的很多部件均支持`Ctrl+J`和`Ctrl+K`导航。
|
||||
打开灵犀页。
|
||||
- `Ctrl+Alt+I`
|
||||
打开快速访问。
|
||||
- `Ctrl+G X`
|
||||
- `Ctrl+G, X`
|
||||
关闭当前标签页。
|
||||
- `Ctrl+G D`
|
||||
- `Ctrl+G, D`
|
||||
定位到当前笔记所在文件夹。
|
||||
- `Ctrl+G O`
|
||||
- `Ctrl+G, O`
|
||||
打开大纲弹出窗口。
|
||||
|
||||
## 文本编辑器
|
||||
@ -45,7 +45,7 @@ VNote 的很多部件均支持`Ctrl+J`和`Ctrl+K`导航。
|
||||
取消补全。
|
||||
- `Enter`
|
||||
插入补全。
|
||||
- `Ctrl+[` or `Escape`
|
||||
- `Ctrl+[`或者`Escape`
|
||||
结束补全。
|
||||
|
||||
### 文本编辑
|
||||
@ -78,7 +78,7 @@ VNote 的很多部件均支持`Ctrl+J`和`Ctrl+K`导航。
|
||||
恢复页面大小为100%。
|
||||
- 标题跳转
|
||||
- `<N>[[`:跳转到上`N`个标题;
|
||||
- `<N>]]`: 跳转到下`N`个标题;
|
||||
- `<N>]]`:跳转到下`N`个标题;
|
||||
- `<N>[]`:跳转到上`N`个同层级的标题;
|
||||
- `<N>][`:跳转到下`N`个同层级的标题;
|
||||
- `<N>[{`:跳转到上`N`个高一层级的标题;
|
||||
@ -89,7 +89,7 @@ VNote 的很多部件均支持`Ctrl+J`和`Ctrl+K`导航。
|
||||
|
||||
- `Ctrl+T`
|
||||
编辑当前笔记或者保存更改并退出编辑模式。
|
||||
- `Ctrl+G Q`
|
||||
- `Ctrl+G, Q`
|
||||
放弃当前更改并退出编辑模式。
|
||||
|
||||
#### 文本编辑
|
||||
@ -117,4 +117,4 @@ VNote 的很多部件均支持`Ctrl+J`和`Ctrl+K`导航。
|
||||
插入两个空格然后换行,在Markdown中类似于软换行的概念。
|
||||
|
||||
## 展览模式
|
||||
`Ctrl+G W` 会使 VNote 进入**展览模式** 。该模式中,VNote会在一些主要部件中显示最多两个字母,按下这些字母可以跳转到对应的部件。
|
||||
`Ctrl+G, W`会使VNote进入**展览模式**。该模式中,VNote会在一些主要部件中显示最多两个字母,按下这些字母可以跳转到对应的部件。
|
||||
|
@ -117,7 +117,7 @@ QString Exporter::doExport(const ExportOption &p_option, Node *p_note)
|
||||
|
||||
// Make sure output folder exists.
|
||||
if (!QDir().mkpath(p_option.m_outputDir)) {
|
||||
emit logRequested(tr("Failed to create output folder %1.").arg(p_option.m_outputDir));
|
||||
emit logRequested(tr("Failed to create output folder (%1).").arg(p_option.m_outputDir));
|
||||
return outputFile;
|
||||
}
|
||||
|
||||
|
22
src/utils/printutils.cpp
Normal file
@ -0,0 +1,22 @@
|
||||
#include "printutils.h"
|
||||
|
||||
#include <QPrinter>
|
||||
#include <QPrintDialog>
|
||||
|
||||
using namespace vnotex;
|
||||
|
||||
QSharedPointer<QPrinter> PrintUtils::promptForPrint(bool p_printSelectionEnabled, QWidget *p_parent)
|
||||
{
|
||||
auto printer = QSharedPointer<QPrinter>::create();
|
||||
|
||||
QPrintDialog dialog(printer.data(), p_parent);
|
||||
if (p_printSelectionEnabled) {
|
||||
dialog.addEnabledOption(QAbstractPrintDialog::PrintSelection);
|
||||
}
|
||||
|
||||
if (dialog.exec() == QDialog::Accepted) {
|
||||
return printer;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
21
src/utils/printutils.h
Normal file
@ -0,0 +1,21 @@
|
||||
#ifndef PRINTUTILS_H
|
||||
#define PRINTUTILS_H
|
||||
|
||||
#include <QSharedPointer>
|
||||
|
||||
class QPrinter;
|
||||
class QWidget;
|
||||
|
||||
namespace vnotex
|
||||
{
|
||||
class PrintUtils
|
||||
{
|
||||
public:
|
||||
PrintUtils() = delete;
|
||||
|
||||
// Return null if user cancel the print.
|
||||
static QSharedPointer<QPrinter> promptForPrint(bool p_printSelectionEnabled, QWidget *p_parent);
|
||||
};
|
||||
}
|
||||
|
||||
#endif // PRINTUTILS_H
|
@ -6,6 +6,7 @@ SOURCES += \
|
||||
$$PWD/htmlutils.cpp \
|
||||
$$PWD/imageutils.cpp \
|
||||
$$PWD/pathutils.cpp \
|
||||
$$PWD/printutils.cpp \
|
||||
$$PWD/processutils.cpp \
|
||||
$$PWD/urldragdroputils.cpp \
|
||||
$$PWD/utils.cpp \
|
||||
@ -21,6 +22,7 @@ HEADERS += \
|
||||
$$PWD/htmlutils.h \
|
||||
$$PWD/imageutils.h \
|
||||
$$PWD/pathutils.h \
|
||||
$$PWD/printutils.h \
|
||||
$$PWD/processutils.h \
|
||||
$$PWD/urldragdroputils.h \
|
||||
$$PWD/utils.h \
|
||||
|
@ -100,7 +100,7 @@ bool ImportNotebookDialog::validateRootFolderInput(QString &p_msg)
|
||||
auto backend = notebookMgr.createNotebookBackend(backendName, rootFolderPath);
|
||||
if (!factory->checkRootFolder(backend)) {
|
||||
Utils::appendMsg(p_msg,
|
||||
tr("Not a valid %1 root folder (%2).").arg(factory->getDisplayName(), rootFolderPath));
|
||||
tr("Not a valid (%1) root folder (%2).").arg(factory->getDisplayName(), rootFolderPath));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include <QVBoxLayout>
|
||||
#include <QStackedLayout>
|
||||
#include <QScrollArea>
|
||||
#include <QScrollBar>
|
||||
|
||||
#include <widgets/treewidget.h>
|
||||
#include <widgets/lineedit.h>
|
||||
@ -78,6 +79,10 @@ void SettingsDialog::setupPageExplorer(QBoxLayout *p_layout, QWidget *p_parent)
|
||||
Q_UNUSED(p_previous);
|
||||
auto page = itemPage(p_item);
|
||||
m_pageLayout->setCurrentWidget(page);
|
||||
auto vsb = m_scrollArea->verticalScrollBar();
|
||||
if (vsb) {
|
||||
vsb->setValue(0);
|
||||
}
|
||||
});
|
||||
|
||||
p_layout->addLayout(layout, 2);
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include <QMenu>
|
||||
#include <QActionGroup>
|
||||
#include <QTimer>
|
||||
#include <QPrinter>
|
||||
|
||||
#include <core/fileopenparameters.h>
|
||||
#include <core/editorconfig.h>
|
||||
@ -21,6 +22,7 @@
|
||||
#include <vtextedit/markdowneditorconfig.h>
|
||||
#include <utils/pathutils.h>
|
||||
#include <utils/widgetutils.h>
|
||||
#include <utils/printutils.h>
|
||||
#include <buffer/markdownbuffer.h>
|
||||
#include <core/vnotex.h>
|
||||
#include <core/thememgr.h>
|
||||
@ -318,8 +320,10 @@ void MarkdownViewWindow::setupToolBar()
|
||||
addAction(toolBar, ViewWindowToolBarHelper::TypeTable);
|
||||
|
||||
ToolBarHelper::addSpacer(toolBar);
|
||||
addAction(toolBar, ViewWindowToolBarHelper::FindAndReplace);
|
||||
|
||||
addAction(toolBar, ViewWindowToolBarHelper::Outline);
|
||||
addAction(toolBar, ViewWindowToolBarHelper::FindAndReplace);
|
||||
addAction(toolBar, ViewWindowToolBarHelper::Print);
|
||||
|
||||
{
|
||||
auto act = addAction(toolBar, ViewWindowToolBarHelper::Debug);
|
||||
@ -1374,3 +1378,18 @@ void MarkdownViewWindow::syncEditorPositionToPreview()
|
||||
|
||||
adapter()->scrollToPosition(MarkdownViewerAdapter::Position(m_editor->getTopLine(), QString()));
|
||||
}
|
||||
|
||||
void MarkdownViewWindow::print()
|
||||
{
|
||||
if (!m_viewer || !m_viewerReady) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto printer = PrintUtils::promptForPrint(m_viewer->hasSelection(), this);
|
||||
if (printer) {
|
||||
m_viewer->page()->print(printer.data(), [printer](bool p_succeeded) mutable {
|
||||
Q_UNUSED(p_succeeded);
|
||||
printer.reset();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -82,6 +82,8 @@ namespace vnotex
|
||||
|
||||
void toggleDebug() Q_DECL_OVERRIDE;
|
||||
|
||||
void print() Q_DECL_OVERRIDE;
|
||||
|
||||
protected:
|
||||
void syncEditorFromBuffer() Q_DECL_OVERRIDE;
|
||||
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include <QDebug>
|
||||
#include <QScrollBar>
|
||||
#include <QToolBar>
|
||||
#include <QPrinter>
|
||||
|
||||
#include <vtextedit/vtextedit.h>
|
||||
#include <core/editorconfig.h>
|
||||
@ -15,6 +16,7 @@
|
||||
#include <core/thememgr.h>
|
||||
#include "editors/statuswidget.h"
|
||||
#include <core/fileopenparameters.h>
|
||||
#include <utils/printutils.h>
|
||||
|
||||
using namespace vnotex;
|
||||
|
||||
@ -67,11 +69,12 @@ void TextViewWindow::setupToolBar()
|
||||
toolBar->addSeparator();
|
||||
|
||||
addAction(toolBar, ViewWindowToolBarHelper::Attachment);
|
||||
|
||||
addAction(toolBar, ViewWindowToolBarHelper::Tag);
|
||||
|
||||
ToolBarHelper::addSpacer(toolBar);
|
||||
|
||||
addAction(toolBar, ViewWindowToolBarHelper::FindAndReplace);
|
||||
addAction(toolBar, ViewWindowToolBarHelper::Print);
|
||||
}
|
||||
|
||||
void TextViewWindow::handleBufferChangedInternal(const QSharedPointer<FileOpenParameters> &p_paras)
|
||||
@ -298,3 +301,11 @@ QString TextViewWindow::selectedText() const
|
||||
Q_ASSERT(m_editor);
|
||||
return m_editor->getTextEdit()->selectedText();
|
||||
}
|
||||
|
||||
void TextViewWindow::print()
|
||||
{
|
||||
auto printer = PrintUtils::promptForPrint(m_editor->getTextEdit()->hasSelection(), this);
|
||||
if (printer) {
|
||||
m_editor->getTextEdit()->print(printer.data());
|
||||
}
|
||||
}
|
||||
|
@ -53,6 +53,8 @@ namespace vnotex
|
||||
|
||||
void handleFindAndReplaceWidgetClosed() Q_DECL_OVERRIDE;
|
||||
|
||||
void print() Q_DECL_OVERRIDE;
|
||||
|
||||
protected:
|
||||
void syncEditorFromBuffer() Q_DECL_OVERRIDE;
|
||||
|
||||
|
@ -289,237 +289,13 @@ QToolBar *ToolBarHelper::setupSettingsToolBar(MainWindow *p_win, QToolBar *p_too
|
||||
tb = createToolBar(p_win, MainWindow::tr("Settings"), "SettingsToolBar");
|
||||
}
|
||||
|
||||
// Spacer.
|
||||
addSpacer(tb);
|
||||
|
||||
// Expand.
|
||||
{
|
||||
const auto &coreConfig = ConfigMgr::getInst().getCoreConfig();
|
||||
setupExpandButton(p_win, tb);
|
||||
|
||||
auto btn = WidgetsFactory::createToolButton(tb);
|
||||
setupSettingsButton(p_win, tb);
|
||||
|
||||
auto menu = WidgetsFactory::createMenu(tb);
|
||||
btn->setMenu(menu);
|
||||
|
||||
auto expandAct = menu->addAction(generateIcon("expand.svg"),
|
||||
MainWindow::tr("Expand Content Area"));
|
||||
WidgetUtils::addActionShortcut(expandAct,
|
||||
coreConfig.getShortcut(CoreConfig::Shortcut::ExpandContentArea));
|
||||
expandAct->setCheckable(true);
|
||||
MainWindow::connect(expandAct, &QAction::triggered,
|
||||
p_win, &MainWindow::setContentAreaExpanded);
|
||||
MainWindow::connect(p_win, &MainWindow::layoutChanged,
|
||||
[expandAct, p_win]() {
|
||||
expandAct->setChecked(p_win->isContentAreaExpanded());
|
||||
});
|
||||
btn->setDefaultAction(expandAct);
|
||||
|
||||
{
|
||||
auto fullScreenAct = new FullScreenToggleAction(p_win,
|
||||
generateIcon("fullscreen.svg"),
|
||||
menu);
|
||||
const auto shortcut = coreConfig.getShortcut(CoreConfig::Shortcut::FullScreen);
|
||||
WidgetUtils::addActionShortcut(fullScreenAct, shortcut);
|
||||
MainWindow::connect(fullScreenAct, &FullScreenToggleAction::fullScreenToggled,
|
||||
p_win, [shortcut](bool p_fullScreen) {
|
||||
if (p_fullScreen) {
|
||||
VNoteX::getInst().showTips(
|
||||
MainWindow::tr("Press %1 To Exit Full Screen").arg(shortcut));
|
||||
} else {
|
||||
VNoteX::getInst().showTips("");
|
||||
}
|
||||
});
|
||||
menu->addAction(fullScreenAct);
|
||||
}
|
||||
|
||||
auto stayOnTopAct = menu->addAction(generateIcon("stay_on_top.svg"), MainWindow::tr("Stay on Top"),
|
||||
p_win, &MainWindow::setStayOnTop);
|
||||
stayOnTopAct->setCheckable(true);
|
||||
WidgetUtils::addActionShortcut(stayOnTopAct,
|
||||
coreConfig.getShortcut(CoreConfig::Shortcut::StayOnTop));
|
||||
|
||||
menu->addSeparator();
|
||||
|
||||
{
|
||||
// Windows.
|
||||
// MainWindow will clear the title of the dock widget for the tab bar, so we need to use
|
||||
// another action to wrap the no-text action.
|
||||
auto subMenu = menu->addMenu(MainWindow::tr("Windows"));
|
||||
for (auto dock : p_win->getDocks()) {
|
||||
// @act is owned by the QDockWidget.
|
||||
auto act = dock->toggleViewAction();
|
||||
auto actWrapper = subMenu->addAction(act->text());
|
||||
actWrapper->setCheckable(act->isCheckable());
|
||||
actWrapper->setChecked(act->isChecked());
|
||||
MainWindow::connect(act, &QAction::toggled,
|
||||
actWrapper, [actWrapper](bool checked) {
|
||||
if (actWrapper->isChecked() != checked) {
|
||||
actWrapper->setChecked(checked);
|
||||
}
|
||||
});
|
||||
MainWindow::connect(actWrapper, &QAction::triggered,
|
||||
act, [p_win, act]() {
|
||||
act->trigger();
|
||||
p_win->updateDockWidgetTabBar();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
tb->addWidget(btn);
|
||||
}
|
||||
|
||||
// Settings.
|
||||
{
|
||||
const auto &coreConfig = ConfigMgr::getInst().getCoreConfig();
|
||||
|
||||
auto act = tb->addAction(generateIcon("settings_menu.svg"), MainWindow::tr("Settings"));
|
||||
auto btn = dynamic_cast<QToolButton *>(tb->widgetForAction(act));
|
||||
Q_ASSERT(btn);
|
||||
btn->setPopupMode(QToolButton::InstantPopup);
|
||||
btn->setProperty(PropertyDefs::c_toolButtonWithoutMenuIndicator, true);
|
||||
|
||||
auto menu = WidgetsFactory::createMenu(tb);
|
||||
btn->setMenu(menu);
|
||||
|
||||
auto settingsAct = menu->addAction(generateIcon("settings.svg"),
|
||||
MainWindow::tr("Settings"),
|
||||
menu,
|
||||
[p_win]() {
|
||||
SettingsDialog dialog(p_win);
|
||||
dialog.exec();
|
||||
});
|
||||
WidgetUtils::addActionShortcut(settingsAct,
|
||||
coreConfig.getShortcut(CoreConfig::Shortcut::Settings));
|
||||
|
||||
menu->addSeparator();
|
||||
|
||||
setupConfigurationMenu(menu);
|
||||
|
||||
menu->addSeparator();
|
||||
|
||||
menu->addAction(MainWindow::tr("Reset Main Window Layout"),
|
||||
menu,
|
||||
[p_win]() {
|
||||
p_win->resetStateAndGeometry();
|
||||
});
|
||||
|
||||
menu->addSeparator();
|
||||
|
||||
menu->addAction(MainWindow::tr("Restart"),
|
||||
menu,
|
||||
[p_win]() {
|
||||
p_win->restart();
|
||||
});
|
||||
|
||||
auto quitAct = menu->addAction(MainWindow::tr("Quit"),
|
||||
menu,
|
||||
[p_win]() {
|
||||
p_win->quitApp();
|
||||
});
|
||||
quitAct->setMenuRole(QAction::QuitRole);
|
||||
WidgetUtils::addActionShortcut(quitAct,
|
||||
coreConfig.getShortcut(CoreConfig::Shortcut::Quit));
|
||||
}
|
||||
|
||||
// Help.
|
||||
{
|
||||
auto act = tb->addAction(generateIcon("help_menu.svg"), MainWindow::tr("Help"));
|
||||
auto btn = dynamic_cast<QToolButton *>(tb->widgetForAction(act));
|
||||
Q_ASSERT(btn);
|
||||
btn->setPopupMode(QToolButton::InstantPopup);
|
||||
btn->setProperty(PropertyDefs::c_toolButtonWithoutMenuIndicator, true);
|
||||
|
||||
auto menu = WidgetsFactory::createMenu(tb);
|
||||
btn->setMenu(menu);
|
||||
|
||||
auto whatsThisAct = menu->addAction(generateIcon("whatsthis.svg"),
|
||||
MainWindow::tr("What's This?"),
|
||||
menu,
|
||||
[]() {
|
||||
QWhatsThis::enterWhatsThisMode();
|
||||
});
|
||||
whatsThisAct->setToolTip(MainWindow::tr("Enter WhatsThis mode and click somewhere to show help information"));
|
||||
|
||||
menu->addSeparator();
|
||||
|
||||
menu->addAction(MainWindow::tr("Shortcuts Help"),
|
||||
menu,
|
||||
[]() {
|
||||
const auto file = DocsUtils::getDocFile(QStringLiteral("shortcuts.md"));
|
||||
if (!file.isEmpty()) {
|
||||
auto paras = QSharedPointer<FileOpenParameters>::create();
|
||||
paras->m_readOnly = true;
|
||||
emit VNoteX::getInst().openFileRequested(file, paras);
|
||||
}
|
||||
});
|
||||
|
||||
menu->addAction(MainWindow::tr("Markdown Guide"),
|
||||
menu,
|
||||
[]() {
|
||||
const auto file = DocsUtils::getDocFile(QStringLiteral("markdown_guide.md"));
|
||||
if (!file.isEmpty()) {
|
||||
auto paras = QSharedPointer<FileOpenParameters>::create();
|
||||
paras->m_readOnly = true;
|
||||
emit VNoteX::getInst().openFileRequested(file, paras);
|
||||
}
|
||||
});
|
||||
|
||||
menu->addSeparator();
|
||||
|
||||
menu->addAction(MainWindow::tr("View Logs"),
|
||||
menu,
|
||||
[]() {
|
||||
const auto file = ConfigMgr::getInst().getLogFile();
|
||||
if (QFileInfo::exists(file)) {
|
||||
auto paras = QSharedPointer<FileOpenParameters>::create();
|
||||
paras->m_readOnly = true;
|
||||
emit VNoteX::getInst().openFileRequested(file, paras);
|
||||
}
|
||||
});
|
||||
|
||||
menu->addSeparator();
|
||||
|
||||
menu->addAction(MainWindow::tr("%1 Home Page").arg(qApp->applicationDisplayName()),
|
||||
menu,
|
||||
[]() {
|
||||
WidgetUtils::openUrlByDesktop(QUrl("https://vnotex.github.io/vnote"));
|
||||
});
|
||||
|
||||
menu->addAction(MainWindow::tr("Feedback and Discussions"),
|
||||
menu,
|
||||
[]() {
|
||||
WidgetUtils::openUrlByDesktop(QUrl("https://github.com/vnotex/vnote/discussions"));
|
||||
});
|
||||
|
||||
menu->addSeparator();
|
||||
|
||||
menu->addAction(MainWindow::tr("Check for Updates"),
|
||||
menu,
|
||||
[p_win]() {
|
||||
Updater updater(p_win);
|
||||
updater.exec();
|
||||
});
|
||||
|
||||
menu->addAction(MainWindow::tr("Contributors"),
|
||||
menu,
|
||||
[]() {
|
||||
WidgetUtils::openUrlByDesktop(QUrl("https://github.com/vnotex/vnote/graphs/contributors"));
|
||||
});
|
||||
|
||||
menu->addAction(MainWindow::tr("About"),
|
||||
menu,
|
||||
[p_win]() {
|
||||
auto info = MainWindow::tr("<h3>%1</h3>\n<span>%2</span>\n").arg(qApp->applicationDisplayName(),
|
||||
qApp->applicationVersion());
|
||||
const auto text = DocsUtils::getDocText(QStringLiteral("about_vnotex.txt"));
|
||||
QMessageBox::about(p_win, MainWindow::tr("About"), info + text);
|
||||
});
|
||||
|
||||
auto aboutQtAct = menu->addAction(MainWindow::tr("About Qt"));
|
||||
aboutQtAct->setMenuRole(QAction::AboutQtRole);
|
||||
MainWindow::connect(aboutQtAct, &QAction::triggered,
|
||||
qApp, &QApplication::aboutQt);
|
||||
}
|
||||
setupMenuButton(p_win, tb);
|
||||
|
||||
return tb;
|
||||
}
|
||||
@ -666,3 +442,226 @@ void ToolBarHelper::updateQuickAccessMenu(QMenu *p_menu)
|
||||
p_menu->addAction(act);
|
||||
}
|
||||
}
|
||||
|
||||
void ToolBarHelper::setupExpandButton(MainWindow *p_win, QToolBar *p_toolBar)
|
||||
{
|
||||
const auto &coreConfig = ConfigMgr::getInst().getCoreConfig();
|
||||
|
||||
auto btn = WidgetsFactory::createToolButton(p_toolBar);
|
||||
|
||||
auto menu = WidgetsFactory::createMenu(p_toolBar);
|
||||
btn->setMenu(menu);
|
||||
|
||||
auto expandAct = menu->addAction(generateIcon("expand.svg"),
|
||||
MainWindow::tr("Expand Content Area"));
|
||||
WidgetUtils::addActionShortcut(expandAct,
|
||||
coreConfig.getShortcut(CoreConfig::Shortcut::ExpandContentArea));
|
||||
expandAct->setCheckable(true);
|
||||
MainWindow::connect(expandAct, &QAction::triggered,
|
||||
p_win, &MainWindow::setContentAreaExpanded);
|
||||
MainWindow::connect(p_win, &MainWindow::layoutChanged,
|
||||
[expandAct, p_win]() {
|
||||
expandAct->setChecked(p_win->isContentAreaExpanded());
|
||||
});
|
||||
btn->setDefaultAction(expandAct);
|
||||
|
||||
{
|
||||
auto fullScreenAct = new FullScreenToggleAction(p_win,
|
||||
generateIcon("fullscreen.svg"),
|
||||
menu);
|
||||
const auto shortcut = coreConfig.getShortcut(CoreConfig::Shortcut::FullScreen);
|
||||
WidgetUtils::addActionShortcut(fullScreenAct, shortcut);
|
||||
MainWindow::connect(fullScreenAct, &FullScreenToggleAction::fullScreenToggled,
|
||||
p_win, [shortcut](bool p_fullScreen) {
|
||||
if (p_fullScreen) {
|
||||
VNoteX::getInst().showTips(
|
||||
MainWindow::tr("Press %1 To Exit Full Screen").arg(shortcut));
|
||||
} else {
|
||||
VNoteX::getInst().showTips("");
|
||||
}
|
||||
});
|
||||
menu->addAction(fullScreenAct);
|
||||
}
|
||||
|
||||
auto stayOnTopAct = menu->addAction(generateIcon("stay_on_top.svg"), MainWindow::tr("Stay on Top"),
|
||||
p_win, &MainWindow::setStayOnTop);
|
||||
stayOnTopAct->setCheckable(true);
|
||||
WidgetUtils::addActionShortcut(stayOnTopAct,
|
||||
coreConfig.getShortcut(CoreConfig::Shortcut::StayOnTop));
|
||||
|
||||
menu->addSeparator();
|
||||
|
||||
{
|
||||
// Windows.
|
||||
// MainWindow will clear the title of the dock widget for the tab bar, so we need to use
|
||||
// another action to wrap the no-text action.
|
||||
auto subMenu = menu->addMenu(MainWindow::tr("Windows"));
|
||||
for (auto dock : p_win->getDocks()) {
|
||||
// @act is owned by the QDockWidget.
|
||||
auto act = dock->toggleViewAction();
|
||||
auto actWrapper = subMenu->addAction(act->text());
|
||||
actWrapper->setCheckable(act->isCheckable());
|
||||
actWrapper->setChecked(act->isChecked());
|
||||
MainWindow::connect(act, &QAction::toggled,
|
||||
actWrapper, [actWrapper](bool checked) {
|
||||
if (actWrapper->isChecked() != checked) {
|
||||
actWrapper->setChecked(checked);
|
||||
}
|
||||
});
|
||||
MainWindow::connect(actWrapper, &QAction::triggered,
|
||||
act, [p_win, act]() {
|
||||
act->trigger();
|
||||
p_win->updateDockWidgetTabBar();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
p_toolBar->addWidget(btn);
|
||||
}
|
||||
|
||||
void ToolBarHelper::setupSettingsButton(MainWindow *p_win, QToolBar *p_toolBar)
|
||||
{
|
||||
const auto &coreConfig = ConfigMgr::getInst().getCoreConfig();
|
||||
|
||||
auto act = p_toolBar->addAction(generateIcon("settings_menu.svg"), MainWindow::tr("Settings"));
|
||||
auto btn = dynamic_cast<QToolButton *>(p_toolBar->widgetForAction(act));
|
||||
Q_ASSERT(btn);
|
||||
btn->setPopupMode(QToolButton::InstantPopup);
|
||||
btn->setProperty(PropertyDefs::c_toolButtonWithoutMenuIndicator, true);
|
||||
|
||||
auto menu = WidgetsFactory::createMenu(p_toolBar);
|
||||
btn->setMenu(menu);
|
||||
|
||||
auto settingsAct = menu->addAction(MainWindow::tr("Settings"),
|
||||
menu,
|
||||
[p_win]() {
|
||||
SettingsDialog dialog(p_win);
|
||||
dialog.exec();
|
||||
});
|
||||
WidgetUtils::addActionShortcut(settingsAct,
|
||||
coreConfig.getShortcut(CoreConfig::Shortcut::Settings));
|
||||
|
||||
menu->addSeparator();
|
||||
|
||||
setupConfigurationMenu(menu);
|
||||
|
||||
menu->addSeparator();
|
||||
|
||||
menu->addAction(MainWindow::tr("Reset Main Window Layout"),
|
||||
menu,
|
||||
[p_win]() {
|
||||
p_win->resetStateAndGeometry();
|
||||
});
|
||||
|
||||
menu->addSeparator();
|
||||
|
||||
menu->addAction(MainWindow::tr("Restart"),
|
||||
menu,
|
||||
[p_win]() {
|
||||
p_win->restart();
|
||||
});
|
||||
|
||||
auto quitAct = menu->addAction(MainWindow::tr("Quit"),
|
||||
menu,
|
||||
[p_win]() {
|
||||
p_win->quitApp();
|
||||
});
|
||||
quitAct->setMenuRole(QAction::QuitRole);
|
||||
WidgetUtils::addActionShortcut(quitAct,
|
||||
coreConfig.getShortcut(CoreConfig::Shortcut::Quit));
|
||||
}
|
||||
|
||||
void ToolBarHelper::setupMenuButton(MainWindow *p_win, QToolBar *p_toolBar)
|
||||
{
|
||||
auto act = p_toolBar->addAction(generateIcon("menu.svg"), MainWindow::tr("Menu"));
|
||||
auto btn = dynamic_cast<QToolButton *>(p_toolBar->widgetForAction(act));
|
||||
Q_ASSERT(btn);
|
||||
btn->setPopupMode(QToolButton::InstantPopup);
|
||||
btn->setProperty(PropertyDefs::c_toolButtonWithoutMenuIndicator, true);
|
||||
|
||||
auto menu = WidgetsFactory::createMenu(p_toolBar);
|
||||
btn->setMenu(menu);
|
||||
|
||||
menu->addAction(MainWindow::tr("View Logs"),
|
||||
menu,
|
||||
[]() {
|
||||
const auto file = ConfigMgr::getInst().getLogFile();
|
||||
if (QFileInfo::exists(file)) {
|
||||
auto paras = QSharedPointer<FileOpenParameters>::create();
|
||||
paras->m_readOnly = true;
|
||||
paras->m_sessionEnabled = false;
|
||||
emit VNoteX::getInst().openFileRequested(file, paras);
|
||||
}
|
||||
});
|
||||
|
||||
{
|
||||
menu->addSeparator();
|
||||
|
||||
menu->addAction(MainWindow::tr("Shortcuts Help"),
|
||||
menu,
|
||||
[]() {
|
||||
const auto file = DocsUtils::getDocFile(QStringLiteral("shortcuts.md"));
|
||||
if (!file.isEmpty()) {
|
||||
auto paras = QSharedPointer<FileOpenParameters>::create();
|
||||
paras->m_readOnly = true;
|
||||
paras->m_sessionEnabled = false;
|
||||
emit VNoteX::getInst().openFileRequested(file, paras);
|
||||
}
|
||||
});
|
||||
|
||||
menu->addAction(MainWindow::tr("Markdown Guide"),
|
||||
menu,
|
||||
[]() {
|
||||
const auto file = DocsUtils::getDocFile(QStringLiteral("markdown_guide.md"));
|
||||
if (!file.isEmpty()) {
|
||||
auto paras = QSharedPointer<FileOpenParameters>::create();
|
||||
paras->m_readOnly = true;
|
||||
paras->m_sessionEnabled = false;
|
||||
emit VNoteX::getInst().openFileRequested(file, paras);
|
||||
}
|
||||
});
|
||||
|
||||
auto helpMenu = menu->addMenu(MainWindow::tr("Help"));
|
||||
|
||||
helpMenu->addAction(MainWindow::tr("Home Page"),
|
||||
helpMenu,
|
||||
[]() {
|
||||
WidgetUtils::openUrlByDesktop(QUrl("https://vnotex.github.io/vnote"));
|
||||
});
|
||||
|
||||
helpMenu->addAction(MainWindow::tr("Feedback and Discussions"),
|
||||
helpMenu,
|
||||
[]() {
|
||||
WidgetUtils::openUrlByDesktop(QUrl("https://github.com/vnotex/vnote/discussions"));
|
||||
});
|
||||
|
||||
helpMenu->addSeparator();
|
||||
|
||||
helpMenu->addAction(MainWindow::tr("Check for Updates"),
|
||||
helpMenu,
|
||||
[p_win]() {
|
||||
Updater updater(p_win);
|
||||
updater.exec();
|
||||
});
|
||||
|
||||
helpMenu->addAction(MainWindow::tr("Contributors"),
|
||||
helpMenu,
|
||||
[]() {
|
||||
WidgetUtils::openUrlByDesktop(QUrl("https://github.com/vnotex/vnote/graphs/contributors"));
|
||||
});
|
||||
|
||||
helpMenu->addAction(MainWindow::tr("About"),
|
||||
helpMenu,
|
||||
[p_win]() {
|
||||
auto info = MainWindow::tr("<h3>%1</h3>\n<span>%2</span>\n").arg(qApp->applicationDisplayName(),
|
||||
qApp->applicationVersion());
|
||||
const auto text = DocsUtils::getDocText(QStringLiteral("about_vnotex.txt"));
|
||||
QMessageBox::about(p_win, MainWindow::tr("About"), info + text);
|
||||
});
|
||||
|
||||
auto aboutQtAct = helpMenu->addAction(MainWindow::tr("About Qt"));
|
||||
aboutQtAct->setMenuRole(QAction::AboutQtRole);
|
||||
MainWindow::connect(aboutQtAct, &QAction::triggered,
|
||||
qApp, &QApplication::aboutQt);
|
||||
}
|
||||
}
|
||||
|
@ -38,6 +38,12 @@ namespace vnotex
|
||||
static void updateQuickAccessMenu(QMenu *p_menu);
|
||||
|
||||
static void setupConfigurationMenu(QMenu *p_menu);
|
||||
|
||||
static void setupExpandButton(MainWindow *p_win, QToolBar *p_toolBar);
|
||||
|
||||
static void setupSettingsButton(MainWindow *p_win, QToolBar *p_toolBar);
|
||||
|
||||
static void setupMenuButton(MainWindow *p_win, QToolBar *p_toolBar);
|
||||
};
|
||||
} // ns vnotex
|
||||
|
||||
|
@ -148,7 +148,7 @@ void ViewSplit::setupCornerWidget()
|
||||
m_menuButton->setPopupMode(QToolButton::InstantPopup);
|
||||
m_menuButton->setProperty(PropertyDefs::c_actionToolButton, true);
|
||||
|
||||
auto act = new QAction(s_menuIcon, tr("Workspaces and Splits"), m_menuButton);
|
||||
auto act = new QAction(s_menuIcon, tr("Menu"), m_menuButton);
|
||||
m_menuButton->setDefaultAction(act);
|
||||
|
||||
auto menu = WidgetsFactory::createMenu(m_menuButton);
|
||||
|
@ -536,6 +536,14 @@ QAction *ViewWindow::addAction(QToolBar *p_toolBar, ViewWindowToolBarHelper::Act
|
||||
break;
|
||||
}
|
||||
|
||||
case ViewWindowToolBarHelper::Print:
|
||||
{
|
||||
act = ViewWindowToolBarHelper::addAction(p_toolBar, p_action);
|
||||
connect(act, &QAction::triggered,
|
||||
this, &ViewWindow::print);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
Q_ASSERT(false);
|
||||
break;
|
||||
@ -1318,7 +1326,7 @@ bool ViewWindow::isSessionEnabled() const
|
||||
|
||||
void ViewWindow::toggleDebug()
|
||||
{
|
||||
qDebug() << "debug is not supported";
|
||||
qWarning() << "debug is not supported";
|
||||
}
|
||||
|
||||
void ViewWindow::updateViewModeMenu(QMenu *p_menu)
|
||||
@ -1328,3 +1336,8 @@ void ViewWindow::updateViewModeMenu(QMenu *p_menu)
|
||||
auto act = p_menu->addAction(tr("View Mode Not Supported"));
|
||||
act->setEnabled(false);
|
||||
}
|
||||
|
||||
void ViewWindow::print()
|
||||
{
|
||||
qWarning() << "print is not supported";
|
||||
}
|
||||
|
@ -178,6 +178,8 @@ namespace vnotex
|
||||
|
||||
virtual void toggleDebug();
|
||||
|
||||
virtual void print();
|
||||
|
||||
protected:
|
||||
bool eventFilter(QObject *p_obj, QEvent *p_event) Q_DECL_OVERRIDE;
|
||||
|
||||
|
@ -412,6 +412,13 @@ QAction *ViewWindowToolBarHelper::addAction(QToolBar *p_tb, Action p_action)
|
||||
break;
|
||||
}
|
||||
|
||||
case Action::Print:
|
||||
{
|
||||
act = p_tb->addAction(ToolBarHelper::generateIcon("print_editor.svg"), ViewWindow::tr("Print"));
|
||||
addActionShortcut(act, editorConfig.getShortcut(Shortcut::Print), viewWindow);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
Q_ASSERT(false);
|
||||
break;
|
||||
|
@ -48,7 +48,8 @@ namespace vnotex
|
||||
SectionNumber,
|
||||
InplacePreview,
|
||||
ImageHost,
|
||||
Debug
|
||||
Debug,
|
||||
Print
|
||||
};
|
||||
|
||||
static QAction *addAction(QToolBar *p_tb, Action p_action);
|
||||
|
@ -83,6 +83,20 @@ void TestNotebookDatabase::testNode()
|
||||
QScopedPointer<DummyNode> node6(new DummyNode(Node::Flag::Content, 5, "cab", m_notebook.data(), node4.data()));
|
||||
addAndQueryNode(node6.data(), false);
|
||||
|
||||
// Node 7/8, with non-exist parent.
|
||||
QScopedPointer<DummyNode> node7(new DummyNode(Node::Flag::Content, 55, "caba", m_notebook.data(), node6.data()));
|
||||
QScopedPointer<DummyNode> node8(new DummyNode(Node::Flag::Content, 555, "cabaa", m_notebook.data(), node7.data()));
|
||||
{
|
||||
bool ret = m_dbAccess->addNode(node8.data(), false);
|
||||
QVERIFY(!ret);
|
||||
|
||||
ret = m_dbAccess->addNodeRecursively(node8.data(), false);
|
||||
queryAndVerifyNode(node7.data());
|
||||
QVERIFY(m_dbAccess->existsNode(node7.data()));
|
||||
queryAndVerifyNode(node8.data());
|
||||
QVERIFY(m_dbAccess->existsNode(node8.data()));
|
||||
}
|
||||
|
||||
// queryNodeParentPath().
|
||||
{
|
||||
testQueryNodeParentPath(rootNode.data());
|
||||
|