<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Undo&#x2F;Redo für Editor implementieren]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich arbeite zur Zeit an einem Texteditor, welcher in ein System integriert ist. Das Tool ist mit C++ und dem gtkmm Toolkit realisiert. Da mir das gtkmm keine Undo/Redo Funktionalitäten anbietet, muss ich das Teil also selber schreiben. Google ergab, dass das Command-Pattern dafür wohl nützlich sei. Gut, die Frage ist jetzt: Wie implementiere ich so einen Undo-Manager vernünftig? Schließlich kann ich ja nicht den gesamten Inhalt des Text-Widgets auf nen Stack pushen, nur weil einer mal die Leertaste gedrückt hat.</p>
<p>Wäre es sinnvoll, den speziell geänderten Bereich zu hinterlegen? Also in etwa:<br />
User drückt leertaste<br />
Ich merk mir die Position und leg die Aktion (also Löschen) auf'm Stack ab.<br />
...<br />
User drückt auf Undo<br />
Aktion von vorhin wird geholt und an der Position ausgefürt, also das Leerzeichen wieder gelöscht?</p>
<p>Guter Ansatz? Schlechter Ansatz?</p>
<p>Falls jemand schon mal sowas realisiert hat, wäre ich für nen Hinweis dankbar.</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/156808/undo-redo-für-editor-implementieren</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Jul 2026 17:11:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/156808.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 20 Aug 2006 13:29:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Undo&#x2F;Redo für Editor implementieren on Sun, 20 Aug 2006 13:29:24 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich arbeite zur Zeit an einem Texteditor, welcher in ein System integriert ist. Das Tool ist mit C++ und dem gtkmm Toolkit realisiert. Da mir das gtkmm keine Undo/Redo Funktionalitäten anbietet, muss ich das Teil also selber schreiben. Google ergab, dass das Command-Pattern dafür wohl nützlich sei. Gut, die Frage ist jetzt: Wie implementiere ich so einen Undo-Manager vernünftig? Schließlich kann ich ja nicht den gesamten Inhalt des Text-Widgets auf nen Stack pushen, nur weil einer mal die Leertaste gedrückt hat.</p>
<p>Wäre es sinnvoll, den speziell geänderten Bereich zu hinterlegen? Also in etwa:<br />
User drückt leertaste<br />
Ich merk mir die Position und leg die Aktion (also Löschen) auf'm Stack ab.<br />
...<br />
User drückt auf Undo<br />
Aktion von vorhin wird geholt und an der Position ausgefürt, also das Leerzeichen wieder gelöscht?</p>
<p>Guter Ansatz? Schlechter Ansatz?</p>
<p>Falls jemand schon mal sowas realisiert hat, wäre ich für nen Hinweis dankbar.</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1120897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120897</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Sun, 20 Aug 2006 13:29:24 GMT</pubDate></item><item><title><![CDATA[Reply to Undo&#x2F;Redo für Editor implementieren on Sun, 20 Aug 2006 14:47:21 GMT]]></title><description><![CDATA[<p>Wenn ich mich nicht täusche, gibt's im Buch &quot;Entwurfsmuster&quot; von GoF eine Abschnitt zu diesem Problem (Undo mit Command-Pattern). Hab das Buch aber grad nicht hier.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1120956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120956</guid><dc:creator><![CDATA[don_basto]]></dc:creator><pubDate>Sun, 20 Aug 2006 14:47:21 GMT</pubDate></item><item><title><![CDATA[Reply to Undo&#x2F;Redo für Editor implementieren on Sun, 20 Aug 2006 17:19:23 GMT]]></title><description><![CDATA[<p>Hm, das ist noch nicht in meiner Sammlung... wollte ich mir demnächst aber so oder so holen. Danke für den Tipp. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121028</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Sun, 20 Aug 2006 17:19:23 GMT</pubDate></item><item><title><![CDATA[Reply to Undo&#x2F;Redo für Editor implementieren on Sun, 20 Aug 2006 22:02:05 GMT]]></title><description><![CDATA[<p>Ich habe so etwas noch nicht implementiert, aber ich würde im Grunde eine Art &quot;Diff&quot;-Format benutzen. Von deinem Beispiel nehme ich mal an, dass es um eine Form der Textverarbeitung geht. Da solltest du ja relativ simpel etwas ala</p>
<p>ZEILE:SPALTE +&quot;...&quot; bzw. -&quot;...&quot;</p>
<p>erstellen und auf einen Stack pushen können.</p>
<p>Wenn ich es richtig in Erinnerung habe, gab es in <a href="http://bakery.sourceforge.net/" rel="nofollow">Bakery</a> Undo/Redo Funktionen für GTKmm. Wobei ich nicht weiß wie gut Bakery ist und ich glaube kaum, dass man es so einfach in bestehenden Code integrieren kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121173</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Sun, 20 Aug 2006 22:02:05 GMT</pubDate></item><item><title><![CDATA[Reply to Undo&#x2F;Redo für Editor implementieren on Mon, 21 Aug 2006 05:31:35 GMT]]></title><description><![CDATA[<p>Genau deshalb hatt ich ja eigentlich mal einen Thread eröffnet in dem möglichst allgemeingültige Implementierungen der Entwurfsmuster stehen sollten..<br />
Ist aber mal wieder anhand einer Diskussion zugrunde gerichtet worden.<br />
Wie dem auch sei. Das Command pattern und eine entsprechende Verwaltung sind <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-151143-and-highlight-is-%2Acommand%2A.html" rel="nofollow">da drin</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121210</guid><dc:creator><![CDATA[DocJunioR]]></dc:creator><pubDate>Mon, 21 Aug 2006 05:31:35 GMT</pubDate></item><item><title><![CDATA[Reply to Undo&#x2F;Redo für Editor implementieren on Mon, 21 Aug 2006 16:00:40 GMT]]></title><description><![CDATA[<p>kingruedi schrieb:</p>
<blockquote>
<p>Ich habe so etwas noch nicht implementiert, aber ich würde im Grunde eine Art &quot;Diff&quot;-Format benutzen. Von deinem Beispiel nehme ich mal an, dass es um eine Form der Textverarbeitung geht. Da solltest du ja relativ simpel etwas ala</p>
<p>ZEILE:SPALTE +&quot;...&quot; bzw. -&quot;...&quot;</p>
<p>erstellen und auf einen Stack pushen können.</p>
</blockquote>
<p>Yo, so in der Richtung dachte ich mir das auch, scheint eine praktikable Lösung zu sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>kingruedi schrieb:</p>
<blockquote>
<p>Wenn ich es richtig in Erinnerung habe, gab es in <a href="http://bakery.sourceforge.net/" rel="nofollow">Bakery</a> Undo/Redo Funktionen für GTKmm. Wobei ich nicht weiß wie gut Bakery ist und ich glaube kaum, dass man es so einfach in bestehenden Code integrieren kann.</p>
</blockquote>
<p>Bakery ist noch nicht so ausgereift, wie der Rest des gtkmm Toolkits... und es würde sehr &quot;angebaut&quot; wirken, wenn ich jetzt gegen Ende (hoffentlich^^) noch mit Bakery anfange. Schlecht für's Gesamtdesign.</p>
<p>DocJunioR schrieb:</p>
<blockquote>
<p>Genau deshalb hatt ich ja eigentlich mal einen Thread eröffnet in dem möglichst allgemeingültige Implementierungen der Entwurfsmuster stehen sollten..<br />
Ist aber mal wieder anhand einer Diskussion zugrunde gerichtet worden.<br />
Wie dem auch sei. Das Command pattern und eine entsprechende Verwaltung sind <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-151143-and-highlight-is-%2Acommand%2A.html" rel="nofollow">da drin</a></p>
</blockquote>
<p>Danke mann! Sowas hab ich gesucht... ist ja fast wie Weihnachten hier <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Danke für alle Antworten.</p>
<p>Viele Grüße</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121679</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 21 Aug 2006 16:00:40 GMT</pubDate></item><item><title><![CDATA[Reply to Undo&#x2F;Redo für Editor implementieren on Mon, 21 Aug 2006 16:10:39 GMT]]></title><description><![CDATA[<p>wenn das ein windoze-programm werden soll: die edit controls haben schon ein eingebautes 'undo'</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121690</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Mon, 21 Aug 2006 16:10:39 GMT</pubDate></item><item><title><![CDATA[Reply to Undo&#x2F;Redo für Editor implementieren on Mon, 21 Aug 2006 16:14:11 GMT]]></title><description><![CDATA[<p>net schrieb:</p>
<blockquote>
<p>wenn das ein windoze-programm werden soll: die edit controls haben schon ein eingebautes 'undo'</p>
</blockquote>
<p>Die Gtk::TextView, bzw. der Gtk::TextBuffer haben ein eingebautes undo unter Windows? For sure?<br />
Nun, das Programm wird wohl größtenteils unter Windows laufen, jedoch auch (z.B. bei mir) unter GNU/Linux. Daher wäre eine portable Lösung schon nicht übel...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121696</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 21 Aug 2006 16:14:11 GMT</pubDate></item><item><title><![CDATA[Reply to Undo&#x2F;Redo für Editor implementieren on Mon, 21 Aug 2006 16:27:45 GMT]]></title><description><![CDATA[<p>GPC schrieb:</p>
<blockquote>
<p>net schrieb:</p>
<blockquote>
<p>wenn das ein windoze-programm werden soll: die edit controls haben schon ein eingebautes 'undo'</p>
</blockquote>
<p>Die Gtk::TextView, bzw. der Gtk::TextBuffer haben ein eingebautes undo unter Windows? For sure?</p>
</blockquote>
<p>wenn das nur getarnte windows edit controls sind, dann schon: <a href="http://windowssdk.msdn.microsoft.com/en-us/library/ms672061.aspx#undoing_operations" rel="nofollow">http://windowssdk.msdn.microsoft.com/en-us/library/ms672061.aspx#undoing_operations</a></p>
<p>GPC schrieb:</p>
<blockquote>
<p>Daher wäre eine portable Lösung schon nicht übel...</p>
</blockquote>
<p>ja, äääh, nöö, portabel ist das natürlich nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121703</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Mon, 21 Aug 2006 16:27:45 GMT</pubDate></item><item><title><![CDATA[Reply to Undo&#x2F;Redo für Editor implementieren on Mon, 21 Aug 2006 17:31:17 GMT]]></title><description><![CDATA[<p>ne gtk benutzt doch keine nativen widgets</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121725</guid><dc:creator><![CDATA[ne]]></dc:creator><pubDate>Mon, 21 Aug 2006 17:31:17 GMT</pubDate></item><item><title><![CDATA[Reply to Undo&#x2F;Redo für Editor implementieren on Mon, 21 Aug 2006 17:40:07 GMT]]></title><description><![CDATA[<p>net schrieb:</p>
<blockquote>
<p>GPC schrieb:</p>
<blockquote>
<p>net schrieb:</p>
<blockquote>
<p>wenn das ein windoze-programm werden soll: die edit controls haben schon ein eingebautes 'undo'</p>
</blockquote>
<p>Die Gtk::TextView, bzw. der Gtk::TextBuffer haben ein eingebautes undo unter Windows? For sure?</p>
</blockquote>
<p>wenn das nur getarnte windows edit controls sind, dann schon: <a href="http://windowssdk.msdn.microsoft.com/en-us/library/ms672061.aspx#undoing_operations" rel="nofollow">http://windowssdk.msdn.microsoft.com/en-us/library/ms672061.aspx#undoing_operations</a></p>
</blockquote>
<p>gtkmm wrappt die nativen WinAPI Widgets nicht, sondern zeichnet seine Widgets selber (bzw. lässt zeichnen).</p>
<p>net schrieb:</p>
<blockquote>
<p>GPC schrieb:</p>
<blockquote>
<p>Daher wäre eine portable Lösung schon nicht übel...</p>
</blockquote>
<p>ja, äääh, nöö, portabel ist das natürlich nicht...</p>
</blockquote>
<p>Ach, was soll's... dann schreib ich's halt selber. DocJuniors Vorlage ist ja schon ziemlich gut.</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121733</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 21 Aug 2006 17:40:07 GMT</pubDate></item><item><title><![CDATA[Reply to Undo&#x2F;Redo für Editor implementieren on Mon, 21 Aug 2006 20:43:07 GMT]]></title><description><![CDATA[<p>DocJunioR schrieb:</p>
<blockquote>
<p>Genau deshalb hatt ich ja eigentlich mal einen Thread eröffnet in dem möglichst allgemeingültige Implementierungen der Entwurfsmuster stehen sollten..<br />
Ist aber mal wieder anhand einer Diskussion zugrunde gerichtet worden.</p>
</blockquote>
<p>Jo, weil's nix getaugt hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121846</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Mon, 21 Aug 2006 20:43:07 GMT</pubDate></item></channel></rss>