html.cpp 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include <LibCore/CFile.h>
  2. #include <LibGUI/GAboutDialog.h>
  3. #include <LibGUI/GAction.h>
  4. #include <LibGUI/GApplication.h>
  5. #include <LibGUI/GMenu.h>
  6. #include <LibGUI/GMenuBar.h>
  7. #include <LibGUI/GWindow.h>
  8. #include <LibHTML/CSS/StyleResolver.h>
  9. #include <LibHTML/DOM/Element.h>
  10. #include <LibHTML/Dump.h>
  11. #include <LibHTML/HtmlView.h>
  12. #include <LibHTML/Layout/LayoutBlock.h>
  13. #include <LibHTML/Layout/LayoutInline.h>
  14. #include <LibHTML/Layout/LayoutNode.h>
  15. #include <LibHTML/Parser/CSSParser.h>
  16. #include <LibHTML/Parser/HTMLParser.h>
  17. #include <stdio.h>
  18. int main(int argc, char** argv)
  19. {
  20. GApplication app(argc, argv);
  21. auto f = CFile::construct();
  22. bool success;
  23. if (argc < 2) {
  24. success = f->open(STDIN_FILENO, CIODevice::OpenMode::ReadOnly, CFile::ShouldCloseFileDescription::No);
  25. } else {
  26. f->set_filename(argv[1]);
  27. success = f->open(CIODevice::OpenMode::ReadOnly);
  28. }
  29. if (!success) {
  30. fprintf(stderr, "Error: %s\n", f->error_string());
  31. return 1;
  32. }
  33. String html = String::copy(f->read_all());
  34. auto document = parse_html_document(html);
  35. auto window = GWindow::construct();
  36. auto widget = HtmlView::construct();
  37. widget->set_document(document);
  38. if (!widget->document()->title().is_null())
  39. window->set_title(String::format("%s - HTML", widget->document()->title().characters()));
  40. else
  41. window->set_title("HTML");
  42. window->set_main_widget(widget);
  43. window->show();
  44. auto menubar = make<GMenuBar>();
  45. auto app_menu = make<GMenu>("HTML");
  46. app_menu->add_action(GCommonActions::make_quit_action([&](auto&) {
  47. app.quit();
  48. }));
  49. menubar->add_menu(move(app_menu));
  50. auto help_menu = make<GMenu>("Help");
  51. help_menu->add_action(GAction::create("About", [&](const GAction&) {
  52. GAboutDialog::show("HTML", GraphicsBitmap::load_from_file("/res/icons/32x32/filetype-html.png"), window);
  53. }));
  54. menubar->add_menu(move(help_menu));
  55. app.set_menubar(move(menubar));
  56. window->set_icon(GraphicsBitmap::load_from_file("/res/icons/16x16/filetype-html.png"));
  57. return app.exec();
  58. }