| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/rearrangectrl.h
 
- // Purpose:     interface of wxRearrangeList
 
- // Author:      Vadim Zeitlin
 
- // Created:     2008-12-15
 
- // Copyright:   (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- /**
 
-     @class wxRearrangeList
 
-     A listbox-like control allowing the user to rearrange the items and to
 
-     enable or disable them.
 
-     This class allows to change the order of the items shown in it as well as
 
-     to check or uncheck them individually. The data structure used to allow
 
-     this is the order array which contains the items indices indexed by their
 
-     position with an added twist that the unchecked items are represented by
 
-     the bitwise complement of the corresponding index (for any architecture
 
-     using two's complement for negative numbers representation (i.e. just about
 
-     any at all) this means that a checked item N is represented by -N-1 in
 
-     unchecked state). In practice this means that you must apply the C bitwise
 
-     complement operator when constructing the order array, e.g.
 
-     @code
 
-         wxArrayInt order;
 
-         order.push_back(0); // checked item #0
 
-         order.push_back(~1); // unchecked item #1
 
-     @endcode
 
-     So, for example, the array order [1 -3 0] used in conjunction with the
 
-     items array ["first", "second", "third"] means that the items order is
 
-     "second", "third", "first" and the "third" item is unchecked while the
 
-     other two are checked.
 
-     This convention is used both for the order argument of the control ctor or
 
-     Create() and for the array returned from GetCurrentOrder().
 
-     Usually this control will be used together with other controls allowing to
 
-     move the items around in it interactively. The simplest possible solution
 
-     is to use wxRearrangeCtrl which combines it with two standard buttons to
 
-     move the current item up or down.
 
-     @since 2.9.0
 
-     @library{wxcore}
 
-     @category{ctrl}
 
- */
 
- class wxRearrangeList : public wxCheckListBox
 
- {
 
- public:
 
-     /**
 
-         Default constructor.
 
-         Create() must be called later to effectively create the control.
 
-      */
 
-     wxRearrangeList();
 
-     /**
 
-         Constructor really creating the control.
 
-         Please see Create() for the parameters description.
 
-      */
 
-     wxRearrangeList(wxWindow *parent,
 
-                     wxWindowID id,
 
-                     const wxPoint& pos,
 
-                     const wxSize& size,
 
-                     const wxArrayInt& order,
 
-                     const wxArrayString& items,
 
-                     long style = 0,
 
-                     const wxValidator& validator = wxDefaultValidator,
 
-                     const wxString& name = wxRearrangeListNameStr);
 
-     /**
 
-         Effectively creates the window for an object created using the default
 
-         constructor.
 
-         This function is very similar to wxCheckListBox::Create() except that
 
-         it has an additional parameter specifying the initial order of the
 
-         items. Please see the class documentation for the explanation of the
 
-         conventions used by the @a order argument.
 
-         @param parent
 
-             The parent window, must be non-@NULL.
 
-         @param id
 
-             The window identifier.
 
-         @param pos
 
-             The initial window position.
 
-         @param size
 
-             The initial window size.
 
-         @param order
 
-             Array specifying the initial order of the items in @a items array.
 
-         @param items
 
-             The items to display in the list.
 
-         @param style
 
-             The control style, there are no special styles for this class but
 
-             the base class styles can be used here.
 
-         @param validator
 
-             Optional window validator.
 
-         @param name
 
-             Optional window name.
 
-      */
 
-     bool Create(wxWindow *parent,
 
-                 wxWindowID id,
 
-                 const wxPoint& pos,
 
-                 const wxSize& size,
 
-                 const wxArrayInt& order,
 
-                 const wxArrayString& items,
 
-                 long style = 0,
 
-                 const wxValidator& validator = wxDefaultValidator,
 
-                 const wxString& name = wxRearrangeListNameStr);
 
-     /**
 
-         Return the current order of the items.
 
-         The order may be different from the one passed to the constructor if
 
-         MoveCurrentUp() or MoveCurrentDown() were called.
 
-      */
 
-     const wxArrayInt& GetCurrentOrder() const;
 
-     /**
 
-         Return @true if the currently selected item can be moved up.
 
-         This function is useful for EVT_UPDATE_UI handler for the standard "Up"
 
-         button often used together with this control and wxRearrangeCtrl uses
 
-         it in this way.
 
-         @return
 
-             @true if the currently selected item can be moved up in the
 
-             listbox, @false if there is no selection or the current item is the
 
-             first one.
 
-         @see CanMoveCurrentDown()
 
-      */
 
-     bool CanMoveCurrentUp() const;
 
-     /**
 
-         Return @true if the currently selected item can be moved down.
 
-         @see CanMoveCurrentUp()
 
-      */
 
-     bool CanMoveCurrentDown() const;
 
-     /**
 
-         Move the currently selected item one position above.
 
-         This method is useful to implement the standard "Up" button behaviour
 
-         and wxRearrangeCtrl uses it for this.
 
-         @return
 
-             @true if the item was moved or @false if this couldn't be done.
 
-         @see MoveCurrentDown()
 
-      */
 
-     bool MoveCurrentUp();
 
-     /**
 
-         Move the currently selected item one position below.
 
-         @see MoveCurrentUp()
 
-      */
 
-     bool MoveCurrentDown();
 
- };
 
- /**
 
-     @class wxRearrangeCtrl
 
-     A composite control containing a wxRearrangeList and the buttons allowing
 
-     to move the items in it.
 
-     This control is in fact a panel containing the wxRearrangeList control and
 
-     the "Up" and "Down" buttons to move the currently selected item up or down.
 
-     It is used as the main part of a wxRearrangeDialog.
 
-     @since 2.9.0
 
-     @library{wxcore}
 
-     @category{ctrl}
 
-  */
 
- class wxRearrangeCtrl : public wxPanel
 
- {
 
- public:
 
-     /**
 
-         Default constructor.
 
-         Create() must be called later to effectively create the control.
 
-      */
 
-     wxRearrangeCtrl();
 
-     /**
 
-         Constructor really creating the control.
 
-         Please see Create() for the parameters description.
 
-      */
 
-     wxRearrangeCtrl(wxWindow *parent,
 
-                     wxWindowID id,
 
-                     const wxPoint& pos,
 
-                     const wxSize& size,
 
-                     const wxArrayInt& order,
 
-                     const wxArrayString& items,
 
-                     long style = 0,
 
-                     const wxValidator& validator = wxDefaultValidator,
 
-                     const wxString& name = wxRearrangeListNameStr);
 
-     /**
 
-         Effectively creates the window for an object created using the default
 
-         constructor.
 
-         The parameters of this method are the same as for
 
-         wxRearrangeList::Create().
 
-      */
 
-     bool Create(wxWindow *parent,
 
-                 wxWindowID id,
 
-                 const wxPoint& pos,
 
-                 const wxSize& size,
 
-                 const wxArrayInt& order,
 
-                 const wxArrayString& items,
 
-                 long style = 0,
 
-                 const wxValidator& validator = wxDefaultValidator,
 
-                 const wxString& name = wxRearrangeListNameStr);
 
-     /**
 
-         Return the listbox which is the main part of this control.
 
-      */
 
-     wxRearrangeList *GetList() const;
 
- };
 
- /**
 
-     @class wxRearrangeDialog
 
-     A dialog allowing the user to rearrange the specified items.
 
-     This dialog can be used to allow the user to modify the order of the items
 
-     and to enable or disable them individually. For example:
 
-     @code
 
-         wxArrayString items;
 
-         items.push_back("meat");
 
-         items.push_back("fish");
 
-         items.push_back("fruits");
 
-         items.push_back("beer");
 
-         wxArrayInt order;
 
-         order.push_back(3);
 
-         order.push_back(0);
 
-         order.push_back(1);
 
-         order.push_back(2);
 
-         wxRearrangeDialog dlg(NULL,
 
-                               "You can also uncheck the items you don't like "
 
-                               "at all.",
 
-                               "Sort the items in order of preference",
 
-                               order, items);
 
-         if ( dlg.ShowModal() == wxID_OK ) {
 
-             order = dlg.GetOrder();
 
-             for ( size_t n = 0; n < order.size(); n++ ) {
 
-                 if ( order[n] >= 0 ) {
 
-                     wxLogMessage("Your most preferred item is \"%s\"",
 
-                                  items[order[n]]);
 
-                     break;
 
-                 }
 
-             }
 
-         }
 
-     @endcode
 
-     @since 2.9.0
 
-     @library{wxcore}
 
-     @category{cmndlg}
 
-  */
 
- class wxRearrangeDialog : public wxDialog
 
- {
 
- public:
 
-     /**
 
-         Default constructor.
 
-         Create() must be called later to effectively create the control.
 
-      */
 
-     wxRearrangeDialog();
 
-     /**
 
-         Constructor creating the dialog.
 
-         Please see Create() for the parameters description.
 
-      */
 
-     wxRearrangeDialog(wxWindow *parent,
 
-                       const wxString& message,
 
-                       const wxString& title,
 
-                       const wxArrayInt& order,
 
-                       const wxArrayString& items,
 
-                       const wxPoint& pos = wxDefaultPosition,
 
-                       const wxString& name = wxRearrangeDialogNameStr);
 
-     /**
 
-         Effectively creates the dialog for an object created using the default
 
-         constructor. 
 
-         @param parent
 
-             The dialog parent, possibly @NULL.
 
-         @param message
 
-             The message shown inside the dialog itself, above the items list.
 
-         @param title
 
-             The title of the dialog.
 
-         @param order
 
-             The initial order of the items in the convention used by
 
-             wxRearrangeList.
 
-         @param items
 
-             The items to show in the dialog.
 
-         @param pos
 
-             Optional dialog position.
 
-         @param name
 
-             Optional dialog name.
 
-         @return
 
-             @true if the dialog was successfully created or @false if creation
 
-             failed.
 
-      */
 
-     bool Create(wxWindow *parent,
 
-                 const wxString& message,
 
-                 const wxString& title,
 
-                 const wxArrayInt& order,
 
-                 const wxArrayString& items,
 
-                 const wxPoint& pos = wxDefaultPosition,
 
-                 const wxString& name = wxRearrangeDialogNameStr);
 
-     /**
 
-         Customize the dialog by adding extra controls to it.
 
-         This function adds the given @a win to the dialog, putting it just
 
-         below the part occupied by wxRearrangeCtrl. It must be called after
 
-         creating the dialog and you will typically need to process the events
 
-         generated by the extra controls for them to do something useful.
 
-         For example:
 
-         @code
 
-             class MyRearrangeDialog : public wxRearrangeDialog
 
-             {
 
-             public:
 
-                 MyRearrangeDialog(wxWindow *parent, ...)
 
-                     : wxRearrangeDialog(parent, ...)
 
-                 {
 
-                     wxPanel *panel = new wxPanel(this);
 
-                     wxSizer *sizer = new wxBoxSizer(wxHORIZONTAL);
 
-                     sizer->Add(new wxStaticText(panel, wxID_ANY,
 
-                                                 "Column width in pixels:"));
 
-                     sizer->Add(new wxTextCtrl(panel, wxID_ANY, ""));
 
-                     panel->SetSizer(sizer);
 
-                     AddExtraControls(panel);
 
-                 }
 
-                 ... code to update the text control with the currently selected
 
-                     item width and to react to its changes omitted ...
 
-             };
 
-         @endcode
 
-         See also the complete example of a custom rearrange dialog in the
 
-         dialogs sample.
 
-         @param win
 
-             The window containing the extra controls. It must have this dialog
 
-             as its parent.
 
-      */
 
-     void AddExtraControls(wxWindow *win);
 
-     /**
 
-         Return the list control used by the dialog.
 
-         @see wxRearrangeCtrl::GetList()
 
-      */
 
-     wxRearrangeList *GetList() const;
 
-     /**
 
-         Return the array describing the order of items after it was modified by
 
-         the user.
 
-         Please notice that the array will contain negative items if any items
 
-         were unchecked. See wxRearrangeList for more information about the
 
-         convention used for this array.
 
-      */
 
-     wxArrayInt GetOrder() const;
 
- };
 
 
  |