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.
Files changed (229) hide show
  1. checksums.yaml +7 -7
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +3 -2
  4. data/.gitignore +1 -1
  5. data/History.txt +13 -1
  6. data/Manifest.txt +1 -1
  7. data/Rakefile +49 -39
  8. data/examples/RAA.rb +8 -2
  9. data/examples/WhatAQuietStiff.rb +2 -2
  10. data/examples/babelfish.rb +9 -2
  11. data/examples/browser.rb +1 -1
  12. data/examples/button.rb +3 -9
  13. data/examples/canvasdemo.rb +3 -3
  14. data/examples/charts.rb +9 -2
  15. data/examples/dctest.rb +4 -10
  16. data/examples/gembrowser.rb +4 -4
  17. data/examples/gltest.rb +3 -3
  18. data/examples/glviewer.rb +3 -9
  19. data/examples/groupbox.rb +3 -9
  20. data/examples/header.rb +1 -1
  21. data/examples/hello2.rb +1 -1
  22. data/examples/iRAA.rb +7 -1
  23. data/examples/iconlist.rb +3 -9
  24. data/examples/imageviewer.rb +3 -9
  25. data/examples/mditest.rb +1 -1
  26. data/examples/raabrowser.rb +8 -2
  27. data/examples/rmagick.rb +7 -1
  28. data/examples/shutter.rb +3 -9
  29. data/examples/splitter.rb +3 -9
  30. data/examples/table.rb +26 -3
  31. data/examples/textedit/textedit.rb +3 -3
  32. data/ext/fox16_c/FXRbApp.cpp +1 -1
  33. data/ext/fox16_c/FXRuby.cpp +18 -9
  34. data/ext/fox16_c/extconf.rb +252 -11
  35. data/ext/fox16_c/include/FXRbTreeList.h +3 -3
  36. data/ext/fox16_c/include/FXRuby.h +7 -6
  37. data/ext/fox16_c/markfuncs.cpp +3 -22
  38. data/ext/fox16_c/unregisterOwnedObjects.cpp +1 -2
  39. data/lib/2.0/fox16_c.so +0 -0
  40. data/lib/2.1/fox16_c.so +0 -0
  41. data/lib/2.2/fox16_c.so +0 -0
  42. data/lib/fox16.rb +16 -6
  43. data/lib/fox16/core.rb +14 -0
  44. data/lib/fox16/glshapes.rb +1 -0
  45. data/lib/fox16/version.rb +1 -1
  46. data/lib/x64-mingw32/libFOX-1.6-0.dll +0 -0
  47. data/lib/x64-mingw32/libfxscintilla-20.dll +0 -0
  48. data/lib/x64-mingw32/libgcc_s_sjlj-1.dll +0 -0
  49. data/lib/x64-mingw32/libjpeg-8.dll +0 -0
  50. data/lib/x64-mingw32/libpng15-15.dll +0 -0
  51. data/lib/x64-mingw32/libstdc++-6.dll +0 -0
  52. data/lib/x64-mingw32/libtiff-5.dll +0 -0
  53. data/lib/x64-mingw32/libwinpthread-1.dll +0 -0
  54. data/lib/x64-mingw32/zlib1.dll +0 -0
  55. data/rdoc-sources/FXBMPIcon.rb +1 -1
  56. data/rdoc-sources/FXImage.rb +8 -2
  57. data/swig-interfaces/FX4Splitter.i +0 -6
  58. data/swig-interfaces/FX7Segment.i +0 -8
  59. data/swig-interfaces/FXAccelTable.i +0 -7
  60. data/swig-interfaces/FXApp.i +15 -23
  61. data/swig-interfaces/FXArrowButton.i +0 -10
  62. data/swig-interfaces/FXBMPIcon.i +0 -2
  63. data/swig-interfaces/FXBMPImage.i +0 -2
  64. data/swig-interfaces/FXBitmap.i +0 -6
  65. data/swig-interfaces/FXButton.i +0 -4
  66. data/swig-interfaces/FXCURCursor.i +0 -2
  67. data/swig-interfaces/FXCanvas.i +0 -2
  68. data/swig-interfaces/FXCheckButton.i +0 -7
  69. data/swig-interfaces/FXChoiceBox.i +0 -8
  70. data/swig-interfaces/FXColorBar.i +0 -8
  71. data/swig-interfaces/FXColorDialog.i +0 -4
  72. data/swig-interfaces/FXColorList.i +0 -9
  73. data/swig-interfaces/FXColorRing.i +0 -40
  74. data/swig-interfaces/FXColorSelector.i +0 -25
  75. data/swig-interfaces/FXColorWell.i +0 -10
  76. data/swig-interfaces/FXColorWheel.i +0 -15
  77. data/swig-interfaces/FXComboBox.i +0 -7
  78. data/swig-interfaces/FXComposeContext.i +0 -5
  79. data/swig-interfaces/FXComposite.i +0 -4
  80. data/swig-interfaces/FXCursor.i +0 -9
  81. data/swig-interfaces/FXDC.i +0 -26
  82. data/swig-interfaces/FXDCPrint.i +0 -19
  83. data/swig-interfaces/FXDataTarget.i +0 -5
  84. data/swig-interfaces/FXDebugTarget.i +0 -4
  85. data/swig-interfaces/FXDelegator.i +0 -2
  86. data/swig-interfaces/FXDial.i +0 -14
  87. data/swig-interfaces/FXDialogBox.i +0 -2
  88. data/swig-interfaces/FXDict.i +0 -27
  89. data/swig-interfaces/FXDirDialog.i +0 -5
  90. data/swig-interfaces/FXDirList.i +0 -31
  91. data/swig-interfaces/FXDirSelector.i +0 -19
  92. data/swig-interfaces/FXDockBar.i +0 -8
  93. data/swig-interfaces/FXDockHandler.i +0 -10
  94. data/swig-interfaces/FXDockSite.i +0 -7
  95. data/swig-interfaces/FXDockTitle.i +0 -6
  96. data/swig-interfaces/FXDragCorner.i +0 -9
  97. data/swig-interfaces/FXDrawable.i +0 -7
  98. data/swig-interfaces/FXFileDialog.i +0 -5
  99. data/swig-interfaces/FXFileDict.i +0 -5
  100. data/swig-interfaces/FXFileList.i +0 -23
  101. data/swig-interfaces/FXFileSelector.i +0 -33
  102. data/swig-interfaces/FXFoldingList.i +6 -19
  103. data/swig-interfaces/FXFont.i +0 -20
  104. data/swig-interfaces/FXFontDialog.i +3 -7
  105. data/swig-interfaces/FXFontSelector.i +3 -29
  106. data/swig-interfaces/FXFrame.i +0 -20
  107. data/swig-interfaces/FXGIFIcon.i +0 -2
  108. data/swig-interfaces/FXGIFImage.i +0 -2
  109. data/swig-interfaces/FXGLCanvas.i +0 -4
  110. data/swig-interfaces/FXGLContext.i +0 -4
  111. data/swig-interfaces/FXGLShape.i +0 -11
  112. data/swig-interfaces/FXGLViewer.i +0 -65
  113. data/swig-interfaces/FXGradientBar.i +8 -9
  114. data/swig-interfaces/FXGroupBox.i +0 -6
  115. data/swig-interfaces/FXHeader.i +0 -24
  116. data/swig-interfaces/FXHorizontalFrame.i +0 -2
  117. data/swig-interfaces/FXICOIcon.i +0 -2
  118. data/swig-interfaces/FXICOImage.i +0 -2
  119. data/swig-interfaces/FXIcon.i +0 -7
  120. data/swig-interfaces/FXIconList.i +0 -51
  121. data/swig-interfaces/FXIconSource.i +0 -4
  122. data/swig-interfaces/FXId.i +0 -4
  123. data/swig-interfaces/FXImage.i +21 -4
  124. data/swig-interfaces/FXImageFrame.i +0 -7
  125. data/swig-interfaces/FXImageView.i +0 -6
  126. data/swig-interfaces/FXInputDialog.i +0 -8
  127. data/swig-interfaces/FXJPGIcon.i +0 -4
  128. data/swig-interfaces/FXJPGImage.i +0 -4
  129. data/swig-interfaces/FXKnob.i +0 -12
  130. data/swig-interfaces/FXLabel.i +0 -16
  131. data/swig-interfaces/FXList.i +0 -33
  132. data/swig-interfaces/FXListBox.i +0 -7
  133. data/swig-interfaces/FXMDIButton.i +0 -12
  134. data/swig-interfaces/FXMDIChild.i +0 -51
  135. data/swig-interfaces/FXMDIClient.i +0 -6
  136. data/swig-interfaces/FXMainWindow.i +0 -2
  137. data/swig-interfaces/FXMat3d.i +0 -2
  138. data/swig-interfaces/FXMat3f.i +0 -2
  139. data/swig-interfaces/FXMat4d.i +0 -2
  140. data/swig-interfaces/FXMat4f.i +0 -2
  141. data/swig-interfaces/FXMatrix.i +0 -4
  142. data/swig-interfaces/FXMemoryStream.i +0 -1
  143. data/swig-interfaces/FXMenuBar.i +0 -2
  144. data/swig-interfaces/FXMenuButton.i +0 -7
  145. data/swig-interfaces/FXMenuCaption.i +0 -15
  146. data/swig-interfaces/FXMenuCascade.i +0 -5
  147. data/swig-interfaces/FXMenuCheck.i +0 -8
  148. data/swig-interfaces/FXMenuCommand.i +0 -5
  149. data/swig-interfaces/FXMenuPane.i +0 -2
  150. data/swig-interfaces/FXMenuRadio.i +0 -8
  151. data/swig-interfaces/FXMenuSeparator.i +0 -5
  152. data/swig-interfaces/FXMenuTitle.i +0 -4
  153. data/swig-interfaces/FXMessageBox.i +13 -10
  154. data/swig-interfaces/FXOptionMenu.i +0 -7
  155. data/swig-interfaces/FXPCXIcon.i +0 -2
  156. data/swig-interfaces/FXPCXImage.i +0 -2
  157. data/swig-interfaces/FXPNGIcon.i +0 -2
  158. data/swig-interfaces/FXPNGImage.i +0 -2
  159. data/swig-interfaces/FXPPMIcon.i +0 -2
  160. data/swig-interfaces/FXPPMImage.i +0 -2
  161. data/swig-interfaces/FXPacker.i +0 -23
  162. data/swig-interfaces/FXPicker.i +0 -2
  163. data/swig-interfaces/FXPopup.i +0 -18
  164. data/swig-interfaces/FXPrintDialog.i +0 -31
  165. data/swig-interfaces/FXProgressBar.i +0 -12
  166. data/swig-interfaces/FXProgressDialog.i +0 -8
  167. data/swig-interfaces/FXRGBIcon.i +0 -2
  168. data/swig-interfaces/FXRGBImage.i +0 -2
  169. data/swig-interfaces/FXRadioButton.i +0 -7
  170. data/swig-interfaces/FXRecentFiles.i +0 -6
  171. data/swig-interfaces/FXRegion.i +0 -2
  172. data/swig-interfaces/FXRegistry.i +0 -12
  173. data/swig-interfaces/FXReplaceDialog.i +0 -15
  174. data/swig-interfaces/FXRootWindow.i +0 -6
  175. data/swig-interfaces/FXRuler.i +0 -45
  176. data/swig-interfaces/FXScrollArea.i +0 -14
  177. data/swig-interfaces/FXScrollBar.i +0 -2
  178. data/swig-interfaces/FXScrollPane.i +0 -10
  179. data/swig-interfaces/FXScrollWindow.i +0 -2
  180. data/swig-interfaces/FXSearchDialog.i +0 -2
  181. data/swig-interfaces/FXSeparator.i +0 -9
  182. data/swig-interfaces/FXSettings.i +0 -11
  183. data/swig-interfaces/FXShell.i +0 -4
  184. data/swig-interfaces/FXShutter.i +0 -14
  185. data/swig-interfaces/FXSlider.i +0 -19
  186. data/swig-interfaces/FXSpinner.i +0 -9
  187. data/swig-interfaces/FXSplashWindow.i +0 -8
  188. data/swig-interfaces/FXSplitter.i +0 -10
  189. data/swig-interfaces/FXSpring.i +0 -8
  190. data/swig-interfaces/FXStatusBar.i +0 -5
  191. data/swig-interfaces/FXStatusLine.i +0 -8
  192. data/swig-interfaces/FXStringDict.i +0 -3
  193. data/swig-interfaces/FXSwitcher.i +0 -4
  194. data/swig-interfaces/FXTGAIcon.i +0 -2
  195. data/swig-interfaces/FXTGAImage.i +0 -2
  196. data/swig-interfaces/FXTIFIcon.i +0 -4
  197. data/swig-interfaces/FXTIFImage.i +0 -4
  198. data/swig-interfaces/FXTabBar.i +0 -5
  199. data/swig-interfaces/FXTabBook.i +0 -2
  200. data/swig-interfaces/FXTabItem.i +0 -2
  201. data/swig-interfaces/FXTable.i +0 -17
  202. data/swig-interfaces/FXToggleButton.i +0 -12
  203. data/swig-interfaces/FXToolBarGrip.i +0 -4
  204. data/swig-interfaces/FXToolBarShell.i +0 -16
  205. data/swig-interfaces/FXToolBarTab.i +0 -13
  206. data/swig-interfaces/FXToolTip.i +0 -10
  207. data/swig-interfaces/FXTopWindow.i +0 -17
  208. data/swig-interfaces/FXTranslator.i +0 -2
  209. data/swig-interfaces/FXTreeList.i +18 -75
  210. data/swig-interfaces/FXTreeListBox.i +18 -38
  211. data/swig-interfaces/FXVerticalFrame.i +0 -2
  212. data/swig-interfaces/FXVisual.i +0 -38
  213. data/swig-interfaces/FXWindow.i +3 -53
  214. data/swig-interfaces/FXWizard.i +0 -17
  215. data/swig-interfaces/FXXBMIcon.i +0 -2
  216. data/swig-interfaces/FXXBMImage.i +0 -2
  217. data/swig-interfaces/FXXPMIcon.i +0 -2
  218. data/swig-interfaces/FXXPMImage.i +0 -2
  219. data/swig-interfaces/fxdefs.i +33 -35
  220. data/swig-interfaces/ruby-typemaps.i +19 -2
  221. data/test/TC_FXBMPImage.rb +13 -0
  222. data/test/TC_FXFileStream.rb +3 -3
  223. data/test/TC_FXImage.rb +40 -2
  224. data/test/TC_FXSize.rb +12 -0
  225. data/test/TC_FXWindow.rb +26 -0
  226. data/test/TC_Misc.rb +2 -0
  227. metadata +175 -159
  228. metadata.gz.sig +0 -0
  229. data/Rakefile.cross +0 -421
