PIPS
gtk_edit2.c File Reference
#include <stdlib.h>
#include <stdio.h>
#include <sys/param.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <gtk/gtk.h>
#include "genC.h"
#include "linear.h"
#include "misc.h"
#include "pipsdbm.h"
#include "ri-util.h"
#include "database.h"
#include "pipsmake.h"
#include "resources.h"
#include "constants.h"
#include "top-level.h"
#include "gpips.h"
#include "gpips-labels.h"
#include "gpips_view_menu_layout.h"
+ Include dependency graph for gtk_edit2.c:

Go to the source code of this file.

Data Structures

struct  EditedFile
 

Functions

void edit_notify (GtkWidget *widget, gpointer data)
 
void buffer_changed_callback (GtkWidget *widget, gpointer data)
 
static void save_edited_file (GtkWidget *widget, gpointer file)
 
void current_selection_notify (GtkWidget *widget, gpointer data)
 
char * compute_title_string (int window_number)
 
int alloc_first_initialized_window (bool the_same_as_previous)
 Find the first free window if any. More...
 
bool gpips_view_marked_busy (char *title_module_name, char *title_label, char *icon_name, char *icon_title)
 Mark a gpips window as busy: More...
 
void gpips_file_view (char *file_name, const char *title_module_name, char *title_label, char *icon_name, char *icon_title)
 Display a file in a gpips window: More...
 
void gpips_display_graph_file_display (gpips_view_menu_layout_line *menu_line)
 Use daVinci to display a graph information: More...
 
void gpips_display_plain_file (gpips_view_menu_layout_line *menu_line)
 Use some text viewer to display the resource: More...
 
void execute_gpips_execute_and_display_something_outside_the_notifier ()
 To execute something and display some Pips output with gpips, called outside the notifyer: More...
 
void gpips_execute_and_display_something_outside_the_notifyer (gpips_view_menu_layout_line *menu_line)
 
void gpips_execute_and_display_something (char *resource_name)
 To execute something and display some Pips output with gpips. More...
 
void gpips_execute_and_display_something_from_alias (const char *alias_name)
 To execute something and display some Pips output with gpips by knowing its alias: More...
 
void view_notify (GtkWidget *menu_item, gpointer data)
 
void edit_close_notify (GtkWidget *widget, gpointer data)
 
void disable_item (GtkWidget *item)
 
void enable_item (GtkWidget *item)
 
void apply_on_each_view_menu_item (GtkWidget *widget, gpointer _func)
 
void apply_on_each_options_frame_button (GtkWidget *widget, gpointer _func)
 
void apply_on_each_view_item (void(*function_to_apply_on_each_menu_item)(GtkWidget *), void(*function_to_apply_on_each_panel_item)(GtkWidget *))
 
void disable_view_selection ()
 
void enable_view_selection ()
 
void create_edit_window ()
 
void create_edit_menu ()
 

Variables

char vcid_xv_edit2 []
 A% ( More...
 
static gpips_view_menu_layout_line gpips_view_menu_layout []
 lint More...
 
static EditedFile edited_file [MAX_NUMBER_OF_GPIPS_WINDOWS]
 
int number_of_gpips_windows = INITIAL_NUMBER_OF_GPIPS_WINDOWS
 
static GtkWidget * current_selection_menu_item
 
static GtkWidget * close_menu_item
 
static GtkWidget * sequential_view_menu_item
 
GtkWidget * edit_menu_item
 
GtkWidget * view_menu
 The menu "View" on the main panel: More...
 
GtkWidget * view_menu_item
 
static gpips_view_menu_layout_lineexecute_gpips_execute_and_display_something_outside_the_notifyer_menu_line
 To pass the view name to execute_gpips_execute_and_display_something_outside_the_notifyer(): More...
 

Function Documentation

◆ alloc_first_initialized_window()

int alloc_first_initialized_window ( bool  the_same_as_previous)

Find the first free window if any.

If called with TRUE, give the same as the previous chosen one.

Skip windows with modified text inside :

Skip windows with a retain attribute :

Definition at line 215 of file gtk_edit2.c.

215  {
216  static int next = 0;
217  static int candidate = 0;
218  int i;
219 
220  if (the_same_as_previous)
221  return candidate;
222 
223  for (i = next; i < next + number_of_gpips_windows; i++) {
224  candidate = i % number_of_gpips_windows;
225  /* Skip windows with modified text inside : */
226  if (gpips_gtk_widget_get_sensitive(GTK_WIDGET(edited_file[candidate].save_button)))
227  continue;
228  /* Skip windows with a retain attribute : */
229  if ((bool) gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
230  edited_file[candidate].check_button)))
231  continue;
232 
233  next = candidate + 1;
234  return candidate;
235  }
236  candidate = NO_TEXTSW_AVAILABLE;
237 
238  return candidate;
239 }
#define NO_TEXTSW_AVAILABLE
Definition: gpips-local.h:32
int number_of_gpips_windows
Definition: gtk_edit2.c:86
static EditedFile edited_file[MAX_NUMBER_OF_GPIPS_WINDOWS]
Definition: gtk_edit2.c:85
bool gpips_gtk_widget_get_sensitive(GtkWidget *w)
Definition: gtk_utils.c:60

