如果你安装了libdde-file-manager-dev
你可以在如下路径找到menuinterface.h
在/etc/apt/source.list中添加如下源:
deb-src http://pools.corp.deepin.com/deepin unstable main non-free
升级安装libdde-file-manager-dev
sudo apt-get update
sudo apt-get install libdde-file-manager-dev
/usr/include/dde-file-manager/menuinterface.h
同样可以在 git clone https://github.com/linuxdeepin/dde-file-manager 下载源码到dde-file-manager
, 切到develop2.0分支
可以找到dde-file-manager/dde-file-manager-plugins/plugininterfaces/menu/menuinterface.h
const QString &file
表示需要显示脚本的文件完整路径virtual QList<QAction*> additionalMenu(const QStringList &files, const QString& currentDir) 实现这个接口可以扩展选中文件的右键菜单
const QStringList &files
表示选中的文件的完整路径列表const QString& currentDir
表示选中的文件所在的目录QList<QAction*>
返回一组QAction指针列表virtual QList<QAction*> additionalEmptyMenu(const QString ¤tDir) 实现这个接口可以扩展空白处的右键菜单
const QString& currentDir
表示空白处所在的文件目录QList<QAction*>
返回一组QAction指针列表/usr/lib/x86_64-linux-gnu/dde-file-manager/plugins/menu/
64位/usr/lib/x86_32-linux-gnu/dde-file-manager/plugins/menu/
32位 /usr/lib/mipsel-linux-gnu//dde-file-manager/plugins/menu/
/usr/lib/sw_64-linux-gnu/dde-file-manager/plugins/menu/
#ifndef MENUINTERFACE
#define MENUINTERFACE
#include <QList>
#include <QIcon>
#include <QAction>
#include <QWidget>
/*
* The menu interface of dde-file-manager
* 文件管理器的右键菜单插件接口
*/
class MenuInterface
{
public:
virtual ~MenuInterface() {}
/*!
* \brief additionalIcons
* \param file: the file path
* \return QList<QIcon>: corner mark icon list of the file which you want to by drawed
*/
/*!
* \brief additionalIcons 角标接口
* \param file: 文件路径
* \return QList<QIcon>: 返回一组QIcon列表,这些icon就是角标
*/
virtual QList<QIcon> additionalIcons(const QString &file)
{
Q_UNUSED(file)
QList<QIcon> icons;
return icons;
}
/*!
* \brief additionalMenu
* \param files: selected files list
* \param currentDir : the current dir of menu which will be showed
* \return QList<QAction*>: QAction pointer list
*/
/*!
* \brief additionalMenu 选中文件菜单接口
* \param files: 选中的文件路径列表
* \param currentDir:右键所在的文件目录
* \return QList<QAction*>:返回一组QAction指针列表,每个action对应菜单的一个菜单项
*/
virtual QList<QAction*> additionalMenu(const QStringList &files, const QString& currentDir){
Q_UNUSED(files)
Q_UNUSED(currentDir)
QList<QAction*> actions;
return actions;
}
/*!
* \brief additionalEmptyMenu
* \param currentDir: the current dir of empty area menu which will be showed
* \return QList<QAction*>: QAction pointer list
*/
/*!
* \brief additionalEmptyMenu 空白菜单接口
* \param currentDir: 空白菜单所在的文件目录
* \return QList<QAction*>:返回一组QAction指针列表,每个action对应菜单的一个菜单项
*/
virtual QList<QAction*> additionalEmptyMenu(const QString ¤tDir){
Q_UNUSED(currentDir)
QList<QAction*> actions;
return actions;
}
};
/*
* The property dialog expand info interface of dde-file-manager
* 文件管理器的属性对话框插件接口
*/
class PropertyDialogExpandInfoInterface
{
public:
virtual ~PropertyDialogExpandInfoInterface() {}
/*!
* \brief expandWidget
* \param file: the file path
* \return QWidget*: the widget which will be showed in property dialog
*/
/*!
* \brief expandWidget 属性子控件接口
* \param file:需要扩展属性显示的文件路径
* \return QWidget*:返回对应的属性控件指针
*/
virtual QWidget* expandWidget(const QString& file) {
Q_UNUSED(file)
return new QWidget();
}
/*!
* \brief expandWidgetTitle
* \return QString: the title of the QWidget which will be showed in property dialog
*/
/*!
* \brief expandWidgetTitle 属性子控件对应的标题即可
* \return QString: 返回对应扩展属性控件的标题
*/
virtual QString expandWidgetTitle(){
return "";
}
};
#define MenuInterface_iid "com.deepin.dde-file-manager.MenuInterface"
Q_DECLARE_INTERFACE(MenuInterface, MenuInterface_iid)
#define PropertyDialogExpandInfoInterface_iid "com.deepin.dde-file-manager.PropertyDialogExpandInfoInterface"
Q_DECLARE_INTERFACE(PropertyDialogExpandInfoInterface, PropertyDialogExpandInfoInterface_iid)
#endif // MENUINTERFACE
通用字段
MenuType
菜单类型(必须指定)
SingleFile
选中单个文件MultiFiles
选中多个文件SingleDir
选中单个目录MultiDirs
选中多个目录MultiFileDirs
选中多个文件和目录EmptyArea
空白区域Icon
菜单项的指示图标(可选)
Icon
: /home/djf/Music/usb_normal_16px.svg
Text[local]
根据不同的语言环境给出不同的菜单文本(必须指定) Text[zh_CN]
: sub文件SingleFile
Text[en]
: sub文件SingleFile
Exec
点击菜单项执行的命令(必须指定) Exec
: dde-file-manager
启动文件管理器 SubMenu
:子菜单列表,子菜单列表不需要再次指定MenuType
字段,其他字段参数一样,支持SubMenu中嵌套无限层级级菜单。如果MenuType为SingleFile
或者MultiFiles
,可以增加下面两个字段来细化菜单控制
;
隔开 MimeType
:text/plain;image/jpeg
Suffix 文件的后缀,如果指定了这个参数,表示只拓展后缀名为指定后缀的文件的右键菜单;以;
隔开
Suffix
: md;txt
如果MimeType
和Suffix
两个参数同时指定,表示文件类型为MimeType
且后缀名为Suffix
的文件才支持扩展右键菜单
/home/djf/.config/deepin/dde-file-manager/menuextensions
[
{
"MenuType": "SingleFile",
"Icon": "/home/djf/Music/usb_normal_16px.svg",
"Text[zh_CN]": "文件SingleFile",
"Text[zh_HK]": "文件SingleFile",
"Text[zh_TW]": "文件SingleFile",
"MimeType": "",
"Suffix": "md;",
"Exec": "",
"SubMenu": [
{
"Icon": "111111111",
"Text[zh_CN]": "sub文件SingleFile",
"Text[zh_HK]": "sub文件SingleFile",
"Text[zh_TW]": "sub文件SingleFile",
"Exec": "dde-file-manager",
"SubMenu": [
{
"Icon": "dssd",
"Text[zh_CN]": "sub文件SingleFile",
"Text[zh_HK]": "sub文件SingleFile",
"Text[zh_TW]": "sub文件SingleFile",
"Exec": "dde-file-manager"
},
{
"Icon": "dssd",
"Text[zh_CN]": "sub文件SingleFile",
"Text[zh_HK]": "sub文件SingleFile",
"Text[zh_TW]": "sub文件SingleFile",
"Exec": "dde-file-manager"
}
]
},
{
"Icon": "2222222",
"Text[zh_CN]": "sub文件SingleFile",
"Text[zh_HK]": "sub文件SingleFile",
"Text[zh_TW]": "sub文件SingleFile",
"Exec": "dde-file-manager"
}
]
},
{
"MenuType": "SingleFile",
"Icon": "Files",
"Text[zh_CN]": "文件SingleFile2",
"Text[zh_HK]": "文件SingleFile2",
"Text[zh_TW]": "文件SingleFile2",
"MimeType": "",
"Exec": "dde-file-manager"
},
{
"MenuType": "MultiFiles",
"Icon": "Files",
"Text[zh_CN]": "文件MultiFiles",
"Text[zh_HK]": "文件MultiFiles",
"Text[zh_TW]": "文件MultiFiles",
"MimeType": "text/plain;image/jpeg",
"Exec": "dde-file-manager"
},
{
"MenuType": "MultiFiles",
"Icon": "Files",
"Text[zh_CN]": "文件MultiFiles2",
"Text[zh_HK]": "文件MultiFiles2",
"Text[zh_TW]": "文件MultiFiles2",
"MimeType": "",
"Exec": "dde-file-manager"
},
{
"MenuType": "SingleDir",
"Icon": "Files",
"Text[zh_CN]": "文件SingleDir",
"Text[zh_HK]": "文件SingleDir",
"Text[zh_TW]": "文件SingleDir",
"Exec": "dde-file-manager"
},
{
"MenuType": "MultiDirs",
"Icon": "Files",
"Text[zh_CN]": "文件MultiDir",
"Text[zh_HK]": "文件MultiDir",
"Text[zh_TW]": "文件MultiDir",
"Exec": "dde-file-manager"
},
{
"MenuType": "MultiFileDirs",
"Icon": "Files",
"Text[zh_CN]": "文件MultiFileDirs",
"Text[zh_HK]": "文件MultiFileDirs",
"Text[zh_TW]": "文件MultiFileDirs",
"Exec": "dde-file-manager"
},
{
"MenuType": "EmptyArea",
"Icon": "Files",
"Text[zh_CN]": "EmptyArea",
"Text[zh_HK]": "EmptyArea",
"Text[zh_TW]": "EmptyArea",
"Exec": "dde-file-manager"
}
]