1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
/*
* ion/mod_query/query.c
*
* Copyright (c) Tuomo Valkonen 1999-2007.
*
* See the included file LICENSE for details.
*/
#include <libextl/extl.h>
#include <ioncore/common.h>
#include <ioncore/global.h>
#include <ioncore/binding.h>
#include <ioncore/regbind.h>
#include <ioncore/bindmaps.h>
#include <ioncore/stacking.h>
#include <ioncore/key.h>
#include "query.h"
#include "wedln.h"
/*--lowlevel routine not to be called by the user--EXTL_DOC
* Show a query window in \var{mplex} with prompt \var{prompt}, initial
* contents \var{dflt}. The function \var{handler} is called with
* the entered string as the sole argument when \fnref{WEdln.finish}
* is called. The function \var{completor} is called with the created
* \type{WEdln} is first argument and the string to complete is the
* second argument when \fnref{WEdln.complete} is called.
*/
EXTL_EXPORT
WEdln *mod_query_do_query(WMPlex *mplex, const char *prompt, const char *dflt,
ExtlFn handler, ExtlFn completor,
ExtlFn cycle, ExtlFn bcycle)
{
WEdlnCreateParams fnp;
WMPlexAttachParams par=MPLEXATTACHPARAMS_INIT;
WEdln *wedln;
fnp.prompt=prompt;
fnp.dflt=dflt;
fnp.handler=handler;
fnp.completor=completor;
par.flags=(MPLEX_ATTACH_SWITCHTO|
MPLEX_ATTACH_LEVEL|
MPLEX_ATTACH_UNNUMBERED|
MPLEX_ATTACH_SIZEPOLICY);
par.szplcy=SIZEPOLICY_FULL_BOUNDS;
par.level=STACKING_LEVEL_MODAL1+1;
wedln=(WEdln*)mplex_do_attach_new(mplex, &par,
(WRegionCreateFn*)create_wedln,
(void*)&fnp);
if(wedln!=NULL && cycle!=extl_fn_none()){
uint kcb, state;
bool sub;
if(ioncore_current_key(&kcb, &state, &sub) && !sub){
wedln->cycle_bindmap=region_add_cycle_bindmap((WRegion*)wedln,
kcb, state, cycle,
bcycle);
}
}
return wedln;
}
|