Mercurial > hg > octave-lyh
view libgui/src/symbol-information.cc @ 16431:5982d469f79b
use signal for setting, appending to, and clearing history widget
* history-dockwidget.h, history-dockwidget.cc
(history_dock_widget::request_history_model_update,
history_dock_widget::reset_model,
history_dock_widget::update_history_callback): Delete.
(history_dock_widget::set_history,
history_dock_widget::append_history,
history_dock_widget::clear_history): New functions.
* main-window.h, main-window.cc (main_window::update_history): Delete.
(main_window::construct): Delete connection from
_octave_qt_event_listener::update_history_signal to
main_window::update_history.
Connect _octave_qt_link::set_history_signal to
_history_dock_widget::set_history.
Connect _octave_qt_link::append_history_signal to
_history_dock_widget::append_history.
Connect _octave_qt_link::clear_history_signal to
_history_dock_widget::clear_history.
(main_window::clear_history_callback): Call Fhistory instead of
command_history::clear and _history_dock_widget->reset_model.
* octave-main-thread.cc (octave_main_thread::run): Don't call
octave_link::update_history.
* octave-qt-event-listener.h, octave-qt-event-listener.cc
(octave_qt_event_listener::update_history): Delete.
(octave_qt_event_listener::update_history_signal): Delete.
* octave-qt-link.h, octave-qt-link.cc
(octave_qt_link::do_update_history): Delete.
(octave_qt_link::do_set_history,octave_qt_link::do_append_history,
octave_qt_link::do_clear_history): New functions.
(octave_qt_link::do_post_input_event): Don't call do_update_history.
(set_history_signal, append_history_signal, clear_history_signal):
New signals.
* octave-event-listener.h (octave_event_listener::update_history):
Delete.
* input.cc (octave_base_reader::octave_gets): Call command_history::add.
* oct-hist.cc (do_history): New option, -c. Call octave_link history
functions as needed.
(initialize_history): Call octave_link::set_history.
(octave_history_write_timestamp): Call octave_link::append_history.
(Fedit_history): Document -c.
* octave-link.h (octave_link::update_history,
octave_link::do_update_history): Delete.
(octave_link::set_history, octave_link::append_history,
octave_link::clear_history, octave_link::do_set_history,
octave_link::do_append_history, octave_link::do_clear_history,
octave_link::do_pre_input_event, octave_link::do_post_input_event):
New functions.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 04 Apr 2013 13:20:43 -0400 |
parents | e77cd781eeef |
children |
line wrap: on
line source
/* Copyright (C) 2011-2012 Jacob Dawid This file is part of Octave. Octave is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. Octave is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Octave; see the file COPYING. If not, see <http://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H #include <config.h> #endif #include <QString> #include "ov.h" #include "symtab.h" #include "symbol-information.h" symbol_information::symbol_information (const symbol_table::symbol_record& sr) { if (sr.is_local () && !sr.is_global () && !sr.is_hidden ()) _scope = local; else if (sr.is_global ()) _scope = global; else if (sr.is_persistent ()) _scope = persistent; else _scope = unknown; _symbol = QString (sr.name ().c_str ()); _class_name = QString (sr.varval ().class_name ().c_str ()); octave_value ov = sr.varval (); dim_vector dv = ov.dims (); // In case we have really large matrices or strings, cut them down // for performance reasons. QString short_value_string; bool use_short_value_string = false; if (ov.is_range ()) { use_short_value_string = true; Range r = ov.range_value (); double base = r.base (); double increment = r.inc (); double limit = r.limit (); std::stringstream buffer; buffer << base << ":"; if (increment != 1 ) buffer << increment << ":"; buffer << limit; short_value_string = QString::fromStdString (buffer.str ()); } else if (ov.is_matrix_type () || ov.is_cell ()) { if (ov.is_string ()) // a string? { if (ov.string_value ().length () > 30) { use_short_value_string = true; short_value_string = QString ("\"") + QString::fromStdString (ov.string_value ().substr (0, 30)) + QString (" ... \""); } } else // arrays and cell arrays { if (ov.numel () > 10) { use_short_value_string = true; short_value_string = QString("..."); // TODO: what kind of short version can be printed for arrays? } } } if (use_short_value_string) { _value = short_value_string; } else { std::stringstream buffer; ov.print (buffer, true); _value = QString::fromStdString (buffer.str ()); } _value.replace("\n", " "); _dimension = QString::fromStdString (dv.str ()); _hash = _scope + qHash (_symbol) + qHash (_class_name) + qHash (_value) + qHash (_dimension); }