X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=modules%2Fgui%2Fwxwindows%2Fiteminfo.cpp;h=1d97d9dbf80166e9494ef4d43ccc7f5524ca12d1;hb=cfbd41c25dd66048df7717d6b03c65a2495ddd0b;hp=03b785bfe13faf98fbf69d5e5780102cf3510fbd;hpb=42195685323f11ea92176ac02c366444d908f154;p=vlc diff --git a/modules/gui/wxwindows/iteminfo.cpp b/modules/gui/wxwindows/iteminfo.cpp index 03b785bfe1..1d97d9dbf8 100644 --- a/modules/gui/wxwindows/iteminfo.cpp +++ b/modules/gui/wxwindows/iteminfo.cpp @@ -1,8 +1,8 @@ /***************************************************************************** * iteminfo.cpp : wxWindows plugin for vlc ***************************************************************************** - * Copyright (C) 2000-2001 VideoLAN - * $Id: iteminfo.cpp,v 1.5 2003/12/22 02:24:52 sam Exp $ + * Copyright (C) 2000-2004 VideoLAN + * $Id$ * * Authors: Clément Stenac * @@ -31,20 +31,7 @@ #include -#ifdef WIN32 /* mingw32 hack */ -#undef Yield -#undef CreateDialog -#endif - -/* Let vlc take care of the i18n stuff */ -#define WXINTL_NO_GETTEXT_MACRO - -#include -#include -#include -#include #include -#include #include #include @@ -84,7 +71,7 @@ END_EVENT_TABLE() ItemInfoDialog::ItemInfoDialog( intf_thread_t *_p_intf, playlist_item_t *_p_item, wxWindow* _p_parent ): - wxDialog( _p_parent, -1, wxU(_("Playlist item options")), + wxDialog( _p_parent, -1, wxU(_("Playlist item info")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE ) { /* Initializations */ @@ -140,74 +127,72 @@ ItemInfoDialog::~ItemInfoDialog() *****************************************************************************/ wxPanel *ItemInfoDialog::InfoPanel( wxWindow* parent ) { - wxPanel *panel = new wxPanel( parent, -1, wxDefaultPosition, + wxPanel *info_panel = new wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize ); + info_panel->SetAutoLayout( TRUE ); + wxBoxSizer *info_sizer = new wxBoxSizer( wxHORIZONTAL ); - wxStaticBox *panel_box = new wxStaticBox( panel, -1, - wxU(_("Item informations")) ); - wxStaticBoxSizer *panel_sizer = new wxStaticBoxSizer( panel_box, - wxVERTICAL ); - - info_subpanel = new wxPanel( panel, -1 ); + /* Create a box to surround the controls */ + wxStaticBox *panel_box = new wxStaticBox( info_panel, -1, + wxU(_("Item Info")) ); - wxFlexGridSizer *subpanel_sizer = - new wxFlexGridSizer( 3, 1 , 0 , 0 ); + wxStaticBoxSizer *box_sizer = new wxStaticBoxSizer( panel_box, + wxVERTICAL ); + wxFlexGridSizer *sizer = new wxFlexGridSizer(2,3,20); /* URI Textbox */ wxStaticText *uri_label = - new wxStaticText(info_subpanel, -1, wxU(_("URI")) ); + new wxStaticText( info_panel, -1, wxU(_("URI")) ); - uri_text = new wxTextCtrl( info_subpanel, Uri_Event, - wxU(p_item->psz_uri), - wxDefaultPosition, wxSize( 300, -1 ), - wxTE_PROCESS_ENTER); - - subpanel_sizer->Add( uri_label, 0, wxALIGN_LEFT | - wxALIGN_CENTER_VERTICAL ); - subpanel_sizer->Add( uri_text, 0, wxALIGN_RIGHT | - wxALIGN_CENTER_VERTICAL ); + uri_text = new wxTextCtrl( info_panel, Uri_Event, + wxU(p_item->input.psz_uri), wxDefaultPosition, wxSize( 300, -1 ), + wxTE_PROCESS_ENTER ); + sizer->Add( uri_label, 0 , wxALIGN_LEFT |wxALL , 5 ); + sizer->Add( uri_text, 1 , wxALIGN_RIGHT | wxALL , 5 ); /* Name Textbox */ wxStaticText *name_label = - new wxStaticText(info_subpanel, -1, wxU(_("Name")) ); + new wxStaticText( info_panel, -1, wxU(_("Name")) ); - name_text = - new wxTextCtrl( info_subpanel, Uri_Event, - wxU(p_item->psz_name), - wxDefaultPosition, wxSize( 300, -1 ), - wxTE_PROCESS_ENTER); + name_text = new wxTextCtrl( info_panel, Uri_Event, + wxU(p_item->input.psz_name), wxDefaultPosition, wxSize( 300, -1 ), + wxTE_PROCESS_ENTER ); - subpanel_sizer->Add( name_label, 0, wxALIGN_LEFT | - wxALIGN_CENTER_VERTICAL ); - subpanel_sizer->Add( name_text, 0, wxALIGN_RIGHT | - wxALIGN_CENTER_VERTICAL ); + sizer->Add( name_label, 0 , wxALIGN_LEFT |wxALL , 5 ); + sizer->Add( name_text, 1 , wxALIGN_RIGHT | wxALL , 5 ); /* Author Textbox */ wxStaticText *author_label = - new wxStaticText(info_subpanel, -1, wxU(_("Author")) ); + new wxStaticText( info_panel, -1, wxU(_("Author")) ); - author_text = - new wxTextCtrl( info_subpanel, Uri_Event, - wxU(p_item->psz_author), + author_text = new wxTextCtrl( info_panel, Uri_Event, + wxU( playlist_ItemGetInfo( p_item, + _("General"), _("Author") ) ), wxDefaultPosition, wxSize( 300, -1 ), wxTE_PROCESS_ENTER); - subpanel_sizer->Add( author_label, 0, wxALIGN_LEFT | - wxALIGN_CENTER_VERTICAL ); - subpanel_sizer->Add( author_text, 0, wxALIGN_RIGHT | - wxALIGN_CENTER_VERTICAL ); + sizer->Add( author_label, 0 , wxALIGN_LEFT | wxALL , 5 ); + sizer->Add( author_text, 1 , wxALIGN_RIGHT | wxALL , 5); - info_subpanel->SetSizerAndFit( subpanel_sizer ); + /* Treeview */ + info_tree = new wxTreeCtrl( info_panel, -1, wxDefaultPosition, + wxSize(220,200), + wxSUNKEN_BORDER |wxTR_HAS_BUTTONS | + wxTR_HIDE_ROOT ); - /* Stuff everything into the main panel */ - panel_sizer->Add( info_subpanel, 1, - wxEXPAND | wxALIGN_LEFT | - wxALIGN_CENTER_VERTICAL | wxALL, 5 ); + sizer->Layout(); + box_sizer->Add( sizer, 0, wxEXPAND, 5 ); + box_sizer->Add( info_tree, 0, wxEXPAND, 5 ); + info_sizer->Add( box_sizer, 1, wxBOTTOM, 5 ); - panel->SetSizerAndFit( panel_sizer ); + info_panel->SetSizer( info_sizer ); + info_sizer->Layout(); + info_sizer->SetSizeHints( info_panel ); - return panel; + UpdateInfo(); + + return info_panel; } wxPanel *ItemInfoDialog::GroupPanel( wxWindow* parent ) @@ -215,14 +200,14 @@ wxPanel *ItemInfoDialog::GroupPanel( wxWindow* parent ) wxPanel *panel = new wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize ); wxStaticBox *panel_box = new wxStaticBox( panel, -1, - wxU(_("Group info")) ); + wxU(_("Group Info")) ); wxStaticBoxSizer *panel_sizer = new wxStaticBoxSizer( panel_box, wxVERTICAL); wxBoxSizer *subpanel_sizer; group_subpanel = new wxPanel( panel, -1 ); subpanel_sizer = new wxBoxSizer( wxVERTICAL) ; enabled_checkbox = new wxCheckBox( group_subpanel, - -1, wxU(_("Item enabled")) ); + -1, wxU(_("Item Enabled")) ); enabled_checkbox->SetValue( p_item->b_enabled); @@ -239,8 +224,7 @@ wxPanel *ItemInfoDialog::GroupPanel( wxWindow* parent ) group_combo = new wxComboBox( group_subpanel, -1, wxT(""),wxDefaultPosition, wxDefaultSize, - 0, NULL, - wxCB_READONLY ); + 0, NULL, wxCB_READONLY ); wxButton *newgroup_button = new wxButton( group_subpanel, New_Event, wxU(_("New Group"))); @@ -248,6 +232,11 @@ wxPanel *ItemInfoDialog::GroupPanel( wxWindow* parent ) for( int i=0; i< p_playlist->i_groups ; i++) { group_combo->Append( wxU( p_playlist->pp_groups[i]->psz_name ) ); + if( p_playlist->pp_groups[i]->i_id == p_item->i_group ) + { + group_combo->SetSelection( i ); + group_combo->SetValue( wxU( p_playlist->pp_groups[i]->psz_name ) ); + } } vlc_object_release ( p_playlist ); @@ -276,14 +265,45 @@ wxPanel *ItemInfoDialog::GroupPanel( wxWindow* parent ) return panel; } +void ItemInfoDialog::UpdateInfo() +{ + if( !info_root ) + { + info_root = info_tree->AddRoot( wxU( p_item->input.psz_name) ); + } + + /* Rebuild the tree */ + for( int i = 0; i< p_item->input.i_categories ; i++) + { + if( !strcmp( p_item->input.pp_categories[i]->psz_name, _("Options") ) ) + { + continue; + } + wxTreeItemId cat = info_tree->AppendItem( info_root, + wxU( p_item->input.pp_categories[i]->psz_name) ); + + for( int j = 0 ; j < p_item->input.pp_categories[i]->i_infos ; j++ ) + { + info_tree->AppendItem( cat , (wxString) + wxU(p_item->input.pp_categories[i]->pp_infos[j]->psz_name) + + wxT(": ") + + wxU(p_item->input.pp_categories[i]->pp_infos[j]->psz_value) ); + } + + info_tree->Expand( cat ); + } +} + /***************************************************************************** * Events methods. *****************************************************************************/ void ItemInfoDialog::OnOk( wxCommandEvent& WXUNUSED(event) ) { - p_item->psz_name = strdup( name_text->GetLineText(0).mb_str() ); - p_item->psz_uri = strdup( uri_text->GetLineText(0).mb_str() ); - p_item->psz_author = strdup( author_text->GetLineText(0).mb_str() ); + vlc_mutex_lock( &p_item->input.lock ); + p_item->input.psz_name = strdup( name_text->GetLineText(0).mb_str() ); + p_item->input.psz_uri = strdup( uri_text->GetLineText(0).mb_str() ); + playlist_ItemAddInfo( p_item,"General","Author", + author_text->GetLineText(0).mb_str() ); vlc_bool_t b_old_enabled = p_item->b_enabled; playlist_t * p_playlist = @@ -310,6 +330,7 @@ void ItemInfoDialog::OnOk( wxCommandEvent& WXUNUSED(event) ) } p_item->b_enabled = enabled_checkbox->IsChecked() ? VLC_TRUE : VLC_FALSE ; + vlc_mutex_unlock( &p_item->input.lock ); EndModal( wxID_OK ); }