source: tags/svn.1.5.4/GENOM/EXP_main.cxx

Last change on this file was 8360, checked in by westram, 12 years ago
  • renamed menu separator functions
  • removed macro AWMIMT
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.2 KB
Line 
1//  ==================================================================== //
2//                                                                       //
3//    File      : EXP_main.cxx                                           //
4//    Purpose   :                                                        //
5//                                                                       //
6//                                                                       //
7//  Coded by Ralf Westram (coder@reallysoft.de) in September 2001        //
8//  Copyright Department of Microbiology (Technical University Munich)   //
9//                                                                       //
10//  Visit our web site at: http://www.arb-home.de/                       //
11//                                                                       //
12//                                                                       //
13//  ==================================================================== //
14
15#include "EXP_local.hxx"
16
17#include <awt.hxx>
18#include <awt_input_mask.hxx>
19#include <aw_awars.hxx>
20#include <aw_root.hxx>
21#include <arbdbt.h>
22#include <ntree.hxx>
23#include <db_query.h>
24
25class AWT_canvas;
26#include <../NTREE/nt_cb.hxx>
27
28using namespace std;
29
30static void EXP_species_name_changed_cb(AW_root * /* awr */) {
31}
32
33static void EXP_update_combined_cb(AW_root *awr) {
34    char       *organism   = awr->awar(AWAR_ORGANISM_NAME)->read_string();
35    char       *experiment = awr->awar(AWAR_EXPERIMENT_NAME)->read_string();
36    const char *combined   = GBS_global_string("%s/%s", organism, experiment);
37    awr->awar(AWAR_COMBINED_EXPERIMENT_NAME)->write_string(combined);
38    free(experiment);
39    free(organism);
40}
41
42void EXP_create_awars(AW_root *aw_root, AW_default /* aw_def */, GBDATA *gb_main) {
43    aw_root->awar_string(AWAR_EXPERIMENT_NAME,          "", gb_main)->add_callback((AW_RCB0)EXP_update_combined_cb);
44    aw_root->awar_string(AWAR_PROTEOM_NAME,             "", gb_main);
45    aw_root->awar_string(AWAR_PROTEIN_NAME,             "", gb_main);
46    aw_root->awar_string(AWAR_ORGANISM_NAME,            "", gb_main)->add_callback((AW_RCB0)EXP_update_combined_cb);
47    aw_root->awar_string(AWAR_COMBINED_EXPERIMENT_NAME, "", gb_main);
48    aw_root->awar_string(AWAR_SPECIES_NAME,             "", gb_main)->add_callback((AW_RCB0)EXP_species_name_changed_cb);
49    aw_root->awar_string(AWAR_EXPERIMENT_DEST,          "", gb_main);
50}
51
52// ---------------------------------------
53//      EXP_item_type_species_selector
54
55class EXP_item_type_species_selector : public awt_item_type_selector {
56public:
57    EXP_item_type_species_selector() : awt_item_type_selector(AWT_IT_EXPERIMENT) {}
58    virtual ~EXP_item_type_species_selector() {}
59
60    virtual const char *get_self_awar() const {
61        return AWAR_COMBINED_EXPERIMENT_NAME;
62    }
63    virtual size_t get_self_awar_content_length() const {
64        return 12 + 1 + 40; // species-name+'/'+experiment_name
65    }
66    virtual void add_awar_callbacks(AW_root *root, void (*f)(AW_root*, AW_CL), AW_CL cl_mask) const { // add callbacks to awars
67        root->awar(get_self_awar())->add_callback(f, cl_mask);
68    }
69    virtual void remove_awar_callbacks(AW_root *root, void (*f)(AW_root*, AW_CL), AW_CL cl_mask) const { // add callbacks to awars
70        root->awar(get_self_awar())->remove_callback(f, cl_mask);
71    }
72    virtual GBDATA *current(AW_root *root, GBDATA *gb_main) const { // give the current item
73        char   *species_name    = root->awar(AWAR_ORGANISM_NAME)->read_string();
74        char   *experiment_name = root->awar(AWAR_EXPERIMENT_NAME)->read_string();
75        GBDATA *gb_experiment   = 0;
76
77        if (species_name[0] && experiment_name[0]) {
78            GB_transaction dummy(gb_main);
79            GBDATA *gb_species = GBT_find_species(gb_main, species_name);
80            if (gb_species) {
81                gb_experiment = EXP_find_experiment(gb_species, experiment_name);
82            }
83        }
84
85        free(experiment_name);
86        free(species_name);
87
88        return gb_experiment;
89    }
90    virtual const char *getKeyPath() const { // give the keypath for items
91        return CHANGE_KEY_PATH_EXPERIMENTS;
92    }
93};
94
95static EXP_item_type_species_selector item_type_experiment;
96
97static void EXP_open_mask_window(AW_window *aww, AW_CL cl_id, AW_CL cl_gb_main) {
98    int                              id         = int(cl_id);
99    const awt_input_mask_descriptor *descriptor = AWT_look_input_mask(id);
100    exp_assert(descriptor);
101    if (descriptor) {
102        GBDATA *gb_main = (GBDATA*)cl_gb_main;
103        AWT_initialize_input_mask(aww->get_root(), gb_main, &item_type_experiment, descriptor->get_internal_maskname(), descriptor->is_local_mask());
104    }
105}
106
107static void EXP_create_mask_submenu(AW_window_menu_modes *awm, GBDATA *gb_main) {
108    AWT_create_mask_submenu(awm, AWT_IT_EXPERIMENT, EXP_open_mask_window, (AW_CL)gb_main);
109}
110
111static AW_window *create_colorize_experiments_window(AW_root *aw_root, AW_CL cl_gb_main) {
112    GBDATA *gb_main = (GBDATA*)cl_gb_main;
113    return QUERY::create_colorize_items_window(aw_root, gb_main, EXP_get_selector());
114}
115
116static void EXP_run_pgt(AW_window *aww, AW_CL, AW_CL) {
117    AW_system(aww, "arb_pgt &", 0);
118}
119
120void EXP_create_experiments_submenu(AW_window_menu_modes *awm, GBDATA *gb_main, bool submenu) {
121    const char *title  = "Experiment";
122    const char *hotkey = "x";
123
124    if (submenu) awm->insert_sub_menu(title, hotkey);
125    else awm->create_menu(title, hotkey, AWM_ALL);
126
127    {
128        awm->insert_menu_topic("experiment_info",   "Experiment information", "i", "experiment_info.hlp",   AWM_ALL, EXP_popup_experiment_window, (AW_CL)gb_main,                            0);
129        awm->insert_menu_topic("experiment_search", "Search and query",       "q", "experiment_search.hlp", AWM_ALL, AW_POPUP,                    (AW_CL)EXP_create_experiment_query_window, (AW_CL)gb_main);
130
131        EXP_create_mask_submenu(awm, gb_main);
132
133        awm->sep______________();
134        awm->insert_menu_topic("experiment_colors",     "Colors ...",           "C",    "mark_colors.hlp", AWM_ALL, AW_POPUP,  (AW_CL)create_colorize_experiments_window, (AW_CL)gb_main);
135
136        awm->sep______________();
137        awm->insert_menu_topic("pgt", "Proteom Genome Toolkit (PGT)", "P", "pgt.hlp", AWM_ALL, EXP_run_pgt, 0, 0);
138    }
139    if (submenu) awm->close_sub_menu();
140}
141
Note: See TracBrowser for help on using the repository browser.