25 #include "pips_config.h"
32 "%A% ($Date: 1998/04/16 14:45:19 $, ) version $Revision: 12279 $, got on %D%, %T% [%P%].\n ï¿œcole des Mines de Paris Proprietary.";
37 #include <sys/param.h>
40 #include <sys/resource.h>
49 #if (defined(TEXT_TYPE))
64 #include "resources.h"
65 #include "constants.h"
76 { NULL, NULL, NULL } };
108 char * alternate_gpips_editor;
110 if (modulename == NULL) {
116 sprintf(file_name_in_database,
"%s/%s",
build_pgmwd(
119 if ((alternate_gpips_editor = getenv(
"PIPS_GPIPS_EDITOR")) != NULL) {
121 sprintf(editor_command,
"%s %s &", alternate_gpips_editor,
122 file_name_in_database);
128 prompt_user(
"None of the text-windows is available");
132 sprintf(string_filename,
"File: %s",
file_name);
133 sprintf(string_modulename,
"Module: %s", modulename);
137 "gpips edit facility - ", string_filename,
" - ",
138 string_modulename, NULL));
143 GtkTextBuffer * txt_buff;
147 size =
load_file(file_name_in_database, &file_in_mem);
148 txt_buff = gtk_text_view_get_buffer(GTK_TEXT_VIEW(
150 gtk_text_buffer_set_text(GTK_TEXT_BUFFER(txt_buff), file_in_mem, size);
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);
159 gtk_widget_set_sensitive(GTK_WIDGET(
edited_file[win_nb].save_button),
173 if ((!GTK_WIDGET_SENSITIVE(
f->save_button)) &&
f->filename != NULL)
174 gtk_widget_set_sensitive(GTK_WIDGET(
f->save_button), TRUE);
179 char * filename =
f->filename;
180 GtkTextView * view =
f->view;
181 GtkTextBuffer * buff = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));
184 gtk_text_buffer_get_start_iter(GTK_TEXT_BUFFER(buff), &
start);
185 gtk_text_buffer_get_end_iter(GTK_TEXT_BUFFER(buff), &
end);
187 gchar * txt = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(buff), &
start, &
end,
190 FILE * fd = fopen(filename,
"w+");
204 char title_string_beginning[] =
"gpips display facility # ";
205 static char title_string[
sizeof(title_string_beginning) + 4];
207 (void) sprintf(title_string,
"%s%d", title_string_beginning,
window_number
217 static int candidate = 0;
220 if (the_same_as_previous)
229 if ((
bool) gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
233 next = candidate + 1;
244 char * icon_name,
char * icon_title) {
251 prompt_user(
"None of the text-windows is available");
254 (void) sprintf(busy_label,
"*Computing %s * ...", title_label);
257 "gpips edit facility - ", busy_label,
" - ", title_module_name,
273 char * icon_name,
char * icon_title) {
286 prompt_user(
"None of the text-windows is available");
292 title_module_name, NULL));
299 GtkTextBuffer * txt_buff;
304 txt_buff = gtk_text_view_get_buffer(GTK_TEXT_VIEW(
306 gtk_text_buffer_set_text(GTK_TEXT_BUFFER(txt_buff), file_in_mem, size);
308 gtk_text_buffer_get_start_iter(GTK_TEXT_BUFFER(txt_buff), &iter);
309 gtk_text_view_scroll_to_iter(
316 gtk_widget_set_sensitive(
335 user_log(
"Displaying in a \"daVinci\" window...\n");
339 (void) sprintf(a_buffer,
"pips_graph2daVinci -launch_daVinci %s",
file_name);
353 (void) sprintf(title_module_name,
"Module: %s",
399 != NULL; current_view++)
403 pips_assert(
"Resource related to the menu entry not found",
420 != NULL; current_view++)
424 pips_assert(
"Resource related to the menu entry not found",
462 gtk_widget_set_sensitive(GTK_WIDGET(item), FALSE);
466 gtk_widget_set_sensitive(GTK_WIDGET(item), TRUE);
470 void (*func)(GtkWidget *);
471 func = (void(*)(GtkWidget *)) _func;
477 void (*func)(GtkWidget *);
478 func = (void(*)(GtkWidget *)) _func;
479 if (GTK_IS_BUTTON(widget))
484 GtkWidget *),
void(* function_to_apply_on_each_panel_item)(GtkWidget *)) {
488 gtk_container_foreach(GTK_CONTAINER(
view_menu), (GtkCallback)
500 gtk_container_foreach(GTK_CONTAINER(
options_frame), (GtkCallback)
502 function_to_apply_on_each_panel_item);
517 GtkWidget * text_buffer;
522 vbox = gtk_vbox_new(FALSE, 0);
525 gtk_container_add(GTK_CONTAINER(
edit_window[i]), vbox);
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);
533 g_signal_connect(G_OBJECT(text_buffer),
"changed", G_CALLBACK(
537 gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(
edited_file[i].save_button), FALSE,
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",
544 frame = gtk_frame_new(NULL);
545 gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
550 "Retain this window");
551 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
553 gtk_container_add(GTK_CONTAINER(frame),
edited_file[i].check_button);
559 gtk_widget_show_all(vbox);
564 GtkWidget *menu_item;
586 != NULL; current_view++) {
589 gtk_menu_append(GTK_MENU(
view_menu), gtk_separator_menu_item_new());
591 menu_item = gtk_menu_item_new_with_label(
593 g_signal_connect(G_OBJECT(menu_item),
"activate", G_CALLBACK(
595 gtk_menu_append(GTK_MENU(
view_menu), menu_item);
598 gtk_menu_append(GTK_MENU(
view_menu), gtk_separator_menu_item_new());
601 view_menu_item = gtk_menu_item_new_with_label(
"View & Edit Menu");
void user_log(const char *format,...)
string db_get_current_module_name(void)
Also used to check whether set...
const char * module_name(const char *s)
Return the module part of an entity name.
static char start[1024]
The name of the variable from which to start counting domain numbers.
#define INITIAL_NUMBER_OF_GPIPS_WINDOWS
GtkWidget * edit_window[MAX_NUMBER_OF_GPIPS_WINDOWS]
#define SMALL_BUFFER_LENGTH
#define MAX_NUMBER_OF_GPIPS_WINDOWS
How many display wondows can be opened :
@ GPIPS_EXECUTE_AND_DISPLAY
#define GPIPS_MENU_SEPARATOR_ID
How it is specified in the layout .h:
GtkWidget * main_window_menu_bar
#define NO_TEXTSW_AVAILABLE
void execute_main_loop_command(gpips_main_loop_command_type command)
To ask pipsmake to stop as soon as possible:
int alloc_first_initialized_window(bool the_same_as_previous)
Find the first free window if any.
void current_selection_notify(GtkWidget *widget, gpointer data)
void gpips_display_graph_file_display(gpips_view_menu_layout_line *menu_line)
Use daVinci to display a graph information:
GtkWidget * view_menu
The menu "View" on the main panel:
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:
void create_edit_window()
char * compute_title_string(int window_number)
static GtkWidget * close_menu_item
bool gpips_view_marked_busy(char *title_module_name, char *title_label, char *icon_name, char *icon_title)
Mark a gpips window as busy:
void gpips_execute_and_display_something_outside_the_notifyer(gpips_view_menu_layout_line *menu_line)
int number_of_gpips_windows
static EditedFile edited_file[MAX_NUMBER_OF_GPIPS_WINDOWS]
void edit_notify(GtkWidget *widget, gpointer data)
void apply_on_each_view_item(void(*function_to_apply_on_each_menu_item)(GtkWidget *), void(*function_to_apply_on_each_panel_item)(GtkWidget *))
static void save_edited_file(GtkWidget *widget, gpointer file)
void view_notify(GtkWidget *menu_item, gpointer data)
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():
GtkWidget * edit_menu_item
static GtkWidget * sequential_view_menu_item
void apply_on_each_options_frame_button(GtkWidget *widget, gpointer _func)
void disable_item(GtkWidget *item)
void disable_view_selection()
static gpips_view_menu_layout_line gpips_view_menu_layout[]
lint
void gpips_display_plain_file(gpips_view_menu_layout_line *menu_line)
Use some text viewer to display the resource:
void execute_gpips_execute_and_display_something_outside_the_notifier()
To execute something and display some Pips output with gpips, called outside the notifyer:
static GtkWidget * current_selection_menu_item
void enable_view_selection()
GtkWidget * view_menu_item
void buffer_changed_callback(GtkWidget *widget, gpointer data)
void apply_on_each_view_menu_item(GtkWidget *widget, gpointer _func)
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:
void gpips_execute_and_display_something(char *resource_name)
To execute something and display some Pips output with gpips.
void edit_close_notify(GtkWidget *widget, gpointer data)
void enable_item(GtkWidget *item)
void prompt_user(string a_printf_format,...)
GtkWidget * options_frame
void display_memory_usage()
GtkWidget * window_number
bool gpips_gtk_widget_get_sensitive(GtkWidget *w)
const char * gpips_gtk_menu_item_get_label(GtkWidget *w)
gint hide_window(GtkWidget *window, GdkEvent *ev __attribute__((unused)), gpointer data __attribute__((unused)))
void gpips_gtk_menu_item_set_label(GtkWidget *w, gchar *text)
gint load_file(const gchar *filename, gchar **data)
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
#define MAXPATHLEN
MAXPATHLEN is defined in <sys/param.h> for SunOS...
void safe_system(string)
system.c
string concatenate(const char *,...)
Return the concatenation of the given strings.
int f(int off1, int off2, int n, float r[n], float a[n], float b[n])
#define db_get_file_resource
string db_get_current_workspace_name(void)
the function is used to check that there is some current workspace...
string build_view_file(const char *)
view.c
void print_type(type)
For debugging.
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...