[DEVELOPMENT ENVIRONMENT]

* NEW: Display cursor position inside editors, and not in the toolbar 
  anymore.

[GB.QT4]
* OPT: Do not trigger arrangement if setting the visibility of a control 
  has no effect.

[GB.QT4.EXT]
* NEW: Editor can display the cursor position inside itself.


git-svn-id: svn://localhost/gambas/trunk@3755 867c0c6c-44f3-4631-809d-bfa615b0a4ec
This commit is contained in:
Benoît Minisini 2011-04-12 12:49:16 +00:00
parent 1a223dc2f7
commit 0fd1a693dc
12 changed files with 154 additions and 163 deletions

View file

@ -290,11 +290,11 @@ msgstr ""
msgid "Provides"
msgstr ""
#: CInsertColor.class:103 FEditor.class:3687 FTextEditor.class:1011
#: CInsertColor.class:103 FEditor.class:3685 FTextEditor.class:995
msgid "Insert color"
msgstr ""
#: CModule.class:28 FCreateFile.class:652 FEditor.class:3652 FForm.class:3728
#: CModule.class:28 FCreateFile.class:652 FEditor.class:3650 FForm.class:3728
#: FInfo.class:89
msgid "Form"
msgstr ""
@ -393,7 +393,7 @@ msgid ""
"the value: &1"
msgstr ""
#: Design.module:387 FColorChooser.class:210 FCommit.class:380
#: Design.module:387 FColorChooser.class:210 FCommit.class:357
#: FConnectionEditor.class:433 FCreateFile.class:932 FFontChooser.class:79
#: FGotoLine.class:57 FList.class:331 FMain.class:1701 FMenu.class:1230
#: FNewConnection.class:573 FNewTable.class:159 FNewTranslation.class:64
@ -464,9 +464,9 @@ msgstr ""
msgid "Free"
msgstr ""
#: FColorChooser.class:216 FCommit.class:386 FConflict.class:191
#: FColorChooser.class:216 FCommit.class:363 FConflict.class:191
#: FConnectionEditor.class:284 FCreateFile.class:938 FDebugInfo.class:525
#: FEditor.class:2275 FFontChooser.class:85 FForm.class:2960
#: FEditor.class:2276 FFontChooser.class:85 FForm.class:2960
#: FGotoLine.class:63 FHelpBrowser.class:341 FIconEditor.class:1413
#: FImportTable.class:39 FList.class:155 FMain.class:200
#: FMakeInstall.class:326 FMenu.class:1235 FNewConnection.class:317
@ -476,7 +476,7 @@ msgstr ""
#: FReportBorderChooser.class:345 FReportBrushChooser.class:475
#: FReportCoordChooser.class:126 FSave.class:118 FSaveProjectAs.class:130
#: FSelectExtraFile.class:78 FSelectIcon.class:272 FSnippet.class:142
#: FTableChooser.class:144 FText.class:106 FTextEditor.class:475
#: FTableChooser.class:144 FText.class:106 FTextEditor.class:463
#: FTranslate.class:638 Project.module:412
msgid "Cancel"
msgstr ""
@ -485,100 +485,100 @@ msgstr ""
msgid "This line and the following will be ignored"
msgstr ""
#: FCommit.class:43
#: FCommit.class:44
msgid "Please enter the versioning user name"
msgstr ""
#: FCommit.class:61
#: FCommit.class:62
msgid "The project could not be committed."
msgstr ""
#: FCommit.class:181
#: FCommit.class:172
msgid "Project commit"
msgstr ""
#: FCommit.class:195 FMakeInstall.class:1315 FPropertyProject.class:1352
#: FCommit.class:186 FMakeInstall.class:1315 FPropertyProject.class:1352
msgid "Description"
msgstr ""
#: FCommit.class:200
#: FCommit.class:191
msgid "Commit description"
msgstr ""
#: FCommit.class:219
#: FCommit.class:210
msgid ""
"Some files are not versioned and should be added manually to the repository."
msgstr ""
#: FCommit.class:234 FConflict.class:325 FConnectionEditor.class:1874
#: FEditor.class:3485 FForm.class:3558 FIconEditor.class:2176
#: FCommit.class:225 FConflict.class:325 FConnectionEditor.class:1874
#: FEditor.class:3483 FForm.class:3558 FIconEditor.class:2176
#: FImageEditor.class:77 FMenu.class:971 FOutput.class:379
#: FTextEditor.class:784
#: FTextEditor.class:768
msgid "Cut"
msgstr ""
#: FCommit.class:240 FConflict.class:331 FConnectionEditor.class:1651
#: FEditor.class:3491 FForm.class:3565 FIconEditor.class:2184
#: FCommit.class:231 FConflict.class:331 FConnectionEditor.class:1651
#: FEditor.class:3489 FForm.class:3565 FIconEditor.class:2184
#: FImageEditor.class:86 FMenu.class:977 FOutput.class:386
#: FTextEditor.class:791
#: FTextEditor.class:775
msgid "Copy"
msgstr ""
#: FCommit.class:246 FConflict.class:337 FConnectionEditor.class:1895
#: FEditor.class:3498 FForm.class:3578 FIconEditor.class:2192
#: FCommit.class:237 FConflict.class:337 FConnectionEditor.class:1895
#: FEditor.class:3496 FForm.class:3578 FIconEditor.class:2192
#: FImageEditor.class:95 FMenu.class:983 FOutput.class:393
#: FPasteTable.class:331 FTextEditor.class:798
#: FPasteTable.class:331 FTextEditor.class:782
msgid "Paste"
msgstr ""
#: FCommit.class:252 FConflict.class:343 FConnectionEditor.class:1902
#: FEditor.class:3469 FForm.class:3803 FIconEditor.class:2160
#: FCommit.class:243 FConflict.class:343 FConnectionEditor.class:1902
#: FEditor.class:3467 FForm.class:3803 FIconEditor.class:2160
#: FImageEditor.class:105 FOption.class:1552 FOutput.class:362
#: FTextEditor.class:767
#: FTextEditor.class:751
msgid "Undo"
msgstr ""
#: FCommit.class:258 FConflict.class:349 FConnectionEditor.class:1909
#: FEditor.class:3476 FForm.class:3813 FImageEditor.class:113
#: FOutput.class:369 FTextEditor.class:774
#: FCommit.class:249 FConflict.class:349 FConnectionEditor.class:1909
#: FEditor.class:3474 FForm.class:3813 FImageEditor.class:113
#: FOutput.class:369 FTextEditor.class:758
msgid "Redo"
msgstr ""
#: FCommit.class:264 FConflict.class:355 FEditor.class:3713 FMenu.class:993
#: FTextEditor.class:970
#: FCommit.class:255 FConflict.class:355 FEditor.class:3711 FMenu.class:993
#: FTextEditor.class:954
msgid "Indent"
msgstr ""
#: FCommit.class:270 FConflict.class:361 FEditor.class:3721 FMenu.class:999
#: FTextEditor.class:977
#: FCommit.class:261 FConflict.class:361 FEditor.class:3719 FMenu.class:999
#: FTextEditor.class:961
msgid "Unindent"
msgstr ""
#: FCommit.class:276
#: FCommit.class:267
msgid "Clean up"
msgstr ""
#: FCommit.class:283
#: FCommit.class:274
msgid "Previous description"
msgstr ""
#: FCommit.class:317
#: FCommit.class:294
msgid "Authentification"
msgstr ""
#: FCommit.class:326 FNewConnection.class:457
#: FCommit.class:303 FNewConnection.class:457
msgid "User"
msgstr ""
#: FCommit.class:341 FNewConnection.class:471
#: FCommit.class:318 FNewConnection.class:471
msgid "Password"
msgstr ""
#: FCommit.class:354 FNewConnection.class:491
#: FCommit.class:331 FNewConnection.class:491
msgid "Remember password"
msgstr ""
#: FCommit.class:357
#: FCommit.class:334
msgid "Changes"
msgstr ""
@ -697,8 +697,8 @@ msgstr ""
msgid "The table '&1' has been modified. Do you want to save it?"
msgstr ""
#: FConnectionEditor.class:284 FEditor.class:3603 FForm.class:3719
#: FIconEditor.class:1426 FImageEditor.class:60 FTextEditor.class:889
#: FConnectionEditor.class:284 FEditor.class:3601 FForm.class:3719
#: FIconEditor.class:1426 FImageEditor.class:60 FTextEditor.class:873
msgid "Save"
msgstr ""
@ -819,9 +819,9 @@ msgstr ""
msgid "Connection editor"
msgstr ""
#: FConnectionEditor.class:1622 FEditor.class:2275 FForm.class:2960
#: FConnectionEditor.class:1622 FEditor.class:2276 FForm.class:2960
#: FHelpBrowser.class:347 FIconEditor.class:2046 FImageEditor.class:68
#: FTextEditor.class:475 FTranslate.class:732
#: FTextEditor.class:463 FTranslate.class:732
msgid "Reload"
msgstr ""
@ -1288,126 +1288,126 @@ msgstr ""
msgid "Stack backtrace"
msgstr ""
#: FEditor.class:2275 FIconEditor.class:2046 FTextEditor.class:475
#: FEditor.class:2276 FIconEditor.class:2046 FTextEditor.class:463
msgid ""
"The file has been modified.\n"
"\n"
"All your changes will be lost."
msgstr ""
#: FEditor.class:2724
#: FEditor.class:2725
msgid "(Declarations)"
msgstr ""
#: FEditor.class:3405
#: FEditor.class:3403
msgid "Go to"
msgstr ""
#: FEditor.class:3410 FTextEditor.class:758
#: FEditor.class:3408 FTextEditor.class:742
msgid "Go to line..."
msgstr ""
#: FEditor.class:3416
#: FEditor.class:3414
msgid "Find definition"
msgstr ""
#: FEditor.class:3423 FHelpBrowser.class:329
#: FEditor.class:3421 FHelpBrowser.class:329
msgid "Go back"
msgstr ""
#: FEditor.class:3430
#: FEditor.class:3428
msgid "Open form"
msgstr ""
#: FEditor.class:3437 FForm.class:3490 FMain.class:2637
#: FEditor.class:3435 FForm.class:3490 FMain.class:2637
msgid "&Startup class"
msgstr ""
#: FEditor.class:3445
#: FEditor.class:3443
msgid "Run &until current line"
msgstr ""
#: FEditor.class:3452
#: FEditor.class:3450
msgid "Toggle &breakpoint"
msgstr ""
#: FEditor.class:3460
#: FEditor.class:3458
msgid "&Watch expression"
msgstr ""
#: FEditor.class:3505
#: FEditor.class:3503
msgid "Paste special..."
msgstr ""
#: FEditor.class:3511 FTextEditor.class:805
#: FEditor.class:3509 FTextEditor.class:789
msgid "Insert color..."
msgstr ""
#: FEditor.class:3520 FTextEditor.class:814
#: FEditor.class:3518 FTextEditor.class:798
msgid "Select &All"
msgstr ""
#: FEditor.class:3529
#: FEditor.class:3527
msgid "Comment"
msgstr ""
#: FEditor.class:3536
#: FEditor.class:3534
msgid "Uncomment"
msgstr ""
#: FEditor.class:3546 FOutput.class:410 FTextEditor.class:823
#: FEditor.class:3544 FOutput.class:410 FTextEditor.class:807
msgid "Find next"
msgstr ""
#: FEditor.class:3553 FOutput.class:417 FTextEditor.class:830
#: FEditor.class:3551 FOutput.class:417 FTextEditor.class:814
msgid "Find previous"
msgstr ""
#: FEditor.class:3562 FTextEditor.class:839
#: FEditor.class:3560 FTextEditor.class:823
msgid "View"
msgstr ""
#: FEditor.class:3566 FTextEditor.class:843
#: FEditor.class:3564 FTextEditor.class:827
msgid "No split"
msgstr ""
#: FEditor.class:3573 FTextEditor.class:850
#: FEditor.class:3571 FTextEditor.class:834
msgid "Horizontal split"
msgstr ""
#: FEditor.class:3580 FTextEditor.class:857
#: FEditor.class:3578 FTextEditor.class:841
msgid "Vertical split"
msgstr ""
#: FEditor.class:3591
#: FEditor.class:3589
msgid "Make code pretty"
msgstr ""
#: FEditor.class:3613 FPasteSpecial.class:253
#: FEditor.class:3611 FPasteSpecial.class:253
msgid "Paste as string"
msgstr ""
#: FEditor.class:3618 FPasteSpecial.class:258
#: FEditor.class:3616 FPasteSpecial.class:258
msgid "Paste as multi-line string"
msgstr ""
#: FEditor.class:3623 FPasteSpecial.class:243
#: FEditor.class:3621 FPasteSpecial.class:243
msgid "Paste as comments"
msgstr ""
#: FEditor.class:3630 FOption.class:1149
#: FEditor.class:3628 FOption.class:1149
msgid "Editor"
msgstr ""
#: FEditor.class:3780
#: FEditor.class:3778
msgid "Toggle breakpoint"
msgstr ""
#: FEditor.class:3789
#: FEditor.class:3787
msgid "Watch expression"
msgstr ""
#: FEditor.class:3802
#: FEditor.class:3800
msgid "Procedure list"
msgstr ""
@ -1550,7 +1550,7 @@ msgstr ""
msgid "Menu editor..."
msgstr ""
#: FForm.class:3749 FTextEditor.class:920
#: FForm.class:3749 FTextEditor.class:904
msgid "Code"
msgstr ""
@ -1764,7 +1764,7 @@ msgstr ""
msgid "Pick a color"
msgstr ""
#: FImageEditor.class:54 FTextEditor.class:898
#: FImageEditor.class:54 FTextEditor.class:882
msgid "Text editor"
msgstr ""
@ -3816,23 +3816,23 @@ msgstr ""
msgid "Use a fixed font"
msgstr ""
#: FTextEditor.class:670
#: FTextEditor.class:658
msgid "The file has been compressed from &1 to &2 bytes (&3)."
msgstr ""
#: FTextEditor.class:670
#: FTextEditor.class:658
msgid "Original file has been saved in the <b>Project</b> folder."
msgstr ""
#: FTextEditor.class:676
#: FTextEditor.class:664
msgid "Unable to compress file."
msgstr ""
#: FTextEditor.class:868
#: FTextEditor.class:852
msgid "Compress file"
msgstr ""
#: FTextEditor.class:874
#: FTextEditor.class:858
msgid "Uncompress file"
msgstr ""

