1----------------------------------------------------------------------- 2-- GtkAda - Ada95 binding for Gtk+/Gnome -- 3-- -- 4-- Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet -- 5-- Copyright (C) 2000-2007 AdaCore -- 6-- -- 7-- This library is free software; you can redistribute it and/or -- 8-- modify it under the terms of the GNU General Public -- 9-- License as published by the Free Software Foundation; either -- 10-- version 2 of the License, or (at your option) any later version. -- 11-- -- 12-- This library is distributed in the hope that it will be useful, -- 13-- but WITHOUT ANY WARRANTY; without even the implied warranty of -- 14-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- 15-- General Public License for more details. -- 16-- -- 17-- You should have received a copy of the GNU General Public -- 18-- License along with this library; if not, write to the -- 19-- Free Software Foundation, Inc., 59 Temple Place - Suite 330, -- 20-- Boston, MA 02111-1307, USA. -- 21-- -- 22-- As a special exception, if other files instantiate generics from -- 23-- this unit, or you link this unit with other files to produce an -- 24-- executable, this unit does not by itself cause the resulting -- 25-- executable to be covered by the GNU General Public License. This -- 26-- exception does not however invalidate any other reasons why the -- 27-- executable file might be covered by the GNU Public License. -- 28----------------------------------------------------------------------- 29 30-- <description> 31-- This widget is deprecated. Use Gtk.Tree_View instead. 32-- 33-- This widget displays a multi-column list. Each line is made of 34-- a number of column, each being able to display any kind of widget. 35-- 36-- The intersection of a line and a column is called a Cell. Each cell can 37-- have a different type (Cell_Text, Cell_Pixmap, Cell_Pixtext), and display 38-- its contents depending on this type. For instance, the text is not 39-- displayed in the type is Cell_Pixmap. 40-- Note that this type is changed dynamically by some of the subprograms 41-- below, like Set_Pixmap, Set_Text, ... and Set_Cell_Contents 42-- 43-- This is one of the most powerful widgets in GtkAda, that can be used to 44-- display an kind of information. Look also into using Gtk_Ctree, which is 45-- a similar widget. 46-- 47-- You can add scrolling in a Gtk_Clist by adding it in a Gtk_Scrolled_Window. 48-- </description> 49-- <c_version>2.8.17</c_version> 50-- <group>Obsolescent widgets</group> 51-- <testgtk>create_clist.adb</testgtk> 52 53with Gdk.Bitmap; 54with Gdk.Color; 55with Gdk.Pixmap; 56with Gdk.Window; 57with Glib.Glist; 58pragma Elaborate_All (Glib.Glist); 59with Gtk.Adjustment; 60with Gtk.Container; 61with Gtk.Enums; 62with Gtk.Style; 63with Gtk.Widget; 64with Gtkada.Types; 65with Unchecked_Conversion; 66 67package Gtk.Clist is 68 pragma Obsolescent ("Use Gtk.Tree_View instead"); 69 70 type Gtk_Clist_Record is new Gtk.Container.Gtk_Container_Record 71 with private; 72 type Gtk_Clist is access all Gtk_Clist_Record'Class; 73 74 type Gtk_Clist_Row is new Gdk.C_Proxy; 75 -- A row of the clist. 76 -- Application-specific data can be associated with each row. 77 -- In the following subprograms, rows can also be accessed via their 78 -- number, starting from 0. 79 80 type Gtk_Button_Action is new Guint; 81 Button_Ignored : constant Gtk_Button_Action := 0; 82 Button_Selects : constant Gtk_Button_Action := 1 ** 0; 83 Button_Drags : constant Gtk_Button_Action := 1 ** 1; 84 Button_Expands : constant Gtk_Button_Action := 1 ** 2; 85 86 type Gtk_Cell_Type is 87 (Cell_Empty, 88 Cell_Text, 89 Cell_Pixmap, 90 Cell_Pixtext, 91 Cell_Widget); 92 pragma Convention (C, Gtk_Cell_Type); 93 94 type Gtk_Sort_Type is (Ascending, Descending); 95 pragma Convention (C, Gtk_Sort_Type); 96 -- The order in which the rows should be sorted. 97 98 -- <doc_ignore> 99 function Convert is new Unchecked_Conversion 100 (Gtk_Clist_Row, System.Address); 101 function Convert is new Unchecked_Conversion 102 (System.Address, Gtk_Clist_Row); 103 package Row_List is new Glib.Glist.Generic_List (Gtk_Clist_Row); 104 105 -- </doc_ignore> 106 107 type Gtk_Clist_Compare_Func is access 108 function 109 (Clist : access Gtk_Clist_Record'Class; 110 Row1 : Gtk_Clist_Row; 111 Row2 : Gtk_Clist_Row) return Gint; 112 -- Function used when sorting a clist. This function takes two 113 -- rows as its arguments, and should return a Gint indicating in which 114 -- order the rows are found (-1 if Row1 comes first, 0 if they are equal, 115 -- 1 if Row2 comes first). 116 117 ------------------------------------------------ 118 -- Creating a list and setting the attributes -- 119 ------------------------------------------------ 120 121 procedure Gtk_New (Widget : out Gtk_Clist; Columns : in Gint); 122 -- Create a list with Columns columns. 123 -- Each line will have this exact number of column 124 -- The number of columns can not be changed once the widget has been 125 -- created. 126 127 procedure Initialize 128 (Widget : access Gtk_Clist_Record'Class; Columns : in Gint); 129 -- Internal initialization function. 130 -- See the section "Creating your own widgets" in the documentation. 131 132 procedure Gtk_New 133 (Widget : out Gtk_Clist; 134 Columns : in Gint; 135 Titles : in Gtkada.Types.Chars_Ptr_Array); 136 -- Create a new list with Columns columns. 137 -- The title of the columns is specified in Titles. 138 -- The results are undefined (and can raise an exception) if Titles does 139 -- not have at least Columns items. 140 141 procedure Initialize 142 (Widget : access Gtk_Clist_Record'Class; 143 Columns : in Gint; 144 Titles : in Gtkada.Types.Chars_Ptr_Array); 145 -- Internal initialization function. 146 -- See the section "Creating your own widgets" in the documentation. 147 148 function Get_Type return Gtk.Gtk_Type; 149 -- Return the internal value associated with a Gtk_Clist. 150 151 procedure Set_Hadjustment 152 (Clist : access Gtk_Clist_Record; 153 Adjustment : Gtk.Adjustment.Gtk_Adjustment); 154 -- Set the horizontal adjustment used for the clist. 155 -- Note that such an adjustment is automatically created when the clist 156 -- is added to a Gtk_Scrolled_Window. You should rather use 157 -- Gtk.Scrolled_Window.Set_Hadjustment if you want to modify the 158 -- adjustment. 159 -- If there was already such an adjustment, it is unref-ed, and might 160 -- be deleted. 161 162 procedure Set_Vadjustment 163 (Clist : access Gtk_Clist_Record; 164 Adjustment : Gtk.Adjustment.Gtk_Adjustment); 165 -- Set the vertical adjustment used for the clist. 166 -- Note that such an adjustment is automatically created when the clist 167 -- is added to a Gtk_Scrolled_Window. You should rather use 168 -- Gtk.Scrolled_Window.Set_Hadjustment if you want to modify the 169 -- adjustment. 170 -- If there was already such an adjustment, it is unref-ed, and might 171 -- be deleted. 172 173 function Get_Hadjustment 174 (Clist : access Gtk_Clist_Record) return Gtk.Adjustment.Gtk_Adjustment; 175 -- Return the horizontal adjustment used for the clist. 176 -- This indicates what position the clist is presently displaying, and 177 -- by changing its value, the clist is automatically scrolled horizontally. 178 -- This is done automatically when the clist's parent is a 179 -- Gtk_Scrolled_Window. 180 181 function Get_Vadjustment 182 (Clist : access Gtk_Clist_Record) return Gtk.Adjustment.Gtk_Adjustment; 183 -- Return the vertical adjustment used for the clist. 184 -- This indicates what position the clist is presently displaying, and 185 -- by changing its value, the clist is automatically scrolled vertically. 186 -- This is done automatically when the clist's parent is a 187 -- Gtk_Scrolled_Window. 188 189 procedure Set_Selection_Mode 190 (Clist : access Gtk_Clist_Record; 191 Mode : in Gtk.Enums.Gtk_Selection_Mode); 192 -- Modify the selection mode for the clist. 193 -- This indicates whether one or more lines can be selected at the 194 -- same time in the clist, and how this selection can done by the 195 -- user (does he have to click explicitly on an item, or can he 196 -- browse through the clist and select the last item he was on, etc.) 197 -- 198 -- Note that changing the selection mode to Selection_Single or 199 -- Selection_Browse will deselect all the items in the clist. 200 201 function Get_Selection_Mode 202 (Clist : access Gtk_Clist_Record) return Gtk.Enums.Gtk_Selection_Mode; 203 -- Return the selection mode for the clist. 204 205 -- <doc_ignore> 206 function Get_Clist_Window 207 (Clist : access Gtk_Clist_Record) return Gdk.Window.Gdk_Window; 208 -- Returns the scrolling window used in the clist. This function is 209 -- kept for backward compatibility reasons, and you probably won't have 210 -- to use it. 211 -- </doc_ignore> 212 213 -------------------- 214 -- Visual aspects -- 215 -------------------- 216 217 procedure Freeze (Clist : access Gtk_Clist_Record); 218 -- Freeze all visual updates on the list, while you make big changes. 219 -- This is more efficient than working on an unfrozen list. 220 221 procedure Thaw (Clist : access Gtk_Clist_Record); 222 -- Thaw the list, ie reactivate all the visual updates. 223 -- This also forces an immediate refresh of the list. 224 -- Note that each Freeze must be followed by a Thaw. The visual updates 225 -- are not reactivated until the last Thaw has been emitted, but there is 226 -- an immediate refresh every time anyway. 227 228 procedure Set_Shadow_Type 229 (Clist : access Gtk_Clist_Record; 230 The_Type : in Gtk.Enums.Gtk_Shadow_Type); 231 -- Set the border style of the clist. 232 233 ---------------------------- 234 -- Modifying the contents -- 235 ---------------------------- 236 237 function Append 238 (Clist : access Gtk_Clist_Record; 239 Text : in Gtkada.Types.Chars_Ptr_Array) return Gint; 240 -- Append a new row to the clist, and return the index of the row created. 241 -- The row is added at the end of the Clist. 242 -- The behavior is undefined if Text does not have at least as many items 243 -- as there are columns in the Clist. 244 245 function Prepend 246 (Clist : access Gtk_Clist_Record; 247 Text : in Gtkada.Types.Chars_Ptr_Array) return Gint; 248 -- Add a new row at the beginning of the clist, and return its index. 249 -- The behavior is undefined if Text does not have at least as many items 250 -- as there are columns in the Clist. 251 252 procedure Insert 253 (Clist : access Gtk_Clist_Record; 254 Row : in Gint; 255 Text : in Gtkada.Types.Chars_Ptr_Array); 256 -- Add a new row in the clist. 257 -- The row 0 is the first in the clist. If Row is not in the range for 258 -- clist, the new row is added at the end. The behavior is undefined if 259 -- Text does not have enough items. 260 261 procedure Remove (Clist : access Gtk_Clist_Record; Row : in Gint); 262 -- Remove a row from the clist (0 is the first one). 263 264 procedure Clear (Clist : access Gtk_Clist_Record); 265 -- Clears the entire list. This is much faster than doing a Remove on each 266 -- line. 267 268 procedure Swap_Rows 269 (Clist : access Gtk_Clist_Record; 270 Row1 : in Gint; 271 Row2 : in Gint); 272 -- Exchange the position of two rows in the clist. 273 274 procedure Row_Move 275 (Clist : access Gtk_Clist_Record; 276 Source_Row : in Gint; 277 Dest_Row : in Gint); 278 -- Move the row at Source_Row to Dest_Row (0 indicates the first row in 279 -- the clist) 280 281 procedure Set_Sort_Column 282 (Clist : access Gtk_Clist_Record; 283 Column : Gint); 284 -- Indicate the column on which to sort the clist. 285 -- This column is relevant when you use Sort or Set_Auto_Sort below. 286 -- The first column is number 0. 287 288 function Get_Sort_Column (Clist : access Gtk_Clist_Record) return Gint; 289 -- Return the column on which the clist is sorted. 290 291 procedure Set_Sort_Type 292 (Clist : access Gtk_Clist_Record; 293 Sort_Type : Gtk_Sort_Type); 294 -- Indicate in which order the sort should be done on the clist 295 -- (ascending or descending). 296 297 function Get_Sort_Type 298 (Clist : access Gtk_Clist_Record) return Gtk_Sort_Type; 299 -- Return the sort type currently used for the list 300 301 procedure Sort (Clist : access Gtk_Clist_Record); 302 -- Sort the lines of the clist, based on the column set by Set_Sort_Column, 303 -- and in the order set by Set_Sort_Type. 304 305 procedure Set_Auto_Sort 306 (Clist : access Gtk_Clist_Record; 307 Auto_Sort : Boolean); 308 -- If Auto_Sort is true, then the clist will be automatically sorted every 309 -- time a new line is inserted into the clist. 310 311 procedure Set_Compare_Func 312 (Clist : access Gtk_Clist_Record; 313 Func : Gtk_Clist_Compare_Func); 314 -- Set the function used when sorting the list. This function takes two 315 -- rows as its arguments, and should return a Gint indicating in which 316 -- order the rows are found (-1 if Row1 comes first, 0 if they are equal, 317 -- 1 if Row2 comes last). 318 -- Func should be null to restore the default sorting functions. 319 320 ------------- 321 -- Columns -- 322 ------------- 323 324 function Get_Columns (Clist : access Gtk_Clist_Record) return Gint; 325 -- Return the number of columns in the clist. 326 327 procedure Column_Titles_Hide (Clist : access Gtk_Clist_Record); 328 -- Hide the column titles for the list. 329 -- This is the default behavior if no column titles were given when the 330 -- list was created. 331 332 procedure Column_Titles_Show (Clist : access Gtk_Clist_Record); 333 -- Show the column titles for the list. 334 -- This is the default behavior if some column titles were given when the 335 -- list was created. 336 337 procedure Column_Title_Active 338 (Clist : access Gtk_Clist_Record; 339 Column : in Gint); 340 -- Set the column title to be an activate title. 341 -- In other words, answer all button presses, highlights when the mouse is 342 -- over it, ... 343 344 procedure Column_Title_Passive 345 (Clist : access Gtk_Clist_Record; 346 Column : in Gint); 347 -- Set the column title to be passive. 348 -- Act just as a title, and do not react to mouse events. 349 350 procedure Column_Titles_Active (Clist : access Gtk_Clist_Record); 351 -- Set all column titles to be active. 352 353 procedure Column_Titles_Passive (Clist : access Gtk_Clist_Record); 354 -- Set all column titles to be passive. 355 356 procedure Set_Column_Title 357 (Clist : access Gtk_Clist_Record; 358 Column : in Gint; 359 Title : in UTF8_String); 360 -- Set the text for the button of the column's title. 361 -- See Set_Column_Widget if you want to put a pixmap inside the button. 362 363 function Get_Column_Title 364 (Clist : access Gtk_Clist_Record; 365 Column : in Gint) return UTF8_String; 366 -- Return the text used for the title's column. 367 -- This is a copy of the title, so you can't modify it to automatically 368 -- change the column's title. 369 370 procedure Set_Column_Widget 371 (Clist : access Gtk_Clist_Record; 372 Column : in Gint; 373 Widget : access Gtk.Widget.Gtk_Widget_Record'Class); 374 -- Modify the widget used in the Gtk_Button that is the column's title. 375 -- By default, this button contains a simple Gtk_Label, which is replaced 376 -- by Widget. This is the function to use if you want to put a pixmap 377 -- (or a Gtk_Box that contains both a pixmap and some text) in a column's 378 -- title. 379 380 function Get_Column_Widget 381 (Clist : access Gtk_Clist_Record; 382 Column : in Gint) return Gtk.Widget.Gtk_Widget; 383 -- Return the child of the button that makes the column's title. 384 -- Unless you changed it with Set_Column_Widget, this will return a 385 -- Gtk_Label. Note also that if this widget was not created in Ada, but 386 -- transparently by gtk+, you have to 'with' Gtk.Type_Conversion so that 387 -- the correct type of the widget is created (See the user's guide for 388 -- more information on type conversion). 389 390 procedure Set_Column_Justification 391 (Clist : access Gtk_Clist_Record; 392 Column : in Gint; 393 Justification : in Gtk.Enums.Gtk_Justification); 394 -- Change the way the text in the whole column is justified. 395 -- This function has no effect on the title if you used Set_Column_Widget 396 -- before. 397 398 procedure Set_Column_Visibility 399 (Clist : access Gtk_Clist_Record; 400 Column : in Gint; 401 Visible : in Boolean); 402 -- Modify the visibility of a column. 403 -- Note that GtkAda prevents the last remaining visible column to be 404 -- hidden. Nothing will be done if you try to hide that last column. 405 -- See the example below for an example how to hide all the columns but 406 -- one. 407 408 procedure Set_Column_Resizeable 409 (Clist : access Gtk_Clist_Record; 410 Column : in Gint; 411 Resizeable : in Boolean); 412 -- Set whether the column can be dynamically resized with the mouse. 413 -- If Resizeable is true, then the column can be resized by clicking 414 -- and dragging the lines that separates the column from the next one. 415 416 procedure Set_Column_Auto_Resize 417 (Clist : access Gtk_Clist_Record; 418 Column : in Gint; 419 Auto_Resize : in Boolean); 420 -- Set whether the column should automatically be resized to the optimal 421 -- size (based on its contents). Note that this operation could slow things 422 -- down a lot if you have a lot of items in your list. 423 424 function Columns_Autosize (Clist : access Gtk_Clist_Record) return Gint; 425 -- Set all the columns' width to their optimal size. 426 -- Return the total width of the clist after this operation. 427 428 function Optimal_Column_Width 429 (Clist : access Gtk_Clist_Record; 430 Column : Gint) return Gint; 431 -- Return the optimal width for Column, based on its contents. 432 -- This is the maximal cell width in the column. 433 434 procedure Set_Column_Width 435 (Clist : access Gtk_Clist_Record; 436 Column : in Gint; 437 Width : in Gint); 438 -- Set the column width in pixels. 439 -- By default, the column's width is chosen from the column's title. 440 441 procedure Set_Column_Min_Width 442 (Clist : access Gtk_Clist_Record; 443 Column : Gint; 444 Min_Width : Gint); 445 -- Set the minimal width for the column, in pixels. 446 -- if Min_Width is negative, there is no limit on the minimal width for 447 -- the column. 448 449 procedure Set_Column_Max_Width 450 (Clist : access Gtk_Clist_Record; 451 Column : Gint; 452 Max_Width : Gint); 453 -- Set the maximal width for the column, in pixels. 454 -- If Max_Width is negative, there is no limit on the maximal width for 455 -- the column. 456 457 ---------- 458 -- Rows -- 459 ---------- 460 461 function Get_Rows (Clist : access Gtk_Clist_Record) return Gint; 462 -- Return the number of rows in the clist. 463 464 procedure Set_Row_Height 465 (Clist : access Gtk_Clist_Record; 466 Height : Gint); 467 -- Set the height of the rows, in pixels. 468 -- if Height is 0, the chosen height will be the current's font height. 469 470 function Row_Is_Visible 471 (Clist : access Gtk_Clist_Record; 472 Row : in Gint) return Gtk.Enums.Gtk_Visibility; 473 -- Return the visibility status of the row. 474 475 procedure Set_Foreground 476 (Clist : access Gtk_Clist_Record; 477 Row : in Gint; 478 Color : in Gdk.Color.Gdk_Color); 479 -- Set the foreground color for the row. 480 -- The color must already be allocated. 481 -- If no such row exists in the list, nothing is done. 482 483 procedure Set_Background 484 (Clist : access Gtk_Clist_Record; 485 Row : in Gint; 486 Color : in Gdk.Color.Gdk_Color); 487 -- Set the background color for the row. 488 -- The color must already be allocated. 489 -- If no such row exists in the list, nothing is done. 490 491 procedure Set_Row_Style 492 (Clist : access Gtk_Clist_Record; Row : Gint; 493 Style : in Gtk.Style.Gtk_Style); 494 -- Set the default style for the cells in the row. This can be 495 -- overridden for each cell with Set_Cell_Style. 496 497 function Get_Row_Style 498 (Clist : access Gtk_Clist_Record; 499 Row : in Gint) return Gtk.Style.Gtk_Style; 500 -- Return the default style used for the row. 501 502 procedure Set_Selectable 503 (Clist : access Gtk_Clist_Record; 504 Row : Gint; 505 Selectable : Boolean); 506 -- Indicate whether the row can be selected or not. 507 -- The default value is True. 508 509 function Get_Selectable 510 (Clist : access Gtk_Clist_Record; 511 Row : Gint) return Boolean; 512 -- Return the selectable status of the row. 513 514 procedure Select_Row 515 (Clist : access Gtk_Clist_Record; 516 Row : in Gint; 517 Column : in Gint); 518 -- Emit the signal "select_row". This simulates the user pressing 519 -- the mouse on Row, Column on the clist. 520 521 procedure Unselect_Row 522 (Clist : access Gtk_Clist_Record; 523 Row : in Gint; 524 Column : in Gint); 525 -- Emit the signal "unselect_row", as if the user had clicked on 526 -- Row, Column on the clist. 527 528 procedure Undo_Selection (Clist : access Gtk_Clist_Record); 529 -- Undo the last select/unselect operation. 530 531 procedure Get_Selection_Info 532 (Clist : access Gtk_Clist_Record; 533 X : in Gint; 534 Y : in Gint; 535 Row : out Gint; 536 Column : out Gint; 537 Is_Valid : out Boolean); 538 -- Return the Row/Column corresponding to the coordinates X,Y in the 539 -- Row column. The coordinates X,Y are relative to the clist window 540 -- (ie 0,0 is the top left corner of the clist). 541 -- The result is valid only if Is_Valid is true 542 543 procedure Select_All (Clist : access Gtk_Clist_Record); 544 -- Select all the rows in the clist. This only works if the selection 545 -- mode allows for multiple rows selected at the same time (extended or 546 -- multiple). 547 548 procedure Unselect_All (Clist : access Gtk_Clist_Record); 549 -- Deselect all the rows in the clist. If the selection mode is 550 -- Browse, then only the current line is deselected. 551 552 function Get_Focus_Row (Clist : access Gtk_Clist_Record) return Gint; 553 -- Return the number of the line that currently has the focus. 554 555 function Get_Row_List 556 (Clist : access Gtk_Clist_Record) return Row_List.Glist; 557 -- Return the list of all the rows in the clist. This might speed up 558 -- the access to the rows a little. 559 -- You can then use the function Set_Cell_Contents to modify the cells 560 -- in the row, and Get_Text or Get_Pixmap to get its contents. 561 562 function Get_Selection 563 (Widget : access Gtk_Clist_Record) return Gtk.Enums.Gint_List.Glist; 564 -- Return the list of selected rows, by number. 565 566 ----------- 567 -- Cells -- 568 ----------- 569 570 function Get_Cell_Type 571 (Clist : access Gtk_Clist_Record; 572 Row : in Gint; 573 Column : in Gint) return Gtk_Cell_Type; 574 -- Return the type of the cell at Row/Column. 575 -- This indicates which of the functions Get_Text. Get_Pixmap, etc. 576 -- below you can use. 577 578 procedure Set_Text 579 (Clist : access Gtk_Clist_Record; 580 Row : in Gint; 581 Column : in Gint; 582 Text : in UTF8_String); 583 -- Set the cell's text, replacing its current contents. 584 -- This changes the type of the cell to Cell_Text. The pixmap (if any) 585 -- will no longer be displayed. 586 587 function Get_Text 588 (Clist : access Gtk_Clist_Record; 589 Row : in Gint; 590 Column : in Gint) return UTF8_String; 591 -- Return the text contained in cell. The type of the cell should be 592 -- either Cell_Text or Cell_Pixtext. 593 -- If there was a problem, a null-length string is returned. 594 -- The problem might appear in case the row or the column are 595 -- invalid, or if the cell does not contain any text. 596 597 function Get_Text 598 (Clist : access Gtk_Clist_Record; 599 Row : Gtk_Clist_Row; 600 Column : in Gint) return UTF8_String; 601 -- Return the text contained in cell. The Row can be obtained from 602 -- Get_Row_List, this function speeds up the access a little compared 603 -- to the other Get_Text above. 604 605 procedure Set_Pixmap 606 (Clist : access Gtk_Clist_Record; 607 Row : in Gint; 608 Column : in Gint; 609 Pixmap : in Gdk.Pixmap.Gdk_Pixmap; 610 Mask : in Gdk.Bitmap.Gdk_Bitmap); 611 -- Set the cell's pixmap, replacing its current contents. 612 -- The type of the cell becomes Cell_Pixmap, and the text is no longer 613 -- displayed. 614 615 procedure Get_Pixmap 616 (Clist : access Gtk_Clist_Record; 617 Row : in Gint; 618 Column : in Gint; 619 Pixmap : out Gdk.Pixmap.Gdk_Pixmap; 620 Mask : out Gdk.Bitmap.Gdk_Bitmap; 621 Is_Valid : out Boolean); 622 -- Return the pixmap contained in a cell. The type of the cell should 623 -- be Cell_Pixmap. 624 -- The result is meaningful only if Is_Valid is True. If the Cell did not 625 -- contain a pixmap, Is_Valid is set to False 626 627 procedure Get_Pixmap 628 (Clist : access Gtk_Clist_Record; 629 Row : in Gtk_Clist_Row; 630 Column : in Gint; 631 Pixmap : out Gdk.Pixmap.Gdk_Pixmap; 632 Mask : out Gdk.Bitmap.Gdk_Bitmap; 633 Is_Valid : out Boolean); 634 -- Return the pixmap contained in a cell. Row can be obtained directly with 635 -- Get_Row_List, and speeds up the access a little compared to the previous 636 -- Get_Pixmap function. 637 638 procedure Set_Pixtext 639 (Clist : access Gtk_Clist_Record; 640 Row : in Gint; 641 Column : in Gint; 642 Text : in UTF8_String; 643 Spacing : in Guint8; 644 Pixmap : in Gdk.Pixmap.Gdk_Pixmap; 645 Mask : in Gdk.Bitmap.Gdk_Bitmap); 646 -- Set both the text and the pixmap for the cell. 647 -- Replace its current contents. The type of the cell becomes Cell_Pixtext, 648 -- and both the text and the pixmap are displayed. 649 650 procedure Get_Pixtext 651 (Clist : access Gtk_Clist_Record; 652 Row : in Gint; 653 Column : in Gint; 654 Spacing : out Guint8; 655 Pixmap : out Gdk.Pixmap.Gdk_Pixmap; 656 Mask : out Gdk.Bitmap.Gdk_Bitmap; 657 Is_Valid : out Boolean); 658 -- The result is not meaningful if Is_Valid is False. 659 -- The only way to get the string is to use Get_Text, since a String is 660 -- an unconstrained type in Ada and is not really convenient to use as an 661 -- out parameter. 662 663 procedure Set_Cell_Style 664 (Clist : access Gtk_Clist_Record; 665 Row : in Gint; 666 Column : in Gint; 667 Style : in Gtk.Style.Gtk_Style); 668 -- Set the style (font, color, ...) used for the cell. 669 -- This overrides the row's style. 670 671 function Get_Cell_Style 672 (Clist : access Gtk_Clist_Record; 673 Row : in Gint; 674 Column : in Gint) return Gtk.Style.Gtk_Style; 675 -- Return the style of the cell. 676 677 procedure Set_Shift 678 (Clist : access Gtk_Clist_Record; 679 Row : in Gint; 680 Column : in Gint; 681 Vertical : in Gint; 682 Horizontal : in Gint); 683 -- Set a horizontal and vertical shift for drawing the content of the cell. 684 -- Both shifts can be either positive or negative. 685 -- This is particularly useful for indenting items in a columns. 686 687 procedure Set_Cell_Contents 688 (Clist : access Gtk_Clist_Record; 689 Row : Gtk_Clist_Row; 690 Column : Gint; 691 Cell_Type : Gtk_Cell_Type; 692 Text : UTF8_String; 693 Spacing : Guint8; 694 Pixmap : Gdk.Pixmap.Gdk_Pixmap; 695 Mask : Gdk.Bitmap.Gdk_Bitmap); 696 -- Modify the contents and type of a cell. 697 -- Cell_Type indicates what should be displayed in the cell. Note that 698 -- if you do not want any string, you should pass an empty string "". 699 -- You get Row from Get_Row_List. 700 701 ------------------------- 702 -- Reordering the list -- 703 ------------------------- 704 705 procedure Set_Reorderable 706 (Clist : access Gtk_Clist_Record; Reorderable : Boolean); 707 -- Set whether the list can be dynamically reordered by the user. 708 -- (using a simple drag-n-drop protocol). 709 710 procedure Set_Use_Drag_Icons 711 (Clist : access Gtk_Clist_Record; Use_Icons : Boolean); 712 -- Set whether drag icons are shown while the user is reordering the list. 713 -- The default value is True. 714 715 procedure Set_Button_Actions 716 (Clist : access Gtk_Clist_Record; 717 Button : Guint; 718 Button_Action : Gtk_Button_Action); 719 -- Set the action for a specific button on the list. 720 -- The default if for the left mouse button to select or drag and item, 721 -- the other buttons are ignored. 722 -- The Button_Expands action has no effect on a clist. 723 724 procedure Moveto 725 (Clist : access Gtk_Clist_Record; 726 Row : in Gint; 727 Column : in Gint; 728 Row_Align : in Gfloat; 729 Col_Align : in Gfloat); 730 -- Scroll the list so that Row/Column is visible. 731 -- If Row is -1, the clist is not scrolled vertically. 732 -- If Column is -1, the clist is not scrolled horizontally. 733 -- The new location of Row/Column depends on the value of Row_Align and 734 -- Col_Align (from 0.0x0.0 (top-left) to 1.0x1.0 (bottom-right), all 735 -- intermediate values are possible). 736 737 --------------- 738 -- Row_Data -- 739 --------------- 740 -- You can associate one private data with each row in the clist. If you 741 -- want to store multiple values, you should create a record type that 742 -- contains all the values, and associate with value with the relevant 743 -- line in the clist. 744 -- This package is the equivalent of Gtk.Widget.User_Data for the Clists. 745 -- 746 -- This is your responsibility to use the Get and Set functions from the 747 -- same generic package. However, you can use different packages for 748 -- different lines (although this will definitely make things harder to 749 -- use!) 750 -- 751 -- Note also that an internal copy of the Data is done, therefore the 752 -- "find" functions found in gtk+ have no equivalent in GtkAda, although it 753 -- would be enough to write one by iterating over the Row numbers. 754 755 generic 756 -- <doc_ignore> 757 type Data_Type (<>) is private; 758 -- </doc_ignore> 759 package Row_Data is 760 function Get 761 (Object : access Gtk_Clist_Record'Class; 762 Row : in Gint) return Data_Type; 763 -- Get the data associated to a specific row. 764 765 function Get 766 (Object : access Gtk_Clist_Record'Class; 767 Row : in Gtk_Clist_Row) return Data_Type; 768 -- Same as above, but acts directly on a row obtained through 769 -- Get_Row_List. This is faster for big lists. 770 771 procedure Set 772 (Object : access Gtk_Clist_Record'Class; 773 Row : in Gint; 774 Data : in Data_Type); 775 -- Modify the data associated with a row 776 777 procedure Set 778 (Object : access Gtk_Clist_Record'Class; 779 Row : in Gtk_Clist_Row; 780 Data : in Data_Type); 781 -- Same as above but acts directly on a row obtained through 782 -- Get_Row_List. This is faster for big lists. 783 784 private 785 -- <doc_ignore> 786 procedure Free_Data (Data : System.Address); 787 -- Free memory associated with Data 788 pragma Convention (C, Free_Data); 789 -- </doc_ignore> 790 end Row_Data; 791 792 -- <doc_ignore> 793 procedure Set_Show_Titles (Clist : access Gtk_Clist_Record; Show : Boolean); 794 -- If show is true, call Column_Titles_Show. Do nothing otherwise. 795 -- This procedure is primarily used by Gate generated code. 796 -- </doc_ignore> 797 798 ---------------- 799 -- Properties -- 800 ---------------- 801 802 -- <properties> 803 -- The following properties are defined for this widget. See 804 -- Glib.Properties for more information on properties. 805 -- 806 -- </properties> 807 808 ------------- 809 -- Signals -- 810 ------------- 811 812 -- <signals> 813 -- The following new signals are defined for this widget: 814 -- 815 -- - "select_row" 816 -- procedure Handler (Clist : access Gtk_Clist_Record'Class; 817 -- Row : Gint; 818 -- Column : Gint; 819 -- Event : Gdk.Event.Gdk_Event); 820 -- 821 -- Emitted when a row is selected. Column contains the column number in 822 -- which the user has clicked, or -1 if the selection was done internally 823 -- by GtkAda. 824 -- Event will be null if the selection was not triggered by an event, eg 825 -- if the row was selected through a call to Select_Row. 826 -- 827 -- - "unselect_row" 828 -- procedure Handler (Clist : access Gtk_Clist_Record'Class; 829 -- Row : Gint; 830 -- Column : Gint; 831 -- Event : Gdk.Event.Gdk_Event); 832 -- 833 -- Emitted to request the unselection of a row. Event will be null most 834 -- of the time when the event is emitted directly by GtkAda. You should 835 -- use Unselect_Row instead. 836 -- 837 -- - "row_move" 838 -- procedure Handler (Clist : access Gtk_Clist_Record'Class; 839 -- Source_Row : Gint; 840 -- Dest_Row : Gint); 841 -- 842 -- Emitted to request the change of a Source_Row to Dest_Row. You should 843 -- use Row_Move instead. 844 -- 845 -- - "click_column" 846 -- procedure Handler (Clist : access Gtk_Clist_Record'Class; 847 -- Column : Gint); 848 -- 849 -- Emitted when the user has clicked on one of the buttons at the top 850 -- of a column. The first column has number 0. 851 -- 852 -- - "resize_column" 853 -- procedure Handler (Clist : access Gtk_Clist_Record'Class; 854 -- Column : Gint; 855 -- Width : Gint); 856 -- 857 -- Emitted to request a new size for a given column. You should use 858 -- Set_Column_Width instead. 859 -- 860 -- - "toggle_focus_row" 861 -- procedure Handler (Clist : access Gtk_Clist_Record'Class); 862 -- 863 -- Emitted to request the change of the selection status (selected/ 864 -- unselected) of the focus row. This signal is not emitted internally 865 -- by GtkAda. 866 -- 867 -- - "select_all" 868 -- procedure Handler (Clist : access Gtk_Clist_Record'Class); 869 -- 870 -- Emitted to request the selection of all the rows in the Clist, if the 871 -- selection mode allows. You should use Select_All instead. 872 -- 873 -- - "unselect_all" 874 -- procedure Handler (Clist : access Gtk_Clist_Record'Class); 875 -- 876 -- Emitted to request the unselection of all the rows in the Clist, if 877 -- the selection mode is different from Browse. You should use 878 -- Unselect_All instead. 879 -- 880 -- - "undo_selection" 881 -- procedure Handler (Clist : access Gtk_Clist_Record'Class); 882 -- 883 -- Emitted to request the cancellation of the last select/unselect 884 -- operation. You should use Undo_Selection instead. 885 -- 886 -- - "start_selection" 887 -- procedure Handler (Clist : access Gtk_Clist_Record'Class); 888 -- 889 -- Request the start of the selection. This signal is not emitted 890 -- internally by GtkAda, but acts as if the user had clicked on the 891 -- focus row (the exact visual modification depends on the selection 892 -- mode). 893 -- 894 -- - "end_selection" 895 -- procedure Handler (Clist : access Gtk_Clist_Record'Class); 896 -- 897 -- Ends the current selection process. This is never emitted internally 898 -- by GtkAda, but acts as if the user had just released the mouse button. 899 -- 900 -- - "toggle_add_mode" 901 -- procedure Handler (Clist : access Gtk_Clist_Record'Class); 902 -- 903 -- Changes the add_mode for the clist (indicates whether the next line 904 -- clicked on will be added to the selection or will replace it). 905 -- This is never emitted internally by GtkAda. 906 -- 907 -- - "extend_selection" 908 -- procedure Handler (Clist : access Gtk_Clist_Record'Class; 909 -- Scroll_Type : Gtk.Enums.Gtk_Scroll_Type; 910 -- Position : Gfloat; 911 -- Auto_Start_Selection : Boolean); 912 -- 913 -- Extends the current selection. Position is used only for certain 914 -- values of Scroll_Type. It is never emitted internally by GtkAda. It 915 -- has no effect if the selection mode is not Extended. 916 -- 917 -- - "scroll_vertical" 918 -- procedure Handler (Clist : access Gtk_Clist_Record'Class; 919 -- Scroll_Type : Gtk.Enums.Gtk_Scroll_Type; 920 -- Position : Gfloat); 921 -- 922 -- Scrolls the clist vertically. This also modifies the selection. 923 -- It is never emitted internally by GtkAda. You should consider using 924 -- Moveto instead. 925 -- 926 -- - "scroll_horizontal" 927 -- procedure Handler (Clist : access Gtk_Clist_Record'Class; 928 -- Scroll_Type : Gtk.Enums.Gtk_Scroll_Type; 929 -- Position : Gfloat); 930 -- 931 -- Scrolls the clist horizontally. This also modifies the selection. 932 -- It is never emitted internally by GtkAda. You should consider using 933 -- Moveto instead. 934 -- 935 -- - "abort_column_resize" 936 -- procedure Handler (Clist : access Gtk_Clist_Record'Class); 937 -- 938 -- Aborts the current interactive resizing of the column by the user. 939 -- This releases the grab done on the pointer. It is never emitted 940 -- internally by GtkAda. 941 -- 942 -- </signals> 943 944 Signal_Abort_Column_Resize : constant Glib.Signal_Name := 945 "abort_column_resize"; 946 Signal_Click_Column : constant Glib.Signal_Name := 947 "click_column"; 948 Signal_End_Selection : constant Glib.Signal_Name := 949 "end_selection"; 950 Signal_Extend_Selection : constant Glib.Signal_Name := 951 "extend_selection"; 952 Signal_Resize_Column : constant Glib.Signal_Name := 953 "resize_column"; 954 Signal_Row_Move : constant Glib.Signal_Name := 955 "row_move"; 956 Signal_Scroll_Horizontal : constant Glib.Signal_Name := 957 "scroll_horizontal"; 958 Signal_Scroll_Vertical : constant Glib.Signal_Name := 959 "scroll_vertical"; 960 Signal_Select_All : constant Glib.Signal_Name := 961 "select_all"; 962 Signal_Select_Row : constant Glib.Signal_Name := 963 "select_row"; 964 Signal_Set_Scroll_Adjustments : constant Glib.Signal_Name := 965 "set_scroll_adjustments"; 966 Signal_Start_Selection : constant Glib.Signal_Name := 967 "start_selection"; 968 Signal_Toggle_Add_Mode : constant Glib.Signal_Name := 969 "toggle_add_mode"; 970 Signal_Toggle_Focus_Row : constant Glib.Signal_Name := 971 "toggle_focus_row"; 972 Signal_Undo_Selection : constant Glib.Signal_Name := 973 "undo_selection"; 974 Signal_Unselect_All : constant Glib.Signal_Name := 975 "unselect_all"; 976 Signal_Unselect_Row : constant Glib.Signal_Name := 977 "unselect_row"; 978 979private 980 type Gtk_Clist_Record is new Gtk.Container.Gtk_Container_Record with record 981 Sort_Func : Gtk_Clist_Compare_Func := null; 982 end record; 983 984 pragma Import (C, Get_Type, "gtk_clist_get_type"); 985end Gtk.Clist; 986 987-- <example> 988-- <include>../examples/documentation/clist.adb</include> 989-- </example> 990 991-- The following subprograms never had a binding, and are now obsolescent: 992-- No binding: gtk_clist_find_row_from_data 993-- No binding: gtk_clist_set_row_data 994