MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Creating dialogs, right-aligning buttons

  • To: mathgroup at smc.vnet.net
  • Subject: [mg123940] Re: Creating dialogs, right-aligning buttons
  • From: Szabolcs HorvÃt <szhorvat at gmail.com>
  • Date: Mon, 2 Jan 2012 02:40:43 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <201201010728.CAA28407@smc.vnet.net> <CAEtRDSebnrLfE-DTG6bXY77faNOcS7Z6E6ROMowhh6AjMvdtRA@mail.gmail.com>

Thank you!

In the meantime I also found Pane[], which I wasn't familiar with before.

This is what I use right now:

screenHeight[] := -Subtract @@
    Part[ScreenRectangle /. Options[$FrontEnd, ScreenRectangle], 2];

preview[img_Image] :=
  CreateDialog[
   Column[{
     Style["Do you want to do this?", Bold],
     Pane[
      Image[img, Magnification -> 1], {Automatic,
       Min[screenHeight[] - 140, 1 + ImageDimensions[img][[2]]]},
      Scrollbars -> Automatic, AppearanceElements -> {},
      ImageMargins -> 0
      ],
     Item[
      ChoiceButtons[{"Do stuff"}, {doStuff[
         img]; DialogReturn[]}], Alignment -> Right]
     }]
   ];

Points to note:

 * screenHeight[] return the vertical usable screens space (screen
height, minus things like the taskbar on Windows, Mathematica menu,
etc.)

 * I needed to make the Pane[] 1 pixel taller than the image itself,
otherwise I'd occasionally get rendering artefacts as I move the mouse
across the screen

 * AppearanceElements -> {} removes the resize grip

 * my images are never wider than the screen, so I didn't protect
against horizontal overflow


2012/1/1 Bob Hanlon <hanlonr357 at gmail.com>:
> image = Rasterize[
>   ExampleData[{"AerialImage", "Earth"}],
>   ImageSize -> 1024]; {* oversize image *)
>
> itemWidth = Min[512,
>   {ImageSize /. AbsoluteOptions[image, ImageSize]}[[1]]];
>
> CreateDialog[
>  Column[{
>    Panel[
>     "Some message here",
>     ImageSize -> itemWidth],
>    Pane[image,
>     ImageSize -> {itemWidth, itemWidth},
>     Scrollbars -> True],(*this is obtained from Rasterize*)
>    ChoiceButtons[
>     {"Do it!"},
>     {doIt[]; DialogReturn[]}]},
>   Alignment -> Right]];
>
> or, if you prefer, put the panel around the buttons
>
> CreateDialog[
>  Column[{
>    "Some message here",
>    Pane[image,
>     ImageSize -> {itemWidth, itemWidth},
>     Scrollbars -> True],(*this is obtained from Rasterize*)
>    Panel[
>     ChoiceButtons[
>      {"Do it!"},
>      {doIt[]; DialogReturn[]}],
>     ImageSize -> itemWidth,
>     Alignment -> Right]}]];
>
> or put a panel around both (not shown).
>
>
> Bob Hanlon
>
> 2012/1/1 Szabolcs Horv=C3=A1t <szhorvat at gmail.com>:
>>
>> Hello,
>>
>> What is the best way to create dialogs and align the different UI
>> elements in them?
>>
>> In particular, how can I create a dialog with right-aligned OK and
>> Cancel buttons?
>>
>> Here's a simplified model of what I'm actually doing:
>>
>> image = Rasterize@ExampleData[{"AerialImage", "Earth"}]
>>
>> CreateDialog[
>>  Column[
>>   {"Some message here",
>>    image, (* this is obtained from Rasterize *)
>>    ChoiceButtons[{"Do it!"}, {doIt[]; DialogReturn[]}]}
>>   ]
>>  ]
>>
>> Problems with this approach:
>>
>>  * How can I right-align the buttons without
>>    right-aligning all other elements?
>>
>>  * I do not know the size of the image beforehand.  It may be
>>    taller than the screen in my application.  In this cas=
e
>>    it will push the buttons off-screen.
>>    How can I protect against this?
>>
>>
>> There seem to be many ways to create dialogs in Mathematica.  There's
>> CreateDialog (shown here), MessageDialog (which makes ugly small buttons
>> where there's more than one button, and I'm having problems controlling
>> the window size), ChoiceDialog (the buttons return values instead of
>> doing something).
>>
>>
>> Can you show me example code based on the model above, with its problems
>> fixed?
>>
>>
>> --
>> Szabolcs Horv=C3=A1t
>> Mma QA site proposal: http://area51.stackexchange.com/proposals/37304
>>

--
Szabolcs Horv=C3=A1t
Mma QA site proposal: http://area51.stackexchange.com/proposals/37304



  • Prev by Date: Re: PairedBarChart "Education and Training pay..."
  • Next by Date: Re: PairedBarChart "Education and Training pay..."
  • Previous by thread: Re: Creating dialogs, right-aligning buttons
  • Next by thread: Re: Creating dialogs, right-aligning buttons