PIPS
gtk_edit2.c
Go to the documentation of this file.
1 /*
2 
3  $Id: gtk_edit2.c 23065 2016-03-02 09:05:50Z coelho $
4 
5  Copyright 1989-2016 MINES ParisTech
6 
7  This file is part of PIPS.
8 
9  PIPS is free software: you can redistribute it and/or modify it
10  under the terms of the GNU General Public License as published by
11  the Free Software Foundation, either version 3 of the License, or
12  any later version.
13 
14  PIPS is distributed in the hope that it will be useful, but WITHOUT ANY
15  WARRANTY; without even the implied warranty of MERCHANTABILITY or
16  FITNESS FOR A PARTICULAR PURPOSE.
17 
18  See the GNU General Public License for more details.
19 
20  You should have received a copy of the GNU General Public License
21  along with PIPS. If not, see <http://www.gnu.org/licenses/>.
22 
23 */
24 #ifdef HAVE_CONFIG_H
25  #include "pips_config.h"
26 #endif
27 /* %A% ($Date: 1998/04/16 14:45:19 $, ) version $Revision: 12279 $, got on %D%, %T% [%P%].\n Copyright (c) ï¿œcole des Mines de Paris Proprietary. */
28 
29 #ifndef lint
30 char
32  "%A% ($Date: 1998/04/16 14:45:19 $, ) version $Revision: 12279 $, got on %D%, %T% [%P%].\n ï¿œcole des Mines de Paris Proprietary.";
33 #endif /* lint */
34 
35 #include <stdlib.h>
36 #include <stdio.h>
37 #include <sys/param.h>
38 
39 #include <sys/time.h>
40 #include <sys/resource.h>
41 
42 #undef test_undefined // also defined in glib included from gtk
43 #include <gtk/gtk.h>
44 
45 #if (defined(TEXT))
46 #undef TEXT
47 #endif
48 
49 #if (defined(TEXT_TYPE))
50 #undef TEXT_TYPE
51 #endif
52 
53 #include "genC.h"
54 #include "linear.h"
55 
56 #include "misc.h"
57 #include "pipsdbm.h"
58 
59 #include "ri-util.h"
60 
61 #include "database.h"
62 #include "pipsmake.h"
63 
64 #include "resources.h"
65 #include "constants.h"
66 #include "top-level.h"
67 
68 #include "gpips.h"
69 
70 /* Include the label names: */
71 #include "gpips-labels.h"
72 
74 #include "gpips_view_menu_layout.h"
75  /* No more views */
76  { NULL, NULL, NULL } };
77 
78 typedef struct {
79  GtkTextView * view;
80  GtkButton * save_button;
81  GtkWidget * check_button;
82  char * filename;
83 } EditedFile;
84 
87 
90 GtkWidget *edit_menu_item;
91 
92 /* The menu "View" on the main panel: */
94 
95 /* To pass the view name to
96  execute_gpips_execute_and_display_something_outside_the_notifyer(): */
99  NULL;
100 
101 void edit_notify(GtkWidget * widget, gpointer data) {
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 }
169 
170 void buffer_changed_callback(GtkWidget * widget, gpointer data) {
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 }
176 
177 static void save_edited_file(GtkWidget * widget, gpointer file) {
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 }
196 
197 void current_selection_notify(GtkWidget * widget, gpointer data) {
198  guint i;
199  for (i = 0; i < number_of_gpips_windows; i++)
200  gtk_widget_show(edit_window[i]);
201 }
202 
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 }
212 
213 /* Find the first free window if any. If called with TRUE, give the
214  same as the previous chosen one. */
215 int alloc_first_initialized_window(bool the_same_as_previous) {
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 }
240 
241 /* Mark a gpips window as busy: */
242 bool gpips_view_marked_busy(char * title_module_name, /* The module name for example */
243 char * title_label, /* "Sequential View" for exemple */
244 char * icon_name, char * icon_title) {
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 }
269 
270 /* Display a file in a gpips window: */
271 void gpips_file_view(char * file_name, const char * title_module_name, /* The module name for example */
272 char * title_label, /* "Sequential View" for exemple */
273 char * icon_name, char * icon_title) {
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 }
327 
328 /* Use daVinci to display a graph information: */
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 }
344 
345 /* Use some text viewer to display the resource: */
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 }
365 
366 /* To execute something and display some Pips output with gpips, called outside the notifyer: */
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 }
376 
378  gpips_view_menu_layout_line * menu_line) {
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 }
386 
387 /* To execute something and display some Pips output with gpips */
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 }
408 
409 /* To execute something and display some Pips output with gpips by knowing its alias: */
410 void gpips_execute_and_display_something_from_alias(const char * alias_name) {
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 }
429 
430 void view_notify(GtkWidget * menu_item, gpointer data) {
431  /* Translate the menu string in a resource name: */
432  const char * label = gpips_gtk_menu_item_get_label(menu_item);
434 }
435 
436 void edit_close_notify(GtkWidget * widget, gpointer data) {
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 }
460 
461 void disable_item(GtkWidget * item) {
462  gtk_widget_set_sensitive(GTK_WIDGET(item), FALSE);
463 }
464 
465 void enable_item(GtkWidget * item) {
466  gtk_widget_set_sensitive(GTK_WIDGET(item), TRUE);
467 }
468 
469 void apply_on_each_view_menu_item(GtkWidget * widget, gpointer _func) {
470  void (*func)(GtkWidget *);
471  func = (void(*)(GtkWidget *)) _func;
472  if (widget != current_selection_menu_item && widget != close_menu_item)
473  func(widget);
474 }
475 
476 void apply_on_each_options_frame_button(GtkWidget * widget, gpointer _func) {
477  void (*func)(GtkWidget *);
478  func = (void(*)(GtkWidget *)) _func;
479  if (GTK_IS_BUTTON(widget))
480  func(widget);
481 }
482 
483 void apply_on_each_view_item(void(* function_to_apply_on_each_menu_item)(
484  GtkWidget *), void(* function_to_apply_on_each_panel_item)(GtkWidget *)) {
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 }
504 
507 }
508 
511 }
512 
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 }
562 
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 }
void user_log(const char *format,...)
Definition: message.c:234
string db_get_current_module_name(void)
Also used to check whether set...
Definition: database.c:1059
#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
static char start[1024]
The name of the variable from which to start counting domain numbers.
Definition: genLisp.c:55
void free(void *)
#define SEQUENTIAL_VIEW
Definition: gpips-labels.h:33
#define INITIAL_NUMBER_OF_GPIPS_WINDOWS
Definition: gpips-local.h:31
GtkWidget * edit_window[MAX_NUMBER_OF_GPIPS_WINDOWS]
Definition: gpips-local.h:37
#define SMALL_BUFFER_LENGTH
Definition: gpips-local.h:24
#define MAX_NUMBER_OF_GPIPS_WINDOWS
How many display wondows can be opened :
Definition: gpips-local.h:30
@ GPIPS_EXECUTE_AND_DISPLAY
Definition: gpips-local.h:63
#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
#define NO_TEXTSW_AVAILABLE
Definition: gpips-local.h:32
void execute_main_loop_command(gpips_main_loop_command_type command)
To ask pipsmake to stop as soon as possible:
Definition: gpips.c:267
int alloc_first_initialized_window(bool the_same_as_previous)
Find the first free window if any.
Definition: gtk_edit2.c:215
void current_selection_notify(GtkWidget *widget, gpointer data)
Definition: gtk_edit2.c:197
void gpips_display_graph_file_display(gpips_view_menu_layout_line *menu_line)
Use daVinci to display a graph information:
Definition: gtk_edit2.c:329
void create_edit_menu()
Definition: gtk_edit2.c:563
GtkWidget * view_menu
The menu "View" on the main panel:
Definition: gtk_edit2.c:93
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
void create_edit_window()
Definition: gtk_edit2.c:513
char * compute_title_string(int window_number)
Definition: gtk_edit2.c:203
static GtkWidget * close_menu_item
Definition: gtk_edit2.c:88
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 gpips_execute_and_display_something_outside_the_notifyer(gpips_view_menu_layout_line *menu_line)
Definition: gtk_edit2.c:377
int number_of_gpips_windows
Definition: gtk_edit2.c:86
static EditedFile edited_file[MAX_NUMBER_OF_GPIPS_WINDOWS]
Definition: gtk_edit2.c:85
void edit_notify(GtkWidget *widget, gpointer data)
Definition: gtk_edit2.c:101
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
static void save_edited_file(GtkWidget *widget, gpointer file)
Definition: gtk_edit2.c:177
void view_notify(GtkWidget *menu_item, gpointer data)
Definition: gtk_edit2.c:430
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
GtkWidget * edit_menu_item
Definition: gtk_edit2.c:90
static GtkWidget * sequential_view_menu_item
Definition: gtk_edit2.c:89
void apply_on_each_options_frame_button(GtkWidget *widget, gpointer _func)
Definition: gtk_edit2.c:476
void disable_item(GtkWidget *item)
Definition: gtk_edit2.c:461
void disable_view_selection()
Definition: gtk_edit2.c:505
char vcid_xv_edit2[]
A% (
Definition: gtk_edit2.c:31
static gpips_view_menu_layout_line gpips_view_menu_layout[]
lint
Definition: gtk_edit2.c:73
void gpips_display_plain_file(gpips_view_menu_layout_line *menu_line)
Use some text viewer to display the resource:
Definition: gtk_edit2.c:346
void execute_gpips_execute_and_display_something_outside_the_notifier()
To execute something and display some Pips output with gpips, called outside the notifyer:
Definition: gtk_edit2.c:367
static GtkWidget * current_selection_menu_item
Definition: gtk_edit2.c:88
void enable_view_selection()
Definition: gtk_edit2.c:509
GtkWidget * view_menu_item
Definition: gtk_edit2.c:93
void buffer_changed_callback(GtkWidget *widget, gpointer data)
Definition: gtk_edit2.c:170
void apply_on_each_view_menu_item(GtkWidget *widget, gpointer _func)
Definition: gtk_edit2.c:469
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
void gpips_execute_and_display_something(char *resource_name)
To execute something and display some Pips output with gpips.
Definition: gtk_edit2.c:388
void edit_close_notify(GtkWidget *widget, gpointer data)
Definition: gtk_edit2.c:436
void enable_item(GtkWidget *item)
Definition: gtk_edit2.c:465
void prompt_user(string a_printf_format,...)
Definition: gtk_log.c:66
GtkWidget * options_frame
Definition: gtk_props.c:67
void display_memory_usage()
Definition: gtk_status.c:84
GtkWidget * window_number
Definition: gtk_status.c:75
char end
Definition: gtk_status.c:82
bool gpips_gtk_widget_get_sensitive(GtkWidget *w)
Definition: gtk_utils.c:60
const char * gpips_gtk_menu_item_get_label(GtkWidget *w)
Definition: gtk_utils.c:43
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
gint load_file(const gchar *filename, gchar **data)
Definition: gtk_utils.c:94
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
Definition: misc-local.h:172
#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
int f(int off1, int off2, int n, float r[n], float a[n], float b[n])
Definition: offsets.c:15
#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
string build_view_file(const char *)
view.c
Definition: view.c:97
void print_type(type)
For debugging.
Definition: type.c:111
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
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
The type describing a View menu entry:
Definition: gpips-local.h:73
void(* method_function_to_use)(struct gpips_view_menu_layout_line_s *)
Definition: gpips-local.h:76
static string file_name