mirror of
https://github.com/reactos/reactos.git
synced 2024-12-26 17:14:41 +00:00
PackageManager
Created the commandline Interface Deleated subcategries svn path=/trunk/; revision=14553
This commit is contained in:
parent
2cb97d1370
commit
c6237266d7
11 changed files with 390 additions and 86 deletions
185
rosapps/packmgr/cmd-line/main.cpp
Normal file
185
rosapps/packmgr/cmd-line/main.cpp
Normal file
|
@ -0,0 +1,185 @@
|
||||||
|
////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// main.cpp
|
||||||
|
//
|
||||||
|
// Implementation of a Commandlne Interface
|
||||||
|
// for the ReactOs Package Manager
|
||||||
|
//
|
||||||
|
// Maarten Bosma, 09.01.2004
|
||||||
|
// maarten.paul@bosma.de
|
||||||
|
//
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
|
||||||
|
int main (int argc, char **argv)
|
||||||
|
{
|
||||||
|
cout << "ReactOs PackageManager " << PACKMGR_VERSION_MAJOR << "." << PACKMGR_VERSION_MINOR << "." << PACKMGR_VERSION_PATCH_LEVEL << " Commandline Interface \n\n";
|
||||||
|
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if(argc<2)
|
||||||
|
return Help();
|
||||||
|
|
||||||
|
for (i=1; i<argc; i++)
|
||||||
|
cmdline.push_back(argv[i]);
|
||||||
|
|
||||||
|
// install a package
|
||||||
|
if (cmdline[0] == "install")
|
||||||
|
Install();
|
||||||
|
|
||||||
|
// install a package from source
|
||||||
|
else if (cmdline[0] == "src-inst")
|
||||||
|
{
|
||||||
|
cout << "Sorry but I can't do that yet. \n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// update a package
|
||||||
|
else if (cmdline[0] == "update")
|
||||||
|
{
|
||||||
|
cout << "Sorry but I can't do that yet. \n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// update everything
|
||||||
|
else if (cmdline[0] == "dist-upgrade")
|
||||||
|
{
|
||||||
|
cout << "Sorry but I can't do that yet. \n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove a package
|
||||||
|
else if (cmdline[0] == "remove")
|
||||||
|
{
|
||||||
|
cout << "Sorry but I can't do that yet. \n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// search for a package
|
||||||
|
else if (cmdline[0] == "show")
|
||||||
|
{
|
||||||
|
Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
// search for a package
|
||||||
|
else if (cmdline[0] == "search")
|
||||||
|
{
|
||||||
|
cout << "Sorry but I can't do that yet. \n";
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
Help();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Help (void)
|
||||||
|
{
|
||||||
|
cout << "Usage: ros-get [command] \n\n";
|
||||||
|
|
||||||
|
cout << "Possible commands: \n";
|
||||||
|
cout << " install [package name] \t Installs a package \n\n";
|
||||||
|
cout << " show [package name] \t\t Shows you detailed information about a package \n";
|
||||||
|
|
||||||
|
cout << "Currently unimplemented commands: \n";
|
||||||
|
cout << " src-install [package name] \t Installs a package from source code \n";
|
||||||
|
cout << " update [package name] \t Updates a package \n";
|
||||||
|
cout << " dist-update [package name] \t Updates a package \n";
|
||||||
|
cout << " remove [package name] \t Uninstalls a package \n\n";
|
||||||
|
|
||||||
|
cout << " search [search agrument] \t Finds a package \n";
|
||||||
|
cout << " list \t\t\t\t Lists all installed programs \n\n";
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int SetStatus (int status1, int status2, WCHAR* text)
|
||||||
|
{
|
||||||
|
if(text)
|
||||||
|
wprintf(L"%s\n", text);
|
||||||
|
|
||||||
|
// If the Status is 1000 things are done
|
||||||
|
if(status1==1000)
|
||||||
|
{
|
||||||
|
wprintf(L"%s\n", PML_TransError(status2));
|
||||||
|
done = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Install (void)
|
||||||
|
{
|
||||||
|
pTree tree;
|
||||||
|
int i, error;
|
||||||
|
|
||||||
|
// load the tree
|
||||||
|
error = PML_LoadTree (&tree, "tree.xml", NULL);
|
||||||
|
if(error)
|
||||||
|
{
|
||||||
|
cout << PML_TransError(error);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// look up the item
|
||||||
|
for (i=1; (UINT)i<cmdline.size(); i++)
|
||||||
|
{
|
||||||
|
int id = PML_FindItem(tree, cmdline[i].c_str());
|
||||||
|
|
||||||
|
if(id)
|
||||||
|
PML_SetAction(tree, id, 1, NULL);
|
||||||
|
|
||||||
|
else
|
||||||
|
cout << "Could not find the Package \"" << cmdline[i] << "\"\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// do it
|
||||||
|
error = PML_DoIt (tree, SetStatus);
|
||||||
|
if(error)
|
||||||
|
{
|
||||||
|
wprintf(L"%s\n", PML_TransError(error));
|
||||||
|
PML_CloseTree (tree);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// wait
|
||||||
|
while (!done)
|
||||||
|
Sleep(1000);
|
||||||
|
|
||||||
|
// clean up
|
||||||
|
PML_CloseTree (tree);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Show (void)
|
||||||
|
{
|
||||||
|
pTree tree;
|
||||||
|
int i, error;
|
||||||
|
|
||||||
|
// load the tree
|
||||||
|
error = PML_LoadTree (&tree, "tree.xml", NULL);
|
||||||
|
if(error)
|
||||||
|
{
|
||||||
|
cout << PML_TransError(error);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// look up the item
|
||||||
|
for (i=1; (UINT)i<cmdline.size(); i++)
|
||||||
|
{
|
||||||
|
int id = PML_FindItem(tree, cmdline[i].c_str());
|
||||||
|
|
||||||
|
cout << i << "<" << cmdline.size() << endl;
|
||||||
|
|
||||||
|
if(id)
|
||||||
|
cout << PML_GetDescription (tree, id) << "\n";
|
||||||
|
|
||||||
|
else
|
||||||
|
cout << "Could not find the Package \"" << cmdline[i] << "\"\n";
|
||||||
|
}
|
||||||
|
cout << i << "<" << cmdline.size() << endl;
|
||||||
|
|
||||||
|
// clean up
|
||||||
|
PML_CloseTree (tree);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
19
rosapps/packmgr/cmd-line/main.h
Normal file
19
rosapps/packmgr/cmd-line/main.h
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
///////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// main.h
|
||||||
|
// main.cpp's lumber room :)
|
||||||
|
///////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include "package.hpp"
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
|
||||||
|
vector<string> cmdline;
|
||||||
|
bool done = false;
|
||||||
|
|
||||||
|
int Help (void);
|
||||||
|
int Install (void);
|
||||||
|
int Show (void);
|
||||||
|
|
||||||
|
int SetStatus (int status1, int status2, WCHAR* text);
|
24
rosapps/packmgr/cmd-line/makefile
Normal file
24
rosapps/packmgr/cmd-line/makefile
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
|
||||||
|
TARGET_NAME = ros-get
|
||||||
|
TARGET_TYPE = program
|
||||||
|
TARGET_APPTYPE = console
|
||||||
|
PATH_TO_TOP = ../../../reactos
|
||||||
|
|
||||||
|
TARGET_SDKLIBS = package.a
|
||||||
|
|
||||||
|
TARGET_GCCLIBS = stdc++ uuid
|
||||||
|
|
||||||
|
TARGET_OBJECTS = main.o
|
||||||
|
|
||||||
|
TARGET_CFLAGS = \
|
||||||
|
-D__USE_W32API -DWIN32 -D_ROS_ \
|
||||||
|
-D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 \
|
||||||
|
-DUNICODE -Wall -I../lib
|
||||||
|
|
||||||
|
TARGET_CPPFLAGS = $(TARGET_CFLAGS)
|
||||||
|
|
||||||
|
TARGET_RCFLAGS = -D__USE_W32API -DNDEBUG -DWIN32 -D_ROS_ -D__WINDRES__ -DUNICODE
|
||||||
|
|
||||||
|
include $(PATH_TO_TOP)/rules.mak
|
||||||
|
include $(TOOLS_PATH)/helper.mk
|
||||||
|
include $(TOOLS_PATH)/depend.mk
|
8
rosapps/packmgr/cmd-line/ros-get.rc
Normal file
8
rosapps/packmgr/cmd-line/ros-get.rc
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
|
||||||
|
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Package Manager - Cmdline Interface\0"
|
||||||
|
#define REACTOS_STR_INTERNAL_NAME "ros-get\0"
|
||||||
|
#define REACTOS_STR_ORIGINAL_FILENAME "ros-get.exe\0"
|
||||||
|
|
||||||
|
#include <reactos/version.rc>
|
||||||
|
|
||||||
|
/* EOF */
|
|
@ -204,12 +204,15 @@ int SetButton (DWORD id, BOOL state)
|
||||||
|
|
||||||
SetMenuItemInfo(hPopup, id, FALSE, &mi);
|
SetMenuItemInfo(hPopup, id, FALSE, &mi);
|
||||||
|
|
||||||
return 1;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the text of the text box
|
// Set the text of the text box
|
||||||
int SetText (const char* text)
|
int SetText (const char* text)
|
||||||
{
|
{
|
||||||
|
if(!text)
|
||||||
|
return 1;
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
string source = text;
|
string source = text;
|
||||||
|
|
||||||
|
@ -257,7 +260,8 @@ LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
if(((LPNMHDR)lParam)->code == TVN_SELCHANGED)
|
if(((LPNMHDR)lParam)->code == TVN_SELCHANGED)
|
||||||
{
|
{
|
||||||
selected = ((LPNMTREEVIEW)lParam)->itemNew.lParam;
|
selected = ((LPNMTREEVIEW)lParam)->itemNew.lParam;
|
||||||
PML_LoadPackage (tree, selected, SetButton, SetText);
|
PML_LoadPackage (tree, selected, SetButton);
|
||||||
|
SetText(PML_GetDescription (tree, selected));
|
||||||
}
|
}
|
||||||
|
|
||||||
else if ((int)(((LPNMHDR)lParam)->code) == NM_RCLICK) // <= ahhh LISP
|
else if ((int)(((LPNMHDR)lParam)->code) == NM_RCLICK) // <= ahhh LISP
|
||||||
|
|
|
@ -84,16 +84,19 @@ void pack_text (void* usrdata, const char* data, int len)
|
||||||
|
|
||||||
|
|
||||||
// The user clicks on a package
|
// The user clicks on a package
|
||||||
extern "C" int PML_LoadPackage (TREE* tree, int id, PML_SetButton SetButton, PML_SetText SetText)
|
extern "C" int PML_LoadPackage (TREE* tree, int id, PML_SetButton SetButton)
|
||||||
{
|
{
|
||||||
PACKAGE* pack = &tree->packages[id];
|
PACKAGE* pack = &tree->packages[id];
|
||||||
tree->setButton = SetButton;
|
tree->setButton = SetButton;
|
||||||
|
|
||||||
SetButton(1, pack->action);
|
if(SetButton)
|
||||||
SetButton(2, pack->inst); // && pack->action != 0
|
{
|
||||||
SetButton(3, pack->src_inst);
|
SetButton(1, pack->action);
|
||||||
SetButton(4, pack->update);
|
SetButton(2, pack->inst); // && pack->action != 0
|
||||||
SetButton(5, pack->uninstall);
|
SetButton(3, pack->src_inst);
|
||||||
|
SetButton(4, pack->update);
|
||||||
|
SetButton(5, pack->uninstall);
|
||||||
|
}
|
||||||
|
|
||||||
// root notes (like network) return here
|
// root notes (like network) return here
|
||||||
if(!pack->path)
|
if(!pack->path)
|
||||||
|
@ -105,12 +108,35 @@ extern "C" int PML_LoadPackage (TREE* tree, int id, PML_SetButton SetButton, PML
|
||||||
pack->loaded = TRUE;
|
pack->loaded = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(pack->description)
|
|
||||||
SetText(pack->description);
|
|
||||||
|
|
||||||
return ERR_OK;
|
return ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" int PML_FindItem (TREE* tree, const char* what)
|
||||||
|
{
|
||||||
|
int i, j;
|
||||||
|
bool found;
|
||||||
|
|
||||||
|
// if we have children, same action for them
|
||||||
|
for (i=1; (UINT)i<tree->packages.size(); i++)
|
||||||
|
{
|
||||||
|
found = true;
|
||||||
|
|
||||||
|
for(j=0; (UINT)j<strlen(what); j++)
|
||||||
|
{
|
||||||
|
if(tolower(what[j]) != tolower(tree->packages[i].name[j]))
|
||||||
|
{
|
||||||
|
found = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(found)
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// The user chooses a actions like Install
|
// The user chooses a actions like Install
|
||||||
extern "C" int PML_SetAction (TREE* tree, int id, int action, PML_SetIcon SetIcon)
|
extern "C" int PML_SetAction (TREE* tree, int id, int action, PML_SetIcon SetIcon)
|
||||||
{
|
{
|
||||||
|
@ -134,7 +160,8 @@ extern "C" int PML_SetAction (TREE* tree, int id, int action, PML_SetIcon SetIco
|
||||||
|
|
||||||
// set the icon
|
// set the icon
|
||||||
if(!pack->icon)
|
if(!pack->icon)
|
||||||
SetIcon(id, action);
|
if(SetIcon)
|
||||||
|
SetIcon(id, action);
|
||||||
|
|
||||||
// can't do src install yet
|
// can't do src install yet
|
||||||
if(action == 2)
|
if(action == 2)
|
||||||
|
@ -147,7 +174,8 @@ extern "C" int PML_SetAction (TREE* tree, int id, int action, PML_SetIcon SetIco
|
||||||
else if (action != 0)
|
else if (action != 0)
|
||||||
{
|
{
|
||||||
// since we are setting a action we undo it again
|
// since we are setting a action we undo it again
|
||||||
tree->setButton(1, 1);
|
if(tree->setButton)
|
||||||
|
tree->setButton(1, 1);
|
||||||
//tree->setButton(action+1, 0);
|
//tree->setButton(action+1, 0);
|
||||||
pack->action = action;
|
pack->action = action;
|
||||||
|
|
||||||
|
@ -168,9 +196,10 @@ extern "C" int PML_SetAction (TREE* tree, int id, int action, PML_SetIcon SetIco
|
||||||
|
|
||||||
// undoing
|
// undoing
|
||||||
else
|
else
|
||||||
{+
|
{
|
||||||
// set other things back
|
// set other things back
|
||||||
tree->setButton(1, 0);
|
if(tree->setButton)
|
||||||
|
tree->setButton(1, 0);
|
||||||
//tree->setButton(pack->action+1, 1);
|
//tree->setButton(pack->action+1, 1);
|
||||||
pack->action = 0;
|
pack->action = 0;
|
||||||
|
|
||||||
|
@ -189,3 +218,11 @@ extern "C" int PML_SetAction (TREE* tree, int id, int action, PML_SetIcon SetIco
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
extern "C" char* PML_GetDescription (TREE* tree, int id)
|
||||||
|
{
|
||||||
|
PML_LoadPackage(tree, id, NULL);
|
||||||
|
|
||||||
|
return tree->packages[id].description;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,9 @@ EXPORTS
|
||||||
PML_Abort
|
PML_Abort
|
||||||
PML_TransError
|
PML_TransError
|
||||||
PML_LoadTree
|
PML_LoadTree
|
||||||
|
PML_FindItem
|
||||||
PML_LoadPackage
|
PML_LoadPackage
|
||||||
|
PML_GetDescription
|
||||||
PML_SetAction
|
PML_SetAction
|
||||||
PML_DoIt
|
PML_DoIt
|
||||||
PML_CloseTree
|
PML_CloseTree
|
||||||
|
|
|
@ -71,7 +71,9 @@ extern "C"
|
||||||
WCHAR* PML_TransError (int code);
|
WCHAR* PML_TransError (int code);
|
||||||
|
|
||||||
int PML_LoadTree (pTree*, char* url, PML_AddItem);
|
int PML_LoadTree (pTree*, char* url, PML_AddItem);
|
||||||
int PML_LoadPackage (pTree, int id, PML_SetButton, PML_SetText);
|
int PML_FindItem (TREE* tree, const char* what);
|
||||||
|
int PML_LoadPackage (pTree, int id, PML_SetButton);
|
||||||
|
char* PML_GetDescription (TREE* tree, int id);
|
||||||
int PML_SetAction (pTree, int package, int action, PML_SetIcon);
|
int PML_SetAction (pTree, int package, int action, PML_SetIcon);
|
||||||
int PML_DoIt (pTree, PML_SetStatus);
|
int PML_DoIt (pTree, PML_SetStatus);
|
||||||
|
|
||||||
|
|
|
@ -40,9 +40,8 @@ extern "C" int PML_LoadTree (TREE** tree, char* url, PML_AddItem AddItem)
|
||||||
// expat callback for start of a "node" tag
|
// expat callback for start of a "node" tag
|
||||||
void tree_start (void* usrdata, const char* tag, const char** arg)
|
void tree_start (void* usrdata, const char* tag, const char** arg)
|
||||||
{
|
{
|
||||||
int i, icon;
|
int i, icon = 0;
|
||||||
static int id = 1;
|
static int id = 1;
|
||||||
const char* name = "\0";
|
|
||||||
|
|
||||||
TREE* tree = (TREE*)usrdata;
|
TREE* tree = (TREE*)usrdata;
|
||||||
|
|
||||||
|
@ -58,12 +57,16 @@ void tree_start (void* usrdata, const char* tag, const char** arg)
|
||||||
tree->packages[id].icon = FALSE;
|
tree->packages[id].icon = FALSE;
|
||||||
tree->packages[id].none = TRUE;
|
tree->packages[id].none = TRUE;
|
||||||
tree->packages[id].path = NULL;
|
tree->packages[id].path = NULL;
|
||||||
|
tree->packages[id].name = "\0";
|
||||||
|
|
||||||
// read the arguments
|
// read the arguments
|
||||||
for (i=0; arg[i]; i+=2)
|
for (i=0; arg[i]; i+=2)
|
||||||
{
|
{
|
||||||
if(!strcmp(arg[i], "name"))
|
if(!strcmp(arg[i], "name"))
|
||||||
name = arg[i+1];
|
{
|
||||||
|
tree->packages[id].name = new char [strlen(arg[i+1])+1];
|
||||||
|
strcpy(tree->packages[id].name, arg[i+1]);
|
||||||
|
}
|
||||||
|
|
||||||
if(!strcmp(arg[i], "icon"))
|
if(!strcmp(arg[i], "icon"))
|
||||||
{
|
{
|
||||||
|
@ -73,7 +76,7 @@ void tree_start (void* usrdata, const char* tag, const char** arg)
|
||||||
|
|
||||||
if(!strcmp(arg[i], "file"))
|
if(!strcmp(arg[i], "file"))
|
||||||
{
|
{
|
||||||
tree->packages[id].path = new char [strlen(arg[i+1])];
|
tree->packages[id].path = new char [strlen(arg[i+1])+1];
|
||||||
strcpy(tree->packages[id].path, arg[i+1]);
|
strcpy(tree->packages[id].path, arg[i+1]);
|
||||||
|
|
||||||
if(strcmp(tag, "bin"))
|
if(strcmp(tag, "bin"))
|
||||||
|
@ -84,14 +87,19 @@ void tree_start (void* usrdata, const char* tag, const char** arg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(name[0]=='\0') return;
|
if(tree->packages[id].name[0] == '\0') return;
|
||||||
|
|
||||||
// add it
|
// add it
|
||||||
if(!parents.size())
|
if(!parents.size())
|
||||||
tree->addItem(id, name, 0, icon);
|
{
|
||||||
|
if(tree->addItem)
|
||||||
|
tree->addItem(id, tree->packages[id].name, 0, icon);
|
||||||
|
}
|
||||||
|
|
||||||
|
// do some manipulation at the parent
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tree->addItem(id, name, parents.back(), icon);
|
tree->addItem(id, tree->packages[id].name, parents.back(), icon);
|
||||||
|
|
||||||
// list as child in the parent node
|
// list as child in the parent node
|
||||||
tree->packages[parents.back()].children.push_back(id);
|
tree->packages[parents.back()].children.push_back(id);
|
||||||
|
|
|
@ -1,69 +1,15 @@
|
||||||
<tree>
|
<tree>
|
||||||
<node name="Internet and Network" icon="5">
|
<node name="Internet and Network" icon="5">
|
||||||
<node name="Browser" icon="5">
|
<node name="Mozilla Control" file="mozcontrol.xml"/>
|
||||||
<node name="MozillaControl" file="mozcontrol.xml"/>
|
|
||||||
</node>
|
|
||||||
<node name="Email" icon="5"/>
|
|
||||||
<node name="Instant Messaging and IRC" icon="5">
|
|
||||||
<node name="VoIP" icon="5"/>
|
|
||||||
</node>
|
|
||||||
<node name="Filesharing" icon="5"/>
|
|
||||||
<node name="Remotecontrol" icon="5"/>
|
|
||||||
<node name="Server" icon="5">
|
|
||||||
<node name="File-Server" icon="5"/>
|
|
||||||
<node name="HTTP" icon="5"/>
|
|
||||||
<node name="IRC" icon="5"/>
|
|
||||||
<node name="FTP" icon="5"/>
|
|
||||||
</node>
|
|
||||||
<node name="Network monitoring" icon="5"/>
|
|
||||||
<node name="Security" icon="5"/>
|
|
||||||
<node name="Streaming" icon="5"/>
|
|
||||||
<node name="Other" icon="5"/>
|
|
||||||
</node>
|
</node>
|
||||||
<node name="Office" icon="6">
|
<node name="Office" icon="6">
|
||||||
<node name="Writing" icon="6">
|
<node name="AbiWord" file="abiword.xml"/>
|
||||||
<node name="PDF" icon="6"/>
|
|
||||||
<node name="AbiWord" file="abiword.xml"/>
|
|
||||||
</node>
|
|
||||||
<node name="Dictionaries" icon="6"/>
|
|
||||||
</node>
|
|
||||||
<node name="Graphics" icon="7">
|
|
||||||
<node name="Vector" icon="7"/>
|
|
||||||
<node name="Pixel" icon="7"/>
|
|
||||||
<node name="3D" icon="7"/>
|
|
||||||
</node>
|
|
||||||
<node name="Multimedia" icon="8">
|
|
||||||
<node name="Codecs" icon="8"/>
|
|
||||||
<node name="Editors" icon="8"/>
|
|
||||||
<node name="Players" icon="8"/>
|
|
||||||
</node>
|
|
||||||
<node name="Development" icon="9">
|
|
||||||
<node name="IDE" icon="9"/>
|
|
||||||
<node name="Compiler" icon="9"/>
|
|
||||||
<node name="Version Control" icon="9"/>
|
|
||||||
<node name="Web" icon="9"/>
|
|
||||||
<node name="Other" icon="9"/>
|
|
||||||
</node>
|
</node>
|
||||||
|
<node name="Graphics" icon="7"/>
|
||||||
|
<node name="Multimedia" icon="8"/>
|
||||||
|
<node name="Development" icon="9"/>
|
||||||
<node name="Games and Fun" icon="10"/>
|
<node name="Games and Fun" icon="10"/>
|
||||||
<node name="Tools" icon="11">
|
<node name="Tools" icon="11"/>
|
||||||
<node name="Compression" icon="11"/>
|
<node name="Others" icon="12"/>
|
||||||
<node name="Backup" icon="11"/>
|
|
||||||
<node name="Burning" icon="11">
|
|
||||||
<node name="CD" icon="11"/>
|
|
||||||
<node name="DVD" icon="11"/>
|
|
||||||
</node>
|
|
||||||
</node>
|
|
||||||
<node name="Others" icon="12">
|
|
||||||
<node name="Desktop Environments and Shellreplacements" icon="12"/>
|
|
||||||
<node name="Desktop" icon="12"/>
|
|
||||||
<node name="Antivirus" icon="12"/>
|
|
||||||
<node name="Emulators" icon="12">
|
|
||||||
<node name="Computers" icon="12"/>
|
|
||||||
<node name="Systems" icon="12"/>
|
|
||||||
<node name="Games" icon="12"/>
|
|
||||||
</node>
|
|
||||||
<node name="Drivers" icon="12"/>
|
|
||||||
</node>
|
|
||||||
<node name="Installed Programms" icon="13"/>
|
<node name="Installed Programms" icon="13"/>
|
||||||
</tree>
|
</tree>
|
||||||
|
|
||||||
|
|
69
rosapps/packmgr/tree/tree_withsubs.xml
Normal file
69
rosapps/packmgr/tree/tree_withsubs.xml
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
<tree>
|
||||||
|
<node name="Internet and Network" icon="5">
|
||||||
|
<node name="Browser" icon="5">
|
||||||
|
<node name="MozillaControl" file="mozcontrol.xml"/>
|
||||||
|
</node>
|
||||||
|
<node name="Email" icon="5"/>
|
||||||
|
<node name="Instant Messaging and IRC" icon="5">
|
||||||
|
<node name="VoIP" icon="5"/>
|
||||||
|
</node>
|
||||||
|
<node name="Filesharing" icon="5"/>
|
||||||
|
<node name="Remotecontrol" icon="5"/>
|
||||||
|
<node name="Server" icon="5">
|
||||||
|
<node name="File-Server" icon="5"/>
|
||||||
|
<node name="HTTP" icon="5"/>
|
||||||
|
<node name="IRC" icon="5"/>
|
||||||
|
<node name="FTP" icon="5"/>
|
||||||
|
</node>
|
||||||
|
<node name="Network monitoring" icon="5"/>
|
||||||
|
<node name="Security" icon="5"/>
|
||||||
|
<node name="Streaming" icon="5"/>
|
||||||
|
<node name="Other" icon="5"/>
|
||||||
|
</node>
|
||||||
|
<node name="Office" icon="6">
|
||||||
|
<node name="Writing" icon="6">
|
||||||
|
<node name="PDF" icon="6"/>
|
||||||
|
<node name="AbiWord" file="abiword.xml"/>
|
||||||
|
</node>
|
||||||
|
<node name="Dictionaries" icon="6"/>
|
||||||
|
</node>
|
||||||
|
<node name="Graphics" icon="7">
|
||||||
|
<node name="Vector" icon="7"/>
|
||||||
|
<node name="Pixel" icon="7"/>
|
||||||
|
<node name="3D" icon="7"/>
|
||||||
|
</node>
|
||||||
|
<node name="Multimedia" icon="8">
|
||||||
|
<node name="Codecs" icon="8"/>
|
||||||
|
<node name="Editors" icon="8"/>
|
||||||
|
<node name="Players" icon="8"/>
|
||||||
|
</node>
|
||||||
|
<node name="Development" icon="9">
|
||||||
|
<node name="IDE" icon="9"/>
|
||||||
|
<node name="Compiler" icon="9"/>
|
||||||
|
<node name="Version Control" icon="9"/>
|
||||||
|
<node name="Web" icon="9"/>
|
||||||
|
<node name="Other" icon="9"/>
|
||||||
|
</node>
|
||||||
|
<node name="Games and Fun" icon="10"/>
|
||||||
|
<node name="Tools" icon="11">
|
||||||
|
<node name="Compression" icon="11"/>
|
||||||
|
<node name="Backup" icon="11"/>
|
||||||
|
<node name="Burning" icon="11">
|
||||||
|
<node name="CD" icon="11"/>
|
||||||
|
<node name="DVD" icon="11"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node name="Others" icon="12">
|
||||||
|
<node name="Desktop Environments and Shellreplacements" icon="12"/>
|
||||||
|
<node name="Desktop" icon="12"/>
|
||||||
|
<node name="Antivirus" icon="12"/>
|
||||||
|
<node name="Emulators" icon="12">
|
||||||
|
<node name="Computers" icon="12"/>
|
||||||
|
<node name="Systems" icon="12"/>
|
||||||
|
<node name="Games" icon="12"/>
|
||||||
|
</node>
|
||||||
|
<node name="Drivers" icon="12"/>
|
||||||
|
</node>
|
||||||
|
<node name="Installed Programms" icon="13"/>
|
||||||
|
</tree>
|
||||||
|
|
Loading…
Reference in a new issue