Mxx_ru 1.1.0

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 (147) hide show
  1. data/COPYING +26 -0
  2. data/NEWS +52 -0
  3. data/README +21 -0
  4. data/Rakefile +32 -0
  5. data/examples/exe_and_lib/main.cpp +15 -0
  6. data/examples/exe_and_lib/prj.rb +11 -0
  7. data/examples/exe_and_lib/say.cpp +13 -0
  8. data/examples/exe_and_lib/say.hpp +11 -0
  9. data/examples/exe_and_lib/say.rb +7 -0
  10. data/examples/exe_dll_lib/inout.cpp +15 -0
  11. data/examples/exe_dll_lib/inout.hpp +26 -0
  12. data/examples/exe_dll_lib/inout.rb +18 -0
  13. data/examples/exe_dll_lib/main.cpp +23 -0
  14. data/examples/exe_dll_lib/prj.rb +11 -0
  15. data/examples/exe_dll_lib/say.cpp +13 -0
  16. data/examples/exe_dll_lib/say.hpp +12 -0
  17. data/examples/exe_dll_lib/say.rb +9 -0
  18. data/examples/exe_dll_lib_2/build.rb +7 -0
  19. data/examples/exe_dll_lib_2/inout/inout.cpp +15 -0
  20. data/examples/exe_dll_lib_2/inout/inout.hpp +26 -0
  21. data/examples/exe_dll_lib_2/inout/prj.rb +16 -0
  22. data/examples/exe_dll_lib_2/main/main.cpp +23 -0
  23. data/examples/exe_dll_lib_2/main/prj.rb +9 -0
  24. data/examples/exe_dll_lib_2/say/prj.rb +8 -0
  25. data/examples/exe_dll_lib_2/say/say.cpp +13 -0
  26. data/examples/exe_dll_lib_2/say/say.hpp +12 -0
  27. data/examples/simple_exe/main.cpp +26 -0
  28. data/examples/simple_exe/prj.rb +7 -0
  29. data/lib/mxx_ru/abstract_target.rb +283 -0
  30. data/lib/mxx_ru/binary_target.rb +89 -0
  31. data/lib/mxx_ru/binary_unittest.rb +130 -0
  32. data/lib/mxx_ru/cpp/analyzer.rb +230 -0
  33. data/lib/mxx_ru/cpp/composite.rb +106 -0
  34. data/lib/mxx_ru/cpp/detect_toolset.rb +122 -0
  35. data/lib/mxx_ru/cpp/mode.rb +85 -0
  36. data/lib/mxx_ru/cpp/obj_placement.rb +321 -0
  37. data/lib/mxx_ru/cpp/qt.rb +333 -0
  38. data/lib/mxx_ru/cpp/rucodegen.rb +114 -0
  39. data/lib/mxx_ru/cpp/source_file.rb +71 -0
  40. data/lib/mxx_ru/cpp/target.rb +1371 -0
  41. data/lib/mxx_ru/cpp/toolset.rb +1029 -0
  42. data/lib/mxx_ru/cpp/toolsets/bcc_win32_5.rb +52 -0
  43. data/lib/mxx_ru/cpp/toolsets/bcc_win32_family.rb +451 -0
  44. data/lib/mxx_ru/cpp/toolsets/c89_etk_nsk.rb +56 -0
  45. data/lib/mxx_ru/cpp/toolsets/c89_nsk.rb +56 -0
  46. data/lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb +273 -0
  47. data/lib/mxx_ru/cpp/toolsets/gcc_cygwin.rb +54 -0
  48. data/lib/mxx_ru/cpp/toolsets/gcc_family.rb +382 -0
  49. data/lib/mxx_ru/cpp/toolsets/gcc_linux.rb +60 -0
  50. data/lib/mxx_ru/cpp/toolsets/gcc_mingw.rb +144 -0
  51. data/lib/mxx_ru/cpp/toolsets/gcc_sparc_solaris.rb +87 -0
  52. data/lib/mxx_ru/cpp/toolsets/vc7.rb +62 -0
  53. data/lib/mxx_ru/cpp/toolsets/vc8.rb +452 -0
  54. data/lib/mxx_ru/cpp/toolsets/vc_family.rb +428 -0
  55. data/lib/mxx_ru/cpp.rb +36 -0
  56. data/lib/mxx_ru/ex.rb +134 -0
  57. data/lib/mxx_ru/makestyle_generator.rb +138 -0
  58. data/lib/mxx_ru/textfile_unittest.rb +284 -0
  59. data/lib/mxx_ru/util.rb +258 -0
  60. data/tests/c/pcre/chartables.c +183 -0
  61. data/tests/c/pcre/config.h +99 -0
  62. data/tests/c/pcre/dftables.c +167 -0
  63. data/tests/c/pcre/get.c +349 -0
  64. data/tests/c/pcre/internal.h +677 -0
  65. data/tests/c/pcre/maketables.c +140 -0
  66. data/tests/c/pcre/pcre.c +8304 -0
  67. data/tests/c/pcre/pcre.h +193 -0
  68. data/tests/c/pcre/pcre.rb +14 -0
  69. data/tests/c/pcre/pcredemo.c +316 -0
  70. data/tests/c/pcre/pcregrep.c +642 -0
  71. data/tests/c/pcre/pcreposix.c +305 -0
  72. data/tests/c/pcre/pcreposix.h +88 -0
  73. data/tests/c/pcre/pcretest.c +1483 -0
  74. data/tests/c/pcre/perltest +211 -0
  75. data/tests/c/pcre/printint.c +360 -0
  76. data/tests/c/pcre/study.c +472 -0
  77. data/tests/cpp/mswin_res_dll/build.rb +14 -0
  78. data/tests/cpp/mswin_res_dll/dll.cpp +17 -0
  79. data/tests/cpp/mswin_res_dll/dll.rb +30 -0
  80. data/tests/cpp/mswin_res_dll/dll.rc +48 -0
  81. data/tests/cpp/mswin_res_dll/h/dll.hpp +8 -0
  82. data/tests/cpp/mswin_res_dll/h/res.h +3 -0
  83. data/tests/cpp/mswin_res_dll/main.cpp +13 -0
  84. data/tests/cpp/mswin_res_dll/main.rb +20 -0
  85. data/tests/cpp/mswin_res_dll/res/tree_fol.bmp +0 -0
  86. data/tests/cpp/mswin_res_dll/res/tree_state_1.bmp +0 -0
  87. data/tests/cpp/mswin_res_dll/res/tree_state_2.bmp +0 -0
  88. data/tests/cpp/mswin_res_exe/build.rb +23 -0
  89. data/tests/cpp/mswin_res_exe/h/res.h +3 -0
  90. data/tests/cpp/mswin_res_exe/main.cpp +17 -0
  91. data/tests/cpp/mswin_res_exe/main.rc +48 -0
  92. data/tests/cpp/mswin_res_exe/res/tree_fol.bmp +0 -0
  93. data/tests/cpp/mswin_res_exe/res/tree_state_1.bmp +0 -0
  94. data/tests/cpp/mswin_res_exe/res/tree_state_2.bmp +0 -0
  95. data/tests/cpp/rucodegen/host_config.cpp +20 -0
  96. data/tests/cpp/rucodegen/host_config.rb +14 -0
  97. data/tests/cpp/rucodegen/impl/conn_params.cpp +7 -0
  98. data/tests/cpp/rucodegen/impl/conn_params.rb +14 -0
  99. data/tests/cpp/rucodegen/impl/h/conn_params.hpp +10 -0
  100. data/tests/cpp/rucodegen/prj.rb +17 -0
  101. data/tests/cpp/textfile_unittest/build.rb +8 -0
  102. data/tests/cpp/textfile_unittest/etalons/out_0.txt +0 -0
  103. data/tests/cpp/textfile_unittest/etalons/out_1.txt +1 -0
  104. data/tests/cpp/textfile_unittest/etalons/out_128.txt +128 -0
  105. data/tests/cpp/textfile_unittest/main.cpp +89 -0
  106. data/tests/cpp/textfile_unittest/prj.rb +8 -0
  107. data/tests/cpp/textfile_unittest/prj.ut.rb +18 -0
  108. data/tests/cpp/toolset_name.rb +6 -0
  109. data/tests/cpp/vc_cleanup/cout.log +72 -0
  110. data/tests/cpp/vc_cleanup/dll_hi.cpp +5 -0
  111. data/tests/cpp/vc_cleanup/exe_hi.cpp +10 -0
  112. data/tests/cpp/vc_cleanup/lib_hi.cpp +5 -0
  113. data/tests/cpp/vc_cleanup/prj_dll_no_implib.rb +10 -0
  114. data/tests/cpp/vc_cleanup/prj_dll_no_implib_simple_target_root.rb +11 -0
  115. data/tests/cpp/vc_cleanup/prj_dll_with_implib.rb +11 -0
  116. data/tests/cpp/vc_cleanup/prj_dll_with_implib_simple_target_root.rb +14 -0
  117. data/tests/cpp/vc_cleanup/prj_exe_no_implib.rb +10 -0
  118. data/tests/cpp/vc_cleanup/prj_exe_no_implib_simple_target_root.rb +11 -0
  119. data/tests/cpp/vc_cleanup/prj_lib.rb +10 -0
  120. data/tests/cpp/vc_cleanup/prj_lib_with_simple_target_root.rb +11 -0
  121. data/tests/cpp/vc_cleanup/tc_vc_cleanup.rb +60 -0
  122. data/tests/mxx_ru/change_default_value/ignoring_by_build_root/build.rb +8 -0
  123. data/tests/mxx_ru/change_default_value/ignoring_by_build_root/child_1.rb +5 -0
  124. data/tests/mxx_ru/change_default_value/ignoring_by_child_1/build.rb +7 -0
  125. data/tests/mxx_ru/change_default_value/ignoring_by_child_1/child_1.rb +5 -0
  126. data/tests/mxx_ru/change_default_value/ignoring_by_child_1/child_2.rb +5 -0
  127. data/tests/mxx_ru/change_default_value/ok/build.rb +8 -0
  128. data/tests/mxx_ru/change_default_value/ok/child_1.rb +8 -0
  129. data/tests/mxx_ru/tc_makestyle_generator.rb +117 -0
  130. data/tests/mxx_ru/vc8/tc_actual_manifest.rb +230 -0
  131. data/tests/mxx_ru/vc8/tc_append_mt_commands.rb +104 -0
  132. data/tests/mxx_ru/vc8/tc_default_manifest.rb +17 -0
  133. data/tests/mxx_ru/vc8/tc_define_manifest.rb +173 -0
  134. data/tests/mxx_ru/vc8/tc_drop_default_manifest.rb +16 -0
  135. data/tests/mxx_ru/vc8/tc_invalid_params.rb +81 -0
  136. data/tests/mxx_ru/vc8/ts_vc8.rb +10 -0
  137. data/tests/qt/aclock/aclock.cpp +148 -0
  138. data/tests/qt/aclock/aclock.h +45 -0
  139. data/tests/qt/aclock/main.cpp +28 -0
  140. data/tests/qt/aclock/prj.rb +21 -0
  141. data/tests/qt/iconview/main.cpp +76 -0
  142. data/tests/qt/iconview/prj.rb +21 -0
  143. data/tests/qt/toplevel/main.cpp +9 -0
  144. data/tests/qt/toplevel/options.ui +587 -0
  145. data/tests/qt/toplevel/options.ui.h +98 -0
  146. data/tests/qt/toplevel/prj.rb +21 -0
  147. metadata +241 -0
