diff --git a/src/dialog/vconfirmdeletiondialog.cpp b/src/dialog/vconfirmdeletiondialog.cpp
index 49fd22c3..9281e934 100644
--- a/src/dialog/vconfirmdeletiondialog.cpp
+++ b/src/dialog/vconfirmdeletiondialog.cpp
@@ -122,7 +122,7 @@ void VConfirmDeletionDialog::setupUI(const QString &p_title,
m_btnBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
connect(m_btnBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
connect(m_btnBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
- m_btnBox->button(QDialogButtonBox::Ok)->setStyleSheet(g_config->c_dangerBtnStyle);
+ m_btnBox->button(QDialogButtonBox::Ok)->setProperty("DangerBtn", true);
QHBoxLayout *midLayout = new QHBoxLayout;
midLayout->addWidget(m_listWidget);
diff --git a/src/dialog/vdirinfodialog.cpp b/src/dialog/vdirinfodialog.cpp
index e67c98a3..50c9e3eb 100644
--- a/src/dialog/vdirinfodialog.cpp
+++ b/src/dialog/vdirinfodialog.cpp
@@ -53,6 +53,7 @@ void VDirInfoDialog::setupUI()
connect(m_btnBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
QPushButton *okBtn = m_btnBox->button(QDialogButtonBox::Ok);
+ okBtn->setProperty("SpecialBtn", true);
m_nameEdit->setMinimumWidth(okBtn->sizeHint().width() * 3);
QVBoxLayout *mainLayout = new QVBoxLayout();
diff --git a/src/dialog/veditsnippetdialog.cpp b/src/dialog/veditsnippetdialog.cpp
index 7a7a7098..3845cf83 100644
--- a/src/dialog/veditsnippetdialog.cpp
+++ b/src/dialog/veditsnippetdialog.cpp
@@ -79,6 +79,7 @@ void VEditSnippetDialog::setupUI(const QString &p_title, const QString &p_info)
// Content.
m_contentEdit = new QTextEdit();
+ m_contentEdit->setProperty("LineEdit", true);
setContentEditByType();
QFormLayout *topLayout = new QFormLayout();
@@ -100,6 +101,7 @@ void VEditSnippetDialog::setupUI(const QString &p_title, const QString &p_info)
connect(m_btnBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
QPushButton *okBtn = m_btnBox->button(QDialogButtonBox::Ok);
+ okBtn->setProperty("SpecialBtn", true);
m_nameEdit->setMinimumWidth(okBtn->sizeHint().width() * 3);
QVBoxLayout *mainLayout = new QVBoxLayout();
diff --git a/src/dialog/vfileinfodialog.cpp b/src/dialog/vfileinfodialog.cpp
index 4fd4a8a8..7af9a5f0 100644
--- a/src/dialog/vfileinfodialog.cpp
+++ b/src/dialog/vfileinfodialog.cpp
@@ -75,6 +75,7 @@ void VFileInfoDialog::setupUI(const QString &p_title, const QString &p_info)
connect(m_btnBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
QPushButton *okBtn = m_btnBox->button(QDialogButtonBox::Ok);
+ okBtn->setProperty("SpecialBtn", true);
m_nameEdit->setMinimumWidth(okBtn->sizeHint().width() * 3);
QVBoxLayout *mainLayout = new QVBoxLayout();
diff --git a/src/dialog/vinsertimagedialog.cpp b/src/dialog/vinsertimagedialog.cpp
index 214d8258..a9cfa08b 100644
--- a/src/dialog/vinsertimagedialog.cpp
+++ b/src/dialog/vinsertimagedialog.cpp
@@ -59,6 +59,7 @@ void VInsertImageDialog::setupUI()
m_btnBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
connect(m_btnBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
connect(m_btnBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
+ m_btnBox->button(QDialogButtonBox::Ok)->setProperty("SpecialBtn", true);
imagePreviewLabel = new QLabel();
imagePreviewLabel->setVisible(false);
diff --git a/src/dialog/vinsertlinkdialog.cpp b/src/dialog/vinsertlinkdialog.cpp
index e2ee9cb2..e7382431 100644
--- a/src/dialog/vinsertlinkdialog.cpp
+++ b/src/dialog/vinsertlinkdialog.cpp
@@ -53,6 +53,7 @@ void VInsertLinkDialog::setupUI(const QString &p_title,
connect(m_btnBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
QPushButton *okBtn = m_btnBox->button(QDialogButtonBox::Ok);
+ okBtn->setProperty("SpecialBtn", true);
m_linkTextEdit->setMinimumWidth(okBtn->sizeHint().width() * 3);
QVBoxLayout *mainLayout = new QVBoxLayout;
diff --git a/src/dialog/vnewdirdialog.cpp b/src/dialog/vnewdirdialog.cpp
index 24ad8ccc..dc5e6742 100644
--- a/src/dialog/vnewdirdialog.cpp
+++ b/src/dialog/vnewdirdialog.cpp
@@ -46,6 +46,7 @@ void VNewDirDialog::setupUI()
m_btnBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
connect(m_btnBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
connect(m_btnBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
+ m_btnBox->button(QDialogButtonBox::Ok)->setProperty("SpecialBtn", true);
QHBoxLayout *topLayout = new QHBoxLayout();
topLayout->addWidget(nameLabel);
diff --git a/src/dialog/vnewfiledialog.cpp b/src/dialog/vnewfiledialog.cpp
index 5fc5e702..8f424627 100644
--- a/src/dialog/vnewfiledialog.cpp
+++ b/src/dialog/vnewfiledialog.cpp
@@ -111,6 +111,7 @@ void VNewFileDialog::setupUI(const QString &p_title,
connect(m_btnBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
QPushButton *okBtn = m_btnBox->button(QDialogButtonBox::Ok);
+ okBtn->setProperty("SpecialBtn", true);
m_templateCB->setMaximumWidth(okBtn->sizeHint().width() * 4);
QVBoxLayout *mainLayout = new QVBoxLayout();
diff --git a/src/dialog/vnewnotebookdialog.cpp b/src/dialog/vnewnotebookdialog.cpp
index f211bdc0..e1728f7e 100644
--- a/src/dialog/vnewnotebookdialog.cpp
+++ b/src/dialog/vnewnotebookdialog.cpp
@@ -90,6 +90,7 @@ void VNewNotebookDialog::setupUI(const QString &p_title, const QString &p_info)
connect(m_btnBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
QPushButton *okBtn = m_btnBox->button(QDialogButtonBox::Ok);
+ okBtn->setProperty("SpecialBtn", true);
pathEdit->setMinimumWidth(okBtn->sizeHint().width() * 3);
QVBoxLayout *mainLayout = new QVBoxLayout(this);
diff --git a/src/dialog/vnotebookinfodialog.cpp b/src/dialog/vnotebookinfodialog.cpp
index f7e41eb2..0574bb7a 100644
--- a/src/dialog/vnotebookinfodialog.cpp
+++ b/src/dialog/vnotebookinfodialog.cpp
@@ -84,6 +84,7 @@ void VNotebookInfoDialog::setupUI(const QString &p_title, const QString &p_info)
connect(m_btnBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
QPushButton *okBtn = m_btnBox->button(QDialogButtonBox::Ok);
+ okBtn->setProperty("SpecialBtn", true);
m_pathEdit->setMinimumWidth(okBtn->sizeHint().width() * 3);
QVBoxLayout *mainLayout = new QVBoxLayout();
diff --git a/src/dialog/vorphanfileinfodialog.cpp b/src/dialog/vorphanfileinfodialog.cpp
index aa9a48af..5b7b561e 100644
--- a/src/dialog/vorphanfileinfodialog.cpp
+++ b/src/dialog/vorphanfileinfodialog.cpp
@@ -41,6 +41,7 @@ void VOrphanFileInfoDialog::setupUI()
connect(m_btnBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
QPushButton *okBtn = m_btnBox->button(QDialogButtonBox::Ok);
+ okBtn->setProperty("SpecialBtn", true);
m_imageFolderEdit->setMinimumWidth(okBtn->sizeHint().width() * 3);
QVBoxLayout *mainLayout = new QVBoxLayout();
diff --git a/src/dialog/vsettingsdialog.cpp b/src/dialog/vsettingsdialog.cpp
index 8db4ad45..d6ab3d79 100644
--- a/src/dialog/vsettingsdialog.cpp
+++ b/src/dialog/vsettingsdialog.cpp
@@ -18,6 +18,7 @@ VSettingsDialog::VSettingsDialog(QWidget *p_parent)
m_btnBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
connect(m_btnBox, &QDialogButtonBox::accepted, this, &VSettingsDialog::saveConfiguration);
connect(m_btnBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
+ m_btnBox->button(QDialogButtonBox::Ok)->setProperty("SpecialBtn", true);
QHBoxLayout *tabLayout = new QHBoxLayout();
tabLayout->addWidget(m_tabList);
@@ -208,6 +209,7 @@ QLayout *VGeneralTab::setupStartupPagesLayout()
});
m_startupPagesEdit = new QPlainTextEdit(this);
+ m_startupPagesEdit->setProperty("LineEdit", true);
m_startupPagesEdit->setToolTip(tr("Absolute path of the notes to open on startup (one note per line)"));
m_startupPagesAddBtn = new QPushButton(tr("Browse"), this);
diff --git a/src/dialog/vsortdialog.cpp b/src/dialog/vsortdialog.cpp
index 8d8ca9b1..74f37790 100644
--- a/src/dialog/vsortdialog.cpp
+++ b/src/dialog/vsortdialog.cpp
@@ -112,6 +112,7 @@ void VSortDialog::setupUI(const QString &p_title, const QString &p_info)
m_btnBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
connect(m_btnBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
connect(m_btnBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
+ m_btnBox->button(QDialogButtonBox::Ok)->setProperty("SpecialBtn", true);
QVBoxLayout *mainLayout = new QVBoxLayout;
if (infoLabel) {
diff --git a/src/dialog/vupdater.cpp b/src/dialog/vupdater.cpp
index fb3f2862..1518f3b8 100644
--- a/src/dialog/vupdater.cpp
+++ b/src/dialog/vupdater.cpp
@@ -34,6 +34,7 @@ void VUpdater::setupUI()
m_descriptionTb = new QTextBrowser();
m_btnBox = new QDialogButtonBox(QDialogButtonBox::Ok);
+ m_btnBox->button(QDialogButtonBox::Ok)->setProperty("SpecialBtn", true);
connect(m_btnBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
QVBoxLayout *verLayout = new QVBoxLayout();
diff --git a/src/resources/themes/v_pure/arrow_dropdown.svg b/src/resources/themes/v_pure/arrow_dropdown.svg
new file mode 100644
index 00000000..55ee520d
--- /dev/null
+++ b/src/resources/themes/v_pure/arrow_dropdown.svg
@@ -0,0 +1,9 @@
+
+
+
+
diff --git a/src/resources/themes/v_pure/branch_closed.svg b/src/resources/themes/v_pure/branch_closed.svg
new file mode 100644
index 00000000..c524ab79
--- /dev/null
+++ b/src/resources/themes/v_pure/branch_closed.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/resources/themes/v_pure/branch_end.svg b/src/resources/themes/v_pure/branch_end.svg
new file mode 100644
index 00000000..baa0c23f
--- /dev/null
+++ b/src/resources/themes/v_pure/branch_end.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/resources/themes/v_pure/branch_more.svg b/src/resources/themes/v_pure/branch_more.svg
new file mode 100644
index 00000000..cb0fecad
--- /dev/null
+++ b/src/resources/themes/v_pure/branch_more.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/resources/themes/v_pure/branch_open.svg b/src/resources/themes/v_pure/branch_open.svg
new file mode 100644
index 00000000..c1e8e141
--- /dev/null
+++ b/src/resources/themes/v_pure/branch_open.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/resources/themes/v_pure/checkbox_checked.svg b/src/resources/themes/v_pure/checkbox_checked.svg
new file mode 100644
index 00000000..e9ae3b12
--- /dev/null
+++ b/src/resources/themes/v_pure/checkbox_checked.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/resources/themes/v_pure/checkbox_unchecked.svg b/src/resources/themes/v_pure/checkbox_unchecked.svg
new file mode 100644
index 00000000..3ecf0f54
--- /dev/null
+++ b/src/resources/themes/v_pure/checkbox_unchecked.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/resources/themes/v_pure/close.svg b/src/resources/themes/v_pure/close.svg
new file mode 100644
index 00000000..aa6b81c1
--- /dev/null
+++ b/src/resources/themes/v_pure/close.svg
@@ -0,0 +1,10 @@
+
+
+
+
diff --git a/src/resources/themes/v_pure/close_grey.svg b/src/resources/themes/v_pure/close_grey.svg
new file mode 100644
index 00000000..24bddd4e
--- /dev/null
+++ b/src/resources/themes/v_pure/close_grey.svg
@@ -0,0 +1,10 @@
+
+
+
+
diff --git a/src/resources/themes/v_pure/down.svg b/src/resources/themes/v_pure/down.svg
new file mode 100644
index 00000000..386ac7f8
--- /dev/null
+++ b/src/resources/themes/v_pure/down.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/resources/themes/v_pure/down_disabled.svg b/src/resources/themes/v_pure/down_disabled.svg
new file mode 100644
index 00000000..2a53e0f0
--- /dev/null
+++ b/src/resources/themes/v_pure/down_disabled.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/resources/themes/v_pure/float.svg b/src/resources/themes/v_pure/float.svg
new file mode 100644
index 00000000..3c29db9a
--- /dev/null
+++ b/src/resources/themes/v_pure/float.svg
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/src/resources/themes/v_pure/left.svg b/src/resources/themes/v_pure/left.svg
new file mode 100644
index 00000000..aee69f4a
--- /dev/null
+++ b/src/resources/themes/v_pure/left.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/resources/themes/v_pure/left_disabled.svg b/src/resources/themes/v_pure/left_disabled.svg
new file mode 100644
index 00000000..3cabd4b5
--- /dev/null
+++ b/src/resources/themes/v_pure/left_disabled.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/resources/themes/v_pure/line.svg b/src/resources/themes/v_pure/line.svg
new file mode 100644
index 00000000..8c981419
--- /dev/null
+++ b/src/resources/themes/v_pure/line.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/resources/themes/v_pure/radiobutton_checked.svg b/src/resources/themes/v_pure/radiobutton_checked.svg
new file mode 100644
index 00000000..33d62fbb
--- /dev/null
+++ b/src/resources/themes/v_pure/radiobutton_checked.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/resources/themes/v_pure/radiobutton_unchecked.svg b/src/resources/themes/v_pure/radiobutton_unchecked.svg
new file mode 100644
index 00000000..700ccea2
--- /dev/null
+++ b/src/resources/themes/v_pure/radiobutton_unchecked.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/resources/themes/v_pure/right.svg b/src/resources/themes/v_pure/right.svg
new file mode 100644
index 00000000..c524ab79
--- /dev/null
+++ b/src/resources/themes/v_pure/right.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/resources/themes/v_pure/right_disabled.svg b/src/resources/themes/v_pure/right_disabled.svg
new file mode 100644
index 00000000..c0c83ba8
--- /dev/null
+++ b/src/resources/themes/v_pure/right_disabled.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/resources/themes/v_pure/up.svg b/src/resources/themes/v_pure/up.svg
new file mode 100644
index 00000000..52be26da
--- /dev/null
+++ b/src/resources/themes/v_pure/up.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/resources/themes/v_pure/up_disabled.svg b/src/resources/themes/v_pure/up_disabled.svg
new file mode 100644
index 00000000..36e54158
--- /dev/null
+++ b/src/resources/themes/v_pure/up_disabled.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/resources/themes/v_pure/v_pure.palette b/src/resources/themes/v_pure/v_pure.palette
new file mode 100644
index 00000000..13a800be
--- /dev/null
+++ b/src/resources/themes/v_pure/v_pure.palette
@@ -0,0 +1,298 @@
+; File path could be absolute path or relative path (related to this file).
+; Use @color_tag to reference a style.
+
+[metadata]
+qss_file=v_pure.qss
+
+[phony]
+; Abstract color attributes.
+master_fg=#F5F5F5
+master_bg=#556DE8
+
+base_fg=#222222
+base_bg=#EAEAEA
+
+main_fg=@base_fg
+main_bg=#base_bg
+
+title_fg=@base_fg
+title_bg=@base_bg
+
+disabled_fg=#9E9E9E
+
+content_fg=@base_fg
+content_bg=@base_bg
+
+border_bg=#D3D3D3
+
+separator_bg=#D3D3D3
+
+hover_fg=@base_fg
+hover_bg=#D0D0D0
+
+selected_fg=@base_fg
+selected_bg=#BDBDBD
+
+active_fg=@selected_fg
+active_bg=@selected_bg
+
+inactive_fg=@selected_fg
+inactive_bg=#D3D3D3
+
+focus_fg=@selected_fg
+focus_bg=@selected_bg
+
+pressed_fg=@base_fg
+pressed_bg=#B2B2B2
+
+edit_fg=#222222
+edit_bg=#F5F5F5
+edit_focus_bg=#E8EAF6
+edit_focus_border=@master_bg
+edit_selection_fg=@edit_fg
+edit_selection_bg=#CBD2F9
+
+danger_red=#C9302C
+icon_fg=#222222
+
+[soft_defined]
+; VAvatar.
+avatar_border_bg=@selected_bg
+avatar_fg=@base_bg
+avatar_bg=@base_fg
+; The border background color of the avatar when Captain mode is triggered.
+avatar_captain_mode_border_bg=@master_bg
+
+; Style of the label in Navigation mode.
+navigation_label_fg=@master_fg
+navigation_label_bg=@master_bg
+
+; Style of the bubble of VButtonWithWidget.
+bubble_fg=@master_fg
+bubble_bg=@master_bg
+
+; Icons' foreground.
+danger_icon_fg=@danger_red
+item_icon_fg=@icon_fg
+title_icon_fg=@icon_fg
+
+; VVimIndicator.
+vim_indicator_key_label_fg=@base_fg
+vim_indicator_mode_label_fg=@base_fg
+vim_indicator_cmd_edit_pending_bg=@selected_bg
+
+; VTabIndicator.
+tab_indicator_label_fg=@base_fg
+
+[widgets]
+; Widget color attributes.
+
+; QWidget.
+widget_fg=@base_fg
+
+; Separator of dock widgets.
+dock_separator_bg=@border_bg
+dock_separator_hover_bg=@border_bg
+
+; Menubar.
+menubar_bg=@main_bg
+menubar_fg=@main_fg
+menubar_item_selected_bg=@selected_bg
+
+; Menu.
+menu_bg=@base_bg
+menu_fg=@base_fg
+menu_item_disabled_fg=@disabled_fg
+menu_item_selected_fg=@selected_fg
+menu_item_selected_bg=@selected_bg
+menu_separator_bg=@separator_bg
+menu_icon_fg=@icon_fg
+menu_icon_danger_fg=@danger_icon_fg
+
+; Tooltip.
+tooltip_bg=@master_bg
+tooltip_fg=@master_fg
+
+; Toolbar.
+toolbar_bg=@main_bg
+toolbutton_hover_bg=@hover_bg
+toolbutton_pressed_bg=@pressed_bg
+toolbutton_checked_bg=@selected_bg
+toolbutton_icon_fg=@icon_fg
+toolbutton_icon_danger_fg=@danger_icon_fg
+
+; Toolbox.
+toolbox_icon_fg=@icon_fg
+
+; Dockwidget.
+dockwidget_title_fg=@title_fg
+dockwidget_title_bg=@title_bg
+dockwidget_button_hover_bg=@hover_bg
+
+; PushButton.
+pushbutton_fg=@base_fg
+pushbutton_bg=transparent
+pushbutton_border=@border_bg
+pushbutton_pressed_bg=@pressed_bg
+pushbutton_checked_bg=@selected_bg
+pushbutton_hover_bg=@hover_bg
+pushbutton_default_border=@master_bg
+
+pushbutton_specialbtn_fg=@master_fg
+pushbutton_specialbtn_bg=@master_bg
+pushbutton_specialbtn_hover_bg=#3F51B5
+pushbutton_specialbtn_checked_bg=#3949AB
+pushbutton_specialbtn_pressed_bg=#303F9F
+
+pushbutton_cornerbtn_hover_bg=@hover_bg
+pushbutton_cornerbtn_focus_bg=@focus_bg
+pushbutton_cornerbtn_pressed_bg=@pressed_bg
+
+pushbutton_statusbtn_hover_bg=@hover_bg
+pushbutton_statusbtn_focus_bg=@focus_bg
+pushbutton_statusbtn_pressed_bg=@pressed_bg
+
+pushbutton_flatbtn_hover_bg=@hover_bg
+pushbutton_flatbtn_focus_bg=@focus_bg
+pushbutton_flatbtn_pressed_bg=@pressed_bg
+
+pushbutton_selectionbtn_hover_bg=@hover_bg
+pushbutton_selectionbtn_focus_bg=@focus_bg
+pushbutton_selectionbtn_pressed_bg=@pressed_bg
+
+pushbutton_titlebtn_bg=@title_bg
+pushbutton_titlebtn_hover_bg=@hover_bg
+pushbutton_titlebtn_focus_bg=@focus_bg
+pushbutton_titlebtn_pressed_bg=@pressed_bg
+
+pushbutton_dangerbtn_fg=#FFF
+pushbutton_dangerbtn_border=#D43F3A
+pushbutton_dangerbtn_bg=#D9534F
+pushbutton_dangerbtn_hover_fg=#FFF
+pushbutton_dangerbtn_hover_bg=#C9302C
+pushbutton_dangerbtn_hover_border=#AC2925
+
+button_icon_fg=@icon_fg
+button_icon_danger_fg=@danger_icon_fg
+
+; ComboBox.
+combobox_border=@border_bg
+combobox_fg=@content_fg
+combobox_bg=@content_bg
+combobox_view_border=@border_bg
+combobox_view_selected_bg=@selected_bg
+combobox_view_selected_fg=@selected_fg
+combobox_view_item_hover_fg=@hover_fg
+combobox_view_item_hover_bg=@hover_bg
+combobox_focus_bg=@edit_focus_bg
+combobox_focus_border=@edit_focus_border
+combobox_item_icon_fg=@item_icon_fg
+
+; Label.
+label_fg=@base_fg
+label_titlelabel_fg=@title_fg
+label_titlelabel_bg=@title_bg
+
+; LineEdit.
+lineedit_border=@border_bg
+lineedit_fg=@edit_fg
+lineedit_bg=@edit_bg
+lineedit_focus_bg=@edit_focus_bg
+lineedit_focus_border=@edit_focus_border
+lineedit_selection_fg=@edit_selection_fg
+lineedit_selection_bg=@edit_selection_bg
+
+; TabWidget.
+tabwidget_pane_border=@selected_bg
+
+; TabBar.
+tabbar_fg=@base_fg
+tabbar_bg=@base_bg
+tabbar_border=@border_bg
+
+tabbar_selected_fg=@edit_fg
+tabbar_selected_bg=@edit_bg
+tabbar_selected_border=@border_bg
+
+tabbar_hover_fg=@hover_fg
+tabbar_hover_bg=@hover_bg
+
+tabbar_icon_fg=@icon_fg
+tabbar_icon_special_fg=@danger_red
+
+; SelectorItem.
+selectoritem_border=@base_fg
+selectoritem_fg=@base_fg
+selectoritem_bg=@base_bg
+
+; InsertSelector.
+insertselector_bg=@base_bg
+
+; TreeView.
+treeview_fg=@content_fg
+treeview_bg=@content_bg
+treeview_item_hover_fg=@hover_fg
+treeview_item_hover_bg=@hover_bg
+treeview_item_selected_fg=@selected_fg
+treeview_item_selected_bg=@selected_bg
+treeview_item_selected_avtive_fg=@active_fg
+treeview_item_selected_avtive_bg=@active_bg
+treeview_item_selected_inactive_fg=@inactive_fg
+treeview_item_selected_inactive_bg=@inactive_bg
+treeview_item_icon_fg=@item_icon_fg
+
+; ListView.
+listview_fg=@content_fg
+listview_bg=@content_bg
+listview_item_hover_fg=@hover_fg
+listview_item_hover_bg=@hover_bg
+listview_item_selected_fg=@selected_fg
+listview_item_selected_bg=@selected_bg
+listview_item_selected_avtive_fg=@active_fg
+listview_item_selected_avtive_bg=@active_bg
+listview_item_selected_inactive_fg=@inactive_fg
+listview_item_selected_inactive_bg=@inactive_bg
+
+; Splitter.
+splitter_handle_bg=@border_bg
+
+; StatusBar.
+statusbar_fg=@main_fg
+statusbar_bg=@main_bg
+
+; ScrollBar.
+scrollbar_bg=@base_bg
+scrollbar_page_bg=transparent
+scrollbar_handle_bg=#DADADA
+scrollbar_handle_hover_bg=@hover_bg
+scrollbar_handle_pressed_bg=@pressed_bg
+
+; VEditWindow.
+editwindow_corner_icon_fg=@master_bg
+editwindow_corner_icon_inactive_fg=#D3D3D3
+
+; CheckBox.
+checkbox_indicator_hover_bg=@hover_bg
+checkbox_indicator_pressed_bg=@pressed_bg
+
+; RadioButton.
+radiobutton_indicator_hover_bg=@hover_bg
+radiobutton_indicator_pressed_bg=@pressed_bg
+
+; SpinBox.
+spinbox_fg=@edit_fg
+spinbox_bg=@edit_bg
+spinbox_border=@border_bg
+spinbox_selection_fg=@edit_selection_fg
+spinbox_selection_bg=@edit_selection_bg
+spinbox_focus_border=@edit_focus_border
+spinbox_focus_bg=@edit_focus_bg
+spinbox_button_hover_bg=@hover_bg
+spinbox_button_pressed_bg=@pressed_bg
+
+; HeaderView.
+headerview_bg=#E0E0E0
+headerview_fg=@base_fg
+headerview_border=@border_bg
+headerview_checked_fg=@selected_fg
+headerview_checked_bg=@selected_bg
diff --git a/src/resources/themes/v_pure/v_pure.qss b/src/resources/themes/v_pure/v_pure.qss
new file mode 100644
index 00000000..2f9e9a70
--- /dev/null
+++ b/src/resources/themes/v_pure/v_pure.qss
@@ -0,0 +1,1102 @@
+QToolTip
+{
+ border: none;
+ background: @tooltip_bg;
+ color: @tooltip_fg;
+}
+
+/* QWidget */
+QWidget
+{
+ color: @widget_fg;
+}
+
+QWidget[NotebookPanel="true"] {
+ padding-left: 3px;
+}
+
+/* End QWidget */
+
+/* QMainWindow */
+QMainWindow {
+ color: @base_fg;
+ background: @base_bg;
+}
+
+QMainWindow::separator {
+ background: @dock_separator_bg;
+ width: 2px;
+ height: 2px;
+}
+
+QMainWindow::separator:hover {
+ background: @dock_separator_hover_bg;
+}
+/* End QMainWindow */
+
+QMenuBar {
+ border: none;
+ background: @menubar_bg;
+ color: @menubar_fg;
+}
+
+QMenuBar::item:selected {
+ background: @menubar_item_selected_bg;
+}
+
+/* QMenu */
+QMenu {
+ background: @menu_bg;
+ color: @menu_fg;
+ margin: 2px;
+}
+
+QMenu::icon {
+ margin: 5px;
+}
+
+QMenu::item {
+ padding: 5px 30px 5px 30px;
+ border: 1px solid transparent;
+}
+
+QMenu::item:disabled {
+ color: @menu_item_disabled_fg;
+}
+
+QMenu::item:selected {
+ color: @menu_item_selected_fg;
+ background: @menu_item_selected_bg;
+}
+
+QMenu::icon:checked { /* appearance of a 'checked' icon */
+ border: 2px solid @menu_fg;
+}
+
+QMenu::separator {
+ height: 2px;
+ background: @menu_separator_bg;
+ margin-left: 10px;
+ margin-right: 5px;
+}
+
+QMenu::indicator {
+ width: 20px;
+ height: 20px;
+}
+/* End QMenu */
+
+QToolBar {
+ border: none;
+ background: @toolbar_bg;
+}
+
+/* QToolButton */
+QToolButton {
+ border: none;
+ background: transparent;
+ margin: 1px 3px 1px 3px;
+ padding: 0px;
+}
+
+QToolButton[popupMode="1"] { /* only for MenuButtonPopup */
+ padding-right: 16px; /* make way for the popup button */
+}
+
+QToolButton[popupMode="2"] { /* only for InstantPopup */
+ padding-right: 10px; /* make way for the popup button */
+}
+
+QToolButton:hover {
+ border:none;
+ background: @toolbutton_hover_bg;
+}
+
+QToolButton:pressed {
+ background: @toolbutton_pressed_bg;
+}
+
+QToolButton:checked {
+ background: @toolbutton_checked_bg;
+}
+
+QToolButton:checked:hover {
+ background: @toolbutton_hover_bg;
+}
+
+/* the subcontrols below are used only in the MenuButtonPopup mode */
+QToolButton::menu-button {
+ border: none;
+ width: 16px;
+}
+
+QToolButton::menu-arrow {
+ image: url(arrow_dropdown.svg);
+ width: 16px;
+ height: 16px;
+}
+/* End QToolButton*/
+
+/* DockWidget */
+QDockWidget {
+ color: @dockwidget_title_fg;
+ titlebar-close-icon: url(close.svg);
+ titlebar-normal-icon: url(float.svg);
+}
+
+QDockWidget::Title {
+ background: @dockwidget_title_bg;
+ text-align: center left;
+}
+
+QDockWidget::close-button, QDockWidget::float-button {
+ border: none;
+}
+
+QDockWidget::close-button:hover, QDockWidget::float-button:hover {
+ background: @dockwidget_button_hover_bg;
+}
+/* End DockWidget */
+
+/* QPushButton */
+QPushButton {
+ color: @pushbutton_fg;
+ background: @pushbutton_bg;
+ border: 1px solid @pushbutton_border;
+ padding: 3px;
+ min-width: 80px;
+}
+
+QPushButton:pressed {
+ background-color: @pushbutton_pressed_bg;
+}
+
+QPushButton:checked {
+ background-color: @pushbutton_checked_bg;
+}
+
+QPushButton:checked:hover {
+ background-color: @pushbutton_hover_bg;
+}
+
+QPushButton:hover {
+ background-color: @pushbutton_hover_bg;
+}
+
+QPushButton:flat {
+ border: none;
+}
+
+QPushButton:default {
+ border-color: @pushbutton_default_border;
+}
+
+QPushButton::menu-indicator {
+ image: url(arrow_dropdown.svg);
+ width: 16px;
+ height: 16px;
+}
+
+QPushButton[SpecialBtn="true"] {
+ color: @pushbutton_specialbtn_fg;
+ background: @pushbutton_specialbtn_bg;
+}
+
+QPushButton[SpecialBtn="true"]:pressed {
+ background-color: @pushbutton_specialbtn_pressed_bg;
+}
+
+QPushButton[SpecialBtn="true"]:checked {
+ background-color: @pushbutton_specialbtn_checked_bg;
+}
+
+QPushButton[SpecialBtn="true"]:checked:hover {
+ background-color: @pushbutton_specialbtn_hover_bg;
+}
+
+QPushButton[SpecialBtn="true"]:hover {
+ background-color: @pushbutton_specialbtn_hover_bg;
+}
+
+QPushButton[CornerBtn="true"] {
+ padding: 4px -2px 4px -2px;
+ margin: 0px;
+ border: none;
+ background-color: transparent;
+ min-width: -1;
+}
+
+QPushButton[CornerBtn="true"]::menu-indicator {
+ image: none;
+}
+
+QPushButton[CornerBtn="true"]:hover {
+ background-color: @pushbutton_cornerbtn_hover_bg;
+}
+
+QPushButton[CornerBtn="true"]:focus {
+ background-color: @pushbutton_cornerbtn_focus_bg;
+}
+
+QPushButton[CornerBtn="true"]:pressed {
+ background-color: @pushbutton_cornerbtn_pressed_bg;
+}
+
+QPushButton[StatusBtn="true"] {
+ font: bold;
+ padding: 0px 2px 0px 2px;
+ margin: 0px;
+ border: none;
+ background-color: transparent;
+ min-width: -1;
+}
+
+QPushButton[StatusBtn="true"]:hover {
+ background-color: @pushbutton_statusbtn_hover_bg;
+}
+
+QPushButton[StatusBtn="true"]:focus {
+ background-color: @pushbutton_statusbtn_focus_bg;;
+}
+
+QPushButton[StatusBtn="true"]:pressed {
+ background-color: @pushbutton_statusbtn_pressed_bg;
+}
+
+QPushButton[FlatBtn="true"] {
+ padding: 4px;
+ margin: 0px;
+ border: none;
+ background-color: transparent;
+ min-width: -1;
+}
+
+QPushButton[FlatBtn="true"]:hover {
+ background-color: @pushbutton_flatbtn_hover_bg;
+}
+
+QPushButton[FlatBtn="true"]:focus {
+ background-color: @pushbutton_flatbtn_focus_bg;
+}
+
+QPushButton[FlatBtn="true"]:focus {
+ background-color: @pushbutton_flatbtn_pressed_bg;
+}
+
+QPushButton[SelectionBtn="true"] {
+ padding: 4px 10px 4px 10px;
+ border: none;
+ background-color: transparent;
+ font-size: 15pt;
+ text-align: left;
+ min-width: -1;
+}
+
+QPushButton[SelectionBtn="true"]:hover {
+ background-color: @pushbutton_selectionbtn_hover_bg;
+}
+
+QPushButton[SelectionBtn="true"]:focus {
+ background-color: @pushbutton_selectionbtn_focus_bg;
+}
+
+QPushButton[SelectionBtn="true"]:focus {
+ background-color: @pushbutton_selectionbtn_pressed_bg;
+}
+
+QPushButton[TitleBtn="true"] {
+ padding: 4px;
+ margin: 0px;
+ border: none;
+ background-color: @pushbutton_titlebtn_bg;
+ min-width: -1;
+}
+
+QPushButton[TitleBtn="true"]:hover {
+ background-color: @pushbutton_titlebtn_hover_bg;
+}
+
+QPushButton[TitleBtn="true"]:focus {
+ background-color: @pushbutton_titlebtn_focus_bg;
+}
+
+QPushButton[TitleBtn="true"]:focus {
+ background-color: @pushbutton_titlebtn_pressed_bg;
+}
+
+QPushButton[DangerBtn="true"] {
+ color: @pushbutton_dangerbtn_fg;
+ border-color: @pushbutton_dangerbtn_border;
+ background-color: @pushbutton_dangerbtn_bg;
+ min-width: -1;
+}
+
+QPushButton[DangerBtn="true"]:hover {
+ color: @pushbutton_dangerbtn_hover_fg;
+ border-color: @pushbutton_dangerbtn_hover_border;
+ background-color: @pushbutton_dangerbtn_hover_bg;
+}
+
+VButtonMenuItem {
+ padding: 5px;
+ padding-right: 30px;
+ border: 1px solid transparent;
+ background-color: transparent;
+ min-width: -1;
+ text-align: left;
+}
+
+VButtonMenuItem[Heading1="true"] {
+ font-size: 22pt;
+}
+
+VButtonMenuItem[Heading2="true"] {
+ font-size: 20pt;
+}
+
+VButtonMenuItem[Heading3="true"] {
+ font-size: 18pt;
+}
+
+VButtonMenuItem[Heading4="true"] {
+ font-size: 16pt;
+}
+
+VButtonMenuItem[Heading5="true"] {
+ font-size: 14pt;
+}
+
+VButtonMenuItem[Heading6="true"] {
+ font-size: 14pt;
+}
+
+VButtonMenuItem:hover {
+ background-color: @menubar_item_selected_bg;
+}
+
+VButtonMenuItem:focus {
+ background-color: @menubar_item_selected_bg;
+}
+/* End QPushButton*/
+
+/* QComboBox */
+QComboBox {
+ padding: 3px;
+ color: @combobox_fg;
+ background: @combobox_bg;
+ border: 1px solid @combobox_border;
+}
+
+QComboBox:focus, QComboBox:on {
+ background-color: @combobox_focus_bg;
+ border: 2px solid @combobox_focus_border;
+}
+
+QComboBox::drop-down {
+ subcontrol-origin: padding;
+ subcontrol-position: top right;
+ width: 20px;
+ border: none;
+ background: transparent;
+}
+
+QComboBox::down-arrow {
+ image: url(arrow_dropdown.svg);
+ width: 20px;
+ height: 20px;
+}
+
+QComboBox QAbstractItemView {
+ padding: 2px;
+ border: 1px solid @combobox_view_border;
+ background: @combobox_bg;
+ selection-color: @combobox_view_selected_fg;
+ selection-background-color: @combobox_view_selected_bg;
+}
+
+QComboBox QAbstractItemView::item {
+ background: transparent;
+ padding: 3px;
+}
+
+QComboBox QAbstractItemView::item:hover {
+ color: @combobox_view_item_hover_fg;
+ background: @combobox_view_item_hover_bg;
+}
+
+QComboBox#NotebookSelector {
+ border: none;
+ font-size: 13pt;
+ padding-top: 3px;
+ padding-bottom: 3px;
+ icon-size: 30px;
+}
+
+QComboBox#NotebookSelector:focus, QComboBox#NotebookSelector:on {
+ border: none;
+ background: @combobox_bg
+}
+
+QComboBox#NotebookSelector QListWidget {
+ border: 1px solid @combobox_view_border;
+ background-color: @combobox_bg;
+ font-size: 13pt;
+ icon-size: 30px;
+}
+
+QComboBox#NotebookSelector QListWidget::item {
+ padding-top: 10px;
+ padding-bottom: 10px;
+}
+
+QComboBox#NotebookSelector QListWidget::item:hover {
+ color: @combobox_view_item_hover_fg;
+ background-color: @combobox_view_item_hover_bg;
+}
+/* End QComboBox */
+
+/* QLabel */
+QLabel {
+ border: none;
+ color: @label_fg;
+ background: transparent;
+}
+
+QLabel[TitleLabel="true"] {
+ padding-top: 5px;
+ padding-bottom: 5px;
+ color: @label_titlelabel_fg;
+ background-color: @label_titlelabel_bg;
+}
+
+QLabel[ColorRedLabel="true"] {
+ padding-left: 5px;
+ padding-right: 5px;
+ font: bold;
+ color: white;
+ border-radius: 2px;
+ background-color: #D32F2F;
+}
+
+QLabel[ColorGreenLabel="true"] {
+ padding-left: 5px;
+ padding-right: 5px;
+ font: bold;
+ color: white;
+ border-radius: 2px;
+ background-color: #388E3C;
+}
+
+QLabel[ColorGreyLabel="true"] {
+ padding-left: 5px;
+ padding-right: 5px;
+ font: bold;
+ color: white;
+ border-radius: 2px;
+ background-color: #616161;
+}
+
+QLabel[ColorTealLabel="true"] {
+ padding-left: 5px;
+ padding-right: 5px;
+ font: bold;
+ color: white;
+ border-radius: 2px;
+ background-color: #00796B;
+}
+
+QLabel[MenuSeparator="true"] {
+ padding-top: 5px;
+ padding-bottom: 5px;
+ margin-top: 3px;
+ font: italic;
+ border-top: 1px solid @menu_separator_bg
+}
+
+VVimIndicator QLabel[VimIndicatorKeyLabel="true"] {
+ font: bold;
+ color: @vim_indicator_key_label_fg;
+ background: transparent;
+}
+
+VVimIndicator QLabel[VimIndicatorModeLabel="true"] {
+ padding: 0px 2px 0px 2px;
+ font: bold;
+ color: @vim_indicator_mode_label_fg;
+ /* background color will be controlled by the code. */
+}
+
+VTabIndicator QLabel[TabIndicatorLabel="true"] {
+ color: @tab_indicator_label_fg;
+ background: transparent;
+}
+/* End QLabel */
+
+/* QLineEdit */
+QLineEdit {
+ border: 1px solid @lineedit_border;
+ padding: 3px;
+ color: @lineedit_fg;
+ background: @lineedit_bg;
+ selection-color: @lineedit_selection_fg;
+ selection-background-color: @lineedit_selection_bg;
+}
+
+QLineEdit:focus {
+ border: 2px solid @lineedit_focus_border;
+ background: @lineedit_focus_bg;
+}
+
+QLineEdit[VimCommandLine="true"] {
+ padding: 0px;
+ margin: 0px;
+ border: none;
+ color: @lineedit_fg;
+ background: @lineedit_bg;
+}
+/* End QLineEdit */
+
+/* QPlainTextEdit QTextEdit */
+QPlainTextEdit[LineEdit="true"], QTextEdit[LineEdit="true"] {
+ border: 1px solid @lineedit_border;
+ padding: 3px;
+ color: @lineedit_fg;
+ background: @lineedit_bg;
+ selection-color: @lineedit_selection_fg;
+ selection-background-color: @lineedit_selection_bg;
+}
+
+QPlainTextEdit[LineEdit="true"]:focus, QTextEdit[LineEdit="true"]:focus {
+ border: 2px solid @lineedit_focus_border;
+ background: @lineedit_focus_bg;
+}
+/* End QPlainTextEdit QTextEdit */
+
+/* QTabWidget */
+QTabWidget {
+ border: none;
+}
+
+QTabWidget::pane {
+ border: none;
+}
+/* End QTabWidget */
+
+/* QTabBar */
+QTabBar::tab {
+ color: @tabbar_fg;
+ background: @tabbar_bg;
+ border: 1px solid @tabbar_border;
+ border-bottom: none;
+ border-top: none;
+ padding: 2px;
+}
+
+QTabBar::tab:selected {
+ color: @tabbar_selected_fg;
+ background: @tabbar_selected_bg;
+ border-bottom: 3px solid @master_bg;
+}
+
+QTabBar::tab:hover {
+ color: @tabbar_hover_fg;
+ background: @tabbar_hover_bg;
+}
+
+QTabBar::close-button {
+ image: url(close_grey.svg);
+}
+
+QTabBar::close-button:hover {
+ image: url(close.svg);
+}
+
+QTabBar::close-button:focus {
+ image: url(close.svg);
+}
+
+QTabBar::scroller {
+ width: 20px;
+}
+
+QTabBar QToolButton {
+ border: none;
+}
+
+QTabBar QToolButton::right-arrow:enabled {
+ image: url(right.svg);
+}
+
+QTabBar QToolButton::left-arrow:enabled {
+ image: url(left.svg);
+}
+
+QTabBar QToolButton::right-arrow:disabled {
+ image: url(right_disabled.svg);
+}
+
+QTabBar QToolButton::left-arrow:disabled {
+ image: url(left_disabled.svg);
+}
+/* End QTabBar */
+
+VSelectorItemWidget QLabel[SelectorItemShortcutLabel="true"] {
+ font: bold;
+ border: 2px solid @selectoritem_border;
+ padding: 3px;
+ border-radius: 5px;
+ background-color: @selectoritem_bg;
+ color: @selectoritem_fg;
+}
+
+VInsertSelector {
+ border: none;
+ background: @insertselector_bg;
+}
+
+/* QTreeView */
+QTreeView {
+ color: @treeview_fg;
+ background: @treeview_bg;
+ show-decoration-selected: 0;
+ border: none;
+ selection-background-color: transparent;
+ outline: none;
+}
+
+QTreeView::item {
+ padding-top: 5px;
+ padding-bottom: 5px;
+}
+
+QTreeView::item:hover {
+ color: @treeview_item_hover_fg;
+ background: @treeview_item_hover_bg;
+}
+
+QTreeView::item:selected {
+ color: @treeview_item_selected_fg;
+ background: @treeview_item_selected_bg;
+}
+
+QTreeView::item:selected:active {
+ color: @treeview_item_selected_active_fg;
+ background: @treeview_item_selected_active_bg;
+}
+
+QTreeView::item:selected:!active {
+ color: @treeview_item_selected_inactive_fg;
+ background: @treeview_item_selected_inactive_bg;
+}
+
+QTreeView::branch:has-siblings:!adjoins-item {
+ border-image: url(line.svg) 0;
+}
+
+QTreeView::branch:has-siblings:adjoins-item {
+ border-image: url(branch_more.svg) 0;
+}
+
+QTreeView::branch:!has-children:!has-siblings:adjoins-item {
+ border-image: url(branch_end.svg) 0;
+}
+
+QTreeView::branch:has-children:!has-siblings:closed,
+QTreeView::branch:closed:has-children:has-siblings {
+ border-image: none;
+ image: url(branch_closed.svg);
+}
+
+QTreeView::branch:open:has-children:!has-siblings,
+QTreeView::branch:open:has-children:has-siblings {
+ border-image: none;
+ image: url(branch_open.svg);
+}
+/* End QTreeView */
+
+/* QListView */
+QListView {
+ color: @listview_fg;
+ background: @listview_bg;
+ show-decoration-selected: 0;
+ border: none;
+ selection-background-color: transparent;
+ outline: none;
+}
+
+QListView::item {
+ padding-top: 5px;
+ padding-bottom: 5px;
+}
+
+QListView::item:hover {
+ color: @listview_item_hover_fg;
+ background: @listview_item_hover_bg;
+}
+
+QListView::item:selected {
+ color: @listview_item_selected_fg;
+ background: @listview_item_selected_bg;
+}
+
+QListView::item:selected:active {
+ color: @listview_item_selected_active_fg;
+ background: @listview_item_selected_active_bg;
+}
+
+QListView::item:selected:!active {
+ color: @listview_item_selected_inactive_fg;
+ background: @listview_item_selected_inactive_bg;
+}
+/* End QListView */
+
+/* QSplitter */
+QSplitter {
+ border: none;
+}
+
+QSplitter::handle {
+ background-color: @splitter_handle_bg;
+}
+
+QSplitter::handle:vertical {
+ height: 2px;
+}
+
+QSplitter::handle:horizontal {
+ width: 2px;
+}
+
+QSplitter#MainSplitter {
+ border: none;
+}
+/* End QSplitter */
+
+/* QStatusBar */
+QStatusBar {
+ color: @statusbar_fg;
+ background: @statusbar_bg;
+}
+/* End QStatusBar */
+
+QWidget[MainEditor="true"] {
+ border: none;
+}
+
+QDialog {
+ color: @base_fg;
+ background: @base_bg;
+}
+
+/* QScrollBar */
+QScrollBar::add-page, QScrollBar::sub-page {
+ background: @scrollbar_page_bg;
+}
+
+QScrollBar:vertical {
+ background: @scrollbar_bg;
+ width: 16px;
+ margin: 16px 0px 16px 0px;
+ padding: 0px 2px 0px 2px;
+ border: none;
+}
+
+QScrollBar::handle:vertical {
+ background: @scrollbar_handle_bg;
+ min-height: 16px;
+}
+
+QScrollBar::handle:vertical:hover {
+ background: @scrollbar_handle_hover_bg;
+}
+
+QScrollBar::handle:vertical:pressed {
+ background: @scrollbar_handle_pressed_bg;
+}
+
+QScrollBar::add-line:vertical {
+ border: none;
+ background: @scrollbar_bg;
+ width: 16px;
+ height: 16px;
+ subcontrol-position: bottom;
+ subcontrol-origin: margin;
+}
+
+QScrollBar::add-line:vertical:hover {
+ background: @scrollbar_handle_hover_bg;
+}
+
+QScrollBar::add-line:vertical:pressed {
+ background: @scrollbar_handle_pressed_bg;
+}
+
+QScrollBar::sub-line:vertical {
+ border: none;
+ background: @scrollbar_bg;
+ width: 16px;
+ height: 16px;
+ subcontrol-position: top;
+ subcontrol-origin: margin;
+}
+
+QScrollBar::sub-line:vertical:hover {
+ background: @scrollbar_handle_hover_bg;
+}
+
+QScrollBar::sub-line:vertical:pressed {
+ background: @scrollbar_handle_pressed_bg;
+}
+
+QScrollBar::down-arrow:vertical {
+ image: url(down.svg);
+ width: 16px;
+ height: 16px;
+}
+
+QScrollBar::up-arrow:vertical {
+ image: url(up.svg);
+ width: 16px;
+ height: 16px;
+}
+
+QScrollBar:horizontal {
+ background: @scrollbar_bg;
+ height: 16px;
+ margin: 0px 16px 0px 16px;
+ padding: 2px 0px 2px 0px;
+ border: none;
+}
+
+QScrollBar::handle:horizontal {
+ background: @scrollbar_handle_bg;
+ min-width: 16px;
+}
+
+QScrollBar::handle:horizontal:hover {
+ background: @scrollbar_handle_hover_bg;
+}
+
+QScrollBar::handle:horizontal:pressed {
+ background: @scrollbar_handle_pressed_bg;
+}
+
+QScrollBar::add-line:horizontal {
+ border: none;
+ background: @scrollbar_bg;
+ width: 16px;
+ height: 16px;
+ subcontrol-position: right;
+ subcontrol-origin: margin;
+}
+
+QScrollBar::add-line:horizontal:hover {
+ background: @scrollbar_handle_hover_bg;
+}
+
+QScrollBar::add-line:horizontal:pressed {
+ background: @scrollbar_handle_pressed_bg;
+}
+
+QScrollBar::sub-line:horizontal {
+ border: none;
+ background: @scrollbar_bg;
+ width: 16px;
+ height: 16px;
+ subcontrol-position: left;
+ subcontrol-origin: margin;
+}
+
+QScrollBar::sub-line:horizontal:hover {
+ background: @scrollbar_handle_hover_bg;
+}
+
+QScrollBar::sub-line:horizontal:pressed {
+ background: @scrollbar_handle_pressed_bg;
+}
+
+QScrollBar::right-arrow:horizontal {
+ image: url(right.svg);
+ width: 16px;
+ height: 16px;
+}
+
+QScrollBar::left-arrow:horizontal {
+ image: url(left.svg);
+ width: 16px;
+ height: 16px;
+}
+/* End QScrollBar */
+
+/* QCheckBox */
+QCheckBox {
+ spacing: 5px;
+}
+
+QCheckBox::indicator {
+ width: 20px;
+ height: 20px;
+}
+
+QCheckBox::indicator:unchecked {
+ image: url(checkbox_unchecked.svg);
+}
+
+QCheckBox::indicator:unchecked:hover {
+ background: @checkbox_indicator_hover_bg;
+}
+
+QCheckBox::indicator:unchecked:pressed {
+ background: @checkbox_indicator_pressed_bg;
+}
+
+QCheckBox::indicator:checked {
+ image: url(checkbox_checked.svg);
+}
+
+QCheckBox::indicator:checked:hover {
+ background: @checkbox_indicator_hover_bg;
+}
+
+QCheckBox::indicator:checked:pressed {
+ background: @checkbox_indicator_pressed_bg;
+}
+
+QCheckBox::indicator:indeterminate:hover {
+ background: @checkbox_indicator_hover_bg;
+}
+
+QCheckBox::indicator:indeterminate:pressed {
+ background: @checkbox_indicator_pressed_bg;
+}
+/* End QCheckBox */
+
+/* QRadioButton */
+QRadioButton {
+ spacing: 5px;
+}
+
+QRadioButton::indicator {
+ width: 20px;
+ height: 20px;
+}
+
+QRadioButton::indicator:unchecked {
+ image: url(radiobutton_unchecked.svg);
+}
+
+QRadioButton::indicator:unchecked:hover {
+ background: @radiobutton_indicator_hover_bg;
+}
+
+QRadioButton::indicator:unchecked:pressed {
+ background: @radiobutton_indicator_pressed_bg;
+}
+
+QRadioButton::indicator:checked {
+ image: url(radiobutton_checked.svg);
+}
+
+QRadioButton::indicator:checked:hover {
+ background: @radiobutton_indicator_hover_bg;
+}
+
+QRadioButton::indicator:checked:pressed {
+ background: @radiobutton_indicator_pressed_bg;
+}
+/* End QRadioButton */
+
+/* QSpinBox */
+QSpinBox, QDoubleSpinBox {
+ border: 1px solid @spinbox_border;
+ color: @spinbox_fg;
+ background: @spinbox_bg;
+ padding-right: 25px;
+ min-height: 25px;
+ selection-color: @spinbox_selection_fg;
+ selection-background-color: @spinbox_selection_bg;
+}
+
+QSpinBox:focus, QDoubleSpinBox::focus {
+ border: 2px solid @spinbox_focus_border;
+ background: @spinbox_focus_bg;
+}
+
+QSpinBox::up-button, QDoubleSpinBox::up-button {
+ subcontrol-origin: border;
+ subcontrol-position: top right; /* position at the top right corner */
+ width: 25px;
+ border: none;
+ background: transparent;
+}
+
+QSpinBox::up-button:hover, QDoubleSpinBox::up-button:hover {
+ background: @spinbox_button_hover_bg;
+}
+
+QSpinBox::up-button:pressed, QDoubleSpinBox::up-button:pressed {
+ background: @spinbox_button_pressed_bg;
+}
+
+QSpinBox::up-arrow, QDoubleSpinBox::up-arrow {
+ image: url(up.svg);
+ width: 12px;
+ height: 12px;
+}
+
+QSpinBox::up-arrow:disabled, QSpinBox::up-arrow:off, QDoubleSpinBox::up-arrow:disabled, QDoubleSpinBox::up-arrow:off {
+ image: url(up_disabled.svg);
+}
+
+QSpinBox::down-button, QDoubleSpinBox::down-button {
+ subcontrol-origin: border;
+ subcontrol-position: bottom right; /* position at the top right corner */
+ width: 25px;
+ border: none;
+ background: transparent;
+}
+
+QSpinBox::down-button:hover, QDoubleSpinBox::down-button:hover {
+ background: @spinbox_button_hover_bg;
+}
+
+QSpinBox::down-button:pressed, QDoubleSpinBox::down-button:pressed {
+ background: @spinbox_button_pressed_bg;
+}
+
+QSpinBox::down-arrow, QDoubleSpinBox::down-arrow {
+ image: url(down.svg);
+ width: 12px;
+ height: 12px;
+}
+
+QSpinBox::down-arrow:disabled, QSpinBox::down-arrow:off, QDoubleSpinBox::down-arrow:disabled, QDoubleSpinBox::down-arrow:off {
+ image: url(down_disabled.svg);
+}
+/* End QSpinBox */
+
+/* QHeaderView */
+QHeaderView::section {
+ background: @headerview_bg;
+ color: @headerview_fg;
+ padding-left: 4px;
+ border: none;
+ border-left: 1px solid @headerview_border;
+ border-bottom: 1px solid @headerview_border;
+}
+
+QHeaderView::section:checked
+{
+ color: @headerview_checked_fg;
+ background: @headerview_checked_bg;
+}
+
+/* style the sort indicator */
+QHeaderView::down-arrow {
+ image: url(down.svg);
+}
+
+QHeaderView::up-arrow {
+ image: url(up.svg);
+}
+/* End QHeaderView */
diff --git a/src/resources/themes/v_white/v_white.palette b/src/resources/themes/v_white/v_white.palette
index 929fa510..24d5ad49 100644
--- a/src/resources/themes/v_white/v_white.palette
+++ b/src/resources/themes/v_white/v_white.palette
@@ -267,3 +267,17 @@ checkbox_indicator_pressed_bg=@pressed_bg
; RadioButton.
radiobutton_indicator_hover_bg=@hover_bg
radiobutton_indicator_pressed_bg=@pressed_bg
+
+; SpinBox.
+spinbox_fg=@content_fg
+spinbox_bg=@content_bg
+spinbox_border=@border_bg
+spinbox_button_hover_bg=@hover_bg
+spinbox_button_pressed_bg=@pressed_bg
+
+; HeaderView.
+headerview_bg=@base_bg
+headerview_fg=@base_fg
+headerview_border=@border_bg
+headerview_checked_fg=@selected_fg
+headerview_checked_bg=@selected_bg
diff --git a/src/resources/themes/v_white/v_white.qss b/src/resources/themes/v_white/v_white.qss
index 2bda8f31..f0d2ab3b 100644
--- a/src/resources/themes/v_white/v_white.qss
+++ b/src/resources/themes/v_white/v_white.qss
@@ -3,7 +3,6 @@ QToolTip
border: 1px solid @tooltip_border;
background: @tooltip_bg;
color: @tooltip_fg;
- padding: 5px;
}
/* QWidget */
@@ -187,7 +186,7 @@ QPushButton:flat {
border: none;
}
-QPushButton::default {
+QPushButton:default {
border-color: @pushbutton_default_border;
}
@@ -750,17 +749,21 @@ QDialog {
}
/* QScrollBar */
+QScrollBar::sub-page, QScrollBar::add-page {
+ background: transparent;
+}
+
QScrollBar:vertical {
background: @scrollbar_bg;
- width: 20px;
- margin: 20px 0px 20px 0px;
+ width: 16px;
+ margin: 16px 0px 16px 0px;
padding: 0px 2px 0px 2px;
border: none;
}
QScrollBar::handle:vertical {
background: @scrollbar_handle_bg;
- min-height: 20px;
+ min-height: 16px;
}
QScrollBar::handle:vertical:hover {
@@ -774,8 +777,8 @@ QScrollBar::handle:vertical:pressed {
QScrollBar::add-line:vertical {
border: none;
background: @scrollbar_bg;
- width: 20px;
- height: 20px;
+ width: 16px;
+ height: 16px;
subcontrol-position: bottom;
subcontrol-origin: margin;
}
@@ -791,8 +794,8 @@ QScrollBar::add-line:vertical:pressed {
QScrollBar::sub-line:vertical {
border: none;
background: @scrollbar_bg;
- width: 20px;
- height: 20px;
+ width: 16px;
+ height: 16px;
subcontrol-position: top;
subcontrol-origin: margin;
}
@@ -807,27 +810,27 @@ QScrollBar::sub-line:vertical:pressed {
QScrollBar::down-arrow:vertical {
image: url(down.svg);
- width: 20px;
- height: 20px;
+ width: 16px;
+ height: 16px;
}
QScrollBar::up-arrow:vertical {
image: url(up.svg);
- width: 20px;
- height: 20px;
+ width: 16px;
+ height: 16px;
}
QScrollBar:horizontal {
background: @scrollbar_bg;
- height: 20px;
- margin: 0px 20px 0px 20px;
+ height: 16px;
+ margin: 0px 16px 0px 16px;
padding: 2px 0px 2px 0px;
border: none;
}
QScrollBar::handle:horizontal {
background: @scrollbar_handle_bg;
- min-width: 20px;
+ min-width: 16px;
}
QScrollBar::handle:horizontal:hover {
@@ -841,8 +844,8 @@ QScrollBar::handle:horizontal:pressed {
QScrollBar::add-line:horizontal {
border: none;
background: @scrollbar_bg;
- width: 20px;
- height: 20px;
+ width: 16px;
+ height: 16px;
subcontrol-position: right;
subcontrol-origin: margin;
}
@@ -858,8 +861,8 @@ QScrollBar::add-line:horizontal:pressed {
QScrollBar::sub-line:horizontal {
border: none;
background: @scrollbar_bg;
- width: 20px;
- height: 20px;
+ width: 16px;
+ height: 16px;
subcontrol-position: left;
subcontrol-origin: margin;
}
@@ -874,14 +877,14 @@ QScrollBar::sub-line:horizontal:pressed {
QScrollBar::right-arrow:horizontal {
image: url(right.svg);
- width: 20px;
- height: 20px;
+ width: 16px;
+ height: 16px;
}
QScrollBar::left-arrow:horizontal {
image: url(left.svg);
- width: 20px;
- height: 20px;
+ width: 16px;
+ height: 16px;
}
/* End QScrollBar */
@@ -962,3 +965,91 @@ QRadioButton::indicator:checked:pressed {
background: @radiobutton_indicator_pressed_bg;
}
/* End QRadioButton */
+
+/* QSpinBox */
+QSpinBox, QDoubleSpinBox {
+ border: 1px solid @spinbox_border;
+ color: @spinbox_fg;
+ background: @spinbox_bg;
+ padding-right: 25px;
+ min-height: 25px;
+}
+
+QSpinBox::up-button, QDoubleSpinBox::up-button {
+ subcontrol-origin: border;
+ subcontrol-position: top right; /* position at the top right corner */
+ width: 25px;
+ border: none;
+ background: transparent;
+}
+
+QSpinBox::up-button:hover, QDoubleSpinBox::up-button:hover {
+ background: @spinbox_button_hover_bg;
+}
+
+QSpinBox::up-button:pressed, QDoubleSpinBox::up-button:pressed {
+ background: @spinbox_button_pressed_bg;
+}
+
+QSpinBox::up-arrow, QDoubleSpinBox::up-arrow {
+ image: url(up.svg);
+ width: 12px;
+ height: 12px;
+}
+
+QSpinBox::up-arrow:disabled, QSpinBox::up-arrow:off, QDoubleSpinBox::up-arrow:disabled, QDoubleSpinBox::up-arrow:off {
+ image: url(up_disabled.svg);
+}
+
+QSpinBox::down-button, QDoubleSpinBox::down-button {
+ subcontrol-origin: border;
+ subcontrol-position: bottom right; /* position at the top right corner */
+ width: 25px;
+ border: none;
+ background: transparent;
+}
+
+QSpinBox::down-button:hover, QDoubleSpinBox::down-button:hover {
+ background: @spinbox_button_hover_bg;
+}
+
+QSpinBox::down-button:pressed, QDoubleSpinBox::down-button:pressed {
+ background: @spinbox_button_pressed_bg;
+}
+
+QSpinBox::down-arrow, QDoubleSpinBox::down-arrow {
+ image: url(down.svg);
+ width: 12px;
+ height: 12px;
+}
+
+QSpinBox::down-arrow:disabled, QSpinBox::down-arrow:off, QDoubleSpinBox::down-arrow:disabled, QDoubleSpinBox::down-arrow:off {
+ image: url(down_disabled.svg);
+}
+/* End QSpinBox */
+
+/* QHeaderView */
+QHeaderView::section {
+ background: @headerview_bg;
+ color: @headerview_fg;
+ padding-left: 4px;
+ border: none;
+ border-left: 1px solid @headerview_border;
+ border-bottom: 1px solid @headerview_border;
+}
+
+QHeaderView::section:checked
+{
+ color: @headerview_checked_fg;
+ background: @headerview_checked_bg;
+}
+
+/* style the sort indicator */
+QHeaderView::down-arrow {
+ image: url(down.svg);
+}
+
+QHeaderView::up-arrow {
+ image: url(up.svg);
+}
+/* End QHeaderView */
diff --git a/src/utils/vutils.cpp b/src/utils/vutils.cpp
index 20a428c1..c254144b 100644
--- a/src/utils/vutils.cpp
+++ b/src/utils/vutils.cpp
@@ -394,8 +394,13 @@ bool VUtils::copyDirectory(const QString &p_srcDirPath, const QString &p_destDir
return true;
}
-int VUtils::showMessage(QMessageBox::Icon p_icon, const QString &p_title, const QString &p_text, const QString &p_infoText,
- QMessageBox::StandardButtons p_buttons, QMessageBox::StandardButton p_defaultBtn, QWidget *p_parent,
+int VUtils::showMessage(QMessageBox::Icon p_icon,
+ const QString &p_title,
+ const QString &p_text,
+ const QString &p_infoText,
+ QMessageBox::StandardButtons p_buttons,
+ QMessageBox::StandardButton p_defaultBtn,
+ QWidget *p_parent,
MessageBoxType p_type)
{
QMessageBox msgBox(p_icon, p_title, p_text, p_buttons, p_parent);
@@ -405,7 +410,9 @@ int VUtils::showMessage(QMessageBox::Icon p_icon, const QString &p_title, const
if (p_type == MessageBoxType::Danger) {
QPushButton *okBtn = dynamic_cast(msgBox.button(QMessageBox::Ok));
if (okBtn) {
- okBtn->setStyleSheet(g_config->c_dangerBtnStyle);
+ okBtn->setProperty("DangerBtn", true);
+ okBtn->style()->unpolish(okBtn);
+ okBtn->style()->polish(okBtn);
}
}
return msgBox.exec();
diff --git a/src/vconfigmanager.cpp b/src/vconfigmanager.cpp
index ccb6d5e6..70f4122f 100644
--- a/src/vconfigmanager.cpp
+++ b/src/vconfigmanager.cpp
@@ -54,9 +54,6 @@ const QString VConfigManager::c_warningTextStyle = QString("color: red; font: bo
const QString VConfigManager::c_dataTextStyle = QString("font: bold");
-const QString VConfigManager::c_dangerBtnStyle = QString("QPushButton {color: #fff; border-color: #d43f3a; background-color: #d9534f;}"
- "QPushButton::hover {color: #fff; border-color: #ac2925; background-color: #c9302c;}");
-
const QString VConfigManager::c_vnoteNotebookFolderName = QString("vnote_notebooks");
VConfigManager::VConfigManager(QObject *p_parent)
@@ -1367,6 +1364,7 @@ void VConfigManager::initThemes()
// Built-in.
m_themes.insert(tr("v_white"), ":/resources/themes/v_white/v_white.palette");
+ m_themes.insert(tr("v_pure"), ":/resources/themes/v_pure/v_pure.palette");
// User theme folder.
QDir dir(getThemeConfigFolder());
diff --git a/src/vconfigmanager.h b/src/vconfigmanager.h
index aa371df2..393245dd 100644
--- a/src/vconfigmanager.h
+++ b/src/vconfigmanager.h
@@ -85,9 +85,6 @@ public:
// CSS style for data in label.
static const QString c_dataTextStyle;
- // QStylesheet for danger button. Should keep identical with DangerBtn in QSS.
- static const QString c_dangerBtnStyle;
-
QFont getMdEditFont() const;
QPalette getMdEditPalette() const;
diff --git a/src/vexporter.cpp b/src/vexporter.cpp
index 4e9edd78..4a76d8a3 100644
--- a/src/vexporter.cpp
+++ b/src/vexporter.cpp
@@ -81,6 +81,7 @@ void VExporter::setupUI()
connect(m_openBtn, &QPushButton::clicked, this, &VExporter::openTargetPath);
QPushButton *okBtn = m_btnBox->button(QDialogButtonBox::Ok);
+ okBtn->setProperty("SpecialBtn", true);
m_pathEdit->setMinimumWidth(okBtn->sizeHint().width() * 3);
QGridLayout *mainLayout = new QGridLayout();
diff --git a/src/vnote.qrc b/src/vnote.qrc
index ec78be65..583672e2 100644
--- a/src/vnote.qrc
+++ b/src/vnote.qrc
@@ -163,5 +163,28 @@
resources/themes/v_white/checkbox_unchecked.svg
resources/themes/v_white/radiobutton_checked.svg
resources/themes/v_white/radiobutton_unchecked.svg
+ resources/themes/v_pure/arrow_dropdown.svg
+ resources/themes/v_pure/branch_closed.svg
+ resources/themes/v_pure/branch_end.svg
+ resources/themes/v_pure/branch_more.svg
+ resources/themes/v_pure/branch_open.svg
+ resources/themes/v_pure/checkbox_checked.svg
+ resources/themes/v_pure/checkbox_unchecked.svg
+ resources/themes/v_pure/close.svg
+ resources/themes/v_pure/close_grey.svg
+ resources/themes/v_pure/down.svg
+ resources/themes/v_pure/down_disabled.svg
+ resources/themes/v_pure/float.svg
+ resources/themes/v_pure/left.svg
+ resources/themes/v_pure/left_disabled.svg
+ resources/themes/v_pure/line.svg
+ resources/themes/v_pure/radiobutton_checked.svg
+ resources/themes/v_pure/radiobutton_unchecked.svg
+ resources/themes/v_pure/right.svg
+ resources/themes/v_pure/right_disabled.svg
+ resources/themes/v_pure/up.svg
+ resources/themes/v_pure/up_disabled.svg
+ resources/themes/v_pure/v_pure.palette
+ resources/themes/v_pure/v_pure.qss