⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wxosmo4.cpp

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	wxString sFiles, sSupportedFiles, sExts;	/*force MP4 and 3GP files at beginning to make sure they are selected (Win32 bug with too large filters)*/	sSupportedFiles = wxT("All Known Files|*.m3u;*.pls;*.mp4;*.3gp;*.3g2");	sExts = wxT("");	sFiles = wxT("");	keyCount = gf_cfg_get_key_count(m_user.config, "MimeTypes");	for (i=0; i<keyCount; i++) {		Bool first = 1;		const char *sMime;		char *sKey;		const char *opt;		char szKeyList[1000], sDesc[1000];		sMime = gf_cfg_get_key_name(m_user.config, "MimeTypes", i);		if (!sMime) continue;		opt = gf_cfg_get_key(m_user.config, "MimeTypes", sMime);		/*remove module name*/		strcpy(szKeyList, opt+1);		sKey = strrchr(szKeyList, '\"');		if (!sKey) continue;		sKey[0] = 0;		/*get description*/		sKey = strrchr(szKeyList, '\"');		if (!sKey) continue;		strcpy(sDesc, sKey+1);		sKey[0] = 0;		sKey = strrchr(szKeyList, '\"');		if (!sKey) continue;		sKey[0] = 0;		/*if same description for # mime types skip (means an old mime syntax)*/		if (sFiles.Find(wxString(sDesc, wxConvUTF8) )>=0) continue;		/*if same extensions for # mime types skip (don't polluate the file list)*/		if (sExts.Find(wxString(szKeyList, wxConvUTF8) )>=0) continue;			sExts += wxString(szKeyList, wxConvUTF8);		sExts += wxT(" ");		sFiles += wxString(sDesc, wxConvUTF8);		sFiles += wxT("|");		wxString sOpt = wxString(szKeyList, wxConvUTF8);		while (1) {			wxString ext = sOpt.BeforeFirst(' ');			if (ext.Find('.')<0) {				if (first) first = 0;				else sFiles += wxT(";");				sFiles += wxT("*.");				sFiles += ext;				wxString sext = ext;				sext += wxT(";");				if (sSupportedFiles.Find(sext)<0) {					sSupportedFiles  += wxT(";*.");					sSupportedFiles += ext;				}			}			if (sOpt==ext) break;			wxString rem = ext + wxT(" ");			sOpt.Replace(rem, wxT(""), TRUE);		}		sFiles += wxT("|");	}	sSupportedFiles += wxT("|");	sSupportedFiles += sFiles;	sSupportedFiles += wxT("M3U Playlists|*.m3u|ShoutCast Playlists|*.pls|All Files|*.*||");	return sSupportedFiles;}void wxOsmo4Frame::OnFileOpen(wxCommandEvent & WXUNUSED(event)){	wxFileDialog dlg(this, wxT("Select file(s)"), wxT(""), wxT(""), GetFileFilter(), wxOPEN | wxMULTIPLE | wxCHANGE_DIR /*| wxHIDE_READONLY*/);	if (dlg.ShowModal() != wxID_OK) return;	wxArrayString stra;	dlg.GetPaths(stra);	if (stra.GetCount() == 1) {		m_pPlayList->Truncate();	} else {		m_pPlayList->Clear();	}	for (u32 i=0; i<stra.GetCount(); i++) 		m_pPlayList->QueueURL(stra[i]);	m_pPlayList->RefreshList();	m_pPlayList->PlayNext();}void wxOsmo4Frame::OnFileOpenURL(wxCommandEvent & WXUNUSED(event)){	OpenURLDlg dlg(this, m_user.config);	if (dlg.ShowModal()==wxID_OK) {		m_pPlayList->Truncate();		m_pPlayList->QueueURL(dlg.m_urlVal);		m_pPlayList->RefreshList();		m_pPlayList->PlayNext();	}}void wxOsmo4Frame::OnFileProperties(wxCommandEvent & WXUNUSED(event)){	wxFileProps dlg(this);	dlg.SetIcon(wxIcon(osmo4));	dlg.ShowModal();}void wxOsmo4Frame::OnFileReload(wxCommandEvent & WXUNUSED(event)){	gf_term_disconnect(m_term); 	m_connected = 0;	DoConnect();}void wxOsmo4Frame::OnFileQuit(wxCommandEvent & WXUNUSED(event)){	Close(FALSE);}void wxOsmo4Frame::OnViewOriginal(wxCommandEvent & WXUNUSED(event)){	if (!m_bExternalView) {		DoLayout(m_orig_width, m_orig_height);	} else {		gf_term_set_option(m_term, GF_OPT_ORIGINAL_VIEW, 1);	}}void wxOsmo4Frame::OnOptions(wxCommandEvent & WXUNUSED(event)){	wxGPACControl dlg(this);	dlg.SetIcon(wxIcon(osmo4));	dlg.ShowModal();}void wxOsmo4Frame::DoConnect(){	//if (m_connected) { gf_term_disconnect(m_term); m_connected = 0; }	wxString url = m_pPlayList->GetURL();	m_Address->SetValue(url);#ifdef __WXGTK__	m_pVisual->SetFocus();#else	m_pView->SetFocus();#endif	wxString txt = wxT("Osmo4 - ");	txt += m_pPlayList->GetDisplayName();	SetTitle(txt);	m_bStartupFile = 0;	gf_term_connect(m_term, url.mb_str(wxConvUTF8));}void wxOsmo4Frame::OnLogs(wxCommandEvent & WXUNUSED(event)){	m_pLogs->Show();}void wxOsmo4Frame::OnUpdateNeedsConnect(wxUpdateUIEvent &event){	event.Enable(m_connected ? 1 : 0);}void wxOsmo4Frame::OnUpdatePlay(wxUpdateUIEvent &event){	event.Enable( (m_connected || m_pPlayList->HasValidEntries()) ? 1 : 0);}void wxOsmo4Frame::OnUpdateFullScreen(wxUpdateUIEvent &event){	if (m_connected) {		event.Enable(1);		event.Check(gf_term_get_option(m_term, GF_OPT_FULLSCREEN) ? 1 : 0);	} else {		event.Enable(0);	}}void wxOsmo4Frame::OnFullScreen(wxCommandEvent & WXUNUSED(event)){	Bool isFS = gf_term_get_option(m_term, GF_OPT_FULLSCREEN) ? 1 : 0;	gf_term_set_option(m_term, GF_OPT_FULLSCREEN, isFS ? 0 : 1);}void wxOsmo4Frame::OnViewARKeep(wxCommandEvent & WXUNUSED(event)){	gf_term_set_option(m_term, GF_OPT_ASPECT_RATIO, GF_ASPECT_RATIO_KEEP);}void wxOsmo4Frame::OnViewARFill(wxCommandEvent & WXUNUSED(event)){	gf_term_set_option(m_term, GF_OPT_ASPECT_RATIO, GF_ASPECT_RATIO_FILL_SCREEN);}void wxOsmo4Frame::OnViewAR169(wxCommandEvent & WXUNUSED(event)){	gf_term_set_option(m_term, GF_OPT_ASPECT_RATIO, GF_ASPECT_RATIO_16_9);}void wxOsmo4Frame::OnViewAR43(wxCommandEvent & WXUNUSED(event)){	gf_term_set_option(m_term, GF_OPT_ASPECT_RATIO, GF_ASPECT_RATIO_4_3);}void wxOsmo4Frame::OnUpdateAR(wxUpdateUIEvent &event){	if (!m_connected) {		event.Enable(0);		return;	}	event.Enable(1);	u32 val = gf_term_get_option(m_term, GF_OPT_ASPECT_RATIO);	if ((event.GetId() == VIEW_AR_FILL) && (val==GF_ASPECT_RATIO_FILL_SCREEN))		event.Check(1);	else if ((event.GetId() == VIEW_AR_KEEP) && (val==GF_ASPECT_RATIO_KEEP)) 		event.Check(1);	else if ((event.GetId() == VIEW_AR_169) && (val==GF_ASPECT_RATIO_16_9)) 		event.Check(1);	else if ((event.GetId() == VIEW_AR_43) && (val==GF_ASPECT_RATIO_4_3)) 		event.Check(1);	else event.Check(0);}void wxOsmo4Frame::OnShortcuts(wxCommandEvent & WXUNUSED(event)){	wxMessageDialog dlg(this,		wxT("Shortcuts with focus on main frame:\n")		wxT("Open File: Ctrl + O\n")		wxT("Show File Information: Ctrl + I\n")		wxT("Reload File: Ctrl + R\n")		wxT("Pause/Resume File: Ctrl + P\n")		wxT("Step by Step: Ctrl + S\n")		wxT("Fullscreen On/Off: Alt + Return\n")		wxT("View Playlist: Ctrl + L\n")		wxT("Aspect Ratio Normal: Ctrl + 1\n")		wxT("Aspect Ratio Fill: Ctrl + 2\n")		wxT("Aspect Ratio 4/3: Ctrl + 3\n")		wxT("Aspect Ratio 16/9: Ctrl + 4\n")		wxT("\n")		wxT("Shortcuts with focus on video frame:\n")		wxT("Seek +5% into presentation: Alt + right arrow\n")		wxT("Seek -5% into presentation: Alt + left arrow\n")				wxT("Seek +1min into presentation: Alt + up arrow\n")		wxT("Seek -1min into presentation: Alt + down arrow\n")		wxT("Next Playlist Entry: Ctrl + right arrow\n")		wxT("Prev Playlist Entry: Ctrl + left arrow\n")				, wxT("Shortcuts Available on Osmo4")		, wxOK);	dlg.ShowModal();}void wxOsmo4Frame::OnNavInfo(wxCommandEvent & WXUNUSED(event)){	wxMessageDialog dlg(this,		wxT("* Walk & Fly modes:\n")		wxT("\tH move: H pan - V move: Z-translate - V move+CTRL or Wheel: V pan - Right Click (Walk only): Jump\n")		wxT("\tleft/right: H pan - left/right+CTRL: H translate - up/down: Z-translate - up/down+CTRL: V pan\n")		wxT("* Pan mode:\n")		wxT("\tH move: H pan - V move: V pan - V move+CTRL or Wheel: Z-translate\n")		wxT("\tleft/right: H pan - left/right+CTRL: H translate - up/down: V pan - up/down+CTRL: Z-translate\n")		wxT("* Slide mode:\n")		wxT("\tH move: H translate - V move: V translate - V move+CTRL or Wheel: Z-translate\n")		wxT("\tleft/right: H translate - left/right+CTRL: H pan - up/down: V translate - up/down+CTRL: Z-translate\n")		wxT("* Examine & Orbit mode:\n")		wxT("\tH move: Y-Axis rotate - H move+CTRL: No move - V move: X-Axis rotate - V move+CTRL or Wheel: Z-translate\n")		wxT("\tleft/right: Y-Axis rotate - left/right+CTRL: H translate - up/down: X-Axis rotate - up/down+CTRL: Y-translate\n")		wxT("* VR mode:\n")		wxT("\tH move: H pan - V move: V pan - V move+CTRL or Wheel: Camera Zoom\n")		wxT("\tleft/right: H pan - up/down: V pan - up/down+CTRL: Camera Zoom\n")		wxT("* Game mode (press END to escape):\n")		wxT("\tH move: H pan - V move: V pan\n")		wxT("\tleft/right: H translate - up/down: Z-translate\n")		wxT("\n")		wxT("* All 3D modes: CTRL+PGUP/PGDOWN will zoom in/out camera (field of view) \n")		wxT("\n")		wxT("*Slide Mode in 2D:\n")		wxT("\tH move: H translate - V move: V translate - V move+CTRL: zoom\n")		wxT("\tleft/right: H translate - up/down: V translate - up/down+CTRL: zoom\n")		wxT("*Examine Mode in 2D (3D renderer only):\n")		wxT("\tH move: Y-Axis rotate - V move: X-Axis rotate\n")		wxT("\tleft/right: Y-Axis rotate - up/down: X-Axis rotate\n")		wxT("\n")		wxT("HOME: reset navigation to last viewpoint (2D or 3D navigation)\n")		wxT("SHIFT key in all modes: fast movement\n")		, wxT("3D navigation keys (\'H\'orizontal and \'V\'ertical) used in GPAC")		, wxOK );	dlg.ShowModal();}/*open file dlg*/class AboutDlg : public wxDialog {public:    AboutDlg(wxWindow *parent);private:    wxStaticText *m_info;    wxButton *m_close;	void OnClose(wxCommandEvent& event);    DECLARE_EVENT_TABLE()};BEGIN_EVENT_TABLE(AboutDlg, wxDialog)    EVT_BUTTON(ID_ABOUT_CLOSE, AboutDlg::OnClose)END_EVENT_TABLE()AboutDlg::AboutDlg(wxWindow *parent)             : wxDialog(parent, -1, wxString(wxT("GPAC/Osmo4 V ")wxT(GPAC_VERSION))){	SetSize(220, 320);	Centre();	wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);	m_info = new wxStaticText(this, -1, wxT("http://gpac.sourceforge.net"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE);	sizer->Add(m_info, 1, wxEXPAND|wxADJUST_MINSIZE, 0);    m_close = new wxButton(this, ID_ABOUT_CLOSE, wxT("Close"), wxDefaultPosition, wxSize(120, 20));	sizer->Add(m_close, 0, wxEXPAND, 0);	SetIcon(wxIcon(osmo4));	m_info->SetLabel(		wxT("Osmo4 Player\n")		wxT("GPAC Multimedia Framework\n")		wxT("\n")		wxT("This program is free software and may\n")		wxT("be distributed according to the terms\n")		wxT("of the GNU Lesser General Public License\n")		wxT("\n")		wxT("Copyright (c) Jean Le Feuvre 2000-2005\n")		wxT("(c) ENST 2005-200X\n")		wxT("All Rights Reserved\n")		wxT("http://gpac.sourceforge.net\n")		wxT("\n")		wxT(" ** With Many Thanks To ** \n\n")		wxT("Mozilla SpiderMonkey (JavaScript)\n")		wxT("The FreeType Project\n")		wxT("The PNG Group, The I.J.G.\n")		wxT("FFMPEG, FAAD, XVID, MAD\n")		);	SetSizer(sizer);	sizer->Fit(this);}void AboutDlg::OnClose(wxCommandEvent& WXUNUSED(event)){	Close(FALSE);}void wxOsmo4Frame::OnAbout(wxCommandEvent & WXUNUSED(event)){	AboutDlg dlg(this);	dlg.ShowModal();}void wxOsmo4Frame::OnGPACEvent(wxGPACEvent &event){	wxString cmd;	wxCommandEvent evt;	if (!m_term) return;	switch (event.gpac_evt.type) {	case GF_EVENT_NAVIGATE:		if (gf_term_is_supported_url(m_term, event.to_url.mb_str(wxConvUTF8), 1, 0)) {			char *str = gf_url_concatenate(m_pPlayList->GetURL().mb_str(wxConvUTF8), event.to_url.mb_str(wxConvUTF8));			if (str) {				m_pPlayList->Truncate();				m_pPlayList->QueueURL(wxString(str, wxConvUTF8));				m_pPlayList->RefreshList();				free(str);				m_pPlayList->PlayNext();			}			return;		} 		cmd = get_pref_browser(m_user.config);		cmd += wxT(" ");		cmd += event.to_url;		wxExecute(cmd);		break;	case GF_EVENT_QUIT:		Close(TRUE);		break;	case GF_EVENT_CONNECT:		BuildStreamList(0);		ConnectAcknowledged(event.gpac_evt.connect.is_connected);		break;	case GF_EVENT_KEYDOWN:		if (!(event.gpac_evt.key.flags & GF_KEY_MOD_CTRL)) return;		switch (event.gpac_evt.key.key_code) {		case GF_KEY_R:			gf_term_set_option(m_term, GF_OPT_REFRESH, 1);			break;		case GF_KEY_P:			OnFilePlay(evt);			break;		case GF_KEY_S:			OnFileStep(evt);			break;		}		break;	case GF_EVENT_SCENE_SIZE:		m_orig_width = event.gpac_evt.size.width;		m_orig_height = event.gpac_evt.size.height;	case GF_EVENT_SIZE:		if (! gf_term_get_option(m_term, GF_OPT_FULLSCREEN)) {			DoLayout(event.gpac_evt.size.width, event.gpac_evt.size.height);		}		break;	case GF_EVENT_VIEWPOINTS:		BuildViewList();		break;	case GF_EVENT_STREAMLIST:		BuildStreamList(0);		break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -