diff options
author | Maia Kozheva <sikon@ubuntu.com> | 2010-05-09 21:22:23 +0700 |
---|---|---|
committer | Maia Kozheva <sikon@ubuntu.com> | 2010-05-09 21:22:23 +0700 |
commit | 99b53d44a60e3e934fc664152c115ae0d6e19920 (patch) | |
tree | e38698c486f6b4044125fa0d0bf33475d92e8f3a /src/basegui.cpp | |
parent | 263b32f108c15cd1c55a8f4eb4704fac6553f1ac (diff) |
Imported Upstream version 0.6.9
Diffstat (limited to 'src/basegui.cpp')
-rw-r--r-- | src/basegui.cpp | 184 |
1 files changed, 130 insertions, 54 deletions
diff --git a/src/basegui.cpp b/src/basegui.cpp index b93d41f..58deb36 100644 --- a/src/basegui.cpp +++ b/src/basegui.cpp @@ -1,5 +1,5 @@ /* smplayer, GUI front-end for mplayer. - Copyright (C) 2006-2009 Ricardo Villalba <rvm@escomposlinux.org> + Copyright (C) 2006-2010 Ricardo Villalba <rvm@escomposlinux.org> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -109,6 +109,9 @@ BaseGui::BaseGui( QWidget* parent, Qt::WindowFlags flags ) #endif ignore_show_hide_events = false; + arg_close_on_finish = -1; + arg_start_in_fullscreen = -1; + setWindowTitle( "SMPlayer" ); // Not created objects @@ -180,7 +183,6 @@ BaseGui::BaseGui( QWidget* parent, Qt::WindowFlags flags ) void BaseGui::initializeGui() { if (pref->compact_mode) toggleCompactMode(TRUE); changeStayOnTop(pref->stay_on_top); - toggleFrameCounter( pref->show_frame_counter ); #if ALLOW_CHANGE_STYLESHEET changeStyleSheet(pref->iconset); @@ -410,6 +412,18 @@ void BaseGui::createActions() { connect( forward3Act, SIGNAL(triggered()), core, SLOT(fastforward()) ); + setAMarkerAct = new MyAction( this, "set_a_marker" ); + connect( setAMarkerAct, SIGNAL(triggered()), + core, SLOT(setAMarker()) ); + + setBMarkerAct = new MyAction( this, "set_b_marker" ); + connect( setBMarkerAct, SIGNAL(triggered()), + core, SLOT(setBMarker()) ); + + clearABMarkersAct = new MyAction( this, "clear_ab_markers" ); + connect( clearABMarkersAct, SIGNAL(triggered()), + core, SLOT(clearABMarkers()) ); + repeatAct = new MyAction( this, "repeat" ); repeatAct->setCheckable( true ); connect( repeatAct, SIGNAL(toggled(bool)), @@ -686,11 +700,6 @@ void BaseGui::createActions() { connect( showPropertiesAct, SIGNAL(triggered()), this, SLOT(showFilePropertiesDialog()) ); - frameCounterAct = new MyAction( this, "frame_counter" ); - frameCounterAct->setCheckable( true ); - connect( frameCounterAct, SIGNAL(toggled(bool)), - this, SLOT(toggleFrameCounter(bool)) ); - showPreferencesAct = new MyAction( QKeySequence("Ctrl+P"), this, "show_preferences" ); connect( showPreferencesAct, SIGNAL(triggered()), this, SLOT(showPreferencesDialog()) ); @@ -747,22 +756,30 @@ void BaseGui::createActions() { connect( moveRightAct, SIGNAL(triggered()), mplayerwindow, SLOT(moveRight()) ); incZoomAct = new MyAction(Qt::Key_E, this, "inc_zoom"); - connect( incZoomAct, SIGNAL(triggered()), core, SLOT(incPanscan()) ); + connect( incZoomAct, SIGNAL(triggered()), core, SLOT(incZoom()) ); decZoomAct = new MyAction(Qt::Key_W, this, "dec_zoom"); - connect( decZoomAct, SIGNAL(triggered()), core, SLOT(decPanscan()) ); + connect( decZoomAct, SIGNAL(triggered()), core, SLOT(decZoom()) ); resetZoomAct = new MyAction(Qt::SHIFT | Qt::Key_E, this, "reset_zoom"); - connect( resetZoomAct, SIGNAL(triggered()), core, SLOT(resetPanscan()) ); + connect( resetZoomAct, SIGNAL(triggered()), core, SLOT(resetZoom()) ); autoZoomAct = new MyAction(Qt::SHIFT | Qt::Key_W, this, "auto_zoom"); - connect( autoZoomAct, SIGNAL(triggered()), core, SLOT(autoPanscan()) ); + connect( autoZoomAct, SIGNAL(triggered()), core, SLOT(autoZoom()) ); autoZoom169Act = new MyAction(Qt::SHIFT | Qt::Key_A, this, "zoom_169"); - connect( autoZoom169Act, SIGNAL(triggered()), core, SLOT(autoPanscanFor169()) ); + connect( autoZoom169Act, SIGNAL(triggered()), core, SLOT(autoZoomFor169()) ); autoZoom235Act = new MyAction(Qt::SHIFT | Qt::Key_S, this, "zoom_235"); - connect( autoZoom235Act, SIGNAL(triggered()), core, SLOT(autoPanscanFor235()) ); + connect( autoZoom235Act, SIGNAL(triggered()), core, SLOT(autoZoomFor235()) ); + +#if USE_MPLAYER_PANSCAN + incPanscanAct = new MyAction(Qt::SHIFT | Qt::Key_M, this, "inc_panscan"); + connect( incPanscanAct, SIGNAL(triggered()), core, SLOT(incPanscan()) ); + + decPanscanAct = new MyAction(Qt::SHIFT | Qt::Key_N, this, "dec_panscan"); + connect( decPanscanAct, SIGNAL(triggered()), core, SLOT(decPanscan()) ); +#endif // Actions not in menus or buttons @@ -847,6 +864,13 @@ void BaseGui::createActions() { connect( nextWheelFunctionAct, SIGNAL(triggered()), core, SLOT(nextWheelFunction()) ); + showFilenameAct = new MyAction(Qt::SHIFT | Qt::Key_I, this, "show_filename"); + connect( showFilenameAct, SIGNAL(triggered()), core, SLOT(showFilenameOnOSD()) ); + + toggleDeinterlaceAct = new MyAction(Qt::Key_D, this, "toggle_deinterlacing"); + connect( toggleDeinterlaceAct, SIGNAL(triggered()), core, SLOT(toggleDeinterlace()) ); + + // Group actions // OSD @@ -1251,6 +1275,29 @@ void BaseGui::enableActionsOnPlaying() { screenGroup->setActionsEnabled(pref->vo.startsWith(OVERLAY_VO)); #endif +#ifndef Q_OS_WIN + // Disable video filters if using vdpau + if ((pref->disable_video_filters_with_vdpau) && (pref->vo.startsWith("vdpau"))) { + screenshotAct->setEnabled(false); + screenshotsAct->setEnabled(false); + flipAct->setEnabled(false); + mirrorAct->setEnabled(false); + postProcessingAct->setEnabled(false); + phaseAct->setEnabled(false); + deblockAct->setEnabled(false); + deringAct->setEnabled(false); + addNoiseAct->setEnabled(false); + addLetterboxAct->setEnabled(false); + upscaleAct->setEnabled(false); + + deinterlaceGroup->setActionsEnabled(false); + rotateGroup->setActionsEnabled(false); + denoiseGroup->setActionsEnabled(false); + + displayMessage( tr("Video filters are disabled when using vdpau") ); + } +#endif + #if DVDNAV_SUPPORT if (!core->mdat.filename.startsWith("dvdnav:")) { dvdnavUpAct->setEnabled(false); @@ -1332,7 +1379,12 @@ void BaseGui::retranslateStrings() { setJumpTexts(); // Texts for rewind*Act and forward*Act + // Submenu A-B + setAMarkerAct->change( Images::icon("a_marker"), tr("Set &A marker") ); + setBMarkerAct->change( Images::icon("b_marker"), tr("Set &B marker") ); + clearABMarkersAct->change( Images::icon("clear_markers"), tr("&Clear A-B markers") ); repeatAct->change( Images::icon("repeat"), tr("&Repeat") ); + gotoAct->change( Images::icon("jumpto"), tr("&Jump to...") ); // Submenu speed @@ -1353,7 +1405,7 @@ void BaseGui::retranslateStrings() { screenshotAct->change( Images::icon("screenshot"), tr("&Screenshot") ); screenshotsAct->change( Images::icon("screenshots"), tr("Start/stop takin&g screenshots") ); videoPreviewAct->change( Images::icon("video_preview"), tr("Pre&view...") ); - flipAct->change( Images::icon("flip"), tr("Flip i&mage") ); + flipAct->change( Images::icon("flip"), tr("Fli&p image") ); mirrorAct->change( Images::icon("mirror"), tr("Mirr&or image") ); motionVectorsAct->change( Images::icon("motion_vectors"), tr("Visualize &motion vectors") ); @@ -1369,6 +1421,11 @@ void BaseGui::retranslateStrings() { moveUpAct->change( tr("Move &up") ); moveDownAct->change( tr("Move &down") ); +#if USE_MPLAYER_PANSCAN + decPanscanAct->change( "Panscan -" ); + incPanscanAct->change( "Panscan +" ); +#endif + // Submenu Filters postProcessingAct->change( tr("&Postprocessing") ); phaseAct->change( tr("&Autodetect phase") ); @@ -1422,8 +1479,6 @@ void BaseGui::retranslateStrings() { // Menu Options showPlaylistAct->change( Images::icon("playlist"), tr("&Playlist") ); showPropertiesAct->change( Images::icon("info"), tr("View &info and properties...") ); - frameCounterAct->change( Images::icon("frame_counter"), - tr("&Show frame counter") ); showPreferencesAct->change( Images::icon("prefs"), tr("P&references") ); // Submenu Logs @@ -1482,6 +1537,9 @@ void BaseGui::retranslateStrings() { nextAspectAct->change( Images::icon("next_aspect"), tr("Next aspect ratio") ); nextWheelFunctionAct->change( Images::icon("next_wheel_function"), tr("Next wheel function") ); + showFilenameAct->change( tr("Show filename on OSD") ); + toggleDeinterlaceAct->change( tr("Toggle deinterlacing") ); + // Action groups osdNoneAct->change( tr("Subtitles onl&y") ); @@ -1526,6 +1584,9 @@ void BaseGui::retranslateStrings() { speed_menu->menuAction()->setText( tr("Sp&eed") ); speed_menu->menuAction()->setIcon( Images::icon("speed") ); + ab_menu->menuAction()->setText( tr("&A-B section") ); + ab_menu->menuAction()->setIcon( Images::icon("ab_menu") ); + // Menu Video videotrack_menu->menuAction()->setText( tr("&Track", "video") ); videotrack_menu->menuAction()->setIcon( Images::icon("video_track") ); @@ -1533,8 +1594,12 @@ void BaseGui::retranslateStrings() { videosize_menu->menuAction()->setText( tr("Si&ze") ); videosize_menu->menuAction()->setIcon( Images::icon("video_size") ); + /* panscan_menu->menuAction()->setText( tr("&Pan && scan") ); panscan_menu->menuAction()->setIcon( Images::icon("panscan") ); + */ + zoom_menu->menuAction()->setText( tr("Zoo&m") ); + zoom_menu->menuAction()->setIcon( Images::icon("zoom") ); aspect_menu->menuAction()->setText( tr("&Aspect ratio") ); aspect_menu->menuAction()->setIcon( Images::icon("aspect") ); @@ -1724,6 +1789,9 @@ void BaseGui::createCore() { connect( core, SIGNAL(showFrame(int)), this, SIGNAL(frameChanged(int)) ); + connect( core, SIGNAL(ABMarkersChanged(int,int)), + this, SIGNAL(ABMarkersChanged(int,int)) ); + connect( core, SIGNAL(showTime(double)), this, SLOT(gotCurrentTime(double)) ); @@ -1991,7 +2059,18 @@ void BaseGui::createMenus() { playMenu->addMenu(speed_menu); - playMenu->addAction(repeatAct); + // A-B submenu + ab_menu = new QMenu(this); + ab_menu->menuAction()->setObjectName("ab_menu"); + ab_menu->addAction(setAMarkerAct); + ab_menu->addAction(setBMarkerAct); + ab_menu->addAction(clearABMarkersAct); + ab_menu->addSeparator(); + ab_menu->addAction(repeatAct); + + playMenu->addSeparator(); + playMenu->addMenu(ab_menu); + playMenu->addSeparator(); playMenu->addAction(gotoAct); playMenu->addSeparator(); @@ -2023,24 +2102,24 @@ void BaseGui::createMenus() { videosize_menu->addAction(doubleSizeAct); videoMenu->addMenu(videosize_menu); - // Panscan submenu - panscan_menu = new QMenu(this); - panscan_menu->menuAction()->setObjectName("panscan_menu"); - panscan_menu->addAction(resetZoomAct); - panscan_menu->addSeparator(); - panscan_menu->addAction(autoZoomAct); - panscan_menu->addAction(autoZoom169Act); - panscan_menu->addAction(autoZoom235Act); - panscan_menu->addSeparator(); - panscan_menu->addAction(decZoomAct); - panscan_menu->addAction(incZoomAct); - panscan_menu->addSeparator(); - panscan_menu->addAction(moveLeftAct); - panscan_menu->addAction(moveRightAct); - panscan_menu->addAction(moveUpAct); - panscan_menu->addAction(moveDownAct); - - videoMenu->addMenu(panscan_menu); + // Zoom submenu + zoom_menu = new QMenu(this); + zoom_menu->menuAction()->setObjectName("zoom_menu"); + zoom_menu->addAction(resetZoomAct); + zoom_menu->addSeparator(); + zoom_menu->addAction(autoZoomAct); + zoom_menu->addAction(autoZoom169Act); + zoom_menu->addAction(autoZoom235Act); + zoom_menu->addSeparator(); + zoom_menu->addAction(decZoomAct); + zoom_menu->addAction(incZoomAct); + zoom_menu->addSeparator(); + zoom_menu->addAction(moveLeftAct); + zoom_menu->addAction(moveRightAct); + zoom_menu->addAction(moveUpAct); + zoom_menu->addAction(moveDownAct); + + videoMenu->addMenu(zoom_menu); // Aspect submenu aspect_menu = new QMenu(this); @@ -2222,7 +2301,6 @@ void BaseGui::createMenus() { // OPTIONS MENU optionsMenu->addAction(showPropertiesAct); optionsMenu->addAction(showPlaylistAct); - optionsMenu->addAction(frameCounterAct); // OSD submenu osd_menu = new QMenu(this); @@ -2569,6 +2647,8 @@ void BaseGui::updateMediaInfo() { } setWindowCaption( core->mdat.displayName() + " - SMPlayer" ); + + emit videoInfoChanged(core->mdat.video_width, core->mdat.video_height, core->mdat.video_fps.toDouble()); } void BaseGui::newMediaLoaded() { @@ -2977,7 +3057,7 @@ void BaseGui::updateWidgets() { volnormAct->setChecked( core->mset.volnorm_filter ); // Repeat menu option - repeatAct->setChecked( pref->loop ); + repeatAct->setChecked( core->mset.loop ); // Fullscreen action fullscreenAct->setChecked( pref->fullscreen ); @@ -3003,9 +3083,6 @@ void BaseGui::updateWidgets() { showPlaylistAct->setChecked( playlist->isVisible() ); #endif - // Frame counter - frameCounterAct->setChecked( pref->show_frame_counter ); - // Motion vectors motionVectorsAct->setChecked( pref->show_motion_vectors ); @@ -3436,7 +3513,7 @@ void BaseGui::helpCLOptions() { } void BaseGui::helpTips() { - QDesktopServices::openUrl( QUrl("http://smplayer.wiki.sourceforge.net/Tips") ); + QDesktopServices::openUrl( QUrl("http://smplayer.berlios.de/forum/viewforum.php?f=12") ); } void BaseGui::helpAbout() { @@ -3577,15 +3654,6 @@ void BaseGui::aboutToExitFullscreen() { } } -void BaseGui::toggleFrameCounter() { - toggleFrameCounter( !pref->show_frame_counter ); -} - -void BaseGui::toggleFrameCounter(bool b) { - pref->show_frame_counter = b; - updateWidgets(); -} - void BaseGui::leftClickFunction() { qDebug("BaseGui::leftClickFunction"); @@ -3878,8 +3946,12 @@ void BaseGui::wheelEvent( QWheelEvent * e ) { // Called when a video has started to play void BaseGui::enterFullscreenOnPlay() { - if ( (pref->start_in_fullscreen) && (!pref->fullscreen) ) { - toggleFullscreen(TRUE); + qDebug("BaseGui::enterFullscreenOnPlay: arg_start_in_fullscreen: %d, pref->start_in_fullscreen: %d", arg_start_in_fullscreen, pref->start_in_fullscreen); + + if (arg_start_in_fullscreen != 0) { + if ( (arg_start_in_fullscreen == 1) || (pref->start_in_fullscreen) ) { + if (!pref->fullscreen) toggleFullscreen(TRUE); + } } } @@ -3894,7 +3966,11 @@ void BaseGui::playlistHasFinished() { qDebug("BaseGui::playlistHasFinished"); exitFullscreenOnStop(); - if (pref->close_on_finish) exitAct->trigger(); + qDebug("BaseGui::playlistHasFinished: arg_close_on_finish: %d, pref->close_on_finish: %d", arg_close_on_finish, pref->close_on_finish); + + if (arg_close_on_finish != 0) { + if ((arg_close_on_finish == 1) || (pref->close_on_finish)) exitAct->trigger(); + } } void BaseGui::displayState(Core::State state) { @@ -4033,7 +4109,7 @@ void BaseGui::displayGotoTime(int t) { statusBar()->showMessage( s, 1000 ); if (pref->fullscreen) { - core->tellmp("osd_show_text \"" + s + "\" 3000 1"); + core->displayTextOnOSD( s ); } } |