; Module/File: LIG_ColumnSizingModes.pb ; Function: LIG: Spalten-Breiten manipulieren (manuell: DClick, Push & automatisch) - Linux ; Author: Omi ; Date: Juli 08, 2014 ; Version: 0.1 ; Target Compiler: PureBasic 5.22/5.31/5.40 ; Target OS: Linux: (X/K/L)ubuntu, Mint, 32/64, Ascii/Uni ;-------------------------------------------------------------- EnableExplicit ; Object constants #MainWin= 0 #LIG= 0 #CbBox= 1 #WinX= 200 #WinY= 200 #WinW= 500 #WinH= 450 Global.i gEvent, gQuit ;- Functions ... Procedure.i LIG_CountColumns(Gadget); LIG: Anzahl Spalten holen Protected *ColumnList= gtk_tree_view_get_columns_(GadgetID(Gadget)); Zeiger auf Spalten Protected Columns= g_list_length_(*ColumnList) g_list_free_(*ColumnList) ProcedureReturn Columns EndProcedure Procedure LIG_Set_Sizing(Gadget, Mode) Protected.i I Protected *Column Select Mode Case 0 For I = 0 To LIG_CountColumns(#LIG)- 1 *Column = gtk_tree_view_get_column_(GadgetID(#LIG), I); LINUX-API - get the pointer to the column If *Column gtk_tree_view_column_set_resizable_(*Column, #True) EndIf Next I Case 1 For I = 0 To LIG_CountColumns(#LIG)- 1 *Column = gtk_tree_view_get_column_(GadgetID(#LIG), I) If *Column gtk_tree_view_column_set_resizable_(*Column, #False); Nutzen ? gtk_tree_view_column_set_sizing_(*Column, #GTK_TREE_VIEW_COLUMN_GROW_ONLY) EndIf Next I Case 2 For I = 0 To LIG_CountColumns(#LIG)- 1 *Column = gtk_tree_view_get_column_(GadgetID(#LIG), I) If *Column gtk_tree_view_column_set_resizable_(*Column, #False); Nutzen ? gtk_tree_view_column_set_sizing_(*Column, #GTK_TREE_VIEW_COLUMN_AUTOSIZE); set Limit with 'gtk_tree_view_column_set_max_width_(*Column, xxx)' EndIf Next I Case 3 For I = 0 To LIG_CountColumns(#LIG)- 1 *Column = gtk_tree_view_get_column_(GadgetID(#LIG), I) If *Column gtk_tree_view_column_set_resizable_(*Column, #False); Nutzen ? gtk_tree_view_column_set_sizing_(*Column, #GTK_TREE_VIEW_COLUMN_FIXED) EndIf Next I EndSelect EndProcedure ;- Example ... Procedure CreateWindow_Main() Protected.l I, O Protected *Column #Img1= 0 #Img2= 1 If OpenWindow(#MainWin, #WinX, #WinY, #WinW, #WinH, "Column sizing modes", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ListIconGadget(#LIG, 5, 5, 480, 380, "Spalte 1", 70, #PB_ListIcon_AlwaysShowSelection | #PB_ListIcon_GridLines | #PB_ListIcon_CheckBoxes) TextGadget(#PB_Any, 5, 400, 80, 25, "Sizing-Type", #PB_Text_Right) ComboBoxGadget(#CbBox, 90, 393, 130, 30) AddGadgetItem(#CbBox, -1, "no Column-Sizing (manually)") AddGadgetItem(#CbBox, -1, "...GROW_ONLY") AddGadgetItem(#CbBox, -1, "...AUTOSIZE") AddGadgetItem(#CbBox, -1, "...FIXED") SetGadgetState(#CbBox, 0) For O= 1 To 4 AddGadgetColumn(#LIG, O, "Spalte "+Str(O+ 1), 70) Next O For I= 1 To 20 AddGadgetItem(#LIG, -1, Str(I)+".1") Next I For O= 1 To 4 For I= 0 To 19 SetGadgetItemText(#LIG, I, Str(I+1)+"."+Str(O+1), O) Next I Next O For O= 3 To 4 For I= 0 To 19 SetGadgetItemText(#LIG, I, Str(20-I)+"."+Str(O+1), O) Next I Next O EndIf EndProcedure CreateWindow_Main() Repeat gEvent= WaitWindowEvent() Select gEvent Case #PB_Event_CloseWindow gQuit= #True Case #PB_Event_Gadget Select EventGadget() Case #CbBox LIG_Set_Sizing(#LIG, GetGadgetState(#CbBox)) EndSelect EndSelect Until gQuit ; IDE Options = PureBasic 5.40 LTS (Linux - x86) ; CursorPosition = 8 ; Folding = - ; EnableUnicode ; EnableXP ; CurrentDirectory = /home/charly-xubuntu/Programming/PureBasic/purebasic/