View file

@ -132,6 +132,7 @@ Public Sub _new(sPath As String)
Editor = edtEditor
edtEditor.Flags[Editor.HighlightBraces] = True
edtEditor.Flags[Editor.ShowCursorPosition] = True
edtEditor.Highlight = Highlight.Gambas
$hInsertColor = New CInsertColor(btnInsertColor, Editor)
@ -326,11 +327,11 @@ Private Sub DrawTitle()
End
Private Sub DrawInfo()
lblEditor.Text = CStr(Editor.Line + 1) & ":" & CStr(Editor.Column + 1)
End
' Private Sub DrawInfo()
'
' lblEditor.Text = CStr(Editor.Line + 1) & ":" & CStr(Editor.Column + 1)
'
' End
Public Sub Modify(Optional bReset As Boolean)
@ -424,7 +425,7 @@ Private Sub RefreshLineInfo(Optional bForce As Boolean)
CheckSignature
Endif
DrawInfo
'DrawInfo
End
@ -2900,6 +2901,7 @@ Private Sub InitEditor(hEditor As Editor)
.Flags[Editor.HighlightCurrent] = True
.ReadOnly = edtEditor.ReadOnly
.TabSize = edtEditor.TabSize
.Flags[Editor.ShowCursorPosition] = edtEditor.Flags[Editor.ShowCursorPosition]
End With
ReadConfigEditor(hEditor)

