Exemple #1
0
std::string Platform::Locale() {
	return std::string(wxLocale().GetSysName());
}
Exemple #2
0
LanguageSelector::LanguageSelector(wxWindow *parent,
                        const wxString& message,
                        const wxString& caption,
						const wxString& rootLngFolder,
						const wxString& flagsFolder,
                        const wxPoint& pos )
	:wxDialog(parent, wxID_ANY, caption,
                              pos, wxDefaultSize)
{
	wxBeginBusyCursor();
	wxBoxSizer* topsizer = new wxBoxSizer( wxVERTICAL );
	wxBoxSizer* lstsizer = new wxBoxSizer( wxVERTICAL );
	topsizer->Add(lstsizer,1,wxLEFT | wxTOP | wxGROW);

	wxListCtrl* flagList=new wxListCtrl(this,WindowLanguageSelectorId_FLAG_LIST,wxDefaultPosition,wxDefaultSize,wxLC_SMALL_ICON |
                                    wxSUNKEN_BORDER | wxLC_SINGLE_SEL );
	lstsizer->Add(flagList,0,wxLEFT | wxTOP | wxGROW,5);

	wxImageList* icoLst=new wxImageList(16,11);
	wxString ressourceFolder=rootLngFolder;
	wxString Canonical_lng,ISO3166_lng,ISO639_lng;
	int defaultSelection=0;
	int systemLanguage=wxLocale::GetSystemLanguage();
	wxSortedArrayString flagsFileName;
	wxSortedArrayString lngFolders;

	wxDirList traverser(lngFolders);
	wxDir folderRoot(rootLngFolder);
	folderRoot.Traverse(traverser);
	wxDir::GetAllFiles(flagsFolder,&flagsFileName,"*.png",wxDIR_FILES);


	for(int idlang=wxLANGUAGE_UNKNOWN+1;idlang<wxLANGUAGE_USER_DEFINED;idlang++)
	{
		if(wxLocale::IsAvailable(idlang))
		{
			Canonical_lng=wxLocale(idlang).GetCanonicalName();
			ISO3166_lng=Canonical_lng.Mid(Canonical_lng.rfind("_")+1).Lower();
			ISO639_lng=Canonical_lng.Left(Canonical_lng.rfind("_")).Lower();
 			if(lngFolders.Index(ressourceFolder+Canonical_lng)>=0)//lngFolders.Index(ressourceFolder+ISO639_lng)>=0 || lngFolders.Index(ressourceFolder+Canonical_lng)>=0 )
			{
                if(systemLanguage==idlang)
                    defaultSelection=flagList->GetItemCount();
				wxString flag_filepath=flagsFolder+wxString::Format("%s.png",ISO3166_lng);
				//if(wxFileExists(flag_filepath))
				if(flagsFileName.Index(flag_filepath)>=0)
				{
					wxIcon flagImage(flag_filepath, wxBITMAP_TYPE_PNG);
					if(flagImage.IsOk())
					{
						int indexico=icoLst->Add(flagImage);
						flagList->SetItemData(flagList->InsertItem(flagList->GetItemCount(),wxLocale::GetLanguageName(idlang),indexico),idlang);
					}
				}else{
					flagList->SetItemData(flagList->InsertItem(flagList->GetItemCount(),wxLocale::GetLanguageName(idlang)),idlang);
				}
			}
		}
	}
	flagList->AssignImageList(icoLst,wxIMAGE_LIST_SMALL);
	if(flagList->GetItemCount()>0)
        flagList->SetItemState(defaultSelection,wxLIST_STATE_SELECTED,wxLIST_STATE_SELECTED);
    // 3) buttons if any
    wxSizer *buttonSizer = CreateSeparatedButtonSizer(wxOK | wxCANCEL);
    if ( buttonSizer )
    {
        topsizer->Add(buttonSizer, wxSizerFlags().Expand().DoubleBorder());
    }

    SetSizer( topsizer );
    SetAutoLayout( true );

    topsizer->SetSizeHints( this );
    topsizer->Fit( this );

    wxEndBusyCursor();
}