1 | // =============================================================== // |
---|
2 | // // |
---|
3 | // File : sec_graphic.hxx // |
---|
4 | // Purpose : interface to structure GUI // |
---|
5 | // // |
---|
6 | // Institute of Microbiology (Technical University Munich) // |
---|
7 | // http://www.arb-home.de/ // |
---|
8 | // // |
---|
9 | // =============================================================== // |
---|
10 | |
---|
11 | |
---|
12 | #ifndef SEC_GRAPHIC_HXX |
---|
13 | #define SEC_GRAPHIC_HXX |
---|
14 | |
---|
15 | #ifndef _GLIBCXX_CCTYPE |
---|
16 | #include <cctype> |
---|
17 | #endif |
---|
18 | #ifndef AWT_CANVAS_HXX |
---|
19 | #include <awt_canvas.hxx> |
---|
20 | #endif |
---|
21 | |
---|
22 | using namespace AW; |
---|
23 | |
---|
24 | // names for database: |
---|
25 | #define NAME_OF_STRUCT_SEQ "_STRUCT" |
---|
26 | #define NAME_OF_REF_SEQ "_REF" |
---|
27 | |
---|
28 | class SEC_root; |
---|
29 | |
---|
30 | enum SEC_update_request { |
---|
31 | SEC_UPDATE_OK = 0, // no update needed |
---|
32 | // bit '1' is unused atm |
---|
33 | SEC_UPDATE_SHOWN_POSITIONS = 2, // recalculation of shown positions needed |
---|
34 | SEC_UPDATE_RECOUNT = 4, // complete relayout needed |
---|
35 | SEC_UPDATE_RELOAD = 8, // reload structure from DB |
---|
36 | }; |
---|
37 | |
---|
38 | class SEC_base; |
---|
39 | |
---|
40 | class SEC_graphic FINAL_TYPE : public AWT_graphic, virtual Noncopyable { |
---|
41 | SEC_update_request update_requested; |
---|
42 | char *load_error; // error occurred during load() |
---|
43 | |
---|
44 | void update_structure() OVERRIDE; |
---|
45 | |
---|
46 | protected: |
---|
47 | |
---|
48 | AW_device *disp_device; // device for recursive functions |
---|
49 | |
---|
50 | GB_ERROR handleKey(AW_event_type event, AW_key_mod key_modifier, AW_key_code key_code, char key_char); |
---|
51 | GB_ERROR handleMouse(AW_device *device, AW_event_type event, int button, AWT_COMMAND_MODE cmd, const Position& world, SEC_base *elem, int abspos); |
---|
52 | |
---|
53 | public: |
---|
54 | |
---|
55 | GBDATA *gb_main; |
---|
56 | AW_root *aw_root; |
---|
57 | SEC_root *sec_root; |
---|
58 | |
---|
59 | GBDATA *gb_struct; // used to save the structure |
---|
60 | GBDATA *gb_struct_ref; // used to save reference numbers |
---|
61 | |
---|
62 | mutable long last_saved; // the transaction serial id when we last saved everything |
---|
63 | |
---|
64 | // *********** public section |
---|
65 | SEC_graphic(AW_root *aw_root, GBDATA *gb_main); |
---|
66 | ~SEC_graphic() OVERRIDE; |
---|
67 | |
---|
68 | AW_gc_manager *init_devices(AW_window *, AW_device *, AWT_canvas *scr) OVERRIDE; |
---|
69 | |
---|
70 | void show(AW_device *device) OVERRIDE; |
---|
71 | void handle_command(AW_device *device, AWT_graphic_event& event) OVERRIDE; |
---|
72 | |
---|
73 | GB_ERROR load_from_DB(GBDATA *gb_main, const char *name) OVERRIDE; // load structure from DB |
---|
74 | GB_ERROR save_to_DB(GBDATA *gb_main, const char *name) OVERRIDE; // save structure to DB |
---|
75 | void check_for_DB_update(GBDATA *gb_main) OVERRIDE; |
---|
76 | void notify_synchronized(GBDATA *gb_main) OVERRIDE; |
---|
77 | |
---|
78 | GB_ERROR write_data_to_db(const char *data, const char *x_string) const; |
---|
79 | GB_ERROR read_data_from_db(char **data, char **x_string) const; |
---|
80 | |
---|
81 | void request_update(SEC_update_request req) { |
---|
82 | update_requested = static_cast<SEC_update_request>(update_requested|req); |
---|
83 | exports.request_structure_update(); |
---|
84 | } |
---|
85 | }; |
---|
86 | |
---|
87 | |
---|
88 | #endif |
---|