with Glib; use Glib; with Glib.Object; use Glib.Object; with Gtk; use Gtk; with Gtk.Main; use Gtk.Main; with Ada.Text_IO; use Ada.Text_IO; with graphical_editor.user_message; use graphical_editor.user_message; with Framework_Config; use Framework_Config; with Translate; use Translate; with generic_package_widget; use generic_package_widget; with graphical_editor.scheduling_simulation_draw_callbacks; use graphical_editor.scheduling_simulation_draw_callbacks; with Gtk.Drawing_Area; use Gtk.Drawing_Area; with Gtk.Handlers; use Gtk.Handlers; with graphical_editor.Draw_Scheduling_Pkg; use graphical_editor.Draw_Scheduling_Pkg; with gdk; use gdk; with Gdk.Color; use Gdk.Color; with Gdk.GC; use Gdk.GC; with Gdk.Window; use Gdk.Window; with pango.font; use pango.font; with Gdk.font; use Gdk.font; with Gdk.Event; use Gdk.Event; with Ada.IO_Exceptions; use Ada.IO_Exceptions; with GNAT.Current_Exception; use GNAT.Current_Exception; with Gtk.File_Chooser; use Gtk.File_Chooser; with Gtk.File_Chooser_Dialog; use Gtk.File_Chooser_Dialog; with Ada.Strings.Unbounded; use Ada.Strings.Unbounded; with Translate; use Translate; with Xml_generic_Parsers; use Xml_generic_Parsers; with Xml_generic_Parsers.architecture; use Xml_generic_Parsers.architecture; with Project; use Project; with Multiprocessor_Services; use Multiprocessor_Services; package body graphical_editor.event_tables_callbacks is Draw_From_Time : Integer := 0; Draw_To_Time : Integer := 0; procedure draw_time_line_from_event_table(Object : access Gtkada_Builder_Record'Class) is Draw_From, Draw_To : Unbounded_String; --Draw_From_Time : Integer := 0; --Draw_To_Time : Integer := 0; Ok : Boolean; -- package Cb is new --Gtk.Handlers.Return_Callback(Gtk.Drawing_Area.Gtk_Drawing_Area_Record, boolean); use Cb; --function Expose (W : access Gtk.Drawing_Area.Gtk_Drawing_Area_Record'Class) return boolean is --begin -- Draw_Time_Line_cbk_event_table; -- return false; --end Expose; begin hide(gtk_widget(get_object(object, "window1"))); Draw_From := get_value_buffer_string(Gtk_Text_Buffer(Get_Object(Object, "textbuffer1"))); Draw_To := get_value_buffer_string(Gtk_Text_Buffer(Get_Object(Object, "textbuffer2"))); to_integer (Draw_From, Draw_From_Time, Ok); if not Ok then Show_Message_Box (Lb_Double_Quote & Lb_Draw_From (Current_Language) & Lb_Double_Quote & Lb_Must_Be_Numeric (Current_Language)); return; end if; to_integer (Draw_To, Draw_To_Time, Ok); if not Ok then Show_Message_Box (Lb_Double_Quote & Lb_Draw_To (Current_Language) & Lb_Double_Quote & Lb_Must_Be_Numeric (Current_Language)); return; end if; if (Draw_To_Time <= 0) then Show_Message_Box (Lb_Double_Quote & Lb_Draw_To (Current_Language) & Lb_Double_Quote & Lb_Must_Be (Current_Language) & To_Unbounded_String (" > 0")); return; end if; if (Draw_From_Time < 0) then Show_Message_Box (Lb_Double_Quote & Lb_Draw_From (Current_Language) & Lb_Double_Quote & Lb_Must_Be (Current_Language) & To_Unbounded_String (" >= 0")); return; end if; if (Draw_From_Time > Draw_To_Time) then Show_Message_Box (Lb_Double_Quote & Lb_Draw_From (Current_Language) & Lb_Must_Be (Current_Language) & Lb_Double_Quote & To_Unbounded_String (" <= ") & Lb_Double_Quote & Lb_Draw_To (Current_Language) & Lb_Double_Quote); return; end if; if (Draw_To_Time - Draw_From_Time > 1500) then Show_Message_Box (Lb_Draw_Time_Line_Too_Large (Current_Language)); return; end if; --cb.Connect (Gtk_Drawing_Area(my_area), "expose_event", cb.To_Marshaller(Expose'Access)); --Draw_Time_Line_cbk_event_table; Draw_Time_Line (Sys.Tasks, Sys.Resources, Sys.Messages, Sys.Buffers, Draw_To_Time, Draw_From_Time, Framework.Sched); -- Destroy (Draw_Time_Line_From_To); end draw_time_line_from_event_table; procedure Draw_Time_Line_cbk_event_table is begin Draw_Scheduling := new Draw_Scheduling_Record; Draw_Scheduling.Font := From_Description (From_String("-adobe-helvetica-medium-o-normal--14-140-75-75-p-78-iso8859-1")); Gdk.GC.Gdk_New (Draw_Scheduling.White_Gc, Get_window(my_area)); Gdk.GC.Set_Foreground (Draw_Scheduling.White_Gc, Gdk.Color.White (Gtk.Widget.Get_Default_Colormap)); Gdk.GC.Gdk_New (Draw_Scheduling.Black_Gc, Get_window(my_area)); Gdk.GC.Set_Foreground (Draw_Scheduling.Black_Gc, Gdk.Color.Black (Gtk.Widget.Get_Default_Colormap)); Draw_Scheduling.Red_Color := Gdk.Color.Parse ("Red"); Gdk.Color.Alloc (Gtk.Widget.Get_Default_Colormap, Draw_Scheduling.Red_Color); Draw_Scheduling.Blue_Color := Gdk.Color.Parse ("Blue"); Gdk.Color.Alloc (Gtk.Widget.Get_Default_Colormap, Draw_Scheduling.Blue_Color); --if Draw_Scheduling.Initialized then --Redraw_Time_Line (Draw_Scheduling); --Redraw_Time_Line; --Redraw_Time_Line (graphical_editor.Draw_scheduling_pkg.Draw_Scheduling); --else Draw_Time_Line(sys.tasks, sys.resources, sys.messages, sys.buffers, Draw_To_Time, Draw_From_Time, Framework.Sched); --end if; end Draw_Time_Line_cbk_event_table; procedure Close_Widget(Object : access Gtkada_Builder_Record'Class) is my_widget : GObject; begin my_widget:=Get_Object(Object, "window1"); Unref(my_widget); Hide(Gtk_Widget(my_widget)); Destroy_cb(Gtk_Widget(my_widget)); --gtk.main.main_quit; end Close_Widget; procedure close_event_table(Object : access Gtkada_Builder_Record'Class) is my_widget : GObject; begin my_widget:=Get_Object(Object, "filechooserdialog1"); Unref(my_widget); Hide(Gtk_Widget(my_widget)); Destroy_cb(Gtk_Widget(my_widget)); end close_event_table; procedure import_event_table (Object : access Gtkada_Builder_Record'Class) is open_event_table : GObject; begin --Do_Open; open_event_table :=Get_Object(Object, "filechooserdialog1"); Xml_Event_Table_File_Name := To_Unbounded_String (Get_Filename (+(Gtk_File_Chooser_Dialog(open_event_table)))); begin Read_From_Xml_File (Framework.Sched, Sys, Xml_Event_Table_File_Name); exception when Xml_Read_Error => Show_Message_Box (Lb_Can_Not_Open_File (Current_Language) & To_Unbounded_String (", Xml Fatal Error")); when Ada.IO_Exceptions.Name_Error => Show_Message_Box (Lb_Can_Not_Open_File (Current_Language) & To_Unbounded_String (", Name_Error")); when Ada.IO_Exceptions.Status_Error => Show_Message_Box (Lb_Can_Not_Open_File (Current_Language) & To_Unbounded_String (", Status_Error")); when Ada.IO_Exceptions.Mode_Error => Show_Message_Box (Lb_Can_Not_Open_File (Current_Language) & To_Unbounded_String (", Mode_Error")); when Ada.IO_Exceptions.Use_Error => Show_Message_Box (Lb_Can_Not_Open_File (Current_Language) & To_Unbounded_String (", Use_Error")); when Ada.IO_Exceptions.Device_Error => Show_Message_Box (Lb_Can_Not_Open_File (Current_Language) & To_Unbounded_String (", Device_Error")); when Ada.IO_Exceptions.End_Error => Show_Message_Box (Lb_Can_Not_Open_File (Current_Language) & To_Unbounded_String (", End_Error")); when Ada.IO_Exceptions.Data_Error => Show_Message_Box (Lb_Can_Not_Open_File (Current_Language) & To_Unbounded_String (", Data_Error")); when Ada.IO_Exceptions.Layout_Error => Show_Message_Box (Lb_Can_Not_Open_File (Current_Language) & To_Unbounded_String (", Layout_Error")); when others => Show_Message_Box (Lb_Can_Not_Open_File (Current_Language) & " ; Exception name : " & Exception_Name & " ; " & "Exception message : " & Exception_Message); end; --Destroy (open_event_table); Unref(open_event_table); Hide(Gtk_Widget(open_event_table)); Destroy_cb(Gtk_Widget(open_event_table)); end import_event_table; procedure export_event_table (Object : access Gtkada_Builder_Record'Class) is save_event_table : GObject; begin begin save_event_table := Get_Object(Object, "filechooserdialog1"); Xml_Event_Table_File_Name := To_Unbounded_String (Get_Filename (+(Gtk_File_Chooser_Dialog(save_event_table)))); Write_To_Xml_File (Framework.Sched, Sys, Xml_Event_Table_File_Name); exception when Ada.IO_Exceptions.Name_Error => Show_Message_Box (Lb_Can_Not_Save_File (Current_Language) & To_Unbounded_String (", Name_Error")); when Ada.IO_Exceptions.Status_Error => Show_Message_Box (Lb_Can_Not_Save_File (Current_Language) & To_Unbounded_String (", Status_Error")); when Ada.IO_Exceptions.Mode_Error => Show_Message_Box (Lb_Can_Not_Save_File (Current_Language) & To_Unbounded_String (", Mode_Error")); when Ada.IO_Exceptions.Use_Error => Show_Message_Box (Lb_Can_Not_Save_File (Current_Language) & To_Unbounded_String (", Use_Error")); when Ada.IO_Exceptions.Device_Error => Show_Message_Box (Lb_Can_Not_Save_File (Current_Language) & To_Unbounded_String (", Device_Error")); when Ada.IO_Exceptions.End_Error => Show_Message_Box (Lb_Can_Not_Save_File (Current_Language) & To_Unbounded_String (", End_Error")); when Ada.IO_Exceptions.Data_Error => Show_Message_Box (Lb_Can_Not_Save_File (Current_Language) & To_Unbounded_String (", Data_Error")); when Ada.IO_Exceptions.Layout_Error => Show_Message_Box (Lb_Can_Not_Save_File (Current_Language) & To_Unbounded_String (", Layout_Error")); when others => Show_Message_Box (Lb_Can_Not_Open_File (Current_Language) & " ; Exception name : " & Exception_Name & " ; " & "Exception message : " & Exception_Message); end; --Destroy (save_event_table); Unref(save_event_table); Hide(Gtk_Widget(save_event_table)); end export_event_table; end graphical_editor.event_tables_callbacks;