2 * @file PluginsListDlg.cpp
4 * @brief Implementation file for PluginsList dialog
6 // ID line follows -- this is updated by SVN
10 #include "PluginsListDlg.h"
11 #include "UnicodeString.h"
14 #include "OptionsDef.h"
15 #include "OptionsMgr.h"
17 IMPLEMENT_DYNAMIC(PluginsListDlg, CDialog)
19 BEGIN_MESSAGE_MAP(PluginsListDlg, CDialog)
20 ON_BN_CLICKED(IDOK, OnBnClickedOk)
26 PluginsListDlg::PluginsListDlg(CWnd* pParent /*=NULL*/)
27 : CDialog(PluginsListDlg::IDD, pParent)
34 PluginsListDlg::~PluginsListDlg()
38 void PluginsListDlg::DoDataExchange(CDataExchange* pDX)
40 CDialog::DoDataExchange(pDX);
41 DDX_Control(pDX, IDC_PLUGINSLIST_LIST, m_list);
45 * @brief Initialize the dialog.
47 BOOL PluginsListDlg::OnInitDialog()
49 theApp.TranslateDialog(m_hWnd);
50 CDialog::OnInitDialog();
55 bool pluginsEnabled = GetOptionsMgr()->GetBool(OPT_PLUGINS_ENABLED);
58 CButton *btn = (CButton *)GetDlgItem(IDC_PLUGINS_ENABLE);
59 btn->SetCheck(BST_CHECKED);
62 return FALSE; // return TRUE unless you set the focus to a control
63 // EXCEPTION: OCX Property Pages should return FALSE
67 * @brief Set-up the list control.
69 void PluginsListDlg::InitList()
71 // Show selection across entire row.
72 // Also enable infotips.
73 m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_INFOTIP);
75 String title = _("Name");
76 m_list.InsertColumn(0, title.c_str(), LVCFMT_LEFT, 150);
78 m_list.InsertColumn(1, title.c_str(), LVCFMT_LEFT, 100);
79 title = _("Description");
80 m_list.InsertColumn(2, title.c_str(), LVCFMT_LEFT, 300);
84 * @brief Add found plugins to the list.
86 void PluginsListDlg::AddPlugins()
88 String type = _("Unpacker");
89 AddPluginsToList(L"FILE_PACK_UNPACK", type);
90 AddPluginsToList(L"BUFFER_PACK_UNPACK", type);
91 type = _("Prediffer");
92 AddPluginsToList(L"FILE_PREDIFF", type);
93 AddPluginsToList(L"BUFFER_PREDIFF", type);
94 type = _("Editor script");
95 AddPluginsToList(L"EDITOR_SCRIPT", type);
99 * @brief Add plugins of given event type to the list.
100 * @param [in] pluginEvent Event type for plugins to add.
101 * @param [in] pluginType String to use as type in the list.
103 void PluginsListDlg::AddPluginsToList(const wchar_t *pluginEvent, const String& pluginType)
105 PluginArray * piPluginArray =
106 CAllThreadsScripts::GetActiveSet()->GetAvailableScripts(pluginEvent);
108 for (int iPlugin = 0 ; iPlugin < piPluginArray->size() ; iPlugin++)
110 const PluginInfoPtr& plugin = piPluginArray->at(iPlugin);
111 int ind = m_list.InsertItem(m_list.GetItemCount(), plugin->m_name.c_str());
112 m_list.SetItemText(ind, 1, pluginType.c_str());
113 m_list.SetItemText(ind, 2, plugin->m_description.c_str());
118 * @brief Save plugins enabled setting when closing the dialog.
120 void PluginsListDlg::OnBnClickedOk()
122 CButton *btn = (CButton *)GetDlgItem(IDC_PLUGINS_ENABLE);
123 int check = btn->GetCheck();
124 if (check == BST_CHECKED)
126 GetOptionsMgr()->SaveOption(OPT_PLUGINS_ENABLED, true);
130 GetOptionsMgr()->SaveOption(OPT_PLUGINS_ENABLED, false);