// will be preserved during unassociate
// 9) KDE does not yet handle multiple actions; Netscape mode never will
-/*
- TODO: this file is a mess, we need to split it and reformet/review
- everything (VZ)
- */
-
-// ============================================================================
-// declarations
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
+// TODO: this file is a mess, we need to split it and review everything (VZ)
// for compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifndef WX_PRECOMP
#include "wx/string.h"
-#endif //WX_PRECOMP
-
+#endif
#include "wx/log.h"
#include "wx/file.h"
public:
// constructors
wxMimeTextFile () : wxTextFile () {};
- wxMimeTextFile(const wxString& strFile) : wxTextFile(strFile) {};
+ wxMimeTextFile(const wxString& strFile) : wxTextFile(strFile) {};
int pIndexOf(const wxString & sSearch, bool bIncludeComments = false, int iStart = 0)
{
sLine.MakeLower();
if (sLine.Contains(sTest))
nResult = (int) i;
+
i++;
}
}
return false;
if (nIndex >= (int)GetLineCount() )
return false;
+
GetLine(nIndex) = GetLine(nIndex).Prepend(wxT("#"));
return true;
}
// just before the field name.
-bool wxMimeTypesManagerImpl::CheckGnomeDirsExist ()
+bool wxMimeTypesManagerImpl::CheckGnomeDirsExist()
{
wxString gnomedir;
wxGetHomeDir( &gnomedir );
wxString sTmp = gnomedir;
sTmp = sTmp + wxT("/.gnome");
- if (! wxDir::Exists ( sTmp ) )
+ if (! wxDir::Exists( sTmp ) )
{
- if (!wxMkdir ( sTmp ))
+ if (!wxMkdir( sTmp ))
{
wxLogError(wxT("Failed to create directory %s/.gnome."), sTmp.c_str());
return false;
}
}
+
sTmp = sTmp + wxT("/mime-info");
- if (! wxDir::Exists ( sTmp ) )
+ if (! wxDir::Exists( sTmp ) )
{
- if (!wxMkdir ( sTmp ))
+ if (!wxMkdir( sTmp ))
{
wxLogError(wxT("Failed to create directory %s/mime-info."), sTmp.c_str());
return false;
// create it anyway as a private mime store
#if defined(__WXGTK20__) && wxUSE_UNICODE
- if (! outfile.Open ( wxConvUTF8) )
+ if (! outfile.Open( wxConvUTF8) )
#else
- if (! outfile.Open () )
+ if (! outfile.Open() )
#endif
{
if (delete_index)
int nIndex = outfile.pIndexOf(strType);
if ( nIndex == wxNOT_FOUND )
{
- outfile.AddLine ( strType + wxT(':') );
+ outfile.AddLine( strType + wxT(':') );
// see file:/usr/doc/gnome-libs-devel-1.0.40/devel-docs/mime-type-handling.txt
// as this does not deal with internationalisation
// wxT( "\t[en_US]") + verb + wxT ('=') + cmd + wxT(" %f");
size_t count = entries->GetCount();
for ( size_t i = 0; i < count; i++ )
{
- sTmp = entries->GetVerbCmd(i);
+ sTmp = entries->GetVerbCmd( i );
sTmp.Replace( wxT("%s"), wxT("%f") );
sTmp = wxT( "\t") + sTmp;
outfile.AddLine( sTmp );
}
+
//for international use do something like this
- //outfile.AddLine ( wxString( "\t[en_US]icon-filename=") + cmd );
+ //outfile.AddLine( wxString( "\t[en_US]icon-filename=") + cmd );
outfile.AddLine( wxT( "\ticon-filename=") + m_aIcons[index] );
}
else
wxMimeTypeCommands sOld;
size_t nOld = nIndex + 1;
bool oldEntryEnd = false;
- while ( (nOld < outfile.GetLineCount() )&& (!oldEntryEnd))
+ while ( (nOld < outfile.GetLineCount() ) && !oldEntryEnd)
{
sTmp = outfile.GetLine(nOld);
if ( (sTmp[0u] == wxT('\t')) || (sTmp[0u] == wxT('#')) )
{
// we have another line to deal with
outfile.CommentLine(nOld);
- nOld ++;
+ nOld++;
// add the line to our store
if ((!delete_index) && (sTmp[0u] == wxT('\t')))
for (i=0; i < sOld.GetCount(); i++)
{
- sTmp = sOld.GetVerbCmd(i);
+ sTmp = sOld.GetVerbCmd( i );
sTmp.Replace( wxT("%s"), wxT("%f") );
sTmp = wxT("\t") + sTmp;
- nIndex ++;
+ nIndex++;
outfile.InsertLine( sTmp, nIndex );
}
}
return bTmp;
}
-
bool wxMimeTypesManagerImpl::WriteGnomeMimeFile(int index, bool delete_index)
{
wxString gnomedir;
wxGetHomeDir( &gnomedir );
- wxMimeTextFile outfile( gnomedir + wxT("/.gnome/mime-info/user.mime"));
+ wxMimeTextFile outfile( gnomedir + wxT("/.gnome/mime-info/user.mime") );
// if this fails probably Gnome is not installed ??
// create it anyway as a private mime store
if (! outfile.Open() )
if (delete_index)
{
outfile.CommentLine(nIndex);
- outfile.CommentLine(nIndex+1);
+ outfile.CommentLine(nIndex + 1);
}
else
{
// check for next line being the right one to replace ??
- wxString sOld = outfile.GetLine(nIndex+1);
- if (sOld.Contains( wxT("\text: ")))
+ wxString sOld = outfile.GetLine(nIndex + 1);
+ if (sOld.Contains( wxT("\text: ") ))
{
- outfile.GetLine(nIndex+1) = wxT("\text: ") + m_aExtensions.Item(index);
+ outfile.GetLine(nIndex + 1) = wxT("\text: ") + m_aExtensions.Item(index);
}
else
{
const wxChar *pc;
size_t nLineCount = textfile.GetLineCount();
size_t nLine = 0;
- while ( nLine < nLineCount)
+ while ( nLine < nLineCount )
{
pc = textfile[nLine].c_str();
if ( *pc != wxT('#') )
{
wxLogTrace(TRACE_MIME, wxT("--- Reading from Gnome file %s '%s' ---"),
- filename.c_str(),pc);
+ filename.c_str(), pc);
wxString sTmp(pc);
if (sTmp.Contains(wxT("=")) )
// overwrite any existing data
if (! curMimeType.empty())
{
- AddToMimeData( curMimeType, curIconFile, entry, strExtensions, strDesc);
+ AddToMimeData( curMimeType, curIconFile, entry, strExtensions, strDesc );
// now get ready for next bit
entry = new wxMimeTypeCommands;
} // end of not a comment
// ignore blank lines
- nLine ++;
+ nLine++;
} // end of while, save any data
if (! curMimeType.empty())
AddToMimeData( curMimeType, curIconFile, entry, strExtensions, strDesc);
}
-
-
void wxMimeTypesManagerImpl::LoadGnomeMimeTypesFromMimeFile(const wxString& filename)
{
wxTextFile textfile(filename);
if ( !pc )
{
- // the end - this can only happen if nLine == nLineCount
+ // the end: this can only happen if nLine == nLineCount
break;
}
cont = dir.GetNext(&filename);
}
- // Hack alert: We scan all icons and deduce the
+ // FIXME: Hack alert: We scan all icons and deduce the
// mime-type from the file name.
dirname = dirbase;
dirname << wxT("/pixmaps/document-icons");
if ( !wxDir::Exists(dirname) )
{
- // Jst test for default GPE dir also
+ // Just test for default GPE dir also
dirname = wxT("/usr/share/gpe/pixmaps/default/filemanager/document-icons");
if ( !wxDir::Exists(dirname) )
{
wxString mimeType = filename;
mimeType.Remove( 0, 6 ); // remove "gnome-"
- mimeType.Remove( mimeType.Len()-4, 4 ); // remove ".png"
+ mimeType.Remove( mimeType.Len() - 4, 4 ); // remove ".png"
int pos = mimeType.Find( wxT("-") );
if (pos != wxNOT_FOUND)
{
mimeoutfile.CommentLine(wxT("Icon=") );
if (!delete_index)
mimeoutfile.AddLine(wxT("Icon=") + sTmp );
- appoutfile.CommentLine(wxT("Icon=") );
+ appoutfile.CommentLine(wxT("Icon=") );
if (!delete_index)
appoutfile.AddLine(wxT("Icon=") + sTmp );
return;
wxLogTrace(TRACE_MIME, wxT("loading KDE file %s"),
- (dirbase+filename).c_str());
+ (dirbase + filename).c_str());
wxMimeTypeCommands * entry = new wxMimeTypeCommands;
wxArrayString sExts;
nIndex = wxNOT_FOUND;
wxString comment;
+
#if wxUSE_INTL
wxLocale *locale = wxGetLocale();
if ( locale )
comment << wxT("Comment[") + locale->GetName() + wxT("]=");
nIndex = file.pIndexOf(comment);
}
-#endif // wxUSE_INTL
+#endif
if ( nIndex == wxNOT_FOUND )
{
while ( tokenizer.HasMoreTokens() )
{
wxString e = tokenizer.GetNextToken();
+
+ // don't support too difficult patterns
if ( e.Left(2) != wxT("*.") )
- continue; // don't support too difficult patterns
+ continue;
if ( !mime_extension.empty() )
{
if ( nIndex != wxNOT_FOUND )
{
strIcon = file.GetCmd(nIndex);
+
wxLogTrace(TRACE_MIME, wxT(" icon %s"), strIcon.c_str());
- //it could be the real path, but more often a short name
+ // it could be the real path, but more often a short name
if (!wxFileExists(strIcon))
{
// icon is just the short name
if ( nIndex != wxNOT_FOUND )
{
- wxString sTmp = file.GetCmd(nIndex);
// we expect %f; others including %F and %U and %u are possible
+ wxString sTmp = file.GetCmd(nIndex);
if (0 == sTmp.Replace( wxT("%f"), wxT("%s") ))
sTmp = sTmp + wxT(" %s");
entry->AddOrReplaceVerb(wxString(wxT("open")), sTmp );
if (configFile.FileExists() && config.Open(configFile.GetFullPath()))
{
// $(KDEDIR)/share/config -> $(KDEDIR)/share
- configFile.RemoveDir( configFile.GetDirCount()-1 );
+ configFile.RemoveDir( configFile.GetDirCount() - 1 );
// $(KDEDIR)/share/ -> $(KDEDIR)/share/icons
configFile.AppendDir( wxT("icons") );
// Just try a few likely icons theme names
- int pos = configFile.GetDirCount()-3;
+ int pos = configFile.GetDirCount() - 3;
if (!wxDir::Exists(configFile.GetPath()))
{
// verbs and commands have been cleared already in mimecmn.cpp...
// if we find no entries in the exact match, try the inexact match
- for (size_t n = 0; ((count ==0) && (n < m_index.GetCount())); n++)
+ for (size_t n = 0; ((count == 0) && (n < m_index.GetCount())); n++)
{
// list of verb = command pairs for this mimetype
sPairs = m_manager->m_aEntries [m_index[n]];
for ( i = 0; i < sPairs->GetCount(); i++ )
{
vrb = sPairs->GetVerb(i);
- // some gnome entries have . inside
+ // some gnome entries have "." inside
vrb = vrb.AfterLast(wxT('.'));
cmd = sPairs->GetCmd(i);
if (! cmd.empty() )
{
cmd = wxFileType::ExpandCommand(cmd, params);
- count ++;
+ count++;
if ( vrb.IsSameAs(wxT("open")))
{
verbs->Insert(vrb, 0u);
extensions.Add(strExt);
strExt.Empty();
}
- //else: repeated spaces (shouldn't happen, but it's not that
- // important if it does happen)
+ //else: repeated spaces
+ // (shouldn't happen, but it's not that important if it does happen)
if ( *p == wxT('\0') )
break;
return true;
}
-// set an arbitrary command,
+// set an arbitrary command:
// could adjust the code to ask confirmation if it already exists and
// overwriteprompt is true, but this is currently ignored as *Associate* has
// no overwrite prompt
// wxMimeTypesManagerImpl (Unix)
// ----------------------------------------------------------------------------
-
wxMimeTypesManagerImpl::wxMimeTypesManagerImpl()
{
m_initialized = false;
wxMimeTextFile file;
if ( wxFile::Exists(strUserMailcap) )
{
- bTemp = file.Open(strUserMailcap);
+ bTemp = file.Open(strUserMailcap);
}
else
{
if (!delete_index)
{
// add the new entries in
- wxString sTmp = strType.Append(wxT(' '), 40-strType.Len() );
+ wxString sTmp = strType.Append( wxT(' '), 40 - strType.Len() );
sTmp = sTmp + m_aExtensions[index];
file.AddLine(sTmp);
}
wxMimeTextFile file;
if ( wxFile::Exists(strUserMailcap) )
{
- bTemp = file.Open(strUserMailcap);
+ bTemp = file.Open(strUserMailcap);
}
else
{
sTmp = wxT("desc=\"") + m_aDescriptions[index]+ wxT("\" \\"); //.trim ??
if (!delete_index)
{
- nIndex ++;
+ nIndex++;
file.InsertLine(sTmp, nIndex);
}
}
- wxString sExts = m_aExtensions.Item(index);
+ wxString sExts = m_aExtensions.Item(index);
sTmp = wxT("exts=\"") + sExts.Trim(false).Trim() + wxT("\"");
if (!delete_index)
{
- nIndex ++;
+ nIndex++;
file.InsertLine(sTmp, nIndex);
}
( m_mailcapStylesInited & wxMAILCAP_STANDARD) ) )
return false;
- bool bTemp;
+ bool bTemp = false;
wxString strHome = wxGetenv(wxT("HOME"));
// and now the users mailcap
wxMimeTextFile file;
if ( wxFile::Exists(strUserMailcap) )
{
- bTemp = file.Open(strUserMailcap);
+ bTemp = file.Open(strUserMailcap);
}
else
{
sTmp = m_aTypes[index];
wxString sOld;
int nIndex = file.pIndexOf(sTmp);
+
// get rid of all the unwanted entries...
if (nIndex == wxNOT_FOUND)
{
if (nIndex < (int) file.GetLineCount())
sOld = sOld + file[nIndex];
}
+
if (nIndex < (int)
file.GetLineCount()) file.CommentLine(nIndex);
}
sTmp = sTmp + wxT(";") + sCmd; //includes wxT(" %s ");
// write it in the format that Netscape uses (default)
- if (! ( m_mailcapStylesInited & wxMAILCAP_STANDARD ) )
+ if (! ( m_mailcapStylesInited & wxMAILCAP_STANDARD ) )
{
if (! delete_index)
file.InsertLine(sTmp, nIndex);
bKnownToken = true;
if (s.Contains(wxT("x11-bitmap=")))
bKnownToken = true;
-
+
size_t i;
for (i=0; i < entries->GetCount(); i++)
{
{
sTmp = sTmp + wxT("; \\");
file.InsertLine(sTmp, nIndex);
- nIndex ++;
+ nIndex++;
sTmp = wxT(" description=\"") + m_aDescriptions[index] + wxT("\"");
}
{
sTmp = sTmp + wxT("; \\");
file.InsertLine(sTmp, nIndex);
- nIndex ++;
+ nIndex++;
sTmp = wxT(" x11-bitmap=\"") + m_aIcons[index] + wxT("\"");
}
{
sTmp = sTmp + wxT("; \\");
file.InsertLine(sTmp, nIndex);
- nIndex ++;
+ nIndex++;
sTmp = wxT(" ") + entries->GetVerbCmd(i);
}
}
// clean up to just a space before and after
sExt.Trim().Trim(false);
sExt = wxT(' ') + sExt + wxT(' ');
- for (nIndex = 0; nIndex < m_aExtensions.GetCount(); nIndex ++)
+ for (nIndex = 0; nIndex < m_aExtensions.GetCount(); nIndex++)
{
sExtStore = m_aExtensions.Item(nIndex);
if (sExtStore.Replace(sExt, wxT(" ") ) > 0)
// add any new entries...
if ( entry )
{
- wxMimeTypeCommands *entryOld = m_aEntries[nIndex];
+ wxMimeTypeCommands *entryOld = m_aEntries[nIndex];
size_t count = entry->GetCount();
for ( size_t i = 0; i < count; i++ )
return NULL;
}
-wxFileType *
-wxMimeTypesManagerImpl::GetFileTypeFromMimeType(const wxString& mimeType)
+wxFileType * wxMimeTypesManagerImpl::GetFileTypeFromMimeType(const wxString& mimeType)
{
InitIfNeeded();
return fileType;
}
-
wxString wxMimeTypesManagerImpl::GetCommand(const wxString & verb, size_t nIndex) const
{
wxString command, testcmd, sV, sTmp;
wxTextFile file(strFileName);
#if defined(__WXGTK20__) && wxUSE_UNICODE
- if ( !file.Open( wxConvUTF8) )
+ if ( !file.Open(wxConvUTF8) )
#else
if ( !file.Open() )
#endif
wxTextFile file(strFileName);
#if defined(__WXGTK20__) && wxUSE_UNICODE
- if ( !file.Open( wxConvUTF8) )
+ if ( !file.Open(wxConvUTF8) )
#else
if ( !file.Open() )
#endif
continue;
}
- // if the test command failed, it's as if the entry were not there at
- // all
+ // if the test command failed, it's as if the entry were not there at all
if ( data.testfailed )
{
continue;