------------------------------------------------------------------------------ ------------------------------------------------------------------------------ -- Cheddar is a GNU GPL real-time scheduling analysis tool. -- This program provides services to automatically check schedulability and -- other performance criteria of real-time architecture models. -- -- Copyright (C) 2002-2016, Frank Singhoff, Alain Plantec, Jerome Legrand -- -- The Cheddar project was started in 2002 by -- Frank Singhoff, Lab-STICC UMR 6285 laboratory, Université de Bretagne Occidentale -- -- Cheddar has been published in the "Agence de Protection des Programmes/France" in 2008. -- Since 2008, Ellidiss technologies also contributes to the development of -- Cheddar and provides industrial support. -- -- The full list of contributors and sponsors can be found in AUTHORS.txt and SPONSORS.txt -- -- 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 this program; if not, write to the Free Software -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -- -- -- Contact : cheddar@listes.univ-brest.fr -- ------------------------------------------------------------------------------ -- Last update : -- $Rev: 1249 $ -- $Date: 2014-08-28 07:02:15 +0200 (Fri, 28 Aug 2014) $ -- $Author: singhoff $ ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ with Gtk.Menu_Item; use Gtk.Menu_Item; with Gtk; use Gtk; with Gtk.Main; use Gtk.Main; with Glib.Error; use Glib.Error; with Gtk.Widget; use Gtk.Widget; with Gtk.Dialog; use Gtk.Dialog; with Gtk.About_Dialog; use Gtk.About_Dialog; with Gtk.Label; use Gtk.Label; with Ada.Text_IO; use Ada.Text_IO; with address_spaces; use address_spaces; with Address_Space_Set; use Address_Space_Set; with buffers; use buffers; with buffer_set; use buffer_set; use Buffers.Buffer_Roles_Package; with graphical_editor.user_message; use graphical_editor.user_message; with GNAT.Current_Exception; use GNAT.Current_Exception; with Gtkada.Builder; use Gtkada.Builder; with Gtk.Combo_Box; use Gtk.Combo_Box; with Glib; use Glib; with Glib.Object; use Glib.Object; with Processor_Set; use Processor_Set; with Processors; use Processors; with Framework_Config; use Framework_Config; with Translate; use Translate; with Ada.Exceptions; use Ada.Exceptions; with Gtk.List_Store; use Gtk.List_Store; with Gtk.Tree_Model; use Gtk.Tree_Model; with Gtk.Tree_View; use Gtk.Tree_View; with Task_Set; use Task_Set; use Task_Set.Generic_Task_Set; with Tasks; use Tasks; with gtk.tree_view_column; use gtk.tree_view_column; with graphical_editor.convert_text; use graphical_editor.convert_text; with Call_Memory_Framework; use Call_Memory_Framework; use Call_Memory_Framework.Buffer_Result_Package; with time_unit_events; use time_unit_events; with graphical_editor.draw_buffer; use graphical_editor.draw_buffer; with Gtk.Object; use Gtk.Object; with Gdk; use Gdk; with gdk.drawable; use gdk.drawable; with Gdk.GC; with Gdk.Color; with graphical_editor.double_buffer; use graphical_editor.double_buffer; with Gtk.Drawing_Area; use Gtk.Drawing_Area; with Gdk.Window; use Gdk.Window; with queueing_system; use queueing_system; package body graphical_editor.buffers is 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 return false; end Expose; buffer_table_length : constant natural := 11; procedure Initialize_Buffer(my_tab: in out table_widget_id ; Object : access Gtkada_Builder_Record'Class) is ob1: GObject:= Get_Object(Object, "textbuffer1"); ob2: GObject:= Get_Object(Object, "combobox3"); ob3: GObject:= Get_Object(Object, "textbuffer2"); ob4: GObject:= Get_Object(Object, "combobox1"); ob5: GObject:= Get_Object(Object, "combobox2"); ob6: GObject:= Get_Object(Object, "liststore2"); ob7: GObject:= Get_Object(Object, "treeview1"); ob8: GObject:= Get_Object(Object, "liststore3"); ob9: GObject:= Get_Object(Object, "treeview2"); ob10: GObject:= Get_Object(Object, "textbuffer6"); wid1: t_widget := (ptype => buffer_string, buffer_value => Gtk_Text_Buffer(ob1)); wid2: t_widget := (ptype => combo, combo_value => Gtk_Combo_Box(ob2)); wid3: t_widget := (ptype => buffer_integer, buffer_value => Gtk_Text_Buffer(ob3)); wid4: t_widget := (ptype => combo, combo_value => Gtk_Combo_Box(ob4)); wid5: t_widget := (ptype => combo, combo_value => Gtk_Combo_Box(ob5)); wid6: t_widget := (ptype => lists, list_value => Gtk_List_Store(ob6)); wid7: t_widget := (ptype => view, view_value => Gtk_Tree_View(ob7)); wid11: t_widget := (ptype => buffer_integer, buffer_value => Gtk_Text_Buffer(ob10)); wid8: t_widget := (ptype => lists, list_value => Gtk_List_Store(ob8)); wid9: t_widget := (ptype => view, view_value => Gtk_Tree_View(ob9)); wid10: t_widget := (ptype => my_window, window_value => Buffer_Window); begin my_tab(1..buffer_table_length) := (new t_widget'(wid1), new t_widget'(wid2), new t_widget'(wid3), new t_widget'(wid4), new t_widget'(wid5), new t_widget'(wid11), new t_widget'(wid6), new t_widget'(wid7), new t_widget'(wid8), new t_widget'(wid9), new t_widget'(wid10)); end initialize_Buffer; -- Data retrived from the widgets -- buffer_name, buffer_cpu_name, buffer_address_space_name : Unbounded_String; buffer_size : Integer; buffer_initial_data_size : Integer; buffer_queueing_system : Queueing_Systems_Type; Roles : Buffer_Roles_Table; buffer_number_roles : integer; procedure Check_Buffer(my_tab: in out table_widget_id ; Object : access Gtkada_Builder_Record'Class) is buffer_size_string : Unbounded_String; buffer_initial_data_size_string : Unbounded_String; buf_role : Buffer_Role; Integer_Ok : Boolean; task_name_value, buf_role_the_role_value, buf_role_size_value, buf_role_time_value, buf_role_timeout_value : GValue; tree_iter_inter : Gtk_Tree_Iter; a_task : generic_task_ptr; begin buffer_name := get_value_buffer_string(Gtk_Text_Buffer(my_tab(1).buffer_value)); buffer_size_string := suppress_space(get_value_buffer_string(Gtk_Text_Buffer(my_tab(3).buffer_value))); if (buffer_size_string = "") then buffer_size := 0; else to_integer (buffer_size_string, buffer_size, Integer_Ok); if not Integer_Ok then Raise_Exception (buffer_set.Invalid_Parameter'Identity, To_String ( "Size" & Lb_Must_Be_Numeric (Current_Language) )); end if; end if; buffer_initial_data_size_string := suppress_space(get_value_buffer_string(Gtk_Text_Buffer(my_tab(6).buffer_value))); if (buffer_initial_data_size_string = "") then buffer_initial_data_size := 0; else to_integer (buffer_initial_data_size_string, buffer_initial_data_size, Integer_Ok); if not Integer_Ok then Raise_Exception (buffer_set.Invalid_Parameter'Identity, To_String ( "Initial Data Size" & Lb_Must_Be_Numeric (Current_Language) )); end if; end if; buffer_cpu_name := to_unbounded_string(Get_Active_Text(Gtk_Combo_Box(my_tab(2).combo_value))); buffer_address_space_name := to_unbounded_string(Get_Active_Text(Gtk_Combo_Box(my_tab(5).combo_value))); buffer_queueing_system := to_type(to_unbounded_string(Get_Active_Text(Gtk_Combo_Box(my_tab(4).combo_value)))).queueings_value; initialize(roles); buffer_number_roles:= get_number_elements(Gtk_Tree_Model(Gtk.Tree_View.Get_Model(my_tab(8).view_value))); tree_iter_inter := Get_Iter_First (Gtk_Tree_Model(Gtk.Tree_View.Get_Model(my_tab(8).view_value))); for i in 1 .. buffer_number_roles loop Gtk.Tree_Model.Get_Value(Gtk_Tree_Model(Gtk.Tree_View.Get_Model(my_tab(8).view_value)), tree_iter_inter, 0, task_name_value); A_task := Search_Task (sys.tasks, to_Unbounded_String(Get_String(task_name_value))); Gtk.Tree_Model.Get_Value(Gtk_Tree_Model(Gtk.Tree_View.Get_Model(my_tab(8).view_value)), tree_iter_inter, 1, buf_role_size_value); buf_role.size := integer(Get_int(buf_role_size_value)); Gtk.Tree_Model.Get_Value(Gtk_Tree_Model(Gtk.Tree_View.Get_Model(my_tab(8).view_value)), tree_iter_inter, 2, buf_role_the_role_value); buf_role.the_role := to_type(buf_role_the_role_value).roles_value; Gtk.Tree_Model.Get_Value(Gtk_Tree_Model(Gtk.Tree_View.Get_Model(my_tab(8).view_value)), tree_iter_inter, 3, buf_role_time_value); buf_role.time := integer(Get_int(buf_role_time_value)); Gtk.Tree_Model.Get_Value(Gtk_Tree_Model(Gtk.Tree_View.Get_Model(my_tab(8).view_value)), tree_iter_inter, 4, buf_role_timeout_value); buf_role.timeout := integer(Get_int(buf_role_timeout_value)); add (Roles, A_Task.name, buf_role); next(Gtk_Tree_Model(Gtk.Tree_View.Get_Model(my_tab(8).view_value)), tree_iter_inter); end loop; Check_Task_buffer_roles(sys.tasks, buffer_name, roles); Check_entity_location(sys, buffer_name, buffer_cpu_name, buffer_Address_Space_Name); Check_Buffer (Sys.Buffers, buffer_name, buffer_size, buffer_cpu_name, buffer_address_Space_Name); end Check_Buffer; procedure Add_In_Sys_Buffer(my_tab: in out table_widget_id ; Object : access Gtkada_Builder_Record'Class) is begin Buffer_set.Add_Buffer (sys.Buffers, buffer_name, buffer_size, buffer_cpu_Name, buffer_address_space_name, buffer_queueing_system, Roles, buffer_initial_data_size); end Add_In_Sys_Buffer; procedure Deleted_In_Sys_Buffer(my_tab: in out table_widget_id ; Object : access Gtkada_Builder_Record'Class) is A_Buffer : Buffer_Ptr; name: unbounded_string; begin name := get_value_buffer_string(Gtk_Text_Buffer(my_tab(1).buffer_value)); A_Buffer := Search_Buffer (Sys.Buffers, name); Check_Entity_Referencing_a_buffer(sys, a_buffer); Delete (Sys.buffers, A_Buffer); end Deleted_In_Sys_Buffer; procedure Show_In_Sys_Buffer(my_tab: in out table_widget_id ; Object : access Gtkada_Builder_Record'Class) is name : unbounded_string; A_Buffer : Buffer_Ptr; tree_iter: Gtk_Tree_Iter; liststore: GObject; begin name := get_value_buffer_string(Gtk_Text_Buffer(my_tab(1).buffer_value)); A_Buffer := Search_Buffer (sys.Buffers, Name); liststore:= Get_Object(Object, "liststore2"); Gtk.List_Store.Clear(Gtk_List_Store(liststore)); for i in 0..A_Buffer.roles.nb_entries - 1 loop Append(Gtk_List_Store(liststore), tree_iter); Gtk.List_Store.Set(Gtk_List_Store(liststore), tree_iter, 0, To_String (A_Buffer.roles.entries (i).item)); Gtk.List_Store.Set(Gtk_List_Store(liststore), tree_iter, 1, Gint(A_Buffer.roles.entries (i).data.size)); Gtk.List_Store.Set(Gtk_List_Store(liststore), tree_iter, 2, To_string(to_label(new t_all_enumeration_type'(graphical_editor.convert_text.Roles, A_Buffer.roles.entries (i).data.the_role)))); Gtk.List_Store.Set(Gtk_List_Store(liststore), tree_iter, 3, Gint(A_Buffer.roles.entries (i).data.time)); Gtk.List_Store.Set(Gtk_List_Store(liststore), tree_iter, 4, Gint(A_Buffer.roles.entries (i).data.timeout)); end loop; end Show_In_Sys_Buffer; procedure Show_Lign_Buffer (Object : access Gtkada_Builder_Record'Class) is tree_iter: Gtk_Tree_Iter; path1: Gtk_Tree_Path; focus1: Gtk_Tree_View_Column; combo_text, combo_text2: unbounded_string; begin Get_Cursor(Gtk_Tree_View(get_object(object, "treeview1")), path1, focus1); if path1 /= null and focus1 /= null then tree_iter:= get_iter(Gtk_Tree_Model(get_object(object, "liststore2")), path1); combo_text := to_unbounded_string(Gtk.Tree_Model.Get_String(Gtk_Tree_Model(get_object(object, "liststore2")), tree_iter, 0)); Set_Active(Gtk_Combo_Box(get_object(object, "combobox5")), Gint(get_int_combo(Gtk_Combo_Box(get_object(object, "combobox5")), combo_text))); Set_Text(Gtk_Text_Buffer(get_object(object, "textbuffer3")), integer'image(integer(Gtk.Tree_Model.Get_Int(Gtk_Tree_Model(get_object(object, "liststore2")), tree_iter, 1)))); combo_text2 := to_unbounded_string(Gtk.Tree_Model.Get_String(Gtk_Tree_Model(get_object(object, "liststore2")), tree_iter, 2)); Set_Active(Gtk_Combo_Box(get_object(object, "combobox4")), Gint(get_int_combo(Gtk_Combo_Box(get_object(object, "combobox4")), combo_text2))); Set_Text(Gtk_Text_Buffer(get_object(object, "textbuffer4")), integer'image(integer(Gtk.Tree_Model.Get_Int(Gtk_Tree_Model(get_object(object, "liststore2")), tree_iter, 3)))); Set_Text(Gtk_Text_Buffer(get_object(object, "textbuffer5")), integer'image(integer(Gtk.Tree_Model.Get_Int(Gtk_Tree_Model(get_object(object, "liststore2")), tree_iter, 4)))); end if; exception when others => Show_Message_Box (Exception_Name & " : " & Exception_Message); return; end Show_Lign_Buffer; procedure Add_View_buffer (Object : access Gtkada_Builder_Record'Class) is tree_iter: Gtk_Tree_Iter; size, time, timeout : integer; size_string, initial_data_string, time_string, timeout_string : unbounded_string; ok : boolean; begin size_string:= suppress_space(get_value_buffer_string(Gtk_Text_Buffer(Get_Object(Object, "textbuffer3")))); if (size_String = "") then size:=0; else to_integer (size_String, size, Ok); if not ok then Raise_Exception (buffer_set.Invalid_Parameter'Identity, To_String ( Lb_size (Current_Language) & Lb_Must_Be_Numeric (Current_Language) )); end if; end if; time_string:= suppress_space(get_value_buffer_string(Gtk_Text_Buffer(Get_Object(Object, "textbuffer4")))); if (time_String = "") then time:=0; else to_integer (time_String, time, Ok); if not ok then Raise_Exception (buffer_set.Invalid_Parameter'Identity, To_String ( Lb_time (Current_Language) & Lb_Must_Be_Numeric (Current_Language) )); end if; end if; timeout_string:= suppress_space(get_value_buffer_string(Gtk_Text_Buffer(Get_Object(Object, "textbuffer5")))); if (timeout_String = "") then timeout:=0; else to_integer (timeout_String, timeout, Ok); if not ok then Raise_Exception (buffer_set.Invalid_Parameter'Identity, To_String ( Lb_timeout (Current_Language) & Lb_Must_Be_Numeric (Current_Language) )); end if; end if; Append(Gtk_List_Store(Get_Object(Object, "liststore2")), tree_iter); Gtk.List_Store.Set(Gtk_List_Store(Get_Object(Object, "liststore2")), tree_iter, 0, Get_Active_Text(Gtk_Combo_Box(Get_Object(Object, "combobox5")))); Gtk.List_Store.Set(Gtk_List_Store(Get_Object(Object, "liststore2")), tree_iter, 2, Get_Active_Text(Gtk_Combo_Box(Get_Object(Object, "combobox4")))); Gtk.List_Store.Set(Gtk_List_Store(Get_Object(Object, "liststore2")), tree_iter, 1, Gint(size)); Gtk.List_Store.Set(Gtk_List_Store(Get_Object(Object, "liststore2")), tree_iter, 3, Gint(time)); Gtk.List_Store.Set(Gtk_List_Store(Get_Object(Object, "liststore2")), tree_iter, 4, Gint(timeout)); exception when others => Show_Message_Box (Exception_Name & " : " & Exception_Message); return; end Add_View_buffer; procedure Delected_lign_buffer (Object : access Gtkada_Builder_Record'Class) is liststore : Gobject; tree_iter: Gtk_Tree_Iter; path1: Gtk_Tree_Path; focus1: Gtk_Tree_View_Column; begin liststore := get_object(object, "liststore2"); Get_Cursor(Gtk_Tree_View(get_object(object, "treeview1")), path1, focus1); if path1 /= null and focus1 /= null then tree_iter:= get_iter(Gtk_Tree_Model(liststore), path1); Gtk.List_Store.Remove(Gtk_List_Store(liststore), tree_iter); Set_Text(Gtk_Text_Buffer(Get_Object(Object, "textbuffer3")), ""); Set_Text(Gtk_Text_Buffer(Get_Object(Object, "textbuffer4")), ""); Set_Text(Gtk_Text_Buffer(Get_Object(Object, "textbuffer5")), ""); end if; exception when others => Show_Message_Box (Exception_Name & " : " & Exception_Message); return; end Delected_lign_buffer; procedure Modify_In_Sys_Buffer(my_tab: in out table_widget_id ; Object : access Gtkada_Builder_Record'Class) is A_Buffer, A_Buffer_Buffer : Buffer_Ptr; id : unbounded_string; begin A_Buffer := Search_Buffer (Sys.Buffers, buffer_name); id:=a_buffer.cheddar_private_id; Delete (Sys.buffers, A_Buffer); Buffer_set.Add_Buffer (sys.Buffers, a_buffer_buffer, buffer_name, buffer_size, buffer_cpu_Name, buffer_address_space_name, buffer_queueing_system, Roles, buffer_initial_data_size); a_buffer_buffer.cheddar_private_id:=id; end Modify_In_Sys_Buffer; package buffer_callbacks is new generic_callbacks(Number_of_widget => buffer_table_length, Initialize => initialize_buffer, Check => Check_buffer, Add_In_Sys => Add_In_Sys_Buffer, Deleted_In_Sys => Deleted_In_Sys_Buffer, Modify_In_Sys => Modify_In_Sys_Buffer, Show_In_Sys => Show_In_Sys_Buffer); use buffer_callbacks; procedure show_widget_buffer_utilization (Object: access Gtkada_Builder_Record'Class) is Builder : Gtkada_Builder; Error : Glib.Error.GError; begin Gtk.Main.Init; Gtk_New (Builder); Error := Add_From_File (Builder, to_string(Glade_path) & "buffer_utilization.glade"); if Error /= null then Ada.Text_IO.Put_Line ("Error : " & Get_Message (Error)); Error_Free (Error); return; end if; Gtkada.Builder.Register_Handler (Builder => Builder, Handler_Name => "on_button1_clicked", Handler => close_buffer_utilization_widget'Access); Gtkada.Builder.Register_Handler (Builder => Builder, Handler_Name => "on_button2_clicked", Handler => draw_buffer_utilization_widget'Access); Do_Connect (Builder); Gtk.Widget.Show_All (Get_Widget (Builder, "window1")); Gtk.Main.Main; Unref (Builder); end show_widget_buffer_utilization; procedure close_buffer_utilization_widget (Object : access Gtkada_Builder_Record'Class) is my_widget : GObject; begin my_widget:=Get_Object(Object, "window1"); Destroy_cb(Gtk_Widget(my_widget)); gtk.main.main_quit; end close_buffer_utilization_widget; procedure draw_buffer_utilization_widget (Object : access Gtkada_Builder_Record'Class) is buffer_area : Gtk_Widget; begin buffer_area := Get_widget(Object, "drawingarea1"); -- Created graphical context -- cb.Connect (Gtk_Drawing_Area(buffer_area), "expose_event", cb.To_Marshaller(Expose'Access)); for I in 0 .. Buff.nb_entries - 1 loop Draw_mod (Object, graphical_editor.draw_buffer.Draw_Buffer, Buff.entries (I).item, Buff.entries (I).data, Framework.Scheduling_Base_Period, Time_Unit_Range (Buff.entries (I).data.nb_entries)); end loop; end draw_buffer_utilization_widget; procedure Show_Buffer_Widget is Builder : Gtkada_Builder; Error : Glib.Error.GError; My_Iterator : buffers_Iterator; A_Buffer : Buffer_Ptr; tree_iter: Gtk_Tree_Iter; liststore: GObject; A_Processor : Generic_Processor_Ptr; My_Processor_Iterator : Processors_Iterator; my_combo_cpu: GObject; An_Adress_Space : Address_Space_Ptr; My_Adress_Space_Iterator : Address_Spaces_Iterator; my_combo_adress_space: GObject; A_Task : Generic_Task_Ptr; My_Task_Iterator : Tasks_Iterator; my_combo1: GObject; begin Gtk.Main.Init; Gtk_New (Builder); Error := Add_From_File (Builder, to_string(Glade_path) & "buffer.glade"); if Error /= null then Ada.Text_IO.Put_Line ("Error : " & Get_Message (Error)); Error_Free (Error); return; end if; initialize(Sys_buffer); duplicate(sys, Sys_buffer); my_combo1 := Get_Object(Builder, "combobox5"); reset_iterator (sys.Tasks, My_Task_Iterator); if not is_empty (sys.Tasks) then loop current_element (sys.Tasks, A_Task, My_Task_Iterator); Append_Text (Gtk_Combo_Box(my_combo1), To_String(A_Task.name)); exit when is_last_element (sys.Tasks, My_Task_Iterator); next_element (sys.Tasks, My_Task_Iterator); end loop; else Show_Message_Box (Lb_Define_Tasks_Before (Current_Language)); end if; my_combo_cpu := Get_Object(Builder, "combobox3"); reset_iterator (sys.Processors, My_Processor_Iterator); if not is_empty (sys.Processors) then loop current_element (sys.Processors, A_Processor, My_Processor_Iterator); Append_Text (Gtk_Combo_Box(my_combo_cpu), To_String(A_Processor.name)); exit when is_last_element (sys.Processors, My_Processor_Iterator); next_element (sys.Processors, My_Processor_Iterator); end loop; else Show_Message_Box (Lb_Define_processors_Before (Current_Language)); end if; my_combo_adress_space := Get_Object(Builder, "combobox2"); reset_iterator (sys.Address_Spaces, My_Adress_Space_Iterator); if not is_empty (sys.Address_Spaces) then loop current_element (sys.Address_Spaces, An_Adress_Space, My_Adress_Space_Iterator); Append_Text (Gtk_Combo_Box(my_combo_adress_space), To_String(An_Adress_Space.name)); exit when is_last_element (sys.Address_Spaces, My_Adress_Space_Iterator); next_element (sys.Address_Spaces, My_Adress_Space_Iterator); end loop; else Show_Message_Box (Lb_Define_Address_Spaces_Before (Current_Language)); end if; Set_Active (Gtk_Combo_Box(Get_Object(Builder, "combobox1")), 0); Set_Active (Gtk_Combo_Box(Get_Object(Builder, "combobox2")), 0); Set_Active (Gtk_Combo_Box(Get_Object(Builder, "combobox3")), 0); Set_Active (Gtk_Combo_Box(Get_Object(Builder, "combobox4")), 0); Set_Active (Gtk_Combo_Box(Get_Object(Builder, "combobox5")), 0); liststore:= Get_Object(Builder, "liststore3"); reset_iterator (sys.Buffers, My_Iterator); if not is_empty (sys.Buffers) then loop current_element (sys.Buffers, A_Buffer, My_Iterator); Append(Gtk_List_Store(liststore), tree_iter); Gtk.List_Store.Set(Gtk_List_Store(liststore), tree_iter, 0, To_String (A_Buffer.name)); Gtk.List_Store.Set(Gtk_List_Store(liststore), tree_iter, 1, To_String (A_Buffer.cpu_name)); Gtk.List_Store.Set(Gtk_List_Store(liststore), tree_iter, 2, Gint(A_Buffer.buffer_size)); Gtk.List_Store.Set(Gtk_List_Store(liststore), tree_iter, 3, To_String (to_label(new t_all_enumeration_type'(Queueings, A_Buffer.queueing_system_type)))); Gtk.List_Store.Set(Gtk_List_Store(liststore), tree_iter, 4, To_String (A_Buffer.address_space_name)); Gtk.List_Store.Set(Gtk_List_Store(liststore), tree_iter, 5, Gint (A_Buffer.buffer_initial_data_size)); exit when is_last_element (sys.Buffers, My_Iterator); next_element (sys.Buffers, My_Iterator); end loop; end if; Gtkada.Builder.Register_Handler (Builder => Builder, Handler_Name => "on_button1_clicked", Handler => buffer_callbacks.Close_View'Access); Gtkada.Builder.Register_Handler (Builder => Builder, Handler_Name => "on_button2_clicked", Handler => buffer_callbacks.Cancel_View'Access); Gtkada.Builder.Register_Handler (Builder => Builder, Handler_Name => "on_button4_clicked", Handler => buffer_callbacks.Delected_Lign_Selected'Access); Gtkada.Builder.Register_Handler (Builder => Builder, Handler_Name => "on_button5_clicked", Handler => buffer_callbacks.Modify_Lign'Access); Gtkada.Builder.Register_Handler (Builder => Builder, Handler_Name => "on_button6_clicked", Handler => buffer_callbacks.Add_View'Access); Gtkada.Builder.Register_Handler (Builder => Builder, Handler_Name => "on_button9_clicked", Handler => Delected_lign_buffer'Access); Gtkada.Builder.Register_Handler (Builder => Builder, Handler_Name => "on_button7_clicked", Handler => Add_View_buffer'Access); Gtkada.Builder.Register_Handler (Builder => Builder, Handler_Name => "on_treeview2_cursor_changed", Handler => buffer_callbacks.Show_Lign_Selected'Access); Gtkada.Builder.Register_Handler (Builder => Builder, Handler_Name => "on_treeview1_cursor_changed", Handler => Show_Lign_Buffer'Access); Do_Connect (Builder); Gtk.Widget.Show_All (Get_Widget (Builder, "window1")); Gtk.Main.Main; Unref (Builder); end Show_Buffer_Widget; end graphical_editor.buffers;