source: branches/port5/AWT/AWT_macro.cxx

Last change on this file was 5972, checked in by westram, 15 years ago
  • cosmetics
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.6 KB
Line 
1// ==================================================================== //
2//                                                                      //
3//   File      : AWT_macro.cxx                                          //
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
14#include <stdlib.h>
15#include <stdio.h>
16
17#include <arbdb.h>
18
19#include <aw_window.hxx>
20#include <aw_global.hxx>
21
22#include "awt.hxx"
23#include "awt_macro.hxx"
24
25// ---------------
26//      MACROS
27// ---------------
28
29#define AWAR_MACRO_BASE                 "tmp/macro"
30#define AWAR_MACRO_RECORDING_MACRO_TEXT AWAR_MACRO_BASE"/button_label"
31
32static void awt_delete_macro_cb(AW_window *aww){
33    AW_root *awr = aww->get_root();
34    char    *mn  = awt_get_selected_fullname(awr, AWAR_MACRO_BASE);
35
36    if (GB_unlink(mn)<0) aw_message(GB_await_error());
37    else awt_refresh_selection_box(awr, AWAR_MACRO_BASE);
38
39    free(mn);
40}
41
42
43
44static void awt_exec_macro_cb(AW_window *aww){
45    AW_root  *awr   = aww->get_root();
46    char     *mn    = awt_get_selected_fullname(awr, AWAR_MACRO_BASE);
47    GB_ERROR  error = awr->execute_macro(mn);
48
49    if (error) aw_message(error);
50    free(mn);
51}
52
53static void awt_start_macro_cb(AW_window *aww,const char *application_name_for_macros){
54    static int toggle = 0;
55
56    AW_root  *awr = aww->get_root();
57    //     char     *mn  = awr->awar(AWAR_MACRO_FILENAME)->read_string();
58    GB_ERROR  error;
59
60    if (!toggle){
61        char *sac = GBS_global_string_copy("%s/%s",aww->window_defaults_name,AWAR_MACRO_RECORDING_MACRO_TEXT);
62        char *mn  = awt_get_selected_fullname(awr, AWAR_MACRO_BASE);
63        error     = awr->start_macro_recording(mn,application_name_for_macros,sac);
64        free(mn);
65        free(sac);
66        if (!error){
67            awr->awar(AWAR_MACRO_RECORDING_MACRO_TEXT)->write_string("STOP");
68            toggle = 1;
69        }
70    }
71    else {
72        error = awr->stop_macro_recording();
73        awt_refresh_selection_box(awr, AWAR_MACRO_BASE);
74        awr->awar(AWAR_MACRO_RECORDING_MACRO_TEXT)->write_string("RECORD");
75        toggle = 0;
76    }
77    if (error) aw_message(error);
78}
79
80// static void awt_stop_macro_cb(AW_window *aww){
81//     AW_root  *awr   = aww->get_root();
82//     GB_ERROR  error = awr->stop_macro_recording();
83
84//     awt_refresh_selection_box(awr, AWAR_MACRO_BASE);
85//     if (error) aw_message(error);
86// }
87
88static void awt_edit_macro_cb(AW_window *aww){
89    //     char *mn = aww->get_root()->awar(AWAR_MACRO_FILENAME)->read_string();
90    //     char *path = 0;
91    //     if (mn[0] == '/'){
92    //         path = strdup(mn);
93    //     }else{
94    //         path = GBS_global_string_copy("%s/%s",GB_getenvARBMACROHOME(),mn);
95    //     }
96    char *path = awt_get_selected_fullname(aww->get_root(), AWAR_MACRO_BASE);
97    AWT_edit(path);
98    free(path);
99    //     delete mn;
100}
101
102
103AW_window *awt_open_macro_window(AW_root *aw_root,const char *application_id){
104    static AW_window_simple *aws = 0;
105   
106    if (!aws) {
107        aws = new AW_window_simple;
108        aws->init( aw_root, "MACROS", "MACROS");
109        aws->load_xfig("macro_select.fig");
110
111        aw_create_selection_box_awars(aw_root, AWAR_MACRO_BASE, ".", ".amc", "");
112
113        aw_root->awar_string(AWAR_MACRO_RECORDING_MACRO_TEXT,"RECORD");
114
115        aws->at("close");aws->callback((AW_CB0)AW_POPDOWN);
116        aws->create_button("CLOSE", "CLOSE","C");
117
118        aws->at("help");aws->callback(AW_POPUP_HELP,(AW_CL)"macro.hlp");
119        aws->create_button("HELP", "HELP");
120
121        aws->at("start");aws->callback((AW_CB1)awt_start_macro_cb,(AW_CL)application_id);
122        aws->create_button(0, AWAR_MACRO_RECORDING_MACRO_TEXT);
123
124        aws->at("delete");aws->callback(awt_delete_macro_cb);
125        aws->create_button("DELETE", "DELETE");
126
127        aws->at("edit");aws->callback(awt_edit_macro_cb);
128        aws->create_button("EDIT", "EDIT");
129
130        aws->at("exec");aws->callback(awt_exec_macro_cb);
131        aws->create_button("EXECUTE", "EXECUTE");
132
133        awt_create_selection_box((AW_window *)aws,AWAR_MACRO_BASE,"","ARBMACROHOME^ARBMACRO");
134    }
135    return aws;
136}
137
138
139
140
Note: See TracBrowser for help on using the repository browser.