source: tags/cvs_2_svn/GENOM/EXP_main.cxx

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