References edited_file, gpips_gtk_widget_get_sensitive(), NO_TEXTSW_AVAILABLE, and number_of_gpips_windows.

Referenced by edit_notify(), gpips_file_view(), gpips_view_marked_busy(), and notify_hpfc_file_view().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ apply_on_each_options_frame_button()

void apply_on_each_options_frame_button ( GtkWidget *  widget,
gpointer  _func 
)

Definition at line 476 of file gtk_edit2.c.

476  {
477  void (*func)(GtkWidget *);
478  func = (void(*)(GtkWidget *)) _func;
479  if (GTK_IS_BUTTON(widget))
480  func(widget);
481 }

Referenced by apply_on_each_view_item().

+ Here is the caller graph for this function:

◆ apply_on_each_view_item()

void apply_on_each_view_item ( void(*)(GtkWidget *)  function_to_apply_on_each_menu_item,
void(*)(GtkWidget *)  function_to_apply_on_each_panel_item 
)

Skip the "current_selection_mi" and "close" Menu_items:

Now walk through the options frame:

Definition at line 483 of file gtk_edit2.c.

484  {
485  //int i;
486 
487  /* Skip the "current_selection_mi" and "close" Menu_items: */
488  gtk_container_foreach(GTK_CONTAINER(view_menu), (GtkCallback)
489  apply_on_each_view_menu_item, function_to_apply_on_each_menu_item);
490  // for (i = (int) xv_get(view_menu, MENU_NITEMS); i > 0; i--) {
491  // Menu_item menu_item = (Menu_item) xv_get(view_menu, MENU_NTH_ITEM, i);
492  // /* Skip the title item: */
493  // if (!(bool) xv_get(menu_item, MENU_TITLE) && menu_item
494  // != current_selection_menu_item && menu_item != close_menu_item
495  // && xv_get(menu_item, MENU_NOTIFY_PROC) != NULL)
496  // function_to_apply_on_each_menu_item(menu_item);
497  // }
498 
499  /* Now walk through the options frame: */
500  gtk_container_foreach(GTK_CONTAINER(options_frame), (GtkCallback)
502  function_to_apply_on_each_panel_item);
503 }
GtkWidget * view_menu
The menu "View" on the main panel:
Definition: gtk_edit2.c:93
void apply_on_each_options_frame_button(GtkWidget *widget, gpointer _func)
Definition: gtk_edit2.c:476
void apply_on_each_view_menu_item(GtkWidget *widget, gpointer _func)
Definition: gtk_edit2.c:469
GtkWidget * options_frame
Definition: gtk_props.c:67

References apply_on_each_options_frame_button(), apply_on_each_view_menu_item(), options_frame, and view_menu.

Referenced by disable_view_selection(), and enable_view_selection().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ apply_on_each_view_menu_item()

void apply_on_each_view_menu_item ( GtkWidget *  widget,
gpointer  _func 
)

Definition at line 469 of file gtk_edit2.c.

469  {
470  void (*func)(GtkWidget *);
471  func = (void(*)(GtkWidget *)) _func;
472  if (widget != current_selection_menu_item && widget != close_menu_item)
473  func(widget);
474 }
static GtkWidget * close_menu_item
Definition: gtk_edit2.c:88
static GtkWidget * current_selection_menu_item
Definition: gtk_edit2.c:88

References close_menu_item, and current_selection_menu_item.

Referenced by apply_on_each_view_item().

+ Here is the caller graph for this function:

◆ buffer_changed_callback()

void buffer_changed_callback ( GtkWidget *  widget,
gpointer  data 
)

Definition at line 170 of file gtk_edit2.c.

170  {
171  EditedFile * f = (EditedFile *) data;
172  // if the buffer changes, it means the document has been edited
173  if ((!GTK_WIDGET_SENSITIVE(f->save_button)) && f->filename != NULL)
174  gtk_widget_set_sensitive(GTK_WIDGET(f->save_button), TRUE);
175 }
int f(int off1, int off2, int n, float r[n], float a[n], float b[n])
Definition: offsets.c:15

References f().

Referenced by create_edit_window().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ compute_title_string()

char* compute_title_string ( int  window_number)

Definition at line 203 of file gtk_edit2.c.

203  {
204  char title_string_beginning[] = "gpips display facility # ";
205  static char title_string[sizeof(title_string_beginning) + 4];
206 
207  (void) sprintf(title_string, "%s%d", title_string_beginning, window_number
208  + 1);
209 
210  return title_string;
211 }
GtkWidget * window_number
Definition: gtk_status.c:75

References window_number.

Referenced by gpips_file_view().

+ Here is the caller graph for this function:

◆ create_edit_menu()

void create_edit_menu ( )

Now add all the view entries:

Definition at line 563 of file gtk_edit2.c.

