source: tags/ms_r16q2/AWT/awt_sel_boxes.hxx

Last change on this file was 14736, checked in by westram, 8 years ago
  • replace last SELLIST_CLICK_CB by an awar-callback (#559)
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.7 KB
Line 
1// ==================================================================== //
2//                                                                      //
3//   File      : awt_sel_boxes.hxx                                      //
4//   Purpose   :                                                        //
5//                                                                      //
6//                                                                      //
7// Coded by Ralf Westram (coder@reallysoft.de) in May 2005              //
8// Copyright Department of Microbiology (Technical University Munich)   //
9//                                                                      //
10// Visit our web site at: http://www.arb-home.de/                       //
11//                                                                      //
12// ==================================================================== //
13#ifndef AWT_SEL_BOXES_HXX
14#define AWT_SEL_BOXES_HXX
15
16#ifndef _GLIBCXX_STRING
17#include <string>
18#endif
19#ifndef CB_H
20#include <cb.h>
21#endif
22#ifndef AW_WINDOW_HXX
23#include <aw_window.hxx>
24#endif
25
26class AP_filter;
27class AW_DB_selection;
28class AW_selection;
29class AW_selection_list;
30struct StrArray;
31struct ConstStrArray;
32struct CharPtrArray;
33struct adfiltercbstruct;
34
35class TypedSelectionList {
36    AW_selection_list& selection_list;
37
38    std::string content;     // what is contained in the selection list ? (e.g. "probes")
39    std::string filetype_id; // shared by all selection lists with same content type; used as file-extension for save/load
40    std::string unique_id;   // a unique id
41
42public:
43    TypedSelectionList(const char *filetype_id_, AW_selection_list *selection_list_, const char *content_, const char *unique_id_)
44        : selection_list(*selection_list_),
45          content(content_),
46          filetype_id(filetype_id_), 
47          unique_id(unique_id_)
48    {}
49
50    AW_selection_list *get_sellist() const { return &selection_list; }
51    const char *whats_contained() const { return content.c_str(); }
52    const char *get_unique_id() const { return unique_id.c_str(); }
53    const char *get_shared_id() const { return filetype_id.c_str(); }
54};
55
56DECLARE_CBTYPE_FVV_AND_BUILDERS(SaiSelectionlistFilterCallback, char*, GBDATA*);   // generates makeSaiSelectionlistFilterCallback
57// (result of callback: - NULL if SAI unwanted; heap-allocated selection-list display-string otherwise)
58const SaiSelectionlistFilterCallback& awt_std_SAI_filter_cb();
59
60
61// -----------------------------------------
62//      various database selection boxes
63
64void awt_create_ALI_selection_button(GBDATA *gb_main, AW_window *aws, const char *varname, const char *ali_type_match);
65AW_DB_selection *awt_create_ALI_selection_list(GBDATA *gb_main, AW_window *aws, const char *varname, const char *ali_type_match);
66void awt_reconfigure_ALI_selection_list(AW_DB_selection *alisel, const char *ali_type_match);
67
68AW_DB_selection *awt_create_TREE_selection_list(GBDATA *gb_main, AW_window *aws, const char *varname, bool fallback2default);
69
70void awt_create_PTSERVER_selection_button(AW_window *aws, const char *varname);
71void awt_create_PTSERVER_selection_list(AW_window *aws, const char *varname);
72
73void             awt_create_SAI_selection_button(GBDATA *gb_main, AW_window *aws, const char *varname, const SaiSelectionlistFilterCallback& fcb = awt_std_SAI_filter_cb());
74AW_DB_selection *awt_create_SAI_selection_list(GBDATA *gb_main, AW_window *aws, const char *varname, bool fallback2default, const SaiSelectionlistFilterCallback& fcb = awt_std_SAI_filter_cb());
75void             awt_popup_SAI_selection_list(AW_window *aww, const char *awar_name, GBDATA *gb_main);
76
77AW_DB_selection *awt_create_CONFIG_selection_list(GBDATA *gb_main, AW_window *aws, const char *varname, bool fallback2default);
78
79void awt_auto_popdown_cb(AW_root*, AW_window_simple *aw_popup);
80
81// ---------------------------
82//      related functions
83
84void awt_edit_arbtcpdat_cb(AW_window *aww, GBDATA *gb_main);
85char *awt_create_CONFIG_string(GBDATA *gb_main);
86
87// --------------------------
88//      subset selection
89
90typedef       void (*SubsetChangedCb)(AW_selection*, bool interactive_change, AW_CL cl_user);
91AW_selection *awt_create_subset_selection_list(AW_window *aww, AW_selection_list *select_subset_from, const char *at_box, const char *at_add, const char *at_sort, bool autocorrect_subselection = true, SubsetChangedCb subChanged_cb = NULL, AW_CL cl_user = 0);
92void          awt_set_subset_selection_content(AW_selection *subset_sel_, const CharPtrArray& values);
93
94// -------------------------------
95//      generic file prompter
96
97AW_window *awt_create_load_box(AW_root                *aw_root,
98                               const char             *action,
99                               const char             *what,
100                               const char             *default_directory,
101                               const char             *file_extension,
102                               char                  **set_file_name_awar,
103                               const WindowCallback&   ok_cb,
104                               const WindowCallback&   abort_cb          = makeWindowCallback(AW_POPDOWN),
105                               const char             *close_button_text = NULL);
106
107// ------------------------------------------
108//      save/load selection list content
109
110typedef GB_ERROR (*ssl_to_storage)(const CharPtrArray& display, const CharPtrArray& value, StrArray& line);
111typedef GB_ERROR (*ssl_from_storage)(const CharPtrArray& line, StrArray& display, StrArray& value);
112
113class StorableSelectionList {
114    TypedSelectionList tsl;
115    ssl_to_storage     list2file;
116    ssl_from_storage   file2list;
117
118public:
119    StorableSelectionList(const TypedSelectionList& tsl_);
120    StorableSelectionList(const TypedSelectionList& tsl_, ssl_to_storage list2file_, ssl_from_storage file2list_)
121        : tsl(tsl_),
122          list2file(list2file_),
123          file2list(file2list_)
124    {}
125
126    const TypedSelectionList& get_typedsellist() const { return tsl; }
127    const char *get_filter() const { return tsl.get_shared_id(); }
128
129    GB_ERROR save(const char *filename, long number_of_lines = 0) const;
130    GB_ERROR load(const char *filemask, bool append) const;
131};
132
133AW_window *create_save_box_for_selection_lists(AW_root *aw_root, const StorableSelectionList *storabsellist);
134AW_window *create_load_box_for_selection_lists(AW_root *aw_root, const StorableSelectionList *storabsellist);
135
136void create_print_box_for_selection_lists(AW_window *aw_window, const TypedSelectionList *typedsellist);
137
138void awt_clear_selection_list_cb(AW_window *, AW_selection_list *sellist);
139
140AW_selection_list *awt_create_selection_list_with_input_field(AW_window *aww, const char *awar_name, const char *at_box, const char *at_field);
141
142#else
143#error awt_sel_boxes.hxx included twice
144#endif // AWT_SEL_BOXES_HXX
145
Note: See TracBrowser for help on using the repository browser.