View file

@ -361,21 +361,6 @@
Action = ".go-back"
Picture = Picture["icon:/16/left"]
}
{ HBox1 HBox
MoveScaled(118,0,22,4)
Expand = True
{ Panel1 Panel
MoveScaled(2,0,1,4)
Expand = True
}
{ lblEditor Label
MoveScaled(4,0,14,4)
Alignment = Align.Right
}
{ Panel2 Panel
MoveScaled(18,0,1,4)
}
}
}
{ edtEditor Editor Editors
Name = "edtEditor"
@ -587,6 +572,6 @@
{ Toolbar editor
Text = "Editor"
List = "save,reload,show-form,cut,copy,paste,color,undo,redo,indent,unindent,comment,uncomment,view-nosplit,view-hsplit,view-vsplit,pretty,break,watch,proc,find-definition,go-back"
Default = "save,reload,show-form,paste,color,undo,redo,comment,uncomment,break,watch,|,proc,$HBox1"
Default = "save,reload,show-form,paste,color,undo,redo,comment,uncomment,break,watch,|,proc"
}
}

View file

@ -56,6 +56,8 @@ Public Sub _new(sPath As String, Optional bModule As Boolean)
Me.Name = File.Name(Path)
Endif
edtEditor.Flags[Editor.ShowCursorPosition] = True
End
Public Sub LoadFile() As Boolean
@ -200,14 +202,6 @@ Public Sub Editors_Change()
End
Public Sub Editors_Cursor()
'PRINT edtEditor.Line; edtEditor.Column
'lblCursor.Text = CStr(edtEditor.Line + 1) & " : " & CStr(edtEditor.Column + 1)
DrawInfo
End
Public Sub Editors_KeyPress()
If Key.Code = Key.Escape Then
@ -455,12 +449,6 @@ Private Function ReadOnly_Read() As Boolean
End
Private Sub DrawInfo()
lblEditor.Text = CStr(Editor.Line + 1) & ":" & CStr(Editor.Column + 1)
End
Public Sub Reload()
edtEditor.Text = File.Load(Path)
@ -501,6 +489,7 @@ Private Sub InitEditor(hEditor As Editor)
.Highlight = edtEditor.Highlight
.Flags[Editor.HighlightCurrent] = edtEditor.Flags[Editor.HighlightCurrent]
.Flags[Editor.HighlightBraces] = edtEditor.Flags[Editor.HighlightBraces]
.Flags[Editor.ShowCursorPosition] = edtEditor.Flags[Editor.ShowCursorPosition]
.ReadOnly = edtEditor.ReadOnly
.TabSize = edtEditor.TabSize
End With
@ -555,7 +544,6 @@ Private Sub SetViewMode(iViewMode As Integer)
$hInsertColor.SetEditor(Editor)
Editor.SetFocus
Form_Arrange
Editors_Cursor
End

