mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-12 09:09:12 +01:00
d14efe561b
long become wxWidgets 2.9.2, which in turn is expected to be the last 2.9 release before the 3.0 stable release. Since the full wxWidgets distribution is rather large, I have imported only the parts that we use, on a subdirectory basis: art include/wx/*.* include/wx/aui include/wx/cocoa include/wx/generic include/wx/gtk include/wx/meta include/wx/msw include/wx/osx include/wx/persist include/wx/private include/wx/protocol include/wx/unix src/aui src/common src/generic src/gtk src/msw src/osx src/unix git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7380 8ced0084-cf51-0410-be5f-012b33b47a6e
122 lines
2.9 KiB
C++
122 lines
2.9 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/gtk/private/string.h
|
|
// Purpose: wxGtkString class declaration
|
|
// Author: Vadim Zeitlin
|
|
// Created: 2006-10-19
|
|
// RCS-ID: $Id: string.h 65680 2010-09-30 11:44:45Z VZ $
|
|
// Copyright: (c) 2006 Vadim Zeitlin <vadim@wxwindows.org>
|
|
// Licence: wxWindows licence
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_GTK_PRIVATE_STRING_H_
|
|
#define _WX_GTK_PRIVATE_STRING_H_
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Convenience class for g_freeing a gchar* on scope exit automatically
|
|
// ----------------------------------------------------------------------------
|
|
|
|
class wxGtkString
|
|
{
|
|
public:
|
|
explicit wxGtkString(gchar *s) : m_str(s) { }
|
|
~wxGtkString() { g_free(m_str); }
|
|
|
|
const gchar *c_str() const { return m_str; }
|
|
|
|
operator gchar *() const { return m_str; }
|
|
|
|
private:
|
|
gchar *m_str;
|
|
|
|
wxDECLARE_NO_COPY_CLASS(wxGtkString);
|
|
};
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// list for sorting collated strings
|
|
// ----------------------------------------------------------------------------
|
|
|
|
#include "wx/string.h"
|
|
#include "wx/vector.h"
|
|
#include "wx/sharedptr.h"
|
|
|
|
class wxGtkCollatableString
|
|
{
|
|
public:
|
|
wxGtkCollatableString( const wxString &label, gchar *key )
|
|
{
|
|
m_label = label;
|
|
m_key = key;
|
|
}
|
|
|
|
~wxGtkCollatableString()
|
|
{
|
|
if (m_key)
|
|
g_free( m_key );
|
|
}
|
|
|
|
wxString m_label;
|
|
gchar *m_key;
|
|
};
|
|
|
|
class wxGtkCollatedArrayString
|
|
{
|
|
public:
|
|
wxGtkCollatedArrayString() { }
|
|
|
|
int Add( const wxString &new_label )
|
|
{
|
|
int index = 0;
|
|
|
|
gchar *new_key_lower = g_utf8_casefold( new_label.utf8_str(), -1);
|
|
gchar *new_key = g_utf8_collate_key( new_key_lower, -1);
|
|
g_free( new_key_lower );
|
|
|
|
wxSharedPtr<wxGtkCollatableString> new_ptr( new wxGtkCollatableString( new_label, new_key ) );
|
|
|
|
wxVector< wxSharedPtr<wxGtkCollatableString> >::iterator iter;
|
|
for (iter = m_list.begin(); iter != m_list.end(); ++iter)
|
|
{
|
|
wxSharedPtr<wxGtkCollatableString> ptr = *iter;
|
|
|
|
gchar *key = ptr->m_key;
|
|
if (strcmp(key,new_key) >= 0)
|
|
{
|
|
m_list.insert( iter, new_ptr );
|
|
return index;
|
|
}
|
|
index ++;
|
|
}
|
|
|
|
m_list.push_back( new_ptr );
|
|
return index;
|
|
}
|
|
|
|
size_t GetCount()
|
|
{
|
|
return m_list.size();
|
|
}
|
|
|
|
wxString At( size_t index )
|
|
{
|
|
return m_list[index]->m_label;
|
|
}
|
|
|
|
void Clear()
|
|
{
|
|
m_list.clear();
|
|
}
|
|
|
|
void RemoveAt( size_t index )
|
|
{
|
|
m_list.erase( m_list.begin() + index );
|
|
}
|
|
|
|
private:
|
|
wxVector< wxSharedPtr<wxGtkCollatableString> > m_list;
|
|
};
|
|
|
|
|
|
#endif // _WX_GTK_PRIVATE_STRING_H_
|
|
|