File: NewPHPProjectWizard.cpp

package info (click to toggle)
codelite 17.0.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 136,204 kB
  • sloc: cpp: 491,547; ansic: 280,393; php: 10,259; sh: 8,930; lisp: 7,664; vhdl: 6,518; python: 6,020; lex: 4,920; yacc: 3,123; perl: 2,385; javascript: 1,715; cs: 1,193; xml: 1,110; makefile: 804; cobol: 741; sql: 709; ruby: 620; f90: 566; ada: 534; asm: 464; fortran: 350; objc: 289; tcl: 258; java: 157; erlang: 61; pascal: 51; ml: 49; awk: 44; haskell: 36
file content (103 lines) | stat: -rw-r--r-- 3,365 bytes parent folder | download | duplicates (5)
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include "NewPHPProjectWizard.h"
#include <wx/filename.h>
#include "php_workspace.h"
#include "php_project.h"
#include "php_configuration_data.h"
#include <wx/tokenzr.h>

NewPHPProjectWizard::NewPHPProjectWizard(wxWindow* parent, bool createProjectFromWorkspaceFolder)
    : NewPHPProjectWizardBase(parent)
    , m_nameModified(false)
{
    // Use the default PHP
    PHPConfigurationData conf;
    conf.Load();
    m_filePickerPhpExe->SetPath(conf.GetPhpExe());
    if(createProjectFromWorkspaceFolder) {
        m_radioBoxCreateMethod->SetSelection(1);
    }
    m_dirPickerPath->SetPath(PHPWorkspace::Get()->GetFilename().GetPath());
}

NewPHPProjectWizard::~NewPHPProjectWizard() {}

void NewPHPProjectWizard::OnFinish(wxWizardEvent& event) { event.Skip(); }

void NewPHPProjectWizard::OnPageChanging(wxWizardEvent& event)
{
    event.Skip();
    if(event.GetDirection() && event.GetPage() == m_wizardPageCreateMethod) {
        if(m_radioBoxCreateMethod->GetSelection() == 0) {
            // empty project
            m_checkBoxSeparateFolder->Show(true);
        } else {
            m_checkBoxSeparateFolder->Show(false);
        }
    } else if(event.GetDirection() && event.GetPage() == m_wizardPageProjectDetails) {
        wxFileName projectFilePath(m_textCtrlPreview->GetValue());
        if(!PHPWorkspace::Get()->CanCreateProjectAtPath(projectFilePath, true)) {
            event.Skip(false);
            event.Veto();
            return;
        }
    }
}

void NewPHPProjectWizard::DoUpdateProjectFolder()
{
    // Build the file name
    wxFileName fn(m_dirPickerPath->GetPath(), "");
    if(m_checkBoxSeparateFolder->IsShown() && m_checkBoxSeparateFolder->IsChecked()) {
        fn.AppendDir(m_textCtrlName->GetValue());
    }
    fn.SetName(m_textCtrlName->GetValue());
    fn.SetExt("phprj");
    m_textCtrlPreview->ChangeValue(fn.GetFullPath());
}

void NewPHPProjectWizard::OnDirSelected(wxFileDirPickerEvent& event)
{
    if(!m_nameModified) {
        wxFileName path(event.GetPath(), "");
        if(!path.GetDirs().IsEmpty()) {
            m_textCtrlName->ChangeValue(path.GetDirs().Last());
        }
    }
    DoUpdateProjectFolder();
}

void NewPHPProjectWizard::OnNameUpdated(wxCommandEvent& event)
{
    m_nameModified = true;
    DoUpdateProjectFolder();
}

PHPProject::CreateData NewPHPProjectWizard::GetCreateData()
{
    PHPConfigurationData conf;
    PHPProject::CreateData cd;
    conf.Load();
    cd.importFilesUnderPath = true;
    cd.name = m_textCtrlName->GetValue();
    cd.phpExe = m_filePickerPhpExe->GetPath().IsEmpty() ? conf.GetPhpExe() : m_filePickerPhpExe->GetPath();
    cd.path = wxFileName(m_textCtrlPreview->GetValue()).GetPath();
    cd.projectType = GetProjectType();
    cd.ccPaths = m_textCtrlCCPaths->GetValue();
    return cd;
}

void NewPHPProjectWizard::OnCheckSeparateFolder(wxCommandEvent& event) { DoUpdateProjectFolder(); }
void NewPHPProjectWizard::OnBrowseForCCFolder(wxCommandEvent& event)
{
    wxString path = ::wxDirSelector();
    if(path.IsEmpty()) return;

    wxString currentContent = m_textCtrlCCPaths->GetValue();
    wxArrayString paths = ::wxStringTokenize(currentContent, "\n", wxTOKEN_STRTOK);
    if(paths.Index(path) == wxNOT_FOUND) {
        paths.Add(path);
    }
    paths.Sort();
    currentContent = ::wxJoin(paths, '\n');
    m_textCtrlCCPaths->ChangeValue(currentContent);
}