Beispiel #1
0
XttSevHist::XttSevHist( void *parent_ctx,
		      const char *name,
		      pwr_tOid *xn_oid,
		      pwr_tOName *xn_aname,
		      sevcli_tCtx xn_scctx,
		      int *sts,
          bool sevhistobject) :
  xnav(parent_ctx), gcd(0), curve(0), rows(0), vsize(0), timerid(0), close_cb(0), help_cb(0), 
  first_scan(1), scctx(xn_scctx), oid(xn_oid[0]), time_low_old(0), time_high_old(0), sevhistobject(sevhistobject)
{
  strncpy( aname, xn_aname[0], sizeof(aname));

  get_data( sts, pwr_cNTime, pwr_cNTime);
  if ( EVEN(*sts)) return;

  cdh_StrncpyCutOff( title, name, sizeof(title), 1);
}
Beispiel #2
0
void WFoeMotif::set_title()
{
  Arg 		args[2];

  if ( function == EDIT) {
    pwr_tOName new_title;
    
    strcpy( new_title, "*** ");
    cdh_StrncpyCutOff( &new_title[4], name, sizeof(new_title)-4, 0);

    XtSetArg(args[0],XmNtitle, new_title);
    XtSetValues( parent_wid, args, 1);
  }
  else if ( function == VIEW) {
    pwr_tOName new_title;

    strcpy( new_title, name);

    XtSetArg(args[0],XmNtitle, new_title);
    XtSetValues( parent_wid, args, 1);
  }
}
Beispiel #3
0
XttTCurve::XttTCurve( void *parent_ctx,
		      const char *name,
		      pwr_tAttrRef *xn_arefv,
		      int xn_color_theme,
		      int *sts) :
  xnav(parent_ctx), gcd(0), curve(0), rows(0), vsize(0), timerid(0), close_cb(0), help_cb(0), 
  get_select_cb(0), first_scan(1), time_low_old(0), time_high_old(0), color_theme(xn_color_theme)
{
  pwr_tTime from, to;

  memset( &tc, 0, sizeof(tc));

  if ( xn_arefv == 0 || xn_arefv[0].Objid.vid == 0) {
    aref_cnt = 0;
    gcd = new GeCurveData( curve_eDataType_DsTrend);
    *sts = 1;
    return;
  }

  // Count number of curves
  for ( aref_cnt = 0; xn_arefv[aref_cnt].Objid.vid != 0; aref_cnt++) ;

  if ( aref_cnt > XTT_TCURVE_MAX)
    aref_cnt = XTT_TCURVE_MAX;

  memcpy( arefv, xn_arefv, aref_cnt * sizeof(arefv[0]));

  time_Period( time_ePeriod_OneMinute, &from, &to, 0, 0);
  if ( aref_cnt == 1) {
    get_data( sts, from, to);
    if ( EVEN(*sts)) return;
  }
  else {
    get_multidata( sts, from, to);
    if ( EVEN(*sts)) return;
  }
  cdh_StrncpyCutOff( title, name, sizeof(title), 1);
}
Beispiel #4
0
WGeMotif::WGeMotif( Widget wge_parent_wid, void *wge_parent_ctx, char *wge_name, char *wge_filename,
	  int wge_scrollbar, int wge_menu, int wge_navigator, int wge_width, int wge_height, 
	  int x, int y, char *object_name, int wge_modal = 0) :
  WGe(wge_parent_ctx, wge_name, wge_filename, wge_scrollbar, wge_menu, wge_navigator, wge_width,
      wge_height, x, y, object_name, wge_modal),
  parent_wid(wge_parent_wid), value_dialog(0), set_focus_disabled(0), focus_timerid(0)
{
  pwr_tFileName	uid_filename = {"$pwr_exe/wb_wge.uid"};
  char		*uid_filename_p = uid_filename;
  Arg 		args[20];
  pwr_tStatus	sts;
  char 		title[300];
  int		i;
  MrmHierarchy s_DRMh;
  MrmType dclass;
  Widget	wge_widget;
  char		wname[] = "Proview/R Ge";

  static char translations[] =
    "<ConfigureNotify>: resize()\n\
<FocusIn>: wge_inputfocus()";
  static XtTranslations compiled_translations = NULL;

  static XtActionsRec actions[] =
  {
    {(char*) "wge_inputfocus",      (XtActionProc) action_inputfocus},
    {(char*) "resize",      (XtActionProc) action_resize},
  };

  static MrmRegisterArg	reglist[] = {
        {(char*) "wge_ctx", 0 },
	{(char*) "wge_activate_exit",(caddr_t)activate_exit },
	{(char*) "wge_activate_zoom_in",(caddr_t)activate_zoom_in },
	{(char*) "wge_activate_zoom_out",(caddr_t)activate_zoom_out },
	{(char*) "wge_activate_zoom_reset",(caddr_t)activate_zoom_reset },
	{(char*) "wge_activate_help",(caddr_t)activate_help },
	{(char*) "wge_create_graph_form",(caddr_t)create_graph_form },
	{(char*) "wge_create_menu",(caddr_t)create_menu },
	{(char*) "wge_create_value_input",(caddr_t)create_value_input },
	{(char*) "wge_activate_value_input",(caddr_t)activate_value_input },
	{(char*) "wge_activate_confirm_ok",(caddr_t)activate_confirm_ok },
	{(char*) "wge_activate_confirm_cancel",(caddr_t)activate_confirm_cancel },
	{(char*) "wge_create_message_dia",(caddr_t)create_message_dia }
	};

  static int	reglist_num = (sizeof reglist / sizeof reglist[0]);

  dcli_translate_filename( uid_filename, uid_filename);

  // Create object context
  strcpy( filename, wge_filename);
  strcpy( name, wge_name);
  // command_cb = command_cb;
  // help_cb = help_cb;
  // close_cb = close_cb;
  // is_authorized_cb = is_authorized_cb;

  // Motif
  MrmInitialize();

  cdh_StrncpyCutOff( title, name, sizeof(title), 1);

  reglist[0].value = (caddr_t) this;


  sts = MrmOpenHierarchy( 1, &uid_filename_p, NULL, &s_DRMh);
  if (sts != MrmSUCCESS) printf("can't open %s\n", uid_filename);

  // Save the context structure in the widget
  i = 0;
  XtSetArg(args[i], XmNuserData, (XtPointer) this);i++;
  XtSetArg(args[i],XmNdeleteResponse, XmDO_NOTHING);i++;

  toplevel = XtCreatePopupShell( title, 
		topLevelShellWidgetClass, parent_wid, args, i);

  MrmRegisterNames(reglist, reglist_num);

  sts = MrmFetchWidgetOverride( s_DRMh, (char*) "wge_window", toplevel,
			wname, args, 1, &wge_widget, &dclass);
  if (sts != MrmSUCCESS)  printf("can't fetch %s\n", wname);

  sts = MrmFetchWidget(s_DRMh, (char*) "input_dialog", toplevel,
		&value_dialog, &dclass);
  if (sts != MrmSUCCESS)  printf("can't fetch input dialog\n");

  sts = MrmFetchWidget(s_DRMh, (char*) "confirm_dialog", toplevel,
		&confirm_widget, &dclass);
  if (sts != MrmSUCCESS)  printf("can't fetch confirm dialog\n");

  sts = MrmFetchWidget(s_DRMh, (char*) "message_dialog", toplevel,
		&message_dia_widget, &dclass);
  if (sts != MrmSUCCESS)  printf("can't fetch message dialog\n");

  MrmCloseHierarchy(s_DRMh);

  if (compiled_translations == NULL) 
    XtAppAddActions( XtWidgetToApplicationContext(toplevel), 
						actions, XtNumber(actions));
 
  if (compiled_translations == NULL) 
    compiled_translations = XtParseTranslationTable(translations);
  XtOverrideTranslations( wge_widget, compiled_translations);

  i = 0;
  if ( width == 0 || height == 0)
  {
    XtSetArg(args[i],XmNwidth,600);i++;
    XtSetArg(args[i],XmNheight,500);i++;
  }
  else
  {
    XtSetArg(args[i],XmNwidth,width);i++;
    XtSetArg(args[i],XmNheight,height);i++;
    XtSetArg(args[i], XmNminAspectX, width); i++;
    XtSetArg(args[i], XmNminAspectY, height); i++;
    XtSetArg(args[i], XmNmaxAspectX, width); i++;
    XtSetArg(args[i], XmNmaxAspectY, height); i++;
  }
  if ( !(x == 0 && y == 0))
  {
    XtSetArg(args[i],XmNx, x);i++;
    XtSetArg(args[i],XmNy, y);i++;
  }
  XtSetValues( toplevel, args,i);
    
  XtManageChild( wge_widget);

  if ( !menu)
    XtUnmanageChild( menu_widget);

  graph = new GraphMotif( this, graph_form, "Plant", 
		&grow_widget, &sts, "pwrp_exe:", graph_eMode_Runtime, 
		scrollbar, 1, object_name, 0, 0);
  ((Graph *)graph)->message_cb = &message;
  ((Graph *)graph)->close_cb = &graph_close_cb;
  ((Graph *)graph)->init_cb = &graph_init_cb;
  ((Graph *)graph)->change_value_cb = &change_value_cb;
  ((Graph *)graph)->confirm_cb = &confirm_cb;
  ((Graph *)graph)->message_dialog_cb = &message_dialog_cb;
  ((Graph *)graph)->command_cb = &wge_command_cb;
  ((Graph *)graph)->is_authorized_cb = &wge_is_authorized_cb;
 
  XtPopup( toplevel, XtGrabNone);

  if ( navigator)
  {
    // Create navigator popup

    i = 0;
    XtSetArg(args[i],XmNallowShellResize, TRUE); i++;
    XtSetArg(args[i],XmNallowResize, TRUE); i++;
    XtSetArg(args[i],XmNwidth,200);i++;
    XtSetArg(args[i],XmNheight,200);i++;
    XtSetArg(args[i],XmNx,500);i++;
    XtSetArg(args[i],XmNy,500);i++;
    XtSetArg(args[i],XmNdeleteResponse, XmDO_NOTHING);i++;

    nav_shell = XmCreateDialogShell( grow_widget, (char*) "Navigator",
        args, i);
    XtManageChild( nav_shell);

    ((GraphMotif *)graph)->create_navigator( nav_shell);
//    XtManageChild( nav_widget);
    XtRealizeWidget( nav_shell);
    ((Graph *)graph)->set_nav_background_color();
  }

  // Connect the window manager close-button to exit
  flow_AddCloseVMProtocolCb( toplevel, 
	(XtCallbackProc)activate_exit, this);

}
Beispiel #5
0
XttGeGtk::XttGeGtk( GtkWidget *xg_parent_wid, void *xg_parent_ctx, const char *xg_name, 
		    const char *xg_filename, int xg_scrollbar, int xg_menu, int xg_navigator, 
		    int xg_width, int xg_height, int x, int y, double scan_time, 
		    const char *object_name, int use_default_access, unsigned int access,
		    unsigned int options, void *basewidget,
		    int (*xg_command_cb) (void *, char *, void *),
		    int (*xg_get_current_objects_cb) (void *, pwr_sAttrRef **, int **),
		    int (*xg_is_authorized_cb) (void *, unsigned int)) :
  XttGe( xg_parent_ctx, xg_name, xg_filename, xg_scrollbar, xg_menu, xg_navigator, xg_width,
	 xg_height, x, y, scan_time, object_name, use_default_access, access, options,
	 xg_command_cb, xg_get_current_objects_cb, xg_is_authorized_cb), 
  parent_wid(xg_parent_wid), nav_shell(0), value_dialog(0), confirm_widget(0), message_dia_widget(0)
{
  int	window_width = 600;
  int   window_height = 500;
  GdkGeometry   geometry;
  pwr_tStatus sts;
  GtkMenuBar *menu_bar;
  char 		title[300];

  if ( xg_width != 0 && xg_height != 0) {
    window_width = xg_width;
    window_height = xg_height;
  }
  else {
    sts = Graph::get_dimension( filename, "pwrp_exe:", &window_width, &window_height);
    if ( EVEN(sts)) {
      window_width = 600;
      window_height = 500;
    }
  }
  cdh_StrncpyCutOff( title, name, sizeof(title), 1);
  char *titleutf8 = g_convert( title, -1, "UTF-8", "ISO8859-1", NULL, NULL, NULL);

  // Gtk
  if ( !(options & ge_mOptions_Embedded)) {
    toplevel = (GtkWidget *) g_object_new( GTK_TYPE_WINDOW, 
					   "default-height", window_height,
					   "default-width", window_width,
					   "title", titleutf8,
					   NULL);
    g_free( titleutf8);

    geometry.min_aspect = gdouble(window_width)/window_height;
    geometry.max_aspect = gdouble(window_width)/window_height * 1.02;
    gtk_window_set_geometry_hints( GTK_WINDOW(toplevel), GTK_WIDGET(toplevel),
				   &geometry, GDK_HINT_ASPECT);

    g_signal_connect( toplevel, "delete_event", G_CALLBACK(delete_event), this);
    g_signal_connect( toplevel, "destroy", G_CALLBACK(destroy_event), this);
    g_signal_connect( toplevel, "focus-in-event", G_CALLBACK(action_inputfocus), this);
    
    CoWowGtk::SetWindowIcon( toplevel);

    if ( basewidget) {
      gtk_window_set_transient_for(GTK_WINDOW(toplevel), GTK_WINDOW(basewidget));
    }

  }
  else {
    toplevel = parent_wid;
  }

  if ( xg_menu) {
    GtkAccelGroup *accel_g = (GtkAccelGroup *) g_object_new(GTK_TYPE_ACCEL_GROUP, NULL);
    gtk_window_add_accel_group(GTK_WINDOW(toplevel), accel_g);

    menu_bar = (GtkMenuBar *) g_object_new(GTK_TYPE_MENU_BAR, NULL);

    // File Entry
    GtkWidget *file_close = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLOSE, accel_g);
    g_signal_connect(file_close, "activate", G_CALLBACK(activate_exit), this);

    GtkMenu *file_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
    gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), file_close);

    GtkWidget *file = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_File"));
    gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), file);
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(file), GTK_WIDGET(file_menu));

    // View menu
    GtkWidget *view_zoom_in = gtk_image_menu_item_new_from_stock(GTK_STOCK_ZOOM_IN, NULL);
    g_signal_connect(view_zoom_in, "activate", G_CALLBACK(activate_zoom_in), this);
    gtk_widget_add_accelerator( view_zoom_in, "activate", accel_g,
				'i', GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);

    GtkWidget *view_zoom_out = gtk_image_menu_item_new_from_stock(GTK_STOCK_ZOOM_OUT, NULL);
    g_signal_connect(view_zoom_out, "activate", G_CALLBACK(activate_zoom_out), this);
    gtk_widget_add_accelerator( view_zoom_out, "activate", accel_g,
				'o', GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);

    GtkWidget *view_zoom_reset = gtk_image_menu_item_new_from_stock(GTK_STOCK_ZOOM_100, NULL);
    g_signal_connect(view_zoom_reset, "activate", G_CALLBACK(activate_zoom_reset), this);

    GtkMenu *view_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
    gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), view_zoom_in);
    gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), view_zoom_out);
    gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), view_zoom_reset);

    GtkWidget *view = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_View"));
    gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), view);
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(view), GTK_WIDGET(view_menu));

    // Menu Help
    GtkWidget *help_help = gtk_image_menu_item_new_from_stock(GTK_STOCK_HELP, accel_g);
    g_signal_connect(help_help, "activate", G_CALLBACK(activate_help), this);

    GtkMenu *help_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
    gtk_menu_shell_append(GTK_MENU_SHELL(help_menu), help_help);

    GtkWidget *help = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Help"));
    gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), help);
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(help), GTK_WIDGET(help_menu));
  }

  graph_form = gtk_vbox_new( FALSE, 0);
  graph = new GraphGtk( this, graph_form, "Plant", 
		&grow_widget, &sts, "pwrp_exe:", graph_eMode_Runtime, 
		scrollbar, 1, object_name, use_default_access, access);
  // graph->set_scantime( scan_time);
  graph->message_cb = &message_cb;
  graph->close_cb = &graph_close_cb;
  graph->init_cb = &graph_init_cb;
  graph->change_value_cb = &ge_change_value_cb;
  graph->confirm_cb = &confirm_cb;
  graph->message_dialog_cb = &message_dialog_cb;
  graph->command_cb = &ge_command_cb;
  graph->display_in_xnav_cb = &ge_display_in_xnav_cb;
  graph->is_authorized_cb = &ge_is_authorized_cb;
  graph->get_current_objects_cb = &ge_get_current_objects_cb;
  graph->popup_menu_cb = &ge_popup_menu_cb;
  graph->call_method_cb = &ge_call_method_cb;
  graph->sound_cb = &ge_sound_cb;
  graph->eventlog_cb = &ge_eventlog_cb;

  //g_signal_connect( graph_form, "check_resize", G_CALLBACK(action_resize), this);
  g_signal_connect( ((GraphGtk *)graph)->grow_widget, "size_allocate", G_CALLBACK(action_resize), this);

  if ( xg_menu)
    gtk_box_pack_start( GTK_BOX(graph_form), GTK_WIDGET(menu_bar), FALSE, FALSE, 0);
  gtk_box_pack_start( GTK_BOX(graph_form), GTK_WIDGET(grow_widget), TRUE, TRUE, 0);

  if ( !(options & ge_mOptions_Embedded)) {
    gtk_container_add( GTK_CONTAINER(toplevel), graph_form);

    gtk_widget_show_all( toplevel);

    if ( navigator) {
      // Create navigator popup
      nav_shell = (GtkWidget *) g_object_new( GTK_TYPE_WINDOW, 
					      "default-height", 200,
					      "default-width", 200,
					      "title", "Navigator",
					      NULL);
      g_signal_connect( nav_shell, "delete_event", G_CALLBACK(nav_delete_event), this);

      ((GraphGtk *)graph)->create_navigator( nav_shell);
      gtk_container_add( GTK_CONTAINER(nav_shell), ((GraphGtk *)graph)->nav_widget);

      gtk_widget_show_all( nav_shell);
      ((Graph *)graph)->set_nav_background_color();
    }

    if ( !(x == 0 && y == 0)) {
      // Set position
      gtk_window_move( GTK_WINDOW(toplevel), x, y);
    }

    if ( options & ge_mOptions_FullScreen)
      gtk_window_fullscreen( GTK_WINDOW(toplevel));
    else if ( options & ge_mOptions_Maximize)
      gtk_window_maximize( GTK_WINDOW(toplevel)); // TODO
    else if ( options & ge_mOptions_FullMaximize)
      gtk_window_maximize( GTK_WINDOW(toplevel));
    else if ( options & ge_mOptions_Iconify)
      gtk_window_iconify( GTK_WINDOW(toplevel));
    else if ( options & ge_mOptions_Invisible)
      g_object_set( toplevel, "visible", FALSE, NULL);
  }
  else {
    gtk_widget_set_size_request( graph_form, window_width, window_height);
  }

}
Beispiel #6
0
XttFast::XttFast( void *parent_ctx,
		  char *name,
		  pwr_sAttrRef *fast_arp,
		  int *sts) :
  xnav(parent_ctx), fast_cnt(0), timerid(0), close_cb(0), help_cb(0), first_scan(1),
  axis_configured(false)
{
  pwr_sAttrRef aref = pwr_cNAttrRef;
  pwr_tAName fast_name;
  pwr_tAName attr_name;
  pwr_sClass_DsFastCurve fp;
  int i, j;
    
  *sts = XNAV__SUCCESS;

  // Get current status of the fast objects
  i = 0;
  aref = *fast_arp;
  if ( cdh_ObjidIsNull( aref.Objid)) {
    *sts = XNAV__FASTCONFIG;
    return;
  }

  *sts = gdh_AttrrefToName( &aref, fast_name, sizeof(fast_name), 
			  cdh_mNName);
  if (EVEN(*sts)) return;

  *sts = gdh_GetObjectInfo( fast_name, &fp, sizeof(fp));
  if ( EVEN(*sts)) return;

  max_points = fp.NoOfPoints;
  fast_function = fp.Function;

  strcpy( attr_name, fast_name);
  strcat( attr_name, ".TriggTime");
  gdh_NameToAttrref( pwr_cNObjid, attr_name, &trigg_time_attr);

  if ( fast_function & fast_mFunction_BeforeTrigg) {
    strcpy( attr_name, fast_name);
    strcat( attr_name, ".TriggIndex");
    gdh_NameToAttrref( pwr_cNObjid, attr_name, &trigg_index_attr);

    strcpy( attr_name, fast_name);
    strcat( attr_name, ".FirstIndex");
    gdh_NameToAttrref( pwr_cNObjid, attr_name, &first_index_attr);

    strcpy( attr_name, fast_name);
    strcat( attr_name, ".LastIndex");
    gdh_NameToAttrref( pwr_cNObjid, attr_name, &last_index_attr);
  }

  // Create data for time axis
  gcd = new GeCurveData( curve_eDataType_DsTrend);
  gcd->x_data[0] = (double *) malloc( 8 * max_points);
  strcpy( gcd->x_name, "Time");
  gcd->x_axis_type[0] = curve_eAxis_x;
  memcpy( &time_buff, &fp.TimeBuffer, sizeof(time_buff));

  fast_cnt = 0;
  for ( i = 0; i < FAST_CURVES; i++) {
    if ( fp.CurveValid[i]) {
      gcd->y_data[fast_cnt] = (double *) calloc( 1, 8 * max_points);
      gcd->y_axis_type[fast_cnt] = curve_eAxis_y;
      memcpy( &buff[fast_cnt], &fp.Buffers[i], sizeof(buff[0]));
      type[fast_cnt] = (pwr_eType) fp.AttributeType[i];
      fast_idx[i] = fast_cnt;
      curve_idx[fast_cnt] = i;

      *sts = gdh_AttrrefToName( &fp.Attribute[i], attr_name, 
			    sizeof(attr_name), cdh_mNName);
      if (EVEN(*sts)) continue;
      strcpy( gcd->y_name[fast_cnt], attr_name);
      fast_cnt++;
    }
  }

  if ( !fast_cnt) {
    *sts = XNAV__NOVALIDCURVE;
    free(gcd);
    gcd = 0;
    return;
  }

  // Subscribe to object
  strcpy( attr_name, fast_name);
  strcat( attr_name, ".New");
  *sts = gdh_RefObjectInfo( attr_name, (pwr_tAddress *)&new_p, 
			    &new_subid, sizeof(pwr_tBoolean));
  if ( EVEN(*sts)) return;

  for ( i = 0; i < fast_cnt; i++) {
    switch( type[i]) {
      case pwr_eType_Float32:
      case pwr_eType_Int32:
      case pwr_eType_UInt32:
        element_size[i] = 4;
        break;
      case pwr_eType_Float64:
      case pwr_eType_Int64:
      case pwr_eType_UInt64:
        element_size[i] = 8;
        break;
      case pwr_eType_Int16:
      case pwr_eType_UInt16:
        element_size[i] = 2;
        break;
      case pwr_eType_Int8:
      case pwr_eType_UInt8:
        element_size[i] = 1;
        break;
      default:
        element_size[i] = 4;
    }
    gcd->rows[i] = max_points;
  }
  gcd->cols = fast_cnt;

  axis_configured = true;
  for ( i = 0; i < FAST_CURVES; i++) {
    if ( fp.CurveValid[i]) {
      j = fast_idx[i];
      if ( fp.YMinValue[i] != fp.YMaxValue[i])
	gcd->scale( gcd->y_axis_type[j], gcd->y_value_type[j],
		    fp.YMinValue[i],  fp.YMaxValue[i],
		    &gcd->y_min_value_axis[j], &gcd->y_max_value_axis[j],
		    &gcd->y_trend_lines[j], &gcd->y_axis_lines[j], &gcd->y_axis_linelongq[j], 
		    &gcd->y_axis_valueq[j], gcd->y_format[j], &gcd->y_axis_width[j], 1, 1);
      else
	axis_configured = false;
    }
  }


  if ( fp.Active)
    first_scan = 0;
  fast_scan( this);
  gcd->select_color( 0);

  if ( strcmp( fp.Title, "") != 0)
    strcpy( title, fp.Title);
  else
    cdh_StrncpyCutOff( title, name, sizeof(title), 1);

  // timerid = XtAppAddTimeOut(
  //	XtWidgetToApplicationContext(parent_widget), 1000,
  //	(XtTimerCallbackProc)fast_scan, this);
}
Beispiel #7
0
GeCurveMotif::GeCurveMotif( void 	*gc_parent_ctx, 
			    Widget 	parent_widget,
			    char	*curve_name,
			    char  *filename,
			    GeCurveData *curve_data,
			    int   pos_right) :
  GeCurve( gc_parent_ctx, curve_name, filename, curve_data, pos_right)
{
  char		uid_filename[120] = {"xtt_curve.uid"};
  char		*uid_filename_p = uid_filename;
  Arg 		args[20];
  pwr_tStatus	sts;
  int		i;
  MrmHierarchy s_DRMh;
  MrmType dclass;
  Widget	ge_curve_widget;
  char		name[] = "PwR GeCurve";

  static MrmRegisterArg	reglist[] = {
        {(char*) "gec_ctx", 0 },
	{(char*) "gec_activate_exit",(caddr_t)activate_exit },
	{(char*) "gec_activate_configure",(caddr_t)activate_configure },
	{(char*) "gec_activate_print",(caddr_t)activate_print },
	{(char*) "gec_activate_zoomin",(caddr_t)activate_zoomin },
	{(char*) "gec_activate_zoomout",(caddr_t)activate_zoomout },
	{(char*) "gec_activate_zoomreset",(caddr_t)activate_zoomreset },
	{(char*) "gec_activate_background",(caddr_t)activate_background },
	{(char*) "gec_activate_showname",(caddr_t)activate_showname },
	{(char*) "gec_activate_filledcurves",(caddr_t)activate_filledcurves },
	{(char*) "gec_activate_xlimits",(caddr_t)activate_xlimits },
	{(char*) "gec_activate_help",(caddr_t)activate_help },
	{(char*) "gec_create_pane",(caddr_t)create_pane },
	{(char*) "gec_create_growform",(caddr_t)create_growform },
	{(char*) "gec_create_nameform",(caddr_t)create_nameform },
	{(char*) "gec_create_curveform",(caddr_t)create_curveform },
	{(char*) "gec_create_minmax_textmin",(caddr_t)create_minmax_textmin },
	{(char*) "gec_create_minmax_textmax",(caddr_t)create_minmax_textmax },
	{(char*) "gec_activate_minmax_ok",(caddr_t)activate_minmax_ok }
	};

  static int	reglist_num = (sizeof reglist / sizeof reglist[0]);

  Lng::get_uid( uid_filename, uid_filename);

  // Motif
  MrmInitialize();

  cdh_StrncpyCutOff( title, curve_name, sizeof(title), 1);

  reglist[0].value = (caddr_t) this;

  toplevel = XtCreatePopupShell(title, 
		topLevelShellWidgetClass, parent_widget, args, 0);

  // Save the context structure in the widget
  XtSetArg (args[0], XmNuserData, (XtPointer) this);

  sts = MrmOpenHierarchy( 1, &uid_filename_p, NULL, &s_DRMh);
  if (sts != MrmSUCCESS) printf("can't open %s\n", uid_filename);

  MrmRegisterNames(reglist, reglist_num);

  sts = MrmFetchWidgetOverride( s_DRMh, (char*) "ge_curve_window", toplevel,
			name, NULL, 0, &ge_curve_widget, &dclass);
  if (sts != MrmSUCCESS)  printf("can't fetch %s\n", name);

  sts = MrmFetchWidget(s_DRMh, (char*) "minmax_dialog", toplevel,
		&minmax_widget, &dclass);
  if (sts != MrmSUCCESS)  printf("can't fetch input dialog\n");

  MrmCloseHierarchy(s_DRMh);

  i = 0;
  XtSetArg(args[i],XmNwidth,800);i++;
  XtSetArg(args[i],XmNheight,600);i++;
  XtSetArg(args[i], XmNdeleteResponse, XmDO_NOTHING);i++;
  XtSetValues( toplevel ,args,i);
      
  XtManageChild( ge_curve_widget);

  Widget w;
  grownames_main_widget = ScrolledGrowCreate( nameform_widget, 
		(char*) "GeCurveNames", NULL,
		0, init_grownames_cb, this, &w);
  i = 0;
  XtSetArg(args[i],XmNwidth,200);i++;
  XtSetValues( grownames_main_widget, args,i);

  XtManageChild( grownames_main_widget);

  growaxis_main_widget = GrowCreate( axisform_widget, 
		(char*) "GeCurveAxis", NULL,
		0, init_growaxis_cb, this);
  i = 0;
  XtSetArg(args[i],XmNwidth,200);i++;
  XtSetValues( growaxis_main_widget, args,i);

  XtManageChild( growaxis_main_widget);

  growcurve_main_widget = CurveCreate( curveform_widget, 
		(char*) "GeCurve", NULL,
		0, init_growcurve_cb, this);
  XtManageChild( growcurve_main_widget);

  i = 0;
  XtSetArg(args[i],XmNwidth,200);i++;
  XtSetArg(args[i],XmNheight,200);i++;
  XtSetArg(args[i],XmNpaneMinimum,75);i++;
  XtSetArg(args[i],XmNpaneMaximum,100);i++;
  nav_widget = CurveCreateNav( pane_widget, (char*) "navigator",
        args, i, growcurve_main_widget);
  XtManageChild( nav_widget);

  XtPopup( toplevel, XtGrabNone);
  XtRealizeWidget( toplevel);

  wow = new CoWowMotif( toplevel);

  // Connect the window manager close-button to exit
  flow_AddCloseVMProtocolCb( toplevel, 
	(XtCallbackProc)activate_exit, this);

}
Beispiel #8
0
GeCurveGtk::GeCurveGtk( void *gc_parent_ctx, 
			GtkWidget *parent_widget,
			char *curve_name,
			char *filename,
			GeCurveData *curve_data,
			int pos_right,
			int gc_width,
			int gc_height,
			unsigned int gc_options,
			int gc_color_theme,
			void *basewidget) :
  GeCurve( gc_parent_ctx, curve_name, filename, curve_data, pos_right, 
	   gc_width, gc_height, gc_options, gc_color_theme),
  minmax_widget(0), export_widget(0), disable_timecombo_callback(0), clock_cursor(0)

{
  int	window_width = 900;
  int   window_height = 700;
  const int    	names_height = 150;
  const int    	nav_height = 120;
  pwr_tFileName fname;
  float height_scale = 1;
  int   nonav = 0;

  if ( gc_width != 0)
    window_width = gc_width;
  if ( gc_height != 0) {
    height_scale = (float)gc_height / window_height;
    window_height = gc_height;
  }

  cdh_StrncpyCutOff( title, curve_name, sizeof(title), 1);

  // Gtk
  if ( !(options & curve_mOptions_Embedded)) {
    toplevel = (GtkWidget *) g_object_new( GTK_TYPE_WINDOW, 
					   "default-height", window_height,
					   "default-width", window_width,
					   "title", CoWowGtk::convert_utf8(title),
					   NULL);

    g_signal_connect( toplevel, "delete_event", G_CALLBACK(delete_event), this);
    g_signal_connect( toplevel, "destroy", G_CALLBACK(destroy_event), this);
    g_signal_connect( toplevel, "focus-in-event", G_CALLBACK(action_inputfocus), this);
    
    CoWowGtk::SetWindowIcon( toplevel);
  }
  else {
    toplevel = parent_widget;
  }

  GtkAccelGroup *accel_g = (GtkAccelGroup *) g_object_new(GTK_TYPE_ACCEL_GROUP, NULL);
  gtk_window_add_accel_group(GTK_WINDOW(toplevel), accel_g);

  GtkMenuBar *menu_bar = (GtkMenuBar *) g_object_new(GTK_TYPE_MENU_BAR, NULL);

  // File Entry
  menu_add = gtk_menu_item_new_with_mnemonic( CoWowGtk::translate_utf8("_Add"));
  g_signal_connect( menu_add, "activate", 
		    G_CALLBACK(activate_madd), this);

  GtkWidget *file_refresh = gtk_menu_item_new_with_mnemonic( CoWowGtk::translate_utf8("_Refresh"));
  g_signal_connect( file_refresh, "activate", 
		    G_CALLBACK(activate_configure), this);
  gtk_widget_add_accelerator( file_refresh, "activate", accel_g, 'r', GdkModifierType(GDK_CONTROL_MASK), 
			      GTK_ACCEL_VISIBLE);

  GtkWidget *file_print = gtk_image_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Print"));
  gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM(file_print), 
				 gtk_image_new_from_stock( "gtk-print", GTK_ICON_SIZE_MENU));
  g_signal_connect(file_print, "activate", G_CALLBACK(activate_print), this);

  menu_export = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Export"));
  g_signal_connect(menu_export, "activate", G_CALLBACK(activate_export), this);

  menu_new = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_New"));
  g_signal_connect(menu_new, "activate", G_CALLBACK(activate_new), this);

  menu_save = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("S_ave"));
  g_signal_connect(menu_save, "activate", G_CALLBACK(activate_save), this);
  gtk_widget_add_accelerator( menu_save, "activate", accel_g,'s', 
			      GdkModifierType(GDK_CONTROL_MASK), GTK_ACCEL_VISIBLE);

  menu_open = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Open"));
  g_signal_connect(menu_open, "activate", G_CALLBACK(activate_open), this);

  menu_snapshot = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Snapshot"));
  g_signal_connect(menu_snapshot, "activate", G_CALLBACK(activate_snapshot), this);
  gtk_widget_add_accelerator( menu_snapshot, "activate", accel_g,'n', 
			      GdkModifierType(GDK_CONTROL_MASK), GTK_ACCEL_VISIBLE);

  GtkWidget *file_close = gtk_image_menu_item_new_with_mnemonic( CoWowGtk::translate_utf8("_Close"));
  gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM(file_close), 
				 gtk_image_new_from_stock( "gtk-close", GTK_ICON_SIZE_MENU));
  g_signal_connect(file_close, "activate", G_CALLBACK(activate_exit), this);
  gtk_widget_add_accelerator( file_close, "activate", accel_g,'w', GdkModifierType(GDK_CONTROL_MASK), 
			      GTK_ACCEL_VISIBLE);

  GtkMenu *file_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
  gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), menu_add);
  gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), file_refresh);
  gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), file_print);
  gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), menu_new);
  gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), menu_open);
  gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), menu_save);
  gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), menu_snapshot);
  gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), menu_export);
  gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), file_close);

  GtkWidget *file = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_File"));
  gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), file);
  gtk_menu_item_set_submenu(GTK_MENU_ITEM(file), GTK_WIDGET(file_menu));

  // View menu
  GtkWidget *view_zoom_in = gtk_image_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("Zoom _In"));
  gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM(view_zoom_in), 
				 gtk_image_new_from_stock( "gtk-zoom-in", GTK_ICON_SIZE_MENU));
  g_signal_connect(view_zoom_in, "activate", G_CALLBACK(activate_zoomin), this);
  gtk_widget_add_accelerator( view_zoom_in, "activate", accel_g,
			      'i', GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);

  GtkWidget *view_zoom_out = gtk_image_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("Zoom _Out"));
  gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM(view_zoom_out), 
				 gtk_image_new_from_stock( "gtk-zoom-out", GTK_ICON_SIZE_MENU));
  g_signal_connect(view_zoom_out, "activate", G_CALLBACK(activate_zoomout), this);
  gtk_widget_add_accelerator( view_zoom_out, "activate", accel_g,
			      'o', GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);

  GtkWidget *view_zoom_reset = gtk_image_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("Zoom _Reset"));
  gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM(view_zoom_reset), 
				 gtk_image_new_from_stock( "gtk-zoom-100", GTK_ICON_SIZE_MENU));
  g_signal_connect(view_zoom_reset, "activate", G_CALLBACK(activate_zoomreset), this);

  GtkWidget *view_background = gtk_check_menu_item_new_with_mnemonic( CoWowGtk::translate_utf8("_Background Color"));
  g_signal_connect( view_background, "activate", 
		    G_CALLBACK(activate_background), this);

  GtkWidget *view_showname = gtk_check_menu_item_new_with_mnemonic( CoWowGtk::translate_utf8("_Show Names"));
  g_signal_connect( view_showname, "activate", 
		    G_CALLBACK(activate_showname), this);
  gtk_widget_add_accelerator( view_showname, "activate", accel_g,
			      'w', GdkModifierType(GDK_CONTROL_MASK), 
			      GTK_ACCEL_VISIBLE);

  GtkWidget *view_filledcurves = gtk_check_menu_item_new_with_mnemonic( CoWowGtk::translate_utf8("_Filled Curves"));
  g_signal_connect( view_filledcurves, "activate", 
		    G_CALLBACK(activate_filledcurves), this);

  GtkWidget *view_xlimits = gtk_menu_item_new_with_mnemonic( CoWowGtk::translate_utf8("_X-Axis Limits"));
  g_signal_connect( view_xlimits, "activate", 
		    G_CALLBACK(activate_xlimits), this);

  GtkMenu *view_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
  gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), view_zoom_in);
  gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), view_zoom_out);
  gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), view_zoom_reset);
  gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), view_background);
  gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), view_showname);
  gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), view_filledcurves);
  gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), view_xlimits);

  GtkWidget *view = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_View"));
  gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), view);
  gtk_menu_item_set_submenu(GTK_MENU_ITEM(view), GTK_WIDGET(view_menu));

  // Menu Help
  GtkWidget *help_help = gtk_image_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Help"));
  gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM(help_help), 
				 gtk_image_new_from_stock( "gtk-help", GTK_ICON_SIZE_MENU));
  g_signal_connect(help_help, "activate", G_CALLBACK(activate_help), this);
  gtk_widget_add_accelerator( help_help, "activate", accel_g,
			      'h', GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);

  GtkMenu *help_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
  gtk_menu_shell_append(GTK_MENU_SHELL(help_menu), help_help);

  GtkWidget *help = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Help"));
  gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), help);
  gtk_menu_item_set_submenu(GTK_MENU_ITEM(help), GTK_WIDGET(help_menu));

  // Toolbar
  GtkToolbar *tools = (GtkToolbar *) g_object_new(GTK_TYPE_TOOLBAR, NULL);

  GtkWidget *tools_zoom_in = gtk_button_new();
  dcli_translate_filename( fname, "$pwr_exe/xtt_zoom_in.png");
  gtk_container_add( GTK_CONTAINER(tools_zoom_in), 
		     gtk_image_new_from_file( fname));
  g_signal_connect(tools_zoom_in, "clicked", G_CALLBACK(activate_zoomin), this);
  g_object_set( tools_zoom_in, "can-focus", FALSE, NULL);
  gtk_toolbar_append_widget( tools, tools_zoom_in, CoWowGtk::translate_utf8("Zoom in"), "");

  GtkWidget *tools_zoom_out = gtk_button_new();
  dcli_translate_filename( fname, "$pwr_exe/xtt_zoom_out.png");
  gtk_container_add( GTK_CONTAINER(tools_zoom_out), 
		     gtk_image_new_from_file( fname));
  g_signal_connect(tools_zoom_out, "clicked", G_CALLBACK(activate_zoomout), this);
  g_object_set( tools_zoom_out, "can-focus", FALSE, NULL);
  gtk_toolbar_append_widget( tools, tools_zoom_out, CoWowGtk::translate_utf8("Zoom out"), "");

  GtkWidget *tools_zoom_reset = gtk_button_new();
  dcli_translate_filename( fname, "$pwr_exe/xtt_zoom_reset.png");
  gtk_container_add( GTK_CONTAINER(tools_zoom_reset), 
		     gtk_image_new_from_file( fname));
  g_signal_connect(tools_zoom_reset, "clicked", G_CALLBACK(activate_zoomreset), this);
  g_object_set( tools_zoom_reset, "can-focus", FALSE, NULL);
  gtk_toolbar_append_widget( tools, tools_zoom_reset, CoWowGtk::translate_utf8("Zoom reset"), "");

  GtkWidget *tools_page_left = gtk_button_new();
  dcli_translate_filename( fname, "$pwr_exe/ge_page_left.png");
  gtk_container_add( GTK_CONTAINER(tools_page_left), 
		     gtk_image_new_from_file( fname));
  g_signal_connect(tools_page_left, "clicked", G_CALLBACK(activate_page_left), this);
  g_object_set( tools_page_left, "can-focus", FALSE, NULL);
  gtk_toolbar_append_widget( tools, tools_page_left, CoWowGtk::translate_utf8("Page left"), "");

  GtkWidget *tools_scroll_left = gtk_button_new();
  dcli_translate_filename( fname, "$pwr_exe/ge_scroll_left.png");
  gtk_container_add( GTK_CONTAINER(tools_scroll_left), 
		     gtk_image_new_from_file( fname));
  g_signal_connect(tools_scroll_left, "clicked", G_CALLBACK(activate_scroll_left), this);
  g_object_set( tools_scroll_left, "can-focus", FALSE, NULL);
  gtk_toolbar_append_widget( tools, tools_scroll_left, CoWowGtk::translate_utf8("Scroll left"), "");

  GtkWidget *tools_scroll_right = gtk_button_new();
  dcli_translate_filename( fname, "$pwr_exe/ge_scroll_right.png");
  gtk_container_add( GTK_CONTAINER(tools_scroll_right), 
		     gtk_image_new_from_file( fname));
  g_signal_connect(tools_scroll_right, "clicked", G_CALLBACK(activate_scroll_right), this);
  g_object_set( tools_scroll_right, "can-focus", FALSE, NULL);
  gtk_toolbar_append_widget( tools, tools_scroll_right, CoWowGtk::translate_utf8("Scroll right"), "");

  GtkWidget *tools_page_right = gtk_button_new();
  dcli_translate_filename( fname, "$pwr_exe/ge_page_right.png");
  gtk_container_add( GTK_CONTAINER(tools_page_right), 
		     gtk_image_new_from_file( fname));
  g_signal_connect(tools_page_right, "clicked", G_CALLBACK(activate_page_right), this);
  g_object_set( tools_page_right, "can-focus", FALSE, NULL);
  gtk_toolbar_append_widget( tools, tools_page_right, CoWowGtk::translate_utf8("Page right"), "");

  tools_snapshot = gtk_button_new();
  dcli_translate_filename( fname, "$pwr_exe/xtt_snapshot.png");
  gtk_container_add( GTK_CONTAINER(tools_snapshot), 
		     gtk_image_new_from_file( fname));
  g_signal_connect(tools_snapshot, "clicked", G_CALLBACK(activate_snapshot), this);
  g_object_set( tools_snapshot, "can-focus", FALSE, NULL);
  gtk_toolbar_append_widget( tools, tools_snapshot, CoWowGtk::translate_utf8("Snapshot"), "");

  tools_add = gtk_button_new();
  dcli_translate_filename( fname, "$pwr_exe/xtt_add.png");
  gtk_container_add( GTK_CONTAINER(tools_add), 
		     gtk_image_new_from_file( fname));
  g_signal_connect(tools_add, "clicked", G_CALLBACK(activate_add), this);
  g_object_set( tools_add, "can-focus", FALSE, NULL);
  gtk_toolbar_append_widget( tools, tools_add, CoWowGtk::translate_utf8("Add"), "");

  // Time box
  GtkToolbar *timetools = (GtkToolbar *) g_object_new(GTK_TYPE_TOOLBAR, NULL);

  GtkWidget *sea_time_start_label = gtk_label_new( CoWowGtk::translate_utf8("Time"));
  gtk_widget_set_size_request( sea_time_start_label, 70, -1);
  gtk_misc_set_alignment( GTK_MISC(sea_time_start_label), 0.0, 0.5);
  gtk_toolbar_append_widget( timetools, sea_time_start_label, "", "");

  // Time option menu
  timebox_timecombo = gtk_combo_box_new_text();

  for ( int i = 0; curve_timecombo_text[i].text[0]; i++)
    gtk_combo_box_append_text( GTK_COMBO_BOX(timebox_timecombo), 
			       CoWowGtk::translate_utf8(curve_timecombo_text[i].text));

  g_signal_connect(timebox_timecombo, "changed", G_CALLBACK(activate_timecombo), this);

  gtk_toolbar_append_widget( timetools, timebox_timecombo, 0, "");
  timebox_start_time = gtk_entry_new();
  gtk_widget_set_size_request( timebox_start_time, 160, -1);
  gtk_toolbar_append_widget( timetools, timebox_start_time, "", "");

  GtkWidget *sea_time_stop_label = gtk_label_new( CoWowGtk::translate_utf8("-"));
  gtk_widget_set_size_request( sea_time_stop_label, 20, -1);
  gtk_toolbar_append_widget( timetools, sea_time_stop_label, "", "");

  timebox_stop_time = gtk_entry_new();
  gtk_widget_set_size_request( timebox_stop_time, 160, -1);
  gtk_toolbar_append_widget( timetools, timebox_stop_time, "", "");

  GtkWidget *timebox_prev_period = gtk_button_new();
  dcli_translate_filename( fname, "$pwr_exe/ge_scroll_left.png");
  gtk_container_add( GTK_CONTAINER(timebox_prev_period), 
		     gtk_image_new_from_file( fname));
  g_signal_connect(timebox_prev_period, "clicked", G_CALLBACK(activate_prev_period), this);
  g_object_set( timebox_prev_period, "can-focus", FALSE, NULL);
  gtk_toolbar_append_widget( timetools, timebox_prev_period, CoWowGtk::translate_utf8("Previous period"), "");

  GtkWidget *timebox_next_period = gtk_button_new();
  dcli_translate_filename( fname, "$pwr_exe/ge_scroll_right.png");
  gtk_container_add( GTK_CONTAINER(timebox_next_period), 
		     gtk_image_new_from_file( fname));
  g_signal_connect(timebox_next_period, "clicked", G_CALLBACK(activate_next_period), this);
  g_object_set( timebox_next_period, "can-focus", FALSE, NULL);
  gtk_toolbar_append_widget( timetools, timebox_next_period, CoWowGtk::translate_utf8("Next period"), "");

  GtkWidget *timebox_increase_period = gtk_button_new();
  dcli_translate_filename( fname, "$pwr_exe/xtt_up.png");
  gtk_container_add( GTK_CONTAINER(timebox_increase_period), 
		     gtk_image_new_from_file( fname));
  g_signal_connect(timebox_increase_period, "clicked", G_CALLBACK(activate_increase_period), this);
  g_object_set( timebox_increase_period, "can-focus", FALSE, NULL);
  gtk_toolbar_append_widget( timetools, timebox_increase_period, CoWowGtk::translate_utf8("Increase period"), "");

  GtkWidget *timebox_decrease_period = gtk_button_new();
  dcli_translate_filename( fname, "$pwr_exe/xtt_down.png");
  gtk_container_add( GTK_CONTAINER(timebox_decrease_period), 
		     gtk_image_new_from_file( fname));
  g_signal_connect(timebox_decrease_period, "clicked", G_CALLBACK(activate_decrease_period), this);
  g_object_set( timebox_decrease_period, "can-focus", FALSE, NULL);
  gtk_toolbar_append_widget( timetools, timebox_decrease_period, CoWowGtk::translate_utf8("Decrease period"), "");


  GtkWidget *timebox_reload = gtk_button_new();
  dcli_translate_filename( fname, "$pwr_exe/ge_reload.png");
  gtk_container_add( GTK_CONTAINER(timebox_reload), 
		     gtk_image_new_from_file( fname));
  g_signal_connect(timebox_reload, "clicked", G_CALLBACK(activate_reload), this);
  g_object_set( timebox_reload, "can-focus", FALSE, NULL);
  // gtk_toolbar_append_widget( timetools, timebox_reload, CoWowGtk::translate_utf8("Update"), "");

  GtkWidget *timebox_add = gtk_button_new();
  dcli_translate_filename( fname, "$pwr_exe/xtt_add.png");
  gtk_container_add( GTK_CONTAINER(timebox_add), 
		     gtk_image_new_from_file( fname));
  g_signal_connect(timebox_add, "clicked", G_CALLBACK(activate_add), this);
  g_object_set( timebox_add, "can-focus", FALSE, NULL);
  // gtk_toolbar_append_widget( timetools, timebox_add, CoWowGtk::translate_utf8("Add curve item"), "");

  GtkWidget *timebox_remove = gtk_button_new();
  dcli_translate_filename( fname, "$pwr_exe/xtt_remove.png");
  gtk_container_add( GTK_CONTAINER(timebox_remove), 
		     gtk_image_new_from_file( fname));
  g_signal_connect(timebox_remove, "clicked", G_CALLBACK(activate_remove), this);
  g_object_set( timebox_remove, "can-focus", FALSE, NULL);
  // gtk_toolbar_append_widget( timetools, timebox_remove, CoWowGtk::translate_utf8("Remove selected curve"), "");


  GtkToolbar *curvebuttonbox = (GtkToolbar *) g_object_new(GTK_TYPE_TOOLBAR, NULL);
  //GtkWidget *curvebuttonbox = gtk_hbox_new( FALSE, 0);
  gtk_toolbar_append_widget( curvebuttonbox, timebox_reload, CoWowGtk::translate_utf8("Update curve"), "");
  gtk_toolbar_append_widget( curvebuttonbox, timebox_add, CoWowGtk::translate_utf8("Add curve item"), "");

  sea_timebox = gtk_hbox_new( FALSE, 0);
  //  gtk_box_pack_start( GTK_BOX(sea_timebox), sea_time_start_label, FALSE, FALSE, 0);
  //  gtk_box_pack_start( GTK_BOX(sea_timebox), timebox_timecombo, FALSE, FALSE, 10);
  //  gtk_box_pack_start( GTK_BOX(sea_timebox), timebox_start_time, FALSE, FALSE, 0);
  //  gtk_box_pack_start( GTK_BOX(sea_timebox), sea_time_stop_label, FALSE, FALSE, 0);
  //  gtk_box_pack_start( GTK_BOX(sea_timebox), timebox_stop_time, FALSE, FALSE, 0);
  gtk_box_pack_start( GTK_BOX(sea_timebox), GTK_WIDGET(timetools), FALSE, FALSE, 0);
  gtk_box_pack_start( GTK_BOX(sea_timebox), gtk_hseparator_new(), FALSE, FALSE, 10);
  gtk_box_pack_start( GTK_BOX(sea_timebox), GTK_WIDGET(curvebuttonbox), FALSE, FALSE, 0);

  GtkWidget *w;
    grownames_main_widget = scrolledgrowwidgetgtk_new( init_grownames_cb, this, &w);

  if ( nonav)
    growcurve_main_widget = scrolledcurvewidgetgtk_new( init_growcurve_cb, this, &w);
  else
    growcurve_main_widget = curvewidgetgtk_new( init_growcurve_cb, this);

  growaxis_main_widget = growwidgetgtk_new( init_growaxis_cb, this);

  if (!nonav)
    nav_widget = curvenavwidgetgtk_new( growcurve_main_widget);

  GtkWidget *hbox = gtk_hbox_new( FALSE, 0);
  gtk_box_pack_start( GTK_BOX(hbox), growaxis_main_widget, FALSE, FALSE, 0);
  gtk_box_pack_start( GTK_BOX(hbox), growcurve_main_widget, TRUE, TRUE, 0);
  gtk_widget_show_all( hbox);

  GtkWidget *vpaned1 = gtk_vpaned_new();
  GtkWidget *vpaned2 = gtk_vpaned_new();

  gtk_paned_add1( GTK_PANED(vpaned1), grownames_main_widget);
  gtk_paned_add2( GTK_PANED(vpaned1), vpaned2);
  gtk_widget_show_all( vpaned1);

  gtk_paned_pack1( GTK_PANED(vpaned2), hbox, TRUE, TRUE);
  if ( !nonav)
    gtk_paned_pack2( GTK_PANED(vpaned2), nav_widget, FALSE, TRUE);
  gtk_widget_show_all( vpaned2);

  GtkWidget *tools_box = gtk_hbox_new( FALSE, 0);
  gtk_box_pack_start( GTK_BOX(tools_box), GTK_WIDGET(tools), FALSE, FALSE, 0);
  //  gtk_box_pack_start( GTK_BOX(tools_box), GTK_WIDGET(sea_timebox), FALSE, FALSE, 0);

  vbox = gtk_vbox_new( FALSE, 0);
  gtk_box_pack_start( GTK_BOX(vbox), GTK_WIDGET(menu_bar), FALSE, FALSE, 0);
  gtk_box_pack_start( GTK_BOX(vbox), GTK_WIDGET(tools_box), FALSE, FALSE, 0);
  gtk_box_pack_start( GTK_BOX(vbox), GTK_WIDGET(sea_timebox), FALSE, FALSE, 0);
  gtk_box_pack_start( GTK_BOX(vbox), GTK_WIDGET(vpaned1), TRUE, TRUE, 0);

  if ( !(options & curve_mOptions_Embedded)) {
    gtk_container_add( GTK_CONTAINER(toplevel), vbox);

    gtk_widget_show_all( toplevel);
  }
  else
    gtk_widget_set_size_request( vbox, window_width, window_height);

  gtk_paned_set_position( GTK_PANED(vpaned1), names_height * height_scale);
  gtk_paned_set_position( GTK_PANED(vpaned2), (window_height - names_height - nav_height - 50) * height_scale);
  g_object_set( sea_timebox, "visible", FALSE, NULL);
  g_object_set( menu_new, "visible", FALSE, NULL);
  g_object_set( menu_save, "visible", FALSE, NULL);
  g_object_set( menu_open, "visible", FALSE, NULL);
  g_object_set( menu_snapshot, "visible", FALSE, NULL);
  g_object_set( menu_export, "visible", FALSE, NULL);
  g_object_set( tools_snapshot, "visible", FALSE, NULL);
  g_object_set( tools_add, "visible", FALSE, NULL);

  wow = new CoWowGtk( toplevel);

  gtk_combo_box_set_active( GTK_COMBO_BOX(timebox_timecombo), 2);

  if ( !(options & curve_mOptions_Embedded)) {
    if ( options & curve_mOptions_FullScreen)
      gtk_window_fullscreen( GTK_WINDOW(toplevel));
    else if ( options & curve_mOptions_Maximize)
      gtk_window_maximize( GTK_WINDOW(toplevel)); // TODO
    else if ( options & curve_mOptions_FullMaximize)
      gtk_window_maximize( GTK_WINDOW(toplevel));
    else if ( options & curve_mOptions_Iconify)
      gtk_window_iconify( GTK_WINDOW(toplevel));
    else if ( options & curve_mOptions_Invisible)
      g_object_set( toplevel, "visible", FALSE, NULL);

    if ( basewidget)
      gtk_window_set_transient_for(GTK_WINDOW(toplevel), GTK_WINDOW(basewidget));

  }  
}
Beispiel #9
0
WGeGtk::WGeGtk( GtkWidget *wge_parent_wid, void *wge_parent_ctx, char *wge_name, char *wge_filename,
	  int wge_scrollbar, int wge_menu, int wge_navigator, int wge_width, int wge_height, 
	  int x, int y, char *object_name, int wge_modal = 0) :
  WGe(wge_parent_ctx, wge_name, wge_filename, wge_scrollbar, wge_menu, wge_navigator, wge_width,
      wge_height, x, y, object_name, wge_modal),
  parent_wid(wge_parent_wid), nav_shell(0), value_dialog(0), confirm_widget(0)
{
  int	window_width = 600;
  int   window_height = 500;
  GdkGeometry   geometry;
  pwr_tStatus sts;
  GtkMenuBar *menu_bar;
  char 		title[300];

  if ( wge_width != 0 && wge_height != 0) {
    window_width = wge_width;
    window_height = wge_height;
  }
  cdh_StrncpyCutOff( title, name, sizeof(title), 1);

  // Gtk
  toplevel = (GtkWidget *) g_object_new( GTK_TYPE_WINDOW, 
					 "default-height", window_height,
					 "default-width", window_width,
					 "title", title,
					 NULL);

  CoWowGtk::SetWindowIcon( toplevel);

  geometry.min_aspect = geometry.max_aspect = gdouble(window_width)/window_height;
  gtk_window_set_geometry_hints( GTK_WINDOW(toplevel), GTK_WIDGET(toplevel),
				 &geometry, GDK_HINT_ASPECT);

  if ( !(x == 0 && y == 0)) {
    // Set position...
  }

  g_signal_connect( toplevel, "delete_event", G_CALLBACK(delete_event), this);
  g_signal_connect( toplevel, "destroy", G_CALLBACK(destroy_event), this);
  g_signal_connect( toplevel, "focus-in-event", G_CALLBACK(action_inputfocus), this);


  if ( wge_menu) {
    GtkAccelGroup *accel_g = (GtkAccelGroup *) g_object_new(GTK_TYPE_ACCEL_GROUP, NULL);
    gtk_window_add_accel_group(GTK_WINDOW(toplevel), accel_g);

    menu_bar = (GtkMenuBar *) g_object_new(GTK_TYPE_MENU_BAR, NULL);

    // File Entry
    GtkWidget *file_close = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLOSE, accel_g);
    g_signal_connect(file_close, "activate", G_CALLBACK(activate_exit), this);

    GtkMenu *file_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
    gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), file_close);

    GtkWidget *file = gtk_menu_item_new_with_mnemonic("_File");
    gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), file);
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(file), GTK_WIDGET(file_menu));

    // View menu
    GtkWidget *view_zoom_in = gtk_image_menu_item_new_from_stock(GTK_STOCK_ZOOM_IN, NULL);
    g_signal_connect(view_zoom_in, "activate", G_CALLBACK(activate_zoom_in), this);
    gtk_widget_add_accelerator( view_zoom_in, "activate", accel_g,
				'i', GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);

    GtkWidget *view_zoom_out = gtk_image_menu_item_new_from_stock(GTK_STOCK_ZOOM_OUT, NULL);
    g_signal_connect(view_zoom_out, "activate", G_CALLBACK(activate_zoom_out), this);
    gtk_widget_add_accelerator( view_zoom_out, "activate", accel_g,
				'o', GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);

    GtkWidget *view_zoom_reset = gtk_image_menu_item_new_from_stock(GTK_STOCK_ZOOM_100, NULL);
    g_signal_connect(view_zoom_reset, "activate", G_CALLBACK(activate_zoom_reset), this);

    GtkMenu *view_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
    gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), view_zoom_in);
    gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), view_zoom_out);
    gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), view_zoom_reset);

    GtkWidget *view = gtk_menu_item_new_with_mnemonic("_View");
    gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), view);
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(view), GTK_WIDGET(view_menu));

    // Menu Help
    GtkWidget *help_help = gtk_image_menu_item_new_from_stock(GTK_STOCK_HELP, accel_g);
    g_signal_connect(help_help, "activate", G_CALLBACK(activate_help), this);

    GtkMenu *help_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
    gtk_menu_shell_append(GTK_MENU_SHELL(help_menu), help_help);

    GtkWidget *help = gtk_menu_item_new_with_mnemonic("_Help");
    gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), help);
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(help), GTK_WIDGET(help_menu));
  }

  graph_form = gtk_vbox_new( FALSE, 0);
  graph = new GraphGtk( this, graph_form, "Plant", 
		&grow_widget, &sts, "pwrp_exe:", graph_eMode_Runtime, 
		scrollbar, 1, object_name, 0, 0);
  ((Graph *)graph)->message_cb = &message;
  ((Graph *)graph)->close_cb = &graph_close_cb;
  ((Graph *)graph)->init_cb = &graph_init_cb;
  ((Graph *)graph)->change_value_cb = &change_value_cb;
  ((Graph *)graph)->confirm_cb = &confirm_cb;
  ((Graph *)graph)->message_dialog_cb = &message_dialog_cb;
  ((Graph *)graph)->command_cb = &wge_command_cb;
  ((Graph *)graph)->is_authorized_cb = &wge_is_authorized_cb;

  //g_signal_connect( graph_form, "check_resize", G_CALLBACK(action_resize), this);
  g_signal_connect( ((GraphGtk *)graph)->grow_widget, "size_allocate", G_CALLBACK(action_resize), this);

  if ( wge_menu)
    gtk_box_pack_start( GTK_BOX(graph_form), GTK_WIDGET(menu_bar), FALSE, FALSE, 0);
  gtk_box_pack_start( GTK_BOX(graph_form), GTK_WIDGET(grow_widget), TRUE, TRUE, 0);

  gtk_container_add( GTK_CONTAINER(toplevel), graph_form);

  gtk_widget_show_all( toplevel);

  if ( navigator) {
    // Create navigator popup
    nav_shell = (GtkWidget *) g_object_new( GTK_TYPE_WINDOW, 
					    "default-height", 200,
					    "default-width", 200,
					    "title", "Navigator",
					    NULL);
    g_signal_connect( nav_shell, "delete_event", G_CALLBACK(nav_delete_event), this);

    ((GraphGtk *)graph)->create_navigator( nav_shell);
    gtk_container_add( GTK_CONTAINER(nav_shell), ((GraphGtk *)graph)->nav_widget);

    gtk_widget_show_all( nav_shell);
    ((Graph *)graph)->set_nav_background_color();
  }
}
Beispiel #10
0
XAttMotif::XAttMotif( Widget 		xa_parent_wid,
                      void 		*xa_parent_ctx,
                      pwr_sAttrRef 	*xa_objar,
                      int 		xa_advanced_user,
                      int             *xa_sts) :
    XAtt( xa_parent_ctx, xa_objar, xa_advanced_user, xa_sts),
    parent_wid(xa_parent_wid), set_focus_disabled(0),
    value_current_recall(0)
{
    char		uid_filename[120] = {"xtt_xatt.uid"};
    char		*uid_filename_p = uid_filename;
    Arg 		args[20];
    pwr_tStatus	sts;
    pwr_tAName   	title;
    int		i;
    MrmHierarchy s_DRMh;
    MrmType dclass;
    char		name[] = "Proview/R Navigator";

    static char translations[] =
        "<FocusIn>: xatt_inputfocus()\n";
    static XtTranslations compiled_translations = NULL;

    static XtActionsRec actions[] =
    {
        {(char*) "xatt_inputfocus",      (XtActionProc) action_inputfocus}
    };

    static MrmRegisterArg	reglist[] = {
        {(char*) "xatt_ctx", 0 },
        {(char*) "xatt_activate_exit",(caddr_t)activate_exit },
        {(char*) "xatt_activate_display_object",(caddr_t)activate_display_object },
        {(char*) "xatt_activate_show_cross",(caddr_t)activate_show_cross },
        {(char*) "xatt_activate_open_classgraph",(caddr_t)activate_open_classgraph },
        {(char*) "xatt_activate_open_plc",(caddr_t)activate_open_plc },
        {(char*) "xatt_activate_change_value",(caddr_t)activate_change_value },
        {(char*) "xatt_activate_close_changeval",(caddr_t)activate_close_changeval },
        {(char*) "xatt_activate_help",(caddr_t)activate_help },
        {(char*) "xatt_create_msg_label",(caddr_t)create_msg_label },
        {(char*) "xatt_create_cmd_prompt",(caddr_t)create_cmd_prompt },
        {(char*) "xatt_create_cmd_input",(caddr_t)create_cmd_input },
        {(char*) "xatt_create_cmd_scrolledinput",(caddr_t)create_cmd_scrolledinput },
        {(char*) "xatt_create_cmd_scrolled_ok",(caddr_t)create_cmd_scrolled_ok },
        {(char*) "xatt_create_cmd_scrolled_ca",(caddr_t)create_cmd_scrolled_ca },
        {(char*) "xatt_create_xattnav_form",(caddr_t)create_xattnav_form },
        {(char*) "xatt_activate_cmd_scrolledinput",(caddr_t)activate_cmd_input },
        {(char*) "xatt_activate_cmd_scrolled_ok",(caddr_t)activate_cmd_scrolled_ok },
        {(char*) "xatt_activate_cmd_scrolled_ca",(caddr_t)activate_cmd_scrolled_ca }
    };

    static int	reglist_num = (sizeof reglist / sizeof reglist[0]);

    // for ( i = 0; i < int(sizeof(value_recall)/sizeof(value_recall[0])); i++)
    //  value_recall[i][0] = 0;

    Lng::get_uid( uid_filename, uid_filename);

    // Create object context
//  attrctx->close_cb = close_cb;
//  attrctx->redraw_cb = redraw_cb;

    // Motif
    MrmInitialize();

    *xa_sts = gdh_AttrrefToName( &objar, title, sizeof(title), cdh_mNName);
    if ( EVEN(*xa_sts)) return;

    cdh_StrncpyCutOff( title, title, 100, 1);

    reglist[0].value = (caddr_t) this;

    // Save the context structure in the widget
    i = 0;
    XtSetArg (args[i], XmNuserData, (XtPointer) this);
    i++;
    XtSetArg( args[i], XmNdeleteResponse, XmDO_NOTHING);
    i++;

    sts = MrmOpenHierarchy( 1, &uid_filename_p, NULL, &s_DRMh);
    if (sts != MrmSUCCESS) printf("can't open %s\n", uid_filename);

    MrmRegisterNames(reglist, reglist_num);

    parent_wid = XtCreatePopupShell( title,
                                     topLevelShellWidgetClass, parent_wid, args, i);

    sts = MrmFetchWidgetOverride( s_DRMh, (char*) "xatt_window", parent_wid,
                                  name, args, 1, &toplevel, &dclass);
    if (sts != MrmSUCCESS)  printf("can't fetch %s\n", name);

    MrmCloseHierarchy(s_DRMh);


    if (compiled_translations == NULL)
        XtAppAddActions( XtWidgetToApplicationContext(toplevel),
                         actions, XtNumber(actions));

    if (compiled_translations == NULL)
        compiled_translations = XtParseTranslationTable(translations);
    XtOverrideTranslations( toplevel, compiled_translations);

    i = 0;
    XtSetArg(args[i],XmNwidth,420);
    i++;
    XtSetArg(args[i],XmNheight,600);
    i++;
    XtSetValues( toplevel ,args,i);

    XtManageChild( toplevel);
    XtUnmanageChild( cmd_input);
    XtUnmanageChild( cmd_scrolledinput);
    XtUnmanageChild( cmd_scrolled_ok);
    XtUnmanageChild( cmd_scrolled_ca);

    xattnav = new XAttNavMotif( (void *)this, xattnav_form, xattnav_eType_Object,
                                "Plant", &objar, xa_advanced_user, &brow_widget, &sts);
    xattnav->message_cb = &message_cb;
    xattnav->change_value_cb = &change_value_cb;
    xattnav->popup_menu_cb = &xatt_popup_menu_cb;
    xattnav->is_authorized_cb = &xatt_is_authorized_cb;

    XtPopup( parent_wid, XtGrabNone);

    // Connect the window manager close-button to exit
    flow_AddCloseVMProtocolCb( parent_wid,
                               (XtCallbackProc)activate_exit, this);

    *xa_sts = XATT__SUCCESS;
}