[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: Curses

Overdorf, Sam

9/28/2006 7:08:00 PM

So can we change the Ruby Library?
Sam Overdorf

-----Original Message-----
From: Michael W. Ryder [mailto:_mwryder@worldnet.att.net]
Sent: Wednesday, September 27, 2006 5:15 PM
To: ruby-talk ML
Subject: Re: Curses

Eero Saynatkari wrote:
> On 2006.09.28 07:35, Eero Saynatkari wrote:
>> On 2006.09.28 07:30, Michael W. Ryder wrote:
>>> Eero Saynatkari wrote:
>>>> On 2006.09.28 04:25, Michael W. Ryder wrote:
>>>>> Eero Saynatkari wrote:
>>>>>> On 2006.09.27 15:45, Michael W. Ryder wrote:
>>>>>>> Eero Saynatkari wrote:
>>>>>>>> On 2006.09.27 10:35, Michael W. Ryder wrote:
>>>>>>>>> Overdorf, Sam wrote:
>>>>>>>>>> Is anyone using the Curses class?
>>>>>>>>>> Is anyone maintaining the Curses class?
>>>>>>>>>>
>>>>>>>>>> It looks like the Curses function move(y,x) is calling the
wrong
>>>>>>>>>> library
>>>>>>>>>> routine.
>>>>>>>>>>
>>>>>>>>>> It is calling the window move function and not the cursor
positioning
>>>>>>>>>> function.
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Sam Overdorf
>>>>>>>>>>
>>>>>>>>> According to O'Reilly's Programming with Curses "move() is
really a
>>>>>>>>> #define macro for wmove() which takes a WINDOW* as its first
>>>>>>>>> argument" So it appears that the library is working correctly.
>>>>>>>> #setpos x, y
>>>>>>> What flavor of Curses is this from?
>>>>>> This one:
>>>>>>
>>>>>>
http://www.ruby-doc.org/stdlib/libdoc/curses/rdoc/classes/C...
>>>>> The source code shows that it uses Curses' move() function which
is a
>>>>> macro to wmove() as I described above.
>>>> No, move() moves the cursor (wmove() moves a specified window's
cursor).
>>>>
>>>> Confusingly, Ruby's Curses bindings also have a .move which
actually
>>>> uses mvwin() which moves the window itself.
>>> ALL input/output in Curses is done with windows. The only
difference
>>> between move() and wmove() is that move() passes the current window
to
>>> the wmove() function. When you first start Curses it creates a
window
>>> and sets it as the current window. Unless you create another window
and
>>> change to it this window is used for all I/O.
>> Which is exactly what I said. Please review the Curses documentation.
>>
>> http://www.die.net/doc/linux/man/man3/m...
>> http://www.die.net/doc/linux/man/man3/mv...
>
> And yes, Ruby's Curses.move is not the same as move(). Curses.move
> is the same as mvwin(). Curses.setpos is the same as move().
>
>
Having programmed using Curses with C for many years I am familiar with
how Curses works. As I kept pointing out move() and wmove() are the
same function. Why the Ruby library uses different names for the
functions I do not know. The mvwin() command in original Curses moves
the top left corner of the window, not the cursor position as one would
expect with a name like Curses.move. Personally, if I were using the
library I would have to rename all of the functions to their proper
Curses representation, not some random name like seems to have been
used. The current names makes it impossible to use available programs
and documentation with the Ruby library.

1 Answer

Michael W. Ryder

9/28/2006 8:43:00 PM

0

Overdorf, Sam wrote:
> So can we change the Ruby Library?
> Sam Overdorf
>

Looking at the source code it doesn't look like it would be too hard to
change the names of the methods that are not standard Curses. I don't
know how much it would break though.


> -----Original Message-----
> From: Michael W. Ryder [mailto:_mwryder@worldnet.att.net]
> Sent: Wednesday, September 27, 2006 5:15 PM
> To: ruby-talk ML
> Subject: Re: Curses
>
> Eero Saynatkari wrote:
>> On 2006.09.28 07:35, Eero Saynatkari wrote:
>>> On 2006.09.28 07:30, Michael W. Ryder wrote:
>>>> Eero Saynatkari wrote:
>>>>> On 2006.09.28 04:25, Michael W. Ryder wrote:
>>>>>> Eero Saynatkari wrote:
>>>>>>> On 2006.09.27 15:45, Michael W. Ryder wrote:
>>>>>>>> Eero Saynatkari wrote:
>>>>>>>>> On 2006.09.27 10:35, Michael W. Ryder wrote:
>>>>>>>>>> Overdorf, Sam wrote:
>>>>>>>>>>> Is anyone using the Curses class?
>>>>>>>>>>> Is anyone maintaining the Curses class?
>>>>>>>>>>>
>>>>>>>>>>> It looks like the Curses function move(y,x) is calling the
> wrong
>>>>>>>>>>> library
>>>>>>>>>>> routine.
>>>>>>>>>>>
>>>>>>>>>>> It is calling the window move function and not the cursor
> positioning
>>>>>>>>>>> function.
>>>>>>>>>>>
>>>>>>>>>>> Thanks,
>>>>>>>>>>> Sam Overdorf
>>>>>>>>>>>
>>>>>>>>>> According to O'Reilly's Programming with Curses "move() is
> really a
>>>>>>>>>> #define macro for wmove() which takes a WINDOW* as its first
>>>>>>>>>> argument" So it appears that the library is working correctly.
>>>>>>>>> #setpos x, y
>>>>>>>> What flavor of Curses is this from?
>>>>>>> This one:
>>>>>>>
>>>>>>>
> http://www.ruby-doc.org/stdlib/libdoc/curses/rdoc/classes/C...
>>>>>> The source code shows that it uses Curses' move() function which
> is a
>>>>>> macro to wmove() as I described above.
>>>>> No, move() moves the cursor (wmove() moves a specified window's
> cursor).
>>>>> Confusingly, Ruby's Curses bindings also have a .move which
> actually
>>>>> uses mvwin() which moves the window itself.
>>>> ALL input/output in Curses is done with windows. The only
> difference
>>>> between move() and wmove() is that move() passes the current window
> to
>>>> the wmove() function. When you first start Curses it creates a
> window
>>>> and sets it as the current window. Unless you create another window
> and
>>>> change to it this window is used for all I/O.
>>> Which is exactly what I said. Please review the Curses documentation.
>>>
>>> http://www.die.net/doc/linux/man/man3/m...
>>> http://www.die.net/doc/linux/man/man3/mv...
>>
>> And yes, Ruby's Curses.move is not the same as move(). Curses.move
>> is the same as mvwin(). Curses.setpos is the same as move().
>>
>>
> Having programmed using Curses with C for many years I am familiar with
> how Curses works. As I kept pointing out move() and wmove() are the
> same function. Why the Ruby library uses different names for the
> functions I do not know. The mvwin() command in original Curses moves
> the top left corner of the window, not the cursor position as one would
> expect with a name like Curses.move. Personally, if I were using the
> library I would have to rename all of the functions to their proper
> Curses representation, not some random name like seems to have been
> used. The current names makes it impossible to use available programs
> and documentation with the Ruby library.
>