NeoMutt  2021-02-05-666-ge300cd
Teaching an old dog new tricks
DOXYGEN
sbar.c File Reference

Simple Bar (status) More...

#include "config.h"
#include "mutt/lib.h"
#include "core/lib.h"
#include "lib.h"
+ Include dependency graph for sbar.c:

Go to the source code of this file.

Data Structures

struct  SBarPrivateData
 Private data for the Simple Bar. More...
 

Functions

static int sbar_recalc (struct MuttWindow *win)
 Recalculate the Window data - Implements MuttWindow::recalc() -. More...
 
static int sbar_repaint (struct MuttWindow *win)
 Repaint the Window - Implements MuttWindow::repaint() -. More...
 
static int sbar_color_observer (struct NotifyCallback *nc)
 Notification that a Color has changed - Implements observer_t. More...
 
static int sbar_window_observer (struct NotifyCallback *nc)
 Notification that a Window has changed - Implements observer_t. More...
 
static void sbar_wdata_free (struct MuttWindow *win, void **ptr)
 Free the private data attached to the MuttWindow - Implements MuttWindow::wdata_free() -. More...
 
static struct SBarPrivateDatasbar_data_new (void)
 Free the private data attached to the MuttWindow. More...
 
struct MuttWindowsbar_new (struct MuttWindow *parent)
 Add the Simple Bar (status) More...
 
void sbar_set_title (struct MuttWindow *win, const char *title)
 Set the title for the Simple Bar. More...
 

Detailed Description

Simple Bar (status)

Authors
  • Richard Russon

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 sbar.c.

Function Documentation

◆ sbar_color_observer()

static int sbar_color_observer ( struct NotifyCallback nc)
static

Notification that a Color has changed - Implements observer_t.

This function is triggered by changes to the colour settings, from the color or uncolor, mono or unmono commands.

Definition at line 118 of file sbar.c.

119 {
120  if ((nc->event_type != NT_COLOR) || !nc->global_data)
121  return -1;
122 
123  struct EventColor *ev_c = nc->event_data;
124 
125  // MT_COLOR_MAX is sent on `uncolor *`
126  if ((ev_c->color != MT_COLOR_STATUS) && (ev_c->color != MT_COLOR_MAX))
127  return 0;
128 
129  struct MuttWindow *win_sbar = nc->global_data;
130 
131  win_sbar->actions |= WA_REPAINT;
132  mutt_debug(LL_DEBUG5, "color done, request WA_REPAINT\n");
133 
134  return 0;
135 }
#define WA_REPAINT
Redraw the contents of the Window.
Definition: mutt_window.h:111
An Event that happened to a Colour.
Definition: color.h:122
enum NotifyType event_type
Send: Event type, e.g. NT_ACCOUNT.
Definition: observer.h:42
WindowActionFlags actions
Actions to be performed, e.g. WA_RECALC.
Definition: mutt_window.h:132
void * global_data
Data from notify_observer_add()
Definition: observer.h:45
Colour has changed, NotifyColor, EventColor.
Definition: notify_type.h:39
Status bar (takes a pattern)
Definition: color.h:75
enum ColorId color
Definition: color.h:124
#define mutt_debug(LEVEL,...)
Definition: logging.h:85
void * event_data
Data from notify_send()
Definition: observer.h:44
Log at debug level 5.
Definition: logging.h:44
+ Here is the caller graph for this function:

◆ sbar_window_observer()

static int sbar_window_observer ( struct NotifyCallback nc)
static

Notification that a Window has changed - Implements observer_t.

This function is triggered by changes to the windows.

  • State (this window): refresh the window
  • Delete (this window): clean up the resources held by the Simple Bar

Definition at line 145 of file sbar.c.

146 {
147  if ((nc->event_type != NT_WINDOW) || !nc->global_data || !nc->event_data)
148  return -1;
149 
150  struct MuttWindow *win_sbar = nc->global_data;
151  struct EventWindow *ev_w = nc->event_data;
152  if (ev_w->win != win_sbar)
153  return 0;
154 
155  if (nc->event_subtype == NT_WINDOW_STATE)
156  {
157  win_sbar->actions |= WA_REPAINT;
158  mutt_debug(LL_DEBUG5, "window state done, request WA_REPAINT\n");
159  }
160  else if (nc->event_subtype == NT_WINDOW_DELETE)
161  {
163  notify_observer_remove(win_sbar->notify, sbar_window_observer, win_sbar);
164  mutt_debug(LL_DEBUG5, "window delete done\n");
165  }
166 
167  return 0;
168 }
static int sbar_window_observer(struct NotifyCallback *nc)
Notification that a Window has changed - Implements observer_t.
Definition: sbar.c:145
#define WA_REPAINT
Redraw the contents of the Window.
Definition: mutt_window.h:111
struct MuttWindow * win
Window that changed.
Definition: mutt_window.h:217
An Event that happened to a Window.
Definition: mutt_window.h:215
Window is about to be deleted.
Definition: mutt_window.h:206
Container for Accounts, Notifications.
Definition: neomutt.h:36
MuttWindow has changed, NotifyWindow, EventWindow.
Definition: notify_type.h:53
int event_subtype
Send: Event subtype, e.g. NT_ACCOUNT_ADD.
Definition: observer.h:43
enum NotifyType event_type
Send: Event type, e.g. NT_ACCOUNT.
Definition: observer.h:42
WindowActionFlags actions
Actions to be performed, e.g. WA_RECALC.
Definition: mutt_window.h:132
struct Notify * notify
Notifications: NotifyWindow, EventWindow.
Definition: mutt_window.h:138
void * global_data
Data from notify_observer_add()
Definition: observer.h:45
Window state has changed, e.g. WN_VISIBLE.
Definition: mutt_window.h:207
static int sbar_color_observer(struct NotifyCallback *nc)
Notification that a Color has changed - Implements observer_t.
Definition: sbar.c:118
struct Notify * notify
Notifications handler.
Definition: neomutt.h:38
#define mutt_debug(LEVEL,...)
Definition: logging.h:85
void * event_data
Data from notify_send()
Definition: observer.h:44
bool notify_observer_remove(struct Notify *notify, observer_t callback, void *global_data)
Remove an observer from an object.
Definition: notify.c:228
Log at debug level 5.
Definition: logging.h:44
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sbar_data_new()

