2 * \file FormErrorList.C
3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
6 * \author Alfredo Braunstein
8 * Full author contact details are available in file CREDITS
14 #include "FormErrorList.h"
16 #include "xforms_helpers.h"
17 #include "ControlErrorList.h"
18 #include "forms/form_errorlist.h"
19 #include "support/lstrings.h" // frontStrip, strip
22 #include "lyx_forms.h"
30 typedef FormController<ControlErrorList, FormView<FD_errorlist> > base_class;
32 FormErrorList::FormErrorList(Dialog & parent)
33 : base_class(parent, _("LaTeX error list"))
37 void FormErrorList::build()
39 dialog_.reset(build_errorlist(this));
41 // Manage the cancel/close button
42 bcview().setCancel(dialog_->button_close);
43 bcview().addReadOnly(dialog_->browser_errors);
47 void FormErrorList::update()
53 ButtonPolicy::SMInput FormErrorList::input(FL_OBJECT * ob, long)
55 std::vector<ControlErrorList::ErrorItem> const &
56 Errors = controller().ErrorList();
58 if (ob == dialog_->browser_errors) {
59 //xforms return values 1..n
60 int const choice = int(fl_get_browser(dialog_->browser_errors)) - 1;
61 if (0 <= choice && choice < int(Errors.size())) {
62 controller().goTo(choice);
63 fl_set_input(dialog_->input_description,
64 Errors[choice].description.c_str());
66 return ButtonPolicy::SMI_VALID;
71 return ButtonPolicy::SMI_VALID;
75 void FormErrorList::updateContents()
77 std::vector<ControlErrorList::ErrorItem> const &
78 Errors = controller().ErrorList();
81 fl_clear_browser(dialog_->browser_errors);
82 fl_add_browser_line(dialog_->browser_errors,
83 _("*** No Lists ***"));
84 setEnabled(dialog_->browser_errors, false);
88 unsigned int const topline =
89 fl_get_browser_topline(dialog_->browser_errors);
90 unsigned int const line = fl_get_browser(dialog_->browser_errors);
92 fl_clear_browser(dialog_->browser_errors);
93 setEnabled(dialog_->browser_errors, true);
95 std::vector<ControlErrorList::ErrorItem>::const_iterator
97 std::vector<ControlErrorList::ErrorItem>::const_iterator
100 for (; cit != end; ++cit) {
101 fl_add_browser_line(dialog_->browser_errors,
105 fl_set_browser_topline(dialog_->browser_errors, topline);
106 fl_select_browser_line(dialog_->browser_errors, line);