2015-09-27 14:37:54 +08:00
|
|
|
// Copyright 2015 The TCell Authors
|
|
|
|
//
|
|
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
// you may not use file except in compliance with the License.
|
|
|
|
// You may obtain a copy of the license at
|
|
|
|
//
|
|
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
//
|
|
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
// See the License for the specific language governing permissions and
|
|
|
|
// limitations under the License.
|
|
|
|
|
|
|
|
package tcell
|
|
|
|
|
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
"time"
|
2017-11-24 04:31:44 +08:00
|
|
|
|
2020-08-26 07:20:58 +08:00
|
|
|
"github.com/gdamore/tcell/v2/terminfo"
|
2015-09-27 14:37:54 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
2015-10-08 11:15:33 +08:00
|
|
|
// ErrTermNotFound indicates that a suitable terminal entry could
|
|
|
|
// not be found. This can result from either not having TERM set,
|
|
|
|
// or from the TERM failing to support certain minimal functionality,
|
|
|
|
// in particular absolute cursor addressability (the cup capability)
|
|
|
|
// is required. For example, legacy "adm3" lacks this capability,
|
|
|
|
// whereas the slightly newer "adm3a" supports it. This failure
|
|
|
|
// occurs most often with "dumb".
|
2017-11-24 04:31:44 +08:00
|
|
|
ErrTermNotFound = terminfo.ErrTermNotFound
|
2015-10-08 11:15:33 +08:00
|
|
|
|
|
|
|
// ErrNoScreen indicates that no suitable screen could be found.
|
|
|
|
// This may result from attempting to run on a platform where there
|
|
|
|
// is no support for either termios or console I/O (such as nacl),
|
|
|
|
// or from running in an environment where there is no access to
|
|
|
|
// a suitable console/terminal device. (For example, running on
|
|
|
|
// without a controlling TTY or with no /dev/tty on POSIX platforms.)
|
|
|
|
ErrNoScreen = errors.New("no suitable screen available")
|
|
|
|
|
|
|
|
// ErrNoCharset indicates that the locale environment the
|
|
|
|
// program is not supported by the program, because no suitable
|
|
|
|
// encoding was found for it. This problem never occurs if
|
|
|
|
// the environment is UTF-8 or UTF-16.
|
|
|
|
ErrNoCharset = errors.New("character set not supported")
|
2015-10-31 00:33:45 +08:00
|
|
|
|
|
|
|
// ErrEventQFull indicates that the event queue is full, and
|
|
|
|
// cannot accept more events.
|
|
|
|
ErrEventQFull = errors.New("event queue full")
|
2015-09-27 14:37:54 +08:00
|
|
|
)
|
|
|
|
|
2015-10-08 11:15:33 +08:00
|
|
|
// An EventError is an event representing some sort of error, and carries
|
|
|
|
// an error payload.
|
2015-09-27 14:37:54 +08:00
|
|
|
type EventError struct {
|
2015-09-29 13:28:41 +08:00
|
|
|
t time.Time
|
|
|
|
err error
|
2015-09-27 14:37:54 +08:00
|
|
|
}
|
|
|
|
|
2015-10-08 11:15:33 +08:00
|
|
|
// When returns the time when the event was created.
|
2015-09-27 14:37:54 +08:00
|
|
|
func (ev *EventError) When() time.Time {
|
|
|
|
return ev.t
|
|
|
|
}
|
|
|
|
|
2015-10-08 11:15:33 +08:00
|
|
|
// Error implements the error.
|
2015-10-06 16:07:11 +08:00
|
|
|
func (ev *EventError) Error() string {
|
|
|
|
return ev.err.Error()
|
|
|
|
}
|
|
|
|
|
2015-10-08 11:15:33 +08:00
|
|
|
// NewEventError creates an ErrorEvent with the given error payload.
|
2015-09-27 14:37:54 +08:00
|
|
|
func NewEventError(err error) *EventError {
|
|
|
|
return &EventError{t: time.Now(), err: err}
|
|
|
|
}
|