last-svn-commit-572-g32f92e4 Add shortcuts in Qt interface.

* demo/viewer/browser_widget.cc: Change arrows icon. * demo/viewer/help_dialog.cc: Add more informations. * demo/viewer/key_widget.cc, * demo/viewer/key_widget.hh: Add setAll(bool). * demo/viewer/viewer.cc, * demo/viewer/viewer.hh: Add shortcuts. --- scribo/ChangeLog | 11 ++++ scribo/demo/viewer/browser_widget.cc | 5 +- scribo/demo/viewer/help_dialog.cc | 13 ++++-- scribo/demo/viewer/key_widget.cc | 15 ++++++- scribo/demo/viewer/key_widget.hh | 3 + scribo/demo/viewer/viewer.cc | 85 +++++++++++++++++++++++----------- scribo/demo/viewer/viewer.hh | 1 + 7 files changed, 99 insertions(+), 34 deletions(-) diff --git a/scribo/ChangeLog b/scribo/ChangeLog index 1417b40..f2160fa 100644 --- a/scribo/ChangeLog +++ b/scribo/ChangeLog @@ -1,3 +1,14 @@ +2010-08-06 Arthur Crepin-Leblond <crepin@lrde.epita.fr> + + Add shortcuts in Qt interface. + + * demo/viewer/browser_widget.cc: Change arrows icon. + * demo/viewer/help_dialog.cc: Add more informations. + * demo/viewer/key_widget.cc, + * demo/viewer/key_widget.hh: Add setAll(bool). + * demo/viewer/viewer.cc, + * demo/viewer/viewer.hh: Add shortcuts. + 2010-08-04 Arthur Crepin-Leblond <crepin@ptaouchnok.lrde.epita.fr> Fix bug in Qt interface. diff --git a/scribo/demo/viewer/browser_widget.cc b/scribo/demo/viewer/browser_widget.cc index b9ccbec..dd0bc1c 100644 --- a/scribo/demo/viewer/browser_widget.cc +++ b/scribo/demo/viewer/browser_widget.cc @@ -33,8 +33,9 @@ BrowserWidget::BrowserWidget(QDirModel* files, QString dir) { QToolButton* next= new QToolButton(); QToolButton* prev= new QToolButton(); - next->setArrowType(Qt::RightArrow); - prev->setArrowType(Qt::LeftArrow); + + prev->setIcon(style()->standardIcon(QStyle::SP_ArrowLeft)); + next->setIcon(style()->standardIcon(QStyle::SP_ArrowRight)); QLabel* title = new QLabel(tr("Images")); title->setAlignment(Qt::AlignHCenter); diff --git a/scribo/demo/viewer/help_dialog.cc b/scribo/demo/viewer/help_dialog.cc index 932d66f..836413a 100644 --- a/scribo/demo/viewer/help_dialog.cc +++ b/scribo/demo/viewer/help_dialog.cc @@ -40,10 +40,15 @@ HelpDialog::HelpDialog() "Document layout viewer:\n" "\n" "Usage:\n" - " - Choose an image file in the file browser\n" - " - If the document layout is present\n" - " (XML file with the same name),\n" - " select regions to display their properties.\n" + " - Choose an image file in the file browser,\n" + "if XML file(s) whose prefix name is the same as\n" + "the image name (i.e.image _name(_ .*)?.xml) is present\n" + "then you can choose the one you want in the step\n" + "chooser to display it on the scene.\n" + "- To load a base 64 encoded XML file,\n" + "its extension has to be .xmlc otherwise \n" + "the program won't recognize it !\n" + " - Select regions to display their properties.\n" " - Use the mouse or keyboard to move and zoom\n" " (Arrows, PageUp, PageDown, Home, End).\n" "\n"); diff --git a/scribo/demo/viewer/key_widget.cc b/scribo/demo/viewer/key_widget.cc index 228ad67..f567992 100644 --- a/scribo/demo/viewer/key_widget.cc +++ b/scribo/demo/viewer/key_widget.cc @@ -39,9 +39,10 @@ KeyWidget::KeyWidget(const region::KeyMap& key_map) items_->setHeaderHidden(true); text_->setCheckState(0, Qt::Checked); + text_->setExpanded(true); + regions_->setCheckState(0, Qt::Checked); regions_->setExpanded(true); - text_->setExpanded(true); for (int i = 0; i < 3; ++i) add_item_(key_map.at(i).first, key_map.at(i).second, @@ -70,6 +71,18 @@ void KeyWidget::update_all() update(regions_->child(i)); } +void KeyWidget::setAll(bool b) +{ + Qt::CheckState state; + if (b) + state = Qt::Checked; + else + state = Qt::Unchecked; + + text_->setCheckState(0, state); + regions_->setCheckState(0, state); +} + void KeyWidget::setAllCheck(QTreeWidgetItem* parent) { for (int i = 0; i < parent->childCount(); ++i) diff --git a/scribo/demo/viewer/key_widget.hh b/scribo/demo/viewer/key_widget.hh index 113835d..d261ec6 100644 --- a/scribo/demo/viewer/key_widget.hh +++ b/scribo/demo/viewer/key_widget.hh @@ -45,6 +45,9 @@ public: signals: void updated(int key, bool checked); +public slots: + void setAll(bool b); + private slots: void change_mode(bool b); void update(QTreeWidgetItem* item); diff --git a/scribo/demo/viewer/viewer.cc b/scribo/demo/viewer/viewer.cc index 38ca8b1..41434ba 100644 --- a/scribo/demo/viewer/viewer.cc +++ b/scribo/demo/viewer/viewer.cc @@ -87,74 +87,94 @@ Viewer::Viewer(int &argc, char** argv) win_->statusBar(); QMenu* file_menu = win_->menuBar()->addMenu(tr("File")); - QAction* quit_action = new QAction(tr("Quit"), file_menu); + QMenu* option_menu = win_->menuBar()->addMenu(tr("Options")); + QMenu* help_menu = win_->menuBar()->addMenu(tr("Help")); + + QAction* quit_action = create_action("Quit", file_menu, + "Exit the program.", "Ctrl+q"); connect(quit_action, SIGNAL(triggered()), app_, SLOT(quit())); - quit_action->setStatusTip(tr("Exit the program.")); file_menu->addAction(quit_action); - QMenu* option_menu = win_->menuBar()->addMenu(tr("Options")); - outline_action_ = new QAction(tr("Draw outline"), option_menu); - outline_action_->setStatusTip(tr("Draw region outlines.")); + outline_action_ = create_action("Draw outline", option_menu, + "Draw region outlines.", "Ctrl+o"); outline_action_->setCheckable(true); outline_action_->setChecked(true); connect(outline_action_, SIGNAL(toggled(bool)), this, SIGNAL(setOutline(bool))); option_menu->addAction(outline_action_); - precise_action_ = new QAction(tr("Precise outline"), option_menu); - precise_action_->setStatusTip(tr("1px outline relative to the image " - "(1px relative to the view if off).")); + + precise_action_ = create_action("Precise outline", option_menu, + "1px outline relative to the image " + "(1px relative to the view if off).", + "Ctrl+p"); precise_action_->setCheckable(true); precise_action_->setChecked(false); connect(precise_action_, SIGNAL(toggled(bool)), this, SIGNAL(setPrecise(bool))); option_menu->addAction(precise_action_); - fill_action_ = new QAction(tr("Fill regions"), option_menu); - fill_action_->setStatusTip(tr("Color the inside of regions.")); + + fill_action_ = create_action("Fill regions", option_menu, + "Color the inside of regions.", "Ctrl+f"); fill_action_->setCheckable(true); fill_action_->setChecked(true); connect(fill_action_, SIGNAL(toggled(bool)), this, SIGNAL(setFill(bool))); option_menu->addAction(fill_action_); - QAction* cache_action = new QAction(tr("Disable cache"), file_menu); - cache_action->setStatusTip(tr("Disable the image cache (useful for" - " large images).")); + QAction* cache_action = create_action("Disable cache", option_menu, + "Disable the image cache (useful for" + " large images).", "Ctrl+c"); cache_action->setCheckable(true); cache_action->setChecked(false); connect(cache_action, SIGNAL(toggled(bool)), this, SLOT(useCache(bool))); option_menu->addAction(cache_action); - QAction* extended_action = new QAction(tr("Extended mode"), file_menu); - extended_action->setStatusTip(tr("If enabled, some features not supported by ICDAR" - " are added such as text regions or text lines")); + + QAction* extended_action = create_action("Extended mode", option_menu, + "If enabled, some features " + "not supported by ICDAR" + " are added such as text regions" + "or text lines", "Ctrl+e"); extended_action->setCheckable(true); extended_action->setChecked(false); connect(extended_action, SIGNAL(toggled(bool)), this, SLOT(useExtended(bool))); option_menu->addAction(extended_action); - QAction* show_image_action = new QAction(tr("Show pictures"), file_menu); - //show_image_action->setStatusTip(tr("")); - + QAction* show_image_action = create_action("Show pictures", option_menu, + "Display pictures on the scene or not", + "Ctrl+i"); show_image_action->setCheckable(true); show_image_action->setChecked(true); connect(show_image_action, SIGNAL(toggled(bool)), this, SLOT(useImage(bool))); option_menu->addAction(show_image_action); - QAction* show_text_action = new QAction(tr("Show text"), file_menu); - show_text_action->setStatusTip(tr("Show detected text inside boxes.")); + QAction* show_text_action = create_action("Show text", option_menu, + "Show detected text inside boxes.", + "Ctrl+t"); show_text_action->setCheckable(true); show_text_action->setChecked(true); connect(show_text_action, SIGNAL(toggled(bool)), this, SLOT(useText(bool))); option_menu->addAction(show_text_action); - QMenu* help_menu = win_->menuBar()->addMenu(tr("Help")); - QAction* about_action = new QAction(tr("About"), help_menu); - about_action->setStatusTip(tr("About this program.")); + key_wgt_ = new KeyWidget(key_map_); + QAction *show_region_action = create_action("Show regions", option_menu, + "Display regions that are present in" + " the XML file.", + "Ctrl+r"); + show_region_action->setCheckable(true); + show_region_action->setChecked(true); + connect(show_region_action, SIGNAL(toggled(bool)), + key_wgt_, SLOT(setAll(bool))); + option_menu->addAction(show_region_action); + + QAction* about_action = create_action("About", help_menu, + "About this program", + "Ctrl+h"); connect(about_action, SIGNAL(triggered()), this, SLOT(help())); help_menu->addAction(about_action); @@ -167,7 +187,6 @@ Viewer::Viewer(int &argc, char** argv) XmlWidget* xml_wgt = new XmlWidget(); BrowserWidget* browser_wgt = new BrowserWidget(files_, argc != 2 ? QString() : argv[1]); - key_wgt_ = new KeyWidget(key_map_); ImageWidget* image_wgt = new ImageWidget(scene_); scene_->setBackgroundBrush(scene_->palette().window()); @@ -276,6 +295,7 @@ Viewer::add_text(QDomNode line, QDomNode region) QGraphicsTextItem* text_item = scene_->addText(text, font); text_item->setPos(x_min, y_min); text_item->setTextInteractionFlags(Qt::TextSelectableByMouse); + text_item->setZValue(5); text_vector_ << text_item; if (!text_) scene_->removeItem(text_item); @@ -441,8 +461,8 @@ Viewer::load_xml(QString filename) } } - if ((extended_mode_ || text_) && - region.toElement().tagName().contains("text_region")) + // if ((extended_mode_ || text_) && + if (region.toElement().tagName().contains("text_region")) { QDomNode para = region.firstChild(); while (!para.isNull() && !para.toElement().tagName().contains("paragraph")) @@ -656,3 +676,14 @@ Viewer::change_base(bool b) { base64_ = b; } + + +QAction +*Viewer::create_action(QString name, QMenu *menu, QString status, QString shortcut) +{ + QAction* action = new QAction(name, menu); + action->setStatusTip(status); + action->setShortcut(QKeySequence(shortcut)); + + return (action); +} diff --git a/scribo/demo/viewer/viewer.hh b/scribo/demo/viewer/viewer.hh index b1f406d..30e01bb 100644 --- a/scribo/demo/viewer/viewer.hh +++ b/scribo/demo/viewer/viewer.hh @@ -77,6 +77,7 @@ private: QPixmap load_base64(QString xml); void add_region(QDomNode father, QString attr_id); void add_text(QDomNode line, QDomNode region); + QAction *create_action(QString name, QMenu* menu, QString status, QString shortcut); QApplication* app_; QMainWindow* win_; -- 1.5.6.5
participants (1)
-
Arthur Crepin-Leblond