Skip to content

Commit df02c05

Browse files
committed
Menus / Config Refactor complete
- MenuManager now creates & handles FuncItems - ConfigFile now reads the MenuItems from the config - Ready for MenuManager to dynamically add and remove scripts from the ShortcutDlg
1 parent 83e188e commit df02c05

29 files changed

Lines changed: 1090 additions & 473 deletions

NppPlugin/project/NppPlugin.vcxproj

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
8585
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\..\bin\$(Configuration)\</OutDir>
8686
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
87-
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\..\..\bin\$(Configuration)\</OutDir>
87+
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\..\bin\$(Configuration)\</OutDir>
8888
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
8989
<OutDir Condition="'$(Configuration)|$(Platform)'=='ANSI-Debug|Win32'">$(ProjectDir)\..\..\bin\$(Configuration)\</OutDir>
9090
<IntDir Condition="'$(Configuration)|$(Platform)'=='ANSI-Debug|Win32'">$(Configuration)\</IntDir>
@@ -133,8 +133,7 @@
133133
<AdditionalIncludeDirectories>..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
134134
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
135135
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
136-
<PrecompiledHeader>
137-
</PrecompiledHeader>
136+
<PrecompiledHeader>NotUsing</PrecompiledHeader>
138137
<WarningLevel>Level3</WarningLevel>
139138
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
140139
</ClCompile>

