app_view.h

Go to the documentation of this file.
00001 /* Gxsm - Gnome X Scanning Microscopy
00002  * universal STM/AFM/SARLS/SPALEED/... controlling and
00003  * data analysis software
00004  * 
00005  * Copyright (C) 1999,2000,2001,2002,2003 Percy Zahl
00006  *
00007  * Authors: Percy Zahl <zahl@users.sf.net>
00008  * additional features: Andreas Klust <klust@users.sf.net>
00009  * WWW Home: http://gxsm.sf.net
00010  *
00011  * This program is free software; you can redistribute it and/or modify
00012  * it under the terms of the GNU General Public License as published by
00013  * the Free Software Foundation; either version 2 of the License, or
00014  * (at your option) any later version.
00015  *
00016  * This program is distributed in the hope that it will be useful,
00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00019  * GNU General Public License for more details.
00020  *
00021  * You should have received a copy of the GNU General Public License
00022  * along with this program; if not, write to the Free Software
00023  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
00024  */
00025 
00026 /* -*- Mode: C++; indent-tabs-mode: nil; c-basic-offset: 8 c-style: "K&R" -*- */
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

Generated on Sat Apr 1 09:03:50 2006 for GXSM by  doxygen 1.4.6