data/examples/header.rb CHANGED
@@ -55,7 +55,7 @@ class HeaderWindow < FXMainWindow
55
55
 
56
56
  # Document icon
57
57
  doc = nil
58
- File.open(File.join("icons", "minidoc.png"), "rb") do |f|
58
+ File.open(File.expand_path("../icons/minidoc.png", __FILE__), "rb") do |f|
59
59
  doc = FXPNGIcon.new(getApp(), f.read)
60
60
  end
61
61
 
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.join("icons", "hello2.png"), "rb") { |f|
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
@@ -1,4 +1,10 @@
1
- require 'soap/mapping'
1
+ begin
2
+ require 'soap/mapping'
3
+ rescue LoadError
4
+ warn("Sorry, at the moment this example is not working.")
5
+ sleep(5)
6
+ exit(false)
7
+ end
2
8
 
3
9
 
4
10
  module RAA; extend SOAP
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
- begin
10
- filename = File.join("icons", filename)
11
- icon = nil
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
 
@@ -240,15 +240,9 @@ class ImageWindow < FXMainWindow
240
240
 
241
241
  # Convenience function to construct a PNG icon
242
242
  def getIcon(filename)
243
- begin
244
- filename = File.join("icons", filename)
245
- icon = nil
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.join("icons", "penguin.png"), "rb") do |f|
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
 