@@ -0,0 +1,16 @@
1
+ require 'test/unit'
2
+
3
+ require 'mxx_ru/cpp'
4
+ require 'mxx_ru/cpp/toolsets/vc8'
5
+
6
+ class TC_DropDefaultManifest < Test::Unit::TestCase
7
+ def test_drop_default_manifest
8
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest( nil )
9
+
10
+ manifest_desc = Mxx_ru::Cpp::Toolsets::Vc8::default_manifest
11
+
12
+ assert_nil( manifest_desc )
13
+ end
14
+ end
15
+
16
+
@@ -0,0 +1,81 @@
1
+ require 'test/unit'
2
+
3
+ require 'mxx_ru/cpp'
4
+ require 'mxx_ru/cpp/toolsets/vc8'
5
+
6
+ class TC_DefaultManifest < Test::Unit::TestCase
7
+ def test_invalid_resource_id
8
+ assert_nothing_raised() do
9
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest \
10
+ :autogen => :to_default_file,
11
+ :mt => {}
12
+ end
13
+
14
+ assert_nothing_raised() do
15
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest :mt => {
16
+ :manifest => 'some_file',
17
+ :resource_id => :default }
18
+
19
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest :mt => {
20
+ :manifest => 'some_file',
21
+ :resource_id => :process_manifest }
22
+
23
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest \
24
+ :autogen => :to_default_file,
25
+ :mt => { :resource_id => :isolationaware_manifest }
26
+
27
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest \
28
+ :autogen => 'some_file',
29
+ :mt => { :resource_id => :isolationaware_nostaticimport_manifest }
30
+ end
31
+
32
+ assert_raise( Mxx_ru::Invalid_value_ex ) do
33
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest :mt => {
34
+ :manifest => 'some_file',
35
+ :resource_id => :process_manifest_id }
36
+ end
37
+ end
38
+
39
+ def test_missing_manifest_name
40
+ assert_raise( Mxx_ru::Invalid_value_ex ) do
41
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest :mt => {
42
+ :resource_id => :process_manifest }
43
+ end
44
+ end
45
+
46
+ def test_invalid_autogen
47
+ assert_nothing_raised() do
48
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest :autogen => :to_default_file
49
+
50
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest :autogen => 'some_file'
51
+ end
52
+
53
+ assert_raise( Mxx_ru::Invalid_value_ex ) do
54
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest :autogen => :to_def_file
55
+ end
56
+
57
+ assert_raise( Mxx_ru::Invalid_value_ex ) do
58
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest :autogen => 1
59
+ end
60
+ end
61
+
62
+ def test_keep_manifest_file
63
+ assert_nothing_raised() do
64
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest \
65
+ :autogen => :to_default_file,
66
+ :mt => { :keep_manifest_file => true }
67
+
68
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest \
69
+ :autogen => :to_default_file,
70
+ :mt => { :keep_manifest_file => false }
71
+ end
72
+
73
+ assert_raise( Mxx_ru::Invalid_value_ex ) do
74
+ Mxx_ru::Cpp::Toolsets::Vc8::manifest \
75
+ :autogen => :to_default_file,
76
+ :mt => { :keep_manifest_file => 1 }
77
+ end
78
+ end
79
+ end
80
+
81
+
@@ -0,0 +1,10 @@
1
+ $:.unshift( File.dirname( __FILE__ ) )
2
+
3
+ require 'test/unit'
4
+
5
+ require 'tc_invalid_params'
6
+ require 'tc_default_manifest'
7
+ require 'tc_drop_default_manifest'
8
+ require 'tc_define_manifest'
9
+ require 'tc_actual_manifest'
10
+ require 'tc_append_mt_commands'
@@ -0,0 +1,148 @@
1
+ /****************************************************************************
2
+ ** $Id: qt/aclock.cpp 3.3.3 edited Dec 10 2003 $
3
+ **
4
+ ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
5
+ **
6
+ ** This file is part of an example program for Qt. This example
7
+ ** program may be used, distributed and modified without limitation.
8
+ **
9
+ *****************************************************************************/
10
+
11
+ #include "aclock.h"
12
+ #include <qtimer.h>
13
+ #include <qpainter.h>
14
+ #include <qbitmap.h>
15
+
16
+ //
17
+ // Constructs an analog clock widget that uses an internal QTimer.
18
+ //
19
+
20
+ AnalogClock::AnalogClock( QWidget *parent, const char *name )
21
+ : QWidget( parent, name )
22
+ {
23
+ time = QTime::currentTime(); // get current time
24
+ internalTimer = new QTimer( this ); // create internal timer
25
+ connect( internalTimer, SIGNAL(timeout()), SLOT(timeout()) );
26
+ internalTimer->start( 5000 ); // emit signal every 5 seconds
27
+ }
28
+
29
+ void AnalogClock::mousePressEvent( QMouseEvent *e )
30
+ {
31
+ if(isTopLevel())
32
+ clickPos = e->pos() + QPoint(geometry().topLeft() - frameGeometry().topLeft());
33
+ }
34
+
35
+ void AnalogClock::mouseMoveEvent( QMouseEvent *e )
36
+ {
37
+ if(isTopLevel())
38
+ move( e->globalPos() - clickPos );
39
+ }
40
+
41
+ //
42
+ // The QTimer::timeout() signal is received by this slot.
43
+ //
44
+
45
+ //
46
+ // When we set an explicit time we don't want the timeout() slot to be
47
+ // called anymore as this relies on currentTime()
48
+ //
49
+ void AnalogClock::setTime( const QTime & t )
50
+ {
51
+ time = t;
52
+ disconnect( internalTimer, SIGNAL(timeout()), this, SLOT(timeout()) );
53
+ if (autoMask())
54
+ updateMask();
55
+ else
56
+ update();
57
+ }
58
+
59
+
60
+ void AnalogClock::timeout()
61
+ {
62
+ QTime old_time = time;
63
+ time = QTime::currentTime();
64
+ if ( old_time.minute() != time.minute()
65
+ || old_time.hour() != time.hour() ) { // minute or hour has changed
66
+ if (autoMask())
67
+ updateMask();
68
+ else
69
+ update();
70
+ }
71
+ }
72
+
73
+
74
+ void AnalogClock::paintEvent( QPaintEvent * )
75
+ {
76
+ if ( autoMask() )
77
+ return;
78
+ QPainter paint( this );
79
+ paint.setBrush( colorGroup().foreground() );
80
+ drawClock( &paint );
81
+ }
82
+
83
+ // If the clock is transparent, we use updateMask()
84
+ // instead of paintEvent()
85
+
86
+ void AnalogClock::updateMask() // paint clock mask
87
+ {
88
+ QBitmap bm( size() );
89
+ bm.fill( color0 ); //transparent
90
+
91
+ QPainter paint;
92
+ paint.begin( &bm, this );
93
+ paint.setBrush( color1 ); // use non-transparent color
94
+ paint.setPen( color1 );
95
+
96
+ drawClock( &paint );
97
+
98
+ paint.end();
99
+ setMask( bm );
100
+ }
101
+
102
+ //
103
+ // The clock is painted using a 1000x1000 square coordinate system, in
104
+ // the a centered square, as big as possible. The painter's pen and
105
+ // brush colors are used.
106
+ //
107
+ void AnalogClock::drawClock( QPainter *paint )
108
+ {
109
+ paint->save();
110
+
111
+ paint->setWindow( -500,-500, 1000,1000 );
112
+
113
+ QRect v = paint->viewport();
114
+ int d = QMIN( v.width(), v.height() );
115
+ paint->setViewport( v.left() + (v.width()-d)/2,
116
+ v.top() + (v.height()-d)/2, d, d );
117
+
118
+ QPointArray pts;
119
+
120
+ paint->save();
121
+ paint->rotate( 30*(time.hour()%12-3) + time.minute()/2 );
122
+ pts.setPoints( 4, -20,0, 0,-20, 300,0, 0,20 );
123
+ paint->drawConvexPolygon( pts );
124
+ paint->restore();
125
+
126
+ paint->save();
127
+ paint->rotate( (time.minute()-15)*6 );
128
+ pts.setPoints( 4, -10,0, 0,-10, 400,0, 0,10 );
129
+ paint->drawConvexPolygon( pts );
130
+ paint->restore();
131
+
132
+ for ( int i=0; i<12; i++ ) {
133
+ paint->drawLine( 440,0, 460,0 );
134
+ paint->rotate( 30 );
135
+ }
136
+
137
+ paint->restore();
138
+ }
139
+
140
+
141
+ void AnalogClock::setAutoMask(bool b)
142
+ {
143
+ if (b)
144
+ setBackgroundMode( PaletteForeground );
145
+ else
146
+ setBackgroundMode( PaletteBackground );
147
+ QWidget::setAutoMask(b);
148
+ }
@@ -0,0 +1,45 @@
1
+ /****************************************************************************
2
+ ** $Id: qt/aclock.h 3.3.3 edited Dec 10 2003 $
3
+ **
4
+ ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
5
+ **
6
+ ** This file is part of an example program for Qt. This example
7
+ ** program may be used, distributed and modified without limitation.
8
+ **
9
+ *****************************************************************************/
10
+
11
+ #ifndef ACLOCK_H
12
+ #define ACLOCK_H
13
+
14
+ #include <qwidget.h>
15
+ #include <qdatetime.h>
16
+
17
+ class QTimer;
18
+ class AnalogClock : public QWidget // analog clock widget
19
+ {
20
+ Q_OBJECT
21
+ public:
22
+ AnalogClock( QWidget *parent=0, const char *name=0 );
23
+ void setAutoMask(bool b);
24
+
25
+ protected:
26
+ void updateMask();
27
+ void paintEvent( QPaintEvent *);
28
+ void mousePressEvent( QMouseEvent *);
29
+ void mouseMoveEvent( QMouseEvent *);
30
+ void drawClock( QPainter* );
31
+
32
+ private slots:
33
+ void timeout();
34
+
35
+ public slots:
36
+ void setTime( const QTime & t );
37
+
38
+ private:
39
+ QPoint clickPos;
40
+ QTime time;
41
+ QTimer *internalTimer;
42
+ };
43
+
44
+
45
+ #endif // ACLOCK_H
@@ -0,0 +1,28 @@
1
+ /****************************************************************************
2
+ ** $Id: qt/main.cpp 3.3.3 edited May 27 2003 $
3
+ **
4
+ ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
5
+ **
6
+ ** This file is part of an example program for Qt. This example
7
+ ** program may be used, distributed and modified without limitation.
8
+ **
9
+ *****************************************************************************/
10
+
11
+ #include "aclock.h"
12
+ #include <qapplication.h>
13
+
14
+
15
+ int main( int argc, char **argv )
16
+ {
17
+ QApplication a( argc, argv );
18
+ AnalogClock *clock = new AnalogClock;
19
+ if ( argc == 2 && strcmp( argv[1], "-transparent" ) == 0 )
20
+ clock->setAutoMask( TRUE );
21
+ clock->resize( 100, 100 );
22
+ a.setMainWidget( clock );
23
+ clock->setCaption("Qt Example - Analog Clock");
24
+ clock->show();
25
+ int result = a.exec();
26
+ delete clock;
27
+ return result;
28
+ }
@@ -0,0 +1,21 @@
1
+ require 'mxx_ru/cpp/qt'
2
+
3
+ Mxx_ru::setup_target(
4
+ Mxx_ru::Cpp::Exe_target.new( "prj.rb" ) {
5
+
6
+ threading_mode( Mxx_ru::Cpp::THREADING_MULTI )
7
+ rtl_mode( Mxx_ru::Cpp::RTL_SHARED )
8
+
9
+ target( "aclock" )
10
+
11
+ qt = generator( Mxx_ru::Cpp::Qt_gen.new( self ) )
12
+ # qt.moc_result_subdir = nil
13
+
14
+ lib( "qt-mt333.lib" )
15
+
16
+ qt.h2moc( "aclock.h" )
17
+
18
+ cpp_source( "main.cpp" )
19
+ cpp_source( "aclock.cpp" )
20
+ }
21
+ )
@@ -0,0 +1,76 @@
1
+ /****************************************************************************
2
+ ** $Id: qt/main.cpp 3.3.3 edited May 27 2003 $
3
+ **
4
+ ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
5
+ **
6
+ ** This file is part of an example program for Qt. This example
7
+ ** program may be used, distributed and modified without limitation.
8
+ **
9
+ *****************************************************************************/
10
+
11
+ #include <qiconview.h>
12
+ #include <qapplication.h>
13
+ #include <qdragobject.h>
14
+ #include <qpixmap.h>
15
+ #include <qiconset.h>
16
+
17
+ #include <qmime.h>
18
+ #include <stdio.h>
19
+
20
+ class ListenDND : public QObject
21
+ {
22
+ Q_OBJECT
23
+
24
+ public:
25
+ ListenDND( QWidget *w )
26
+ : view( w )
27
+ {}
28
+
29
+ public slots:
30
+ void dropped( QDropEvent *mime ) {
31
+ qDebug( "Dropped Mimesource %p into the view %p", mime, view );
32
+ qDebug( " Formats:" );
33
+ int i = 0;
34
+ const char *str = mime->format( i );
35
+ qDebug( " %s", str );
36
+ while ( str ) {
37
+ qDebug( " %s", str );
38
+ str = mime->format( ++i );
39
+ }
40
+ };
41
+ void moved() {
42
+ qDebug( "All selected items were moved to another widget" );
43
+ }
44
+
45
+ protected:
46
+ QWidget *view;
47
+
48
+ };
49
+
50
+ int main( int argc, char **argv )
51
+ {
52
+ QApplication a( argc, argv );
53
+
54
+ QIconView qiconview;
55
+ qiconview.setSelectionMode( QIconView::Extended );
56
+
57
+ for ( unsigned int i = 0; i < 3000; i++ ) {
58
+ QIconViewItem *item = new QIconViewItem( &qiconview, QString( "Item %1" ).arg( i + 1 ) );
59
+ item->setRenameEnabled( TRUE );
60
+ }
61
+
62
+ qiconview.setCaption( "Qt Example - Iconview" );
63
+
64
+ ListenDND listen_dnd( &qiconview );
65
+ QObject::connect( &qiconview, SIGNAL( dropped( QDropEvent *, const QValueList<QIconDragItem> & ) ),
66
+ &listen_dnd, SLOT( dropped( QDropEvent * ) ) );
67
+ QObject::connect( &qiconview, SIGNAL( moved() ), &listen_dnd, SLOT( moved() ) );
68
+
69
+ a.setMainWidget( &qiconview );
70
+ qiconview.show();
71
+ qiconview.resize( qiconview.sizeHint() );
72
+
73
+ return a.exec();
74
+ }
75
+
76
+ #include "main.moc"
@@ -0,0 +1,21 @@
1
+ require 'mxx_ru/cpp/qt'
2
+
3
+ Mxx_ru::setup_target(
4
+ Mxx_ru::Cpp::Exe_target.new( "prj.rb" ) {
5
+
6
+ threading_mode( Mxx_ru::Cpp::THREADING_MULTI )
7
+ rtl_mode( Mxx_ru::Cpp::RTL_SHARED )
8
+
9
+ target( "iconview" )
10
+
11
+ qt = generator( Mxx_ru::Cpp::Qt_gen.new( self ) )
12
+ qt.moc_result_subdir = nil
13
+
14
+ qt.cpp2moc( "main.cpp" )
15
+
16
+ cpp_source( "main.cpp" )
17
+
18
+ lib( "qt-mt333.lib" )
19
+
20
+ }
21
+ )
@@ -0,0 +1,9 @@
1
+ #include <qapplication.h>
2
+ #include "options.h"
3
+
4
+ int main( int argc, char ** argv )
5
+ {
6
+ QApplication a( argc, argv );
7
+ OptionsDialog dlg;
8
+ return dlg.exec();
9
+ }