OSDN Git Service

Add "Plugin Settings" button to the "Select Plugin" window
authorTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sun, 16 Apr 2023 01:11:53 +0000 (10:11 +0900)
committerTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sun, 16 Apr 2023 01:11:53 +0000 (10:11 +0900)
Src/Merge.rc
Src/SelectPluginDlg.cpp
Src/SelectPluginDlg.h

index e9dfdf8..89f7f4e 100644 (file)
@@ -1633,6 +1633,7 @@ BEGIN
                     "Button",BS_AUTOCHECKBOX | BS_TOP | BS_MULTILINE | WS_TABSTOP,7,104,300,12\r
     LTEXT           "&Plugin Pipeline:",IDC_STATIC,7,118,83,10\r
     CONTROL         "",IDC_PLUGIN_PIPELINE,"ComboBoxEx32",CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP,92,116,220,95\r
+    PUSHBUTTON      "P&lugin Settings...",IDC_PLUGIN_SETTINGS,7,134,95,14\r
     PUSHBUTTON      "&Add pipe",IDC_PLUGIN_ADDPIPE,136,134,70,14\r
     DEFPUSHBUTTON   "OK",IDOK,210,134,50,14\r
     PUSHBUTTON      "Cancel",IDCANCEL,264,134,50,14\r
@@ -3016,6 +3017,7 @@ BEGIN
     0, 100, 100, 0,\r
     0, 100, 0, 0,\r
     0, 100, 100, 0,\r
+    0, 100, 0, 0,\r
     100, 100, 0, 0,\r
     100, 100, 0, 0,\r
     100, 100, 0, 0\r
index d3553f2..0e5e9c3 100644 (file)
@@ -90,6 +90,7 @@ BEGIN_MESSAGE_MAP(CSelectPluginDlg, CTrDialog)
        ON_CBN_SELENDOK(IDC_PLUGIN_NAME, OnSelchangeUnpackerName)
        ON_BN_CLICKED(IDC_PLUGIN_ADDPIPE, OnClickedAddPipe)
        ON_EN_CHANGE(IDC_PLUGIN_PIPELINE, OnChangePipeline)
+       ON_BN_CLICKED(IDC_PLUGIN_SETTINGS, OnClickedSettings)
        //}}AFX_MSG_MAP
 END_MESSAGE_MAP()
 
@@ -207,10 +208,11 @@ void CSelectPluginDlg::prepareListbox()
                                bool match = plugin->TestAgainstRegList(m_filteredFilenames);
                                if (m_bNoExtensionCheck || match || lastPluginName == name)
                                {
-                                       COMBOBOXEXITEM item{CBEIF_TEXT|CBEIF_INDENT};
+                                       COMBOBOXEXITEM item{CBEIF_TEXT|CBEIF_INDENT|CBEIF_LPARAM};
                                        item.iItem = nameCount++;
                                        item.iIndent = 1;
                                        item.pszText = const_cast<tchar_t*>(name.c_str());
+                                       item.lParam = reinterpret_cast<LPARAM>(plugin);
                                        m_cboPluginName.InsertItem(&item);
                                        if (lastPluginName.empty() && match)
                                        {
@@ -332,3 +334,13 @@ void CSelectPluginDlg::OnSelchangeUnpackerName()
 
        UpdateData (FALSE);
 }
+
+void CSelectPluginDlg::OnClickedSettings() 
+{
+       COMBOBOXEXITEM item{CBEIF_LPARAM};
+       item.iItem = m_cboPluginName.GetCurSel();
+       m_cboPluginName.GetItem(&item);
+       auto* plugin = reinterpret_cast<PluginInfo*>(item.lParam);
+       if (plugin)
+               plugin::InvokeShowSettingsDialog(plugin->m_lpDispatch);
+}
index 581d415..e9f3459 100644 (file)
@@ -86,6 +86,7 @@ protected:
        afx_msg void OnSelchangeUnpackerName();
        afx_msg void OnClickedAddPipe();
        afx_msg void OnChangePipeline();
+       afx_msg void OnClickedSettings();
        //}}AFX_MSG
        DECLARE_MESSAGE_MAP()
 };