├── lib ├── qfluentwidgets │ ├── _rc │ │ ├── __init__.py │ │ ├── qss │ │ │ ├── dark │ │ │ │ ├── flip_view.qss │ │ │ │ ├── info_badge.qss │ │ │ │ ├── pips_pager.qss │ │ │ │ ├── media_player.qss │ │ │ │ ├── tab_view.qss │ │ │ │ ├── card_widget.qss │ │ │ │ ├── setting_card_group.qss │ │ │ │ ├── teaching_tip.qss │ │ │ │ ├── state_tool_tip.qss │ │ │ │ ├── switch_button.qss │ │ │ │ ├── check_box.qss │ │ │ │ ├── tool_tip.qss │ │ │ │ ├── label.qss │ │ │ │ ├── navigation_interface.qss │ │ │ │ ├── list_view.qss │ │ │ │ ├── message_dialog.qss │ │ │ │ ├── combo_box.qss │ │ │ │ ├── info_bar.qss │ │ │ │ └── folder_list_dialog.qss │ │ │ └── light │ │ │ │ ├── flip_view.qss │ │ │ │ ├── info_badge.qss │ │ │ │ ├── pips_pager.qss │ │ │ │ ├── media_player.qss │ │ │ │ ├── tab_view.qss │ │ │ │ ├── card_widget.qss │ │ │ │ ├── setting_card_group.qss │ │ │ │ ├── teaching_tip.qss │ │ │ │ ├── switch_button.qss │ │ │ │ ├── state_tool_tip.qss │ │ │ │ ├── tool_tip.qss │ │ │ │ ├── check_box.qss │ │ │ │ ├── label.qss │ │ │ │ ├── navigation_interface.qss │ │ │ │ ├── list_view.qss │ │ │ │ ├── combo_box.qss │ │ │ │ ├── message_dialog.qss │ │ │ │ ├── info_bar.qss │ │ │ │ └── folder_list_dialog.qss │ │ ├── images │ │ │ ├── logo.png │ │ │ ├── acrylic │ │ │ │ └── noise.png │ │ │ ├── controls │ │ │ │ ├── Grid.png │ │ │ │ ├── Image.png │ │ │ │ ├── Line.png │ │ │ │ ├── Pivot.png │ │ │ │ ├── Acrylic.png │ │ │ │ ├── Button.png │ │ │ │ ├── Canvas.png │ │ │ │ ├── Checkbox.png │ │ │ │ ├── ComboBox.png │ │ │ │ ├── DataGrid.png │ │ │ │ ├── Expander.png │ │ │ │ ├── FlipView.png │ │ │ │ ├── Flyout.png │ │ │ │ ├── GridView.png │ │ │ │ ├── InfoBar.png │ │ │ │ ├── ListBox.png │ │ │ │ ├── ListView.png │ │ │ │ ├── MenuBar.png │ │ │ │ ├── Slider.png │ │ │ │ ├── TabView.png │ │ │ │ ├── TextBox.png │ │ │ │ ├── TitleBar.png │ │ │ │ ├── ToolTip.png │ │ │ │ ├── TreeView.png │ │ │ │ ├── Viewbox.png │ │ │ │ ├── Clipboard.png │ │ │ │ ├── CommandBar.png │ │ │ │ ├── DatePicker.png │ │ │ │ ├── InfoBadge.png │ │ │ │ ├── MenuFlyout.png │ │ │ │ ├── NumberBox.png │ │ │ │ ├── PipsPager.png │ │ │ │ ├── StackPanel.png │ │ │ │ ├── TextBlock.png │ │ │ │ ├── TimePicker.png │ │ │ │ ├── AnimatedIcon.png │ │ │ │ ├── AppBarButton.png │ │ │ │ ├── BreadcrumbBar.png │ │ │ │ ├── CalendarView.png │ │ │ │ ├── ColorPicker.png │ │ │ │ ├── ContentDialog.png │ │ │ │ ├── IconElement.png │ │ │ │ ├── PasswordBox.png │ │ │ │ ├── PersonPicture.png │ │ │ │ ├── ProgressBar.png │ │ │ │ ├── ProgressRing.png │ │ │ │ ├── RadioButton.png │ │ │ │ ├── RadioButtons.png │ │ │ │ ├── RatingControl.png │ │ │ │ ├── RelativePanel.png │ │ │ │ ├── RepeatButton.png │ │ │ │ ├── RichEditBox.png │ │ │ │ ├── RichTextBlock.png │ │ │ │ ├── ScrollViewer.png │ │ │ │ ├── SplitButton.png │ │ │ │ ├── TeachingTip.png │ │ │ │ ├── ToggleButton.png │ │ │ │ ├── ToggleSwitch.png │ │ │ │ ├── VerticalLine.png │ │ │ │ ├── AppBarSeparator.png │ │ │ │ ├── AutoSuggestBox.png │ │ │ │ ├── DropDownButton.png │ │ │ │ ├── EasingFunction.png │ │ │ │ ├── HyperlinkButton.png │ │ │ │ ├── NavigationView.png │ │ │ │ ├── AppBarToggleButton.png │ │ │ │ ├── CalendarDatePicker.png │ │ │ │ ├── CommandBarFlyout.png │ │ │ │ ├── ConnectedAnimation.png │ │ │ │ ├── MediaPlayerElement.png │ │ │ │ ├── ToggleSplitButton.png │ │ │ │ ├── ColorPaletteResources.png │ │ │ │ └── VariableSizedWrapGrid.png │ │ │ ├── color_dialog │ │ │ │ ├── HuePanel.png │ │ │ │ ├── Clear_black.svg │ │ │ │ └── Clear_white.svg │ │ │ ├── folder_list_dialog │ │ │ │ ├── Add_black.png │ │ │ │ ├── Add_white.png │ │ │ │ ├── Close_black.png │ │ │ │ └── Close_white.png │ │ │ ├── icons │ │ │ │ ├── Accept_black.svg │ │ │ │ ├── Accept_white.svg │ │ │ │ ├── Remove_black.svg │ │ │ │ ├── Remove_white.svg │ │ │ │ ├── CareRightSolid_black.svg │ │ │ │ ├── CareRightSolid_white.svg │ │ │ │ ├── Down_black.svg │ │ │ │ ├── Down_white.svg │ │ │ │ ├── Up_black.svg │ │ │ │ ├── Up_white.svg │ │ │ │ ├── CareLeftSolid_black.svg │ │ │ │ ├── CareLeftSolid_white.svg │ │ │ │ ├── LeftArrow_black.svg │ │ │ │ ├── LeftArrow_white.svg │ │ │ │ ├── ChevronRightMed_black.svg │ │ │ │ ├── ChevronRightMed_white.svg │ │ │ │ ├── RightArrow_black.svg │ │ │ │ ├── RightArrow_white.svg │ │ │ │ ├── Return_black.svg │ │ │ │ ├── Return_white.svg │ │ │ │ ├── AcceptMedium_black.svg │ │ │ │ ├── AcceptMedium_white.svg │ │ │ │ ├── Market_black.svg │ │ │ │ ├── Market_white.svg │ │ │ │ ├── Send_black.svg │ │ │ │ ├── Send_white.svg │ │ │ │ ├── CareUpSolid_black.svg │ │ │ │ ├── CareUpSolid_white.svg │ │ │ │ ├── CareDownSolid_black.svg │ │ │ │ ├── CareDownSolid_white.svg │ │ │ │ ├── SendFill_black.svg │ │ │ │ ├── SendFill_white.svg │ │ │ │ ├── PlaySolid_black.svg │ │ │ │ ├── PlaySolid_white.svg │ │ │ │ ├── Flag_black.svg │ │ │ │ ├── Bluetooth_black.svg │ │ │ │ ├── Bluetooth_white.svg │ │ │ │ ├── ChevronDownMed_black.svg │ │ │ │ ├── Flag_white.svg │ │ │ │ ├── ChevronDownMed_white.svg │ │ │ │ ├── ChevronRight_black.svg │ │ │ │ ├── ChevronRight_white.svg │ │ │ │ ├── HomeFill_black.svg │ │ │ │ ├── HomeFill_white.svg │ │ │ │ ├── BackToWindow_black.svg │ │ │ │ ├── BackToWindow_white.svg │ │ │ │ ├── EraseTool_black.svg │ │ │ │ ├── EraseTool_white.svg │ │ │ │ ├── Filter_black.svg │ │ │ │ ├── Filter_white.svg │ │ │ │ ├── FullScreen_black.svg │ │ │ │ ├── FullScreen_white.svg │ │ │ │ ├── CancelMedium_black.svg │ │ │ │ ├── Scroll_black.svg │ │ │ │ ├── Scroll_white.svg │ │ │ │ ├── CancelMedium_white.svg │ │ │ │ ├── Broom_black.svg │ │ │ │ ├── Broom_white.svg │ │ │ │ ├── GitHub_white.svg │ │ │ │ ├── GitHub_black.svg │ │ │ │ ├── Close_black.svg │ │ │ │ ├── Close_white.svg │ │ │ │ ├── Play_black.svg │ │ │ │ ├── Play_white.svg │ │ │ │ ├── ChevronDown_white.svg │ │ │ │ ├── FontIncrease_black.svg │ │ │ │ ├── FontIncrease_white.svg │ │ │ │ ├── Mail_black.svg │ │ │ │ ├── Mail_white.svg │ │ │ │ ├── ChevronDown_black.svg │ │ │ │ ├── FontSize_black.svg │ │ │ │ ├── FontSize_white.svg │ │ │ │ ├── LibraryFill_black.svg │ │ │ │ ├── LibraryFill_white.svg │ │ │ │ ├── Document_black.svg │ │ │ │ ├── Document_white.svg │ │ │ │ ├── Unit_black.svg │ │ │ │ ├── Unit_white.svg │ │ │ │ ├── PauseBold_black.svg │ │ │ │ ├── PauseBold_white.svg │ │ │ │ ├── CheckBox_black.svg │ │ │ │ ├── CheckBox_white.svg │ │ │ │ ├── Megaphone_black.svg │ │ │ │ ├── Megaphone_white.svg │ │ │ │ ├── Edit_black.svg │ │ │ │ ├── Edit_white.svg │ │ │ │ ├── Menu_black.svg │ │ │ │ ├── Menu_white.svg │ │ │ │ ├── Education_black.svg │ │ │ │ ├── Education_white.svg │ │ │ │ ├── Heart_black.svg │ │ │ │ ├── Heart_white.svg │ │ │ │ ├── Pin_black.svg │ │ │ │ ├── Pin_white.svg │ │ │ │ ├── Asterisk_black.svg │ │ │ │ ├── Asterisk_white.svg │ │ │ │ ├── Cafe_black.svg │ │ │ │ ├── Cafe_white.svg │ │ │ │ ├── Dictionary_black.svg │ │ │ │ ├── Dictionary_white.svg │ │ │ │ ├── Unpin_black.svg │ │ │ │ ├── Unpin_white.svg │ │ │ │ ├── Cloud_black.svg │ │ │ │ ├── Cloud_white.svg │ │ │ │ ├── Leaf_black.svg │ │ │ │ ├── Layout_black.svg │ │ │ │ ├── Layout_white.svg │ │ │ │ ├── Leaf_white.svg │ │ │ │ ├── Delete_black.svg │ │ │ │ ├── Delete_white.svg │ │ │ │ └── PowerButton_black.svg │ │ │ ├── check_box │ │ │ │ ├── PartialAccept_black.svg │ │ │ │ ├── PartialAccept_white.svg │ │ │ │ ├── Accept_black.svg │ │ │ │ └── Accept_white.svg │ │ │ ├── spin_box │ │ │ │ ├── Up_black.svg │ │ │ │ ├── Up_white.svg │ │ │ │ ├── Down_black.svg │ │ │ │ └── Down_white.svg │ │ │ ├── tree_view │ │ │ │ ├── TreeViewClose_black.svg │ │ │ │ ├── TreeViewClose_white.svg │ │ │ │ ├── TreeViewOpen_black.svg │ │ │ │ └── TreeViewOpen_white.svg │ │ │ ├── table_view │ │ │ │ ├── Down_black.svg │ │ │ │ ├── Down_white.svg │ │ │ │ ├── Up_black.svg │ │ │ │ └── Up_white.svg │ │ │ └── info_bar │ │ │ │ ├── Success_dark.svg │ │ │ │ ├── Success_light.svg │ │ │ │ ├── Info_dark.svg │ │ │ │ ├── Info_light.svg │ │ │ │ ├── Warning_dark.svg │ │ │ │ └── Warning_light.svg │ │ └── i18n │ │ │ ├── qfluentwidgets.ar_AR.qm │ │ │ ├── qfluentwidgets.en_US.qm │ │ │ ├── qfluentwidgets.ru_RU.qm │ │ │ ├── qfluentwidgets.zh_CN.qm │ │ │ ├── qfluentwidgets.zh_HK.qm │ │ │ └── qfluentwidgets.zh_TW.qm │ ├── components │ │ ├── layout │ │ │ ├── __init__.py │ │ │ └── v_box_layout.py │ │ ├── __init__.py │ │ ├── dialog_box │ │ │ └── __init__.py │ │ ├── date_time │ │ │ └── __init__.py │ │ ├── material │ │ │ ├── __init__.py │ │ │ ├── acrylic_line_edit.py │ │ │ └── acrylic_tool_tip.py │ │ ├── settings │ │ │ └── __init__.py │ │ ├── navigation │ │ │ └── __init__.py │ │ └── widgets │ │ │ └── separator.py │ ├── window │ │ └── __init__.py │ ├── multimedia │ │ └── __init__.py │ ├── common │ │ ├── translator.py │ │ ├── __init__.py │ │ ├── screen.py │ │ ├── exception_handler.py │ │ └── font.py │ └── __init__.py ├── qframelesswindow │ ├── _rc │ │ ├── __init__.py │ │ ├── resource.qrc │ │ └── title_bar │ │ │ └── close.svg │ ├── webengine │ │ └── __init__.py │ └── utils │ │ └── __init__.py └── __init__.py ├── .github └── FUNDING.yml ├── docs ├── demo.png ├── logo.ico ├── logo.png ├── banner.png ├── logo.icns ├── win11.png └── souvenir.gif ├── app ├── resource │ ├── images │ │ └── logo.png │ ├── qss │ │ ├── dark │ │ │ ├── home_interface.qss │ │ │ ├── setting_interface.qss │ │ │ └── drop_card.qss │ │ └── light │ │ │ ├── home_interface.qss │ │ │ ├── setting_interface.qss │ │ │ └── drop_card.qss │ └── resource.qrc ├── __init__.py ├── common │ ├── signal_bus.py │ ├── style_sheet.py │ ├── setting.py │ └── config.py └── components │ └── tabbar_card.py ├── requirements.txt ├── main.py └── setup.py /lib/qfluentwidgets/_rc/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/qframelesswindow/_rc/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: odest 2 | buy_me_a_coffee: odest 3 | -------------------------------------------------------------------------------- /docs/demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/docs/demo.png -------------------------------------------------------------------------------- /docs/logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/docs/logo.ico -------------------------------------------------------------------------------- /docs/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/docs/logo.png -------------------------------------------------------------------------------- /docs/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/docs/banner.png -------------------------------------------------------------------------------- /docs/logo.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/docs/logo.icns -------------------------------------------------------------------------------- /docs/win11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/docs/win11.png -------------------------------------------------------------------------------- /lib/__init__.py: -------------------------------------------------------------------------------- 1 | from .qfluentwidgets import * 2 | from .qframelesswindow import * -------------------------------------------------------------------------------- /docs/souvenir.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/docs/souvenir.gif -------------------------------------------------------------------------------- /app/resource/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/app/resource/images/logo.png -------------------------------------------------------------------------------- /app/__init__.py: -------------------------------------------------------------------------------- 1 | # coding:utf-8 2 | from .common.config import cfg 3 | from .view.main_window import MainWindow 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/dark/flip_view.qss: -------------------------------------------------------------------------------- 1 | FlipView { 2 | background-color: transparent; 3 | border: none; 4 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/dark/info_badge.qss: -------------------------------------------------------------------------------- 1 | InfoBadge { 2 | padding: 1px 3px 1px 3px; 3 | color: black; 4 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/light/flip_view.qss: -------------------------------------------------------------------------------- 1 | FlipView { 2 | background-color: transparent; 3 | border: none; 4 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/light/info_badge.qss: -------------------------------------------------------------------------------- 1 | InfoBadge { 2 | padding: 1px 3px 1px 3px; 3 | color: white; 4 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/logo.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/dark/pips_pager.qss: -------------------------------------------------------------------------------- 1 | PipsPager { 2 | border: none; 3 | background-color: transparent; 4 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/light/pips_pager.qss: -------------------------------------------------------------------------------- 1 | PipsPager { 2 | border: none; 3 | background-color: transparent; 4 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/acrylic/noise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/acrylic/noise.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/Grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/Grid.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/Image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/Image.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/Line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/Line.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/Pivot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/Pivot.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/i18n/qfluentwidgets.ar_AR.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/i18n/qfluentwidgets.ar_AR.qm -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/i18n/qfluentwidgets.en_US.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/i18n/qfluentwidgets.en_US.qm -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/i18n/qfluentwidgets.ru_RU.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/i18n/qfluentwidgets.ru_RU.qm -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/i18n/qfluentwidgets.zh_CN.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/i18n/qfluentwidgets.zh_CN.qm -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/i18n/qfluentwidgets.zh_HK.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/i18n/qfluentwidgets.zh_HK.qm -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/i18n/qfluentwidgets.zh_TW.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/i18n/qfluentwidgets.zh_TW.qm -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/Acrylic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/Acrylic.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/Button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/Button.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/Canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/Canvas.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/Checkbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/Checkbox.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/ComboBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/ComboBox.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/DataGrid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/DataGrid.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/Expander.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/Expander.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/FlipView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/FlipView.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/Flyout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/Flyout.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/GridView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/GridView.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/InfoBar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/InfoBar.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/ListBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/ListBox.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/ListView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/ListView.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/MenuBar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/MenuBar.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/Slider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/Slider.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/TabView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/TabView.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/TextBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/TextBox.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/TitleBar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/TitleBar.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/ToolTip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/ToolTip.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/TreeView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/TreeView.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/Viewbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/Viewbox.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/Clipboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/Clipboard.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/CommandBar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/CommandBar.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/DatePicker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/DatePicker.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/InfoBadge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/InfoBadge.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/MenuFlyout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/MenuFlyout.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/NumberBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/NumberBox.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/PipsPager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/PipsPager.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/StackPanel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/StackPanel.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/TextBlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/TextBlock.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/TimePicker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/TimePicker.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/color_dialog/HuePanel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/color_dialog/HuePanel.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/AnimatedIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/AnimatedIcon.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/AppBarButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/AppBarButton.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/BreadcrumbBar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/BreadcrumbBar.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/CalendarView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/CalendarView.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/ColorPicker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/ColorPicker.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/ContentDialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/ContentDialog.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/IconElement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/IconElement.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/PasswordBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/PasswordBox.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/PersonPicture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/PersonPicture.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/ProgressBar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/ProgressBar.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/ProgressRing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/ProgressRing.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/RadioButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/RadioButton.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/RadioButtons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/RadioButtons.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/RatingControl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/RatingControl.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/RelativePanel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/RelativePanel.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/RepeatButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/RepeatButton.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/RichEditBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/RichEditBox.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/RichTextBlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/RichTextBlock.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/ScrollViewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/ScrollViewer.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/SplitButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/SplitButton.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/TeachingTip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/TeachingTip.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/ToggleButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/ToggleButton.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/ToggleSwitch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/ToggleSwitch.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/VerticalLine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/VerticalLine.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/AppBarSeparator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/AppBarSeparator.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/AutoSuggestBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/AutoSuggestBox.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/DropDownButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/DropDownButton.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/EasingFunction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/EasingFunction.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/HyperlinkButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/HyperlinkButton.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/NavigationView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/NavigationView.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/components/layout/__init__.py: -------------------------------------------------------------------------------- 1 | from .expand_layout import ExpandLayout 2 | from .flow_layout import FlowLayout 3 | from .v_box_layout import VBoxLayout -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/AppBarToggleButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/AppBarToggleButton.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/CalendarDatePicker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/CalendarDatePicker.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/CommandBarFlyout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/CommandBarFlyout.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/ConnectedAnimation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/ConnectedAnimation.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/MediaPlayerElement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/MediaPlayerElement.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/ToggleSplitButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/ToggleSplitButton.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/folder_list_dialog/Add_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/folder_list_dialog/Add_black.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/folder_list_dialog/Add_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/folder_list_dialog/Add_white.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/dark/media_player.qss: -------------------------------------------------------------------------------- 1 | CaptionLabel { 2 | color: white; 3 | } 4 | 5 | QGraphicsView { 6 | background: transparent; 7 | border: none 8 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/light/media_player.qss: -------------------------------------------------------------------------------- 1 | CaptionLabel { 2 | color: black; 3 | } 4 | 5 | QGraphicsView { 6 | background: transparent; 7 | border: none 8 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/ColorPaletteResources.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/ColorPaletteResources.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/controls/VariableSizedWrapGrid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/controls/VariableSizedWrapGrid.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/folder_list_dialog/Close_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/folder_list_dialog/Close_black.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/folder_list_dialog/Close_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odest/DonkeyDoc/HEAD/lib/qfluentwidgets/_rc/images/folder_list_dialog/Close_white.png -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/dark/tab_view.qss: -------------------------------------------------------------------------------- 1 | TabBar { 2 | border: none; 3 | background-color: transparent; 4 | } 5 | 6 | #view { 7 | background-color: transparent; 8 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/light/tab_view.qss: -------------------------------------------------------------------------------- 1 | TabBar { 2 | border: none; 3 | background-color: transparent; 4 | } 5 | 6 | #view { 7 | background-color: transparent; 8 | } -------------------------------------------------------------------------------- /lib/qframelesswindow/_rc/resource.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | title_bar/close.svg 4 | 5 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/components/__init__.py: -------------------------------------------------------------------------------- 1 | from .dialog_box import * 2 | from .layout import * 3 | from .settings import * 4 | from .widgets import * 5 | from .navigation import * 6 | from .date_time import * -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | PyQt5>=5.15.0 2 | pymupdf 3 | darkdetect 4 | pywin32==306; sys_platform=="win32" 5 | xcffib==1.5.0; sys_platform=="linux" 6 | pyobjc; sys_platform=="darwin" 7 | PyCocoa; sys_platform=="darwin" -------------------------------------------------------------------------------- /app/resource/qss/dark/home_interface.qss: -------------------------------------------------------------------------------- 1 | SettingInterface, 2 | #view { 3 | background-color: transparent; 4 | } 5 | 6 | QScrollArea { 7 | border: none; 8 | background-color: transparent; 9 | } 10 | -------------------------------------------------------------------------------- /app/resource/qss/light/home_interface.qss: -------------------------------------------------------------------------------- 1 | SettingInterface, 2 | #view { 3 | background-color: transparent; 4 | } 5 | 6 | QScrollArea { 7 | border: none; 8 | background-color: transparent; 9 | } 10 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/dark/card_widget.qss: -------------------------------------------------------------------------------- 1 | HeaderCardWidget #headerLabel { 2 | color: white; 3 | } 4 | 5 | HeaderCardWidget > #headerView, 6 | HeaderCardWidget > #view { 7 | background-color: transparent; 8 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/light/card_widget.qss: -------------------------------------------------------------------------------- 1 | HeaderCardWidget #headerLabel { 2 | color: black; 3 | } 4 | 5 | HeaderCardWidget > #headerView, 6 | HeaderCardWidget > #view { 7 | background-color: transparent; 8 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/window/__init__.py: -------------------------------------------------------------------------------- 1 | from .fluent_window import FluentWindow, MSFluentWindow, SplitFluentWindow, FluentTitleBar, MSFluentTitleBar, SplitTitleBar, FluentBackgroundTheme 2 | from .splash_screen import SplashScreen -------------------------------------------------------------------------------- /lib/qfluentwidgets/multimedia/__init__.py: -------------------------------------------------------------------------------- 1 | from .media_player import MediaPlayer, MediaPlayerBase 2 | from .media_play_bar import MediaPlayBarButton, SimpleMediaPlayBar, StandardMediaPlayBar 3 | from .video_widget import VideoWidget -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/light/setting_card_group.qss: -------------------------------------------------------------------------------- 1 | SettingCardGroup { 2 | background-color: transparent; 3 | } 4 | 5 | SettingCardGroup>QLabel { 6 | background-color: transparent; 7 | color: black; 8 | border: none; 9 | } -------------------------------------------------------------------------------- /app/common/signal_bus.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | from PyQt5.QtCore import QObject, pyqtSignal 3 | 4 | 5 | class SignalBus(QObject): 6 | """Signal bus""" 7 | 8 | micaEnableChanged = pyqtSignal(bool) 9 | 10 | 11 | signalBus = SignalBus() 12 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/dark/setting_card_group.qss: -------------------------------------------------------------------------------- 1 | SettingCardGroup { 2 | background-color: transparent; 3 | } 4 | 5 | SettingCardGroup>QLabel { 6 | background-color: transparent; 7 | color: white; 8 | border: none; 9 | } 10 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/components/dialog_box/__init__.py: -------------------------------------------------------------------------------- 1 | from .color_dialog import ColorDialog 2 | from .dialog import Dialog, MessageBox 3 | from .folder_list_dialog import FolderListDialog 4 | from .message_dialog import MessageDialog 5 | from .message_box_base import MessageBoxBase -------------------------------------------------------------------------------- /lib/qfluentwidgets/components/date_time/__init__.py: -------------------------------------------------------------------------------- 1 | from .calendar_picker import CalendarPicker 2 | from .date_picker import DatePickerBase, DatePicker, ZhDatePicker 3 | from .picker_base import PickerBase, PickerPanel, PickerColumnFormatter 4 | from .time_picker import TimePicker, AMTimePicker -------------------------------------------------------------------------------- /lib/qframelesswindow/_rc/title_bar/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/resource/qss/light/setting_interface.qss: -------------------------------------------------------------------------------- 1 | SettingInterface, #scroll_widget { 2 | background-color: transparent; 3 | } 4 | 5 | QScrollArea { 6 | border: none; 7 | background-color: transparent; 8 | } 9 | 10 | QLabel#setting_label { 11 | font: 33px 'Microsoft YaHei Light'; 12 | background-color: transparent; 13 | } 14 | -------------------------------------------------------------------------------- /app/resource/qss/dark/setting_interface.qss: -------------------------------------------------------------------------------- 1 | SettingInterface, #scroll_widget { 2 | background-color: transparent; 3 | } 4 | 5 | QScrollArea { 6 | border: none; 7 | background-color: transparent; 8 | } 9 | 10 | QLabel#setting_label { 11 | font: 33px 'Microsoft YaHei Light'; 12 | background-color: transparent; 13 | color: white; 14 | } 15 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/dark/teaching_tip.qss: -------------------------------------------------------------------------------- 1 | #titleLabel { 2 | font: 14px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 3 | font-weight: bold; 4 | color: white; 5 | background-color: transparent; 6 | } 7 | 8 | #contentLabel { 9 | font: 14px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 10 | color: white; 11 | background-color: transparent; 12 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/light/teaching_tip.qss: -------------------------------------------------------------------------------- 1 | #titleLabel { 2 | font: 14px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 3 | font-weight: bold; 4 | color: black; 5 | background-color: transparent; 6 | } 7 | 8 | #contentLabel { 9 | font: 14px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 10 | color: black; 11 | background-color: transparent; 12 | } -------------------------------------------------------------------------------- /app/resource/qss/dark/drop_card.qss: -------------------------------------------------------------------------------- 1 | #DropCard { 2 | background: transparent; 3 | border: 3px dashed --ThemeColorPrimary; 4 | border-radius: 5px; 5 | } 6 | 7 | #DropCard QLabel#area_label { 8 | font: 32px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 9 | font-weight: bold; 10 | background: transparent; 11 | border-radius: 5px; 12 | color: --ThemeColorPrimary; 13 | } -------------------------------------------------------------------------------- /app/resource/qss/light/drop_card.qss: -------------------------------------------------------------------------------- 1 | #DropCard { 2 | background: transparent; 3 | border: 3px dashed --ThemeColorPrimary; 4 | border-radius: 5px; 5 | } 6 | 7 | #DropCard QLabel#area_label { 8 | font: 32px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 9 | font-weight: bold; 10 | background: transparent; 11 | border-radius: 5px; 12 | color: --ThemeColorPrimary; 13 | } -------------------------------------------------------------------------------- /app/resource/resource.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | images/logo.png 4 | 5 | qss/dark/home_interface.qss 6 | qss/dark/setting_interface.qss 7 | qss/dark/drop_card.qss 8 | 9 | qss/light/home_interface.qss 10 | qss/light/setting_interface.qss 11 | qss/light/drop_card.qss 12 | 13 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/light/switch_button.qss: -------------------------------------------------------------------------------- 1 | QWidget { 2 | background-color: white; 3 | } 4 | 5 | SwitchButton { 6 | qproperty-spacing: 12; 7 | background-color: transparent; 8 | } 9 | 10 | SwitchButton>QLabel { 11 | color: black; 12 | font: 14px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 13 | background-color: transparent; 14 | border: none; 15 | } 16 | 17 | SwitchButton>QLabel:disabled { 18 | color: rgba(0, 0, 0, 0.36); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /app/components/tabbar_card.py: -------------------------------------------------------------------------------- 1 | # coding:utf-8 2 | from PyQt5.QtWidgets import QHBoxLayout 3 | 4 | from lib import CardWidget 5 | 6 | 7 | class TabBarCard(CardWidget): 8 | """TabBarCard""" 9 | 10 | def __init__(self, parent=None): 11 | super().__init__(parent) 12 | 13 | self.setMaximumHeight(48) 14 | 15 | self.main_layout = QHBoxLayout(self) 16 | self.main_layout.setContentsMargins(0, 0, 10, 0) 17 | self.main_layout.setSpacing(12) 18 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/dark/state_tool_tip.qss: -------------------------------------------------------------------------------- 1 | StateToolTip, 2 | ToastToolTip { 3 | background-color: --ThemeColorDark1; 4 | border: none; 5 | border-radius: 7px; 6 | } 7 | 8 | QLabel { 9 | color: black; 10 | background-color: transparent; 11 | font-family: 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 12 | border: none; 13 | } 14 | 15 | QLabel#titleLabel { 16 | font-size: 14px; 17 | } 18 | 19 | QLabel#contentLabel { 20 | font-size: 13px ; 21 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/light/state_tool_tip.qss: -------------------------------------------------------------------------------- 1 | StateToolTip, 2 | ToastToolTip { 3 | background-color: --ThemeColorDark1; 4 | border: none; 5 | border-radius: 7px; 6 | } 7 | 8 | QLabel { 9 | color: white; 10 | background-color: transparent; 11 | font-family: 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 12 | border: none; 13 | } 14 | 15 | QLabel#titleLabel { 16 | font-size: 14px; 17 | } 18 | 19 | QLabel#contentLabel { 20 | font-size: 13px; 21 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/dark/switch_button.qss: -------------------------------------------------------------------------------- 1 | QWidget { 2 | background-color: transparent; 3 | } 4 | 5 | SwitchButton { 6 | qproperty-spacing: 12; 7 | background-color: transparent; 8 | } 9 | 10 | SwitchButton>QLabel { 11 | font: 14px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 12 | color: white; 13 | background-color: transparent; 14 | border: none; 15 | } 16 | 17 | SwitchButton>QLabel:disabled { 18 | color: rgba(255, 255, 255, 0.36); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/light/tool_tip.qss: -------------------------------------------------------------------------------- 1 | ToolTip { 2 | border-radius: 4px; 3 | } 4 | 5 | ToolTip>#container { 6 | border: 1px solid rgba(0, 0, 0, 0.06); 7 | background-color: rgb(243, 243, 243); 8 | border-radius: 4px; 9 | } 10 | 11 | ToolTip>#container[transparent=true] { 12 | background-color: transparent; 13 | } 14 | 15 | 16 | QLabel { 17 | background-color: transparent; 18 | font: 12px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 19 | border: none; 20 | color: black; 21 | } -------------------------------------------------------------------------------- /app/common/style_sheet.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | from enum import Enum 3 | 4 | from lib import StyleSheetBase, Theme, qconfig 5 | 6 | 7 | class StyleSheet(StyleSheetBase, Enum): 8 | """Style sheet""" 9 | 10 | HOME_INTERFACE = "home_interface" 11 | SETTING_INTERFACE = "setting_interface" 12 | DROP_CARD = "drop_card" 13 | 14 | def path(self, theme=Theme.AUTO): 15 | theme = qconfig.theme if theme == Theme.AUTO else theme 16 | return f":/gallery/qss/{theme.value.lower()}/{self.value}.qss" 17 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/common/translator.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | from PyQt5.QtCore import QTranslator, QLocale 3 | 4 | 5 | class FluentTranslator(QTranslator): 6 | """ Translator of fluent widgets """ 7 | 8 | def __init__(self, locale: QLocale = None, parent=None): 9 | super().__init__(parent=parent) 10 | self.load(locale or QLocale()) 11 | 12 | def load(self, locale: QLocale): 13 | """ load translation file """ 14 | super().load(f":/qfluentwidgets/i18n/qfluentwidgets.{locale.name()}.qm") -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/light/check_box.qss: -------------------------------------------------------------------------------- 1 | CheckBox { 2 | color: black; 3 | font: 14px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 4 | spacing: 8px; 5 | min-width: 28px; 6 | min-height: 22px; 7 | outline: none; 8 | margin-left: 1px; 9 | } 10 | 11 | CheckBox::indicator { 12 | width: 18px; 13 | height: 18px; 14 | border-radius: 5px; 15 | border: 1px solid transparent; 16 | background-color: transparent; 17 | } 18 | 19 | CheckBox:disabled { 20 | color: rgba(0, 0, 0, 0.36); 21 | } 22 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/dark/check_box.qss: -------------------------------------------------------------------------------- 1 | CheckBox { 2 | color: white; 3 | font: 14px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 4 | spacing: 8px; 5 | min-width: 28px; 6 | min-height: 22px; 7 | outline: none; 8 | margin-left: 1px; 9 | } 10 | 11 | CheckBox::indicator { 12 | width: 18px; 13 | height: 18px; 14 | border-radius: 5px; 15 | border: 1px solid transparent; 16 | background-color: transparent; 17 | } 18 | 19 | CheckBox:disabled { 20 | color: rgba(255, 255, 255, 0.36); 21 | } 22 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Accept_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Accept_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/dark/tool_tip.qss: -------------------------------------------------------------------------------- 1 | ToolTip { 2 | border-radius: 4px; 3 | } 4 | 5 | ToolTip > #container { 6 | background-color: rgb(43, 43, 43); 7 | border: 1px solid rgb(28, 28, 28); 8 | border-radius: 4px; 9 | } 10 | 11 | ToolTip>#container[transparent=true] { 12 | background-color: transparent; 13 | border: 1px solid rgba(0, 0, 0, 50); 14 | } 15 | 16 | QLabel { 17 | background-color: transparent; 18 | font: 12px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 19 | color: white; 20 | border: none; 21 | } 22 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Remove_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Remove_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/components/material/__init__.py: -------------------------------------------------------------------------------- 1 | from .acrylic_menu import AcrylicMenu, AcrylicLineEditMenu, AcrylicCheckableMenu, AcrylicCheckableSystemTrayMenu, AcrylicSystemTrayMenu 2 | from .acrylic_line_edit import AcrylicLineEditBase, AcrylicLineEdit, AcrylicSearchLineEdit 3 | from .acrylic_combo_box import AcrylicComboBox, AcrylicComboBoxSettingCard, AcrylicEditableComboBox 4 | from .acrylic_widget import AcrylicWidget, AcrylicBrush 5 | from .acrylic_flyout import AcrylicFlyoutView, AcrylicFlyoutViewBase, AcrylicFlyout 6 | from .acrylic_tool_tip import AcrylicToolTip, AcrylicToolTipFilter -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/dark/label.qss: -------------------------------------------------------------------------------- 1 | FluentLabelBase { 2 | color: white; 3 | } 4 | 5 | HyperlinkLabel { 6 | color: --ThemeColorPrimary; 7 | border: none; 8 | background-color: transparent; 9 | text-align: left; 10 | padding: 0; 11 | margin: 0; 12 | } 13 | 14 | HyperlinkLabel[underline=true] { 15 | text-decoration: underline; 16 | } 17 | 18 | HyperlinkLabel[underline=false] { 19 | text-decoration: none; 20 | } 21 | 22 | HyperlinkLabel:hover { 23 | color: --ThemeColorDark1; 24 | } 25 | 26 | HyperlinkLabel:pressed { 27 | color: --ThemeColorLight1; 28 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/light/label.qss: -------------------------------------------------------------------------------- 1 | FluentLabelBase { 2 | color: black; 3 | } 4 | 5 | HyperlinkLabel { 6 | color: --ThemeColorPrimary; 7 | border: none; 8 | background-color: transparent; 9 | text-align: left; 10 | padding: 0; 11 | margin: 0; 12 | } 13 | 14 | HyperlinkLabel[underline=true] { 15 | text-decoration: underline; 16 | } 17 | 18 | HyperlinkLabel[underline=false] { 19 | text-decoration: none; 20 | } 21 | 22 | HyperlinkLabel:hover { 23 | color: --ThemeColorDark1; 24 | } 25 | 26 | HyperlinkLabel:pressed { 27 | color: --ThemeColorLight1; 28 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/components/settings/__init__.py: -------------------------------------------------------------------------------- 1 | from .setting_card import (SettingCard, SwitchSettingCard, RangeSettingCard, 2 | PushSettingCard, ColorSettingCard, HyperlinkCard, 3 | PrimaryPushSettingCard, ColorPickerButton, ComboBoxSettingCard) 4 | from .expand_setting_card import ExpandSettingCard, ExpandGroupSettingCard 5 | from .folder_list_setting_card import FolderListSettingCard 6 | from .options_setting_card import OptionsSettingCard 7 | from .custom_color_setting_card import CustomColorSettingCard 8 | from .setting_card_group import SettingCardGroup -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/check_box/PartialAccept_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/check_box/PartialAccept_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/CareRightSolid_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/CareRightSolid_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Down_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Down_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Up_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Up_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | PyQt-Fluent-Widgets 3 | =================== 4 | A fluent design widgets library based on PyQt5. 5 | 6 | Documentation is available in the docstrings and 7 | online at https://qfluentwidgets.com. 8 | 9 | Examples are available at https://github.com/zhiyiYo/PyQt-Fluent-Widgets/tree/master/examples. 10 | 11 | :copyright: (c) 2021 by zhiyiYo. 12 | :license: GPLv3 for non-commercial project, see README for more details. 13 | """ 14 | 15 | __version__ = "1.6.3" 16 | __author__ = "zhiyiYo" 17 | 18 | from .components import * 19 | from .common import * 20 | from .window import * 21 | from ._rc import resource -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/CareLeftSolid_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/CareLeftSolid_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/LeftArrow_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/LeftArrow_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/spin_box/Up_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/spin_box/Up_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/ChevronRightMed_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/spin_box/Down_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/spin_box/Down_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/check_box/Accept_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/check_box/Accept_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/ChevronRightMed_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/RightArrow_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/RightArrow_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Return_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Return_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/tree_view/TreeViewClose_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/tree_view/TreeViewClose_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/AcceptMedium_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/AcceptMedium_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Market_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Market_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Send_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Send_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/common/__init__.py: -------------------------------------------------------------------------------- 1 | from .config import * 2 | from .font import setFont, getFont 3 | from .auto_wrap import TextWrap 4 | from .icon import Action, Icon, getIconColor, drawSvgIcon, FluentIcon, drawIcon, FluentIconBase, writeSvg 5 | from .style_sheet import (setStyleSheet, getStyleSheet, setTheme, ThemeColor, themeColor, 6 | setThemeColor, applyThemeColor, FluentStyleSheet, StyleSheetBase, 7 | StyleSheetFile, StyleSheetCompose, CustomStyleSheet, toggleTheme, setCustomStyleSheet) 8 | from .smooth_scroll import SmoothScroll, SmoothMode 9 | from .translator import FluentTranslator 10 | from .router import qrouter, Router 11 | from .color import FluentThemeColor -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/CareUpSolid_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/CareUpSolid_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qframelesswindow/webengine/__init__.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | import sys 3 | 4 | from PyQt5.QtCore import Qt 5 | from PyQt5.QtWebEngineWidgets import QWebEngineView 6 | from qframelesswindow import AcrylicWindow, FramelessWindow 7 | 8 | 9 | class FramelessWebEngineView(QWebEngineView): 10 | """ Frameless web engine view """ 11 | 12 | def __init__(self, parent): 13 | if sys.platform == "win32" and isinstance(parent.window(), AcrylicWindow): 14 | parent.window().setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground) 15 | 16 | super().__init__(parent=parent) 17 | self.setHtml("") 18 | 19 | if isinstance(self.window(), FramelessWindow): 20 | self.window().updateFrameless() -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/CareDownSolid_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/CareDownSolid_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/SendFill_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/SendFill_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/dark/navigation_interface.qss: -------------------------------------------------------------------------------- 1 | NavigationPanel[menu=true] { 2 | background-color: rgb(32, 32, 32); 3 | border: 1px solid rgb(57, 57, 57); 4 | border-top-right-radius: 7px; 5 | border-bottom-right-radius: 7px; 6 | } 7 | 8 | NavigationPanel[menu=false] { 9 | background-color: transparent; 10 | border: 1px solid transparent; 11 | border-top-right-radius: 7px; 12 | border-bottom-right-radius: 7px; 13 | } 14 | 15 | NavigationPanel[transparent=true] { 16 | background-color: transparent; 17 | } 18 | 19 | QScrollArea, 20 | #scrollWidget { 21 | border: none; 22 | background-color: transparent; 23 | } 24 | 25 | /* NavigationInterface { 26 | background-color: rgb(32, 32, 32); 27 | } */ -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/light/navigation_interface.qss: -------------------------------------------------------------------------------- 1 | NavigationPanel[menu=true] { 2 | background-color: rgb(243, 243, 243); 3 | border: 1px solid rgb(229, 229, 229); 4 | border-top-right-radius: 7px; 5 | border-bottom-right-radius: 7px; 6 | } 7 | 8 | NavigationPanel[menu=false] { 9 | background-color: transparent; 10 | border: 1px solid transparent; 11 | border-top-right-radius: 7px; 12 | border-bottom-right-radius: 7px; 13 | } 14 | 15 | NavigationPanel[transparent=true] { 16 | background-color: transparent; 17 | } 18 | 19 | QScrollArea, #scrollWidget { 20 | border: none; 21 | background-color: transparent; 22 | } 23 | 24 | /* NavigationInterface { 25 | background-color: rgb(243, 243, 243); 26 | } */ -------------------------------------------------------------------------------- /lib/qfluentwidgets/common/screen.py: -------------------------------------------------------------------------------- 1 | from PyQt5.QtCore import QPoint, QRect 2 | from PyQt5.QtGui import QCursor 3 | from PyQt5.QtWidgets import QApplication 4 | 5 | 6 | def getCurrentScreen(): 7 | """ get current screen """ 8 | cursorPos = QCursor.pos() 9 | 10 | for s in QApplication.screens(): 11 | if s.geometry().contains(cursorPos): 12 | return s 13 | 14 | return None 15 | 16 | 17 | def getCurrentScreenGeometry(avaliable=True): 18 | """ get current screen geometry """ 19 | screen = getCurrentScreen() or QApplication.primaryScreen() 20 | 21 | # this should not happen 22 | if not screen: 23 | return QRect(0, 0, 1920, 1080) 24 | 25 | return screen.availableGeometry() if avaliable else screen.geometry() -------------------------------------------------------------------------------- /lib/qfluentwidgets/components/navigation/__init__.py: -------------------------------------------------------------------------------- 1 | from .navigation_widget import (NavigationWidget, NavigationPushButton, NavigationSeparator, NavigationToolButton, 2 | NavigationTreeWidget, NavigationTreeWidgetBase, NavigationAvatarWidget) 3 | from .navigation_panel import NavigationPanel, NavigationItemPosition, NavigationDisplayMode 4 | from .navigation_interface import NavigationInterface 5 | from .navigation_bar import NavigationBarPushButton, NavigationBar 6 | from .pivot import Pivot, PivotItem 7 | from .segmented_widget import (SegmentedItem, SegmentedWidget, SegmentedToolItem, SegmentedToolWidget, 8 | SegmentedToggleToolItem, SegmentedToggleToolWidget) 9 | from .breadcrumb import BreadcrumbBar, BreadcrumbItem -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/PlaySolid_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/PlaySolid_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/table_view/Down_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/table_view/Down_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/dark/list_view.qss: -------------------------------------------------------------------------------- 1 | ListView, 2 | ListWidget { 3 | background: transparent; 4 | outline: none; 5 | border: none; 6 | /* font: 13px 'Segoe UI', 'Microsoft YaHei'; */ 7 | selection-background-color: transparent; 8 | alternate-background-color: transparent; 9 | padding-left: 4px; 10 | padding-right: 4px; 11 | } 12 | 13 | ListView::item, 14 | ListWidget::item { 15 | background: transparent; 16 | border: 0px; 17 | padding-left: 11px; 18 | padding-right: 11px; 19 | height: 35px; 20 | } 21 | 22 | ListView::indicator, 23 | ListWidget::indicator { 24 | width: 18px; 25 | height: 18px; 26 | border-radius: 5px; 27 | border: none; 28 | background-color: transparent; 29 | margin-right: 4px; 30 | } 31 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Flag_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Bluetooth_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Bluetooth_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/ChevronDownMed_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Flag_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/light/list_view.qss: -------------------------------------------------------------------------------- 1 | ListView, 2 | ListWidget { 3 | background: transparent; 4 | outline: none; 5 | border: none; 6 | /* font: 13px 'Segoe UI', 'Microsoft YaHei'; */ 7 | selection-background-color: transparent; 8 | alternate-background-color: transparent; 9 | padding-left: 4px; 10 | padding-right: 4px; 11 | } 12 | 13 | ListView::item, 14 | ListWidget::item { 15 | background: transparent; 16 | border: 0px; 17 | padding-left: 11px; 18 | padding-right: 11px; 19 | height: 35px; 20 | } 21 | 22 | 23 | ListView::indicator, 24 | ListWidget::indicator { 25 | width: 18px; 26 | height: 18px; 27 | border-radius: 5px; 28 | border: none; 29 | background-color: transparent; 30 | margin-right: 4px; 31 | } 32 | 33 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/ChevronDownMed_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/ChevronRight_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/ChevronRight_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/tree_view/TreeViewOpen_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/tree_view/TreeViewOpen_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/common/exception_handler.py: -------------------------------------------------------------------------------- 1 | # coding:utf-8 2 | from copy import deepcopy 3 | 4 | 5 | 6 | def exceptionHandler(*default): 7 | """ decorator for exception handling 8 | 9 | Parameters 10 | ---------- 11 | *default: 12 | the default value returned when an exception occurs 13 | """ 14 | 15 | def outer(func): 16 | 17 | def inner(*args, **kwargs): 18 | try: 19 | return func(*args, **kwargs) 20 | except BaseException as e: 21 | value = deepcopy(default) 22 | if len(value) == 0: 23 | return None 24 | elif len(value) == 1: 25 | return value[0] 26 | 27 | return value 28 | 29 | return inner 30 | 31 | return outer 32 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/HomeFill_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/HomeFill_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/table_view/Up_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/table_view/Up_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/common/setting.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | from pathlib import Path 3 | from PyQt5.QtCore import QStandardPaths 4 | 5 | # about project 6 | YEAR = 2024 7 | AUTHOR = "odest" 8 | VERSION = "v1.0.0" 9 | APP_NAME = "DonkeyDoc" 10 | RELEASE_URL = "https://github.com/odest/DonkeyDoc/releases/latest" 11 | API_URL = "https://api.github.com/repos/odest/DonkeyDoc/releases/latest" 12 | 13 | # about config 14 | CONFIG_FOLDER = ( 15 | Path(QStandardPaths.writableLocation(QStandardPaths.AppDataLocation)) 16 | / APP_NAME 17 | ) 18 | CONFIG_FILE = CONFIG_FOLDER / "config.json" 19 | 20 | # about files 21 | SUPPORT_IMG_FORMAT = (".png", ".jpg", ".jpeg", ".bmp", ".tiff", ".svg") 22 | SUPPORT_FORMAT = ( 23 | ".pdf", 24 | ".epub", 25 | ".txt", 26 | ".mobi", 27 | ".xps", 28 | ".fb2", 29 | ".cbz", 30 | ) + SUPPORT_IMG_FORMAT 31 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/BackToWindow_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/BackToWindow_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/EraseTool_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/EraseTool_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/components/material/acrylic_line_edit.py: -------------------------------------------------------------------------------- 1 | # coding:utf-8 2 | from .acrylic_menu import AcrylicCompleterMenu, AcrylicLineEditMenu 3 | from ..widgets.line_edit import LineEdit, SearchLineEdit 4 | 5 | 6 | class AcrylicLineEditBase: 7 | """ Acrylic line edit base """ 8 | 9 | def __init__(self, *args, **kwargs) -> None: 10 | super().__init__(*args, **kwargs) 11 | 12 | def setCompleter(self, completer): 13 | super().setCompleter(completer) 14 | self.setCompleterMenu(AcrylicCompleterMenu(self)) 15 | 16 | def contextMenuEvent(self, e): 17 | menu = AcrylicLineEditMenu(self) 18 | menu.exec(e.globalPos()) 19 | 20 | 21 | 22 | class AcrylicLineEdit(AcrylicLineEditBase, LineEdit): 23 | """ Acrylic line edit """ 24 | 25 | 26 | class AcrylicSearchLineEdit(AcrylicLineEditBase, SearchLineEdit): 27 | """ Acrylic search line edit """ 28 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Filter_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Filter_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/FullScreen_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/FullScreen_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/common/font.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | from PyQt5.QtGui import QFont 3 | from PyQt5.QtWidgets import QWidget 4 | 5 | 6 | def setFont(widget: QWidget, fontSize=14, weight=QFont.Normal): 7 | """ set the font of widget 8 | 9 | Parameters 10 | ---------- 11 | widget: QWidget 12 | the widget to set font 13 | 14 | fontSize: int 15 | font pixel size 16 | 17 | weight: `QFont.Weight` 18 | font weight 19 | """ 20 | widget.setFont(getFont(fontSize, weight)) 21 | 22 | 23 | def getFont(fontSize=14, weight=QFont.Normal): 24 | """ create font 25 | 26 | Parameters 27 | ---------- 28 | fontSize: int 29 | font pixel size 30 | 31 | weight: `QFont.Weight` 32 | font weight 33 | """ 34 | font = QFont() 35 | font.setFamilies(['Segoe UI', 'Microsoft YaHei', 'PingFang SC']) 36 | font.setPixelSize(fontSize) 37 | font.setWeight(weight) 38 | return font -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | # coding:utf-8 2 | import os 3 | import sys 4 | 5 | from PyQt5.QtCore import Qt 6 | from PyQt5.QtWidgets import QApplication 7 | 8 | from app import cfg 9 | from app import MainWindow 10 | 11 | 12 | if __name__ == "__main__": 13 | # enable dpi scale 14 | if cfg.get(cfg.dpiScale) == "Auto": 15 | QApplication.setHighDpiScaleFactorRoundingPolicy( 16 | Qt.HighDpiScaleFactorRoundingPolicy.PassThrough 17 | ) 18 | QApplication.setAttribute(Qt.AA_EnableHighDpiScaling) 19 | else: 20 | os.environ["QT_ENABLE_HIGHDPI_SCALING"] = "0" 21 | os.environ["QT_SCALE_FACTOR"] = str(cfg.get(cfg.dpiScale)) 22 | 23 | QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps) 24 | 25 | # create application 26 | app = QApplication(sys.argv) 27 | app.setAttribute(Qt.AA_DontCreateNativeWidgetSiblings) 28 | 29 | # create main window 30 | w = MainWindow() 31 | w.show() 32 | 33 | app.exec_() 34 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/CancelMedium_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Scroll_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Scroll_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/CancelMedium_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Broom_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Broom_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/GitHub_white.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/GitHub_black.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/light/combo_box.qss: -------------------------------------------------------------------------------- 1 | ComboBox { 2 | border: 1px solid rgba(0, 0, 0, 0.073); 3 | border-radius: 5px; 4 | border-bottom: 1px solid rgba(0, 0, 0, 0.183); 5 | padding: 5px 31px 6px 11px; 6 | /* font: 14px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; */ 7 | color: black; 8 | background-color: rgba(255, 255, 255, 0.7); 9 | text-align: left; 10 | outline: none; 11 | } 12 | 13 | ComboBox:hover { 14 | background-color: rgba(249, 249, 249, 0.5); 15 | } 16 | 17 | ComboBox:pressed { 18 | background-color: rgba(249, 249, 249, 0.3); 19 | border-bottom: 1px solid rgba(0, 0, 0, 0.073); 20 | color: rgba(0, 0, 0, 0.63); 21 | } 22 | 23 | ComboBox:disabled { 24 | color: rgba(0, 0, 0, 0.36); 25 | background: rgba(249, 249, 249, 0.3); 26 | border: 1px solid rgba(0, 0, 0, 0.06); 27 | border-bottom: 1px solid rgba(0, 0, 0, 0.06); 28 | } 29 | 30 | ComboBox[isPlaceholderText=true] { 31 | color: rgba(0, 0, 0, 0.6063); 32 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/light/message_dialog.qss: -------------------------------------------------------------------------------- 1 | QWidget { 2 | background-color: white; 3 | border: 1px solid rgb(200, 200, 200); 4 | } 5 | 6 | QWidget#windowMask { 7 | background-color: rgba(255, 255, 255, 0.6); 8 | border: none; 9 | } 10 | 11 | QLabel { 12 | background-color: transparent; 13 | color: black; 14 | font-family: 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 15 | border: none; 16 | } 17 | 18 | QLabel#titleLabel { 19 | font-size: 18px; 20 | } 21 | 22 | QLabel#contentLabel { 23 | font-size: 14px; 24 | } 25 | 26 | QPushButton { 27 | background-color: rgb(204, 204, 204); 28 | font: 15px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 29 | border: transparent; 30 | } 31 | 32 | QPushButton:pressed:hover { 33 | background-color: rgb(153, 153, 153); 34 | } 35 | 36 | QPushButton:hover { 37 | background-color: rgb(230, 230, 230); 38 | } 39 | 40 | QPushButton:disabled { 41 | background-color: rgb(204, 204, 204); 42 | color: rgb(122, 122, 122); 43 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/dark/message_dialog.qss: -------------------------------------------------------------------------------- 1 | QWidget { 2 | background-color: rgb(23, 23, 23); 3 | border: 1px solid rgb(55, 55, 55); 4 | } 5 | 6 | QWidget#windowMask { 7 | background-color: rgba(0, 0, 0, 0.6); 8 | border: none; 9 | } 10 | 11 | QLabel { 12 | background-color: transparent; 13 | color: white; 14 | font-family: 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 15 | border: none; 16 | } 17 | 18 | QLabel#titleLabel { 19 | font-size: 18px; 20 | } 21 | 22 | QLabel#contentLabel { 23 | font-size: 14px; 24 | } 25 | 26 | QPushButton { 27 | background-color: rgb(51, 51, 51); 28 | font: 15px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 29 | border: transparent; 30 | color: white; 31 | } 32 | 33 | QPushButton:pressed:hover { 34 | background-color: rgb(102, 102, 102); 35 | } 36 | 37 | QPushButton:hover { 38 | background-color: rgb(35, 35, 35); 39 | } 40 | 41 | QPushButton:disabled { 42 | background-color: rgb(51, 51, 51); 43 | color: rgb(133, 133, 133); 44 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/dark/combo_box.qss: -------------------------------------------------------------------------------- 1 | ComboBox { 2 | border: 1px solid rgba(255, 255, 255, 0.053); 3 | border-radius: 5px; 4 | border-top: 1px solid rgba(255, 255, 255, 0.08); 5 | padding: 5px 31px 6px 11px; 6 | /* font: 14px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; */ 7 | color: white; 8 | background-color: rgba(255, 255, 255, 0.0605); 9 | text-align: left; 10 | outline: none; 11 | } 12 | 13 | ComboBox:hover { 14 | background-color: rgba(255, 255, 255, 0.0837); 15 | } 16 | 17 | ComboBox:pressed { 18 | background-color: rgba(255, 255, 255, 0.0326); 19 | border-top: 1px solid rgba(255, 255, 255, 0.053); 20 | color: rgba(255, 255, 255, 0.63); 21 | } 22 | 23 | ComboBox:disabled { 24 | color: rgba(255, 255, 255, 0.3628); 25 | background: rgba(255, 255, 255, 0.0419); 26 | border: 1px solid rgba(255, 255, 255, 0.053); 27 | border-top: 1px solid rgba(255, 255, 255, 0.053); 28 | } 29 | 30 | ComboBox[isPlaceholderText=true] { 31 | color: rgba(255, 255, 255, 0.6063); 32 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Close_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Close_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/color_dialog/Clear_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/color_dialog/Clear_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Play_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Play_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/ChevronDown_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/FontIncrease_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/FontIncrease_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Mail_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Mail_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/ChevronDown_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/FontSize_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/FontSize_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/LibraryFill_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/LibraryFill_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Document_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Document_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/common/config.py: -------------------------------------------------------------------------------- 1 | # coding:utf-8 2 | import sys 3 | 4 | from lib import ( 5 | qconfig, 6 | QConfig, 7 | ConfigItem, 8 | BoolValidator, 9 | OptionsValidator, 10 | OptionsConfigItem, 11 | ) 12 | 13 | from .setting import CONFIG_FILE 14 | 15 | 16 | def is_win_11(): 17 | """is Windows 11 18 | 19 | Returns: 20 | bool: if platform is windows11 return True 21 | """ 22 | return sys.platform == "win32" and sys.getwindowsversion().build >= 22000 23 | 24 | 25 | class Config(QConfig): 26 | """Config of application""" 27 | 28 | # main window 29 | micaEnabled = ConfigItem( 30 | "MainWindow", "MicaEnabled", is_win_11(), BoolValidator() 31 | ) 32 | dpiScale = OptionsConfigItem( 33 | "MainWindow", 34 | "DpiScale", 35 | "Auto", 36 | OptionsValidator([1, 1.25, 1.5, 1.75, 2, "Auto"]), 37 | restart=True, 38 | ) 39 | 40 | # software update 41 | checkUpdateAtStartUp = ConfigItem( 42 | "Update", "CheckUpdateAtStartUp", True, BoolValidator() 43 | ) 44 | 45 | 46 | cfg = Config() 47 | qconfig.load(CONFIG_FILE, cfg) 48 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/dark/info_bar.qss: -------------------------------------------------------------------------------- 1 | InfoBar { 2 | border: 1px solid rgb(29, 29, 29); 3 | border-radius: 6px; 4 | background-color: rgb(39, 39, 39); 5 | } 6 | 7 | #titleLabel { 8 | font: 14px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 9 | font-weight: bold; 10 | color: white; 11 | background-color: transparent; 12 | } 13 | 14 | #contentLabel { 15 | font: 14px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 16 | color: white; 17 | background-color: transparent; 18 | } 19 | 20 | InfoBar[type="Info"] { 21 | background-color: rgb(39, 39, 39); 22 | } 23 | 24 | InfoBar[type="Success"] { 25 | background-color: rgb(57, 61, 27); 26 | } 27 | 28 | InfoBar[type="Warning"] { 29 | background-color: rgb(67, 53, 25); 30 | } 31 | 32 | InfoBar[type="Error"] { 33 | background-color: rgb(68, 39, 38); 34 | } 35 | 36 | InfoBarCloseButton { 37 | background-color: transparent; 38 | border-radius: 5px; 39 | } 40 | 41 | InfoBarCloseButton:hover { 42 | background-color: rgba(255, 255, 255, 9); 43 | } 44 | 45 | InfoBarCloseButton:pressed { 46 | background-color: rgba(255, 255, 255, 6); 47 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/light/info_bar.qss: -------------------------------------------------------------------------------- 1 | InfoBar { 2 | border: 1px solid rgb(229, 229, 229); 3 | border-radius: 6px; 4 | background-color: rgb(244, 244, 244); 5 | } 6 | 7 | #titleLabel { 8 | font: 14px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 9 | font-weight: bold; 10 | color: black; 11 | background-color: transparent; 12 | } 13 | 14 | #contentLabel { 15 | font: 14px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 16 | color: black; 17 | background-color: transparent; 18 | } 19 | 20 | InfoBar[type="Info"] { 21 | background-color: rgb(244, 244, 244); 22 | } 23 | 24 | InfoBar[type="Success"] { 25 | background-color: rgb(223, 246, 221); 26 | } 27 | 28 | InfoBar[type="Warning"] { 29 | background-color: rgb(255, 244, 206); 30 | } 31 | 32 | InfoBar[type="Error"] { 33 | background-color: rgb(253, 231, 233); 34 | } 35 | 36 | InfoBarCloseButton { 37 | background-color: transparent; 38 | border-radius: 5px; 39 | } 40 | 41 | InfoBarCloseButton:hover { 42 | background-color: rgba(0, 0, 0, 9); 43 | } 44 | 45 | InfoBarCloseButton:pressed { 46 | background-color: rgba(0, 0, 0, 6); 47 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Unit_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Unit_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/PauseBold_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/PauseBold_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/CheckBox_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/CheckBox_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /lib/qframelesswindow/utils/__init__.py: -------------------------------------------------------------------------------- 1 | # coding:utf-8 2 | import sys 3 | 4 | if sys.platform == "win32": 5 | from .win32_utils import WindowsMoveResize as MoveResize 6 | from .win32_utils import getSystemAccentColor 7 | elif sys.platform == "darwin": 8 | from .mac_utils import MacMoveResize as MoveResize 9 | from .mac_utils import getSystemAccentColor 10 | else: 11 | from .linux_utils import LinuxMoveResize as MoveResize 12 | from .linux_utils import getSystemAccentColor 13 | 14 | 15 | def startSystemMove(window, globalPos): 16 | """ resize window 17 | 18 | Parameters 19 | ---------- 20 | window: QWidget 21 | window 22 | 23 | globalPos: QPoint 24 | the global point of mouse release event 25 | """ 26 | MoveResize.startSystemMove(window, globalPos) 27 | 28 | 29 | def starSystemResize(window, globalPos, edges): 30 | """ resize window 31 | 32 | Parameters 33 | ---------- 34 | window: QWidget 35 | window 36 | 37 | globalPos: QPoint 38 | the global point of mouse release event 39 | 40 | edges: `Qt.Edges` 41 | window edges 42 | """ 43 | MoveResize.starSystemResize(window, globalPos, edges) 44 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Megaphone_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Megaphone_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Edit_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Edit_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Menu_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Menu_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/light/folder_list_dialog.qss: -------------------------------------------------------------------------------- 1 | QWidget { 2 | background-color: white; 3 | border: 1px solid rgb(200, 200, 200); 4 | } 5 | 6 | QWidget#windowMask { 7 | background-color: rgba(255, 255, 255, 0.6); 8 | border: none; 9 | } 10 | 11 | QLabel { 12 | color: black; 13 | border: none; 14 | background-color: transparent; 15 | } 16 | 17 | QLabel#titleLabel { 18 | font: 20px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 19 | } 20 | 21 | QLabel#contentLabel { 22 | font: 14px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 23 | } 24 | 25 | QPushButton#completeButton { 26 | color: black; 27 | background-color: rgb(204, 204, 204); 28 | padding: 9px 51px 9px 51px; 29 | font: 15px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 30 | border: none; 31 | } 32 | 33 | QPushButton#completeButton:pressed:hover { 34 | background-color: rgb(153, 153, 153); 35 | } 36 | 37 | QPushButton#completeButton:hover { 38 | background-color: rgb(230, 230, 230); 39 | } 40 | 41 | QPushButton#completeButton:disabled { 42 | background-color: rgb(204, 204, 204); 43 | color: rgb(122, 122, 122); 44 | } 45 | 46 | QScrollArea{ 47 | border: none; 48 | } 49 | 50 | 51 | #scrollWidget{ 52 | border: none; 53 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Education_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Education_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Heart_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Heart_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Pin_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Pin_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Asterisk_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Asterisk_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Cafe_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Cafe_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/qss/dark/folder_list_dialog.qss: -------------------------------------------------------------------------------- 1 | QWidget { 2 | background-color: rgb(23, 23, 23); 3 | border: 1px solid rgb(53, 53, 53); 4 | } 5 | 6 | QWidget#windowMask { 7 | background-color: rgba(0, 0, 0, 0.6); 8 | border: none; 9 | } 10 | 11 | QLabel { 12 | border: none; 13 | color: white; 14 | background-color: transparent; 15 | } 16 | 17 | QLabel#titleLabel { 18 | font: 25px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 19 | } 20 | 21 | QLabel#contentLabel { 22 | font: 18px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 23 | } 24 | 25 | QPushButton#completeButton { 26 | background-color: rgb(51, 51, 51); 27 | padding: 11px 64px 11px 64px; 28 | font: 19px 'Segoe UI', 'Microsoft YaHei', 'PingFang SC'; 29 | border: none; 30 | height: 20px; 31 | width: 55px; 32 | color: white; 33 | } 34 | 35 | QPushButton#completeButton:pressed:hover { 36 | background-color: rgb(102, 102, 102); 37 | } 38 | 39 | QPushButton#completeButton:hover { 40 | background-color: rgb(35, 35, 35); 41 | } 42 | 43 | QPushButton#completeButton:disabled { 44 | background-color: rgb(51, 51, 51); 45 | color: rgb(122, 122, 122); 46 | } 47 | 48 | QScrollArea{ 49 | border: none; 50 | background-color: rgb(23, 23, 23); 51 | } 52 | 53 | 54 | #scrollWidget{ 55 | border: none; 56 | } -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Dictionary_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Dictionary_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/components/material/acrylic_tool_tip.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | from PyQt5.QtCore import QRect, QRectF 3 | from PyQt5.QtGui import QPainterPath 4 | from PyQt5.QtWidgets import QApplication, QFrame 5 | 6 | from .acrylic_widget import AcrylicWidget 7 | from ..widgets.tool_tip import ToolTip, ToolTipFilter 8 | 9 | 10 | class AcrylicToolTipContainer(AcrylicWidget, QFrame): 11 | """ Acrylic tool tip container """ 12 | 13 | def __init__(self, parent=None): 14 | super().__init__(parent=parent) 15 | self.setProperty("transparent", True) 16 | 17 | def acrylicClipPath(self): 18 | path = QPainterPath() 19 | path.addRoundedRect(QRectF(self.rect().adjusted(1, 1, -1, -1)), 3, 3) 20 | return path 21 | 22 | 23 | class AcrylicToolTip(ToolTip): 24 | """ Acrylic tool tip """ 25 | 26 | def _createContainer(self): 27 | return AcrylicToolTipContainer(self) 28 | 29 | def showEvent(self, e): 30 | pos = self.pos() + self.container.pos() 31 | self.container.acrylicBrush.grabImage(QRect(pos, self.container.size())) 32 | return super().showEvent(e) 33 | 34 | 35 | class AcrylicToolTipFilter(ToolTipFilter): 36 | """ Acrylic tool tip filter """ 37 | 38 | def _createToolTip(self): 39 | return AcrylicToolTip(self.parent().toolTip(), self.parent().window()) 40 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/info_bar/Success_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/components/widgets/separator.py: -------------------------------------------------------------------------------- 1 | # coding:utf-8 2 | from PyQt5.QtCore import Qt, pyqtSignal 3 | from PyQt5.QtGui import QPixmap, QPainter, QColor 4 | from PyQt5.QtWidgets import QWidget 5 | 6 | from ...common.style_sheet import isDarkTheme 7 | 8 | 9 | class HorizontalSeparator(QWidget): 10 | """ Horizontal separator """ 11 | 12 | def __init__(self, parent=None): 13 | super().__init__(parent=parent) 14 | self.setFixedHeight(3) 15 | 16 | def paintEvent(self, e): 17 | painter = QPainter(self) 18 | painter.setRenderHints(QPainter.Antialiasing) 19 | 20 | if isDarkTheme(): 21 | painter.setPen(QColor(255, 255, 255, 51)) 22 | else: 23 | painter.setPen(QColor(0, 0, 0, 22)) 24 | 25 | painter.drawLine(0, 1, self.width(), 1) 26 | 27 | 28 | class VerticalSeparator(QWidget): 29 | """ Vertical separator """ 30 | 31 | def __init__(self, parent=None): 32 | super().__init__(parent=parent) 33 | self.setFixedWidth(3) 34 | 35 | def paintEvent(self, e): 36 | painter = QPainter(self) 37 | painter.setRenderHints(QPainter.Antialiasing) 38 | 39 | if isDarkTheme(): 40 | painter.setPen(QColor(255, 255, 255, 51)) 41 | else: 42 | painter.setPen(QColor(0, 0, 0, 22)) 43 | 44 | painter.drawLine(1, 0, 1, self.height()) -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/info_bar/Success_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | import setuptools 2 | 3 | 4 | __version__ = "1.0.0" 5 | 6 | with open("README.md", encoding="utf-8") as f: 7 | long_description = f.read() 8 | 9 | setuptools.setup( 10 | name="DonkeyDoc", 11 | version=__version__, 12 | keywords="cross-platform pyqt5 pdf-viewer ebook-reade pdf-reader fluent pdf-tools doc-viewer", 13 | author="odest", 14 | author_email="destrochloridium@gmail.com", 15 | description="A cross-platform fluent Doc Viewer.", 16 | long_description=long_description, 17 | long_description_content_type="text/markdown", 18 | license="GPLv3", 19 | url="https://github.com/odest/DonkeyDoc", 20 | packages=setuptools.find_packages(), 21 | install_requires=[ 22 | "PyQt5>=5.15.0", 23 | "pymupdf", 24 | "darkdetect", 25 | "pywin32;platform_system=='Windows'", 26 | "xcffib;platform_system=='Linux'", 27 | "pyobjc;platform_system=='Darwin'", 28 | "PyCocoa;platform_system=='Darwin'", 29 | ], 30 | classifiers=[ 31 | "Programming Language :: Python :: 3", 32 | "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", 33 | "Operating System :: OS Independent", 34 | ], 35 | project_urls={ 36 | "Source Code": "https://github.com/odest/DonkeyDoc", 37 | "Bug Tracker": "https://github.com/odest/DonkeyDoc/issues", 38 | }, 39 | ) 40 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Unpin_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Unpin_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Cloud_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Cloud_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/info_bar/Info_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/info_bar/Info_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/info_bar/Warning_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/info_bar/Warning_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Leaf_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Layout_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Layout_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Leaf_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/components/layout/v_box_layout.py: -------------------------------------------------------------------------------- 1 | # coding:utf-8 2 | from typing import List 3 | from PyQt5.QtCore import Qt 4 | from PyQt5.QtWidgets import QVBoxLayout, QWidget 5 | 6 | 7 | class VBoxLayout(QVBoxLayout): 8 | """ Vertical box layout """ 9 | 10 | def __init__(self, parent): 11 | super().__init__(parent) 12 | self.widgets = [] 13 | 14 | def addWidgets(self, widgets: List[QWidget], stretch=0, alignment=Qt.AlignTop): 15 | """ add widgets to layout """ 16 | for widget in widgets: 17 | self.addWidget(widget, stretch, alignment) 18 | 19 | def addWidget(self, widget: QWidget, stretch=0, alignment=Qt.AlignTop): 20 | """ add widget to layout """ 21 | super().addWidget(widget, stretch, alignment) 22 | self.widgets.append(widget) 23 | widget.show() 24 | 25 | def removeWidget(self, widget: QWidget): 26 | """ remove widget from layout but not delete it """ 27 | super().removeWidget(widget) 28 | self.widgets.remove(widget) 29 | 30 | def deleteWidget(self, widget: QWidget): 31 | """ remove widget from layout and delete it """ 32 | self.removeWidget(widget) 33 | widget.hide() 34 | widget.deleteLater() 35 | 36 | def removeAllWidget(self): 37 | """ remove all widgets from layout """ 38 | for widget in self.widgets: 39 | super().removeWidget(widget) 40 | 41 | self.widgets.clear() 42 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Delete_black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/Delete_white.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/qfluentwidgets/_rc/images/icons/PowerButton_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | --------------------------------------------------------------------------------