2016-03-08 12:26:31 +00:00
|
|
|
diff --git a/lib/menu.in b/lib/menu.in
|
2019-04-11 05:49:16 +00:00
|
|
|
index f200514..3118471 100644
|
2016-03-08 12:26:31 +00:00
|
|
|
--- a/lib/menu.in
|
|
|
|
+++ b/lib/menu.in
|
2019-04-11 05:49:16 +00:00
|
|
|
@@ -12,5 +12,6 @@ prog Firefox mozilla firefox
|
|
|
|
prog Hexchat xchat hexchat
|
2016-03-08 12:26:31 +00:00
|
|
|
prog Gimp gimp gimp
|
2019-04-11 05:49:16 +00:00
|
|
|
includeprog icewm-menu-fdo --sep-before --no-sep-others
|
2016-03-08 12:26:31 +00:00
|
|
|
-menufile Programs folder programs
|
|
|
|
+#menufile Programs folder programs
|
|
|
|
menufile Tool_bar folder toolbar
|
|
|
|
+menuprog SUSE folder xdg_menu --format icewm
|
2019-04-11 05:49:16 +00:00
|
|
|
diff --git a/src/wmmenu.cc b/src/wmmenu.cc
|
|
|
|
index ccee25e..ec2ff81 100644
|
|
|
|
--- a/src/wmmenu.cc
|
|
|
|
+++ b/src/wmmenu.cc
|
|
|
|
@@ -297,6 +297,45 @@ char* MenuLoader::parseMenuProg(char *p, ObjectContainer *container)
|
|
|
|
return p;
|
|
|
|
}
|
|
|
|
|
|
|
|
+char* MenuLoader::parseSuseProg(char *p, ObjectContainer *container)
|
|
|
|
+{
|
|
|
|
+ Argument name;
|
|
|
|
+
|
|
|
|
+ p = YConfig::getArgument(&name, p);
|
|
|
|
+ if (p == 0) return p;
|
|
|
|
+
|
|
|
|
+ Argument icons;
|
|
|
|
+
|
|
|
|
+ p = YConfig::getArgument(&icons, p);
|
|
|
|
+ if (p == 0) return p;
|
|
|
|
+
|
|
|
|
+ Argument command;
|
|
|
|
+ YStringArray args;
|
|
|
|
+
|
|
|
|
+ p = getCommandArgs(p, &command, args);
|
|
|
|
+ if (p == 0) {
|
|
|
|
+ msg(_("Error at prog %s"), name.cstr());
|
|
|
|
+ return p;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ ref<YIcon> icon;
|
2017-10-02 09:04:31 +00:00
|
|
|
+#ifndef LITE
|
2019-04-11 05:49:16 +00:00
|
|
|
+ if (icons[0] != '-')
|
|
|
|
+ icon = YIcon::getIcon(icons);
|
2017-10-02 09:04:31 +00:00
|
|
|
+#endif
|
2019-04-11 05:49:16 +00:00
|
|
|
+ MSG(("suseprog %s %s", name.cstr(), command.cstr()));
|
|
|
|
+
|
|
|
|
+ upath fullPath = findPath(getenv("PATH"), X_OK, command.cstr());
|
|
|
|
+ if (fullPath != null) {
|
|
|
|
+ ObjectMenu *progmenu = new MenuProgMenu(
|
|
|
|
+ app, smActionListener, wmActionListener,
|
|
|
|
+ name.cstr(), command.cstr(), args, 0);
|
|
|
|
+ if (progmenu)
|
|
|
|
+ container->addContainer(name.cstr(), icon, progmenu);
|
|
|
|
+ }
|
|
|
|
+ return p;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
char* MenuLoader::parseMenuProgReload(char *p, ObjectContainer *container)
|
|
|
|
{
|
|
|
|
Argument name;
|
|
|
|
@@ -398,6 +437,9 @@ char* MenuLoader::parseWord(char *word, char *p, ObjectContainer *container)
|
|
|
|
else if (!strcmp(word, "menuprogreload")) {
|
|
|
|
p = parseMenuProgReload(p, container);
|
|
|
|
}
|
|
|
|
+ else if (!strcmp(word, "suseprog")) {
|
|
|
|
+ p = parseSuseProg(p, container);
|
|
|
|
+ }
|
|
|
|
else if (!strcmp(word, "include")) {
|
|
|
|
p = parseIncludeStatement(p, container);
|
|
|
|
}
|
|
|
|
diff --git a/src/wmprog.h b/src/wmprog.h
|
|
|
|
index 4e9bd1f..d5b9827 100644
|
|
|
|
--- a/src/wmprog.h
|
|
|
|
+++ b/src/wmprog.h
|
|
|
|
@@ -31,10 +31,12 @@ private:
|
|
|
|
char* parseMenuFile(char *data, ObjectContainer *container);
|
|
|
|
char* parseMenuProg(char *data, ObjectContainer *container);
|
|
|
|
char* parseMenuProgReload(char *data, ObjectContainer *container);
|
|
|
|
+ char* parseSuseProg(char *p, ObjectContainer *container);
|
|
|
|
char* parseKey(char *word, char *p);
|
|
|
|
char* parseProgram(char *word, char *p, ObjectContainer *container);
|
|
|
|
char* parseWord(char *word, char *p, ObjectContainer *container);
|
2016-03-08 12:26:31 +00:00
|
|
|
|
2019-04-11 05:49:16 +00:00
|
|
|
+
|
|
|
|
IApp *app;
|
|
|
|
YSMListener *smActionListener;
|
|
|
|
YActionListener *wmActionListener;
|