#ifndef TOOLSMANAGER_H
#define TOOLSMANAGER_H
#include <wx/event.h>
#include "settings.h"
#include "menuitemsmanager.h"
#include "sanitycheck.h"
class Tool
{
public:
Tool(){ menuId = -1; }
wxString name;
wxString command;
wxString params;
wxString workingDir;
int menuId;
};
WX_DECLARE_LIST(Tool, ToolsList);
// forward decls
class wxMenuBar;
class wxMenu;
class wxMenuItem;
class DLLIMPORT ToolsManager : wxEvtHandler
{
public:
friend class Manager; // give Manager access to our private members
void CreateMenu(wxMenuBar* menuBar);
void ReleaseMenu(wxMenuBar* menuBar);
void AddTool(const wxString& name, const wxString& command, const wxString& params, const wxString& workingDir, bool save = true);
void AddTool(Tool* tool, bool save = true);
void InsertTool(int position, Tool* tool, bool save = true);
void RemoveToolByIndex(int index);
void RemoveToolByName(const wxString& name);
Tool* GetToolById(int id);
Tool* GetToolByIndex(int index);
int GetToolsCount(){ return m_Tools.GetCount(); }
void BuildToolsMenu(wxMenu* menu);
int Configure();
bool Execute(Tool* tool);
void LoadTools();
void SaveTools();
void OnToolClick(wxCommandEvent& event);
void OnConfigure(wxCommandEvent& event);
protected:
private:
static ToolsManager* Get();
static void Free();
void DoRemoveTool(ToolsList::Node* node);
ToolsManager();
~ToolsManager();
ToolsList m_Tools;
MenuItemsManager m_ItemsManager;
wxMenu* m_Menu;
DECLARE_EVENT_TABLE()
DECLARE_SANITY_CHECK
};
#endif // TOOLSMANAGER_H
syntax highlighted by Code2HTML, v. 0.9.1