NeoMutt  2019-12-07-60-g0cfa53
Teaching an old dog new tricks
DOXYGEN
mutt_curses.h File Reference

Define wrapper functions around Curses/Slang. More...

#include "config.h"
#include <stdbool.h>
#include "color.h"
#include <curses.h>
+ Include dependency graph for mutt_curses.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define ctrl(ch)   ((ch) - '@')
 
#define CI_is_return(ch)   (((ch) == '\r') || ((ch) == '\n'))
 

Enumerations

enum  MuttCursorState { MUTT_CURSOR_RESTORE_LAST = -1, MUTT_CURSOR_INVISIBLE = 0, MUTT_CURSOR_VISIBLE = 1, MUTT_CURSOR_VERY_VISIBLE = 2 }
 Cursor states for mutt_curses_set_cursor() More...
 

Functions

void mutt_curses_set_attr (int attr)
 Set the attributes for text. More...
 
void mutt_curses_set_color (enum ColorId color)
 Set the current colour for text. More...
 
void mutt_curses_set_cursor (enum MuttCursorState state)
 Set the cursor state. More...
 
void mutt_resize_screen (void)
 Update NeoMutt's opinion about the window size (CURSES) More...
 

Detailed Description

Define wrapper functions around Curses/Slang.

Authors
  • Michael R. Elkins
  • g10 Code GmbH

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.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Definition in file mutt_curses.h.

Macro Definition Documentation

◆ ctrl

#define ctrl (   ch)    ((ch) - '@')

Definition at line 67 of file mutt_curses.h.

◆ CI_is_return

#define CI_is_return (   ch)    (((ch) == '\r') || ((ch) == '\n'))

Definition at line 72 of file mutt_curses.h.

Enumeration Type Documentation

◆ MuttCursorState

Cursor states for mutt_curses_set_cursor()

Enumerator
MUTT_CURSOR_RESTORE_LAST 

Restore the previous cursor state.

MUTT_CURSOR_INVISIBLE 

Hide the cursor.

MUTT_CURSOR_VISIBLE 

Display a normal cursor.

MUTT_CURSOR_VERY_VISIBLE 

Display a very visible cursor.

Definition at line 78 of file mutt_curses.h.

79 {
84 };
Display a very visible cursor.
Definition: mutt_curses.h:83
Display a normal cursor.
Definition: mutt_curses.h:82
Restore the previous cursor state.
Definition: mutt_curses.h:80
Hide the cursor.
Definition: mutt_curses.h:81

Function Documentation

◆ mutt_curses_set_attr()

void mutt_curses_set_attr ( int  attr)

Set the attributes for text.

Parameters
attrAttributes to set, e.g. A_UNDERLINE

Definition at line 40 of file mutt_curses.c.

41 {
42 #ifdef HAVE_BKGDSET
43  bkgdset(attr | ' ');
44 #endif
45 }
+ Here is the caller graph for this function:

◆ mutt_curses_set_color()

void mutt_curses_set_color ( enum ColorId  color)

Set the current colour for text.

Parameters
colorColour to set, e.g. MT_COLOR_HEADER

If the system has bkgdset() use it rather than attrset() so that the clr*() functions will properly set the background attributes all the way to the right column.

Definition at line 55 of file mutt_curses.c.

56 {
57  if (!Colors)
58  return;
59 #ifdef HAVE_BKGDSET
60  if (Colors->defs[color] != 0)
61  bkgdset(Colors->defs[color] | ' ');
62  else
63  bkgdset(Colors->defs[MT_COLOR_NORMAL] | ' ');
64 #else
65  if (Colors->defs[color] != 0)
66  attrset(Colors->defs[color]);
67  else
68  attrset(Colors->defs[MT_COLOR_NORMAL]);
69 #endif
70 }
int * defs
Array of all fixed colours, see enum ColorId.
Definition: color.h:132
Plain text.
Definition: color.h:78
Definition: color.h:130
+ Here is the caller graph for this function:

◆ mutt_curses_set_cursor()

void mutt_curses_set_cursor ( enum MuttCursorState  state)

Set the cursor state.

Parameters
stateState to set, e.g. MUTT_CURSOR_INVISIBLE

Definition at line 76 of file mutt_curses.c.

77 {
78 #if (defined(USE_SLANG_CURSES) || defined(HAVE_CURS_SET))
79  static int SavedCursor = MUTT_CURSOR_VISIBLE;
80 
81  if (state == MUTT_CURSOR_RESTORE_LAST)
82  state = SavedCursor;
83  else
84  SavedCursor = state;
85 
86  if (curs_set(state) == ERR)
87  {
88  if (state == MUTT_CURSOR_VISIBLE)
89  curs_set(MUTT_CURSOR_VERY_VISIBLE);
90  }
91 #endif
92 }
Display a very visible cursor.
Definition: mutt_curses.h:83
Display a normal cursor.
Definition: mutt_curses.h:82
Restore the previous cursor state.
Definition: mutt_curses.h:80
+ Here is the caller graph for this function:

◆ mutt_resize_screen()

void mutt_resize_screen ( void  )

Update NeoMutt's opinion about the window size (CURSES)

Definition at line 100 of file resize.c.

101 {
102  struct winsize w = mutt_get_winsize();
103 
104  int screenrows = w.ws_row;
105  int screencols = w.ws_col;
106 
107  if (screenrows <= 0)
108  {
109  const char *cp = mutt_str_getenv("LINES");
110  if (cp && (mutt_str_atoi(cp, &screenrows) < 0))
111  screenrows = 24;
112  }
113 
114  if (screencols <= 0)
115  {
116  const char *cp = mutt_str_getenv("LINES");
117  if (cp && (mutt_str_atoi(cp, &screencols) < 0))
118  screencols = 80;
119  }
120 
121  resizeterm(screenrows, screencols);
122  mutt_window_set_root(w.ws_row, w.ws_col);
123  mutt_window_reflow(NULL);
124 }
int mutt_str_atoi(const char *str, int *dst)
Convert ASCII string to an integer.
Definition: string.c:262
const char * mutt_str_getenv(const char *name)
Get an environment variable.
Definition: string.c:1048
void mutt_window_set_root(int rows, int cols)
Set the dimensions of the Root Window.
Definition: mutt_window.c:504
static struct winsize mutt_get_winsize(void)
Use an ioctl to get the window size.
Definition: resize.c:50
void mutt_window_reflow(struct MuttWindow *win)
Resize a Window and its children.
Definition: mutt_window.c:346
+ Here is the call graph for this function:
+ Here is the caller graph for this function: