Changeset db8b00b for perlglue.xs


Ignore:
Timestamp:
Oct 27, 2006, 3:07:59 PM (14 years ago)
Author:
Nelson Elhage <nelhage@mit.edu>
Branches:
master, barnowl_perlaim, debian, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
Children:
bbd2fdc
Parents:
e74c01c
Message:
Exposing edit window hooks to perl
File:
1 edited

Legend:

Unmodified
Added
Removed
  • perlglue.xs

    r1b6b2f3 rdb8b00b  
    1010#include "owl.h"
    1111SV *owl_perlconfig_curmessage2hashref(void);
     12
     13#define SV_IS_CODEREF(sv) (SvROK((sv)) && SvTYPE(SvRV((sv))) == SVt_PVCV)
    1214
    1315MODULE = owl            PACKAGE = owl           
     
    8486                owl_cmd cmd;
    8587        CODE:
     88        {
     89                if(!SV_IS_CODEREF(func)) {
     90                        croak("Command function must be a coderef!");
     91                }
    8692                SvREFCNT_inc(func);
    8793                cmd.name = name;
     
    99105                cmd.cmd_ctxi_fn = NULL;
    100106                owl_cmddict_add_cmd(owl_global_get_cmddict(&g), &cmd);
     107           }
    101108
    102109void queue_message(msg)
     
    140147                owl_global_messagequeue_addmsg(&g, m);
    141148        }
     149
     150void start_question(line, callback)
     151        char *line
     152        SV *callback
     153        PREINIT:
     154        CODE:
     155        {
     156                if(!SV_IS_CODEREF(callback))
     157                        croak("Callback must be a subref");
     158
     159                owl_function_start_question(line);
     160
     161                SvREFCNT_inc(callback);
     162                owl_editwin_set_cbdata(owl_global_get_typwin(&g), callback);
     163                owl_editwin_set_callback(owl_global_get_typwin(&g), owl_perlconfig_edit_callback);
     164        }
     165
     166void start_password(line, callback)
     167        char *line
     168        SV *callback
     169        PREINIT:
     170        CODE:
     171        {
     172                if(!SV_IS_CODEREF(callback))
     173                        croak("Callback must be a subref");
     174
     175                owl_function_start_password(line);
     176
     177                SvREFCNT_inc(callback);
     178                owl_editwin_set_cbdata(owl_global_get_typwin(&g), callback);
     179                owl_editwin_set_callback(owl_global_get_typwin(&g), owl_perlconfig_edit_callback);
     180        }
     181
     182void start_edit_win(line, callback)
     183        char *line
     184        SV *callback
     185        PREINIT:
     186                owl_editwin * e;
     187                char buff[1024];
     188        CODE:
     189        {
     190                if(!SV_IS_CODEREF(callback))
     191                        croak("Callback must be a subref");
     192
     193                e = owl_global_get_typwin(&g);
     194                owl_editwin_new_style(e, OWL_EDITWIN_STYLE_MULTILINE,
     195                                      owl_global_get_msg_history(&g));
     196                owl_editwin_clear(e);
     197                owl_editwin_set_dotsend(e);
     198                snprintf(buff, 1023, "----> %s\n", line);
     199                owl_editwin_set_locktext(e, buff);
     200
     201                owl_global_set_typwin_active(&g);
     202
     203                SvREFCNT_inc(callback);
     204                owl_editwin_set_cbdata(owl_global_get_typwin(&g), callback);
     205                owl_editwin_set_callback(owl_global_get_typwin(&g), owl_perlconfig_edit_callback);
     206        }
Note: See TracChangeset for help on using the changeset viewer.