PythonScript/ReadMe.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
Boost::Python build commands
2+
Debug variant (with python debugging (python26_d.dll)
3+
bjam variant=debug link=static runtime-link=static threading=multi python-debugging=on
4+
5+
Debug variant (without python debugging (python26.dll)
6+
bjam variant=debug link=static runtime-link=static threading=multi
7+
8+
9+
Release variant
10+
bjam variant=release link=static runtime-link=static threading=multi
11+
12+
113
========================================================================
214
DYNAMIC LINK LIBRARY : PythonScript2010 Project Overview
315
========================================================================
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 11.00
3+
# Visual Studio 2010
4+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PythonScript", "PythonScript2010.vcxproj", "{8ACDC1F7-75BD-44CA-9F35-6521DEDC5DF6}"
5+
EndProject
6+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NppPlugin", "..\..\NppPlugin\project\NppPlugin.vcxproj", "{69CC76EB-0183-4622-929C-02E860A66A23}"
7+
EndProject
8+
Global
9+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10+
ANSI-Debug|Win32 = ANSI-Debug|Win32
11+
ANSI-Debug-xml-test|Win32 = ANSI-Debug-xml-test|Win32
12+
ANSI-Release|Win32 = ANSI-Release|Win32
13+
Debug|Win32 = Debug|Win32
14+
Debug-xml-test|Win32 = Debug-xml-test|Win32
15+
Release|Win32 = Release|Win32
16+
EndGlobalSection
17+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
18+
{8ACDC1F7-75BD-44CA-9F35-6521DEDC5DF6}.ANSI-Debug|Win32.ActiveCfg = Debug|Win32
19+
{8ACDC1F7-75BD-44CA-9F35-6521DEDC5DF6}.ANSI-Debug|Win32.Build.0 = Debug|Win32
20+
{8ACDC1F7-75BD-44CA-9F35-6521DEDC5DF6}.ANSI-Debug-xml-test|Win32.ActiveCfg = Debug|Win32
21+
{8ACDC1F7-75BD-44CA-9F35-6521DEDC5DF6}.ANSI-Debug-xml-test|Win32.Build.0 = Debug|Win32
22+
{8ACDC1F7-75BD-44CA-9F35-6521DEDC5DF6}.ANSI-Release|Win32.ActiveCfg = Release|Win32
23+
{8ACDC1F7-75BD-44CA-9F35-6521DEDC5DF6}.ANSI-Release|Win32.Build.0 = Release|Win32
24+
{8ACDC1F7-75BD-44CA-9F35-6521DEDC5DF6}.Debug|Win32.ActiveCfg = Debug|Win32
25+
{8ACDC1F7-75BD-44CA-9F35-6521DEDC5DF6}.Debug|Win32.Build.0 = Debug|Win32
26+
{8ACDC1F7-75BD-44CA-9F35-6521DEDC5DF6}.Debug-xml-test|Win32.ActiveCfg = Debug|Win32
27+
{8ACDC1F7-75BD-44CA-9F35-6521DEDC5DF6}.Debug-xml-test|Win32.Build.0 = Debug|Win32
28+
{8ACDC1F7-75BD-44CA-9F35-6521DEDC5DF6}.Release|Win32.ActiveCfg = Release|Win32
29+
{8ACDC1F7-75BD-44CA-9F35-6521DEDC5DF6}.Release|Win32.Build.0 = Release|Win32
30+
{69CC76EB-0183-4622-929C-02E860A66A23}.ANSI-Debug|Win32.ActiveCfg = ANSI-Debug|Win32
31+
{69CC76EB-0183-4622-929C-02E860A66A23}.ANSI-Debug|Win32.Build.0 = ANSI-Debug|Win32
32+
{69CC76EB-0183-4622-929C-02E860A66A23}.ANSI-Debug-xml-test|Win32.ActiveCfg = ANSI-Debug-xml-test|Win32
33+
{69CC76EB-0183-4622-929C-02E860A66A23}.ANSI-Debug-xml-test|Win32.Build.0 = ANSI-Debug-xml-test|Win32
34+
{69CC76EB-0183-4622-929C-02E860A66A23}.ANSI-Release|Win32.ActiveCfg = ANSI-Release|Win32
35+
{69CC76EB-0183-4622-929C-02E860A66A23}.ANSI-Release|Win32.Build.0 = ANSI-Release|Win32
36+
{69CC76EB-0183-4622-929C-02E860A66A23}.Debug|Win32.ActiveCfg = Debug|Win32
37+
{69CC76EB-0183-4622-929C-02E860A66A23}.Debug|Win32.Build.0 = Debug|Win32
38+
{69CC76EB-0183-4622-929C-02E860A66A23}.Debug-xml-test|Win32.ActiveCfg = Debug-xml-test|Win32
39+
{69CC76EB-0183-4622-929C-02E860A66A23}.Debug-xml-test|Win32.Build.0 = Debug-xml-test|Win32
40+
{69CC76EB-0183-4622-929C-02E860A66A23}.Release|Win32.ActiveCfg = Release|Win32
41+
{69CC76EB-0183-4622-929C-02E860A66A23}.Release|Win32.Build.0 = Release|Win32
42+
EndGlobalSection
43+
GlobalSection(SolutionProperties) = preSolution
44+
HideSolutionNode = FALSE
45+
EndGlobalSection
46+
EndGlobal

PythonScript/project/PythonScript2010.vcxproj

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,19 +51,20 @@
5151
<LinkIncremental>false</LinkIncremental>
5252
<IncludePath>E:\work\PythonScript\NppPlugin\include;$(PythonBase)\Include;$(IncludePath)</IncludePath>
5353
<LibraryPath>$(BoostPythonLibPath);$(PythonLibPath);E:\work\PythonScript\NppPlugin\bin\release;$(LibraryPath)</LibraryPath>
54+
<OutDir>$(SolutionDir)bin\$(Configuration)\</OutDir>
5455
</PropertyGroup>
5556
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
5657
<ClCompile>
5758
<PrecompiledHeader>Use</PrecompiledHeader>
5859
<WarningLevel>Level3</WarningLevel>
5960
<Optimization>Disabled</Optimization>
60-
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;PYTHONSCRIPT2010_EXPORTS;BOOST_DEBUG_PYTHON;BOOST_PYTHON_STATIC_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
61+
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;PYTHONSCRIPT2010_EXPORTS;BOOST_PYTHON_STATIC_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
6162
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
6263
</ClCompile>
6364
<Link>
6465
<SubSystem>Windows</SubSystem>
6566
<GenerateDebugInformation>true</GenerateDebugInformation>
66-
<AdditionalDependencies>python26_d.lib;NppPlugin.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
67+
<AdditionalDependencies>python26.lib;NppPlugin.lib;shlwapi.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
6768
</Link>
6869
<PostBuildEvent>
6970
<Command>copy $(OutDir)$(TargetFileName) "C:\Program Files (x86)\Notepad++\plugins"</Command>
@@ -72,11 +73,12 @@
7273
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
7374
<ClCompile>
7475
<WarningLevel>Level3</WarningLevel>
75-
<PrecompiledHeader>Create</PrecompiledHeader>
76+
<PrecompiledHeader>NotUsing</PrecompiledHeader>
7677
<Optimization>MaxSpeed</Optimization>
7778
<FunctionLevelLinking>true</FunctionLevelLinking>
7879
<IntrinsicFunctions>true</IntrinsicFunctions>
79-
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PYTHONSCRIPT2010_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
80+
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PYTHONSCRIPT2010_EXPORTS;BOOST_PYTHON_STATIC_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
81+
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
8082
</ClCompile>
8183
<Link>
8284
<SubSystem>Windows</SubSystem>
@@ -87,17 +89,25 @@
8789
</Link>
8890
</ItemDefinitionGroup>
8991
<ItemGroup>
92+
<None Include="..\src\bitmap2.bmp" />
93+
<None Include="..\src\FolderClosed.ico" />
94+
<None Include="..\src\FolderOpen.ico" />
9095
<None Include="..\src\python-powered-w-140x56.bmp" />
9196
<None Include="..\src\python-powered-w-140x56.png">
9297
<DeploymentContent>false</DeploymentContent>
9398
<FileType>BMP</FileType>
9499
</None>
100+
<None Include="..\src\python.ico" />
101+
<None Include="FolderClosed.ico" />
102+
<None Include="FolderOpen.ico" />
95103
<None Include="python-powered-w-140x56.bmp" />
96104
<None Include="python-powered-w-140x56.png" />
105+
<None Include="python.ico" />
97106
<None Include="ReadMe.txt" />
98107
</ItemGroup>
99108
<ItemGroup>
100-
<ClCompile Include="..\src\AboutDialog.cpp" />
109+
<ClCompile Include="..\src\AboutDialog2.cpp" />
110+
<ClCompile Include="..\src\ConfigFile.cpp" />
101111
<ClCompile Include="..\src\ConsoleDialog.cpp" />
102112
<ClCompile Include="..\src\EnumsWrapper.cpp" />
103113
<ClCompile Include="..\src\MenuManager.cpp" />
@@ -111,11 +121,13 @@
111121
<ClCompile Include="..\src\ScintillaPython.cpp" />
112122
<ClCompile Include="..\src\ScintillaWrapper.cpp" />
113123
<ClCompile Include="..\src\ScintillaWrapperGenerated.cpp" />
124+
<ClCompile Include="..\src\ShortcutDlg.cpp" />
114125
<ClCompile Include="..\src\stdafx.cpp" />
115126
<ClCompile Include="..\src\WcharMbcsConverter.cpp" />
116127
</ItemGroup>
117128
<ItemGroup>
118129
<ClInclude Include="..\src\AboutDialog.h" />
130+
<ClInclude Include="..\src\ConfigFile.h" />
119131
<ClInclude Include="..\src\ConsoleDialog.h" />
120132
<ClInclude Include="..\src\ConsoleInterface.h" />
121133
<ClInclude Include="..\src\Enums.h" />
@@ -132,6 +144,7 @@
132144
<ClInclude Include="..\src\ScintillaNotifications.h" />
133145
<ClInclude Include="..\src\ScintillaPython.h" />
134146
<ClInclude Include="..\src\ScintillaWrapper.h" />
147+
<ClInclude Include="..\src\ShortcutDlg.h" />
135148
<ClInclude Include="..\src\stdafx.h" />
136149
<ClInclude Include="..\src\WcharMbcsConverter.h" />
137150
</ItemGroup>

PythonScript/project/PythonScript2010.vcxproj.filters

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,29 @@
2828
<None Include="..\src\python-powered-w-140x56.bmp">
2929
<Filter>Resource Files</Filter>
3030
</None>
31+
<None Include="..\src\bitmap2.bmp">
32+
<Filter>Resource Files</Filter>
33+
</None>
34+
<None Include="FolderClosed.ico">
35+
<Filter>Resource Files</Filter>
36+
</None>
37+
<None Include="FolderOpen.ico">
38+
<Filter>Resource Files</Filter>
39+
</None>
40+
<None Include="python.ico">
41+
<Filter>Resource Files</Filter>
42+
</None>
43+
<None Include="..\src\FolderClosed.ico">
44+
<Filter>Resource Files</Filter>
45+
</None>
46+
<None Include="..\src\FolderOpen.ico">
47+
<Filter>Resource Files</Filter>
48+
</None>
49+
<None Include="..\src\python.ico">
50+
<Filter>Resource Files</Filter>
51+
</None>
3152
</ItemGroup>
3253
<ItemGroup>
33-
<ClCompile Include="..\src\AboutDialog.cpp">
34-
<Filter>Source Files</Filter>
35-
</ClCompile>
3654
<ClCompile Include="..\src\PythonHandler.cpp">
3755
<Filter>Source Files</Filter>
3856
</ClCompile>
@@ -78,6 +96,15 @@
7896
<ClCompile Include="..\src\PyProducerConsumer.cpp">
7997
<Filter>Source Files</Filter>
8098
</ClCompile>
99+
<ClCompile Include="..\src\AboutDialog2.cpp">
100+
<Filter>Source Files</Filter>
101+
</ClCompile>
102+
<ClCompile Include="..\src\ShortcutDlg.cpp">
103+
<Filter>Source Files</Filter>
104+
</ClCompile>
105+
<ClCompile Include="..\src\ConfigFile.cpp">
106+
<Filter>Source Files</Filter>
107+
</ClCompile>
81108
</ItemGroup>
82109
<ItemGroup>
83110
<ClInclude Include="..\src\AboutDialog.h">
@@ -137,6 +164,12 @@
137164
<ClInclude Include="..\src\ConsoleInterface.h">
138165
<Filter>Header Files</Filter>
139166
</ClInclude>
167+
<ClInclude Include="..\src\ShortcutDlg.h">
168+
<Filter>Header Files</Filter>
169+
</ClInclude>
170+
<ClInclude Include="..\src\ConfigFile.h">
171+
<Filter>Header Files</Filter>
172+
</ClInclude>
140173
</ItemGroup>
141174
<ItemGroup>
142175
<ResourceCompile Include="..\src\PythonScript.rc">

PythonScript/project/PythonSettings.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<PropertyGroup Label="UserMacros">
55
<PythonBase>E:\work\Python-2.6.5</PythonBase>
66
<PythonLibPath>$(PythonBase)\PCbuild</PythonLibPath>
7-
<BoostPythonLibPath>E:\libs\boost\bin.v2\libs\python\build\msvc-10.0\debug\link-static\python-debugging-on\runtime-link-static\threading-multi</BoostPythonLibPath>
7+
<BoostPythonLibPath>E:\libs\boost\bin.v2\libs\python\build\msvc-10.0\$(Configuration)\link-static\runtime-link-static\threading-multi</BoostPythonLibPath>
88
</PropertyGroup>
99
<PropertyGroup />
1010
<ItemDefinitionGroup />

PythonScript/src/AboutDialog.cpp

Lines changed: 0 additions & 60 deletions
This file was deleted.

PythonScript/src/AboutDialog.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#pragma once
2+
#include "stdafx.h"
23

34
#include "StaticDialog.h"
45
#include "PluginInterface.h"

PythonScript/src/ConfigFile.cpp

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
#include "stdafx.h"
2+
3+
#include "ConfigFile.h"
4+
#include "resource.h"
5+
#include "WcharMbcsConverter.h"
6+
7+
using namespace std;
8+
9+
ConfigFile* ConfigFile::s_instance;
10+
11+
ConfigFile* ConfigFile::create(const TCHAR *configDir, const TCHAR *pluginDir, HINSTANCE hInst)
12+
{
13+
ConfigFile::s_instance = new ConfigFile(configDir, pluginDir, hInst);
14+
return ConfigFile::s_instance;
15+
}
16+
17+
18+
ConfigFile::ConfigFile(const TCHAR *configDir, const TCHAR *pluginDir, HINSTANCE hInst)
19+
: m_configFilename(configDir),
20+
m_pluginDir(pluginDir),
21+
m_hInst (hInst)
22+
{
23+
m_configFilename.append(_T("\\PythonScriptStartup.cnf"));
24+
25+
readConfig();
26+
}
27+
28+
29+
ConfigFile::~ConfigFile()
30+
{
31+
// TODO: Clean up
32+
}
33+
34+
35+
void ConfigFile::readConfig()
36+
{
37+
basic_ifstream<TCHAR> startupFile(m_configFilename.c_str());
38+
39+
TCHAR buffer[500];
40+
41+
42+
HICON defaultIcon = LoadIcon(m_hInst, MAKEINTRESOURCE(IDI_PYTHON));
43+
HICON hIcon;
44+
45+
while (startupFile.good())
46+
{
47+
startupFile.getline(buffer, 500);
48+
TCHAR *context;
49+
TCHAR *element = _tcstok_s(buffer, _T("/"), &context);
50+
51+
// Menu item
52+
if (0 == _tcscmp(element, _T("ITEM")))
53+
{
54+
element = _tcstok_s(NULL, _T("/"), &context);
55+
m_menuItems.push_back(tstring(element));
56+
m_menuScripts.push_back(string(WcharMbcsConverter::tchar2char(element).get()));
57+
}
58+
59+
// Toolbar item
60+
else if (0 == _tcscmp(element, _T("TOOLBAR")))
61+
{
62+
element = _tcstok_s(NULL, _T("/"), &context);
63+
TCHAR *iconPath = _tcstok_s(NULL, _T("/"), &context);
64+
if (!iconPath && *iconPath)
65+
{
66+
hIcon = defaultIcon;
67+
}
68+
else
69+
{
70+
hIcon = static_cast<HICON>(LoadImage(NULL, iconPath, IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR));
71+
}
72+
73+
74+
m_toolbarItems.push_back(pair<tstring, HICON>(tstring(element), hIcon));
75+
76+
}
77+
78+
}
79+
startupFile.close();
80+
}
81+

0 commit comments

Comments
 (0)