Changeset 800

Show
Ignore:
Timestamp:
2002-09-27 23:10:08 (6 years ago)
Author:
robert
Message:

First check-in for the 0.5.0 series

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • mb_tagger/trunk/analyzer.cpp

    r799 r800  
    66#include "analyzer.h" 
    77#include "main.h" 
    8 #include "trmgen.h" 
     8#include "trm.h" 
    99#include "trmwav.h" 
    1010#include "mbid3.h" 
     
    9393            data.trackId = ""; 
    9494            fileCache->setData(index, eData, data); 
    95              
     95 
    9696            fileCache->getData(index, eId3, data); 
    9797            data.trackId = ""; 
     
    114114            ext = ext.UpperCase(); 
    115115            if (ext == ".MP3") 
    116                 gen = new TRMGenerator(fileName); 
     116            { 
     117                char ascii_sig[37]; 
     118                int  ret; 
     119 
     120                ret = MP3_generateTRM(fileName.c_str(), ascii_sig); 
     121                if (ret == TRM_OK) 
     122                   trm = ascii_sig; 
     123 
     124                if (trm.IsEmpty()) 
     125                { 
     126                    parent->setStatus("Failed to generate trm from " + fileName); 
     127                    fileCache->setStatus(index, eAnalyzedError); 
     128                    fileCache->setErrorString(index, "Failed to generate TRM id."); 
     129                } 
     130            } 
     131            else 
     132            if (ext == ".OGG") 
     133            { 
     134                char ascii_sig[37]; 
     135                int  ret; 
     136 
     137                ret = OggVorbis_generateTRM(fileName.c_str(), ascii_sig); 
     138                if (ret == TRM_OK) 
     139                   trm = ascii_sig; 
     140 
     141                if (trm.IsEmpty()) 
     142                { 
     143                    parent->setStatus("Failed to generate trm from " + fileName); 
     144                    fileCache->setStatus(index, eAnalyzedError); 
     145                    fileCache->setErrorString(index, "Failed to generate TRM id."); 
     146                } 
     147            } 
    117148            else 
    118149            if (ext == ".WAV") 
    119                 gen = new TRMWavGenerator(fileName); 
     150            { 
     151                char ascii_sig[37]; 
     152                int  ret; 
     153 
     154                ret = Wav_generateTRM(fileName.c_str(), ascii_sig); 
     155                if (ret == TRM_OK) 
     156                   trm = ascii_sig; 
     157 
     158                if (trm.IsEmpty()) 
     159                { 
     160                    parent->setStatus("Failed to generate trm from " + fileName); 
     161                    fileCache->setStatus(index, eAnalyzedError); 
     162                    fileCache->setErrorString(index, "Failed to generate TRM id."); 
     163                } 
     164            } 
    120165            else 
    121166            { 
    122                 parent->setStatus(ext + " is not a supported filetype."); 
     167                AnsiString err; 
     168                err = ext + AnsiString(" is not a supported filetype."); 
     169                parent->setStatus(err); 
    123170                fileCache->setStatus(index, eAnalyzedError); 
    124             } 
    125             if (gen) 
    126             { 
    127                 if (gen->Generate(trm)) 
     171                fileCache->setErrorString(index, err); 
     172            } 
     173 
     174            if (!trm.IsEmpty()) 
     175            { 
     176                AnsiString f = trm.SubString(15, 1); 
     177                if (trm.SubString(15, 1) != AnsiString("4")) 
     178                { 
     179                    AnsiString err; 
     180 
     181                    err = AnsiString("Unable to retrieve TRM from fingerprint server."); 
     182                    parent->setStatus(err); 
     183                    fileCache->setStatus(index, eAnalyzedError); 
     184                    fileCache->setErrorString(index, err); 
     185                } 
     186                else 
    128187                { 
    129188                    fileCache->setTrm(index, trm); 
     
    134193                    MBLookup(index, trm); 
    135194                } 
    136                 else 
    137                 { 
    138                     AnsiString err; 
    139  
    140                     gen->GetError(err); 
    141                     parent->setStatus(err); 
    142                     fileCache->setStatus(index, eAnalyzedError); 
    143                 } 
    144                 delete gen; 
    145195            } 
    146196        } 
     
    183233{ 
    184234    ID3        id3(false, false); 
    185     AnsiString fileName
     235    AnsiString fileName, trm
    186236    Metadata   data; 
    187237 
     
    192242    else 
    193243    { 
     244       fileCache->getTrm(index, trm); 
     245       if (trm != AnsiString(ANALYZER_REDO_STRING) && !data.fileTrm.IsEmpty()) 
     246          fileCache->setTrm(index, data.fileTrm); 
     247 
    194248       fileCache->setData(index, eId3, data); 
    195249       fileCache->setData(index, eData, data); 
     
    198252} 
    199253 
     254 
  • mb_tagger/trunk/defs.h

    r798 r800  
    11#ifndef DEFS_H 
    22#define DEFS_H 
     3 
     4#define MB_TAGGER_NAME     "MusicBrainz Tagger" 
     5#define MB_TAGGER_VERSION  "0.3.0" 
    36 
    47struct Metadata 
     
    912    int        trackNum; 
    1013    AnsiString trackId; 
     14    AnsiString fileTrm; 
    1115 
    1216    Metadata::Metadata(void) { trackNum = 0; }; 
     
    1822        trackNum = other.trackNum; 
    1923        trackId = other.trackId; 
     24        fileTrm = other.fileTrm; 
    2025 
    2126        return *this; 
    2227    }; 
    23      
     28 
    2429    bool operator==(const Metadata &other) 
    2530    { 
     
    2833            track == other.track && 
    2934            trackNum == other.trackNum && 
    30             trackId == other.trackId) 
     35            trackId == other.trackId && 
     36            fileTrm == other.fileTrm) 
    3137            return true; 
    3238 
     
    4046        track = ""; 
    4147        trackNum = 0; 
     48        fileTrm = ""; 
    4249    } 
    4350}; 
     
    6774    AnsiString         trm; 
    6875    Metadata           id3, data; 
     76    AnsiString         errorString;    
    6977}; 
    7078 
  • mb_tagger/trunk/filecache.cpp

    r798 r800  
    183183} 
    184184 
     185void FileCache::getErrorString(int index, AnsiString &error) 
     186{ 
     187    error = ""; 
     188 
     189    mutex->Acquire(); 
     190    if (index >= 0 && index < cache->Count) 
     191    { 
     192       error = ((FileInfo *)cache->Items[index])->errorString; 
     193    } 
     194    mutex->Release(); 
     195} 
     196 
     197void FileCache::setErrorString(int index, const AnsiString &error) 
     198{ 
     199    mutex->Acquire(); 
     200    if (index >= 0 && index < cache->Count) 
     201    { 
     202       ((FileInfo *)cache->Items[index])->errorString = error; 
     203    } 
     204    mutex->Release(); 
     205} 
     206 
    185207void FileCache::getTrm(int index, AnsiString &trm) 
    186208{ 
  • mb_tagger/trunk/filecache.h

    r798 r800  
    3535        void setFileName(int index, const AnsiString &fileName); 
    3636 
     37        void setErrorString(int index, const AnsiString &error); 
     38        void getErrorString(int index, AnsiString &error); 
     39 
    3740        void setTrm(int index, const AnsiString &trm); 
    3841        void getTrm(int index, AnsiString &trm); 
  • mb_tagger/trunk/installer/mbtagger-setup.wse

    r792 r800  
    11951195end 
    11961196item: Install File 
     1197  Source=d:\musicbrainz\mb_tagger\madtrmdll.dll 
     1198  Destination=%MAINDIR%\madtrmdll.dll 
     1199  Flags=0000000010000010 
     1200end 
     1201item: Install File 
    11971202  Source=d:\musicbrainz\mb_tagger\Authors 
    11981203  Destination=%MAINDIR%\Authors 
  • mb_tagger/trunk/main.cpp

    r799 r800  
    257257        } 
    258258    } 
     259     
    259260    if (strstr(url.c_str(), "showalbum.html") || 
    260261        strstr(url.c_str(), "showartist.html")) 
     
    308309       unlink(url.c_str()); 
    309310 
     311    if (strstr(url.c_str(), "showalbum.html") || 
     312        strstr(url.c_str(), "showartist.html")) 
     313    { 
     314        if (strstr(url.c_str(), "mbt=1") == NULL) 
     315           webBrowser->Navigate(WideString(url)); 
     316    } 
     317 
    310318    setStatus("Document complete."); 
    311319} 
     
    321329void __fastcall TMBTaggerForm::optionsMenuItemClick(TObject *Sender) 
    322330{ 
     331 
    323332    optionsButtonClick(Sender); 
    324333} 
     
    588597    url = AnsiString(base); 
    589598 
    590     if (strlen(artistEdit->Text.c_str()) > 2
     599    if (strlen(artistEdit->Text.c_str()) > 1
    591600    { 
    592601        encoded = artistEdit->Text; 
     
    845854void __fastcall TMBTaggerForm::removePath(AnsiString &fileName) 
    846855{ 
    847    char file[MAX_PATH], ext[10]; 
     856   char file[MAX_PATH], ext[MAX_PATH]; 
    848857 
    849858   fnsplit(fileName.c_str(), NULL, NULL, file, ext); 
     
    869878    TTreeNode  *node; 
    870879 
    871     if (!userCheck()) 
    872         return; 
    873  
    874880    treeView->Selected = NULL; 
    875881    currentIndex = -1; 
     
    894900        fileCache->getFileName(index, fileName); 
    895901        fileCache->getTrm(index, trm); 
     902        data.fileTrm = trm; 
    896903 
    897904        fileOnly = fileName; 
     
    12331240//--------------------------------------------------------------------------- 
    12341241 
     1242void __fastcall TMBTaggerForm::enableButtonsPost(void) 
     1243{ 
     1244    // This function exists so that we can set the button states properly 
     1245    // during a treeView change. If we do that update DURING the change 
     1246    // the treeView control crashes. 
     1247    PostMessage(Handle, MB_ENABLEBUTTONS, 0, 0); 
     1248} 
     1249 
     1250//--------------------------------------------------------------------------- 
     1251 
     1252void __fastcall TMBTaggerForm::enableButtonsMessage(TMessage &Message) 
     1253{ 
     1254    enableButtons(); 
     1255} 
     1256 
     1257//--------------------------------------------------------------------------- 
     1258 
    12351259void __fastcall TMBTaggerForm::enableButtons(void) 
    12361260{ 
     
    12911315        clearCurrentSelection(); 
    12921316        treeView->Selected = NULL; 
    1293         enableButtons(); 
     1317        enableButtonsPost(); 
    12941318        return; 
    12951319    } 
     
    13181342    currentIndex = index; 
    13191343 
    1320     enableButtons(); 
     1344    enableButtonsPost(); 
    13211345} 
    13221346 
     
    13481372        extList = new TList; 
    13491373        extList->Add(new AnsiString(".mp3")); 
     1374        extList->Add(new AnsiString(".wav"));    
    13501375        DirSearch search(extList, this); 
    13511376 
     
    14051430 
    14061431    status = tview->getNodeType(node); 
    1407     identifyAgainItem->Enabled = (status == eSaved); 
    1408     identifyAllAgainItem->Enabled = (status == eSaved); 
     1432    identifyAgainItem->Enabled = (status != ePending && status != eUnrecognized); 
     1433    identifyAllAgainItem->Enabled = (status != ePending && status != eUnrecognized); 
    14091434 
    14101435    treeViewMenu->Popup(out.x, out.y); 
     
    14571482            fileCache->getData((int)node->Data, eId3, data); 
    14581483            fileCache->getFileName((int)node->Data, fileName); 
    1459  
    1460             hint = fileName + "\r\nID3: "; 
    1461             hint += data.artist.IsEmpty() ? AnsiString("<blank>") : data.artist; 
    1462             hint += ", "; 
    1463             hint += data.album.IsEmpty() ? AnsiString("<blank>") : data.album; 
    1464             hint += ", "; 
    1465             hint += data.trackNum == 0 ? AnsiString("?") : AnsiString(data.trackNum); 
    1466             hint += " - "; 
    1467             hint += data.track.IsEmpty() ? AnsiString("<blank>") : data.track; 
    1468              
     1484            status = fileCache->getStatus((int)node->Data); 
     1485 
     1486            if (status == eError) 
     1487            { 
     1488                AnsiString err; 
     1489 
     1490                fileCache->getErrorString((int)node->Data, err); 
     1491                hint = "Error: " + err; 
     1492            } 
     1493            else 
     1494            { 
     1495                hint = fileName + "\r\nID3: "; 
     1496                hint += data.artist.IsEmpty() ? AnsiString("<blank>") : data.artist; 
     1497                hint += ", "; 
     1498                hint += data.album.IsEmpty() ? AnsiString("<blank>") : data.album; 
     1499                hint += ", "; 
     1500                hint += data.trackNum == 0 ? AnsiString("?") : AnsiString(data.trackNum); 
     1501                hint += " - "; 
     1502                hint += data.track.IsEmpty() ? AnsiString("<blank>") : data.track; 
     1503            } 
     1504 
    14691505            treeView->Hint = hint; 
    14701506            treeView->ShowHint = true; 
     
    15871623        submitInfo.remove(data.trackId); 
    15881624 
    1589     data.trackId = ""
     1625    data.clear()
    15901626    trm = ANALYZER_REDO_STRING; 
     1627    fileCache->setData((int)node->Data, eId3, data); 
    15911628    fileCache->setData((int)node->Data, eData, data); 
    15921629    fileCache->setTrm((int)node->Data, trm); 
     1630    fileCache->setErrorString((int)node->Data, AnsiString("")); 
    15931631    tview->setStatus((int)node->Data, status, ePending); 
    15941632    analyzer->wake(); 
     
    17131751{ 
    17141752    submitTrms(); 
    1715 
    1716  
    1717  
    1718  
    1719  
     1753    enableButtons(); 
     1754
     1755 
  • mb_tagger/trunk/main.dfm

    r799 r800  
    44  Anchors = [akTop, akRight] 
    55  AutoScroll = False 
    6   BorderIcons = [biSystemMenu, biMinimize] 
    76  Caption = 'MusicBrainz Tagger' 
    87  ClientHeight = 769 
     
    13101309    DefaultExt = '*.mp3' 
    13111310    Filter =  
    1312       'MP3 Files (.mp3)|*.mp3|WAV Files (.wav)|*.wav|All Files (*.*)|*.' + 
    1313       '*' 
     1311      'MP3 Files (.mp3)|*.mp3|Ogg/Vorbis Files (*.ogg)|*.ogg|WAV Files ' + 
     1312      '(.wav)|*.wav|All Files (*.*)|*.*' 
    13141313    Options = [ofHideReadOnly, ofAllowMultiSelect, ofEnableSizing] 
    13151314    Left = 620 
  • mb_tagger/trunk/main.h

    r798 r800  
    2929#define MB_WAKE            (WM_USER + 2) 
    3030#define MB_SUBMIT          (WM_USER + 3) 
     31#define MB_ENABLEBUTTONS   (WM_USER + 4) 
    3132 
    3233//--------------------------------------------------------------------------- 
     
    108109 
    109110    void __fastcall lookupNotify(TMessage &Message); 
     111    void __fastcall enableButtonsMessage(TMessage &Message); 
    110112    void __fastcall openButtonClick(TObject *Sender); 
    111113    void __fastcall lookupButtonClick(TObject *Sender); 
     
    160162  bool __fastcall CreateLoginPage(const char *fileName, const char *url); 
    161163  char * __fastcall EscapeUrl(const char *url); 
     164  void __fastcall enableButtonsPost(void); 
    162165 
    163166  TImage             *image; 
     
    183186    MESSAGE_HANDLER(MB_WAKE, TMessage, processWakeSignal); 
    184187    MESSAGE_HANDLER(MB_SUBMIT, TMessage, processSubmitMessage); 
     188    MESSAGE_HANDLER(MB_ENABLEBUTTONS, TMessage, enableButtonsMessage); 
    185189  END_MESSAGE_MAP(TForm) 
    186190 
  • mb_tagger/trunk/mbid3.cpp

    r798 r800  
    88#include "analyzer.h" 
    99#include "main.h" 
    10 #include "trmgen.h" 
    1110#include "mbid3.h" 
    1211 
     
    143142    } 
    144143 
    145     delete pData; 
     144    delete [] pData; 
    146145    ID3Tag_Delete(pTag); 
    147146 
     
    156155    ID3Tag     *pTag; 
    157156    ID3Frame   *pFrame; 
    158     char       *pData
     157    char        pData[255]
    159158    char       *ptr; 
    160159    ID3Field   *pField; 
  • mb_tagger/trunk/mbtagger.bpr

    r799 r800  
    55    <VERSION value="BCB.05.03"/> 
    66    <PROJECT value="mbtagger.exe"/> 
    7     <OBJFILES value="mbtagger.obj main.obj preferences.obj optionsdialog.obj trmgen.obj  
    8       analyzer.obj filecache.obj lookup.obj mbid3.obj lookupdialog.obj  
    9       ..\xingmp3\src\isbt.obj ..\xingmp3\src\csbt.obj ..\xingmp3\src\cup.obj  
    10       ..\xingmp3\src\cupl3.obj ..\xingmp3\src\cwinm.obj ..\xingmp3\src\dec8.obj  
    11       ..\xingmp3\src\hwin.obj ..\xingmp3\src\icdct.obj ..\xingmp3\src\cdct.obj  
    12       ..\xingmp3\src\iup.obj ..\xingmp3\src\iwinm.obj ..\xingmp3\src\l3dq.obj  
    13       ..\xingmp3\src\l3init.obj ..\xingmp3\src\mdct.obj ..\xingmp3\src\mhead.obj  
    14       ..\xingmp3\src\msis.obj ..\xingmp3\src\uph.obj ..\xingmp3\src\upsf.obj  
    15       ..\xingmp3\src\wcvt.obj dirsearch.obj debug.obj tview.obj submit.obj  
    16       trmwav.obj"/> 
    17     <RESFILES value="mbtagger.res rc\resources.res"/> 
     7    <OBJFILES value="obj\mbtagger.obj obj\main.obj obj\preferences.obj obj\optionsdialog.obj  
     8      obj\analyzer.obj obj\filecache.obj obj\lookup.obj obj\mbid3.obj  
     9      obj\lookupdialog.obj obj\dirsearch.obj obj\debug.obj obj\tview.obj  
     10      obj\submit.obj"/> 
     11    <RESFILES value="mbtagger.res obj\resources.res"/> 
    1812    <IDLFILES value=""/> 
    1913    <IDLGENFILES value=""/> 
    2014    <DEFFILE value=""/> 
    2115    <RESDEPEN value="$(RESFILES) main.dfm optionsdialog.dfm lookupdialog.dfm"/> 
    22     <LIBFILES value="musicbrainz.lib id3lib.lib"/> 
     16    <LIBFILES value="musicbrainz.lib trm.lib id3lib.lib"/> 
    2317    <LIBRARIES value="bcbie50.lib Vclx50.lib Vcl50.lib"/> 
    2418    <SPARELIBS value="Vcl50.lib Vclx50.lib bcbie50.lib"/> 
    2519    <PACKAGES value="Vcl50.bpi"/> 
    26     <PATHCPP value=".;..\xingmp3\src"/> 
     20    <PATHCPP value=".;"/> 
    2721    <PATHPAS value=".;"/> 
    2822    <PATHRC value=".;rc"/> 
     
    3125    <RELEASELIBPATH value="$(BCB)\lib\release"/> 
    3226    <LINKER value="tlink32"/> 
    33     <USERDEFINES value="NO_WIN32_LEAN_AND_MEAN;WIN32;_DEBUG"/> 
     27    <USERDEFINES value="NO_WIN32_LEAN_AND_MEAN;WIN32;ID3LIB_LINKOPTION=3"/> 
    3428    <SYSDEFINES value="NO_STRICT"/> 
    3529    <MAINSOURCE value="mbtagger.cpp"/> 
    36     <INCLUDEPATH value="rc\;rc;&quot;C:\Program Files\Borland\CBuilder5\Bin\&quot;;$(BCB)\include;$(BCB)\include\vcl;..\xingmp3\src;..\id3lib\include;..\mb_client\lib"/> 
     30    <INCLUDEPATH value="rc\;rc;&quot;C:\Program Files\Borland\CBuilder5\Bin\&quot;;$(BCB)\include;$(BCB)\include\vcl;..\trm;..\id3lib\include;..\mb_client\lib"/> 
    3731    <LIBPATH value="rc\;rc;&quot;C:\Program Files\Borland\CBuilder5\Bin\&quot;;..\xingmp3\src;xingmp3;$(BCB)\lib\obj;$(BCB)\lib"/> 
    3832    <WARNINGS value="-w-par"/> 
     
    4034  <OPTIONS> 
    4135    <IDLCFLAGS value="-I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -boa"/> 
    42     <CFLAG1 value="-Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c  
    43       -tW -tWM"/> 
    44     <PFLAGS value="-$Y+ -$W -$O- -v -JPHNE -M"/> 
     36    <CFLAG1 value="-O2 -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -a8 -b- -k- -vi -c -tW -tWM"/> 
     37    <PFLAGS value="-N2obj -N0obj -$Y- -$L- -$D- -v -JPHNE -M"/> 
    4538    <RFLAGS value=""/> 
    46     <AFLAGS value="/mx /w2 /zi"/> 
    47     <LFLAGS value="-D&quot;&quot; -aa -Tpe -x -Gn -v"/> 
     39    <AFLAGS value="/mx /w2 /zn"/> 
     40    <LFLAGS value="-Iobj -D&quot;&quot; -aa -Tpe -x -Gn"/> 
    4841  </OPTIONS> 
    4942  <LINKER> 
     
    8174 
    8275[HistoryLists\hlIncludePath] 
    83 Count=26 
    84 Item0=rc\;rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\xingmp3\src;..\id3lib\include;..\mb_client\lib 
    85 Item1=rc\;C:\Program Files\Borland\CBuilder5\Bin\;rc;$(BCB)\include;$(BCB)\include\vcl;..\xingmp3\src;..\id3lib\include;..\mb_client\lib 
    86 Item2=C:\Program Files\Borland\CBuilder5\Bin;rc\;rc;$(BCB)\include;$(BCB)\include\vcl;..\xingmp3\src;..\id3lib\include;..\mb_client\lib 
    87 Item3=rc\;rc;$(BCB)\include;$(BCB)\include\vcl;..\xingmp3\src;..\id3lib\include;..\mb_client\lib 
    88 Item4=rc;$(BCB)\include;$(BCB)\include\vcl;..\xingmp3\src;..\id3lib\include;..\mb_client\lib 
    89 Item5=rc\;rc;$(BCB)\include;$(BCB)\include\vcl;xingmp3;..\id3lib\include;..\mb_client\lib 
    90 Item6=rc\;rc;D:\freeamp\freeamp\plm\metadata\id3v2\;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;xingmp3;..\id3lib\include 
    91 Item7=rc\;D:\freeamp\freeamp\plm\metadata\id3v2\;rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;xingmp3;..\id3lib\include 
    92 Item8=D:\freeamp\freeamp\plm\metadata\id3v2\;rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;xingmp3;..\id3lib\include 
    93 Item9=D:\freeamp\freeamp\plm\metadata\id3v2;rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;xingmp3;..\id3lib\include 
    94 Item10=rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;xingmp3;..\id3lib\include 
    95 Item11=rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;xingmp3 
    96 Item12=rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;xingmp3\src 
    97 Item13=rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\xingmp3\src 
    98 Item14=rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\xingmpg3\src 
    99 Item15=rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\xinmpg3\src 
    100 Item16=rc;D:\freeamp\freeamp\ui\freeamp\win32\include\;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\bitcollider\include 
    101 Item17=rc\;rc;D:\freeamp\freeamp\ui\freeamp\win32\include\;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\bitcollider\include 
    102 Item18=rc\;D:\freeamp\freeamp\ui\freeamp\win32\include\;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\bitcollider\include 
    103 Item19=D:\freeamp\freeamp\ui\freeamp\win32\include\;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\bitcollider\include 
    104 Item20=D:\freeamp\freeamp\ui\freeamp\win32\include;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\bitcollider\include 
    105 Item21=C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\bitcollider\include 
    106 Item22=C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;D:\bitzi\bitcollider\include 
    107 Item23=C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl 
    108 Item24=C:\Program Files\Borland\CBuilder5\Bin;$(BCB)\include;$(BCB)\include\vcl 
    109 Item25=$(BCB)\include;$(BCB)\include\vcl 
     76Count=29 
     77Item0=rc\;rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\trm;..\id3lib\include;..\mb_client\lib 
     78Item1=rc\;rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\mad\msvc++\libmad;..\id3lib\include;..\mb_client\lib 
     79Item2=rc\;rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\mad\msvc++\madlib;..\id3lib\include;..\mb_client\lib 
     80Item3=rc\;rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\xingmp3\src;..\id3lib\include;..\mb_client\lib 
     81Item4=rc\;C:\Program Files\Borland\CBuilder5\Bin\;rc;$(BCB)\include;$(BCB)\include\vcl;..\xingmp3\src;..\id3lib\include;..\mb_client\lib 
     82Item5=C:\Program Files\Borland\CBuilder5\Bin;rc\;rc;$(BCB)\include;$(BCB)\include\vcl;..\xingmp3\src;..\id3lib\include;..\mb_client\lib 
     83Item6=rc\;rc;$(BCB)\include;$(BCB)\include\vcl;..\xingmp3\src;..\id3lib\include;..\mb_client\lib 
     84Item7=rc;$(BCB)\include;$(BCB)\include\vcl;..\xingmp3\src;..\id3lib\include;..\mb_client\lib 
     85Item8=rc\;rc;$(BCB)\include;$(BCB)\include\vcl;xingmp3;..\id3lib\include;..\mb_client\lib 
     86Item9=rc\;rc;D:\freeamp\freeamp\plm\metadata\id3v2\;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;xingmp3;..\id3lib\include 
     87Item10=rc\;D:\freeamp\freeamp\plm\metadata\id3v2\;rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;xingmp3;..\id3lib\include 
     88Item11=D:\freeamp\freeamp\plm\metadata\id3v2\;rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;xingmp3;..\id3lib\include 
     89Item12=D:\freeamp\freeamp\plm\metadata\id3v2;rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;xingmp3;..\id3lib\include 
     90Item13=rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;xingmp3;..\id3lib\include 
     91Item14=rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;xingmp3 
     92Item15=rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;xingmp3\src 
     93Item16=rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\xingmp3\src 
     94Item17=rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\xingmpg3\src 
     95Item18=rc;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\xinmpg3\src 
     96Item19=rc;D:\freeamp\freeamp\ui\freeamp\win32\include\;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\bitcollider\include 
     97Item20=rc\;rc;D:\freeamp\freeamp\ui\freeamp\win32\include\;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\bitcollider\include 
     98Item21=rc\;D:\freeamp\freeamp\ui\freeamp\win32\include\;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\bitcollider\include 
     99Item22=D:\freeamp\freeamp\ui\freeamp\win32\include\;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\bitcollider\include 
     100Item23=D:\freeamp\freeamp\ui\freeamp\win32\include;C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\bitcollider\include 
     101Item24=C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;..\bitcollider\include 
     102Item25=C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl;D:\bitzi\bitcollider\include 
     103Item26=C:\Program Files\Borland\CBuilder5\Bin\;$(BCB)\include;$(BCB)\include\vcl 
     104Item27=C:\Program Files\Borland\CBuilder5\Bin;$(BCB)\include;$(BCB)\include\vcl 
     105Item28=$(BCB)\include;$(BCB)\include\vcl 
    110106 
    111107[HistoryLists\hlLibraryPath] 
     
    138134 
    139135[HistoryLists\hlConditionals] 
    140 Count=8 
    141 Item0=NO_WIN32_LEAN_AND_MEAN;WIN32;_DEBUG 
    142 Item1=NO_WIN32_LEAN_AND_MEAN;WIN32 
    143 Item2=NO_WIN32_LEAN_AND_MEAN;_DEBUG;WIN32 
    144 Item3=NO_WIN32_LEAN_AND_MEAN;_DEBUG,WIN32 
    145 Item4=NO_WIN32_LEAN_AND_MEAN;_DEBUG 
    146 Item5=NO_WIN32_LEAN_AND_MEAN 
    147 Item6=_DEBUG;NO_WIN32_LEAN_AND_MEAN 
    148 Item7=_DEBUG 
     136Count=11 
     137Item0=NO_WIN32_LEAN_AND_MEAN;WIN32;ID3LIB_LINKOPTION=3 
     138Item1=NO_WIN32_LEAN_AND_MEAN;WIN32;ID3LIB_LINKOPTION=3;_DEBUG 
     139Item2=NO_WIN32_LEAN_AND_MEAN;WIN32;_DEBUG;ID3LIB_LINKOPTION=3 
     140Item3=NO_WIN32_LEAN_AND_MEAN;WIN32;_DEBUG 
     141Item4=NO_WIN32_LEAN_AND_MEAN;WIN32 
     142Item5=NO_WIN32_LEAN_AND_MEAN;_DEBUG;WIN32 
     143Item6=NO_WIN32_LEAN_AND_MEAN;_DEBUG,WIN32 
     144Item7=NO_WIN32_LEAN_AND_MEAN;_DEBUG 
     145Item8=NO_WIN32_LEAN_AND_MEAN 
     146Item9=_DEBUG;NO_WIN32_LEAN_AND_MEAN 
     147Item10=_DEBUG 
     148 
     149[HistoryLists\hlIntOutputDir] 
     150Count=1 
     151Item0=obj 
    149152 
    150153[Debugging] 
  • mb_tagger/trunk/mbtagger.cpp

    r799 r800  
    77USEFORM("optionsdialog.cpp", PreferencesForm); 
    88USERES("mbtagger.res"); 
    9 USEUNIT("trmgen.cpp"); 
    109USEUNIT("analyzer.cpp"); 
    1110USEUNIT("filecache.cpp"); 
    1211USELIB("musicbrainz.lib"); 
    13 USELIB("id3lib.lib"); 
    1412USEUNIT("lookup.cpp"); 
    1513USEUNIT("mbid3.cpp"); 
    1614USEFORM("lookupdialog.cpp", TrackLookupDialog); 
    1715USERC("rc\resources.rc"); 
    18 USEUNIT("..\xingmp3\src\isbt.c"); 
    19 USEUNIT("..\xingmp3\src\csbt.c"); 
    20 USEUNIT("..\xingmp3\src\cup.c"); 
    21 USEUNIT("..\xingmp3\src\cupl3.c"); 
    22 USEUNIT("..\xingmp3\src\cwinm.c"); 
    23 USEUNIT("..\xingmp3\src\dec8.c"); 
    24 USEUNIT("..\xingmp3\src\hwin.c"); 
    25 USEUNIT("..\xingmp3\src\icdct.c"); 
    26 USEUNIT("..\xingmp3\src\cdct.c"); 
    27 USEUNIT("..\xingmp3\src\iup.c"); 
    28 USEUNIT("..\xingmp3\src\iwinm.c"); 
    29 USEUNIT("..\xingmp3\src\l3dq.c"); 
    30 USEUNIT("..\xingmp3\src\l3init.c"); 
    31 USEUNIT("..\xingmp3\src\mdct.c"); 
    32 USEUNIT("..\xingmp3\src\mhead.c"); 
    33 USEUNIT("..\xingmp3\src\msis.c"); 
    34 USEUNIT("..\xingmp3\src\uph.c"); 
    35 USEUNIT("..\xingmp3\src\upsf.c"); 
    36 USEUNIT("..\xingmp3\src\wcvt.c"); 
    3716USEUNIT("dirsearch.cpp"); 
    3817USEUNIT("debug.cpp"); 
    3918USEUNIT("tview.cpp"); 
    4019USEUNIT("submit.cpp"); 
    41 USEUNIT("trmwav.cpp"); 
     20USELIB("trm.lib"); 
     21USELIB("id3lib.lib"); 
    4222//--------------------------------------------------------------------------- 
    4323WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) 
  • mb_tagger/trunk/optionsdialog.cpp

    r787 r800  
    55#pragma hdrstop 
    66 
     7#include "defs.h" 
    78#include "optionsdialog.h" 
    89 
     
    7778    renameCheck->State = newValues.renameFiles ? cbChecked : cbUnchecked; 
    7879    fileSaveSpecEdit->Enabled = newValues.renameFiles; 
     80 
     81    versionLabel->Caption = AnsiString(MB_TAGGER_NAME) + " / " + 
     82                            AnsiString(MB_TAGGER_VERSION); 
    7983} 
    8084 
  • mb_tagger/trunk/optionsdialog.dfm

    r799 r800  
    1414  Font.Style = [] 
    1515  OldCreateOrder = False 
    16   Position = poDesktopCenter 
     16  Position = poMainFormCenter 
    1717  OnCreate = FormCreate 
    1818  PixelsPerInch = 96 
     
    336336      Caption = 'About' 
    337337      ImageIndex = 2 
    338       object Label2: TLabel 
     338      object versionLabel: TLabel 
    339339        Left = 8 
    340340        Top = 9 
     
    343343        Alignment = taCenter 
    344344        AutoSize = False 
    345         Caption = 'MusicBrainz Tagger / 0.2.1
     345        Caption = '(app name) / (version)
    346346        Font.Charset = DEFAULT_CHARSET 
    347347        Font.Color = clWindowText 
  • mb_tagger/trunk/optionsdialog.h

    r787 r800  
    2020    TPageControl *pageControl; 
    2121    TTabSheet *aboutSheet; 
    22     TLabel *Label2
     22    TLabel *versionLabel
    2323    TLabel *Label3; 
    2424    TLabel *infoLabel; 
  • mb_tagger/trunk/preferences.cpp

    r798 r800  
    5050//              prefs.server = "www.musicbrainz.org"; 
    5151//          prefs.server = "musicbrainz.eorbit.net"; 
    52           prefs.server = "www.musicbrainz.org"; 
     52          prefs.server = "10.1.1.4"; 
    5353 
    5454          try 
  • mb_tagger/trunk/tview.cpp

    r799 r800  
    344344        return eSaved; 
    345345    } 
    346     if (node == pendingNode || node->HasAsParent(pendingNode)) 
     346    if (pendingNode && (node == pendingNode || node->HasAsParent(pendingNode))) 
    347347    { 
    348348        mutex->Release(); 
    349349        return ePending; 
    350350    } 
    351     if (node == errorNode || node->HasAsParent(errorNode)) 
     351    if (errorNode && (node == errorNode || node->HasAsParent(errorNode))) 
    352352    { 
    353353        mutex->Release(); 
     
    424424 
    425425    if (recognizedNode == NULL) 
    426        count = 0; 
     426        count = 0; 
    427427    else 
    428428    {