Using a prompt to set options

I am creating a toolbar. One of the buttons on my toolbar is this setcounter button below.

setcounter = Dynamic[Button[“Set Counters”, {

SetOptions[InputNotebook[],
CounterAssignments -> {{“StaticChapter”, 3}, {“StaticSection”,
5}}]},

Appearance -> “Palette”]]

As shown, this button sets each counter to 3 and 5 respectively. I would like to create a prompt in the form of a popup window or dialog that will allow the user to enter their own positive integers. And then the option be set based upon those numbers.

I know I probably just need one line of code before “SetOptions…” but I can’t seem to get anything to work. I’ve tried dialogs… but I can’t get it to wait for the inputs before setting the option. Any Ideas?

=================

=================

1 Answer
1

=================

DynamicModule[{counters, oldcounters},

Button[“Set Counters”,
oldcounters =
CurrentValue[InputNotebook[], {CounterAssignments}][[All, 2]];

counters = DialogInput[{x = 0, y = 0},
Column[{
“SetCounters:”,
Row[{“StaticChapter “, InputField[Dynamic[x,(x = Round[#]) &], Number]}],
Row[{“StaticSection “, InputField[Dynamic[y,(y = Round[#]) &], Number]}],
Row[{CancelButton[DialogReturn[$Canceled]],
Button[“Reset”, DialogReturn[{x, y}], ImageSize -> Automatic]}]
}]
];
If[counters =!= $Failed && counters =!= $Canceled,
SetOptions[InputNotebook[],
CounterAssignments -> {{“StaticChapter”,
counters[[1]]}, {“StaticSection”, counters[[2]]}}],

SetOptions[InputNotebook[],
CounterAssignments -> {{“StaticChapter”,
oldcounters[[1]]}, {“StaticSection”, oldcounters[[2]]}}]
], Appearance -> “Palette”, Method -> “Queued”]
]

  

 

Thank you Mike. This works great! I was thinking their would be a simpler solution but based upon what you’ve done maybe not?
– Michael McCain
Dec 24 ’15 at 2:39

  

 

Spoke to soon…. Something isn’t working with your code. If I try calling one of the counterboxs it doesn’t work. I’m thinking it might be because your counters are stored as string and not numbers?
– Michael McCain
Dec 24 ’15 at 2:41

  

 

Yep! Change both occurrences of String to Number in your code and it works perfect! Thank you!
– Michael McCain
Dec 24 ’15 at 2:45

1

 

@MichaelMcCain yes correct. Also you need integers so I added a bit more to ensure that.
– Mike Honeychurch
Dec 24 ’15 at 3:41