X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2FTermlib%2FEditor.cc;h=6733d27387e083885f40a30b913774c0fa04c49e;hb=ab7ff164ab5ae711ec09ce2b24228510f1ffdcff;hp=cceb4d87745a666da2471ff986f86ca1f73bd867;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/Utils/Termlib/Editor.cc b/senf/Utils/Termlib/Editor.cc index cceb4d8..6733d27 100644 --- a/senf/Utils/Termlib/Editor.cc +++ b/senf/Utils/Termlib/Editor.cc @@ -1,24 +1,29 @@ // $Id$ // -// Copyright (C) 2009 +// Copyright (C) 2009 // Fraunhofer Institute for Open Communication Systems (FOKUS) -// Competence Center NETwork research (NET), St. Augustin, GERMANY -// Stefan Bund // -// This program 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 2 of the License, or -// (at your option) any later version. +// The contents of this file are subject to the Fraunhofer FOKUS Public License +// Version 1.0 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// http://senf.berlios.de/license.html // -// This program 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. +// The Fraunhofer FOKUS Public License Version 1.0 is based on, +// but modifies the Mozilla Public License Version 1.1. +// See the full license text for the amendments. // -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the -// Free Software Foundation, Inc., -// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +// for the specific language governing rights and limitations under the License. +// +// The Original Code is Fraunhofer FOKUS code. +// +// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. +// (registered association), Hansastraße 27 c, 80686 Munich, Germany. +// All Rights Reserved. +// +// Contributor(s): +// Stefan Bund /** \file \brief Editor non-inline non-template implementation */ @@ -32,13 +37,13 @@ //#include "Editor.mpp" #define prefix_ -///////////////////////////////cc.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// prefix_ senf::term::BaseEditor::BaseEditor(AbstractTerminal & terminal) : terminal_ (&terminal), - keyTimeout_ (senf::ClockService::milliseconds(DEFAULT_KEY_TIMEOUT_MS)), - timer_ ("senf::term::BaseEditor::keySequenceTimeout", - senf::membind(&BaseEditor::keySequenceTimeout, this)), + keyTimeout_ (ClockService::milliseconds(DEFAULT_KEY_TIMEOUT_MS)), + timer_ ("senf::term::BaseEditor::keySequenceTimeout", + membind(&BaseEditor::keySequenceTimeout, this)), column_ (0u), displayHeight_ (1u), line_ (0u) { terminal_->setCallbacks(*this); @@ -220,7 +225,7 @@ prefix_ bool senf::term::BaseEditor::cb_init() prefix_ void senf::term::BaseEditor::cb_charReceived(char c) { inputBuffer_ += c; - timer_.timeout(senf::scheduler::eventTime() + keyTimeout_); + timer_.timeout(scheduler::eventTime() + keyTimeout_); processKeys(); } @@ -242,9 +247,9 @@ prefix_ void senf::term::BaseEditor::keySequenceTimeout() prefix_ void senf::term::BaseEditor::processKeys() { do { - std::pair result + std::pair result (keyParser_.lookup(inputBuffer_)); - if (result.first == senf::term::KeyParser::Incomplete) + if (result.first == KeyParser::Incomplete) return; v_keyReceived(result.first); inputBuffer_.erase(0, result.second); @@ -275,10 +280,10 @@ prefix_ void senf::term::BaseEditor::write(std::string const & s) write(*i); } -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// prefix_ senf::term::LineEditor::LineEditor(AbstractTerminal & terminal, AcceptCallback cb) - : BaseEditor(terminal), enabled_ (false), prompt_ ("$"), promptWidth_ (1u), editWidth_ (0u), + : BaseEditor(terminal), enabled_ (false), prompt_ ("$"), promptWidth_ (1u), editWidth_ (0u), text_ (""), point_ (0u), displayPos_ (0u), lastKey_ (0u), callback_ (cb), historyPoint_ (0u) { defineKey(KeyParser::Return, &bindings::accept); @@ -556,7 +561,7 @@ prefix_ void senf::term::LineEditor::v_keyReceived(keycode_t key) toColumn(point_ - displayPos_ + promptWidth_ + 1); } -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// prefix_ void senf::term::bindings::selfInsertCommand(LineEditor & editor) { @@ -656,11 +661,11 @@ prefix_ void senf::term::bindings::complete(LineEditor & editor, Completer compl completer(editor, b, e, prefix, completions); if (completions.empty()) return; - if (e > text.size()) + if (e > text.size()) e = text.size(); if (b > e) b = e; - + // Find common start string of all completions unsigned commonStart (completions[0].size()); unsigned maxLen (commonStart); @@ -701,8 +706,8 @@ prefix_ void senf::term::bindings::complete(LineEditor & editor, Completer compl std::string line; for (unsigned column (0); column < nColumns && i != completions.end(); ++column, ++i) { std::string entry (colWidth, ' '); - std::copy(i->begin(), - i->size() > colWidth-2 ? i->begin()+colWidth-2 : i->end(), + std::copy(i->begin(), + i->size() > colWidth-2 ? i->begin()+colWidth-2 : i->end(), entry.begin()); line += entry; } @@ -710,7 +715,7 @@ prefix_ void senf::term::bindings::complete(LineEditor & editor, Completer compl } } -///////////////////////////////cc.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_ //#include "Editor.mpp"