Exemple #1
0
header_editor_frame_c::header_editor_frame_c(wxWindow *parent)
    : wxFrame(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(800, 600), wxDEFAULT_FRAME_STYLE | wxTAB_TRAVERSAL)
    , m_file_menu(NULL)
    , m_file_menu_sep(false)
    , m_page_panel(NULL)
    , m_bs_main(NULL)
    , m_bs_page(NULL)
    , m_ignore_tree_selection_changes(false)
{
    wxPanel *frame_panel = new wxPanel(this);

    m_tc_tree = new wxTreeCtrl(frame_panel, ID_HE_TC_TREE, wxDefaultPosition, wxDefaultSize, wxBORDER_SUNKEN | wxTR_DEFAULT_STYLE | wxTR_HIDE_ROOT | wxTR_SINGLE); //| wxTAB_TRAVERSAL);
    m_root_id = m_tc_tree->AddRoot(wxEmptyString);

    m_tc_tree->SetMinSize(wxSize(250, -1));

    m_page_panel = new wxPanel(frame_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_SIMPLE);
    m_bs_page    = new wxBoxSizer(wxHORIZONTAL);
    m_page_panel->SetSizer(m_bs_page);

    m_bs_main = new wxBoxSizer(wxHORIZONTAL);
    m_bs_main->Add(m_tc_tree,   2, wxGROW | wxALL, 5);
    m_bs_main->Add(m_page_panel,3, wxGROW | wxALL, 5);

    frame_panel->SetSizer(m_bs_main);

    SetMinSize(wxSize(800, 600));

    clear_pages();

    const wxString dummy(wxU("dummy"));

    m_file_menu = new wxMenu();
    m_file_menu->Append(ID_M_HE_FILE_OPEN,               dummy);
    m_file_menu->Append(ID_M_HE_FILE_SAVE,               dummy);
    m_file_menu->Append(ID_M_HE_FILE_RELOAD,             dummy);
    m_file_menu->Append(ID_M_HE_FILE_CLOSE,              dummy);
    m_file_menu->AppendSeparator();
    m_file_menu->Append(ID_M_HE_FILE_QUIT,               dummy);

    m_headers_menu = new wxMenu();
    m_headers_menu->Append(ID_M_HE_HEADERS_EXPAND_ALL,   dummy);
    m_headers_menu->Append(ID_M_HE_HEADERS_COLLAPSE_ALL, dummy);
    m_headers_menu->AppendSeparator();
    m_headers_menu->Append(ID_M_HE_HEADERS_VALIDATE,     dummy);

    wxMenu *help_menu = new wxMenu();
    help_menu->Append(ID_M_HE_HELP_HELP,                 dummy);

    wxMenuBar *menu_bar = new wxMenuBar();
    menu_bar->Append(m_file_menu,                        dummy);
    menu_bar->Append(m_headers_menu,                     dummy);
    menu_bar->Append(help_menu,                          dummy);
    SetMenuBar(menu_bar);

    translate_ui();

    enable_menu_entries();

    m_status_bar = new wxStatusBar(this, wxID_ANY);
    SetStatusBar(m_status_bar);

    m_status_bar_timer.SetOwner(this, ID_T_HE_STATUS_BAR);

    SetIcon(wxIcon(mkvmergeGUI_xpm));
    SetDropTarget(new header_editor_drop_target_c(this));

    set_status_bar(Z("Header editor ready."));
}
void
he_value_page_c::init() {
  m_cb_add_or_remove = new wxCheckBox(this, ID_HE_CB_ADD_OR_REMOVE, wxEmptyString);
  m_input            = create_input_control();
  m_b_reset          = new wxButton(this, ID_HE_B_RESET);

  wxBoxSizer *siz = new wxBoxSizer(wxVERTICAL);

  siz->AddSpacer(5);
  siz->Add(new wxStaticText(this, wxID_ANY, wxU(m_title.get_translated())), 0, wxGROW | wxLEFT | wxRIGHT, 5);
  siz->AddSpacer(5);
  siz->Add(new wxStaticLine(this),                                          0, wxGROW | wxLEFT | wxRIGHT, 5);
  siz->AddSpacer(5);

  wxFlexGridSizer *siz_fg = new wxFlexGridSizer(2, 5, 5);
  siz_fg->AddGrowableCol(1, 1);

  siz_fg->AddSpacer(5);
  siz_fg->AddSpacer(5);

  m_st_type_label = new wxStaticText(this, wxID_ANY, wxEmptyString);
  m_st_type       = new wxStaticText(this, wxID_ANY, wxEmptyString);
  siz_fg->Add(m_st_type_label, 0, wxALIGN_TOP,          0);
  siz_fg->Add(m_st_type,       0, wxALIGN_TOP | wxGROW, 0);

  if (!m_description.get_untranslated().empty()) {
    m_st_description_label = new wxStaticText(this, wxID_ANY, wxEmptyString);
    m_st_description       = new wxStaticText(this, wxID_ANY, wxEmptyString);
    siz_fg->Add(m_st_description_label, 0, wxALIGN_TOP,          0);
    siz_fg->Add(m_st_description,       0, wxALIGN_TOP | wxGROW, 0);
  }

  m_st_add_or_remove = new wxStaticText(this, wxID_ANY, wxEmptyString);

  if (!m_element)
    m_present        = false;

  else {
    m_present        = true;

    const EbmlSemantic *semantic = find_ebml_semantic(KaxSegment::ClassInfos, m_callbacks.GlobalId);
    if (semantic && semantic->Mandatory)
      m_cb_add_or_remove->Disable();
  }

  m_st_status = new wxStaticText(this, wxID_ANY, wxEmptyString);
  siz_fg->Add(m_st_status,        0, wxALIGN_TOP, 0);
  siz_fg->Add(m_st_add_or_remove, 1, wxALIGN_TOP | wxGROW, 0);
  siz_fg->AddSpacer(0);
  siz_fg->Add(m_cb_add_or_remove, 1, wxALIGN_TOP | wxGROW, 0);

  if (m_present) {
    m_st_original_value = new wxStaticText(this, wxID_ANY, wxEmptyString);
    siz_fg->Add(m_st_original_value,                                              0, wxALIGN_TOP,          0);
    siz_fg->Add(new wxStaticText(this, wxID_ANY, get_original_value_as_string()), 1, wxALIGN_TOP | wxGROW, 0);
  }

  m_input->Enable(m_present);

  m_st_value_label = new wxStaticText(this, wxID_ANY, wxEmptyString);
  siz_fg->Add(m_st_value_label, 0, wxALIGN_CENTER_VERTICAL,          0);
  siz_fg->Add(m_input,          1, wxALIGN_CENTER_VERTICAL | wxGROW, 0);

  siz->Add(siz_fg, 0, wxGROW | wxLEFT | wxRIGHT, 5);

  siz->AddStretchSpacer();

  wxBoxSizer *siz_line = new wxBoxSizer(wxHORIZONTAL);
  siz_line->AddStretchSpacer();
  siz_line->Add(m_b_reset, 0, wxGROW, 0);

  siz->Add(siz_line, 0, wxGROW | wxLEFT | wxRIGHT, 5);
  siz->AddSpacer(5);

  SetSizer(siz);

  if (!m_toplevel_page)
    m_parent->append_page(this);
  else
    m_parent->append_sub_page(this, m_toplevel_page->m_page_id);

  m_toplevel_page->m_children.push_back(this);

  translate_ui();
}