static struct SBarPrivateData* sbar_data_new ( void  )
static

Free the private data attached to the MuttWindow.

Definition at line 185 of file sbar.c.

186 {
187  struct SBarPrivateData *sbar_data = mutt_mem_calloc(1, sizeof(struct SBarPrivateData));
188 
189  return sbar_data;
190 }
void * mutt_mem_calloc(size_t nmemb, size_t size)
Allocate zeroed memory on the heap.
Definition: memory.c:50
Private data for the Simple Bar.
Definition: sbar.c:73
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sbar_new()

struct MuttWindow* sbar_new ( struct MuttWindow parent)

Add the Simple Bar (status)

Parameters
parentParent Window
Return values
ptrNew Simple Bar

Definition at line 197 of file sbar.c.

198 {
199  struct MuttWindow *win_sbar =
202 
203  win_sbar->wdata = sbar_data_new();
204  win_sbar->wdata_free = sbar_wdata_free;
205  win_sbar->recalc = sbar_recalc;
206  win_sbar->repaint = sbar_repaint;
207 
210 
211  return win_sbar;
212 }
static int sbar_window_observer(struct NotifyCallback *nc)
Notification that a Window has changed - Implements observer_t.
Definition: sbar.c:145
void(* wdata_free)(struct MuttWindow *win, void **ptr)
Definition: mutt_window.h:160
Window uses all available vertical space.
Definition: mutt_window.h:38
static int sbar_repaint(struct MuttWindow *win)
Repaint the Window - Implements MuttWindow::repaint() -.
Definition: sbar.c:94
Container for Accounts, Notifications.
Definition: neomutt.h:36
MuttWindow has changed, NotifyWindow, EventWindow.
Definition: notify_type.h:53
Status Bar containing extra info about the Index/Pager/etc.
Definition: mutt_window.h:102
struct Notify * notify
Notifications: NotifyWindow, EventWindow.
Definition: mutt_window.h:138
bool notify_observer_add(struct Notify *notify, enum NotifyType type, observer_t callback, void *global_data)
Add an observer to an object.
Definition: notify.c:189
Window has a fixed size.
Definition: mutt_window.h:47
Colour has changed, NotifyColor, EventColor.
Definition: notify_type.h:39
static int sbar_recalc(struct MuttWindow *win)
Recalculate the Window data - Implements MuttWindow::recalc() -.
Definition: sbar.c:81
#define MUTT_WIN_SIZE_UNLIMITED
Use as much space as possible.
Definition: mutt_window.h:52
static int sbar_color_observer(struct NotifyCallback *nc)
Notification that a Color has changed - Implements observer_t.
Definition: sbar.c:118
static void sbar_wdata_free(struct MuttWindow *win, void **ptr)
Free the private data attached to the MuttWindow - Implements MuttWindow::wdata_free() -...
Definition: sbar.c:173
struct Notify * notify
Notifications handler.
Definition: neomutt.h:38
int(* repaint)(struct MuttWindow *win)
Definition: mutt_window.h:182
int(* recalc)(struct MuttWindow *win)
Definition: mutt_window.h:171
struct MuttWindow * mutt_window_new(enum WindowType type, enum MuttWindowOrientation orient, enum MuttWindowSize size, int cols, int rows)
Create a new Window.
Definition: mutt_window.c:180
void * wdata
Private data.
Definition: mutt_window.h:145
static struct SBarPrivateData * sbar_data_new(void)
Free the private data attached to the MuttWindow.
Definition: sbar.c:185
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sbar_set_title()

void sbar_set_title ( struct MuttWindow win,
const char *  title 
)

Set the title for the Simple Bar.

Parameters
winWindow of the Simple Bar
titleString to set
Note
The title string will be copied

Definition at line 221 of file sbar.c.

222 {
223  if (!win || !win->wdata || (win->type != WT_STATUS_BAR))
224  return;
225 
226  struct SBarPrivateData *priv = win->wdata;
227  mutt_str_replace(&priv->display, title);
228 
229  win->actions |= WA_REPAINT;
230 }
#define WA_REPAINT
Redraw the contents of the Window.
Definition: mutt_window.h:111
char * display
Cached display string.
Definition: sbar.c:75
Status Bar containing extra info about the Index/Pager/etc.
Definition: mutt_window.h:102
WindowActionFlags actions
Actions to be performed, e.g. WA_RECALC.
Definition: mutt_window.h:132
Private data for the Simple Bar.
Definition: sbar.c:73
char * mutt_str_replace(char **p, const char *s)
Replace one string with another.
Definition: string.c:446
void * wdata
Private data.
Definition: mutt_window.h:145
enum WindowType type
Window type, e.g. WT_SIDEBAR.
Definition: mutt_window.h:144
+ Here is the call graph for this function:
+ Here is the caller graph for this function: