Commit 65f5d4f6 authored by claes's avatar claes

GTK added

parent bf001ac4
include $(pwre_dir_symbols)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk
ifeq ($($(type_name)_generic_mk),)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(type_name)_generic.mk
endif
ifeq ($($(type_name)_generic_mk),)
include $(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
endif
-include ../../special.mk
-include ../special.mk
-include special.mk
/*
* Proview $Id: rt_pb_gsd_attr_gtk.cpp,v 1.1 2007-01-04 08:42:43 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**/
/* rt_pb_gsd_attr_gtk.cpp -- Display gsd attributes */
#include "glow_std.h"
#include <stdio.h>
#include <stdlib.h>
#include <gtk/gtk.h>
#include "co_cdh.h"
#include "co_time.h"
#include "co_dcli.h"
#include "co_wow_gtk.h"
#include "flow.h"
#include "flow_browctx.h"
#include "flow_browapi.h"
#include "glow.h"
#include "glow_growctx.h"
#include "glow_growapi.h"
#include "flow_msg.h"
#include "rt_pb_msg.h"
#include "rt_pb_gsd_attr_gtk.h"
#include "rt_pb_gsd_attrnav_gtk.h"
void GsdAttrGtk::message( char severity, char *message)
{
gtk_label_set_text( GTK_LABEL(msg_label), message);
}
void GsdAttrGtk::set_prompt( char *prompt)
{
if ( strcmp(prompt, "") == 0) {
g_object_set( cmd_prompt, "visible", FALSE, NULL);
g_object_set( msg_label, "visible", TRUE, NULL);
}
else {
g_object_set( msg_label, "visible", FALSE, NULL);
g_object_set( cmd_prompt, "visible", TRUE, NULL);
}
}
void GsdAttrGtk::change_value()
{
int sts;
GtkWidget *text_w;
char *value;
if ( input_open) {
g_object_set( cmd_input, "visible", FALSE, NULL);
set_prompt( "");
input_open = 0;
return;
}
if ( !edit_mode) {
message( 'E', "Not in edit mode");
return;
}
sts = attrnav->check_attr_value( &value);
if ( EVEN(sts)) {
if ( sts == PB__NOATTRSEL)
message( 'E', "No attribute is selected");
else
message( 'E', "Attribute can't be modified");
return;
}
text_w = cmd_input;
g_object_set( text_w, "visible", TRUE, NULL);
message( ' ', "");
gtk_widget_grab_focus( cmd_input);
if ( value) {
gint pos = 0;
gtk_editable_delete_text( GTK_EDITABLE(cmd_input), 0, -1);
gtk_editable_insert_text( GTK_EDITABLE(cmd_input), value, strlen(value), &pos);
// Select the text
gtk_editable_set_position( GTK_EDITABLE(cmd_input), -1);
gtk_editable_select_region( GTK_EDITABLE(cmd_input), 0, -1);
}
else {
gtk_editable_delete_text( GTK_EDITABLE(cmd_input), 0, -1);
}
set_prompt( "value >");
input_open = 1;
}
//
// Callbackfunctions from menu entries
//
void GsdAttrGtk::activate_change_value( GtkWidget *w, gpointer data)
{
GsdAttrGtk *attr = (GsdAttrGtk *)data;
attr->change_value();
}
void GsdAttrGtk::activate_exit( GtkWidget *w, gpointer data)
{
GsdAttr *attr = (GsdAttr *)data;
attr->activate_exit();
}
void GsdAttrGtk::activate_help( GtkWidget *w, gpointer data)
{
GsdAttr *attr = (GsdAttr *)data;
attr->activate_help();
}
void GsdAttrGtk::activate_copy( GtkWidget *w, gpointer data)
{
GsdAttr *attr = (GsdAttr *)data;
attr->activate_copy();
}
void GsdAttrGtk::activate_cut( GtkWidget *w, gpointer data)
{
GsdAttr *attr = (GsdAttr *)data;
attr->activate_cut();
}
void GsdAttrGtk::activate_paste( GtkWidget *w, gpointer data)
{
GsdAttr *attr = (GsdAttr *)data;
attr->activate_paste();
}
void GsdAttrGtk::activate_zoom_in( GtkWidget *w, gpointer data)
{
GsdAttr *attr = (GsdAttr *)data;
attr->activate_zoom_in();
}
void GsdAttrGtk::activate_zoom_out( GtkWidget *w, gpointer data)
{
GsdAttr *attr = (GsdAttr *)data;
attr->activate_zoom_out();
}
void GsdAttrGtk::activate_zoom_reset( GtkWidget *w, gpointer data)
{
GsdAttr *attr = (GsdAttr *)data;
attr->activate_zoom_reset();
}
void GsdAttrGtk::activate_print( GtkWidget *w, gpointer data)
{
GsdAttr *attr = (GsdAttr *)data;
attr->activate_print();
}
void GsdAttrGtk::activate_cmd_ok( GtkWidget *w, gpointer data)
{
GsdAttr *attr = (GsdAttr *)data;
attr->activate_cmd_ok();
}
void GsdAttrGtk::activate_cmd_ca( GtkWidget *w, gpointer data)
{
GsdAttr *attr = (GsdAttr *)data;
attr->activate_cmd_ca();
}
void GsdAttrGtk::activate_cmd_input( GtkWidget *w, gpointer data)
{
char *text;
GsdAttrGtk *attr = (GsdAttrGtk *)data;
int sts;
g_object_set( attr->cmd_prompt, "visible", FALSE, NULL);
g_object_set( attr->cmd_input, "visible", FALSE, NULL);
attr->attrnav->set_inputfocus();
text = gtk_editable_get_chars( GTK_EDITABLE(w), 0, -1);
if ( attr->input_open) {
sts = attr->attrnav->set_attr_value( text);
g_object_set( w, "visible", FALSE, NULL);
attr->set_prompt( "");
attr->input_open = 0;
}
g_free( text);
}
gboolean GsdAttrGtk::action_inputfocus( GtkWidget *w, GdkEvent *event, gpointer data)
{
GsdAttrGtk *attr = (GsdAttrGtk *)data;
gboolean input_visible;
g_object_get( attr->cmd_input, "visible", &input_visible, NULL);
if ( input_visible)
gtk_widget_grab_focus( attr->cmd_input);
else if ( attr->attrnav)
attr->attrnav->set_inputfocus();
return TRUE;
}
#if 0
void GsdAttrGtk::valchanged_cmd_input( Widget w, XEvent *event)
{
GsdAttr *attr;
int sts;
char *text;
Arg args[2];
XtSetArg(args[0], XmNuserData, &attr);
XtGetValues(w, args, 1);
sts = mrm_TextInput( w, event, (char *)attr->value_recall, sizeof(attr->value_recall[0]),
sizeof( attr->value_recall)/sizeof(attr->value_recall[0]),
&attr->value_current_recall);
if ( sts) {
text = XmTextGetString( w);
if ( attr->input_open)
{
sts = ((GsdAttrNav *)attr->attrnav)->set_attr_value( text);
XtUnmanageChild( w);
attr->set_prompt( "");
attr->input_open = 0;
((GsdAttrNav *)attr->attrnav)->set_inputfocus();
}
}
}
#endif
GsdAttrGtk::~GsdAttrGtk()
{
delete (GsdAttrNav *)attrnav;
gtk_widget_destroy( toplevel);
}
static gint delete_event( GtkWidget *w, GdkEvent *event, gpointer data)
{
GsdAttrGtk::activate_exit( w, data);
return TRUE;
}
static void destroy_event( GtkWidget *w, gpointer data)
{
}
GsdAttrGtk::GsdAttrGtk( GtkWidget *a_parent_wid,
void *a_parent_ctx,
void *a_object,
pb_gsd *a_gsd,
int a_edit_mode) :
GsdAttr( a_parent_ctx, a_object, a_gsd, a_edit_mode)
{
int sts;
toplevel = (GtkWidget *) g_object_new( GTK_TYPE_WINDOW,
"default-height", 600,
"default-width", 500,
"title", "pbGsdEditor",
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);
GtkWidget *vbox = gtk_vbox_new( FALSE, 0);
// Menu
// Accelerators
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
GtkWidget *file_print = gtk_image_menu_item_new_from_stock(GTK_STOCK_PRINT, accel_g);
g_signal_connect(file_print, "activate", G_CALLBACK(activate_print), this);
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_print);
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));
// Edit entry
menubutton_copy = gtk_image_menu_item_new_from_stock(GTK_STOCK_COPY, accel_g);
g_signal_connect(menubutton_copy, "activate", G_CALLBACK(activate_copy), this);
menubutton_cut = gtk_image_menu_item_new_from_stock(GTK_STOCK_CUT, accel_g);
g_signal_connect( menubutton_cut, "activate", G_CALLBACK(activate_cut), this);
menubutton_paste = gtk_image_menu_item_new_from_stock(GTK_STOCK_PASTE, accel_g);
g_signal_connect( menubutton_paste, "activate", G_CALLBACK(activate_paste), this);
GtkMenu *edit_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
gtk_menu_shell_append(GTK_MENU_SHELL(edit_menu), menubutton_copy);
gtk_menu_shell_append(GTK_MENU_SHELL(edit_menu), menubutton_cut);
gtk_menu_shell_append(GTK_MENU_SHELL(edit_menu), menubutton_paste);
GtkWidget *edit = gtk_menu_item_new_with_mnemonic("_Edit");
gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), edit);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(edit), GTK_WIDGET(edit_menu));
// Functions entry
menubutton_changevalue = gtk_menu_item_new_with_mnemonic( "_Change Value");
g_signal_connect( menubutton_changevalue, "activate",
G_CALLBACK(activate_change_value), this);
gtk_widget_add_accelerator( menubutton_changevalue, "activate", accel_g,
'q', GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
GtkMenu *func_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
gtk_menu_shell_append(GTK_MENU_SHELL(func_menu), menubutton_changevalue);
GtkWidget *functions = gtk_menu_item_new_with_mnemonic("_Functions");
gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), functions);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(functions), GTK_WIDGET(func_menu));
// View Entry
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', GdkModifierType(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', GdkModifierType(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);
gtk_widget_add_accelerator( view_zoom_reset, "activate", accel_g,
'b', GdkModifierType(GDK_CONTROL_MASK),
GTK_ACCEL_VISIBLE);
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));
// Help entry
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));
// Navigator
attrnav = new GsdAttrNavGtk( this, vbox, "Plant",
gsd, edit_mode, &brow_widget, &sts);
attrnav->message_cb = &GsdAttr::gsdattr_message;
attrnav->change_value_cb = &GsdAttr::gsdattr_change_value_cb;
// Status bar and value input
GtkWidget *statusbar = gtk_hbox_new( FALSE, 0);
msg_label = gtk_label_new( "");
gtk_widget_set_size_request( msg_label, -1, 25);
cmd_prompt = gtk_label_new( "value > ");
gtk_widget_set_size_request( cmd_prompt, -1, 25);
cmd_input = gtk_entry_new();
gtk_widget_set_size_request( cmd_input, -1, 25);
g_signal_connect( cmd_input, "activate",
G_CALLBACK(activate_cmd_input), this);
gtk_box_pack_start( GTK_BOX(statusbar), msg_label, FALSE, FALSE, 0);
gtk_box_pack_start( GTK_BOX(statusbar), cmd_prompt, FALSE, FALSE, 0);
gtk_box_pack_start( GTK_BOX(statusbar), cmd_input, TRUE, TRUE, 0);
// Apply and Ok buttons
cmd_ok = gtk_button_new_with_label( "Ok");
gtk_widget_set_size_request( cmd_ok, 70, 25);
g_signal_connect( cmd_ok, "clicked",
G_CALLBACK(activate_cmd_ok), this);
cmd_cancel = gtk_button_new_with_label( "Cancel");
gtk_widget_set_size_request( cmd_cancel, 70, 25);
g_signal_connect( cmd_cancel, "clicked",
G_CALLBACK(activate_cmd_ca), this);
GtkWidget *hboxbuttons = gtk_hbox_new( TRUE, 40);
gtk_box_pack_start( GTK_BOX(hboxbuttons), cmd_ok, FALSE, FALSE, 0);
gtk_box_pack_end( GTK_BOX(hboxbuttons), cmd_cancel, FALSE, FALSE, 0);
gtk_box_pack_start( GTK_BOX(vbox), GTK_WIDGET(menu_bar), FALSE, FALSE, 0);
gtk_box_pack_start( GTK_BOX(vbox), brow_widget, TRUE, TRUE, 0);
gtk_box_pack_start( GTK_BOX(vbox), statusbar, FALSE, FALSE, 3);
gtk_box_pack_start( GTK_BOX(vbox), gtk_hseparator_new(), FALSE, FALSE, 0);
gtk_box_pack_start( GTK_BOX(vbox), hboxbuttons, FALSE, FALSE, 5);
gtk_container_add( GTK_CONTAINER(toplevel), vbox);
gtk_widget_show_all( toplevel);
g_object_set( cmd_prompt, "visible", FALSE, NULL);
g_object_set( cmd_input, "visible", FALSE, NULL);
if ( !edit_mode) {
gtk_widget_set_sensitive( cmd_ok, FALSE);
gtk_widget_set_sensitive( menubutton_copy, FALSE);
gtk_widget_set_sensitive( menubutton_cut, FALSE);
gtk_widget_set_sensitive( menubutton_paste, FALSE);
gtk_widget_set_sensitive( menubutton_changevalue, FALSE);
}
wow = new CoWowGtk( toplevel);
#if 0
char uid_filename[120] = {"pwr_exe:pb_gsd_attr.uid"};
char *uid_filename_p = uid_filename;
Arg args[20];
pwr_tStatus sts;
char title[80];
int i;
MrmHierarchy s_DRMh;
MrmType dclass;
char name[] = "Proview/R Navigator";
static char translations[] =
"<FocusIn>: gsdattr_inputfocus()\n";
static XtTranslations compiled_translations = NULL;
static XtActionsRec actions[] =
{
{"gsdattr_inputfocus", (XtActionProc) action_inputfocus}
};
static MrmRegisterArg reglist[] = {
{ "gsdattr_ctx", 0 },
{"gsdattr_activate_exit",(caddr_t)activate_exit },
{"gsdattr_activate_print",(caddr_t)activate_print },
{"gsdattr_activate_copy",(caddr_t)activate_copy },
{"gsdattr_activate_cut",(caddr_t)activate_cut },
{"gsdattr_activate_paste",(caddr_t)activate_paste },
{"gsdattr_activate_zoom_in",(caddr_t)activate_zoom_in },
{"gsdattr_activate_zoom_out",(caddr_t)activate_zoom_out },
{"gsdattr_activate_zoom_reset",(caddr_t)activate_zoom_reset },
{"gsdattr_activate_change_value",(caddr_t)activate_change_value },
{"gsdattr_activate_help",(caddr_t)activate_help },
{"gsdattr_create_msg_label",(caddr_t)create_msg_label },
{"gsdattr_create_menubutton",(caddr_t)create_menubutton },
{"gsdattr_create_cmd_prompt",(caddr_t)create_cmd_prompt },
{"gsdattr_create_cmd_input",(caddr_t)create_cmd_input },
{"gsdattr_create_attrnav_form",(caddr_t)create_attrnav_form },
{"gsdattr_create_cmd_ok",(caddr_t)create_cmd_ok },
{"gsdattr_activate_cmd_ok",(caddr_t)activate_cmd_ok },
{"gsdattr_create_cmd_ca",(caddr_t)create_cmd_ca },
{"gsdattr_activate_cmd_ca",(caddr_t)activate_cmd_ca }
};
static int reglist_num = (sizeof reglist / sizeof reglist[0]);
dcli_translate_filename( uid_filename, uid_filename);
// Gtk
MrmInitialize();
strcpy( title, "PwR GsdAttr");
reglist[0].value = (caddr_t) this;
// Save the context structure in the widget
XtSetArg (args[0], XmNuserData, (unsigned int) 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);
parent_wid = XtCreatePopupShell("pbGsdEditor",
topLevelShellWidgetClass, a_parent_wid, args, 0);
sts = MrmFetchWidgetOverride( s_DRMh, "gsd_attr_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,500);i++;
XtSetArg(args[i],XmNheight,700);i++;
XtSetValues( toplevel,args,i);
i = 0;
XtSetArg(args[i], XmNdeleteResponse, XmDO_NOTHING);i++;
XtSetValues( parent_wid,args,i);
XtManageChild( toplevel);
XtUnmanageChild( cmd_input);
attrnav = new GsdAttrNavGtk( this, attrnav_form, "Plant",
gsd, edit_mode, &brow_widget, &sts);
((GsdAttrNav *)attrnav)->message_cb = &GsdAttr::gsdattr_message;
((GsdAttrNav *)attrnav)->change_value_cb = &GsdAttr::gsdattr_change_value_cb;
XtPopup( parent_wid, XtGrabNone);
if ( !edit_mode) {
i = 0;
XtSetArg( args[i], XmNsensitive, 0);i++;
XtSetValues( cmd_ok, args, i);
XtSetValues( menubutton_copy, args, i);
XtSetValues( menubutton_cut, args, i);
XtSetValues( menubutton_paste, args, i);
XtSetValues( menubutton_changevalue, args, i);
}
wow = new CoWowGtk( toplevel);
// Connect the window manager close-button to exit
flow_AddCloseVMProtocolCb( parent_wid,
(XtCallbackProc)activate_exit, this);
#endif
}
/*
* Proview $Id: rt_pb_gsd_attr_gtk.h,v 1.1 2007-01-04 08:42:43 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**/
#ifndef rt_pb_gsd_attr_gtk_h
#define rt_pb_gsd_attr_gtk_h
/* rt_pb_gsd_attr_gtk.h -- Profibus gsd attribute editor */
#include "rt_pb_gsd_attr.h"
class GsdAttrGtk : public GsdAttr {
public:
GtkWidget *parent_wid;
GtkWidget *brow_widget;
GtkWidget *form_widget;
GtkWidget *toplevel;
GtkWidget *msg_label;
GtkWidget *cmd_prompt;
GtkWidget *cmd_input;
GtkWidget *attrnav_form;
GtkWidget *cmd_ok;
GtkWidget *cmd_cancel;
GtkWidget *menubutton_copy;
GtkWidget *menubutton_cut;
GtkWidget *menubutton_paste;
GtkWidget *menubutton_changevalue;
GsdAttrGtk( GtkWidget *a_parent_wid,
void *a_parent_ctx,
void *a_object,
pb_gsd *a_gsd,
int a_edit_mode);
~GsdAttrGtk();
void message( char severity, char *message);
void set_prompt( char *prompt);
void change_value();
static void gsdattr_message( void *attr, char severity, char *message);
static void gsdattr_change_value_cb( void *attr_ctx);
static void activate_change_value( GtkWidget *w, gpointer data);
static void activate_exit( GtkWidget *w, gpointer data);
static void activate_help( GtkWidget *w, gpointer data);
static void activate_copy( GtkWidget *w, gpointer data);
static void activate_cut( GtkWidget *w, gpointer data);
static void activate_paste( GtkWidget *w, gpointer data);
static void activate_zoom_in( GtkWidget *w, gpointer data);
static void activate_zoom_out( GtkWidget *w, gpointer data);
static void activate_zoom_reset( GtkWidget *w, gpointer data);
static void activate_print( GtkWidget *w, gpointer data);
static void activate_cmd_input( GtkWidget *w, gpointer data);
static void activate_cmd_ok( GtkWidget *w, gpointer data);
static void cmd_close_apply_cb( void *ctx, void *data);
static void cmd_close_no_cb( void *ctx, void *data);
static void activate_cmd_ca( GtkWidget *w, gpointer dataxo);
static gboolean action_inputfocus( GtkWidget *w, GdkEvent *event, gpointer data);
//static void valchanged_cmd_input( GtkWidget *w, gpointer data);
};
#endif
/*
* Proview $Id: rt_pb_gsd_attrnav_gtk.cpp,v 1.1 2007-01-04 08:42:43 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**/
/* rt_pb_gsd_attrnav_gtk.cpp -- Display gsd attributes */
#include "glow_std.h"
#include <stdio.h>
#include <stdlib.h>
#include <gtk/gtk.h>
#include "co_cdh.h"
#include "co_time.h"
#include "co_wow_gtk.h"
#include "flow.h"
#include "flow_browctx.h"
#include "flow_browapi.h"
#include "flow_browwidget_gtk.h"
#include "flow_msg.h"
#include "glow.h"
#include "glow_growctx.h"
#include "glow_growapi.h"
#include "glow_growwidget_gtk.h"
#include "rt_pb_gsd.h"
#include "rt_pb_gsd_attr_gtk.h"
#include "rt_pb_gsd_attrnav_gtk.h"
#include "rt_pb_msg.h"
//
// Create the navigator widget
//
GsdAttrNavGtk::GsdAttrNavGtk( void *xn_parent_ctx,
GtkWidget *xn_parent_wid,
char *xn_name,
pb_gsd *xn_gsd,
int xn_edit_mode,
GtkWidget **w,
pwr_tStatus *status) :
GsdAttrNav( xn_parent_ctx, xn_name, xn_gsd, xn_edit_mode, status),
parent_wid(xn_parent_wid)
{
form_widget = scrolledbrowwidgetgtk_new( init_brow_cb,
this, &brow_widget);
gtk_widget_show_all( brow_widget);
*w = form_widget;
wow = new CoWowGtk( brow_widget);
trace_timerid = wow->timer_new();
*status = 1;
}
//
// Delete a nav context
//
GsdAttrNavGtk::~GsdAttrNavGtk()
{
delete trace_timerid;
delete wow;
delete brow;
gtk_widget_destroy( form_widget);
}
void GsdAttrNavGtk::set_inputfocus()
{
gdk_window_focus( brow_widget->window, GDK_CURRENT_TIME);
}
/*
* Proview $Id: rt_pb_gsd_attrnav_gtk.h,v 1.1 2007-01-04 08:42:43 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**/
#ifndef rt_pb_gsd_attrnav_gtk_h
#define rt_pb_gsd_attrnav_gtk_h
/* rt_pb_gsd_attrnav_gtk.h -- Profibus gsd configurator navigator */
#ifndef rt_pb_gsd_attrnav_h
# include "rt_pb_gsd_attrnav.h"
#endif
//! The navigation area of the attribute editor.
class GsdAttrNavGtk : public GsdAttrNav {
public:
GsdAttrNavGtk(
void *xn_parent_ctx,
GtkWidget *xn_parent_wid,
char *xn_name,
pb_gsd *xn_gsd,
int xn_edit_mode,
GtkWidget **w,
pwr_tStatus *status);
~GsdAttrNavGtk();
void set_inputfocus();
GtkWidget *parent_wid;
GtkWidget *brow_widget;
GtkWidget *form_widget;
GtkWidget *toplevel;
};
#endif
include $(pwre_dir_symbols)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk
ifeq ($($(type_name)_generic_mk),)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(type_name)_generic.mk
endif
ifeq ($($(type_name)_generic_mk),)
include $(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
endif
-include ../../special.mk
-include ../special.mk
-include special.mk
/*
* Proview $Id: rt_pb_gsd_attr_motif.cpp,v 1.1 2007-01-04 08:43:47 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**/
/* rt_pb_gsd_attr_motif.cpp -- Display gsd attributes */
#include "glow_std.h"
#include <stdio.h>
#include <stdlib.h>
#include <Xm/Xm.h>
#include <Xm/XmP.h>
#include <Xm/Text.h>
#include <Mrm/MrmPublic.h>
#include <X11/Intrinsic.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
extern "C" {
#include "co_cdh.h"
#include "co_time.h"
#include "co_mrm_util.h"
#include "co_dcli.h"
#include "flow_x.h"
}
#include "co_wow_motif.h"
#include "flow.h"
#include "flow_browctx.h"
#include "flow_browapi.h"
#include "glow.h"
#include "glow_growctx.h"
#include "glow_growapi.h"
#include "flow_msg.h"
#include "rt_pb_msg.h"
#include "rt_pb_gsd_attr_motif.h"
#include "rt_pb_gsd_attrnav_motif.h"
void GsdAttrMotif::message( char severity, char *message)
{
Arg args[2];
XmString cstr;
cstr=XmStringCreateLtoR( message, "ISO8859-1");
XtSetArg(args[0],XmNlabelString, cstr);
XtSetValues( msg_label, args, 1);
XmStringFree( cstr);
}
void GsdAttrMotif::set_prompt( char *prompt)
{
Arg args[3];
XmString cstr;
cstr=XmStringCreateLtoR( prompt, "ISO8859-1");
XtSetArg(args[0],XmNlabelString, cstr);
XtSetArg(args[1],XmNwidth, 50);
XtSetArg(args[2],XmNheight, 30);
XtSetValues( cmd_prompt, args, 3);
XmStringFree( cstr);
}
void GsdAttrMotif::change_value()
{
int sts;
Widget text_w;
char *value;
if ( input_open) {
XtUnmanageChild( cmd_input);
set_prompt( "");
input_open = 0;
return;
}
if ( !edit_mode) {
message( 'E', "Not in edit mode");
return;
}
sts = ((GsdAttrNav *)attrnav)->check_attr_value( &value);
if ( EVEN(sts)) {
if ( sts == PB__NOATTRSEL)
message( 'E', "No attribute is selected");
else
message( 'E', "Attribute can't be modified");
return;
}
text_w = cmd_input;
XtManageChild( text_w);
message( ' ', "");
flow_SetInputFocus( text_w);
if ( value) {
XmTextSetString( text_w, value);
XmTextSetInsertionPosition( text_w, strlen(value));
XmTextSetSelection( text_w, 0, strlen(value), CurrentTime);
}
else {
XmTextSetString( cmd_input, "");
}
set_prompt( "value >");
input_open = 1;
}
//
// Callbackfunctions from menu entries
//
void GsdAttrMotif::activate_change_value( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
attr->change_value();
}
void GsdAttrMotif::activate_exit( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
attr->activate_exit();
}
void GsdAttrMotif::activate_help( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
attr->activate_help();
}
void GsdAttrMotif::activate_copy( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
attr->activate_copy();
}
void GsdAttrMotif::activate_cut( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
attr->activate_cut();
}
void GsdAttrMotif::activate_paste( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
attr->activate_paste();
}
void GsdAttrMotif::activate_zoom_in( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
attr->activate_zoom_in();
}
void GsdAttrMotif::activate_zoom_out( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
attr->activate_zoom_out();
}
void GsdAttrMotif::activate_zoom_reset( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
attr->activate_zoom_reset();
}
void GsdAttrMotif::activate_print( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
attr->activate_print();
}
void GsdAttrMotif::activate_cmd_ok( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
attr->activate_cmd_ok();
}
void GsdAttrMotif::activate_cmd_ca( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
attr->activate_cmd_ca();
}
void GsdAttrMotif::create_menubutton( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
int key;
XtVaGetValues (w, XmNuserData, &key, NULL);
switch (key) {
case 1: ((GsdAttrMotif *)attr)->menubutton_copy = w; break;
case 2: ((GsdAttrMotif *)attr)->menubutton_cut = w; break;
case 3: ((GsdAttrMotif *)attr)->menubutton_paste = w; break;
case 4: ((GsdAttrMotif *)attr)->menubutton_changevalue = w; break;
default:
;
}
}
void GsdAttrMotif::create_msg_label( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
((GsdAttrMotif *)attr)->msg_label = w;
}
void GsdAttrMotif::create_cmd_prompt( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
((GsdAttrMotif *)attr)->cmd_prompt = w;
}
void GsdAttrMotif::create_cmd_ok( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
((GsdAttrMotif *)attr)->cmd_ok = w;
}
void GsdAttrMotif::create_cmd_ca( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
((GsdAttrMotif *)attr)->cmd_cancel = w;
}
void GsdAttrMotif::create_cmd_input( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
Arg args[2];
XtSetArg (args[0], XmNuserData, attr);
XtSetValues (w, args, 1);
mrm_TextInit( w, (XtActionProc) valchanged_cmd_input, mrm_eUtility_GsdAttr);
((GsdAttrMotif *)attr)->cmd_input = w;
}
void GsdAttrMotif::create_attrnav_form( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
((GsdAttrMotif *)attr)->attrnav_form = w;
}
void GsdAttrMotif::action_inputfocus( Widget w, XmAnyCallbackStruct *data)
{
Arg args[1];
GsdAttrMotif *attr;
XtSetArg (args[0], XmNuserData, &attr);
XtGetValues (w, args, 1);
if ( !attr)
return;
if ( flow_IsManaged( attr->cmd_input))
flow_SetInputFocus( attr->cmd_input);
else if ( attr->attrnav)
((GsdAttrNav *)attr->attrnav)->set_inputfocus();
}
void GsdAttrMotif::valchanged_cmd_input( Widget w, XEvent *event)
{
GsdAttr *attr;
int sts;
char *text;
Arg args[2];
XtSetArg(args[0], XmNuserData, &attr);
XtGetValues(w, args, 1);
sts = mrm_TextInput( w, event, (char *)attr->value_recall, sizeof(attr->value_recall[0]),
sizeof( attr->value_recall)/sizeof(attr->value_recall[0]),
&attr->value_current_recall);
if ( sts) {
text = XmTextGetString( w);
if ( attr->input_open)
{
sts = ((GsdAttrNav *)attr->attrnav)->set_attr_value( text);
XtUnmanageChild( w);
attr->set_prompt( "");
attr->input_open = 0;
((GsdAttrNav *)attr->attrnav)->set_inputfocus();
}
}
}
GsdAttrMotif::~GsdAttrMotif()
{
delete (GsdAttrNav *)attrnav;
XtDestroyWidget( parent_wid);
}
GsdAttrMotif::GsdAttrMotif( Widget a_parent_wid,
void *a_parent_ctx,
void *a_object,
pb_gsd *a_gsd,
int a_edit_mode) :
GsdAttr( a_parent_ctx, a_object, a_gsd, a_edit_mode)
{
char uid_filename[120] = {"pwr_exe:pb_gsd_attr.uid"};
char *uid_filename_p = uid_filename;
Arg args[20];
pwr_tStatus sts;
char title[80];
int i;
MrmHierarchy s_DRMh;
MrmType dclass;
char name[] = "Proview/R Navigator";
static char translations[] =
"<FocusIn>: gsdattr_inputfocus()\n";
static XtTranslations compiled_translations = NULL;
static XtActionsRec actions[] =
{
{"gsdattr_inputfocus", (XtActionProc) action_inputfocus}
};
static MrmRegisterArg reglist[] = {
{ "gsdattr_ctx", 0 },
{"gsdattr_activate_exit",(caddr_t)activate_exit },
{"gsdattr_activate_print",(caddr_t)activate_print },
{"gsdattr_activate_copy",(caddr_t)activate_copy },
{"gsdattr_activate_cut",(caddr_t)activate_cut },
{"gsdattr_activate_paste",(caddr_t)activate_paste },
{"gsdattr_activate_zoom_in",(caddr_t)activate_zoom_in },
{"gsdattr_activate_zoom_out",(caddr_t)activate_zoom_out },
{"gsdattr_activate_zoom_reset",(caddr_t)activate_zoom_reset },
{"gsdattr_activate_change_value",(caddr_t)activate_change_value },
{"gsdattr_activate_help",(caddr_t)activate_help },
{"gsdattr_create_msg_label",(caddr_t)create_msg_label },
{"gsdattr_create_menubutton",(caddr_t)create_menubutton },
{"gsdattr_create_cmd_prompt",(caddr_t)create_cmd_prompt },
{"gsdattr_create_cmd_input",(caddr_t)create_cmd_input },
{"gsdattr_create_attrnav_form",(caddr_t)create_attrnav_form },
{"gsdattr_create_cmd_ok",(caddr_t)create_cmd_ok },
{"gsdattr_activate_cmd_ok",(caddr_t)activate_cmd_ok },
{"gsdattr_create_cmd_ca",(caddr_t)create_cmd_ca },
{"gsdattr_activate_cmd_ca",(caddr_t)activate_cmd_ca }
};
static int reglist_num = (sizeof reglist / sizeof reglist[0]);
dcli_translate_filename( uid_filename, uid_filename);
// Motif
MrmInitialize();
strcpy( title, "PwR GsdAttr");
reglist[0].value = (caddr_t) this;
// Save the context structure in the widget
XtSetArg (args[0], XmNuserData, (unsigned int) 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);
parent_wid = XtCreatePopupShell("pbGsdEditor",
topLevelShellWidgetClass, a_parent_wid, args, 0);
sts = MrmFetchWidgetOverride( s_DRMh, "gsd_attr_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,500);i++;
XtSetArg(args[i],XmNheight,700);i++;
XtSetValues( toplevel,args,i);
i = 0;
XtSetArg(args[i], XmNdeleteResponse, XmDO_NOTHING);i++;
XtSetValues( parent_wid,args,i);
XtManageChild( toplevel);
XtUnmanageChild( cmd_input);
attrnav = new GsdAttrNavMotif( this, attrnav_form, "Plant",
gsd, edit_mode, &brow_widget, &sts);
((GsdAttrNav *)attrnav)->message_cb = &GsdAttr::gsdattr_message;
((GsdAttrNav *)attrnav)->change_value_cb = &GsdAttr::gsdattr_change_value_cb;
XtPopup( parent_wid, XtGrabNone);
if ( !edit_mode) {
i = 0;
XtSetArg( args[i], XmNsensitive, 0);i++;
XtSetValues( cmd_ok, args, i);
XtSetValues( menubutton_copy, args, i);
XtSetValues( menubutton_cut, args, i);
XtSetValues( menubutton_paste, args, i);
XtSetValues( menubutton_changevalue, args, i);
}
wow = new CoWowMotif( toplevel);
// Connect the window manager close-button to exit
flow_AddCloseVMProtocolCb( parent_wid,
(XtCallbackProc)activate_exit, this);
}
/*
* Proview $Id: rt_pb_gsd_attr_motif.h,v 1.1 2007-01-04 08:43:47 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**/
#ifndef rt_pb_gsd_attr_motif_h
#define rt_pb_gsd_attr_motif_h
/* rt_pb_gsd_attr_motif.h -- Profibus gsd attribute editor */
#include "rt_pb_gsd_attr.h"
class GsdAttrMotif : public GsdAttr {
public:
Widget parent_wid;
Widget brow_widget;
Widget form_widget;
Widget toplevel;
Widget msg_label;
Widget cmd_prompt;
Widget cmd_input;
Widget attrnav_form;
Widget cmd_ok;
Widget cmd_cancel;
Widget menubutton_copy;
Widget menubutton_cut;
Widget menubutton_paste;
Widget menubutton_changevalue;
GsdAttrMotif( Widget a_parent_wid,
void *a_parent_ctx,
void *a_object,
pb_gsd *a_gsd,
int a_edit_mode);
~GsdAttrMotif();
void message( char severity, char *message);
void set_prompt( char *prompt);
void change_value();
static void gsdattr_message( void *attr, char severity, char *message);
static void gsdattr_change_value_cb( void *attr_ctx);
static void activate_change_value( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data);
static void activate_exit( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data);
static void activate_help( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data);
static void activate_copy( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data);
static void activate_cut( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data);
static void activate_paste( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data);
static void activate_zoom_in( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data);
static void activate_zoom_out( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data);
static void activate_zoom_reset( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data);
static void activate_print( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data);
static void activate_cmd_ok( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data);
static void cmd_close_apply_cb( void *ctx, void *data);
static void cmd_close_no_cb( void *ctx, void *data);
static void activate_cmd_ca( Widget w, GsdAttr *attr, XmAnyCallbackStruct *dataxo);
static void create_menubutton( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data);
static void create_msg_label( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data);
static void create_cmd_prompt( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data);
static void create_cmd_ok( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data);
static void create_cmd_ca( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data);
static void create_cmd_input( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data);
static void create_attrnav_form( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data);
static void action_inputfocus( Widget w, XmAnyCallbackStruct *data);
static void valchanged_cmd_input( Widget w, XEvent *event);
};
#endif
/*
* Proview $Id: rt_pb_gsd_attrnav_motif.cpp,v 1.1 2007-01-04 08:43:47 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**/
/* rt_pb_gsd_attrnav.cpp -- Display gsd attributes */
#include "glow_std.h"
#include <stdio.h>
#include <stdlib.h>
#include "co_cdh.h"
#include "co_time.h"
#include "co_wow_motif.h"
#include <Xm/Xm.h>
#include <Xm/XmP.h>
#include <Xm/Text.h>
#include <Mrm/MrmPublic.h>
#include <X11/Intrinsic.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include "flow.h"
#include "flow_browctx.h"
#include "flow_browapi.h"
#include "flow_browwidget_motif.h"
#include "flow_msg.h"
#include "glow.h"
#include "glow_growctx.h"
#include "glow_growapi.h"
#include "glow_growwidget_motif.h"
#include "rt_pb_gsd.h"
#include "rt_pb_gsd_attr_motif.h"
#include "rt_pb_gsd_attrnav_motif.h"
#include "rt_pb_msg.h"
//
// Create the navigator widget
//
GsdAttrNavMotif::GsdAttrNavMotif( void *xn_parent_ctx,
Widget xn_parent_wid,
char *xn_name,
pb_gsd *xn_gsd,
int xn_edit_mode,
Widget *w,
pwr_tStatus *status) :
GsdAttrNav( xn_parent_ctx, xn_name, xn_gsd, xn_edit_mode, status),
parent_wid(xn_parent_wid)
{
form_widget = ScrolledBrowCreate( parent_wid, name, NULL, 0,
init_brow_cb, this, (Widget *)&brow_widget);
XtManageChild( form_widget);
// Create the root item
*w = form_widget;
wow = new CoWowMotif( brow_widget);
trace_timerid = wow->timer_new();
*status = 1;
}
//
// Delete a nav context
//
GsdAttrNavMotif::~GsdAttrNavMotif()
{
delete trace_timerid;
delete wow;
delete brow;
XtDestroyWidget( form_widget);
}
void GsdAttrNavMotif::set_inputfocus()
{
XtCallAcceptFocus( brow_widget, CurrentTime);
}
/*
* Proview $Id: rt_pb_gsd_attrnav_motif.h,v 1.1 2007-01-04 08:43:47 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**/
#ifndef rt_pb_gsd_attrnav_motif_h
#define rt_pb_gsd_attrnav_motif_h
/* rt_pb_gsd_attrnav_motif.h -- Profibus gsd configurator navigator */
#ifndef rt_pb_gsd_attrnav_h
# include "rt_pb_gsd_attrnav.h"
#endif
//! The navigation area of the attribute editor.
class GsdAttrNavMotif : public GsdAttrNav {
public:
GsdAttrNavMotif(
void *xn_parent_ctx,
Widget xn_parent_wid,
char *xn_name,
pb_gsd *xn_gsd,
int xn_edit_mode,
Widget *w,
pwr_tStatus *status);
~GsdAttrNavMotif();
void set_inputfocus();
Widget parent_wid;
Widget brow_widget;
Widget form_widget;
Widget toplevel;
};
#endif
/*
* Proview $Id: rt_pb_gsd_attr.cpp,v 1.4 2006-04-24 13:22:23 claes Exp $
* Proview $Id: rt_pb_gsd_attr.cpp,v 1.5 2007-01-04 08:42:20 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -23,122 +23,32 @@
#include <stdio.h>
#include <stdlib.h>
#include <Xm/Xm.h>
#include <Xm/XmP.h>
#include <Xm/Text.h>
#include <Mrm/MrmPublic.h>
#include <X11/Intrinsic.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
extern "C" {
#include "co_cdh.h"
#include "co_time.h"
#include "co_mrm_util.h"
#include "co_dcli.h"
#include "co_wow.h"
#include "flow_x.h"
}
#include "flow.h"
#include "flow_browctx.h"
#include "flow_browapi.h"
#include "flow_browwidget.h"
#include "glow.h"
#include "glow_growctx.h"
#include "glow_growapi.h"
#include "glow_growwidget.h"
#include "flow_msg.h"
#include "rt_pb_msg.h"
#include "rt_pb_gsd_attr.h"
#include "rt_pb_gsd_attrnav.h"
// Static memeber variables
// Static member variables
char GsdAttr::value_recall[30][160];
static void gsdattr_valchanged_cmd_input( Widget w, XEvent *event);
static void gsdattr_cmd_close_apply_cb( void *ctx, void *data);
static void gsdattr_cmd_close_no_cb( void *ctx, void *data);
static void gsdattr_message( void *attr, char severity, char *message)
void GsdAttr::gsdattr_message( void *attr, char severity, char *message)
{
((GsdAttr *)attr)->message( severity, message);
}
void GsdAttr::message( char severity, char *message)
{
Arg args[2];
XmString cstr;
cstr=XmStringCreateLtoR( message, "ISO8859-1");
XtSetArg(args[0],XmNlabelString, cstr);
XtSetValues( msg_label, args, 1);
XmStringFree( cstr);
}
void GsdAttr::set_prompt( char *prompt)
{
Arg args[3];
XmString cstr;
cstr=XmStringCreateLtoR( prompt, "ISO8859-1");
XtSetArg(args[0],XmNlabelString, cstr);
XtSetArg(args[1],XmNwidth, 50);
XtSetArg(args[2],XmNheight, 30);
XtSetValues( cmd_prompt, args, 3);
XmStringFree( cstr);
}
void GsdAttr::change_value()
{
int sts;
Widget text_w;
char *value;
if ( input_open) {
XtUnmanageChild( cmd_input);
set_prompt( "");
input_open = 0;
return;
}
if ( !edit_mode) {
message( 'E', "Not in edit mode");
return;
}
sts = ((GsdAttrNav *)attrnav)->check_attr_value( &value);
if ( EVEN(sts)) {
if ( sts == PB__NOATTRSEL)
message( 'E', "No attribute is selected");
else
message( 'E', "Attribute can't be modified");
return;
}
text_w = cmd_input;
XtManageChild( text_w);
message( ' ', "");
flow_SetInputFocus( text_w);
if ( value) {
XmTextSetString( text_w, value);
XmTextSetInsertionPosition( text_w, strlen(value));
XmTextSetSelection( text_w, 0, strlen(value), CurrentTime);
}
else {
XmTextSetString( cmd_input, "");
}
set_prompt( "value >");
input_open = 1;
}
static void gsdattr_change_value_cb( void *attr_ctx)
void GsdAttr::gsdattr_change_value_cb( void *attr_ctx)
{
GsdAttr *attr = (GsdAttr *) attr_ctx;
attr->change_value();
......@@ -147,144 +57,139 @@ static void gsdattr_change_value_cb( void *attr_ctx)
//
// Callbackfunctions from menu entries
//
static void gsdattr_activate_change_value( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
attr->change_value();
}
static void gsdattr_activate_exit( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
void GsdAttr::activate_exit()
{
if ( attr->close_cb) {
if ( attr->gsd->is_modified()) {
wow_DisplayQuestion( (void *)attr, attr->toplevel, "Apply",
"Do you want to apply changes",
gsdattr_cmd_close_apply_cb, gsdattr_cmd_close_no_cb, 0);
if ( close_cb) {
if ( gsd->is_modified()) {
wow->DisplayQuestion( (void *)this, "Apply",
"Do you want to apply changes",
cmd_close_apply_cb, cmd_close_no_cb, 0);
}
else
(attr->close_cb)( attr->parent_ctx);
(close_cb)( parent_ctx);
}
else
delete attr;
delete this;
}
static void gsdattr_activate_help( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
void GsdAttr::activate_help()
{
int sts;
if ( attr->help_cb)
sts = (attr->help_cb)( attr->parent_ctx, "pb_slave_editor /helpfile=\"$pwr_exe/profibus_xtthelp.dat\"");
if ( help_cb)
sts = (help_cb)( parent_ctx, "pb_slave_editor /helpfile=\"$pwr_exe/profibus_xtthelp.dat\"");
}
static void gsdattr_activate_copy( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
void GsdAttr::activate_copy()
{
ItemPbModule *item;
int sts;
sts = attr->attrnav->get_select( (ItemPb **) &item);
sts = attrnav->get_select( (ItemPb **) &item);
if ( EVEN(sts)) {
attr->message('E', "Select a module");
message('E', "Select a module");
return;
}
if ( item->type != attrnav_eItemType_PbModule) {
attr->message('E', "Only modules can be copied");
message('E', "Only modules can be copied");
return;
}
attr->gsd->copy_module_conf( item->mconf);
attr->message('I', "Module copied");
gsd->copy_module_conf( item->mconf);
message('I', "Module copied");
}
static void gsdattr_activate_cut( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
void GsdAttr::activate_cut()
{
ItemPbModule *item;
int sts;
sts = attr->attrnav->get_select( (ItemPb **) &item);
sts = attrnav->get_select( (ItemPb **) &item);
if ( EVEN(sts)) {
attr->message('E', "Select a module");
message('E', "Select a module");
return;
}
if ( item->type != attrnav_eItemType_PbModule) {
attr->message('E', "Only modules can be copied");
message('E', "Only modules can be copied");
return;
}
attr->gsd->cut_module_conf( item->mconf);
gsd->cut_module_conf( item->mconf);
}
static void gsdattr_activate_paste( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
void GsdAttr::activate_paste()
{
ItemPbModule *item;
int sts;
sts = attr->attrnav->get_select( (ItemPb **) &item);
sts = attrnav->get_select( (ItemPb **) &item);
if ( EVEN(sts)) {
attr->message('E', "Select a module");
message('E', "Select a module");
return;
}
if ( item->type != attrnav_eItemType_PbModule) {
attr->message('E', "Only modules can be copied");
message('E', "Only modules can be copied");
return;
}
attr->gsd->paste_module_conf( item->mconf);
gsd->paste_module_conf( item->mconf);
}
static void gsdattr_activate_zoom_in( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
void GsdAttr::activate_zoom_in()
{
double zoom_factor;
attr->attrnav->get_zoom( &zoom_factor);
attrnav->get_zoom( &zoom_factor);
if ( zoom_factor > 40)
return;
attr->attrnav->zoom( 1.18);
attrnav->zoom( 1.18);
}
static void gsdattr_activate_zoom_out( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
void GsdAttr::activate_zoom_out()
{
double zoom_factor;
attr->attrnav->get_zoom( &zoom_factor);
attrnav->get_zoom( &zoom_factor);
if ( zoom_factor < 15)
return;
attr->attrnav->zoom( 1.0 / 1.18);
attrnav->zoom( 1.0 / 1.18);
}
static void gsdattr_activate_zoom_reset( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
void GsdAttr::activate_zoom_reset()
{
attr->attrnav->unzoom();
attrnav->unzoom();
}
static void gsdattr_activate_print( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
void GsdAttr::activate_print()
{
char filename[80] = "pwrp_tmp:wnav.ps";
char cmd[200];
int sts;
dcli_translate_filename( filename, filename);
attr->attrnav->print( filename);
attrnav->print( filename);
sprintf( cmd, "wb_gre_print.sh %s", filename);
sts = system( cmd);
}
static void gsdattr_activate_cmd_ok( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
void GsdAttr::activate_cmd_ok()
{
int sts;
int idx;
char msg[80];
if ( attr->save_cb) {
if ( save_cb) {
// Check syntax
sts = attr->gsd->syntax_check( &idx);
sts = gsd->syntax_check( &idx);
if ( EVEN(sts)) {
switch ( sts) {
case PB__NOMODULENAME:
......@@ -292,28 +197,28 @@ static void gsdattr_activate_cmd_ok( Widget w, GsdAttr *attr, XmAnyCallbackStruc
break;
case PB__DUPLMODULENAME:
sprintf( msg, "Syntax error in module %s, Duplicate module name",
attr->gsd->module_conf[idx].name);
gsd->module_conf[idx].name);
break;
case PB__NOMODULECLASS:
sprintf( msg, "Syntax error in module %s, Module class is missing",
attr->gsd->module_conf[idx].name);
gsd->module_conf[idx].name);
break;
default:
sprintf( msg, "Syntax error in module %d", idx + 1);
}
attr->message( 'E', msg);
message( 'E', msg);
return;
}
sts = (attr->save_cb)( attr->parent_ctx);
sts = (save_cb)( parent_ctx);
if ( EVEN(sts))
attr->message( 'E', "Error saving profibus data");
message( 'E', "Error saving profibus data");
else
attr->gsd->set_modified(0);
gsd->set_modified(0);
}
}
static void gsdattr_cmd_close_apply_cb( void *ctx, void *data)
void GsdAttr::cmd_close_apply_cb( void *ctx, void *data)
{
GsdAttr *attr = (GsdAttr *)ctx;
int sts;
......@@ -327,241 +232,39 @@ static void gsdattr_cmd_close_apply_cb( void *ctx, void *data)
}
}
static void gsdattr_cmd_close_no_cb( void *ctx, void *data)
void GsdAttr::cmd_close_no_cb( void *ctx, void *data)
{
GsdAttr *attr = (GsdAttr *)ctx;
(attr->close_cb)( attr->parent_ctx);
}
static void gsdattr_activate_cmd_ca( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
void GsdAttr::activate_cmd_ca()
{
if ( attr->close_cb) {
if ( attr->gsd->is_modified()) {
wow_DisplayQuestion( (void *)attr, attr->toplevel, "Apply",
"Do you want to apply changes",
gsdattr_cmd_close_apply_cb, gsdattr_cmd_close_no_cb, 0);
if ( close_cb) {
if ( gsd->is_modified()) {
wow->DisplayQuestion( (void *)this, "Apply",
"Do you want to apply changes",
cmd_close_apply_cb, cmd_close_no_cb, 0);
}
else
(attr->close_cb)( attr->parent_ctx);
}
}
void gsdattr_create_menubutton( Widget w, GsdAttr *attr)
{
int key;
XtVaGetValues (w, XmNuserData, &key, NULL);
switch (key)
{
case 1: attr->menubutton_copy = w; break;
case 2: attr->menubutton_cut = w; break;
case 3: attr->menubutton_paste = w; break;
case 4: attr->menubutton_changevalue = w; break;
default:
;
}
}
static void gsdattr_create_msg_label( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
attr->msg_label = w;
}
static void gsdattr_create_cmd_prompt( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
attr->cmd_prompt = w;
}
static void gsdattr_create_cmd_ok( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
attr->cmd_ok = w;
}
static void gsdattr_create_cmd_ca( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
attr->cmd_cancel = w;
}
static void gsdattr_create_cmd_input( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
Arg args[2];
XtSetArg (args[0], XmNuserData, attr);
XtSetValues (w, args, 1);
mrm_TextInit( w, (XtActionProc) gsdattr_valchanged_cmd_input, mrm_eUtility_GsdAttr);
attr->cmd_input = w;
}
static void gsdattr_create_attrnav_form( Widget w, GsdAttr *attr, XmAnyCallbackStruct *data)
{
attr->attrnav_form = w;
}
static void gsdattr_action_inputfocus( Widget w, XmAnyCallbackStruct *data)
{
Arg args[1];
GsdAttr *attr;
XtSetArg (args[0], XmNuserData, &attr);
XtGetValues (w, args, 1);
if ( !attr)
return;
if ( flow_IsManaged( attr->cmd_input))
flow_SetInputFocus( attr->cmd_input);
else if ( attr->attrnav)
((GsdAttrNav *)attr->attrnav)->set_inputfocus();
}
static void gsdattr_valchanged_cmd_input( Widget w, XEvent *event)
{
GsdAttr *attr;
int sts;
char *text;
Arg args[2];
XtSetArg(args[0], XmNuserData, &attr);
XtGetValues(w, args, 1);
sts = mrm_TextInput( w, event, (char *)attr->value_recall, sizeof(attr->value_recall[0]),
sizeof( attr->value_recall)/sizeof(attr->value_recall[0]),
&attr->value_current_recall);
if ( sts) {
text = XmTextGetString( w);
if ( attr->input_open)
{
sts = ((GsdAttrNav *)attr->attrnav)->set_attr_value( text);
XtUnmanageChild( w);
attr->set_prompt( "");
attr->input_open = 0;
((GsdAttrNav *)attr->attrnav)->set_inputfocus();
}
(close_cb)( parent_ctx);
}
}
GsdAttr::~GsdAttr()
{
delete (GsdAttrNav *)attrnav;
XtDestroyWidget( parent_wid);
}
GsdAttr::GsdAttr( Widget a_parent_wid,
void *a_parent_ctx,
void *a_object,
pb_gsd *a_gsd,
int a_edit_mode) :
parent_ctx(a_parent_ctx), gsd(a_gsd), edit_mode(a_edit_mode), input_open(0), object(a_object),
GsdAttr::GsdAttr( void *a_parent_ctx,
void *a_object,
pb_gsd *a_gsd,
int a_edit_mode) :
parent_ctx(a_parent_ctx), gsd(a_gsd), edit_mode(a_edit_mode), input_open(0),
object(a_object),
close_cb(0), save_cb(0), help_cb(0), client_data(0), recall_idx(-1),
value_current_recall(0)
{
char uid_filename[120] = {"pwr_exe:pb_gsd_attr.uid"};
char *uid_filename_p = uid_filename;
Arg args[20];
pwr_tStatus sts;
char title[80];
int i;
MrmHierarchy s_DRMh;
MrmType dclass;
char name[] = "Proview/R Navigator";
static char translations[] =
"<FocusIn>: gsdattr_inputfocus()\n";
static XtTranslations compiled_translations = NULL;
static XtActionsRec actions[] =
{
{"gsdattr_inputfocus", (XtActionProc) gsdattr_action_inputfocus}
};
static MrmRegisterArg reglist[] = {
{ "gsdattr_ctx", 0 },
{"gsdattr_activate_exit",(caddr_t)gsdattr_activate_exit },
{"gsdattr_activate_print",(caddr_t)gsdattr_activate_print },
{"gsdattr_activate_copy",(caddr_t)gsdattr_activate_copy },
{"gsdattr_activate_cut",(caddr_t)gsdattr_activate_cut },
{"gsdattr_activate_paste",(caddr_t)gsdattr_activate_paste },
{"gsdattr_activate_zoom_in",(caddr_t)gsdattr_activate_zoom_in },
{"gsdattr_activate_zoom_out",(caddr_t)gsdattr_activate_zoom_out },
{"gsdattr_activate_zoom_reset",(caddr_t)gsdattr_activate_zoom_reset },
{"gsdattr_activate_change_value",(caddr_t)gsdattr_activate_change_value },
{"gsdattr_activate_help",(caddr_t)gsdattr_activate_help },
{"gsdattr_create_msg_label",(caddr_t)gsdattr_create_msg_label },
{"gsdattr_create_menubutton",(caddr_t)gsdattr_create_menubutton },
{"gsdattr_create_cmd_prompt",(caddr_t)gsdattr_create_cmd_prompt },
{"gsdattr_create_cmd_input",(caddr_t)gsdattr_create_cmd_input },
{"gsdattr_create_attrnav_form",(caddr_t)gsdattr_create_attrnav_form },
{"gsdattr_create_cmd_ok",(caddr_t)gsdattr_create_cmd_ok },
{"gsdattr_activate_cmd_ok",(caddr_t)gsdattr_activate_cmd_ok },
{"gsdattr_create_cmd_ca",(caddr_t)gsdattr_create_cmd_ca },
{"gsdattr_activate_cmd_ca",(caddr_t)gsdattr_activate_cmd_ca }
};
static int reglist_num = (sizeof reglist / sizeof reglist[0]);
dcli_translate_filename( uid_filename, uid_filename);
// Motif
MrmInitialize();
strcpy( title, "PwR GsdAttr");
reglist[0].value = (caddr_t) this;
// Save the context structure in the widget
XtSetArg (args[0], XmNuserData, (unsigned int) 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);
parent_wid = XtCreatePopupShell("pbGsdEditor",
topLevelShellWidgetClass, a_parent_wid, args, 0);
sts = MrmFetchWidgetOverride( s_DRMh, "gsd_attr_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,500);i++;
XtSetArg(args[i],XmNheight,700);i++;
XtSetValues( toplevel,args,i);
i = 0;
XtSetArg(args[i], XmNdeleteResponse, XmDO_NOTHING);i++;
XtSetValues( parent_wid,args,i);
XtManageChild( toplevel);
XtUnmanageChild( cmd_input);
attrnav = new GsdAttrNav( this, attrnav_form, "Plant",
gsd, edit_mode, &brow_widget, &sts);
((GsdAttrNav *)attrnav)->message_cb = &gsdattr_message;
((GsdAttrNav *)attrnav)->change_value_cb = &gsdattr_change_value_cb;
XtPopup( parent_wid, XtGrabNone);
if ( !edit_mode) {
i = 0;
XtSetArg( args[i], XmNsensitive, 0);i++;
XtSetValues( cmd_ok, args, i);
XtSetValues( menubutton_copy, args, i);
XtSetValues( menubutton_cut, args, i);
XtSetValues( menubutton_paste, args, i);
XtSetValues( menubutton_changevalue, args, i);
}
// Connect the window manager close-button to exit
flow_AddCloseVMProtocolCb( parent_wid,
(XtCallbackProc)gsdattr_activate_exit, this);
}
/*
* Proview $Id: rt_pb_gsd_attr.h,v 1.3 2006-04-12 12:17:45 claes Exp $
* Proview $Id: rt_pb_gsd_attr.h,v 1.4 2007-01-04 08:42:20 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -24,10 +24,6 @@
#include "rt_pb_gsd.h"
#if defined __cplusplus
extern "C" {
#endif
typedef struct {
void *value;
char name[80];
......@@ -41,58 +37,55 @@ typedef struct {
} attr_sItem;
class GsdAttrNav;
class CoWow;
class GsdAttr {
public:
GsdAttr(
Widget a_parent_wid,
void *a_parent_ctx,
void *a_object,
// void (*close_cb) (attr_tCtx),
// void (*redraw_cb) (attr_tCtx),
pb_gsd *a_gsd,
int a_edit_mode);
void *parent_ctx;
Widget parent_wid;
char name[80];
pb_gsd *gsd;
int edit_mode;
Widget brow_widget;
Widget form_widget;
Widget toplevel;
GsdAttrNav *attrnav;
Widget msg_label;
Widget cmd_prompt;
Widget cmd_input;
Widget attrnav_form;
Widget cmd_ok;
Widget cmd_cancel;
Widget menubutton_copy;
Widget menubutton_cut;
Widget menubutton_paste;
Widget menubutton_changevalue;
int input_open;
void *object;
void (*close_cb) (void *);
int (*save_cb) (void *);
int (*help_cb) (void *, char *);
void *client_data;
int recall_idx;
static char value_recall[30][160];
int value_current_recall;
void message( char severity, char *message);
void set_prompt( char *prompt);
void change_value();
public:
void *parent_ctx;
char name[80];
pb_gsd *gsd;
int edit_mode;
GsdAttrNav *attrnav;
int input_open;
void *object;
void (*close_cb) (void *);
int (*save_cb) (void *);
int (*help_cb) (void *, char *);
void *client_data;
int recall_idx;
static char value_recall[30][160];
int value_current_recall;
CoWow *wow;
GsdAttr( void *a_parent_ctx,
void *a_object,
pb_gsd *a_gsd,
int a_edit_mode);
virtual ~GsdAttr();
virtual void message( char severity, char *message) {}
virtual void set_prompt( char *prompt) {}
virtual void change_value() {}
void activate_exit();
void activate_help();
void activate_copy();
void activate_cut();
void activate_paste();
void activate_print();
void activate_zoom_in();
void activate_zoom_out();
void activate_zoom_reset();
void activate_cmd_ok();
void activate_cmd_ca();
~GsdAttr();
};
static void gsdattr_message( void *attr, char severity, char *message);
static void gsdattr_change_value_cb( void *attr_ctx);
static void cmd_close_apply_cb( void *ctx, void *data);
static void cmd_close_no_cb( void *ctx, void *data);
};
/*@}*/
#if defined __cplusplus
}
#endif
#endif
......
/*
* Proview $Id: rt_pb_gsd_attrnav.cpp,v 1.3 2006-07-25 11:01:19 claes Exp $
* Proview $Id: rt_pb_gsd_attrnav.cpp,v 1.4 2007-01-04 08:42:20 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -24,29 +24,17 @@
#include <stdio.h>
#include <stdlib.h>
extern "C" {
#include "co_cdh.h"
#include "co_time.h"
}
#include <Xm/Xm.h>
#include <Xm/XmP.h>
#include <Xm/Text.h>
#include <Mrm/MrmPublic.h>
#include <X11/Intrinsic.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include "co_wow.h"
#include "flow.h"
#include "flow_browctx.h"
#include "flow_browapi.h"
#include "flow_browwidget.h"
#include "flow_msg.h"
#include "glow.h"
#include "glow_growctx.h"
#include "glow_growapi.h"
#include "glow_growwidget.h"
#include "rt_pb_gsd.h"
......@@ -111,18 +99,12 @@ extern "C" {
static char null_str[] = "";
static void attrnav_trace_scan( GsdAttrNav *attrnav);
static int attrnav_trace_scan_bc( brow_tObject object, void *p);
static int attrnav_trace_connect_bc( brow_tObject object, char *name, char *attr,
flow_eTraceType type, /* flow_eDrawType color, */ void **p);
static int attrnav_trace_disconnect_bc( brow_tObject object);
static int attrnav_init_brow_cb( FlowCtx *fctx, void *client_data);
//
// Convert attribute string to value
//
static int attrnav_attr_string_to_value( int type_id, char *value_str,
void *buffer_ptr, int buff_size, int attr_size)
int GsdAttrNav::attr_string_to_value( int type_id, char *value_str,
void *buffer_ptr, int buff_size, int attr_size)
{
switch ( type_id ) {
......@@ -164,8 +146,8 @@ static int attrnav_attr_string_to_value( int type_id, char *value_str,
//
// Convert attribute value to string
//
static void attrnav_attrvalue_to_string( int type_id, void *value_ptr,
char *str, int size, int *len, char *format)
void GsdAttrNav::attrvalue_to_string( int type_id, void *value_ptr,
char *str, int size, int *len, char *format)
{
if ( value_ptr == 0) {
......@@ -430,25 +412,16 @@ void GsdAttrNavBrow::allocate_pixmaps()
//
GsdAttrNav::GsdAttrNav(
void *xn_parent_ctx,
Widget xn_parent_wid,
char *xn_name,
pb_gsd *xn_gsd,
int xn_edit_mode,
Widget *w,
pwr_tStatus *status) :
parent_ctx(xn_parent_ctx), parent_wid(xn_parent_wid),
gsd(xn_gsd), edit_mode(xn_edit_mode), trace_started(0),
message_cb(0), change_value_cb(0)
parent_ctx(xn_parent_ctx),
gsd(xn_gsd), edit_mode(xn_edit_mode), trace_started(0),
message_cb(0), change_value_cb(0)
{
strcpy( name, xn_name);
form_widget = ScrolledBrowCreate( parent_wid, name, NULL, 0,
attrnav_init_brow_cb, this, (Widget *)&brow_widget);
XtManageChild( form_widget);
// Create the root item
*w = form_widget;
*status = 1;
}
......@@ -457,11 +430,6 @@ GsdAttrNav::GsdAttrNav(
//
GsdAttrNav::~GsdAttrNav()
{
if ( trace_started)
XtRemoveTimeOut( trace_timerid);
delete brow;
XtDestroyWidget( form_widget);
}
GsdAttrNavBrow::~GsdAttrNavBrow()
......@@ -469,11 +437,6 @@ GsdAttrNavBrow::~GsdAttrNavBrow()
free_pixmaps();
}
void GsdAttrNav::set_inputfocus()
{
XtCallAcceptFocus( brow_widget, CurrentTime);
}
//
// Get current zoom factor
//
......@@ -539,8 +502,8 @@ int GsdAttrNav::set_attr_value( char *value_str)
case attrnav_eItemType_PbBase: {
ItemPbBase *item = (ItemPbBase *)base_item;
sts = attrnav_attr_string_to_value( item->type_id, value_str,
buffer, sizeof(buffer), item->size);
sts = attr_string_to_value( item->type_id, value_str,
buffer, sizeof(buffer), item->size);
if ( EVEN(sts)) return sts;
if ( item->max_limit != 0 || item->min_limit != 0) {
......@@ -592,8 +555,8 @@ int GsdAttrNav::check_attr_value( char **value)
*value = 0;
return PB__ATTRNOEDIT;
}
attrnav_attrvalue_to_string( item->type_id, item->value_p, buf,
sizeof(buf), &len, NULL);
attrvalue_to_string( item->type_id, item->value_p, buf,
sizeof(buf), &len, NULL);
*value = buf;
return PB__SUCCESS;
}
......@@ -608,7 +571,7 @@ int GsdAttrNav::check_attr_value( char **value)
//
// Callbacks from brow
//
static int attrnav_brow_cb( FlowCtx *ctx, flow_tEvent event)
int GsdAttrNav::brow_cb( FlowCtx *ctx, flow_tEvent event)
{
GsdAttrNav *attrnav;
ItemPb *item;
......@@ -703,7 +666,7 @@ static int attrnav_brow_cb( FlowCtx *ctx, flow_tEvent event)
doubleclick_event = (flow_tEvent) calloc( 1, sizeof(*doubleclick_event));
memcpy( doubleclick_event, event, sizeof(*doubleclick_event));
doubleclick_event->event = flow_eEvent_MB1DoubleClick;
sts = attrnav_brow_cb( ctx, doubleclick_event);
sts = brow_cb( ctx, doubleclick_event);
free( (char *) doubleclick_event);
return sts;
}
......@@ -899,16 +862,15 @@ static int attrnav_brow_cb( FlowCtx *ctx, flow_tEvent event)
return 1;
}
static void attrnav_trace_scan( GsdAttrNav *attrnav)
void GsdAttrNav::trace_scan( void *data)
{
GsdAttrNav *attrnav = (GsdAttrNav *)data;
int time = 200;
if ( attrnav->trace_started) {
brow_TraceScan( attrnav->brow->ctx);
attrnav->trace_timerid = XtAppAddTimeOut(
XtWidgetToApplicationContext(attrnav->brow_widget) , time,
(XtTimerCallbackProc)attrnav_trace_scan, attrnav);
attrnav->trace_timerid->add( time, trace_scan, attrnav);
}
}
......@@ -918,7 +880,7 @@ void GsdAttrNav::force_trace_scan()
brow_TraceScan( brow->ctx);
}
static int attrnav_trace_scan_bc( brow_tObject object, void *p)
int GsdAttrNav::trace_scan_bc( brow_tObject object, void *p)
{
ItemPb *base_item;
char buf[200];
......@@ -949,7 +911,7 @@ static int attrnav_trace_scan_bc( brow_tObject object, void *p)
else
item->first_scan = 0;
attrnav_attrvalue_to_string( item->type_id, p, buf, sizeof(buf), &len, NULL);
attrvalue_to_string( item->type_id, p, buf, sizeof(buf), &len, NULL);
brow_SetAnnotation( object, 1, buf, len);
memcpy( item->old_value, p, min(item->size, (int) sizeof(item->old_value)));
break;
......@@ -1136,8 +1098,8 @@ static int attrnav_trace_scan_bc( brow_tObject object, void *p)
return 1;
}
static int attrnav_trace_connect_bc( brow_tObject object, char *name, char *attr,
flow_eTraceType type, /* flow_eDrawType color, */ void **p)
int GsdAttrNav::trace_connect_bc( brow_tObject object, char *name, char *attr,
flow_eTraceType type, void **p)
{
ItemPb *base_item;
......@@ -1188,7 +1150,7 @@ static int attrnav_trace_connect_bc( brow_tObject object, char *name, char *attr
return 1;
}
static int attrnav_trace_disconnect_bc( brow_tObject object)
int GsdAttrNav::trace_disconnect_bc( brow_tObject object)
{
ItemPb *base_item;
......@@ -1450,40 +1412,40 @@ void GsdAttrNavBrow::brow_setup()
brow_SetCtxUserData( ctx, attrnav);
brow_EnableEvent( ctx, flow_eEvent_MB1Click, flow_eEventType_CallBack,
attrnav_brow_cb);
GsdAttrNav::brow_cb);
brow_EnableEvent( ctx, flow_eEvent_MB2Click, flow_eEventType_CallBack,
attrnav_brow_cb);
GsdAttrNav::brow_cb);
brow_EnableEvent( ctx, flow_eEvent_MB1DoubleClick, flow_eEventType_CallBack,
attrnav_brow_cb);
GsdAttrNav::brow_cb);
brow_EnableEvent( ctx, flow_eEvent_MB1DoubleClickCtrl, flow_eEventType_CallBack,
attrnav_brow_cb);
GsdAttrNav::brow_cb);
brow_EnableEvent( ctx, flow_eEvent_SelectClear, flow_eEventType_CallBack,
attrnav_brow_cb);
GsdAttrNav::brow_cb);
brow_EnableEvent( ctx, flow_eEvent_ObjectDeleted, flow_eEventType_CallBack,
attrnav_brow_cb);
GsdAttrNav::brow_cb);
brow_EnableEvent( ctx, flow_eEvent_Key_Up, flow_eEventType_CallBack,
attrnav_brow_cb);
GsdAttrNav::brow_cb);
brow_EnableEvent( ctx, flow_eEvent_Key_Down, flow_eEventType_CallBack,
attrnav_brow_cb);
GsdAttrNav::brow_cb);
brow_EnableEvent( ctx, flow_eEvent_Key_Right, flow_eEventType_CallBack,
attrnav_brow_cb);
GsdAttrNav::brow_cb);
brow_EnableEvent( ctx, flow_eEvent_Key_Left, flow_eEventType_CallBack,
attrnav_brow_cb);
GsdAttrNav::brow_cb);
brow_EnableEvent( ctx, flow_eEvent_Key_PF3, flow_eEventType_CallBack,
attrnav_brow_cb);
GsdAttrNav::brow_cb);
brow_EnableEvent( ctx, flow_eEvent_Radiobutton, flow_eEventType_CallBack,
attrnav_brow_cb);
GsdAttrNav::brow_cb);
brow_EnableEvent( ctx, flow_eEvent_Key_PageUp, flow_eEventType_CallBack,
attrnav_brow_cb);
GsdAttrNav::brow_cb);
brow_EnableEvent( ctx, flow_eEvent_Key_PageDown, flow_eEventType_CallBack,
attrnav_brow_cb);
GsdAttrNav::brow_cb);
}
//
// Backcall routine called at creation of the brow widget
// Enable event, create nodeclasses and insert the root objects.
//
static int attrnav_init_brow_cb( FlowCtx *fctx, void *client_data)
int GsdAttrNav::init_brow_cb( FlowCtx *fctx, void *client_data)
{
GsdAttrNav *attrnav = (GsdAttrNav *) client_data;
BrowCtx *ctx = (BrowCtx *)fctx;
......@@ -1497,11 +1459,11 @@ static int attrnav_init_brow_cb( FlowCtx *fctx, void *client_data)
// Create the root item
attrnav->object_attr();
sts = brow_TraceInit( ctx, attrnav_trace_connect_bc,
attrnav_trace_disconnect_bc, attrnav_trace_scan_bc);
sts = brow_TraceInit( ctx, trace_connect_bc,
trace_disconnect_bc, trace_scan_bc);
attrnav->trace_started = 1;
attrnav_trace_scan( attrnav);
trace_scan( attrnav);
return 1;
}
......
/*
* Proview $Id: rt_pb_gsd_attrnav.h,v 1.3 2006-07-25 11:01:19 claes Exp $
* Proview $Id: rt_pb_gsd_attrnav.h,v 1.4 2007-01-04 08:42:20 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -103,42 +103,40 @@ class GsdAttrNavBrow {
void brow_setup();
};
class CoWow;
class CoWowTimer;
//! The navigation area of the attribute editor.
class GsdAttrNav {
public:
GsdAttrNav(
void *xn_parent_ctx,
Widget xn_parent_wid,
char *xn_name,
pb_gsd *xn_gsd,
int xn_edit_mode,
Widget *w,
pwr_tStatus *status);
~GsdAttrNav();
void *parent_ctx;
Widget parent_wid;
pb_gsd *gsd;
char name[80];
Widget brow_widget;
Widget form_widget;
Widget toplevel;
GsdAttrNavBrow *brow;
attr_sItem *itemlist;
int item_cnt;
int edit_mode;
XtIntervalId trace_timerid;
int trace_started;
void (*message_cb)( void *, char, char *);
void (*change_value_cb)( void *);
CoWow *wow;
CoWowTimer *trace_timerid;
GsdAttrNav(
void *xn_parent_ctx,
char *xn_name,
pb_gsd *xn_gsd,
int xn_edit_mode,
pwr_tStatus *status);
virtual ~GsdAttrNav();
virtual void set_inputfocus() {}
void start_trace( pwr_tObjid Objid, char *object_str);
int set_attr_value( char *value_str);
int check_attr_value( char **value);
int get_select( pwr_sAttrRef *attrref, int *is_attr);
void message( char sev, char *text);
void set_inputfocus();
void force_trace_scan();
int object_attr();
void print( char *filename);
......@@ -147,6 +145,17 @@ class GsdAttrNav {
void unzoom();
void get_zoom( double *zoom_factor);
static void trace_scan( void *data);
static int trace_scan_bc( brow_tObject object, void *p);
static int trace_connect_bc( brow_tObject object, char *name, char *attr,
flow_eTraceType type, void **p);
static int trace_disconnect_bc( brow_tObject object);
static int init_brow_cb( FlowCtx *fctx, void *client_data);
static int attr_string_to_value( int type_id, char *value_str,
void *buffer_ptr, int buff_size, int attr_size);
static void attrvalue_to_string( int type_id, void *value_ptr,
char *str, int size, int *len, char *format);
static int brow_cb( FlowCtx *ctx, flow_tEvent event);
};
class ItemPb {
......
include $(pwre_dir_symbols)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk
ifeq ($($(type_name)_generic_mk),)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(type_name)_generic.mk
endif
ifeq ($($(type_name)_generic_mk),)
include $(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
endif
-include ../../special.mk
-include ../special.mk
-include special.mk
/*
* Proview $Id: wb_c_pb_dp_slave_gtk.cpp,v 1.1 2007-01-04 08:44:14 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**/
/* wb_c_pb_dp_slave_gtk.c -- work bench methods of the Pb_DP_Slave class. */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <vector>
#include <map>
#include "pwr.h"
#include "pwr_baseclasses.h"
#include "pwr_profibusclasses.h"
#include <gtk/gtk.h>
#include "wb_env.h"
#include "flow.h"
#include "flow_ctx.h"
#include "flow_api.h"
#include "flow_browctx.h"
#include "flow_browapi.h"
#include "co_msg.h"
#include "co_cdh.h"
#include "co_dcli.h"
#include "co_wow.h"
#include "co_xhelp_gtk.h"
#include "rt_pb_gsd.h"
#include "rt_pb_gsd_attr_gtk.h"
#include "wb_c_pb_dp_slave.h"
#include "wb_pwrs.h"
#include "wb_ldh_msg.h"
#include "wb_ldh.h"
#include "wb_pwrb_msg.h"
#include "rt_pb_msg.h"
#include "wb_wnav.h"
using namespace std;
static pwr_tStatus Configure (
ldh_sMenuCall *ip
)
{
pwr_tStatus sts;
slave_sCtx *ctx;
sts = pb_dp_slave_create_ctx( ip->PointedSession, ip->Pointed, ip->wnav, &ctx);
if ( sts != PB__USERPRMDATALEN && EVEN(sts)) return sts;
ctx->attr = new GsdAttrGtk( CoXHelpGtk::get_widget(), ctx, 0, ctx->gsd,
ctx->edit_mode);
ctx->attr->close_cb = pb_dp_slave_close_cb;
ctx->attr->save_cb = pb_dp_slave_save_cb;
ctx->attr->help_cb = pb_dp_slave_help_cb;
if ( EVEN(sts)) {
ctx->attr->wow->DisplayError( "Configuration load error",
"Configuration load error\nCheck configuration data");
}
return 1;
}
static pwr_tStatus ConfigureFilter (
ldh_sMenuCall *ip
)
{
#if 0
char *gsd;
int size;
int sts;
sts = ldh_GetObjectPar( ip->PointedSession, ip->Pointed.Objid, "RtBody",
"GSDfile", &gsd, &size);
if ( EVEN(sts)) return sts;
if ( strcmp( gsd, "") == 0) {
free( gsd);
return 0;
}
free( gsd);
#endif
return 1;
}
/*----------------------------------------------------------------------------*\
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
pwr_dExport pwr_BindMethods(Pb_DP_Slave) = {
pwr_BindMethod(Configure),
pwr_BindMethod(ConfigureFilter),
pwr_NullMethod
};
include $(pwre_dir_symbols)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk
ifeq ($($(type_name)_generic_mk),)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(type_name)_generic.mk
endif
ifeq ($($(type_name)_generic_mk),)
include $(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
endif
-include ../../special.mk
-include ../special.mk
-include special.mk
/*
* Proview $Id: wb_c_pb_dp_slave_motif.cpp,v 1.1 2007-01-04 08:44:09 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**/
/* wb_c_pb_dp_slave_motif.c -- work bench methods of the Pb_DP_Slave class. */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <vector>
#include <map>
#include "pwr.h"
#include "pwr_baseclasses.h"
#include "pwr_profibusclasses.h"
#include <Xm/Xm.h>
#include <Mrm/MrmPublic.h>
#include <X11/Intrinsic.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include "wb_env.h"
#include "flow.h"
#include "flow_ctx.h"
#include "flow_api.h"
#include "flow_browctx.h"
#include "flow_browapi.h"
#include "co_msg.h"
#include "co_cdh.h"
#include "co_dcli.h"
#include "co_wow.h"
#include "co_xhelp_motif.h"
#include "rt_pb_gsd.h"
#include "rt_pb_gsd_attr_motif.h"
#include "wb_c_pb_dp_slave.h"
#include "wb_pwrs.h"
#include "wb_ldh_msg.h"
#include "wb_ldh.h"
#include "wb_pwrb_msg.h"
#include "rt_pb_msg.h"
#include "wb_wnav.h"
using namespace std;
static pwr_tStatus Configure (
ldh_sMenuCall *ip
)
{
pwr_tStatus sts;
slave_sCtx *ctx;
sts = pb_dp_slave_create_ctx( ip->PointedSession, ip->Pointed, ip->wnav, &ctx);
if ( sts != PB__USERPRMDATALEN && EVEN(sts)) return sts;
ctx->attr = new GsdAttrMotif( CoXHelpMotif::get_widget(), ctx, 0, ctx->gsd,
ctx->edit_mode);
ctx->attr->close_cb = pb_dp_slave_close_cb;
ctx->attr->save_cb = pb_dp_slave_save_cb;
ctx->attr->help_cb = pb_dp_slave_help_cb;
if ( EVEN(sts)) {
ctx->attr->wow->DisplayError( "Configuration load error",
"Configuration load error\nCheck configuration data");
}
return 1;
}
static pwr_tStatus ConfigureFilter (
ldh_sMenuCall *ip
)
{
#if 0
char *gsd;
int size;
int sts;
sts = ldh_GetObjectPar( ip->PointedSession, ip->Pointed.Objid, "RtBody",
"GSDfile", &gsd, &size);
if ( EVEN(sts)) return sts;
if ( strcmp( gsd, "") == 0) {
free( gsd);
return 0;
}
free( gsd);
#endif
return 1;
}
/*----------------------------------------------------------------------------*\
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
pwr_dExport pwr_BindMethods(Pb_DP_Slave) = {
pwr_BindMethod(Configure),
pwr_BindMethod(ConfigureFilter),
pwr_NullMethod
};
/*
* Proview $Id: wb_c_pb_dp_slave.cpp,v 1.7 2006-10-10 07:41:15 claes Exp $
* Proview $Id: wb_c_pb_dp_slave.cpp,v 1.8 2007-01-04 08:44:02 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -26,12 +26,9 @@
#include <vector>
#include <map>
#include <Xm/Xm.h>
#include <Mrm/MrmPublic.h>
#include <X11/Intrinsic.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include "pwr.h"
#include "pwr_baseclasses.h"
#include "pwr_profibusclasses.h"
#include "wb_env.h"
#include "flow.h"
#include "flow_ctx.h"
......@@ -39,19 +36,16 @@
#include "flow_browctx.h"
#include "flow_browapi.h"
#include "pwr.h"
#include "co_msg.h"
#include "co_cdh.h"
#include "co_dcli.h"
#include "co_wow.h"
#include "wb_nav_macros.h"
#include "co_xhelp.h"
#include "rt_pb_gsd.h"
#include "rt_pb_gsd_attr.h"
#include "wb_c_pb_dp_slave.h"
#include "wb_pwrs.h"
#include "pwr_baseclasses.h"
#include "pwr_profibusclasses.h"
#include "wb_ldh_msg.h"
#include "wb_ldh.h"
#include "wb_pwrb_msg.h"
......@@ -65,15 +59,6 @@ using namespace std;
Configure the slave from gsd file.
\*----------------------------------------------------------------------------*/
typedef struct {
pb_gsd *gsd;
GsdAttr *attr;
ldh_tSession ldhses;
pwr_tAttrRef aref;
gsd_sModuleClass *mc;
void *editor_ctx;
} slave_sCtx;
static void get_subcid( ldh_tSession ldhses, pwr_tCid cid, vector<pwr_tCid>& v)
{
......@@ -88,7 +73,7 @@ static void get_subcid( ldh_tSession ldhses, pwr_tCid cid, vector<pwr_tCid>& v)
}
}
static int attr_help_cb( void *sctx, char *text)
int pb_dp_slave_help_cb( void *sctx, char *text)
{
pwr_tCmd cmd;
slave_sCtx *ctx = (slave_sCtx *)sctx;
......@@ -98,7 +83,7 @@ static int attr_help_cb( void *sctx, char *text)
return ((WNav *)ctx->editor_ctx)->command( cmd);
}
static void attr_close_cb( void *sctx)
void pb_dp_slave_close_cb( void *sctx)
{
slave_sCtx *ctx = (slave_sCtx *)sctx;
delete ctx->attr;
......@@ -106,7 +91,7 @@ static void attr_close_cb( void *sctx)
free( (char *)ctx);
}
static int attr_save_cb( void *sctx)
int pb_dp_slave_save_cb( void *sctx)
{
slave_sCtx *ctx = (slave_sCtx *)sctx;
pwr_tStatus sts;
......@@ -472,30 +457,26 @@ static pwr_tStatus load_modules( slave_sCtx *ctx)
return 1;
}
static pwr_tStatus Configure (
ldh_sMenuCall *ip
)
pwr_tStatus pb_dp_slave_create_ctx( ldh_tSession ldhses, pwr_tAttrRef aref,
void *editor_ctx, slave_sCtx **ctxp)
{
pwr_tOName name;
char *gsdfile;
int size;
int sts;
int lsts;
int edit_mode;
pwr_tFileName fname;
ldh_sSessInfo Info;
vector<pwr_tCid> mcv;
sts = ldh_GetSessionInfo (ip->PointedSession, &Info);
edit_mode = (ODD(sts) && Info.Access == ldh_eAccess_ReadWrite) &&
ldh_LocalObject( ip->PointedSession, ip->Pointed.Objid);
sts = ldh_GetSessionInfo( ldhses, &Info);
sts = ldh_ObjidToName(ip->PointedSession, ip->Pointed.Objid,
ldh_eName_Hierarchy, name, sizeof(name), &size);
sts = ldh_ObjidToName( ldhses, aref.Objid,
ldh_eName_Hierarchy, name, sizeof(name), &size);
if ( EVEN(sts)) return sts;
sts = ldh_GetObjectPar( ip->PointedSession, ip->Pointed.Objid, "RtBody",
sts = ldh_GetObjectPar( ldhses, aref.Objid, "RtBody",
"GSDfile", &gsdfile, &size);
if ( EVEN(sts)) return sts;
if ( strcmp( gsdfile, "") == 0) {
......@@ -504,9 +485,11 @@ static pwr_tStatus Configure (
}
slave_sCtx *ctx = (slave_sCtx *) calloc( 1, sizeof(slave_sCtx));
ctx->ldhses = ip->PointedSession;
ctx->aref = ip->Pointed;
ctx->editor_ctx = ip->EditorContext;
ctx->ldhses = ldhses;
ctx->aref = aref;
ctx->editor_ctx = editor_ctx;
ctx->edit_mode = (ODD(sts) && Info.Access == ldh_eAccess_ReadWrite) &&
ldh_LocalObject( ldhses, aref.Objid);
get_subcid( ctx->ldhses, pwr_cClass_Pb_Module, mcv);
ctx->mc = (gsd_sModuleClass *) calloc( mcv.size() + 2, sizeof(gsd_sModuleClass));
......@@ -529,6 +512,7 @@ static pwr_tStatus Configure (
}
else
strcpy( fname, gsdfile);
free( gsdfile);
ctx->gsd = new pb_gsd();
sts = ctx->gsd->read( fname);
......@@ -540,53 +524,10 @@ static pwr_tStatus Configure (
lsts = load_modules( ctx);
if ( lsts != PB__USERPRMDATALEN && EVEN(lsts)) return lsts;
ctx->attr = new GsdAttr( (Widget) ip->WindowContext, ctx, 0, ctx->gsd, edit_mode);
ctx->attr->close_cb = attr_close_cb;
ctx->attr->save_cb = attr_save_cb;
ctx->attr->help_cb = attr_help_cb;
if ( EVEN(lsts)) {
wow_DisplayError( ctx->attr->toplevel, "Configuration load error",
"Configuration load error\nCheck configuration data");
}
free( gsdfile);
*ctxp = ctx;
return 1;
}
static pwr_tStatus ConfigureFilter (
ldh_sMenuCall *ip
)
{
#if 0
char *gsd;
int size;
int sts;
sts = ldh_GetObjectPar( ip->PointedSession, ip->Pointed.Objid, "RtBody",
"GSDfile", &gsd, &size);
if ( EVEN(sts)) return sts;
if ( strcmp( gsd, "") == 0) {
free( gsd);
return 0;
}
free( gsd);
#endif
return 1;
}
/*----------------------------------------------------------------------------*\
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
pwr_dExport pwr_BindMethods(Pb_DP_Slave) = {
pwr_BindMethod(Configure),
pwr_BindMethod(ConfigureFilter),
pwr_NullMethod
};
/*
* Proview $Id: wb_c_pb_dp_slave.h,v 1.1 2007-01-04 08:44:02 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**/
#ifndef wb_c_pb_dp_slave_h
#define wb_c_pb_dp_slave_h
/* wb-c_pb_dp_slave.h -- Profibus gsd configure method */
typedef struct {
pb_gsd *gsd;
GsdAttr *attr;
ldh_tSession ldhses;
pwr_tAttrRef aref;
gsd_sModuleClass *mc;
void *editor_ctx;
int edit_mode;
} slave_sCtx;
pwr_tStatus pb_dp_slave_create_ctx( ldh_tSession ldhses, pwr_tAttrRef aref,
void *editor_ctx, slave_sCtx **ctxp);
int pb_dp_slave_help_cb( void *sctx, char *text);
void pb_dp_slave_close_cb( void *sctx);
int pb_dp_slave_save_cb( void *sctx);
#endif
include $(pwre_dir_symbols)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk
ifeq ($($(type_name)_generic_mk),)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(type_name)_generic.mk
endif
ifeq ($($(type_name)_generic_mk),)
include $(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
endif
-include ../../special.mk
-include ../special.mk
-include special.mk
/*
* Proview $Id: rt_xtt.h,v 1.4 2005-09-01 14:57:48 claes Exp $
* Proview $Id: xtt_c_pb_dp_slave_gtk.cpp,v 1.1 2007-01-04 08:44:46 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -17,91 +17,53 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef rt_xtt_h
#define rt_xtt_h
/* xtt_c_pb_db_slave_gtk.cpp -- xtt methods for Pb_DP_Slave. */
/* rt_xtt.h -- Simple navigator */
#include "pwr_baseclasses.h"
#include "pwr_profibusclasses.h"
#include "flow_std.h"
#include <gtk/gtk.h>
#ifndef pwr_h
extern "C" {
# include "pwr.h"
}
#endif
#ifndef flow_h
#include "flow.h"
#endif
#ifndef flow_browctx_h
#include "flow_browapi.h"
#endif
#ifndef rt_trace_h
extern "C" {
#include "rt_trace.h"
}
#endif
#ifndef rt_qcom_h
extern "C" {
#include "rt_qcom.h"
}
#endif
#ifndef xtt_xnav_h
#include "co_cdh.h"
#include "xtt_menu.h"
#include "xtt_xnav.h"
#endif
#ifndef xtt_focustimer_h
#include "xtt_focustimer.h"
#endif
class Xtt {
public:
Xtt( int argc, char *argv[], int *sts);
void *parent_ctx;
Widget parent_wid;
char name[80];
Widget brow_widget;
Widget form_widget;
Widget toplevel;
XNav *xnav;
void *root_item;
Widget msg_label;
Widget cmd_prompt;
Widget cmd_input;
Widget xnav_form;
int input_open;
int command_open;
char cmd_recall[30][160];
int cmd_current_recall;
char value_recall[30][160];
int value_current_recall;
Widget india_widget;
Widget india_label;
Widget india_text;
void (*india_ok_cb)( Xtt *, char *);
qcom_sQid queid;
XtIntervalId timerid;
FocusTimer focustimer;
};
#endif
#include "rt_xnav_msg.h"
#include "pwr_privilege.h"
#include "rt_pb_gsd.h"
#include "co_xhelp_gtk.h"
#include "rt_pb_gsd_attr_gtk.h"
#include "xtt_c_pb_dp_slave.h"
// Show Configuration
static pwr_tStatus ShowConfiguration( xmenu_sMenuCall *ip)
{
xtt_slave_sCtx *ctx;
int edit_mode = 0;
xtt_pb_dp_slave_create_ctx( ip->Pointed, ip->EditorContext, &ctx);
ctx->attr = new GsdAttrGtk( CoXHelpGtk::get_widget(), ctx, 0, ctx->gsd, edit_mode);
ctx->attr->close_cb = xtt_pb_dp_slave_close_cb;
ctx->attr->save_cb = xtt_pb_dp_slave_save_cb;
ctx->attr->help_cb = xtt_pb_dp_slave_help_cb;
return 1;
}
/*----------------------------------------------------------------------------*\
Every method to be exported to xtt should be registred here.
\*----------------------------------------------------------------------------*/
pwr_dExport pwr_BindXttMethods(Pb_DP_Slave) = {
pwr_BindXttMethod(ShowConfiguration),
pwr_NullMethod
};
......
include $(pwre_dir_symbols)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk
ifeq ($($(type_name)_generic_mk),)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(type_name)_generic.mk
endif
ifeq ($($(type_name)_generic_mk),)
include $(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
endif
-include ../../special.mk
-include ../special.mk
-include special.mk
/*
* Proview $Id: xtt_c_pb_dp_slave_motif.cpp,v 1.1 2007-01-04 08:44:54 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* xtt_c_pb_db_slave.cpp -- xtt methods for Pb_DP_Slave. */
#include "pwr_baseclasses.h"
#include "pwr_profibusclasses.h"
#include "flow_std.h"
#include <Xm/Xm.h>
#include <Xm/XmP.h>
#include <Xm/Text.h>
#include <Mrm/MrmPublic.h>
#include <X11/Intrinsic.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include "co_cdh.h"
#include "xtt_menu.h"
#include "xtt_xnav.h"
#include "rt_xnav_msg.h"
#include "pwr_privilege.h"
#include "rt_pb_gsd.h"
#include "co_xhelp_motif.h"
#include "rt_pb_gsd_attr_motif.h"
#include "xtt_c_pb_dp_slave.h"
// Show Configuration
static pwr_tStatus ShowConfiguration( xmenu_sMenuCall *ip)
{
xtt_slave_sCtx *ctx;
int edit_mode = 0;
xtt_pb_dp_slave_create_ctx( ip->Pointed, ip->EditorContext, &ctx);
ctx->attr = new GsdAttrMotif( CoXHelpMotif::get_widget(), ctx, 0, ctx->gsd, edit_mode);
ctx->attr->close_cb = xtt_pb_dp_slave_close_cb;
ctx->attr->save_cb = xtt_pb_dp_slave_save_cb;
ctx->attr->help_cb = xtt_pb_dp_slave_help_cb;
return 1;
}
/*----------------------------------------------------------------------------*\
Every method to be exported to xtt should be registred here.
\*----------------------------------------------------------------------------*/
pwr_dExport pwr_BindXttMethods(Pb_DP_Slave) = {
pwr_BindXttMethod(ShowConfiguration),
pwr_NullMethod
};
/*
* Proview $Id: xtt_c_pb_dp_slave.cpp,v 1.3 2006-07-25 11:01:19 claes Exp $
* Proview $Id: xtt_c_pb_dp_slave.cpp,v 1.4 2007-01-04 08:44:40 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -23,14 +23,7 @@
#include "pwr_profibusclasses.h"
#include "flow_std.h"
#include <Xm/Xm.h>
#include <Xm/XmP.h>
#include <Xm/Text.h>
#include <Mrm/MrmPublic.h>
#include <X11/Intrinsic.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include "co_cdh.h"
#include "xtt_menu.h"
#include "xtt_xnav.h"
#include "rt_xnav_msg.h"
......@@ -38,39 +31,32 @@
#include "rt_pb_gsd.h"
#include "rt_pb_gsd_attr.h"
#include "xtt_c_pb_dp_slave.h"
typedef struct {
pb_gsd *gsd;
GsdAttr *attr;
pwr_tAttrRef aref;
gsd_sModuleClass *mc;
void *editor_ctx;
} slave_sCtx;
static int attr_help_cb( void *sctx, char *text)
int xtt_pb_dp_slave_help_cb( void *sctx, char *text)
{
pwr_tCmd cmd;
slave_sCtx *ctx = (slave_sCtx *)sctx;
xtt_slave_sCtx *ctx = (xtt_slave_sCtx *)sctx;
strcpy( cmd, "help ");
strcat( cmd, text);
return ((XNav *)ctx->editor_ctx)->command( cmd);
}
static void attr_close_cb( void *sctx)
void xtt_pb_dp_slave_close_cb( void *sctx)
{
slave_sCtx *ctx = (slave_sCtx *)sctx;
xtt_slave_sCtx *ctx = (xtt_slave_sCtx *)sctx;
delete ctx->attr;
delete ctx->gsd;
free( (char *)ctx);
}
static int attr_save_cb( void *sctx)
int xtt_pb_dp_slave_save_cb( void *sctx)
{
return 1;
}
static pwr_tStatus load_modules( slave_sCtx *ctx)
static pwr_tStatus xtt_pb_dp_slave_load_modules( xtt_slave_sCtx *ctx)
{
pwr_tOid oid;
pwr_tCid cid;
......@@ -164,13 +150,13 @@ static pwr_tStatus load_modules( slave_sCtx *ctx)
return 1;
}
// Show Configuration
static pwr_tStatus ShowConfiguration( xmenu_sMenuCall *ip)
pwr_tStatus xtt_pb_dp_slave_create_ctx( pwr_tAttrRef aref, void *editor_ctx,
xtt_slave_sCtx **ctxp)
{
pwr_tAName name;
pwr_tString80 gsdfile;
int sts;
int edit_mode = 0;
pwr_tFileName fname;
pwr_tCid cid;
pwr_tOid oid;
......@@ -179,11 +165,11 @@ static pwr_tStatus ShowConfiguration( xmenu_sMenuCall *ip)
int module_cnt;
pwr_tAttrRef aaref;
sts = gdh_ObjidToName( ip->Pointed.Objid,
sts = gdh_ObjidToName( aref.Objid,
name, sizeof(name), cdh_mName_volumeStrict);
if ( EVEN(sts)) return sts;
sts = gdh_ArefANameToAref( &ip->Pointed, "GSDFile", &aaref);
sts = gdh_ArefANameToAref( &aref, "GSDFile", &aaref);
if ( EVEN(sts)) return sts;
sts = gdh_GetObjectInfoAttrref( &aaref, gsdfile, sizeof(gsdfile));
......@@ -192,12 +178,12 @@ static pwr_tStatus ShowConfiguration( xmenu_sMenuCall *ip)
return 1;
}
slave_sCtx *ctx = (slave_sCtx *) calloc( 1, sizeof(slave_sCtx));
ctx->aref = ip->Pointed;
xtt_slave_sCtx *ctx = (xtt_slave_sCtx *) calloc( 1, sizeof(xtt_slave_sCtx));
ctx->aref = aref;
// Count modules
module_cnt = 0;
for ( sts = gdh_GetChild( ip->Pointed.Objid, &oid);
for ( sts = gdh_GetChild( aref.Objid, &oid);
ODD(sts);
sts = gdh_GetNextSibling( oid, &oid)) {
module_cnt++;
......@@ -205,7 +191,7 @@ static pwr_tStatus ShowConfiguration( xmenu_sMenuCall *ip)
ctx->mc = (gsd_sModuleClass *) calloc( module_cnt + 2, sizeof(gsd_sModuleClass));
mc_cnt = 0;
ctx->editor_ctx = ip->EditorContext;
ctx->editor_ctx = editor_ctx;
ctx->mc[0].cid = pwr_cClass_Pb_Module;
sts = gdh_ObjidToName( cdh_ClassIdToObjid(ctx->mc[0].cid),
......@@ -213,7 +199,7 @@ static pwr_tStatus ShowConfiguration( xmenu_sMenuCall *ip)
if ( EVEN(sts)) return sts;
mc_cnt++;
for ( sts = gdh_GetChild( ip->Pointed.Objid, &oid);
for ( sts = gdh_GetChild( aref.Objid, &oid);
ODD(sts);
sts = gdh_GetNextSibling( oid, &oid)) {
sts = gdh_GetObjectClass( oid, &cid);
......@@ -250,30 +236,14 @@ static pwr_tStatus ShowConfiguration( xmenu_sMenuCall *ip)
ctx->gsd->set_classes( ctx->mc);
sts = load_modules( ctx);
sts = xtt_pb_dp_slave_load_modules( ctx);
if ( EVEN(sts)) return sts;
ctx->attr = new GsdAttr( (Widget) ip->WindowContext, ctx, 0, ctx->gsd, edit_mode);
ctx->attr->close_cb = attr_close_cb;
ctx->attr->save_cb = attr_save_cb;
ctx->attr->help_cb = attr_help_cb;
*ctxp = ctx;
return 1;
}
/*----------------------------------------------------------------------------*\
Every method to be exported to xtt should be registred here.
\*----------------------------------------------------------------------------*/
pwr_dExport pwr_BindXttMethods(Pb_DP_Slave) = {
pwr_BindXttMethod(ShowConfiguration),
pwr_NullMethod
};
/*
* Proview $Id: xtt_c_pb_dp_slave.h,v 1.1 2007-01-04 08:44:40 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**/
#ifndef xtt_c_pb_dp_slave_h
#define xtt_c_pb_dp_slave_h
/* xtt_c_pb_dp_slave.h -- Profibus gsd configure method */
typedef struct {
pb_gsd *gsd;
GsdAttr *attr;
pwr_tAttrRef aref;
gsd_sModuleClass *mc;
void *editor_ctx;
} xtt_slave_sCtx;
pwr_tStatus xtt_pb_dp_slave_create_ctx( pwr_tAttrRef aref,
void *editor_ctx, xtt_slave_sCtx **ctxp);
int xtt_pb_dp_slave_help_cb( void *sctx, char *text);
void xtt_pb_dp_slave_close_cb( void *sctx);
int xtt_pb_dp_slave_save_cb( void *sctx);
#endif
/*
* Proview $Id: co_merge.c,v 1.6 2006-04-05 08:40:56 claes Exp $
* Proview $Id: co_merge.c,v 1.7 2007-01-04 08:47:26 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -123,7 +123,7 @@ int main( int argc, char *argv[])
break;
}
case merge_eMtype_WbBase: {
strcpy( cfile, "/tmp/wb_i_base_methods.c");
strcpy( cfile, "/tmp/wb_i_base_methods.cpp");
strcpy( ofile, "/tmp/wb_i_base_methods.o");
outfp = fopen( cfile, "w");
......@@ -171,7 +171,13 @@ int main( int argc, char *argv[])
}
dcli_translate_filename( incdir, "$pwr_einc");
sprintf( cmd, "gcc -c -I%s -DOS_LINUX -o %s %s", incdir, ofile, cfile);
switch ( mtype) {
case merge_eMtype_WbBase:
sprintf( cmd, "g++ -c -I%s -DOS_LINUX -o %s %s", incdir, ofile, cfile);
break;
default:
sprintf( cmd, "gcc -c -I%s -DOS_LINUX -o %s %s", incdir, ofile, cfile);
}
// printf( "co_merge: %s\n", cmd);
system( cmd);
sprintf( cmd, "ar r %s %s", outfile, ofile);
......
/*
* Proview $Id: rt_elog.h,v 1.5 2005-12-14 13:05:12 claes Exp $
* Proview $Id: rt_elog.h,v 1.6 2007-01-04 08:47:26 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -39,6 +39,10 @@
#include "rt_mh_outunit.h"
#include "co_dcli.h"
#if defined __cplusplus
extern "C" {
#endif
#define DUMPFILE "rt_eventlog.dump"
#define DATABASE "$pwrp_db/rt_eventlog.db"
#define DATABASE_INFO "$pwrp_db/rt_eventlog_info.txt"
......@@ -79,4 +83,9 @@ typedef struct s_HelCB {
pwr_tNodeId Nid;
pwr_tInt64 StoreIdx;
}sHelCB;
#if defined __cplusplus
}
#endif
#endif
......@@ -94,8 +94,8 @@ wb_msg_eobjs := $(eobj_dir)/pwr_msg_wb.o $(eobj_dir)/pwr_msg_ge.o $(eobj_dir)/p
log_done =
csetos := -DOS_LINUX=1 -DOS=linux -DHW_X86=1 -DHW=x86
cinc := -I$(inc_dir) -I$(einc_dir) -I$(hw_source) -I$(os_source) -I$(co_source) -I/usr/X11R6/include -I$(jdk)/include -I$(jdk)/include/linux
cinc := -I$(inc_dir) -I$(einc_dir) -I$(hw_source) -I$(os_source) -I$(co_source) -I/usr/X11R6/include -I$(jdk)/include -I$(jdk)/include/linux \
-I /usr/include/libgnome-2.0 -I /usr/include/libgnome-2.0/libgnome -I /usr/include/glib-2.0 -I /usr/lib/glib-2.0/include -I /usr/include/libbonobo-2.0 -I /usr/include/libgnomeui-2.0 -I /usr/include/gtk-2.0 -I /usr/include/pango-1.0 -I /usr/lib/gtk-2.0/include -I /usr/include/atk-1.0 -I /usr/include/libgnomecanvas-2.0 -I /usr/include/libart-2.0 -I /usr/include/libbonoboui-2.0 -I /usr/include/gnome-vfs-2.0 -I /usr/include/cairo -DPREFIX=\"/usr/local\" -DSYSCONFDIR=\"/etc\" -DDATADIR=\"/usr/share\" -DLIBDIR=\"/usr/lib\"
rm := rm
cp := cp
cpflags :=
......
......@@ -133,6 +133,9 @@ clean_hpp_includes := $(patsubst %.hpp,clean_%.hpp, $(hpp_includes))
lib_name := libpwr_$(comp_name)
ifneq ($(src_name),src)
lib_name := libpwr_$(comp_name)_$(src_name)
endif
export_lib := $(lib_dir)/$(lib_name)$(lib_ext)
java_classes := $(addsuffix .class, $(basename $(java_sources)))
......@@ -205,12 +208,13 @@ $(clean_pwsg) : clean_%.pwsg : %.pwsg
@ $(rm) $(rmflags) $(exe_dir)/$*.pwsg
$(export_lib) : $(objects)
@ if [ -e $(export_lib) ]; then \
$(rm) $(export_lib); \
fi
@ echo "Building archive $(notdir $(export_lib))"
@ $(ar) -cr $(export_lib) $(objects)
# @ if [ -e $(export_lib) ]; then \
# $(rm) $(export_lib); \
# fi
-include $(source_dependencies)
endif
......@@ -29,6 +29,7 @@ endif
vpath %.uil $(hw_source):$(os_source):$(co_source)
vpath %.pwg $(hw_source):$(os_source):$(co_source)
vpath %.pwsg $(hw_source):$(os_source):$(co_source)
vpath %.png $(hw_source):$(os_source):$(co_source)
source_dirs := $(hw_source) $(os_source) $(co_source)
......@@ -68,10 +69,20 @@ pwsg_sources := $(sort \
) \
)
png_sources := $(sort \
$(foreach file, \
$(foreach dir, \
$(source_dirs), \
$(wildcard $(dir)/*.png) \
), $(notdir $(file)) \
) \
)
export_uid := $(addprefix $(exe_dir)/, $(patsubst %.uil, %.uid, $(uil_sources)))
export_c_pwg := $(addprefix $(exe_dir)/, $(pwg_c_sources))
export_pwg := $(addprefix $(exe_dir)/, $(pwg_sources))
export_pwsg := $(addprefix $(exe_dir)/, $(pwsg_sources))
export_png := $(addprefix $(exe_dir)/, $(png_sources))
$(exe_dir)/%.uid : %.uil
@ $(log_uil_uid)
......@@ -81,6 +92,7 @@ clean_uid := $(patsubst %.uil,clean_%.uid,$(uil_sources))
clean_c_pwg := $(patsubst %.pwg,clean_%.pwg,$(pwg_c_sources))
clean_pwg := $(patsubst %.pwg,clean_%.pwg,$(pwg_sources))
clean_pwsg := $(patsubst %.pwsg,clean_%.pwsg,$(pwsg_sources))
clean_png := $(patsubst %.png,clean_%.png,$(png_sources))
.PHONY : all init copy lib exe clean realclean\
dirs clean_bld clean_dirs $(clean_uid)
......@@ -89,13 +101,13 @@ all : init copy
init : dirs
copy : $(export_uid) $(export_c_pwg) $(export_pwg) $(export_pwsg)
copy : $(export_uid) $(export_c_pwg) $(export_pwg) $(export_pwsg) $(export_png)
lib :
exe :
clean : $(clean_uid) $(clean_pwg) $(clean_pwsg)
clean : $(clean_uid) $(clean_pwg) $(clean_pwsg) $(clean_png)
realclean : clean
......@@ -117,5 +129,9 @@ $(clean_pwsg) : clean_%.pwsg : %.pwsg
@ echo "Removing pwsg"
@ $(rm) $(rmflags) $(exe_dir)/$*.pwsg
$(clean_png) : clean_%.png : %.png
@ echo "Removing png"
@ $(rm) $(rmflags) $(exe_dir)/$*.png
endif
......@@ -221,6 +221,10 @@ $(exe_dir)/%.pwg : %.pwg
@ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target)
$(exe_dir)/%.png : %.png
@ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target)
$(exe_dir)/%.html : ../../%.html
@ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target)
......
......@@ -40,9 +40,9 @@ prev := pred_ $(word)
pred := $(subst $(space),$(empty),$(prev))
word := $($(pred))
src_name := $(word $(word), $(cwd_dirs))
ifneq ($(src_name),src)
include ___error___no_source_subdirectory
endif
#ifneq ($(src_name),src)
#include ___error___no_source_subdirectory
#endif
prev := pred_ $(word)
pred := $(subst $(space),$(empty),$(prev))
......@@ -58,9 +58,9 @@ prev := pred_ $(word)
pred := $(subst $(space),$(empty),$(prev))
word := $($(pred))
root_name := $(word $(word), $(cwd_dirs))
ifneq ($(src_name),src)
include ___error___incorrect_source_root1
endif
#ifneq ($(src_name),src)
#include ___error___incorrect_source_root1
#endif
#rest = /$(type_name)/$(comp_name)/src/$(os_name)/$(hw_name)/
#test_source_root := $(subst $(rest),$(empty),$(PWD))
......
......@@ -133,7 +133,7 @@ sub add ()
#
# build()
#
sub build () # args: branch, subbranch, phase
sub build () # args: branch, subbranch, flavour, phase
{
if (!defined($ENV{"pwre_env"})) {
......@@ -156,52 +156,63 @@ sub build () # args: branch, subbranch, phase
shift(@_);
shift(@_);
if ( $_[0] eq "") {
$flavour = "src";
}
else {
$flavour = $_[0];
shift(@_);
}
printf("--\n");
printf("-- Build\n");
printf("-- Branch..........: %s\n", $branch);
printf("-- Sub branch......: %s\n", $subbranch);
printf("-- Args............: ");
printf("-- Branch.............: %s\n", $branch);
printf("-- Sub branch.........: %s\n", $subbranch);
printf("-- Sub branch flavour.: %s\n", $flavour);
printf("-- Args...............: ");
foreach (@_) {
printf("%s ", $_);
$ENV{"PWRE_ARGS"} = $_;
}
printf("\n--\n");
_build($branch, $subbranch, @_);
_build($branch, $subbranch, $flavour, @_);
}
#
# build_kernel()
#
sub build_kernel ()
sub build_kernel # args: flavour
{
my $flavour = $_[0];
_module("xtt");
build_all("copy");
build_all("copy", $flavour);
merge();
_module("rt");
build_all("copy");
build_all("copy", $flavour);
merge();
_module("wb");
build_all("copy");
build_all("copy", $flavour);
merge();
_module("rt");
build_all("lib");
build_all("lib", $flavour);
merge();
_module("xtt");
build_all("lib");
build_all("lib", $flavour);
merge();
_module("wb");
build_all("lib");
build_all("lib", $flavour);
merge();
_module("xtt");
build_all("exe");
build_all("exe", $flavour);
merge();
_module("wb");
build_all("exe");
build_all("exe", $flavour);
merge();
_module("rt");
build_all("exe");
build_all("exe", $flavour);
merge();
}
......@@ -210,48 +221,50 @@ sub build_kernel ()
#
sub build_all_modules ()
{
build_kernel();
my $flavour = $_[0];
build_kernel( $flavour);
_module("nmps");
build_all();
build_all( $flavour);
merge();
_module("tlog");
build_all();
build_all( $flavour);
merge();
_module("remote");
build_all();
build_all( $flavour);
merge();
_module("bcomp");
build_all();
build_all( $flavour);
merge();
_module("java");
build_all();
build_all( $flavour);
merge();
_module("profibus");
build_all();
build_all( $flavour);
merge();
_module("ssabox");
build_all();
build_all( $flavour);
merge();
_module("othermanu");
build_all();
build_all( $flavour);
merge();
_module("abb");
build_all();
build_all( $flavour);
merge();
_module("siemens");
build_all();
build_all( $flavour);
merge();
_module("inor");
build_all();
build_all( $flavour);
merge();
_module("klocknermoeller");
build_all();
build_all( $flavour);
merge();
_module("telemecanique");
build_all();
build_all( $flavour);
merge();
method_build();
method_build( $flavour);
}
#
......@@ -260,19 +273,19 @@ sub build_all_modules ()
sub clean_exe_all ()
{
_module("xtt");
_build("exe","*","clean_exe");
_build("exe","*","src","clean_exe");
_module("rt");
_build("exe","rt*","clean_exe");
_build("exe","co*","clean_exe");
_build("exe","wb*","clean_exe");
_build("exe","rt*","src","clean_exe");
_build("exe","co*","src","clean_exe");
_build("exe","wb*","src","clean_exe");
_module("wb");
_build("exe","*","clean_exe");
_build("exe","*","src","clean_exe");
_module("nmps");
_build("exe","*","clean_exe");
_build("exe","*","src","clean_exe");
_module("tlog");
_build("exe","*","clean_exe");
_build("exe","*","src","clean_exe");
_module("remote");
_build("exe","*","clean_exe");
_build("exe","*","src","clean_exe");
_module("rt");
}
......@@ -286,99 +299,111 @@ sub build_all_wbl ()
_module("rt");
my($load_dir) = $ENV{"pwr_load"};
system( "rm $load_dir/*.dbs");
_build("wbl", "pwrs", "lib");
_build("wbl", "pwrb", "lib");
_build("wbl", "wb", "lib");
_build("wbl", "rt", "lib");
_build("wbl", "pwrs", "src", "lib");
_build("wbl", "pwrb", "src", "lib");
_build("wbl", "wb", "src", "lib");
_build("wbl", "rt", "src", "lib");
merge();
_module("nmps");
my($load_dir) = $ENV{"pwr_load"};
system( "rm $load_dir/*.dbs");
_build("wbl", "nmps", "lib");
_build("wbl", "nmps", "src", "lib");
merge();
_module("tlog");
my($load_dir) = $ENV{"pwr_load"};
system( "rm $load_dir/*.dbs");
_build("wbl", "tlog", "lib");
_build("wbl", "tlog", "src", "lib");
merge();
_module("profibus");
my($load_dir) = $ENV{"pwr_load"};
system( "rm $load_dir/*.dbs");
_build("wbl", "mcomp", "lib");
_build("wbl", "mcomp", "src", "lib");
merge();
_module("remote");
my($load_dir) = $ENV{"pwr_load"};
system( "rm $load_dir/*.dbs");
_build("wbl", "remote", "lib");
_build("wbl", "remote", "src", "lib");
merge();
_module("bcomp");
my($load_dir) = $ENV{"pwr_load"};
system( "rm $load_dir/*.dbs");
_build("wbl", "bcomp", "lib");
_build("wbl", "bcomp", "src", "lib");
merge();
_module("ssabox");
my($load_dir) = $ENV{"pwr_load"};
system( "rm $load_dir/*.dbs");
_build("wbl", "mcomp", "lib");
_build("wbl", "mcomp", "src", "lib");
merge();
_module("abb");
my($load_dir) = $ENV{"pwr_load"};
system( "rm $load_dir/*.dbs");
_build("wbl", "mcomp", "lib");
_build("wbl", "mcomp", "src", "lib");
merge();
_module("siemens");
my($load_dir) = $ENV{"pwr_load"};
system( "rm $load_dir/*.dbs");
_build("wbl", "mcomp", "lib");
_build("wbl", "mcomp", "src", "lib");
merge();
_module("telemecanique");
my($load_dir) = $ENV{"pwr_load"};
system( "rm $load_dir/*.dbs");
_build("wbl", "mcomp", "lib");
_build("wbl", "mcomp", "src", "lib");
merge();
_module("inor");
my($load_dir) = $ENV{"pwr_load"};
system( "rm $load_dir/*.dbs");
_build("wbl", "mcomp", "lib");
_build("wbl", "mcomp", "src", "lib");
merge();
_module("klocknermoeller");
my($load_dir) = $ENV{"pwr_load"};
system( "rm $load_dir/*.dbs");
_build("wbl", "mcomp", "lib");
_build("wbl", "mcomp", "src", "lib");
merge();
_module("othermanu");
my($load_dir) = $ENV{"pwr_load"};
system( "rm $load_dir/*.dbs");
_build("wbl", "mcomp", "lib");
_build("wbl", "mcomp", "src", "lib");
merge();
_module("rt");
}
sub method_build ()
{
my($program) = $_[0];
my $flavour;
my $program;
if ( $_[0] eq "motif" || $_[0] eq "gtk") {
$flavour = $_[0];
}
else {
$program = $_[0];
$flavour = $_[1];
}
if (!defined($program)) {
printf("-- Relink method dependent programs");
printf("-- Relink method dependent programs $flavour");
_module("rt");
$ENV{"export_type"} = "exp";
my($exe_dir) = $ENV{"pwr_exe"};
system("rm $exe_dir/rt_io_comm");
_build("exe", "rt_io_comm", "all");
_build("exe", "rt_io_comm", "src", "all");
# system("rm $exe_dir/rt_ini");
# _build("exe", "rt_ini", "all");
# _build("exe", "rt_ini", $flavour, "all");
merge();
_module("wb");
my($exe_dir) = $ENV{"pwr_exe"};
system("rm $exe_dir/wb");
_build("exe", "wb", "all");
merge();
method_build( "wb", $flavour);
# _module("wb");
# my($exe_dir) = $ENV{"pwr_exe"};
# system("rm $exe_dir/wb");
# _build("exe", "wb", "src", "all");
# _build("exe", "wb", $flavour, "all");
# merge();
_module("xtt");
my($exe_dir) = $ENV{"pwr_exe"};
system("rm $exe_dir/rt_xtt");
_build("exe", "rt_xtt", "all");
merge();
method_build( "rt_xtt", $flavour);
# _module("xtt");
# my($exe_dir) = $ENV{"pwr_exe"};
# system("rm $exe_dir/rt_xtt");
# _build("exe", "rt_xtt", "src", "all");
# _build("exe", "rt_xtt", $flavour, "all");
# merge();
}
if ( $_[0] eq "rt_io_comm" ) {
printf("-- Method build $program");
......@@ -386,25 +411,29 @@ sub method_build ()
$ENV{"export_type"} = "exp";
my($exe_dir) = $ENV{"pwr_exe"};
system("rm $exe_dir/rt_io_comm");
_build("exe", "rt_io_comm", "all");
_build("exe", "rt_io_comm", "src", "all");
merge();
}
if ( $_[0] eq "wb" ) {
printf("-- Method build $program");
printf("-- Method build $program $flavour");
_module("wb");
$ENV{"export_type"} = "exp";
my($exe_dir) = $ENV{"pwr_exe"};
system("rm $exe_dir/wb");
_build("exe", "wb", "all");
_build("exe", "wb", $flavour, "all");
_build("exe", "wb", "src", "all");
merge();
}
}
if ( $_[0] eq "rt_xtt" ) {
printf("-- Method build $program");
printf("-- Method build $program $flavour");
_module("xtt");
$ENV{"export_type"} = "exp";
my($exe_dir) = $ENV{"pwr_exe"};
system("rm $exe_dir/rt_xtt");
_build("exe", "rt_xtt", "all");
_build("exe", "rt_xtt", $flavour, "all");
_build("exe", "rt_xtt", "src", "all");
merge();
}
}
......@@ -463,11 +492,17 @@ sub build_all ()
if ( $_[0] eq "exe" || $_[1] eq "exe" || $_[2] eq "exe") {
$exe = 1;
}
if ( $_[0] eq "") {
if ( $copy == 0 && $lib == 0 && $exe == 0) {
$copy = 1;
$lib = 1;
$exe = 1;
}
if ( $_[0] eq "motif" || $_[1] eq "motif" || $_[2] eq "motif" || $_[3] eq "motif") {
$flavour = "motif";
}
else {
$flavour = "gtk";
}
if (!defined($ENV{"pwre_env"})) {
print("++ Environment is not initialized!\n");
......@@ -494,89 +529,98 @@ sub build_all ()
if ( $module eq "rt") {
if ( $copy == 1) {
_build("exp", "inc", "all");
_build("exp", "com", "all");
_build("tools/exe", "*", "all");
_build("exp", "inc", "src", "all");
_build("exp", "com", "src", "all");
_build("tools/exe", "*", "src", "all");
merge("exe/tools_cmsg2c");
merge("exe/tools_msg2cmsg");
merge("exe/tools_pdrgen");
_build("msg", "*", "all");
_build("lib", "rt", "init copy");
_build("lib", "co", "init copy");
_build("lib", "dtt", "init copy");
_build("lib", "co", "all");
_build("exe", "co*", "all");
_build("wbl", "pwrs", "copy");
_build("wbl", "pwrb", "copy");
_build("exe", "*", "copy");
_build("msg", "*", "src", "all");
_build("lib", "rt", "src", "init copy");
_build("lib", "rt", $flavour, "copy");
_build("lib", "co", "src", "init copy");
_build("lib", "co", $flavour, "copy");
_build("lib", "dtt", "src", "init copy");
_build("lib", "co", "src", "all");
_build("lib", "co", $flavour, "all");
_build("exe", "co*", "src", "all");
_build("wbl", "pwrs", "src", "copy");
_build("wbl", "pwrb", "src", "copy");
_build("exe", "*", "src", "copy");
}
if ( $lib == 1) {
_build("lib", "ge", "all");
if ( ! -e $nmpsclasses ) {
_module("nmps");
_build("wbl", "nmps", "init copy");
_build("wbl", "nmps", "src", "init copy");
merge("inc/pwr_nmpsclasses.h");
}
if ( ! -e $remoteclasses ) {
_module("remote");
_build("wbl", "remote", "init copy");
_build("wbl", "remote", "src", "init copy");
merge("inc/pwr_remoteclasses.h");
}
_module("rt");
_build("lib", "rt", "all");
_build("exp", "rt", "all");
_build("lib", "msg_dummy", "all");
_build("exe", "wb_rtt", "all");
_build("lib", "dtt", "all");
_build("exp", "rt", "all");
_build("lib", "rt", "src", "all");
_build("lib", "rt", $flavour, "all");
_build("exp", "rt", "src", "all");
_build("lib", "msg_dummy", "src", "all");
_build("exe", "wb_rtt", "src", "all");
_build("lib", "dtt", "src", "all");
_build("exp", "rt", "src", "all");
}
if ( $exe == 1) {
_build("exe", "rt*", "all");
_build("exe", "pwr_user", "all");
_build("exp", "ge", "all");
_build("mmi", "*", "copy");
_build("wbl", "pwrs", "lib");
_build("wbl", "pwrb", "lib");
_build("wbl", "wb", "lib");
_build("wbl", "rt", "lib");
_build("doc", "web", "all");
_build("doc", "dweb", "all");
_build("doc", "orm", "all");
_build("doc", "prm", "all");
_build("doc", "man", "all");
_build("doc", "dox", "all");
_build("wbl", "pwrs", "exe");
_build("wbl", "pwrb", "exe");
_build("exe", "rt*", "src", "all");
_build("exe", "pwr_user", "src", "all");
_build("exp", "ge", "src", "all");
_build("mmi", "*", "src", "copy");
_build("mmi", "*", $flavour, "copy");
_build("wbl", "pwrs", "src", "lib");
_build("wbl", "pwrb", "src", "lib");
_build("wbl", "wb", "src", "lib");
_build("wbl", "rt", "src", "lib");
_build("doc", "web", "src", "all");
_build("doc", "dweb", "src", "all");
_build("doc", "orm", "src", "all");
_build("doc", "prm", "src", "all");
_build("doc", "man", "src", "all");
_build("doc", "dox", "src", "all");
_build("wbl", "pwrs", "src", "exe");
_build("wbl", "pwrb", "src", "exe");
}
}
elsif ( $module eq "java") {
if ( $lib == 1) {
_build("jpwr", "rt", "all");
_build("jpwr", "jop", "all");
_build("jpwr", "jopc", "all");
_build("jpwr", "beans", "all");
_build("jpwr", "rt_client", "all");
_build("jpwr", "rt", "src", "all");
_build("jpwr", "jop", "src", "all");
_build("jpwr", "jopc", "src", "all");
_build("jpwr", "beans", "src", "all");
_build("jpwr", "rt_client", "src", "all");
}
}
else {
if ( $copy == 1) {
_build("wbl", "*", "copy");
_build("lib", "*", "init copy");
_build("exp", "*", "init copy");
_build("mmi", "*", "copy");
_build("exe", "*", "copy");
_build("wbl", "*", "src", "copy");
_build("lib", "*", "src", "init copy");
_build("lib", "*", $flavour, "copy");
_build("exp", "*", "src", "init copy");
_build("mmi", "*", "src", "copy");
_build("mmi", "*", $flavour, "copy");
_build("exe", "*", "src", "copy");
}
if ( $lib == 1) {
_build("lib", "*", "lib");
_build("exp", "*", "lib");
_build("lib", "*", "src", "lib");
_build("lib", "*", $flavour, "lib");
_build("exp", "*", "src", "lib");
}
if ( $exe == 1) {
_build("wbl", "*", "lib");
_build("wbl", "*", "exe");
_build("exe", "*", "all");
_build("doc", "dsh", "copy");
_build("doc", "orm", "copy");
_build("wbl", "*", "src", "lib");
_build("wbl", "*", "src", "exe");
_build("exe", "*", "src", "all");
_build("exe", "*", $flavour, "all");
_build("doc", "dsh", "src", "copy");
_build("doc", "orm", "src", "copy");
}
}
}
......@@ -793,7 +837,7 @@ sub tags ()
#
# _build()
#
sub _build () # args: branch, subbranch, phase
sub _build () # args: branch, subbranch, flavour, phase
{
......@@ -808,6 +852,8 @@ sub _build () # args: branch, subbranch, phase
usage_build();
exit 1;
}
my($flavour) = $_[2];
shift(@_);
shift(@_);
shift(@_);
......@@ -821,7 +867,7 @@ sub _build () # args: branch, subbranch, phase
my(@mfiles);
foreach $dir1 (@dirs1) {
$globstr = "$dir1" . "/$subbranch/src/os_$os/hw_$hw";
$globstr = "$dir1" . "/$subbranch/$flavour/os_$os/hw_$hw";
@dirs2 = glob($globstr);
foreach $dir2 (@dirs2) {
if (-d $dir2) {
......@@ -1081,7 +1127,7 @@ sub usage_add ()
sub usage_build ()
{
printf("++\n");
printf("++ build 'branch' 'subbranch' ['phase']: Build, eg. pwre build exe rt* all\n");
printf("++ build 'branch' 'subbranch' ['flavour']['phase']: Build, eg. pwre build exe rt* src all\n");
}
sub usage_build_all ()
......
......@@ -62,7 +62,7 @@ else
for lib in $libraries; do
arname=${lib##/*/}
if [ $arname = "libpwr_rt.a" ] || [ $arname = "libpwr_wb.a" ]|| [ $arname = "libpwr_xtt.a" ]; then
if [ $arname = "libpwr_rt.a" ] || [ $arname = "libpwr_rt_motif.a" ] || [ $arname = "libpwr_rt_gtk.a" ] || [ $arname = "libpwr_wb.a" ] || [ $arname = "libpwr_wb_motif.a" ] || [ $arname = "libpwr_wb_gtk.a" ] || [ $arname = "libpwr_xtt.a" ] || [ $arname = "libpwr_xtt_motif.a" ] || [ $arname = "libpwr_xtt_gtk.a" ]; then
echo "Merge $lib"
modules=`eval ar -tf $lib`
ar -xf $lib
......
/*
* Proview $Id: wb_c_ai_ai32up.c,v 1.2 2006-04-24 13:22:24 claes Exp $
* Proview $Id: wb_c_ai_ai32up.cpp,v 1.1 2007-01-04 08:46:09 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -29,7 +29,6 @@
#include "pwr_ssaboxclasses.h"
#include "wb_ldh.h"
#include "wb_wsx.h"
#include "wb_nav_macros.h"
/*----------------------------------------------------------------------------*\
......@@ -58,12 +57,12 @@ static pwr_tStatus AnteAdopt (
if (EVEN(sts)) return sts;
MaxChan = co_min(32, RCard.MaxNoOfChannels);
for (i = 0, Chan = 1; i < MaxChan; i++, Chan <<= 1) {
for (i = 0, Chan = 1; i < (int)MaxChan; i++, Chan <<= 1) {
if ((DCard.ChannelAllocation & Chan) == 0)
break;
}
if (i >= MaxChan)
if (i >= (int)MaxChan)
return PWRB__ALOCHAN;
else
return LDH__ADOPTRENAME;
......@@ -104,12 +103,12 @@ static pwr_tStatus PostAdopt (
if (EVEN(sts)) return sts;
MaxChan = co_min(32, RCard.MaxNoOfChannels);
for (i = 0, Chan = 1; i < MaxChan; i++, Chan <<= 1) {
for (i = 0, Chan = 1; i < (int)MaxChan; i++, Chan <<= 1) {
if ((DCard.ChannelAllocation & Chan) == 0)
break;
}
if (i >= MaxChan)
if (i >= (int)MaxChan)
return PWRB__ALOCHAN;
/* allocate new channel */
......
/*
* Proview $Id: wb_c_ai_hvai32.c,v 1.2 2006-04-24 13:22:24 claes Exp $
* Proview $Id: wb_c_ai_hvai32.cpp,v 1.1 2007-01-04 08:46:09 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -29,7 +29,6 @@
#include "pwr_ssaboxclasses.h"
#include "wb_ldh.h"
#include "wb_wsx.h"
#include "wb_nav_macros.h"
/*----------------------------------------------------------------------------*\
......@@ -58,12 +57,12 @@ static pwr_tStatus AnteAdopt (
if (EVEN(sts)) return sts;
MaxChan = co_min(32, RCard.MaxNoOfChannels);
for (i = 0, Chan = 1; i < MaxChan; i++, Chan <<= 1) {
for (i = 0, Chan = 1; i < (int)MaxChan; i++, Chan <<= 1) {
if ((DCard.ChannelAllocation & Chan) == 0)
break;
}
if (i >= MaxChan)
if (i >= (int)MaxChan)
return PWRB__ALOCHAN;
else
return LDH__ADOPTRENAME;
......@@ -104,12 +103,12 @@ static pwr_tStatus PostAdopt (
if (EVEN(sts)) return sts;
MaxChan = co_min(32, RCard.MaxNoOfChannels);
for (i = 0, Chan = 1; i < MaxChan; i++, Chan <<= 1) {
for (i = 0, Chan = 1; i < (int)MaxChan; i++, Chan <<= 1) {
if ((DCard.ChannelAllocation & Chan) == 0)
break;
}
if (i >= MaxChan)
if (i >= (int)MaxChan)
return PWRB__ALOCHAN;
/* allocate new channel */
......
/*
* Proview $Id: wb_c_ao_ao8up.c,v 1.3 2006-04-24 13:22:24 claes Exp $
* Proview $Id: wb_c_ao_ao8up.cpp,v 1.1 2007-01-04 08:46:09 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -29,7 +29,6 @@
#include "pwr_ssaboxclasses.h"
#include "wb_ldh.h"
#include "wb_wsx.h"
#include "wb_nav_macros.h"
/* AnteAdopt -- check if it's ok to adopt a new object */
......@@ -56,12 +55,12 @@ static pwr_tStatus AnteAdopt (
if (EVEN(sts)) return sts;
MaxChan = co_min(32, RCard.MaxNoOfChannels);
for (i = 0, Chan = 1; i < MaxChan; i++, Chan <<= 1) {
for (i = 0, Chan = 1; i < (int)MaxChan; i++, Chan <<= 1) {
if ((DCard.ChannelAllocation & Chan) == 0)
break;
}
if (i >= MaxChan)
if (i >= (int)MaxChan)
return PWRB__ALOCHAN;
else
return LDH__ADOPTRENAME;
......@@ -101,12 +100,12 @@ static pwr_tStatus PostAdopt (
if (EVEN(sts)) return sts;
MaxChan = co_min(32, RCard.MaxNoOfChannels);
for (i = 0, Chan = 1; i < MaxChan; i++, Chan <<= 1) {
for (i = 0, Chan = 1; i < (int)MaxChan; i++, Chan <<= 1) {
if ((DCard.ChannelAllocation & Chan) == 0)
break;
}
if (i >= MaxChan)
if (i >= (int)MaxChan)
return PWRB__ALOCHAN;
/* allocate new channel */
......
/*
* Proview $Id: wb_c_ao_hvao4.c,v 1.2 2006-04-24 13:22:24 claes Exp $
* Proview $Id: wb_c_ao_hvao4.cpp,v 1.1 2007-01-04 08:46:09 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -29,7 +29,6 @@
#include "pwr_ssaboxclasses.h"
#include "wb_ldh.h"
#include "wb_wsx.h"
#include "wb_nav_macros.h"
/* AnteAdopt -- check if it's ok to adopt a new object */
......@@ -56,12 +55,12 @@ static pwr_tStatus AnteAdopt (
if (EVEN(sts)) return sts;
MaxChan = co_min(32, RCard.MaxNoOfChannels);
for (i = 0, Chan = 1; i < MaxChan; i++, Chan <<= 1) {
for (i = 0, Chan = 1; i < (int)MaxChan; i++, Chan <<= 1) {
if ((DCard.ChannelAllocation & Chan) == 0)
break;
}
if (i >= MaxChan)
if (i >= (int)MaxChan)
return PWRB__ALOCHAN;
else
return LDH__ADOPTRENAME;
......@@ -101,12 +100,12 @@ static pwr_tStatus PostAdopt (
if (EVEN(sts)) return sts;
MaxChan = co_min(32, RCard.MaxNoOfChannels);
for (i = 0, Chan = 1; i < MaxChan; i++, Chan <<= 1) {
for (i = 0, Chan = 1; i < (int)MaxChan; i++, Chan <<= 1) {
if ((DCard.ChannelAllocation & Chan) == 0)
break;
}
if (i >= MaxChan)
if (i >= (int)MaxChan)
return PWRB__ALOCHAN;
/* allocate new channel */
......
/*
* Proview $Id: wb_c_co_co4up.c,v 1.2 2006-04-24 13:22:24 claes Exp $
* Proview $Id: wb_c_co_co4up.cpp,v 1.1 2007-01-04 08:46:09 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -29,7 +29,6 @@
#include "pwr_ssaboxclasses.h"
#include "wb_ldh.h"
#include "wb_wsx.h"
#include "wb_nav_macros.h"
/* Check if it's ok to adopt a new object. */
......@@ -57,12 +56,12 @@ AnteAdopt (
if (EVEN(sts)) return sts;
MaxCounter = co_min(32, RCard.MaxNoOfCounters);
for (i = 0, Chan = 1; i < MaxCounter; i++, Chan <<= 1) {
for (i = 0, Chan = 1; i < (int)MaxCounter; i++, Chan <<= 1) {
if ((DCard.ChannelAllocation & Chan) == 0)
break;
}
if (i >= MaxCounter)
if (i >= (int)MaxCounter)
return PWRB__ALOCHAN;
else
return LDH__ADOPTRENAME;
......@@ -101,12 +100,12 @@ PostAdopt (
if (EVEN(sts)) return sts;
MaxCounter = co_min(32, RCard.MaxNoOfCounters);
for (i = 0, Chan = 1; i < MaxCounter; i++, Chan <<= 1) {
for (i = 0, Chan = 1; i < (int)MaxCounter; i++, Chan <<= 1) {
if ((DCard.ChannelAllocation & Chan) == 0)
break;
}
if (i >= MaxCounter)
if (i >= (int)MaxCounter)
return PWRB__ALOCHAN;
/* allocate new channel */
......
/*
* Proview $Id: wb_c_co_pi24bo.c,v 1.2 2006-04-24 13:22:24 claes Exp $
* Proview $Id: wb_c_co_pi24bo.cpp,v 1.1 2007-01-04 08:46:09 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -29,7 +29,6 @@
#include "pwr_ssaboxclasses.h"
#include "wb_ldh.h"
#include "wb_wsx.h"
#include "wb_nav_macros.h"
/* Check if it's ok to adopt a new object. */
......@@ -57,12 +56,12 @@ AnteAdopt (
if (EVEN(sts)) return sts;
MaxCounter = co_min(32, RCard.MaxNoOfCounters);
for (i = 0, Chan = 1; i < MaxCounter; i++, Chan <<= 1) {
for (i = 0, Chan = 1; i < (int)MaxCounter; i++, Chan <<= 1) {
if ((DCard.ChannelAllocation & Chan) == 0)
break;
}
if (i >= MaxCounter)
if (i >= (int)MaxCounter)
return PWRB__ALOCHAN;
else
return LDH__ADOPTRENAME;
......@@ -101,12 +100,12 @@ PostAdopt (
if (EVEN(sts)) return sts;
MaxCounter = co_min(32, RCard.MaxNoOfCounters);
for (i = 0, Chan = 1; i < MaxCounter; i++, Chan <<= 1) {
for (i = 0, Chan = 1; i < (int)MaxCounter; i++, Chan <<= 1) {
if ((DCard.ChannelAllocation & Chan) == 0)
break;
}
if (i >= MaxCounter)
if (i >= (int)MaxCounter)
return PWRB__ALOCHAN;
/* allocate new channel */
......
/*
* Proview $Id: wb_c_di_dix2.c,v 1.2 2006-04-24 13:22:24 claes Exp $
* Proview $Id: wb_c_di_dix2.cpp,v 1.1 2007-01-04 08:46:09 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -29,7 +29,6 @@
#include "pwr_ssaboxclasses.h"
#include "wb_ldh.h"
#include "wb_wsx.h"
#include "wb_nav_macros.h"
/*----------------------------------------------------------------------------*\
......@@ -58,12 +57,12 @@ static pwr_tStatus AnteAdopt (
if (EVEN(sts)) return sts;
MaxChan = co_min(32, RCard.MaxNoOfChannels);
for (i = 0, Chan = 1; i < MaxChan; i++, Chan <<= 1) {
for (i = 0, Chan = 1; i < (int)MaxChan; i++, Chan <<= 1) {
if ((DCard.ChannelAllocation & Chan) == 0)
break;
}
if (i >= MaxChan)
if (i >= (int)MaxChan)
return PWRB__ALOCHAN;
else
return LDH__ADOPTRENAME;
......@@ -103,12 +102,12 @@ static pwr_tStatus PostAdopt (
if (EVEN(sts)) return sts;
MaxChan = co_min(32, RCard.MaxNoOfChannels);
for (i = 0, Chan = 1; i < MaxChan; i++, Chan <<= 1) {
for (i = 0, Chan = 1; i < (int)MaxChan; i++, Chan <<= 1) {
if ((DCard.ChannelAllocation & Chan) == 0)
break;
}
if (i >= MaxChan)
if (i >= (int)MaxChan)
return PWRB__ALOCHAN;
/* allocate new channel */
......
/*
* Proview $Id: wb_c_do_hvdo32.c,v 1.2 2006-04-24 13:22:24 claes Exp $
* Proview $Id: wb_c_do_hvdo32.cpp,v 1.1 2007-01-04 08:46:09 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -29,7 +29,6 @@
#include "pwr_ssaboxclasses.h"
#include "wb_ldh.h"
#include "wb_wsx.h"
#include "wb_nav_macros.h"
/*----------------------------------------------------------------------------*\
......@@ -58,12 +57,12 @@ static pwr_tStatus AnteAdopt (
if (EVEN(sts)) return sts;
MaxChan = co_min(32, RCard.MaxNoOfChannels);
for (i = 0, Chan = 1; i < MaxChan; i++, Chan <<= 1) {
for (i = 0, Chan = 1; i < (int)MaxChan; i++, Chan <<= 1) {
if ((DCard.ChannelAllocation & Chan) == 0)
break;
}
if (i >= MaxChan)
if (i >= (int)MaxChan)
return PWRB__ALOCHAN;
else
return LDH__ADOPTRENAME;
......@@ -103,12 +102,12 @@ static pwr_tStatus PostAdopt (
if (EVEN(sts)) return sts;
MaxChan = co_min(32, RCard.MaxNoOfChannels);
for (i = 0, Chan = 1; i < MaxChan; i++, Chan <<= 1) {
for (i = 0, Chan = 1; i < (int)MaxChan; i++, Chan <<= 1) {
if ((DCard.ChannelAllocation & Chan) == 0)
break;
}
if (i >= MaxChan)
if (i >= (int)MaxChan)
return PWRB__ALOCHAN;
/* allocate new channel */
......
include $(pwre_dir_symbols)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk
ifeq ($($(type_name)_generic_mk),)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(type_name)_generic.mk
endif
ifeq ($($(type_name)_generic_mk),)
include $(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
endif
-include ../../special.mk
-include ../special.mk
-include special.mk
ifndef link_rule_mk
link_rule_mk := 1
ifeq ($(export_type),exp)
link = $(ldxx) $(explinkflags) $(domap) -o $(pwr_exe)/rt_xtt_gtk \
$(bld_dir)/rt_xtt_gtk.o $(bld_dir)/xtt_main.o $(rt_msg_eobjs) \
$(pwr_eobj)/rt_io_user.o -L/usr/X11R6/lib\
-L/opt/gnome/lib \
-lpwr_xtt_gtk -lpwr_xtt -lpwr_xtt_gtk -lpwr_xtt -lpwr_ge_gtk -lpwr_ge -lpwr_rt_gtk -lpwr_rt \
-lpwr_co_gtk -lpwr_co -lpwr_flow_gtk -lpwr_flow -lpwr_glow_gtk -lpwr_glow \
`pkg-config --libs gtk+-2.0` \
-lpwr_msg_dummy -lgdk_imlib -lMrm -lXm -lXpm -lXt -lX11 -lXext -lXp\
-lSM -lICE\
-ldb -lrpcsvc -lpthread -lm -lrt -lasound
else
link = $(ldxx) $(elinkflags) $(domap) -o $(pwr_exe)/rt_xtt_gtk \
$(bld_dir)/rt_xtt_gtk.o $(bld_dir)/xtt_main.o $(rt_msg_eobjs) \
$(pwr_eobj)/rt_io_user.o -L/usr/X11R6/lib\
-L/opt/gnome/lib \
-lpwr_xtt_gtk -lpwr_xtt -lpwr_xtt_gtk -lpwr_xtt -lpwr_ge_gtk -lpwr_ge -lpwr_rt_gtk -lpwr_rt \
-lpwr_co_gtk -lpwr_co -lpwr_flow_gtk -lpwr_flow -lpwr_glow_gtk -lpwr_glow \
`pkg-config --libs gtk+-2.0` \
-lpwr_msg_dummy -lgdk_imlib -lMrm -lXm -lXpm -lXt -lX11 -lXext -lXp\
-lSM -lICE\
-ldb -lrpcsvc -lpthread -lm -lrt -lasound
endif
endif
/*
* Proview $Id: rt_xtt_gtk.cpp,v 1.1 2007-01-04 08:40:24 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* rt_xtt_gtk.cpp -- Display plant and node hiererachy */
#include "flow_std.h"
#include <stdio.h>
#include <stdlib.h>
#include "rt_gdh.h"
#include "rt_gdh_msg.h"
#include "rt_ini_event.h"
#include "rt_qcom_msg.h"
#include "co_cdh.h"
#include "co_time.h"
#include "co_wow_gtk.h"
#include "pwr_baseclasses.h"
#include "pwr_nmpsclasses.h"
#include <gtk/gtk.h>
#include "xtt_hotkey_gtk.h"
#include "co_dcli.h"
#include "co_lng.h"
#include "flow.h"
#include "flow_browctx.h"
#include "flow_browapi.h"
#include "rt_xtt_gtk.h"
//#include "rt_trace.h"
#include "xtt_xnav_gtk.h"
#include "xtt_item.h"
#include "xtt_url.h"
#include "co_lng.h"
#include "co_xhelp_gtk.h"
#include "co_wow_gtk.h"
#include "rt_xnav_msg.h"
void XttGtk::hotkey_Command( char *arg, void *userdata)
{
Xtt *xtt = (Xtt *)userdata;
xtt->hotkey_activate_command( arg);
}
void XttGtk::hotkey_ToggleDig( char *arg, void *userdata)
{
hotkey_activate_toggledig( arg);
}
void XttGtk::hotkey_SetDig( char *arg, void *userdata)
{
hotkey_activate_setdig( arg);
}
void XttGtk::hotkey_ResetDig( char *arg, void *userdata)
{
hotkey_activate_resetdig( arg);
}
static GdkFilterReturn xtt_hotkey_filter( GdkXEvent *xevent, GdkEvent *event, gpointer data)
{
return (GdkFilterReturn) XttHotkey::event_handler( xevent, data);
}
void XttGtk::xtt_mainloop()
{
gtk_main();
}
#if 0
int XttGtk::init_hotkey( XtAppContext AppCtx, Widget Top)
{
hotkeySTATUS HotkeySts;
XtAppAddActions( AppCtx, HotkeyActions, XtNumber(HotkeyActions));
HotkeySts = hotkey_Initialize (Top, &HotkeyHandle);
switch ( HotkeySts ) {
case TkERROR :
puts ("Xtt: Failed to bind hotkey(s)");
break;
case TkNO_BINDINGS :
puts ("OpWin: No hotkey resource found in resource db");
break;
case TkPARSE_ERROR :
puts ("OpWin: Syntax error in hotkey bindings");
}
return 1;
}
#endif
void XttGtk::open_input_dialog( char *text, char *title,
char *init_text,
void (*ok_cb)( Xtt *, char *))
{
create_input_dialog();
g_object_set( india_widget,
"visible", TRUE,
"title", CoWowGtk::translate_utf8(title),
NULL);
gtk_label_set_text( GTK_LABEL(india_label), CoWowGtk::translate_utf8(text));
gint pos = 0;
gtk_editable_delete_text( GTK_EDITABLE(india_text), 0, -1);
gtk_editable_insert_text( GTK_EDITABLE(india_text), init_text,
strlen(init_text), &pos);
india_ok_cb = ok_cb;
gtk_widget_grab_focus( india_text);
}
void XttGtk::message( char severity, char *msg)
{
gtk_label_set_text( GTK_LABEL(msg_label), msg);
}
void XttGtk::close( void *ctx, int terminate)
{
Xtt *xtt = (Xtt *) ctx;
char title[80];
if ( terminate) {
strcpy( title, CoWowGtk::translate_utf8("Confirm"));
xtt->wow->DisplayQuestion( xtt, title,
CoWowGtk::translate_utf8( "Do you want to close"), close_ok, 0, 0);
}
else {
xtt->xnav->displayed = 0;
g_object_set( ((XttGtk *)xtt)->toplevel, "visible", FALSE, NULL);
}
}
void XttGtk::set_dimension( void *ctx, int width, int height)
{
Xtt *xtt = (Xtt *) ctx;
gtk_window_resize( GTK_WINDOW(((XttGtk *)xtt)->toplevel), width, height);
}
void XttGtk::map( void *ctx)
{
Xtt *xtt = (Xtt *) ctx;
gtk_window_present( GTK_WINDOW(((XttGtk *)xtt)->toplevel));
xtt->xnav->displayed = 1;
}
void XttGtk::set_prompt( char *prompt)
{
if ( strcmp(prompt, "") == 0) {
g_object_set( cmd_prompt, "visible", FALSE, NULL);
g_object_set( msg_label, "visible", TRUE, NULL);
}
else {
g_object_set( msg_label, "visible", FALSE, NULL);
g_object_set( cmd_prompt, "visible", TRUE,
"label", prompt, NULL);
}
}
void XttGtk::open_change_value()
{
int sts;
if ( input_open) {
g_object_set( cmd_input, "visible", FALSE, NULL);
set_prompt( "");
input_open = 0;
return;
}
sts = xnav->check_attr_value();
if ( EVEN(sts)) {
message( 'E', XNav::get_message(sts));
return;
}
if ( command_open)
command_open = 0;
else
g_object_set( cmd_input, "visible", TRUE, NULL);
message( ' ', "");
gtk_widget_grab_focus( cmd_input);
gtk_editable_delete_text( GTK_EDITABLE(cmd_input), 0, -1);
set_prompt( Lng::translate("value >"));
input_open = 1;
}
//
// Callbackfunctions from menu entries
//
void XttGtk::activate_change_value( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->open_change_value();
}
void XttGtk::activate_command( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
if ( xtt->command_open) {
g_object_set( ((XttGtk *)xtt)->cmd_input, "visible", FALSE, NULL);
xtt->set_prompt( "");
xtt->command_open = 0;
return;
}
if ( xtt->input_open)
xtt->input_open = 0;
else
g_object_set( ((XttGtk *)xtt)->cmd_input, "visible", TRUE, NULL);
xtt->message( ' ', "");
gtk_widget_grab_focus( ((XttGtk *)xtt)->cmd_input);
gtk_editable_delete_text( GTK_EDITABLE(((XttGtk *)xtt)->cmd_input), 0, -1);
xtt->set_prompt( "xtt >");
xtt->command_open = 1;
}
void XttGtk::activate_exit( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
close( xtt, xtt->xnav->op ? 0 : 1);
}
void XttGtk::activate_print( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->activate_print();
}
void XttGtk::activate_find( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->activate_find();
}
void XttGtk::activate_findregex( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->activate_findregex();
}
void XttGtk::activate_findnext( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->activate_findnext();
}
void XttGtk::activate_collapse( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->activate_collapse();
}
void XttGtk::activate_openobject( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->activate_openobject();
}
void XttGtk::activate_openplc( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->activate_openplc();
}
void XttGtk::activate_showcrossref( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->xnav->show_crossref();
}
void XttGtk::activate_opengraph( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->activate_opengraph();
}
void XttGtk::activate_collect_insert( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->activate_collect_insert();
}
void XttGtk::activate_collect_show( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->xnav->collect_show();
}
void XttGtk::activate_collect_remove( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->xnav->collect_remove();
}
void XttGtk::activate_collect_clear( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->xnav->collect_clear();
}
void XttGtk::activate_advanceduser( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->activate_advanceduser();
}
void XttGtk::activate_zoom_in( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->activate_zoom_in();
}
void XttGtk::activate_zoom_out( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->activate_zoom_out();
}
void XttGtk::activate_zoom_reset( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->xnav->unzoom();
}
void XttGtk::activate_help( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->activate_help();
}
void XttGtk::activate_help_project( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->activate_help_project();
}
void XttGtk::activate_help_proview( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->activate_help_proview();
}
void XttGtk::activate_back( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
xtt->xnav->brow_push();
}
void XttGtk::activate_india_ok( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
char *text;
text = gtk_editable_get_chars( GTK_EDITABLE(((XttGtk *)xtt)->india_text),
0, -1);
g_object_set( ((XttGtk *)xtt)->india_widget, "visible", FALSE, NULL);
(xtt->india_ok_cb)( xtt, text);
}
void XttGtk::activate_india_cancel( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
g_object_set( ((XttGtk *)xtt)->india_widget, "visible", FALSE, NULL);
}
gboolean XttGtk::action_inputfocus( GtkWidget *w, GdkEvent *event, gpointer data)
{
XttGtk *xtt = (XttGtk *)data;
if ( xtt->focustimer.disabled()) {
return FALSE;
}
if ( xtt->xnav) {
xtt->xnav->set_inputfocus();
}
xtt->focustimer.disable( 400);
return FALSE;
}
void XttGtk::valchanged_cmd_input( GtkWidget *w, gpointer data)
{
Xtt *xtt = (Xtt *)data;
int sts;
char *text;
text = gtk_editable_get_chars( GTK_EDITABLE(w), 0, -1);
if ( xtt->input_open) {
sts = xtt->xnav->set_attr_value( text);
g_object_set( w, "visible", FALSE, NULL);
xtt->set_prompt( "");
xtt->input_open = 0;
xtt->xnav->set_inputfocus();
}
else if ( xtt->command_open) {
sts = xtt->xnav->command( text);
g_object_set( w, "visible", FALSE, NULL);
xtt->set_prompt( "");
xtt->command_open = 0;
xtt->xnav->set_inputfocus();
}
}
int main( int argc, char *argv[])
{
int sts;
gtk_init( &argc, &argv);
new XttGtk( argc, argv, &sts);
exit(sts);
}
XttGtk::~XttGtk()
{
delete cmd_entry;
delete cmd_recall;
delete value_recall;
delete hotkey;
}
static gint delete_event( GtkWidget *w, GdkEvent *event, gpointer xtt)
{
XttGtk::activate_exit(w, xtt);
return TRUE;
}
static void destroy_event( GtkWidget *w, gpointer data)
{
}
XttGtk::XttGtk( int argc, char *argv[], int *return_sts) :
Xtt( argc, argv, return_sts)
{
const int window_width = 400;
const int window_height = 700;
pwr_tStatus sts;
pwr_tFileName fname;
// Gtk
toplevel = (GtkWidget *) g_object_new( GTK_TYPE_WINDOW,
"default-height", window_height,
"default-width", window_width,
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(XttGtk::action_inputfocus), this);
CoWowGtk::SetWindowIcon( toplevel);
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
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(XttGtk::activate_print), this);
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(XttGtk::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), file_print);
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));
// Edit Entry
// Submenu Search
GtkWidget *edit_search_findobject = gtk_menu_item_new_with_mnemonic(
CoWowGtk::translate_utf8("_Find Object"));
g_signal_connect( edit_search_findobject, "activate",
G_CALLBACK(XttGtk::activate_find), this);
gtk_widget_add_accelerator( edit_search_findobject, "activate", accel_g,
'f', GdkModifierType(GDK_CONTROL_MASK),
GTK_ACCEL_VISIBLE);
GtkWidget *edit_search_findregex = gtk_menu_item_new_with_mnemonic(
CoWowGtk::translate_utf8("Find _Regular expression"));
g_signal_connect( edit_search_findregex, "activate",
G_CALLBACK(XttGtk::activate_findregex), this);
GtkWidget *edit_search_findnext = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("Find _Next"));
g_signal_connect( edit_search_findnext, "activate",
G_CALLBACK(XttGtk::activate_findnext), this);
gtk_widget_add_accelerator( edit_search_findnext, "activate", accel_g,
'f', GdkModifierType(GDK_CONTROL_MASK | GDK_SHIFT_MASK),
GTK_ACCEL_VISIBLE);
GtkWidget *edit_search = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Search"));
GtkMenu *edit_search_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
gtk_menu_shell_append(GTK_MENU_SHELL(edit_search_menu), edit_search_findobject);
gtk_menu_shell_append(GTK_MENU_SHELL(edit_search_menu), edit_search_findregex);
gtk_menu_shell_append(GTK_MENU_SHELL(edit_search_menu), edit_search_findnext);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(edit_search),
GTK_WIDGET(edit_search_menu));
GtkWidget *edit_collapse = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("Co_llapse"));
g_signal_connect( edit_collapse, "activate",
G_CALLBACK(XttGtk::activate_collapse), this);
GtkMenu *edit_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
gtk_menu_shell_append(GTK_MENU_SHELL(edit_menu), edit_search);
gtk_menu_shell_append(GTK_MENU_SHELL(edit_menu), edit_collapse);
GtkWidget *edit = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Edit"));
gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), edit);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(edit), GTK_WIDGET(edit_menu));
// Functions menu
GtkWidget *functions_openobject = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Open Object..."));
g_signal_connect( functions_openobject, "activate",
G_CALLBACK(XttGtk::activate_openobject), this);
gtk_widget_add_accelerator( functions_openobject, "activate", accel_g,
'a', GdkModifierType(GDK_CONTROL_MASK),
GTK_ACCEL_VISIBLE);
GtkWidget *functions_openplc = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("Open _Program"));
g_signal_connect( functions_openplc, "activate",
G_CALLBACK(XttGtk::activate_openplc), this);
gtk_widget_add_accelerator( functions_openplc, "activate", accel_g,
'l', GdkModifierType(GDK_CONTROL_MASK),
GTK_ACCEL_VISIBLE);
GtkWidget *functions_opengraph = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("Open _ClassGraph"));
g_signal_connect( functions_opengraph, "activate",
G_CALLBACK(XttGtk::activate_opengraph), this);
gtk_widget_add_accelerator( functions_opengraph, "activate", accel_g,
'g', GdkModifierType(GDK_CONTROL_MASK),
GTK_ACCEL_VISIBLE);
GtkWidget *functions_showcrossref = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("Show C_rossreferences"));
g_signal_connect( functions_showcrossref, "activate",
G_CALLBACK(XttGtk::activate_showcrossref), this);
gtk_widget_add_accelerator( functions_showcrossref, "activate", accel_g,
'r', GdkModifierType(GDK_CONTROL_MASK),
GTK_ACCEL_VISIBLE);
GtkWidget *functions_change_value = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("Change _Value"));
g_signal_connect( functions_change_value, "activate",
G_CALLBACK(XttGtk::activate_change_value), this);
gtk_widget_add_accelerator( functions_change_value, "activate", accel_g,
'q', GdkModifierType(GDK_CONTROL_MASK),
GTK_ACCEL_VISIBLE);
GtkWidget *functions_command = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("Co_mmand"));
g_signal_connect( functions_command, "activate",
G_CALLBACK(XttGtk::activate_command), this);
gtk_widget_add_accelerator( functions_command, "activate", accel_g,
'b', GdkModifierType(GDK_CONTROL_MASK),
GTK_ACCEL_VISIBLE);
// Submenu Search
GtkWidget *functions_collect_insert = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Insert"));
g_signal_connect( functions_collect_insert, "activate",
G_CALLBACK(XttGtk::activate_collect_insert), this);
gtk_widget_add_accelerator( functions_collect_insert, "activate", accel_g,
'v', GdkModifierType(GDK_CONTROL_MASK),
GTK_ACCEL_VISIBLE);
GtkWidget *functions_collect_show = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Show"));
g_signal_connect( functions_collect_show, "activate",
G_CALLBACK(XttGtk::activate_collect_show), this);
gtk_widget_add_accelerator( functions_collect_show, "activate", accel_g,
'n', GdkModifierType(GDK_CONTROL_MASK),
GTK_ACCEL_VISIBLE);
GtkWidget *functions_collect_remove = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Remove"));
g_signal_connect( functions_collect_remove, "activate",
G_CALLBACK(XttGtk::activate_collect_remove), this);
GtkWidget *functions_collect_clear = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("C_lear"));
g_signal_connect( functions_collect_clear, "activate",
G_CALLBACK(XttGtk::activate_collect_clear), this);
GtkWidget *functions_collect = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Collect"));
GtkMenu *functions_collect_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
gtk_menu_shell_append(GTK_MENU_SHELL(functions_collect_menu), functions_collect_insert);
gtk_menu_shell_append(GTK_MENU_SHELL(functions_collect_menu), functions_collect_show);
gtk_menu_shell_append(GTK_MENU_SHELL(functions_collect_menu), functions_collect_remove);
gtk_menu_shell_append(GTK_MENU_SHELL(functions_collect_menu), functions_collect_clear);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(functions_collect),
GTK_WIDGET(functions_collect_menu));
// End submenu
GtkWidget *functions_advuser = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Advanced user"));
g_signal_connect( functions_advuser, "activate",
G_CALLBACK(XttGtk::activate_advanceduser), this);
gtk_widget_add_accelerator( functions_advuser, "activate", accel_g,
'u', GdkModifierType(GDK_CONTROL_MASK),
GTK_ACCEL_VISIBLE);
GtkMenu *functions_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
gtk_menu_shell_append(GTK_MENU_SHELL(functions_menu), functions_openobject);
gtk_menu_shell_append(GTK_MENU_SHELL(functions_menu), functions_openplc);
gtk_menu_shell_append(GTK_MENU_SHELL(functions_menu), functions_opengraph);
gtk_menu_shell_append(GTK_MENU_SHELL(functions_menu), functions_showcrossref);
gtk_menu_shell_append(GTK_MENU_SHELL(functions_menu), functions_change_value);
gtk_menu_shell_append(GTK_MENU_SHELL(functions_menu), functions_command);
gtk_menu_shell_append(GTK_MENU_SHELL(functions_menu), functions_collect);
gtk_menu_shell_append(GTK_MENU_SHELL(functions_menu), functions_advuser);
GtkWidget *functions = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Functions"));
gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), functions);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(functions), GTK_WIDGET(functions_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(XttGtk::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_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(XttGtk::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_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(XttGtk::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_overview = gtk_image_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Overview"));
gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM(help_overview),
gtk_image_new_from_stock( "gtk-help", GTK_ICON_SIZE_MENU));
g_signal_connect(help_overview, "activate", G_CALLBACK(XttGtk::activate_help), this);
gtk_widget_add_accelerator( help_overview, "activate", accel_g,
'h', GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
GtkWidget *help_project = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Project"));
g_signal_connect( help_project, "activate",
G_CALLBACK(XttGtk::activate_help_project), this);
GtkWidget *help_proview = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_About Proview"));
g_signal_connect( help_proview, "activate",
G_CALLBACK(XttGtk::activate_help_proview), this);
GtkMenu *help_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
gtk_menu_shell_append(GTK_MENU_SHELL(help_menu), help_overview);
gtk_menu_shell_append(GTK_MENU_SHELL(help_menu), help_project);
gtk_menu_shell_append(GTK_MENU_SHELL(help_menu), help_proview);
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_back = gtk_button_new();
gtk_container_add( GTK_CONTAINER(tools_back),
gtk_image_new_from_stock( "gtk-go-back", GTK_ICON_SIZE_SMALL_TOOLBAR));
g_signal_connect(tools_back, "clicked", G_CALLBACK(activate_back), this);
gtk_toolbar_append_widget( tools, tools_back,CoWowGtk::translate_utf8("Go back"), "");
GtkWidget *tools_openobject = gtk_button_new();
dcli_translate_filename( fname, "$pwr_exe/xtt_object.png");
gtk_container_add( GTK_CONTAINER(tools_openobject),
gtk_image_new_from_file( fname));
g_signal_connect(tools_openobject, "clicked", G_CALLBACK(XttGtk::activate_openobject), this);
gtk_toolbar_append_widget( tools, tools_openobject,CoWowGtk::translate_utf8("Open Object"), "");
GtkWidget *tools_openplc = gtk_button_new();
dcli_translate_filename( fname, "$pwr_exe/wtt_program.png");
gtk_container_add( GTK_CONTAINER(tools_openplc),
gtk_image_new_from_file( fname));
g_signal_connect(tools_openplc, "clicked", G_CALLBACK(XttGtk::activate_openplc), this);
gtk_toolbar_append_widget( tools, tools_openplc,CoWowGtk::translate_utf8("Open Program"), "");
GtkWidget *tools_advuser = gtk_button_new();
dcli_translate_filename( fname, "$pwr_exe/xtt_advuser.png");
gtk_container_add( GTK_CONTAINER(tools_advuser),
gtk_image_new_from_file( fname));
g_signal_connect(tools_advuser, "clicked", G_CALLBACK(XttGtk::activate_advanceduser), this);
gtk_toolbar_append_widget( tools, tools_advuser,CoWowGtk::translate_utf8("Advanced user"), "");
GtkWidget *tools_zoom_in = gtk_button_new();
dcli_translate_filename( fname, "$pwr_exe/ge_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_zoom_in), this);
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/ge_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_zoom_out), this);
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/ge_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_zoom_reset), this);
gtk_toolbar_append_widget( tools, tools_zoom_reset,CoWowGtk::translate_utf8("Zoom reset"), "");
// Statusbar and cmd input
GtkWidget *statusbar = gtk_hbox_new( FALSE, 0);
msg_label = gtk_label_new( "");
gtk_widget_set_size_request( msg_label, -1, 25);
cmd_prompt = gtk_label_new( "value > ");
gtk_widget_set_size_request( cmd_prompt, -1, 25);
cmd_recall = new CoWowRecall();
value_recall = new CoWowRecall();
cmd_entry = new CoWowEntryGtk( cmd_recall);
cmd_input = cmd_entry->widget();
gtk_widget_set_size_request( cmd_input, -1, 25);
g_signal_connect( cmd_input, "activate",
G_CALLBACK(XttGtk::valchanged_cmd_input), this);
gtk_box_pack_start( GTK_BOX(statusbar), msg_label, FALSE, FALSE, 20);
gtk_box_pack_start( GTK_BOX(statusbar), cmd_prompt, FALSE, FALSE, 20);
gtk_box_pack_start( GTK_BOX(statusbar), cmd_input, TRUE, TRUE, 20);
gtk_widget_show_all( statusbar);
xnav = new XNavGtk( this, xnav_form, "Plant",
&brow_widget, (xnav_sStartMenu *)root_menu,
opplace_str, &sts);
xnav->message_cb = &xtt_message_cb;
xnav->close_cb = &close;
xnav->map_cb = &map;
xnav->change_value_cb = &change_value;
xnav->set_dimension_cb = &set_dimension;
xnav->attach_audio = attach_audio;
GtkWidget *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), FALSE, FALSE, 0);
gtk_box_pack_start( GTK_BOX(vbox), GTK_WIDGET(brow_widget), TRUE, TRUE, 0);
gtk_box_pack_start( GTK_BOX(vbox), GTK_WIDGET(statusbar), FALSE, FALSE, 3);
gtk_container_add( GTK_CONTAINER(toplevel), vbox);
gtk_widget_show_all( toplevel);
g_object_set( cmd_prompt, "visible", FALSE, NULL);
g_object_set( cmd_input, "visible", FALSE, NULL);
// Create help window
CoXHelp *xhelp = new CoXHelpGtk( toplevel, this, xhelp_eUtility_Xtt, &sts);
xhelp->open_URL_cb = open_URL_cb;
CoXHelp::set_default( xhelp);
wow = new CoWowGtk( toplevel);
if ( !quiet)
wow->DisplayWarranty();
// TODO if ( xnav->op)
// close( this, 0);
timerid = wow->timer_new();
// Start timer to check for qcom events
timerid->add( 1000, qcom_events, this);
hotkey = new XttHotkey("$HOME/Rt_xtt");
hotkey->register_action( "SetDig", hotkey_SetDig, this);
hotkey->register_action( "ResetDig", hotkey_ResetDig, this);
hotkey->register_action( "ToggleDig", hotkey_ToggleDig, this);
hotkey->register_action( "Command", hotkey_Command, this);
int n_screens = gdk_display_get_n_screens( gdk_display_get_default());
for ( int i = 0; i < n_screens; i++) {
GdkWindow *root = gdk_screen_get_root_window( gdk_display_get_screen(
gdk_display_get_default(), i));
gdk_window_add_filter( root, xtt_hotkey_filter, hotkey);
}
xtt_mainloop();
#if 0
char uid_filename[120] = {"xtt.uid"};
char *uid_filename_p = uid_filename;
Arg args[20];
pwr_tStatus sts;
char title[80];
int i;
XtAppContext app_ctx;
MrmHierarchy s_DRMh;
MrmType dclass;
Widget xtt_widget;
char name[] = "PwR Xtt";
static char translations[] =
"<FocusIn>: xtt_inputfocus()\n";
static XtTranslations compiled_translations = NULL;
static XtActionsRec actions[] =
{
{"xtt_inputfocus", (XtActionProc) action_inputfocus}
};
static MrmRegisterArg reglist[] = {
{ "xtt_ctx", 0 },
{"xtt_activate_exit",(caddr_t)activate_exit },
{"xtt_activate_print",(caddr_t)activate_print },
{"xtt_activate_find",(caddr_t)activate_find },
{"xtt_activate_findregex",(caddr_t)activate_findregex },
{"xtt_activate_findnext",(caddr_t)activate_findnext },
{"xtt_activate_collapse",(caddr_t)activate_collapse },
{"xtt_activate_openobject",(caddr_t)activate_openobject },
{"xtt_activate_openplc",(caddr_t)activate_openplc },
{"xtt_activate_opengraph",(caddr_t)activate_opengraph },
{"xtt_activate_showcrossref",(caddr_t)activate_showcrossref },
{"xtt_activate_change_value",(caddr_t)activate_change_value },
{"xtt_activate_command",(caddr_t)activate_command },
{"xtt_activate_collect_insert",(caddr_t)activate_collect_insert },
{"xtt_activate_collect_show",(caddr_t)activate_collect_show },
{"xtt_activate_collect_remove",(caddr_t)activate_collect_remove },
{"xtt_activate_collect_clear",(caddr_t)activate_collect_clear },
{"xtt_activate_advanceduser",(caddr_t)activate_advanceduser },
{"xtt_activate_zoom_in",(caddr_t)activate_zoom_in },
{"xtt_activate_zoom_out",(caddr_t)activate_zoom_out },
{"xtt_activate_zoom_reset",(caddr_t)activate_zoom_reset },
{"xtt_activate_help",(caddr_t)activate_help },
{"xtt_activate_help_project",(caddr_t)activate_help_project },
{"xtt_activate_help_proview",(caddr_t)activate_help_proview },
{"xtt_create_msg_label",(caddr_t)create_msg_label },
{"xtt_create_cmd_prompt",(caddr_t)create_cmd_prompt },
{"xtt_create_cmd_input",(caddr_t)create_cmd_input },
{"xtt_create_xnav_form",(caddr_t)create_xnav_form },
{"xtt_activate_india_ok",(caddr_t)activate_india_ok },
{"xtt_activate_india_cancel",(caddr_t)activate_india_cancel },
{"xtt_create_india_label",(caddr_t)create_india_label },
{"xtt_create_india_text",(caddr_t)create_india_text }
};
static int reglist_num = (sizeof reglist / sizeof reglist[0]);
// Gtk
Lng::get_uid( uid_filename, uid_filename);
MrmInitialize();
strcpy( title, "PwR Xtt");
toplevel = XtVaAppInitialize (
&app_ctx,
"Rt_xtt",
NULL, 0,
&argc, argv,
fbr,
XtNallowShellResize, True,
XtNtitle, title,
XmNmappedWhenManaged, True,
NULL);
reglist[0].value = (caddr_t) this;
if (compiled_translations == NULL)
XtAppAddActions( XtWidgetToApplicationContext(toplevel),
actions, XtNumber(actions));
// Save the context structure in the widget
i = 0;
XtSetArg( args[i], XmNuserData, (unsigned int) this);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);
sts = MrmFetchWidgetOverride( s_DRMh, "xtt_window", toplevel,
name, args, i, &xtt_widget, &dclass);
if (sts != MrmSUCCESS) printf("can't fetch %s\n", name);
sts = MrmFetchWidget(s_DRMh, "input_dialog", toplevel,
&india_widget, &dclass);
if (sts != MrmSUCCESS) printf("can't fetch input dialog\n");
MrmCloseHierarchy(s_DRMh);
if (compiled_translations == NULL)
compiled_translations = XtParseTranslationTable(translations);
XtOverrideTranslations( xtt_widget, compiled_translations);
i = 0;
XtSetArg(args[i],XmNwidth,350);i++;
XtSetArg(args[i],XmNheight,600);i++;
XtSetArg(args[i], XmNdeleteResponse, XmDO_NOTHING);i++;
XtSetValues( toplevel ,args,i);
XtManageChild( xtt_widget);
XtUnmanageChild( cmd_input);
xnav = new XNavGtk( this, xnav_form, "Plant",
&brow_widget, (xnav_sStartMenu *)root_menu,
opplace_str, &sts);
xnav->message_cb = &xtt_message_cb;
xnav->close_cb = &close;
xnav->map_cb = &map;
xnav->change_value_cb = &change_value;
xnav->set_dimension_cb = &set_dimension;
xnav->attach_audio = attach_audio;
// Create help window
CoXHelp *xhelp = new CoXHelpGtk( toplevel, this, xhelp_eUtility_Xtt, &sts);
xhelp->open_URL_cb = open_URL_cb;
CoXHelp::set_default( xhelp);
XtRealizeWidget( toplevel);
wow = new CoWowGtk( toplevel);
if ( !quiet)
wow->DisplayWarranty();
// XmProcessTraversal( xnav->brow_widget, XmTRAVERSE_CURRENT);
// xnav->set_inputfocus();
init_hotkey( app_ctx, toplevel);
// Connect the window manager close-button to exit
flow_AddCloseVMProtocolCb( toplevel,
(XtCallbackProc)activate_exit, this);
if ( xnav->op)
close( this, 0);
timerid = wow->timer_new();
// Start timer to check for qcom events
timerid->add( 1000, qcom_events, this);
xtt_mainloop( app_ctx);
#endif
}
static gint india_delete_event( GtkWidget *w, GdkEvent *event, gpointer xtt)
{
g_object_set( ((XttGtk *)xtt)->india_widget, "visible", FALSE, NULL);
return TRUE;
}
void XttGtk::create_input_dialog()
{
if ( india_widget) {
g_object_set( india_widget, "visible", TRUE, NULL);
return;
}
// Create an input dialog
india_widget = (GtkWidget *) g_object_new( GTK_TYPE_WINDOW,
"default-height", 150,
"default-width", 350,
"title", "Input Dialog",
NULL);
g_signal_connect( india_widget, "delete_event", G_CALLBACK(india_delete_event), this);
CoWowGtk::SetWindowIcon( india_widget);
india_text = gtk_entry_new();
india_label = gtk_label_new("");
GtkWidget *india_image = (GtkWidget *)g_object_new( GTK_TYPE_IMAGE,
"stock", GTK_STOCK_DIALOG_QUESTION,
"icon-size", GTK_ICON_SIZE_DIALOG,
"xalign", 0.5,
"yalign", 1.0,
NULL);
GtkWidget *india_ok = gtk_button_new_with_label( CoWowGtk::translate_utf8("Ok"));
gtk_widget_set_size_request( india_ok, 70, 25);
g_signal_connect( india_ok, "clicked",
G_CALLBACK(activate_india_ok), this);
GtkWidget *india_cancel = gtk_button_new_with_label( CoWowGtk::translate_utf8("Cancel"));
gtk_widget_set_size_request( india_cancel, 70, 25);
g_signal_connect( india_cancel, "clicked",
G_CALLBACK(activate_india_cancel), this);
GtkWidget *india_hboxtext = gtk_hbox_new( FALSE, 0);
gtk_box_pack_start( GTK_BOX(india_hboxtext), india_image, FALSE, FALSE, 15);
gtk_box_pack_start( GTK_BOX(india_hboxtext), india_label, FALSE, FALSE, 15);
gtk_box_pack_end( GTK_BOX(india_hboxtext), india_text, TRUE, TRUE, 30);
GtkWidget *india_hboxbuttons = gtk_hbox_new( TRUE, 40);
gtk_box_pack_start( GTK_BOX(india_hboxbuttons), india_ok, FALSE, FALSE, 0);
gtk_box_pack_end( GTK_BOX(india_hboxbuttons), india_cancel, FALSE, FALSE, 0);
GtkWidget *india_vbox = gtk_vbox_new( FALSE, 0);
gtk_box_pack_start( GTK_BOX(india_vbox), india_hboxtext, TRUE, TRUE, 30);
gtk_box_pack_start( GTK_BOX(india_vbox), gtk_hseparator_new(), FALSE, FALSE, 0);
gtk_box_pack_end( GTK_BOX(india_vbox), india_hboxbuttons, FALSE, FALSE, 15);
gtk_container_add( GTK_CONTAINER(india_widget), india_vbox);
gtk_widget_show_all( india_widget);
g_object_set( india_widget, "visible", FALSE, NULL);
}
/*
* Proview $Id: rt_xtt_gtk.h,v 1.1 2007-01-04 08:40:24 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef rt_xtt_gtk_h
#define rt_xtt_gtk_h
/* rt_xtt_gtk.h -- Simple navigator */
typedef void *Widget;
#ifndef rt_xtt_main_h
# include "rt_xtt_main.h"
#endif
#ifndef co_wow_gtk_h
# include "co_wow_gtk.h"
#endif
class CoWowRecall;
class CoWowEntryGtk;
class XttHotkey;
class XttGtk : public Xtt {
public:
GtkWidget *parent_wid;
GtkWidget *brow_widget;
GtkWidget *form_widget;
GtkWidget *toplevel;
GtkWidget *msg_label;
GtkWidget *cmd_prompt;
GtkWidget *cmd_input;
GtkWidget *xnav_form;
GtkWidget *india_widget;
GtkWidget *india_label;
GtkWidget *india_text;
CoWowFocusTimerGtk focustimer;
CoWowRecall *cmd_recall;
CoWowRecall *value_recall;
CoWowEntryGtk *cmd_entry;
XttHotkey *hotkey;
XttGtk( int argc, char *argv[], int *sts);
~XttGtk();
void message( char severity, char *msg);
void xtt_mainloop();
// int init_hotkey( XtAppContext AppCtx, Widget Top);
void open_input_dialog( char *text, char *title,
char *init_text,
void (*ok_cb)( Xtt *, char *));
void set_prompt( char *prompt);
void open_change_value();
void create_input_dialog();
static void close( void *ctx, int terminate);
static void set_dimension( void *ctx, int width, int height);
static void map( void *ctx);
static void activate_change_value( GtkWidget *w, gpointer data);
static void activate_command( GtkWidget *w, gpointer data);
static void activate_exit( GtkWidget *w, gpointer data);
static void activate_print( GtkWidget *w, gpointer data);
static void activate_find( GtkWidget *w, gpointer data);
static void activate_findregex( GtkWidget *w, gpointer data);
static void activate_findnext( GtkWidget *w, gpointer data);
static void activate_collapse( GtkWidget *w, gpointer data);
static void activate_openobject( GtkWidget *w, gpointer data);
static void activate_openplc( GtkWidget *w, gpointer data);
static void activate_showcrossref( GtkWidget *w, gpointer data);
static void activate_opengraph( GtkWidget *w, gpointer data);
static void activate_collect_insert( GtkWidget *w, gpointer data);
static void activate_collect_show( GtkWidget *w, gpointer data);
static void activate_collect_remove( GtkWidget *w, gpointer data);
static void activate_collect_clear( GtkWidget *w, gpointer data);
static void activate_advanceduser( GtkWidget *w, gpointer data);
static void activate_zoom_in( GtkWidget *w, gpointer data);
static void activate_zoom_out( GtkWidget *w, gpointer data);
static void activate_zoom_reset( GtkWidget *w, gpointer data);
static void activate_help( GtkWidget *w, gpointer data);
static void activate_help_project( GtkWidget *w, gpointer data);
static void activate_help_proview( GtkWidget *w, gpointer data);
static void activate_back( GtkWidget *w, gpointer data);
static void create_msg_label( GtkWidget *w, gpointer data);
static void create_cmd_prompt( GtkWidget *w, gpointer data);
static void create_cmd_input( GtkWidget *w, gpointer data);
static void create_xnav_form( GtkWidget *w, gpointer data);
static void create_india_label( GtkWidget *w, gpointer data);
static void create_india_text( GtkWidget *w, gpointer data);
static void activate_india_ok( GtkWidget *w, gpointer data);
static void activate_india_cancel( GtkWidget *w, gpointer data);
static gboolean action_inputfocus( GtkWidget *w, GdkEvent *event, gpointer data);
static void valchanged_cmd_input( GtkWidget *w, gpointer data);
static void hotkey_Command( char *arg, void *userdata);
static void hotkey_ToggleDig( char *arg, void *userdata);
static void hotkey_SetDig( char *arg, void *userdata);
static void hotkey_ResetDig( char *arg, void *userdata);
};
#endif
include $(pwre_dir_symbols)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk
ifeq ($($(type_name)_generic_mk),)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(type_name)_generic.mk
endif
ifeq ($($(type_name)_generic_mk),)
include $(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
endif
-include ../../special.mk
-include ../special.mk
-include special.mk
ifndef link_rule_mk
link_rule_mk := 1
ifeq ($(export_type),exp)
link = $(ldxx) $(explinkflags) $(domap) -o $(pwr_exe)/rt_xtt_motif \
$(bld_dir)/rt_xtt_motif.o $(bld_dir)/xtt_main.o $(rt_msg_eobjs) \
$(pwr_eobj)/rt_io_user.o -L/usr/X11R6/lib\
-L/opt/gnome/lib \
-lpwr_xtt_motif -lpwr_xtt -lpwr_xtt_motif -lpwr_xtt -lpwr_ge_motif -lpwr_ge -lpwr_rt_motif -lpwr_rt \
-lpwr_co_motif -lpwr_co -lpwr_flow_motif -lpwr_flow -lpwr_glow_motif -lpwr_glow \
-lpwr_msg_dummy -lImlib -lMrm -lXm -lXpm -lXt -lX11 -lXext -lXp\
-lSM -lICE\
-ldb -lrpcsvc -lpthread -lm -lrt -lasound
else
link = $(ldxx) $(elinkflags) $(domap) -o $(pwr_exe)/rt_xtt_motif \
$(bld_dir)/rt_xtt_motif.o $(bld_dir)/xtt_main.o $(rt_msg_eobjs) \
$(pwr_eobj)/rt_io_user.o -L/usr/X11R6/lib\
-L/opt/gnome/lib \
-lpwr_xtt_motif -lpwr_xtt -lpwr_xtt_motif -lpwr_xtt -lpwr_ge_motif -lpwr_ge -lpwr_rt_motif -lpwr_rt \
-lpwr_co_motif -lpwr_co -lpwr_flow_motif -lpwr_flow -lpwr_glow_motif -lpwr_glow \
-lpwr_msg_dummy -lImlib -lMrm -lXm -lXpm -lXt -lX11 -lXext -lXp\
-lSM -lICE\
-ldb -lrpcsvc -lpthread -lm -lrt -lasound
endif
endif
/*
* Proview $Id: rt_xtt_motif.cpp,v 1.1 2007-01-04 08:40:33 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* rt_xtt_motif.cpp -- Display plant and node hiererachy */
#include "flow_std.h"
#include <stdio.h>
#include <stdlib.h>
extern "C" {
#include "rt_gdh.h"
#include "rt_gdh_msg.h"
#include "rt_ini_event.h"
#include "rt_qcom_msg.h"
#include "co_cdh.h"
#include "co_time.h"
#include "pwr_baseclasses.h"
#include "pwr_nmpsclasses.h"
#include "flow_x.h"
}
#include <Xm/Xm.h>
#include <Xm/XmP.h>
#include <Xm/Text.h>
#include <Mrm/MrmPublic.h>
#include <X11/Intrinsic.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#define XK_MISCELLANY
#include <X11/keysymdef.h>
extern "C" {
#include "xtt_hotkey_motif.h"
#include "co_dcli.h"
#include "co_mrm_util.h"
}
#include "co_lng.h"
#include "flow.h"
#include "flow_browctx.h"
#include "flow_browapi.h"
//#include "flow_browwidget.h"
#include "rt_xtt_motif.h"
#include "rt_trace.h"
#include "xtt_xnav_motif.h"
#include "xtt_item.h"
#include "xtt_url.h"
#include "co_lng.h"
#include "co_xhelp_motif.h"
#include "co_wow_motif.h"
#include "rt_xnav_msg.h"
// Static variables
static String fbr[] = {
NULL};
static XtActionsRec HotkeyActions[] = {
{ "Command", (XtActionProc) XttMotif::hotkey_Command},
{ "ToggleDig", (XtActionProc) XttMotif::hotkey_ToggleDig},
{ "SetDig", (XtActionProc) XttMotif::hotkey_SetDig},
{ "ResetDig", (XtActionProc) XttMotif::hotkey_ResetDig}
};
void XttMotif::hotkey_Command( Widget w, XKeyEvent* ev, String* av, Cardinal* ac)
{
if (*ac == 0)
return;
hot_xtt->hotkey_activate_command( av[0]);
}
void XttMotif::hotkey_ToggleDig( Widget w, XKeyEvent* ev, String* av, Cardinal* ac)
{
if (ev->type != KeyPress)
return;
if (*ac == 0)
return;
hotkey_activate_toggledig( av[0]);
}
void XttMotif::hotkey_SetDig( Widget w, XKeyEvent* ev, String* av, Cardinal* ac)
{
if (ev->type != KeyPress)
return;
if (*ac == 0)
return;
hotkey_activate_setdig( av[0]);
}
void XttMotif::hotkey_ResetDig( Widget w, XKeyEvent* ev, String* av, Cardinal* ac)
{
if (ev->type != KeyPress)
return;
if (*ac == 0)
return;
hotkey_activate_resetdig( av[0]);
}
void XttMotif::xtt_mainloop (XtAppContext AppCtx)
{
XEvent Event;
for (;;) {
XtAppNextEvent( AppCtx, &Event);
if (Event.type != KeyPress ||
TkSUCCESS != hotkey_Process( HotkeyHandle, &Event))
XtDispatchEvent( &Event);
}
}
int XttMotif::init_hotkey( XtAppContext AppCtx, Widget Top)
{
hotkeySTATUS HotkeySts;
XtAppAddActions( AppCtx, HotkeyActions, XtNumber(HotkeyActions));
HotkeySts = hotkey_Initialize (Top, &HotkeyHandle);
switch ( HotkeySts ) {
case TkERROR :
puts ("Xtt: Failed to bind hotkey(s)");
break;
case TkNO_BINDINGS :
puts ("OpWin: No hotkey resource found in resource db");
break;
case TkPARSE_ERROR :
puts ("OpWin: Syntax error in hotkey bindings");
}
return 1;
}
void XttMotif::open_input_dialog( char *text, char *title,
char *init_text,
void (*ok_cb)( Xtt *, char *))
{
Arg args[10];
int i;
XmString cstr;
i = 0;
XtSetArg(args[0], XmNlabelString,
cstr=XmStringCreateLtoR( text, "ISO8859-1") ); i++;
XtSetValues( india_label, args, i);
XmStringFree( cstr);
i = 0;
XtSetArg(args[0], XmNdialogTitle,
cstr=XmStringCreateLtoR( title, "ISO8859-1") ); i++;
XtSetValues( india_widget, args, i);
XmStringFree( cstr);
XmTextSetString( india_text, init_text);
XtManageChild( india_widget);
XmProcessTraversal( india_text, XmTRAVERSE_CURRENT);
india_ok_cb = ok_cb;
}
void XttMotif::message( char severity, char *message)
{
Arg args[2];
XmString cstr;
cstr=XmStringCreateLtoR( message, "ISO8859-1");
XtSetArg(args[0],XmNlabelString, cstr);
XtSetValues( msg_label, args, 1);
XmStringFree( cstr);
}
void XttMotif::close( void *ctx, int terminate)
{
Xtt *xtt = (Xtt *) ctx;
if ( terminate) {
xtt->wow->DisplayQuestion( xtt, "Confirm",
"Do you want to close", close_ok, 0, 0);
// delete xtt->xnav;
// exit(0);
}
else {
xtt->xnav->displayed = 0;
flow_UnmapWidget( ((XttMotif *)xtt)->toplevel);
}
}
void XttMotif::set_dimension( void *ctx, int width, int height)
{
Xtt *xtt = (Xtt *) ctx;
Arg args[2];
int i = 0;
if ( width) {
XtSetArg( args[i], XmNwidth, width);i++;
}
if ( height) {
XtSetArg( args[i], XmNheight, height);i++;
}
XtSetValues( ((XttMotif *)xtt)->toplevel, args,i);
}
void XttMotif::map( void *ctx)
{
Xtt *xtt = (Xtt *) ctx;
if ( !xtt->xnav->displayed) {
flow_MapWidget( ((XttMotif *)xtt)->toplevel);
xtt->xnav->displayed = 1;
}
else
xtt->xnav->pop();
}
void XttMotif::set_prompt( char *prompt)
{
Arg args[1];
XmString cstr;
cstr=XmStringCreateLtoR( prompt, "ISO8859-1");
XtSetArg(args[0],XmNlabelString, cstr);
XtSetValues( cmd_prompt, args, 1);
XmStringFree( cstr);
}
void XttMotif::open_change_value()
{
Arg args[1];
int sts;
if ( input_open) {
XtUnmanageChild( cmd_input);
set_prompt( "");
input_open = 0;
return;
}
sts = xnav->check_attr_value();
if ( EVEN(sts)) {
message( 'E', XNav::get_message(sts));
return;
}
if ( command_open)
command_open = 0;
else
XtManageChild( cmd_input);
message( ' ', "");
XtSetKeyboardFocus( toplevel, cmd_input);
XtSetArg(args[0],XmNvalue, "");
XtSetValues( cmd_input, args, 1);
set_prompt( Lng::translate("value >"));
input_open = 1;
}
//
// Callbackfunctions from menu entries
//
void XttMotif::activate_change_value( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->open_change_value();
}
void XttMotif::activate_command( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
Arg args[1];
if ( xtt->command_open) {
XtUnmanageChild( ((XttMotif *)xtt)->cmd_input);
xtt->set_prompt( "");
xtt->command_open = 0;
return;
}
if ( xtt->input_open)
xtt->input_open = 0;
else
XtManageChild( ((XttMotif *)xtt)->cmd_input);
xtt->message( ' ', "");
XtSetKeyboardFocus( ((XttMotif *)xtt)->toplevel, ((XttMotif *)xtt)->cmd_input);
XtSetArg(args[0],XmNvalue, "");
XtSetValues( ((XttMotif *)xtt)->cmd_input, args, 1);
xtt->set_prompt( "xtt >");
xtt->command_open = 1;
}
void XttMotif::activate_exit( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
close( xtt, xtt->xnav->op ? 0 : 1);
}
void XttMotif::activate_print( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->activate_print();
}
void XttMotif::activate_find( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->activate_find();
}
void XttMotif::activate_findregex( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->activate_findregex();
}
void XttMotif::activate_findnext( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->activate_findnext();
}
void XttMotif::activate_collapse( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->activate_collapse();
}
void XttMotif::activate_openobject( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->activate_openobject();
}
void XttMotif::activate_openplc( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->activate_openplc();
}
void XttMotif::activate_showcrossref( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->xnav->show_crossref();
}
void XttMotif::activate_opengraph( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->activate_opengraph();
}
void XttMotif::activate_collect_insert( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->activate_collect_insert();
}
void XttMotif::activate_collect_show( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->xnav->collect_show();
}
void XttMotif::activate_collect_remove( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->xnav->collect_remove();
}
void XttMotif::activate_collect_clear( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->xnav->collect_clear();
}
void XttMotif::activate_advanceduser( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->activate_advanceduser();
}
void XttMotif::activate_zoom_in( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->activate_zoom_in();
}
void XttMotif::activate_zoom_out( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->activate_zoom_out();
}
void XttMotif::activate_zoom_reset( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->xnav->unzoom();
}
void XttMotif::activate_help( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->activate_help();
}
void XttMotif::activate_help_project( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->activate_help_project();
}
void XttMotif::activate_help_proview( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->activate_help_proview();
}
void XttMotif::create_msg_label( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
((XttMotif *)xtt)->msg_label = w;
}
void XttMotif::create_cmd_prompt( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
((XttMotif *)xtt)->cmd_prompt = w;
}
void XttMotif::create_cmd_input( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
Arg args[2];
XtSetArg (args[0], XmNuserData, xtt);
XtSetValues (w, args, 1);
mrm_TextInit( w, (XtActionProc) valchanged_cmd_input, mrm_eUtility_Xtt);
((XttMotif *)xtt)->cmd_input = w;
}
void XttMotif::create_xnav_form( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
((XttMotif *)xtt)->xnav_form = w;
}
void XttMotif::create_india_label( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
((XttMotif *)xtt)->india_label = w;
}
void XttMotif::create_india_text( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
((XttMotif *)xtt)->india_text = w;
}
void XttMotif::activate_india_ok( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
char *value;
value = XmTextGetString( ((XttMotif *)xtt)->india_text);
XtUnmanageChild( ((XttMotif *)xtt)->india_widget);
(xtt->india_ok_cb)( xtt, value);
}
void XttMotif::activate_india_cancel( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
XtUnmanageChild( ((XttMotif *)xtt)->india_widget);
}
void XttMotif::action_inputfocus( Widget w, XmAnyCallbackStruct *data)
{
Arg args[1];
Xtt *xtt;
XtSetArg (args[0], XmNuserData, &xtt);
XtGetValues (w, args, 1);
if ( mrm_IsIconicState(w))
return;
if ( xtt->xnav) {
if ( ((XttMotif *)xtt)->focustimer.disabled()) {
// printf( "Inputfocus disabled\n");
return;
}
else {
// printf( "Set Inputfocus\n");
}
xtt->xnav->set_inputfocus();
((XttMotif *)xtt)->focustimer.disable( ((XttMotif *)xtt)->toplevel, 400);
}
}
void XttMotif::valchanged_cmd_input( Widget w, XEvent *event, XmAnyCallbackStruct *data)
{
Xtt *xtt;
int sts;
char *text;
Arg args[2];
XtSetArg(args[0], XmNuserData, &xtt);
XtGetValues(w, args, 1);
if ( xtt->input_open)
sts = mrm_TextInput( w, event, (char *)((XttMotif *)xtt)->value_recall, sizeof(((XttMotif *)xtt)->value_recall[0]),
sizeof( ((XttMotif *)xtt)->value_recall)/sizeof(((XttMotif *)xtt)->value_recall[0]),
&((XttMotif *)xtt)->value_current_recall);
else
sts = mrm_TextInput( w, event, (char *)((XttMotif *)xtt)->cmd_recall, sizeof(((XttMotif *)xtt)->cmd_recall[0]),
sizeof( ((XttMotif *)xtt)->cmd_recall)/sizeof(((XttMotif *)xtt)->cmd_recall[0]),
&((XttMotif *)xtt)->cmd_current_recall);
if ( sts) {
text = XmTextGetString( w);
if ( xtt->input_open) {
sts = xtt->xnav->set_attr_value( text);
XtUnmanageChild( w);
xtt->set_prompt( "");
xtt->input_open = 0;
}
else if ( xtt->command_open) {
sts = xtt->xnav->command( text);
XtUnmanageChild( w);
xtt->set_prompt( "");
xtt->command_open = 0;
}
}
}
int main( int argc, char *argv[])
{
int sts;
new XttMotif( argc, argv, &sts);
exit(sts);
}
XttMotif::~XttMotif()
{
}
XttMotif::XttMotif( int argc, char *argv[], int *return_sts) :
Xtt( argc, argv, return_sts),
cmd_current_recall(0), value_current_recall(0)
{
char uid_filename[120] = {"xtt.uid"};
char *uid_filename_p = uid_filename;
Arg args[20];
pwr_tStatus sts;
char title[80];
int i;
XtAppContext app_ctx;
MrmHierarchy s_DRMh;
MrmType dclass;
Widget xtt_widget;
char name[] = "PwR Xtt";
static char translations[] =
"<FocusIn>: xtt_inputfocus()\n";
static XtTranslations compiled_translations = NULL;
static XtActionsRec actions[] =
{
{"xtt_inputfocus", (XtActionProc) action_inputfocus}
};
static MrmRegisterArg reglist[] = {
{ "xtt_ctx", 0 },
{"xtt_activate_exit",(caddr_t)activate_exit },
{"xtt_activate_print",(caddr_t)activate_print },
{"xtt_activate_find",(caddr_t)activate_find },
{"xtt_activate_findregex",(caddr_t)activate_findregex },
{"xtt_activate_findnext",(caddr_t)activate_findnext },
{"xtt_activate_collapse",(caddr_t)activate_collapse },
{"xtt_activate_openobject",(caddr_t)activate_openobject },
{"xtt_activate_openplc",(caddr_t)activate_openplc },
{"xtt_activate_opengraph",(caddr_t)activate_opengraph },
{"xtt_activate_showcrossref",(caddr_t)activate_showcrossref },
{"xtt_activate_change_value",(caddr_t)activate_change_value },
{"xtt_activate_command",(caddr_t)activate_command },
{"xtt_activate_collect_insert",(caddr_t)activate_collect_insert },
{"xtt_activate_collect_show",(caddr_t)activate_collect_show },
{"xtt_activate_collect_remove",(caddr_t)activate_collect_remove },
{"xtt_activate_collect_clear",(caddr_t)activate_collect_clear },
{"xtt_activate_advanceduser",(caddr_t)activate_advanceduser },
{"xtt_activate_zoom_in",(caddr_t)activate_zoom_in },
{"xtt_activate_zoom_out",(caddr_t)activate_zoom_out },
{"xtt_activate_zoom_reset",(caddr_t)activate_zoom_reset },
{"xtt_activate_help",(caddr_t)activate_help },
{"xtt_activate_help_project",(caddr_t)activate_help_project },
{"xtt_activate_help_proview",(caddr_t)activate_help_proview },
{"xtt_create_msg_label",(caddr_t)create_msg_label },
{"xtt_create_cmd_prompt",(caddr_t)create_cmd_prompt },
{"xtt_create_cmd_input",(caddr_t)create_cmd_input },
{"xtt_create_xnav_form",(caddr_t)create_xnav_form },
{"xtt_activate_india_ok",(caddr_t)activate_india_ok },
{"xtt_activate_india_cancel",(caddr_t)activate_india_cancel },
{"xtt_create_india_label",(caddr_t)create_india_label },
{"xtt_create_india_text",(caddr_t)create_india_text }
};
static int reglist_num = (sizeof reglist / sizeof reglist[0]);
// Motif
Lng::get_uid( uid_filename, uid_filename);
MrmInitialize();
strcpy( title, "PwR Xtt");
toplevel = XtVaAppInitialize (
&app_ctx,
"Rt_xtt",
NULL, 0,
&argc, argv,
fbr,
XtNallowShellResize, True,
XtNtitle, title,
XmNmappedWhenManaged, True,
NULL);
reglist[0].value = (caddr_t) this;
if (compiled_translations == NULL)
XtAppAddActions( XtWidgetToApplicationContext(toplevel),
actions, XtNumber(actions));
// Save the context structure in the widget
i = 0;
XtSetArg( args[i], XmNuserData, (unsigned int) this);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);
sts = MrmFetchWidgetOverride( s_DRMh, "xtt_window", toplevel,
name, args, i, &xtt_widget, &dclass);
if (sts != MrmSUCCESS) printf("can't fetch %s\n", name);
sts = MrmFetchWidget(s_DRMh, "input_dialog", toplevel,
&india_widget, &dclass);
if (sts != MrmSUCCESS) printf("can't fetch input dialog\n");
MrmCloseHierarchy(s_DRMh);
if (compiled_translations == NULL)
compiled_translations = XtParseTranslationTable(translations);
XtOverrideTranslations( xtt_widget, compiled_translations);
i = 0;
XtSetArg(args[i],XmNwidth,350);i++;
XtSetArg(args[i],XmNheight,600);i++;
XtSetArg(args[i], XmNdeleteResponse, XmDO_NOTHING);i++;
XtSetValues( toplevel ,args,i);
XtManageChild( xtt_widget);
XtUnmanageChild( cmd_input);
xnav = new XNavMotif( this, xnav_form, "Plant",
&brow_widget, (xnav_sStartMenu *)root_menu,
opplace_str, &sts);
xnav->message_cb = &xtt_message_cb;
xnav->close_cb = &close;
xnav->map_cb = &map;
xnav->change_value_cb = &change_value;
xnav->set_dimension_cb = &set_dimension;
xnav->attach_audio = attach_audio;
// Create help window
CoXHelp *xhelp = new CoXHelpMotif( toplevel, this, xhelp_eUtility_Xtt, &sts);
xhelp->open_URL_cb = open_URL_cb;
CoXHelp::set_default( xhelp);
XtRealizeWidget( toplevel);
wow = new CoWowMotif( toplevel);
if ( !quiet)
wow->DisplayWarranty();
// XmProcessTraversal( xnav->brow_widget, XmTRAVERSE_CURRENT);
// xnav->set_inputfocus();
init_hotkey( app_ctx, toplevel);
// Connect the window manager close-button to exit
flow_AddCloseVMProtocolCb( toplevel,
(XtCallbackProc)activate_exit, this);
if ( xnav->op)
close( this, 0);
timerid = wow->timer_new();
// Start timer to check for qcom events
timerid->add( 1000, qcom_events, this);
xtt_mainloop( app_ctx);
}
/*
* Proview $Id: rt_xtt_motif.h,v 1.1 2007-01-04 08:40:33 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef rt_xtt_motif_h
#define rt_xtt_motif_h
/* rt_xtt_motif.h -- Simple navigator */
#ifndef rt_xtt_main_h
# include "rt_xtt_main.h"
#endif
#ifndef co_wow_motif_h
#include "co_wow_motif.h"
#endif
#ifndef xtt_hotkey_motif_h
#include "xtt_hotkey_motif.h"
#endif
class XttMotif : public Xtt {
public:
Widget parent_wid;
Widget brow_widget;
Widget form_widget;
Widget toplevel;
Widget msg_label;
Widget cmd_prompt;
Widget cmd_input;
Widget xnav_form;
Widget india_widget;
Widget india_label;
Widget india_text;
CoWowFocusTimerMotif focustimer;
hotkeyHandle HotkeyHandle;
char cmd_recall[30][160];
int cmd_current_recall;
char value_recall[30][160];
int value_current_recall;
XttMotif( int argc, char *argv[], int *sts);
~XttMotif();
void message( char severity, char *msg);
void xtt_mainloop (XtAppContext AppCtx);
int init_hotkey( XtAppContext AppCtx, Widget Top);
void open_input_dialog( char *text, char *title,
char *init_text,
void (*ok_cb)( Xtt *, char *));
void set_prompt( char *prompt);
void open_change_value();
static void close( void *ctx, int terminate);
static void set_dimension( void *ctx, int width, int height);
static void map( void *ctx);
static void activate_change_value( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_command( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_exit( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_print( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_find( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_findregex( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_findnext( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_collapse( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_openobject( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_openplc( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_showcrossref( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_opengraph( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_collect_insert( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_collect_show( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_collect_remove( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_collect_clear( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_advanceduser( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_zoom_in( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_zoom_out( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_zoom_reset( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_help( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_help_project( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_help_proview( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void create_msg_label( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void create_cmd_prompt( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void create_cmd_input( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void create_xnav_form( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void create_india_label( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void create_india_text( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_india_ok( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void activate_india_cancel( Widget w, Xtt *xtt, XmAnyCallbackStruct *data);
static void action_inputfocus( Widget w, XmAnyCallbackStruct *data);
static void valchanged_cmd_input( Widget w, XEvent *event, XmAnyCallbackStruct *data);
static void hotkey_Command( Widget w, XKeyEvent* ev, String* av, Cardinal* ac);
static void hotkey_ToggleDig( Widget w, XKeyEvent* ev, String* av, Cardinal* ac);
static void hotkey_SetDig( Widget w, XKeyEvent* ev, String* av, Cardinal* ac);
static void hotkey_ResetDig( Widget w, XKeyEvent* ev, String* av, Cardinal* ac);
};
#endif
ifndef link_rule_mk
link_rule_mk := 1
ifeq ($(export_type),exp)
link = $(ldxx) $(explinkflags) $(domap) -o $(export_exe) \
$(export_obj) $(objects) $(rt_msg_eobjs) \
$(pwr_eobj)/rt_io_user.o -L/usr/X11R6/lib\
-L/opt/gnome/lib \
-lpwr_xtt -lpwr_ge -lpwr_rt -lpwr_co -lpwr_flow -lpwr_glow \
-lpwr_msg_dummy -lImlib -lMrm -lXm -lXpm -lXt -lX11 -lXext -lXp\
-lSM -lICE\
-ldb -lrpcsvc -lpthread -lm -lrt -lasound
else
link = $(ldxx) $(elinkflags) $(domap) -o $(export_exe) \
$(export_obj) $(objects) $(rt_msg_eobjs) \
$(export_obj) $(rt_msg_eobjs) \
$(pwr_eobj)/rt_io_user.o -L/usr/X11R6/lib\
-L/opt/gnome/lib \
-lpwr_xtt -lpwr_ge -lpwr_rt -lpwr_co -lpwr_flow -lpwr_glow \
......@@ -20,4 +10,3 @@ else
-lSM -lICE\
-ldb -lrpcsvc -lpthread -lm -lrt -lasound
endif
endif
/*
* Proview $Id: rt_xtt.cpp,v 1.24 2006-03-31 14:31:34 claes Exp $
* Proview $Id: rt_xtt.cpp,v 1.25 2007-01-04 08:40:17 claes Exp $
* Copyright (C) 2005 SSAB Oxelösund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -17,1086 +17,52 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* rt_xtt.cpp -- Display plant and node hiererachy */
#include "flow_std.h"
/* wb.cpp -- graphical editor */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
extern "C" {
#include "rt_gdh.h"
#include "rt_gdh_msg.h"
#include "rt_ini_event.h"
#include "rt_qcom_msg.h"
#include "co_cdh.h"
#include "co_time.h"
#include "pwr_baseclasses.h"
#include "pwr_nmpsclasses.h"
#include "flow_x.h"
}
#include <Xm/Xm.h>
#include <Xm/XmP.h>
#include <Xm/Text.h>
#include <Mrm/MrmPublic.h>
#include <X11/Intrinsic.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#define XK_MISCELLANY
#include <X11/keysymdef.h>
extern "C" {
#include "xtt_hotkey.h"
#include "pwr.h"
#include "co_dcli.h"
#include "co_mrm_util.h"
}
#include "co_lng.h"
#include "flow.h"
#include "flow_browctx.h"
#include "flow_browapi.h"
#include "flow_browwidget.h"
#include "rt_xtt.h"
#include "rt_trace.h"
#include "xtt_xnav.h"
#include "xtt_item.h"
#include "xtt_url.h"
#include "co_lng.h"
#include "co_xhelp.h"
#include "co_wow.h"
#include "rt_xnav_msg.h"
#include "xtt_focustimer.h"
//
//
//
static void xtt_hotkey_Command( Widget w, XKeyEvent* ev, String* av, Cardinal* ac);
static void xtt_hotkey_ToggleDig( Widget w, XKeyEvent* ev, String* av, Cardinal* ac);
static void xtt_hotkey_SetDig( Widget w, XKeyEvent* ev, String* av, Cardinal* ac);
static void xtt_hotkey_ResetDig( Widget w, XKeyEvent* ev, String* av, Cardinal* ac);
// Static variables
static String fbr[] = {
NULL};
static XtActionsRec HotkeyActions[] = {
{ "Command", (XtActionProc) xtt_hotkey_Command},
{ "ToggleDig", (XtActionProc) xtt_hotkey_ToggleDig},
{ "SetDig", (XtActionProc) xtt_hotkey_SetDig},
{ "ResetDig", (XtActionProc) xtt_hotkey_ResetDig}
};
static xnav_sStartMenu alarm_menu[] = {
{ "Alarm List", xnav_eItemType_Command, menu_ePixmap_List, (void *) "show alarm"},
{ "Event List", xnav_eItemType_Command, menu_ePixmap_List, (void *) "show event"},
{ "Blocked Alarms", xnav_eItemType_Command, menu_ePixmap_List, (void *) "show block"},
{ "Historical List", xnav_eItemType_Command, menu_ePixmap_List, (void *) "show hist"},
{ "", 0, 0, NULL}};
static xnav_sStartMenu nethandler_menu[] = {
{ "Link", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show link"},
{ "Subscription Client", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show subcli"},
{ "Subscription Server", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show subsrv"},
{ "", 0, 0, NULL}};
static xnav_sStartMenu communication_menu[] = {
{ "RemNode", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show remnode"},
{ "RemTrans", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show remtrans"},
{ "", 0, 0, NULL}};
static xnav_sStartMenu logging_menu[] = {
{ "Logging entry 1", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=1"},
{ "Logging entry 2", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=2"},
{ "Logging entry 3", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=3"},
{ "Logging entry 4", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=4"},
{ "Logging entry 5", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=5"},
{ "Logging entry 6", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=6"},
{ "Logging entry 7", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=7"},
{ "Logging entry 8", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=8"},
{ "Logging entry 9", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=9"},
{ "Logging entry 10", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=10"},
{ "", 0, 0, NULL}};
static xnav_sStartMenu system_menu[] = {
{ "Nethandler", xnav_eItemType_Menu, menu_ePixmap_Map, (void *)&nethandler_menu},
{ "Communication", xnav_eItemType_Menu, menu_ePixmap_Map, (void *)&communication_menu},
{ "Device", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show device"},
{ "PlcThread", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show plcthread"},
{ "PlcPgm", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show plcpgm"},
{ "Logging", xnav_eItemType_Menu, menu_ePixmap_Map, (void *)&logging_menu},
{ "System Messages", xnav_eItemType_Command, menu_ePixmap_List, (void *) "open consolelog"},
{ "System Status", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show nodeinfo"},
{ "Nodes", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show nodeobjects"},
{ "Volumes", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show volumes"},
{ "", 0, 0, NULL}};
static xnav_sStartMenu root_menu[] = {
{ "Database", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show database"},
{ "Alarm", xnav_eItemType_Menu, menu_ePixmap_Map, (void *)&alarm_menu},
{ "Store", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show file"},
{ "System", xnav_eItemType_Menu, menu_ePixmap_Map, (void *)&system_menu},
{ "Close", xnav_eItemType_Command, menu_ePixmap_Leaf, (void *) "exit"},
{ "", 0, 0, NULL}};
typedef struct xtt_sCtx {
void *parent_ctx;
Widget parent_wid;
char name[80];
Widget brow_widget;
Widget form_widget;
Widget toplevel;
XNav *xnav;
void *root_item;
Widget msg_label;
Widget cmd_prompt;
Widget cmd_input;
Widget xnav_form;
int input_open;
int command_open;
char cmd_recall[30][160];
int cmd_current_recall;
char value_recall[30][160];
int value_current_recall;
Widget india_widget;
Widget india_label;
Widget india_text;
void (*india_ok_cb)( struct xtt_sCtx *, char *);
FocusTimer focustimer;
} *xtt_tCtx;
static Xtt *hot_xtt;
static hotkeyHandle HotkeyHandle = NULL;
static void xtt_message( void *ctx, char severity, char *message);
static void xtt_open_change_value( Xtt *xtt);
static void xtt_valchanged_cmd_input( Widget w, XEvent *event);
static void xtt_hotkey_Command( Widget w, XKeyEvent* ev, String* av, Cardinal* ac)
{
pwr_tCmd cmd;
if (*ac == 0)
return;
strcpy( cmd, av[0]);
if ( hot_xtt->xnav)
hot_xtt->xnav->command( cmd);
}
static void xtt_hotkey_ToggleDig( Widget w, XKeyEvent* ev, String* av, Cardinal* ac)
{
pwr_tBoolean value;
pwr_tAName name;
int sts;
if (ev->type != KeyPress)
return;
if (*ac == 0)
return;
dcli_remove_blank( name, av[0]);
if ( !strchr(name, '.'))
strcat( name, ".ActualValue");
sts = gdh_GetObjectInfo( name, &value, sizeof(value));
if (EVEN(sts))
{
printf("rt_xtt hotkey: ToggleDig. Can't get %s\n", name);
return;
}
value = !value;
sts = gdh_SetObjectInfo( name, &value, sizeof(value));
if (EVEN(sts))
printf("rt_xtt hotkey: ToggleDig. Can't get %s\n", name);
}
static void xtt_hotkey_SetDig( Widget w, XKeyEvent* ev, String* av, Cardinal* ac)
{
pwr_tBoolean value = 1;
pwr_tAName name;
int sts;
if (ev->type != KeyPress)
return;
if (*ac == 0)
return;
dcli_remove_blank( name, av[0]);
if ( !strchr(name, '.'))
strcat( name, ".ActualValue");
sts = gdh_SetObjectInfo( name, &value, sizeof(value));
if (EVEN(sts))
printf("rt_xtt hotkey: SetDig. Can't get %s\n", name);
}
static void xtt_hotkey_ResetDig( Widget w, XKeyEvent* ev, String* av, Cardinal* ac)
{
pwr_tBoolean value = 0;
pwr_tAName name;
int sts;
if (ev->type != KeyPress)
return;
if (*ac == 0)
return;
dcli_remove_blank( name, av[0]);
if ( !strchr(name, '.'))
strcat( name, ".ActualValue");
sts = gdh_SetObjectInfo( name, &value, sizeof(value));
if (EVEN(sts))
printf("rt_xtt hotkey: SetDig. Can't get %s\n", name);
}
static void xtt_open_URL_cb( void *ctx, char *url)
{
xnav_open_URL( url);
}
static void xtt_qcom_events( Xtt *xtt)
{
char mp[2000];
qcom_sQid qid = qcom_cNQid;
qcom_sGet get;
int swap = 0;
pwr_tStatus sts = 1;
while ( ODD(sts)) {
get.maxSize = sizeof(mp);
get.data = mp;
qcom_Get( &sts, &xtt->queid, &get, 0);
if ( !(sts == QCOM__TMO || sts == QCOM__QEMPTY)) {
ini_mEvent new_event;
qcom_sEvent *ep = (qcom_sEvent*) get.data;
new_event.m = ep->mask;
if (new_event.b.oldPlcStop && !swap) {
swap = 1;
xtt->xnav->swap(0);
} else if (new_event.b.swapDone && swap) {
swap = 0;
xtt->xnav->swap(1);
} else if (new_event.b.terminate) {
exit(0);
}
}
}
xtt->timerid = XtAppAddTimeOut(
XtWidgetToApplicationContext(xtt->toplevel), 1000,
(XtTimerCallbackProc)xtt_qcom_events, xtt);
}
static void xtt_mainloop (XtAppContext AppCtx, Xtt *xtt)
{
XEvent Event;
for (;;)
{
XtAppNextEvent (AppCtx, &Event);
if (Event.type != KeyPress ||
TkSUCCESS != hotkey_Process(HotkeyHandle, &Event))
XtDispatchEvent (&Event);
}
}
static int xtt_init_hotkey( XtAppContext AppCtx,
Widget Top)
{
hotkeySTATUS HotkeySts;
XtAppAddActions (AppCtx, HotkeyActions, XtNumber(HotkeyActions));
HotkeySts = hotkey_Initialize (Top, &HotkeyHandle);
switch ( HotkeySts )
{
case TkERROR :
puts ("Xtt: Failed to bind hotkey(s)");
break;
case TkNO_BINDINGS :
puts ("OpWin: No hotkey resource found in resource db");
break;
case TkPARSE_ERROR :
puts ("OpWin: Syntax error in hotkey bindings");
}
return 1;
}
static void xtt_findregex_ok( Xtt *xtt, char *search_str)
{
int sts;
sts = xtt->xnav->search( search_str, 1);
if ( EVEN(sts))
xtt_message( xtt, 'E', xtt->xnav->get_message( sts));
}
static void xtt_find_ok( Xtt *xtt, char *search_str)
{
int sts;
sts = xtt->xnav->search( search_str, 0);
if ( EVEN(sts))
xtt_message( xtt, 'E', xtt->xnav->get_message( sts));
}
static void xtt_open_input_dialog( Xtt *xtt, char *text, char *title,
char *init_text,
void (*ok_cb)( Xtt *, char *))
{
Arg args[10];
int i;
XmString cstr;
i = 0;
XtSetArg(args[0], XmNlabelString,
cstr=XmStringCreateLtoR( text, "ISO8859-1") ); i++;
XtSetValues( xtt->india_label, args, i);
XmStringFree( cstr);
i = 0;
XtSetArg(args[0], XmNdialogTitle,
cstr=XmStringCreateLtoR( title, "ISO8859-1") ); i++;
XtSetValues( xtt->india_widget, args, i);
XmStringFree( cstr);
XmTextSetString( xtt->india_text, init_text);
XtManageChild( xtt->india_widget);
XmProcessTraversal( xtt->india_text, XmTRAVERSE_CURRENT);
xtt->india_ok_cb = ok_cb;
}
static void xtt_message( void *ctx, char severity, char *message)
{
Xtt *xtt = (Xtt *) ctx;
Arg args[2];
XmString cstr;
cstr=XmStringCreateLtoR( message, "ISO8859-1");
XtSetArg(args[0],XmNlabelString, cstr);
XtSetValues( xtt->msg_label, args, 1);
XmStringFree( cstr);
}
static void xtt_close_ok( void *ctx, void *data)
{
Xtt *xtt = (Xtt *) ctx;
delete xtt->xnav;
exit(0);
}
static void xtt_close( void *ctx, int terminate)
{
Xtt *xtt = (Xtt *) ctx;
if ( terminate) {
wow_DisplayQuestion( xtt, xtt->toplevel, "Confirm",
"Do you want to close", xtt_close_ok, 0, 0);
// delete xtt->xnav;
// exit(0);
}
else {
xtt->xnav->displayed = 0;
flow_UnmapWidget( xtt->toplevel);
}
}
static void xtt_set_dimension( void *ctx, int width, int height)
{
Xtt *xtt = (Xtt *) ctx;
Arg args[2];
int i = 0;
if ( width) {
XtSetArg( args[i], XmNwidth, width);i++;
}
if ( height) {
XtSetArg( args[i], XmNheight, height);i++;
}
XtSetValues( xtt->toplevel, args,i);
}
static void xtt_map( void *ctx)
{
Xtt *xtt = (Xtt *) ctx;
if ( !xtt->xnav->displayed)
{
flow_MapWidget( xtt->toplevel);
xtt->xnav->displayed = 1;
}
else
xtt->xnav->pop();
}
static void xtt_change_value( void *ctx)
{
Xtt *xtt = (Xtt *) ctx;
xtt_open_change_value( xtt);
}
static void xtt_set_prompt( Xtt *xtt, char *prompt)
{
Arg args[1];
XmString cstr;
cstr=XmStringCreateLtoR( prompt, "ISO8859-1");
XtSetArg(args[0],XmNlabelString, cstr);
XtSetValues( xtt->cmd_prompt, args, 1);
XmStringFree( cstr);
}
static void xtt_open_change_value( Xtt *xtt)
{
Arg args[1];
int sts;
if ( xtt->input_open)
{
XtUnmanageChild( xtt->cmd_input);
xtt_set_prompt( xtt, "");
xtt->input_open = 0;
return;
}
sts = xtt->xnav->check_attr_value();
if ( EVEN(sts))
{
xtt_message( xtt, 'E', XNav::get_message(sts));
return;
}
if ( xtt->command_open)
xtt->command_open = 0;
else
XtManageChild( xtt->cmd_input);
xtt_message( xtt, ' ', "");
XtSetKeyboardFocus( xtt->toplevel, xtt->cmd_input);
XtSetArg(args[0],XmNvalue, "");
XtSetValues( xtt->cmd_input, args, 1);
xtt_set_prompt( xtt, Lng::translate("value >"));
xtt->input_open = 1;
}
//
// Callbackfunctions from menu entries
//
static void xtt_activate_change_value( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt_open_change_value( xtt);
}
static void xtt_activate_command( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
Arg args[1];
if ( xtt->command_open)
{
XtUnmanageChild( xtt->cmd_input);
xtt_set_prompt( xtt, "");
xtt->command_open = 0;
return;
}
if ( xtt->input_open)
xtt->input_open = 0;
else
XtManageChild( xtt->cmd_input);
xtt_message( xtt, ' ', "");
XtSetKeyboardFocus( xtt->toplevel, xtt->cmd_input);
XtSetArg(args[0],XmNvalue, "");
XtSetValues( xtt->cmd_input, args, 1);
xtt_set_prompt( xtt, "xtt >");
xtt->command_open = 1;
}
static void xtt_activate_exit( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt_close( xtt, xtt->xnav->op ? 0 : 1);
}
static void xtt_activate_print( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
pwr_tFileName filename;
pwr_tCmd cmd;
dcli_translate_filename( filename, "$pwrp_tmp/xnav.ps");
xtt->xnav->print( filename);
sprintf( cmd, "$pwr_exe/rt_print.sh %s", filename);
system(cmd);
}
static void xtt_activate_find( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt_open_input_dialog( xtt, "Search string", "Find object",
"", &xtt_find_ok);
}
static void xtt_activate_findregex( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt_open_input_dialog( xtt, "Search string", "Find regular expression",
"", &xtt_findregex_ok);
}
static void xtt_activate_findnext( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
int main( int argc, char *argv[])
{
int sts;
sts = xtt->xnav->search_next();
if ( EVEN(sts))
xtt_message( xtt, 'E', xtt->xnav->get_message( sts));
}
static void xtt_activate_collapse( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->xnav->brow_push_all();
}
static void xtt_activate_openobject( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
int sts;
int is_attr;
pwr_sAttrRef attrref;
sts = xtt->xnav->get_select( &attrref, &is_attr);
if ( ODD(sts))
xtt->xnav->open_object( &attrref);
}
static void xtt_activate_openplc( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->xnav->start_trace_selected();
}
static void xtt_activate_showcrossref( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->xnav->show_crossref();
}
static void xtt_activate_opengraph( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
int sts;
pwr_tClassId classid;
pwr_tAName name;
pwr_tAName vname;
pwr_tFileName filename;
int is_attr;
pwr_sAttrRef attrref;
pwr_tCmd cmd;
sts = xtt->xnav->get_select( &attrref, &is_attr);
if ( EVEN(sts))
{
// If collect brow open collect graph
if ( xtt->xnav->brow->ctx == xtt->xnav->collect_brow->ctx)
{
sprintf( cmd, "open graph /collect");
xtt->xnav->command( cmd);
}
return;
}
sts = gdh_AttrrefToName( &attrref, name, sizeof(name), cdh_mNName);
if ( EVEN(sts)) return;
sts = gdh_AttrrefToName( &attrref, vname, sizeof(vname),
cdh_mName_volumeStrict);
if ( EVEN(sts)) return;
sts = gdh_GetAttrRefTid( &attrref, &classid);
if ( EVEN(sts)) return;
if ( cdh_tidIsCid( classid)) {
if ( classid == pwr_cClass_DsTrend || classid == pwr_cClass_PlotGroup) {
// Open trend
sprintf( cmd, "open trend /name=%s /title=\"%s\"", vname, name);
xtt->xnav->command( cmd);
return;
}
sprintf( cmd, "open graph /class/inst=%s/name=\"%s\"", vname, name);
xtt->xnav->command( cmd);
}
else {
switch( classid) {
case pwr_eType_Float32:
sprintf( filename, "pwr_exe:pwr_t_float32.pwg");
break;
case pwr_eType_Int32:
sprintf( filename, "pwr_exe:pwr_t_int32.pwg");
break;
case pwr_eType_Boolean:
sprintf( filename, "pwr_exe:pwr_t_boolean.pwg");
break;
default:
xtt_message( xtt, 'E', "No graph for this attribute type");
return;
}
sprintf( cmd, "open graph %s/inst=%s/name=\"%s\"", filename, vname, name);
xtt->xnav->command( cmd);
}
}
static void xtt_activate_collect_insert( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
pwr_sAttrRef attrref;
int is_attr;
int sts;
sts = xtt->xnav->get_select( &attrref, &is_attr);
if ( ODD(sts))
xtt->xnav->collect_insert( &attrref);
}
static void xtt_activate_collect_show( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->xnav->collect_show();
}
static void xtt_activate_collect_remove( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->xnav->collect_remove();
}
static void xtt_activate_collect_clear( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->xnav->collect_clear();
}
static void xtt_activate_advanceduser( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
char cmd[80];
strcpy( cmd, "set advanceduser");
xtt->xnav->command( cmd);
}
static void xtt_activate_zoom_in( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
double zoom_factor;
xtt->xnav->get_zoom( &zoom_factor);
if ( zoom_factor > 40)
return;
xtt->xnav->zoom( 1.18);
}
static void xtt_activate_zoom_out( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
double zoom_factor;
xtt->xnav->get_zoom( &zoom_factor);
if ( zoom_factor < 15)
return;
xtt->xnav->zoom( 1.0 / 1.18);
}
static void xtt_activate_zoom_reset( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->xnav->unzoom();
}
static void xtt_activate_help( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
CoXHelp::dhelp("overview", "", navh_eHelpFile_Base, NULL, 0);
}
static void xtt_activate_help_project( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
CoXHelp::dhelp("index", "", navh_eHelpFile_Project, NULL, 0);
}
static void xtt_activate_help_proview( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
CoXHelp::dhelp( "version", "", navh_eHelpFile_Other, "$pwr_exe/xtt_version_help.dat", 0);
}
static void xtt_create_msg_label( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->msg_label = w;
}
static void xtt_create_cmd_prompt( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->cmd_prompt = w;
}
static void xtt_create_cmd_input( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
Arg args[2];
XtSetArg (args[0], XmNuserData, xtt);
XtSetValues (w, args, 1);
mrm_TextInit( w, (XtActionProc) xtt_valchanged_cmd_input, mrm_eUtility_Xtt);
xtt->cmd_input = w;
}
static void xtt_create_xnav_form( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->xnav_form = w;
}
static void xtt_create_india_label( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->india_label = w;
}
static void xtt_create_india_text( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
xtt->india_text = w;
}
static void xtt_activate_india_ok( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
char *value;
value = XmTextGetString( xtt->india_text);
XtUnmanageChild( xtt->india_widget);
(xtt->india_ok_cb)( xtt, value);
}
static void xtt_activate_india_cancel( Widget w, Xtt *xtt, XmAnyCallbackStruct *data)
{
XtUnmanageChild( xtt->india_widget);
}
static void xtt_action_inputfocus( Widget w, XmAnyCallbackStruct *data)
{
Arg args[1];
Xtt *xtt;
XtSetArg (args[0], XmNuserData, &xtt);
XtGetValues (w, args, 1);
if ( mrm_IsIconicState(w))
return;
if ( xtt->xnav) {
if ( xtt->focustimer.disabled()) {
// printf( "Inputfocus disabled\n");
return;
}
else {
// printf( "Set Inputfocus\n");
}
xtt->xnav->set_inputfocus();
xtt->focustimer.disable( xtt->toplevel, 400);
}
}
static void xtt_valchanged_cmd_input( Widget w, XEvent *event)
{
Xtt *xtt;
int sts;
char *text;
Arg args[2];
XtSetArg(args[0], XmNuserData, &xtt);
XtGetValues(w, args, 1);
if ( xtt->input_open)
sts = mrm_TextInput( w, event, (char *)xtt->value_recall, sizeof(xtt->value_recall[0]),
sizeof( xtt->value_recall)/sizeof(xtt->value_recall[0]),
&xtt->value_current_recall);
else
sts = mrm_TextInput( w, event, (char *)xtt->cmd_recall, sizeof(xtt->cmd_recall[0]),
sizeof( xtt->cmd_recall)/sizeof(xtt->cmd_recall[0]),
&xtt->cmd_current_recall);
if ( sts)
{
text = XmTextGetString( w);
if ( xtt->input_open)
{
sts = xtt->xnav->set_attr_value( text);
XtUnmanageChild( w);
xtt_set_prompt( xtt, "");
xtt->input_open = 0;
}
else if ( xtt->command_open)
{
sts = xtt->xnav->command( text);
XtUnmanageChild( w);
xtt_set_prompt( xtt, "");
xtt->command_open = 0;
}
}
}
int main( int argc, char *argv[])
{
int sts;
new Xtt( argc, argv, &sts);
exit(sts);
}
Xtt::Xtt( int argc, char *argv[], int *return_sts) :
root_item(0), input_open(0), command_open(0), cmd_current_recall(0),
value_current_recall(0), india_ok_cb(0)
{
char uid_filename[120] = {"xtt.uid"};
char *uid_filename_p = uid_filename;
Arg args[20];
pwr_tStatus sts;
char title[80];
int i;
XtAppContext app_ctx;
MrmHierarchy s_DRMh;
MrmType dclass;
Widget xtt_widget;
char name[] = "PwR Xtt";
static char translations[] =
"<FocusIn>: xtt_inputfocus()\n";
static XtTranslations compiled_translations = NULL;
static XtActionsRec actions[] =
{
{"xtt_inputfocus", (XtActionProc) xtt_action_inputfocus}
};
static MrmRegisterArg reglist[] = {
{ "xtt_ctx", 0 },
{"xtt_activate_exit",(caddr_t)xtt_activate_exit },
{"xtt_activate_print",(caddr_t)xtt_activate_print },
{"xtt_activate_find",(caddr_t)xtt_activate_find },
{"xtt_activate_findregex",(caddr_t)xtt_activate_findregex },
{"xtt_activate_findnext",(caddr_t)xtt_activate_findnext },
{"xtt_activate_collapse",(caddr_t)xtt_activate_collapse },
{"xtt_activate_openobject",(caddr_t)xtt_activate_openobject },
{"xtt_activate_openplc",(caddr_t)xtt_activate_openplc },
{"xtt_activate_opengraph",(caddr_t)xtt_activate_opengraph },
{"xtt_activate_showcrossref",(caddr_t)xtt_activate_showcrossref },
{"xtt_activate_change_value",(caddr_t)xtt_activate_change_value },
{"xtt_activate_command",(caddr_t)xtt_activate_command },
{"xtt_activate_collect_insert",(caddr_t)xtt_activate_collect_insert },
{"xtt_activate_collect_show",(caddr_t)xtt_activate_collect_show },
{"xtt_activate_collect_remove",(caddr_t)xtt_activate_collect_remove },
{"xtt_activate_collect_clear",(caddr_t)xtt_activate_collect_clear },
{"xtt_activate_advanceduser",(caddr_t)xtt_activate_advanceduser },
{"xtt_activate_zoom_in",(caddr_t)xtt_activate_zoom_in },
{"xtt_activate_zoom_out",(caddr_t)xtt_activate_zoom_out },
{"xtt_activate_zoom_reset",(caddr_t)xtt_activate_zoom_reset },
{"xtt_activate_help",(caddr_t)xtt_activate_help },
{"xtt_activate_help_project",(caddr_t)xtt_activate_help_project },
{"xtt_activate_help_proview",(caddr_t)xtt_activate_help_proview },
{"xtt_create_msg_label",(caddr_t)xtt_create_msg_label },
{"xtt_create_cmd_prompt",(caddr_t)xtt_create_cmd_prompt },
{"xtt_create_cmd_input",(caddr_t)xtt_create_cmd_input },
{"xtt_create_xnav_form",(caddr_t)xtt_create_xnav_form },
{"xtt_activate_india_ok",(caddr_t)xtt_activate_india_ok },
{"xtt_activate_india_cancel",(caddr_t)xtt_activate_india_cancel },
{"xtt_create_india_label",(caddr_t)xtt_create_india_label },
{"xtt_create_india_text",(caddr_t)xtt_create_india_text }
};
static int reglist_num = (sizeof reglist / sizeof reglist[0]);
char opplace_str[80] = "";
int opplace_found = 0;
pwr_tObjid op_objid;
qcom_sQattr qAttr;
qcom_sQid qini;
int quiet = 0;
int attach_audio = 0;
hot_xtt = this;
errh_Init("rt_xtt", errh_eNAnix);
sts = gdh_Init("rt_xtt");
if (EVEN(sts)) {
*return_sts = sts;
return;
}
if (!qcom_Init(&sts, 0, "rt_xtt")) {
*return_sts = sts;
return;
}
qAttr.type = qcom_eQtype_private;
qAttr.quota = 100;
if (!qcom_CreateQ(&sts, &queid, &qAttr, "events")) {
*return_sts = sts;
return;
}
qini = qcom_cQini;
if (!qcom_Bind(&sts, &queid, &qini)) {
*return_sts = sts;
return;
}
// Set language
for ( i = 1; i < argc; i++) {
if ( strcmp( argv[i], "-l") == 0 && i + 1 < argc)
Lng::set( argv[i+1]);
else if ( strcmp( argv[i], "-q") == 0) {
wow_HideWarranty();
quiet = 1;
}
else if ( strcmp( argv[i], "-a") == 0)
attach_audio = 1;
else if ( strcmp( argv[i], "-u") == 0 && i + 1 < argc) {
char oname[80];
strcpy( opplace_str, argv[i+1]);
int i;
int found = 0;
char wmg[80];
pwr_tFileName file;
if ( argc > 1) {
sts = gdh_GetClassList( pwr_cClass_OpPlace, &op_objid);
while (ODD(sts)) {
sts = gdh_ObjidToName( op_objid, oname, sizeof(oname), cdh_mName_object);
if (ODD(sts) && cdh_NoCaseStrcmp( oname, opplace_str) == 0) {
sts = gdh_ObjidToName( op_objid, opplace_str, sizeof(opplace_str), cdh_mNName);
opplace_found = 1;
break;
for ( i = 1; i < argc; i++) {
if ( strcmp( argv[i], "-f") == 0) {
if ( i+1 >= argc) {
printf( "rt_xtt: Syntax error\n");
exit(0);
}
sts = gdh_GetNextObject( op_objid, &op_objid);
}
if ( !opplace_found) {
printf("** Unable to find opplace\n");
exit(sts);
found = 1;
strcpy( wmg, argv[i+1]);
i++;
}
}
}
if ( !found) {
struct stat st;
if ( !opplace_found && argc >= 2 && strncmp( argv[1], "-", 1) != 0)
{
pwr_tClassId op_class;
// First argument is opplace object
strcpy( opplace_str, argv[1]);
sts = gdh_NameToObjid( opplace_str, &op_objid);
if ( EVEN(sts))
{
printf("** Unable to find opplace\n");
exit(sts);
}
sts = gdh_GetObjectClass( op_objid, &op_class);
if ( EVEN(sts)) exit( sts);
if ( op_class != pwr_cClass_OpPlace) {
printf("** Error in opplace object class\n");
exit(sts);
}
opplace_found = 1;
strcpy( file, "$pwr_exe/rt_xtt_gtk");
dcli_translate_filename( file, file);
if ( stat( file, &st) == 0)
strcpy( wmg, "gtk");
else
strcpy( wmg, "motif");
}
// Motif
Lng::get_uid( uid_filename, uid_filename);
MrmInitialize();
strcpy( title, "PwR Xtt");
toplevel = XtVaAppInitialize (
&app_ctx,
"Rt_xtt",
NULL, 0,
&argc, argv,
fbr,
XtNallowShellResize, True,
XtNtitle, title,
XmNmappedWhenManaged, True,
NULL);
reglist[0].value = (caddr_t) this;
if (compiled_translations == NULL)
XtAppAddActions( XtWidgetToApplicationContext(toplevel),
actions, XtNumber(actions));
// Save the context structure in the widget
i = 0;
XtSetArg( args[i], XmNuserData, (unsigned int) this);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);
sts = MrmFetchWidgetOverride( s_DRMh, "xtt_window", toplevel,
name, args, i, &xtt_widget, &dclass);
if (sts != MrmSUCCESS) printf("can't fetch %s\n", name);
sts = MrmFetchWidget(s_DRMh, "input_dialog", toplevel,
&india_widget, &dclass);
if (sts != MrmSUCCESS) printf("can't fetch input dialog\n");
MrmCloseHierarchy(s_DRMh);
strcpy( file, argv[0]);
strcat( file, "_");
strcat( file, wmg);
if (compiled_translations == NULL)
compiled_translations = XtParseTranslationTable(translations);
XtOverrideTranslations( xtt_widget, compiled_translations);
i = 0;
XtSetArg(args[i],XmNwidth,350);i++;
XtSetArg(args[i],XmNheight,600);i++;
XtSetArg(args[i], XmNdeleteResponse, XmDO_NOTHING);i++;
XtSetValues( toplevel ,args,i);
XtManageChild( xtt_widget);
XtUnmanageChild( cmd_input);
xnav = new XNav( this, xnav_form, "Plant",
&brow_widget, (xnav_sStartMenu *)root_menu,
opplace_str, &sts);
xnav->message_cb = &xtt_message;
xnav->close_cb = &xtt_close;
xnav->map_cb = &xtt_map;
xnav->change_value_cb = &xtt_change_value;
xnav->set_dimension_cb = &xtt_set_dimension;
xnav->attach_audio = attach_audio;
// Create help window
CoXHelp *xhelp = new CoXHelp( toplevel, this, xhelp_eUtility_Xtt, &sts);
xhelp->open_URL_cb = xtt_open_URL_cb;
CoXHelp::set_default( xhelp);
XtRealizeWidget( toplevel);
if ( !quiet)
wow_DisplayWarranty( toplevel);
// XmProcessTraversal( xnav->brow_widget, XmTRAVERSE_CURRENT);
// xnav->set_inputfocus();
xtt_init_hotkey( app_ctx, toplevel);
// Connect the window manager close-button to exit
flow_AddCloseVMProtocolCb( toplevel,
(XtCallbackProc)xtt_activate_exit, this);
if ( xnav->op)
xtt_close( this, 0);
// Start timer to check for qcom events
timerid = XtAppAddTimeOut(
XtWidgetToApplicationContext(toplevel), 1000,
(XtTimerCallbackProc)xtt_qcom_events, this);
xtt_mainloop( app_ctx, this);
execvp( file, argv);
}
/*
* Proview $Id: rt_xtt_main.h,v 1.1 2007-01-04 08:40:17 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef rt_xtt_main_h
#define rt_xtt_main_h
/* rt_xtt_main.h -- Simple navigator */
#ifndef pwr_h
# include "pwr.h"
#endif
#ifndef flow_h
#include "flow.h"
#endif
#ifndef flow_browctx_h
#include "flow_browapi.h"
#endif
#ifndef rt_qcom_h
#include "rt_qcom.h"
#endif
#ifndef xtt_xnav_h
#include "xtt_xnav.h"
#endif
class CoWow;
class CoWowTimer;
class Xtt {
public:
void *parent_ctx;
char name[80];
XNav *xnav;
void *root_item;
int input_open;
int command_open;
void (*india_ok_cb)( Xtt *, char *);
qcom_sQid queid;
CoWowTimer *timerid;
CoWow *wow;
pwr_tOName opplace_str;
int quiet;
int attach_audio;
Xtt( int argc, char *argv[], int *return_sts);
virtual ~Xtt() {}
virtual void message( char severity, char *msg) {}
virtual void open_input_dialog( char *text, char *title,
char *init_text,
void (*ok_cb)( Xtt *, char *)) {}
virtual void set_prompt( char *prompt) {}
virtual void open_change_value() {}
void hotkey_activate_command( char *cmdp);
static void hotkey_activate_toggledig( char *namep);
static void hotkey_activate_setdig( char *namep);
static void hotkey_activate_resetdig( char *namep);
static void open_URL_cb( void *ctx, char *url);
static void qcom_events( void *data);
static void findregex_ok( Xtt *xtt, char *search_str);
static void find_ok( Xtt *xtt, char *search_str);
static void xtt_message_cb( void *ctx, char severity, char *msg);
static void close_ok( void *ctx, void *data);
static void change_value( void *ctx);
void activate_print();
void activate_find();
void activate_findregex();
void activate_findnext();
void activate_collapse();
void activate_openobject();
void activate_openplc();
void activate_opengraph();
void activate_collect_insert();
void activate_advanceduser();
void activate_zoom_in();
void activate_zoom_out();
void activate_help();
void activate_help_project();
void activate_help_proview();
static Xtt *hot_xtt;
static xnav_sStartMenu alarm_menu[];
static xnav_sStartMenu nethandler_menu[];
static xnav_sStartMenu communication_menu[];
static xnav_sStartMenu logging_menu[];
static xnav_sStartMenu system_menu[];
static xnav_sStartMenu root_menu[];
};
#endif
/*
* Proview $Id: xtt_main.cpp,v 1.1 2007-01-04 08:40:17 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* rt_xtt.cpp -- Display plant and node hiererachy */
#include "flow_std.h"
#include <stdio.h>
#include <stdlib.h>
#include "pwr.h"
#include "pwr_baseclasses.h"
#include "rt_gdh.h"
#include "rt_gdh_msg.h"
#include "rt_ini_event.h"
#include "rt_qcom_msg.h"
#include "co_cdh.h"
#include "co_time.h"
#include "co_dcli.h"
#include "co_lng.h"
#include "flow.h"
#include "flow_browctx.h"
#include "flow_browapi.h"
#include "rt_xtt_main.h"
#include "rt_trace.h"
#include "xtt_xnav.h"
#include "xtt_item.h"
#include "xtt_url.h"
#include "co_lng.h"
#include "co_xhelp.h"
#include "co_wow.h"
#include "rt_xnav_msg.h"
// Static variables
Xtt *Xtt::hot_xtt = 0;
xnav_sStartMenu Xtt::alarm_menu[] = {
{ "Alarm List", xnav_eItemType_Command, menu_ePixmap_List, (void *) "show alarm"},
{ "Event List", xnav_eItemType_Command, menu_ePixmap_List, (void *) "show event"},
{ "Blocked Alarms", xnav_eItemType_Command, menu_ePixmap_List, (void *) "show block"},
{ "Historical List", xnav_eItemType_Command, menu_ePixmap_List, (void *) "show hist"},
{ "", 0, 0, NULL}};
xnav_sStartMenu Xtt::nethandler_menu[] = {
{ "Link", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show link"},
{ "Subscription Client", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show subcli"},
{ "Subscription Server", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show subsrv"},
{ "", 0, 0, NULL}};
xnav_sStartMenu Xtt::communication_menu[] = {
{ "RemNode", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show remnode"},
{ "RemTrans", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show remtrans"},
{ "", 0, 0, NULL}};
xnav_sStartMenu Xtt::logging_menu[] = {
{ "Logging entry 1", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=1"},
{ "Logging entry 2", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=2"},
{ "Logging entry 3", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=3"},
{ "Logging entry 4", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=4"},
{ "Logging entry 5", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=5"},
{ "Logging entry 6", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=6"},
{ "Logging entry 7", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=7"},
{ "Logging entry 8", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=8"},
{ "Logging entry 9", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=9"},
{ "Logging entry 10", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show logging/entry=10"},
{ "", 0, 0, NULL}};
xnav_sStartMenu Xtt::system_menu[] = {
{ "Nethandler", xnav_eItemType_Menu, menu_ePixmap_Map, (void *)&Xtt::nethandler_menu},
{ "Communication", xnav_eItemType_Menu, menu_ePixmap_Map, (void *)&Xtt::communication_menu},
{ "Device", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show device"},
{ "PlcThread", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show plcthread"},
{ "PlcPgm", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show plcpgm"},
{ "Logging", xnav_eItemType_Menu, menu_ePixmap_Map, (void *)&Xtt::logging_menu},
{ "System Messages", xnav_eItemType_Command, menu_ePixmap_List, (void *) "open consolelog"},
{ "System Status", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show nodeinfo"},
{ "Nodes", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show nodeobjects"},
{ "Volumes", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show volumes"},
{ "", 0, 0, NULL}};
xnav_sStartMenu Xtt::root_menu[] = {
{ "Database", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show database"},
{ "Alarm", xnav_eItemType_Menu, menu_ePixmap_Map, (void *)&Xtt::alarm_menu},
{ "Store", xnav_eItemType_Command, menu_ePixmap_Map, (void *) "show file"},
{ "System", xnav_eItemType_Menu, menu_ePixmap_Map, (void *)&Xtt::system_menu},
{ "Close", xnav_eItemType_Command, menu_ePixmap_Leaf, (void *) "exit"},
{ "", 0, 0, NULL}};
void Xtt::hotkey_activate_command( char *cmdp)
{
pwr_tCmd cmd;
strcpy( cmd, cmdp);
if ( xnav)
xnav->command( cmd);
}
void Xtt::hotkey_activate_toggledig( char *namep)
{
pwr_tBoolean value;
pwr_tAName name;
int sts;
dcli_remove_blank( name, namep);
if ( !strchr(name, '.'))
strcat( name, ".ActualValue");
sts = gdh_GetObjectInfo( name, &value, sizeof(value));
if (EVEN(sts)) {
printf("rt_xtt hotkey: ToggleDig. Can't get %s\n", name);
return;
}
value = !value;
sts = gdh_SetObjectInfo( name, &value, sizeof(value));
if (EVEN(sts))
printf("rt_xtt hotkey: ToggleDig. Can't get %s\n", name);
}
void Xtt::hotkey_activate_setdig( char *namep)
{
pwr_tBoolean value = 1;
pwr_tAName name;
int sts;
dcli_remove_blank( name, namep);
if ( !strchr(name, '.'))
strcat( name, ".ActualValue");
sts = gdh_SetObjectInfo( name, &value, sizeof(value));
if (EVEN(sts))
printf("rt_xtt hotkey: SetDig. Can't get %s\n", name);
}
void Xtt::hotkey_activate_resetdig( char *namep)
{
pwr_tBoolean value = 0;
pwr_tAName name;
int sts;
dcli_remove_blank( name, namep);
if ( !strchr(name, '.'))
strcat( name, ".ActualValue");
sts = gdh_SetObjectInfo( name, &value, sizeof(value));
if (EVEN(sts))
printf("rt_xtt hotkey: SetDig. Can't get %s\n", name);
}
void Xtt::open_URL_cb( void *ctx, char *url)
{
xnav_open_URL( url);
}
void Xtt::qcom_events( void *data)
{
Xtt *xtt = (Xtt *)data;
char mp[2000];
qcom_sQid qid = qcom_cNQid;
qcom_sGet get;
int swap = 0;
pwr_tStatus sts = 1;
while ( ODD(sts)) {
get.maxSize = sizeof(mp);
get.data = mp;
qcom_Get( &sts, &xtt->queid, &get, 0);
if ( !(sts == QCOM__TMO || sts == QCOM__QEMPTY)) {
ini_mEvent new_event;
qcom_sEvent *ep = (qcom_sEvent*) get.data;
new_event.m = ep->mask;
if (new_event.b.oldPlcStop && !swap) {
swap = 1;
xtt->xnav->swap(0);
} else if (new_event.b.swapDone && swap) {
swap = 0;
xtt->xnav->swap(1);
} else if (new_event.b.terminate) {
exit(0);
}
}
}
xtt->timerid->add( 1000, qcom_events, xtt);
}
void Xtt::findregex_ok( Xtt *xtt, char *search_str)
{
int sts;
sts = xtt->xnav->search( search_str, 1);
if ( EVEN(sts))
xtt->message( 'E', xtt->xnav->get_message( sts));
}
void Xtt::find_ok( Xtt *xtt, char *search_str)
{
int sts;
sts = xtt->xnav->search( search_str, 0);
if ( EVEN(sts))
xtt->message( 'E', xtt->xnav->get_message( sts));
}
void Xtt::xtt_message_cb( void *ctx, char severity, char *msg)
{
((Xtt *)ctx)->message( severity, msg);
}
void Xtt::close_ok( void *ctx, void *data)
{
Xtt *xtt = (Xtt *) ctx;
delete xtt->xnav;
exit(0);
}
void Xtt::change_value( void *ctx)
{
Xtt *xtt = (Xtt *) ctx;
xtt->open_change_value();
}
//
// Callbackfunctions from menu entries
//
void Xtt::activate_print()
{
pwr_tFileName filename;
pwr_tCmd cmd;
dcli_translate_filename( filename, "$pwrp_tmp/xnav.ps");
xnav->print( filename);
sprintf( cmd, "$pwr_exe/rt_print.sh %s", filename);
system(cmd);
}
void Xtt::activate_find()
{
open_input_dialog( "Search string", "Find object",
"", &find_ok);
}
void Xtt::activate_findregex()
{
open_input_dialog( "Search string", "Find regular expression",
"", &findregex_ok);
}
void Xtt::activate_findnext()
{
int sts;
sts = xnav->search_next();
if ( EVEN(sts))
message( 'E', xnav->get_message( sts));
}
void Xtt::activate_collapse()
{
xnav->brow_push_all();
}
void Xtt::activate_openobject()
{
int sts;
int is_attr;
pwr_sAttrRef attrref;
sts = xnav->get_select( &attrref, &is_attr);
if ( ODD(sts))
xnav->open_object( &attrref);
}
void Xtt::activate_openplc()
{
xnav->start_trace_selected();
}
void Xtt::activate_opengraph()
{
int sts;
pwr_tClassId classid;
pwr_tAName name;
pwr_tAName vname;
pwr_tFileName filename;
int is_attr;
pwr_sAttrRef attrref;
pwr_tCmd cmd;
sts = xnav->get_select( &attrref, &is_attr);
if ( EVEN(sts)) {
// If collect brow open collect graph
if ( xnav->brow->ctx == xnav->collect_brow->ctx) {
sprintf( cmd, "open graph /collect");
xnav->command( cmd);
}
return;
}
sts = gdh_AttrrefToName( &attrref, name, sizeof(name), cdh_mNName);
if ( EVEN(sts)) return;
sts = gdh_AttrrefToName( &attrref, vname, sizeof(vname),
cdh_mName_volumeStrict);
if ( EVEN(sts)) return;
sts = gdh_GetAttrRefTid( &attrref, &classid);
if ( EVEN(sts)) return;
if ( cdh_tidIsCid( classid)) {
if ( classid == pwr_cClass_DsTrend || classid == pwr_cClass_PlotGroup) {
// Open trend
sprintf( cmd, "open trend /name=%s /title=\"%s\"", vname, name);
xnav->command( cmd);
return;
}
sprintf( cmd, "open graph /class/inst=%s/name=\"%s\"", vname, name);
xnav->command( cmd);
}
else {
switch( classid) {
case pwr_eType_Float32:
sprintf( filename, "pwr_exe:pwr_t_float32.pwg");
break;
case pwr_eType_Int32:
sprintf( filename, "pwr_exe:pwr_t_int32.pwg");
break;
case pwr_eType_Boolean:
sprintf( filename, "pwr_exe:pwr_t_boolean.pwg");
break;
default:
message( 'E', "No graph for this attribute type");
return;
}
sprintf( cmd, "open graph %s/inst=%s/name=\"%s\"", filename, vname, name);
xnav->command( cmd);
}
}
void Xtt::activate_collect_insert()
{
pwr_sAttrRef attrref;
int is_attr;
int sts;
sts = xnav->get_select( &attrref, &is_attr);
if ( ODD(sts))
xnav->collect_insert( &attrref);
}
void Xtt::activate_advanceduser()
{
char cmd[80];
strcpy( cmd, "set advanceduser");
xnav->command( cmd);
}
void Xtt::activate_zoom_in()
{
double zoom_factor;
xnav->get_zoom( &zoom_factor);
if ( zoom_factor > 40)
return;
xnav->zoom( 1.18);
}
void Xtt::activate_zoom_out()
{
double zoom_factor;
xnav->get_zoom( &zoom_factor);
if ( zoom_factor < 15)
return;
xnav->zoom( 1.0 / 1.18);
}
void Xtt::activate_help()
{
CoXHelp::dhelp("overview", "", navh_eHelpFile_Base, NULL, 0);
}
void Xtt::activate_help_project()
{
CoXHelp::dhelp("index", "", navh_eHelpFile_Project, NULL, 0);
}
void Xtt::activate_help_proview()
{
CoXHelp::dhelp( "version", "", navh_eHelpFile_Other, "$pwr_exe/xtt_version_help.dat", 0);
}
Xtt::Xtt( int argc, char *argv[], int *return_sts) :
root_item(0), input_open(0), command_open(0), india_ok_cb(0), quiet(0), attach_audio(0)
{
pwr_tStatus sts;
int i;
int opplace_found = 0;
pwr_tObjid op_objid;
qcom_sQattr qAttr;
qcom_sQid qini;
strcpy( opplace_str, "");
hot_xtt = this;
errh_Init("rt_xtt", errh_eNAnix);
sts = gdh_Init("rt_xtt");
if (EVEN(sts)) {
*return_sts = sts;
return;
}
if (!qcom_Init(&sts, 0, "rt_xtt")) {
*return_sts = sts;
return;
}
qAttr.type = qcom_eQtype_private;
qAttr.quota = 100;
if (!qcom_CreateQ(&sts, &queid, &qAttr, "events")) {
*return_sts = sts;
return;
}
qini = qcom_cQini;
if (!qcom_Bind(&sts, &queid, &qini)) {
*return_sts = sts;
return;
}
// Set language
for ( i = 1; i < argc; i++) {
if ( strcmp( argv[i], "-l") == 0 && i + 1 < argc)
Lng::set( argv[i+1]);
else if ( strcmp( argv[i], "-q") == 0) {
CoWow::HideWarranty();
quiet = 1;
}
else if ( strcmp( argv[i], "-a") == 0)
attach_audio = 1;
else if ( strcmp( argv[i], "-u") == 0 && i + 1 < argc) {
char oname[80];
strcpy( opplace_str, argv[i+1]);
sts = gdh_GetClassList( pwr_cClass_OpPlace, &op_objid);
while (ODD(sts)) {
sts = gdh_ObjidToName( op_objid, oname, sizeof(oname), cdh_mName_object);
if (ODD(sts) && cdh_NoCaseStrcmp( oname, opplace_str) == 0) {
sts = gdh_ObjidToName( op_objid, opplace_str, sizeof(opplace_str), cdh_mNName);
opplace_found = 1;
break;
}
sts = gdh_GetNextObject( op_objid, &op_objid);
}
if ( !opplace_found) {
printf("** Unable to find opplace\n");
exit(sts);
}
}
}
if ( !opplace_found && argc >= 2 && strncmp( argv[1], "-", 1) != 0) {
pwr_tClassId op_class;
// First argument is opplace object
strcpy( opplace_str, argv[1]);
sts = gdh_NameToObjid( opplace_str, &op_objid);
if ( EVEN(sts)) {
printf("** Unable to find opplace\n");
exit(sts);
}
sts = gdh_GetObjectClass( op_objid, &op_class);
if ( EVEN(sts)) exit( sts);
if ( op_class != pwr_cClass_OpPlace) {
printf("** Error in opplace object class\n");
exit(sts);
}
opplace_found = 1;
}
}
include $(pwre_dir_symbols)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk
ifeq ($($(type_name)_generic_mk),)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(type_name)_generic.mk
endif
ifeq ($($(type_name)_generic_mk),)
include $(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
endif
-include ../../special.mk
-include ../special.mk
-include special.mk
ifndef link_rule_mk
link_rule_mk := 1
link = $(ldxx) $(elinkflags) $(domap) -o $(pwr_exe)/wb_ge_gtk \
$(bld_dir)/wb_ge_gtk.o $(wb_msg_eobjs) $(rt_msg_eobjs) \
$(pwr_eobj)/rt_io_user.o $(pwr_eobj)/wb_provider.o -L/usr/X11R6/lib \
-L/usr/local/BerkeleyDB.4.0/lib \
-L/opt/gnome/lib \
-lpwr_ge_gtk -lpwr_ge -lpwr_wb_gtk -lpwr_wb -lpwr_wb_gtk -l pwr_wb -lpwr_ge_gtk -lpwr_ge \
-lpwr_flow_gtk -lpwr_flow -lpwr_glow_gtk -lpwr_glow -lpwr_rt_gtk -lpwr_rt \
-lpwr_co_gtk -lpwr_co -lpwr_flow_gtk -lpwr_flow \
`pkg-config --libs gtk+-2.0` \
-lpwr_msg_dummy -lantlr -lgdk_imlib -lMrm -lXm -lXpm -lXt -lX11 -lXext -lXp\
-lXmu -lSM -lICE\
-lrpcsvc -lpthread -lm -ldb_cxx -lz
endif
/*
* Proview $Id: wb_ge_gtk.cpp,v 1.1 2007-01-04 08:41:00 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* wb_ge_gtk.cpp -- graphical editor */
#include <stdio.h>
#include <stdlib.h>
#include "pwr.h"
#include <gtk/gtk.h>
typedef void *ldh_tSesContext;
#include "ge_gtk.h"
#include "co_lng.h"
#include "co_xhelp_gtk.h"
/* Fallback resources */
static GtkWidget *toplevel;
static GtkWidget *mainwindow;
static void usage()
{
printf("\nUsage: wb_ge [-l language] [graphname]\n");
}
#if 0
static void ge_close_cb( void *gectx)
{
delete (Ge *)gectx;
exit(0);
}
#endif
int main( int argc, char *argv[])
{
int i;
pwr_tFileName file;
char graph_name[80];
int sts;
gtk_init( &argc, &argv);
toplevel = (GtkWidget *) g_object_new( GTK_TYPE_WINDOW,
"default-height", 100,
"default-width", 100,
"title", "Pwr wb_ge",
NULL);
// Create help window
CoXHelpGtk *xhelp = new CoXHelpGtk( mainwindow, 0, xhelp_eUtility_Wtt, (int *)&sts);
CoXHelpGtk::set_default( xhelp);
printf( "Argc: %d\n", argc);
if ( argc > 1) {
for ( i = 1; i < argc; i++) {
if ( strcmp( argv[i], "-l") == 0) {
if ( i+1 >= argc) {
usage();
exit(0);
}
Lng::set( argv[i+1]);
i++;
}
else
strcpy( file, argv[i]);
}
printf( "Arg: %s\n", file);
if ( file[0] == '@') {
// Execute script
Ge *gectx;
pwr_tStatus sts;
gectx = new GeGtk( NULL, toplevel, 0, 1, NULL);
sts = gectx->command( file);
if ( EVEN(sts))
gectx->message( sts);
}
else {
// Open graph
strcpy( graph_name, file);
new GeGtk( NULL, mainwindow, 0, 1, graph_name);
}
}
else
new GeGtk( NULL, mainwindow, 0, 1, NULL);
gtk_widget_show_all( toplevel);
g_object_set( toplevel, "visible", FALSE, NULL);
gtk_main();
return (0);
}
include $(pwre_dir_symbols)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk
ifeq ($($(type_name)_generic_mk),)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(type_name)_generic.mk
endif
ifeq ($($(type_name)_generic_mk),)
include $(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
endif
-include ../../special.mk
-include ../special.mk
-include special.mk
ifndef link_rule_mk
link_rule_mk := 1
link = $(ldxx) $(elinkflags) $(domap) -o $(pwr_exe)/wb_ge_motif \
$(bld_dir)/wb_ge_motif.o $(wb_msg_eobjs) $(rt_msg_eobjs) \
$(pwr_eobj)/rt_io_user.o $(pwr_eobj)/wb_provider.o -L/usr/X11R6/lib \
-L/usr/local/BerkeleyDB.4.0/lib \
-L/opt/gnome/lib \
-lpwr_ge_motif -lpwr_ge -lpwr_wb_motif -lpwr_wb -lpwr_wb_motif -lpwr_wb -lpwr_flow_motif -lpwr_flow \
-lpwr_glow_motif -lpwr_glow -lpwr_rt_motif -lpwr_rt -lpwr_co_motif -lpwr_co \
-lpwr_msg_dummy -lantlr -lImlib -lMrm -lXm -lXpm -lXt -lX11 -lXext -lXp\
-lXmu -lSM -lICE\
-lrpcsvc -lpthread -lm -ldb_cxx -lz
endif
/*
* Proview $Id: wb_ge_motif.cpp,v 1.1 2007-01-04 08:40:55 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* wb_ge.c -- graphical editor */
#include <stdio.h>
#include <stdlib.h>
#include "pwr.h"
#include <Xm/Xm.h>
#include <Mrm/MrmPublic.h>
#include <X11/Intrinsic.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
typedef void *ldh_tSesContext;
#include "ge_motif.h"
#include "co_lng.h"
#include "co_xhelp_motif.h"
/* Fallback resources */
static String fbr[] = {
NULL
};
static Widget toplevel;
static Widget mainwindow;
static void usage()
{
printf("\nUsage: wb_ge [-l language] [graphname]\n");
}
#if 0
static void ge_close_cb( void *gectx)
{
delete (Ge *)gectx;
exit(0);
}
#endif
int main( int argc, char *argv[])
{
char uid_filename[120] = {"pwr_exe:wb.uid"};
char *uid_filename_p = uid_filename;
unsigned long sts;
char title[80];
XtAppContext app_ctx;
MrmHierarchy s_DRMh;
MrmType dclass;
char name[] = "Proview/R Ge";
char graph_name[80];
char file[120];
int i;
#if !defined OS_VMS
{
char *s;
if ( (s = getenv( "pwr_exe")) == NULL)
{
printf( "** pwr_exe is not defined\n");
exit(0);
}
sprintf( uid_filename, "%s/wb.uid", s);
}
#endif
strcpy( title, "PROVIEW/R Ge ");
MrmInitialize();
toplevel = XtVaAppInitialize (
&app_ctx,
"mainwindow",
NULL, 0,
&argc, argv,
fbr,
XtNallowShellResize, True,
XtNtitle, title,
XmNmappedWhenManaged, False,
NULL);
sts = MrmOpenHierarchy( 1, &uid_filename_p, NULL, &s_DRMh);
if (sts != MrmSUCCESS) printf("can't open %s\n", uid_filename);
sts = MrmFetchWidgetOverride( s_DRMh, "mainwindow", toplevel,
name, NULL, 0, &mainwindow, &dclass);
if (sts != MrmSUCCESS) printf("can't fetch %s\n", name);
MrmCloseHierarchy(s_DRMh);
XtManageChild(mainwindow);
// Create help window
CoXHelpMotif *xhelp = new CoXHelpMotif( mainwindow, 0, xhelp_eUtility_Wtt, (int *)&sts);
CoXHelp::set_default( xhelp);
printf( "Argc: %d\n", argc);
if ( argc > 1) {
for ( i = 1; i < argc; i++) {
if ( strcmp( argv[i], "-l") == 0) {
if ( i+1 >= argc) {
usage();
exit(0);
}
Lng::set( argv[i+1]);
i++;
}
else
strcpy( file, argv[i]);
}
printf( "Arg: %s\n", file);
if ( file[0] == '@') {
// Execute script
Ge *gectx;
pwr_tStatus sts;
gectx = new GeMotif( NULL, mainwindow, 0, 1, NULL);
sts = gectx->command( file);
if ( EVEN(sts))
gectx->message( sts);
}
else {
// Open graph
strcpy( graph_name, file);
new GeMotif( NULL, mainwindow, 0, 1, graph_name);
}
}
else
new GeMotif( NULL, mainwindow, 0, 1, NULL);
XtRealizeWidget(toplevel);
XtAppMainLoop(app_ctx);
return (0);
}
/*
* Proview $Id: wb_ge.cpp,v 1.2 2005-09-01 14:57:49 claes Exp $
* Proview $Id: wb_ge.cpp,v 1.3 2007-01-04 08:40:48 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -21,142 +21,44 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "pwr.h"
#include <Xm/Xm.h>
#include <Mrm/MrmPublic.h>
#include <X11/Intrinsic.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
typedef void *ldh_tSesContext;
#include "ge.h"
#include "co_lng.h"
#include "co_xhelp.h"
/* Fallback resources */
static String fbr[] = {
NULL
};
static Widget toplevel;
static Widget mainwindow;
static void usage()
{
printf("\nUsage: wb_ge [-l language] [graphname]\n");
printf("\nUsage: wb_ge [-f windowmanager] [-l language] [graphname]\n");
}
#if 0
static void ge_close_cb( void *gectx)
{
ge_del( gectx);
exit(0);
}
#endif
int main( int argc, char *argv[])
{
char uid_filename[120] = {"pwr_exe:wb.uid"};
char *uid_filename_p = uid_filename;
unsigned long sts;
char title[80];
XtAppContext app_ctx;
MrmHierarchy s_DRMh;
MrmType dclass;
char name[] = "Proview/R Ge";
char graph_name[80];
char file[120];
int i;
int i;
int found = 0;
char wmg[80];
pwr_tFileName file;
#if !defined OS_VMS
{
char *s;
if ( (s = getenv( "pwr_exe")) == NULL)
{
printf( "** pwr_exe is not defined\n");
exit(0);
}
sprintf( uid_filename, "%s/wb.uid", s);
}
#endif
strcpy( title, "PROVIEW/R Ge ");
MrmInitialize();
toplevel = XtVaAppInitialize (
&app_ctx,
"mainwindow",
NULL, 0,
&argc, argv,
fbr,
XtNallowShellResize, True,
XtNtitle, title,
XmNmappedWhenManaged, False,
NULL);
sts = MrmOpenHierarchy( 1, &uid_filename_p, NULL, &s_DRMh);
if (sts != MrmSUCCESS) printf("can't open %s\n", uid_filename);
sts = MrmFetchWidgetOverride( s_DRMh, "mainwindow", toplevel,
name, NULL, 0, &mainwindow, &dclass);
if (sts != MrmSUCCESS) printf("can't fetch %s\n", name);
MrmCloseHierarchy(s_DRMh);
XtManageChild(mainwindow);
// Create help window
CoXHelp *xhelp = new CoXHelp( mainwindow, 0, xhelp_eUtility_Wtt, (int *)&sts);
CoXHelp::set_default( xhelp);
printf( "Argc: %d\n", argc);
if ( argc > 1) {
for ( i = 1; i < argc; i++) {
if ( strcmp( argv[i], "-l") == 0) {
if ( strcmp( argv[i], "-f") == 0) {
if ( i+1 >= argc) {
usage();
exit(0);
}
Lng::set( argv[i+1]);
found = 1;
strcpy( wmg, argv[i+1]);
i++;
}
else
strcpy( file, argv[i]);
}
printf( "Arg: %s\n", file);
if ( file[0] == '@') {
// Execute script
void *gectx;
pwr_tStatus sts;
gectx = ge_new( NULL, mainwindow, 0, 1, NULL);
sts = ge_command( gectx, file);
if ( EVEN(sts))
ge_message( gectx, sts);
}
else {
// Open graph
strcpy( graph_name, file);
ge_new( NULL, mainwindow, 0, 1, graph_name);
}
}
else
ge_new( NULL, mainwindow, 0, 1, NULL);
if ( !found)
strcpy( wmg, "gtk");
XtRealizeWidget(toplevel);
strcpy( file, argv[0]);
strcat( file, "_");
strcat( file, wmg);
XtAppMainLoop(app_ctx);
return (0);
execvp( file, argv);
}
!
! Proview $Id: ge.uil,v 1.4 2005-09-06 10:39:34 claes Exp $
! Proview $Id: ge.uil,v 1.1 2007-01-04 08:39:37 claes Exp $
! Copyright (C) 2005 SSAB Oxelsund AB.
!
! This program is free software; you can redistribute it and/or
......
!
! Proview $Id: ge_attr.uil,v 1.3 2005-09-06 10:39:34 claes Exp $
! Proview $Id: ge_attr.uil,v 1.1 2007-01-04 08:39:37 claes Exp $
! Copyright (C) 2005 SSAB Oxelsund AB.
!
! This program is free software; you can redistribute it and/or
......
!
! Proview $Id: ge_subgraphs.uil,v 1.2 2005-09-06 10:39:34 claes Exp $
! Proview $Id: ge_subgraphs.uil,v 1.1 2007-01-04 08:39:37 claes Exp $
! Copyright (C) 2005 SSAB Oxelsund AB.
!
! This program is free software; you can redistribute it and/or
......
include $(pwre_dir_symbols)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk
ifeq ($($(type_name)_generic_mk),)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(type_name)_generic.mk
endif
ifeq ($($(type_name)_generic_mk),)
include $(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
endif
-include ../../special.mk
-include ../special.mk
-include special.mk
......@@ -58,6 +58,49 @@ E 1.1.52 "Beenden"
E 1.1.53 "Schliessen"
E 1.1.54 "Wert >"
E 1.1.55 "Drucken"
E 1.1.56 "ffne Objekt"
E 1.1.57 "_Drucken"
E 1.1.58 "_Schliessen"
E 1.1.59 "_Datei"
E 1.1.60 "Finde _Objekt"
E 1.1.61 "Finde _richtigen Ausdruck"
E 1.1.62 "_Suchen"
E 1.1.63 "_Kollaps"
E 1.1.64 "_Bearbeiten"
E 1.1.65 "ffne _Objekt..."
E 1.1.66 "ffne _PLC"
E 1.1.67 "_ffne ObjectGraph"
E 1.1.68 "_Zeigt Verweise"
E 1.1.69 "ndere _Wert"
E 1.1.70 "_Befehl"
E 1.1.71 "_Einsatz"
E 1.1.72 "_Ansehen"
E 1.1.73 "_Delete"
E 1.1.74 "C_lear"
E 1.1.75 "_Collect"
E 1.1.76 "_Fortgeschrittene Benutzer"
E 1.1.77 "_Funktionen"
E 1.1.78 "_Heranzoomen"
E 1.1.79 "_Wegzoomen"
E 1.1.80 "_Zoom zurcksetzen"
E 1.1.81 "_Ansehen"
E 1.1.82 "_bersicht"
E 1.1.83 "_Projekt"
E 1.1.84 "b_er Proview"
E 1.1.85 "_Hilfe"
E 1.1.86 "Zurck gehen"
E 1.1.87 "ffne PLC"
E 1.1.88 "Fortgeschrittene Benutzer"
E 1.1.89 "Heranzoomen"
E 1.1.90 "Wegzoomen"
E 1.1.91 "Zoom zurcksetzen"
E 1.1.92 "_Weitersuchen"
E 1.1.93 "Vollen Sie schliessen"
E 1.1.94 "Alarmliste"
E 1.1.95 "Ereignisliste"
E 1.1.96 "Ereignisprotokoll"
E 1.1.97 "Besttigen"
E 1.1.98 "Suchzeichenkette"
#
# Logging entry
E 1.2.1 "Aktiv"
......@@ -86,6 +129,77 @@ E 1.4.3 "Lizenzbedingungen annehmen"
E 1.4.4 "Verlassen"
E 1.4.5 "Lizenz"
#
# Event, Alarm and Block list
E 1.5.1 "_Besttigen"
E 1.5.2 "_Zeige Objekt im Navigator"
E 1.5.3 "_Zeige Hundertstel"
E 1.5.4 "_Verstecke Ereignisname"
E 1.5.5 "Verstecke _Ereignistext"
E 1.5.6 "Hilfe bei ausgewhltem Ereignis"
E 1.5.7 "_Blockieren beenden"
#
# Object editor
E 1.6.1 "Schliesse _Wertebearbeitung"
#
# Wow
E 1.7.1 "Ja"
E 1.7.2 "Nein"
E 1.7.3 "Verlassen"
#
# CLog
E 1.8.1 "_Update"
E 1.8.2 "_Nchte Datei"
E 1.8.3 "_Vorherige Datei"
E 1.8.4 "_Datei whlen"
E 1.8.5 "_Filter"
E 1.8.6 "Konsolenprotokoll"
E 1.8.7 "_Hilfe bei Konsolenprotokoll"
E 1.8.8 "Hilfe bei _ausgewhlter Mitteilung"
#
# Eventlog
E 1.9.1 "Zeitliche Ereignisliste: Sucheigenschaften"
E 1.9.2 "Suchen"
E 1.9.3 "Beenden"
E 1.9.4 "Endzeitpunkt"
E 1.9.5 "Prioritt"
E 1.9.6 "Ereignistyp"
E 1.9.7 "Ereignistext"
E 1.9.8 "Ereignisname"
E 1.9.9 "A-Alarm"
E 1.9.10 "B-Alarm"
E 1.9.11 "C-Alarm"
E 1.9.12 "D-Alarm"
E 1.9.13 "Mittelung"
E 1.9.14 "Aktiv"
E 1.9.15 "Besttigen"
E 1.9.16 "Zurckgeben"
E 1.9.17 "Anzahl der Ereignisse:"
E 1.9.18 "Heute"
E 1.9.19 "Gestern"
E 1.9.20 "Diese Woche"
E 1.9.21 "Letzte Woche"
E 1.9.22 "Diesen Monat"
E 1.9.23 "Letzten Monat"
E 1.9.24 "Alle "
E 1.9.25 "Zeit"
E 1.9.26 "Suchbedingungen"
#
# Ge Curve
E 1.10.1 "_Auffrischen"
E 1.10.2 "_Heller Hintergrund"
E 1.10.3 "_Namen anzeigtn"
E 1.10.4 "_Gefuellte Kurven"
E 1.10.5 "G_renze X-Achse"
E 1.10.6 "Min-Wert"
E 1.10.7 "Max-Wert"
E 1.10.8 "Ansehen"
E 1.10.9 "Cursor"
E 1.10.10 "Markeirung"
E 1.10.11 "Einheit"
E 1.10.12 "Einstufen"
E 1.10.13 "Attribut"
E 1.10.14 "Zeit-Achse"
#
# Postscript printing
E 2.1.1 "Inhalt"
E 2.1.2 "Seite"
......
......@@ -59,6 +59,48 @@ E 1.1.53 "Close"
E 1.1.54 "value >"
E 1.1.55 "Print"
E 1.1.56 "Open Object"
E 1.1.57 "_Print"
E 1.1.58 "_Close"
E 1.1.59 "_File"
E 1.1.60 "_Find Object"
E 1.1.61 "Find _Regular expression"
E 1.1.62 "_Search"
E 1.1.63 "Co_llapse"
E 1.1.64 "_Edit"
E 1.1.65 "_Open Object..."
E 1.1.66 "Open _Program"
E 1.1.67 "Open _ClassGraph"
E 1.1.68 "Show C_rossreferences"
E 1.1.69 "Change _Value"
E 1.1.70 "Co_mmand"
E 1.1.71 "_Insert"
E 1.1.72 "_Show"
E 1.1.73 "_Remove"
E 1.1.74 "C_lear"
E 1.1.75 "_Collect"
E 1.1.76 "_Advanced user"
E 1.1.77 "_Functions"
E 1.1.78 "Zoom _In"
E 1.1.79 "Zoom _Out"
E 1.1.80 "Zoom _Reset"
E 1.1.81 "_View"
E 1.1.82 "_Overview"
E 1.1.83 "_Project"
E 1.1.84 "_About Proview"
E 1.1.85 "_Help"
E 1.1.86 "Go back"
E 1.1.87 "Open Program"
E 1.1.88 "Advanced user"
E 1.1.89 "Zoom in"
E 1.1.90 "Zoom out"
E 1.1.91 "Zoom reset"
E 1.1.92 "Find _Next"
E 1.1.93 "Do you want to close"
E 1.1.94 "Alarmlist"
E 1.1.95 "Eventlist"
E 1.1.96 "Eventlog"
E 1.1.97 "Confirm"
E 1.1.98 "Search string"
#
# Logging entry
E 1.2.1 "Active"
......@@ -87,6 +129,77 @@ E 1.4.3 "Accept License Terms"
E 1.4.4 "Quit"
E 1.4.5 "License"
#
# Event, Alarm and Block list
E 1.5.1 "_Acknowledge"
E 1.5.2 "_Display object in Navigator"
E 1.5.3 "_Display hundredth"
E 1.5.4 "_Hide Event Name"
E 1.5.5 "Hide _Event Text"
E 1.5.6 "Help Selected Event"
E 1.5.7 "_Remove Blocking"
#
# Object editor
E 1.6.1 "C_lose Change Value"
#
# Wow
E 1.7.1 "Yes"
E 1.7.2 "No"
E 1.7.3 "Cancel"
#
# CLog
E 1.8.1 "_Update"
E 1.8.2 "_Next File"
E 1.8.3 "_Previous File"
E 1.8.4 "_Select File"
E 1.8.5 "_Filter"
E 1.8.6 "Consolelog"
E 1.8.7 "_Help on ConsoleLog"
E 1.8.8 "Help on _Selected Message"
#
# Eventlog
E 1.9.1 "Historical Event List: Search Condition"
E 1.9.2 "Search"
E 1.9.3 "Start time"
E 1.9.4 "Stop time"
E 1.9.5 "Priority"
E 1.9.6 "Event type"
E 1.9.7 "Event text"
E 1.9.8 "Event name"
E 1.9.9 "A-Alarm"
E 1.9.10 "B-Alarm"
E 1.9.11 "C-Alarm"
E 1.9.12 "D-Alarm"
E 1.9.13 "Message"
E 1.9.14 "Active"
E 1.9.15 "Ack"
E 1.9.16 "Return"
E 1.9.17 "Number of Events:"
E 1.9.18 "Today"
E 1.9.19 "Yesterday"
E 1.9.20 "This Week"
E 1.9.21 "Last Week"
E 1.9.22 "This Month"
E 1.9.23 "Last Month"
E 1.9.24 "All "
E 1.9.25 "Time"
E 1.9.26 "Search Condition"
#
# Ge Curve
E 1.10.1 "_Refresh"
E 1.10.2 "_Background Color"
E 1.10.3 "_Show Names"
E 1.10.4 "_Filled Curves"
E 1.10.5 "_X-Axis Limits"
E 1.10.6 "MinValue"
E 1.10.7 "MaxValue"
E 1.10.8 "View"
E 1.10.9 "Cursor"
E 1.10.10 "Mark"
E 1.10.11 "Unit"
E 1.10.12 "Scale"
E 1.10.13 "Attribute"
E 1.10.14 "Time axis"
#
# Postscript printing
E 2.1.1 "Contents"
E 2.1.2 "page"
......
include $(pwre_dir_symbols)
#-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk
ifeq ($($(type_name)_generic_mk),)
#-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(type_name)_generic.mk
endif
ifeq ($($(type_name)_generic_mk),)
# include $(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
endif
-include ../../special.mk
-include ../special.mk
-include special.mk
copy : $(exe_dir)/en_us/xtt_lng.dat $(exe_dir)/en_us/acceptlicense.txt $(exe_dir)/en_us/license.txt \
$(exe_dir)/sv_se/xtt_lng.dat $(exe_dir)/sv_se/acceptlicense.txt $(exe_dir)/sv_se/license.txt \
$(exe_dir)/de_de/xtt_lng.dat $(exe_dir)/de_de/acceptlicense.txt $(exe_dir)/de_de/license.txt \
$(exe_dir)/en_us/xtt_lng.dat : $(pwre_sroot)/mmi/xtt/en_us/xtt_lng.dat
@ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target)
$(exe_dir)/en_us/acceptlicense.txt : $(pwre_sroot)/mmi/xtt/en_us/acceptlicense.txt
@ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target)
$(exe_dir)/en_us/license.txt : $(pwre_sroot)/mmi/xtt/en_us/license.txt
@ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target)
$(exe_dir)/sv_se/xtt_lng.dat : $(pwre_sroot)/mmi/xtt/sv_se/xtt_lng.dat
@ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target)
$(exe_dir)/sv_se/acceptlicense.txt : $(pwre_sroot)/mmi/xtt/sv_se/acceptlicense.txt
@ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target)
$(exe_dir)/sv_se/license.txt : $(pwre_sroot)/mmi/xtt/sv_se/license.txt
@ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target)
$(exe_dir)/de_de/xtt_lng.dat : $(pwre_sroot)/mmi/xtt/de_de/xtt_lng.dat
@ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target)
$(exe_dir)/de_de/acceptlicense.txt : $(pwre_sroot)/mmi/xtt/de_de/acceptlicense.txt
@ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target)
$(exe_dir)/de_de/license.txt : $(pwre_sroot)/mmi/xtt/de_de/license.txt
@ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target)
......@@ -8,6 +8,7 @@ endif
vpath %.uil $(hw_source):$(os_source):$(co_source)
vpath %.png $(hw_source):$(os_source):$(co_source)
source_dirs := $(hw_source) $(os_source) $(co_source)
......@@ -20,13 +21,24 @@ uil_sources := $(sort \
) \
)
png_sources := $(sort \
$(foreach file, \
$(foreach dir, \
$(source_dirs), \
$(wildcard $(dir)/*.png) \
), $(notdir $(file)) \
) \
)
export_uid_en_us := $(addprefix $(exe_dir)/en_us/, $(patsubst %.uil, %.uid, $(uil_sources)))
export_uid_sv_se := $(addprefix $(exe_dir)/sv_se/, $(patsubst %.uil, %.uid, $(uil_sources)))
export_uid_de_de := $(addprefix $(exe_dir)/de_de/, $(patsubst %.uil, %.uid, $(uil_sources)))
export_png := $(addprefix $(exe_dir)/, $(png_sources))
export_uid := $(export_uid_en_us) \
$(export_uid_sv_se) \
$(export_uid_de_de)
clean_uid := $(patsubst %.uil,clean_%.uid,$(uil_sources))
.SUFFIXES:
......@@ -49,7 +61,7 @@ all : init copy lib exe
init :
copy : $(export_uid)
copy : $(export_uid) $(export_png)
lib :
......
!
! Proview $Id: xtt.uil,v 1.4 2006-03-31 14:41:55 claes Exp $
! Proview $Id: xtt.uil,v 1.1 2007-01-04 08:36:28 claes Exp $
! Copyright (C) 2005 SSAB Oxelsund AB.
!
! This program is free software; you can redistribute it and/or
......
!
! Proview $Id: xtt_block.uil,v 1.2 2005-09-06 10:39:34 claes Exp $
! Proview $Id: xtt_block.uil,v 1.1 2007-01-04 08:36:28 claes Exp $
! Copyright (C) 2005 SSAB Oxelsund AB.
!
! This program is free software; you can redistribute it and/or
......
!
! Proview $Id: xtt_clog.uil,v 1.3 2005-09-06 10:39:34 claes Exp $
! Proview $Id: xtt_clog.uil,v 1.1 2007-01-04 08:36:28 claes Exp $
! Copyright (C) 2005 SSAB Oxelsund AB.
!
! This program is free software; you can redistribute it and/or
......
!
! Proview $Id: xtt_curve.uil,v 1.4 2005-12-06 10:57:07 claes Exp $
! Proview $Id: xtt_curve.uil,v 1.1 2007-01-04 08:36:28 claes Exp $
! Copyright (C) 2005 SSAB Oxelsund AB.
!
! This program is free software; you can redistribute it and/or
......
!
! Proview $Id: xtt_eve.uil,v 1.4 2005-09-06 10:39:34 claes Exp $
! Proview $Id: xtt_eve.uil,v 1.1 2007-01-04 08:36:28 claes Exp $
! Copyright (C) 2005 SSAB Oxelsund AB.
!
! This program is free software; you can redistribute it and/or
......
!
! Proview $Id: xtt_ge.uil,v 1.2 2005-09-06 10:39:34 claes Exp $
! Proview $Id: xtt_ge.uil,v 1.1 2007-01-04 08:36:28 claes Exp $
! Copyright (C) 2005 SSAB Oxelsund AB.
!
! This program is free software; you can redistribute it and/or
......
!
! Proview $Id: xtt_hist.uil,v 1.5 2005-09-06 10:39:34 claes Exp $
! Proview $Id: xtt_hist.uil,v 1.1 2007-01-04 08:36:28 claes Exp $
! Copyright (C) 2005 SSAB Oxelsund AB.
!
! This program is free software; you can redistribute it and/or
......
!
! Proview $Id: xtt_op.uil,v 1.4 2005-09-06 10:39:34 claes Exp $
! Proview $Id: xtt_op.uil,v 1.1 2007-01-04 08:36:28 claes Exp $
! Copyright (C) 2005 SSAB Oxelsund AB.
!
! This program is free software; you can redistribute it and/or
......
!
! Proview $Id: xtt_trace.uil,v 1.5 2005-09-06 10:39:34 claes Exp $
! Proview $Id: xtt_trace.uil,v 1.1 2007-01-04 08:36:28 claes Exp $
! Copyright (C) 2005 SSAB Oxelsund AB.
!
! This program is free software; you can redistribute it and/or
......
!
! Proview $Id: xtt_xatt.uil,v 1.2 2005-09-06 10:39:34 claes Exp $
! Proview $Id: xtt_xatt.uil,v 1.1 2007-01-04 08:36:28 claes Exp $
! Copyright (C) 2005 SSAB Oxelsund AB.
!
! This program is free software; you can redistribute it and/or
......
!
! Proview $Id: xtt_xattone.uil,v 1.2 2005-09-06 10:39:34 claes Exp $
! Proview $Id: xtt_xattone.uil,v 1.1 2007-01-04 08:36:28 claes Exp $
! Copyright (C) 2005 SSAB Oxelsund AB.
!
! This program is free software; you can redistribute it and/or
......
!
! Proview $Id: xtt_xcrr.uil,v 1.2 2005-09-06 10:39:34 claes Exp $
! Proview $Id: xtt_xcrr.uil,v 1.1 2007-01-04 08:36:28 claes Exp $
! Copyright (C) 2005 SSAB Oxelsund AB.
!
! This program is free software; you can redistribute it and/or
......
!
! Proview $Id: xtt_xhelp.uil,v 1.3 2005-09-06 10:39:35 claes Exp $
! Proview $Id: xtt_xhelp.uil,v 1.1 2007-01-04 08:36:28 claes Exp $
! Copyright (C) 2005 SSAB Oxelsund AB.
!
! This program is free software; you can redistribute it and/or
......
include $(pwre_dir_symbols)
#-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk
ifeq ($($(type_name)_generic_mk),)
# -include $(pwre_kroot)/tools/bld/src/$(os_name)/$(type_name)_generic.mk
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(type_name)_generic.mk
endif
ifeq ($($(type_name)_generic_mk),)
# include $(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
include $(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
endif
-include ../../special.mk
-include ../special.mk
-include special.mk
#-include ../../special.mk
#-include ../special.mk
#-include special.mk
copy : $(exe_dir)/en_us/xtt_lng.dat $(exe_dir)/en_us/acceptlicense.txt $(exe_dir)/en_us/license.txt \
$(exe_dir)/sv_se/xtt_lng.dat $(exe_dir)/sv_se/acceptlicense.txt $(exe_dir)/sv_se/license.txt \
......
......@@ -57,7 +57,51 @@ E 1.1.51 "System"
E 1.1.52 "Avsluta"
E 1.1.53 "Stng"
E 1.1.54 "vrde >"
E 1.1.55 "Skriv ut"
E 1.1.56 "ppna Objekt"
E 1.1.57 "S_kriv ut"
E 1.1.58 "_Stng"
E 1.1.59 "_Arkiv"
E 1.1.60 "Sk _objekt"
E 1.1.61 "Sk _reguljrt uttryck"
E 1.1.62 "_Sk"
E 1.1.63 "_Fll ihop"
E 1.1.64 "_Redigera"
E 1.1.65 "ppna _Objekt..."
E 1.1.66 "ppna _Program"
E 1.1.67 "_ppna objektsbild"
E 1.1.68 "V_isa korsreferenser"
E 1.1.69 "ndra _Vrde"
E 1.1.70 "_Kommando"
E 1.1.71 "_Addera"
E 1.1.72 "_Visa"
E 1.1.73 "_Ta bort"
E 1.1.74 "T_m"
E 1.1.75 "_Samlingsbild"
E 1.1.76 "_Avancerad anvndare"
E 1.1.77 "_Funktioner"
E 1.1.78 "Zooma _in"
E 1.1.79 "Zooma _ut"
E 1.1.80 "_terstll zoom"
E 1.1.81 "_Visa"
E 1.1.82 "ver_sikt"
E 1.1.83 "_Projekt"
E 1.1.84 "_Om Proview"
E 1.1.85 "_Hjlp"
E 1.1.86 "G tillbaka"
E 1.1.87 "ppna program"
E 1.1.88 "Avancerad anvndare"
E 1.1.89 "Zooma in"
E 1.1.90 "Zooma ut"
E 1.1.91 "terstll zoom"
E 1.1.92 "Sk _nsta"
E 1.1.93 "Vill du stnga"
E 1.1.94 "Larmlista"
E 1.1.95 "Hndelselista"
E 1.1.96 "Hndelselogg"
E 1.1.97 "Verifiera"
E 1.1.98 "Skstrng"
#
# Logging entry
E 1.2.1 "Aktiv"
E 1.2.2 "LggIn"
......@@ -85,6 +129,77 @@ E 1.4.3 "Godk
E 1.4.4 "Avbryt"
E 1.4.5 "Licens"
#
# Event, Alarm and Block list
E 1.5.1 "_Kvittera"
E 1.5.2 "_Visa objekt i Navigatorn"
E 1.5.3 "_Visa hundradelar"
E 1.5.4 "_Dlj hndelsenamn"
E 1.5.5 "Dlj _hndelsetext"
E 1.5.6 "Hjlp fr utvald hndelse"
E 1.5.7 "_Ta bort blockering"
#
# Object editor
E 1.6.1 "_Stng ndra vrde"
#
# Wow
E 1.7.1 "Ja"
E 1.7.2 "Nej"
E 1.7.3 "Avbryt"
#
# CLog
E 1.8.1 "_Uppdatera"
E 1.8.2 "_Nsta Fil"
E 1.8.3 "_Fregende Fil"
E 1.8.4 "_Vlj Fil"
E 1.8.5 "_Filter"
E 1.8.6 "Konsollogg"
E 1.8.7 "_Hjlp fr Konsollog"
E 1.8.8 "_Hjlp fr utvalt meddelande"
#
# Eventlog
E 1.9.1 "Historisk hndelselista: Skvillkor"
E 1.9.2 "Sk"
E 1.9.3 "Start tid"
E 1.9.4 "Stopp tid"
E 1.9.5 "Prioritet"
E 1.9.6 "Hndelsetyp"
E 1.9.7 "Hndelsetext"
E 1.9.8 "Hndelsenamn"
E 1.9.9 "A-Larm"
E 1.9.10 "B-Larm"
E 1.9.11 "C-Larm"
E 1.9.12 "D-Larm"
E 1.9.13 "Meddel."
E 1.9.14 "Aktiv"
E 1.9.15 "Kvittens"
E 1.9.16 "Retur"
E 1.9.17 "Antal hndelser:"
E 1.9.18 "Idag"
E 1.9.19 "Igr"
E 1.9.20 "Denna vecka"
E 1.9.21 "Frra veckan"
E 1.9.22 "Denna mnad"
E 1.9.23 "Frra mnaden"
E 1.9.24 "Allt "
E 1.9.25 "Tid"
E 1.9.26 "Skvillkor"
#
# Ge Curve
E 1.10.1 "_Uppdatera"
E 1.10.2 "_Bakgrundsfrg"
E 1.10.3 "_Visa namn"
E 1.10.4 "_Fyllda kurvor"
E 1.10.5 "_X-axel grnser"
E 1.10.6 "MinVrde"
E 1.10.7 "MaxVrde"
E 1.10.8 "Visa"
E 1.10.9 "Markr"
E 1.10.10 "Mrke"
E 1.10.11 "Enhet"
E 1.10.12 "Skala"
E 1.10.13 "Attribut"
E 1.10.14 "Tidsaxel"
#
# Postscript printing
E 2.1.1 "Innehll"
E 2.1.2 "sidan"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment