source: branches/stable/NTREE/NT_cb.cxx

Last change on this file was 16763, checked in by westram, 6 years ago
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.1 KB
Line 
1// =============================================================== //
2//                                                                 //
3//   File      : NT_cb.cxx                                         //
4//   Purpose   :                                                   //
5//                                                                 //
6//   Institute of Microbiology (Technical University Munich)       //
7//   http://www.arb-home.de/                                       //
8//                                                                 //
9// =============================================================== //
10
11#include "NT_local.h"
12#include "ad_trees.h"
13
14#include <TreeDisplay.hxx>
15
16#include <awt_canvas.hxx>
17#include <awt_sel_boxes.hxx>
18#include <aw_awars.hxx>
19#include <aw_root.hxx>
20#include <aw_question.hxx>
21#include <aw_msg.hxx>
22
23#include <map>
24#include <AliAdmin.h>
25
26// AISC_MKPT_PROMOTE:#ifndef ARBDB_BASE_H
27// AISC_MKPT_PROMOTE:#include <arbdb_base.h>
28// AISC_MKPT_PROMOTE:#endif
29// AISC_MKPT_PROMOTE:class TREE_canvas;
30
31void NT_delete_mark_all_cb(AW_window*, TREE_canvas *ntw) {
32    if (aw_ask_sure("delete_marked_species",
33                    "Are you sure to delete species ??\n"
34                    "This will destroy primary data !!!"))
35    {
36        {
37            GB_ERROR       error = NULp;
38            GB_transaction ta(ntw->gb_main);
39
40            GBDATA *gb_species, *gb_next;
41            for (gb_species = GBT_first_marked_species(ntw->gb_main);
42                 gb_species && !error;
43                 gb_species = gb_next)
44            {
45                gb_next = GBT_next_marked_species(gb_species);
46                error   = GB_delete(gb_species);
47            }
48
49            if (error) {
50                error = ta.close(error);
51                aw_message(error);
52            }
53        }
54        AWT_auto_refresh allowed_on(ntw);
55        ntw->request_refresh();
56    }
57}
58
59
60AW_window *NT_create_select_tree_window(AW_root *awr, const char *awar_tree) {
61    static std::map<std::string,AW_window*> tree_select_windows;
62    if (tree_select_windows.find(awar_tree) == tree_select_windows.end()) {
63        AW_window_simple *aws = new AW_window_simple;
64
65        const char *id = strrchr(awar_tree, '/');
66        nt_assert(id);
67        id++; // use name-part of awar_tree as id (results in 'SELECT_tree_name', 'SELECT_tree_name_1', ...)
68
69        aws->init(awr, GBS_global_string("SELECT_%s", id), "SELECT A TREE");
70        aws->load_xfig("select_simple.fig");
71
72        aws->at("selection");
73        awr->awar(awar_tree)->add_callback(makeRootCallback(awt_auto_popdown_cb, aws));
74        awt_create_TREE_selection_list(GLOBAL.gb_main, aws, awar_tree, true);
75
76        aws->auto_space(5, 5);
77        aws->button_length(6);
78
79        aws->at("button");
80        aws->callback(AW_POPDOWN);
81        aws->create_button("CLOSE", "CLOSE", "C");
82
83        aws->callback(popup_tree_admin_window);
84        aws->help_text("treeadm.hlp");
85        aws->create_button("MODIFY", "ADMIN", "A");
86
87        tree_select_windows[awar_tree] = aws;
88    }
89    return tree_select_windows[awar_tree];
90}
91
92void NT_select_bottom_tree(AW_window *aww, const char *awar_tree) {
93    GB_transaction ta(GLOBAL.gb_main);
94    const char *ltree = GBT_name_of_bottom_tree(GLOBAL.gb_main);
95    if (ltree) aww->get_root()->awar(awar_tree)->write_string(ltree);
96}
97
98void NT_create_alignment_vars(AW_root *aw_root, AW_default aw_def, GBDATA *gb_main) {
99    // map awar containing selected alignment with db-entry (both contain same value; historical)
100    // - allows access via AWAR_DEFAULT_ALIGNMENT and GBT_get_default_alignment
101
102    AW_awar        *awar_def_ali = aw_root->awar_string(AWAR_DEFAULT_ALIGNMENT, "", aw_def);
103    GB_transaction  ta(gb_main);
104    GBDATA         *gb_use       = GB_search(gb_main, GB_DEFAULT_ALIGNMENT, GB_STRING);
105
106    awar_def_ali->map(gb_use);
107}
108
109AW_window *NT_create_alignment_admin_window(AW_root *root, AW_window *aw_popmedown) {
110    // if 'aw_popmedown' points to a window, that window is popped down
111    if (aw_popmedown) aw_popmedown->hide();
112
113    static AliAdmin *ntreeAliAdmin    = NULp;
114    if (!ntreeAliAdmin) ntreeAliAdmin = new AliAdmin(MAIN_ADMIN, GLOBAL.gb_main, AWAR_DEFAULT_ALIGNMENT, "tmp/presets/");
115
116    return ALI_create_admin_window(root, ntreeAliAdmin);
117}
118
119AW_window *NT_create_select_alignment_window(AW_root *awr) {
120    static AW_window_simple *aws = NULp;
121    if (!aws) {
122        aws = new AW_window_simple;
123
124        aws->init(awr, "SELECT_ALIGNMENT", "SELECT AN ALIGNMENT");
125        aws->load_xfig("select_simple.fig");
126
127        aws->at("selection");
128        awr->awar(AWAR_DEFAULT_ALIGNMENT)->add_callback(makeRootCallback(awt_auto_popdown_cb, aws));
129        awt_create_ALI_selection_list(GLOBAL.gb_main, aws, AWAR_DEFAULT_ALIGNMENT, "*=");
130
131        aws->auto_space(5, 5);
132        aws->button_length(6);
133
134        aws->at("button");
135        aws->callback(AW_POPDOWN);
136        aws->create_button("CLOSE", "CLOSE", "C");
137
138        aws->callback(makeCreateWindowCallback(NT_create_alignment_admin_window, static_cast<AW_window*>(aws)));
139        aws->help_text("ad_align.hlp");
140        aws->create_button("MODIFY", "ADMIN", "A");
141
142        aws->window_fit();
143    }
144    return aws;
145}
146
Note: See TracBrowser for help on using the repository browser.