Esempio n. 1
0
int wxExFrameWithHistory::FindInFilesDialog(
  int id,
  bool add_in_files)
{
  if (GetSTC() != NULL)
  {
    GetSTC()->GetFindString();
  }

  std::vector<wxExConfigItem> v;

  v.push_back(wxExConfigItem(
    wxExFindReplaceData::Get()->GetTextFindWhat(), 
    CONFIG_COMBOBOX, 
    wxEmptyString, 
    true));

  if (add_in_files)
  {
    v.push_back(wxExConfigItem(
      m_TextInFiles, 
      CONFIG_COMBOBOX, 
      wxEmptyString, 
      true));
  }
    
  if (id == ID_TOOL_REPORT_REPLACE) 
  {
    v.push_back(wxExConfigItem(
      wxExFindReplaceData::Get()->GetTextReplaceWith(), 
      CONFIG_COMBOBOX));
  }

  v.push_back(wxExConfigItem(wxExFindReplaceData::Get()->GetInfo()));

  if (wxExConfigDialog(this,
    v,
    GetFindInCaption(id)).ShowModal() == wxID_CANCEL)
  {
    return wxID_CANCEL;
  }

  wxLogStatus(
    wxExFindReplaceData::Get()->GetFindReplaceInfoText(
      id == ID_TOOL_REPORT_REPLACE));
        
  return wxID_OK;
}
Esempio n. 2
0
int wxExHeader::ShowDialog(wxWindow* parent, const wxString& title) const
{
  std::vector<wxExConfigItem> v;

  // Purpose is required.
  v.push_back(
    wxExConfigItem(
      m_TextPurpose, 
      wxEmptyString, 
      wxEmptyString,
      wxTE_MULTILINE,
      CONFIG_STRING, 
      true));

  // Author is required, but only presented if empty.
  // Email and License also are only presented if Author empty.
  if (wxConfigBase::Get()->Read(m_TextAuthor).empty())
  {
    v.push_back(wxExConfigItem(
      m_TextAuthor, 
      wxEmptyString, 
      wxEmptyString,
      0, 
      CONFIG_STRING,
      true));

    if (wxConfigBase::Get()->Read(m_TextEmail).empty())
    {
      v.push_back(wxExConfigItem(m_TextEmail));
    }

    if (wxConfigBase::Get()->Read(m_TextLicense).empty())
    {
      v.push_back(wxExConfigItem(m_TextLicense));
    }
  }

  return wxExConfigDialog(
    parent, 
    v, title).ShowModal();
}
Esempio n. 3
0
void wxExFrameWithHistory::CreateDialogs()
{
  std::vector<wxExConfigItem> f;
  std::vector<wxExConfigItem> r;

  f.push_back(
    wxExConfigItem(wxExFindReplaceData::Get()->GetTextFindWhat(), 
    CONFIG_COMBOBOX, 
    wxEmptyString, 
    true));
  r.push_back(f.back());

  r.push_back(wxExConfigItem(
    wxExFindReplaceData::Get()->GetTextReplaceWith(), 
    CONFIG_COMBOBOX));
  
  f.push_back(wxExConfigItem(
    m_TextInFiles, 
    CONFIG_COMBOBOX, 
    wxEmptyString, 
    true));
  r.push_back(f.back());

  f.push_back(wxExConfigItem(
    m_TextInFolder, 
    CONFIG_COMBOBOXDIR, 
    wxEmptyString, 
    true,
    1000));
  r.push_back(f.back());

  // Match whole word does not work with replace.
  std::set<wxString> s;
  s.insert(wxExFindReplaceData::Get()->GetTextMatchCase());
  s.insert(wxExFindReplaceData::Get()->GetTextRegEx());
  s.insert(m_TextRecursive);
  r.push_back(wxExConfigItem(s));
  
  std::set<wxString> t(wxExFindReplaceData::Get()->GetInfo());
  t.insert(m_TextRecursive);
  f.push_back(wxExConfigItem(t));
  
  m_FiFDialog = new wxExConfigDialog(this,
    f,
    _("Find In Files"),
    0,
    1,
    wxOK | wxCANCEL,
    ID_FIND_IN_FILES);
    
  m_RiFDialog = new wxExConfigDialog(this,
    r,
    _("Replace In Files"),
    0,
    1,
    wxOK | wxCANCEL,
    ID_REPLACE_IN_FILES);
}
Esempio n. 4
0
bool wxExVCS::GetDir(wxWindow* parent)
{
  if (!Use())
  {
    return false;
  }
  
  const wxString message = _("Select VCS Folder");
  
  std::vector<wxExConfigItem> v;

  // See also vcsentry, same item is used there.
  v.push_back(wxExConfigItem(
    _("Base folder"), 
    CONFIG_COMBOBOXDIR, 
    wxEmptyString, 
    true,
    1005));
      
  if (wxExConfigFirstOf(_("Base folder")).empty()) 
  {
    if (
      parent != NULL && 
      wxExConfigDialog(parent, v, message).ShowModal() == wxID_CANCEL)
    {
      return false;
    }
  }
  else
  {
    m_Entry = FindEntry(wxExConfigFirstOf(_("Base folder")));
  
    if (m_Entry.GetName().empty())
    {
      if (
        parent != NULL &&
        wxExConfigDialog(parent, v, message).ShowModal() == wxID_CANCEL)
      {
        return false;
      }
    }
  }
  
  m_Entry = FindEntry(wxExConfigFirstOf(_("Base folder")));
  
  return !m_Entry.GetName().empty();
}
Esempio n. 5
0
wxExListViewFile::wxExListViewFile(wxWindow* parent,
  wxExFrameWithHistory* frame,
  const wxString& file,
  wxWindowID id,
  long menu_flags,
  const wxPoint& pos,
  const wxSize& size,
  long style,
  const wxValidator& validator,
  const wxString& name)
  : wxExListViewWithFrame(
      parent, 
      frame, 
      LIST_FILE, 
      id, 
      menu_flags, 
      NULL, 
      pos, 
      size, 
      style, 
      validator, 
      name)
  , wxExFile(false) // do not open files in FileLoad and Save
  , m_AddItemsDialog(NULL)
  , m_ContentsChanged(false)
  , m_TextAddFiles(_("Add files"))
  , m_TextAddFolders(_("Add folders"))
  , m_TextAddRecursive(_("Recursive"))
  , m_TextAddWhat(_("Add what"))
  , m_TextInFolder(_("In folder"))
  , m_ItemUpdated(false)
  , m_ItemNumber(0)
{
  FileLoad(file);
  
  std::vector<wxExConfigItem> v;

  v.push_back(wxExConfigItem(
    m_TextAddWhat, 
    CONFIG_COMBOBOX, 
    wxEmptyString, 
    true));

  v.push_back(wxExConfigItem(
    m_TextInFolder, 
    CONFIG_COMBOBOXDIR, 
    wxEmptyString, 
    true,
    1000));

  std::set<wxString> set;
    
  set.insert(m_TextAddFiles);
  set.insert(m_TextAddFolders);
  set.insert(m_TextAddRecursive);

  v.push_back(wxExConfigItem(set));

  m_AddItemsDialog = new wxExConfigDialog(this,
    v,
    _("Add Items"),
    0,
    1,
    wxOK | wxCANCEL,
    wxID_ADD);
}
Esempio n. 6
0
void wxExSampleFrame::ShowConfigItems()
{
  std::vector<wxExConfigItem> v;

  // CONFIG_BUTTON
  for (size_t b = 1; b <= 4; b++)
  {
    v.push_back(wxExConfigItem(
      wxString::Format("<span size='x-large' color='blue'>Big</span> <b>bold</b> button %d", b),
      CONFIG_BUTTON,
      "Buttons",
      false,
      1000 + b));
  }

  // CONFIG_CHECKBOX
  for (size_t h = 1; h <= 4; h++)
  {
    v.push_back(wxExConfigItem(
      wxString::Format("Checkbox%d", h), 
      CONFIG_CHECKBOX, 
      "Checkboxes"));
  }

  v.push_back(wxExConfigItem(
    "Group Checkbox1",
    CONFIG_CHECKBOX, 
    "Checkboxes"));

  v.push_back(wxExConfigItem(
    "Group Checkbox2",
    CONFIG_CHECKBOX, 
    "Checkboxes"));

  // CONFIG_CHECKLISTBOX
  std::map<long, const wxString> clb;
  clb.insert(std::make_pair(0, "Bit One"));
  clb.insert(std::make_pair(1, "Bit Two"));
  clb.insert(std::make_pair(2, "Bit Three"));
  clb.insert(std::make_pair(4, "Bit Four"));
  v.push_back(wxExConfigItem(
    "Bin Choices", 
    clb, 
    false, 
    "Checkbox lists"));

  // CONFIG_CHECKLISTBOX_NONAME
  std::set<wxString> bchoices;
  bchoices.insert("This");
  bchoices.insert("Or");
  bchoices.insert("Other");
  v.push_back(wxExConfigItem(
    bchoices, 
    "Checkbox lists"));

  // CONFIG_COLOUR
  for (size_t i = 1; i <= 5; i++)
  {
    v.push_back(wxExConfigItem(
      wxString::Format("Colour%d", i), 
      CONFIG_COLOUR, 
      "Colours"));
  }

  // CONFIG_COMBOBOX
  for (size_t m = 1; m <= 5; m++)
  {
    v.push_back(wxExConfigItem(
      wxString::Format("Combobox%d", m), 
      CONFIG_COMBOBOX, 
      "Comboboxes"));
  }

  // CONFIG_COMBOBOX without a name
  v.push_back(wxExConfigItem(
    "Combobox No Name",
    CONFIG_COMBOBOX, 
    "Comboboxes",
    false,
    wxID_ANY,
    25,
    false));

  // CONFIG_COMBOBOXDIR
  v.push_back(wxExConfigItem(
    "Combobox Dir Required",
    CONFIG_COMBOBOXDIR, 
    "Comboboxes",
    true,
    1000));

  // CONFIG_COMBOBOXDIR
  v.push_back(wxExConfigItem(
    "Combobox Dir", 
    CONFIG_COMBOBOXDIR, 
    "Comboboxes",
    false,
    1001));

  // CONFIG_COMMAND_LINK_BUTTON
  for (size_t l = 1; l <= 4; l++)
  {
    v.push_back(wxExConfigItem(
      wxString::Format("Command Link Button%d\tThis text describes what the button does", l),
      CONFIG_COMMAND_LINK_BUTTON,
      "Command Link Buttons",
      false,
      1000 + l));
  }

  // CONFIG_DIRPICKERCTRL
  v.push_back(wxExConfigItem(
    "Dir Picker", 
    CONFIG_DIRPICKERCTRL, 
    "Pickers"));

  // CONFIG_FILEPICKERCTRL
  v.push_back(wxExConfigItem(
    "File Picker", 
    CONFIG_FILEPICKERCTRL, 
    "Pickers"));

  // CONFIG_FONTPICKERCTRL
  v.push_back(wxExConfigItem(
    "Font Picker", 
    CONFIG_FONTPICKERCTRL, 
    "Pickers"));

  // CONFIG_HYPERLINKCTRL
  v.push_back(wxExConfigItem(
    "Hyper Link 1",
    "www.wxwidgets.org",
    "Hyperlinks",
    0,
    CONFIG_HYPERLINKCTRL));

  v.push_back(wxExConfigItem(
    "Hyper Link 2",
    "www.scintilla.org",
    "Hyperlinks",
    0,
    CONFIG_HYPERLINKCTRL));

  // CONFIG_INT
  for (size_t j = 1; j <= 5; j++)
  {
    v.push_back(wxExConfigItem(
      wxString::Format("Integer%d", j), 
      CONFIG_INT, 
      "Integers", 
      true));
  }

  // CONFIG_LISTVIEW_FOLDER
  v.push_back(wxExConfigItem(
    "ListView",
    CONFIG_LISTVIEW_FOLDER,
    "ListView"));

  // CONFIG_RADIOBOX
  std::map<long, const wxString> echoices;
  echoices.insert(std::make_pair(0, "Zero"));
  echoices.insert(std::make_pair(1, "One"));
  echoices.insert(std::make_pair(2, "Two"));
  v.push_back(wxExConfigItem(
    "Radio Box", 
    echoices, 
    true, 
    "Radioboxes"));

  // CONFIG_SLIDER
  const int start = 1;
  for (size_t sl = start + 1; sl <= start + 5; sl++)
  {
    v.push_back(wxExConfigItem(
      wxString::Format("Slider%d", sl),
      start,
      sl,
      wxString("Spin controls"),
      CONFIG_SLIDER));
  }

  // CONFIG_SPINCTRL
  for (size_t s = 1; s <= 3; s++)
  {
    v.push_back(wxExConfigItem(
      wxString::Format("Spin Control%d", s), 
      1, 
      s, 
      wxString("Spin controls")));
  }

  // CONFIG_SPINCTRL_DOUBLE
  for (size_t sd = 1; sd <= 3; sd++)
  {
    v.push_back(wxExConfigItem(
      wxString::Format("Spin Control Double%d", sd), 
      1.0,
      (double)sd, 
      wxString("Spin controls"),
      CONFIG_SPINCTRL_DOUBLE,
      wxSL_HORIZONTAL,
      0.01));
  }

  for (size_t st = 1; st <= 5; st++)
  {
    // CONFIG_STATICTEXT
    v.push_back(wxExConfigItem(
      wxString::Format("Static Text%d", st),
      "this is my static text",
      "Static Text",
      0,
      CONFIG_STATICTEXT));
  }
  
  // CONFIG_STATICLINE (horizontal)
  v.push_back(wxExConfigItem(wxLI_HORIZONTAL, "Static Line"));

  // CONFIG_STATICLINE (vertical)
  v.push_back(wxExConfigItem(wxLI_VERTICAL, "Static Line"));

  // CONFIG_STC
  v.push_back(wxExConfigItem(
    "STC", 
    "cpp",
    "STC",
    0,
    CONFIG_STC));
      
  // CONFIG_STRING
  for (size_t l = 1; l <= 5; l++)
  {
    v.push_back(wxExConfigItem(
      wxString::Format("String%d", l), 
      wxEmptyString,
      "Strings"));
  }
  
  v.push_back(wxExConfigItem(
    "String Multiline", 
    wxEmptyString,
    "Strings",
    wxTE_MULTILINE));

  // CONFIG_TOGGLEBUTTON
  for (size_t tb = 1; tb <= 4; tb++)
  {
    v.push_back(wxExConfigItem(
      wxString::Format("Toggle Button%d", tb),
      CONFIG_TOGGLEBUTTON,
      "Toggle buttons"));
  }
  
  /// CONFIG_USER
  v.push_back(wxExConfigItem(
    "HTML Control", 
    new wxHtmlWindow(),
    myHtmlCreate,
    NULL,
    "User Controls"));
    
  v.push_back(wxExConfigItem(
    "Text Control", 
    new wxTextCtrl(),
    myTextCreate,
    NULL,
    "User Controls"));
    
  wxExConfigDialog* dlg = new wxExConfigDialog(
    this,
    v,
    "Config Dialog",
    0,
    1,
    wxAPPLY | wxCANCEL);

  dlg->ForceCheckBoxChecked("Group", "Checkboxes");
  dlg->Show();
}
Esempio n. 7
0
void wxExSampleFrame::OnCommand(wxCommandEvent& event)
{
  m_Statistics.Inc(wxString::Format("%d", event.GetId()));

  auto* editor = GetSTC();
  auto* grid = GetGrid();
  auto* listview = GetListView();

  if (
    (event.GetId() == wxID_UNDO ||
     event.GetId() == wxID_REDO ||
     event.GetId() == wxID_DELETE ||
     event.GetId() == wxID_SELECTALL ||
     event.GetId() == wxID_JUMP_TO) ||
    (event.GetId() >= wxID_CUT && event.GetId() <= wxID_CLEAR))
  {
    if (editor != NULL)
    {
      wxPostEvent(editor, event);
    }
    else if (grid != NULL)
    {
      wxPostEvent(grid, event);
    }
    else if (listview != NULL)
    {
      wxPostEvent(listview, event);
    }
  }
  else
  {
    switch (event.GetId())
    {
    case wxID_ABOUT:
      {
      wxAboutDialogInfo info;
      info.SetIcon(GetIcon());
      info.SetVersion(wxExGetVersionInfo().GetVersionOnlyString());
      info.SetCopyright(wxExGetVersionInfo().GetCopyright());
      wxAboutBox(info);
      }
      break;
    case wxID_EXIT: Close(true); break;
    case wxID_OPEN:
      {
      wxExFileDialog dlg(this, &m_STC->GetFile());
      if (dlg.ShowModalIfChanged(true) == wxID_CANCEL) return;
  
      wxStopWatch sw;
      
      m_STC->Open(dlg.GetPath(), 0, wxEmptyString, m_FlagsSTC);
  
      const auto stop = sw.Time();
      wxLogStatus(wxString::Format(
        "wxExSTC::Open:%ld milliseconds, %d bytes", stop, m_STC->GetTextLength()));
      }
      break;
  
    case wxID_PREVIEW: m_ListView->PrintPreview(); break;
    case wxID_PRINT: m_ListView->Print(); break;
    case wxID_PRINT_SETUP: wxExPrinting::Get()->GetHtmlPrinter()->PageSetup(); break;
  
    case wxID_SAVE:
      m_STC->GetFile().FileSave();
  
      if (m_STC->GetFileName().GetFullPath() == 
          wxExLexers::Get()->GetFileName().GetFullPath())
      {
        wxExLexers::Get()->Read();
        wxLogMessage("File contains: %d lexers", wxExLexers::Get()->GetCount());
          // As the lexer might have changed, update status bar field as well.
  #if wxUSE_STATUSBAR
        UpdateStatusBar(m_STC, "PaneLexer");
  #endif
      }
      break;
  
    case ID_CONFIG_DLG: ShowConfigItems(); break;
    case ID_CONFIG_DLG_READONLY:
      {
      std::vector<wxExConfigItem> v;
  
      v.push_back(wxExConfigItem("File Picker", CONFIG_FILEPICKERCTRL));
  
      for (size_t j = 1; j <= 10; j++)
      {
        v.push_back(wxExConfigItem(wxString::Format("Integer%d", j), CONFIG_INT));
      }
  
      wxExConfigDialog* dlg = new wxExConfigDialog(
        this,
        v,
        "Config Dialog Readonly",
        0,
        1,
        wxCANCEL);
  
        dlg->Show();
      }
      break;
      
    case ID_PROCESS_SELECT:
      wxExProcess::ConfigDialog(this);
      break;
  
    case ID_PROCESS_RUN:
      m_Process.Execute(wxEmptyString);
      break;
      
    case ID_SHELL_COMMAND:
        m_STCShell->Prompt("\nHello '" + event.GetString() + "' from the shell");
      break;
      
    case ID_SHOW_VCS:
      {
      wxFileDialog openFileDialog(this, _("Open File"), "", "",
        "All files (*.*)|*.*", wxFD_OPEN|wxFD_FILE_MUST_EXIST);
  
      if (openFileDialog.ShowModal() == wxID_CANCEL)
        return;     // the user changed idea...
          
      wxArrayString ar;
      ar.Add(openFileDialog.GetPath());
      wxExVCS vcs(ar);
      wxLogMessage(vcs.GetName());
      
      if (vcs.GetEntry().SupportKeywordExpansion())
      {
        wxLogMessage("supports keyword expansion");
      }
      }
      break;
  
    case ID_STATISTICS_SHOW:
      m_Notebook->AddPage(m_Statistics.Show(m_Notebook), "Statistics");
      break;
  
    case ID_STC_CONFIG_DLG:
      wxExSTC::ConfigDialog(
        this,
        "Editor Options",
        wxExSTC::STC_CONFIG_MODELESS | wxExSTC::STC_CONFIG_WITH_APPLY);
      break;
      
    case ID_STC_ENTRY_DLG:
      {
      wxString text;
      
      for (auto i = 0; i < 100; i++)
      {
        text += wxString::Format("Hello from line: %d\n", i);
      }
      
      wxExSTCEntryDialog dlg(
        this,
        "Hello world",
        text,      
        "Greetings from " + wxTheApp->GetAppDisplayName());
        
        dlg.ShowModal();
      }
      break;
      
    case ID_STC_FLAGS:
      {
      long value = wxGetNumberFromUser(
        "Input:",
        wxEmptyString,
        "STC Open Flag",
        m_FlagsSTC,
        0,
        0xFFFF);
  
      if (value != -1)
      {
        m_FlagsSTC = value;
      }
      }
      break;
      
    case ID_STC_SPLIT:
      {
      wxExSTC* stc = new wxExSTC(*m_STC);
      m_Notebook->AddPage(
        stc,
        wxString::Format("stc%d", stc->GetId()),
        m_STC->GetFileName().GetFullName());
      stc->SetDocPointer(m_STC->GetDocPointer());
      }
      break;
      
    default:
      wxFAIL;
      break;
    }
  }
}
Esempio n. 8
0
int wxExVCS::ConfigDialog(
  wxWindow* parent,
  const wxString& title,
  bool modal) const
{
  if (m_Entries.empty())
  {
    return wxID_CANCEL;
  }
  
  std::map<long, const wxString> choices;
  choices.insert(std::make_pair((long)VCS_NONE, _("None")));
  
  // Using auto vcs is not useful if we only have one vcs.
  if (m_Entries.size() != 1)
  {
    choices.insert(std::make_pair((long)VCS_AUTO, "Auto"));
  }
  
  long i = VCS_START;

  for (
#ifdef wxExUSE_CPP0X	
    auto it = m_Entries.begin();
#else
    std::vector<wxExVCSEntry>::const_iterator it = m_Entries.begin();
#endif	
    it != m_Entries.end();
    ++it)
  {
    choices.insert(std::make_pair(i, it->GetName()));
    i++;
  }

  // Estimate number of columns used by the radiobox.
  int cols = 5;

  switch (choices.size())
  {
    case 6:
    case 11:
      cols = 3;
      break;

    case 7:
    case 8:
    case 12:
    case 16:
      cols = 4;
      break;
  }

  std::vector<wxExConfigItem> v;

  v.push_back(wxExConfigItem(
    "VCS",
    choices,
    true, // use a radiobox 
    wxEmptyString, 
    cols));

  for (
#ifdef wxExUSE_CPP0X	
    auto it2 = m_Entries.begin();
#else
    std::vector<wxExVCSEntry>::const_iterator it2 = m_Entries.begin();
#endif	
    it2 != m_Entries.end();
    ++it2)
  {
    v.push_back(wxExConfigItem(it2->GetName(), CONFIG_FILEPICKERCTRL));
  }

  if (modal)
  {
    return wxExConfigDialog(parent, v, title).ShowModal();
  }
  else
  {
    wxExConfigDialog* dlg = new wxExConfigDialog(parent, v, title);
    return dlg->Show();
  }
}