source: context.c @ 488ebf6

owl
Last change on this file since 488ebf6 was fa00c5c, checked in by James M. Kretchmar <kretch@mit.edu>, 15 years ago
Correct license.
  • Property mode set to 100644
File size: 3.0 KB
Line 
1/* Copyright (c) 2002,2003,2004,2009 James M. Kretchmar
2 *
3 * This file is part of Owl.
4 *
5 * Owl is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * Owl is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with Owl.  If not, see <http://www.gnu.org/licenses/>.
17 *
18 * ---------------------------------------------------------------
19 *
20 * As of Owl version 2.1.12 there are patches contributed by
21 * developers of the branched BarnOwl project, Copyright (c)
22 * 2006-2009 The BarnOwl Developers. All rights reserved.
23 */
24
25#include <string.h>
26#include "owl.h"
27
28static const char fileIdent[] = "$Id$";
29
30#define SET_ACTIVE(ctx, new) ctx->mode = ((ctx->mode)&~OWL_CTX_ACTIVE_BITS)|new
31#define SET_MODE(ctx, new) ctx->mode = ((ctx->mode)&~OWL_CTX_MODE_BITS)|new
32
33int owl_context_init(owl_context *ctx)
34{
35  ctx->mode = OWL_CTX_STARTUP;
36  ctx->data = NULL;
37  return 0;
38}
39
40
41/* returns whether test matches the current context */
42int owl_context_matches(owl_context *ctx, int test)
43{
44  /*owl_function_debugmsg(", current: 0x%04x test: 0x%04x\n", ctx->mode, test);*/
45  if ((((ctx->mode&OWL_CTX_MODE_BITS) & test)
46       || !(test&OWL_CTX_MODE_BITS))
47      && 
48      (((ctx->mode&OWL_CTX_ACTIVE_BITS) & test) 
49       || !(test&OWL_CTX_ACTIVE_BITS))) {
50    return 1;
51  } else {
52    return 0;
53  }
54}
55
56void *owl_context_get_data(owl_context *ctx)
57{
58  return ctx->data;
59}
60
61int owl_context_get_mode(owl_context *ctx)
62{
63  return ctx->mode & OWL_CTX_MODE_BITS;
64}
65
66int owl_context_get_active(owl_context *ctx)
67{
68  return ctx->mode & OWL_CTX_ACTIVE_BITS;
69}
70
71int owl_context_is_startup(owl_context *ctx)
72{
73  return (ctx->mode & OWL_CTX_STARTUP)?1:0;
74}
75
76int owl_context_is_interactive(owl_context *ctx)
77{
78  return(ctx->mode & OWL_CTX_INTERACTIVE)?1:0;
79}
80
81void owl_context_set_startup(owl_context *ctx)
82{
83  SET_MODE(ctx, OWL_CTX_STARTUP);
84}
85
86void owl_context_set_readconfig(owl_context *ctx)
87{
88  SET_MODE(ctx, OWL_CTX_READCONFIG);
89}
90
91void owl_context_set_interactive(owl_context *ctx)
92{
93  SET_MODE(ctx, OWL_CTX_INTERACTIVE);
94}
95
96void owl_context_set_popless(owl_context *ctx, owl_viewwin *vw)
97{
98  ctx->data = (void*)vw;
99  SET_ACTIVE(ctx, OWL_CTX_POPLESS);
100}
101
102void owl_context_set_recv(owl_context *ctx)
103{
104  SET_ACTIVE(ctx, OWL_CTX_RECV);
105}
106
107void owl_context_set_editmulti(owl_context *ctx, owl_editwin *ew)
108{
109  ctx->data = (void*)ew;
110  SET_ACTIVE(ctx, OWL_CTX_EDITMULTI);
111}
112
113void owl_context_set_editline(owl_context *ctx, owl_editwin *ew)
114{
115  ctx->data = (void*)ew;
116  SET_ACTIVE(ctx, OWL_CTX_EDITLINE);
117}
118
119void owl_context_set_editresponse(owl_context *ctx, owl_editwin *ew)
120{
121  ctx->data = (void*)ew;
122  SET_ACTIVE(ctx, OWL_CTX_EDITRESPONSE);
123}
124
Note: See TracBrowser for help on using the repository browser.