1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
#include "ColoursAndFontsManager.h"
#include "LanguageServerPage.h"
#include "LanguageServerProtocol.h"
#include "globals.h"
#include <algorithm>
#include <macros.h>
#include <wx/choicdlg.h>
#include <wx/dirdlg.h>
LanguageServerPage::LanguageServerPage(wxWindow* parent, const LanguageServerEntry& data)
: LanguageServerPageBase(parent)
{
LexerConf::Ptr_t lex = ColoursAndFontsManager::Get().GetLexer("text");
if(lex) { lex->Apply(m_stcCommand); }
m_textCtrlName->SetValue(data.GetName());
m_textCtrlWD->SetValue(data.GetWorkingDirectory());
m_stcCommand->SetText(data.GetCommand());
m_checkBoxEnabled->SetValue(data.IsEnabled());
const wxArrayString& langs = data.GetLanguages();
wxString languages = wxJoin(langs, ';');
this->m_textCtrlLanguages->SetValue(languages);
this->m_comboBoxConnection->SetValue(data.GetConnectionString());
m_checkBoxDiagnostics->SetValue(data.IsDisaplayDiagnostics());
m_sliderPriority->SetValue(data.GetPriority());
}
LanguageServerPage::LanguageServerPage(wxWindow* parent)
: LanguageServerPageBase(parent)
{
LexerConf::Ptr_t lex = ColoursAndFontsManager::Get().GetLexer("text");
if(lex) { lex->Apply(m_stcCommand); }
}
LanguageServerPage::~LanguageServerPage() {}
LanguageServerEntry LanguageServerPage::GetData() const
{
LanguageServerEntry d;
d.SetName(m_textCtrlName->GetValue());
d.SetCommand(m_stcCommand->GetText().Trim().Trim(false));
d.SetWorkingDirectory(m_textCtrlWD->GetValue());
d.SetLanguages(GetLanguages());
d.SetEnabled(m_checkBoxEnabled->IsChecked());
d.SetConnectionString(m_comboBoxConnection->GetValue());
d.SetPriority(m_sliderPriority->GetValue());
d.SetDisaplayDiagnostics(m_checkBoxDiagnostics->IsChecked());
return d;
}
wxArrayString LanguageServerPage::GetLanguages() const
{
wxArrayString selectedLanguages;
wxString langStr = m_textCtrlLanguages->GetValue();
selectedLanguages = ::wxStringTokenize(langStr, ";,", wxTOKEN_STRTOK);
return selectedLanguages;
}
void LanguageServerPage::OnSuggestLanguages(wxCommandEvent& event)
{
const std::set<wxString>& langSet = LanguageServerProtocol::GetSupportedLanguages();
wxArrayString arrLang;
for(const wxString& lang : langSet) {
arrLang.Add(lang);
}
wxArrayInt selections;
int count = ::wxGetSelectedChoices(selections, _("Select the supported languages by this server:"), _("CodeLite"),
arrLang, GetParent());
if(count == wxNOT_FOUND) { return; }
wxString newText;
for(int sel : selections) {
newText << arrLang.Item(sel) << ";";
}
m_textCtrlLanguages->ChangeValue(newText);
}
void LanguageServerPage::OnCommandUI(wxUpdateUIEvent& event) { event.Enable(true); }
void LanguageServerPage::OnBrowseWD(wxCommandEvent& event)
{
wxUnusedVar(event);
wxString path(m_textCtrlWD->GetValue());
wxString new_path =
wxDirSelector(_("Select a working directory:"), path, wxDD_DEFAULT_STYLE, wxDefaultPosition, this);
if(new_path.IsEmpty() == false) { m_textCtrlWD->SetValue(new_path); }
}
|