563  {
564  GtkWidget *menu_item;
565  gpips_view_menu_layout_line * current_view;
566 
567  current_selection_menu_item = gtk_menu_item_new_with_label("No Selection");
568  g_signal_connect(G_OBJECT(current_selection_menu_item), "activate",
569  G_CALLBACK(current_selection_notify), NULL);
570  gtk_widget_set_sensitive(GTK_WIDGET(current_selection_menu_item), FALSE);
571 
572  close_menu_item = gtk_menu_item_new_with_label("Close");
573  g_signal_connect(G_OBJECT(close_menu_item), "activate", G_CALLBACK(
574  edit_close_notify), NULL);
575  gtk_widget_set_sensitive(GTK_WIDGET(close_menu_item), FALSE);
576 
577  sequential_view_menu_item = gtk_menu_item_new_with_label(SEQUENTIAL_VIEW);
578  g_signal_connect(G_OBJECT(sequential_view_menu_item), "activate",
579  G_CALLBACK(view_notify), NULL);
580 
581  view_menu = gtk_menu_new();
582  gtk_menu_append(GTK_MENU(view_menu), current_selection_menu_item);
583 
584  /* Now add all the view entries: */
585  for (current_view = &gpips_view_menu_layout[0]; current_view->menu_entry_string
586  != NULL; current_view++) {
587  if (strcmp(current_view->menu_entry_string, GPIPS_MENU_SEPARATOR_ID)
588  == 0) {
589  gtk_menu_append(GTK_MENU(view_menu), gtk_separator_menu_item_new());
590  } else {
591  menu_item = gtk_menu_item_new_with_label(
592  current_view->menu_entry_string);
593  g_signal_connect(G_OBJECT(menu_item), "activate", G_CALLBACK(
594  view_notify), NULL);
595  gtk_menu_append(GTK_MENU(view_menu), menu_item);
596  }
597  }
598  gtk_menu_append(GTK_MENU(view_menu), gtk_separator_menu_item_new());
599  gtk_menu_append(GTK_MENU(view_menu), close_menu_item);
600 
601  view_menu_item = gtk_menu_item_new_with_label("View & Edit Menu");
602  gtk_menu_item_set_submenu(GTK_MENU_ITEM(view_menu_item), view_menu);
603 
604  gtk_widget_show_all(view_menu);
605  gtk_widget_show(view_menu_item);
606  gtk_menu_bar_append(GTK_MENU_BAR(main_window_menu_bar), view_menu_item);
607 }
#define SEQUENTIAL_VIEW
Definition: gpips-labels.h:33
#define GPIPS_MENU_SEPARATOR_ID
How it is specified in the layout .h:
Definition: gpips-local.h:84
GtkWidget * main_window_menu_bar
Definition: gpips.c:62
void current_selection_notify(GtkWidget *widget, gpointer data)
Definition: gtk_edit2.c:197
void view_notify(GtkWidget *menu_item, gpointer data)
Definition: gtk_edit2.c:430
static GtkWidget * sequential_view_menu_item
Definition: gtk_edit2.c:89
static gpips_view_menu_layout_line gpips_view_menu_layout[]
lint
Definition: gtk_edit2.c:73
GtkWidget * view_menu_item
Definition: gtk_edit2.c:93
void edit_close_notify(GtkWidget *widget, gpointer data)
Definition: gtk_edit2.c:436
The type describing a View menu entry:
Definition: gpips-local.h:73

References close_menu_item, current_selection_menu_item, current_selection_notify(), edit_close_notify(), GPIPS_MENU_SEPARATOR_ID, gpips_view_menu_layout, main_window_menu_bar, gpips_view_menu_layout_line_s::menu_entry_string, SEQUENTIAL_VIEW, sequential_view_menu_item, view_menu, view_menu_item, and view_notify().

Referenced by create_menus().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ create_edit_window()

void create_edit_window ( )

Definition at line 513 of file gtk_edit2.c.

513  {
514  guint i;
515 
516  GtkWidget * frame;
517  GtkWidget * text_buffer;
518  GtkWidget * vbox;
519  //GtkWidget * buttons_hbox;
520  for (i = 0; i < MAX_NUMBER_OF_GPIPS_WINDOWS; i++) {
521 
522  vbox = gtk_vbox_new(FALSE, 0);
523  //buttons_hbox = gtk_hbox_new(FALSE, 0);
524 
525  gtk_container_add(GTK_CONTAINER(edit_window[i]), vbox);
526 
527  edited_file[i].view = GTK_TEXT_VIEW(gtk_text_view_new());
528  text_buffer = GTK_WIDGET(gtk_text_buffer_new(NULL));
529  gtk_text_view_set_buffer(GTK_TEXT_VIEW(edited_file[i].view),
530  GTK_TEXT_BUFFER(text_buffer));
531  gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(edited_file[i].view), TRUE, FALSE, 0);
532 
533  g_signal_connect(G_OBJECT(text_buffer), "changed", G_CALLBACK(
535 
536  edited_file[i].save_button = GTK_BUTTON(gtk_button_new_with_label("Save"));
537  gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(edited_file[i].save_button), FALSE,
538  FALSE, 0);
539  gtk_widget_set_sensitive(GTK_WIDGET(edited_file[i].save_button), FALSE);
540  g_signal_connect(G_OBJECT(edited_file[i].save_button), "clicked",
541  G_CALLBACK(save_edited_file), &edited_file[i]);
542 
543  //gtk_box_pack_start(GTK_BOX(vbox), buttons_hbox, FALSE, FALSE, 0);
544  frame = gtk_frame_new(NULL);
545  gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
546 
547  // A quoi sert ce check_button
548  // TODO: trouver à quoi il sert
549  edited_file[i].check_button = gtk_check_button_new_with_label(
550  "Retain this window");
551  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
552  edited_file[i].check_button), FALSE);
553  gtk_container_add(GTK_CONTAINER(frame), edited_file[i].check_button);
554  // gtk_box_pack_start(GTK_BOX(frame), edited_file[i].check_button,
555  // FALSE, FALSE, 0);
556 
557  edited_file[i].filename = NULL;
558 
559  gtk_widget_show_all(vbox);
560  }
561 }
GtkWidget * edit_window[MAX_NUMBER_OF_GPIPS_WINDOWS]
Definition: gpips-local.h:37
#define MAX_NUMBER_OF_GPIPS_WINDOWS
How many display wondows can be opened :
Definition: gpips-local.h:30
static void save_edited_file(GtkWidget *widget, gpointer file)
Definition: gtk_edit2.c:177
void buffer_changed_callback(GtkWidget *widget, gpointer data)
Definition: gtk_edit2.c:170
GtkButton * save_button
Definition: gtk_edit2.c:80
GtkTextView * view
Definition: gtk_edit2.c:79
char * filename
Definition: gtk_edit2.c:82
GtkWidget * check_button
Definition: gtk_edit2.c:81