View file

@ -229,21 +229,6 @@
Border = False
Menu = "mnuColor"
}
{ HBox1 HBox
MoveScaled(62,0,16,4)
Expand = True
{ Panel1 Panel
MoveScaled(2,0,1,4)
Expand = True
}
{ lblEditor Label
MoveScaled(3,0,10,4)
AutoResize = True
}
{ Panel2 Panel
MoveScaled(14,0,1,4)
}
}
}
{ edtEditor Editor Editors
Name = "edtEditor"
@ -365,6 +350,6 @@
{ Toolbar text
Text = "Text editor"
List = "save,reload,show-class,cut,copy,paste,undo,redo,indent,unindent,view-nosplit,view-hsplit,view-vsplit,color"
Default = "save,reload,show-class,undo,redo,indent,unindent,color,$HBox1"
Default = "save,reload,show-class,undo,redo,indent,unindent,color"
}
}

View file

@ -23,6 +23,7 @@ Public Sub Form_Open()
Endif
edtChange.ReadConfig
edtChange.Flags[Editor.ShowCursorPosition] = True
edtChange.Text = "\n---- " & DELIM_CHANGE & " ----\n\n" & $sChange
edtDiff.ReadConfig
@ -71,13 +72,6 @@ Public Sub btnCancel_Click()
End
Public Sub edtChange_Cursor()
lblCursor.Text = CStr(edtChange.Line + 1) & ":" & CStr(edtChange.Column + 1)
End
Public Sub btnCut_Click()
edtChange.Cut

