#include "dvd.hpp"
#include "generate_dvd.hpp"
#include "link_iterator.hpp"
+#include "null_prompt_service.hpp"
#include "pixbufs.hpp"
#include "style_sheets.hpp"
#include "temp_file.hpp"
const std::string & main_page_uri,
const std::string & output_dir);
+ bool is_finished() const;
+
private:
dvd_contents::pgc_ref add_menu(const std::string & uri);
dvd_contents::pgc_ref add_title(const std::string & uri);
std::auto_ptr<temp_file> background_temp_;
struct page_state;
std::auto_ptr<page_state> page_state_;
+
+ bool finished_;
};
webdvd_window::webdvd_window(
stylesheet_(load_css("file://" WEBDVD_LIB_DIR "/webdvd.css")),
pending_window_update_(false),
pending_req_count_(0),
- have_tweaked_page_(false)
+ have_tweaked_page_(false),
+ finished_(false)
{
set_size_request(frame_params_.width, frame_params_.height);
set_resizable(false);
load_next_page();
}
+ bool webdvd_window::is_finished() const
+ {
+ return finished_;
+ }
+
dvd_contents::pgc_ref webdvd_window::add_menu(const std::string & uri)
{
dvd_contents::pgc_ref next_menu(dvd_contents::menu_pgc,
try
{
if (!process_page())
+ {
+ finished_ = true;
Gtk::Main::quit();
+ }
}
catch (std::exception & e)
{
} // namespace
+void fatal_error(const std::string & message)
+{
+ std::cerr << "Fatal error: " << message << "\n";
+ Gtk::Main::quit();
+}
+
int main(int argc, char ** argv)
{
try
{
argi += 2;
}
+ else if (std::strcmp(argv[argi], "--save-temps") == 0)
+ {
+ temp_file::keep_all(true);
+ argi += 1;
+ }
else if (argv[argi][0] == '-')
{
std::cerr << "Invalid option: " << argv[argi] << "\n";
// Initialise Mozilla
browser_widget::initialiser browser_init;
set_browser_preferences();
+ if (!preview_mode)
+ null_prompt_service::install();
// Run the browser/converter
webdvd_window window(frame_params, menu_url, output_dir);
Gtk::Main::run(window);
+
+ return ((preview_mode || window.is_finished())
+ ? EXIT_SUCCESS
+ : EXIT_FAILURE);
}
catch (std::exception & e)
{
std::cerr << "Fatal error: " << e.what() << "\n";
return EXIT_FAILURE;
}
-
- return EXIT_SUCCESS;
}