References buffer_changed_callback(), EditedFile::check_button, edit_window, edited_file, EditedFile::filename, MAX_NUMBER_OF_GPIPS_WINDOWS, EditedFile::save_button, save_edited_file(), and EditedFile::view.

Referenced by gpips_main(), and wpips_main().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ current_selection_notify()

void current_selection_notify ( GtkWidget *  widget,
gpointer  data 
)

Definition at line 197 of file gtk_edit2.c.

197  {
198  guint i;
199  for (i = 0; i < number_of_gpips_windows; i++)
200  gtk_widget_show(edit_window[i]);
201 }

References edit_window, and number_of_gpips_windows.

Referenced by create_edit_menu().

+ Here is the caller graph for this function:

◆ disable_item()

void disable_item ( GtkWidget *  item)

Definition at line 461 of file gtk_edit2.c.

461  {
462  gtk_widget_set_sensitive(GTK_WIDGET(item), FALSE);
463 }

Referenced by disable_compile_selection(), disable_option_selection(), disable_transform_selection(), and disable_view_selection().

+ Here is the caller graph for this function:

◆ disable_view_selection()

void disable_view_selection ( )

Definition at line 505 of file gtk_edit2.c.

505  {
507 }
void apply_on_each_view_item(void(*function_to_apply_on_each_menu_item)(GtkWidget *), void(*function_to_apply_on_each_panel_item)(GtkWidget *))
Definition: gtk_edit2.c:483
void disable_item(GtkWidget *item)
Definition: gtk_edit2.c:461

References apply_on_each_view_item(), and disable_item().

Referenced by disable_module_selection(), gpips_main(), and wpips_main().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ edit_close_notify()

void edit_close_notify ( GtkWidget *  widget,
gpointer  data 
)

Definition at line 436 of file gtk_edit2.c.

436  {
437  int i;
438 
439  for (i = 0; i < MAX_NUMBER_OF_GPIPS_WINDOWS; i++)
440  if (!gpips_gtk_widget_get_sensitive(GTK_WIDGET(edited_file[i].save_button)))
441  hide_window(edit_window[i], NULL, NULL);
442 
443  for (i = 0; i < MAX_NUMBER_OF_GPIPS_WINDOWS; i++)
444  if (gpips_gtk_widget_get_sensitive(GTK_WIDGET(edited_file[i].save_button))) {
445  gtk_widget_show(edit_window[i]);
446  prompt_user("File not saved in editor");
447  return;
448  }
449 
450  for (i = 0; i < MAX_NUMBER_OF_GPIPS_WINDOWS; i++)
451  hide_window(edit_window[i], NULL, NULL);
452 
454  gtk_widget_set_sensitive(GTK_WIDGET(current_selection_menu_item), FALSE);
455 
456  gtk_widget_set_sensitive(GTK_WIDGET(close_menu_item), FALSE);
457 
459 }
void prompt_user(string a_printf_format,...)
Definition: gtk_log.c:66
void display_memory_usage()
Definition: gtk_status.c:84
gint hide_window(GtkWidget *window, GdkEvent *ev __attribute__((unused)), gpointer data __attribute__((unused)))
Definition: gtk_utils.c:89
void gpips_gtk_menu_item_set_label(GtkWidget *w, gchar *text)
Definition: gtk_utils.c:64

References close_menu_item, current_selection_menu_item, display_memory_usage(), edit_window, edited_file, gpips_gtk_menu_item_set_label(), gpips_gtk_widget_get_sensitive(), hide_window(), MAX_NUMBER_OF_GPIPS_WINDOWS, and prompt_user().

Referenced by close_workspace_notify(), and create_edit_menu().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ edit_notify()

void edit_notify ( GtkWidget *  widget,
gpointer  data 
)

Is there an available edit_textsw ?

Display the file name and the module name. RK, 2/06/1993 :

Definition at line 101 of file gtk_edit2.c.

101  {
102  char string_filename[SMALL_BUFFER_LENGTH],
103  string_modulename[SMALL_BUFFER_LENGTH];
104  char file_name_in_database[MAXPATHLEN * 2];
105  char * modulename = db_get_current_module_name();
106  char * file_name;
107  int win_nb;
108  char * alternate_gpips_editor;
109 
110  if (modulename == NULL) {
111  prompt_user("No module selected");
112  return;
113  }
114 
115  file_name = db_get_file_resource(DBR_SOURCE_FILE, modulename, TRUE);
116  sprintf(file_name_in_database, "%s/%s", build_pgmwd(
118 
119  if ((alternate_gpips_editor = getenv("PIPS_GPIPS_EDITOR")) != NULL) {
120  char editor_command[MAXPATHLEN * 2];
121  sprintf(editor_command, "%s %s &", alternate_gpips_editor,
122  file_name_in_database);
123  safe_system(editor_command);
124  } else {
125  /* Is there an available edit_textsw ? */
126  if ((win_nb = alloc_first_initialized_window(FALSE))
127  == NO_TEXTSW_AVAILABLE) {
128  prompt_user("None of the text-windows is available");
129  return;
130  }
131 
132  sprintf(string_filename, "File: %s", file_name);
133  sprintf(string_modulename, "Module: %s", modulename);
134 
135  /* Display the file name and the module name. RK, 2/06/1993 : */
136  gtk_window_set_title(GTK_WINDOW(edit_window[win_nb]), concatenate(
137  "gpips edit facility - ", string_filename, " - ",
138  string_modulename, NULL));
139 
140  // Charge le fichier file_name_in_database dans le text_view dispo
141  gchar * file_in_mem;
142  int size;
143  GtkTextBuffer * txt_buff;
144  GtkTextIter iter;
145 
146  edited_file[win_nb].filename = file_name_in_database;
147  size = load_file(file_name_in_database, &file_in_mem);
148  txt_buff = gtk_text_view_get_buffer(GTK_TEXT_VIEW(
149  edited_file[win_nb].view));
150  gtk_text_buffer_set_text(GTK_TEXT_BUFFER(txt_buff), file_in_mem, size);
151 
152  gtk_text_buffer_get_start_iter(GTK_TEXT_BUFFER(txt_buff), &iter);
153  gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(edited_file[win_nb].view),
154  &iter, 0.0, FALSE, 0.0, 0.0);
155  gtk_widget_show_all(edit_window[win_nb]);
156 
157  g_free(file_in_mem);
158 
159  gtk_widget_set_sensitive(GTK_WIDGET(edited_file[win_nb].save_button),
160  TRUE);
161 
163  GTK_WIDGET(GTK_MENU_ITEM(current_selection_menu_item)), "Lasts");
164  gtk_widget_set_sensitive(GTK_WIDGET(current_selection_menu_item), TRUE);
165 
166  gtk_widget_set_sensitive(GTK_WIDGET(close_menu_item), TRUE);
167  }
168 }
string db_get_current_module_name(void)
Also used to check whether set...
Definition: database.c:1059
#define SMALL_BUFFER_LENGTH
Definition: gpips-local.h:24
int alloc_first_initialized_window(bool the_same_as_previous)
Find the first free window if any.
Definition: gtk_edit2.c:215
gint load_file(const gchar *filename, gchar **data)
Definition: gtk_utils.c:94
#define MAXPATHLEN
MAXPATHLEN is defined in <sys/param.h> for SunOS...
Definition: misc-local.h:203
void safe_system(string)
system.c
Definition: system.c:38
string concatenate(const char *,...)
Return the concatenation of the given strings.
Definition: string.c:183
#define db_get_file_resource
#define build_pgmwd
string db_get_current_workspace_name(void)
the function is used to check that there is some current workspace...
Definition: workspace.c:82
static string file_name

References alloc_first_initialized_window(), build_pgmwd, close_menu_item, concatenate(), current_selection_menu_item, db_get_current_module_name(), db_get_current_workspace_name(), db_get_file_resource, edit_window, edited_file, file_name, EditedFile::filename, gpips_gtk_menu_item_set_label(), load_file(), MAXPATHLEN, NO_TEXTSW_AVAILABLE, prompt_user(), safe_system(), and SMALL_BUFFER_LENGTH.

Referenced by create_transform_menu().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ enable_item()

void enable_item ( GtkWidget *  item)

Definition at line 465 of file gtk_edit2.c.

465  {
466  gtk_widget_set_sensitive(GTK_WIDGET(item), TRUE);
467 }

Referenced by enable_compile_selection(), enable_option_selection(), enable_transform_selection(), and enable_view_selection().

+ Here is the caller graph for this function:

◆ enable_view_selection()

void enable_view_selection ( )

Definition at line 509 of file gtk_edit2.c.

509  {
511 }
void enable_item(GtkWidget *item)
Definition: gtk_edit2.c:465

References apply_on_each_view_item(), and enable_item().

Referenced by enable_module_selection().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ execute_gpips_execute_and_display_something_outside_the_notifier()

void execute_gpips_execute_and_display_something_outside_the_notifier ( )

To execute something and display some Pips output with gpips, called outside the notifyer:

Execute the needed method:

Definition at line 367 of file gtk_edit2.c.

367  {
368  gpips_view_menu_layout_line * menu_line =
370 
371  /* Execute the needed method: */
372  menu_line->method_function_to_use(menu_line);
373 
375 }
static gpips_view_menu_layout_line * execute_gpips_execute_and_display_something_outside_the_notifyer_menu_line
To pass the view name to execute_gpips_execute_and_display_something_outside_the_notifyer():
Definition: gtk_edit2.c:98
void(* method_function_to_use)(struct gpips_view_menu_layout_line_s *)
Definition: gpips-local.h:76

References display_memory_usage(), execute_gpips_execute_and_display_something_outside_the_notifyer_menu_line, and gpips_view_menu_layout_line_s::method_function_to_use.

Referenced by gpips_main_loop().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gpips_display_graph_file_display()

void gpips_display_graph_file_display ( gpips_view_menu_layout_line menu_line)

Use daVinci to display a graph information:

Preprocess the graph to be understandable by daVinci :

Definition at line 329 of file gtk_edit2.c.

329  {
330  char * file_name;
331  char a_buffer[SMALL_BUFFER_LENGTH];
332 
334 
335  user_log("Displaying in a \"daVinci\" window...\n");
336 
337  /* Preprocess the graph to be understandable by daVinci : */
338 
339  (void) sprintf(a_buffer, "pips_graph2daVinci -launch_daVinci %s", file_name);
340  safe_system(a_buffer);
341 
342  free(file_name);
343 }
void user_log(const char *format,...)
Definition: message.c:234
void free(void *)
string build_view_file(const char *)
view.c
Definition: view.c:97

References build_view_file(), file_name, free(), gpips_view_menu_layout_line_s::resource_name_to_view, safe_system(), SMALL_BUFFER_LENGTH, and user_log().

+ Here is the call graph for this function:

◆ gpips_display_plain_file()

void gpips_display_plain_file ( gpips_view_menu_layout_line menu_line)

Use some text viewer to display the resource:

Definition at line 346 of file gtk_edit2.c.

