]> git.saurik.com Git - wxWidgets.git/commitdiff
Implemented ListCtrl::SetColumnWidth() wxLIST_AUTOSIZE
authorRobert Roebling <robert@roebling.de>
Fri, 11 Jun 1999 17:27:57 +0000 (17:27 +0000)
committerRobert Roebling <robert@roebling.de>
Fri, 11 Jun 1999 17:27:57 +0000 (17:27 +0000)
  Fixed typo in configure
  Added docs for wxINTXX_SWAP_XX macros

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2763 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

configure.in
docs/latex/wx/function.tex
docs/latex/wx/listctrl.tex
include/wx/generic/listctrl.h
samples/listctrl/listtest.cpp
src/generic/listctrl.cpp

index 04073d1d23084e9453ad286fd80df36e4e040769..27c0017d3fda25efe60199401ccdf34ece24ad57 100644 (file)
@@ -28,7 +28,7 @@ dnl WX_BINARY_AGE += 1
 dnl
 dnl if any functions have been added, do:
 dnl
-dnl WX_INTERFACE_AGE = 1
+dnl WX_INTERFACE_AGE = 0
 
 WX_MAJOR_VERSION_NUMBER=2
 WX_MINOR_VERSION_NUMBER=1
index 6bf8961e4746ccc7468cfd339729e7b73b2c48bf..bb08c1b42db1374646ed676d6b5d9cefe5c012de 100644 (file)
@@ -1586,6 +1586,55 @@ function.
 
 These macros are defined in wxWindows.
 
+\membersection{wxINTXX\_SWAP\_ALWAYS}\label{intswapalways}
+
+\func{wxInt32}{wxINT32\_SWAP\_ALWAYS}{\param{wxInt32 }{value}}
+
+\func{wxUint32}{wxUINT32\_SWAP\_ALWAYS}{\param{wxUint32 }{value}}
+
+\func{wxInt16}{wxINT16\_SWAP\_ALWAYS}{\param{wxInt16 }{value}}
+
+\func{wxUint16}{wxUINT16\_SWAP\_ALWAYS}{\param{wxUint16 }{value}}
+
+This macro will swap the bytes of the {\it value} variable from little
+endian to big endian or vice versa.
+
+\membersection{wxINTXX\_SWAP\_ON\_BE}\label{intswaponbe}
+
+\func{wxInt32}{wxINT32\_SWAP\_ON\_BE}{\param{wxInt32 }{value}}
+
+\func{wxUint32}{wxUINT32\_SWAP\_ON\_BE}{\param{wxUint32 }{value}}
+
+\func{wxInt16}{wxINT16\_SWAP\_ON\_BE}{\param{wxInt16 }{value}}
+
+\func{wxUint16}{wxUINT16\_SWAP\_ON\_BE}{\param{wxUint16 }{value}}
+
+This macro will swap the bytes of the {\it value} variable from little
+endian to big endian or vice versa if the program is compiled on a
+big-endian architecture (such as Sun work stations). If the program has 
+been compiled on a little-endian architecture, the value will be unchanged.
+
+Use these macros to read data from and write data to a file that stores 
+data in little endian (Intel i386) format.
+
+\membersection{wxINTXX\_SWAP\_ON\_LE}\label{intswaponle}
+
+\func{wxInt32}{wxINT32\_SWAP\_ON\_LE}{\param{wxInt32 }{value}}
+
+\func{wxUint32}{wxUINT32\_SWAP\_ON\_LE}{\param{wxUint32 }{value}}
+
+\func{wxInt16}{wxINT16\_SWAP\_ON\_LE}{\param{wxInt16 }{value}}
+
+\func{wxUint16}{wxUINT16\_SWAP\_ON\_LE}{\param{wxUint16 }{value}}
+
+This macro will swap the bytes of the {\it value} variable from little
+endian to big endian or vice versa if the program is compiled on a
+little-endian architecture (such as Intel PCs). If the program has 
+been compiled on a big-endian architecture, the value will be unchanged.
+
+Use these macros to read data from and write data to a file that stores 
+data in big endian format.
+
 \membersection{CLASSINFO}\label{classinfo}
 
 \func{wxClassInfo *}{CLASSINFO}{className}
index 7d7a0873bbc9078f0f26ad5fa0b5f91f16351ed3..870041f7f34b014a8e5605d2e261d7e52c194232 100644 (file)
@@ -26,12 +26,12 @@ the list wraps, unlike a wxListBox.}
 \twocolitem{\windowstyle{wxLC\_REPORT}}{single or multicolumn report view, with optional header.}
 \twocolitem{\windowstyle{wxLC\_ICON}}{Large icon view, with optional labels.}
 \twocolitem{\windowstyle{wxLC\_SMALL\_ICON}}{Small icon view, with optional labels.}
-\twocolitem{\windowstyle{wxLC\_ALIGN\_TOP}}{Icons align to the top (default).}
-\twocolitem{\windowstyle{wxLC\_ALIGN\_LEFT}}{Icons align to the left.}
-\twocolitem{\windowstyle{wxLC\_AUTOARRANGE}}{Icons arrange themselves.}
-\twocolitem{\windowstyle{wxLC\_USER\_TEXT}}{The application provides label text on demand, except for column headers.}
+\twocolitem{\windowstyle{wxLC\_ALIGN\_TOP}}{Icons align to the top. Win32 default, Win32 only. }
+\twocolitem{\windowstyle{wxLC\_ALIGN\_LEFT}}{Icons align to the left. }
+\twocolitem{\windowstyle{wxLC\_AUTOARRANGE}}{Icons arrange themselves. Win32 only. }
+\twocolitem{\windowstyle{wxLC\_USER\_TEXT}}{The application provides label text on demand, except for column headers. Win32 only. }
 \twocolitem{\windowstyle{wxLC\_EDIT\_LABELS}}{Labels are editable: the application will be notified when editing starts.}
-\twocolitem{\windowstyle{wxLC\_NO\_HEADER}}{No header in report mode.}
+\twocolitem{\windowstyle{wxLC\_NO\_HEADER}}{No header in report mode. Win32 only. }
 \twocolitem{\windowstyle{wxLC\_SINGLE\_SEL}}{Single selection.}
 \twocolitem{\windowstyle{wxLC\_SORT\_ASCENDING}}{Sort in ascending order (must still supply a comparison callback in SortItems.}
 \twocolitem{\windowstyle{wxLC\_SORT\_DESCENDING}}{Sort in descending order (must still supply a comparison callback in SortItems.}
@@ -111,7 +111,7 @@ Destructor, destroying the list control.
 
 \func{bool}{Arrange}{\param{int }{flag = wxLIST\_ALIGN\_DEFAULT}}
 
-Arranges the items in icon or small icon view. {\it flag} is one of:
+Arranges the items in icon or small icon view. This only has effect on Win32. {\it flag} is one of:
 
 \twocolwidtha{5cm}
 \begin{twocollist}\itemsep=0pt
@@ -455,6 +455,8 @@ information.
 Sets the column width.
 
 {\it width} can be a width in pixels or wxLIST\_AUTOSIZE (-1) or wxLIST\_AUTOSIZE\_USEHEADER (-2).
+wxLIST\_AUTOSIZE will resize the column to the length of its longest item. wxLIST\_AUTOSIZE\_USEHEADER
+will resize the column to the length of the header (Win32) or 80 pixels (other platforms).
 
 In small or normal icon view, {\it col} must be -1, and the column width is set for all columns.
 
@@ -504,11 +506,11 @@ The {\bf m\_stateMask} and {\bf m\_state} members take flags from the following:
 
 \twocolwidtha{5cm}
 \begin{twocollist}\itemsep=0pt
-\twocolitem{wxLIST\_STATE\_DONTCARE}{Don't care what the state is.}
-\twocolitem{wxLIST\_STATE\_DROPHILITED}{The item is highlighted to receive a drop event.}
+\twocolitem{wxLIST\_STATE\_DONTCARE}{Don't care what the state is. Win32 only. }
+\twocolitem{wxLIST\_STATE\_DROPHILITED}{The item is highlighted to receive a drop event. Win32 only. }
 \twocolitem{wxLIST\_STATE\_FOCUSED}{The item has the focus.}
 \twocolitem{wxLIST\_STATE\_SELECTED}{The item is selected.}
-\twocolitem{wxLIST\_STATE\_CUT}{The item is in the cut state.}
+\twocolitem{wxLIST\_STATE\_CUT}{The item is in the cut state. Win32 only. }
 \end{twocollist}
 
 \func{long}{SetItem}{\param{long }{index}, \param{int }{col}, \param{const wxString\& }{label}, \param{int }{imageId = -1}}
index b9a9e74ce506dc49b57d86c9b6f46da1d90ab282..70afe451358c05cb3ce161e6ce269ff2347b6a0f 100644 (file)
@@ -145,8 +145,8 @@ enum {
 
 // Autosize values for SetColumnWidth
 enum {
-    wxLIST_AUTOSIZE = -1,          // always 80 in wxGLC (what else?)
-    wxLIST_AUTOSIZE_USEHEADER = -2
+    wxLIST_AUTOSIZE = -1,           // width of longest item
+    wxLIST_AUTOSIZE_USEHEADER = -2  // always 80 in wxGLC
 };
 
 // Flag values for GetItemRect
index 7e3afcc677042961eb439524d17ee077e04a2eb7..acdf26adfd559afc71fda3658f7ad6230e118fab 100644 (file)
@@ -205,55 +205,62 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
 void MyFrame::OnDeselectAll(wxCommandEvent& WXUNUSED(event))
 {
    int n = m_listCtrl->GetItemCount();
-   int i;
-   for(i = 0; i < n; i++)
+   for (int i = 0; i < n; i++)
       m_listCtrl->SetItemState(i,0,wxLIST_STATE_SELECTED);
 }
 
 void MyFrame::OnSelectAll(wxCommandEvent& WXUNUSED(event))
 {
    int n = m_listCtrl->GetItemCount();
-   int i;
-   for(i = 0; i < n; i++)
+   for (int i = 0; i < n; i++)
       m_listCtrl->SetItemState(i,wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
 }
 
 void MyFrame::OnListView(wxCommandEvent& WXUNUSED(event))
 {
-       m_listCtrl->DeleteAllItems();
-       m_logWindow->Clear();
-       m_listCtrl->SetSingleStyle(wxLC_LIST);
+    m_listCtrl->DeleteAllItems();
+    m_logWindow->Clear();
+    m_listCtrl->SetSingleStyle(wxLC_LIST);
     m_listCtrl->SetImageList((wxImageList *) NULL, wxIMAGE_LIST_NORMAL);
     m_listCtrl->SetImageList((wxImageList *) NULL, wxIMAGE_LIST_SMALL);
 
-       for ( int i=0; i < 30; i++)
-       {
-               wxChar buf[20];
-               wxSprintf(buf, _T("Item %d"), i);
-               m_listCtrl->InsertItem(i, buf);
-       }
+    for ( int i=0; i < 30; i++)
+    {
+       wxChar buf[20];
+       wxSprintf(buf, _T("Item %d"), i);
+       m_listCtrl->InsertItem(i, buf);
+    }
 }
 
 void MyFrame::OnReportView(wxCommandEvent& WXUNUSED(event))
 {
-       m_listCtrl->DeleteAllItems();
-       m_logWindow->Clear();
-       m_listCtrl->SetSingleStyle(wxLC_REPORT);
+    m_listCtrl->DeleteAllItems();
+    m_logWindow->Clear();
+   
+    m_listCtrl->SetSingleStyle(wxLC_REPORT);
     m_listCtrl->SetImageList((wxImageList *) NULL, wxIMAGE_LIST_NORMAL);
     m_listCtrl->SetImageList(wxGetApp().m_imageListSmall, wxIMAGE_LIST_SMALL);
 
-       m_listCtrl->InsertColumn(0, "Column 1", wxLIST_FORMAT_LEFT, 140);
-       m_listCtrl->InsertColumn(1, "Column 2", wxLIST_FORMAT_LEFT, 140);
-
-       for ( int i=0; i < 30; i++)
-       {
-               wxChar buf[50];
-               wxSprintf(buf, _T("Item %d, col 1"), i);
-               long tmp = m_listCtrl->InsertItem(i, buf, 0);
-
-               wxSprintf(buf, _T("Item %d, broad column 2"), i);
-               tmp = m_listCtrl->SetItem(i, 1, buf);
-       }
+    m_listCtrl->InsertColumn(0, "Column 1"); // , wxLIST_FORMAT_LEFT, 140);
+    m_listCtrl->InsertColumn(1, "Column 2"); // , wxLIST_FORMAT_LEFT, 140);
+    m_listCtrl->InsertColumn(2, "One More Column (2)"); // , wxLIST_FORMAT_LEFT, 140);
+
+    for ( int i=0; i < 30; i++)
+    {
+       wxChar buf[50];
+       wxSprintf(buf, _T("This is item %d"), i);
+       long tmp = m_listCtrl->InsertItem(i, buf, 0);
+
+       wxSprintf(buf, _T("Col 1, item %d"), i);
+       tmp = m_listCtrl->SetItem(i, 1, buf);
+       
+       wxSprintf(buf, _T("Item %d in column 2"), i);
+       tmp = m_listCtrl->SetItem(i, 2, buf);
+    }
+    
+    m_listCtrl->SetColumnWidth( 0, wxLIST_AUTOSIZE );
+    m_listCtrl->SetColumnWidth( 1, wxLIST_AUTOSIZE );
+    m_listCtrl->SetColumnWidth( 2, wxLIST_AUTOSIZE );
 }
 
 void MyFrame::OnIconView(wxCommandEvent& WXUNUSED(event))
index c64f7e42293c932a67b6a91c5de5e50113134ae1..25364ef23fb0d50a37278fa331394b0cfcffae98 100644 (file)
@@ -1695,7 +1695,44 @@ void wxListMainWindow::SetColumnWidth( int col, int width )
 
     m_dirty = TRUE;
 
-    wxNode *node = m_columns.Nth( col );
+    wxNode *node = (wxNode*) NULL;
+
+    if (width == wxLIST_AUTOSIZE_USEHEADER) width = 80;
+    if (width == wxLIST_AUTOSIZE)
+    {
+        wxClientDC dc(this);
+        dc.SetFont( GetFont() );
+        int max = 10;
+        node = m_lines.First();
+        while (node)
+        {
+            wxListLineData *line = (wxListLineData*)node->Data();
+            wxNode *n = line->m_items.Nth( col );
+            if (n)
+            {
+                wxListItemData *item = (wxListItemData*)n->Data();
+               int current = 0, ix = 0, iy = 0;
+               long lx = 0, ly = 0;
+               if (item->HasImage())
+               {
+                    GetImageSize( item->GetImage(), ix, iy );
+                   current = ix + 5;
+               }
+               if (item->HasText())
+               {
+                   wxString str;
+                   item->GetText( str );
+                   dc.GetTextExtent( str, &lx, &ly );
+                   current += lx;
+               }
+               if (current > max) max = current;
+            }
+            node = node->Next();
+        }
+       width = max+10;
+    }
+
+    node = m_columns.Nth( col );
     if (node)
     {
         wxListHeaderData *column = (wxListHeaderData*)node->Data();