]> git.sesse.net Git - vlc/blobdiff - modules/gui/wxwindows/messages.cpp
* modules/gui/wxwindows/*: added a "simple open" entry to the "File" menu of the...
[vlc] / modules / gui / wxwindows / messages.cpp
index 39912d0884bff91e0c66d560d53f877bd57cca0e..f9b5b9d59ce3afb506d7dbd61523e6abefa7fbf9 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.12 2003/07/12 13:33:10 gbazin 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) */
@@ -82,8 +85,8 @@ Messages::Messages( intf_thread_t *_p_intf, wxWindow *p_parent ):
 {
     /* 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 );
@@ -99,23 +102,33 @@ Messages::Messages( intf_thread_t *_p_intf, wxWindow *p_parent ):
     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 );
@@ -130,6 +143,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 +215,22 @@ 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();