Skip to content

Commit 489551c

Browse files
committed
PythonInterpreter: intial commit of python interpreter (used to be part of original python plugin). Still not functional and currently needs to compile against tools+)
1 parent 9a230f3 commit 489551c

26 files changed

Lines changed: 3628 additions & 0 deletions

PythonInterpreter/ConfigDialog.cpp

Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
#include "ConfigDialog.h"
2+
#include "PyPlugin.h"
3+
4+
#include <vector>
5+
6+
int ID_NEW=wxNewId();
7+
int ID_COPY=wxNewId();
8+
int ID_EDIT=wxNewId();
9+
int ID_DELETE=wxNewId();
10+
int ID_UP=wxNewId();
11+
int ID_DOWN=wxNewId();
12+
int ID_INTERP_LIST=wxNewId();
13+
14+
15+
int ID_NAME=wxNewId();
16+
int ID_EXEC=wxNewId();
17+
int ID_BROWSE_EXEC=wxNewId();
18+
int ID_EXT=wxNewId();
19+
int ID_ACTIONS=wxNewId();
20+
int ID_OK=wxNewId();
21+
int ID_CANCEL=wxNewId();
22+
int ID_DEBUGCMDLINE=wxNewId();
23+
24+
25+
BEGIN_EVENT_TABLE(ConfigDialog, wxPanel)
26+
// EVT_BUTTON(ID_OK, ConfigDialog::OnApply)
27+
// EVT_BUTTON(ID_CANCEL, ConfigDialog::OnEditCancel)
28+
END_EVENT_TABLE()
29+
30+
ConfigDialog::ConfigDialog(wxWindow* parent, PyPlugin* plugin) //: cbConfigurationPanel()
31+
{
32+
m_plugin=plugin;
33+
34+
cbConfigurationPanel::Create(parent, -1, wxDefaultPosition, wxDefaultSize,
35+
wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER);
36+
37+
38+
///////////////////////////////////////////// Form Builder generated code
39+
wxBoxSizer* bSizer12;
40+
bSizer12 = new wxBoxSizer( wxVERTICAL );
41+
42+
m_staticText1 = new wxStaticText( this, wxID_DEFAULT, wxT("Python Interpreter Settings"), wxDefaultPosition, wxDefaultSize, 0 );
43+
bSizer12->Add( m_staticText1, 0, wxALL, 5 );
44+
45+
wxBoxSizer* bSizer18;
46+
bSizer18 = new wxBoxSizer( wxVERTICAL );
47+
48+
wxBoxSizer* bSizer20;
49+
bSizer20 = new wxBoxSizer( wxHORIZONTAL );
50+
51+
m_staticText3 = new wxStaticText( this, wxID_DEFAULT, wxT("Interpreter Executable"), wxDefaultPosition, wxDefaultSize, 0 );
52+
bSizer20->Add( m_staticText3, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
53+
54+
m_editexec = new wxTextCtrl( this, ID_EXEC, wxT(""), wxDefaultPosition, wxDefaultSize, 0 );
55+
bSizer20->Add( m_editexec, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
56+
57+
m_butbrowse = new wxButton( this, ID_BROWSE_EXEC, wxT("..."), wxDefaultPosition, wxSize( 30,-1 ), 0 );
58+
bSizer20->Add( m_butbrowse, 0, wxALIGN_CENTER_VERTICAL, 5 );
59+
60+
bSizer18->Add( bSizer20, 0, wxEXPAND, 5 );
61+
62+
wxBoxSizer* bSizer21;
63+
bSizer21 = new wxBoxSizer( wxHORIZONTAL );
64+
65+
m_staticText5 = new wxStaticText( this, wxID_DEFAULT, wxT("File Extensions (example: *.py;*.pyw)"), wxDefaultPosition, wxDefaultSize, 0 );
66+
bSizer21->Add( m_staticText5, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
67+
68+
m_editext = new wxTextCtrl( this, ID_EXT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 );
69+
bSizer21->Add( m_editext, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
70+
71+
bSizer18->Add( bSizer21, 0, wxEXPAND, 5 );
72+
73+
wxBoxSizer* bSizer14;
74+
bSizer14 = new wxBoxSizer( wxHORIZONTAL );
75+
76+
m_staticText6 = new wxStaticText( this, wxID_DEFAULT, wxT("Debugger: Command Line"), wxDefaultPosition, wxDefaultSize, 0 );
77+
bSizer14->Add( m_staticText6, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
78+
79+
m_debugcmdline = new wxTextCtrl( this, ID_DEBUGCMDLINE, wxT(""), wxDefaultPosition, wxDefaultSize, 0 );
80+
bSizer14->Add( m_debugcmdline, 1, wxALL, 5 );
81+
82+
bSizer18->Add( bSizer14, 0, wxEXPAND, 5 );
83+
84+
m_staticText4 = new wxStaticText( this, wxID_DEFAULT, wxT("Debugger: Input Commands and Output Regular Expressions (NOT IMPLEMENTED)"), wxDefaultPosition, wxDefaultSize, 0 );
85+
bSizer18->Add( m_staticText4, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
86+
87+
wxBoxSizer* bSizer10;
88+
bSizer10 = new wxBoxSizer( wxHORIZONTAL );
89+
90+
m_interplist = new wxListBox( this, ID_INTERP_LIST, wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_SINGLE );
91+
bSizer10->Add( m_interplist, 1, wxEXPAND|wxALL, 5 );
92+
93+
m_buttedit = new wxButton( this, ID_EDIT, wxT("Edit..."), wxDefaultPosition, wxDefaultSize, 0 );
94+
bSizer10->Add( m_buttedit, 0, wxALL, 5 );
95+
96+
bSizer18->Add( bSizer10, 1, wxEXPAND, 5 );
97+
98+
bSizer12->Add( bSizer18, 1, wxEXPAND, 5 );
99+
100+
this->SetSizer( bSizer12 );
101+
/////////////////////////////////////////////////////////////////////////////////
102+
bSizer12->SetSizeHints(this);
103+
104+
ReadDialogItems();
105+
}
106+
107+
108+
109+
ConfigDialog::~ConfigDialog()
110+
{
111+
//dtor
112+
}
113+
114+
void ConfigDialog::Edit(wxCommandEvent& event)
115+
{
116+
}
117+
118+
void ConfigDialog::OnApply()
119+
{
120+
WriteDialogItems();
121+
// m_plugin->UpdateConfig();
122+
}
123+
124+
125+
void ConfigDialog::NameChange(wxCommandEvent& event)
126+
{
127+
}
128+
129+
void ConfigDialog::ChangeSelection(wxCommandEvent& event)
130+
{
131+
}
132+
133+
// Updates the Dialog controls to the stored values for the current interpreter
134+
void ConfigDialog::ReadDialogItems()
135+
{
136+
ConfigManager* cfg = Manager::Get()->GetConfigManager(_T("PyPlugin"));
137+
m_debugcmdline->SetValue(cfg->Read(_T("debug_cmd_line"),_T(" -u -m pdb ")));
138+
m_editexec->SetValue(cfg->Read(_T("python_executable"),_T("python"))); //TODO: make default command platform specific
139+
m_editext->SetValue(cfg->Read(_T("python_file_extensions"),_T("*.py;*.pyc")));
140+
}
141+
142+
// Retrieve configuration values from the dialog widgets and store them appropriately
143+
void ConfigDialog::WriteDialogItems()
144+
{
145+
ConfigManager* cfg = Manager::Get()->GetConfigManager(_T("PyPlugin"));
146+
cfg->Write(_T("debug_cmd_line"),m_debugcmdline->GetValue());
147+
cfg->Write(_T("python_executable"),m_editexec->GetValue());
148+
cfg->Write(_T("python_file_extensions"),m_editext->GetValue());
149+
}
150+
151+
152+
void ConfigDialog::New(wxCommandEvent &event)
153+
{
154+
}
155+
156+
void ConfigDialog::Copy(wxCommandEvent &event)
157+
{
158+
}
159+
160+
161+
void ConfigDialog::Delete(wxCommandEvent &event)
162+
{
163+
}
164+
165+
166+
void ConfigDialog::OnEditBrowseExec(wxCommandEvent &event)
167+
{
168+
wxString interpextension=_T("*.*");
169+
wxFileDialog *fd=new wxFileDialog(NULL,_T("Choose the interpreter executable"),_T(""),_T(""),interpextension,wxOPEN|wxFILE_MUST_EXIST);
170+
if(fd->ShowModal()==wxID_OK)
171+
{
172+
m_editexec->SetValue(fd->GetPath());
173+
}
174+
delete fd;
175+
}
176+

PythonInterpreter/ConfigDialog.h

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#ifndef CONFIGDIALOG_H
2+
#define CONFIGDIALOG_H
3+
4+
#include <wx/wxprec.h>
5+
6+
#ifndef WX_PRECOMP
7+
#include <wx/wx.h>
8+
#endif
9+
10+
#include <sdk.h> // for "class cbPlugin"
11+
#include <configurationpanel.h>
12+
13+
14+
class PyPlugin;
15+
class InterpreterCollection;
16+
17+
class ConfigDialog : public cbConfigurationPanel
18+
{
19+
private:
20+
21+
public:
22+
ConfigDialog(wxWindow* parent, PyPlugin* plugin);
23+
virtual ~ConfigDialog();
24+
25+
virtual wxString GetTitle() const { return _("Python"); }
26+
virtual wxString GetBitmapBaseName() const { return _T("batch"); }
27+
virtual void OnApply();
28+
virtual void OnCancel(){}
29+
protected:
30+
void New(wxCommandEvent &event);
31+
void Edit(wxCommandEvent &event);
32+
void Copy(wxCommandEvent &event);
33+
void Delete(wxCommandEvent &event);
34+
void ChangeSelection(wxCommandEvent &event);
35+
void NameChange(wxCommandEvent &event);
36+
void OnUp(wxCommandEvent &event);
37+
void OnDown(wxCommandEvent &event);
38+
// Controls in the Edit Interpreter Box
39+
void OnEditOK(wxCommandEvent &event);
40+
void OnEditCancel(wxCommandEvent &event);
41+
void OnEditBrowseExec(wxCommandEvent &event);
42+
void ReadDialogItems();
43+
void WriteDialogItems();
44+
45+
// void ListChange(wxCommandEvent &event);
46+
// void UpdateUI(wxUpdateUIEvent &event);
47+
wxStaticText* m_staticText1;
48+
wxButton* m_butnew;
49+
wxButton* m_butcopy;
50+
wxButton* m_butdelete;
51+
wxButton* m_butup;
52+
wxButton* m_down;
53+
wxButton* m_buttedit;
54+
wxListBox* m_interplist;
55+
wxStaticText* m_staticText2;
56+
wxTextCtrl* m_editname;
57+
wxStaticText* m_staticText3;
58+
wxTextCtrl* m_editexec;
59+
wxButton* m_butbrowse;
60+
wxStaticText* m_staticText5;
61+
wxTextCtrl* m_editext;
62+
wxStaticText* m_staticText4;
63+
wxTextCtrl* m_editactions;
64+
wxStaticText* m_staticText6;
65+
wxTextCtrl* m_debugcmdline;
66+
int m_activeinterp;
67+
68+
private:
69+
PyPlugin *m_plugin;
70+
void UpdateEntry(int index);
71+
void ChooseFile();
72+
73+
DECLARE_EVENT_TABLE()
74+
};
75+
76+
#endif // CONFIGDIALOG
77+

0 commit comments

Comments
 (0)