[prev in list] [next in list] [prev in thread] [next in thread] 

List:       koffice-devel
Subject:    Re: DESIGN (was Re: koffice/kspread)
From:       Ariya Hidayat <ariya () kde ! org>
Date:       2004-09-17 19:30:25
Message-ID: 414B3B51.1000408 () kde ! org
[Download RAW message or body]


> Hm, I'm still not 100% sure either... It still looks like it will
> cause more troubles than it's worth... But we'll see...

Perhaps, but at that time, tree like this was the only scalable solution 
I could see. Now I have more ideas and would like to explore them first.

> Hmmm... *loading excel in wine...* Oh, indeed... Hm, is it really a
> good idea to recalc random() whenever someone changes some cell on the
> other end of the spreadsheet? Alright then, we'll have a separate
> recalc manager. However, this almost looks like duplicate work between
> these managers and manipulators. Hence we might need to implement at
> least basic manipulators support first. Hm, but these need some bits
> of cell damaging. Damn, my head hurts. Argh. Alright, duplicate work,
> here I am...

In the end, recalc manager takes more headache than depedency manager, 
because it is the actual workhorse. Of course, for provisory purpose, we 
can build a simple one and verify the concept first.

> Sure, but that's just a special case. You can set a color of a range
> (if we really have those range formatting thingies), but you can't use
> this for auto-fill or sequence fill or paste or who-knows-what-else.

Why not? Given than the dependency manager (or recalc manager) provides 
a service to iterate over dependents, then it's again a matter of 
"foreach" operation, collect cells affected by the command, and trigger 
for example a RangeList damage. AFAICS this is how Gnumeric does to some 
extent (note also how Gnumeric's cell_content_changed is gone when they 
have much proper dependency handling).

> In addition, do you really want it, so that each manipulator calls a
> cell damage? That's extra work, which really isn't needed, hence we
> must avoid it. Simpler code = better code. In addition, we're more
> likely to get more people working on KSpread if it's really easy to
> add a new feature...

I didn't write that "each manipulator calls a cell damage". What I 
propose was even the opposite, right in the end of ::execute() of the 
command, trigger only one damage (quite possibly RangeDamage) for all 
the affected range(s).

I might want to distinguish clearly the difference between 
CellWorker/Manipulator and Command. The former is part of the "Doc", the 
latter is the "View". You have commands because the user takes some 
actions, nothing more nothing less. Triggering a damage is the 
responsibility of the View, so it should be in the command.


Best regards,

Ariya Hidayat


_______________________________________________
koffice-devel mailing list
koffice-devel@mail.kde.org
https://mail.kde.org/mailman/listinfo/koffice-devel
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic