mirror of
https://gitea.nishi.boats/pyrite-dev/milsko
synced 2026-01-07 01:49:47 +00:00
fancy listbox
git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@369 b9cfdab3-6d41-4d17-bbe4-086880011989
This commit is contained in:
@@ -19,6 +19,7 @@ clean:
|
||||
del /f /q src\color.obj
|
||||
del /f /q src\directory.obj
|
||||
del /f /q src\messagebox.obj
|
||||
del /f /q src\string.obj
|
||||
del /f /q src\boldfont.obj
|
||||
del /f /q external\ds.obj
|
||||
del /f /q external\image.obj
|
||||
@@ -66,8 +67,8 @@ clean:
|
||||
del /f /q src\Mw.dll
|
||||
del /f /q oosrc\MwOO.dll
|
||||
|
||||
src\Mw.dll: src\core.obj src\draw.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\font.obj src\color.obj src\directory.obj src\messagebox.obj src\boldfont.obj external\ds.obj external\image.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\question.obj src\icon\directory.obj src\icon\file.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\backend\gdi.obj
|
||||
$(LD) $(LDFLAGS) -e$@ src\core.obj src\draw.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\font.obj src\color.obj src\directory.obj src\messagebox.obj src\boldfont.obj external\ds.obj external\image.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\question.obj src\icon\directory.obj src\icon\file.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\backend\gdi.obj -lopengl32.lib -lgdi32.lib -luser32.lib
|
||||
src\Mw.dll: src\core.obj src\draw.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\font.obj src\color.obj src\directory.obj src\messagebox.obj src\string.obj src\boldfont.obj external\ds.obj external\image.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\question.obj src\icon\directory.obj src\icon\file.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\backend\gdi.obj
|
||||
$(LD) $(LDFLAGS) -e$@ src\core.obj src\draw.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\font.obj src\color.obj src\directory.obj src\messagebox.obj src\string.obj src\boldfont.obj external\ds.obj external\image.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\question.obj src\icon\directory.obj src\icon\file.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\backend\gdi.obj -lopengl32.lib -lgdi32.lib -luser32.lib
|
||||
implib src\Mw.lib src\Mw.dll
|
||||
|
||||
oosrc\MwOO.dll: oosrc\base.obj oosrc\widget\button.obj oosrc\widget\frame.obj oosrc\widget\image.obj oosrc\widget\menu.obj oosrc\widget\opengl.obj oosrc\widget\scrollbar.obj oosrc\widget\submenu.obj oosrc\widget\window.obj oosrc\widget\checkbox.obj oosrc\widget\viewport.obj oosrc\widget\listbox.obj oosrc\widget\label.obj oosrc\widget\entry.obj oosrc\widget\numberentry.obj
|
||||
|
||||
@@ -19,6 +19,7 @@ clean:
|
||||
del /f /q src\color.obj
|
||||
del /f /q src\directory.obj
|
||||
del /f /q src\messagebox.obj
|
||||
del /f /q src\string.obj
|
||||
del /f /q src\boldfont.obj
|
||||
del /f /q external\ds.obj
|
||||
del /f /q external\image.obj
|
||||
@@ -66,8 +67,8 @@ clean:
|
||||
del /f /q src\Mw.dll
|
||||
del /f /q oosrc\MwOO.dll
|
||||
|
||||
src\Mw.dll: src\core.obj src\draw.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\font.obj src\color.obj src\directory.obj src\messagebox.obj src\boldfont.obj external\ds.obj external\image.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\question.obj src\icon\directory.obj src\icon\file.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\backend\gdi.obj
|
||||
$(LD) $(LDFLAGS) /OUT:$@ src\core.obj src\draw.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\font.obj src\color.obj src\directory.obj src\messagebox.obj src\boldfont.obj external\ds.obj external\image.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\question.obj src\icon\directory.obj src\icon\file.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\backend\gdi.obj opengl32.lib gdi32.lib user32.lib
|
||||
src\Mw.dll: src\core.obj src\draw.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\font.obj src\color.obj src\directory.obj src\messagebox.obj src\string.obj src\boldfont.obj external\ds.obj external\image.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\question.obj src\icon\directory.obj src\icon\file.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\backend\gdi.obj
|
||||
$(LD) $(LDFLAGS) /OUT:$@ src\core.obj src\draw.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\font.obj src\color.obj src\directory.obj src\messagebox.obj src\string.obj src\boldfont.obj external\ds.obj external\image.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\question.obj src\icon\directory.obj src\icon\file.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\backend\gdi.obj opengl32.lib gdi32.lib user32.lib
|
||||
|
||||
|
||||
oosrc\MwOO.dll: oosrc\base.obj oosrc\widget\button.obj oosrc\widget\frame.obj oosrc\widget\image.obj oosrc\widget\menu.obj oosrc\widget\opengl.obj oosrc\widget\scrollbar.obj oosrc\widget\submenu.obj oosrc\widget\window.obj oosrc\widget\checkbox.obj oosrc\widget\viewport.obj oosrc\widget\listbox.obj oosrc\widget\label.obj oosrc\widget\entry.obj oosrc\widget\numberentry.obj
|
||||
|
||||
@@ -18,6 +18,7 @@ clean: .SYMBOLIC
|
||||
%erase src/color.obj
|
||||
%erase src/directory.obj
|
||||
%erase src/messagebox.obj
|
||||
%erase src/string.obj
|
||||
%erase src/boldfont.obj
|
||||
%erase external/ds.obj
|
||||
%erase external/image.obj
|
||||
@@ -65,8 +66,8 @@ clean: .SYMBOLIC
|
||||
%erase src/Mw.dll
|
||||
%erase oosrc/MwOO.dll
|
||||
|
||||
src/Mw.dll: src/core.obj src/draw.obj src/default.obj src/lowlevel.obj src/error.obj src/unicode.obj src/font.obj src/color.obj src/directory.obj src/messagebox.obj src/boldfont.obj external/ds.obj external/image.obj src/icon/info.obj src/icon/note.obj src/icon/warning.obj src/icon/error.obj src/icon/news.obj src/icon/question.obj src/icon/directory.obj src/icon/file.obj src/cursor/default.obj src/cursor/cross.obj src/cursor/text.obj src/widget/button.obj src/widget/frame.obj src/widget/opengl.obj src/widget/window.obj src/widget/menu.obj src/widget/entry.obj src/widget/submenu.obj src/widget/viewport.obj src/widget/image.obj src/widget/scrollbar.obj src/widget/checkbox.obj src/widget/label.obj src/widget/listbox.obj src/widget/numberentry.obj src/backend/gdi.obj
|
||||
$(LD) $(LDFLAGS) option implib=src/Mw.lib name $@ file src/core.obj file src/draw.obj file src/default.obj file src/lowlevel.obj file src/error.obj file src/unicode.obj file src/font.obj file src/color.obj file src/directory.obj file src/messagebox.obj file src/boldfont.obj file external/ds.obj file external/image.obj file src/icon/info.obj file src/icon/note.obj file src/icon/warning.obj file src/icon/error.obj file src/icon/news.obj file src/icon/question.obj file src/icon/directory.obj file src/icon/file.obj file src/cursor/default.obj file src/cursor/cross.obj file src/cursor/text.obj file src/widget/button.obj file src/widget/frame.obj file src/widget/opengl.obj file src/widget/window.obj file src/widget/menu.obj file src/widget/entry.obj file src/widget/submenu.obj file src/widget/viewport.obj file src/widget/image.obj file src/widget/scrollbar.obj file src/widget/checkbox.obj file src/widget/label.obj file src/widget/listbox.obj file src/widget/numberentry.obj file src/backend/gdi.obj library clib3r.lib library opengl32.lib library gdi32.lib library user32.lib
|
||||
src/Mw.dll: src/core.obj src/draw.obj src/default.obj src/lowlevel.obj src/error.obj src/unicode.obj src/font.obj src/color.obj src/directory.obj src/messagebox.obj src/string.obj src/boldfont.obj external/ds.obj external/image.obj src/icon/info.obj src/icon/note.obj src/icon/warning.obj src/icon/error.obj src/icon/news.obj src/icon/question.obj src/icon/directory.obj src/icon/file.obj src/cursor/default.obj src/cursor/cross.obj src/cursor/text.obj src/widget/button.obj src/widget/frame.obj src/widget/opengl.obj src/widget/window.obj src/widget/menu.obj src/widget/entry.obj src/widget/submenu.obj src/widget/viewport.obj src/widget/image.obj src/widget/scrollbar.obj src/widget/checkbox.obj src/widget/label.obj src/widget/listbox.obj src/widget/numberentry.obj src/backend/gdi.obj
|
||||
$(LD) $(LDFLAGS) option implib=src/Mw.lib name $@ file src/core.obj file src/draw.obj file src/default.obj file src/lowlevel.obj file src/error.obj file src/unicode.obj file src/font.obj file src/color.obj file src/directory.obj file src/messagebox.obj file src/string.obj file src/boldfont.obj file external/ds.obj file external/image.obj file src/icon/info.obj file src/icon/note.obj file src/icon/warning.obj file src/icon/error.obj file src/icon/news.obj file src/icon/question.obj file src/icon/directory.obj file src/icon/file.obj file src/cursor/default.obj file src/cursor/cross.obj file src/cursor/text.obj file src/widget/button.obj file src/widget/frame.obj file src/widget/opengl.obj file src/widget/window.obj file src/widget/menu.obj file src/widget/entry.obj file src/widget/submenu.obj file src/widget/viewport.obj file src/widget/image.obj file src/widget/scrollbar.obj file src/widget/checkbox.obj file src/widget/label.obj file src/widget/listbox.obj file src/widget/numberentry.obj file src/backend/gdi.obj library clib3r.lib library opengl32.lib library gdi32.lib library user32.lib
|
||||
|
||||
|
||||
oosrc/MwOO.dll: oosrc/base.obj oosrc/widget/button.obj oosrc/widget/frame.obj oosrc/widget/image.obj oosrc/widget/menu.obj oosrc/widget/opengl.obj oosrc/widget/scrollbar.obj oosrc/widget/submenu.obj oosrc/widget/window.obj oosrc/widget/checkbox.obj oosrc/widget/viewport.obj oosrc/widget/listbox.obj oosrc/widget/label.obj oosrc/widget/entry.obj oosrc/widget/numberentry.obj
|
||||
@@ -94,6 +95,8 @@ src/directory.obj: src/directory.c
|
||||
$(CC) $(CFLAGS) -fo=$@ $<
|
||||
src/messagebox.obj: src/messagebox.c
|
||||
$(CC) $(CFLAGS) -fo=$@ $<
|
||||
src/string.obj: src/string.c
|
||||
$(CC) $(CFLAGS) -fo=$@ $<
|
||||
src/boldfont.obj: src/boldfont.c
|
||||
$(CC) $(CFLAGS) -fo=$@ $<
|
||||
external/ds.obj: external/ds.c
|
||||
|
||||
210
doc/index.html
210
doc/index.html
@@ -24,7 +24,7 @@
|
||||
<a href="#Mw_Constants_h__MwDEFAULT">MwDEFAULT</a>
|
||||
</dd>
|
||||
<dd>
|
||||
<a href="#Mw_Constants_h__enum_">enum;</a>
|
||||
<a href="#Mw_Constants_h__MwDIRECTORY_TYPE">MwDIRECTORY_TYPE</a>
|
||||
</dd>
|
||||
<dd>
|
||||
<a href="#Mw_Constants_h__MwMB_ICONMASK">MwMB_ICONMASK</a>
|
||||
@@ -299,6 +299,15 @@
|
||||
<dt>
|
||||
<a href="#Mw_Milsko_h">Mw/Milsko.h</a>
|
||||
</dt>
|
||||
<dt>
|
||||
<a href="#Mw_String_h">Mw/String.h</a>
|
||||
</dt>
|
||||
<dd>
|
||||
<a href="#Mw_String_h__MwStringDupliacte">MwStringDupliacte</a>
|
||||
</dd>
|
||||
<dd>
|
||||
<a href="#Mw_String_h__MwStringConcat">MwStringConcat</a>
|
||||
</dd>
|
||||
<dt>
|
||||
<a href="#Mw_StringDefs_h">Mw/StringDefs.h</a>
|
||||
</dt>
|
||||
@@ -368,12 +377,21 @@
|
||||
<dd>
|
||||
<a href="#Mw_Widget_ListBox_h__MwListBoxInsertMultiple">MwListBoxInsertMultiple</a>
|
||||
</dd>
|
||||
<dd>
|
||||
<a href="#Mw_Widget_ListBox_h__MwListBoxVaInsert">MwListBoxVaInsert</a>
|
||||
</dd>
|
||||
<dd>
|
||||
<a href="#Mw_Widget_ListBox_h__MwListBoxVaInsertMultiple">MwListBoxVaInsertMultiple</a>
|
||||
</dd>
|
||||
<dd>
|
||||
<a href="#Mw_Widget_ListBox_h__MwListBoxDelete">MwListBoxDelete</a>
|
||||
</dd>
|
||||
<dd>
|
||||
<a href="#Mw_Widget_ListBox_h__MwListBoxGet">MwListBoxGet</a>
|
||||
</dd>
|
||||
<dd>
|
||||
<a href="#Mw_Widget_ListBox_h__MwListBoxSetWidth">MwListBoxSetWidth</a>
|
||||
</dd>
|
||||
<dt>
|
||||
<a href="#Mw_Widget_Menu_h">Mw/Widget/Menu.h</a>
|
||||
</dt>
|
||||
@@ -537,7 +555,7 @@
|
||||
</dd>
|
||||
</dl>
|
||||
<hr>
|
||||
<pre id="Mw_Constants_h__enum_"><B><FONT COLOR="#228B22">enum</FONT></B>;</pre>
|
||||
<pre id="Mw_Constants_h__MwDIRECTORY_TYPE"><B><FONT COLOR="#228B22">enum</FONT></B> MwDIRECTORY_TYPE;</pre>
|
||||
<dl>
|
||||
<dd>
|
||||
Directory entry type.
|
||||
@@ -2258,6 +2276,62 @@
|
||||
</dt>
|
||||
</dl>
|
||||
<hr>
|
||||
<h2 align="center" id="Mw_String_h">Mw/String.h</h2>
|
||||
<dl>
|
||||
<dt>
|
||||
String utilities.
|
||||
</dt>
|
||||
</dl>
|
||||
<hr>
|
||||
<pre id="Mw_String_h__MwStringDupliacte">MWDECL <B><FONT COLOR="#228B22">char</FONT></B>* <B><FONT COLOR="#0000FF">MwStringDupliacte</FONT></B> (
|
||||
<B><FONT COLOR="#228B22">const</FONT></B> <B><FONT COLOR="#228B22">char</FONT></B>* str
|
||||
);</pre>
|
||||
<dl>
|
||||
<dd>
|
||||
Duplicates a string.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>str</code>
|
||||
</dt>
|
||||
<dd>
|
||||
String.
|
||||
</dd>
|
||||
<dt>
|
||||
Returns
|
||||
</dt>
|
||||
<dd>
|
||||
String.
|
||||
</dd>
|
||||
</dl>
|
||||
<hr>
|
||||
<pre id="Mw_String_h__MwStringConcat">MWDECL <B><FONT COLOR="#228B22">char</FONT></B>* <B><FONT COLOR="#0000FF">MwStringConcat</FONT></B> (
|
||||
<B><FONT COLOR="#228B22">const</FONT></B> <B><FONT COLOR="#228B22">char</FONT></B>* str1,
|
||||
<B><FONT COLOR="#228B22">const</FONT></B> <B><FONT COLOR="#228B22">char</FONT></B>* str2
|
||||
);</pre>
|
||||
<dl>
|
||||
<dd>
|
||||
Concatenates 2 strings.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>str1</code>
|
||||
</dt>
|
||||
<dd>
|
||||
String.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>str2</code>
|
||||
</dt>
|
||||
<dd>
|
||||
String.
|
||||
</dd>
|
||||
<dt>
|
||||
Returns
|
||||
</dt>
|
||||
<dd>
|
||||
String.
|
||||
</dd>
|
||||
</dl>
|
||||
<hr>
|
||||
<h2 align="center" id="Mw_StringDefs_h">Mw/StringDefs.h</h2>
|
||||
<dl>
|
||||
<dt>
|
||||
@@ -2446,8 +2520,8 @@
|
||||
<pre id="Mw_Widget_ListBox_h__MwListBoxInsert">MWDECL <B><FONT COLOR="#228B22">void</FONT></B> <B><FONT COLOR="#0000FF">MwListBoxInsert</FONT></B> (
|
||||
MwWidget handle,
|
||||
<B><FONT COLOR="#228B22">int</FONT></B> index,
|
||||
<B><FONT COLOR="#228B22">const</FONT></B> <B><FONT COLOR="#228B22">char</FONT></B>* text,
|
||||
MwLLPixmap pixmap
|
||||
MwLLPixmap pixmap,
|
||||
...
|
||||
);</pre>
|
||||
<dl>
|
||||
<dd>
|
||||
@@ -2465,26 +2539,26 @@
|
||||
<dd>
|
||||
Index.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>text</code>
|
||||
</dt>
|
||||
<dd>
|
||||
Text.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>pixmap</code>
|
||||
</dt>
|
||||
<dd>
|
||||
Pixmap.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>...</code>
|
||||
</dt>
|
||||
<dd>
|
||||
Text.
|
||||
</dd>
|
||||
</dl>
|
||||
<hr>
|
||||
<pre id="Mw_Widget_ListBox_h__MwListBoxInsertMultiple">MWDECL <B><FONT COLOR="#228B22">void</FONT></B> <B><FONT COLOR="#0000FF">MwListBoxInsertMultiple</FONT></B> (
|
||||
MwWidget handle,
|
||||
<B><FONT COLOR="#228B22">int</FONT></B> index,
|
||||
<B><FONT COLOR="#228B22">char</FONT></B>** text,
|
||||
<B><FONT COLOR="#228B22">int</FONT></B> count,
|
||||
MwLLPixmap* pixmap,
|
||||
<B><FONT COLOR="#228B22">int</FONT></B> count
|
||||
...
|
||||
);</pre>
|
||||
<dl>
|
||||
<dd>
|
||||
@@ -2503,10 +2577,10 @@
|
||||
Index.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>text</code>
|
||||
Parameter <code>count</code>
|
||||
</dt>
|
||||
<dd>
|
||||
Text.
|
||||
Count.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>pixmap</code>
|
||||
@@ -2514,12 +2588,91 @@
|
||||
<dd>
|
||||
Pixmap.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>...</code>
|
||||
</dt>
|
||||
<dd>
|
||||
Text.
|
||||
</dd>
|
||||
</dl>
|
||||
<hr>
|
||||
<pre id="Mw_Widget_ListBox_h__MwListBoxVaInsert">MWDECL <B><FONT COLOR="#228B22">void</FONT></B> <B><FONT COLOR="#0000FF">MwListBoxVaInsert</FONT></B> (
|
||||
MwWidget handle,
|
||||
<B><FONT COLOR="#228B22">int</FONT></B> index,
|
||||
MwLLPixmap pixmap,
|
||||
va_list va
|
||||
);</pre>
|
||||
<dl>
|
||||
<dd>
|
||||
Inserts item on the listbox.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>handle</code>
|
||||
</dt>
|
||||
<dd>
|
||||
Widget.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>index</code>
|
||||
</dt>
|
||||
<dd>
|
||||
Index.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>pixmap</code>
|
||||
</dt>
|
||||
<dd>
|
||||
Pixmap.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>va</code>
|
||||
</dt>
|
||||
<dd>
|
||||
Text.
|
||||
</dd>
|
||||
</dl>
|
||||
<hr>
|
||||
<pre id="Mw_Widget_ListBox_h__MwListBoxVaInsertMultiple">MWDECL <B><FONT COLOR="#228B22">void</FONT></B> <B><FONT COLOR="#0000FF">MwListBoxVaInsertMultiple</FONT></B> (
|
||||
MwWidget handle,
|
||||
<B><FONT COLOR="#228B22">int</FONT></B> index,
|
||||
<B><FONT COLOR="#228B22">int</FONT></B> count,
|
||||
MwLLPixmap* pixmap,
|
||||
va_list va
|
||||
);</pre>
|
||||
<dl>
|
||||
<dd>
|
||||
Inserts multiple items on the listbox.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>handle</code>
|
||||
</dt>
|
||||
<dd>
|
||||
Widget.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>index</code>
|
||||
</dt>
|
||||
<dd>
|
||||
Index.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>count</code>
|
||||
</dt>
|
||||
<dd>
|
||||
Count.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>pixmap</code>
|
||||
</dt>
|
||||
<dd>
|
||||
Pixmap.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>va</code>
|
||||
</dt>
|
||||
<dd>
|
||||
Text.
|
||||
</dd>
|
||||
</dl>
|
||||
<hr>
|
||||
<pre id="Mw_Widget_ListBox_h__MwListBoxDelete">MWDECL <B><FONT COLOR="#228B22">void</FONT></B> <B><FONT COLOR="#0000FF">MwListBoxDelete</FONT></B> (
|
||||
@@ -2572,6 +2725,35 @@
|
||||
</dd>
|
||||
</dl>
|
||||
<hr>
|
||||
<pre id="Mw_Widget_ListBox_h__MwListBoxSetWidth">MWDECL <B><FONT COLOR="#228B22">void</FONT></B> <B><FONT COLOR="#0000FF">MwListBoxSetWidth</FONT></B> (
|
||||
MwWidget handle,
|
||||
<B><FONT COLOR="#228B22">int</FONT></B> index,
|
||||
<B><FONT COLOR="#228B22">int</FONT></B> width
|
||||
);</pre>
|
||||
<dl>
|
||||
<dd>
|
||||
Sets an item width of the listbox.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>handle</code>
|
||||
</dt>
|
||||
<dd>
|
||||
Widget.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>index</code>
|
||||
</dt>
|
||||
<dd>
|
||||
Column index.
|
||||
</dd>
|
||||
<dt>
|
||||
Parameter <code>width</code>
|
||||
</dt>
|
||||
<dd>
|
||||
Width.
|
||||
</dd>
|
||||
</dl>
|
||||
<hr>
|
||||
<h2 align="center" id="Mw_Widget_Menu_h">Mw/Widget/Menu.h</h2>
|
||||
<dl>
|
||||
<dt>
|
||||
|
||||
@@ -25,13 +25,29 @@ void activate(MwWidget handle, void* user, void* call) {
|
||||
|
||||
int main() {
|
||||
MwWidget lb;
|
||||
int len = sizeof(harvard) / sizeof(harvard[0]) - 1;
|
||||
char** list = malloc(sizeof(*list) * len);
|
||||
int i;
|
||||
wmain = MwVaCreateWidget(MwWindowClass, "main", NULL, MwDEFAULT, MwDEFAULT, 640, 480,
|
||||
MwNtitle, "listbox",
|
||||
NULL);
|
||||
lb = MwCreateWidget(MwListBoxClass, "listbox", wmain, 5, 5, 630, 470);
|
||||
|
||||
for(i = 0; i < len; i++) {
|
||||
list[i] = malloc(16);
|
||||
sprintf(list[i], "%d", (int)strlen(harvard[i]));
|
||||
}
|
||||
|
||||
MwAddUserHandler(lb, MwNactivateHandler, activate, NULL);
|
||||
MwListBoxInsertMultiple(lb, -1, (char**)harvard, NULL, sizeof(harvard) / sizeof(harvard[0]) - 1);
|
||||
MwListBoxInsert(lb, -1, NULL, "Harvard sentences", "Length", NULL);
|
||||
MwListBoxInsertMultiple(lb, -1, len, NULL, (char**)harvard, (char**)list, NULL);
|
||||
MwVaApply(lb,
|
||||
MwNhasHeading, 1,
|
||||
NULL);
|
||||
MwListBoxSetWidth(lb, 0, -64);
|
||||
|
||||
for(i = 0; i < len; i++) free(list[i]);
|
||||
free(list);
|
||||
|
||||
MwLoop(wmain);
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ enum MwALIGNMENT {
|
||||
/*!
|
||||
* %brief Directory entry type
|
||||
*/
|
||||
enum {
|
||||
enum MwDIRECTORY_TYPE {
|
||||
MwDIRECTORY_FILE = 0,
|
||||
MwDIRECTORY_DIRECTORY
|
||||
};
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#define MwNbold "Ibold"
|
||||
#define MwNmain "Imain"
|
||||
#define MwNleftPadding "IleftPadding"
|
||||
#define MwNhasHeading "IhasHeading"
|
||||
|
||||
#define MwNtitle "Stitle"
|
||||
#define MwNtext "Stext"
|
||||
|
||||
@@ -121,7 +121,7 @@ struct _MwViewport {
|
||||
};
|
||||
|
||||
struct _MwListBoxEntry {
|
||||
char* name;
|
||||
char** name;
|
||||
MwLLPixmap pixmap;
|
||||
};
|
||||
|
||||
@@ -132,6 +132,7 @@ struct _MwListBox {
|
||||
int selected;
|
||||
unsigned long click_time;
|
||||
int pressed;
|
||||
int* width;
|
||||
};
|
||||
|
||||
struct _MwSizeHints {
|
||||
|
||||
@@ -23,20 +23,39 @@ MWDECL MwClass MwListBoxClass;
|
||||
* %brief Inserts item on the listbox
|
||||
* %param handle Widget
|
||||
* %param index Index
|
||||
* %param text Text
|
||||
* %param pixmap Pixmap
|
||||
* %param ... Text
|
||||
*/
|
||||
MWDECL void MwListBoxInsert(MwWidget handle, int index, const char* text, MwLLPixmap pixmap);
|
||||
MWDECL void MwListBoxInsert(MwWidget handle, int index, MwLLPixmap pixmap, ...); /* VA_HINT:pixmap */
|
||||
|
||||
/*!
|
||||
* %brief Inserts multiple items on the listbox
|
||||
* %param handle Widget
|
||||
* %param index Index
|
||||
* %param text Text
|
||||
* %param pixmap Pixmap
|
||||
* %param count Count
|
||||
* %param pixmap Pixmap
|
||||
* %param ... Text
|
||||
*/
|
||||
MWDECL void MwListBoxInsertMultiple(MwWidget handle, int index, char** text, MwLLPixmap* pixmap, int count);
|
||||
MWDECL void MwListBoxInsertMultiple(MwWidget handle, int index, int count, MwLLPixmap* pixmap, ...); /* VA_HINT:pixmap */
|
||||
|
||||
/*!
|
||||
* %brief Inserts item on the listbox
|
||||
* %param handle Widget
|
||||
* %param index Index
|
||||
* %param pixmap Pixmap
|
||||
* %param va Text
|
||||
*/
|
||||
MWDECL void MwListBoxVaInsert(MwWidget handle, int index, MwLLPixmap pixmap, va_list va);
|
||||
|
||||
/*!
|
||||
* %brief Inserts multiple items on the listbox
|
||||
* %param handle Widget
|
||||
* %param index Index
|
||||
* %param count Count
|
||||
* %param pixmap Pixmap
|
||||
* %param va Text
|
||||
*/
|
||||
MWDECL void MwListBoxVaInsertMultiple(MwWidget handle, int index, int count, MwLLPixmap* pixmap, va_list va);
|
||||
|
||||
/*!
|
||||
* %brief Deletes item from the listbox
|
||||
@@ -53,6 +72,14 @@ MWDECL void MwListBoxDelete(MwWidget handle, int index);
|
||||
*/
|
||||
MWDECL const char* MwListBoxGet(MwWidget handle, int index);
|
||||
|
||||
/*!
|
||||
* %brief Sets an item width of the listbox
|
||||
* %param handle Widget
|
||||
* %param index Column index
|
||||
* %param width Width
|
||||
*/
|
||||
MWDECL void MwListBoxSetWidth(MwWidget handle, int index, int width);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -33,6 +33,7 @@ class Base {
|
||||
|
||||
/* END AUTOGENERATE */
|
||||
|
||||
Base(void);
|
||||
Base(MwClass widget_class, const char* widget_name, MwOO::Base* parent, int x, int y, int w, int h);
|
||||
Base(MwWidget widget, int gc = 0);
|
||||
~Base(void);
|
||||
|
||||
@@ -8,10 +8,13 @@ namespace MwOO {
|
||||
class ListBox : public MwOO::Base {
|
||||
public:
|
||||
ListBox(const char* widget_name, MwOO::Base* parent, int x, int y, int w, int h);
|
||||
void Insert(int index, const char* text, MwLLPixmap pixmap);
|
||||
void InsertMultiple(int index, char** text, MwLLPixmap* pixmap, int count);
|
||||
void Insert(int index, MwLLPixmap pixmap, ...);
|
||||
void InsertMultiple(int index, int count, MwLLPixmap* pixmap, ...);
|
||||
void VaInsert(int index, MwLLPixmap pixmap, va_list va);
|
||||
void VaInsertMultiple(int index, int count, MwLLPixmap* pixmap, va_list va);
|
||||
void Delete(int index);
|
||||
const char* Get(int index);
|
||||
void SetWidth(int index, int width);
|
||||
void SetLeftPadding(int value);
|
||||
int GetLeftPadding(void);
|
||||
void SetBackground(const char* value);
|
||||
|
||||
@@ -15,6 +15,11 @@ MwOO::Base::Base(MwWidget widget, int gc){
|
||||
this->SetHandler();
|
||||
}
|
||||
|
||||
MwOO::Base::Base(void){
|
||||
this->widget = NULL;
|
||||
this->can_be_gc = 0;
|
||||
}
|
||||
|
||||
MwOO::Base::~Base(void){
|
||||
if(this->can_be_gc) MwDestroyWidget(this->widget);
|
||||
}
|
||||
|
||||
@@ -5,18 +5,42 @@
|
||||
MwOO::ListBox::ListBox(const char* widget_name, MwOO::Base* parent, int x, int y, int w, int h) : MwOO::Base(MwListBoxClass, widget_name, parent, x, y, w, h){
|
||||
}
|
||||
|
||||
void MwOO::ListBox::Insert(int index, const char* text, MwLLPixmap pixmap){
|
||||
MwListBoxInsert(this->widget, index, text, pixmap);
|
||||
void MwOO::ListBox::Insert(int index, MwLLPixmap pixmap, ...){
|
||||
va_list va;
|
||||
va_start(va, pixmap);
|
||||
MwListBoxVaInsert(this->widget, index, pixmap, va);
|
||||
va_end(va);
|
||||
}
|
||||
void MwOO::ListBox::InsertMultiple(int index, char** text, MwLLPixmap* pixmap, int count){
|
||||
MwListBoxInsertMultiple(this->widget, index, text, pixmap, count);
|
||||
|
||||
void MwOO::ListBox::InsertMultiple(int index, int count, MwLLPixmap* pixmap, ...){
|
||||
va_list va;
|
||||
va_start(va, pixmap);
|
||||
MwListBoxVaInsertMultiple(this->widget, index, count, pixmap, va);
|
||||
va_end(va);
|
||||
}
|
||||
|
||||
void MwOO::ListBox::VaInsert(int index, MwLLPixmap pixmap, va_list va){
|
||||
MwListBoxVaInsert(this->widget, index, pixmap, va);
|
||||
}
|
||||
|
||||
void MwOO::ListBox::VaInsertMultiple(int index, int count, MwLLPixmap* pixmap, va_list va){
|
||||
MwListBoxVaInsertMultiple(this->widget, index, count, pixmap, va);
|
||||
}
|
||||
|
||||
void MwOO::ListBox::Delete(int index){
|
||||
MwListBoxDelete(this->widget, index);
|
||||
}
|
||||
|
||||
const char* MwOO::ListBox::Get(int index){
|
||||
return MwListBoxGet(this->widget, index);
|
||||
const char* ret;
|
||||
ret = MwListBoxGet(this->widget, index);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void MwOO::ListBox::SetWidth(int index, int width){
|
||||
MwListBoxSetWidth(this->widget, index, width);
|
||||
}
|
||||
|
||||
void MwOO::ListBox::SetLeftPadding(int value){
|
||||
MwSetInteger(this->widget, MwNleftPadding, value);
|
||||
}
|
||||
|
||||
@@ -6,8 +6,11 @@ MwOO::Menu::Menu(const char* widget_name, MwOO::Base* parent, int x, int y, int
|
||||
}
|
||||
|
||||
MwMenu MwOO::Menu::Add(MwMenu menu, const char* name){
|
||||
return MwMenuAdd(this->widget, menu, name);
|
||||
MwMenu ret;
|
||||
ret = MwMenuAdd(this->widget, menu, name);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void MwOO::Menu::SetBackground(const char* value){
|
||||
MwSetText(this->widget, MwNbackground, value);
|
||||
}
|
||||
|
||||
@@ -8,12 +8,17 @@ MwOO::OpenGL::OpenGL(const char* widget_name, MwOO::Base* parent, int x, int y,
|
||||
void MwOO::OpenGL::MakeCurrent(void){
|
||||
MwOpenGLMakeCurrent(this->widget);
|
||||
}
|
||||
|
||||
void* MwOO::OpenGL::GetProcAddress(const char* name){
|
||||
return MwOpenGLGetProcAddress(this->widget, name);
|
||||
void* ret;
|
||||
ret = MwOpenGLGetProcAddress(this->widget, name);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void MwOO::OpenGL::SwapBuffer(void){
|
||||
MwOpenGLSwapBuffer(this->widget);
|
||||
}
|
||||
|
||||
void MwOO::OpenGL::SetBackground(const char* value){
|
||||
MwSetText(this->widget, MwNbackground, value);
|
||||
}
|
||||
|
||||
@@ -6,8 +6,11 @@ MwOO::ScrollBar::ScrollBar(const char* widget_name, MwOO::Base* parent, int x, i
|
||||
}
|
||||
|
||||
int MwOO::ScrollBar::GetVisibleLength(void){
|
||||
return MwScrollBarGetVisibleLength(this->widget);
|
||||
int ret;
|
||||
ret = MwScrollBarGetVisibleLength(this->widget);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void MwOO::ScrollBar::SetAreaShown(int value){
|
||||
MwSetInteger(this->widget, MwNareaShown, value);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ MwOO::SubMenu::SubMenu(const char* widget_name, MwOO::Base* parent, int x, int y
|
||||
void MwOO::SubMenu::Appear(MwMenu menu, MwPoint* point){
|
||||
MwSubMenuAppear(this->widget, menu, point);
|
||||
}
|
||||
|
||||
void MwOO::SubMenu::SetBackground(const char* value){
|
||||
MwSetText(this->widget, MwNbackground, value);
|
||||
}
|
||||
|
||||
@@ -6,11 +6,15 @@ MwOO::Viewport::Viewport(const char* widget_name, MwOO::Base* parent, int x, int
|
||||
}
|
||||
|
||||
MwOO::Base MwOO::Viewport::GetViewport(void){
|
||||
return MwOO::Base(MwViewportGetViewport(this->widget));
|
||||
MwOO::Base ret;
|
||||
ret = MwOO::Base(MwViewportGetViewport(this->widget));
|
||||
return ret;
|
||||
}
|
||||
|
||||
void MwOO::Viewport::SetSize(int w, int h){
|
||||
MwViewportSetSize(this->widget, w, h);
|
||||
}
|
||||
|
||||
void MwOO::Viewport::SetBackground(const char* value){
|
||||
MwSetText(this->widget, MwNbackground, value);
|
||||
}
|
||||
|
||||
@@ -8,18 +8,27 @@ MwOO::Vulkan::Vulkan(const char* widget_name, MwOO::Base* parent, int x, int y,
|
||||
void MwOO::Vulkan::EnableExtension(void){
|
||||
MwVulkanEnableExtension(this->widget);
|
||||
}
|
||||
|
||||
void MwOO::Vulkan::EnableLayer(void){
|
||||
MwVulkanEnableLayer(this->widget);
|
||||
}
|
||||
|
||||
void MwOO::Vulkan::Configure(void){
|
||||
MwVulkanConfigure(this->widget);
|
||||
}
|
||||
|
||||
void* MwOO::Vulkan::GetField(MwVulkanField field, MwErrorEnum* out){
|
||||
return MwVulkanGetField(this->widget, field, out);
|
||||
void* ret;
|
||||
ret = MwVulkanGetField(this->widget, field, out);
|
||||
return ret;
|
||||
}
|
||||
|
||||
VkBool32 MwOO::Vulkan::Supported(void){
|
||||
return MwVulkanSupported(this->widget);
|
||||
VkBool32 ret;
|
||||
ret = MwVulkanSupported(this->widget);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void MwOO::Vulkan::SetBackground(const char* value){
|
||||
MwSetText(this->widget, MwNbackground, value);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ MwOO::Window::Window(const char* widget_name, MwOO::Base* parent, int x, int y,
|
||||
void MwOO::Window::MakeBorderless(int toggle){
|
||||
MwWindowMakeBorderless(this->widget, toggle);
|
||||
}
|
||||
|
||||
void MwOO::Window::SetTitle(const char* value){
|
||||
MwSetText(this->widget, MwNtitle, value);
|
||||
}
|
||||
|
||||
@@ -3,15 +3,54 @@
|
||||
|
||||
#include "../../external/stb_ds.h"
|
||||
|
||||
static int get_first_entry(MwListBox lb) {
|
||||
static int get_first_entry(MwWidget handle, MwListBox lb) {
|
||||
int st = 0;
|
||||
int y = MwGetInteger(handle, MwNhasHeading) ? 1 : 0;
|
||||
|
||||
st = MwGetInteger(lb->vscroll, MwNvalue);
|
||||
st = st * (MwGetInteger(lb->vscroll, MwNmaxValue) - MwGetInteger(lb->vscroll, MwNareaShown)) / MwGetInteger(lb->vscroll, MwNmaxValue);
|
||||
if(st < 0) st = 0;
|
||||
if(st < y) st = y;
|
||||
|
||||
return st;
|
||||
}
|
||||
|
||||
static int get_col_width(MwListBox lb, int ind) {
|
||||
int total = MwGetInteger(lb->frame, MwNwidth);
|
||||
int wid, i;
|
||||
if(arrlen(lb->width) <= ind) {
|
||||
wid = 0;
|
||||
} else {
|
||||
wid = lb->width[ind];
|
||||
}
|
||||
if(wid > 0) return wid;
|
||||
|
||||
if(wid == 0) {
|
||||
for(i = 0; i < arrlen(lb->width) && i < ind; i++) {
|
||||
int w = lb->width[i];
|
||||
if(w < 0) {
|
||||
total -= total + w;
|
||||
} else if(wid > 0) {
|
||||
total -= w;
|
||||
}
|
||||
}
|
||||
return total;
|
||||
}
|
||||
|
||||
if(wid < 0) {
|
||||
for(i = 0; i < arrlen(lb->width) && i < ind; i++) {
|
||||
int w = lb->width[i];
|
||||
if(w < 0) {
|
||||
total -= total + w;
|
||||
} else if(wid > 0) {
|
||||
total -= w;
|
||||
}
|
||||
}
|
||||
return total + wid;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void vscroll_changed(MwWidget handle, void* user, void* call) {
|
||||
MwListBox lb = handle->parent->internal;
|
||||
|
||||
@@ -33,7 +72,7 @@ static void frame_mouse_down(MwWidget handle, void* user, void* call) {
|
||||
int y = MwDefaultBorderWidth;
|
||||
int h = MwGetInteger(handle, MwNheight);
|
||||
|
||||
st = get_first_entry(lb);
|
||||
st = get_first_entry(handle->parent, lb);
|
||||
for(i = 0; i < (h - MwDefaultBorderWidth * 2) / MwTextHeight(handle, "M"); i++) {
|
||||
if(y <= m->point.y && m->point.y <= (y + MwTextHeight(handle, "M"))) {
|
||||
unsigned long t;
|
||||
@@ -74,7 +113,7 @@ static void frame_mouse_move(MwWidget handle, void* user, void* call) {
|
||||
int y = MwDefaultBorderWidth;
|
||||
int h = MwGetInteger(handle, MwNheight);
|
||||
|
||||
st = get_first_entry(lb);
|
||||
st = get_first_entry(handle->parent, lb);
|
||||
for(i = 0; i < (h - MwDefaultBorderWidth * 2) / MwTextHeight(handle, "M"); i++) {
|
||||
if(y <= p->y && p->y <= (y + MwTextHeight(handle, "M"))) {
|
||||
lb->selected = st + i;
|
||||
@@ -103,17 +142,18 @@ static void frame_draw(MwWidget handle) {
|
||||
p.x = MwDefaultBorderWidth + MwGetInteger(handle->parent, MwNleftPadding);
|
||||
p.y = MwDefaultBorderWidth;
|
||||
|
||||
st = get_first_entry(lb);
|
||||
st = get_first_entry(handle->parent, lb);
|
||||
|
||||
for(i = st; i < arrlen(lb->list) && i < st + (r.height - MwDefaultBorderWidth * 2) / MwTextHeight(handle, "M"); i++) {
|
||||
int selected = lb->selected == i ? 1 : 0;
|
||||
int j;
|
||||
|
||||
if(selected) {
|
||||
MwRect r2;
|
||||
r2.x = 0;
|
||||
r2.y = p.y;
|
||||
r2.width = r.width;
|
||||
r2.height = MwTextHeight(handle, lb->list[i].name);
|
||||
r2.height = MwTextHeight(handle, "M");
|
||||
MwDrawRect(handle, &r2, text);
|
||||
}
|
||||
if(lb->list[i].pixmap != NULL) {
|
||||
@@ -125,9 +165,14 @@ static void frame_draw(MwWidget handle) {
|
||||
r2.height = h;
|
||||
MwLLDrawPixmap(handle->lowlevel, &r2, lb->list[i].pixmap);
|
||||
}
|
||||
p.y += MwTextHeight(handle, lb->list[i].name) / 2;
|
||||
MwDrawText(handle, &p, lb->list[i].name, 0, MwALIGNMENT_BEGINNING, selected ? base : text);
|
||||
p.y += MwTextHeight(handle, lb->list[i].name) / 2;
|
||||
p.y += MwTextHeight(handle, "M") / 2;
|
||||
p.x = 0;
|
||||
for(j = 0; j < arrlen(lb->list[i].name); j++) {
|
||||
p.x += MwDefaultBorderWidth;
|
||||
if(strlen(lb->list[i].name[j]) > 0) MwDrawText(handle, &p, lb->list[i].name[j], 0, MwALIGNMENT_BEGINNING, selected ? base : text);
|
||||
p.x += get_col_width(lb, j) - MwDefaultBorderWidth;
|
||||
}
|
||||
p.y += MwTextHeight(handle, "M") / 2;
|
||||
}
|
||||
|
||||
MwDrawFrame(handle, &r, base, 1);
|
||||
@@ -140,7 +185,10 @@ static void resize(MwWidget handle) {
|
||||
MwListBox lb = handle->internal;
|
||||
int w = MwGetInteger(handle, MwNwidth);
|
||||
int h = MwGetInteger(handle, MwNheight);
|
||||
int ih;
|
||||
int ih, y;
|
||||
|
||||
y = MwGetInteger(handle, MwNhasHeading) ? (MwTextHeight(handle, "M") + MwDefaultBorderWidth * 2) : 0;
|
||||
|
||||
if(lb->vscroll == NULL) {
|
||||
lb->vscroll = MwVaCreateWidget(MwScrollBarClass, "vscroll", handle, w - 16, 0, 16, h, NULL);
|
||||
MwAddUserHandler(lb->vscroll, MwNchangedHandler, vscroll_changed, NULL);
|
||||
@@ -152,8 +200,10 @@ static void resize(MwWidget handle) {
|
||||
MwNheight, h,
|
||||
NULL);
|
||||
}
|
||||
|
||||
h -= y;
|
||||
if(lb->frame == NULL) {
|
||||
lb->frame = MwVaCreateWidget(MwFrameClass, "frame", handle, 0, 0, w - 16, h, NULL);
|
||||
lb->frame = MwVaCreateWidget(MwFrameClass, "frame", handle, 0, y, w - 16, h, NULL);
|
||||
lb->frame->draw_inject = frame_draw;
|
||||
MwAddUserHandler(lb->frame, MwNmouseDownHandler, frame_mouse_down, NULL);
|
||||
MwAddUserHandler(lb->frame, MwNmouseUpHandler, frame_mouse_up, NULL);
|
||||
@@ -161,11 +211,12 @@ static void resize(MwWidget handle) {
|
||||
} else {
|
||||
MwVaApply(lb->frame,
|
||||
MwNx, 0,
|
||||
MwNy, 0,
|
||||
MwNy, y,
|
||||
MwNwidth, w - 16,
|
||||
MwNheight, h,
|
||||
NULL);
|
||||
}
|
||||
h -= MwDefaultBorderWidth * 2;
|
||||
|
||||
ih = arrlen(lb->list);
|
||||
if(ih == 0) ih = 1;
|
||||
@@ -188,8 +239,10 @@ static int create(MwWidget handle) {
|
||||
lb->list = NULL;
|
||||
lb->selected = -1;
|
||||
lb->click_time = 0;
|
||||
lb->width = NULL;
|
||||
|
||||
MwSetInteger(handle, MwNleftPadding, 0);
|
||||
MwSetInteger(handle, MwNhasHeading, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -201,12 +254,15 @@ static void destroy(MwWidget handle) {
|
||||
free(lb->list[i].name);
|
||||
}
|
||||
arrfree(lb->list);
|
||||
arrfree(lb->width);
|
||||
free(handle->internal);
|
||||
}
|
||||
|
||||
static void draw(MwWidget handle) {
|
||||
MwRect r;
|
||||
MwLLColor base = MwParseColor(handle, MwGetText(handle, MwNbackground));
|
||||
MwLLColor text = MwParseColor(handle, MwGetText(handle, MwNforeground));
|
||||
MwListBox lb = handle->internal;
|
||||
|
||||
r.x = 0;
|
||||
r.y = 0;
|
||||
@@ -214,16 +270,43 @@ static void draw(MwWidget handle) {
|
||||
r.height = MwGetInteger(handle, MwNheight);
|
||||
|
||||
MwDrawRect(handle, &r, base);
|
||||
if(MwGetInteger(handle, MwNhasHeading) && arrlen(lb->list) > 0) {
|
||||
MwPoint p;
|
||||
int i;
|
||||
int x = 0;
|
||||
|
||||
r.width -= 16;
|
||||
|
||||
for(i = 0; i < arrlen(lb->list[0].name); i++) {
|
||||
r.x = x;
|
||||
r.y = 0;
|
||||
r.width = get_col_width(lb, i);
|
||||
r.height = MwDefaultBorderWidth * 2 + MwTextHeight(handle, "M");
|
||||
MwDrawFrame(handle, &r, base, 0);
|
||||
|
||||
x += MwDefaultBorderWidth;
|
||||
|
||||
p.x = x;
|
||||
p.y = r.y + r.height / 2;
|
||||
MwDrawText(handle, &p, lb->list[0].name[i], 0, MwALIGNMENT_BEGINNING, text);
|
||||
|
||||
x += r.width + MwDefaultBorderWidth;
|
||||
}
|
||||
}
|
||||
|
||||
MwLLFreeColor(text);
|
||||
MwLLFreeColor(base);
|
||||
}
|
||||
|
||||
static void prop_change(MwWidget handle, const char* prop) {
|
||||
if(strcmp(prop, MwNwidth) == 0 || strcmp(prop, MwNheight) == 0) resize(handle);
|
||||
if(strcmp(prop, MwNwidth) == 0 || strcmp(prop, MwNheight) == 0 || strcmp(prop, MwNhasHeading) == 0) resize(handle);
|
||||
if(strcmp(prop, MwNleftPadding) == 0) {
|
||||
MwListBox lb = handle->internal;
|
||||
MwForceRender(lb->frame);
|
||||
}
|
||||
if(strcmp(prop, MwNhasHeading) == 0) {
|
||||
MwForceRender(handle);
|
||||
}
|
||||
}
|
||||
|
||||
MwClassRec MwListBoxClassRec = {
|
||||
@@ -244,11 +327,16 @@ MwClassRec MwListBoxClassRec = {
|
||||
NULL};
|
||||
MwClass MwListBoxClass = &MwListBoxClassRec;
|
||||
|
||||
void MwListBoxInsert(MwWidget handle, int index, const char* text, MwLLPixmap pixmap) {
|
||||
void MwListBoxVaInsert(MwWidget handle, int index, MwLLPixmap pixmap, va_list va) {
|
||||
MwListBox lb = handle->internal;
|
||||
MwListBoxEntry entry;
|
||||
char* name;
|
||||
|
||||
entry.name = MwStringDupliacte(text);
|
||||
entry.name = NULL;
|
||||
while((name = va_arg(va, char*)) != NULL) {
|
||||
name = MwStringDupliacte(name);
|
||||
arrput(entry.name, name);
|
||||
}
|
||||
|
||||
entry.pixmap = pixmap;
|
||||
|
||||
@@ -261,17 +349,30 @@ void MwListBoxInsert(MwWidget handle, int index, const char* text, MwLLPixmap pi
|
||||
}
|
||||
}
|
||||
|
||||
void MwListBoxInsertMultiple(MwWidget handle, int index, char** text, MwLLPixmap* pixmap, int count) {
|
||||
void MwListBoxVaInsertMultiple(MwWidget handle, int index, int count, MwLLPixmap* pixmap, va_list va) {
|
||||
int i;
|
||||
MwListBox lb = handle->internal;
|
||||
int old;
|
||||
char*** vlist = NULL;
|
||||
char** list;
|
||||
if(index == -1) index = arrlen(lb->list);
|
||||
old = index;
|
||||
|
||||
while((list = va_arg(va, char**)) != NULL) {
|
||||
arrput(vlist, list);
|
||||
}
|
||||
|
||||
for(i = 0; i < count; i++) {
|
||||
MwListBoxEntry entry;
|
||||
char* name;
|
||||
int j;
|
||||
|
||||
entry.name = MwStringDupliacte(text[i]);
|
||||
entry.name = NULL;
|
||||
for(j = 0; j < arrlen(vlist); j++) {
|
||||
if(vlist[j][i] == NULL) continue;
|
||||
name = MwStringDupliacte(vlist[j][i]);
|
||||
arrput(entry.name, name);
|
||||
}
|
||||
|
||||
entry.pixmap = NULL;
|
||||
if(pixmap != NULL) entry.pixmap = pixmap[i];
|
||||
@@ -280,6 +381,8 @@ void MwListBoxInsertMultiple(MwWidget handle, int index, char** text, MwLLPixmap
|
||||
index++;
|
||||
}
|
||||
|
||||
arrfree(vlist);
|
||||
|
||||
resize(handle);
|
||||
if(old < (MwGetInteger(lb->vscroll, MwNvalue) + MwGetInteger(lb->vscroll, MwNareaShown))) {
|
||||
MwForceRender(lb->frame);
|
||||
@@ -288,9 +391,13 @@ void MwListBoxInsertMultiple(MwWidget handle, int index, char** text, MwLLPixmap
|
||||
|
||||
void MwListBoxDelete(MwWidget handle, int index) {
|
||||
MwListBox lb = handle->internal;
|
||||
int i;
|
||||
|
||||
if(index == -1) index = arrlen(lb->list) - 1;
|
||||
free(lb->list[index].name);
|
||||
for(i = 0; i < arrlen(lb->list[index].name); i++) {
|
||||
free(lb->list[index].name[i]);
|
||||
}
|
||||
arrfree(lb->list[index].name);
|
||||
arrdel(lb->list, index);
|
||||
|
||||
if(lb->selected >= arrlen(lb->list)) {
|
||||
@@ -306,11 +413,36 @@ void MwListBoxDelete(MwWidget handle, int index) {
|
||||
}
|
||||
}
|
||||
|
||||
void MwListBoxInsertMultiple(MwWidget handle, int index, int count, MwLLPixmap* pixmap, ...) {
|
||||
va_list va;
|
||||
va_start(va, pixmap);
|
||||
MwListBoxVaInsertMultiple(handle, index, count, pixmap, va);
|
||||
va_end(va);
|
||||
}
|
||||
|
||||
void MwListBoxInsert(MwWidget handle, int index, MwLLPixmap pixmap, ...) {
|
||||
va_list va;
|
||||
va_start(va, pixmap);
|
||||
MwListBoxVaInsert(handle, index, pixmap, va);
|
||||
va_end(va);
|
||||
}
|
||||
|
||||
const char* MwListBoxGet(MwWidget handle, int index) {
|
||||
MwListBox lb = handle->internal;
|
||||
|
||||
if(index < 0) return NULL;
|
||||
if(index >= arrlen(lb->list)) return NULL;
|
||||
|
||||
return lb->list[index].name;
|
||||
return lb->list[index].name[0];
|
||||
}
|
||||
|
||||
void MwListBoxSetWidth(MwWidget handle, int index, int width) {
|
||||
MwListBox lb = handle->internal;
|
||||
|
||||
while(((index + 1) - arrlen(lb->width)) > 0) arrput(lb->width, 0);
|
||||
|
||||
lb->width[index] = width;
|
||||
|
||||
MwForceRender(handle);
|
||||
MwForceRender(lb->frame);
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@ sub scan_dir {
|
||||
|
||||
$l =~ s/[ \t]+/ /g;
|
||||
$l =~ s/[ ]*(?:\\|,[ ]*)$//g;
|
||||
$l =~ s/[ ]*(?:;|\{.*)[ ]*$/;/g;
|
||||
$l =~ s/[ ]*(?:;( \/\*.+)?|\{.*)[ ]*$/;/g;
|
||||
if (!($l =~ /^#/)) {
|
||||
$l =~ s/\(([^\)]+)\)/arguments($1)/ge;
|
||||
}
|
||||
@@ -153,7 +153,7 @@ sub scan_dir {
|
||||
$sl =~ s/=.+$//g;
|
||||
$sl =~ s/^#[^ ]+(?:[ \t]+([^ \(]+)(?:.+$))?/\1/;
|
||||
$sl =~ s/^.+[ \t]+([^ ]+)[ \t]*\(.+\);?$/\1/g;
|
||||
$sl =~ s/^.+[ \t]+([^ ]+);$/\1/g;
|
||||
$sl =~ s/^.+[ \t]+([^ ]+);( \/\*.+)?$/\1/g;
|
||||
|
||||
$id = replace_special($current . "__" . $sl);
|
||||
$attr = " id=\"$id\"";
|
||||
|
||||
@@ -44,6 +44,7 @@ foreach my $f (@files) {
|
||||
my @props = ();
|
||||
my @methods = ();
|
||||
my @omethods = ();
|
||||
my @comments = ();
|
||||
my @names = ();
|
||||
my @args = ();
|
||||
|
||||
@@ -55,12 +56,13 @@ foreach my $f (@files) {
|
||||
@props = split(/[ \t]+/, $1);
|
||||
}
|
||||
elsif ($l =~
|
||||
/^MWDECL[ \t]+(.+)[ \t]+Mw${name}([^ \t]+)[ \t]*\([^,\)]+(?:,(.*))?\);$/
|
||||
/^MWDECL[ \t]+(.+)[ \t]+Mw${name}([^ \t]+)[ \t]*\([^,\)]+(?:,(.*))?\);(?: \/\*(.+))?$/
|
||||
)
|
||||
{
|
||||
my $arg = $3;
|
||||
my $ret = $1;
|
||||
my $nam = $2;
|
||||
my $com = $4;
|
||||
|
||||
$arg =~ s/^[ \t]+//;
|
||||
$arg =~ s/[ \t]+$//;
|
||||
@@ -72,6 +74,7 @@ foreach my $f (@files) {
|
||||
push(@methods, "$ret $nam($arg)");
|
||||
push(@omethods, "$ret MwOO::${name}::$nam($arg)");
|
||||
push(@names, $nam);
|
||||
push(@comments, $com);
|
||||
|
||||
my @al = split(/[ \t]*,[ \t]*/, $arg);
|
||||
my $i = 0;
|
||||
@@ -153,6 +156,7 @@ foreach my $f (@files) {
|
||||
my $i = 0;
|
||||
foreach my $m (@omethods) {
|
||||
my $end = "";
|
||||
my $suffix = "";
|
||||
if ($m =~ /^MwWidget[ \t]+/) {
|
||||
my $l = $m;
|
||||
$l =~ s/^MwWidget([ \t]+)/MwOO::Base\1/;
|
||||
@@ -161,23 +165,46 @@ foreach my $f (@files) {
|
||||
else {
|
||||
print(OUT "$m\{\n");
|
||||
}
|
||||
if ($args[$i] =~ /\.\.\./) {
|
||||
print(OUT " va_list va;\n");
|
||||
}
|
||||
if (!($m =~ /^void[ \t]+/)) {
|
||||
my $rettype = $m;
|
||||
$rettype =~ s/^MwWidget([ \t]+)/MwOO::Base\1/;
|
||||
$rettype =~ s/ MwOO::.+\)$//;
|
||||
print(OUT " $rettype ret;\n");
|
||||
}
|
||||
if ($args[$i] =~ /\.\.\./) {
|
||||
my $p = $comments[$i];
|
||||
$p =~ /VA_HINT:([^ ]+)/;
|
||||
print(OUT " va_start(va, $1);\n");
|
||||
$suffix = "Va";
|
||||
}
|
||||
if ($m =~ /^void[ \t]+/) {
|
||||
print(OUT " Mw${name}" . $names[$i]);
|
||||
print(OUT " Mw${name}$suffix" . $names[$i]);
|
||||
}
|
||||
elsif ($m =~ /^MwWidget[ \t]+/) {
|
||||
print(OUT " return MwOO::Base(Mw${name}" . $names[$i]);
|
||||
print(OUT " ret = MwOO::Base(Mw${name}$suffix" . $names[$i]);
|
||||
$end = ")";
|
||||
}
|
||||
else {
|
||||
print(OUT " return Mw${name}" . $names[$i]);
|
||||
print(OUT " ret = Mw${name}$suffix" . $names[$i]);
|
||||
}
|
||||
if ($args[$i] eq "void") {
|
||||
print(OUT "(this->widget)$end;\n");
|
||||
}
|
||||
else {
|
||||
print(OUT "(this->widget, " . $args[$i] . ")$end;\n");
|
||||
my $p = $args[$i];
|
||||
$p =~ s/\.\.\./va/;
|
||||
print(OUT "(this->widget, " . $p . ")$end;\n");
|
||||
}
|
||||
print(OUT "}\n");
|
||||
if ($args[$i] =~ /\.\.\./) {
|
||||
print(OUT " va_end(va);\n");
|
||||
}
|
||||
if (!($m =~ /^void[ \t]+/)) {
|
||||
print(OUT " return ret;\n");
|
||||
}
|
||||
print(OUT "}\n\n");
|
||||
$i++;
|
||||
}
|
||||
foreach my $prop (@props) {
|
||||
|
||||
Reference in New Issue
Block a user