View file

@ -91,17 +91,6 @@
Text = ("Previous description")
Picture = Picture["icon:/small/redo"]
}
{ Panel2 Panel
MoveScaled(56,0,2,4)
Expand = True
}
{ lblCursor Label
MoveScaled(61,0,5,4)
AutoResize = True
}
{ Panel3 Panel
MoveScaled(67,0,1,4)
}
}
{ Separator1 Separator
MoveScaled(20,6,35,0)

View file

@ -825,19 +825,24 @@ END_METHOD
void CWIDGET_set_visible(CWIDGET *_object, bool v)
{
// if (v == THIS->flag.visible)
// return;
bool arrange = false;
THIS->flag.visible = v;
if (THIS->flag.visible)
{
arrange = !WIDGET->isVisible();
QWIDGET(_object)->show();
if (GB.Is(THIS, CLASS_Container))
CCONTAINER_arrange(THIS);
}
else
{
arrange = !WIDGET->isHidden();
QWIDGET(_object)->hide();
arrange_parent(THIS);
}
if (arrange)
arrange_parent(THIS);
}

View file

@ -1215,6 +1215,7 @@ GB_DESC CEditorDesc[] =
GB_CONSTANT("HighlightCurrent", "i", GEditor::HighlightCurrent),
GB_CONSTANT("BlendedProcedureLimits", "i", GEditor::BlendedProcedureLimits),
GB_CONSTANT("ShowDots", "i", GEditor::ShowDots),
GB_CONSTANT("ShowCursorPosition", "i", GEditor::ShowCursorPosition),
GB_METHOD("_new", NULL, CEDITOR_new, "(Parent)Container;"),
GB_METHOD("_free", NULL, CEDITOR_free, NULL),

View file

@ -1067,7 +1067,8 @@ bool GEditor::cursorGoto(int ny, int nx, bool mark)
if (mark)
doc->endSelection(y, x);
updateInfo();
emit cursorMoved();
}
else if (center)
@ -2498,16 +2499,35 @@ void GEditor::paintEmptyArea(QPainter *p, int cx, int cy, int cw, int ch)
p->fillRect(r[i], viewport()->paletteBackgroundColor());
}
void GEditor::getInfo(QRect *rect, QString *info) const
{
int ix, iy, iw, ih;
QString s;
s = QString("%1:%2").arg(x + 1).arg(y + 1);
iw = _charWidth * 10 + 4;
ih = _cellh + 2;
ix = visibleWidth() - iw - 2;
iy = visibleHeight() - ih - 2;
*rect = QRect(ix, iy, iw, ih);
if (info) *info = s;
}
void GEditor::updateInfo()
{
QRect r;
getInfo(&r, NULL);
viewport()->update(r);
}
void GEditor::drawContents(QPainter *p, int cx, int cy, int cw, int ch)
{
int rowfirst = rowAt(cy);
int rowlast = rowAt(cy + ch - 1);
/*if (rowfirst < 0)
rowfirst = 0;
if (rowlast >= _nrows)
rowlast = _nrows - 1;*/
// Go through the rows
for (int r = rowfirst; r <= rowlast; ++r)
{
@ -2518,8 +2538,27 @@ void GEditor::drawContents(QPainter *p, int cx, int cy, int cw, int ch)
paintCell(p, r, 0);
p->translate(0, -rowp);
}
}
//paintEmptyArea(p, cx, cy, cw, ch);
void GEditor::viewportPaintEvent(QPaintEvent *e)
{
QString info;
QRect rect;
QColor color;
Q3ScrollView::viewportPaintEvent(e);
if (getFlag(ShowCursorPosition))
{
QPainter p(viewport());
getInfo(&rect, &info);
color = styles[GLine::Current].color;
color.setAlpha(128);
p.fillRect(rect, color);
rect.translate(0, 2);
p.setPen(styles[GLine::Normal].color);
p.drawText(rect, Qt::AlignCenter, info);
}
}
void GEditor::updateViewport()

