Skip to content

Commit

Permalink
docs: add dev doc for dfmext::DFMExtMenuPlugin
Browse files Browse the repository at this point in the history
as title

Log: dev doc
  • Loading branch information
Johnson-zs authored and deepin-bot[bot] committed Jul 17, 2023
1 parent 6747db2 commit bda8089
Show file tree
Hide file tree
Showing 5 changed files with 82 additions and 6 deletions.
1 change: 0 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,6 @@ add_subdirectory(src/plugins)
add_subdirectory(src/external)
add_subdirectory(src/tools)

# docs
# docs
set(BUILD_DOCS ON CACHE BOOL "Generate doxygen-based documentation")
find_package(Doxygen)
Expand Down
1 change: 1 addition & 0 deletions debian/dde-file-manager.install
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ usr/share/dbus-1/services/org.deepin.filemanager.server.service
usr/share/dbus-1/system-services/com.deepin.filemanager.daemon.service
usr/share/deepin-manual/manual-assets/application
usr/share/polkit-1/actions/*.policy
usr/share/qt5/doc
usr/lib/systemd/system/ lib/systemd/
usr/lib/systemd/user/
etc/dbus-1/system.d/com.deepin.filemanager.daemon.conf
Expand Down
4 changes: 0 additions & 4 deletions docs/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
#
# SPDX-License-Identifier: LGPL-3.0-or-later

set (QCH_INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/qt5/doc CACHE STRING "QCH install location")
set (DOXYGEN_GENERATE_HTML "YES" CACHE STRING "Doxygen HTML output")
set (DOXYGEN_GENERATE_XML "NO" CACHE STRING "Doxygen XML output")
Expand Down
49 changes: 49 additions & 0 deletions docs/dfm-extension/dfmextmenuplugin.zh_CN.dox
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/*!
@~chinese
@ingroup dfm-extension
@file dfmextmenuplugin.h


@class dfmext::DFMExtMenuPlugin dfmextmenuplugin.h
@brief 第三方开发者应该继承并实现的接口类,并且在元接口 dfm_extension_menu 中返回派生的类对象

@fn DFMExtMenuPlugin::DFMExtMenuPlugin()
@brief 构造函数

@fn void DFMExtMenuPlugin::initialize(DFMEXT::DFMExtMenuProxy *proxy)
@brief 插件初始化接口。文管主动调用,在其他所有接口被文管调用前调用,文管将 proxy 传入给扩展插件
@param[in] proxy 可认为是文管主程序的进程

@fn bool DFMExtMenuPlugin::buildNormalMenu(DFMExtMenu *main,
const std::string &currentUrl,
const std::string &focusUrl,
const std::list<std::string> &urlList,
bool onDesktop)
@brief 文管主动调用,右键菜单在文件上触发时调用
@param[in] main 当前的右键菜单
@param[in] urlList 选中的所有文件列表的文件路径/
@param[in] currentUrl 右键点击的文件路径所在目录的路径
@param[in] focusUrl 当前右键选中文件的路径
@param[in] onDesktop true 代表操作是在桌面触发的
@return 如果没有注册该接口的回调则返回 false,反之则返回回调函数的结果

@fn bool DFMExtMenuPlugin::buildEmptyAreaMenu(DFMExtMenu *main, const std::string &currentUrl, bool onDesktop)
@brief 文管主动调用,右键菜单在空白区域触发时调用
@param[in] main 当前的右键菜单
@param[in] currentUrl 右键点击的文件路径所在目录的路径
@param[in] onDesktop true 代表操作是在桌面触发的
@return 如果没有注册该接口的回调则返回 false,反之则返回回调函数的结果

@fn void DFMExtMenuPlugin::registerInitialize(const DFMExtMenuPlugin::InitializeFunc &func)
@brief `initialize` 接口的注册函数,第三方开发者主动注册
@param[in] func 回调函数

@fn void DFMExtMenuPlugin::registerBuildNormalMenu(const DFMExtMenuPlugin::BuildNormalMenuFunc &func)
@brief `buildNormalMenu` 接口的注册函数,第三方开发者主动注册
@param[in] func 回调函数

@fn void DFMExtMenuPlugin::registerBuildEmptyAreaMenu(const DFMExtMenuPlugin::BuildEmptyAreaMenuFunc &func)
@brief `buildEmptyAreaMenu` 接口的注册函数,第三方开发者主动注册
@param[in] func 回调函数

*/
33 changes: 32 additions & 1 deletion docs/dfm-extension/index.zh_CN.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,33 @@
@page dfm-extension dfm-extension
@brief 文件管理器扩展开发库
@brief 文件管理器扩展开发库

# 模块介绍

文件管理器(以下简称文管,dde-file-manager)提供一套插件开发接口来支持**右键菜单****文件角标**两个需求的开发接口。

插件是一种在不需要改动并重新编译主程序本身的情况下去扩展主程序功能的一种机制。

文件管理器的插件机制是由文件管理器提供一个扩展库 `libdfm-extension.so` 来提供接口,这是一个纯 C/C++ 接口的库。第三方开发者通过加载该扩展库,按照文管提供的标准来调用和实现相应接口,共同完成定制需求的功能扩展。

在文件管理器启动时,会去检测目录 `/usr/lib/[arch]/dde-file-manager/plugins/extensions` 下的所有文件(其中 [arch] 代表平台架构,如 ARM64 下为 aarch64-linux-gnu,AMD 64下为 x86_64-linux-gnu), 并检测是否是一个正常的动态库文件,如果是则尝试加载,因此第三方开发者应该将扩展插件**安装到此目录下**。如果加载成功,文管将会检查扩展插件是否实现了相应的**元接口**,如果通过了检查,文管将与第三方扩展插件开始正常业务交互。

@ref group_dfm-extension "接口文档"

# 如何使用模块



# 使用示例



@defgroup dfm-extension

@brief 文件管理器扩展开发库

@details 示例文档:

@subpage dfm-extension

@anchor group_dfm-extension

0 comments on commit bda8089

Please sign in to comment.