346  {
347  char title_module_name[SMALL_BUFFER_LENGTH];
348 
349  char * print_type = menu_line->resource_name_to_view;
350  char * icon_name = menu_line->icon_name;
351  char * label = menu_line->menu_entry_string;
352 
353  (void) sprintf(title_module_name, "Module: %s",
355  if (gpips_view_marked_busy(title_module_name, label, icon_name,
358 
359  gpips_file_view(file_name, title_module_name, label, icon_name,
361 
362  free(file_name);
363  }
364 }
void gpips_file_view(char *file_name, const char *title_module_name, char *title_label, char *icon_name, char *icon_title)
Display a file in a gpips window:
Definition: gtk_edit2.c:271
bool gpips_view_marked_busy(char *title_module_name, char *title_label, char *icon_name, char *icon_title)
Mark a gpips window as busy:
Definition: gtk_edit2.c:242
void print_type(type)
For debugging.
Definition: type.c:111

References build_view_file(), db_get_current_module_name(), file_name, free(), gpips_file_view(), gpips_view_marked_busy(), gpips_view_menu_layout_line_s::icon_name, gpips_view_menu_layout_line_s::menu_entry_string, print_type(), gpips_view_menu_layout_line_s::resource_name_to_view, and SMALL_BUFFER_LENGTH.

+ Here is the call graph for this function:

◆ gpips_execute_and_display_something()

void gpips_execute_and_display_something ( char *  resource_name)

To execute something and display some Pips output with gpips.

Translate the resource name in a menu entry descriptor:

Definition at line 388 of file gtk_edit2.c.

388  {
390  gpips_view_menu_layout_line * current_view;
391 
392  if (module_name == NULL) {
393  prompt_user("No module selected");
394  return;
395  }
396 
397  /* Translate the resource name in a menu entry descriptor: */
398  for (current_view = &gpips_view_menu_layout[0]; current_view->menu_entry_string
399  != NULL; current_view++)
400  if (strcmp(resource_name, current_view->resource_name_to_view) == 0)
401  break;
402 
403  pips_assert("Resource related to the menu entry not found",
404  current_view->menu_entry_string != NULL);
405 
407 }
#define resource_name(x)
Definition: database.h:108
const char * module_name(const char *s)
Return the module part of an entity name.
Definition: entity_names.c:296
void gpips_execute_and_display_something_outside_the_notifyer(gpips_view_menu_layout_line *menu_line)
Definition: gtk_edit2.c:377
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
Definition: misc-local.h:172

References db_get_current_module_name(), gpips_execute_and_display_something_outside_the_notifyer(), gpips_view_menu_layout, gpips_view_menu_layout_line_s::menu_entry_string, module_name(), pips_assert, prompt_user(), resource_name, and gpips_view_menu_layout_line_s::resource_name_to_view.

+ Here is the call graph for this function:

◆ gpips_execute_and_display_something_from_alias()

void gpips_execute_and_display_something_from_alias ( const char *  alias_name)

To execute something and display some Pips output with gpips by knowing its alias:

Definition at line 410 of file gtk_edit2.c.

410  {
412  gpips_view_menu_layout_line * current_view;
413 
414  if (module_name == NULL) {
415  prompt_user("No module selected");
416  return;
417  }
418 
419  for (current_view = &gpips_view_menu_layout[0]; current_view->menu_entry_string
420  != NULL; current_view++)
421  if (strcmp(alias_name, current_view->menu_entry_string) == 0)
422  break;
423 
424  pips_assert("Resource related to the menu entry not found",
425  current_view->menu_entry_string != NULL);
426 
428 }

References db_get_current_module_name(), gpips_execute_and_display_something_outside_the_notifyer(), gpips_view_menu_layout, gpips_view_menu_layout_line_s::menu_entry_string, module_name(), pips_assert, and prompt_user().

Referenced by options_frame_to_view_menu_gateway(), and view_notify().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gpips_execute_and_display_something_outside_the_notifyer()

void gpips_execute_and_display_something_outside_the_notifyer ( gpips_view_menu_layout_line menu_line)

Ask to execute the execute_gpips_execute_and_display_something_outside_the_notifyer():

I guess the function above does not return...

Definition at line 377 of file gtk_edit2.c.

378  {
380  = menu_line;
381  /* Ask to execute the
382  execute_gpips_execute_and_display_something_outside_the_notifyer(): */
384  /* I guess the function above does not return... */
385 }
@ GPIPS_EXECUTE_AND_DISPLAY
Definition: gpips-local.h:63
void execute_main_loop_command(gpips_main_loop_command_type command)
To ask pipsmake to stop as soon as possible:
Definition: gpips.c:267

References execute_gpips_execute_and_display_something_outside_the_notifyer_menu_line, execute_main_loop_command(), and GPIPS_EXECUTE_AND_DISPLAY.

Referenced by gpips_execute_and_display_something(), and gpips_execute_and_display_something_from_alias().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gpips_file_view()

void gpips_file_view ( char *  file_name,
const char *  title_module_name,
char *  title_label,
char *  icon_name,
char *  icon_title 
)

Display a file in a gpips window:

Well, something got wrong...

Is there an available edit_textsw ? Ask for the same one allocated for gpips_view_marked_busy()

Display the file name and the module name. RK, 2/06/1993 :

Parameters
title_labelThe module name for example
icon_name"Sequential View" for exemple

Definition at line 271 of file gtk_edit2.c.

273  {
274  if (file_name == NULL) {
275  /* Well, something got wrong... */
276  prompt_user("Nothing available to display...");
277  return;
278  }
279 
280  int window_number;
281 
282  /* Is there an available edit_textsw ? Ask for the same one
283  allocated for gpips_view_marked_busy() */
285  == NO_TEXTSW_AVAILABLE) {
286  prompt_user("None of the text-windows is available");
287  return;
288  }
289  /* Display the file name and the module name. RK, 2/06/1993 : */
290  gtk_window_set_title(GTK_WINDOW(edit_window[window_number]), concatenate(
291  compute_title_string(window_number), " - ", title_label, " - ",
292  title_module_name, NULL));
293 
294  // set_pips_icon(edit_window[window_number], icon_name, icon_title); TODO: Fix icones!
295 
296  // Charge le fichier file_name dans edited_file[window_number]
297  gchar * file_in_mem;
298  int size;
299  GtkTextBuffer * txt_buff;
300  GtkTextIter iter;
301 
303  size = load_file(file_name, &file_in_mem);
304  txt_buff = gtk_text_view_get_buffer(GTK_TEXT_VIEW(
305  edited_file[window_number].view));
306  gtk_text_buffer_set_text(GTK_TEXT_BUFFER(txt_buff), file_in_mem, size);
307 
308  gtk_text_buffer_get_start_iter(GTK_TEXT_BUFFER(txt_buff), &iter);
309  gtk_text_view_scroll_to_iter(
310  GTK_TEXT_VIEW(edited_file[window_number].view), &iter, 0.0, FALSE,
311  0.0, 0.0);
312  gtk_widget_show_all(edit_window[window_number]);
313 
314  g_free(file_in_mem);
315 
316  gtk_widget_set_sensitive(
317  GTK_WIDGET(edited_file[window_number].save_button), TRUE);
318 
319  gtk_widget_show(edit_window[window_number]);
320 
322  gtk_widget_set_sensitive(current_selection_menu_item, TRUE);
323 
324  gtk_widget_set_sensitive(close_menu_item, TRUE);
326 }
char * compute_title_string(int window_number)
Definition: gtk_edit2.c:203

References alloc_first_initialized_window(), close_menu_item, compute_title_string(), concatenate(), current_selection_menu_item, display_memory_usage(), edit_window, edited_file, file_name, EditedFile::filename, gpips_gtk_menu_item_set_label(), load_file(), NO_TEXTSW_AVAILABLE, prompt_user(), and window_number.

Referenced by gpips_display_plain_file(), and notify_hpfc_file_view().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gpips_view_marked_busy()

bool gpips_view_marked_busy ( char *  title_module_name,
char *  title_label,
char *  icon_name,
char *  icon_title 
)

Mark a gpips window as busy:

Is there an available edit_textsw ?

Display the file name and the module name. RK, 2/06/1993 :

Parameters
title_labelThe module name for example
icon_name"Sequential View" for exemple

Definition at line 242 of file gtk_edit2.c.

244  {
245  char busy_label[SMALL_BUFFER_LENGTH];
246 
247  int window_number;
248  /* Is there an available edit_textsw ? */
250  == NO_TEXTSW_AVAILABLE) {
251  prompt_user("None of the text-windows is available");
252  return FALSE;
253  }
254  (void) sprintf(busy_label, "*Computing %s * ...", title_label);
255  /* Display the file name and the module name. RK, 2/06/1993 : */
256  gtk_window_set_title(GTK_WINDOW(edit_window[window_number]), concatenate(
257  "gpips edit facility - ", busy_label, " - ", title_module_name,
258  NULL));
259 
260  //set_pips_icon(edit_frame[window_number], icon_name, icon_title);
261 
262  // unhide_window(edit_frame[window_number]);
263  gtk_widget_show(edit_window[window_number]);
264 
266 
267  return TRUE;
268 }

References alloc_first_initialized_window(), concatenate(), display_memory_usage(), edit_window, NO_TEXTSW_AVAILABLE, prompt_user(), SMALL_BUFFER_LENGTH, and window_number.

Referenced by gpips_display_plain_file().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ save_edited_file()

static void save_edited_file ( GtkWidget *  widget,
gpointer  file 
)
static

Definition at line 177 of file gtk_edit2.c.

177  {
178  EditedFile * f = (EditedFile *) file;
179  char * filename = f->filename;
180  GtkTextView * view = f->view;
181  GtkTextBuffer * buff = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));
182 
183  GtkTextIter start, end;
184  gtk_text_buffer_get_start_iter(GTK_TEXT_BUFFER(buff), &start);
185  gtk_text_buffer_get_end_iter(GTK_TEXT_BUFFER(buff), &end);
186 
187  gchar * txt = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(buff), &start, &end,
188  TRUE);
189 
190  FILE * fd = fopen(filename, "w+");
191  fprintf(fd, "%s", txt);
192  fclose(fd);
193 
194  gtk_widget_set_sensitive(GTK_WIDGET(current_selection_menu_item), FALSE);
195 }
static char start[1024]
The name of the variable from which to start counting domain numbers.
Definition: genLisp.c:55
char end
Definition: gtk_status.c:82
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...

