source: tags/testbuild/AWT/awt_sel_boxes.hxx

Last change on this file was 12848, checked in by westram, 10 years ago
  • reintegrates 'fix' into 'trunk'
    • removes calls to aw_string_selection and aw_string_selection2awar (implementing another step for #179)
  • adds:
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.1 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
56typedef char *(*awt_sai_sellist_filter)(GBDATA *, AW_CL);
57
58// -----------------------------------------
59//      various database selection boxes
60
61void awt_create_ALI_selection_button(GBDATA *gb_main, AW_window *aws, const char *varname, const char *ali_type_match);
62AW_DB_selection *awt_create_ALI_selection_list(GBDATA *gb_main, AW_window *aws, const char *varname, const char *ali_type_match);
63void awt_reconfigure_ALI_selection_list(AW_DB_selection *alisel, const char *ali_type_match);
64
65AW_DB_selection *awt_create_TREE_selection_list(GBDATA *gb_main, AW_window *aws, const char *varname, bool fallback2default);
66
67void awt_create_PTSERVER_selection_button(AW_window *aws, const char *varname);
68void awt_create_PTSERVER_selection_list(AW_window *aws, const char *varname);
69
70void awt_create_SAI_selection_button(GBDATA *gb_main, AW_window *aws, const char *varname, awt_sai_sellist_filter filter_poc = 0, AW_CL filter_cd = 0);
71AW_DB_selection *awt_create_SAI_selection_list(GBDATA *gb_main, AW_window *aws, const char *varname, bool fallback2default, awt_sai_sellist_filter filter_poc = 0, AW_CL filter_cd = 0);
72void awt_popup_SAI_selection_list(AW_window *aww, const char *awar_name, GBDATA *gb_main);
73
74void  awt_create_CONFIG_selection_list(GBDATA *gb_main, AW_window *aws, const char *varname, bool fallback2default);
75
76// ---------------------------
77//      related functions
78
79void awt_edit_arbtcpdat_cb(AW_window *aww, GBDATA *gb_main);
80char *awt_create_CONFIG_string(GBDATA *gb_main);
81
82// --------------------------
83//      subset selection
84
85AW_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);
86
87// -------------------------------
88//      generic file prompter
89
90AW_window *awt_create_load_box(AW_root                *aw_root,
91                               const char             *action,
92                               const char             *what,
93                               const char             *default_directory,
94                               const char             *file_extension,
95                               char                  **set_file_name_awar,
96                               const WindowCallback&   ok_cb,
97                               const WindowCallback&   abort_cb          = makeWindowCallback(AW_POPDOWN),
98                               const char             *close_button_text = NULL);
99
100// ------------------------------------------
101//      save/load selection list content
102
103typedef GB_ERROR (*ssl_to_storage)(const CharPtrArray& display, const CharPtrArray& value, StrArray& line);
104typedef GB_ERROR (*ssl_from_storage)(const CharPtrArray& line, StrArray& display, StrArray& value);
105
106class StorableSelectionList {
107    TypedSelectionList tsl;
108    ssl_to_storage     list2file;
109    ssl_from_storage   file2list;
110
111public:
112    StorableSelectionList(const TypedSelectionList& tsl_);
113    StorableSelectionList(const TypedSelectionList& tsl_, ssl_to_storage list2file_, ssl_from_storage file2list_)
114        : tsl(tsl_),
115          list2file(list2file_),
116          file2list(file2list_)
117    {}
118
119    const TypedSelectionList& get_typedsellist() const { return tsl; }
120    const char *get_filter() const { return tsl.get_shared_id(); }
121
122    GB_ERROR save(const char *filename, long number_of_lines = 0) const;
123    GB_ERROR load(const char *filemask, bool append) const;
124};
125
126AW_window *create_save_box_for_selection_lists(AW_root *aw_root, const StorableSelectionList *storabsellist);
127AW_window *create_load_box_for_selection_lists(AW_root *aw_root, const StorableSelectionList *storabsellist);
128
129void create_print_box_for_selection_lists(AW_window *aw_window, const TypedSelectionList *typedsellist);
130
131void awt_clear_selection_list_cb(AW_window *, AW_selection_list *sellist);
132
133AW_selection_list *awt_create_selection_list_with_input_field(AW_window *aww, const char *awar_name, const char *at_box, const char *at_field);
134
135#else
136#error awt_sel_boxes.hxx included twice
137#endif // AWT_SEL_BOXES_HXX
138
Note: See TracBrowser for help on using the repository browser.