TheSwamp

Code Red => Visual DCL Programming => AutoLISP (Vanilla / Visual) => OpenDCL => Topic started by: mr_nick on June 21, 2012, 11:41:34 AM

Title: List of checkboxes - is it possible?
Post by: mr_nick on June 21, 2012, 11:41:34 AM
Is there a way of creating a list of checkboxes via code rather than hardcoding them into a dialog? I want to create a selection list by passing a list of strings, as per you do with a listbox, but to use an array of checkboxes instead.

I know I can use a multi/toggle listbox but when I did that, the first comment I received back was along the lines of 'Yeah, it works but damn - it's ugly'.
Title: Re: List of checkboxes - is it possible?
Post by: jbuzbee on June 21, 2012, 04:22:02 PM
All controls have a visibilty property accessible via lisp.  You'll still need to build the form in the OpenDCL editor and use the visibilty property to show / hide the appropriate number of controls.  You can also re-size the form via lisp.

I have done this before so I know it's possible - but not easy.

jb
Title: Re: List of checkboxes - is it possible?
Post by: owenwengerd on June 21, 2012, 04:29:08 PM
Perhaps a multiple selection list box or list view control would work instead of using check boxes.
Title: Re: List of checkboxes - is it possible?
Post by: mr_nick on June 22, 2012, 04:32:08 AM
OK, no straightforward approach then other than a listbox. Having tried that one already, I know it's simple enough but it met with some 'unfavourable' comments about it's appearance.

I'll have a fiddle and see what I can come up with.

Thanks.
Title: Re: List of checkboxes - is it possible?
Post by: Lee Mac on June 22, 2012, 08:26:04 AM
Is standard DCL an option?

Code - Auto/Visual Lisp: [Select]
  1. (defun c:test ( / *error* d e f h i l s )
  2.  
  3.     (defun *error* ( msg )
  4.         (if (< 0 h)
  5.             (unload_dialog h)
  6.         )
  7.         (if (findfile f)
  8.             (vl-file-delete f)
  9.         )
  10.         (if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
  11.             (princ (strcat "\nError: " msg))
  12.         )
  13.         (princ)
  14.     )
  15.    
  16.     (if (setq s (ssget))
  17.         (progn
  18.             (repeat (setq i (sslength s))
  19.                 (setq e (cdr (assoc 0 (entget (ssname s (setq i (1- i)))))))
  20.                 (if (not (member e l))
  21.                     (setq l (cons e l))
  22.                 )
  23.             )
  24.             (if
  25.                 (and
  26.                     (setq f (vl-filename-mktemp nil nil ".dcl"))
  27.                     (setq d (open f "w"))
  28.                     (write-line "test : dialog { label = \"Choose Objects\"; spacer;" d)
  29.                     (foreach x (acad_strlsort l)
  30.                         (write-line (strcat ": toggle { label = \"" x "\"; key = \"" x "\";}") d)
  31.                     )
  32.                     (write-line "ok_only; }" d)
  33.                     (not (setq d (close d)))
  34.                     (< 0 (setq h (load_dialog f)))
  35.                     (new_dialog "test" h)
  36.                 )
  37.                 (start_dialog)
  38.             )
  39.             (if (< 0 h)
  40.                 (unload_dialog h)
  41.             )
  42.             (if (findfile f)
  43.                 (vl-file-delete f)
  44.             )
  45.         )
  46.     )
  47.     (princ)
  48. )
Title: Re: List of checkboxes - is it possible?
Post by: mr_nick on June 22, 2012, 08:47:26 AM
Is standard DCL an option?

Most definitely is. I still have one or two routines which use DCL where a dialog needs to be created on the fly in this manner - albeit in very simplistic ways. I must admit, I do tend to overlook DCL nowadays due to the comparitive simplicity of ODCL but I will certainly revisit it after seeing your example.

Thanks for the inspiration.
Title: Re: List of checkboxes - is it possible?
Post by: owenwengerd on June 22, 2012, 01:26:05 PM
If you must have check boxes, you could use a grid control. The grid control has some idiosyncracies that may make it a bit unwieldy, but it would work in theory.
Title: Re: List of checkboxes - is it possible?
Post by: jbuzbee on June 22, 2012, 02:58:32 PM
mr_rick,

In the other thread: reactor causing fatal error, what exactly were you wanting to do?  If you want to automatically control the layer the vport goes on why not just edit the mvsetup.lsp?

jb
Title: Re: List of checkboxes - is it possible?
Post by: Lee Mac on June 22, 2012, 05:06:51 PM
Is standard DCL an option?

Most definitely is. I still have one or two routines which use DCL where a dialog needs to be created on the fly in this manner - albeit in very simplistic ways. I must admit, I do tend to overlook DCL nowadays due to the comparitive simplicity of ODCL but I will certainly revisit it after seeing your example.

Thanks for the inspiration.

You're very welcome, hope it helps  :-)
Title: Re: List of checkboxes - is it possible?
Post by: mr_nick on June 22, 2012, 09:57:17 PM
mr_rick,

In the other thread: reactor causing fatal error, what exactly were you wanting to do?  If you want to automatically control the layer the vport goes on why not just edit the mvsetup.lsp?

jb
This topic is not linked to the reactor code. And to that end MVSETUP was not linked to the reactor code, it was purely incidental that somebody in the office started reporting repeated crashes when he was using MVSETUP.

But that is  another tale, for another thread...
Title: Re: List of checkboxes - is it possible?
Post by: mr_nick on June 25, 2012, 12:12:52 PM
If you must have check boxes, you could use a grid control. The grid control has some idiosyncracies that may make it a bit unwieldy, but it would work in theory.

Having had a bit of a play around, the grid control seems to provide the right degree of flexibilty and appearance for my needs but I'm a little concerned by your warning Owen. Would you care to elaborate of what these idiosyncracies are so I know what to look out for or avoid?
Title: Re: List of checkboxes - is it possible?
Post by: owenwengerd on June 25, 2012, 01:53:21 PM
I was referring to possibly undesirable display elements and the editing architecture (i.e. you toggle a checkbox by "editing" its cell, which toggles the image for the cell - not as straightforward as a checkbox control).