@@ -1,6 +1,12 @@
1
1
  require 'fox16'
2
- require 'cgi'
3
- require 'soap/wsdlDriver'
2
+ begin
3
+ require 'cgi'
4
+ require 'soap/wsdlDriver'
5
+ rescue LoadError
6
+ warn("Sorry, at the moment this example is not working.")
7
+ sleep(5)
8
+ exit(false)
9
+ end
4
10
 
5
11
  include Fox
6
12
 
data/examples/rmagick.rb CHANGED
@@ -1,5 +1,11 @@
1
1
  require 'fox16'
2
- require 'RMagick'
2
+ begin
3
+ require 'RMagick'
4
+ rescue LoadError
5
+ warn("LoadError: To execute this app you need to have 'RMagick' gem installed.")
6
+ sleep(5)
7
+ exit(false)
8
+ end
3
9
 
4
10
  include Fox
5
11
 
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
- begin
32
- filename = File.join("icons", filename)
33
- icon = nil
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
- begin
12
- filename = File.join("icons", filename)
13
- icon = nil
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.join('icons', 'penguin.png'), 'rb') do |f|
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
- # Table
36
- @table = FXTable.new(frame,
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
 
@@ -3,9 +3,9 @@
3
3
  require 'fox16'
4
4
  require 'fox16/responder'
5
5
  require 'fox16/undolist'
6
- require 'prefdialog'
7
- require 'helpwindow'
8
- require 'commands'
6
+ require_relative 'prefdialog'
7
+ require_relative 'helpwindow'
8
+ require_relative 'commands'
9
9
 
10
10
  include Fox
11
11
 
@@ -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;
@@ -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=SWIG_Ruby_TypeQuery(desc);
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 SWIG_Ruby_ConvertPtr().
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
- SWIG_Ruby_ConvertPtr(obj,&ptr,ty,1);
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(FXMALLOC(&pix,FXColor,RSTRING_LEN(string_or_ary)/sizeof(FXColor))){
476
- memcpy(pix, RSTRING_PTR(string_or_ary), RSTRING_LEN(string_or_ary));
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
- SWIG_Ruby_ConvertPtr(value,&ptr,FXRbTypeQuery("FXEvent *"),1);
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
- SWIG_Ruby_ConvertPtr(value,&ptr,FXRbTypeQuery("FXPoint *"),1);
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
- SWIG_Ruby_ConvertPtr(value,&ptr,FXRbTypeQuery("FXEvent *"),1);
1214
+ SWIG_ConvertPtr(value,&ptr,FXRbTypeQuery("FXEvent *"),1);
1206
1215
  return ptr;
1207
1216
  }
1208
1217
 
@@ -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-static-build")
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
- CONFIG['CC'] += "\nCXX=#{RbConfig::CONFIG["host"]}-g++" # Hack CXX into Makefile for cross compilation
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 -static-libgcc -static-libstdc++" # mingw-w64 v4.7 defaults to dynamic linking
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
- if have_library("z", "deflate")
100
- have_library("png", "png_create_read_struct")
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"