fxruby 1.6.28-x64-mingw32 → 1.6.29-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -7
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +3 -2
- data/.gitignore +1 -1
- data/History.txt +13 -1
- data/Manifest.txt +1 -1
- data/Rakefile +49 -39
- data/examples/RAA.rb +8 -2
- data/examples/WhatAQuietStiff.rb +2 -2
- data/examples/babelfish.rb +9 -2
- data/examples/browser.rb +1 -1
- data/examples/button.rb +3 -9
- data/examples/canvasdemo.rb +3 -3
- data/examples/charts.rb +9 -2
- data/examples/dctest.rb +4 -10
- data/examples/gembrowser.rb +4 -4
- data/examples/gltest.rb +3 -3
- data/examples/glviewer.rb +3 -9
- data/examples/groupbox.rb +3 -9
- data/examples/header.rb +1 -1
- data/examples/hello2.rb +1 -1
- data/examples/iRAA.rb +7 -1
- data/examples/iconlist.rb +3 -9
- data/examples/imageviewer.rb +3 -9
- data/examples/mditest.rb +1 -1
- data/examples/raabrowser.rb +8 -2
- data/examples/rmagick.rb +7 -1
- data/examples/shutter.rb +3 -9
- data/examples/splitter.rb +3 -9
- data/examples/table.rb +26 -3
- data/examples/textedit/textedit.rb +3 -3
- data/ext/fox16_c/FXRbApp.cpp +1 -1
- data/ext/fox16_c/FXRuby.cpp +18 -9
- data/ext/fox16_c/extconf.rb +252 -11
- data/ext/fox16_c/include/FXRbTreeList.h +3 -3
- data/ext/fox16_c/include/FXRuby.h +7 -6
- data/ext/fox16_c/markfuncs.cpp +3 -22
- data/ext/fox16_c/unregisterOwnedObjects.cpp +1 -2
- data/lib/2.0/fox16_c.so +0 -0
- data/lib/2.1/fox16_c.so +0 -0
- data/lib/2.2/fox16_c.so +0 -0
- data/lib/fox16.rb +16 -6
- data/lib/fox16/core.rb +14 -0
- data/lib/fox16/glshapes.rb +1 -0
- data/lib/fox16/version.rb +1 -1
- data/lib/x64-mingw32/libFOX-1.6-0.dll +0 -0
- data/lib/x64-mingw32/libfxscintilla-20.dll +0 -0
- data/lib/x64-mingw32/libgcc_s_sjlj-1.dll +0 -0
- data/lib/x64-mingw32/libjpeg-8.dll +0 -0
- data/lib/x64-mingw32/libpng15-15.dll +0 -0
- data/lib/x64-mingw32/libstdc++-6.dll +0 -0
- data/lib/x64-mingw32/libtiff-5.dll +0 -0
- data/lib/x64-mingw32/libwinpthread-1.dll +0 -0
- data/lib/x64-mingw32/zlib1.dll +0 -0
- data/rdoc-sources/FXBMPIcon.rb +1 -1
- data/rdoc-sources/FXImage.rb +8 -2
- data/swig-interfaces/FX4Splitter.i +0 -6
- data/swig-interfaces/FX7Segment.i +0 -8
- data/swig-interfaces/FXAccelTable.i +0 -7
- data/swig-interfaces/FXApp.i +15 -23
- data/swig-interfaces/FXArrowButton.i +0 -10
- data/swig-interfaces/FXBMPIcon.i +0 -2
- data/swig-interfaces/FXBMPImage.i +0 -2
- data/swig-interfaces/FXBitmap.i +0 -6
- data/swig-interfaces/FXButton.i +0 -4
- data/swig-interfaces/FXCURCursor.i +0 -2
- data/swig-interfaces/FXCanvas.i +0 -2
- data/swig-interfaces/FXCheckButton.i +0 -7
- data/swig-interfaces/FXChoiceBox.i +0 -8
- data/swig-interfaces/FXColorBar.i +0 -8
- data/swig-interfaces/FXColorDialog.i +0 -4
- data/swig-interfaces/FXColorList.i +0 -9
- data/swig-interfaces/FXColorRing.i +0 -40
- data/swig-interfaces/FXColorSelector.i +0 -25
- data/swig-interfaces/FXColorWell.i +0 -10
- data/swig-interfaces/FXColorWheel.i +0 -15
- data/swig-interfaces/FXComboBox.i +0 -7
- data/swig-interfaces/FXComposeContext.i +0 -5
- data/swig-interfaces/FXComposite.i +0 -4
- data/swig-interfaces/FXCursor.i +0 -9
- data/swig-interfaces/FXDC.i +0 -26
- data/swig-interfaces/FXDCPrint.i +0 -19
- data/swig-interfaces/FXDataTarget.i +0 -5
- data/swig-interfaces/FXDebugTarget.i +0 -4
- data/swig-interfaces/FXDelegator.i +0 -2
- data/swig-interfaces/FXDial.i +0 -14
- data/swig-interfaces/FXDialogBox.i +0 -2
- data/swig-interfaces/FXDict.i +0 -27
- data/swig-interfaces/FXDirDialog.i +0 -5
- data/swig-interfaces/FXDirList.i +0 -31
- data/swig-interfaces/FXDirSelector.i +0 -19
- data/swig-interfaces/FXDockBar.i +0 -8
- data/swig-interfaces/FXDockHandler.i +0 -10
- data/swig-interfaces/FXDockSite.i +0 -7
- data/swig-interfaces/FXDockTitle.i +0 -6
- data/swig-interfaces/FXDragCorner.i +0 -9
- data/swig-interfaces/FXDrawable.i +0 -7
- data/swig-interfaces/FXFileDialog.i +0 -5
- data/swig-interfaces/FXFileDict.i +0 -5
- data/swig-interfaces/FXFileList.i +0 -23
- data/swig-interfaces/FXFileSelector.i +0 -33
- data/swig-interfaces/FXFoldingList.i +6 -19
- data/swig-interfaces/FXFont.i +0 -20
- data/swig-interfaces/FXFontDialog.i +3 -7
- data/swig-interfaces/FXFontSelector.i +3 -29
- data/swig-interfaces/FXFrame.i +0 -20
- data/swig-interfaces/FXGIFIcon.i +0 -2
- data/swig-interfaces/FXGIFImage.i +0 -2
- data/swig-interfaces/FXGLCanvas.i +0 -4
- data/swig-interfaces/FXGLContext.i +0 -4
- data/swig-interfaces/FXGLShape.i +0 -11
- data/swig-interfaces/FXGLViewer.i +0 -65
- data/swig-interfaces/FXGradientBar.i +8 -9
- data/swig-interfaces/FXGroupBox.i +0 -6
- data/swig-interfaces/FXHeader.i +0 -24
- data/swig-interfaces/FXHorizontalFrame.i +0 -2
- data/swig-interfaces/FXICOIcon.i +0 -2
- data/swig-interfaces/FXICOImage.i +0 -2
- data/swig-interfaces/FXIcon.i +0 -7
- data/swig-interfaces/FXIconList.i +0 -51
- data/swig-interfaces/FXIconSource.i +0 -4
- data/swig-interfaces/FXId.i +0 -4
- data/swig-interfaces/FXImage.i +21 -4
- data/swig-interfaces/FXImageFrame.i +0 -7
- data/swig-interfaces/FXImageView.i +0 -6
- data/swig-interfaces/FXInputDialog.i +0 -8
- data/swig-interfaces/FXJPGIcon.i +0 -4
- data/swig-interfaces/FXJPGImage.i +0 -4
- data/swig-interfaces/FXKnob.i +0 -12
- data/swig-interfaces/FXLabel.i +0 -16
- data/swig-interfaces/FXList.i +0 -33
- data/swig-interfaces/FXListBox.i +0 -7
- data/swig-interfaces/FXMDIButton.i +0 -12
- data/swig-interfaces/FXMDIChild.i +0 -51
- data/swig-interfaces/FXMDIClient.i +0 -6
- data/swig-interfaces/FXMainWindow.i +0 -2
- data/swig-interfaces/FXMat3d.i +0 -2
- data/swig-interfaces/FXMat3f.i +0 -2
- data/swig-interfaces/FXMat4d.i +0 -2
- data/swig-interfaces/FXMat4f.i +0 -2
- data/swig-interfaces/FXMatrix.i +0 -4
- data/swig-interfaces/FXMemoryStream.i +0 -1
- data/swig-interfaces/FXMenuBar.i +0 -2
- data/swig-interfaces/FXMenuButton.i +0 -7
- data/swig-interfaces/FXMenuCaption.i +0 -15
- data/swig-interfaces/FXMenuCascade.i +0 -5
- data/swig-interfaces/FXMenuCheck.i +0 -8
- data/swig-interfaces/FXMenuCommand.i +0 -5
- data/swig-interfaces/FXMenuPane.i +0 -2
- data/swig-interfaces/FXMenuRadio.i +0 -8
- data/swig-interfaces/FXMenuSeparator.i +0 -5
- data/swig-interfaces/FXMenuTitle.i +0 -4
- data/swig-interfaces/FXMessageBox.i +13 -10
- data/swig-interfaces/FXOptionMenu.i +0 -7
- data/swig-interfaces/FXPCXIcon.i +0 -2
- data/swig-interfaces/FXPCXImage.i +0 -2
- data/swig-interfaces/FXPNGIcon.i +0 -2
- data/swig-interfaces/FXPNGImage.i +0 -2
- data/swig-interfaces/FXPPMIcon.i +0 -2
- data/swig-interfaces/FXPPMImage.i +0 -2
- data/swig-interfaces/FXPacker.i +0 -23
- data/swig-interfaces/FXPicker.i +0 -2
- data/swig-interfaces/FXPopup.i +0 -18
- data/swig-interfaces/FXPrintDialog.i +0 -31
- data/swig-interfaces/FXProgressBar.i +0 -12
- data/swig-interfaces/FXProgressDialog.i +0 -8
- data/swig-interfaces/FXRGBIcon.i +0 -2
- data/swig-interfaces/FXRGBImage.i +0 -2
- data/swig-interfaces/FXRadioButton.i +0 -7
- data/swig-interfaces/FXRecentFiles.i +0 -6
- data/swig-interfaces/FXRegion.i +0 -2
- data/swig-interfaces/FXRegistry.i +0 -12
- data/swig-interfaces/FXReplaceDialog.i +0 -15
- data/swig-interfaces/FXRootWindow.i +0 -6
- data/swig-interfaces/FXRuler.i +0 -45
- data/swig-interfaces/FXScrollArea.i +0 -14
- data/swig-interfaces/FXScrollBar.i +0 -2
- data/swig-interfaces/FXScrollPane.i +0 -10
- data/swig-interfaces/FXScrollWindow.i +0 -2
- data/swig-interfaces/FXSearchDialog.i +0 -2
- data/swig-interfaces/FXSeparator.i +0 -9
- data/swig-interfaces/FXSettings.i +0 -11
- data/swig-interfaces/FXShell.i +0 -4
- data/swig-interfaces/FXShutter.i +0 -14
- data/swig-interfaces/FXSlider.i +0 -19
- data/swig-interfaces/FXSpinner.i +0 -9
- data/swig-interfaces/FXSplashWindow.i +0 -8
- data/swig-interfaces/FXSplitter.i +0 -10
- data/swig-interfaces/FXSpring.i +0 -8
- data/swig-interfaces/FXStatusBar.i +0 -5
- data/swig-interfaces/FXStatusLine.i +0 -8
- data/swig-interfaces/FXStringDict.i +0 -3
- data/swig-interfaces/FXSwitcher.i +0 -4
- data/swig-interfaces/FXTGAIcon.i +0 -2
- data/swig-interfaces/FXTGAImage.i +0 -2
- data/swig-interfaces/FXTIFIcon.i +0 -4
- data/swig-interfaces/FXTIFImage.i +0 -4
- data/swig-interfaces/FXTabBar.i +0 -5
- data/swig-interfaces/FXTabBook.i +0 -2
- data/swig-interfaces/FXTabItem.i +0 -2
- data/swig-interfaces/FXTable.i +0 -17
- data/swig-interfaces/FXToggleButton.i +0 -12
- data/swig-interfaces/FXToolBarGrip.i +0 -4
- data/swig-interfaces/FXToolBarShell.i +0 -16
- data/swig-interfaces/FXToolBarTab.i +0 -13
- data/swig-interfaces/FXToolTip.i +0 -10
- data/swig-interfaces/FXTopWindow.i +0 -17
- data/swig-interfaces/FXTranslator.i +0 -2
- data/swig-interfaces/FXTreeList.i +18 -75
- data/swig-interfaces/FXTreeListBox.i +18 -38
- data/swig-interfaces/FXVerticalFrame.i +0 -2
- data/swig-interfaces/FXVisual.i +0 -38
- data/swig-interfaces/FXWindow.i +3 -53
- data/swig-interfaces/FXWizard.i +0 -17
- data/swig-interfaces/FXXBMIcon.i +0 -2
- data/swig-interfaces/FXXBMImage.i +0 -2
- data/swig-interfaces/FXXPMIcon.i +0 -2
- data/swig-interfaces/FXXPMImage.i +0 -2
- data/swig-interfaces/fxdefs.i +33 -35
- data/swig-interfaces/ruby-typemaps.i +19 -2
- data/test/TC_FXBMPImage.rb +13 -0
- data/test/TC_FXFileStream.rb +3 -3
- data/test/TC_FXImage.rb +40 -2
- data/test/TC_FXSize.rb +12 -0
- data/test/TC_FXWindow.rb +26 -0
- data/test/TC_Misc.rb +2 -0
- metadata +175 -159
- metadata.gz.sig +0 -0
- data/Rakefile.cross +0 -421
data/examples/header.rb
CHANGED
data/examples/hello2.rb
CHANGED
@@ -30,7 +30,7 @@ main = FXMainWindow.new(application, "Hello", nil, nil, DECOR_ALL)
|
|
30
30
|
# on disk.
|
31
31
|
|
32
32
|
icon = nil
|
33
|
-
File.open(File.
|
33
|
+
File.open(File.expand_path("../icons/hello2.png", __FILE__), "rb") { |f|
|
34
34
|
icon = FXPNGIcon.new(application, f.read)
|
35
35
|
}
|
36
36
|
|
data/examples/iRAA.rb
CHANGED
data/examples/iconlist.rb
CHANGED
@@ -6,15 +6,9 @@ class IconListWindow < FXMainWindow
|
|
6
6
|
|
7
7
|
# Load the named PNG icon from a file
|
8
8
|
def loadIcon(filename)
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
File.open(filename, "rb") do |f|
|
13
|
-
icon = FXPNGIcon.new(getApp(), f.read)
|
14
|
-
end
|
15
|
-
icon
|
16
|
-
rescue
|
17
|
-
raise RuntimeError, "Couldn't load icon: #{filename}"
|
9
|
+
filename = File.expand_path("../icons/#{filename}", __FILE__)
|
10
|
+
File.open(filename, "rb") do |f|
|
11
|
+
FXPNGIcon.new(getApp(), f.read)
|
18
12
|
end
|
19
13
|
end
|
20
14
|
|
data/examples/imageviewer.rb
CHANGED
@@ -240,15 +240,9 @@ class ImageWindow < FXMainWindow
|
|
240
240
|
|
241
241
|
# Convenience function to construct a PNG icon
|
242
242
|
def getIcon(filename)
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
File.open(filename, "rb") do |f|
|
247
|
-
icon = FXPNGIcon.new(getApp(), f.read)
|
248
|
-
end
|
249
|
-
icon
|
250
|
-
rescue
|
251
|
-
raise RuntimeError, "Couldn't load icon: #{filename}"
|
243
|
+
filename = File.expand_path("../icons/#{filename}", __FILE__)
|
244
|
+
File.open(filename, "rb") do |f|
|
245
|
+
FXPNGIcon.new(getApp(), f.read)
|
252
246
|
end
|
253
247
|
end
|
254
248
|
|
data/examples/mditest.rb
CHANGED
@@ -64,7 +64,7 @@ class MDITestWindow < FXMainWindow
|
|
64
64
|
|
65
65
|
# Icon for MDI Child
|
66
66
|
@mdiicon = nil
|
67
|
-
File.open(File.
|
67
|
+
File.open(File.expand_path("../icons/penguin.png", __FILE__), "rb") do |f|
|
68
68
|
@mdiicon = FXPNGIcon.new(getApp(), f.read)
|
69
69
|
end
|
70
70
|
|
data/examples/raabrowser.rb
CHANGED
data/examples/rmagick.rb
CHANGED
data/examples/shutter.rb
CHANGED
@@ -28,15 +28,9 @@ class ShutterWindow < FXMainWindow
|
|
28
28
|
# and constructs and returns a ICO icon object.
|
29
29
|
|
30
30
|
def loadIcon(filename)
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
File.open(filename, "rb") do |f|
|
35
|
-
icon = FXICOIcon.new(getApp(), f.read)
|
36
|
-
end
|
37
|
-
icon
|
38
|
-
rescue
|
39
|
-
raise RuntimeError, "Couldn't load icon: #{filename}"
|
31
|
+
filename = File.expand_path("../icons/#{filename}", __FILE__)
|
32
|
+
File.open(filename, "rb") do |f|
|
33
|
+
FXPNGIcon.new(getApp(), f.read)
|
40
34
|
end
|
41
35
|
end
|
42
36
|
|
data/examples/splitter.rb
CHANGED
@@ -8,15 +8,9 @@ class SplitterWindow < FXMainWindow
|
|
8
8
|
|
9
9
|
# Convenience function to load & construct an icon
|
10
10
|
def makeIcon(filename)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
File.open(filename, "rb") do |f|
|
15
|
-
icon = FXPNGIcon.new(getApp(), f.read)
|
16
|
-
end
|
17
|
-
icon
|
18
|
-
rescue
|
19
|
-
raise RuntimeError, "Couldn't load icon: #{filename}"
|
11
|
+
filename = File.expand_path("../icons/#{filename}", __FILE__)
|
12
|
+
File.open(filename, "rb") do |f|
|
13
|
+
FXPNGIcon.new(getApp(), f.read)
|
20
14
|
end
|
21
15
|
end
|
22
16
|
|
data/examples/table.rb
CHANGED
@@ -7,6 +7,28 @@ include Fox
|
|
7
7
|
|
8
8
|
class TableWindow < FXMainWindow
|
9
9
|
|
10
|
+
|
11
|
+
class MyFXTable < Fox::FXTable
|
12
|
+
include Responder
|
13
|
+
def initialize(*args, &block)
|
14
|
+
super
|
15
|
+
FXMAPFUNC(SEL_COMMAND, FXTable::ID_PASTE_SEL, 'onCmdPasteSel')
|
16
|
+
end
|
17
|
+
def onCmdPasteSel(sender, sel, ptr)
|
18
|
+
data = getDNDData(FROM_CLIPBOARD, FXTable.utf8Type)
|
19
|
+
if data && anythingSelected?
|
20
|
+
rows_cols = data.split("\n").map{|l| l.split("\t") }
|
21
|
+
rows_cols.each.with_index(selStartRow) do |cols, row_nr|
|
22
|
+
cols.each.with_index(selStartColumn) do |text, col_nr|
|
23
|
+
setItemText( row_nr, col_nr, text)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
max_cols = rows_cols.inject(0){|s,cols| [s, cols.length].max }
|
27
|
+
selectRange(selStartRow, selStartRow+rows_cols.length-1, selStartColumn, selStartColumn+max_cols-1)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
10
32
|
def initialize(app)
|
11
33
|
# Call the base class initializer first
|
12
34
|
super(app, "Table Widget Test", :opts => DECOR_ALL)
|
@@ -16,7 +38,7 @@ class TableWindow < FXMainWindow
|
|
16
38
|
|
17
39
|
# Icon used in some cells
|
18
40
|
penguinicon = nil
|
19
|
-
File.open(File.
|
41
|
+
File.open(File.expand_path('../icons/penguin.png', __FILE__), 'rb') do |f|
|
20
42
|
penguinicon = FXPNGIcon.new(getApp(), f.read, 0, IMAGE_ALPHAGUESS)
|
21
43
|
end
|
22
44
|
|
@@ -32,8 +54,9 @@ class TableWindow < FXMainWindow
|
|
32
54
|
frame = FXVerticalFrame.new(contents,
|
33
55
|
FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
|
34
56
|
|
35
|
-
#
|
36
|
-
|
57
|
+
# Instead of the usual FXTable, we use a derived version, that allows us
|
58
|
+
# to paste "," into fields. A "," is used as column separator otherwise.
|
59
|
+
@table = MyFXTable.new(frame,
|
37
60
|
:opts => TABLE_COL_SIZABLE|TABLE_ROW_SIZABLE|LAYOUT_FILL_X|LAYOUT_FILL_Y,
|
38
61
|
:padding => 2)
|
39
62
|
|
data/ext/fox16_c/FXRbApp.cpp
CHANGED
@@ -55,7 +55,7 @@ FXRbApp::FXRbApp(const FXchar* appname,const FXchar* vendor) : FXApp(appname,ven
|
|
55
55
|
// Constructor that also calls FXApp::init()
|
56
56
|
FXRbApp* FXRbApp::constructAndInit(const FXchar* appname,const FXchar* vendor){
|
57
57
|
int argc=1;
|
58
|
-
static char* argv[]={"",0};
|
58
|
+
static char* argv[]={(char*)"",0};
|
59
59
|
FXRbApp* app=new FXRbApp(appname,vendor);
|
60
60
|
app->FXApp::init(argc,argv);
|
61
61
|
return app;
|
data/ext/fox16_c/FXRuby.cpp
CHANGED
@@ -31,6 +31,9 @@
|
|
31
31
|
#include "FXRbCommon.h"
|
32
32
|
#include "impl.h"
|
33
33
|
|
34
|
+
// SWIG runtime functions we need
|
35
|
+
#include "swigruby.h"
|
36
|
+
|
34
37
|
#ifdef __CYGWIN__
|
35
38
|
#include <io.h> // for get_osf_handle()
|
36
39
|
#endif
|
@@ -63,7 +66,7 @@ swig_type_info *FXRbTypeQuery(const char *desc){
|
|
63
66
|
static st_table *types=st_init_strtable();
|
64
67
|
swig_type_info *typeinfo=0;
|
65
68
|
if(st_lookup(types,reinterpret_cast<st_data_t>(const_cast<char*>(desc)),reinterpret_cast<st_data_t *>(&typeinfo))==0){
|
66
|
-
typeinfo=
|
69
|
+
typeinfo=SWIG_TypeQuery(desc);
|
67
70
|
st_insert(types,reinterpret_cast<st_data_t>(strdup(desc)),reinterpret_cast<st_data_t>(typeinfo));
|
68
71
|
}
|
69
72
|
FXASSERT(typeinfo!=0);
|
@@ -168,12 +171,12 @@ bool FXRbIsInGC(const void* ptr){
|
|
168
171
|
|
169
172
|
|
170
173
|
/**
|
171
|
-
* FXRbConvertPtr() is just a wrapper around
|
174
|
+
* FXRbConvertPtr() is just a wrapper around SWIG_ConvertPtr().
|
172
175
|
*/
|
173
176
|
|
174
177
|
void* FXRbConvertPtr(VALUE obj,swig_type_info* ty){
|
175
178
|
void *ptr;
|
176
|
-
|
179
|
+
SWIG_ConvertPtr(obj,&ptr,ty,1);
|
177
180
|
return ptr;
|
178
181
|
}
|
179
182
|
|
@@ -463,17 +466,23 @@ FXuint FXRbNumberOfFXColors(VALUE string_or_ary){
|
|
463
466
|
return len;
|
464
467
|
}
|
465
468
|
|
466
|
-
FXColor *FXRbConvertToFXColors(VALUE string_or_ary){
|
469
|
+
FXColor *FXRbConvertToFXColors(VALUE string_or_ary, FXuint *opts){
|
467
470
|
FXColor* pix=0;
|
468
471
|
if(TYPE(string_or_ary) == T_ARRAY){
|
469
472
|
if(FXMALLOC(&pix,FXColor,RARRAY_LEN(string_or_ary))){
|
473
|
+
*opts |= IMAGE_OWNED;
|
470
474
|
for(long i=0; i<RARRAY_LEN(string_or_ary); i++){
|
471
475
|
pix[i]=static_cast<FXColor>(NUM2UINT(rb_ary_entry(string_or_ary,i)));
|
472
476
|
}
|
473
477
|
}
|
474
478
|
}else{
|
475
|
-
if(
|
476
|
-
|
479
|
+
if( *opts & IMAGE_OWNED ){
|
480
|
+
if(FXMALLOC(&pix,FXColor,RSTRING_LEN(string_or_ary)/sizeof(FXColor))){
|
481
|
+
memcpy(pix, RSTRING_PTR(string_or_ary), RSTRING_LEN(string_or_ary));
|
482
|
+
}
|
483
|
+
}else{
|
484
|
+
rb_str_modify(string_or_ary);
|
485
|
+
pix = (FXColor*)(RSTRING_PTR(string_or_ary));
|
477
486
|
}
|
478
487
|
}
|
479
488
|
return pix;
|
@@ -1018,7 +1027,7 @@ void* FXRbGetExpectedData(VALUE recv,FXSelector key,VALUE value){
|
|
1018
1027
|
case SEL_DND_MOTION:
|
1019
1028
|
case SEL_DND_REQUEST:
|
1020
1029
|
case SEL_PICKED:
|
1021
|
-
|
1030
|
+
SWIG_ConvertPtr(value,&ptr,FXRbTypeQuery("FXEvent *"),1);
|
1022
1031
|
return ptr;
|
1023
1032
|
case SEL_IO_READ:
|
1024
1033
|
case SEL_IO_WRITE:
|
@@ -1195,14 +1204,14 @@ void* FXRbGetExpectedData(VALUE recv,FXSelector key,VALUE value){
|
|
1195
1204
|
|
1196
1205
|
if(type==SEL_CHANGED){
|
1197
1206
|
if(obj->isMemberOf(FXMETACLASS(FXPicker))){
|
1198
|
-
|
1207
|
+
SWIG_ConvertPtr(value,&ptr,FXRbTypeQuery("FXPoint *"),1);
|
1199
1208
|
return ptr;
|
1200
1209
|
}
|
1201
1210
|
return 0;
|
1202
1211
|
}
|
1203
1212
|
|
1204
1213
|
if(type==SEL_DRAGGED){
|
1205
|
-
|
1214
|
+
SWIG_ConvertPtr(value,&ptr,FXRbTypeQuery("FXEvent *"),1);
|
1206
1215
|
return ptr;
|
1207
1216
|
}
|
1208
1217
|
|
data/ext/fox16_c/extconf.rb
CHANGED
@@ -72,16 +72,259 @@ def fxscintilla_support_suppressed?
|
|
72
72
|
ARGV.include? "--without-fxscintilla"
|
73
73
|
end
|
74
74
|
|
75
|
+
def with_env(hash)
|
76
|
+
hash.each do |k, v|
|
77
|
+
ENV[k] = v
|
78
|
+
end
|
79
|
+
begin
|
80
|
+
yield
|
81
|
+
ensure
|
82
|
+
hash.each do |k, v|
|
83
|
+
ENV.delete(k)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
LIBZ_VERSION = ENV['LIBZ_VERSION'] || '1.2.7'
|
89
|
+
LIBZ_SOURCE_URI = "http://downloads.sourceforge.net/project/libpng/zlib/#{LIBZ_VERSION}/zlib-#{LIBZ_VERSION}.tar.bz2"
|
90
|
+
|
91
|
+
LIBPNG_VERSION = ENV['LIBPNG_VERSION'] || '1.5.13'
|
92
|
+
LIBPNG_SOURCE_URI = "http://prdownloads.sourceforge.net/libpng/libpng-#{LIBPNG_VERSION}.tar.gz"
|
93
|
+
|
94
|
+
LIBJPEG_VERSION = ENV['LIBJPEG_VERSION'] || '8d'
|
95
|
+
LIBJPEG_SOURCE_URI = "http://www.ijg.org/files/jpegsrc.v#{LIBJPEG_VERSION}.tar.gz"
|
96
|
+
|
97
|
+
LIBTIFF_VERSION = ENV['LIBTIFF_VERSION'] || '4.0.3'
|
98
|
+
LIBTIFF_SOURCE_URI = "http://download.osgeo.org/libtiff/tiff-#{LIBTIFF_VERSION}.tar.gz"
|
99
|
+
|
100
|
+
LIBFOX_VERSION = ENV['LIBFOX_VERSION'] || '1.6.49'
|
101
|
+
LIBFOX_SOURCE_URI = "http://ftp.fox-toolkit.org/pub/fox-#{LIBFOX_VERSION}.tar.gz"
|
102
|
+
|
103
|
+
LIBFXSCINTILLA_VERSION = ENV['LIBFXSCINTILLA_VERSION'] || '2.28.0'
|
104
|
+
LIBFXSCINTILLA_SOURCE_URI = "http://download.savannah.gnu.org/releases/fxscintilla/fxscintilla-#{LIBFXSCINTILLA_VERSION}.tar.gz"
|
105
|
+
|
75
106
|
def do_rake_compiler_setup
|
76
|
-
if enable_config("win32-
|
107
|
+
if enable_config("win32-cross")
|
108
|
+
require 'mini_portile'
|
109
|
+
|
77
110
|
dir_config("installed")
|
78
|
-
have_library( 'gdi32', 'CreateDC' ) && append_library( $libs, 'gdi32' )
|
79
|
-
have_library( 'opengl32' ) && append_library( $libs, 'opengl32' )
|
80
|
-
have_library( 'winspool', 'EnumPrintersA') && append_library( $libs, 'winspool' )
|
81
111
|
|
82
|
-
|
112
|
+
libz_recipe = MiniPortile.new("libz", LIBZ_VERSION).tap do |recipe|
|
113
|
+
recipe.files = [LIBZ_SOURCE_URI]
|
114
|
+
recipe.target = portsdir = File.expand_path('../../../ports', __FILE__)
|
115
|
+
# Prefer host_alias over host in order to use i586-mingw32msvc as
|
116
|
+
# correct compiler prefix for cross build, but use host if not set.
|
117
|
+
recipe.host = RbConfig::CONFIG["host_alias"].empty? ? RbConfig::CONFIG["host"] : RbConfig::CONFIG["host_alias"]
|
118
|
+
class << recipe
|
119
|
+
def configure
|
120
|
+
Dir.chdir work_path do
|
121
|
+
mk = File.read 'win32/Makefile.gcc'
|
122
|
+
File.open 'win32/Makefile.gcc', 'wb' do |f|
|
123
|
+
f.puts "BINARY_PATH = #{path}/bin"
|
124
|
+
f.puts "LIBRARY_PATH = #{path}/lib"
|
125
|
+
f.puts "INCLUDE_PATH = #{path}/include"
|
126
|
+
mk.sub!(/^PREFIX\s*=\s*$/, "PREFIX = #{host}-")
|
127
|
+
f.puts mk
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
def configured?
|
133
|
+
Dir.chdir work_path do
|
134
|
+
!! (File.read('win32/Makefile.gcc') =~ /^BINARY_PATH/)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
def compile
|
139
|
+
execute "compile", "make -f win32/Makefile.gcc SHARED_MODE=1"
|
140
|
+
end
|
141
|
+
|
142
|
+
def install
|
143
|
+
execute "install", "make -f win32/Makefile.gcc install SHARED_MODE=1"
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
checkpoint = File.join(portsdir, "#{recipe.name}-#{recipe.version}-#{recipe.host}.installed")
|
148
|
+
unless File.exist?(checkpoint)
|
149
|
+
recipe.cook
|
150
|
+
FileUtils.touch checkpoint
|
151
|
+
end
|
152
|
+
recipe.activate
|
153
|
+
end
|
154
|
+
|
155
|
+
libpng_recipe = MiniPortile.new("libpng", LIBPNG_VERSION).tap do |recipe|
|
156
|
+
recipe.files = [LIBPNG_SOURCE_URI]
|
157
|
+
recipe.target = portsdir = File.expand_path('../../../ports', __FILE__)
|
158
|
+
# Prefer host_alias over host in order to use i586-mingw32msvc as
|
159
|
+
# correct compiler prefix for cross build, but use host if not set.
|
160
|
+
recipe.host = RbConfig::CONFIG["host_alias"].empty? ? RbConfig::CONFIG["host"] : RbConfig::CONFIG["host_alias"]
|
161
|
+
recipe.configure_options = [
|
162
|
+
"--host=#{recipe.host}",
|
163
|
+
"--enable-shared",
|
164
|
+
"--disable-static",
|
165
|
+
]
|
166
|
+
|
167
|
+
checkpoint = File.join(portsdir, "#{recipe.name}-#{recipe.version}-#{recipe.host}.installed")
|
168
|
+
unless File.exist?(checkpoint)
|
169
|
+
with_env(
|
170
|
+
'CPPFLAGS' => "-I#{libz_recipe.path}/include",
|
171
|
+
'LDFLAGS' => "-L#{libz_recipe.path}/lib"
|
172
|
+
) do
|
173
|
+
recipe.cook
|
174
|
+
FileUtils.touch checkpoint
|
175
|
+
end
|
176
|
+
end
|
177
|
+
recipe.activate
|
178
|
+
end
|
179
|
+
|
180
|
+
libjpeg_recipe = MiniPortile.new("libjpeg", LIBJPEG_VERSION).tap do |recipe|
|
181
|
+
recipe.files = [LIBJPEG_SOURCE_URI]
|
182
|
+
recipe.target = portsdir = File.expand_path('../../../ports', __FILE__)
|
183
|
+
# Prefer host_alias over host in order to use i586-mingw32msvc as
|
184
|
+
# correct compiler prefix for cross build, but use host if not set.
|
185
|
+
recipe.host = RbConfig::CONFIG["host_alias"].empty? ? RbConfig::CONFIG["host"] : RbConfig::CONFIG["host_alias"]
|
186
|
+
recipe.configure_options = [
|
187
|
+
"--host=#{recipe.host}",
|
188
|
+
"--enable-shared",
|
189
|
+
"--disable-static",
|
190
|
+
]
|
191
|
+
|
192
|
+
checkpoint = File.join(portsdir, "#{recipe.name}-#{recipe.version}-#{recipe.host}.installed")
|
193
|
+
unless File.exist?(checkpoint)
|
194
|
+
recipe.cook
|
195
|
+
FileUtils.touch checkpoint
|
196
|
+
end
|
197
|
+
recipe.activate
|
198
|
+
end
|
199
|
+
|
200
|
+
libtiff_recipe = MiniPortile.new("libtiff", LIBTIFF_VERSION).tap do |recipe|
|
201
|
+
recipe.files = [LIBTIFF_SOURCE_URI]
|
202
|
+
recipe.target = portsdir = File.expand_path('../../../ports', __FILE__)
|
203
|
+
# Prefer host_alias over host in order to use i586-mingw32msvc as
|
204
|
+
# correct compiler prefix for cross build, but use host if not set.
|
205
|
+
recipe.host = RbConfig::CONFIG["host_alias"].empty? ? RbConfig::CONFIG["host"] : RbConfig::CONFIG["host_alias"]
|
206
|
+
recipe.configure_options = [
|
207
|
+
"--host=#{recipe.host}",
|
208
|
+
"--enable-shared",
|
209
|
+
"--disable-static",
|
210
|
+
]
|
211
|
+
|
212
|
+
checkpoint = File.join(portsdir, "#{recipe.name}-#{recipe.version}-#{recipe.host}.installed")
|
213
|
+
unless File.exist?(checkpoint)
|
214
|
+
recipe.cook
|
215
|
+
FileUtils.touch checkpoint
|
216
|
+
end
|
217
|
+
recipe.activate
|
218
|
+
end
|
219
|
+
|
220
|
+
libfox_recipe = MiniPortile.new("libfox", LIBFOX_VERSION).tap do |recipe|
|
221
|
+
recipe.files = [LIBFOX_SOURCE_URI]
|
222
|
+
recipe.target = portsdir = File.expand_path('../../../ports', __FILE__)
|
223
|
+
# Prefer host_alias over host in order to use i586-mingw32msvc as
|
224
|
+
# correct compiler prefix for cross build, but use host if not set.
|
225
|
+
recipe.host = RbConfig::CONFIG["host_alias"].empty? ? RbConfig::CONFIG["host"] : RbConfig::CONFIG["host_alias"]
|
226
|
+
recipe.configure_options = [
|
227
|
+
"--host=#{recipe.host}",
|
228
|
+
"--without-xft",
|
229
|
+
"--without-x",
|
230
|
+
"--enable-shared",
|
231
|
+
"--disable-static",
|
232
|
+
]
|
233
|
+
class << recipe
|
234
|
+
def compile
|
235
|
+
# Add param -no-undefined to libtool to build a win32 shared lib
|
236
|
+
execute "compile", "#{ENV['MAKE'] || "make"} libFOX_1_6_la_LDFLAGS='-version-info 0:49:0 -export-dynamic -no-undefined'"
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
checkpoint = File.join(portsdir, "#{recipe.name}-#{recipe.version}-#{recipe.host}.installed")
|
241
|
+
unless File.exist?(checkpoint)
|
242
|
+
with_env(
|
243
|
+
"CPPFLAGS" => "-I#{libjpeg_recipe.path}/include -I#{libpng_recipe.path}/include -I#{libtiff_recipe.path}/include -I#{libz_recipe.path}/include",
|
244
|
+
"LDFLAGS" => "-L#{libjpeg_recipe.path}/lib -L#{libpng_recipe.path}/lib -L#{libtiff_recipe.path}/lib -L#{libz_recipe.path}/lib"
|
245
|
+
) do
|
246
|
+
recipe.cook
|
247
|
+
FileUtils.touch checkpoint
|
248
|
+
end
|
249
|
+
end
|
250
|
+
recipe.activate
|
251
|
+
end
|
252
|
+
|
253
|
+
libfxscintills_recipe = MiniPortile.new("libfxscintilla", LIBFXSCINTILLA_VERSION).tap do |recipe|
|
254
|
+
recipe.files = [LIBFXSCINTILLA_SOURCE_URI]
|
255
|
+
recipe.target = portsdir = File.expand_path('../../../ports', __FILE__)
|
256
|
+
# Prefer host_alias over host in order to use i586-mingw32msvc as
|
257
|
+
# correct compiler prefix for cross build, but use host if not set.
|
258
|
+
recipe.host = RbConfig::CONFIG["host_alias"].empty? ? RbConfig::CONFIG["host"] : RbConfig::CONFIG["host_alias"]
|
259
|
+
recipe.configure_options = [
|
260
|
+
"--host=#{recipe.host}",
|
261
|
+
"--enable-shared",
|
262
|
+
"--disable-static",
|
263
|
+
]
|
264
|
+
class << recipe
|
265
|
+
attr_accessor :libfox_path
|
266
|
+
def mk
|
267
|
+
"#{ENV['MAKE'] || "make"}"
|
268
|
+
end
|
269
|
+
|
270
|
+
def compile
|
271
|
+
execute "compile_lexers", "cd lexers && #{mk}"
|
272
|
+
execute "compile_lexlib", "cd lexlib && #{mk}"
|
273
|
+
execute "compile_src", "cd src && #{mk}"
|
274
|
+
execute "compile_fox", "cd fox && #{mk} libfxscintilla_la_LDFLAGS='-version-info 23:0:3 -export-dynamic -no-undefined -L#{libfox_path}/lib -lFOX-1.6'"
|
275
|
+
end
|
276
|
+
|
277
|
+
def install
|
278
|
+
execute "install", "cd fox && #{mk} install && cd ../include && #{mk} install"
|
279
|
+
end
|
280
|
+
end
|
281
|
+
recipe.libfox_path = libfox_recipe.path
|
282
|
+
|
283
|
+
checkpoint = File.join(portsdir, "#{recipe.name}-#{recipe.version}-#{recipe.host}.installed")
|
284
|
+
unless File.exist?(checkpoint)
|
285
|
+
recipe.cook
|
286
|
+
FileUtils.touch checkpoint
|
287
|
+
end
|
288
|
+
recipe.activate
|
289
|
+
end
|
290
|
+
|
291
|
+
# have_library( 'gdi32', 'CreateDC' ) && append_library( $libs, 'gdi32' )
|
292
|
+
# have_library( 'opengl32' ) && append_library( $libs, 'opengl32' )
|
293
|
+
# have_library( 'winspool', 'EnumPrintersA') && append_library( $libs, 'winspool' )
|
294
|
+
|
295
|
+
# dir_config('libz', "#{libz_recipe.path}/include", "#{libz_recipe.path}/lib")
|
296
|
+
# dir_config('libpng', "#{libpng_recipe.path}/include", "#{libpng_recipe.path}/lib")
|
297
|
+
# dir_config('libtiff', "#{libtiff_recipe.path}/include", "#{libtiff_recipe.path}/lib")
|
298
|
+
# dir_config('libjpeg', "#{libjpeg_recipe.path}/include", "#{libjpeg_recipe.path}/lib")
|
299
|
+
dir_config('libfox', "#{libfox_recipe.path}/include", "#{libfox_recipe.path}/lib")
|
300
|
+
dir_config('libfxscintilla', "#{libfxscintills_recipe.path}/include", "#{libfxscintills_recipe.path}/lib")
|
301
|
+
|
302
|
+
shared_dlls = [
|
303
|
+
"#{libfxscintills_recipe.path}/bin/libfxscintilla-20.dll",
|
304
|
+
"#{libfox_recipe.path}/bin/libFOX-1.6-0.dll",
|
305
|
+
"#{libjpeg_recipe.path}/bin/libjpeg-8.dll",
|
306
|
+
"#{libpng_recipe.path}/bin/libpng15-15.dll",
|
307
|
+
"#{libtiff_recipe.path}/bin/libtiff-5.dll",
|
308
|
+
"#{libz_recipe.path}/bin/zlib1.dll",
|
309
|
+
]
|
310
|
+
shared_dlls.each do |dll|
|
311
|
+
FileUtils.cp dll, '.', verbose: true
|
312
|
+
end
|
313
|
+
|
314
|
+
gcc_shared_dlls = %w[libwinpthread-1.dll libgcc_s_dw2-1.dll libgcc_s_sjlj-1.dll libgcc_s_seh-1.dll libstdc++-6.dll]
|
315
|
+
gcc_shared_dlls.each do |dll|
|
316
|
+
cmd = "#{CONFIG['CC']} -print-file-name=#{dll}"
|
317
|
+
res = `#{cmd}`.chomp
|
318
|
+
next if dll == res
|
319
|
+
puts "#{cmd} => #{res}"
|
320
|
+
FileUtils.cp `#{cmd}`.chomp, '.', verbose: true
|
321
|
+
end
|
322
|
+
|
323
|
+
CONFIG['CXX'] = "#{RbConfig::CONFIG["host"]}-g++" # CXX setting must be prefixed for cross build
|
324
|
+
CONFIG['CC'] += "\nCXX=#{CONFIG['CXX']}" # Hack CXX into Makefile for cross compilation
|
83
325
|
CONFIG['LDSHARED'].gsub!('gcc', 'g++') # ensure C++ linker is used, so that libstdc++ is linked static
|
84
|
-
$LDFLAGS += " -s
|
326
|
+
$LDFLAGS += " -s" # remove symbol table informations from shared lib
|
327
|
+
|
85
328
|
elsif RUBY_PLATFORM =~ /mingw/
|
86
329
|
$CFLAGS = $CFLAGS + " -I/usr/local/include"
|
87
330
|
$LDFLAGS = $LDFLAGS + " -I/usr/local/lib"
|
@@ -96,9 +339,8 @@ def do_rake_compiler_setup
|
|
96
339
|
$libs = append_library($libs, "stdc++") unless RUBY_PLATFORM =~ /mingw/ || enable_config("win32-static-build")
|
97
340
|
have_header("sys/time.h") unless RUBY_PLATFORM =~ /mingw/ || enable_config("win32-static-build")
|
98
341
|
have_header("signal.h")
|
99
|
-
|
100
|
-
|
101
|
-
end
|
342
|
+
have_library("z", "deflate")
|
343
|
+
have_library("png", "png_create_read_struct")
|
102
344
|
have_library("jpeg", "jpeg_mem_init")
|
103
345
|
have_library("tiff", "TIFFSetErrorHandler")
|
104
346
|
have_library("Xft", "XftInit")
|
@@ -106,11 +348,10 @@ def do_rake_compiler_setup
|
|
106
348
|
find_library("X11", "XFindContext", "/usr/X11R6/lib")
|
107
349
|
find_library("GL", "glXCreateContext", "/usr/X11R6/lib")
|
108
350
|
find_library("GLU", "gluNewQuadric", "/usr/X11R6/lib")
|
109
|
-
$libs = append_library($libs, "FOX-1.6")
|
110
351
|
$libs = append_library($libs, "Xrandr") unless RUBY_PLATFORM =~ /mingw/ || enable_config("win32-static-build")
|
111
352
|
$libs = append_library($libs, "Xcursor") unless RUBY_PLATFORM =~ /mingw/ || enable_config("win32-static-build")
|
112
|
-
$libs = append_library($libs, "png")
|
113
353
|
find_header('FXRbCommon.h', File.join(File.dirname(__FILE__), 'include'))
|
354
|
+
$libs = append_library($libs, "FOX-1.6")
|
114
355
|
if is_fxscintilla_build?
|
115
356
|
FileUtils.move('scintilla_wrap.cpp.bak', 'scintilla_wrap.cpp') if FileTest.exist?('scintilla_wrap.cpp.bak')
|
116
357
|
$CPPFLAGS = $CPPFLAGS + " -DWITH_FXSCINTILLA -DHAVE_FOX_1_6"
|