On Mon, Apr 24, 2006 at 05:35:36PM +0200, Abdelrazak Younes wrote:
> Jean-Marc Lasgouttes a écrit :
> >>>>>>"Martin" == Martin Vermeer <[EMAIL PROTECTED]> writes:
> [...]
> >  +  case LFUN_OUTLINE: {
> >  +          lyx::toc::OutlineOp const op =
> >  +              
> >  static_cast<lyx::toc::OutlineOp>(convert<int>(cmd.argument));
> >  +          lyx::toc::outline(op, buffer_, cursor_.pit());
> >
> >So this is a weird lfun that takes arguments 0, 1, 2, 3? What might be
> >better would be to have 4 different functions, that could be mapped to
> >kbd actions. Then I could see mergin this with LFUN_DEPTH_PLUS/MIN,
> >which are the same thing for environments. Note that lists would also
> >benefit from a way to move items (and everything nested under them) up
> >or down.
> 
> That would be great indeed. We could even try to extent the Toc dialog 
> later in order to support that kind of operation.
 
Should be straightforward. What about LFUN_OUTLINE_{UP|DOWN|IN|OUT}? For
now.

> >  +          cursor_.text()->setCursor(cursor_, cursor_.pit(), 0);
> >  +          buffer_->markDirty();
> >  +          updateCounters(*buffer_);
> >  +          update();
> >  +  }
> >
> >This does not look good in a case where the function did not trigger.
> >Of course in this case the button is disabled, but it is still a bit
> >ugly. Also, why do you need to reset the cursor?

To make sure we have a valid cursor after the doc change?

> >outline() could return a bool telling whether something happened. Or
> >LFUN_OUTLINE could have proper getStatus support (which return code
> >would be used to enable/disable buttons).
> 
> Agreed.

That feels like a bigger project... I am a bit short on time right now.

> >  +void outline(OutlineOp mode, Buffer * buf, pit_type & pit)
> >  +{
> >  +  ParagraphList & pars = buf->text().paragraphs();
> >
> >Why not pass a cursor directly? What is the information available from
> >the TOC itself?
> 
> See Martin, Jean-Marc is on my side ;-)

OK, can you do it since you seem to know how to?

> >
> >  +          case Up: {
> >...
> >  +          case Down: {
> >...
> >
> >I guess this is where problems can occur :)
> >
> >  +          case In:
> >  +                  for (; lit != lend; ++lit) {
> >  +                          if ((*lit)->toclevel == thistoclevel + 1) {
> >  +                                  s->layout((*lit));
> >  +                                  break;
> >  +                          }
> >  +                  }
> >  +          break;
> >
> >It could be possible/nice too to increase toclevel of all the nested
> >headings below (i.e. if a sections becomes subsection, have its
> >subsections become subsubsections). Should not be too difficult if we
> >ignore nested text insets.
> 
> I thought this was already the case but you're right, this is a must.
> 
> Abdel.
> 
> 
> >All in all, I like this patch. I am not sure yet whether it should go
> >in 1.4.2, but it could go in later.
> 
> IMHO, at least the last point should be implemented before this feature 
> ends up in 1.4.x

Show me how important you find this ;-)

- Martin

Attachment: pgpkklMI4wFwg.pgp
Description: PGP signature

Reply via email to