* playlist.cpp : wxWindows plugin for vlc
*****************************************************************************
* Copyright (C) 2000-2001 VideoLAN
- * $Id: messages.cpp,v 1.9 2003/07/09 10:59:11 adn Exp $
+ * $Id: messages.cpp,v 1.12 2003/07/12 13:33:10 gbazin Exp $
*
* Authors: Olivier Teulière <ipkiss@via.ecp.fr>
*
enum
{
Close_Event,
- Verbose_Event
+ Verbose_Event,
+ Clear_Event,
+ Save_Log_Event
};
BEGIN_EVENT_TABLE(Messages, wxFrame)
EVT_BUTTON(wxID_OK, Messages::OnClose)
EVT_CHECKBOX(Verbose_Event, Messages::OnVerbose)
EVT_BUTTON(wxID_CLEAR, Messages::OnClear)
+ EVT_BUTTON(wxID_SAVEAS, Messages::OnSaveLog)
/* Special events : we don't want to destroy the window when the user
* clicks on (X) */
{
/* Initializations */
p_intf = _p_intf;
- b_verbose = VLC_FALSE;
SetIcon( *p_intf->p_sys->p_icon );
+ save_log_dialog = NULL;
/* Create a panel to put everything in */
wxPanel *messages_panel = new wxPanel( this, -1 );
dbg_attr = new wxTextAttr( *wxBLACK );
/* Create the OK button */
- wxButton *ok_button = new wxButton( messages_panel, wxID_OK, wxU(_("OK")));
+ wxButton *ok_button = new wxButton( messages_panel, wxID_OK,
+ wxU(_("Close")));
ok_button->SetDefault();
/* Create the Clear button */
- wxButton *clear_button = new wxButton( messages_panel, wxID_CLEAR, wxU(_("Clear")));
+ wxButton *clear_button = new wxButton( messages_panel, wxID_CLEAR,
+ wxU(_("Clear")));
clear_button->SetDefault();
+ /* Create the Save Log button */
+ wxButton *save_log_button = new wxButton( messages_panel, wxID_SAVEAS,
+ wxU(_("Save As...")));
+ save_log_button->SetDefault();
+
/* Create the Verbose checkbox */
wxCheckBox *verbose_checkbox =
new wxCheckBox( messages_panel, Verbose_Event, wxU(_("Verbose")) );
+ b_verbose = p_intf->p_libvlc->i_verbose > 0;
+ verbose_checkbox->SetValue( b_verbose );
/* Place everything in sizers */
wxBoxSizer *buttons_sizer = new wxBoxSizer( wxHORIZONTAL );
buttons_sizer->Add( ok_button, 0, wxEXPAND |wxALIGN_LEFT| wxALL, 5 );
buttons_sizer->Add( clear_button, 0, wxEXPAND |wxALIGN_LEFT| wxALL, 5 );
+ buttons_sizer->Add( save_log_button, 0, wxEXPAND |wxALIGN_LEFT| wxALL, 5 );
buttons_sizer->Add( new wxPanel( this, -1 ), 1, wxALL, 5 );
- buttons_sizer->Add( verbose_checkbox, 0, wxEXPAND |wxALIGN_RIGHT | wxALL, 5 );
+ buttons_sizer->Add( verbose_checkbox, 0, wxEXPAND|wxALIGN_RIGHT|wxALL, 5 );
buttons_sizer->Layout();
wxBoxSizer *main_sizer = new wxBoxSizer( wxVERTICAL );
wxBoxSizer *panel_sizer = new wxBoxSizer( wxVERTICAL );
Messages::~Messages()
{
+/* Clean up */
+ if( save_log_dialog ) delete save_log_dialog;
}
void Messages::UpdateLog()
textctrl->Clear();
}
+void Messages::OnSaveLog( wxCommandEvent& WXUNUSED(event) )
+{
+ if( save_log_dialog == NULL )
+ save_log_dialog = new wxFileDialog( this,
+ wxU(_("Save Messages As a file...")),
+ wxT(""), wxT("messages"), wxT("*"), wxSAVE | wxOVERWRITE_PROMPT );
+
+ if( save_log_dialog && save_log_dialog->ShowModal() == wxID_OK )
+ {
+ if( !textctrl->SaveFile( save_log_dialog->GetPath() ) )
+ {
+ // [FIX ME] should print an error message
+ }
+ }
+}
+
void Messages::OnVerbose( wxCommandEvent& event )
{
b_verbose = event.IsChecked();