00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef APP_VIEW_H
00029 #define APP_VIEW_H
00030
00031 class ViewControl : public AppBase{
00032 public:
00033 ViewControl(char *title, int nx, int ny, int ChNo, Scan *scan=NULL, int ZoomFac=1, int QuenchFac=1);
00034 virtual ~ViewControl();
00035
00036 void Resize(char *title, int nx, int ny, int ChNo, Scan *scan=NULL, int ZoomFac=1, int QuenchFac=1);
00037
00038 virtual void AppWidgetInit(gchar *title, int InWindow=TRUE);
00039
00040 static void view_file_openhere_callback (GtkWidget *widget, ViewControl *vc);
00041 static void view_file_save_callback (GtkWidget *widget, ViewControl *vc);
00042 static void view_file_save_as_callback (GtkWidget *widget, ViewControl *vc);
00043 static void view_file_saveimage_callback (GtkWidget *widget, ViewControl *vc);
00044 static void view_file_saveobjects_callback (GtkWidget *widget, ViewControl *vc);
00045 static void view_file_loadobjects_callback (GtkWidget *widget, ViewControl *vc);
00046 static void view_file_getinfo_callback (GtkWidget *widget, ViewControl *vc);
00047 static void view_file_print_callback (GtkWidget *widget, ViewControl *vc);
00048 static void view_file_kill_callback (GtkWidget *widget, ViewControl *vc);
00049 static void view_edit_copy_callback (GtkWidget *widget, ViewControl *vc);
00050 static void view_edit_crop_callback (GtkWidget *widget, ViewControl *vc);
00051 static void view_edit_zoomin_callback (GtkWidget *widget, ViewControl *vc);
00052 static void view_edit_zoomout_callback (GtkWidget *widget, ViewControl *vc);
00053 static void view_tool_removeall_callback (GtkWidget *widget, ViewControl *vc);
00054 static void view_tool_mvprop_r2_callback (GtkWidget *widget, ViewControl *vc);
00055 static void view_tool_mvprop_r5_callback (GtkWidget *widget, ViewControl *vc);
00056 static void view_tool_mvprop_r10_callback (GtkWidget *widget, ViewControl *vc);
00057 static void view_tool_mvprop_r20_callback (GtkWidget *widget, ViewControl *vc);
00058 static void view_tool_mvprop_r50_callback (GtkWidget *widget, ViewControl *vc);
00059 static void view_tool_mvprop_r100_callback (GtkWidget *widget, ViewControl *vc);
00060 static void view_tool_all2locmax_callback (GtkWidget *widget, ViewControl *vc);
00061 static void view_tool_addpoint (GtkWidget *widget, ViewControl *vc);
00062 static void view_tool_addpoint_callback (GtkWidget *widget, ViewControl *vc);
00063 static void view_tool_addshowpoint (GtkWidget *widget, ViewControl *vc);
00064 static void view_tool_addshowpoint_callback (GtkWidget *widget, ViewControl *vc);
00065 static void view_tool_addline (GtkWidget *widget, ViewControl *vc);
00066 static void view_tool_addline_callback (GtkWidget *widget, ViewControl *vc);
00067 static void view_tool_addpolyline (GtkWidget *widget, ViewControl *vc);
00068 static void view_tool_addpolyline_callback (GtkWidget *widget, ViewControl *vc);
00069 static void view_tool_addksys (GtkWidget *widget, ViewControl *vc);
00070 static void view_tool_addksys_callback (GtkWidget *widget, ViewControl *vc);
00071 static void view_tool_addparabel (GtkWidget *widget, ViewControl *vc);
00072 static void view_tool_addparabel_callback (GtkWidget *widget, ViewControl *vc);
00073 static void view_tool_addrectangle (GtkWidget *widget, ViewControl *vc);
00074 static void view_tool_addrectangle_callback (GtkWidget *widget, ViewControl *vc);
00075 static void view_tool_addcircle (GtkWidget *widget, ViewControl *vc);
00076 static void view_tool_addcircle_callback (GtkWidget *widget, ViewControl *vc);
00077 static void view_tool_addshowcircle (GtkWidget *widget, ViewControl *vc);
00078 static void view_tool_addshowcircle_callback (GtkWidget *widget, ViewControl *vc);
00079 static void view_tool_showline (GtkWidget *widget, ViewControl *vc);
00080 static void view_tool_showline_callback (GtkWidget *widget, ViewControl *vc);
00081 static void view_tool_disable_callback (GtkWidget *widget, ViewControl *vc);
00082 static void view_tool_labels_callback (GtkWidget *widget, ViewControl *vc);
00083 static void view_view_quick_callback (GtkWidget *widget, ViewControl *vc);
00084 static void view_view_direct_callback (GtkWidget *widget, ViewControl *vc);
00085 static void view_view_planesub_callback (GtkWidget *widget, ViewControl *vc);
00086 static void view_view_log_callback (GtkWidget *widget, ViewControl *vc);
00087 static void view_view_horizont_callback (GtkWidget *widget, ViewControl *vc);
00088 static void view_view_periodic_callback (GtkWidget *widget, ViewControl *vc);
00089 static void view_view_differential_callback (GtkWidget *widget, ViewControl *vc);
00090 static void view_view_redline_callback (GtkWidget *widget, ViewControl *vc);
00091 static void view_view_autozoom_callback (GtkWidget *widget, ViewControl *vc);
00092 static void view_view_color_callback (GtkWidget *widget, ViewControl *vc);
00093
00094 static void view_view_coord_absolute_callback (GtkWidget *widget, ViewControl *vc);
00095 static void view_view_coord_relative_callback (GtkWidget *widget, ViewControl *vc);
00096 static void view_view_coord_pixels_callback (GtkWidget *widget, ViewControl *vc);
00097 static void view_view_toggleoffset_callback (GtkWidget *widget, ViewControl *vc);
00098 static void view_view_zoom_in_callback (GtkWidget *widget, ViewControl *vc){
00099 if(vc->ZoomQFkt) (*vc->ZoomQFkt)(1,0,vc->ZQFktData); };
00100 static void view_view_zoom_out_callback (GtkWidget *widget, ViewControl *vc){
00101 if(vc->ZoomQFkt) (*vc->ZoomQFkt)(0,1,vc->ZQFktData); };
00102 static void view_view_zoom10_1_callback (GtkWidget *widget, ViewControl *vc);
00103 static void view_view_zoom5_1_callback (GtkWidget *widget, ViewControl *vc);
00104 static void view_view_zoom4_1_callback (GtkWidget *widget, ViewControl *vc);
00105 static void view_view_zoom3_1_callback (GtkWidget *widget, ViewControl *vc);
00106 static void view_view_zoom2_1_callback (GtkWidget *widget, ViewControl *vc);
00107 static void view_view_zoom1_1_callback (GtkWidget *widget, ViewControl *vc);
00108 static void view_view_zoom1_2_callback (GtkWidget *widget, ViewControl *vc);
00109 static void view_view_zoom1_3_callback (GtkWidget *widget, ViewControl *vc);
00110 static void view_view_zoom1_4_callback (GtkWidget *widget, ViewControl *vc);
00111 static void view_view_zoom1_5_callback (GtkWidget *widget, ViewControl *vc);
00112 static void view_view_zoom1_10_callback (GtkWidget *widget, ViewControl *vc);
00113
00114 static void events_probe_callback (GtkWidget *widget, ViewControl *vc);
00115 static void events_user_callback (GtkWidget *widget, ViewControl *vc);
00116 static void events_labels_callback (GtkWidget *widget, ViewControl *vc);
00117 static void events_verbose_callback (GtkWidget *widget, ViewControl *vc);
00118 static void events_remove_callback (GtkWidget *widget, ViewControl *vc);
00119 void events_update ();
00120
00121 static void Activate_callback (GtkWidget *widget, ViewControl *vc);
00122 static void SetOff_callback (GtkWidget *widget, ViewControl *vc);
00123 static void SetOn_callback (GtkWidget *widget, ViewControl *vc);
00124 static void SetMath_callback (GtkWidget *widget, ViewControl *vc);
00125 static void SetX_callback (GtkWidget *widget, ViewControl *vc);
00126 static void AutoDisp_callback (GtkWidget *widget, ViewControl *vc);
00127
00128 static void obj_remove_callback (GtkWidget *widget, VObject *vo);
00129 static void obj_properties_callback (GtkWidget *widget, VObject *vo);
00130 static void obj_dump_callback (GtkWidget *widget, VObject *vo);
00131 static void obj_setoffset_callback (GtkWidget *widget, VObject *vo);
00132 static void obj_getcoords_callback (GtkWidget *widget, VObject *vo);
00133 static void obj_follow_callback (GtkWidget *widget, VObject *vo);
00134 static void obj_go_locmax_callback (GtkWidget *widget, VObject *vo);
00135 static void obj_addnode_callback (GtkWidget *widget, VObject *vo);
00136 static void obj_delnode_callback (GtkWidget *widget, VObject *vo);
00137 static void obj_event_use_callback (GtkWidget *widget, VObject *vo);
00138 static void obj_event_open_callback (GtkWidget *widget, VObject *vo);
00139 static void obj_event_save_callback (GtkWidget *widget, VObject *vo);
00140
00141 static void obj_event_plot_callback (GtkWidget *widget, ViewControl *vc);
00142
00143 static void move2locmax_obj(VObject *vo, ViewControl *vc){ vo->GoLocMax(vc->local_radius); };
00144 static void obj_label_on(VObject *vo, ViewControl *vc){ vo->show_label(1); };
00145 static void obj_label_off(VObject *vo, ViewControl *vc){ vo->show_label(0); };
00146 static void remove_obj(VObject *vo, ViewControl *vc){
00147 vc->scan->del_object (vo->obj_id ());
00148 delete vo;
00149 };
00150 static void unflag_scan_event_and_remove_obj(VObject *vo, ViewControl *vc){
00151 vo->get_scan_event () -> flag = FALSE;
00152 vc->scan->del_object (vo->obj_id ());
00153 delete vo;
00154 };
00155 static void activate_obj(VObject *vo, ViewControl *vc){ vo->set_color_to_active(); vo->set_marker_scale (1./vc->vinfo->GetZfac()); };
00156 static void deactivate_obj(VObject *vo, ViewControl *vc){ vo->set_color_to_inactive(); vo->set_marker_scale (1./vc->vinfo->GetZfac()); };
00157 static void save_obj(VObject *vo, ViewControl *vc){ vo->save(vc->objsavestream); };
00158 static void save_obj_HPGL(VObject *vo, ViewControl *vc){ vo->saveHPGL(vc->objsavestream); };
00159
00160 static gint canvas_event_cb(GnomeCanvasItem *item, GdkEvent *event, ViewControl *vo);
00161
00162 void SetTitle(char *title);
00163 void SetActive(int flg);
00164 void CheckRedLine();
00165 void CheckOptions();
00166 GtkWidget *GetCanvas(){ return canvas; };
00167 ShmImage2D *GetXImg(){ return ximg; };
00168
00169 void AddObject(VObject *vo);
00170 void MoveAllObjects2LocMax();
00171 void CheckAllObjectsLabels (int flg=-1);
00172 void RemoveObjects();
00173 void SaveObjects();
00174 void SaveObjectsHPGL();
00175
00176 void SetEventFilter(gchar *filter);
00177 void RescanEventObjects();
00178 void RemoveEventObjects();
00179 static void add_event_obj(ScanEvent *se, ViewControl *vc);
00180
00181 void SetEventLabels(int mode);
00182 static void set_event_label(ScanEvent *se, ViewControl *vc);
00183
00184 void SetZoomQFkt(int (*ZQFkt)(int, int, Grey2D*), Grey2D *data){ ZoomQFkt = ZQFkt; ZQFktData=data; };
00185
00186 void PaintAllRegionsInactive ();
00187 void PaintAllRegionsActive ();
00188
00189 void update_trace (double *xy, int len);
00190 void remove_trace ();
00191 void update_event_panel (ScanEvent *se);
00192
00193 private:
00194 void (*AddObjFkt)(GtkWidget*, ViewControl*);
00195 int (*ZoomQFkt)(int, int, Grey2D*);
00196 Grey2D *ZQFktData;
00197
00198 int rulewidth;
00199 int npx,npy;
00200 int chno;
00201
00202 int local_radius;
00203 Scan *scan;
00204 ProfileControl *RedLine;
00205 ProfileControl *EventPlot;
00206
00207 ViewInfo *vinfo;
00208 GSList *gobjlist;
00209 GSList *geventlist;
00210 GtkWidget *VPopup;
00211
00212 GtkWidget *canvas;
00213 GtkWidget *gridnet;
00214 GnomeCanvasItem *ActiveFrame;
00215 GnomeCanvasItem *CrossHairCursor;
00216 double CursorXYVt[4];
00217 double CursorRadius;
00218 gint MaxNumberEvents;
00219 double ArrowSize;
00220 Gtk_EntryControl* ec_zoom;
00221 Gtk_EntryControl* ec_radius;
00222 Gtk_EntryControl* ec_number;
00223 Gtk_EntryControl* ec_arrowsize;
00224 GtkWidget* tog_plot;
00225 GtkWidget* tog_average;
00226 GtkWidget* control_box;
00227
00228 guint active_event_num_channels;
00229 guint active_event_num_events;
00230 GtkWidget* active_event_xchan;
00231 GtkWidget* active_event_ychan;
00232 GtkWidget* active_event_list;
00233 GtkWidget* control_box_event_xysel;
00234
00235 ScanEvent* active_event;
00236
00237
00238 ShmImage2D *ximg;
00239
00240 VObTrace *v_trace;
00241
00242 gchar *event_filter;
00243
00244 std::ofstream objsavestream;
00245 std::ifstream objloadstream;
00246 };
00247
00248 #endif