void CProject::setLibraryPath(const QString &str) { setLibraryPath(str.split(QRegExp("\\s*:\\s*"), QString::SkipEmptyParts)); emit updated(nameStr); }
void Phantom::init() { if (m_config.helpFlag()) { Terminal::instance()->cout(QString("%1").arg(m_config.helpText())); Terminal::instance()->cout("Any of the options that accept boolean values ('true'/'false') can also accept 'yes'/'no'."); Terminal::instance()->cout(""); Terminal::instance()->cout("Without any argument, PhantomJS will launch in interactive mode (REPL)."); Terminal::instance()->cout(""); Terminal::instance()->cout("Documentation can be found at the web site, http://phantomjs.org."); Terminal::instance()->cout(""); m_terminated = true; return; } if (m_config.versionFlag()) { m_terminated = true; Terminal::instance()->cout(QString("%1").arg(PHANTOMJS_VERSION_STRING)); return; } if (!m_config.unknownOption().isEmpty()) { Terminal::instance()->cerr(m_config.unknownOption()); m_terminated = true; return; } // Initialize the CookieJar m_defaultCookieJar = new CookieJar(m_config.cookiesFile()); QWebSettings::setOfflineWebApplicationCachePath(QStandardPaths::writableLocation(QStandardPaths::DataLocation)); if (m_config.offlineStoragePath().isEmpty()) { QWebSettings::setOfflineStoragePath(QStandardPaths::writableLocation(QStandardPaths::DataLocation)); } else { QWebSettings::setOfflineStoragePath(m_config.offlineStoragePath()); } if (m_config.offlineStorageDefaultQuota() > 0) { QWebSettings::setOfflineStorageDefaultQuota(m_config.offlineStorageDefaultQuota()); } m_page = new WebPage(this, QUrl::fromLocalFile(m_config.scriptFile())); m_page->setCookieJar(m_defaultCookieJar); m_pages.append(m_page); // Set up proxy if required QString proxyType = m_config.proxyType(); if (proxyType != "none") { setProxy(m_config.proxyHost(), m_config.proxyPort(), proxyType, m_config.proxyAuthUser(), m_config.proxyAuthPass()); } // Set output encoding Terminal::instance()->setEncoding(m_config.outputEncoding()); // Set script file encoding m_scriptFileEnc.setEncoding(m_config.scriptEncoding()); connect(m_page, SIGNAL(javaScriptConsoleMessageSent(QString)), SLOT(printConsoleMessage(QString))); connect(m_page, SIGNAL(initialized()), SLOT(onInitialized())); m_defaultPageSettings[PAGE_SETTINGS_LOAD_IMAGES] = QVariant::fromValue(m_config.autoLoadImages()); m_defaultPageSettings[PAGE_SETTINGS_JS_ENABLED] = QVariant::fromValue(true); m_defaultPageSettings[PAGE_SETTINGS_XSS_AUDITING] = QVariant::fromValue(false); m_defaultPageSettings[PAGE_SETTINGS_USER_AGENT] = QVariant::fromValue(m_page->userAgent()); m_defaultPageSettings[PAGE_SETTINGS_LOCAL_ACCESS_REMOTE] = QVariant::fromValue(m_config.localToRemoteUrlAccessEnabled()); m_defaultPageSettings[PAGE_SETTINGS_WEB_SECURITY_ENABLED] = QVariant::fromValue(m_config.webSecurityEnabled()); m_defaultPageSettings[PAGE_SETTINGS_JS_CAN_OPEN_WINDOWS] = QVariant::fromValue(m_config.javascriptCanOpenWindows()); m_defaultPageSettings[PAGE_SETTINGS_JS_CAN_CLOSE_WINDOWS] = QVariant::fromValue(m_config.javascriptCanCloseWindows()); m_page->applySettings(m_defaultPageSettings); setLibraryPath(QFileInfo(m_config.scriptFile()).dir().absolutePath()); }
// public: Phantom::Phantom(QObject *parent) : REPLCompletable(parent) , m_terminated(false) , m_returnValue(0) , m_filesystem(0) , m_system(0) { // second argument: script name QStringList args = QApplication::arguments(); // Skip the first argument, i.e. the application executable (phantomjs). args.removeFirst(); m_config.init(&args); if (m_config.helpFlag()) { m_terminated = true; Utils::showUsage(); return; } if (m_config.versionFlag()) { m_terminated = true; Terminal::instance()->cout(QString("%1").arg(PHANTOMJS_VERSION_STRING)); return; } if (!m_config.unknownOption().isEmpty()) { Terminal::instance()->cerr(m_config.unknownOption()); m_terminated = true; return; } m_page = new WebPage(this, &m_config, QUrl::fromLocalFile(m_config.scriptFile())); m_pages.append(m_page); if (m_config.proxyHost().isEmpty()) { QNetworkProxyFactory::setUseSystemConfiguration(true); } else { QString proxyType = m_config.proxyType(); QNetworkProxy::ProxyType networkProxyType = QNetworkProxy::HttpProxy; if (proxyType == "socks5") { networkProxyType = QNetworkProxy::Socks5Proxy; } if(!m_config.proxyAuthUser().isEmpty() && !m_config.proxyAuthPass().isEmpty()) { QNetworkProxy proxy(networkProxyType, m_config.proxyHost(), m_config.proxyPort(), m_config.proxyAuthUser(), m_config.proxyAuthPass()); QNetworkProxy::setApplicationProxy(proxy); } else { QNetworkProxy proxy(networkProxyType, m_config.proxyHost(), m_config.proxyPort()); QNetworkProxy::setApplicationProxy(proxy); } } // Set output encoding Terminal::instance()->setEncoding(m_config.outputEncoding()); // Set script file encoding m_scriptFileEnc.setEncoding(m_config.scriptEncoding()); connect(m_page, SIGNAL(javaScriptConsoleMessageSent(QString)), SLOT(printConsoleMessage(QString))); connect(m_page, SIGNAL(initialized()), SLOT(onInitialized())); m_defaultPageSettings[PAGE_SETTINGS_LOAD_IMAGES] = QVariant::fromValue(m_config.autoLoadImages()); m_defaultPageSettings[PAGE_SETTINGS_JS_ENABLED] = QVariant::fromValue(true); m_defaultPageSettings[PAGE_SETTINGS_XSS_AUDITING] = QVariant::fromValue(false); m_defaultPageSettings[PAGE_SETTINGS_USER_AGENT] = QVariant::fromValue(m_page->userAgent()); m_defaultPageSettings[PAGE_SETTINGS_LOCAL_ACCESS_REMOTE] = QVariant::fromValue(m_config.localToRemoteUrlAccessEnabled()); m_defaultPageSettings[PAGE_SETTINGS_WEB_SECURITY_ENABLED] = QVariant::fromValue(m_config.webSecurityEnabled()); m_page->applySettings(m_defaultPageSettings); setLibraryPath(QFileInfo(m_config.scriptFile()).dir().absolutePath()); }
// public: Phantom::Phantom(QObject *parent) : QObject(parent) , m_terminated(false) , m_returnValue(0) , m_converter(0) , m_netAccessMan(0) { m_page = new WebPage(this); QString proxyHost; int proxyPort = 1080; bool autoLoadImages = true; bool pluginsEnabled = false; bool diskCacheEnabled = false; bool ignoreSslErrors = false; bool localAccessRemote = false; // second argument: script name QStringList args = QApplication::arguments(); // Skip the first argument, i.e. the application executable (phantomjs). args.removeFirst(); // Handle all command-line options. QStringListIterator argIterator(args); while (argIterator.hasNext()) { const QString &arg = argIterator.next(); if (arg == "--version") { m_terminated = true; std::cout << PHANTOMJS_VERSION_STRING << " (development)" << std::endl; return; } if (arg == "--load-images=yes") { autoLoadImages = true; continue; } if (arg == "--load-images=no") { autoLoadImages = false; continue; } if (arg == "--load-plugins=yes") { pluginsEnabled = true; continue; } if (arg == "--load-plugins=no") { pluginsEnabled = false; continue; } if (arg == "--disk-cache=yes") { diskCacheEnabled = true; continue; } if (arg == "--disk-cache=no") { diskCacheEnabled = false; continue; } if (arg == "--ignore-ssl-errors=yes") { ignoreSslErrors = true; continue; } if (arg == "--ignore-ssl-errors=no") { ignoreSslErrors = false; continue; } if (arg == "--local-access-remote=no") { localAccessRemote = false; continue; } if (arg == "--local-access-remote=yes") { localAccessRemote = true; continue; } if (arg.startsWith("--proxy=")) { proxyHost = arg.mid(8).trimmed(); if (proxyHost.lastIndexOf(':') > 0) { bool ok = true; int port = proxyHost.mid(proxyHost.lastIndexOf(':') + 1).toInt(&ok); if (ok) { proxyHost = proxyHost.left(proxyHost.lastIndexOf(':')).trimmed(); proxyPort = port; } } continue; } if (arg.startsWith("--")) { std::cerr << "Unknown option '" << qPrintable(arg) << "'" << std::endl; m_terminated = true; return; } else { m_scriptFile = arg; break; } } if (m_scriptFile.isEmpty()) { Utils::showUsage(); return; } if (proxyHost.isEmpty()) { QNetworkProxyFactory::setUseSystemConfiguration(true); } else { QNetworkProxy proxy(QNetworkProxy::HttpProxy, proxyHost, proxyPort); QNetworkProxy::setApplicationProxy(proxy); } // The remaining arguments are available for the script. while (argIterator.hasNext()) { const QString &arg = argIterator.next(); m_args += arg; } // Provide WebPage with a non-standard Network Access Manager m_netAccessMan = new NetworkAccessManager(this, diskCacheEnabled, ignoreSslErrors); m_page->setNetworkAccessManager(m_netAccessMan); connect(m_page, SIGNAL(javaScriptConsoleMessageSent(QString, int, QString)), SLOT(printConsoleMessage(QString, int, QString))); m_defaultPageSettings[PAGE_SETTINGS_LOAD_IMAGES] = QVariant::fromValue(autoLoadImages); m_defaultPageSettings[PAGE_SETTINGS_LOAD_PLUGINS] = QVariant::fromValue(pluginsEnabled); m_defaultPageSettings[PAGE_SETTINGS_USER_AGENT] = QVariant::fromValue(m_page->userAgent()); m_defaultPageSettings[PAGE_SETTINGS_LOCAL_ACCESS_REMOTE] = QVariant::fromValue(localAccessRemote); m_page->applySettings(m_defaultPageSettings); setLibraryPath(QFileInfo(m_scriptFile).dir().absolutePath()); m_page->mainFrame()->addToJavaScriptWindowObject("phantom", this); QFile file(":/bootstrap.js"); if (!file.open(QFile::ReadOnly)) { std::cerr << "Can not bootstrap!" << std::endl; exit(1); } QString bootstrapper = QString::fromUtf8(file.readAll()); file.close(); if (bootstrapper.isEmpty()) { std::cerr << "Can not bootstrap!" << std::endl; exit(1); } m_page->mainFrame()->evaluateJavaScript(bootstrapper); }
void Phantom::init() { if (m_config.helpFlag()) { Terminal::instance()->cout(QString("%1").arg(m_config.helpText())); Terminal::instance()->cout("Without any argument, PhantomJS will launch in interactive mode (REPL)."); Terminal::instance()->cout(""); Terminal::instance()->cout("Documentation can be found at the web site, http://phantomjs.org."); Terminal::instance()->cout(""); m_terminated = true; return; } if (m_config.versionFlag()) { m_terminated = true; Terminal::instance()->cout(QString("%1").arg(PHANTOMJS_VERSION_STRING)); return; } if (!m_config.unknownOption().isEmpty()) { Terminal::instance()->cerr(m_config.unknownOption()); m_terminated = true; return; } m_page = new WebPage(this, QUrl::fromLocalFile(m_config.scriptFile())); m_pages.append(m_page); QString proxyType = m_config.proxyType(); if (proxyType != "none") { if (m_config.proxyHost().isEmpty()) { QNetworkProxyFactory::setUseSystemConfiguration(true); } else { QNetworkProxy::ProxyType networkProxyType = QNetworkProxy::HttpProxy; if (proxyType == "socks5") { networkProxyType = QNetworkProxy::Socks5Proxy; } if(!m_config.proxyAuthUser().isEmpty() && !m_config.proxyAuthPass().isEmpty()) { QNetworkProxy proxy(networkProxyType, m_config.proxyHost(), m_config.proxyPort(), m_config.proxyAuthUser(), m_config.proxyAuthPass()); QNetworkProxy::setApplicationProxy(proxy); } else { QNetworkProxy proxy(networkProxyType, m_config.proxyHost(), m_config.proxyPort()); QNetworkProxy::setApplicationProxy(proxy); } } } // Set output encoding Terminal::instance()->setEncoding(m_config.outputEncoding()); // Set script file encoding m_scriptFileEnc.setEncoding(m_config.scriptEncoding()); connect(m_page, SIGNAL(javaScriptConsoleMessageSent(QString)), SLOT(printConsoleMessage(QString))); connect(m_page, SIGNAL(initialized()), SLOT(onInitialized())); m_defaultPageSettings[PAGE_SETTINGS_LOAD_IMAGES] = QVariant::fromValue(m_config.autoLoadImages()); m_defaultPageSettings[PAGE_SETTINGS_JS_ENABLED] = QVariant::fromValue(true); m_defaultPageSettings[PAGE_SETTINGS_XSS_AUDITING] = QVariant::fromValue(false); m_defaultPageSettings[PAGE_SETTINGS_USER_AGENT] = QVariant::fromValue(m_page->userAgent()); m_defaultPageSettings[PAGE_SETTINGS_LOCAL_ACCESS_REMOTE] = QVariant::fromValue(m_config.localToRemoteUrlAccessEnabled()); m_defaultPageSettings[PAGE_SETTINGS_WEB_SECURITY_ENABLED] = QVariant::fromValue(m_config.webSecurityEnabled()); m_defaultPageSettings[PAGE_SETTINGS_JS_CAN_OPEN_WINDOWS] = QVariant::fromValue(m_config.javascriptCanOpenWindows()); m_defaultPageSettings[PAGE_SETTINGS_JS_CAN_CLOSE_WINDOWS] = QVariant::fromValue(m_config.javascriptCanCloseWindows()); m_page->applySettings(m_defaultPageSettings); setLibraryPath(QFileInfo(m_config.scriptFile()).dir().absolutePath()); }
void Application::init_connections(){ CONNECT (player, pause(), listen, pause()); CONNECT (player, search(int), listen, jump(int)); CONNECT (player, sig_volume_changed(int), listen, setVolume(int)); CONNECT (player, sig_rec_button_toggled(bool), listen, record_button_toggled(bool)); CONNECT (player, setupLastFM(), ui_lastfm, show_win()); // IND CONNECT (player, baseDirSelected(const QString &), library, baseDirSelected(const QString & )); CONNECT (player, reloadLibrary(), library, reloadLibrary()); CONNECT (player, importDirectory(QString), library, importDirectory(QString)); CONNECT (player, libpath_changed(QString), library, setLibraryPath(QString)); CONNECT (player, fileSelected(QStringList &), playlist, psl_createPlaylist(QStringList&)); CONNECT (player, play(), playlist, psl_play()); CONNECT (player, stop(), playlist, psl_stop()); CONNECT (player, forward(), playlist, psl_forward()); CONNECT (player, backward(), playlist, psl_backward()); CONNECT (player, sig_stream_selected(const QString&, const QString&), playlist, psl_play_stream(const QString&, const QString&)); CONNECT (player, show_playlists(), ui_playlist_chooser, show()); // IND CONNECT (player, skinChanged(bool), ui_playlist, change_skin(bool)); CONNECT (player, show_small_playlist_items(bool), ui_playlist, psl_show_small_playlist_items(bool)); CONNECT (player, sig_sound_engine_changed(QString&), plugin_loader, psl_switch_engine(QString&)); CONNECT (player, sig_show_stream_rec(bool), ui_stream_rec, psl_show(bool)); // IND CONNECT (player, sig_show_socket(), ui_socket_setup, show()); // IND CONNECT (player, sig_correct_id3(const MetaData&), ui_id3_editor, change_meta_data(const MetaData&)); // IND CONNECT (playlist, sig_selected_file_changed_md(const MetaData&), player, update_track(const MetaData&)); CONNECT (playlist, sig_selected_file_changed_md(const MetaData&), listen, changeTrack(const MetaData & )); CONNECT (playlist, sig_selected_file_changed_md(const MetaData&), lastfm, psl_track_changed(const MetaData&)); CONNECT (playlist, sig_no_track_to_play(), listen, stop()); CONNECT (playlist, sig_goon_playing(), listen, play()); CONNECT (playlist, sig_selected_file_changed(int), ui_playlist, track_changed(int)); CONNECT (playlist, sig_playlist_created(vector<MetaData>&, int), ui_playlist, fillPlaylist(vector<MetaData>&, int)); //CONNECT (&playlist, sig_cur_played_info_changed(const MetaData&), &player, update_info(const MetaData&)); CONNECT (playlist, sig_playlist_prepared(int, vector<MetaData>&), playlists, save_playlist_as_custom(int, vector<MetaData>&)); CONNECT (playlist, sig_playlist_prepared(QString, vector<MetaData>&), playlists, save_playlist_as_custom(QString, vector<MetaData>&)); CONNECT (playlist, sig_library_changed(), ui_library, library_changed()); CONNECT (playlist, sig_import_files(const vector<MetaData>&), library, importFiles(const vector<MetaData>&)); CONNECT (playlist, sig_need_more_radio(), lastfm, psl_radio_playlist_request()); CONNECT (playlist, sig_radio_active(int), player, set_radio_active(int)); CONNECT (playlist, sig_radio_active(int), ui_playlist, set_radio_active(int)); // Can be done inside player CONNECT (playlist, sig_radio_active(int), ui_playlist_chooser, set_radio_active(int)); CONNECT (playlist, sig_data_for_id3_change(const vector<MetaData>&), ui_id3_editor, change_meta_data(const vector<MetaData>&)); // IND CONNECT (ui_playlist, selected_row_changed(int), playlist, psl_change_track(int)); CONNECT (ui_playlist, clear_playlist(), playlist, psl_clear_playlist()); CONNECT (ui_playlist, playlist_mode_changed(const Playlist_Mode&), playlist, psl_playlist_mode_changed(const Playlist_Mode&)); CONNECT (ui_playlist, dropped_tracks(const vector<MetaData>&, int), playlist, psl_insert_tracks(const vector<MetaData>&, int)); CONNECT (ui_playlist, sound_files_dropped(QStringList&), playlist, psl_createPlaylist(QStringList&)); CONNECT (ui_playlist, directory_dropped(const QString&, int), playlist, psl_directoryDropped(const QString &, int )); CONNECT (ui_playlist, rows_removed(const QList<int>&), playlist, psl_remove_rows(const QList<int>&)); CONNECT (ui_playlist, sig_import_to_library(bool), playlist, psl_import_new_tracks_to_library(bool)); CONNECT (listen, track_finished(), playlist, psl_next_track() ); CONNECT (listen, sig_valid_strrec_track(const MetaData&), playlist, psl_valid_strrec_track(const MetaData&)); CONNECT (listen, scrobble_track(const MetaData&), lastfm, psl_scrobble(const MetaData&)); // should be sent to player CONNECT (listen, eq_presets_loaded(const vector<EQ_Setting>&), ui_eq, fill_eq_presets(const vector<EQ_Setting>&)); CONNECT (listen, eq_found(const QStringList&), ui_eq, fill_available_equalizers(const QStringList&)); CONNECT (listen, total_time_changed_signal(qint64), player, total_time_changed(qint64)); CONNECT (listen, timeChangedSignal(quint32), player, setCurrentPosition(quint32) ); CONNECT(library, sig_playlist_created(QStringList&), playlist, psl_createPlaylist(QStringList&)); CONNECT(library, sig_import_result(bool), playlist, psl_import_result(bool)); CONNECT(library, sig_import_result(bool), ui_playlist, import_result(bool)); CONNECT(library, sig_reload_library_finished(), ui_library, reloading_library_finished()); CONNECT(library, sig_reloading_library(QString&), ui_library, reloading_library(QString&)); CONNECT(library, sig_import_result(bool), ui_library, import_result(bool)); CONNECT(library, sig_metadata_loaded(vector<MetaData>&), ui_library, fill_library_tracks(vector<MetaData>&)); CONNECT(library, sig_all_albums_loaded(vector<Album>&), ui_library, fill_library_albums(vector<Album>&)); CONNECT(library, sig_all_artists_loaded(vector<Artist>&), ui_library, fill_library_artists(vector<Artist>&)); CONNECT(library, sig_track_mime_data_available(const vector<MetaData>&), ui_library, track_info_available(const vector<MetaData>&)); CONNECT(library, sig_tracks_for_playlist_available(vector<MetaData>&), playlist, psl_createPlaylist(vector<MetaData>&)); CONNECT(library, sig_import_result(bool), playlists, import_result(bool)); CONNECT(library, sig_delete_answer(QString), ui_library, psl_delete_answer(QString)); CONNECT(library, sig_play_next_tracks(const vector<MetaData>&), playlist, psl_play_next_tracks(const vector<MetaData>&)); if(ui_id3_editor) CONNECT(library, sig_change_id3_tags(const vector<MetaData>&), ui_id3_editor, change_meta_data(const vector<MetaData>&)); // IND CONNECT(ui_library, sig_album_dbl_clicked(), library, psl_prepare_album_for_playlist()); CONNECT(ui_library, sig_artist_dbl_clicked(), library, psl_prepare_artist_for_playlist()); CONNECT(ui_library, sig_track_dbl_clicked(int), library, psl_prepare_track_for_playlist(int)); CONNECT(ui_library, sig_artist_pressed(const QList<int>&), library, psl_selected_artists_changed(const QList<int>&)); CONNECT(ui_library, sig_album_pressed(const QList<int>&), library, psl_selected_albums_changed(const QList<int>&)); CONNECT(ui_library, sig_track_pressed(const QList<int>&), library, psl_selected_tracks_changed(const QList<int>&)); CONNECT(ui_library, sig_filter_changed(const Filter&), library, psl_filter_changed(const Filter&)); CONNECT(ui_library, sig_sortorder_changed(Sort::ArtistSort, Sort::AlbumSort, Sort::TrackSort), library, psl_sortorder_changed(Sort::ArtistSort, Sort::AlbumSort, Sort::TrackSort)); CONNECT(ui_library, sig_show_id3_editor(const QList<int>&), library, psl_change_id3_tags(const QList<int>&)); CONNECT(ui_library, sig_delete_tracks(int), library, psl_delete_tracks(int)); CONNECT(ui_library, sig_delete_certain_tracks(const QList<int>&, int), library, psl_delete_certain_tracks(const QList<int>&, int)); CONNECT(ui_library, sig_play_next_tracks(const QList<int>&), library, psl_play_next_tracks(const QList<int>&)); CONNECT(ui_library, sig_play_next_all_tracks(), library, psl_play_next_all_tracks()); CONNECT(ui_lastfm, sig_activated(bool), player, psl_lfm_activated(bool)); CONNECT(ui_lastfm, sig_activated(bool), ui_playlist, psl_lfm_activated(bool)); CONNECT(ui_lastfm, new_lfm_credentials(QString, QString), lastfm, psl_login(QString, QString)); CONNECT(ui_eq, eq_changed_signal(int, int), listen, eq_changed(int, int)); CONNECT(ui_eq, eq_enabled_signal(bool), listen, eq_enable(bool)); CONNECT(ui_eq, close_event(), player, close_eq()); CONNECT(ui_playlist, edit_id3_signal(), playlist, psl_edit_id3_request()); CONNECT(ui_id3_editor, id3_tags_changed(), ui_library, id3_tags_changed()); CONNECT(ui_id3_editor, id3_tags_changed(vector<MetaData>&), playlist, psl_id3_tags_changed(vector<MetaData>&)); CONNECT(ui_id3_editor, id3_tags_changed(vector<MetaData>&), player, psl_id3_tags_changed(vector<MetaData>&)); CONNECT(lastfm, sig_similar_artists_available(const QList<int>&), playlist, psl_similar_artists_available(const QList<int>&)); CONNECT(lastfm, sig_last_fm_logged_in(bool), ui_playlist, last_fm_logged_in(bool)); CONNECT(lastfm, sig_last_fm_logged_in(bool), player, last_fm_logged_in(bool)); CONNECT(lastfm, sig_new_radio_playlist(const vector<MetaData>&), playlist, psl_new_radio_playlist_available(const vector<MetaData>&)); CONNECT(lastfm, sig_track_info_fetched(const MetaData&, bool, bool), player, lfm_info_fetched(const MetaData&, bool, bool)); CONNECT(ui_playlist_chooser, sig_playlist_chosen(int), playlists, load_single_playlist(int)); CONNECT(ui_playlist_chooser, sig_delete_playlist(int), playlists, delete_playlist(int)); CONNECT(ui_playlist_chooser, sig_save_playlist(int), playlist, psl_prepare_playlist_for_save(int)); CONNECT(ui_playlist_chooser, sig_save_playlist(QString), playlist, psl_prepare_playlist_for_save(QString)); CONNECT(ui_playlist_chooser, sig_clear_playlist(), playlist, psl_clear_playlist()); CONNECT(ui_playlist_chooser, sig_closed(), player, close_playlist_chooser()); CONNECT(playlists, sig_single_playlist_loaded(CustomPlaylist&), playlist, psl_createPlaylist(CustomPlaylist&)); CONNECT(playlists, sig_all_playlists_loaded(QMap<int, QString>&), ui_playlist_chooser, all_playlists_fetched(QMap<int, QString>&)); CONNECT(playlists, sig_import_tracks(const vector<MetaData>&), library, importFiles(const vector<MetaData>&)); CONNECT(ui_lfm_radio, listen_clicked(const QString&, int), lastfm, psl_radio_init(const QString&, int)); CONNECT(ui_lfm_radio, close_event(), player, close_lfm_radio()); CONNECT(ui_stream, sig_play_stream(const QString&, const QString&), playlist, psl_play_stream(const QString&, const QString&)); CONNECT(ui_stream, sig_close_event(), player, close_stream()); CONNECT (ui_stream_rec, sig_stream_recorder_active(bool), listen, psl_strrip_set_active(bool)); CONNECT (ui_stream_rec, sig_stream_recorder_active(bool), player, psl_strrip_set_active(bool)); CONNECT (ui_stream_rec, sig_path_changed(const QString&), listen, psl_strrip_set_path(const QString& )); CONNECT (ui_stream_rec, sig_complete_tracks(bool), listen, psl_strrip_complete_tracks(bool)); CONNECT (ui_stream_rec, sig_create_playlist(bool), listen, psl_strrip_set_create_playlist(bool )); bool is_socket_active = set->getSocketActivated(); if(is_socket_active){ CONNECT (remote_socket, sig_play(), playlist, psl_play()); CONNECT (remote_socket, sig_next(), playlist, psl_forward()); CONNECT (remote_socket, sig_prev(), playlist, psl_backward()); CONNECT (remote_socket, sig_stop(), playlist, psl_stop()); CONNECT (remote_socket, sig_pause(), listen, pause()); CONNECT (remote_socket, sig_setVolume(int),player, setVolume(int)); remote_socket->start(); } }
// public: Phantom::Phantom(QObject *parent) : QObject(parent) , m_terminated(false) , m_returnValue(0) , m_netAccessMan(0) , m_filesystem(0) { // second argument: script name QStringList args = QApplication::arguments(); // Skip the first argument, i.e. the application executable (phantomjs). args.removeFirst(); m_config.init(&args); if (m_config.versionFlag()) { m_terminated = true; Terminal::instance()->cout(QString("%1 (development)").arg(PHANTOMJS_VERSION_STRING)); return; } if (!m_config.unknownOption().isEmpty()) { Terminal::instance()->cerr(m_config.unknownOption()); m_terminated = true; return; } m_page = new WebPage(this); m_pages.append(m_page); if (m_config.scriptFile().isEmpty()) { Utils::showUsage(); return; } if (m_config.proxyHost().isEmpty()) { QNetworkProxyFactory::setUseSystemConfiguration(true); } else { QNetworkProxy proxy(QNetworkProxy::HttpProxy, m_config.proxyHost(), m_config.proxyPort()); QNetworkProxy::setApplicationProxy(proxy); } // Set output encoding Terminal::instance()->setEncoding(m_config.outputEncoding()); // Set script file encoding m_scriptFileEnc.setEncoding(m_config.scriptEncoding()); // Provide WebPage with a non-standard Network Access Manager m_netAccessMan = new NetworkAccessManager(this, m_config.diskCacheEnabled(), m_config.cookieFile(), m_config.ignoreSslErrors(), m_config.authUser(), m_config.authPass(), m_config.maxDiskCacheSize()); m_page->setNetworkAccessManager(m_netAccessMan); connect(m_page, SIGNAL(javaScriptConsoleMessageSent(QString, int, QString)), SLOT(printConsoleMessage(QString, int, QString))); m_defaultPageSettings[PAGE_SETTINGS_LOAD_IMAGES] = QVariant::fromValue(m_config.autoLoadImages()); m_defaultPageSettings[PAGE_SETTINGS_LOAD_PLUGINS] = QVariant::fromValue(m_config.pluginsEnabled()); m_defaultPageSettings[PAGE_SETTINGS_JS_ENABLED] = QVariant::fromValue(true); m_defaultPageSettings[PAGE_SETTINGS_XSS_AUDITING] = QVariant::fromValue(false); m_defaultPageSettings[PAGE_SETTINGS_USER_AGENT] = QVariant::fromValue(m_page->userAgent()); m_defaultPageSettings[PAGE_SETTINGS_LOCAL_ACCESS_REMOTE] = QVariant::fromValue(m_config.localToRemoteUrlAccessEnabled()); m_page->applySettings(m_defaultPageSettings); setLibraryPath(QFileInfo(m_config.scriptFile()).dir().absolutePath()); // Add 'phantom' and 'fs' object to the global scope m_page->mainFrame()->addToJavaScriptWindowObject("phantom", this); // Load all the required JavaScript 'shims' QString jsShims[1] = { ":/bootstrap.js" }; for (int i = 0, len = 1; i < len; ++i) { QFile f(jsShims[i]); f.open(QFile::ReadOnly); //< It's OK to assume this succeed. If it doesn't, we have a bigger problem. m_page->mainFrame()->evaluateJavaScript(QString::fromUtf8(f.readAll())); } }