now messages can be saved to a file
authorMohammed Adnène Trojette <adn@videolan.org>
Thu, 10 Jul 2003 11:15:18 +0000 (11:15 +0000)
committerMohammed Adnène Trojette <adn@videolan.org>
Thu, 10 Jul 2003 11:15:18 +0000 (11:15 +0000)
modules/gui/wxwindows/messages.cpp
modules/gui/wxwindows/wxwindows.h

index 39912d0..7902b70 100644 (file)
@@ -2,7 +2,7 @@
  * 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.10 2003/07/10 11:15:18 adn Exp $
  *
  * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
  *
@@ -59,7 +59,9 @@
 enum
 {
     Close_Event,
-    Verbose_Event
+    Verbose_Event,
+    Clear_Event,
+    Save_Log_Event
 };
 
 BEGIN_EVENT_TABLE(Messages, wxFrame)
@@ -67,6 +69,7 @@ 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) */
@@ -84,6 +87,7 @@ Messages::Messages( intf_thread_t *_p_intf, wxWindow *p_parent ):
     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 );
@@ -106,6 +110,10 @@ Messages::Messages( intf_thread_t *_p_intf, wxWindow *p_parent ):
     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")) );
@@ -114,6 +122,7 @@ Messages::Messages( intf_thread_t *_p_intf, wxWindow *p_parent ):
     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->Layout();
@@ -130,6 +139,8 @@ Messages::Messages( intf_thread_t *_p_intf, wxWindow *p_parent ):
 
 Messages::~Messages()
 {
+/* Clean up */
+    if( save_log_dialog ) delete save_log_dialog;
 }
 
 void Messages::UpdateLog()
@@ -200,6 +211,21 @@ void Messages::OnClear( wxCommandEvent& WXUNUSED(event) )
     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();
index 964e4ca..3d77788 100644 (file)
@@ -2,7 +2,7 @@
  * wxwindows.h: private wxWindows interface description
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: wxwindows.h,v 1.39 2003/07/09 09:30:23 adn Exp $
+ * $Id: wxwindows.h,v 1.40 2003/07/10 11:15:18 adn Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *
@@ -434,6 +434,7 @@ private:
     void OnClose( wxCommandEvent& event );
     void OnVerbose( wxCommandEvent& event );
     void OnClear( wxCommandEvent& event );
+    void OnSaveLog( wxCommandEvent& event );
 
     DECLARE_EVENT_TABLE();
 
@@ -444,6 +445,8 @@ private:
     wxTextAttr *warn_attr;
     wxTextAttr *dbg_attr;
 
+    wxFileDialog *save_log_dialog;
+    
     vlc_bool_t b_verbose;
 };