View file

@ -135,7 +135,8 @@ private:
void updateViewport();
//static void updateBreakpoint(uint bg, uint fg);
void getInfo(QRect *rect, QString *info) const;
void updateInfo();
private slots:
@ -162,6 +163,7 @@ protected:
virtual bool focusNextPrevChild(bool);
virtual void inputMethodEvent(QInputMethodEvent *e);
virtual void drawContents(QPainter *p, int cx, int cy, int cw, int ch);
virtual void viewportPaintEvent(QPaintEvent *e);
public:
@ -175,7 +177,8 @@ public:
HighlightBraces = 6,
HighlightCurrent = 7,
BlendedProcedureLimits = 8,
ShowDots = 9
ShowDots = 9,
ShowCursorPosition = 10
};
static void setBreakpointPixmap(QPixmap *p);

View file

@ -1030,7 +1030,7 @@ GB_DESC PaintDesc[] =
GB_STATIC_PROPERTY_READ("Height", "f", Paint_Height),
GB_STATIC_PROPERTY_READ("ResolutionX", "i", Paint_ResolutionX),
GB_STATIC_PROPERTY_READ("ResolutionY", "i", Paint_ResolutionY),
GB_STATIC_PROPERTY("Antialias", "b", Paint_Antialias),
GB_STATIC_PROPERTY("AntiAlias", "b", Paint_Antialias),
GB_STATIC_METHOD("Save", NULL, Paint_Save, NULL),
GB_STATIC_METHOD("Restore", NULL, Paint_Restore, NULL),