source: tags/old_import_filter/WINDOW/aw_detach.hxx

Last change on this file was 7801, checked in by westram, 13 years ago

merge from dev [7710]

  • resolve some nesting in library dependencies
    • allows unit tests in GENOM and GENOM_IMPORT
File size: 2.7 KB
Line 
1// ================================================================= //
2//                                                                   //
3//   File      : aw_detach.hxx                                       //
4//   Purpose   :                                                     //
5//                                                                   //
6//   Coded by Ralf Westram (coder@reallysoft.de) in September 2010   //
7//   Institute of Microbiology (Technical University Munich)         //
8//   http://www.arb-home.de/                                         //
9//                                                                   //
10// ================================================================= //
11
12#ifndef AW_DETACH_HXX
13#define AW_DETACH_HXX
14
15#ifndef AW_AWAR_HXX
16#include "aw_awar.hxx"
17#endif
18#ifndef AW_ROOT_HXX
19#include "aw_root.hxx"
20#endif
21
22class Awar_Callback_Info : virtual Noncopyable {
23    // this structure is used to store all information on an awar callback
24    // and can be used to remove or remap awar callback w/o knowing anything else
25
26    AW_root *awr;
27    Awar_CB  callback;
28    AW_CL    cd1, cd2;
29    char    *awar_name;
30    char    *org_awar_name;
31
32    void init (AW_root *awr_, const char *awar_name_, Awar_CB2 callback_, AW_CL cd1_, AW_CL cd2_);
33
34public:
35    Awar_Callback_Info(AW_root *awr_, const char *awar_name_, Awar_CB2 callback_, AW_CL cd1_, AW_CL cd2_) { init(awr_, awar_name_, callback_, cd1_, cd2_); }
36    Awar_Callback_Info(AW_root *awr_, const char *awar_name_, Awar_CB1 callback_, AW_CL cd1_)             { init(awr_, awar_name_, (Awar_CB2)callback_, cd1_, 0); }
37    Awar_Callback_Info(AW_root *awr_, const char *awar_name_, Awar_CB0 callback_)                         { init(awr_, awar_name_, (Awar_CB2)callback_, 0, 0); }
38
39    ~Awar_Callback_Info() {
40        delete awar_name;
41        delete org_awar_name;
42    }
43
44    void add_callback()    { awr->awar(awar_name)->add_callback(callback, cd1, cd2); }
45    void remove_callback() { awr->awar(awar_name)->remove_callback(callback, cd1, cd2); }
46
47    void remap(const char *new_awar);
48
49    const char *get_awar_name() const     { return awar_name; }
50    const char *get_org_awar_name() const { return org_awar_name; }
51
52    AW_root *get_root() { return awr; }
53};
54
55class AW_detach_information {
56    Awar_Callback_Info *cb_info;
57    Widget              detach_button;
58public:
59    AW_detach_information(Awar_Callback_Info *cb_info_)
60        : cb_info(cb_info_),  detach_button(0) {}
61
62    Awar_Callback_Info *get_cb_info() { return cb_info; }
63    Widget get_detach_button() { aw_assert(detach_button); return detach_button; }
64    void set_detach_button(Widget w) { detach_button = w; }
65};
66
67#else
68#error aw_detach.hxx included twice
69#endif // AW_DETACH_HXX
Note: See TracBrowser for help on using the repository browser.