On Sat, 01 Jul 2017 06:37:03 +0000 Andrew Williams <a...@andywilliams.me> said:

> Hi,
> 
> This is not the first time this has come up (just search phab for "HTML" or
> "encoding") and given that we agreed we don't have many app developers it
> seems dismissive to state it's not a problem as we've had no complains from
> app developers...

first time it has come up on mailing lists or irc (as a
question/disatisfaction).

there are are probably several times more developers using it in tizen... and i
have never heard a complaint out of them about it.\

i have seen many spreadsheets with complaints on efl from tizen base devs.
never was markup one of them.

it's not dismissive. it's me saying that you lack a perspective i do. you think
this move would be an improvement yet you have never seen what i have ... and
i have a deep worry that what goes from no complaints suddenly becomes "what i
used to be able to use markup.. now i can't? how do i make my text bold now?"
"oh you have to sue the markup versions of all the text interfaces" "what? i
didn't see that. why did you not make it default like before?". ... i think YOU
are begin dismissive of this scenario. we go from no complaints there to lots
of them.

> Markup vs text does not introduce cursor problems that otherwise are simple
> - just supporting UTF8 means you can't make assumptions about cursor vs
> text offset. Additionally that should only be a concern for entry which is
> a very small subset of the text engine responsibilities.

you can't make it WITH utf-8/unicode. read up the unicode standards and check
with composite characters (รด == o + ^ unicode chars beside eachother for
example... there's far more complex ones for various languages - i'm not
talking input here... text strings). it's impossible to make an assumption that
1 utf8 char or even 1 unicdoe codepoint == 1 visible on screen character. it's
impossible. if you go forward with this assumption you'll be bitterly
disappointed. it's an issue that has to be handled anyway.

> In terms of complexity or api confusion I return to the path of least
> surprise. Text apis should not unexpectedly encode content such that input
> != output. Splitting the data from the metadata or making the setting of

see above.

> marked up text explicit avoids this confusion. For inspiration I point you

it does not.

> to the iOS APIs where they have "attributedString" (get/set etc) which is
> different to the plain text methods. Additionally they avoid the
> insert/replace issues by pushing those features into the string handling
> rather than the widget which makes a lot of sense now I think about it.
> 
> Thanks,
> Andy
> On Sat, 1 Jul 2017 at 03:33, Carsten Haitzler <ras...@rasterman.com> wrote:
> 
> > On Fri, 30 Jun 2017 16:22:03 +0200 Davide Andreoli <d...@gurumeditation.it
> > >
> > said:
> >
> > > 2017-06-30 1:37 GMT+02:00 Carsten Haitzler <ras...@rasterman.com>:
> > >
> > > > On Thu, 29 Jun 2017 11:13:51 +0000 Andrew Williams <
> > a...@andywilliams.me>
> > > > said:
> > > >
> > > > > Hi,
> > > > >
> > > > > Just to wrap this thread up following EDD:
> > > > >
> > > > > * no-one is proposing that we remove the ability to mark up text
> > through
> > > > > the markup format mechanism, it is a great feature
> > > > > * we cannot make changes to this legacy API as apps depend on it or
> > have
> > > > > adapted to it
> > > > >
> > > > > * the new textblock API, which is currently plain text only is being
> > > > > extended with a solid markup API
> > > > > * The existing markup format will be supported through
> > _markup_text_set
> > > > or
> > > > > similar API leaving text_set/get to be plain text only
> > > > >
> > > > > It was beileved that this would satisfy all requirements whilst
> > removing
> > > > > any confusion about the nature of text encoding when using plain
> > text.
> > > > > This allows us to take a path-of-least-surprise approach for the new
> > Eo
> > > > > based text APIs
> > > >
> > > > you have to have a markup version of everything. set, append, prepend,
> > > > insert,
> > > > replace etc.
> > > >
> > >
> > > or something like "markup_mode_enabled" that you can set on the widget to
> > > enable/disable markup insert of text.
> >
> > actually this would be worse. any code calling an api to get or manipulate
> > text
> > needs to also always query mode first (maybe change it, then change it
> > back)...
> > so now instead of
> >
> >   text_set(obj, "Blah");
> >
> > you have
> >
> >   prev_mode = text_mode_get(obj);
> >   text_mode_set(obj, PLAIN);
> >   text_set(obj, "Blah");
> >   text_mode_set(obj, prev_mode);
> >
> > we could make it a push and pop... just to cut this down so it goes from 4
> > ro 3
> > lines... but still./.. not great (and the implementation actually needs to
> > keep
> > a real stack then not a counter).
> >
> > not knowing how your text is interpreted at all is very bad. you need to
> > know.
> > if there is only one way then there is no problem. if we were going to have
> > lots of text modes (plain, markup, full html, rtf, ...) then maybe we'd
> > have to
> > live with the above mode thing as the api's would multiply like crazy...
> > the
> > alternative is we must pass format every time WITH the text
> >
> >   text_set(obj, PLAIN, "Blah");
> >
> > everyone is probably going to hate this too. we could make use of
> > "non-visible"
> > ascii chars as format markers like magic numbers for file formats...
> >
> >   #define PLAIN ""
> >   #define MARKUP "\001\001"
> >   #define HTML "\001\002"
> >   #define RTF "\001\003"
> >
> > etc. and we literally require you decode the header... (many values of the
> > first 32 ascii values other than \000 could be used for this as they can
> > never
> > be visibly displayed or mapped to a glyph and make zero sense to use so we
> > can
> > use them as control chars like \n, \t and \r (\012, \011 \015) are format
> > control chars and not directly mappable to a visible glyph on their own).
> > so
> > now you do:
> >
> >   text_set(obj, "Blah");
> >   text_set(obj, MARKUP"<b>Blah</b>");
> >
> > etc. but people will probably dislike this too... no matter how you slice
> > or
> > dice this, people will hate something. so make take is, you either do plain
> > text and give up on markup entirely other than having to use a whole bunch
> > of
> > metadata api's to apply it (that's going to be **FUN** on inserts ... -
> > not),
> > make wrappers that parse markup for you then do these (which means markup
> > versions of every query, set, insert, append etc.) and the implementation
> > is
> > going to be "fun" (what is a cursor pos? a char pos #, a utf8 byte value
> > offset? enjoy the figuring out of this as its likely going to be a visible
> > glyph/char pos) ...
> >
> > or you just bite the bullet and say "it's all markup. DEAL WITH IT" (and
> > provide some converters). only people i have heard complain are efl people
> > and
> > only now after many many many years who oddly didn't even read our own
> > docs and
> > find out it's markup... everyone else seems to be fine with it and expects
> > markup...
> >
> > anecdotal statistics tells me that removing the "markup by default" is
> > going to
> > be a big mistake...
> >
> > > > > Thanks everyone for the discussion :)
> > > > > Andy
> > > > >
> > > > > On Sat, 24 Jun 2017 at 05:39 Carsten Haitzler <ras...@rasterman.com>
> > > > wrote:
> > > > >
> > > > > > On Fri, 23 Jun 2017 21:55:14 +0200 Davide Andreoli <
> > > > d...@gurumeditation.it
> > > > > > >
> > > > > > said:
> > > > > >
> > > > > > > 2017-06-19 13:36 GMT+02:00 Daniel Hirt <hirt.da...@gmail.com>:
> > > > > > > > Hi,
> > > > > > > >
> > > > > > > > On Mon, Jun 19, 2017 at 12:01 PM, Andrew Williams <
> > > > > > a...@andywilliams.me>
> > > > > > > > wrote:
> > > > > > > >
> > > > > > > >> Hi,
> > > > > > > >>
> > > > > > > >> Looking at the tests you point me at - selection (and the
> > past)
> > > > is a
> > > > > > > plain
> > > > > > > >> text copy with the markup stripped - exactly what I would
> > expect
> > > > for
> > > > > > > >> text_get - but the current content transformed with the helper
> > > > will
> > > > > > not
> > > > > > > get
> > > > > > > >> you there - there is no built in interpretation of formatting
> > -
> > > > just
> > > > > > > >> rendered understands it.
> > > > > > > >>
> > > > > > > >>
> > > > > > > > "elm_entry_selection_get" returns the text in markup format.
> > The
> > > > test
> > > > > > > prints
> > > > > > > > both types one after another (markup followed by plaintext)
> > using
> > > > > > > > "elm_entry_markup_to_utf8".
> > > > > > > > It is essential for copy & paste of markup text between two
> > entry
> > > > > > clients,
> > > > > > > > so the pasted formatting is kept.
> > > > > > > >
> > > > > > > >
> > > > > > > >> Overall the implementation feels wrong - supporting markup is
> > > > great
> > > > > > but
> > > > > > > >> returning it inline in text_get feels like we are imposing
> > > > internal
> > > > > > > choices
> > > > > > > >> on other devs.
> > > > > > > >>
> > > > > > > >> I note that the code considers format but only when
> > interacting
> > > > with
> > > > > > > files
> > > > > > > >> - so I can have plain text files but not plain text input.
> > > > > > > >>
> > > > > > > >>
> > > > > > > > Right, it's a feature so you can load plain files. You specify
> > the
> > > > > > format
> > > > > > > > you
> > > > > > > > want to load (plaintext or markup). But, after the file is
> > loaded,
> > > > it's
> > > > > > > > discarded.
> > > > > > > >
> > > > > > > > It's important to point out that because there's an actual
> > > > > > representation
> > > > > > > > (markup), it's costly to store both plaintext and markup
> > content
> > > > in the
> > > > > > > > object.
> > > > > > > > Asking you to convert using "markup_to_utf8" is
> > understandable, as
> > > > it
> > > > > > what
> > > > > > > > we would actually do internally if we were to add API to get
> > the
> > > > text
> > > > > > in
> > > > > > > > plaintext. It's only one function call away, and it's easier
> > than
> > > > just
> > > > > > add
> > > > > > > > more
> > > > > > > > API to the widget. No need for a new function if there's a way
> > to
> > > > do
> > > > > > this
> > > > > > > > already.
> > > > > > > >
> > > > > > > >
> > > > > > > >> Lastly the documentation clearly discussed markup capability
> > but
> > > > it
> > > > > > > *never*
> > > > > > > >> discusses encoding and there is no explicit mention that your
> > text
> > > > > > will
> > > > > > > be
> > > > > > > >> transformed after text_set. If it were then it should be
> > > > symmetrically
> > > > > > > >> transformed back on text_get - path of least surprise.
> > > > > > > >>
> > > > > > > >>
> > > > > > > > Actually, it is not transformed on "text_set". You are
> > expected to
> > > > > > enter a
> > > > > > > > markup-compatible text. Otherwise you will have the mentioned
> > > > special
> > > > > > > > characters (like "<") misinterpreted as markup. You can try
> > with
> > > > > > > > "elm_object_text_set" on an entry widget.
> > > > > > > >
> > > > > > > >
> > > > > > > >> I don't quite understand why we would build formatting in as
> > > > > > mandatory,
> > > > > > > >> functionality is great but it should be possible to turn it
> > off.
> > > > > > > >>
> > > > > > > >> I agree that people complain when markup is not supported in a
> > > > widget
> > > > > > but
> > > > > > > >> that is the expectation we have set - consistency is very
> > > > important
> > > > > > > indeed
> > > > > > > >> and I think we don't have it in this regard.
> > > > > > > >>
> > > > > > > >> Additionally I think the markup_to_utf8 methods are peculiarly
> > > > named -
> > > > > > > they
> > > > > > > >> do no character encoding so the usage of utf8 is probably
> > > > incorrect...
> > > > > > > >>
> > > > > > > >
> > > > > > > > They're correct. UTF-8 is the standard plaintext encoding. We
> > > > support
> > > > > > > UTF-8,
> > > > > > > > and provide converters for your convenience. You probably won't
> > > > need
> > > > > > those
> > > > > > > > most
> > > > > > > > of the time.
> > > > > > > > Your plaintext is always "encoded", but you probably won't
> > notice
> > > > that
> > > > > > > > because
> > > > > > > > it's backward-compatible with US ASCII (1-byte per character).
> > > > > > > >
> > > > > > > >
> > > > > > > >>
> > > > > > > >> Andrew
> > > > > > > >>
> > > > > > > >>
> > > > > > > > Lastly, I would like to mention "Efl.Ui.Text" - this new
> > widget is
> > > > a
> > > > > > part
> > > > > > > > of a
> > > > > > > > rework of the Textblock object. It's in BETA stage.
> > > > > > > > It does what you require: all text input is expected to be
> > > > plaintext.
> > > > > > > > There's no
> > > > > > > > "markup" logic in it. Instead, you format your text by setting
> > > > ranges
> > > > > > and
> > > > > > > > calling
> > > > > > > > functions to apply formatting. Again, markup does not exist in
> > this
> > > > > > > object,
> > > > > > >
> > > > > > > What? no more markup support? This is really, really sad to hear
> > :(
> > > > > >
> > > > > > i've ben trying to tell people that markup is LESS bad than no
> > markup
> > > > (or
> > > > > > having to do it via api calls)... but the people giving the
> > opinions on
> > > > > > this
> > > > > > aren't writing the apps.
> > > > > >
> > > > > > maybe you c an convince them.
> > > > > >
> > > > > > > I'm using markup everywhere in my media center and I'm really
> > happy
> > > > with
> > > > > > > it's usage.
> > > > > >
> > > > > > too bad. plain text for you unless you call lots of api calls to
> > > > insert it
> > > > > > tag
> > > > > > by tag. have fun.
> > > > > >
> > > > > > > Please think carefully at my use case:
> > > > > > >
> > > > > > > http://www.enlightenment.org/ss/e-594d67c3ee4752.10999768.jpg
> > > > > > >
> > > > > > > Look at the the textblock in the lower-right corner,
> > > > > > > the code to set the text is something like this:
> > > > > > >
> > > > > > > text = sprintf("<title>%s</> <small>%s</small><br>"
> > > > > > >        "<small><name>%s</> %s <name>/ %s %s</><br>"
> > > > > > >        "<views>%s %s</> <name>/</> "
> > > > > > >        "<likes>%s %s</> <name>/</> "
> > > > > > >        "<comments>%s %s</></small><br>%s",
> > > > > > >        video.name, video.duration,
> > > > > > >        _('user'), video.user,
> > > > > > >        _('uploaded'), relative_date(video.created_time),
> > > > > > >        views, ngettext('view', 'views', views),
> > > > > > >        likes, ngettext('like', 'likes', likes),
> > > > > > >        comments, ngettext('comment', 'comments', comments),
> > > > > > >        video.description)
> > > > > > >
> > > > > > > ..thats it, and I have those beautiful (theme-able!) formatted
> > text.
> > > > > > >
> > > > > > > Now try to think at the code needed to do the same with the "new"
> > > > API !!
> > > > > > >
> > > > > > > Another insurmountable problem of the API approach: the text in
> > my
> > > > > > example
> > > > > > > comes from plugins (the vimeo plugin in this case) that are
> > separate
> > > > > > > processes
> > > > > > > from the core mediacenter, plugins just fetch datas from the net
> > and
> > > > pass
> > > > > > > them back to the core. This means that the plugins do not have
> > > > access to
> > > > > > the
> > > > > > > textblock API.
> > > > > > >
> > > > > > > Some more examples:
> > > > > > > https://github.com/DaveMDS/epymc/wiki/Screenshots
> > > > > > >
> > > > > > > I can understand the initial issue Andrew was speaking in this
> > thread
> > > > > > > (text_get
> > > > > > > is difficult to use). And I agree that the default behavior
> > should be
> > > > > > plain
> > > > > > > text set/get,
> > > > > > > BUT: we really need to implement something like:
> > text_markup_set(...)
> > > > > > >
> > > > > > > To be more clear: loosing the markup ability (in textblock,
> > buttons,
> > > > and
> > > > > > > any other widget) is a shame, we are loosing IMO the most
> > powerful
> > > > and
> > > > > > > useful
> > > > > > > feature of textblock in efl.
> > > > > > >
> > > > > > > > can be re-added as a module in later stages.
> > > > > > >
> > > > > > > Please, please, please re-added it now, otherwise I will not be
> > able
> > > > to
> > > > > > > port my
> > > > > > > applications to the new API, until a "later stage" will
> > eventually
> > > > occur.
> > > > > > >
> > > > > > >
> > > > > > > > You can check its current state in "efl ui text" test in
> > > > > > elementary_test.
> > > > > > > > Feedback
> > > > > > > > will be very much appreciated.
> > > > > > > >
> > > > > > > > Hope this answers a few of your questions.
> > > > > > > > Best,
> > > > > > > > --
> > > > > > > > Danny (herdsman) Hirt
> > > > > > > >
> > > > > > >
> > > > > > ------------------------------------------------------------
> > > > ------------------
> > > > > > > > Check out the vibrant tech community on one of the world's most
> > > > > > > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > > > > > > > _______________________________________________
> > > > > > > > enlightenment-devel mailing list
> > > > > > > > enlightenment-devel@lists.sourceforge.net
> > > > > > > >
> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > > > > > >
> > > > > > ------------------------------------------------------------
> > > > ------------------
> > > > > > > Check out the vibrant tech community on one of the world's most
> > > > > > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > > > > > > _______________________________________________
> > > > > > > enlightenment-devel mailing list
> > > > > > > enlightenment-devel@lists.sourceforge.net
> > > > > > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > ------------- Codito, ergo sum - "I code, therefore I am"
> > > > --------------
> > > > > > The Rasterman (Carsten Haitzler)    ras...@rasterman.com
> > > > > >
> > > > > >
> > > > > >
> > > > > > ------------------------------------------------------------
> > > > ------------------
> > > > > > Check out the vibrant tech community on one of the world's most
> > > > > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > > > > > _______________________________________________
> > > > > > enlightenment-devel mailing list
> > > > > > enlightenment-devel@lists.sourceforge.net
> > > > > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > > > > >
> > > > > --
> > > > > http://andywilliams.me
> > > > > http://ajwillia.ms
> > > > > ------------------------------------------------------------
> > > > ------------------
> > > > > Check out the vibrant tech community on one of the world's most
> > > > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > > > > _______________________________________________
> > > > > enlightenment-devel mailing list
> > > > > enlightenment-devel@lists.sourceforge.net
> > > > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > > > >
> > > >
> > > >
> > > > --
> > > > ------------- Codito, ergo sum - "I code, therefore I am"
> > --------------
> > > > The Rasterman (Carsten Haitzler)    ras...@rasterman.com
> > > >
> > > >
> > > > ------------------------------------------------------------
> > > > ------------------
> > > > Check out the vibrant tech community on one of the world's most
> > > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > > > _______________________________________________
> > > > enlightenment-devel mailing list
> > > > enlightenment-devel@lists.sourceforge.net
> > > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > > >
> > >
> > ------------------------------------------------------------------------------
> > > Check out the vibrant tech community on one of the world's most
> > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > > _______________________________________________
> > > enlightenment-devel mailing list
> > > enlightenment-devel@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > >
> >
> >
> > --
> > ------------- Codito, ergo sum - "I code, therefore I am" --------------
> > The Rasterman (Carsten Haitzler)    ras...@rasterman.com
> >
> >
> >
> > ------------------------------------------------------------------------------
> > Check out the vibrant tech community on one of the world's most
> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > _______________________________________________
> > enlightenment-devel mailing list
> > enlightenment-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> >
> -- 
> http://andywilliams.me
> http://ajwillia.ms
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    ras...@rasterman.com


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to