Update of /cvsroot/audacity/audacity-src/src
In directory sc8-pr-cvs11.sourceforge.net:/tmp/cvs-serv5330

Modified Files:
        Tags.cpp Tags.h 
Log Message:
Add Cancel and Clear buttons
Complete SetDefault functionality
Fix resizing

Index: Tags.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/Tags.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- Tags.h      7 May 2007 00:54:40 -0000       1.13
+++ Tags.h      20 May 2007 07:25:20 -0000      1.14
@@ -91,6 +91,7 @@
    bool IsEmpty();
 
 private:
+   void LoadDefaults();
    void EditorIsClosing();
 
    wxString      mTitle;
@@ -138,10 +139,12 @@
  private:
    void OnChange(wxCommandEvent & event);
 
+   void OnCancel(wxCommandEvent & event);
    void OnClose(wxCommandEvent & event);
 
    void OnMore(wxCommandEvent & event);
    void OnFewer(wxCommandEvent & event);
+   void OnClear(wxCommandEvent & event);
 
    void OnLoad(wxCommandEvent & event);
    void OnSave(wxCommandEvent & event);
@@ -160,6 +163,18 @@
    wxTextCtrl **mExtraNameTexts;
    wxTextCtrl **mExtraValueTexts;
 
+   wxString      mTitle;
+   wxString      mArtist;
+   wxString      mAlbum;
+   int           mTrackNum;
+   wxString      mYear;
+   int           mGenre;
+   wxString      mComments;
+   bool          mID3V2;
+
+   wxArrayString mExtraNames;
+   wxArrayString mExtraValues;
+
    bool         mTransfering;
 
  private:

Index: Tags.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/Tags.cpp,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -d -r1.44 -r1.45
--- Tags.cpp    7 May 2007 00:54:40 -0000       1.44
+++ Tags.cpp    20 May 2007 07:25:20 -0000      1.45
@@ -41,7 +41,10 @@
 #include "Tags.h"
 
 #include "Audacity.h"
+#include "FileDialog.h"
 #include "Internat.h"
+#include "Prefs.h"
+#include "xml/XMLFileReader.h"
 
 #include <wx/button.h>
 #include <wx/choice.h>
@@ -82,6 +85,8 @@
    mFLACMeta = new ::FLAC__StreamMetadata*[1];
    mFLACMeta[0] = NULL;
 #endif
+
+   LoadDefaults();
 }
 
 Tags::~Tags()
@@ -100,6 +105,60 @@
 
 }
 
+void Tags::LoadDefaults()
+{
+   wxString path;
+   wxString name;
+   wxString value;
+   long ndx;
+   bool cont;
+
+   // Set the parent group
+   path = gPrefs->GetPath();
+   gPrefs->SetPath(wxT("/Tags"));
+
+   // Process all entries in the group
+   cont = gPrefs->GetFirstEntry(name, ndx);
+   while (cont) {
+      gPrefs->Read(name, &value, wxT(""));
+
+      if (name == wxT("Title")) {
+         mTitle = value;
+      }
+      else if (name == wxT("Artist")) {
+         mArtist = value;
+      }
+      else if (name == wxT("Album")) {
+         mAlbum = value;
+      }
+      else if (name == wxT("Year")) {
+         mYear = value;
+      }
+      else if (name == wxT("Comments")) {
+         mComments = value;
+      }
+      else if (name == wxT("TrackNumber")) {
+         long num;
+         value.ToLong(&num);
+         mTrackNum = num;
+      }
+      else if (name == wxT("Genre")) {
+         long num;
+         value.ToLong(&num);
+         mGenre = num;
+      }
+      else {
+         mExtraNames.Add(name);
+         mExtraValues.Add(value);
+      }
+
+      cont = gPrefs->GetNextEntry(name, ndx);
+   }
+
+   // Restore original group
+   gPrefs->SetPath(path);
+}
+
 bool Tags::IsEmpty()
 {
    // At least one of these should be filled in, otherwise
@@ -680,6 +739,7 @@
    FormatID,
    MoreID,
    FewerID,
+   ClearID,
    LoadID,
    SaveID,
    SaveDefaultsID,
@@ -695,9 +755,11 @@
    EVT_TEXT(CommentsTextID, TagsEditor::OnChange)
    EVT_CHOICE(GenreID, TagsEditor::OnChange)
    EVT_RADIOBOX(FormatID, TagsEditor::OnChange)
+   EVT_BUTTON(CancelID, TagsEditor::OnCancel)
    EVT_BUTTON(CloseID, TagsEditor::OnClose)
    EVT_BUTTON(MoreID, TagsEditor::OnMore)
    EVT_BUTTON(FewerID, TagsEditor::OnFewer)
+   EVT_BUTTON(ClearID, TagsEditor::OnClear)
    EVT_BUTTON(LoadID, TagsEditor::OnLoad)
    EVT_BUTTON(SaveID, TagsEditor::OnSave)
    EVT_BUTTON(SaveDefaultsID, TagsEditor::OnSaveDefaults)
@@ -713,11 +775,26 @@
 {
    mTransfering = true; // avoid endless update loop
 
+   // Make local copies of metadata
+   mTitle       = mTags->mTitle;
+   mArtist      = mTags->mArtist;
+   mAlbum       = mTags->mAlbum;
+   mTrackNum    = mTags->mTrackNum;
+   mYear        = mTags->mYear;
+   mGenre       = mTags->mGenre;
+   mComments    = mTags->mComments;
+   mID3V2       = mTags->mID3V2;
+   mExtraNames  = mTags->mExtraNames;
+   mExtraValues = mTags->mExtraValues;
+
    BuildMainPanel();
    BuildExtraPanel();
    Layout();
    Fit();
 
+   wxSize sz = GetMainPanel()->GetSize();
+   GetExtraPanel()->SetSize(sz.GetWidth(), -1);
+
    if (!editTitle)
       mTitleText->Enable(false);
 
@@ -741,53 +818,53 @@
    wxString errorString =
       _("Maximum length of attribute '%s' is %d characters. Data was 
truncated.");
 
-   if(!mTags->mID3V2)
+   if(!mID3V2)
    {
-      if(mTags->mTitle.Length() > 30)
+      if(mTitle.Length() > 30)
       {
          wxMessageBox(wxString::Format(errorString, _("Title"), 30));
 
-         mTags->mTitle = mTags->mTitle.Left(30);
+         mTitle = mTitle.Left(30);
          TransferDataToWindow();
 
          return FALSE;
       }
 
-      if(mTags->mArtist.Length() > 30)
+      if(mArtist.Length() > 30)
       {
          wxMessageBox(wxString::Format(errorString, _("Artist"), 30));
 
-         mTags->mArtist = mTags->mArtist.Left(30);
+         mArtist = mArtist.Left(30);
          TransferDataToWindow();
 
          return FALSE;
       }
 
-      if(mTags->mAlbum.Length() > 30)
+      if(mAlbum.Length() > 30)
       {
          wxMessageBox(wxString::Format(errorString, _("Album"), 30));
 
-         mTags->mAlbum = mTags->mAlbum.Left(30);
+         mAlbum = mAlbum.Left(30);
          TransferDataToWindow();
 
          return FALSE;
       }
 
-      if(mTags->mYear.Length() > 4)
+      if(mYear.Length() > 4)
       {
          wxMessageBox(wxString::Format(errorString, _("Year"), 4));
 
-         mTags->mYear = mTags->mYear.Left(4);
+         mYear = mYear.Left(4);
          TransferDataToWindow();
 
          return FALSE;
       }
 
-      if(mTags->mComments.Length() > 30)
+      if(mComments.Length() > 30)
       {
          wxMessageBox(wxString::Format(errorString, _("Comments"), 30));
 
-         mTags->mComments = mTags->mComments.Left(30);
+         mComments = mComments.Left(30);
          TransferDataToWindow();
 
          return FALSE;
@@ -799,28 +876,28 @@
 
 bool TagsEditor::TransferDataToWindow()
 {
-   mTitleText->SetValue(mTags->mTitle);
-   mArtistText->SetValue(mTags->mArtist);   
-   mAlbumText->SetValue(mTags->mAlbum);
-   mYearText->SetValue(mTags->mYear);
-   mCommentsText->SetValue(mTags->mComments);
+   mTitleText->SetValue(mTitle);
+   mArtistText->SetValue(mArtist);   
+   mAlbumText->SetValue(mAlbum);
+   mYearText->SetValue(mYear);
+   mCommentsText->SetValue(mComments);
    
-   if (mTags->mTrackNum != -1) {
+   if (mTrackNum != -1) {
       wxString numStr;
-      numStr.Printf(wxT("%d"), mTags->mTrackNum);
+      numStr.Printf(wxT("%d"), mTrackNum);
       mTrackNumText->SetValue(numStr);
    }
    
-   if (mTags->mGenre >= 0 && mTags->mGenre < GetNumGenres())
-       mGenreChoice->SetStringSelection(GetGenreNum(mTags->mGenre));
+   if (mGenre >= 0 && mGenre < GetNumGenres())
+       mGenreChoice->SetStringSelection(GetGenreNum(mGenre));
    
-   mFormatRadioBox->SetSelection((int)mTags->mID3V2);
+   mFormatRadioBox->SetSelection((int)mID3V2);
 
    int i;
 
-   for(i=0; i<(int)mTags->mExtraNames.GetCount(); i++) {
-      mExtraNameTexts[i]->SetValue(mTags->mExtraNames[i]);
-      mExtraValueTexts[i]->SetValue(mTags->mExtraValues[i]);
+   for(i=0; i<(int)mExtraNames.GetCount(); i++) {
+      mExtraNameTexts[i]->SetValue(mExtraNames[i]);
+      mExtraValueTexts[i]->SetValue(mExtraValues[i]);
    }
 
    return TRUE;
@@ -828,34 +905,34 @@
 
 bool TagsEditor::TransferDataFromWindow()
 {
-   mTags->mTitle = mTitleText->GetValue();
-   mTags->mArtist = mArtistText->GetValue();
-   mTags->mAlbum = mAlbumText->GetValue();
+   mTitle = mTitleText->GetValue();
+   mArtist = mArtistText->GetValue();
+   mAlbum = mAlbumText->GetValue();
 
    wxString str = mTrackNumText->GetValue();
    if (str == wxT(""))
-      mTags->mTrackNum = -1;
+      mTrackNum = -1;
    else {
       long i;
       str.ToLong(&i);
-      mTags->mTrackNum = i;
+      mTrackNum = i;
    }
 
-   mTags->mYear = mYearText->GetValue();
-   mTags->mComments = mCommentsText->GetValue();
-   mTags->mID3V2 = (mFormatRadioBox->GetSelection())?true:false;
+   mYear = mYearText->GetValue();
+   mComments = mCommentsText->GetValue();
+   mID3V2 = (mFormatRadioBox->GetSelection())?true:false;
 
    int i;
    
    for(i=0; i<GetNumGenres(); i++)
        if (GetGenreNum(i) == mGenreChoice->GetStringSelection()) {
-               mTags->mGenre = i;
+               mGenre = i;
                break;
        }
        
-   for(i=0; i<(int)mTags->mExtraNames.GetCount(); i++) {
-      mTags->mExtraNames[i] = mExtraNameTexts[i]->GetValue();
-      mTags->mExtraValues[i] = mExtraValueTexts[i]->GetValue();
+   for(i=0; i<(int)mExtraNames.GetCount(); i++) {
+      mExtraNames[i] = mExtraNameTexts[i]->GetValue();
+      mExtraValues[i] = mExtraValueTexts[i]->GetValue();
    }
 
    return TRUE;
@@ -870,9 +947,27 @@
    }
 }
 
+void TagsEditor::OnCancel(wxCommandEvent & event)
+{
+   GetParent()->Destroy();
+}
+
 void TagsEditor::OnClose(wxCommandEvent & event)
 {
-   TransferDataFromWindow();
+   if (!TransferDataFromWindow()) {
+      return;
+   }
+
+   mTags->mTitle       = mTitle;
+   mTags->mArtist      = mArtist;
+   mTags->mAlbum       = mAlbum;
+   mTags->mTrackNum    = mTrackNum;
+   mTags->mYear        = mYear;
+   mTags->mGenre       = mGenre;
+   mTags->mComments    = mComments;
+   mTags->mID3V2       = mID3V2;
+   mTags->mExtraNames  = mExtraNames;
+   mTags->mExtraValues = mExtraValues;
 
    GetParent()->Destroy();
 }
@@ -881,8 +976,8 @@
 {
    TransferDataFromWindow();
 
-   mTags->mExtraNames.Add(wxT(""));
-   mTags->mExtraValues.Add(wxT(""));
+   mExtraNames.Add(wxT(""));
+   mExtraValues.Add(wxT(""));
 
    RebuildMainPanel();
 
@@ -895,10 +990,10 @@
 {
    TransferDataFromWindow();
 
-   int len = (int)mTags->mExtraNames.GetCount();
+   int len = (int)mExtraNames.GetCount();
    if (len > 0) {
-      mTags->mExtraNames.RemoveAt(len-1);
-      mTags->mExtraValues.RemoveAt(len-1);
+      mExtraNames.RemoveAt(len-1);
+      mExtraValues.RemoveAt(len-1);
 
       RebuildMainPanel();
 
@@ -908,6 +1003,26 @@
    }
 }
 
+void TagsEditor::OnClear(wxCommandEvent & event)
+{
+   mTitle.Clear();
+   mArtist.Clear();
+   mAlbum.Clear();
+   mTrackNum = -1;
+   mYear.Clear();
+   mGenre = -1;
+   mComments.Clear();
+   mID3V2 = true;;
+   mExtraNames.Clear();
+   mExtraValues.Clear();
+
+   RebuildMainPanel();
+
+   mTransfering = true;
+   TransferDataToWindow();
+   mTransfering = false;
+}
+
 void TagsEditor::OnLoad(wxCommandEvent & event)
 {
 }
@@ -918,6 +1033,18 @@
 
 void TagsEditor::OnSaveDefaults(wxCommandEvent & event)
 {
+   gPrefs->Write(wxT("/Tags/Title"), mTitle);
+   gPrefs->Write(wxT("/Tags/Artist"), mArtist);
+   gPrefs->Write(wxT("/Tags/Album"), mAlbum);
+   gPrefs->Write(wxT("/Tags/Year"), mYear);
+   gPrefs->Write(wxT("/Tags/Comments"), mComments);
+   gPrefs->Write(wxT("/Tags/TrackNumber"), mTrackNum);
+   gPrefs->Write(wxT("/Tags/Genre"), mGenre);
+
+   for (size_t i = 0; i < mExtraNames.GetCount(); i++) {
+      gPrefs->Write(wxT("/Tags/") + mExtraNames[i],
+                    mExtraValues[i]);
+   }
 }
 
 void TagsEditor::RebuildMainPanel()
@@ -930,6 +1057,9 @@
    BuildMainPanel();
    Layout();
    Fit();
+
+   wxSize sz = GetMainPanel()->GetSize();
+   GetExtraPanel()->SetSize(sz.GetWidth(), -1);
 }
 
 void TagsEditor::BuildMainPanel()
@@ -948,7 +1078,7 @@
                                     wxDefaultPosition, wxDefaultSize,
                                     2, formats,
                                     0, wxRA_VERTICAL);
-   mainSizer->Add(mFormatRadioBox, 1, wxEXPAND | wxALL, 3);
+   mainSizer->Add(mFormatRadioBox, 1, wxEXPAND | wxALL, 7);
 
    /***/
    
@@ -984,7 +1114,7 @@
                       wxSize(200, -1), 0);
    gridSizer->Add(mAlbumText, 1, wxEXPAND | wxALL, 3);
 
-   mainSizer->Add(gridSizer, 0, wxALIGN_CENTRE | wxALL, 3);
+   mainSizer->Add(gridSizer, 0, wxALIGN_CENTRE | wxALL, 7);
 
    /***/
    
@@ -1010,7 +1140,7 @@
                       wxSize(40, -1), 0);
    hSizer->Add(mYearText, 0, wxALIGN_CENTRE | wxALL, 3);
    
-   mainSizer->Add(hSizer, 0, wxALIGN_CENTRE | wxALL, 3);
+   mainSizer->Add(hSizer, 0, wxALIGN_CENTRE | wxALL, 7);
 
    /***/
 
@@ -1043,11 +1173,11 @@
                       wxSize(200, -1), 0);
    gridSizer->Add(mCommentsText, 1, wxEXPAND | wxALL, 3);
    
-   mainSizer->Add(gridSizer, 0, wxALIGN_CENTRE | wxALL, 3);
+   mainSizer->Add(gridSizer, 0, wxALIGN_CENTRE | wxALL, 7);
 
    /***/
 
-   int len = (int)mTags->mExtraNames.GetCount();
+   int len = (int)mExtraNames.GetCount();
    int i;
 
    mExtraNameTexts = new wxTextCtrl*[len];
@@ -1067,7 +1197,7 @@
       gridSizer->Add(mExtraValueTexts[i], 1, wxEXPAND | wxALL, 3);
    }
 
-   mainSizer->Add(gridSizer, 0, wxEXPAND | wxALL, 3);
+   mainSizer->Add(gridSizer, 0, wxEXPAND | wxALL, 7);
    
    parent->SetAutoLayout(TRUE);
    parent->SetSizer(mainSizer);
@@ -1095,14 +1225,14 @@
                     wxDefaultSize, 0);
    hSizer->Add(more, 0, wxALIGN_CENTRE | wxALL, 3);
 
-   hSizer->Add(1, 1, wxEXPAND);
+   hSizer->Add(10, 1, wxEXPAND);
 
-   wxButton *close =
-       new wxButton(parent, CloseID, _("&Done"), wxDefaultPosition,
+   wxButton *clear =
+       new wxButton(parent, ClearID, _("&Clear"), wxDefaultPosition,
                     wxDefaultSize, 0);
-   hSizer->Add(close, 0, wxALIGN_CENTRE | wxALL, 3);
+   hSizer->Add(clear, 0, wxALIGN_CENTRE | wxALL, 3);
 
-   mainSizer->Add(hSizer, 0, wxEXPAND | wxALL, 3);
+   mainSizer->Add(hSizer, 0, wxEXPAND | wxALL, 7);
 
       /***/
    
@@ -1127,7 +1257,35 @@
                     wxDefaultPosition, wxDefaultSize, 0);
    staticBoxSizer->Add(defaultButton, 0, wxALIGN_CENTRE | wxALL, 3);
 
-   mainSizer->Add(staticBoxSizer, 0, wxEXPAND | wxALL, 3);
+   mainSizer->Add(staticBoxSizer, 0, wxEXPAND | wxALL, 7);
+
+      /***/
+   
+   hSizer = new wxBoxSizer(wxHORIZONTAL);
+
+#if defined(__WXGTK20__) || defined(__WXMAC__)
+   wxButton *cancel =
+       new wxButton(parent, CancelID, _("&Cancel"), wxDefaultPosition,
+                    wxDefaultSize, 0);
+   hSizer->Add(cancel, 0, wxALIGN_CENTRE | wxALL, 3);
+   wxButton *close =
+       new wxButton(parent, CloseID, _("&Done"), wxDefaultPosition,
+                    wxDefaultSize, 0);
+   hSizer->Add(close, 0, wxALIGN_CENTRE | wxALL, 3);
+#else
+   wxButton *close =
+       new wxButton(parent, CloseID, _("&Done"), wxDefaultPosition,
+                    wxDefaultSize, 0);
+   hSizer->Add(close, 0, wxALIGN_CENTRE | wxALL, 3);
+   wxButton *cancel =
+       new wxButton(parent, CancelID, _("&Cancel"), wxDefaultPosition,
+                    wxDefaultSize, 0);
+   hSizer->Add(cancel, 0, wxALIGN_CENTRE | wxALL, 3);
+#endif
+
+   mainSizer->Add(hSizer, 0, wxALIGN_RIGHT | wxALL, 7);
+
+   mainSizer->Add(1, 5, wxEXPAND);
 
    parent->SetAutoLayout(TRUE);
    parent->SetSizer(mainSizer);
@@ -1146,3 +1304,4 @@
 // vim: et sts=3 sw=3
 // arch-tag: 94f72c32-970b-4f4e-bbf3-3880fce7b965
 
+


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Audacity-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-cvs

Reply via email to