<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://library.morph.zone/index.php?action=history&amp;feed=atom&amp;title=Programowanie_sterowane_zdarzeniami%2C_notyfikacje</id>
		<title>Programowanie sterowane zdarzeniami, notyfikacje - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://library.morph.zone/index.php?action=history&amp;feed=atom&amp;title=Programowanie_sterowane_zdarzeniami%2C_notyfikacje"/>
		<link rel="alternate" type="text/html" href="https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;action=history"/>
		<updated>2026-05-12T04:49:06Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1144&amp;oldid=prev</id>
		<title>Krashan: Polish version of flowchart, minor fixes.</title>
		<link rel="alternate" type="text/html" href="https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1144&amp;oldid=prev"/>
				<updated>2011-01-19T10:46:34Z</updated>
		
		<summary type="html">&lt;p&gt;Polish version of flowchart, minor fixes.&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 10:46, 19 January 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l17&quot; &gt;Line 17:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 17:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Notyfikacje w MUI==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Notyfikacje w MUI==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Do odbierania i przetwarzania zdarzeń generowanych przez użytkownika można podejść na dwa sposoby. Jeden z nich można nazwać podejściem scentralizowanym, drugi &amp;amp;ndash; zdecentralizowanym. Dekodowanie zdarzeń w wersji scentralizowanej składa się z rozbudowanego wyrażenia warunkowego (najczęściej konstrukcja &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;&lt;/del&gt;switch&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;&lt;/del&gt;, ale bywa też długa kaskada &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;&lt;/del&gt;if&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;&lt;/del&gt;-ów) znajdującego się w głównej pętli algorytmu z rys. 1. Po zidentyfikowaniu każdego zdarzenia, wykonywana jest odpowiadająca mu procedura. Zdecentralizowana obsługa zdarzeń, to nowsza idea, która rozpowszechniła się wraz z programowaniem obiektowym. W tym przypadku biblioteka tworząca GUI sama odbiera i przetwarza zdarzenia, a następnie mapuje je na zmiany atrybutów obiektów GUI (na przykład kliknięcie na przycisk myszą, zmienia jego atrybut na &amp;quot;wciśnięty&amp;quot;). Następnie autor programu może przypisać akcje wykonywane przez program do określonych zmian atrybutów wybranych obiektów. Robi się to poprzez ustawianie '''notyfikacji''' na obiektach.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Do odbierania i przetwarzania zdarzeń generowanych przez użytkownika można podejść na dwa sposoby. Jeden z nich można nazwać podejściem scentralizowanym, drugi &amp;amp;ndash; zdecentralizowanym. Dekodowanie zdarzeń w wersji scentralizowanej składa się z rozbudowanego wyrażenia warunkowego (najczęściej konstrukcja &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;''&lt;/ins&gt;switch&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;''&lt;/ins&gt;, ale bywa też długa kaskada &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;''&lt;/ins&gt;if&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;''&lt;/ins&gt;-ów) znajdującego się w głównej pętli algorytmu z rys. 1. Po zidentyfikowaniu każdego zdarzenia, wykonywana jest odpowiadająca mu procedura. Zdecentralizowana obsługa zdarzeń, to nowsza idea, która rozpowszechniła się wraz z programowaniem obiektowym. W tym przypadku biblioteka tworząca GUI sama odbiera i przetwarza zdarzenia, a następnie mapuje je na zmiany atrybutów obiektów GUI (na przykład kliknięcie na przycisk myszą, zmienia jego atrybut na &amp;quot;wciśnięty&amp;quot;). Następnie autor programu może przypisać akcje wykonywane przez program do określonych zmian atrybutów wybranych obiektów. Robi się to poprzez ustawianie '''notyfikacji''' na obiektach.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MUI odbiera i rozpoznaje zdarzenia w sposób zdecentralizowany. Wszystke zdarzenia są tłumaczone na zmiany atrybutów różnych obiektów interfejsu. Zazwyczaj są to po prostu gadżety w oknie programu, ale niektóre zdarzenia mogą być mapowane na atrybuty obiektu okna lub obiektu aplikacji (ten ostatni nie ma widzialnej reprezentacji na ekranie). Po stworzeniu kompletnego drzewa obiektów, ale przed wejściem do głównej pętli, program ustawia notyfikacje, przypisując akcje do zmian atrybutów. Notyfikacje mogą być również tworzone i usuwane dynamicznie, jeżeli zachodzi taka potrzeba.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MUI odbiera i rozpoznaje zdarzenia w sposób zdecentralizowany. Wszystke zdarzenia są tłumaczone na zmiany atrybutów różnych obiektów interfejsu. Zazwyczaj są to po prostu gadżety w oknie programu, ale niektóre zdarzenia mogą być mapowane na atrybuty obiektu okna lub obiektu aplikacji (ten ostatni nie ma widzialnej reprezentacji na ekranie). Po stworzeniu kompletnego drzewa obiektów, ale przed wejściem do głównej pętli, program ustawia notyfikacje, przypisując akcje do zmian atrybutów. Notyfikacje mogą być również tworzone i usuwane dynamicznie, jeżeli zachodzi taka potrzeba.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Krashan</name></author>	</entry>

	<entry>
		<id>https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1142&amp;oldid=prev</id>
		<title>Krashan at 10:44, 19 January 2011</title>
		<link rel="alternate" type="text/html" href="https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1142&amp;oldid=prev"/>
				<updated>2011-01-19T10:44:00Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 10:44, 19 January 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l9&quot; &gt;Line 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;mzone_eventdriven_1&lt;/del&gt;.png|center]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;mzone_eventdriven_1_pl&lt;/ins&gt;.png|center]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Krashan</name></author>	</entry>

	<entry>
		<id>https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1141&amp;oldid=prev</id>
		<title>Krashan: Formatting restored.</title>
		<link rel="alternate" type="text/html" href="https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1141&amp;oldid=prev"/>
				<updated>2011-01-19T10:11:32Z</updated>
		
		<summary type="html">&lt;p&gt;Formatting restored.&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 10:11, 19 January 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l13&quot; &gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;center&amp;gt;''Rys. 1. Przebieg wykonania programu sterowanego zdarzeniami.''&amp;lt;/center&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;center&amp;gt;''Rys. 1. Przebieg wykonania programu sterowanego zdarzeniami.''&amp;lt;/center&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Notyfikacje w MUI==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Notyfikacje w MUI==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l53&quot; &gt;Line 53:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 54:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_Application_ReturnID()''''' zwraca 32-bitową liczbę całkowitą do [[#Idealna pętla główna|głównej pętli]] programu. Korzystając z tej metody można zmienić zdecentralizowaną obsługę zdarzeń w scentralizowaną. Początkujący programiści lubią nadużywać tej metody przekierowując wszystkie notyfikacje do głównej pętli programu, umieszczając tam następnie duże wyrażenie ''switch''. Mimo, że ta technika programowania wydaje się prosta, należy jej unikać i raczej implementować funkcje programu jako metody własnych klas tworzonych jako podklasy standardowych klas MUI. Wykonywanie dużych ilości kodu wewnątrz głównej pętli MUI zwiększa czas reakcji na zdarzenia. Jedynym w pełni uzasadnionym przypadkiem użycia ''MUIM_Application_ReturnID()'' są notyfikacje powodujące wyjście z programu, używające specjalnego identyfikatora ''MUIV_Application_ReturnID_Quit''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_Application_ReturnID()''''' zwraca 32-bitową liczbę całkowitą do [[#Idealna pętla główna|głównej pętli]] programu. Korzystając z tej metody można zmienić zdecentralizowaną obsługę zdarzeń w scentralizowaną. Początkujący programiści lubią nadużywać tej metody przekierowując wszystkie notyfikacje do głównej pętli programu, umieszczając tam następnie duże wyrażenie ''switch''. Mimo, że ta technika programowania wydaje się prosta, należy jej unikać i raczej implementować funkcje programu jako metody własnych klas tworzonych jako podklasy standardowych klas MUI. Wykonywanie dużych ilości kodu wewnątrz głównej pętli MUI zwiększa czas reakcji na zdarzenia. Jedynym w pełni uzasadnionym przypadkiem użycia ''MUIM_Application_ReturnID()'' są notyfikacje powodujące wyjście z programu, używające specjalnego identyfikatora ''MUIV_Application_ReturnID_Quit''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Wykorzystanie wartości wyzwalającej==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Wykorzystanie wartości wyzwalającej==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l69&quot; &gt;Line 69:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 71:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;small&amp;gt;''MUIV_EveryTime'', ''MUIV_TriggerValue'' i ''MUIV_NotTriggerValue'' są zdefiniowane jako konkretne liczby 32-bitowe. Dlatego nie da się ustawić notyfikacji na wartość atrybutu równą 1 233 727 793 (wartość dla ''MUIV_EveryTime''). Nie można też zdefiniować akcji polegającej na ustawieniu wartości atrubutu na obiekcie docelowym na liczbę 1 233 727 793 (''MUIV_TriggerValue'') ani liczbę 1 233 727 795 (''MUIV_NotTriggerValue'').&amp;lt;/small&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;small&amp;gt;''MUIV_EveryTime'', ''MUIV_TriggerValue'' i ''MUIV_NotTriggerValue'' są zdefiniowane jako konkretne liczby 32-bitowe. Dlatego nie da się ustawić notyfikacji na wartość atrybutu równą 1 233 727 793 (wartość dla ''MUIV_EveryTime''). Nie można też zdefiniować akcji polegającej na ustawieniu wartości atrubutu na obiekcie docelowym na liczbę 1 233 727 793 (''MUIV_TriggerValue'') ani liczbę 1 233 727 795 (''MUIV_NotTriggerValue'').&amp;lt;/small&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Zapętlone notyfikacje==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Zapętlone notyfikacje==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l80&quot; &gt;Line 80:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 83:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Kiedy użytkownik ustawi suwak ''slider1'' na wartość np. 13, zostanie wyzwolona pierwsza notyfikacja, przesuwając suwak ''slider2'' również do wartości 13. To z kolei wyzwoli drugą notyfikację, która to notyfikacja ustawi pierwszy suwak na 13, a to z kolei po raz drugi uruchomi notyfikację pierwszą... Pętla mogłaby krążyć w nieskończoność. Na szczęście MUI jest przygotowane na taką okoliczność. Rozwiązanie jest bardzo proste: '''jeżeli atrybut jest ustawiany na wartość równą jego wartości aktualnej, notyfikacje na ten atrybut w danym obiekcie są ignorowane'''. W naszym przykładzie pętla będzie przerwana po tym jak druga notyfikacja spróbuje ustawić wartość 13 (równą aktualnej) na obiekcie ''slider1''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Kiedy użytkownik ustawi suwak ''slider1'' na wartość np. 13, zostanie wyzwolona pierwsza notyfikacja, przesuwając suwak ''slider2'' również do wartości 13. To z kolei wyzwoli drugą notyfikację, która to notyfikacja ustawi pierwszy suwak na 13, a to z kolei po raz drugi uruchomi notyfikację pierwszą... Pętla mogłaby krążyć w nieskończoność. Na szczęście MUI jest przygotowane na taką okoliczność. Rozwiązanie jest bardzo proste: '''jeżeli atrybut jest ustawiany na wartość równą jego wartości aktualnej, notyfikacje na ten atrybut w danym obiekcie są ignorowane'''. W naszym przykładzie pętla będzie przerwana po tym jak druga notyfikacja spróbuje ustawić wartość 13 (równą aktualnej) na obiekcie ''slider1''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Idealna pętla główna==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Idealna pętla główna==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Krashan</name></author>	</entry>

	<entry>
		<id>https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1140&amp;oldid=prev</id>
		<title>Krashan: /* Reusing Triggering Value */ Translated.</title>
		<link rel="alternate" type="text/html" href="https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1140&amp;oldid=prev"/>
				<updated>2011-01-19T10:10:48Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Reusing Triggering Value: &lt;/span&gt; Translated.&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 10:10, 19 January 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l54&quot; &gt;Line 54:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 54:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_Application_ReturnID()''''' zwraca 32-bitową liczbę całkowitą do [[#Idealna pętla główna|głównej pętli]] programu. Korzystając z tej metody można zmienić zdecentralizowaną obsługę zdarzeń w scentralizowaną. Początkujący programiści lubią nadużywać tej metody przekierowując wszystkie notyfikacje do głównej pętli programu, umieszczając tam następnie duże wyrażenie ''switch''. Mimo, że ta technika programowania wydaje się prosta, należy jej unikać i raczej implementować funkcje programu jako metody własnych klas tworzonych jako podklasy standardowych klas MUI. Wykonywanie dużych ilości kodu wewnątrz głównej pętli MUI zwiększa czas reakcji na zdarzenia. Jedynym w pełni uzasadnionym przypadkiem użycia ''MUIM_Application_ReturnID()'' są notyfikacje powodujące wyjście z programu, używające specjalnego identyfikatora ''MUIV_Application_ReturnID_Quit''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_Application_ReturnID()''''' zwraca 32-bitową liczbę całkowitą do [[#Idealna pętla główna|głównej pętli]] programu. Korzystając z tej metody można zmienić zdecentralizowaną obsługę zdarzeń w scentralizowaną. Początkujący programiści lubią nadużywać tej metody przekierowując wszystkie notyfikacje do głównej pętli programu, umieszczając tam następnie duże wyrażenie ''switch''. Mimo, że ta technika programowania wydaje się prosta, należy jej unikać i raczej implementować funkcje programu jako metody własnych klas tworzonych jako podklasy standardowych klas MUI. Wykonywanie dużych ilości kodu wewnątrz głównej pętli MUI zwiększa czas reakcji na zdarzenia. Jedynym w pełni uzasadnionym przypadkiem użycia ''MUIM_Application_ReturnID()'' są notyfikacje powodujące wyjście z programu, używające specjalnego identyfikatora ''MUIV_Application_ReturnID_Quit''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Reusing Triggering Value&lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Wykorzystanie wartości wyzwalającej&lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;When the action of a notification is &lt;/del&gt;to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;set an attribute in the target object&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;it is often desired to forward the triggering value to the target object&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;It is very easy, when the notification is set &lt;/del&gt;to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;occur on a particular value. Things change however&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;when the notification is set to occur on any value with &lt;/del&gt;''MUIV_EveryTime''. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;A special value &lt;/del&gt;''MUIV_TriggerValue'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;may be used for this&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;It is replaced with the actual value of the triggering attribute at every trigger&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Another special value, &lt;/del&gt;''MUIV_NotTriggerValue'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is used for boolean attributes and is replaced by a logical negation of the current value of the triggering attribute&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Kiedy akcją notyfikacji jest ustawienie wartości jakiegoś atrybutu w obiekcie docelowym, bardzo często chcemy przekazać wartość, która wyzwoliła notyfikację, do obiektu docelowego. Jest &lt;/ins&gt;to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;bardzo proste, jeżeli notyfikacja jest ustawiona na jedną&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;konkretną wartość atrybutu&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Inaczej &lt;/ins&gt;to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wygląda&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;gdy wyzwolenie notyfikacji następuje przy każdej zmianie wartości atrybutu (przez użycie &lt;/ins&gt;''MUIV_EveryTime''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;)&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Rozwiązaniem jest użycie specjalnej stałej &lt;/ins&gt;''MUIV_TriggerValue'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;jako pozornej wartości atrubutu przy definiowaniu notyfikacji&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Przy każdym wyzwoleniu notyfikacji stała ta jest zastępowana aktualną wartością atrybutu&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Druga predefiniowana stała &lt;/ins&gt;''MUIV_NotTriggerValue'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;może być zastosowana do atrybutów logicznych (''TRUE''/''FALSE'') i zastępowana jest logiczną negacją aktualnej wartości atrybutu&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The first example uses &lt;/del&gt;''MUIV_Trigger_Value'', &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;to display the value of a slider in a string gadget&lt;/del&gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Pierwszy przykład używa &lt;/ins&gt;''MUIV_Trigger_Value'', &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;do wyświetlania wartości suwaka w gadżecie tekstowym&lt;/ins&gt;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; DoMethod(slider, MUIM_Notify, MUIA_Numeric_Value, MUIV_EveryTime, string, 3,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; DoMethod(slider, MUIM_Notify, MUIA_Numeric_Value, MUIV_EveryTime, string, 3,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; MUIM_Set, MUIA_String_Integer, '''MUIV_TriggerValue''');&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; MUIM_Set, MUIA_String_Integer, '''MUIV_TriggerValue''');&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The second example connects a checkmark with a button&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;When the &lt;/del&gt;checkmark &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is selected&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the button is enabled&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Deselecting the checkmark disables the button&lt;/del&gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Drugi przykład łączy notyfikacją checkmarka z przyciskiem&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Gdy &lt;/ins&gt;checkmark &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;jest wybrany&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;przycisk jest aktywny&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;Odznaczenie&amp;quot; checkmarka blokuje przycisk&lt;/ins&gt;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; DoMethod(checkmark, MUIM_Notify, MUIA_Selected, MUIV_EveryTime, button, 3,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; DoMethod(checkmark, MUIM_Notify, MUIA_Selected, MUIV_EveryTime, button, 3,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; MUIM_Set, MUIA_Disabled, '''MUIV_NotTriggerValue''');&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; MUIM_Set, MUIA_Disabled, '''MUIV_NotTriggerValue''');&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;small&amp;gt;''MUIV_EveryTime'', ''MUIV_TriggerValue'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;and &lt;/del&gt;''MUIV_NotTriggerValue'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;are defined as particular values in the &lt;/del&gt;32-&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;bit range&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Because of this, it is impossible to set a notification on the value &lt;/del&gt;1 233 727 793 (&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;which is &lt;/del&gt;''MUIV_EveryTime''). &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;It is also impossible to set the value to a fixed number &lt;/del&gt;1 233 727 793 (''MUIV_TriggerValue'') &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;or &lt;/del&gt;1 233 727 795 (''MUIV_NotTriggerValue'') &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;using ''MUIM_Set()'' in a notification&lt;/del&gt;.&amp;lt;/small&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;small&amp;gt;''MUIV_EveryTime'', ''MUIV_TriggerValue'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;i &lt;/ins&gt;''MUIV_NotTriggerValue'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;są zdefiniowane jako konkretne liczby &lt;/ins&gt;32-&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;bitowe&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Dlatego nie da się ustawić notyfikacji na wartość atrybutu równą &lt;/ins&gt;1 233 727 793 (&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wartość dla &lt;/ins&gt;''MUIV_EveryTime''). &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Nie można też zdefiniować akcji polegającej na ustawieniu wartości atrubutu na obiekcie docelowym na liczbę &lt;/ins&gt;1 233 727 793 (''MUIV_TriggerValue'') &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ani liczbę &lt;/ins&gt;1 233 727 795 (''MUIV_NotTriggerValue'').&amp;lt;/small&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Zapętlone notyfikacje==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Zapętlone notyfikacje==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Krashan</name></author>	</entry>

	<entry>
		<id>https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1139&amp;oldid=prev</id>
		<title>Krashan: /* Notification Loops */ Translated.</title>
		<link rel="alternate" type="text/html" href="https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1139&amp;oldid=prev"/>
				<updated>2011-01-19T09:34:15Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Notification Loops: &lt;/span&gt; Translated.&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 09:34, 19 January 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l71&quot; &gt;Line 71:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 71:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Notification Loops&lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Zapętlone notyfikacje&lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;There may be hundreds of notifications defined in a complex &lt;/del&gt;program. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Changing an attribute may trigger a notification cascade&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;It is possible that the cascade contains loops&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The simplest example of a notification loop is a pair of objects having notifications on each other&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Let's assume there are two sliders which should be coupled together&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;It means moving one slider should move the other one as well. A set of two notifications can ensure this behaviour&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Większy &lt;/ins&gt;program &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;w MUI może mieć zdefiniowane setki notyfikacji&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Zmiana wartości jednego atrybutu może spowodować kaskadę notyfikacji&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Może się okazać, że taka kaskada zawiera zamknięte pętle&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Najprostszym przykładem takiej pętli jest para obiektów notyfikujących się wzajemnie&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Przypuśćmy, że mamy dwa suwaki, które powinny być ze sobą sprzężone, to znaczy przesunięcie jednego suwaka powinno również przesuwać drugi&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Można to osiągnąć dwiema notyfikacjami&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; DoMethod(slider1, MUIM_Notify, MUIA_Numeric_Value, MUIV_EveryTime, slider2, 3,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; DoMethod(slider1, MUIM_Notify, MUIA_Numeric_Value, MUIV_EveryTime, slider2, 3,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l80&quot; &gt;Line 80:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 80:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; MUIM_Set, MUIA_Numeric_Value, MUIV_Trigger_Value); &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; MUIM_Set, MUIA_Numeric_Value, MUIV_Trigger_Value); &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;When the user moves &lt;/del&gt;''slider1'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;to value &lt;/del&gt;13, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the first notification triggers and sets &lt;/del&gt;''slider2'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;value to &lt;/del&gt;13. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This triggers the second notification. Its action is to set ''slider1'' value &lt;/del&gt;to 13, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;which in turn triggers the first notification again&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Then the loop triggers itself endlessly&lt;/del&gt;... &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Or rather it would, if &lt;/del&gt;MUI &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;had no anti-looping measures&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The solution is very simple&lt;/del&gt;: '''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;if an attribute is set for an object to the same value as the current one&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;any notifications on this attribute in this object are ignored&lt;/del&gt;'''. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;In our example the loop will be broken after the second notification sets the value of &lt;/del&gt;''slider1''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Kiedy użytkownik ustawi suwak &lt;/ins&gt;''slider1'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;na wartość np. &lt;/ins&gt;13, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;zostanie wyzwolona pierwsza notyfikacja, przesuwając suwak &lt;/ins&gt;''slider2'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;również do wartości &lt;/ins&gt;13. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;To z kolei wyzwoli drugą notyfikację, która &lt;/ins&gt;to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;notyfikacja ustawi pierwszy suwak na &lt;/ins&gt;13, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;a to z kolei po raz drugi uruchomi notyfikację pierwszą&lt;/ins&gt;... &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Pętla mogłaby krążyć w nieskończoność&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Na szczęście &lt;/ins&gt;MUI &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;jest przygotowane na taką okoliczność&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Rozwiązanie jest bardzo proste&lt;/ins&gt;: '''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;jeżeli atrybut jest ustawiany na wartość równą jego wartości aktualnej&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;notyfikacje na ten atrybut w danym obiekcie są ignorowane&lt;/ins&gt;'''. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;W naszym przykładzie pętla będzie przerwana po tym jak druga notyfikacja spróbuje ustawić wartość 13 (równą aktualnej) na obiekcie &lt;/ins&gt;''slider1''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Idealna pętla główna==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Idealna pętla główna==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Krashan</name></author>	</entry>

	<entry>
		<id>https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1138&amp;oldid=prev</id>
		<title>Krashan: /* The Ideal MUI Main Loop */ Translation done.</title>
		<link rel="alternate" type="text/html" href="https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1138&amp;oldid=prev"/>
				<updated>2011-01-19T09:14:30Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;The Ideal MUI Main Loop: &lt;/span&gt; Translation done.&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 09:14, 19 January 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l83&quot; &gt;Line 83:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 83:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The Ideal MUI Main Loop&lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Idealna pętla główna&lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The ideal main loop of a &lt;/del&gt;MUI &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;program should contain almost no code inside&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;All actions should be handled with notifications&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Here is the code of the loop&lt;/del&gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Idealna pętla główna programu w &lt;/ins&gt;MUI &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;powinna praktycznie nie zawierać kodu&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Wszystkie akcje programu powinny być obsługiwane notyfikacjami&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Oto kod takiej pętli&lt;/ins&gt;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; ULONG signals = 0;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; ULONG signals = 0;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l96&quot; &gt;Line 96:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 96:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; }&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The variable &lt;/del&gt;''signals'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;contains a bit-mask of input event signals sent to the process by the operating &lt;/del&gt;system. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Its initial value &lt;/del&gt;0 &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;just means &amp;quot;no signals&amp;quot;&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;When the &lt;/del&gt;''MUIM_Application_NewInput()'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;method is performed on the application object&lt;/del&gt;, MUI &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;sets signal bits for input events it expects in the &lt;/del&gt;''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;signals&lt;/del&gt;'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;variable&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;These signals are usually signals of application windows&lt;/del&gt;' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;message ports, where &lt;/del&gt;'&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'Intuition&lt;/del&gt;'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;sends input events. Then the application calls the &lt;/del&gt;''exec.library&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'' function ''Wait()&lt;/del&gt;''. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Inside this function&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the execution of the process is stopped&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The process scheduler will not give any processor time to the process until one of the signals in the mask arrives&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Other than input event signals set by &lt;/del&gt;MUI&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, only the system &lt;/del&gt;CTRL-C &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;signal is added to the mask&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Every well written &lt;/del&gt;MorphOS &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;application should be breakable by sending this signal&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;It can be sent via the console by pressing the &lt;/del&gt;CTRL + C &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;keys&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;or from tools like the TaskManager&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;When one of the signals in the mask arrives at the process&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the program returns from &lt;/del&gt;''Wait()''. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;If the &lt;/del&gt;CTRL-C &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;signal is detected&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the main loop ends&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;If not, &lt;/del&gt;MUI &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;decodes the received input events based on its received signal mask&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;translates events &lt;/del&gt;to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;changes of attributes of relevant objects and performs the triggered notifications. All this happens inside the &lt;/del&gt;''MUIM_Application_NewInput()'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;method&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Finally the signal mask is updated&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;If any notification calls the &lt;/del&gt;''MUIM_Application_ReturnID()'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;method&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the identifier passed is returned as the result of &lt;/del&gt;''MUIM_Application_NewInput()''. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;In the event of receiving the special value &lt;/del&gt;''MUIV_Application_ReturnID_Quit'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the loop ends&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Zmienna &lt;/ins&gt;''signals'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;zawiera maskę bitową sygnałów wysyłanych do programu przez &lt;/ins&gt;system &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;operacyjny&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Wartością początkową tej maski jest &lt;/ins&gt;0&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, co oznacza brak sygnałów&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Kiedy metoda &lt;/ins&gt;''MUIM_Application_NewInput()'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;zostaje wykonana na obiekcie aplikacji&lt;/ins&gt;, MUI &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ustawia w tej zmiennej bity sygnałów, których się spodziewa. Z reguły są to sygnały z portów komunikacyjnych okien, gdzie &lt;/ins&gt;''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Intuition&lt;/ins&gt;'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;umieszcza wiadomości o nadchodzących zdarzeniach&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Następnie program wywołuje funkcję systemową &lt;/ins&gt;''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Wait()&lt;/ins&gt;'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;z &lt;/ins&gt;''exec.library''. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Funkcja ta zatrzymuje proces do czasu nadejścia któregokolwiek sygnału&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;dla którego bit w podanej masce jest jedynką&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;W trakcie oczekiwania na sygnał proces jest wstrzymany i nie zużywa czasu procesora&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Oprócz sygnałów &amp;quot;zamówionych&amp;quot; przez &lt;/ins&gt;MUI &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;do maski dodawany jest systemowy sygnał &lt;/ins&gt;CTRL-C. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Każdy dobrze napisany program dla &lt;/ins&gt;MorphOS&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-a powinien dać się przerwać za pomocą tego sygnału&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Sygnał ten może być wysłany z okna konsoli przez wciśnięcie kombinacji klawiszy &lt;/ins&gt;CTRL + C &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;(stąd nazwa)&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;a także za pomocą TaskManagera i innych narzędzi&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;W momencie, gdy do programu nadejdzie co najmniej jeden z określonych maską sygnałów&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;funkcja &lt;/ins&gt;''Wait()'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wychodzi z powrotem do programu&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;W przypadku, gdy otrzymano sygnał &lt;/ins&gt;CTRL-C, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;pętla ulega zakończeniu&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Pozostałe sygnały są tłumaczone przez &lt;/ins&gt;MUI &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;na zmiany atrybutów poszczególnych obiektów&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;a następnie wykonywane są przypisane im notyfikacje. Wszystko &lt;/ins&gt;to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;odbywa się wewnątrz metody &lt;/ins&gt;''MUIM_Application_NewInput()''. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Na jej zakończenie aktualizowana jest maska sygnałów&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Jeżeli którakolwiek z notyfikacji wykonała na obiekcie aplikacji metodę &lt;/ins&gt;''MUIM_Application_ReturnID()'', &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;parametr tej metody jest zwracany jako wynik &lt;/ins&gt;''MUIM_Application_NewInput()''. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Gdy parametrem tym okaże się być stała &lt;/ins&gt;''MUIV_Application_ReturnID_Quit''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, pętla ulega przerwaniu&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Any additional code inserted into the loop will introduce delay in &lt;/del&gt;GUI &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;handling and redrawing&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;If a &lt;/del&gt;program &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;does some processor intensive calculations&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the best way to deal with them is to delegate them into a subprocess&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Loading the main process with computational tasks may result in the &lt;/del&gt;program &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;being perceived as slow and unresponsive to user actions&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Każdy dodatkowy kod umieszczony w głównej pętli programu wprowadza opóźnienia w obsłudze i rysowaniu &lt;/ins&gt;GUI. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Jeżeli &lt;/ins&gt;program &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wykonuje jakieś zadania silnie obciążające procesor na dłuższy czas&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;najlepszym sposobem jest wykonywanie tych zadań w procesie potomnym&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Obciążanie głównego procesu programu długotrwałymi zadaniami obliczeniowymi powoduje, że &lt;/ins&gt;program &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;będzie sprawiał wrażenie powolnego i nie reagującego na poczynania użytkownika&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Krashan</name></author>	</entry>

	<entry>
		<id>https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1137&amp;oldid=prev</id>
		<title>Krashan: /* Notyfikacje w MUI */ Fixed link.</title>
		<link rel="alternate" type="text/html" href="https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1137&amp;oldid=prev"/>
				<updated>2011-01-19T08:16:51Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Notyfikacje w MUI: &lt;/span&gt; Fixed link.&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 08:16, 19 January 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l52&quot; &gt;Line 52:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 52:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_CallHook()''''' wywołuje funkcję programu, tzw. [[hook|hooka]]. Metoda ta jest często nadużywana przez programistów unikających tworzenia własnych klas i implementowania funkcjonalności programu w metodach takich klas. Wywołanie wprost metody własnej klasy jako akcji notyfikacji jest prostsze i szybsze, niż wywołanie hooka poprzez ''MUIM_CallHook()''. Dodatkowo hook wymaga zdefiniowania dodatkowych struktur - struktury ''Hook'' oraz tak zwanej &amp;quot;bramki&amp;quot; &amp;amp;ndash; struktury ''EmulLibEntry''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_CallHook()''''' wywołuje funkcję programu, tzw. [[hook|hooka]]. Metoda ta jest często nadużywana przez programistów unikających tworzenia własnych klas i implementowania funkcjonalności programu w metodach takich klas. Wywołanie wprost metody własnej klasy jako akcji notyfikacji jest prostsze i szybsze, niż wywołanie hooka poprzez ''MUIM_CallHook()''. Dodatkowo hook wymaga zdefiniowania dodatkowych struktur - struktury ''Hook'' oraz tak zwanej &amp;quot;bramki&amp;quot; &amp;amp;ndash; struktury ''EmulLibEntry''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_Application_ReturnID()''''' zwraca 32-bitową liczbę całkowitą do [[#&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The_Ideal_MUI_Main_Loop&lt;/del&gt;|głównej pętli]] programu. Korzystając z tej metody można zmienić zdecentralizowaną obsługę zdarzeń w scentralizowaną. Początkujący programiści lubią nadużywać tej metody przekierowując wszystkie notyfikacje do głównej pętli programu, umieszczając tam następnie duże wyrażenie ''switch''. Mimo, że ta technika programowania wydaje się prosta, należy jej unikać i raczej implementować funkcje programu jako metody własnych klas tworzonych jako podklasy standardowych klas MUI. Wykonywanie dużych ilości kodu wewnątrz głównej pętli MUI zwiększa czas reakcji na zdarzenia. Jedynym w pełni uzasadnionym przypadkiem użycia ''MUIM_Application_ReturnID()'' są notyfikacje powodujące wyjście z programu, używające specjalnego identyfikatora ''MUIV_Application_ReturnID_Quit''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_Application_ReturnID()''''' zwraca 32-bitową liczbę całkowitą do [[#&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Idealna pętla główna&lt;/ins&gt;|głównej pętli]] programu. Korzystając z tej metody można zmienić zdecentralizowaną obsługę zdarzeń w scentralizowaną. Początkujący programiści lubią nadużywać tej metody przekierowując wszystkie notyfikacje do głównej pętli programu, umieszczając tam następnie duże wyrażenie ''switch''. Mimo, że ta technika programowania wydaje się prosta, należy jej unikać i raczej implementować funkcje programu jako metody własnych klas tworzonych jako podklasy standardowych klas MUI. Wykonywanie dużych ilości kodu wewnątrz głównej pętli MUI zwiększa czas reakcji na zdarzenia. Jedynym w pełni uzasadnionym przypadkiem użycia ''MUIM_Application_ReturnID()'' są notyfikacje powodujące wyjście z programu, używające specjalnego identyfikatora ''MUIV_Application_ReturnID_Quit''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Reusing Triggering Value==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Reusing Triggering Value==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Krashan</name></author>	</entry>

	<entry>
		<id>https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1136&amp;oldid=prev</id>
		<title>Krashan: /* Notyfikacje w MUI */ Translation finished.</title>
		<link rel="alternate" type="text/html" href="https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1136&amp;oldid=prev"/>
				<updated>2011-01-19T08:13:16Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Notyfikacje w MUI: &lt;/span&gt; Translation finished.&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 08:13, 19 January 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l43&quot; &gt;Line 43:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 43:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_NoNotifySet()''''' działa podobnie jak ''MUIM_Set()'', ale jest jedna istotna różnica. Ustawienie atrybutu przy pomocy tej metody nie wyzwala ewentualnych notyfikacji ustawionych na ten atrybut na obiekcie docelowym. Często ustawia się atrybuty tą metodą w celu uniknięcia zapętlania się notyfikacji, dlatego jest stosowana nie tylko jako akcja notyfikacji, ale również samodzielna metoda.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_NoNotifySet()''''' działa podobnie jak ''MUIM_Set()'', ale jest jedna istotna różnica. Ustawienie atrybutu przy pomocy tej metody nie wyzwala ewentualnych notyfikacji ustawionych na ten atrybut na obiekcie docelowym. Często ustawia się atrybuty tą metodą w celu uniknięcia zapętlania się notyfikacji, dlatego jest stosowana nie tylko jako akcja notyfikacji, ale również samodzielna metoda.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_MultiSet()''''' daje możliwość ustawienia jednej wartości tego samego atrybutu dla wielu obiektów jednocześnie. Obiekty podaje się jako kolejne parametry metody, listę tę zakończa się wskaźnikiem zerowym. Poniższy przykład ustawia atrybut &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;&lt;/del&gt;MUIA_Disabled'' na wartość ''TRUE'' trzem przyciskom:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_MultiSet()''''' daje możliwość ustawienia jednej wartości tego samego atrybutu dla wielu obiektów jednocześnie. Obiekty podaje się jako kolejne parametry metody, listę tę zakończa się wskaźnikiem zerowym. Poniższy przykład ustawia atrybut &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;''&lt;/ins&gt;MUIA_Disabled'' na wartość ''TRUE'' trzem przyciskom:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; DoMethod(checkmark, MUIM_Notify, MUIA_Selected, FALSE, application, 7, MUIM_MultiSet,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; DoMethod(checkmark, MUIM_Notify, MUIA_Selected, FALSE, application, 7, MUIM_MultiSet,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l50&quot; &gt;Line 50:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 50:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Co ciekawe obiekt będący celem notyfikacji jest tu zupełnie nieistotny, musi to być jednak wskaźnik do jakiegoś istniejącego obiektu. Najczęściej do tego celu używa się obiektu aplikacji albo źródłowego obiektu notyfikacji.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Co ciekawe obiekt będący celem notyfikacji jest tu zupełnie nieistotny, musi to być jednak wskaźnik do jakiegoś istniejącego obiektu. Najczęściej do tego celu używa się obiektu aplikacji albo źródłowego obiektu notyfikacji.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_CallHook()''''' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;calls an external callback function called a &lt;/del&gt;[[hook]]. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;It is often abused by programmers being reluctant to perform subclassing of standard classes&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;instead implementing program functionality as new methods&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Calling a method from a notification is usually faster and easier (however, a &lt;/del&gt;hook &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;needs some additional structures to be defined)&lt;/del&gt;. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_CallHook()''''' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wywołuje funkcję programu, tzw. &lt;/ins&gt;[[hook&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|hooka&lt;/ins&gt;]]. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Metoda ta jest często nadużywana przez programistów unikających tworzenia własnych klas i implementowania funkcjonalności programu w metodach takich klas. Wywołanie wprost metody własnej klasy jako akcji notyfikacji jest prostsze i szybsze&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;niż wywołanie hooka poprzez ''MUIM_CallHook()''&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Dodatkowo &lt;/ins&gt;hook &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wymaga zdefiniowania dodatkowych struktur - struktury ''Hook'' oraz tak zwanej &amp;quot;bramki&amp;quot; &amp;amp;ndash; struktury ''EmulLibEntry''&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_Application_ReturnID()''''' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;returns a &lt;/del&gt;32-&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;bit integer number to &lt;/del&gt;[[#The_Ideal_MUI_Main_Loop|&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the main loop&lt;/del&gt;]] &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;of a MUI program&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;With this method MUI's decentralized handling of input events can be turned into a centralized one&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;MUI programming beginners tend to abuse this method and redirect all the event handling back to the main loop&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;putting a big &lt;/del&gt;''switch'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;statement there&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;While rather simple&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;this programming technique should be avoided in favour of implementing program functionality in methods&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Adding code inside the main loop degrades the GUI responsiveness&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The only legitimate use of &lt;/del&gt;''MUIM_Application_ReturnID()'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is to return a special value &lt;/del&gt;''MUIV_Application_ReturnID_Quit'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;used for ending the program&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_Application_ReturnID()''''' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;zwraca &lt;/ins&gt;32-&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;bitową liczbę całkowitą do &lt;/ins&gt;[[#The_Ideal_MUI_Main_Loop|&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;głównej pętli&lt;/ins&gt;]] &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;programu&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Korzystając z tej metody można zmienić zdecentralizowaną obsługę zdarzeń w scentralizowaną&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Początkujący programiści lubią nadużywać tej metody przekierowując wszystkie notyfikacje do głównej pętli programu&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;umieszczając tam następnie duże wyrażenie &lt;/ins&gt;''switch''. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Mimo, że ta technika programowania wydaje się prosta&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;należy jej unikać i raczej implementować funkcje programu jako metody własnych klas tworzonych jako podklasy standardowych klas MUI&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Wykonywanie dużych ilości kodu wewnątrz głównej pętli MUI zwiększa czas reakcji na zdarzenia&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Jedynym w pełni uzasadnionym przypadkiem użycia &lt;/ins&gt;''MUIM_Application_ReturnID()'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;są notyfikacje powodujące wyjście z programu, używające specjalnego identyfikatora &lt;/ins&gt;''MUIV_Application_ReturnID_Quit''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Reusing Triggering Value==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Reusing Triggering Value==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Krashan</name></author>	</entry>

	<entry>
		<id>https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1135&amp;oldid=prev</id>
		<title>Krashan: /* Notyfikacje w MUI */ Translation in progress.</title>
		<link rel="alternate" type="text/html" href="https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1135&amp;oldid=prev"/>
				<updated>2011-01-19T07:35:20Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Notyfikacje w MUI: &lt;/span&gt; Translation in progress.&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 07:35, 19 January 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l33&quot; &gt;Line 33:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 33:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Notyfikacja zostaje wyzwolona, gdy atrybut wyzwalający zostaje ustawiony na wskazaną wartość. Często chcemy wyzwolić notyfikację przy '''każdej''' zmianie atrybutu, niezależnie od wartości. Jako wartość wyzwalającą należy wtedy podać predefiniowaną stałą ''MUIV_EveryTime''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Notyfikacja zostaje wyzwolona, gdy atrybut wyzwalający zostaje ustawiony na wskazaną wartość. Często chcemy wyzwolić notyfikację przy '''każdej''' zmianie atrybutu, niezależnie od wartości. Jako wartość wyzwalającą należy wtedy podać predefiniowaną stałą ''MUIV_EveryTime''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The target action of a notification can be any method&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;There are a few methods designed specifically &lt;/del&gt;to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;be used in notifications&lt;/del&gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Akcja wykonywana na obiekcie docelowym może być dowolną metodą tego obiektu&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;MUI posiada kilka metod specjalnie zaprojektowanych pod kątem użycia ich w notyfikacjach. Są &lt;/ins&gt;to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;metody klasy ''Notify'', po której dziedziczą wszystkie klasy MUI&lt;/ins&gt;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_Set()''''' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is another method for setting an attribute. It is used when a notification has &lt;/del&gt;to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;set an attribute on the target object&lt;/del&gt;. ''OM_SET()'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is not suitable for using in notifications because it takes a &lt;/del&gt;[[Taglists|&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;taglist&lt;/del&gt;]] &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;containing attributes to be set&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This taglist cannot be built from arguments and must be defined separately&lt;/del&gt;. ''MUIM_Set()'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;sets a single attribute to a specified value&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;They are passed to the method directly as two separate arguments&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The example below opens a window when a button is pressed:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_Set()''''' to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;inny sposób na ustawienie atrybutu obiektu, używany w sytuacji gdy notyfikacja powinna ustawić atrybut obiektu docelowego&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Metoda &lt;/ins&gt;''OM_SET()'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;się tu nie nadaje, ponieważ jako argumentu wymaga &lt;/ins&gt;[[Taglists|&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;taglisty&lt;/ins&gt;]] &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;zawierającej atrybuty do ustawienia&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Taglista ta nie może być dynamicznie zbudowana z argumentów i w związku z tym musi być zdefiniowana oddzielnie&lt;/ins&gt;. ''MUIM_Set()'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;natomiast ustawia jeden atrybut na podaną wartość. Atrybut i jego wartość są podawane bezpośrednio jako dwa oddzielne argumenty tej metody&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Notyfikacja poniżej otwiera okno po naciśnięciu przycisku&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; DoMethod(&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;button&lt;/del&gt;, MUIM_Notify, MUIA_Pressed, FALSE, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;window&lt;/del&gt;, 3, MUIM_Set, MUIA_Window_Open, TRUE);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; DoMethod(&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;przycisk&lt;/ins&gt;, MUIM_Notify, MUIA_Pressed, FALSE, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;okno&lt;/ins&gt;, 3, MUIM_Set, MUIA_Window_Open, TRUE);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Those not familiar with &lt;/del&gt;MUI &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;may ask why the triggering value is set as &lt;/del&gt;''FALSE''. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;It is related &lt;/del&gt;to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the default behaviour of button gadgets&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The gadget triggers when the left mouse button is &lt;/del&gt;'''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;released&lt;/del&gt;''', &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;so at the end of &lt;/del&gt;a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;click&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The &lt;/del&gt;''MUIA_Pressed'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;attribute is set to &lt;/del&gt;''TRUE'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;when the mouse button is pushed down, and set to &lt;/del&gt;''FALSE'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;when the mouse button is released. Now it should be obvious why the notification is set to trigger at a ''MUIA_Pressed'' change to &lt;/del&gt;''FALSE''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Osoby dopiero poznające &lt;/ins&gt;MUI &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;mogą być zaskoczone, że wartością atrybutu ''MUIA_Pressed'' wyzwalającą notyfikację jest &lt;/ins&gt;''FALSE''. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Jest &lt;/ins&gt;to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;związane z domyślnym zachowaniem się przycisków&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Przycisk uruchamia akcję, gdy lewy przycisk myszy jest &lt;/ins&gt;'''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;zwalniany&lt;/ins&gt;''', a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;więc na końcu kliknięcia&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Atrybut &lt;/ins&gt;''MUIA_Pressed'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;otrzymuje wartość &lt;/ins&gt;''TRUE'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;gdy przycisk myszy jest wciskany a następnie &lt;/ins&gt;''FALSE''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, gdy przycisk myszy jest zwalniany, dlatego notyfikacja jest na wartość &lt;/ins&gt;''FALSE''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_NoNotifySet()''''' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;works the same as &lt;/del&gt;''MUIM_Set()'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;with one important exception&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;It does not trigger any notifications set on the target object when the attribute has changed&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;It is often used to avoid notification loops&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;not only in notification&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;but also standalone in the code&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_NoNotifySet()''''' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;działa podobnie jak &lt;/ins&gt;''MUIM_Set()''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, ale jest jedna istotna różnica&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Ustawienie atrybutu przy pomocy tej metody nie wyzwala ewentualnych notyfikacji ustawionych na ten atrybut na obiekcie docelowym&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Często ustawia się atrybuty tą metodą w celu uniknięcia zapętlania się notyfikacji&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;dlatego jest stosowana nie tylko jako akcja notyfikacji&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ale również samodzielna metoda&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_MultiSet()''''' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;allows for setting the same attribute to the same value for multiple objects&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Objects are specified as this method&lt;/del&gt;'&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;s arguments and the final argument should be &lt;/del&gt;''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;NULL&lt;/del&gt;''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;. Here is an example, disabling three buttons after a checkmark is deselected&lt;/del&gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_MultiSet()''''' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;daje możliwość ustawienia jednej wartości tego samego atrybutu dla wielu obiektów jednocześnie&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Obiekty podaje się jako kolejne parametry metody, listę tę zakończa się wskaźnikiem zerowym. Poniższy przykład ustawia atrybut &amp;quot;MUIA_Disabled&lt;/ins&gt;'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;na wartość &lt;/ins&gt;''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;TRUE&lt;/ins&gt;'&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;' trzem przyciskom&lt;/ins&gt;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; DoMethod(checkmark, MUIM_Notify, MUIA_Selected, FALSE, application, 7, MUIM_MultiSet,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; DoMethod(checkmark, MUIM_Notify, MUIA_Selected, FALSE, application, 7, MUIM_MultiSet,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; MUIA_Disabled, TRUE, button1, button2, button3, NULL);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; MUIA_Disabled, TRUE, button1, button2, button3, NULL);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;What is interesting is that while the target notification object is completely irrelevant here&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;it must still be a valid object pointer&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The application object is usually used for this purpose, or the notification source object&lt;/del&gt;. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Co ciekawe obiekt będący celem notyfikacji jest tu zupełnie nieistotny&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;musi to być jednak wskaźnik do jakiegoś istniejącego obiektu&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Najczęściej do tego celu używa się obiektu aplikacji albo źródłowego obiektu notyfikacji&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_CallHook()''''' calls an external callback function called a [[hook]]. It is often abused by programmers being reluctant to perform subclassing of standard classes, instead implementing program functionality as new methods. Calling a method from a notification is usually faster and easier (however, a hook needs some additional structures to be defined). &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''''MUIM_CallHook()''''' calls an external callback function called a [[hook]]. It is often abused by programmers being reluctant to perform subclassing of standard classes, instead implementing program functionality as new methods. Calling a method from a notification is usually faster and easier (however, a hook needs some additional structures to be defined). &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Krashan</name></author>	</entry>

	<entry>
		<id>https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1134&amp;oldid=prev</id>
		<title>Krashan: /* Notyfikacje w MUI */ Translation in progress.</title>
		<link rel="alternate" type="text/html" href="https://library.morph.zone/index.php?title=Programowanie_sterowane_zdarzeniami,_notyfikacje&amp;diff=1134&amp;oldid=prev"/>
				<updated>2011-01-18T14:01:02Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Notyfikacje w MUI: &lt;/span&gt; Translation in progress.&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 14:01, 18 January 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l24&quot; &gt;Line 24:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 24:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; DoMethod(zrodlo, '''MUIM_Notify''', atrybut, wartosc, cel, ilosc_parametrow, akcja, /* parametry */);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; DoMethod(zrodlo, '''MUIM_Notify''', atrybut, wartosc, cel, ilosc_parametrow, akcja, /* parametry */);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The first four arguments form the &lt;/del&gt;'''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;source&lt;/del&gt;''' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;part&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the rest is the &lt;/del&gt;'''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;target&lt;/del&gt;''' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;part&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The complete call can be &lt;/del&gt;&amp;quot;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;translated&lt;/del&gt;&amp;quot; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;to a human language in the following way&lt;/del&gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Pierwsze cztery argumenty tworzą grupę &lt;/ins&gt;'''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;źródła&lt;/ins&gt;''', &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;pozostałe grupę &lt;/ins&gt;'''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;celu&lt;/ins&gt;'''. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Całe wywołanie można &lt;/ins&gt;&amp;quot;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;przetłumaczyć&lt;/ins&gt;&amp;quot; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;na ludzki język następująco&lt;/ins&gt;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;big&amp;gt;&amp;lt;center&amp;gt;Kiedy '''źródło''' zmieni swój '''atrybut''' na określoną '''wartość''',&amp;lt;br&amp;gt;wykonaj metodę '''akcja''' na obiekcie '''cel''' z '''parametrami'''.&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;big&amp;gt;&amp;lt;center&amp;gt;When the '''source''' object changes its '''attribute''' to the '''value''',&amp;lt;br&amp;gt;perform '''action''' method on the '''target''' object with '''parameters'''.&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pozostał nam jeden nieobjaśniony argument nazwany ''ilość_parametrów''. To po prostu ilość parametrów ''MUIM_Notify()'', jakie występują po tym argumencie. Minimalna ilość parametrów to 1 (identyfikator metody do wykonania), górnym limitem jest jedynie zdrowy rozsądek.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;There is one argument not explained with the above sentence&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;namely ''param_count''&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This is just the number of parameters following this argument. The minimum number of parameters is 1 (the action method identifier), there is no upper limit other than using common sense.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Notyfikacja zostaje wyzwolona&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;gdy atrybut wyzwalający zostaje ustawiony na wskazaną wartość&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Często chcemy wyzwolić notyfikację przy &lt;/ins&gt;'''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;każdej&lt;/ins&gt;''' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;zmianie atrybutu, niezależnie od wartości&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Jako wartość wyzwalającą należy wtedy podać predefiniowaną stałą &lt;/ins&gt;''MUIV_EveryTime''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;A notification is triggered when an attribute is set to a specified value. It is often useful to have a notification on &lt;/del&gt;'''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;any&lt;/del&gt;''' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;attribute change&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;A special value &lt;/del&gt;''MUIV_EveryTime'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;should be used as a triggering value in this case&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The target action of a notification can be any method. There are a few methods designed specifically to be used in notifications:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The target action of a notification can be any method. There are a few methods designed specifically to be used in notifications:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Krashan</name></author>	</entry>

	</feed>