fxruby 1.6.28-x64-mingw32 → 1.6.29-x64-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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"