source: branches/species/GENOM/EXP_main.cxx

Last change on this file was 19613, checked in by westram, 2 months ago
  • reintegrates 'lib' into 'trunk'
    • replace dynamic library AWT by several static libraries: APP, ARB_SPEC, MASKS, CANVAS, MAPKEY, GUI_TK
    • now also check wrong library dependencies for untested units (only4me)
  • adds: log:branches/lib@19578:19612
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.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 <input_mask.hxx>
18#include <aw_awars.hxx>
19#include <aw_window.hxx>
20#include <aw_root.hxx>
21#include <arbdbt.h>
22#include <db_query.h>
23#include <rootAsWin.h>
24
25using namespace std;
26
27static void EXP_update_combined_cb(AW_root *awr) {
28    char       *organism   = awr->awar(AWAR_ORGANISM_NAME)->read_string();
29    char       *experiment = awr->awar(AWAR_EXPERIMENT_NAME)->read_string();
30    const char *combined   = GBS_global_string("%s/%s", organism, experiment);
31    awr->awar(AWAR_COMBINED_EXPERIMENT_NAME)->write_string(combined);
32    free(experiment);
33    free(organism);
34}
35
36void EXP_create_awars(AW_root *aw_root, AW_default /* aw_def */, GBDATA *gb_main) {
37    aw_root->awar_string(AWAR_EXPERIMENT_NAME,          "", gb_main)->add_callback(EXP_update_combined_cb);
38    aw_root->awar_string(AWAR_PROTEOM_NAME,             "", gb_main);
39    aw_root->awar_string(AWAR_PROTEIN_NAME,             "", gb_main);
40    aw_root->awar_string(AWAR_ORGANISM_NAME,            "", gb_main)->add_callback(EXP_update_combined_cb);
41    aw_root->awar_string(AWAR_COMBINED_EXPERIMENT_NAME, "", gb_main);
42    aw_root->awar_string(AWAR_SPECIES_NAME,             "", gb_main);
43}
44
45// ---------------------------------------
46//      EXP_item_type_species_selector
47
48struct EXP_item_type_species_selector : public awt_item_type_selector {
49    EXP_item_type_species_selector() : awt_item_type_selector(AWT_IT_EXPERIMENT) {}
50    ~EXP_item_type_species_selector() OVERRIDE {}
51
52    const char *get_self_awar() const OVERRIDE {
53        return AWAR_COMBINED_EXPERIMENT_NAME;
54    }
55    size_t get_self_awar_content_length() const OVERRIDE {
56        return 12 + 1 + 40; // species-name+'/'+experiment_name
57    }
58    GBDATA *current(AW_root *root, GBDATA *gb_main) const OVERRIDE { // give the current item
59        char   *species_name    = root->awar(AWAR_ORGANISM_NAME)->read_string();
60        char   *experiment_name = root->awar(AWAR_EXPERIMENT_NAME)->read_string();
61        GBDATA *gb_experiment   = NULp;
62
63        if (species_name[0] && experiment_name[0]) {
64            GB_transaction ta(gb_main);
65            GBDATA *gb_species = GBT_find_species(gb_main, species_name);
66            if (gb_species) {
67                gb_experiment = EXP_find_experiment(gb_species, experiment_name);
68            }
69        }
70
71        free(experiment_name);
72        free(species_name);
73
74        return gb_experiment;
75    }
76    const char *getKeyPath() const OVERRIDE { // give the keypath for items
77        return CHANGE_KEY_PATH_EXPERIMENTS;
78    }
79};
80
81static EXP_item_type_species_selector item_type_experiment;
82
83static void EXP_open_mask_window(AW_window *aww, int id, GBDATA *gb_main) {
84    const awt_input_mask_descriptor *descriptor = AWT_look_input_mask(id);
85    exp_assert(descriptor);
86    if (descriptor) {
87        AWT_initialize_input_mask(aww->get_root(), gb_main, &item_type_experiment, descriptor->get_internal_maskname(), descriptor->is_local_mask());
88    }
89}
90
91static void EXP_create_mask_submenu(AW_window_menu_modes *awm, GBDATA *gb_main) {
92    AWT_create_mask_submenu(awm, AWT_IT_EXPERIMENT, EXP_open_mask_window, gb_main);
93}
94
95static AW_window *create_colorize_experiments_window(AW_root *aw_root, GBDATA *gb_main) {
96    return QUERY::create_colorize_items_window(aw_root, gb_main, EXP_get_selector());
97}
98
99void EXP_create_experiments_submenu(AW_window_menu_modes *awm, GBDATA *gb_main, bool submenu) {
100    const char *title  = "Experiment";
101    const char *hotkey = "x";
102
103    if (submenu) awm->insert_sub_menu(title, hotkey);
104    else awm->create_menu(title, hotkey, AWM_ALL);
105
106    {
107        awm->insert_menu_topic("experiment_info",                  "Experiment information", "i", "experiment_info.hlp",   AWM_ALL, RootAsWindowCallback::simple(EXP_popup_experiment_window,        gb_main));
108        awm->insert_menu_topic(awm->local_id("experiment_search"), "Search and query",       "q", "experiment_search.hlp", AWM_ALL, makeCreateWindowCallback    (EXP_create_experiment_query_window, gb_main));
109
110        EXP_create_mask_submenu(awm, gb_main);
111
112        awm->sep______________();
113        awm->insert_menu_topic(awm->local_id("experiment_colors"), "Colors ...", "C", "colorize.hlp", AWM_ALL, makeCreateWindowCallback(create_colorize_experiments_window, gb_main));
114    }
115    if (submenu) awm->close_sub_menu();
116}
117
Note: See TracBrowser for help on using the repository browser.