References current_selection_menu_item, end, f(), fprintf(), and start.

Referenced by create_edit_window().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ view_notify()

void view_notify ( GtkWidget *  menu_item,
gpointer  data 
)

Translate the menu string in a resource name:

Definition at line 430 of file gtk_edit2.c.

430  {
431  /* Translate the menu string in a resource name: */
432  const char * label = gpips_gtk_menu_item_get_label(menu_item);
434 }
void gpips_execute_and_display_something_from_alias(const char *alias_name)
To execute something and display some Pips output with gpips by knowing its alias:
Definition: gtk_edit2.c:410
const char * gpips_gtk_menu_item_get_label(GtkWidget *w)
Definition: gtk_utils.c:43

References gpips_execute_and_display_something_from_alias(), and gpips_gtk_menu_item_get_label().

Referenced by create_edit_menu().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ close_menu_item

GtkWidget * close_menu_item
static

◆ current_selection_menu_item

GtkWidget* current_selection_menu_item
static

◆ edit_menu_item

GtkWidget* edit_menu_item

Definition at line 90 of file gtk_edit2.c.

Referenced by create_transform_menu().

◆ edited_file

◆ execute_gpips_execute_and_display_something_outside_the_notifyer_menu_line

gpips_view_menu_layout_line* execute_gpips_execute_and_display_something_outside_the_notifyer_menu_line
static
Initial value:
=
NULL

To pass the view name to execute_gpips_execute_and_display_something_outside_the_notifyer():

Definition at line 98 of file gtk_edit2.c.

Referenced by execute_gpips_execute_and_display_something_outside_the_notifier(), and gpips_execute_and_display_something_outside_the_notifyer().

◆ gpips_view_menu_layout

gpips_view_menu_layout_line gpips_view_menu_layout[]
static
Initial value:
= {
{ NULL, NULL, NULL } }

lint

Include the label names:

Definition at line 73 of file gtk_edit2.c.

Referenced by create_edit_menu(), gpips_execute_and_display_something(), and gpips_execute_and_display_something_from_alias().

◆ number_of_gpips_windows

int number_of_gpips_windows = INITIAL_NUMBER_OF_GPIPS_WINDOWS

◆ sequential_view_menu_item

GtkWidget * sequential_view_menu_item
static

Definition at line 89 of file gtk_edit2.c.

Referenced by create_edit_menu().

◆ vcid_xv_edit2

char vcid_xv_edit2[]
Initial value:
=
"%A% ($Date: 1998/04/16 14:45:19 $, ) version $Revision: 12279 $, got on %D%, %T% [%P%].\n ï¿œcole des Mines de Paris Proprietary."

A% (

Date
1998/04/16 14:45:19

, ) version

Revision
12279

, got on D%, T% [P%].
Copyright (c) ï¿œcole des Mines de Paris Proprietary.

Definition at line 31 of file gtk_edit2.c.

◆ view_menu

GtkWidget* view_menu

The menu "View" on the main panel:

Definition at line 93 of file gtk_edit2.c.

Referenced by apply_on_each_view_item(), build_options_menu_and_panel(), create_edit_menu(), and synch_viewmenu_and_opframe().

◆ view_menu_item

GtkWidget * view_menu_item

Definition at line 93 of file gtk_edit2.c.

Referenced by build_options_menu_and_panel(), and create_edit_menu().