Hi Anurag
On 26/06/11 18:23, Anurag Jain wrote:
Hello Noel,
On Fri, Jun 24, 2011 at 7:53 PM, Noel Power<nopower@novell.com> wrote:
[...]
I'm sending the fix patch here which calculates the height and width
of the ScInputbarGroup and makes the border invisible.
great, thanks for that, more comments about the patch below
There is no class named as ScTextWindow
forgive my typo, I meant ScTextWn
I suggest this because it is intended when the gsoc code is initially
integrated that it be configurable and for this reason it probably makes
sense to preserve the original ScTextWindow class and distinguish it from
your new implementation. This will make maintenance easier.
So I guess there should not be any problem with the maintenance of
code as I've not renamed any pre existing class and just inserted a
new class i.e ScInputBarGroup.
well, true you have created a new class but additionally you have
modified the existing class ScTextWnd, I suspect you will need to modify
that class even more which is why I suggest that you rename the current
version of ScTextWnd ( e.g. the one with your modifications ) to
ScSomeNewName and restore the old ScTextWnd class. That way the old
class is available to swap in at runtime and all ( or nearly all ) your
modifications are in new classes.
Then next thing to concentrate on is getting the multi-line textbox
functionality to work and to make that behaviour switchable. I believe Kohei
suggested adding a button to the ScInputBarGroup window. So, you need to be
able to detect the button click and switch the state of the bIsMultiLine
flag that you have already added ( presumably for this purpose ) please do a
grep for PushButton& SetClickHdl in sc for sample code for handling the
button.
Next hurdle which I'm trying to get through is getting the Scrollbar
and Button at the right position after the Textbar ends. Does the
function SetPosSizePixel() or SetPosPixel() in window.hxx can be used
for getting them at the desired position.
yes, you will need to set the position of the controls within the window
manually by the methods you mention
Or is there any other more
modular way to decide the ordering of these items similar to
InsertWindow() and InsetItem() methods used in ScInputWindow ?
I don't think so, afaik the methods you mention are specific to a
toolbar which has it's own custom layouting
When you get a button click you will need to resize your InputBarGroupbox
window based on the new state of the bIsMultiLine flag and of course
increase the height in multiples of the calculated height of a single line.
e.g. in Multiline mode the ScInputGroupBox height should be some multiple of
the calculated singleline height ( maybe 10 as a default ? ) Of course the
size of the ScMultiLineTxtWin (let's call it that for now but please rename
it as you wish ) window needs to also be adjusted and everything resized. I
would do this first before worrying about scrollbar behaviour.
yes as soon as I get things placed in right place I'll be working on
switching from single line to multiline mode on the button click.
please just implement the button and the multiline mode switching for
the moment, adding the scrollbar to the mix adds more complexity and I
would prefer to get the core functionality working first. Then you can
build on that existing functionality to add more 'features'. Of course
if you get the button and multiline-mode switching working then by all
means start looking at the scrollbar part.
now, about the patch...
a) so, like mentioned above probably better to not enable those
scrollbar drawing bits for the moment
b) Toolbox::Resize(), in line with the comments above about minimizing
changes to the existing codebase by the multimode changes I'd prefer if
the ScInputBarGroup class would take care of it's own resize. Currently
how it's done doesn't make a whole lot of sense e.g. Toolbox::Resize
manually calculates the size of the ScInputBarGroup, sets it's size then
calls ScInputBarGroup::Resize, that just doesn't feel right. I think
ScInputBarGroup::Resize should just calculate it's size ( taking
whatever values from the parent window as needed )
c) at the moment ScInputBarGroup::Resize() is setting the aTextWindow's
height to 22, I don't think the size of aTextWindow's height should be
hardcoded to a number, looking in the code for ScTextWnd ( or whatever
you rename it to be ) it already calculates the height ( single line
height I guess ) I think it would make sense add a method to
ScTextWndRenamedToSomething like 'GetSingleLineHeight' and then resize
the ScInputBarGroup & ScTextWndRenamedToSomething based on the number
of lines you want to display, e.g. 1 *
ScTextWndRenamedToSomething.GetHeight() for single line mode, and 'N' *
ScTextWndRenamedToSomething.GetHeight() for multiline mode.
hope that makes sense :-)
Noel
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.