2 * @file PluginsListDlg.cpp
4 * @brief Implementation file for PluginsList dialog
6 // ID line follows -- this is updated by SVN
10 #include "UnicodeString.h"
13 #include "PluginsListDlg.h"
14 #include "OptionsDef.h"
16 IMPLEMENT_DYNAMIC(PluginsListDlg, CDialog)
18 BEGIN_MESSAGE_MAP(PluginsListDlg, CDialog)
19 ON_BN_CLICKED(IDOK, OnBnClickedOk)
25 PluginsListDlg::PluginsListDlg(CWnd* pParent /*=NULL*/)
26 : CDialog(PluginsListDlg::IDD, pParent)
33 PluginsListDlg::~PluginsListDlg()
37 void PluginsListDlg::DoDataExchange(CDataExchange* pDX)
39 CDialog::DoDataExchange(pDX);
40 DDX_Control(pDX, IDC_PLUGINSLIST_LIST, m_list);
44 * @brief Initialize the dialog.
46 BOOL PluginsListDlg::OnInitDialog()
48 theApp.TranslateDialog(m_hWnd);
49 CDialog::OnInitDialog();
54 bool pluginsEnabled = GetOptionsMgr()->GetBool(OPT_PLUGINS_ENABLED);
57 CButton *btn = (CButton *)GetDlgItem(IDC_PLUGINS_ENABLE);
58 btn->SetCheck(BST_CHECKED);
61 return FALSE; // return TRUE unless you set the focus to a control
62 // EXCEPTION: OCX Property Pages should return FALSE
66 * @brief Set-up the list control.
68 void PluginsListDlg::InitList()
70 // Show selection across entire row.
71 // Also enable infotips.
72 m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_INFOTIP);
74 String title = _("Name");
75 m_list.InsertColumn(0, title.c_str(), LVCFMT_LEFT, 150);
77 m_list.InsertColumn(1, title.c_str(), LVCFMT_LEFT, 100);
78 title = _("Description");
79 m_list.InsertColumn(2, title.c_str(), LVCFMT_LEFT, 300);
83 * @brief Add found plugins to the list.
85 void PluginsListDlg::AddPlugins()
87 String type = _("Unpacker");
88 AddPluginsToList(L"FILE_PACK_UNPACK", type);
89 AddPluginsToList(L"BUFFER_PACK_UNPACK", type);
90 type = _("Prediffer");
91 AddPluginsToList(L"FILE_PREDIFF", type);
92 AddPluginsToList(L"BUFFER_PREDIFF", type);
93 type = _("Editor script");
94 AddPluginsToList(L"EDITOR_SCRIPT", type);
98 * @brief Add plugins of given event type to the list.
99 * @param [in] pluginEvent Event type for plugins to add.
100 * @param [in] pluginType String to use as type in the list.
102 void PluginsListDlg::AddPluginsToList(const wchar_t *pluginEvent, const String& pluginType)
104 PluginArray * piPluginArray =
105 CAllThreadsScripts::GetActiveSet()->GetAvailableScripts(pluginEvent);
107 for (int iPlugin = 0 ; iPlugin < piPluginArray->size() ; iPlugin++)
109 const PluginInfoPtr& plugin = piPluginArray->at(iPlugin);
110 int ind = m_list.InsertItem(m_list.GetItemCount(), plugin->m_name.c_str());
111 m_list.SetItemText(ind, 1, pluginType.c_str());
112 m_list.SetItemText(ind, 2, plugin->m_description.c_str());
117 * @brief Save plugins enabled setting when closing the dialog.
119 void PluginsListDlg::OnBnClickedOk()
121 CButton *btn = (CButton *)GetDlgItem(IDC_PLUGINS_ENABLE);
122 int check = btn->GetCheck();
123 if (check == BST_CHECKED)
125 GetOptionsMgr()->SaveOption(OPT_PLUGINS_ENABLED, true);
129 GetOptionsMgr()->SaveOption(OPT_PLUGINS_ENABLED, false);