From 4e428f3bc37ef5b8382b8b0aa1d4c0917788ad54 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Thu, 27 Sep 2012 10:14:50 +0000 Subject: [PATCH] 2012-09-27 12:11 UTC+0200 Viktor Szakats (vszakats syenar.net) - contrib/hbide - contrib/hbqt - contrib/hbxbp - deleted hbqt, hbxbp, hbide as final step of contrib split to separate project. find them in this (temporary) repository: http://sourceforge.net/projects/hbqt/ or checkout from Harbour repository using: svn co -r 18153 https://harbour-project.svn.sourceforge.net/svnroot/harbour-project/trunk/harbour --- harbour/ChangeLog | 11 + harbour/contrib/hbide/actions.prg | 1302 ---- harbour/contrib/hbide/changelog.prg | 508 -- harbour/contrib/hbide/changelog.ui | 286 - harbour/contrib/hbide/console.prg | 5224 ----------------- harbour/contrib/hbide/dict.prg | 447 -- harbour/contrib/hbide/docks.prg | 1826 ------ harbour/contrib/hbide/docs/faq.htm | 131 - harbour/contrib/hbide/docs/idemainpage.html | 16 - .../contrib/hbide/docs/interfaceelements.html | 15 - harbour/contrib/hbide/docs/multiviews.html | 10 - harbour/contrib/hbide/docviewgenerator.ui | 841 --- harbour/contrib/hbide/docwriter.prg | 730 --- harbour/contrib/hbide/docwriter.ui | 688 --- harbour/contrib/hbide/edit.prg | 3663 ------------ harbour/contrib/hbide/editor.prg | 2115 ------- harbour/contrib/hbide/editor.ui | 89 - harbour/contrib/hbide/env/pritpalsfav.ide | 2 - harbour/contrib/hbide/environ.prg | 268 - harbour/contrib/hbide/environ.ui | 804 --- harbour/contrib/hbide/environments.ui | 75 - harbour/contrib/hbide/fetchdate.ui | 71 - harbour/contrib/hbide/finddialog.ui | 259 - harbour/contrib/hbide/findinfiles.ui | 348 -- harbour/contrib/hbide/findinfilesex.ui | 414 -- harbour/contrib/hbide/findreplace.prg | 1561 ----- harbour/contrib/hbide/findsource.ui | 107 - harbour/contrib/hbide/format.prg | 226 - harbour/contrib/hbide/format.ui | 87 - harbour/contrib/hbide/funclist.ui | 104 - harbour/contrib/hbide/functions.prg | 695 --- harbour/contrib/hbide/harbourhelp.prg | 1472 ----- harbour/contrib/hbide/hbide.ch | 152 - harbour/contrib/hbide/hbide.env | 31 - harbour/contrib/hbide/hbide.hbp | 105 - harbour/contrib/hbide/hbide.ico | Bin 44708 -> 0 bytes harbour/contrib/hbide/hbide.qrc | 272 - harbour/contrib/hbide/hbqtoolbar.prg | 371 -- harbour/contrib/hbide/home.prg | 621 -- harbour/contrib/hbide/main.prg | 1774 ------ harbour/contrib/hbide/mainwindow.ui | 43 - harbour/contrib/hbide/misc.prg | 2052 ------- harbour/contrib/hbide/object.prg | 250 - harbour/contrib/hbide/panels.ui | 194 - harbour/contrib/hbide/parseexpr.c | 340 -- harbour/contrib/hbide/parts.prg | 230 - harbour/contrib/hbide/plugins.prg | 328 -- .../hbide/plugins/hbide_plugin_savebackup.hb | 94 - .../hbide/plugins/hbide_script_qtgui.hb | 115 - .../hbide/plugins/hbide_script_rdds.prg | 92 - harbour/contrib/hbide/projectpropertiesex.ui | 467 -- harbour/contrib/hbide/projectwizard.prg | 1479 ----- harbour/contrib/hbide/projectwizard.ui | 1587 ----- harbour/contrib/hbide/projmanager.prg | 1776 ------ harbour/contrib/hbide/resources/Lookup.png | Bin 489 -> 0 bytes harbour/contrib/hbide/resources/align_at.png | Bin 912 -> 0 bytes harbour/contrib/hbide/resources/arguments.png | Bin 142 -> 0 bytes harbour/contrib/hbide/resources/b_1.png | Bin 773 -> 0 bytes harbour/contrib/hbide/resources/b_10.png | Bin 727 -> 0 bytes harbour/contrib/hbide/resources/b_11.png | Bin 670 -> 0 bytes harbour/contrib/hbide/resources/b_12.png | Bin 675 -> 0 bytes harbour/contrib/hbide/resources/b_13.png | Bin 525 -> 0 bytes harbour/contrib/hbide/resources/b_14.png | Bin 463 -> 0 bytes harbour/contrib/hbide/resources/b_15.png | Bin 488 -> 0 bytes harbour/contrib/hbide/resources/b_16.png | Bin 628 -> 0 bytes harbour/contrib/hbide/resources/b_17.png | Bin 620 -> 0 bytes harbour/contrib/hbide/resources/b_18.png | Bin 739 -> 0 bytes harbour/contrib/hbide/resources/b_19.png | Bin 742 -> 0 bytes harbour/contrib/hbide/resources/b_2.png | Bin 463 -> 0 bytes harbour/contrib/hbide/resources/b_20.png | Bin 544 -> 0 bytes harbour/contrib/hbide/resources/b_3.png | Bin 743 -> 0 bytes harbour/contrib/hbide/resources/b_4.png | Bin 727 -> 0 bytes harbour/contrib/hbide/resources/b_5.png | Bin 755 -> 0 bytes harbour/contrib/hbide/resources/b_6.png | Bin 719 -> 0 bytes harbour/contrib/hbide/resources/b_7.png | Bin 768 -> 0 bytes harbour/contrib/hbide/resources/b_8.png | Bin 589 -> 0 bytes harbour/contrib/hbide/resources/b_9.png | Bin 752 -> 0 bytes .../contrib/hbide/resources/blockcomment.png | Bin 130 -> 0 bytes .../contrib/hbide/resources/blockindentl.png | Bin 194 -> 0 bytes .../contrib/hbide/resources/blockindentr.png | Bin 202 -> 0 bytes harbour/contrib/hbide/resources/bookmark.png | Bin 184 -> 0 bytes harbour/contrib/hbide/resources/browser.png | Bin 818 -> 0 bytes harbour/contrib/hbide/resources/build.png | Bin 112 -> 0 bytes .../contrib/hbide/resources/builderror.png | Bin 919 -> 0 bytes .../contrib/hbide/resources/buildlaunch.png | Bin 155 -> 0 bytes harbour/contrib/hbide/resources/buildrun.png | Bin 156 -> 0 bytes .../contrib/hbide/resources/buildsource.png | Bin 137 -> 0 bytes harbour/contrib/hbide/resources/check.png | Bin 507 -> 0 bytes harbour/contrib/hbide/resources/clean.png | Bin 501 -> 0 bytes harbour/contrib/hbide/resources/cleanrun.png | Bin 702 -> 0 bytes harbour/contrib/hbide/resources/close.png | Bin 394 -> 0 bytes harbour/contrib/hbide/resources/close3.png | Bin 646 -> 0 bytes harbour/contrib/hbide/resources/closeall.png | Bin 413 -> 0 bytes .../contrib/hbide/resources/closeexcept.png | Bin 398 -> 0 bytes harbour/contrib/hbide/resources/closetab.png | Bin 375 -> 0 bytes .../contrib/hbide/resources/codeskeletons.png | Bin 126 -> 0 bytes .../contrib/hbide/resources/collapse_m.png | Bin 245 -> 0 bytes harbour/contrib/hbide/resources/column.png | Bin 898 -> 0 bytes harbour/contrib/hbide/resources/compile.png | Bin 156 -> 0 bytes .../hbide/resources/configtoolbars.png | Bin 1213 -> 0 bytes .../contrib/hbide/resources/copy-filname.png | Bin 236 -> 0 bytes harbour/contrib/hbide/resources/copy.png | Bin 265 -> 0 bytes harbour/contrib/hbide/resources/cuied.png | Bin 468 -> 0 bytes .../hbide/resources/curlinehilight.png | Bin 135 -> 0 bytes harbour/contrib/hbide/resources/cut.png | Bin 246 -> 0 bytes harbour/contrib/hbide/resources/cutb16.png | Bin 807 -> 0 bytes .../contrib/hbide/resources/dbl2sglquote.png | Bin 1156 -> 0 bytes harbour/contrib/hbide/resources/dbstruct.png | Bin 262 -> 0 bytes harbour/contrib/hbide/resources/dc_class.png | Bin 436 -> 0 bytes harbour/contrib/hbide/resources/dc_delete.png | Bin 489 -> 0 bytes harbour/contrib/hbide/resources/dc_down.png | Bin 533 -> 0 bytes harbour/contrib/hbide/resources/dc_folder.png | Bin 389 -> 0 bytes .../contrib/hbide/resources/dc_function.png | Bin 133 -> 0 bytes harbour/contrib/hbide/resources/dc_home.png | Bin 344 -> 0 bytes harbour/contrib/hbide/resources/dc_left.png | Bin 484 -> 0 bytes harbour/contrib/hbide/resources/dc_method.png | Bin 459 -> 0 bytes .../contrib/hbide/resources/dc_pdffile.png | Bin 603 -> 0 bytes harbour/contrib/hbide/resources/dc_plus.png | Bin 429 -> 0 bytes harbour/contrib/hbide/resources/dc_print.png | Bin 341 -> 0 bytes .../contrib/hbide/resources/dc_procedure.png | Bin 393 -> 0 bytes harbour/contrib/hbide/resources/dc_quit.png | Bin 540 -> 0 bytes .../contrib/hbide/resources/dc_refresh.png | Bin 713 -> 0 bytes harbour/contrib/hbide/resources/dc_right.png | Bin 480 -> 0 bytes .../contrib/hbide/resources/dc_textdoc.png | Bin 616 -> 0 bytes .../hbide/resources/dc_textdocument.png | Bin 247 -> 0 bytes harbour/contrib/hbide/resources/dc_up.png | Bin 480 -> 0 bytes harbour/contrib/hbide/resources/debug.png | Bin 145 -> 0 bytes .../hbide/resources/decreaseindent.png | Bin 120 -> 0 bytes .../contrib/hbide/resources/deleteline.png | Bin 449 -> 0 bytes .../contrib/hbide/resources/description.png | Bin 135 -> 0 bytes harbour/contrib/hbide/resources/designer.png | Bin 578 -> 0 bytes .../contrib/hbide/resources/dictionary.png | Bin 1154 -> 0 bytes harbour/contrib/hbide/resources/docwriter.png | Bin 564 -> 0 bytes harbour/contrib/hbide/resources/down.png | Bin 525 -> 0 bytes harbour/contrib/hbide/resources/down16.png | Bin 762 -> 0 bytes .../contrib/hbide/resources/duplicateline.png | Bin 441 -> 0 bytes harbour/contrib/hbide/resources/editor.png | Bin 787 -> 0 bytes harbour/contrib/hbide/resources/editstree.png | Bin 785 -> 0 bytes harbour/contrib/hbide/resources/envconfig.png | Bin 206 -> 0 bytes harbour/contrib/hbide/resources/example.png | Bin 138 -> 0 bytes harbour/contrib/hbide/resources/exit.png | Bin 510 -> 0 bytes harbour/contrib/hbide/resources/exit3.png | Bin 477 -> 0 bytes harbour/contrib/hbide/resources/expand_m.png | Bin 256 -> 0 bytes .../contrib/hbide/resources/exporthtml.png | Bin 1203 -> 0 bytes harbour/contrib/hbide/resources/ffn.png | Bin 130 -> 0 bytes harbour/contrib/hbide/resources/file-open.png | Bin 741 -> 0 bytes harbour/contrib/hbide/resources/filec.png | Bin 150 -> 0 bytes harbour/contrib/hbide/resources/fileprg.png | Bin 132 -> 0 bytes harbour/contrib/hbide/resources/find.png | Bin 342 -> 0 bytes harbour/contrib/hbide/resources/fl_c.png | Bin 157 -> 0 bytes harbour/contrib/hbide/resources/fl_dll.png | Bin 707 -> 0 bytes harbour/contrib/hbide/resources/fl_exe.png | Bin 693 -> 0 bytes harbour/contrib/hbide/resources/fl_ini.png | Bin 172 -> 0 bytes harbour/contrib/hbide/resources/fl_lib.png | Bin 121 -> 0 bytes harbour/contrib/hbide/resources/fl_prg.png | Bin 138 -> 0 bytes harbour/contrib/hbide/resources/fl_res.png | Bin 173 -> 0 bytes harbour/contrib/hbide/resources/fl_txt.png | Bin 126 -> 0 bytes harbour/contrib/hbide/resources/folder.png | Bin 383 -> 0 bytes harbour/contrib/hbide/resources/font.png | Bin 550 -> 0 bytes harbour/contrib/hbide/resources/formview.png | Bin 475 -> 0 bytes .../contrib/hbide/resources/fullscreen.png | Bin 349 -> 0 bytes harbour/contrib/hbide/resources/go-bottom.png | Bin 574 -> 0 bytes harbour/contrib/hbide/resources/go-down.png | Bin 572 -> 0 bytes harbour/contrib/hbide/resources/go-first.png | Bin 573 -> 0 bytes harbour/contrib/hbide/resources/go-jump.png | Bin 591 -> 0 bytes harbour/contrib/hbide/resources/go-last.png | Bin 575 -> 0 bytes harbour/contrib/hbide/resources/go-next.png | Bin 575 -> 0 bytes harbour/contrib/hbide/resources/go-prev.png | Bin 570 -> 0 bytes harbour/contrib/hbide/resources/go-top.png | Bin 580 -> 0 bytes harbour/contrib/hbide/resources/go-up.png | Bin 596 -> 0 bytes harbour/contrib/hbide/resources/gotoline.png | Bin 149 -> 0 bytes harbour/contrib/hbide/resources/gotoline3.png | Bin 329 -> 0 bytes harbour/contrib/hbide/resources/gotomark.png | Bin 164 -> 0 bytes harbour/contrib/hbide/resources/grid.png | Bin 88 -> 0 bytes harbour/contrib/hbide/resources/harbour.png | Bin 40702 -> 0 bytes .../contrib/hbide/resources/harbourhelp.png | Bin 203 -> 0 bytes harbour/contrib/hbide/resources/hb-16x16.png | Bin 712 -> 0 bytes harbour/contrib/hbide/resources/hb-32x32.png | Bin 1726 -> 0 bytes harbour/contrib/hbide/resources/hbide.png | Bin 3049 -> 0 bytes .../contrib/hbide/resources/hbidesplash.png | Bin 34691 -> 0 bytes .../hbide/resources/hbidesplashwatermark.png | Bin 25197 -> 0 bytes harbour/contrib/hbide/resources/help.png | Bin 814 -> 0 bytes harbour/contrib/hbide/resources/help1.png | Bin 735 -> 0 bytes harbour/contrib/hbide/resources/helpdoc.png | Bin 529 -> 0 bytes harbour/contrib/hbide/resources/hideshow.png | Bin 549 -> 0 bytes .../contrib/hbide/resources/hilight-all.png | Bin 154 -> 0 bytes harbour/contrib/hbide/resources/home3.png | Bin 301 -> 0 bytes harbour/contrib/hbide/resources/horzruler.png | Bin 151 -> 0 bytes .../hbide/resources/idepreferences.png | Bin 379 -> 0 bytes .../hbide/resources/increaseindent.png | Bin 122 -> 0 bytes .../contrib/hbide/resources/indent-less.png | Bin 352 -> 0 bytes .../contrib/hbide/resources/indent-more.png | Bin 355 -> 0 bytes harbour/contrib/hbide/resources/info.png | Bin 133 -> 0 bytes harbour/contrib/hbide/resources/infotips.png | Bin 787 -> 0 bytes .../hbide/resources/insert-datetime.png | Bin 491 -> 0 bytes .../hbide/resources/insert-external-file.png | Bin 269 -> 0 bytes .../hbide/resources/insert-procname.png | Bin 405 -> 0 bytes .../hbide/resources/insert-separator.png | Bin 102 -> 0 bytes .../contrib/hbide/resources/invertcase.png | Bin 163 -> 0 bytes .../hbide/resources/keyboardmappings.png | Bin 626 -> 0 bytes harbour/contrib/hbide/resources/launch.png | Bin 120 -> 0 bytes harbour/contrib/hbide/resources/launch_r.png | Bin 1307 -> 0 bytes harbour/contrib/hbide/resources/lense.png | Bin 213 -> 0 bytes .../hbide/resources/list-developers.png | Bin 894 -> 0 bytes .../contrib/hbide/resources/list-users.png | Bin 431 -> 0 bytes harbour/contrib/hbide/resources/load_1.png | Bin 727 -> 0 bytes harbour/contrib/hbide/resources/load_2.png | Bin 633 -> 0 bytes harbour/contrib/hbide/resources/load_3.png | Bin 725 -> 0 bytes harbour/contrib/hbide/resources/matchobj.png | Bin 117 -> 0 bytes harbour/contrib/hbide/resources/maximize.png | Bin 1910 -> 0 bytes .../contrib/hbide/resources/maximize_all.png | Bin 1044 -> 0 bytes harbour/contrib/hbide/resources/memo.png | Bin 349 -> 0 bytes harbour/contrib/hbide/resources/minimize.png | Bin 1980 -> 0 bytes .../contrib/hbide/resources/minimize_all.png | Bin 902 -> 0 bytes harbour/contrib/hbide/resources/minus.png | Bin 250 -> 0 bytes .../contrib/hbide/resources/modulelist.png | Bin 918 -> 0 bytes .../contrib/hbide/resources/movelinedown.png | Bin 404 -> 0 bytes .../contrib/hbide/resources/movelineup.png | Bin 427 -> 0 bytes harbour/contrib/hbide/resources/new.png | Bin 224 -> 0 bytes harbour/contrib/hbide/resources/new2.png | Bin 283 -> 0 bytes harbour/contrib/hbide/resources/next.png | Bin 1038 -> 0 bytes harbour/contrib/hbide/resources/notepad.png | Bin 176 -> 0 bytes harbour/contrib/hbide/resources/open.png | Bin 394 -> 0 bytes harbour/contrib/hbide/resources/open2.png | Bin 733 -> 0 bytes harbour/contrib/hbide/resources/open3.png | Bin 639 -> 0 bytes harbour/contrib/hbide/resources/panel_1.png | Bin 231 -> 0 bytes harbour/contrib/hbide/resources/panel_10.png | Bin 232 -> 0 bytes harbour/contrib/hbide/resources/panel_11.png | Bin 681 -> 0 bytes harbour/contrib/hbide/resources/panel_12.png | Bin 201 -> 0 bytes harbour/contrib/hbide/resources/panel_13.png | Bin 259 -> 0 bytes harbour/contrib/hbide/resources/panel_2.png | Bin 259 -> 0 bytes harbour/contrib/hbide/resources/panel_3.png | Bin 245 -> 0 bytes harbour/contrib/hbide/resources/panel_4.png | Bin 258 -> 0 bytes harbour/contrib/hbide/resources/panel_5.png | Bin 260 -> 0 bytes harbour/contrib/hbide/resources/panel_6.png | Bin 231 -> 0 bytes harbour/contrib/hbide/resources/panel_7.png | Bin 231 -> 0 bytes harbour/contrib/hbide/resources/panel_8.png | Bin 398 -> 0 bytes harbour/contrib/hbide/resources/panel_9.png | Bin 243 -> 0 bytes harbour/contrib/hbide/resources/paste.png | Bin 286 -> 0 bytes .../hbide/resources/placeremovemark.png | Bin 175 -> 0 bytes harbour/contrib/hbide/resources/ppo.png | Bin 162 -> 0 bytes harbour/contrib/hbide/resources/previous.png | Bin 833 -> 0 bytes harbour/contrib/hbide/resources/print.png | Bin 278 -> 0 bytes harbour/contrib/hbide/resources/project.png | Bin 319 -> 0 bytes .../contrib/hbide/resources/projectadd.png | Bin 479 -> 0 bytes .../contrib/hbide/resources/projectdel.png | Bin 427 -> 0 bytes .../contrib/hbide/resources/projectstree.png | Bin 171 -> 0 bytes harbour/contrib/hbide/resources/projtree.png | Bin 785 -> 0 bytes .../contrib/hbide/resources/properties.png | Bin 157 -> 0 bytes harbour/contrib/hbide/resources/readonly.png | Bin 435 -> 0 bytes harbour/contrib/hbide/resources/rebuild.png | Bin 148 -> 0 bytes .../contrib/hbide/resources/rebuildlaunch.png | Bin 183 -> 0 bytes harbour/contrib/hbide/resources/redo.png | Bin 240 -> 0 bytes harbour/contrib/hbide/resources/richtext.png | Bin 419 -> 0 bytes harbour/contrib/hbide/resources/run.png | Bin 182 -> 0 bytes .../contrib/hbide/resources/runnodebug.png | Bin 115 -> 0 bytes harbour/contrib/hbide/resources/runscript.png | Bin 144 -> 0 bytes harbour/contrib/hbide/resources/save.png | Bin 424 -> 0 bytes harbour/contrib/hbide/resources/save3.png | Bin 564 -> 0 bytes harbour/contrib/hbide/resources/saveall.png | Bin 393 -> 0 bytes harbour/contrib/hbide/resources/saveas.png | Bin 352 -> 0 bytes harbour/contrib/hbide/resources/search.png | Bin 187 -> 0 bytes harbour/contrib/hbide/resources/selectall.png | Bin 113 -> 0 bytes .../contrib/hbide/resources/selectionline.png | Bin 145 -> 0 bytes harbour/contrib/hbide/resources/setmain.png | Bin 454 -> 0 bytes .../contrib/hbide/resources/sgl2dblquote.png | Bin 1160 -> 0 bytes harbour/contrib/hbide/resources/sort.png | Bin 162 -> 0 bytes .../contrib/hbide/resources/sortdescend.png | Bin 161 -> 0 bytes harbour/contrib/hbide/resources/source_c.png | Bin 800 -> 0 bytes .../contrib/hbide/resources/source_cpp.png | Bin 857 -> 0 bytes harbour/contrib/hbide/resources/source_h.png | Bin 811 -> 0 bytes harbour/contrib/hbide/resources/source_o.png | Bin 838 -> 0 bytes .../contrib/hbide/resources/source_prg.png | Bin 825 -> 0 bytes .../contrib/hbide/resources/source_res.png | Bin 706 -> 0 bytes .../contrib/hbide/resources/source_txt.png | Bin 835 -> 0 bytes .../hbide/resources/source_unknown.png | Bin 594 -> 0 bytes .../contrib/hbide/resources/spacestotabs.png | Bin 179 -> 0 bytes harbour/contrib/hbide/resources/split.png | Bin 385 -> 0 bytes .../contrib/hbide/resources/split_close.png | Bin 268 -> 0 bytes harbour/contrib/hbide/resources/split_h.png | Bin 466 -> 0 bytes harbour/contrib/hbide/resources/split_v.png | Bin 422 -> 0 bytes .../contrib/hbide/resources/statistics.png | Bin 682 -> 0 bytes harbour/contrib/hbide/resources/stream.png | Bin 136 -> 0 bytes .../contrib/hbide/resources/streamcomment.png | Bin 153 -> 0 bytes harbour/contrib/hbide/resources/stringify.png | Bin 156 -> 0 bytes .../contrib/hbide/resources/syntaxhiliter.png | Bin 196 -> 0 bytes .../contrib/hbide/resources/tabcmodified.png | Bin 111 -> 0 bytes .../contrib/hbide/resources/tabmodified.png | Bin 98 -> 0 bytes .../contrib/hbide/resources/tabreadonly.png | Bin 101 -> 0 bytes harbour/contrib/hbide/resources/tabs.png | Bin 576 -> 0 bytes .../contrib/hbide/resources/tabstospaces.png | Bin 181 -> 0 bytes .../contrib/hbide/resources/tabunmodified.png | Bin 87 -> 0 bytes harbour/contrib/hbide/resources/tests.png | Bin 136 -> 0 bytes harbour/contrib/hbide/resources/text.png | Bin 130 -> 0 bytes harbour/contrib/hbide/resources/thumbnail.png | Bin 314 -> 0 bytes harbour/contrib/hbide/resources/toback.png | Bin 121 -> 0 bytes harbour/contrib/hbide/resources/tofront.png | Bin 123 -> 0 bytes .../hbide/resources/togglelinenumber.png | Bin 235 -> 0 bytes harbour/contrib/hbide/resources/tolower.png | Bin 138 -> 0 bytes harbour/contrib/hbide/resources/tools.png | Bin 186 -> 0 bytes harbour/contrib/hbide/resources/toupper.png | Bin 140 -> 0 bytes harbour/contrib/hbide/resources/trashpage.png | Bin 175 -> 0 bytes harbour/contrib/hbide/resources/undo.png | Bin 238 -> 0 bytes harbour/contrib/hbide/resources/unload_1.png | Bin 721 -> 0 bytes harbour/contrib/hbide/resources/up.png | Bin 637 -> 0 bytes harbour/contrib/hbide/resources/up16.png | Bin 785 -> 0 bytes .../contrib/hbide/resources/view_cascaded.png | Bin 576 -> 0 bytes .../contrib/hbide/resources/view_docks.png | Bin 564 -> 0 bytes .../hbide/resources/view_horzstacked.png | Bin 279 -> 0 bytes .../hbide/resources/view_organized.png | Bin 302 -> 0 bytes .../contrib/hbide/resources/view_refresh.png | Bin 753 -> 0 bytes .../contrib/hbide/resources/view_tabbed.png | Bin 293 -> 0 bytes .../contrib/hbide/resources/view_tiled.png | Bin 330 -> 0 bytes .../hbide/resources/view_vertstacked.png | Bin 327 -> 0 bytes .../contrib/hbide/resources/view_zoomin.png | Bin 769 -> 0 bytes .../contrib/hbide/resources/view_zoomout.png | Bin 772 -> 0 bytes harbour/contrib/hbide/resources/vr-16x16.png | Bin 120 -> 0 bytes harbour/contrib/hbide/resources/vr.png | Bin 221 -> 0 bytes harbour/contrib/hbide/resources/xmate.png | Bin 262 -> 0 bytes harbour/contrib/hbide/resources/zoomin.png | Bin 209 -> 0 bytes harbour/contrib/hbide/resources/zoomin3.png | Bin 706 -> 0 bytes harbour/contrib/hbide/resources/zoomout.png | Bin 197 -> 0 bytes harbour/contrib/hbide/resources/zoomout3.png | Bin 708 -> 0 bytes harbour/contrib/hbide/saveload.prg | 2638 --------- harbour/contrib/hbide/searchreplace.ui | 428 -- harbour/contrib/hbide/searchreplacepanel.ui | 224 - harbour/contrib/hbide/selectionlist.ui | 67 - harbour/contrib/hbide/selectproject.ui | 74 - harbour/contrib/hbide/settings.qrc | 5 - harbour/contrib/hbide/setup.ui | 3793 ------------ harbour/contrib/hbide/shortcuts.prg | 1701 ------ harbour/contrib/hbide/shortcuts.ui | 257 - harbour/contrib/hbide/skeletons.prg | 563 -- harbour/contrib/hbide/skeletons.ui | 110 - harbour/contrib/hbide/sources.prg | 554 -- harbour/contrib/hbide/stylesheets.prg | 593 -- harbour/contrib/hbide/tags.prg | 449 -- harbour/contrib/hbide/themes.prg | 1245 ---- harbour/contrib/hbide/themes.ui | 204 - harbour/contrib/hbide/themesex.ui | 264 - harbour/contrib/hbide/tools.prg | 1057 ---- harbour/contrib/hbide/toolsutilities.ui | 656 --- harbour/contrib/hbide/uisrcmanager.prg | 1100 ---- harbour/contrib/hbide/updown.ui | 71 - harbour/contrib/hbide/updown_v.ui | 116 - harbour/contrib/hbide/wizard.prg | 182 - harbour/contrib/hbide/xbpaddons/dbstruct.ui | 332 -- harbour/contrib/hbide/xbpaddons/dbu.prg | 2898 --------- harbour/contrib/hbide/xbpaddons/fetchdate.ui | 71 - harbour/contrib/hbide/xbpaddons/misc.prg | 76 - harbour/contrib/hbide/xbpaddons/reports.prg | 2738 --------- .../hbide/xbpaddons/resources/close3.png | Bin 646 -> 0 bytes .../hbide/xbpaddons/resources/closetab.png | Bin 375 -> 0 bytes .../hbide/xbpaddons/resources/database.png | Bin 787 -> 0 bytes .../xbpaddons/resources/database_accept.png | Bin 960 -> 0 bytes .../xbpaddons/resources/database_add.png | Bin 962 -> 0 bytes .../xbpaddons/resources/database_down.png | Bin 960 -> 0 bytes .../xbpaddons/resources/database_lock.png | Bin 919 -> 0 bytes .../xbpaddons/resources/database_next.png | Bin 959 -> 0 bytes .../xbpaddons/resources/database_previous.png | Bin 960 -> 0 bytes .../xbpaddons/resources/database_process.png | Bin 952 -> 0 bytes .../xbpaddons/resources/database_remove.png | Bin 958 -> 0 bytes .../xbpaddons/resources/database_search.png | Bin 907 -> 0 bytes .../hbide/xbpaddons/resources/database_up.png | Bin 955 -> 0 bytes .../hbide/xbpaddons/resources/dbf_p1.png | Bin 121 -> 0 bytes .../hbide/xbpaddons/resources/dbf_p10.png | Bin 119 -> 0 bytes .../hbide/xbpaddons/resources/dbf_p2.png | Bin 110 -> 0 bytes .../hbide/xbpaddons/resources/dbf_p3.png | Bin 114 -> 0 bytes .../hbide/xbpaddons/resources/dbf_p4.png | Bin 114 -> 0 bytes .../hbide/xbpaddons/resources/dbf_p5.png | Bin 112 -> 0 bytes .../hbide/xbpaddons/resources/dbf_p6.png | Bin 117 -> 0 bytes .../hbide/xbpaddons/resources/dbf_p7.png | Bin 123 -> 0 bytes .../hbide/xbpaddons/resources/dbf_p8.png | Bin 116 -> 0 bytes .../hbide/xbpaddons/resources/dbf_p9.png | Bin 123 -> 0 bytes .../hbide/xbpaddons/resources/dbstruct.png | Bin 262 -> 0 bytes .../hbide/xbpaddons/resources/dc_delete.png | Bin 489 -> 0 bytes .../hbide/xbpaddons/resources/f-bold-1.png | Bin 604 -> 0 bytes .../hbide/xbpaddons/resources/f-generic.png | Bin 550 -> 0 bytes .../hbide/xbpaddons/resources/f-image.png | Bin 389 -> 0 bytes .../hbide/xbpaddons/resources/f-italic-1.png | Bin 529 -> 0 bytes .../hbide/xbpaddons/resources/f-strike-1.png | Bin 459 -> 0 bytes .../xbpaddons/resources/f-underline-1.png | Bin 539 -> 0 bytes .../xbpaddons/resources/f_align_bottom.png | Bin 85 -> 0 bytes .../xbpaddons/resources/f_align_center.png | Bin 92 -> 0 bytes .../xbpaddons/resources/f_align_justify.png | Bin 82 -> 0 bytes .../xbpaddons/resources/f_align_left.png | Bin 94 -> 0 bytes .../xbpaddons/resources/f_align_middle.png | Bin 88 -> 0 bytes .../xbpaddons/resources/f_align_right.png | Bin 94 -> 0 bytes .../hbide/xbpaddons/resources/f_align_top.png | Bin 86 -> 0 bytes .../hbide/xbpaddons/resources/f_barcode.png | Bin 487 -> 0 bytes .../hbide/xbpaddons/resources/f_box_all.png | Bin 97 -> 0 bytes .../xbpaddons/resources/f_box_bottom.png | Bin 90 -> 0 bytes .../hbide/xbpaddons/resources/f_box_left.png | Bin 90 -> 0 bytes .../xbpaddons/resources/f_box_matrix.png | Bin 81 -> 0 bytes .../hbide/xbpaddons/resources/f_box_plain.png | Bin 88 -> 0 bytes .../hbide/xbpaddons/resources/f_box_right.png | Bin 89 -> 0 bytes .../xbpaddons/resources/f_box_shadow.png | Bin 125 -> 0 bytes .../hbide/xbpaddons/resources/f_box_top.png | Bin 90 -> 0 bytes .../hbide/xbpaddons/resources/f_chart.png | Bin 469 -> 0 bytes .../hbide/xbpaddons/resources/f_gradient.png | Bin 188 -> 0 bytes .../hbide/xbpaddons/resources/find.png | Bin 342 -> 0 bytes .../hbide/xbpaddons/resources/form.png | Bin 1263 -> 0 bytes .../hbide/xbpaddons/resources/formview.png | Bin 475 -> 0 bytes .../hbide/xbpaddons/resources/fullscreen.png | Bin 349 -> 0 bytes .../hbide/xbpaddons/resources/gotoline3.png | Bin 329 -> 0 bytes .../hbide/xbpaddons/resources/grid.png | Bin 88 -> 0 bytes .../hbide/xbpaddons/resources/harbour.png | Bin 3049 -> 0 bytes .../hbide/xbpaddons/resources/load_1.png | Bin 727 -> 0 bytes .../contrib/hbide/xbpaddons/resources/new.png | Bin 224 -> 0 bytes .../hbide/xbpaddons/resources/open3.png | Bin 639 -> 0 bytes .../hbide/xbpaddons/resources/panel_7.png | Bin 243 -> 0 bytes .../hbide/xbpaddons/resources/panel_8.png | Bin 398 -> 0 bytes .../hbide/xbpaddons/resources/print.png | Bin 278 -> 0 bytes .../hbide/xbpaddons/resources/r-landscape.png | Bin 194 -> 0 bytes .../hbide/xbpaddons/resources/r-page.png | Bin 590 -> 0 bytes .../hbide/xbpaddons/resources/r-portrait.png | Bin 200 -> 0 bytes .../hbide/xbpaddons/resources/r-report.png | Bin 511 -> 0 bytes .../hbide/xbpaddons/resources/rp_arc.png | Bin 92 -> 0 bytes .../hbide/xbpaddons/resources/rp_chord.png | Bin 94 -> 0 bytes .../hbide/xbpaddons/resources/rp_diamond.png | Bin 110 -> 0 bytes .../hbide/xbpaddons/resources/rp_ellipse.png | Bin 109 -> 0 bytes .../xbpaddons/resources/rp_linediagleft.png | Bin 80 -> 0 bytes .../xbpaddons/resources/rp_linediagright.png | Bin 81 -> 0 bytes .../hbide/xbpaddons/resources/rp_linehorz.png | Bin 78 -> 0 bytes .../hbide/xbpaddons/resources/rp_linevert.png | Bin 81 -> 0 bytes .../xbpaddons/resources/rp_rectangle.png | Bin 88 -> 0 bytes .../xbpaddons/resources/rp_roundrectangle.png | Bin 88 -> 0 bytes .../hbide/xbpaddons/resources/rp_shapes.png | Bin 132 -> 0 bytes .../hbide/xbpaddons/resources/rp_triangle.png | Bin 112 -> 0 bytes .../hbide/xbpaddons/resources/save3.png | Bin 564 -> 0 bytes .../hbide/xbpaddons/resources/sort.png | Bin 162 -> 0 bytes .../hbide/xbpaddons/resources/table.png | Bin 920 -> 0 bytes .../hbide/xbpaddons/resources/text.png | Bin 130 -> 0 bytes .../hbide/xbpaddons/resources/toback.png | Bin 121 -> 0 bytes .../hbide/xbpaddons/resources/tofront.png | Bin 123 -> 0 bytes .../hbide/xbpaddons/resources/unload_1.png | Bin 721 -> 0 bytes .../xbpaddons/resources/view_cascaded.png | Bin 576 -> 0 bytes .../hbide/xbpaddons/resources/view_docks.png | Bin 564 -> 0 bytes .../xbpaddons/resources/view_horzstacked.png | Bin 279 -> 0 bytes .../xbpaddons/resources/view_organized.png | Bin 302 -> 0 bytes .../xbpaddons/resources/view_refresh.png | Bin 753 -> 0 bytes .../hbide/xbpaddons/resources/view_tabbed.png | Bin 293 -> 0 bytes .../hbide/xbpaddons/resources/view_tiled.png | Bin 330 -> 0 bytes .../xbpaddons/resources/view_vertstacked.png | Bin 327 -> 0 bytes .../hbide/xbpaddons/resources/view_zoomin.png | Bin 769 -> 0 bytes .../xbpaddons/resources/view_zoomout.png | Bin 772 -> 0 bytes .../hbide/xbpaddons/resources/zoomin.png | Bin 209 -> 0 bytes .../hbide/xbpaddons/resources/zoomin3.png | Bin 706 -> 0 bytes .../hbide/xbpaddons/resources/zoomout.png | Bin 197 -> 0 bytes .../hbide/xbpaddons/resources/zoomout3.png | Bin 708 -> 0 bytes harbour/contrib/hbide/xbpaddons/tables.ui | 52 - harbour/contrib/hbide/xbpaddons/xbp.qrc | 101 - harbour/contrib/hbide/xbpaddons/xbpaddons.hbc | 9 - harbour/contrib/hbide/xbpaddons/xbpaddons.hbp | 22 - harbour/contrib/hbqt/CREDITS.txt | 92 - harbour/contrib/hbqt/gtqtc.hbc | 10 - harbour/contrib/hbqt/gtqtc/gtqtc.cpp | 2655 --------- harbour/contrib/hbqt/gtqtc/gtqtc.h | 332 -- harbour/contrib/hbqt/gtqtc/gtqtc.hbc | 23 - harbour/contrib/hbqt/gtqtc/gtqtc.hbm | 15 - harbour/contrib/hbqt/gtqtc/gtqtc.hbp | 9 - harbour/contrib/hbqt/gtqtc/gtqtcs.hbp | 7 - harbour/contrib/hbqt/hbmk2_qt.hb | 3653 ------------ harbour/contrib/hbqt/hbqt.hbc | 16 - harbour/contrib/hbqt/hbqt_all.hbp | 19 - harbour/contrib/hbqt/hbqt_common.hbc | 25 - harbour/contrib/hbqt/hbqt_common.hbm | 45 - harbour/contrib/hbqt/hbqt_commons.hbm | 19 - harbour/contrib/hbqt/hbqtcore.hbc | 10 - harbour/contrib/hbqt/hbqtdesigner.hbc | 10 - harbour/contrib/hbqt/hbqtgui.hbc | 10 - harbour/contrib/hbqt/hbqtnetwork.hbc | 10 - harbour/contrib/hbqt/hbqtsql.hbc | 10 - harbour/contrib/hbqt/hbqtwebkit.hbc | 10 - .../contrib/hbqt/qscintilla/hbqscintilla.ch | 953 --- .../contrib/hbqt/qscintilla/hbqscintilla.hbc | 25 - .../contrib/hbqt/qscintilla/hbqscintilla.hbm | 17 - .../contrib/hbqt/qscintilla/hbqscintilla.hbp | 11 - .../contrib/hbqt/qscintilla/hbqscintillas.hbp | 7 - .../contrib/hbqt/qscintilla/hbqscintillas.hbx | 48 - .../hbqt/qscintilla/hbqt_hbqsciscintilla.cpp | 109 - .../hbqt/qscintilla/hbqt_hbqsciscintilla.h | 89 - harbour/contrib/hbqt/qscintilla/hbqt_init.cpp | 99 - .../hbqt/qscintilla/qth/HBQsciScintilla.qth | 92 - .../contrib/hbqt/qscintilla/qth/QsciAPIs.qth | 71 - .../hbqt/qscintilla/qth/QsciAbstractAPIs.qth | 58 - .../hbqt/qscintilla/qth/QsciCommand.qth | 59 - .../hbqt/qscintilla/qth/QsciCommandSet.qth | 58 - .../hbqt/qscintilla/qth/QsciDocument.qth | 60 - .../contrib/hbqt/qscintilla/qth/QsciLexer.qth | 106 - .../hbqt/qscintilla/qth/QsciLexerCPP.qth | 104 - .../hbqt/qscintilla/qth/QsciLexerFlagship.qth | 104 - .../hbqt/qscintilla/qth/QsciScintilla.qth | 341 -- .../contrib/hbqt/qscintilla/qth/QsciStyle.qth | 86 - .../hbqt/qscintilla/qth/QsciStyledText.qth | 66 - .../contrib/hbqt/qscintilla/qth/filelist.hbm | 21 - harbour/contrib/hbqt/qtcore/hbqt.h | 131 - harbour/contrib/hbqt/qtcore/hbqt_bind.cpp | 1159 ---- .../contrib/hbqt/qtcore/hbqt_destroyer.cpp | 84 - harbour/contrib/hbqt/qtcore/hbqt_destroyer.h | 78 - .../contrib/hbqt/qtcore/hbqt_hbqevents.cpp | 288 - harbour/contrib/hbqt/qtcore/hbqt_hbqevents.h | 85 - harbour/contrib/hbqt/qtcore/hbqt_hbqslots.cpp | 480 -- harbour/contrib/hbqt/qtcore/hbqt_hbqslots.h | 86 - .../contrib/hbqt/qtcore/hbqt_hbqstring.cpp | 97 - harbour/contrib/hbqt/qtcore/hbqt_hbqstring.h | 81 - harbour/contrib/hbqt/qtcore/hbqt_init.cpp | 514 -- harbour/contrib/hbqt/qtcore/hbqt_misc.prg | 233 - harbour/contrib/hbqt/qtcore/hbqt_pointer.cpp | 247 - harbour/contrib/hbqt/qtcore/hbqt_version.cpp | 74 - harbour/contrib/hbqt/qtcore/hbqtcore.ch | 352 -- harbour/contrib/hbqt/qtcore/hbqtcore.h | 14 - harbour/contrib/hbqt/qtcore/hbqtcore.hbc | 20 - harbour/contrib/hbqt/qtcore/hbqtcore.hbm | 26 - harbour/contrib/hbqt/qtcore/hbqtcore.hbp | 12 - harbour/contrib/hbqt/qtcore/hbqtcore.hbx | 175 - harbour/contrib/hbqt/qtcore/hbqtcores.hbp | 7 - harbour/contrib/hbqt/qtcore/hbqtinit.h | 86 - harbour/contrib/hbqt/qtcore/qth/HBQString.qth | 281 - .../qtcore/qth/QAbstractEventDispatcher.qth | 72 - .../hbqt/qtcore/qth/QAbstractItemModel.qth | 104 - .../hbqt/qtcore/qth/QAbstractListModel.qth | 49 - .../hbqt/qtcore/qth/QAbstractTableModel.qth | 49 - harbour/contrib/hbqt/qtcore/qth/QBitArray.qth | 72 - harbour/contrib/hbqt/qtcore/qth/QBuffer.qth | 73 - .../contrib/hbqt/qtcore/qth/QByteArray.qth | 183 - harbour/contrib/hbqt/qtcore/qth/QChar.qth | 113 - .../contrib/hbqt/qtcore/qth/QChildEvent.qth | 61 - .../hbqt/qtcore/qth/QCoreApplication.qth | 92 - .../contrib/hbqt/qtcore/qth/QDataStream.qth | 81 - harbour/contrib/hbqt/qtcore/qth/QDate.qth | 76 - harbour/contrib/hbqt/qtcore/qth/QDateTime.qth | 94 - harbour/contrib/hbqt/qtcore/qth/QDir.qth | 126 - harbour/contrib/hbqt/qtcore/qth/QEvent.qth | 64 - .../contrib/hbqt/qtcore/qth/QEventLoop.qth | 59 - harbour/contrib/hbqt/qtcore/qth/QFile.qth | 116 - harbour/contrib/hbqt/qtcore/qth/QFileInfo.qth | 119 - .../hbqt/qtcore/qth/QFileSystemWatcher.qth | 68 - .../hbqt/qtcore/qth/QGenericArgument.qth | 68 - .../qtcore/qth/QGenericReturnArgument.qth | 66 - harbour/contrib/hbqt/qtcore/qth/QIODevice.qth | 92 - .../contrib/hbqt/qtcore/qth/QLatin1Char.qth | 64 - .../contrib/hbqt/qtcore/qth/QLatin1String.qth | 59 - .../contrib/hbqt/qtcore/qth/QLibraryInfo.qth | 71 - harbour/contrib/hbqt/qtcore/qth/QLine.qth | 79 - harbour/contrib/hbqt/qtcore/qth/QLineF.qth | 94 - harbour/contrib/hbqt/qtcore/qth/QList.qth | 113 - harbour/contrib/hbqt/qtcore/qth/QLocale.qth | 129 - .../hbqt/qtcore/qth/QMetaClassInfo.qth | 54 - harbour/contrib/hbqt/qtcore/qth/QMetaEnum.qth | 63 - .../contrib/hbqt/qtcore/qth/QMetaMethod.qth | 65 - .../contrib/hbqt/qtcore/qth/QMetaObject.qth | 86 - .../contrib/hbqt/qtcore/qth/QMetaProperty.qth | 73 - harbour/contrib/hbqt/qtcore/qth/QMetaType.qth | 61 - harbour/contrib/hbqt/qtcore/qth/QMimeData.qth | 67 - .../contrib/hbqt/qtcore/qth/QModelIndex.qth | 67 - harbour/contrib/hbqt/qtcore/qth/QObject.qth | 87 - harbour/contrib/hbqt/qtcore/qth/QPoint.qth | 65 - harbour/contrib/hbqt/qtcore/qth/QPointF.qth | 65 - harbour/contrib/hbqt/qtcore/qth/QProcess.qth | 104 - harbour/contrib/hbqt/qtcore/qth/QRect.qth | 126 - harbour/contrib/hbqt/qtcore/qth/QRectF.qth | 127 - harbour/contrib/hbqt/qtcore/qth/QRegExp.qth | 81 - harbour/contrib/hbqt/qtcore/qth/QResource.qth | 141 - harbour/contrib/hbqt/qtcore/qth/QSettings.qth | 181 - .../contrib/hbqt/qtcore/qth/QSignalMapper.qth | 62 - harbour/contrib/hbqt/qtcore/qth/QSize.qth | 71 - harbour/contrib/hbqt/qtcore/qth/QSizeF.qth | 72 - .../contrib/hbqt/qtcore/qth/QStringList.qth | 110 - .../contrib/hbqt/qtcore/qth/QStringRef.qth | 95 - .../hbqt/qtcore/qth/QTextBoundaryFinder.qth | 79 - .../contrib/hbqt/qtcore/qth/QTextCodec.qth | 79 - .../contrib/hbqt/qtcore/qth/QTextDecoder.qth | 57 - .../contrib/hbqt/qtcore/qth/QTextEncoder.qth | 55 - .../contrib/hbqt/qtcore/qth/QTextStream.qth | 114 - harbour/contrib/hbqt/qtcore/qth/QThread.qth | 73 - harbour/contrib/hbqt/qtcore/qth/QTime.qth | 77 - harbour/contrib/hbqt/qtcore/qth/QTimeLine.qth | 93 - harbour/contrib/hbqt/qtcore/qth/QTimer.qth | 60 - .../contrib/hbqt/qtcore/qth/QTranslator.qth | 57 - harbour/contrib/hbqt/qtcore/qth/QUrl.qth | 151 - harbour/contrib/hbqt/qtcore/qth/QVariant.qth | 236 - harbour/contrib/hbqt/qtcore/qth/filelist.hbm | 73 - .../contrib/hbqt/qtdeclarative/hbqt_init.cpp | 97 - .../hbqt/qtdeclarative/hbqtdeclarative.ch | 56 - .../hbqt/qtdeclarative/hbqtdeclarative.hbc | 22 - .../hbqt/qtdeclarative/hbqtdeclarative.hbm | 26 - .../hbqt/qtdeclarative/hbqtdeclarative.hbp | 12 - .../hbqt/qtdeclarative/hbqtdeclarative.hbx | 62 - .../hbqt/qtdeclarative/hbqtdeclaratives.hbp | 7 - .../qth/QDeclarativeComponent.qth | 71 - .../qtdeclarative/qth/QDeclarativeContext.qth | 83 - .../qtdeclarative/qth/QDeclarativeEngine.qth | 88 - .../qtdeclarative/qth/QDeclarativeError.qth | 68 - .../qth/QDeclarativeExpression.qth | 68 - .../qth/QDeclarativeImageProvider.qth | 56 - .../qtdeclarative/qth/QDeclarativeItem.qth | 79 - .../qth/QDeclarativeListReference.qth | 74 - .../qth/QDeclarativeParserStatus.qth | 53 - .../qth/QDeclarativeProperty.qth | 129 - .../qth/QDeclarativePropertyMap.qth | 68 - .../qth/QDeclarativePropertyValueSource.qth | 53 - .../qth/QDeclarativeScriptString.qth | 65 - .../qtdeclarative/qth/QDeclarativeView.qth | 83 - .../hbqt/qtdeclarative/qth/filelist.hbm | 22 - harbour/contrib/hbqt/qtdesigner/hbqt_init.cpp | 99 - .../contrib/hbqt/qtdesigner/hbqtdesigner.hbc | 21 - .../contrib/hbqt/qtdesigner/hbqtdesigner.hbm | 16 - .../contrib/hbqt/qtdesigner/hbqtdesigner.hbp | 11 - .../contrib/hbqt/qtdesigner/hbqtdesigner.hbx | 50 - .../contrib/hbqt/qtdesigner/hbqtdesigners.hbp | 7 - .../qth/QDesignerActionEditorInterface.qth | 60 - .../qth/QDesignerFormEditorInterface.qth | 73 - .../QDesignerFormWindowCursorInterface.qth | 71 - .../qth/QDesignerFormWindowInterface.qth | 114 - .../QDesignerFormWindowManagerInterface.qth | 85 - .../qth/QDesignerObjectInspectorInterface.qth | 58 - .../qth/QDesignerPropertyEditorInterface.qth | 63 - .../qth/QDesignerWidgetBoxInterface.qth | 60 - .../contrib/hbqt/qtdesigner/qth/filelist.hbm | 16 - harbour/contrib/hbqt/qtgui/hbqt_errorsys.prg | 229 - .../hbqt/qtgui/hbqt_hbqabstractitemmodel.cpp | 204 - .../hbqt/qtgui/hbqt_hbqabstractitemmodel.h | 100 - .../hbqt/qtgui/hbqt_hbqgraphicsitem.cpp | 808 --- .../contrib/hbqt/qtgui/hbqt_hbqgraphicsitem.h | 273 - .../hbqt/qtgui/hbqt_hbqgraphicsscene.cpp | 763 --- .../hbqt/qtgui/hbqt_hbqgraphicsscene.h | 160 - .../hbqt/qtgui/hbqt_hbqplaintextedit.cpp | 3033 ---------- .../hbqt/qtgui/hbqt_hbqplaintextedit.h | 312 - .../hbqt/qtgui/hbqt_hbqsyntaxhighlighter.cpp | 443 -- .../hbqt/qtgui/hbqt_hbqsyntaxhighlighter.h | 207 - .../contrib/hbqt/qtgui/hbqt_hbqtableview.cpp | 161 - .../contrib/hbqt/qtgui/hbqt_hbqtableview.h | 90 - harbour/contrib/hbqt/qtgui/hbqt_init.cpp | 853 --- harbour/contrib/hbqt/qtgui/hbqt_utils.cpp | 219 - harbour/contrib/hbqt/qtgui/hbqtgui.ch | 2512 -------- harbour/contrib/hbqt/qtgui/hbqtgui.h | 19 - harbour/contrib/hbqt/qtgui/hbqtgui.hbc | 23 - harbour/contrib/hbqt/qtgui/hbqtgui.hbm | 28 - harbour/contrib/hbqt/qtgui/hbqtgui.hbp | 12 - harbour/contrib/hbqt/qtgui/hbqtgui.hbx | 576 -- harbour/contrib/hbqt/qtgui/hbqtguis.hbp | 7 - .../hbqt/qtgui/qth/HBQAbstractItemModel.qth | 54 - .../hbqt/qtgui/qth/HBQGraphicsItem.qth | 134 - .../hbqt/qtgui/qth/HBQGraphicsScene.qth | 79 - .../hbqt/qtgui/qth/HBQPlainTextEdit.qth | 117 - .../hbqt/qtgui/qth/HBQSyntaxHighlighter.qth | 84 - .../contrib/hbqt/qtgui/qth/HBQTableView.qth | 61 - .../hbqt/qtgui/qth/HBQTextBlockUserData.qth | 53 - .../hbqt/qtgui/qth/QAbstractButton.qth | 77 - .../qtgui/qth/QAbstractGraphicsShapeItem.qth | 55 - .../hbqt/qtgui/qth/QAbstractItemDelegate.qth | 57 - .../hbqt/qtgui/qth/QAbstractItemView.qth | 130 - .../hbqt/qtgui/qth/QAbstractPrintDialog.qth | 62 - .../hbqt/qtgui/qth/QAbstractProxyModel.qth | 50 - .../hbqt/qtgui/qth/QAbstractScrollArea.qth | 60 - .../hbqt/qtgui/qth/QAbstractSlider.qth | 76 - .../hbqt/qtgui/qth/QAbstractSpinBox.qth | 78 - .../qtgui/qth/QAbstractTextDocumentLayout.qth | 60 - harbour/contrib/hbqt/qtgui/qth/QAction.qth | 126 - .../contrib/hbqt/qtgui/qth/QActionEvent.qth | 67 - .../contrib/hbqt/qtgui/qth/QActionGroup.qth | 65 - .../contrib/hbqt/qtgui/qth/QApplication.qth | 182 - harbour/contrib/hbqt/qtgui/qth/QBitmap.qth | 85 - harbour/contrib/hbqt/qtgui/qth/QBoxLayout.qth | 69 - harbour/contrib/hbqt/qtgui/qth/QBrush.qth | 110 - .../contrib/hbqt/qtgui/qth/QButtonGroup.qth | 71 - .../hbqt/qtgui/qth/QCalendarWidget.qth | 100 - harbour/contrib/hbqt/qtgui/qth/QCheckBox.qth | 66 - harbour/contrib/hbqt/qtgui/qth/QClipboard.qth | 80 - .../contrib/hbqt/qtgui/qth/QCloseEvent.qth | 55 - harbour/contrib/hbqt/qtgui/qth/QColor.qth | 148 - .../contrib/hbqt/qtgui/qth/QColorDialog.qth | 80 - harbour/contrib/hbqt/qtgui/qth/QComboBox.qth | 122 - .../hbqt/qtgui/qth/QCommandLinkButton.qth | 76 - .../contrib/hbqt/qtgui/qth/QCommonStyle.qth | 43 - harbour/contrib/hbqt/qtgui/qth/QCompleter.qth | 103 - .../hbqt/qtgui/qth/QConicalGradient.qth | 65 - .../hbqt/qtgui/qth/QContextMenuEvent.qth | 72 - harbour/contrib/hbqt/qtgui/qth/QCursor.qth | 89 - harbour/contrib/hbqt/qtgui/qth/QDateEdit.qth | 46 - .../contrib/hbqt/qtgui/qth/QDateTimeEdit.qth | 125 - .../hbqt/qtgui/qth/QDesktopServices.qth | 72 - .../contrib/hbqt/qtgui/qth/QDesktopWidget.qth | 54 - harbour/contrib/hbqt/qtgui/qth/QDial.qth | 51 - harbour/contrib/hbqt/qtgui/qth/QDialog.qth | 69 - .../hbqt/qtgui/qth/QDialogButtonBox.qth | 99 - harbour/contrib/hbqt/qtgui/qth/QDirModel.qth | 108 - .../contrib/hbqt/qtgui/qth/QDockWidget.qth | 89 - .../contrib/hbqt/qtgui/qth/QDoubleSpinBox.qth | 67 - .../hbqt/qtgui/qth/QDoubleValidator.qth | 69 - harbour/contrib/hbqt/qtgui/qth/QDrag.qth | 68 - .../hbqt/qtgui/qth/QDragEnterEvent.qth | 59 - .../hbqt/qtgui/qth/QDragLeaveEvent.qth | 55 - .../contrib/hbqt/qtgui/qth/QDragMoveEvent.qth | 65 - harbour/contrib/hbqt/qtgui/qth/QDropEvent.qth | 82 - .../contrib/hbqt/qtgui/qth/QErrorMessage.qth | 43 - .../contrib/hbqt/qtgui/qth/QFileDialog.qth | 120 - .../hbqt/qtgui/qth/QFileIconProvider.qth | 49 - .../contrib/hbqt/qtgui/qth/QFileOpenEvent.qth | 62 - .../hbqt/qtgui/qth/QFileSystemModel.qth | 97 - .../contrib/hbqt/qtgui/qth/QFocusEvent.qth | 62 - .../contrib/hbqt/qtgui/qth/QFocusFrame.qth | 43 - harbour/contrib/hbqt/qtgui/qth/QFont.qth | 161 - .../contrib/hbqt/qtgui/qth/QFontComboBox.qth | 59 - .../contrib/hbqt/qtgui/qth/QFontDatabase.qth | 76 - .../contrib/hbqt/qtgui/qth/QFontDialog.qth | 77 - harbour/contrib/hbqt/qtgui/qth/QFontInfo.qth | 58 - .../contrib/hbqt/qtgui/qth/QFontMetrics.qth | 92 - .../contrib/hbqt/qtgui/qth/QFontMetricsF.qth | 96 - .../contrib/hbqt/qtgui/qth/QFormLayout.qth | 83 - harbour/contrib/hbqt/qtgui/qth/QFrame.qth | 64 - harbour/contrib/hbqt/qtgui/qth/QGradient.qth | 56 - .../hbqt/qtgui/qth/QGraphicsEllipseItem.qth | 80 - .../hbqt/qtgui/qth/QGraphicsGridLayout.qth | 100 - .../contrib/hbqt/qtgui/qth/QGraphicsItem.qth | 204 - .../hbqt/qtgui/qth/QGraphicsItemAnimation.qth | 82 - .../hbqt/qtgui/qth/QGraphicsItemGroup.qth | 57 - .../hbqt/qtgui/qth/QGraphicsLayout.qth | 60 - .../hbqt/qtgui/qth/QGraphicsLayoutItem.qth | 87 - .../hbqt/qtgui/qth/QGraphicsLineItem.qth | 79 - .../hbqt/qtgui/qth/QGraphicsLinearLayout.qth | 80 - .../hbqt/qtgui/qth/QGraphicsPathItem.qth | 66 - .../hbqt/qtgui/qth/QGraphicsPixmapItem.qth | 74 - .../hbqt/qtgui/qth/QGraphicsPolygonItem.qth | 68 - .../hbqt/qtgui/qth/QGraphicsProxyWidget.qth | 63 - .../hbqt/qtgui/qth/QGraphicsRectItem.qth | 72 - .../contrib/hbqt/qtgui/qth/QGraphicsScene.qth | 150 - .../qth/QGraphicsSceneContextMenuEvent.qth | 57 - .../qtgui/qth/QGraphicsSceneDragDropEvent.qth | 71 - .../hbqt/qtgui/qth/QGraphicsSceneEvent.qth | 53 - .../qtgui/qth/QGraphicsSceneHelpEvent.qth | 53 - .../qtgui/qth/QGraphicsSceneHoverEvent.qth | 58 - .../qtgui/qth/QGraphicsSceneMouseEvent.qth | 63 - .../qtgui/qth/QGraphicsSceneMoveEvent.qth | 53 - .../qtgui/qth/QGraphicsSceneResizeEvent.qth | 52 - .../qtgui/qth/QGraphicsSceneWheelEvent.qth | 57 - .../qtgui/qth/QGraphicsSimpleTextItem.qth | 73 - .../hbqt/qtgui/qth/QGraphicsSvgItem.qth | 74 - .../hbqt/qtgui/qth/QGraphicsTextItem.qth | 94 - .../contrib/hbqt/qtgui/qth/QGraphicsView.qth | 148 - .../hbqt/qtgui/qth/QGraphicsWidget.qth | 106 - .../contrib/hbqt/qtgui/qth/QGridLayout.qth | 68 - harbour/contrib/hbqt/qtgui/qth/QGroupBox.qth | 72 - .../contrib/hbqt/qtgui/qth/QHBoxLayout.qth | 39 - .../contrib/hbqt/qtgui/qth/QHeaderView.qth | 123 - harbour/contrib/hbqt/qtgui/qth/QHelpEvent.qth | 62 - harbour/contrib/hbqt/qtgui/qth/QHideEvent.qth | 55 - .../contrib/hbqt/qtgui/qth/QHoverEvent.qth | 59 - harbour/contrib/hbqt/qtgui/qth/QIcon.qth | 88 - harbour/contrib/hbqt/qtgui/qth/QImage.qth | 165 - .../contrib/hbqt/qtgui/qth/QImageReader.qth | 89 - .../contrib/hbqt/qtgui/qth/QImageWriter.qth | 68 - .../contrib/hbqt/qtgui/qth/QInputContext.qth | 60 - .../contrib/hbqt/qtgui/qth/QInputDialog.qth | 105 - .../contrib/hbqt/qtgui/qth/QInputEvent.qth | 57 - .../hbqt/qtgui/qth/QInputMethodEvent.qth | 60 - .../contrib/hbqt/qtgui/qth/QIntValidator.qth | 64 - .../contrib/hbqt/qtgui/qth/QItemDelegate.qth | 73 - .../hbqt/qtgui/qth/QItemEditorCreatorBase.qth | 55 - .../hbqt/qtgui/qth/QItemEditorFactory.qth | 65 - .../contrib/hbqt/qtgui/qth/QItemSelection.qth | 58 - .../hbqt/qtgui/qth/QItemSelectionModel.qth | 81 - harbour/contrib/hbqt/qtgui/qth/QKeyEvent.qth | 75 - .../contrib/hbqt/qtgui/qth/QKeySequence.qth | 84 - harbour/contrib/hbqt/qtgui/qth/QLCDNumber.qth | 83 - harbour/contrib/hbqt/qtgui/qth/QLabel.qth | 92 - harbour/contrib/hbqt/qtgui/qth/QLayout.qth | 69 - .../contrib/hbqt/qtgui/qth/QLayoutItem.qth | 52 - harbour/contrib/hbqt/qtgui/qth/QLineEdit.qth | 128 - .../hbqt/qtgui/qth/QLinearGradient.qth | 70 - harbour/contrib/hbqt/qtgui/qth/QListView.qth | 82 - .../contrib/hbqt/qtgui/qth/QListWidget.qth | 97 - .../hbqt/qtgui/qth/QListWidgetItem.qth | 112 - .../contrib/hbqt/qtgui/qth/QMainWindow.qth | 130 - harbour/contrib/hbqt/qtgui/qth/QMatrix.qth | 89 - harbour/contrib/hbqt/qtgui/qth/QMdiArea.qth | 91 - .../contrib/hbqt/qtgui/qth/QMdiSubWindow.qth | 74 - harbour/contrib/hbqt/qtgui/qth/QMenu.qth | 102 - harbour/contrib/hbqt/qtgui/qth/QMenuBar.qth | 63 - .../contrib/hbqt/qtgui/qth/QMessageBox.qth | 119 - .../contrib/hbqt/qtgui/qth/QMouseEvent.qth | 74 - harbour/contrib/hbqt/qtgui/qth/QMoveEvent.qth | 62 - harbour/contrib/hbqt/qtgui/qth/QMovie.qth | 99 - .../hbqt/qtgui/qth/QPageSetupDialog.qth | 62 - .../contrib/hbqt/qtgui/qth/QPaintDevice.qth | 50 - .../contrib/hbqt/qtgui/qth/QPaintEngine.qth | 82 - .../contrib/hbqt/qtgui/qth/QPaintEvent.qth | 62 - harbour/contrib/hbqt/qtgui/qth/QPainter.qth | 274 - .../contrib/hbqt/qtgui/qth/QPainterPath.qth | 125 - harbour/contrib/hbqt/qtgui/qth/QPalette.qth | 111 - harbour/contrib/hbqt/qtgui/qth/QPen.qth | 86 - harbour/contrib/hbqt/qtgui/qth/QPicture.qth | 74 - harbour/contrib/hbqt/qtgui/qth/QPixmap.qth | 143 - .../qtgui/qth/QPlainTextDocumentLayout.qth | 59 - .../contrib/hbqt/qtgui/qth/QPlainTextEdit.qth | 139 - harbour/contrib/hbqt/qtgui/qth/QPolygon.qth | 64 - harbour/contrib/hbqt/qtgui/qth/QPolygonF.qth | 59 - .../contrib/hbqt/qtgui/qth/QPrintDialog.qth | 70 - .../contrib/hbqt/qtgui/qth/QPrintEngine.qth | 56 - .../hbqt/qtgui/qth/QPrintPreviewDialog.qth | 52 - .../hbqt/qtgui/qth/QPrintPreviewWidget.qth | 81 - harbour/contrib/hbqt/qtgui/qth/QPrinter.qth | 132 - .../contrib/hbqt/qtgui/qth/QPrinterInfo.qth | 70 - .../contrib/hbqt/qtgui/qth/QProgressBar.qth | 73 - .../hbqt/qtgui/qth/QProgressDialog.qth | 77 - .../contrib/hbqt/qtgui/qth/QPushButton.qth | 75 - .../hbqt/qtgui/qth/QRadialGradient.qth | 79 - .../contrib/hbqt/qtgui/qth/QRadioButton.qth | 50 - .../hbqt/qtgui/qth/QRegExpValidator.qth | 61 - harbour/contrib/hbqt/qtgui/qth/QRegion.qth | 105 - .../contrib/hbqt/qtgui/qth/QResizeEvent.qth | 61 - .../contrib/hbqt/qtgui/qth/QScrollArea.qth | 50 - harbour/contrib/hbqt/qtgui/qth/QScrollBar.qth | 47 - .../hbqt/qtgui/qth/QSessionManager.qth | 63 - .../contrib/hbqt/qtgui/qth/QShortcutEvent.qth | 65 - harbour/contrib/hbqt/qtgui/qth/QShowEvent.qth | 55 - harbour/contrib/hbqt/qtgui/qth/QSizeGrip.qth | 38 - .../contrib/hbqt/qtgui/qth/QSizePolicy.qth | 79 - harbour/contrib/hbqt/qtgui/qth/QSlider.qth | 58 - .../hbqt/qtgui/qth/QSortFilterProxyModel.qth | 84 - harbour/contrib/hbqt/qtgui/qth/QSound.qth | 69 - .../contrib/hbqt/qtgui/qth/QSpacerItem.qth | 59 - harbour/contrib/hbqt/qtgui/qth/QSpinBox.qth | 62 - .../contrib/hbqt/qtgui/qth/QSplashScreen.qth | 63 - harbour/contrib/hbqt/qtgui/qth/QSplitter.qth | 82 - .../contrib/hbqt/qtgui/qth/QStackedWidget.qth | 71 - .../contrib/hbqt/qtgui/qth/QStandardItem.qth | 143 - .../hbqt/qtgui/qth/QStandardItemModel.qth | 94 - harbour/contrib/hbqt/qtgui/qth/QStatusBar.qth | 62 - .../hbqt/qtgui/qth/QStringListModel.qth | 70 - harbour/contrib/hbqt/qtgui/qth/QStyle.qth | 87 - .../contrib/hbqt/qtgui/qth/QStyleFactory.qth | 50 - .../hbqt/qtgui/qth/QStyleHintReturn.qth | 50 - .../hbqt/qtgui/qth/QStyleHintReturnMask.qth | 48 - .../qtgui/qth/QStyleHintReturnVariant.qth | 49 - .../contrib/hbqt/qtgui/qth/QStyleOption.qth | 61 - .../hbqt/qtgui/qth/QStyleOptionButton.qth | 56 - .../hbqt/qtgui/qth/QStyleOptionComboBox.qth | 56 - .../hbqt/qtgui/qth/QStyleOptionComplex.qth | 52 - .../hbqt/qtgui/qth/QStyleOptionDockWidget.qth | 54 - .../hbqt/qtgui/qth/QStyleOptionFocusRect.qth | 51 - .../hbqt/qtgui/qth/QStyleOptionFrame.qth | 52 - .../qtgui/qth/QStyleOptionGraphicsItem.qth | 55 - .../hbqt/qtgui/qth/QStyleOptionGroupBox.qth | 56 - .../hbqt/qtgui/qth/QStyleOptionHeader.qth | 62 - .../hbqt/qtgui/qth/QStyleOptionMenuItem.qth | 62 - .../qtgui/qth/QStyleOptionProgressBar.qth | 57 - .../hbqt/qtgui/qth/QStyleOptionSizeGrip.qth | 51 - .../hbqt/qtgui/qth/QStyleOptionSlider.qth | 62 - .../hbqt/qtgui/qth/QStyleOptionSpinBox.qth | 53 - .../hbqt/qtgui/qth/QStyleOptionTab.qth | 61 - .../hbqt/qtgui/qth/QStyleOptionTabBarBase.qth | 53 - .../qtgui/qth/QStyleOptionTabWidgetFrame.qth | 56 - .../hbqt/qtgui/qth/QStyleOptionTitleBar.qth | 54 - .../hbqt/qtgui/qth/QStyleOptionToolBar.qth | 59 - .../hbqt/qtgui/qth/QStyleOptionToolBox.qth | 52 - .../hbqt/qtgui/qth/QStyleOptionToolButton.qth | 60 - .../hbqt/qtgui/qth/QStyleOptionViewItem.qth | 58 - .../contrib/hbqt/qtgui/qth/QStylePainter.qth | 57 - .../hbqt/qtgui/qth/QStyledItemDelegate.qth | 53 - .../hbqt/qtgui/qth/QSyntaxHighlighter.qth | 57 - .../hbqt/qtgui/qth/QSystemTrayIcon.qth | 82 - harbour/contrib/hbqt/qtgui/qth/QTabBar.qth | 104 - harbour/contrib/hbqt/qtgui/qth/QTabWidget.qth | 95 - harbour/contrib/hbqt/qtgui/qth/QTableView.qth | 89 - .../contrib/hbqt/qtgui/qth/QTableWidget.qth | 120 - .../hbqt/qtgui/qth/QTableWidgetItem.qth | 99 - .../qtgui/qth/QTableWidgetSelectionRange.qth | 53 - harbour/contrib/hbqt/qtgui/qth/QTextBlock.qth | 87 - .../hbqt/qtgui/qth/QTextBlockFormat.qth | 78 - .../hbqt/qtgui/qth/QTextBlockGroup.qth | 51 - .../contrib/hbqt/qtgui/qth/QTextBrowser.qth | 77 - .../hbqt/qtgui/qth/QTextCharFormat.qth | 94 - .../contrib/hbqt/qtgui/qth/QTextCursor.qth | 132 - .../contrib/hbqt/qtgui/qth/QTextDocument.qth | 147 - .../hbqt/qtgui/qth/QTextDocumentFragment.qth | 56 - .../hbqt/qtgui/qth/QTextDocumentWriter.qth | 57 - harbour/contrib/hbqt/qtgui/qth/QTextEdit.qth | 155 - .../contrib/hbqt/qtgui/qth/QTextFormat.qth | 108 - .../contrib/hbqt/qtgui/qth/QTextFragment.qth | 52 - harbour/contrib/hbqt/qtgui/qth/QTextFrame.qth | 55 - .../hbqt/qtgui/qth/QTextFrameFormat.qth | 81 - .../hbqt/qtgui/qth/QTextImageFormat.qth | 52 - .../hbqt/qtgui/qth/QTextInlineObject.qth | 59 - harbour/contrib/hbqt/qtgui/qth/QTextItem.qth | 53 - .../contrib/hbqt/qtgui/qth/QTextLayout.qth | 80 - .../contrib/hbqt/qtgui/qth/QTextLength.qth | 49 - harbour/contrib/hbqt/qtgui/qth/QTextLine.qth | 70 - harbour/contrib/hbqt/qtgui/qth/QTextList.qth | 61 - .../hbqt/qtgui/qth/QTextListFormat.qth | 51 - .../contrib/hbqt/qtgui/qth/QTextObject.qth | 52 - .../contrib/hbqt/qtgui/qth/QTextOption.qth | 68 - .../hbqt/qtgui/qth/QTextTableFormat.qth | 57 - harbour/contrib/hbqt/qtgui/qth/QTimeEdit.qth | 46 - harbour/contrib/hbqt/qtgui/qth/QToolBar.qth | 94 - harbour/contrib/hbqt/qtgui/qth/QToolBox.qth | 72 - .../contrib/hbqt/qtgui/qth/QToolButton.qth | 65 - harbour/contrib/hbqt/qtgui/qth/QToolTip.qth | 100 - harbour/contrib/hbqt/qtgui/qth/QTransform.qth | 100 - harbour/contrib/hbqt/qtgui/qth/QTreeView.qth | 110 - .../contrib/hbqt/qtgui/qth/QTreeWidget.qth | 98 - .../hbqt/qtgui/qth/QTreeWidgetItem.qth | 125 - .../contrib/hbqt/qtgui/qth/QVBoxLayout.qth | 39 - harbour/contrib/hbqt/qtgui/qth/QValidator.qth | 51 - .../contrib/hbqt/qtgui/qth/QWheelEvent.qth | 73 - harbour/contrib/hbqt/qtgui/qth/QWidget.qth | 328 -- .../contrib/hbqt/qtgui/qth/QWidgetAction.qth | 58 - .../contrib/hbqt/qtgui/qth/QWidgetItem.qth | 56 - .../qtgui/qth/QWindowStateChangeEvent.qth | 64 - .../contrib/hbqt/qtgui/qth/QWindowsStyle.qth | 45 - harbour/contrib/hbqt/qtgui/qth/QWizard.qth | 105 - .../contrib/hbqt/qtgui/qth/QWizardPage.qth | 69 - harbour/contrib/hbqt/qtgui/qth/filelist.hbm | 280 - .../contrib/hbqt/qtmultimedia/hbqt_init.cpp | 97 - .../hbqt/qtmultimedia/hbqtmultimedia.ch | 87 - .../hbqt/qtmultimedia/hbqtmultimedia.hbc | 22 - .../hbqt/qtmultimedia/hbqtmultimedia.hbm | 26 - .../hbqt/qtmultimedia/hbqtmultimedia.hbp | 12 - .../hbqt/qtmultimedia/hbqtmultimedia.hbx | 50 - .../hbqt/qtmultimedia/hbqtmultimedias.hbp | 7 - .../qtmultimedia/qth/QAbstractVideoBuffer.qth | 54 - .../qth/QAbstractVideoSurface.qth | 60 - .../qtmultimedia/qth/QAudioDeviceInfo.qth | 70 - .../hbqt/qtmultimedia/qth/QAudioFormat.qth | 69 - .../hbqt/qtmultimedia/qth/QAudioInput.qth | 90 - .../hbqt/qtmultimedia/qth/QAudioOutput.qth | 90 - .../hbqt/qtmultimedia/qth/QVideoFrame.qth | 99 - .../qtmultimedia/qth/QVideoSurfaceFormat.qth | 90 - .../hbqt/qtmultimedia/qth/filelist.hbm | 16 - harbour/contrib/hbqt/qtnetwork/hbqt_init.cpp | 172 - .../contrib/hbqt/qtnetwork/hbqtnetwork.hbc | 21 - .../contrib/hbqt/qtnetwork/hbqtnetwork.hbm | 13 - .../contrib/hbqt/qtnetwork/hbqtnetwork.hbp | 11 - .../contrib/hbqt/qtnetwork/hbqtnetwork.hbx | 52 - .../contrib/hbqt/qtnetwork/hbqtnetworks.hbp | 7 - harbour/contrib/hbqt/qtnetwork/qth/QFtp.qth | 110 - harbour/contrib/hbqt/qtnetwork/qth/QHttp.qth | 122 - .../hbqt/qtnetwork/qth/QHttpHeader.qth | 83 - .../hbqt/qtnetwork/qth/QHttpRequestHeader.qth | 73 - .../qtnetwork/qth/QHttpResponseHeader.qth | 75 - .../hbqt/qtnetwork/qth/QNetworkProxy.qth | 109 - .../hbqt/qtnetwork/qth/QNetworkRequest.qth | 72 - .../contrib/hbqt/qtnetwork/qth/QUrlInfo.qth | 89 - .../contrib/hbqt/qtnetwork/qth/filelist.hbm | 16 - harbour/contrib/hbqt/qtopengl/hbqt_init.cpp | 98 - harbour/contrib/hbqt/qtopengl/hbqtopengl.ch | 145 - harbour/contrib/hbqt/qtopengl/hbqtopengl.hbc | 21 - harbour/contrib/hbqt/qtopengl/hbqtopengl.hbm | 26 - harbour/contrib/hbqt/qtopengl/hbqtopengl.hbp | 12 - harbour/contrib/hbqt/qtopengl/hbqtopengl.hbx | 56 - harbour/contrib/hbqt/qtopengl/hbqtopengls.hbp | 7 - harbour/contrib/hbqt/qtopengl/qth/QGL.qth | 52 - .../contrib/hbqt/qtopengl/qth/QGLBuffer.qth | 79 - .../contrib/hbqt/qtopengl/qth/QGLColormap.qth | 63 - .../contrib/hbqt/qtopengl/qth/QGLContext.qth | 76 - .../contrib/hbqt/qtopengl/qth/QGLFormat.qth | 124 - .../qtopengl/qth/QGLFramebufferObject.qth | 78 - .../qth/QGLFramebufferObjectFormat.qth | 65 - .../hbqt/qtopengl/qth/QGLFunctions.qth | 158 - .../hbqt/qtopengl/qth/QGLPixelBuffer.qth | 75 - .../contrib/hbqt/qtopengl/qth/QGLShader.qth | 73 - .../hbqt/qtopengl/qth/QGLShaderProgram.qth | 207 - .../contrib/hbqt/qtopengl/qth/QGLWidget.qth | 87 - .../contrib/hbqt/qtopengl/qth/filelist.hbm | 21 - harbour/contrib/hbqt/qtscript/hbqt_init.cpp | 97 - harbour/contrib/hbqt/qtscript/hbqtscript.ch | 109 - harbour/contrib/hbqt/qtscript/hbqtscript.hbc | 20 - harbour/contrib/hbqt/qtscript/hbqtscript.hbm | 26 - harbour/contrib/hbqt/qtscript/hbqtscript.hbp | 12 - harbour/contrib/hbqt/qtscript/hbqtscript.hbx | 60 - harbour/contrib/hbqt/qtscript/hbqtscripts.hbp | 7 - .../hbqt/qtscript/qth/QScriptClass.qth | 70 - .../qth/QScriptClassPropertyIterator.qth | 60 - .../hbqt/qtscript/qth/QScriptContext.qth | 67 - .../hbqt/qtscript/qth/QScriptContextInfo.qth | 74 - .../hbqt/qtscript/qth/QScriptEngine.qth | 113 - .../hbqt/qtscript/qth/QScriptEngineAgent.qth | 70 - .../qtscript/qth/QScriptExtensionPlugin.qth | 55 - .../hbqt/qtscript/qth/QScriptProgram.qth | 86 - .../hbqt/qtscript/qth/QScriptString.qth | 62 - .../qtscript/qth/QScriptSyntaxCheckResult.qth | 62 - .../hbqt/qtscript/qth/QScriptValue.qth | 141 - .../qtscript/qth/QScriptValueIterator.qth | 71 - .../contrib/hbqt/qtscript/qth/QScriptable.qth | 53 - .../contrib/hbqt/qtscript/qth/filelist.hbm | 21 - harbour/contrib/hbqt/qtsql/hbqt_init.cpp | 99 - harbour/contrib/hbqt/qtsql/hbqtsql.ch | 56 - harbour/contrib/hbqt/qtsql/hbqtsql.hbc | 20 - harbour/contrib/hbqt/qtsql/hbqtsql.hbm | 13 - harbour/contrib/hbqt/qtsql/hbqtsql.hbp | 12 - harbour/contrib/hbqt/qtsql/hbqtsql.hbx | 56 - harbour/contrib/hbqt/qtsql/hbqtsqls.hbp | 7 - .../contrib/hbqt/qtsql/qth/QSqlDatabase.qth | 135 - harbour/contrib/hbqt/qtsql/qth/QSqlDriver.qth | 119 - harbour/contrib/hbqt/qtsql/qth/QSqlError.qth | 103 - harbour/contrib/hbqt/qtsql/qth/QSqlField.qth | 117 - harbour/contrib/hbqt/qtsql/qth/QSqlIndex.qth | 100 - harbour/contrib/hbqt/qtsql/qth/QSqlQuery.qth | 149 - .../contrib/hbqt/qtsql/qth/QSqlQueryModel.qth | 110 - harbour/contrib/hbqt/qtsql/qth/QSqlRecord.qth | 117 - .../qtsql/qth/QSqlRelationalTableModel.qth | 96 - harbour/contrib/hbqt/qtsql/qth/QSqlResult.qth | 91 - .../contrib/hbqt/qtsql/qth/QSqlTableModel.qth | 121 - harbour/contrib/hbqt/qtsql/qth/filelist.hbm | 19 - harbour/contrib/hbqt/qtsvg/hbqt_init.cpp | 97 - harbour/contrib/hbqt/qtsvg/hbqtsvg.ch | 56 - harbour/contrib/hbqt/qtsvg/hbqtsvg.hbc | 21 - harbour/contrib/hbqt/qtsvg/hbqtsvg.hbm | 26 - harbour/contrib/hbqt/qtsvg/hbqtsvg.hbp | 12 - harbour/contrib/hbqt/qtsvg/hbqtsvg.hbx | 42 - harbour/contrib/hbqt/qtsvg/hbqtsvgs.hbp | 7 - .../hbqt/qtsvg/qth/QGraphicsSvgItem.qth | 75 - .../contrib/hbqt/qtsvg/qth/QSvgGenerator.qth | 62 - .../contrib/hbqt/qtsvg/qth/QSvgRenderer.qth | 103 - harbour/contrib/hbqt/qtsvg/qth/QSvgWidget.qth | 71 - harbour/contrib/hbqt/qtsvg/qth/filelist.hbm | 12 - harbour/contrib/hbqt/qtwebkit/hbqt_init.cpp | 99 - harbour/contrib/hbqt/qtwebkit/hbqtwebkit.ch | 149 - harbour/contrib/hbqt/qtwebkit/hbqtwebkit.hbc | 22 - harbour/contrib/hbqt/qtwebkit/hbqtwebkit.hbm | 26 - harbour/contrib/hbqt/qtwebkit/hbqtwebkit.hbp | 12 - harbour/contrib/hbqt/qtwebkit/hbqtwebkit.hbx | 54 - harbour/contrib/hbqt/qtwebkit/hbqtwebkits.hbp | 7 - .../contrib/hbqt/qtwebkit/qth/QWebFrame.qth | 95 - .../contrib/hbqt/qtwebkit/qth/QWebHistory.qth | 64 - .../qtwebkit/qth/QWebHistoryInterface.qth | 51 - .../hbqt/qtwebkit/qth/QWebHistoryItem.qth | 64 - .../hbqt/qtwebkit/qth/QWebHitTestResult.qth | 70 - .../contrib/hbqt/qtwebkit/qth/QWebPage.qth | 118 - .../hbqt/qtwebkit/qth/QWebPluginFactory.qth | 56 - .../hbqt/qtwebkit/qth/QWebSecurityOrigin.qth | 62 - .../hbqt/qtwebkit/qth/QWebSettings.qth | 80 - .../contrib/hbqt/qtwebkit/qth/QWebView.qth | 86 - .../contrib/hbqt/qtwebkit/qth/filelist.hbm | 18 - harbour/contrib/hbqt/qtxml/hbqt_init.cpp | 97 - harbour/contrib/hbqt/qtxml/hbqtxml.ch | 73 - harbour/contrib/hbqt/qtxml/hbqtxml.hbc | 20 - harbour/contrib/hbqt/qtxml/hbqtxml.hbm | 26 - harbour/contrib/hbqt/qtxml/hbqtxml.hbp | 12 - harbour/contrib/hbqt/qtxml/hbqtxml.hbx | 94 - harbour/contrib/hbqt/qtxml/hbqtxmls.hbp | 7 - harbour/contrib/hbqt/qtxml/qth/QDomAttr.qth | 60 - .../hbqt/qtxml/qth/QDomCDATASection.qth | 55 - .../contrib/hbqt/qtxml/qth/QDomComment.qth | 55 - .../contrib/hbqt/qtxml/qth/QDomDocument.qth | 87 - .../hbqt/qtxml/qth/QDomDocumentFragment.qth | 55 - .../hbqt/qtxml/qth/QDomDocumentType.qth | 61 - .../contrib/hbqt/qtxml/qth/QDomElement.qth | 87 - harbour/contrib/hbqt/qtxml/qth/QDomEntity.qth | 58 - .../hbqt/qtxml/qth/QDomEntityReference.qth | 55 - .../hbqt/qtxml/qth/QDomImplementation.qth | 64 - .../hbqt/qtxml/qth/QDomNamedNodeMap.qth | 67 - harbour/contrib/hbqt/qtxml/qth/QDomNode.qth | 120 - .../contrib/hbqt/qtxml/qth/QDomNodeList.qth | 61 - .../contrib/hbqt/qtxml/qth/QDomNotation.qth | 57 - .../qtxml/qth/QDomProcessingInstruction.qth | 59 - harbour/contrib/hbqt/qtxml/qth/QDomText.qth | 56 - .../contrib/hbqt/qtxml/qth/QXmlAttributes.qth | 70 - .../hbqt/qtxml/qth/QXmlContentHandler.qth | 56 - .../contrib/hbqt/qtxml/qth/QXmlDTDHandler.qth | 47 - .../hbqt/qtxml/qth/QXmlDeclHandler.qth | 48 - .../hbqt/qtxml/qth/QXmlDefaultHandler.qth | 74 - .../hbqt/qtxml/qth/QXmlEntityResolver.qth | 46 - .../hbqt/qtxml/qth/QXmlErrorHandler.qth | 48 - .../hbqt/qtxml/qth/QXmlInputSource.qth | 60 - .../hbqt/qtxml/qth/QXmlLexicalHandler.qth | 52 - .../contrib/hbqt/qtxml/qth/QXmlLocator.qth | 47 - .../hbqt/qtxml/qth/QXmlNamespaceSupport.qth | 56 - .../hbqt/qtxml/qth/QXmlParseException.qth | 59 - harbour/contrib/hbqt/qtxml/qth/QXmlReader.qth | 63 - .../hbqt/qtxml/qth/QXmlSimpleReader.qth | 69 - harbour/contrib/hbqt/qtxml/qth/filelist.hbm | 38 - harbour/contrib/hbqt/tests/QtCore.txt | 54 - harbour/contrib/hbqt/tests/QtGui.txt | 216 - harbour/contrib/hbqt/tests/QtNetwork.txt | 10 - harbour/contrib/hbqt/tests/browarray.prg | 266 - harbour/contrib/hbqt/tests/browqt.prg | 237 - harbour/contrib/hbqt/tests/cls_dbstruct.prg | 138 - harbour/contrib/hbqt/tests/copy.png | Bin 1272 -> 0 bytes harbour/contrib/hbqt/tests/cut.png | Bin 1260 -> 0 bytes harbour/contrib/hbqt/tests/dbfbrowser.prg | 93 - .../contrib/hbqt/tests/dbfbrowserclass.prg | 195 - harbour/contrib/hbqt/tests/dbstruct.prg | 30 - harbour/contrib/hbqt/tests/dbstruct.ui | 332 -- harbour/contrib/hbqt/tests/demoqt.prg | 642 -- harbour/contrib/hbqt/tests/draggable.prg | 78 - harbour/contrib/hbqt/tests/harbour-icon.png | Bin 2456 -> 0 bytes harbour/contrib/hbqt/tests/harbour-logo.png | Bin 27185 -> 0 bytes harbour/contrib/hbqt/tests/hbmk.hbm | 7 - harbour/contrib/hbqt/tests/hbqtgen2.prg | 238 - harbour/contrib/hbqt/tests/ideui.hbp | 12 - harbour/contrib/hbqt/tests/inherit.prg | 47 - harbour/contrib/hbqt/tests/new.png | Bin 780 -> 0 bytes harbour/contrib/hbqt/tests/open.png | Bin 1982 -> 0 bytes harbour/contrib/hbqt/tests/paste.png | Bin 1645 -> 0 bytes harbour/contrib/hbqt/tests/qtrevamp.prg | 134 - harbour/contrib/hbqt/tests/qtver.prg | 22 - harbour/contrib/hbqt/tests/qtwvg.hbp | 4 - harbour/contrib/hbqt/tests/qtwvg.prg | 375 -- harbour/contrib/hbqt/tests/save.png | Bin 1134 -> 0 bytes harbour/contrib/hbqt/tests/signalslots.prg | 39 - harbour/contrib/hbqt/tests/test.ico | Bin 766 -> 0 bytes harbour/contrib/hbqt/tests/testbrow.prg | 235 - harbour/contrib/hbqt/tests/testqaim.prg | 143 - harbour/contrib/hbqt/tests/testres.hbp | 8 - harbour/contrib/hbqt/tests/testres.prg | 43 - harbour/contrib/hbqt/tests/testres.qrc | 6 - harbour/contrib/hbqt/tests/wvtqt.hbp | 14 - harbour/contrib/hbqt/tests/wvtqt.prg | 378 -- harbour/contrib/hbxbp/3state.prg | 204 - harbour/contrib/hbxbp/appevent.ch | 378 -- harbour/contrib/hbxbp/appevent.prg | 1064 ---- harbour/contrib/hbxbp/bitmap.prg | 234 - harbour/contrib/hbxbp/browse.prg | 3990 ------------- harbour/contrib/hbxbp/checkbox.prg | 203 - harbour/contrib/hbxbp/clipboard.prg | 215 - harbour/contrib/hbxbp/combobox.prg | 232 - harbour/contrib/hbxbp/crt.prg | 1140 ---- harbour/contrib/hbxbp/dataref.prg | 227 - harbour/contrib/hbxbp/dialog.prg | 481 -- harbour/contrib/hbxbp/filedialog.prg | 380 -- harbour/contrib/hbxbp/fontdialog.prg | 583 -- harbour/contrib/hbxbp/generic.prg | 626 -- harbour/contrib/hbxbp/gra.ch | 241 - harbour/contrib/hbxbp/gra.prg | 494 -- harbour/contrib/hbxbp/hbpprocess.prg | 319 - harbour/contrib/hbxbp/hbxbp.hbc | 9 - harbour/contrib/hbxbp/hbxbp.hbp | 58 - harbour/contrib/hbxbp/hbxbp.hbx | 139 - harbour/contrib/hbxbp/htmlviewer.prg | 291 - harbour/contrib/hbxbp/listbox.prg | 580 -- harbour/contrib/hbxbp/menubar.prg | 825 --- harbour/contrib/hbxbp/mle.prg | 457 -- harbour/contrib/hbxbp/parthandler.prg | 341 -- harbour/contrib/hbxbp/presspace.prg | 391 -- harbour/contrib/hbxbp/printdialog.prg | 191 - harbour/contrib/hbxbp/printer.prg | 574 -- harbour/contrib/hbxbp/pushbutton.prg | 260 - harbour/contrib/hbxbp/radiobutton.prg | 201 - harbour/contrib/hbxbp/rtf.prg | 745 --- harbour/contrib/hbxbp/scrollbar.prg | 235 - harbour/contrib/hbxbp/sle.prg | 285 - harbour/contrib/hbxbp/spinbutton.prg | 272 - harbour/contrib/hbxbp/static.prg | 344 -- harbour/contrib/hbxbp/statusbar.prg | 358 -- harbour/contrib/hbxbp/style.prg | 158 - harbour/contrib/hbxbp/tabpage.prg | 353 -- harbour/contrib/hbxbp/tests/abs1.png | Bin 232 -> 0 bytes harbour/contrib/hbxbp/tests/abs2.png | Bin 294 -> 0 bytes harbour/contrib/hbxbp/tests/abs3.png | Bin 402 -> 0 bytes harbour/contrib/hbxbp/tests/abs4.png | Bin 620 -> 0 bytes harbour/contrib/hbxbp/tests/copy.png | Bin 1272 -> 0 bytes harbour/contrib/hbxbp/tests/cut.png | Bin 1260 -> 0 bytes harbour/contrib/hbxbp/tests/demoxbp.prg | 2067 ------- harbour/contrib/hbxbp/tests/dialogqt.prg | 1894 ------ harbour/contrib/hbxbp/tests/hbmk.hbm | 8 - harbour/contrib/hbxbp/tests/new.png | Bin 780 -> 0 bytes harbour/contrib/hbxbp/tests/open.png | Bin 1994 -> 0 bytes harbour/contrib/hbxbp/tests/paste.png | Bin 1645 -> 0 bytes harbour/contrib/hbxbp/tests/print.png | Bin 278 -> 0 bytes harbour/contrib/hbxbp/tests/save.png | Bin 1171 -> 0 bytes harbour/contrib/hbxbp/tests/test.ico | Bin 766 -> 0 bytes harbour/contrib/hbxbp/tests/vr.png | Bin 221 -> 0 bytes harbour/contrib/hbxbp/tests/wvtqt.hbp | 16 - harbour/contrib/hbxbp/tests/wvtqt.prg | 380 -- harbour/contrib/hbxbp/tests/xbpqtc.prg | 601 -- harbour/contrib/hbxbp/toolbar.prg | 641 -- harbour/contrib/hbxbp/treeview.prg | 631 -- harbour/contrib/hbxbp/window.prg | 1927 ------ harbour/contrib/hbxbp/xbp.ch | 539 -- harbour/contrib/hbxbp/xbpdev.ch | 128 - 1172 files changed, 11 insertions(+), 154973 deletions(-) delete mode 100644 harbour/contrib/hbide/actions.prg delete mode 100644 harbour/contrib/hbide/changelog.prg delete mode 100644 harbour/contrib/hbide/changelog.ui delete mode 100644 harbour/contrib/hbide/console.prg delete mode 100644 harbour/contrib/hbide/dict.prg delete mode 100644 harbour/contrib/hbide/docks.prg delete mode 100644 harbour/contrib/hbide/docs/faq.htm delete mode 100644 harbour/contrib/hbide/docs/idemainpage.html delete mode 100644 harbour/contrib/hbide/docs/interfaceelements.html delete mode 100644 harbour/contrib/hbide/docs/multiviews.html delete mode 100644 harbour/contrib/hbide/docviewgenerator.ui delete mode 100644 harbour/contrib/hbide/docwriter.prg delete mode 100644 harbour/contrib/hbide/docwriter.ui delete mode 100644 harbour/contrib/hbide/edit.prg delete mode 100644 harbour/contrib/hbide/editor.prg delete mode 100644 harbour/contrib/hbide/editor.ui delete mode 100644 harbour/contrib/hbide/env/pritpalsfav.ide delete mode 100644 harbour/contrib/hbide/environ.prg delete mode 100644 harbour/contrib/hbide/environ.ui delete mode 100644 harbour/contrib/hbide/environments.ui delete mode 100644 harbour/contrib/hbide/fetchdate.ui delete mode 100644 harbour/contrib/hbide/finddialog.ui delete mode 100644 harbour/contrib/hbide/findinfiles.ui delete mode 100644 harbour/contrib/hbide/findinfilesex.ui delete mode 100644 harbour/contrib/hbide/findreplace.prg delete mode 100644 harbour/contrib/hbide/findsource.ui delete mode 100644 harbour/contrib/hbide/format.prg delete mode 100644 harbour/contrib/hbide/format.ui delete mode 100644 harbour/contrib/hbide/funclist.ui delete mode 100644 harbour/contrib/hbide/functions.prg delete mode 100644 harbour/contrib/hbide/harbourhelp.prg delete mode 100644 harbour/contrib/hbide/hbide.ch delete mode 100644 harbour/contrib/hbide/hbide.env delete mode 100644 harbour/contrib/hbide/hbide.hbp delete mode 100644 harbour/contrib/hbide/hbide.ico delete mode 100644 harbour/contrib/hbide/hbide.qrc delete mode 100644 harbour/contrib/hbide/hbqtoolbar.prg delete mode 100644 harbour/contrib/hbide/home.prg delete mode 100644 harbour/contrib/hbide/main.prg delete mode 100644 harbour/contrib/hbide/mainwindow.ui delete mode 100644 harbour/contrib/hbide/misc.prg delete mode 100644 harbour/contrib/hbide/object.prg delete mode 100644 harbour/contrib/hbide/panels.ui delete mode 100644 harbour/contrib/hbide/parseexpr.c delete mode 100644 harbour/contrib/hbide/parts.prg delete mode 100644 harbour/contrib/hbide/plugins.prg delete mode 100644 harbour/contrib/hbide/plugins/hbide_plugin_savebackup.hb delete mode 100644 harbour/contrib/hbide/plugins/hbide_script_qtgui.hb delete mode 100644 harbour/contrib/hbide/plugins/hbide_script_rdds.prg delete mode 100644 harbour/contrib/hbide/projectpropertiesex.ui delete mode 100644 harbour/contrib/hbide/projectwizard.prg delete mode 100644 harbour/contrib/hbide/projectwizard.ui delete mode 100644 harbour/contrib/hbide/projmanager.prg delete mode 100644 harbour/contrib/hbide/resources/Lookup.png delete mode 100644 harbour/contrib/hbide/resources/align_at.png delete mode 100644 harbour/contrib/hbide/resources/arguments.png delete mode 100644 harbour/contrib/hbide/resources/b_1.png delete mode 100644 harbour/contrib/hbide/resources/b_10.png delete mode 100644 harbour/contrib/hbide/resources/b_11.png delete mode 100644 harbour/contrib/hbide/resources/b_12.png delete mode 100644 harbour/contrib/hbide/resources/b_13.png delete mode 100644 harbour/contrib/hbide/resources/b_14.png delete mode 100644 harbour/contrib/hbide/resources/b_15.png delete mode 100644 harbour/contrib/hbide/resources/b_16.png delete mode 100644 harbour/contrib/hbide/resources/b_17.png delete mode 100644 harbour/contrib/hbide/resources/b_18.png delete mode 100644 harbour/contrib/hbide/resources/b_19.png delete mode 100644 harbour/contrib/hbide/resources/b_2.png delete mode 100644 harbour/contrib/hbide/resources/b_20.png delete mode 100644 harbour/contrib/hbide/resources/b_3.png delete mode 100644 harbour/contrib/hbide/resources/b_4.png delete mode 100644 harbour/contrib/hbide/resources/b_5.png delete mode 100644 harbour/contrib/hbide/resources/b_6.png delete mode 100644 harbour/contrib/hbide/resources/b_7.png delete mode 100644 harbour/contrib/hbide/resources/b_8.png delete mode 100644 harbour/contrib/hbide/resources/b_9.png delete mode 100644 harbour/contrib/hbide/resources/blockcomment.png delete mode 100644 harbour/contrib/hbide/resources/blockindentl.png delete mode 100644 harbour/contrib/hbide/resources/blockindentr.png delete mode 100644 harbour/contrib/hbide/resources/bookmark.png delete mode 100644 harbour/contrib/hbide/resources/browser.png delete mode 100644 harbour/contrib/hbide/resources/build.png delete mode 100644 harbour/contrib/hbide/resources/builderror.png delete mode 100644 harbour/contrib/hbide/resources/buildlaunch.png delete mode 100644 harbour/contrib/hbide/resources/buildrun.png delete mode 100644 harbour/contrib/hbide/resources/buildsource.png delete mode 100644 harbour/contrib/hbide/resources/check.png delete mode 100644 harbour/contrib/hbide/resources/clean.png delete mode 100644 harbour/contrib/hbide/resources/cleanrun.png delete mode 100644 harbour/contrib/hbide/resources/close.png delete mode 100644 harbour/contrib/hbide/resources/close3.png delete mode 100644 harbour/contrib/hbide/resources/closeall.png delete mode 100644 harbour/contrib/hbide/resources/closeexcept.png delete mode 100644 harbour/contrib/hbide/resources/closetab.png delete mode 100644 harbour/contrib/hbide/resources/codeskeletons.png delete mode 100644 harbour/contrib/hbide/resources/collapse_m.png delete mode 100644 harbour/contrib/hbide/resources/column.png delete mode 100644 harbour/contrib/hbide/resources/compile.png delete mode 100644 harbour/contrib/hbide/resources/configtoolbars.png delete mode 100644 harbour/contrib/hbide/resources/copy-filname.png delete mode 100644 harbour/contrib/hbide/resources/copy.png delete mode 100644 harbour/contrib/hbide/resources/cuied.png delete mode 100644 harbour/contrib/hbide/resources/curlinehilight.png delete mode 100644 harbour/contrib/hbide/resources/cut.png delete mode 100644 harbour/contrib/hbide/resources/cutb16.png delete mode 100644 harbour/contrib/hbide/resources/dbl2sglquote.png delete mode 100644 harbour/contrib/hbide/resources/dbstruct.png delete mode 100644 harbour/contrib/hbide/resources/dc_class.png delete mode 100644 harbour/contrib/hbide/resources/dc_delete.png delete mode 100644 harbour/contrib/hbide/resources/dc_down.png delete mode 100644 harbour/contrib/hbide/resources/dc_folder.png delete mode 100644 harbour/contrib/hbide/resources/dc_function.png delete mode 100644 harbour/contrib/hbide/resources/dc_home.png delete mode 100644 harbour/contrib/hbide/resources/dc_left.png delete mode 100644 harbour/contrib/hbide/resources/dc_method.png delete mode 100644 harbour/contrib/hbide/resources/dc_pdffile.png delete mode 100644 harbour/contrib/hbide/resources/dc_plus.png delete mode 100644 harbour/contrib/hbide/resources/dc_print.png delete mode 100644 harbour/contrib/hbide/resources/dc_procedure.png delete mode 100644 harbour/contrib/hbide/resources/dc_quit.png delete mode 100644 harbour/contrib/hbide/resources/dc_refresh.png delete mode 100644 harbour/contrib/hbide/resources/dc_right.png delete mode 100644 harbour/contrib/hbide/resources/dc_textdoc.png delete mode 100644 harbour/contrib/hbide/resources/dc_textdocument.png delete mode 100644 harbour/contrib/hbide/resources/dc_up.png delete mode 100644 harbour/contrib/hbide/resources/debug.png delete mode 100644 harbour/contrib/hbide/resources/decreaseindent.png delete mode 100644 harbour/contrib/hbide/resources/deleteline.png delete mode 100644 harbour/contrib/hbide/resources/description.png delete mode 100644 harbour/contrib/hbide/resources/designer.png delete mode 100644 harbour/contrib/hbide/resources/dictionary.png delete mode 100644 harbour/contrib/hbide/resources/docwriter.png delete mode 100644 harbour/contrib/hbide/resources/down.png delete mode 100644 harbour/contrib/hbide/resources/down16.png delete mode 100644 harbour/contrib/hbide/resources/duplicateline.png delete mode 100644 harbour/contrib/hbide/resources/editor.png delete mode 100644 harbour/contrib/hbide/resources/editstree.png delete mode 100644 harbour/contrib/hbide/resources/envconfig.png delete mode 100644 harbour/contrib/hbide/resources/example.png delete mode 100644 harbour/contrib/hbide/resources/exit.png delete mode 100644 harbour/contrib/hbide/resources/exit3.png delete mode 100644 harbour/contrib/hbide/resources/expand_m.png delete mode 100644 harbour/contrib/hbide/resources/exporthtml.png delete mode 100644 harbour/contrib/hbide/resources/ffn.png delete mode 100644 harbour/contrib/hbide/resources/file-open.png delete mode 100644 harbour/contrib/hbide/resources/filec.png delete mode 100644 harbour/contrib/hbide/resources/fileprg.png delete mode 100644 harbour/contrib/hbide/resources/find.png delete mode 100644 harbour/contrib/hbide/resources/fl_c.png delete mode 100644 harbour/contrib/hbide/resources/fl_dll.png delete mode 100644 harbour/contrib/hbide/resources/fl_exe.png delete mode 100644 harbour/contrib/hbide/resources/fl_ini.png delete mode 100644 harbour/contrib/hbide/resources/fl_lib.png delete mode 100644 harbour/contrib/hbide/resources/fl_prg.png delete mode 100644 harbour/contrib/hbide/resources/fl_res.png delete mode 100644 harbour/contrib/hbide/resources/fl_txt.png delete mode 100644 harbour/contrib/hbide/resources/folder.png delete mode 100644 harbour/contrib/hbide/resources/font.png delete mode 100644 harbour/contrib/hbide/resources/formview.png delete mode 100644 harbour/contrib/hbide/resources/fullscreen.png delete mode 100644 harbour/contrib/hbide/resources/go-bottom.png delete mode 100644 harbour/contrib/hbide/resources/go-down.png delete mode 100644 harbour/contrib/hbide/resources/go-first.png delete mode 100644 harbour/contrib/hbide/resources/go-jump.png delete mode 100644 harbour/contrib/hbide/resources/go-last.png delete mode 100644 harbour/contrib/hbide/resources/go-next.png delete mode 100644 harbour/contrib/hbide/resources/go-prev.png delete mode 100644 harbour/contrib/hbide/resources/go-top.png delete mode 100644 harbour/contrib/hbide/resources/go-up.png delete mode 100644 harbour/contrib/hbide/resources/gotoline.png delete mode 100644 harbour/contrib/hbide/resources/gotoline3.png delete mode 100644 harbour/contrib/hbide/resources/gotomark.png delete mode 100644 harbour/contrib/hbide/resources/grid.png delete mode 100644 harbour/contrib/hbide/resources/harbour.png delete mode 100644 harbour/contrib/hbide/resources/harbourhelp.png delete mode 100644 harbour/contrib/hbide/resources/hb-16x16.png delete mode 100644 harbour/contrib/hbide/resources/hb-32x32.png delete mode 100644 harbour/contrib/hbide/resources/hbide.png delete mode 100644 harbour/contrib/hbide/resources/hbidesplash.png delete mode 100644 harbour/contrib/hbide/resources/hbidesplashwatermark.png delete mode 100644 harbour/contrib/hbide/resources/help.png delete mode 100644 harbour/contrib/hbide/resources/help1.png delete mode 100644 harbour/contrib/hbide/resources/helpdoc.png delete mode 100644 harbour/contrib/hbide/resources/hideshow.png delete mode 100644 harbour/contrib/hbide/resources/hilight-all.png delete mode 100644 harbour/contrib/hbide/resources/home3.png delete mode 100644 harbour/contrib/hbide/resources/horzruler.png delete mode 100644 harbour/contrib/hbide/resources/idepreferences.png delete mode 100644 harbour/contrib/hbide/resources/increaseindent.png delete mode 100644 harbour/contrib/hbide/resources/indent-less.png delete mode 100644 harbour/contrib/hbide/resources/indent-more.png delete mode 100644 harbour/contrib/hbide/resources/info.png delete mode 100644 harbour/contrib/hbide/resources/infotips.png delete mode 100644 harbour/contrib/hbide/resources/insert-datetime.png delete mode 100644 harbour/contrib/hbide/resources/insert-external-file.png delete mode 100644 harbour/contrib/hbide/resources/insert-procname.png delete mode 100644 harbour/contrib/hbide/resources/insert-separator.png delete mode 100644 harbour/contrib/hbide/resources/invertcase.png delete mode 100644 harbour/contrib/hbide/resources/keyboardmappings.png delete mode 100644 harbour/contrib/hbide/resources/launch.png delete mode 100644 harbour/contrib/hbide/resources/launch_r.png delete mode 100644 harbour/contrib/hbide/resources/lense.png delete mode 100644 harbour/contrib/hbide/resources/list-developers.png delete mode 100644 harbour/contrib/hbide/resources/list-users.png delete mode 100644 harbour/contrib/hbide/resources/load_1.png delete mode 100644 harbour/contrib/hbide/resources/load_2.png delete mode 100644 harbour/contrib/hbide/resources/load_3.png delete mode 100644 harbour/contrib/hbide/resources/matchobj.png delete mode 100644 harbour/contrib/hbide/resources/maximize.png delete mode 100644 harbour/contrib/hbide/resources/maximize_all.png delete mode 100644 harbour/contrib/hbide/resources/memo.png delete mode 100644 harbour/contrib/hbide/resources/minimize.png delete mode 100644 harbour/contrib/hbide/resources/minimize_all.png delete mode 100644 harbour/contrib/hbide/resources/minus.png delete mode 100644 harbour/contrib/hbide/resources/modulelist.png delete mode 100644 harbour/contrib/hbide/resources/movelinedown.png delete mode 100644 harbour/contrib/hbide/resources/movelineup.png delete mode 100644 harbour/contrib/hbide/resources/new.png delete mode 100644 harbour/contrib/hbide/resources/new2.png delete mode 100644 harbour/contrib/hbide/resources/next.png delete mode 100644 harbour/contrib/hbide/resources/notepad.png delete mode 100644 harbour/contrib/hbide/resources/open.png delete mode 100644 harbour/contrib/hbide/resources/open2.png delete mode 100644 harbour/contrib/hbide/resources/open3.png delete mode 100644 harbour/contrib/hbide/resources/panel_1.png delete mode 100644 harbour/contrib/hbide/resources/panel_10.png delete mode 100644 harbour/contrib/hbide/resources/panel_11.png delete mode 100644 harbour/contrib/hbide/resources/panel_12.png delete mode 100644 harbour/contrib/hbide/resources/panel_13.png delete mode 100644 harbour/contrib/hbide/resources/panel_2.png delete mode 100644 harbour/contrib/hbide/resources/panel_3.png delete mode 100644 harbour/contrib/hbide/resources/panel_4.png delete mode 100644 harbour/contrib/hbide/resources/panel_5.png delete mode 100644 harbour/contrib/hbide/resources/panel_6.png delete mode 100644 harbour/contrib/hbide/resources/panel_7.png delete mode 100644 harbour/contrib/hbide/resources/panel_8.png delete mode 100644 harbour/contrib/hbide/resources/panel_9.png delete mode 100644 harbour/contrib/hbide/resources/paste.png delete mode 100644 harbour/contrib/hbide/resources/placeremovemark.png delete mode 100644 harbour/contrib/hbide/resources/ppo.png delete mode 100644 harbour/contrib/hbide/resources/previous.png delete mode 100644 harbour/contrib/hbide/resources/print.png delete mode 100644 harbour/contrib/hbide/resources/project.png delete mode 100644 harbour/contrib/hbide/resources/projectadd.png delete mode 100644 harbour/contrib/hbide/resources/projectdel.png delete mode 100644 harbour/contrib/hbide/resources/projectstree.png delete mode 100644 harbour/contrib/hbide/resources/projtree.png delete mode 100644 harbour/contrib/hbide/resources/properties.png delete mode 100644 harbour/contrib/hbide/resources/readonly.png delete mode 100644 harbour/contrib/hbide/resources/rebuild.png delete mode 100644 harbour/contrib/hbide/resources/rebuildlaunch.png delete mode 100644 harbour/contrib/hbide/resources/redo.png delete mode 100644 harbour/contrib/hbide/resources/richtext.png delete mode 100644 harbour/contrib/hbide/resources/run.png delete mode 100644 harbour/contrib/hbide/resources/runnodebug.png delete mode 100644 harbour/contrib/hbide/resources/runscript.png delete mode 100644 harbour/contrib/hbide/resources/save.png delete mode 100644 harbour/contrib/hbide/resources/save3.png delete mode 100644 harbour/contrib/hbide/resources/saveall.png delete mode 100644 harbour/contrib/hbide/resources/saveas.png delete mode 100644 harbour/contrib/hbide/resources/search.png delete mode 100644 harbour/contrib/hbide/resources/selectall.png delete mode 100644 harbour/contrib/hbide/resources/selectionline.png delete mode 100644 harbour/contrib/hbide/resources/setmain.png delete mode 100644 harbour/contrib/hbide/resources/sgl2dblquote.png delete mode 100644 harbour/contrib/hbide/resources/sort.png delete mode 100644 harbour/contrib/hbide/resources/sortdescend.png delete mode 100644 harbour/contrib/hbide/resources/source_c.png delete mode 100644 harbour/contrib/hbide/resources/source_cpp.png delete mode 100644 harbour/contrib/hbide/resources/source_h.png delete mode 100644 harbour/contrib/hbide/resources/source_o.png delete mode 100644 harbour/contrib/hbide/resources/source_prg.png delete mode 100644 harbour/contrib/hbide/resources/source_res.png delete mode 100644 harbour/contrib/hbide/resources/source_txt.png delete mode 100644 harbour/contrib/hbide/resources/source_unknown.png delete mode 100644 harbour/contrib/hbide/resources/spacestotabs.png delete mode 100644 harbour/contrib/hbide/resources/split.png delete mode 100644 harbour/contrib/hbide/resources/split_close.png delete mode 100644 harbour/contrib/hbide/resources/split_h.png delete mode 100644 harbour/contrib/hbide/resources/split_v.png delete mode 100644 harbour/contrib/hbide/resources/statistics.png delete mode 100644 harbour/contrib/hbide/resources/stream.png delete mode 100644 harbour/contrib/hbide/resources/streamcomment.png delete mode 100644 harbour/contrib/hbide/resources/stringify.png delete mode 100644 harbour/contrib/hbide/resources/syntaxhiliter.png delete mode 100644 harbour/contrib/hbide/resources/tabcmodified.png delete mode 100644 harbour/contrib/hbide/resources/tabmodified.png delete mode 100644 harbour/contrib/hbide/resources/tabreadonly.png delete mode 100644 harbour/contrib/hbide/resources/tabs.png delete mode 100644 harbour/contrib/hbide/resources/tabstospaces.png delete mode 100644 harbour/contrib/hbide/resources/tabunmodified.png delete mode 100644 harbour/contrib/hbide/resources/tests.png delete mode 100644 harbour/contrib/hbide/resources/text.png delete mode 100644 harbour/contrib/hbide/resources/thumbnail.png delete mode 100644 harbour/contrib/hbide/resources/toback.png delete mode 100644 harbour/contrib/hbide/resources/tofront.png delete mode 100644 harbour/contrib/hbide/resources/togglelinenumber.png delete mode 100644 harbour/contrib/hbide/resources/tolower.png delete mode 100644 harbour/contrib/hbide/resources/tools.png delete mode 100644 harbour/contrib/hbide/resources/toupper.png delete mode 100644 harbour/contrib/hbide/resources/trashpage.png delete mode 100644 harbour/contrib/hbide/resources/undo.png delete mode 100644 harbour/contrib/hbide/resources/unload_1.png delete mode 100644 harbour/contrib/hbide/resources/up.png delete mode 100644 harbour/contrib/hbide/resources/up16.png delete mode 100644 harbour/contrib/hbide/resources/view_cascaded.png delete mode 100644 harbour/contrib/hbide/resources/view_docks.png delete mode 100644 harbour/contrib/hbide/resources/view_horzstacked.png delete mode 100644 harbour/contrib/hbide/resources/view_organized.png delete mode 100644 harbour/contrib/hbide/resources/view_refresh.png delete mode 100644 harbour/contrib/hbide/resources/view_tabbed.png delete mode 100644 harbour/contrib/hbide/resources/view_tiled.png delete mode 100644 harbour/contrib/hbide/resources/view_vertstacked.png delete mode 100644 harbour/contrib/hbide/resources/view_zoomin.png delete mode 100644 harbour/contrib/hbide/resources/view_zoomout.png delete mode 100644 harbour/contrib/hbide/resources/vr-16x16.png delete mode 100644 harbour/contrib/hbide/resources/vr.png delete mode 100644 harbour/contrib/hbide/resources/xmate.png delete mode 100644 harbour/contrib/hbide/resources/zoomin.png delete mode 100644 harbour/contrib/hbide/resources/zoomin3.png delete mode 100644 harbour/contrib/hbide/resources/zoomout.png delete mode 100644 harbour/contrib/hbide/resources/zoomout3.png delete mode 100644 harbour/contrib/hbide/saveload.prg delete mode 100644 harbour/contrib/hbide/searchreplace.ui delete mode 100644 harbour/contrib/hbide/searchreplacepanel.ui delete mode 100644 harbour/contrib/hbide/selectionlist.ui delete mode 100644 harbour/contrib/hbide/selectproject.ui delete mode 100644 harbour/contrib/hbide/settings.qrc delete mode 100644 harbour/contrib/hbide/setup.ui delete mode 100644 harbour/contrib/hbide/shortcuts.prg delete mode 100644 harbour/contrib/hbide/shortcuts.ui delete mode 100644 harbour/contrib/hbide/skeletons.prg delete mode 100644 harbour/contrib/hbide/skeletons.ui delete mode 100644 harbour/contrib/hbide/sources.prg delete mode 100644 harbour/contrib/hbide/stylesheets.prg delete mode 100644 harbour/contrib/hbide/tags.prg delete mode 100644 harbour/contrib/hbide/themes.prg delete mode 100644 harbour/contrib/hbide/themes.ui delete mode 100644 harbour/contrib/hbide/themesex.ui delete mode 100644 harbour/contrib/hbide/tools.prg delete mode 100644 harbour/contrib/hbide/toolsutilities.ui delete mode 100644 harbour/contrib/hbide/uisrcmanager.prg delete mode 100644 harbour/contrib/hbide/updown.ui delete mode 100644 harbour/contrib/hbide/updown_v.ui delete mode 100644 harbour/contrib/hbide/wizard.prg delete mode 100644 harbour/contrib/hbide/xbpaddons/dbstruct.ui delete mode 100644 harbour/contrib/hbide/xbpaddons/dbu.prg delete mode 100644 harbour/contrib/hbide/xbpaddons/fetchdate.ui delete mode 100644 harbour/contrib/hbide/xbpaddons/misc.prg delete mode 100644 harbour/contrib/hbide/xbpaddons/reports.prg delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/close3.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/closetab.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/database.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/database_accept.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/database_add.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/database_down.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/database_lock.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/database_next.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/database_previous.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/database_process.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/database_remove.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/database_search.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/database_up.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/dbf_p1.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/dbf_p10.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/dbf_p2.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/dbf_p3.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/dbf_p4.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/dbf_p5.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/dbf_p6.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/dbf_p7.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/dbf_p8.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/dbf_p9.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/dbstruct.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/dc_delete.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f-bold-1.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f-generic.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f-image.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f-italic-1.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f-strike-1.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f-underline-1.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f_align_bottom.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f_align_center.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f_align_justify.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f_align_left.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f_align_middle.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f_align_right.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f_align_top.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f_barcode.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f_box_all.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f_box_bottom.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f_box_left.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f_box_matrix.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f_box_plain.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f_box_right.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f_box_shadow.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f_box_top.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f_chart.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/f_gradient.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/find.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/form.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/formview.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/fullscreen.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/gotoline3.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/grid.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/harbour.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/load_1.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/new.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/open3.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/panel_7.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/panel_8.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/print.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/r-landscape.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/r-page.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/r-portrait.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/r-report.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/rp_arc.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/rp_chord.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/rp_diamond.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/rp_ellipse.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/rp_linediagleft.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/rp_linediagright.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/rp_linehorz.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/rp_linevert.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/rp_rectangle.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/rp_roundrectangle.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/rp_shapes.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/rp_triangle.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/save3.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/sort.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/table.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/text.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/toback.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/tofront.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/unload_1.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/view_cascaded.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/view_docks.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/view_horzstacked.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/view_organized.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/view_refresh.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/view_tabbed.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/view_tiled.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/view_vertstacked.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/view_zoomin.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/view_zoomout.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/zoomin.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/zoomin3.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/zoomout.png delete mode 100644 harbour/contrib/hbide/xbpaddons/resources/zoomout3.png delete mode 100644 harbour/contrib/hbide/xbpaddons/tables.ui delete mode 100644 harbour/contrib/hbide/xbpaddons/xbp.qrc delete mode 100644 harbour/contrib/hbide/xbpaddons/xbpaddons.hbc delete mode 100644 harbour/contrib/hbide/xbpaddons/xbpaddons.hbp delete mode 100644 harbour/contrib/hbqt/CREDITS.txt delete mode 100644 harbour/contrib/hbqt/gtqtc.hbc delete mode 100644 harbour/contrib/hbqt/gtqtc/gtqtc.cpp delete mode 100644 harbour/contrib/hbqt/gtqtc/gtqtc.h delete mode 100644 harbour/contrib/hbqt/gtqtc/gtqtc.hbc delete mode 100644 harbour/contrib/hbqt/gtqtc/gtqtc.hbm delete mode 100644 harbour/contrib/hbqt/gtqtc/gtqtc.hbp delete mode 100644 harbour/contrib/hbqt/gtqtc/gtqtcs.hbp delete mode 100644 harbour/contrib/hbqt/hbmk2_qt.hb delete mode 100644 harbour/contrib/hbqt/hbqt.hbc delete mode 100644 harbour/contrib/hbqt/hbqt_all.hbp delete mode 100644 harbour/contrib/hbqt/hbqt_common.hbc delete mode 100644 harbour/contrib/hbqt/hbqt_common.hbm delete mode 100644 harbour/contrib/hbqt/hbqt_commons.hbm delete mode 100644 harbour/contrib/hbqt/hbqtcore.hbc delete mode 100644 harbour/contrib/hbqt/hbqtdesigner.hbc delete mode 100644 harbour/contrib/hbqt/hbqtgui.hbc delete mode 100644 harbour/contrib/hbqt/hbqtnetwork.hbc delete mode 100644 harbour/contrib/hbqt/hbqtsql.hbc delete mode 100644 harbour/contrib/hbqt/hbqtwebkit.hbc delete mode 100644 harbour/contrib/hbqt/qscintilla/hbqscintilla.ch delete mode 100644 harbour/contrib/hbqt/qscintilla/hbqscintilla.hbc delete mode 100644 harbour/contrib/hbqt/qscintilla/hbqscintilla.hbm delete mode 100644 harbour/contrib/hbqt/qscintilla/hbqscintilla.hbp delete mode 100644 harbour/contrib/hbqt/qscintilla/hbqscintillas.hbp delete mode 100644 harbour/contrib/hbqt/qscintilla/hbqscintillas.hbx delete mode 100644 harbour/contrib/hbqt/qscintilla/hbqt_hbqsciscintilla.cpp delete mode 100644 harbour/contrib/hbqt/qscintilla/hbqt_hbqsciscintilla.h delete mode 100644 harbour/contrib/hbqt/qscintilla/hbqt_init.cpp delete mode 100644 harbour/contrib/hbqt/qscintilla/qth/HBQsciScintilla.qth delete mode 100644 harbour/contrib/hbqt/qscintilla/qth/QsciAPIs.qth delete mode 100644 harbour/contrib/hbqt/qscintilla/qth/QsciAbstractAPIs.qth delete mode 100644 harbour/contrib/hbqt/qscintilla/qth/QsciCommand.qth delete mode 100644 harbour/contrib/hbqt/qscintilla/qth/QsciCommandSet.qth delete mode 100644 harbour/contrib/hbqt/qscintilla/qth/QsciDocument.qth delete mode 100644 harbour/contrib/hbqt/qscintilla/qth/QsciLexer.qth delete mode 100644 harbour/contrib/hbqt/qscintilla/qth/QsciLexerCPP.qth delete mode 100644 harbour/contrib/hbqt/qscintilla/qth/QsciLexerFlagship.qth delete mode 100644 harbour/contrib/hbqt/qscintilla/qth/QsciScintilla.qth delete mode 100644 harbour/contrib/hbqt/qscintilla/qth/QsciStyle.qth delete mode 100644 harbour/contrib/hbqt/qscintilla/qth/QsciStyledText.qth delete mode 100644 harbour/contrib/hbqt/qscintilla/qth/filelist.hbm delete mode 100644 harbour/contrib/hbqt/qtcore/hbqt.h delete mode 100644 harbour/contrib/hbqt/qtcore/hbqt_bind.cpp delete mode 100644 harbour/contrib/hbqt/qtcore/hbqt_destroyer.cpp delete mode 100644 harbour/contrib/hbqt/qtcore/hbqt_destroyer.h delete mode 100644 harbour/contrib/hbqt/qtcore/hbqt_hbqevents.cpp delete mode 100644 harbour/contrib/hbqt/qtcore/hbqt_hbqevents.h delete mode 100644 harbour/contrib/hbqt/qtcore/hbqt_hbqslots.cpp delete mode 100644 harbour/contrib/hbqt/qtcore/hbqt_hbqslots.h delete mode 100644 harbour/contrib/hbqt/qtcore/hbqt_hbqstring.cpp delete mode 100644 harbour/contrib/hbqt/qtcore/hbqt_hbqstring.h delete mode 100644 harbour/contrib/hbqt/qtcore/hbqt_init.cpp delete mode 100644 harbour/contrib/hbqt/qtcore/hbqt_misc.prg delete mode 100644 harbour/contrib/hbqt/qtcore/hbqt_pointer.cpp delete mode 100644 harbour/contrib/hbqt/qtcore/hbqt_version.cpp delete mode 100644 harbour/contrib/hbqt/qtcore/hbqtcore.ch delete mode 100644 harbour/contrib/hbqt/qtcore/hbqtcore.h delete mode 100644 harbour/contrib/hbqt/qtcore/hbqtcore.hbc delete mode 100644 harbour/contrib/hbqt/qtcore/hbqtcore.hbm delete mode 100644 harbour/contrib/hbqt/qtcore/hbqtcore.hbp delete mode 100644 harbour/contrib/hbqt/qtcore/hbqtcore.hbx delete mode 100644 harbour/contrib/hbqt/qtcore/hbqtcores.hbp delete mode 100644 harbour/contrib/hbqt/qtcore/hbqtinit.h delete mode 100644 harbour/contrib/hbqt/qtcore/qth/HBQString.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QAbstractEventDispatcher.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QAbstractItemModel.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QAbstractListModel.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QAbstractTableModel.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QBitArray.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QBuffer.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QByteArray.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QChar.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QChildEvent.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QCoreApplication.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QDataStream.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QDate.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QDateTime.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QDir.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QEvent.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QEventLoop.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QFile.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QFileInfo.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QFileSystemWatcher.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QGenericArgument.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QGenericReturnArgument.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QIODevice.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QLatin1Char.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QLatin1String.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QLibraryInfo.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QLine.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QLineF.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QList.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QLocale.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QMetaClassInfo.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QMetaEnum.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QMetaMethod.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QMetaObject.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QMetaProperty.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QMetaType.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QMimeData.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QModelIndex.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QObject.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QPoint.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QPointF.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QProcess.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QRect.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QRectF.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QRegExp.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QResource.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QSettings.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QSignalMapper.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QSize.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QSizeF.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QStringList.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QStringRef.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QTextBoundaryFinder.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QTextCodec.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QTextDecoder.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QTextEncoder.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QTextStream.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QThread.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QTime.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QTimeLine.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QTimer.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QTranslator.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QUrl.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/QVariant.qth delete mode 100644 harbour/contrib/hbqt/qtcore/qth/filelist.hbm delete mode 100644 harbour/contrib/hbqt/qtdeclarative/hbqt_init.cpp delete mode 100644 harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.ch delete mode 100644 harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.hbc delete mode 100644 harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.hbm delete mode 100644 harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.hbp delete mode 100644 harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.hbx delete mode 100644 harbour/contrib/hbqt/qtdeclarative/hbqtdeclaratives.hbp delete mode 100644 harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeComponent.qth delete mode 100644 harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeContext.qth delete mode 100644 harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeEngine.qth delete mode 100644 harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeError.qth delete mode 100644 harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeExpression.qth delete mode 100644 harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeImageProvider.qth delete mode 100644 harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeItem.qth delete mode 100644 harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeListReference.qth delete mode 100644 harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeParserStatus.qth delete mode 100644 harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeProperty.qth delete mode 100644 harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativePropertyMap.qth delete mode 100644 harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativePropertyValueSource.qth delete mode 100644 harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeScriptString.qth delete mode 100644 harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeView.qth delete mode 100644 harbour/contrib/hbqt/qtdeclarative/qth/filelist.hbm delete mode 100644 harbour/contrib/hbqt/qtdesigner/hbqt_init.cpp delete mode 100644 harbour/contrib/hbqt/qtdesigner/hbqtdesigner.hbc delete mode 100644 harbour/contrib/hbqt/qtdesigner/hbqtdesigner.hbm delete mode 100644 harbour/contrib/hbqt/qtdesigner/hbqtdesigner.hbp delete mode 100644 harbour/contrib/hbqt/qtdesigner/hbqtdesigner.hbx delete mode 100644 harbour/contrib/hbqt/qtdesigner/hbqtdesigners.hbp delete mode 100644 harbour/contrib/hbqt/qtdesigner/qth/QDesignerActionEditorInterface.qth delete mode 100644 harbour/contrib/hbqt/qtdesigner/qth/QDesignerFormEditorInterface.qth delete mode 100644 harbour/contrib/hbqt/qtdesigner/qth/QDesignerFormWindowCursorInterface.qth delete mode 100644 harbour/contrib/hbqt/qtdesigner/qth/QDesignerFormWindowInterface.qth delete mode 100644 harbour/contrib/hbqt/qtdesigner/qth/QDesignerFormWindowManagerInterface.qth delete mode 100644 harbour/contrib/hbqt/qtdesigner/qth/QDesignerObjectInspectorInterface.qth delete mode 100644 harbour/contrib/hbqt/qtdesigner/qth/QDesignerPropertyEditorInterface.qth delete mode 100644 harbour/contrib/hbqt/qtdesigner/qth/QDesignerWidgetBoxInterface.qth delete mode 100644 harbour/contrib/hbqt/qtdesigner/qth/filelist.hbm delete mode 100644 harbour/contrib/hbqt/qtgui/hbqt_errorsys.prg delete mode 100644 harbour/contrib/hbqt/qtgui/hbqt_hbqabstractitemmodel.cpp delete mode 100644 harbour/contrib/hbqt/qtgui/hbqt_hbqabstractitemmodel.h delete mode 100644 harbour/contrib/hbqt/qtgui/hbqt_hbqgraphicsitem.cpp delete mode 100644 harbour/contrib/hbqt/qtgui/hbqt_hbqgraphicsitem.h delete mode 100644 harbour/contrib/hbqt/qtgui/hbqt_hbqgraphicsscene.cpp delete mode 100644 harbour/contrib/hbqt/qtgui/hbqt_hbqgraphicsscene.h delete mode 100644 harbour/contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp delete mode 100644 harbour/contrib/hbqt/qtgui/hbqt_hbqplaintextedit.h delete mode 100644 harbour/contrib/hbqt/qtgui/hbqt_hbqsyntaxhighlighter.cpp delete mode 100644 harbour/contrib/hbqt/qtgui/hbqt_hbqsyntaxhighlighter.h delete mode 100644 harbour/contrib/hbqt/qtgui/hbqt_hbqtableview.cpp delete mode 100644 harbour/contrib/hbqt/qtgui/hbqt_hbqtableview.h delete mode 100644 harbour/contrib/hbqt/qtgui/hbqt_init.cpp delete mode 100644 harbour/contrib/hbqt/qtgui/hbqt_utils.cpp delete mode 100644 harbour/contrib/hbqt/qtgui/hbqtgui.ch delete mode 100644 harbour/contrib/hbqt/qtgui/hbqtgui.h delete mode 100644 harbour/contrib/hbqt/qtgui/hbqtgui.hbc delete mode 100644 harbour/contrib/hbqt/qtgui/hbqtgui.hbm delete mode 100644 harbour/contrib/hbqt/qtgui/hbqtgui.hbp delete mode 100644 harbour/contrib/hbqt/qtgui/hbqtgui.hbx delete mode 100644 harbour/contrib/hbqt/qtgui/hbqtguis.hbp delete mode 100644 harbour/contrib/hbqt/qtgui/qth/HBQAbstractItemModel.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/HBQGraphicsItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/HBQGraphicsScene.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/HBQPlainTextEdit.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/HBQSyntaxHighlighter.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/HBQTableView.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/HBQTextBlockUserData.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QAbstractButton.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QAbstractGraphicsShapeItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QAbstractItemDelegate.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QAbstractItemView.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QAbstractPrintDialog.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QAbstractProxyModel.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QAbstractScrollArea.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QAbstractSlider.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QAbstractSpinBox.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QAbstractTextDocumentLayout.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QAction.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QActionEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QActionGroup.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QApplication.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QBitmap.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QBoxLayout.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QBrush.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QButtonGroup.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QCalendarWidget.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QCheckBox.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QClipboard.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QCloseEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QColor.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QColorDialog.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QComboBox.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QCommandLinkButton.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QCommonStyle.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QCompleter.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QConicalGradient.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QContextMenuEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QCursor.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QDateEdit.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QDateTimeEdit.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QDesktopServices.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QDesktopWidget.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QDial.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QDialog.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QDialogButtonBox.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QDirModel.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QDockWidget.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QDoubleSpinBox.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QDoubleValidator.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QDrag.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QDragEnterEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QDragLeaveEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QDragMoveEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QDropEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QErrorMessage.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QFileDialog.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QFileIconProvider.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QFileOpenEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QFileSystemModel.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QFocusEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QFocusFrame.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QFont.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QFontComboBox.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QFontDatabase.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QFontDialog.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QFontInfo.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QFontMetrics.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QFontMetricsF.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QFormLayout.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QFrame.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGradient.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsEllipseItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsGridLayout.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsItemAnimation.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsItemGroup.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsLayout.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsLayoutItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsLineItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsLinearLayout.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsPathItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsPixmapItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsPolygonItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsProxyWidget.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsRectItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsScene.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsSceneContextMenuEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsSceneDragDropEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsSceneEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsSceneHelpEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsSceneHoverEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsSceneMouseEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsSceneMoveEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsSceneResizeEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsSceneWheelEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsSimpleTextItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsSvgItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsTextItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsView.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGraphicsWidget.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGridLayout.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QGroupBox.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QHBoxLayout.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QHeaderView.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QHelpEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QHideEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QHoverEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QIcon.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QImage.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QImageReader.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QImageWriter.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QInputContext.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QInputDialog.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QInputEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QInputMethodEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QIntValidator.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QItemDelegate.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QItemEditorCreatorBase.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QItemEditorFactory.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QItemSelection.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QItemSelectionModel.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QKeyEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QKeySequence.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QLCDNumber.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QLabel.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QLayout.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QLayoutItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QLineEdit.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QLinearGradient.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QListView.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QListWidget.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QListWidgetItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QMainWindow.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QMatrix.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QMdiArea.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QMdiSubWindow.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QMenu.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QMenuBar.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QMessageBox.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QMouseEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QMoveEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QMovie.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPageSetupDialog.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPaintDevice.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPaintEngine.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPaintEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPainter.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPainterPath.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPalette.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPen.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPicture.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPixmap.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPlainTextDocumentLayout.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPlainTextEdit.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPolygon.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPolygonF.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPrintDialog.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPrintEngine.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPrintPreviewDialog.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPrintPreviewWidget.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPrinter.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPrinterInfo.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QProgressBar.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QProgressDialog.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QPushButton.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QRadialGradient.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QRadioButton.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QRegExpValidator.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QRegion.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QResizeEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QScrollArea.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QScrollBar.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QSessionManager.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QShortcutEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QShowEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QSizeGrip.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QSizePolicy.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QSlider.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QSortFilterProxyModel.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QSound.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QSpacerItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QSpinBox.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QSplashScreen.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QSplitter.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStackedWidget.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStandardItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStandardItemModel.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStatusBar.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStringListModel.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyle.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleFactory.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleHintReturn.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleHintReturnMask.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleHintReturnVariant.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOption.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionButton.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionComboBox.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionComplex.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionDockWidget.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionFocusRect.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionFrame.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionGraphicsItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionGroupBox.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionHeader.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionMenuItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionProgressBar.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionSizeGrip.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionSlider.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionSpinBox.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionTab.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionTabBarBase.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionTabWidgetFrame.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionTitleBar.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionToolBar.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionToolBox.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionToolButton.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyleOptionViewItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStylePainter.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QStyledItemDelegate.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QSyntaxHighlighter.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QSystemTrayIcon.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTabBar.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTabWidget.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTableView.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTableWidget.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTableWidgetItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTableWidgetSelectionRange.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextBlock.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextBlockFormat.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextBlockGroup.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextBrowser.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextCharFormat.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextCursor.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextDocument.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextDocumentFragment.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextDocumentWriter.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextEdit.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextFormat.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextFragment.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextFrame.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextFrameFormat.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextImageFormat.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextInlineObject.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextLayout.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextLength.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextLine.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextList.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextListFormat.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextObject.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextOption.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTextTableFormat.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTimeEdit.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QToolBar.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QToolBox.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QToolButton.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QToolTip.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTransform.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTreeView.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTreeWidget.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QTreeWidgetItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QVBoxLayout.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QValidator.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QWheelEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QWidget.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QWidgetAction.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QWidgetItem.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QWindowStateChangeEvent.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QWindowsStyle.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QWizard.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/QWizardPage.qth delete mode 100644 harbour/contrib/hbqt/qtgui/qth/filelist.hbm delete mode 100644 harbour/contrib/hbqt/qtmultimedia/hbqt_init.cpp delete mode 100644 harbour/contrib/hbqt/qtmultimedia/hbqtmultimedia.ch delete mode 100644 harbour/contrib/hbqt/qtmultimedia/hbqtmultimedia.hbc delete mode 100644 harbour/contrib/hbqt/qtmultimedia/hbqtmultimedia.hbm delete mode 100644 harbour/contrib/hbqt/qtmultimedia/hbqtmultimedia.hbp delete mode 100644 harbour/contrib/hbqt/qtmultimedia/hbqtmultimedia.hbx delete mode 100644 harbour/contrib/hbqt/qtmultimedia/hbqtmultimedias.hbp delete mode 100644 harbour/contrib/hbqt/qtmultimedia/qth/QAbstractVideoBuffer.qth delete mode 100644 harbour/contrib/hbqt/qtmultimedia/qth/QAbstractVideoSurface.qth delete mode 100644 harbour/contrib/hbqt/qtmultimedia/qth/QAudioDeviceInfo.qth delete mode 100644 harbour/contrib/hbqt/qtmultimedia/qth/QAudioFormat.qth delete mode 100644 harbour/contrib/hbqt/qtmultimedia/qth/QAudioInput.qth delete mode 100644 harbour/contrib/hbqt/qtmultimedia/qth/QAudioOutput.qth delete mode 100644 harbour/contrib/hbqt/qtmultimedia/qth/QVideoFrame.qth delete mode 100644 harbour/contrib/hbqt/qtmultimedia/qth/QVideoSurfaceFormat.qth delete mode 100644 harbour/contrib/hbqt/qtmultimedia/qth/filelist.hbm delete mode 100644 harbour/contrib/hbqt/qtnetwork/hbqt_init.cpp delete mode 100644 harbour/contrib/hbqt/qtnetwork/hbqtnetwork.hbc delete mode 100644 harbour/contrib/hbqt/qtnetwork/hbqtnetwork.hbm delete mode 100644 harbour/contrib/hbqt/qtnetwork/hbqtnetwork.hbp delete mode 100644 harbour/contrib/hbqt/qtnetwork/hbqtnetwork.hbx delete mode 100644 harbour/contrib/hbqt/qtnetwork/hbqtnetworks.hbp delete mode 100644 harbour/contrib/hbqt/qtnetwork/qth/QFtp.qth delete mode 100644 harbour/contrib/hbqt/qtnetwork/qth/QHttp.qth delete mode 100644 harbour/contrib/hbqt/qtnetwork/qth/QHttpHeader.qth delete mode 100644 harbour/contrib/hbqt/qtnetwork/qth/QHttpRequestHeader.qth delete mode 100644 harbour/contrib/hbqt/qtnetwork/qth/QHttpResponseHeader.qth delete mode 100644 harbour/contrib/hbqt/qtnetwork/qth/QNetworkProxy.qth delete mode 100644 harbour/contrib/hbqt/qtnetwork/qth/QNetworkRequest.qth delete mode 100644 harbour/contrib/hbqt/qtnetwork/qth/QUrlInfo.qth delete mode 100644 harbour/contrib/hbqt/qtnetwork/qth/filelist.hbm delete mode 100644 harbour/contrib/hbqt/qtopengl/hbqt_init.cpp delete mode 100644 harbour/contrib/hbqt/qtopengl/hbqtopengl.ch delete mode 100644 harbour/contrib/hbqt/qtopengl/hbqtopengl.hbc delete mode 100644 harbour/contrib/hbqt/qtopengl/hbqtopengl.hbm delete mode 100644 harbour/contrib/hbqt/qtopengl/hbqtopengl.hbp delete mode 100644 harbour/contrib/hbqt/qtopengl/hbqtopengl.hbx delete mode 100644 harbour/contrib/hbqt/qtopengl/hbqtopengls.hbp delete mode 100644 harbour/contrib/hbqt/qtopengl/qth/QGL.qth delete mode 100644 harbour/contrib/hbqt/qtopengl/qth/QGLBuffer.qth delete mode 100644 harbour/contrib/hbqt/qtopengl/qth/QGLColormap.qth delete mode 100644 harbour/contrib/hbqt/qtopengl/qth/QGLContext.qth delete mode 100644 harbour/contrib/hbqt/qtopengl/qth/QGLFormat.qth delete mode 100644 harbour/contrib/hbqt/qtopengl/qth/QGLFramebufferObject.qth delete mode 100644 harbour/contrib/hbqt/qtopengl/qth/QGLFramebufferObjectFormat.qth delete mode 100644 harbour/contrib/hbqt/qtopengl/qth/QGLFunctions.qth delete mode 100644 harbour/contrib/hbqt/qtopengl/qth/QGLPixelBuffer.qth delete mode 100644 harbour/contrib/hbqt/qtopengl/qth/QGLShader.qth delete mode 100644 harbour/contrib/hbqt/qtopengl/qth/QGLShaderProgram.qth delete mode 100644 harbour/contrib/hbqt/qtopengl/qth/QGLWidget.qth delete mode 100644 harbour/contrib/hbqt/qtopengl/qth/filelist.hbm delete mode 100644 harbour/contrib/hbqt/qtscript/hbqt_init.cpp delete mode 100644 harbour/contrib/hbqt/qtscript/hbqtscript.ch delete mode 100644 harbour/contrib/hbqt/qtscript/hbqtscript.hbc delete mode 100644 harbour/contrib/hbqt/qtscript/hbqtscript.hbm delete mode 100644 harbour/contrib/hbqt/qtscript/hbqtscript.hbp delete mode 100644 harbour/contrib/hbqt/qtscript/hbqtscript.hbx delete mode 100644 harbour/contrib/hbqt/qtscript/hbqtscripts.hbp delete mode 100644 harbour/contrib/hbqt/qtscript/qth/QScriptClass.qth delete mode 100644 harbour/contrib/hbqt/qtscript/qth/QScriptClassPropertyIterator.qth delete mode 100644 harbour/contrib/hbqt/qtscript/qth/QScriptContext.qth delete mode 100644 harbour/contrib/hbqt/qtscript/qth/QScriptContextInfo.qth delete mode 100644 harbour/contrib/hbqt/qtscript/qth/QScriptEngine.qth delete mode 100644 harbour/contrib/hbqt/qtscript/qth/QScriptEngineAgent.qth delete mode 100644 harbour/contrib/hbqt/qtscript/qth/QScriptExtensionPlugin.qth delete mode 100644 harbour/contrib/hbqt/qtscript/qth/QScriptProgram.qth delete mode 100644 harbour/contrib/hbqt/qtscript/qth/QScriptString.qth delete mode 100644 harbour/contrib/hbqt/qtscript/qth/QScriptSyntaxCheckResult.qth delete mode 100644 harbour/contrib/hbqt/qtscript/qth/QScriptValue.qth delete mode 100644 harbour/contrib/hbqt/qtscript/qth/QScriptValueIterator.qth delete mode 100644 harbour/contrib/hbqt/qtscript/qth/QScriptable.qth delete mode 100644 harbour/contrib/hbqt/qtscript/qth/filelist.hbm delete mode 100644 harbour/contrib/hbqt/qtsql/hbqt_init.cpp delete mode 100644 harbour/contrib/hbqt/qtsql/hbqtsql.ch delete mode 100644 harbour/contrib/hbqt/qtsql/hbqtsql.hbc delete mode 100644 harbour/contrib/hbqt/qtsql/hbqtsql.hbm delete mode 100644 harbour/contrib/hbqt/qtsql/hbqtsql.hbp delete mode 100644 harbour/contrib/hbqt/qtsql/hbqtsql.hbx delete mode 100644 harbour/contrib/hbqt/qtsql/hbqtsqls.hbp delete mode 100644 harbour/contrib/hbqt/qtsql/qth/QSqlDatabase.qth delete mode 100644 harbour/contrib/hbqt/qtsql/qth/QSqlDriver.qth delete mode 100644 harbour/contrib/hbqt/qtsql/qth/QSqlError.qth delete mode 100644 harbour/contrib/hbqt/qtsql/qth/QSqlField.qth delete mode 100644 harbour/contrib/hbqt/qtsql/qth/QSqlIndex.qth delete mode 100644 harbour/contrib/hbqt/qtsql/qth/QSqlQuery.qth delete mode 100644 harbour/contrib/hbqt/qtsql/qth/QSqlQueryModel.qth delete mode 100644 harbour/contrib/hbqt/qtsql/qth/QSqlRecord.qth delete mode 100644 harbour/contrib/hbqt/qtsql/qth/QSqlRelationalTableModel.qth delete mode 100644 harbour/contrib/hbqt/qtsql/qth/QSqlResult.qth delete mode 100644 harbour/contrib/hbqt/qtsql/qth/QSqlTableModel.qth delete mode 100644 harbour/contrib/hbqt/qtsql/qth/filelist.hbm delete mode 100644 harbour/contrib/hbqt/qtsvg/hbqt_init.cpp delete mode 100644 harbour/contrib/hbqt/qtsvg/hbqtsvg.ch delete mode 100644 harbour/contrib/hbqt/qtsvg/hbqtsvg.hbc delete mode 100644 harbour/contrib/hbqt/qtsvg/hbqtsvg.hbm delete mode 100644 harbour/contrib/hbqt/qtsvg/hbqtsvg.hbp delete mode 100644 harbour/contrib/hbqt/qtsvg/hbqtsvg.hbx delete mode 100644 harbour/contrib/hbqt/qtsvg/hbqtsvgs.hbp delete mode 100644 harbour/contrib/hbqt/qtsvg/qth/QGraphicsSvgItem.qth delete mode 100644 harbour/contrib/hbqt/qtsvg/qth/QSvgGenerator.qth delete mode 100644 harbour/contrib/hbqt/qtsvg/qth/QSvgRenderer.qth delete mode 100644 harbour/contrib/hbqt/qtsvg/qth/QSvgWidget.qth delete mode 100644 harbour/contrib/hbqt/qtsvg/qth/filelist.hbm delete mode 100644 harbour/contrib/hbqt/qtwebkit/hbqt_init.cpp delete mode 100644 harbour/contrib/hbqt/qtwebkit/hbqtwebkit.ch delete mode 100644 harbour/contrib/hbqt/qtwebkit/hbqtwebkit.hbc delete mode 100644 harbour/contrib/hbqt/qtwebkit/hbqtwebkit.hbm delete mode 100644 harbour/contrib/hbqt/qtwebkit/hbqtwebkit.hbp delete mode 100644 harbour/contrib/hbqt/qtwebkit/hbqtwebkit.hbx delete mode 100644 harbour/contrib/hbqt/qtwebkit/hbqtwebkits.hbp delete mode 100644 harbour/contrib/hbqt/qtwebkit/qth/QWebFrame.qth delete mode 100644 harbour/contrib/hbqt/qtwebkit/qth/QWebHistory.qth delete mode 100644 harbour/contrib/hbqt/qtwebkit/qth/QWebHistoryInterface.qth delete mode 100644 harbour/contrib/hbqt/qtwebkit/qth/QWebHistoryItem.qth delete mode 100644 harbour/contrib/hbqt/qtwebkit/qth/QWebHitTestResult.qth delete mode 100644 harbour/contrib/hbqt/qtwebkit/qth/QWebPage.qth delete mode 100644 harbour/contrib/hbqt/qtwebkit/qth/QWebPluginFactory.qth delete mode 100644 harbour/contrib/hbqt/qtwebkit/qth/QWebSecurityOrigin.qth delete mode 100644 harbour/contrib/hbqt/qtwebkit/qth/QWebSettings.qth delete mode 100644 harbour/contrib/hbqt/qtwebkit/qth/QWebView.qth delete mode 100644 harbour/contrib/hbqt/qtwebkit/qth/filelist.hbm delete mode 100644 harbour/contrib/hbqt/qtxml/hbqt_init.cpp delete mode 100644 harbour/contrib/hbqt/qtxml/hbqtxml.ch delete mode 100644 harbour/contrib/hbqt/qtxml/hbqtxml.hbc delete mode 100644 harbour/contrib/hbqt/qtxml/hbqtxml.hbm delete mode 100644 harbour/contrib/hbqt/qtxml/hbqtxml.hbp delete mode 100644 harbour/contrib/hbqt/qtxml/hbqtxml.hbx delete mode 100644 harbour/contrib/hbqt/qtxml/hbqtxmls.hbp delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QDomAttr.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QDomCDATASection.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QDomComment.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QDomDocument.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QDomDocumentFragment.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QDomDocumentType.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QDomElement.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QDomEntity.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QDomEntityReference.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QDomImplementation.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QDomNamedNodeMap.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QDomNode.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QDomNodeList.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QDomNotation.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QDomProcessingInstruction.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QDomText.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QXmlAttributes.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QXmlContentHandler.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QXmlDTDHandler.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QXmlDeclHandler.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QXmlDefaultHandler.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QXmlEntityResolver.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QXmlErrorHandler.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QXmlInputSource.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QXmlLexicalHandler.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QXmlLocator.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QXmlNamespaceSupport.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QXmlParseException.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QXmlReader.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/QXmlSimpleReader.qth delete mode 100644 harbour/contrib/hbqt/qtxml/qth/filelist.hbm delete mode 100644 harbour/contrib/hbqt/tests/QtCore.txt delete mode 100644 harbour/contrib/hbqt/tests/QtGui.txt delete mode 100644 harbour/contrib/hbqt/tests/QtNetwork.txt delete mode 100644 harbour/contrib/hbqt/tests/browarray.prg delete mode 100644 harbour/contrib/hbqt/tests/browqt.prg delete mode 100644 harbour/contrib/hbqt/tests/cls_dbstruct.prg delete mode 100644 harbour/contrib/hbqt/tests/copy.png delete mode 100644 harbour/contrib/hbqt/tests/cut.png delete mode 100644 harbour/contrib/hbqt/tests/dbfbrowser.prg delete mode 100644 harbour/contrib/hbqt/tests/dbfbrowserclass.prg delete mode 100644 harbour/contrib/hbqt/tests/dbstruct.prg delete mode 100644 harbour/contrib/hbqt/tests/dbstruct.ui delete mode 100644 harbour/contrib/hbqt/tests/demoqt.prg delete mode 100644 harbour/contrib/hbqt/tests/draggable.prg delete mode 100644 harbour/contrib/hbqt/tests/harbour-icon.png delete mode 100644 harbour/contrib/hbqt/tests/harbour-logo.png delete mode 100644 harbour/contrib/hbqt/tests/hbmk.hbm delete mode 100644 harbour/contrib/hbqt/tests/hbqtgen2.prg delete mode 100644 harbour/contrib/hbqt/tests/ideui.hbp delete mode 100644 harbour/contrib/hbqt/tests/inherit.prg delete mode 100644 harbour/contrib/hbqt/tests/new.png delete mode 100644 harbour/contrib/hbqt/tests/open.png delete mode 100644 harbour/contrib/hbqt/tests/paste.png delete mode 100644 harbour/contrib/hbqt/tests/qtrevamp.prg delete mode 100644 harbour/contrib/hbqt/tests/qtver.prg delete mode 100644 harbour/contrib/hbqt/tests/qtwvg.hbp delete mode 100644 harbour/contrib/hbqt/tests/qtwvg.prg delete mode 100644 harbour/contrib/hbqt/tests/save.png delete mode 100644 harbour/contrib/hbqt/tests/signalslots.prg delete mode 100644 harbour/contrib/hbqt/tests/test.ico delete mode 100644 harbour/contrib/hbqt/tests/testbrow.prg delete mode 100644 harbour/contrib/hbqt/tests/testqaim.prg delete mode 100644 harbour/contrib/hbqt/tests/testres.hbp delete mode 100644 harbour/contrib/hbqt/tests/testres.prg delete mode 100644 harbour/contrib/hbqt/tests/testres.qrc delete mode 100644 harbour/contrib/hbqt/tests/wvtqt.hbp delete mode 100644 harbour/contrib/hbqt/tests/wvtqt.prg delete mode 100644 harbour/contrib/hbxbp/3state.prg delete mode 100644 harbour/contrib/hbxbp/appevent.ch delete mode 100644 harbour/contrib/hbxbp/appevent.prg delete mode 100644 harbour/contrib/hbxbp/bitmap.prg delete mode 100644 harbour/contrib/hbxbp/browse.prg delete mode 100644 harbour/contrib/hbxbp/checkbox.prg delete mode 100644 harbour/contrib/hbxbp/clipboard.prg delete mode 100644 harbour/contrib/hbxbp/combobox.prg delete mode 100644 harbour/contrib/hbxbp/crt.prg delete mode 100644 harbour/contrib/hbxbp/dataref.prg delete mode 100644 harbour/contrib/hbxbp/dialog.prg delete mode 100644 harbour/contrib/hbxbp/filedialog.prg delete mode 100644 harbour/contrib/hbxbp/fontdialog.prg delete mode 100644 harbour/contrib/hbxbp/generic.prg delete mode 100644 harbour/contrib/hbxbp/gra.ch delete mode 100644 harbour/contrib/hbxbp/gra.prg delete mode 100644 harbour/contrib/hbxbp/hbpprocess.prg delete mode 100644 harbour/contrib/hbxbp/hbxbp.hbc delete mode 100644 harbour/contrib/hbxbp/hbxbp.hbp delete mode 100644 harbour/contrib/hbxbp/hbxbp.hbx delete mode 100644 harbour/contrib/hbxbp/htmlviewer.prg delete mode 100644 harbour/contrib/hbxbp/listbox.prg delete mode 100644 harbour/contrib/hbxbp/menubar.prg delete mode 100644 harbour/contrib/hbxbp/mle.prg delete mode 100644 harbour/contrib/hbxbp/parthandler.prg delete mode 100644 harbour/contrib/hbxbp/presspace.prg delete mode 100644 harbour/contrib/hbxbp/printdialog.prg delete mode 100644 harbour/contrib/hbxbp/printer.prg delete mode 100644 harbour/contrib/hbxbp/pushbutton.prg delete mode 100644 harbour/contrib/hbxbp/radiobutton.prg delete mode 100644 harbour/contrib/hbxbp/rtf.prg delete mode 100644 harbour/contrib/hbxbp/scrollbar.prg delete mode 100644 harbour/contrib/hbxbp/sle.prg delete mode 100644 harbour/contrib/hbxbp/spinbutton.prg delete mode 100644 harbour/contrib/hbxbp/static.prg delete mode 100644 harbour/contrib/hbxbp/statusbar.prg delete mode 100644 harbour/contrib/hbxbp/style.prg delete mode 100644 harbour/contrib/hbxbp/tabpage.prg delete mode 100644 harbour/contrib/hbxbp/tests/abs1.png delete mode 100644 harbour/contrib/hbxbp/tests/abs2.png delete mode 100644 harbour/contrib/hbxbp/tests/abs3.png delete mode 100644 harbour/contrib/hbxbp/tests/abs4.png delete mode 100644 harbour/contrib/hbxbp/tests/copy.png delete mode 100644 harbour/contrib/hbxbp/tests/cut.png delete mode 100644 harbour/contrib/hbxbp/tests/demoxbp.prg delete mode 100644 harbour/contrib/hbxbp/tests/dialogqt.prg delete mode 100644 harbour/contrib/hbxbp/tests/hbmk.hbm delete mode 100644 harbour/contrib/hbxbp/tests/new.png delete mode 100644 harbour/contrib/hbxbp/tests/open.png delete mode 100644 harbour/contrib/hbxbp/tests/paste.png delete mode 100644 harbour/contrib/hbxbp/tests/print.png delete mode 100644 harbour/contrib/hbxbp/tests/save.png delete mode 100644 harbour/contrib/hbxbp/tests/test.ico delete mode 100644 harbour/contrib/hbxbp/tests/vr.png delete mode 100644 harbour/contrib/hbxbp/tests/wvtqt.hbp delete mode 100644 harbour/contrib/hbxbp/tests/wvtqt.prg delete mode 100644 harbour/contrib/hbxbp/tests/xbpqtc.prg delete mode 100644 harbour/contrib/hbxbp/toolbar.prg delete mode 100644 harbour/contrib/hbxbp/treeview.prg delete mode 100644 harbour/contrib/hbxbp/window.prg delete mode 100644 harbour/contrib/hbxbp/xbp.ch delete mode 100644 harbour/contrib/hbxbp/xbpdev.ch diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 1f7f3f7974..46d75e8979 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,17 @@ The license applies to all entries newer than 2009-04-28. */ +2012-09-27 12:11 UTC+0200 Viktor Szakats (vszakats syenar.net) + - contrib/hbide + - contrib/hbqt + - contrib/hbxbp + - deleted hbqt, hbxbp, hbide as final step of contrib + split to separate project. + find them in this (temporary) repository: + http://sourceforge.net/projects/hbqt/ + or checkout from Harbour repository using: + svn co -r 18153 https://harbour-project.svn.sourceforge.net/svnroot/harbour-project/trunk/harbour + 2012-09-27 01:59 UTC+0200 Viktor Szakats (harbour syenar.net) * contrib/hbnf/* % deleted original filename embedded in headers diff --git a/harbour/contrib/hbide/actions.prg b/harbour/contrib/hbide/actions.prg deleted file mode 100644 index 7bee3dd9ab..0000000000 --- a/harbour/contrib/hbide/actions.prg +++ /dev/null @@ -1,1302 +0,0 @@ - /* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 23Nov2009 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "common.ch" -#include "hbclass.ch" -#include "xbp.ch" -#include "inkey.ch" -#include "hbide.ch" - -/*----------------------------------------------------------------------*/ - -#define _T( x ) ( mnuNormalizeItem( x ) ) - -#define __buttonViewTabbed_clicked__ 2007 -#define __buttonViewOrganized_clicked__ 2009 -#define __buttonSaveLayout_clicked__ 2010 -#define __buttonViewCascaded_clicked__ 2011 -#define __buttonViewTiled_clicked__ 2012 -#define __buttonViewMaximized_clicked__ 2013 -#define __buttonViewStackedVert_clicked__ 2014 -#define __buttonViewStackedHorz_clicked__ 2015 -#define __buttonViewZoomedIn_clicked__ 2016 -#define __buttonViewZoomedOut_clicked__ 2017 - -/*----------------------------------------------------------------------*/ - -CLASS IdeActions INHERIT IdeObject - - DATA qWidget - DATA hActions INIT { => } - DATA oActToolsBtn - - DATA qMainToolbar - DATA qFilesToolbar - DATA qPartsToolbar - DATA qProjectToolbar - DATA qTBarDocks - DATA qMdiToolbar - DATA qMdiToolbarL - DATA qSelToolbar - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() - - METHOD getAction( cKey ) - METHOD buildActions() - METHOD loadActions() - - METHOD buildMainMenu() - - METHOD buildToolBars() - METHOD buildToolbarMain() - METHOD buildToolbarFiles() - METHOD buildToolbarParts() - METHOD buildToolbarProject() - METHOD buildToolbarDocks() - METHOD buildMdiToolbar() - METHOD buildMdiToolbarLeft() - METHOD buildToolbarSelectedText() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeActions:new( oIde ) - - hb_hCaseMatch( ::hActions, .f. ) - ::oIde := oIde - ::qWidget := QWidget() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeActions:create( oIde ) - - DEFAULT oIde TO ::oIde - ::oIde := oIde - ::buildActions() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeActions:destroy() - LOCAL qAction - - FOR EACH qAction IN ::hActions - qAction := NIL - NEXT - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeActions:getAction( cKey ) - - IF hb_hHasKey( ::hActions, cKey ) - RETURN ::hActions[ cKey ] - ENDIF - - RETURN nil - -/*----------------------------------------------------------------------*/ - -METHOD IdeActions:buildActions() - LOCAL qAction, aAct, a_ - - aAct := ::loadActions() - - FOR EACH a_ IN aAct - IF !( hb_hHasKey( ::hActions, a_[ ACT_NAME ] ) ) - - qAction := QAction( ::qWidget ) - qAction:setCheckable( iif( empty( a_[ ACT_CHECKABLE ] ), .F., upper( a_[ ACT_CHECKABLE ] ) == "YES" ) ) - qAction:setText( strtran( a_[ ACT_TEXT ], "~", "&" ) ) - IF !empty( a_[ ACT_IMAGE ] ) - qAction:setIcon( QIcon( hbide_image( a_[ ACT_IMAGE ] ) ) ) - ENDIF - - #if 0 - IF !empty( a_[ ACT_SHORTCUT ] ) - k := a_[ ACT_SHORTCUT ] - k := strtran( k, "Sh+", "Shift+" ) - k := strtran( k, "SH+", "Shift+" ) - k := strtran( k, "^" , "Ctrl+" ) - qAction:setShortcut( QKeySequence( k ) ) - ENDIF - #endif - qAction:setTooltip( strtran( a_[ ACT_TEXT ], "~", "" ) ) - - ::hActions[ a_[ ACT_NAME ] ] := qAction - - ENDIF - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeActions:loadActions() - LOCAL aAct := {} - - // can be loaded from .ini or similar mechanism given - // - // Name Text Image Shortcut Checkable IconVisInMenu - // - aadd( aAct, { "TB_Exit" , "E~xit" , "exit3" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_Home" , "~Home" , "home3"/*"dc_home"*/, "" , "No", "Yes" } ) - aadd( aAct, { "TB_New" , "~Source" , "new" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_Open" , "~Open" , "open3" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_Save" , "~Save" , "save3" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_Close" , "~Close" , "close3" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_Print" , "~Print" , "print" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_Script" , "Run as script" , "runscript" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_Compile" , "Co~mpile" , "compile" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_CompilePPO" , "Com~pile to PPO" , "ppo" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_BuildSource" , "Build Source" , "buildsource" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_Build" , "Build Project" , "build" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_BuildLaunch" , "Build and Launch" , "buildlaunch" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_Rebuild" , "Rebuild Project" , "rebuild" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_RebuildLaunch" , "Rebuild and Launch" , "rebuildlaunch" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_ToggleProjectTree" , "Toggle Project Tree" , "properties" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_ToggleBuildInfo" , "Toggle Build Info" , "builderror" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_ToggleFuncList" , "Toggle Function List" , "modulelist" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_Undo" , "~Undo" , "undo" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_Redo" , "~Redo" , "redo" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_Cut" , "C~ut" , "cut" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_Copy" , "~Copy" , "copy" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_Paste" , "~Paste" , "paste" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_SelectAll" , "Select ~All" , "selectall" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_SelectionMode" , "Toggle Selection Mode" , "stream" , "" , "Yes", "Yes" } ) - aadd( aAct, { "TB_Find" , "~Find / Replace" , "find" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_Search" , "Search" , "search" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_SetMark" , "Toggle Mark" , "placeremovemark", "" , "No", "Yes" } ) - aadd( aAct, { "TB_GotoMark" , "Goto Mark" , "gotomark" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_Goto" , "~Goto Line" , "gotoline" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_ToUpper" , "To Upper" , "toupper" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_ToLower" , "To Lower" , "tolower" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_Invert" , "Invert" , "invertcase" , "" , "No", "Yes" } ) - * aadd( aAct, { "TB_MatchPairs" , "Match Pairs" , "matchobj" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_Tools" , "Tools and Utilities" , "tools" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_ZoomIn" , "ZoomIn" , "zoomin" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_ZoomOut" , "ZoomOut" , "zoomout" , "" , "No", "Yes" } ) - // - aadd( aAct, { "Help" , "~Help" , "help" , "F1" , "No", "Yes" } ) - aadd( aAct, { "Exit" , "E~xit" , "exit" , "Sh+^W", "No", "Yes" } ) - aadd( aAct, { "New" , "~Source" , "new" , "^N" , "No", "Yes" } ) - aadd( aAct, { "Open" , "~Open..." , "open" , "^O" , "No", "Yes" } ) - aadd( aAct, { "Save" , "~Save" , "save" , "^S" , "No", "Yes" } ) - aadd( aAct, { "Close" , "~Close" , "close" , "^W" , "No", "Yes" } ) - aadd( aAct, { "Print" , "~Print..." , "print" , "^P" , "No", "Yes" } ) - aadd( aAct, { "Compile" , "Co~mpile" , "compile" , "" , "No", "Yes" } ) - aadd( aAct, { "CompilePPO" , "Com~pile to PPO" , "ppo" , "" , "No", "Yes" } ) - aadd( aAct, { "Build" , "Build Project" , "build" , "" , "No", "Yes" } ) - aadd( aAct, { "BuildSource" , "Build Source" , "buildsource" , "" , "No", "Yes" } ) - aadd( aAct, { "BuildLaunch" , "Build and Launch" , "buildlaunch" , "" , "No", "Yes" } ) - aadd( aAct, { "Rebuild" , "Rebuild Project" , "rebuild" , "" , "No", "Yes" } ) - aadd( aAct, { "RebuildLaunch" , "Rebuild and Launch" , "rebuildlaunch" , "" , "No", "Yes" } ) - aadd( aAct, { "ToggleProjectTree" , "Toggle Project Tree" , "properties" , "" , "No", "Yes" } ) - aadd( aAct, { "ToggleBuildInfo" , "Toggle Build Info" , "builderror" , "" , "No", "Yes" } ) - aadd( aAct, { "ToggleFuncList" , "Toggle Function List" , "modulelist" , "" , "No", "Yes" } ) - aadd( aAct, { "Undo" , "~Undo" , "undo" , "" , "No", "Yes" } ) - aadd( aAct, { "Redo" , "~Redo" , "redo" , "" , "No", "Yes" } ) - aadd( aAct, { "Cut" , "C~ut" , "cut" , "" , "No", "Yes" } ) - aadd( aAct, { "Copy" , "~Copy" , "copy" , "" , "No", "Yes" } ) - aadd( aAct, { "Paste" , "~Paste" , "paste" , "" , "No", "Yes" } ) - aadd( aAct, { "SelectAll" , "Select ~All" , "selectall" , "" , "No", "Yes" } ) - aadd( aAct, { "SelectionMode" , "Toggle Selection Mode" , "stream" , "" , "Yes","Yes" } ) - aadd( aAct, { "Find" , "~Find / Replace..." , "find" , "^F" , "No", "Yes" } ) - aadd( aAct, { "FindEx" , "~Find / Replace Ex" , "find" , "Sh+^F", "No", "Yes" } ) - aadd( aAct, { "Search" , "F~ind in Files" , "search" , "" , "No", "Yes" } ) - aadd( aAct, { "SetMark" , "Set Mark" , "placeremovemark", "" , "No", "Yes" } ) - aadd( aAct, { "GotoMark" , "Goto Mark" , "gotomark" , "" , "No", "Yes" } ) - aadd( aAct, { "Goto" , "~Goto Line..." , "gotoline" , "^G" , "No", "Yes" } ) - aadd( aAct, { "MatchPairs" , "Match Pairs" , "matchobj" , "" , "No", "Yes" } ) - aadd( aAct, { "ZoomIn" , "ZoomIn" , "zoomin" , "" , "No", "Yes" } ) - aadd( aAct, { "ZoomOut" , "ZoomOut" , "zoomout" , "" , "No", "Yes" } ) - // - aadd( aAct, { "NewProject" , "new Project Wizard" , "project" , "" , "No", "Yes" } ) - aadd( aAct, { "LoadProject" , "Open Projec~t..." , "" , "" , "No", "Yes" } ) - aadd( aAct, { "SaveAs" , "Save ~as..." , "saveas" , "" , "No", "Yes" } ) - aadd( aAct, { "SaveAll" , "Save A~ll" , "saveall" , "Sh+^s", "No", "Yes" } ) - aadd( aAct, { "CloseAll" , "Clos~e All" , "closeall" , "" , "No", "Yes" } ) - aadd( aAct, { "CloseOther" , "Close Ot~hers" , "closeexcept" , "" , "No", "Yes" } ) - aadd( aAct, { "Revert" , "~Revert to Saved" , "" , "Sh+^R", "No", "Yes" } ) - aadd( aAct, { "ExportHTML" , "~Export to HTML" , "exporthtml" , "" , "No", "Yes" } ) - aadd( aAct, { "InsertDateTime" , "~Date && Time" , "insert-datetime", "Sh+F7", "No", "Yes" } ) - aadd( aAct, { "InsertRandomName" , "~Random Function Name" , "insert-procname", "Sh+F8", "No", "Yes" } ) - aadd( aAct, { "InsertExternalFile" , "~External File at Cursor" , "insert-external-file", "", "No", "Yes" } ) - aadd( aAct, { "InsertSeparator" , "~Separator" , "insert-separator", "F7" , "No", "Yes" } ) - aadd( aAct, { "switchReadOnly" , "Switch Read~Only Mode" , "readonly" , "" , "No", "Yes" } ) - aadd( aAct, { "Properties" , "Properties" , "properties" , "" , "No", "Yes" } ) - aadd( aAct, { "ProjAddSource" , "Add Source to Project" , "projectadd" , "" , "No", "Yes" } ) - aadd( aAct, { "ProjRemSource" , "Remove Source" , "projectdel" , "" , "No", "Yes" } ) - aadd( aAct, { "ProjMainModule" , "Select Main Module" , "setmain" , "" , "No", "Yes" } ) - aadd( aAct, { "SelectProject" , "Select Current Project" , "" , "" , "No", "Yes" } ) - aadd( aAct, { "CloseProject" , "Close Current Project" , "projectdel" , "" , "No", "Yes" } ) - aadd( aAct, { "Build" , "Build Project" , "build" , "^F9" , "No", "Yes" } ) - aadd( aAct, { "BuildLaunch" , "Build and Launch Project" , "buildlaunch" , "F9" , "No", "Yes" } ) - aadd( aAct, { "ReBuild" , "Rebuild Project" , "rebuild" , "" , "No", "Yes" } ) - aadd( aAct, { "ReBuildLaunch" , "Rebuild and Launch Project" , "rebuildlaunch" , "" , "No", "Yes" } ) - aadd( aAct, { "Compile" , "Compile Current Source" , "compile" , "" , "No", "Yes" } ) - aadd( aAct, { "CompilePPO" , "Compile Current Source to PPO", "ppo" , "" , "No", "Yes" } ) - aadd( aAct, { "LaunchProject" , "Launch Project" , "launch_r" , "^F10" , "No", "Yes" } ) - aadd( aAct, { "ConfigureTools" , "Configure Tools...*" , "" , "" , "No", "Yes" } ) - aadd( aAct, { "CuiEditor" , "CUI Screen Edirot" , "cuied" , "" , "No", "Yes" } ) - aadd( aAct, { "UISrcManager" , "UI Source Manager" , "fileprg" , "" , "No", "Yes" } ) - - aadd( aAct, { "ManageThemes" , "Manage Themes" , "" , "" , "No", "Yes" } ) - aadd( aAct, { "DefaultTheme" , "Set Default Theme" , "" , "" , "No", "Yes" } ) - aadd( aAct, { "AboutIDE" , "About Harbour IDE" , "hbide" , "" , "No", "Yes" } ) - aadd( aAct, { "AboutHarbour" , "About Harbour" , "hb-16x16" , "" , "No", "Yes" } ) - aadd( aAct, { "HarbourUsersList" , "Harbour Users (Mailing Lists)", "list-users" , "" , "No", "Yes" } ) - aadd( aAct, { "HarbourDevList" , "Harbour Developers (Mailing Lists)", "list-developers", "", "No", "Yes" } ) - - aadd( aAct, { "BuildQt" , "Build Project" , "build" , "" , "No", "Yes" } ) - aadd( aAct, { "BuildLaunchQt" , "Build and Launch" , "buildlaunch" , "" , "No", "Yes" } ) - aadd( aAct, { "RebuildQt" , "Rebuild Project" , "rebuild" , "" , "No", "Yes" } ) - aadd( aAct, { "RebuildLaunchQt" , "Rebuild and Launch" , "rebuildlaunch" , "" , "No", "Yes" } ) - - aadd( aAct, { "RemoveTabs" , "Replace Tabs with Spaces" , "tabstospaces" , "" , "No", "Yes" } ) - aadd( aAct, { "Spaces2Tabs" , "Replace Spaces with Tabs" , "" , "" , "No", "Yes" } ) - aadd( aAct, { "RemoveTrailingSpaces" , "Remove Trailing Spaces" , "removetrailingspaces", "", "No", "Yes" } ) - aadd( aAct, { "FormatBraces" , "Format Braces" , "ormatbraces" , "" , "No", "Yes" } ) - aadd( aAct, { "UpperCaseKeywords" , "UpperCase Harbour Keywords" , "ormatbraces" , "" , "No", "Yes" } ) - - aadd( aAct, { "StreamComment" , "Stream Comment" , "streamcomment" , "" , "No", "Yes" } ) - aadd( aAct, { "BlockComment" , "Block Comment" , "blockcomment" , "" , "No", "Yes" } ) - aadd( aAct, { "BlockIndentR" , "Indent Right" , "blockindentr" , "" , "No", "Yes" } ) - aadd( aAct, { "BlockIndentL" , "Indent Left" , "blockindentl" , "" , "No", "Yes" } ) - aadd( aAct, { "BlockDbl2Sgl" , "Double Quotes to Single" , "dbl2sglquote" , "" , "No", "Yes" } ) - aadd( aAct, { "BlockSgl2Dbl" , "Single Quotes to Double" , "sgl2dblquote" , "" , "No", "Yes" } ) - - aadd( aAct, { "DuplicateLine" , "Duplicate Current Line" , "duplicateline" , "" , "No", "Yes" } ) - aadd( aAct, { "DeleteLine" , "Delete Line" , "deleteline" , "" , "No", "Yes" } ) - aadd( aAct, { "MoveLineUp" , "Move Line Up" , "movelineup" , "" , "No", "Yes" } ) - aadd( aAct, { "MoveLineDown" , "Move Line Down" , "movelinedown" , "" , "No", "Yes" } ) - aadd( aAct, { "Environments" , "Environments..." , "envconfig" , "" , "No", "Yes" } ) - - aadd( aAct, { "ToUpper" , "To Upper" , "toupper" , "" , "No", "Yes" } ) - aadd( aAct, { "ToLower" , "To Lower" , "tolower" , "" , "No", "Yes" } ) - aadd( aAct, { "Invert" , "Invert" , "invertcase" , "" , "No", "Yes" } ) - - aadd( aAct, { "GotoFunc" , "Goto Function" , "dc_function" , "" , "No", "Yes" } ) - aadd( aAct, { "Shortcuts" , "Keyboard Mappings" , "keyboardmappings","" , "No", "Yes" } ) - aadd( aAct, { "Setup" , "hbIDE Setup" , "idepreferences" , "" , "No", "Yes" } ) - aadd( aAct, { "ChangeLog" , "Manage ChangeLog(s)" , "memo" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_Hide" , "Hide Show Docks" , "hideshow" , "" , "No", "Yes" } ) - aadd( aAct, { "Delete" , "Delete" , "dc_delete" , "" , "No", "Yes" } ) - aadd( aAct, { "SortAZ" , "Sort Ascending" , "sort" , "" , "No", "Yes" } ) - aadd( aAct, { "SortZA" , "Sort Descending" , "sortdescend" , "" , "No", "Yes" } ) - // - aadd( aAct, { "Split" , "Split Editing Instance" , "split" , "" , "No", "Yes" } ) - aadd( aAct, { "SplitClose" , "Close Splitted Instance" , "split_close" , "" , "No", "Yes" } ) - aadd( aAct, { "SplitH" , "Split Horizontally" , "split_h" , "" , "No", "Yes" } ) - aadd( aAct, { "SplitV" , "Split Vertically" , "split_v" , "" , "No", "Yes" } ) - aadd( aAct, { "Dictionary" , "Create .tag Dictionary" , "dictionary" , "" , "No", "Yes" } ) - aadd( aAct, { "ConfigToolbars" , "Configure Toolbars" , "configtoolbars" , "" , "No", "Yes" } ) - // - aadd( aAct, { "DBU" , "IdeDBU" , "browser" , "" , "No", "Yes" } ) - aadd( aAct, { "EDITOR" , "IdeEDITOR" , "editor" , "" , "No", "Yes" } ) - aadd( aAct, { "REPORTS" , "IdeREPORTS" , "designer" , "" , "No", "Yes" } ) - - RETURN aAct - -/*----------------------------------------------------------------------*/ - -METHOD IdeActions:buildMainMenu() - LOCAL oMenuBar, oSubMenu, oSubMenu2, n, f - LOCAL oIde := ::oIde - - oMenuBar := ::oDlg:MenuBar() - - /*----------------------------------------------------------------------------*/ - /* File */ - /*----------------------------------------------------------------------------*/ - oSubMenu := XbpMenu():new( oMenuBar, , .t. ):create() - oSubMenu:title := "~File" - oMenuBar:addItem( { oSubMenu, NIL } ) - - oSubMenu2 := XbpMenu():new( oSubMenu, , .t. ):create() - oSubMenu2:addItem( { ::getAction( "New" ), {|| oIde:execAction( "New" ) } } ) - oSubMenu2:addItem( { ::getAction( "NewProject" ), {|| oIde:execAction( "NewProject" ) } } ) - oMenuBar:addItem( { oSubMenu2, _T( "~New" ) } ) - oMenuBar:aMenuItems[ oMenuBar:numItems(), 2 ]:setIcon( QIcon( oIde:resPath + 'new.png' ) ) - - oSubMenu:addItem( { ::getAction( "Open" ), {|| oIde:execAction( "Open" ) } } ) - oSubMenu:addItem( { ::getAction( "LoadProject" ), {|| oIde:execAction( "LoadProject" ) } } ) - - hbide_menuAddSep( oSubMenu ) - - oSubMenu2 := XbpMenu():new( oSubMenu, , .t. ):create() - oSubMenu2:itemSelected := {| nIndex, cFile | cFile := oIde:oIni:aRecentFiles[ nIndex ], ; - oIde:oEM:editSource( cFile ) } - IF !empty( oIde:oIni:aRecentFiles ) - FOR n := 1 TO Len( oIde:oIni:aRecentFiles ) - f := hbide_pathNormalized( oIde:oIni:aRecentFiles[ n ], .F. ) - oSubMenu2:addItem( { _T( '~' + hb_NumToHex(n) + '. ' + f ), nil } ) - IF !hb_FileExists( f ) - oSubMenu2:disableItem( n ) - ENDIF - NEXT - ELSE - oSubMenu2:addItem( { _T( "** No recent files found **" ) , nil } ) - oSubMenu2:disableItem( 1 ) - ENDIF - oMenuBar:addItem( { oSubMenu2, _T( "Recent Files" ) } ) - - oSubMenu2 := XbpMenu():new( oSubMenu, , .t. ):create() - oSubMenu2:itemSelected := {| nIndex, cFile | cFile := oIde:oIni:aRecentProjects[ nIndex ], ; - ::oPM:loadProperties( cFile, .F., .F., .T. ) } - IF !empty( oIde:oIni:aRecentProjects ) - FOR n := 1 TO Len( oIde:oIni:aRecentProjects ) - f := hbide_pathNormalized( oIde:oIni:aRecentProjects[ n ], .F. ) - oSubMenu2:addItem( { _T( '~' + hb_NumToHex( n ) + '. ' + f ) , nil } ) - IF !hb_FileExists( f ) - oSubMenu2:disableItem( n ) - ENDIF - NEXT - ELSE - oSubMenu2:addItem( { _T( "** No recent projects found **" ) , nil } ) - oSubMenu2:disableItem( 1 ) - ENDIF - oMenuBar:addItem( { oSubMenu2, _T( "Recent Projects" ) } ) - - hbide_menuAddSep( oSubMenu ) - - oSubMenu:addItem( { ::getAction( "Save" ), {|| oIde:execAction( "Save" ) } } ) - oSubMenu:addItem( { ::getAction( "SaveAs" ), {|| oIde:execAction( "SaveAs" ) } } ) - oSubMenu:addItem( { ::getAction( "SaveAll" ), {|| oIde:execAction( "SaveAll" ) } } ) - oSubMenu:addItem( { ::getAction( "Close" ), {|| oIde:execAction( "Close" ) } } ) - oSubMenu:addItem( { ::getAction( "CloseAll" ), {|| oIde:execAction( "CloseAll" ) } } ) - oSubMenu:addItem( { ::getAction( "CloseOther" ), {|| oIde:execAction( "CloseOther" ) } } ) - oSubMenu:addItem( { ::getAction( "Revert" ), {|| oIde:execAction( "Revert" ) } } ) - hbide_menuAddSep( oSubMenu ) - - oSubMenu:addItem( { ::getAction( "ExportHTML" ), {|| oIde:execAction( "ExportHTML" ) } } ) - oSubMenu:addItem( { ::getAction( "Print" ), {|| oIde:execAction( "Print" ) } } ) - hbide_menuAddSep( oSubMenu ) - oSubMenu:addItem( { ::getAction( "SaveExit" ), {|| oIde:execAction( "SaveExit" ) } } ) - oSubMenu:addItem( { ::getAction( "Exit" ), {|| oIde:execAction( "Exit" ) } } ) - - /*----------------------------------------------------------------------------*/ - /* Edit */ - /*----------------------------------------------------------------------------*/ - oSubMenu := XbpMenu():new( oMenuBar, , .t. ):create() - oSubMenu:title := "~Edit" - oMenuBar:addItem( { oSubMenu, NIL } ) - - oSubMenu:addItem( { ::getAction( "Undo" ), {|| oIde:execAction( "Undo" ) } } ) - oSubMenu:addItem( { ::getAction( "Redo" ), {|| oIde:execAction( "Redo" ) } } ) - hbide_menuAddSep( oSubMenu ) - oSubMenu:addItem( { ::getAction( "Cut" ), {|| oIde:execAction( "Cut" ) } } ) - oSubMenu:addItem( { ::getAction( "Copy" ), {|| oIde:execAction( "Copy" ) } } ) - oSubMenu:addItem( { ::getAction( "Paste" ), {|| oIde:execAction( "Paste" ) } } ) - oSubMenu:addItem( { ::getAction( "SelectAll" ), {|| oIde:execAction( "SelectAll" ) } } ) - hbide_menuAddSep( oSubMenu ) - oSubMenu:addItem( { ::getAction( "Find" ), {|| oIde:execAction( "Find" ) } } ) - oSubMenu:addItem( { ::getAction( "FindEx" ), {|| oIde:execAction( "FindEx" ) } } ) - oSubMenu:oWidget:addAction( ::oFindDock:oWidget:toggleViewAction() ) - oSubMenu:addItem( { ::getAction( "Goto" ), {|| oIde:execAction( "Goto" ) } } ) - hbide_menuAddSep( oSubMenu ) - // - oSubMenu2 := XbpMenu():new( oSubMenu, , .t. ):create() - oSubMenu2:addItem( { ::getAction( "DuplicateLine" ), {|| oIde:execAction( "DuplicateLine" ) } } ) - oSubMenu2:addItem( { ::getAction( "DeleteLine" ), {|| oIde:execAction( "DeleteLine" ) } } ) - oSubMenu2:addItem( { ::getAction( "MoveLineUp" ), {|| oIde:execAction( "MoveLineUp" ) } } ) - oSubMenu2:addItem( { ::getAction( "MoveLineDown" ), {|| oIde:execAction( "MoveLineDown" ) } } ) - oSubMenu:addItem( { oSubMenu2, _T( "~Line" ) } ) - // - oSubMenu2 := XbpMenu():new( oSubMenu, , .t. ):create() - oSubMenu2:addItem( { ::getAction( "ToUpper" ), {|| oIde:execAction( "ToUpper" ) } } ) - oSubMenu2:addItem( { ::getAction( "ToLower" ), {|| oIde:execAction( "ToLower" ) } } ) - oSubMenu2:addItem( { ::getAction( "Invert" ), {|| oIde:execAction( "Invert" ) } } ) - hbide_menuAddSep( oSubMenu2 ) - oSubMenu2:addItem( { ::getAction( "StreamComment" ), {|| oIde:execAction( "StreamComment" ) } } ) - oSubMenu2:addItem( { ::getAction( "BlockComment" ), {|| oIde:execAction( "BlockComment" ) } } ) - hbide_menuAddSep( oSubMenu2 ) - oSubMenu2:addItem( { ::getAction( "BlockIndentR" ), {|| oIde:execAction( "BlockIndentR" ) } } ) - oSubMenu2:addItem( { ::getAction( "BlockIndentL" ), {|| oIde:execAction( "BlockIndentL" ) } } ) - hbide_menuAddSep( oSubMenu2 ) - oSubMenu2:addItem( { ::getAction( "BlockSgl2Dbl" ), {|| oIde:execAction( "BlockSgl2Dbl" ) } } ) - oSubMenu2:addItem( { ::getAction( "BlockDbl2Sgl" ), {|| oIde:execAction( "BlockDbl2Sgl" ) } } ) - oSubMenu:addItem( { oSubMenu2, _T( "~Block" ) } ) - - hbide_menuAddSep( oSubMenu ) - oSubMenu2 := XbpMenu():new( oSubMenu, , .t. ):create() - oSubMenu2:addItem( { ::getAction( "InsertSeparator" ), {|| oIde:execAction( "InsertSeparator" ) } } ) - hbide_menuAddSep( oSubMenu ) - oSubMenu2:addItem( { ::getAction( "InsertDateTime" ), {|| oIde:execAction( "InsertDateTime" ) } } ) -// oSubMenu2:addItem( { ::getAction( "InsertRandomName" ), {|| oIde:execAction( "InsertRandomName" ) } } ) - oSubMenu2:addItem( { ::getAction( "InsertExternalFile" ), {|| oIde:execAction( "InsertExternalFile" ) } } ) - oSubMenu:addItem( { oSubMenu2, _T( "~Insert" ) } ) - - oSubMenu2 := XbpMenu():new( oSubMenu, , .t. ):create() - oSubMenu2:oWidget:addAction( ::oFormatDock:oWidget:toggleViewAction() ) - oSubMenu2:addItem( { ::getAction( "RemoveTabs" ), {|| oIde:execAction( "RemoveTabs" ) } } ) - oSubMenu2:addItem( { ::getAction( "Spaces2Tabs" ), {|| oIde:execAction( "Spaces2Tabs" ) } } ) - hbide_menuAddSep( oSubMenu ) - oSubMenu2:addItem( { ::getAction( "RemoveTrailingSpaces"), {|| oIde:execAction( "RemoveTrailingSpaces" ) } } ) - oSubMenu2:addItem( { ::getAction( "FormatBraces" ), {|| oIde:execAction( "FormatBraces" ) } } ) - oSubMenu2:addItem( { ::getAction( "UpperCaseKeywords" ), {|| oIde:execAction( "UpperCaseKeywords" ) } } ) - oSubMenu:addItem( { oSubMenu2, _T( "~Format" ) } ) - - hbide_menuAddSep( oSubMenu ) - oSubMenu:addItem( { ::getAction( "switchReadOnly" ), {|| oIde:execAction( "switchReadOnly" ) } } ) - - /*----------------------------------------------------------------------------*/ - /* View */ - /*----------------------------------------------------------------------------*/ - oSubMenu := XbpMenu():new( oMenuBar, , .t. ):create() - oSubMenu:title := "~View" - oMenuBar:addItem( { oSubMenu, NIL } ) - - oSubMenu:addItem( { ::getAction( "TB_Hide" ), {|| oIde:execAction( "Hide" ) } } ) - - ::oIde:qAnimateAction := QAction( oSubMenu:oWidget ) - ::qAnimateAction:setText( "Animation" ) - ::qAnimateAction:setCheckable( .t. ) - oSubMenu:addItem( { ::qAnimateAction, {|| oIde:execAction( "Animate" ) } } ) - - hbide_menuAddSep( oSubMenu ) - - oSubMenu2 := XbpMenu():new( oSubMenu, , .t. ):create() - oSubMenu:addItem( { oSubMenu2, "IdePARTS" } ) - - oSubMenu2:addItem( { ::getAction( "EDITOR" ), {|| ::oIde:execAction( "EDITOR" ) } } ) - oSubMenu2:addItem( { ::getAction( "DBU" ), {|| ::oIde:execAction( "DBU" ) } } ) - oSubMenu2:addItem( { ::getAction( "REPORTS" ), {|| ::oIde:execAction( "REPORTS" ) } } ) - - hbide_menuAddSep( oSubMenu ) - - oSubMenu2 := XbpMenu():new( oSubMenu, , .t. ):create() - oSubMenu:addItem( { oSubMenu2, "Toolbars" } ) - - oSubMenu2:oWidget:addAction( ::oIde:oMainToolbar:oWidget:toggleViewAction() ) - oSubMenu2:oWidget:addAction( ::qFilesToolbar:toggleViewAction() ) - oSubMenu2:oWidget:addAction( ::qPartsToolbar:toggleViewAction() ) - oSubMenu2:oWidget:addAction( ::qProjectToolbar:toggleViewAction() ) - oSubMenu2:oWidget:addAction( ::qTBarDocks:toggleViewAction() ) - hbide_menuAddSep( oSubMenu2 ) - oSubMenu2:oWidget:addAction( ::qMdiToolbarL:oWidget:toggleViewAction() ) - oSubMenu2:oWidget:addAction( ::qMdiToolbar:oWidget:toggleViewAction() ) - hbide_menuAddSep( oSubMenu2 ) - oSubMenu2:addItem( { ::getAction( "ConfigToolbars" ), {|| NIL } } ) - - hbide_menuAddSep( oSubMenu ) - - oSubMenu2 := XbpMenu():new( oSubMenu, , .t. ):create() - oSubMenu:addItem( { oSubMenu2, "Docking Widgets" } ) - - oSubMenu2:oWidget:addAction( ::oDockPT:oWidget:toggleViewAction() ) - oSubMenu2:oWidget:addAction( ::oDockED:oWidget:toggleViewAction() ) - oSubMenu2:oWidget:addAction( ::oSkltnsTreeDock:oWidget:toggleViewAction() ) - hbide_menuAddSep( oSubMenu2 ) - oSubMenu2:oWidget:addAction( ::oHelpDock:oWidget:toggleViewAction() ) - oSubMenu2:oWidget:addAction( ::oDocViewDock:oWidget:toggleViewAction() ) - oSubMenu2:oWidget:addAction( ::oDocWriteDock:oWidget:toggleViewAction() ) - oSubMenu2:oWidget:addAction( ::oFuncDock:oWidget:toggleViewAction() ) - oSubMenu2:oWidget:addAction( ::oFunctionsDock:oWidget:toggleViewAction() ) - oSubMenu2:oWidget:addAction( ::oPropertiesDock:oWidget:toggleViewAction() ) - oSubMenu2:oWidget:addAction( ::oEnvironDock:oWidget:toggleViewAction() ) - oSubMenu2:oWidget:addAction( ::oSkeltnDock:oWidget:toggleViewAction() ) - oSubMenu2:oWidget:addAction( ::oThemesDock:oWidget:toggleViewAction() ) - oSubMenu2:oWidget:addAction( ::oFindDock:oWidget:toggleViewAction() ) - oSubMenu2:oWidget:addAction( ::oSourceThumbnailDock:oWidget:toggleViewAction() ) - oSubMenu2:oWidget:addAction( ::oCuiEdDock:toggleViewAction() ) - oSubMenu2:oWidget:addAction( ::oIde:oUISrcDock:toggleViewAction() ) - - hbide_menuAddSep( oSubMenu2 ) - oSubMenu2:oWidget:addAction( ::oDockB2:oWidget:toggleViewAction() ) - * oSubMenu:oWidget:addAction( ::oDockB1:oWidget:toggleViewAction() ) - * oSubMenu:oWidget:addAction( ::oDockB:oWidget:toggleViewAction() ) - - hbide_menuAddSep( oSubMenu ) - - ::oIde:qStatusBarAction := QAction( oSubMenu:oWidget ) - ::qStatusBarAction:setText( "Statusbar" ) - ::qStatusBarAction:setCheckable( .t. ) - oSubMenu:addItem( { ::qStatusBarAction, {|| oIde:execAction( "ToggleStatusBar" ) } } ) - ::qStatusBarAction:setChecked( ::lStatusBarVisible ) - - /*----------------------------------------------------------------------------*/ - /* Project */ - /*----------------------------------------------------------------------------*/ - oSubMenu := XbpMenu():new( oMenuBar, , .t. ):create() - oSubMenu:title := "~Project" - oMenuBar:addItem( { oSubMenu, NIL } ) - - oSubMenu:addItem( { ::getAction( "Properties" ), {|| oIde:execAction( "Properties" ) } } ) -#if 0 - hbide_menuAddSep( oSubMenu ) - oSubMenu:addItem( { ::getAction( "ProjAddSource" ), {|| oIde:execAction( "ProjAddSource" ) } } ) - oSubMenu:addItem( { ::getAction( "ProjRemSource" ), {|| oIde:execAction( "ProjRemSource" ) } } ) - oSubMenu:addItem( { ::getAction( "ProjMainModule" ), {|| oIde:execAction( "ProjMainModule" ) } } ) - oSubMenu:disableItem( oSubMenu:numItems ) -#endif - hbide_menuAddSep( oSubMenu ) - oSubMenu:addItem( { ::getAction( "SelectProject" ), {|| oIde:execAction( "SelectProject" ) } } ) - oSubMenu:addItem( { ::getAction( "CloseProject" ), {|| oIde:execAction( "CloseProject" ) } } ) - hbide_menuAddSep( oSubMenu ) -// oSubMenu:addItem( { ::getAction( "Environments" ), {|| oIde:execAction( "Environments" ) } } ) - oSubMenu:addItem( { ::getAction( "NewProject" ), {|| oIde:oPWZ:show() } } ) - - /*----------------------------------------------------------------------------*/ - /* Build */ - /*----------------------------------------------------------------------------*/ - oSubMenu := XbpMenu():new( oMenuBar, , .t. ):create() - oSubMenu:title := "~Build" - oMenuBar:addItem( { oSubMenu, NIL } ) - - oSubMenu:addItem( { ::getAction( "Compile" ), {|| oIde:execAction( "Compile" ) } } ) - oSubMenu:addItem( { ::getAction( "CompilePPO" ), {|| oIde:execAction( "CompilePPO" ) } } ) - oSubMenu:addItem( { ::getAction( "BuildSource" ), {|| oIde:execAction( "BuildSource" ) } } ) - hbide_menuAddSep( oSubMenu ) - oSubMenu:addItem( { ::getAction( "Build" ), {|| oIde:execAction( "Build" ) } } ) - oSubMenu:addItem( { ::getAction( "BuildLaunch" ), {|| oIde:execAction( "BuildLaunch" ) } } ) - oSubMenu:addItem( { ::getAction( "Rebuild" ), {|| oIde:execAction( "Rebuild" ) } } ) - oSubMenu:addItem( { ::getAction( "RebuildLaunch" ), {|| oIde:execAction( "RebuildLaunch" ) } } ) - hbide_menuAddSep( oSubMenu ) - oSubMenu:addItem( { ::getAction( "LaunchProject" ), {|| oIde:execAction( "LaunchProject" ) } } ) - - /*----------------------------------------------------------------------------*/ - /* Setup */ - /*----------------------------------------------------------------------------*/ - oSubMenu := XbpMenu():new( oMenuBar, , .t. ):create() - oSubMenu:title := "~Setup" - oMenuBar:addItem( { oSubMenu, NIL } ) - - oSubMenu:addItem( { ::getAction( "Setup" ), {|| oIde:execAction( "Setup" ) } } ) - hbide_menuAddSep( oSubMenu ) - oSubMenu:addItem( { ::getAction( "Shortcuts" ), {|| oIde:execAction( "Shortcuts" ) } } ) - hbide_menuAddSep( oSubMenu ) - oSubMenu:addItem( { ::getAction( "TB_Tools" ), {|| oIde:execAction( "Tools" ) } } ) - hbide_menuAddSep( oSubMenu ) - oSubMenu:addItem( { ::getAction( "ChangeLog" ), {|| oIde:execAction( "ChangeLog" ) } } ) - hbide_menuAddSep( oSubMenu ) - oSubMenu2 := hbide_buildCDPMenu( oIde, oSubMenu ) //hbide_buildCodecMenu( oIde, oSubMenu ) -// oSubMenu2:title := "~CodePage" - oSubMenu:addItem( { oSubMenu2, _T( "~CodePage" ) } ) - - /*----------------------------------------------------------------------------*/ - /* Help */ - /*----------------------------------------------------------------------------*/ - oSubMenu := XbpMenu():new( oMenuBar, , .t. ):create() - oSubMenu:title := "~Help" - oMenuBar:addItem( { oSubMenu, NIL } ) - - oSubMenu:addItem( { ::getAction( "AboutIDE" ), {|| hbide_help( 1 ) } } ) - hbide_menuAddSep( oSubMenu ) - oSubMenu:addItem( { ::getAction( "AboutHarbour" ), {|| hbide_help( 4 ) } } ) - hbide_menuAddSep( oSubMenu ) - oSubMenu:addItem( { ::getAction( "HarbourUsersList" ), {|| hbide_help( 3 ) } } ) - oSubMenu:addItem( { ::getAction( "HarbourDevList" ), {|| hbide_help( 2 ) } } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ -/* - * Normalizes a caption for an menu item with shortcut (or not). - * TODO: add support for translation of menu items AND support changing shortcuts - * loading from a text file for customing hotkeys AND icons. (vailtom) - * 27/12/2009 - 16:05:32 - vailtom - */ -STATIC FUNCTION mnuNormalizeItem( cCaption ) - LOCAL cKey, cIco, p - - /* Retrieve and update the ICON name for this menu item */ - IF ( ( p := Rat( '|', cCaption ) ) != 00 ) - cIco := Substr( cCaption, p + 1 ) - cIco := alltrim( cIco ) - - cCaption := Substr( cCaption, 1, p - 1 ) - cCaption := Alltrim( cCaption ) - - IF !Empty( cIco ) - cIco := StrTran( cIco, '/', hb_ps() ) - cIco := StrTran( cIco, '\', hb_ps() ) - - IF !( hb_ps() $ cIco ) - cIco := ":/resources" + hb_ps() + cIco + "|" - ELSE - cIco := cIco + "|" - Endif - Endif - ELSE - cIco := '' - ENDIF - - /* Update the key shortcut for this menu item */ - IF ( ( p := Rat( ',', cCaption ) ) != 00 ) - cKey := Substr( cCaption, p + 1 ) - cCaption := Substr( cCaption, 1, p - 1 ) - cCaption := alltrim( cCaption ) - - cKey := alltrim( cKey ) - cKey := StrTran( cKey, '^', 'Ctrl+' ) - cKey := StrTran( cKey, 'Sh+', 'Shift+' ) - - IF !Empty( cKey ) - cKey := Chr( K_TAB ) + cKey - End - ELSE - cKey := '' - ENDIF - - RETURN cIco + cCaption + cKey - -/*----------------------------------------------------------------------*/ -/* - * Add a file name to MRU menu item. - * 02/01/2010 - 23:23:22 - vailtom - */ -FUNCTION hbide_mnuAddFileToMRU( oIde, cFileName, cType ) - LOCAL nPos, cFileNormal, a_ - - cFileNormal := hbide_pathNormalized( cFileName ) - - IF cType == "recent_projects" - a_:= oIde:oINI:aRecentProjects - ELSE - a_:= oIde:oINI:aRecentFiles - ENDIF - - IF ( nPos := aScan( a_, {|f| hb_FileMatch( hbide_pathNormalized( f ), cFileNormal ) } ) ) > 0 - hb_aDel( a_, nPos, .T. ) - ENDIF - - ASize( a_, Len( a_ ) + 1 ) - AIns( a_, 1 ) - a_[ 1 ] := cFileName - - IF Len( a_ ) > 25 - aSize( a_, 25 ) - ENDIF - - IF nPos == 0 - hbide_mnuUpdateMRUpopup( oIde, cType ) - ENDIF - RETURN nil - -/*----------------------------------------------------------------------*/ -/* - * 02/01/2010 - 22:44:19 - */ -#define QMF_POPUP 1 - -STATIC FUNCTION hbide_mnuUpdateMRUpopup( oIde, cType ) - LOCAL oMenuBar, oItem, cFindStr, nPos, n, c, a_ - - IF Empty( oIde:oDlg ) - RETURN NIL - ENDIF - - IF cType == "recent_projects" - a_:= oIde:oINI:aRecentProjects - ELSE - a_:= oIde:oINI:aRecentFiles - ENDIF - - oMenuBar := oIde:oDlg:MenuBar() - nPos := 0 - cFindStr := iif( cType == "recent_files", 'RECENT FILES', 'RECENT PROJECTS' ) - - FOR n := 1 TO oMenuBar:numItems() - IF oMenuBar:aMenuItems[ n, 1 ] != QMF_POPUP - LOOP - ENDIF - - oItem := oMenuBar:aMenuItems[ n ] - c := Upper( oItem[ 3 ] ) - c := StrTran( c, '~', '' ) - c := StrTran( c, '&', '' ) - - IF cFindStr == alltrim( c ) - nPos := n - EXIT - ENDIF - NEXT - - IF nPos == 0 - RETURN nil - ENDIF - - oItem[ 4 ]:delAllItems() - - IF !empty( a_ ) - FOR n := 1 TO Len( a_ ) - c := hbide_pathNormalized( a_[ n ], .F. ) - - oItem[ 4 ]:addItem( { _T( '~' + hb_NumToHex( n ) + '. ' + c ), nil } ) - - IF !hb_FileExists( c ) - oItem[ 4 ]:disableItem( n ) - ENDIF - NEXT - ELSE - IF cType == "recent_files" - oItem[ 4 ]:addAction( "** No recent files found **" ) - ELSE - oItem[ 4 ]:addAction( "** No recent projects found **" ) - ENDIF - oItem[ 4 ]:disableItem( 1 ) - ENDIF - - RETURN nil - -/*----------------------------------------------------------------------*/ -/* - * Find a menu item with same caption as passed on argument. - * 03/01/2010 - 13:12:42 - */ -FUNCTION hbide_mnuFindItem( oIde, cCaption ) - LOCAL oMenuBar, oItem, n, c - - IF Empty( oIde:oDlg ) - RETURN nil - ENDIF - - oMenuBar := oIde:oDlg:MenuBar() - cCaption := Alltrim( Upper( cCaption ) ) - - FOR n := 1 TO oMenuBar:numItems() - - oItem := oMenuBar:aMenuItems[ n ] - c := Upper( oItem[ 3 ] ) - c := StrTran( c, '~', '' ) - c := StrTran( c, '&', '' ) - - IF cCaption == alltrim( c ) - RETURN oItem - ENDIF - NEXT - - RETURN nil - -/*----------------------------------------------------------------------*/ - -#include "hbextcdp.ch" - -STATIC FUNCTION hbide_buildCDPMenu( oIde, oMenu ) - LOCAL oSubMenu, cdp - - oSubMenu := XbpMenu():new( oMenu, , .t. ):create() - - FOR EACH cdp IN get_list_of_real_codepages() - oSubMenu:addItem( { hb_cdpUniID( cdp ), get_cdp_block( oIde, hb_cdpUniID( cdp ) ) } ) - NEXT - - RETURN oSubMenu - -STATIC FUNCTION get_cdp_block( oIde, cCodePage ) - RETURN {|| oIde:setCodec( cCodePage ) } - -STATIC FUNCTION get_list_of_real_codepages() - LOCAL cdp - - STATIC s_uni - - IF empty( s_uni ) - s_uni := { => } - FOR EACH cdp IN hb_cdpList() - s_uni[ hb_cdpUniID( cdp ) ] := cdp - NEXT - ENDIF - - RETURN s_uni - -FUNCTION hbide_getCDPforID( cCodec ) - LOCAL cdp - - FOR EACH cdp IN hb_cdpList() - IF hb_cdpUniID( cdp ) == cCodec - RETURN cdp - ENDIF - NEXT - - RETURN cCodec - -/*----------------------------------------------------------------------*/ - -/* -STATIC FUNCTION hbide_buildCodecMenu( oIde, oMenu ) - LOCAL oSubMenu, oSub1 - - oSubMenu := XbpMenu():new( oMenu ):create() - - oSubMenu:addItem( { "Apple Roman " , {|| oIde:setCodec( "Apple Roman" ) } } ) - oSubMenu:addItem( { "Big5 " , {|| oIde:setCodec( "Big5" ) } } ) - oSubMenu:addItem( { "Big5-HKSCS " , {|| oIde:setCodec( "Big5-HKSCS" ) } } ) - oSubMenu:addItem( { "CP949 " , {|| oIde:setCodec( "CP949" ) } } ) - oSubMenu:addItem( { "EUC-JP " , {|| oIde:setCodec( "EUC-JP" ) } } ) - oSubMenu:addItem( { "EUC-KR " , {|| oIde:setCodec( "EUC-KR" ) } } ) - oSubMenu:addItem( { "GB18030-0 " , {|| oIde:setCodec( "GB18030-0" ) } } ) - oSubMenu:addItem( { "IBM 850 " , {|| oIde:setCodec( "IBM 850" ) } } ) - oSubMenu:addItem( { "IBM 866 " , {|| oIde:setCodec( "IBM 866" ) } } ) - oSubMenu:addItem( { "IBM 874 " , {|| oIde:setCodec( "IBM 874" ) } } ) - oSubMenu:addItem( { "ISO 2022-JP " , {|| oIde:setCodec( "ISO 2022-JP" ) } } ) - - oSub1 := XbpMenu():new( oSubMenu ):create() - oSub1:title := "ISO 8859-1 to 10" - oSub1:addItem( { "ISO 8859-1" , {|| oIde:setCodec( "ISO 8859-1" ) } } ) - oSub1:addItem( { "ISO 8859-2" , {|| oIde:setCodec( "ISO 8859-2" ) } } ) - oSub1:addItem( { "ISO 8859-3" , {|| oIde:setCodec( "ISO 8859-3" ) } } ) - oSub1:addItem( { "ISO 8859-4" , {|| oIde:setCodec( "ISO 8859-4" ) } } ) - oSub1:addItem( { "ISO 8859-5" , {|| oIde:setCodec( "ISO 8859-5" ) } } ) - oSub1:addItem( { "ISO 8859-6" , {|| oIde:setCodec( "ISO 8859-6" ) } } ) - oSub1:addItem( { "ISO 8859-7" , {|| oIde:setCodec( "ISO 8859-7" ) } } ) - oSub1:addItem( { "ISO 8859-8" , {|| oIde:setCodec( "ISO 8859-8" ) } } ) - oSub1:addItem( { "ISO 8859-9" , {|| oIde:setCodec( "ISO 8859-9" ) } } ) - oSub1:addItem( { "ISO 8859-10" , {|| oIde:setCodec( "ISO 8859-10" ) } } ) - oSubMenu:addItem( { oSub1, NIL } ) - - oSub1 := XbpMenu():new( oSubMenu ):create() - oSub1:title := "ISO 8859-13 to 16" - oSub1:addItem( { "ISO 8859-13" , {|| oIde:setCodec( "ISO 8859-13" ) } } ) - oSub1:addItem( { "ISO 8859-14" , {|| oIde:setCodec( "ISO 8859-14" ) } } ) - oSub1:addItem( { "ISO 8859-15" , {|| oIde:setCodec( "ISO 8859-15" ) } } ) - oSub1:addItem( { "ISO 8859-16" , {|| oIde:setCodec( "ISO 8859-16" ) } } ) - oSubMenu:addItem( { oSub1, NIL } ) - - oSub1 := XbpMenu():new( oSubMenu ):create() - oSub1:title := "Iscii" - oSub1:addItem( { "Iscii-Bng" , {|| oIde:setCodec( "Iscii-Bng" ) } } ) - oSub1:addItem( { "Iscii-Dev" , {|| oIde:setCodec( "Iscii-Dev" ) } } ) - oSub1:addItem( { "Iscii-Gjr" , {|| oIde:setCodec( "Iscii-Gjr" ) } } ) - oSub1:addItem( { "Iscii-Knd" , {|| oIde:setCodec( "Iscii-Knd" ) } } ) - oSub1:addItem( { "Iscii-Mlm" , {|| oIde:setCodec( "Iscii-Mlm" ) } } ) - oSub1:addItem( { "Iscii-Ori" , {|| oIde:setCodec( "Iscii-Ori" ) } } ) - oSub1:addItem( { "Iscii-Pnj" , {|| oIde:setCodec( "Iscii-Pnj" ) } } ) - oSub1:addItem( { "Iscii-Tlg" , {|| oIde:setCodec( "Iscii-Tlg" ) } } ) - oSub1:addItem( { "Iscii-Tml" , {|| oIde:setCodec( "Iscii-Tml" ) } } ) - oSubMenu:addItem( { oSub1, NIL } ) - - oSubMenu:addItem( { "JIS X 0201 " , {|| oIde:setCodec( "JIS X 0201" ) } } ) - oSubMenu:addItem( { "JIS X 0208 " , {|| oIde:setCodec( "JIS X 0208" ) } } ) - oSubMenu:addItem( { "KOI8-R " , {|| oIde:setCodec( "KOI8-R" ) } } ) - oSubMenu:addItem( { "KOI8-U " , {|| oIde:setCodec( "KOI8-U" ) } } ) - oSubMenu:addItem( { "MuleLao-1 " , {|| oIde:setCodec( "MuleLao-1" ) } } ) - oSubMenu:addItem( { "ROMAN8 " , {|| oIde:setCodec( "ROMAN8" ) } } ) - oSubMenu:addItem( { "Shift-JIS " , {|| oIde:setCodec( "Shift-JIS" ) } } ) - oSubMenu:addItem( { "TIS-620 " , {|| oIde:setCodec( "TIS-620" ) } } ) - oSubMenu:addItem( { "TSCII " , {|| oIde:setCodec( "TSCII" ) } } ) - oSubMenu:addItem( { "UTF-8 " , {|| oIde:setCodec( "UTF-8" ) } } ) - oSubMenu:addItem( { "UTF-16 " , {|| oIde:setCodec( "UTF-16" ) } } ) - oSubMenu:addItem( { "UTF-16BE " , {|| oIde:setCodec( "UTF-16BE" ) } } ) - oSubMenu:addItem( { "UTF-16LE " , {|| oIde:setCodec( "UTF-16LE" ) } } ) - oSubMenu:addItem( { "UTF-32 " , {|| oIde:setCodec( "UTF-32" ) } } ) - oSubMenu:addItem( { "UTF-32BE " , {|| oIde:setCodec( "UTF-32BE" ) } } ) - oSubMenu:addItem( { "UTF-32LE " , {|| oIde:setCodec( "UTF-32LE" ) } } ) - - oSub1 := XbpMenu():new( oSubMenu ):create() - oSub1:title := "Windows-1250 to 1258" - oSub1:addItem( { "Windows-1250" , {|| oIde:setCodec( "Windows-1250" ) } } ) - oSub1:addItem( { "Windows-1251" , {|| oIde:setCodec( "Windows-1251" ) } } ) - oSub1:addItem( { "Windows-1252" , {|| oIde:setCodec( "Windows-1252" ) } } ) - oSub1:addItem( { "Windows-1253" , {|| oIde:setCodec( "Windows-1253" ) } } ) - oSub1:addItem( { "Windows-1254" , {|| oIde:setCodec( "Windows-1254" ) } } ) - oSub1:addItem( { "Windows-1255" , {|| oIde:setCodec( "Windows-1255" ) } } ) - oSub1:addItem( { "Windows-1256" , {|| oIde:setCodec( "Windows-1256" ) } } ) - oSub1:addItem( { "Windows-1257" , {|| oIde:setCodec( "Windows-1257" ) } } ) - oSub1:addItem( { "Windows-1258" , {|| oIde:setCodec( "Windows-1258" ) } } ) - oSubMenu:addItem( { oSub1, NIL } ) - - oSubMenu:addItem( { "WINSAMI2 " , {|| oIde:setCodec( "WINSAMI2" ) } } ) - - RETURN oSubMenu -*/ - -/*----------------------------------------------------------------------*/ - -METHOD IdeActions:buildToolBars() - - ::buildToolbarMain() - ::buildToolbarFiles() - ::buildToolbarParts() - ::buildToolbarProject() - ::buildToolBarDocks() - - /* User defined toolbars via Tools & Utilities */ - ::oTM:buildUserToolbars() - - ::buildToolbarSelectedText() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeActions:buildToolbarMain() - LOCAL oTBar - LOCAL nSep := XBPTOOLBAR_BUTTON_SEPARATOR - - oTBar := XbpToolBar():new( ::oDlg ) - oTBar:imageWidth := 12 - oTBar:imageHeight := 12 - oTBar:create( , , { 0, ::oDlg:currentSize()[ 2 ]-60 }, { ::oDlg:currentSize()[ 1 ], 60 } ) - oTBar:oWidget:setStyleSheet( GetStyleSheet( "QToolBar", ::nAnimantionMode ) ) - oTBar:oWidget:setAllowedAreas( Qt_LeftToolBarArea + Qt_RightToolBarArea + Qt_TopToolBarArea + Qt_BottomToolBarArea ) - oTBar:oWidget:setFocusPolicy( Qt_NoFocus ) - - oTBar:buttonClick := {|oButton| ::oIde:execAction( oButton:key ) } - - oTBar:addItem( ::getAction( "TB_Exit" ), , , , , , "Exit" ) - oTBar:addItem( ::getAction( "TB_Hide" ), , , , , , "Hide" ) - oTBar:addItem( ::getAction( "TB_Home" ), , , , , , "Home" ) - oTBar:addItem( , , , , , nSep ) - ::oActToolsBtn := oTBar:oWidget:addWidget( ::oIde:oTM:buildToolsButton() ) - oTBar:addItem( , , , , , nSep ) - ::oActToolsBtn := oTBar:oWidget:addWidget( ::oIde:oTM:buildViewsButton() ) - - ::oIde:oMainToolbar := oTBar - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeActions:buildToolbarFiles() - - ::qFilesToolbar := HBQToolBar():new( "ToolBar_Files" ) - - ::qFilesToolbar:cName := "ToolBar_Files" - ::qFilesToolbar:allowedAreas := Qt_LeftToolBarArea + Qt_RightToolBarArea + Qt_TopToolBarArea + Qt_BottomToolBarArea - ::qFilesToolbar:size := QSize( 12, 12 ) - - ::qFilesToolbar:create() - - ::qFilesToolbar:setStyleSheet( GetStyleSheet( "QToolBarLR5", ::nAnimantionMode ) ) - ::qFilesToolbar:setWindowTitle( "Ide Files" ) - ::qFilesToolbar:setToolButtonStyle( Qt_ToolButtonIconOnly ) - - ::qFilesToolbar:addAction( "IdeNew" , ::getAction( "TB_New" ), {|| ::oIde:execAction( "new" ) } ) - ::qFilesToolbar:addAction( "IdeOpen", ::getAction( "TB_Open" ), {|| ::oIde:execAction( "Open" ) } ) - ::qFilesToolbar:addAction( "IdeOpen", ::getAction( "TB_Save" ), {|| ::oIde:execAction( "Save" ) } ) - ::qFilesToolbar:addAction( "IdeOpen", ::getAction( "TB_Close" ), {|| ::oIde:execAction( "Close" ) } ) - ::qFilesToolbar:addAction( "IdeOpen", ::getAction( "TB_Print" ), {|| ::oIde:execAction( "Print" ) } ) - - ::oDlg:oWidget:addToolBar( Qt_TopToolBarArea, ::qFilesToolbar:oWidget ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeActions:buildToolbarParts() - - ::qPartsToolbar := HBQToolBar():new( "ToolBar_Parts" ) - - ::qPartsToolbar:cName := "ToolBar_Parts" - ::qPartsToolbar:allowedAreas := Qt_LeftToolBarArea + Qt_RightToolBarArea + Qt_TopToolBarArea + Qt_BottomToolBarArea - ::qPartsToolbar:size := QSize( 12, 12 ) - - ::qPartsToolbar:create() - - ::qPartsToolbar:setStyleSheet( GetStyleSheet( "QToolBarLR5", ::nAnimantionMode ) ) - ::qPartsToolbar:setWindowTitle( "Ide Parts" ) - ::qPartsToolbar:setToolButtonStyle( Qt_ToolButtonIconOnly ) - - ::qPartsToolbar:addAction( "IdeEDITOR" , ::getAction( "EDITOR" ), {|| ::oIde:execAction( "EDITOR" ) } ) - ::qPartsToolbar:addAction( "IdeDBU" , ::getAction( "DBU" ), {|| ::oIde:execAction( "DBU" ) } ) - ::qPartsToolbar:addAction( "IdeREPORTS", ::getAction( "REPORTS"), {|| ::oIde:execAction( "REPORTS" ) } ) - - ::oDlg:oWidget:addToolBar( Qt_TopToolBarArea, ::qPartsToolbar:oWidget ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeActions:buildToolbarProject() - LOCAL oTBar - - ::qProjectToolbar := HBQToolBar():new( "ToolBar_Docks" ) - - ::qProjectToolbar:cName := "ToolBar_Project" - ::qProjectToolbar:allowedAreas := Qt_LeftToolBarArea + Qt_RightToolBarArea + Qt_TopToolBarArea + Qt_BottomToolBarArea - ::qProjectToolbar:size := QSize( 12, 12 ) - - ::qProjectToolbar:create() - - ::qProjectToolbar:setStyleSheet( GetStyleSheet( "QToolBarLR5", ::nAnimantionMode ) ) - ::qProjectToolbar:setWindowTitle( "Ide Projects" ) - ::qProjectToolbar:setToolButtonStyle( Qt_ToolButtonIconOnly ) - - oTBar := ::qProjectToolbar - - oTBar:addAction( "TB_Script" , ::getAction( "TB_Script" ), {|| ::oIde:execAction( "RunAsScript" ) } ) - oTBar:addAction( "TB_Compile" , ::getAction( "TB_Compile" ), {|| ::oIde:execAction( "Compile" ) } ) - oTBar:addAction( "TB_CompilePPO" , ::getAction( "TB_CompilePPO" ), {|| ::oIde:execAction( "CompilePPO" ) } ) - oTBar:addAction( "TB_BuildSource" , ::getAction( "TB_BuildSource" ), {|| ::oIde:execAction( "BuildSource" ) } ) - oTBar:addAction( "TB_Build" , ::getAction( "TB_Build" ), {|| ::oIde:execAction( "Build" ) } ) - oTBar:addAction( "TB_BuildLaunch" , ::getAction( "TB_BuildLaunch" ), {|| ::oIde:execAction( "BuildLaunch" ) } ) - oTBar:addAction( "TB_Rebuild" , ::getAction( "TB_Rebuild" ), {|| ::oIde:execAction( "Rebuild" ) } ) - oTBar:addAction( "TB_RebuildLaunch", ::getAction( "TB_RebuildLaunch" ), {|| ::oIde:execAction( "RebuildLaunch" ) } ) - - ::oDlg:oWidget:addToolBar( Qt_TopToolBarArea, ::qProjectToolbar:oWidget ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeActions:buildToolBarDocks() - LOCAL a_, qAct - LOCAL aBtns := {} - - /* Right-hand docks toolbar */ - - aadd( aBtns, { ::oDockPT , "projtree" } ) - aadd( aBtns, { ::oDockED , "editstree" } ) - aadd( aBtns, { ::oSkltnsTreeDock , "projtree" } ) - aadd( aBtns, {} ) - aadd( aBtns, { ::oHelpDock , "help" } ) - aadd( aBtns, { ::oDocViewDock , "harbourhelp" } ) - aadd( aBtns, { ::oDocWriteDock , "docwriter" } ) - aadd( aBtns, { ::oFuncDock , "dc_function" } ) - aadd( aBtns, { ::oFunctionsDock , "ffn" } ) - aadd( aBtns, { ::oPropertiesDock , "properties" } ) - aadd( aBtns, { ::oEnvironDock , "envconfig" } ) - aadd( aBtns, { ::oSkeltnDock , "codeskeletons" } ) - aadd( aBtns, { ::oThemesDock , "syntaxhiliter" } ) - aadd( aBtns, { ::oFindDock , "search" } ) - aadd( aBtns, { ::oSourceThumbnailDock, "thumbnail" } ) - aadd( aBtns, { ::oCuiEdDock , "cuied" } ) - aadd( aBtns, { ::oUiSrcDock , "fileprg" } ) - aadd( aBtns, {} ) - aadd( aBtns, { ::oDockB2 , "builderror" } ) - - ::qTBarDocks := HBQToolBar():new( "ToolBar_Docks" ) - - ::qTBarDocks:cName := "ToolBar_Docks" - ::qTBarDocks:allowedAreas := Qt_LeftToolBarArea + Qt_RightToolBarArea + Qt_TopToolBarArea + Qt_BottomToolBarArea - ::qTBarDocks:size := QSize( 12,12 ) - - ::qTBarDocks:create() - - ::qTBarDocks:setStyleSheet( GetStyleSheet( "QToolBarLR5", ::nAnimantionMode ) ) - ::qTBarDocks:setWindowTitle( "Dockable Widgets" ) - ::qTBarDocks:setToolButtonStyle( Qt_ToolButtonIconOnly ) - - FOR EACH a_ IN aBtns - IF empty( a_ ) - ::qTBarDocks:addSeparator() - ELSE - qAct := a_[ 1 ]:oWidget:toggleViewAction() - qAct:setIcon( QIcon( hbide_image( a_[ 2 ] ) ) ) - ::qTBarDocks:addAction( a_[ 2 ], qAct ) - ENDIF - NEXT - - ::oDlg:oWidget:addToolBar( Qt_TopToolBarArea, ::qTBarDocks:oWidget ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeActions:buildMdiToolbarLeft() - - ::qMdiToolbarL := HbqToolbar():new() - ::qMdiToolbarL:orientation := Qt_Vertical - ::qMdiToolbarL:size := QSize( val( ::oINI:cToolbarSize ), val( ::oINI:cToolbarSize ) ) - ::qMdiToolbarL:create( "EditsManager_Left_Toolbar" ) - ::qMdiToolbarL:setWindowTitle( "Editing Area's Left" ) - ::qMdiToolbarL:setObjectName( "ToolbarEditingAreaLeft" ) - ::qMdiToolbarL:setStyleSheet( GetStyleSheet( "QToolBar", ::nAnimantionMode ) ) - - ::qMdiToolbarL:addToolButton( "ViewTabbed" , "Toggle tabbed view" , hbide_image( "view_tabbed" ), {|| ::oDK:execEvent( __buttonViewTabbed_clicked__ ) }, .f. ) - - ::qMdiToolbarL:addToolButton( "ViewArranged" , "View as arranged" , hbide_image( "view_organized" ), {|| ::oDK:execEvent( __buttonViewOrganized_clicked__ ) }, .f. ) - ::qMdiToolbarL:addToolButton( "SaveLayout" , "Save layout" , hbide_image( "save3" ), {|| ::oDK:execEvent( __buttonSaveLayout_clicked__ ) }, .f. ) - - ::qMdiToolbarL:addToolButton( "ViewCascaded" , "View as cascaded" , hbide_image( "view_cascaded" ), {|| ::oDK:execEvent( __buttonViewCascaded_clicked__ ) }, .f. ) - ::qMdiToolbarL:addToolButton( "viewTiled" , "View as tiled" , hbide_image( "view_tiled" ), {|| ::oDK:execEvent( __buttonViewTiled_clicked__ ) }, .f. ) - ::qMdiToolbarL:addToolButton( "ViewMaximized" , "View Maximized" , hbide_image( "fullscreen" ), {|| ::oDK:execEvent( __buttonViewMaximized_clicked__ ) }, .f. ) - ::qMdiToolbarL:addToolButton( "ViewTiledVert" , "View Vertically Tiled" , hbide_image( "view_vertstacked" ), {|| ::oDK:execEvent( __buttonViewStackedVert_clicked__ ) }, .f. ) - ::qMdiToolbarL:addToolButton( "ViewTiledHorz" , "View Horizontally Tiled" , hbide_image( "view_horzstacked" ), {|| ::oDK:execEvent( __buttonViewStackedHorz_clicked__ ) }, .f. ) - ::qMdiToolbarL:addToolButton( "ViewZoomedIn" , "View Zoom In" , hbide_image( "view_zoomin" ), {|| ::oDK:execEvent( __buttonViewZoomedIn_clicked__ ) }, .f. ) - ::qMdiToolbarL:addToolButton( "ViewZoomedOut" , "View Zoom Out" , hbide_image( "view_zoomout" ), {|| ::oDK:execEvent( __buttonViewZoomedOut_clicked__ ) }, .f. ) - ::qMdiToolbarL:addSeparator() - ::qMdiToolbarL:addToolButton( "ToggleLineNos" , "Toggle Line Numbers" , hbide_image( "togglelinenumber" ), {|| ::oEM:toggleLineNumbers() }, .f. ) - ::qMdiToolbarL:addToolButton( "ToggleHorzRuler", "Toggle Horizontal Ruler" , hbide_image( "horzruler" ), {|| ::oEM:toggleHorzRuler() }, .f. ) - ::qMdiToolbarL:addToolButton( "ToggleCurLine" , "Toggle Current Line Hilight", hbide_image( "curlinehilight" ), {|| ::oEM:toggleCurrentLineHighlightMode() }, .f. ) - ::qMdiToolbarL:addSeparator() - ::qMdiToolbarL:addToolButton( "ToggleCodeComp" , "Toggle Code Completion" , hbide_image( "help1" ), {|| ::oEM:toggleCodeCompetion() }, .f. ) - ::qMdiToolbarL:addToolButton( "ToggleCompTips" , "Toggle Completion Tips" , hbide_image( "infotips" ), {|| ::oEM:toggleCompetionTips() }, .f. ) - ::qMdiToolbarL:addSeparator() - ::qMdiToolbarL:addToolButton( "ZoomIn" , "Zoom In" , hbide_image( "zoomin3" ), {|| ::oEM:zoom( +1 ) }, .f. ) - ::qMdiToolbarL:addToolButton( "ZoomOut" , "Zoom Out" , hbide_image( "zoomout3" ), {|| ::oEM:zoom( -1 ) }, .f. ) - ::qMdiToolbarL:addSeparator() - - IF ! ::oINI:lShowEditsLeftToolbar - ::qMdiToolbarL:hide() - ENDIF - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD IdeActions:buildMdiToolbar() - LOCAL qTBar, nW := 25 - - STATIC sp0,sp1,sp2,sp3 - IF empty( sp0 ) - sp0 := QLabel(); sp0:setMinimumWidth( nW ) - sp1 := QLabel(); sp1:setMinimumWidth( nW ) - sp2 := QLabel(); sp2:setMinimumWidth( nW ) - sp3 := QLabel(); sp3:setMinimumWidth( nW ) - ENDIF - - ::qMdiToolbar := HbqToolbar():new() - ::qMdiToolbar:orientation := Qt_Horizontal - ::qMdiToolbar:size := QSize( val( ::oINI:cToolbarSize ), val( ::oINI:cToolbarSize ) ) - ::qMdiToolbar:create( "EditsManager_Top_Toolbar" ) - ::qMdiToolbar:setStyleSheet( GetStyleSheet( "QToolBar", ::nAnimantionMode ) ) - ::qMdiToolbar:setObjectName( "ToolbarEditingAreaTop" ) - ::qMdiToolbar:setWindowTitle( "Editing Area's Top" ) - - qTBar := ::qMdiToolbar - - qTBar:addWidget( "Panels", ::oIde:oTM:buildPanelsButton() ) - qTBar:addWidget( "Label0", sp0 ) - qTBar:addToolButton( "Undo" , "Undo" , hbide_image( "undo" ), {|| ::oEM:undo() }, .f. ) - qTBar:addToolButton( "Redo" , "Redo" , hbide_image( "redo" ), {|| ::oEM:redo() }, .f. ) - qTBar:addSeparator() - qTBar:addToolButton( "Cut" , "Cut" , hbide_image( "cut" ), {|| ::oEM:cut() }, .f. ) - qTBar:addToolButton( "Copy" , "Copy" , hbide_image( "copy" ), {|| ::oEM:copy() }, .f. ) - qTBar:addToolButton( "Paste" , "Paste" , hbide_image( "paste" ), {|| ::oEM:paste() }, .f. ) - qTBar:addToolButton( "SelectAll" , "Select all" , hbide_image( "selectall" ), {|| ::oEM:selectAll() }, .f. ) - qTBar:addAction( "SelectionMode", ::getAction( "SelectionMode" ), {|| ::oEM:toggleSelectionMode(), ::oIDE:manageFocusInEditor() } ) - qTBar:addWidget( "Label1", sp1 ) - qTBar:addToolButton( "Find" , "Find / Replace" , hbide_image( "find" ), {|| ::oEM:find() }, .f. ) - qTBar:addToolButton( "BookMark" , "Toggle Mark" , hbide_image( "bookmark" ), {|| ::oEM:setMark() }, .f. ) - qTBar:addToolButton( "GotoLine" , "Goto Line" , hbide_image( "gotoline3" ), {|| ::oEM:goTo() }, .f. ) - qTBar:addToolButton( "Reload" , "Reload Source" , hbide_image( "view_refresh" ), {|| ::oEM:reload() }, .f. ) - qTBar:addWidget( "Label2", sp2 ) - qTBar:addToolButton( "MoveUp" , "Move Current Line Up" , hbide_image( "movelineup" ), {|| ::oEM:moveLine( -1 ) }, .f. ) - qTBar:addToolButton( "MoveDn" , "Move Current Line Down" , hbide_image( "movelinedown" ), {|| ::oEM:moveLine( 1 ) }, .f. ) - qTBar:addToolButton( "DelLine" , "Delete Current Line" , hbide_image( "deleteline" ), {|| ::oEM:deleteLine() }, .f. ) - qTBar:addToolButton( "Duplicate" , "Duplicate Current Line" , hbide_image( "duplicateline" ), {|| ::oEM:duplicateLine() }, .f. ) - qTBar:addWidget( "Label3", sp3 ) - qTBar:addToolButton( "ToUpper" , "To Upper" , hbide_image( "toupper" ), {|| ::oEM:convertSelection( "ToUpper" ) }, .f. ) - qTBar:addToolButton( "ToLower" , "To Lower" , hbide_image( "tolower" ), {|| ::oEM:convertSelection( "ToLower" ) }, .f. ) - qTBar:addToolButton( "InvertCase", "Invert Case" , hbide_image( "invertcase" ), {|| ::oEM:convertSelection( "Invert" ) }, .f. ) - qTBar:addSeparator() - qTBar:addToolButton( "BlockCmnt" , "Block Comment" , hbide_image( "blockcomment" ), {|| ::oEM:blockComment() }, .f. ) - qTBar:addToolButton( "StreamCmnt", "Stream Comment" , hbide_image( "streamcomment" ), {|| ::oEM:streamComment() }, .f. ) - qTBar:addSeparator() - qTBar:addToolButton( "IndentR" , "Indent Right" , hbide_image( "blockindentr" ), {|| ::oEM:indent( 1 ) }, .f. ) - qTBar:addToolButton( "IndentL" , "Indent Left" , hbide_image( "blockindentl" ), {|| ::oEM:indent( -1 ) }, .f. ) - qTBar:addSeparator() - qTBar:addToolButton( "Sgl2Dbl" , "Single to Double Quotes" , hbide_image( "sgl2dblquote" ), {|| ::oEM:convertDQuotes() }, .f. ) - qTBar:addToolButton( "Dbl2Sgl" , "Double to Single Quotes" , hbide_image( "dbl2sglquote" ), {|| ::oEM:convertQuotes() }, .f. ) - qTBar:addToolButton( "Stringify" , "Stringify Selection" , hbide_image( "stringify" ), {|| ::oEM:stringify() }, .f. ) - qTBar:addSeparator() - qTBar:addToolButton( "AlignAt" , "Align At..." , hbide_image( "align_at" ), {|| ::oEM:alignAt() }, .f. ) - - IF ! ::oINI:lShowEditsTopToolbar - ::qMdiToolbar:hide() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeActions:buildToolbarSelectedText() - LOCAL qTBar - - ::qSelToolbar := HbqToolbar():new( "ToolbarSelectedText", ::oDlg:oWidget ) - ::qSelToolbar:orientation := Qt_Horizontal - ::qSelToolbar:size := QSize( val( ::oINI:cToolbarSize ), val( ::oINI:cToolbarSize ) ) - ::qSelToolbar:create( "SelectedText_Toolbar" ) - ::qSelToolbar:setObjectName( "ToolbarSelectedText" ) - ::qSelToolbar:setWindowTitle( "Actions on Selected Text" ) - ::qSelToolbar:setWindowFlags( hb_bitOr( Qt_Tool, Qt_CustomizeWindowHint ) ) - ::qSelToolbar:setMovable( .T. ) - ::qSelToolbar:setFloatable( .T. ) - ::qSelToolbar:hide() - - qTBar := ::qSelToolbar - - qTBar:addToolButton( "Undo" , "Undo" , hbide_image( "undo" ), {|| ::oEM:undo() }, .f. ) - qTBar:addToolButton( "Redo" , "Redo" , hbide_image( "redo" ), {|| ::oEM:redo() }, .f. ) - qTBar:addToolButton( "Cut" , "Cut" , hbide_image( "cut" ), {|| ::oEM:cut() }, .f. ) - qTBar:addToolButton( "Copy" , "Copy" , hbide_image( "copy" ), {|| ::oEM:copy() }, .f. ) - qTBar:addToolButton( "Paste" , "Paste" , hbide_image( "paste" ), {|| ::oEM:paste() }, .f. ) - qTBar:addAction( "SelectionMode", ::getAction( "SelectionMode" ), {|| ::oEM:toggleSelectionMode(), ::oIDE:manageFocusInEditor() } ) - qTBar:addToolButton( "ToUpper" , "To Upper" , hbide_image( "toupper" ), {|| ::oEM:convertSelection( "ToUpper" ) }, .f. ) - qTBar:addToolButton( "ToLower" , "To Lower" , hbide_image( "tolower" ), {|| ::oEM:convertSelection( "ToLower" ) }, .f. ) - qTBar:addToolButton( "InvertCase", "Invert Case" , hbide_image( "invertcase" ), {|| ::oEM:convertSelection( "Invert" ) }, .f. ) - qTBar:addToolButton( "BlockCmnt" , "Block Comment" , hbide_image( "blockcomment" ), {|| ::oEM:blockComment() }, .f. ) - qTBar:addToolButton( "StreamCmnt", "Stream Comment" , hbide_image( "streamcomment" ), {|| ::oEM:streamComment() }, .f. ) - qTBar:addToolButton( "IndentR" , "Indent Right" , hbide_image( "blockindentr" ), {|| ::oEM:indent( 1 ) }, .f. ) - qTBar:addToolButton( "IndentL" , "Indent Left" , hbide_image( "blockindentl" ), {|| ::oEM:indent( -1 ) }, .f. ) - qTBar:addToolButton( "Sgl2Dbl" , "Single to Double Quotes" , hbide_image( "sgl2dblquote" ), {|| ::oEM:convertDQuotes() }, .f. ) - qTBar:addToolButton( "Dbl2Sgl" , "Double to Single Quotes" , hbide_image( "dbl2sglquote" ), {|| ::oEM:convertQuotes() }, .f. ) - qTBar:addToolButton( "Stringify" , "Stringify Selection" , hbide_image( "stringify" ), {|| ::oEM:stringify() }, .f. ) - qTBar:addToolButton( "AlignAt" , "Align At..." , hbide_image( "align_at" ), {|| ::oEM:alignAt() }, .f. ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - diff --git a/harbour/contrib/hbide/changelog.prg b/harbour/contrib/hbide/changelog.prg deleted file mode 100644 index 5857143bf9..0000000000 --- a/harbour/contrib/hbide/changelog.prg +++ /dev/null @@ -1,508 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2011 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 25May2011 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbide.ch" -#include "common.ch" -#include "hbclass.ch" -#include "hbqtgui.ch" - -/*----------------------------------------------------------------------*/ - -#define __editChangelog_textChanged__ 2001 -#define __editUser_textChanged__ 2002 -#define __buttonOpen_clicked__ 2003 -#define __buttonNew_clicked__ 2004 -#define __buttonTitle_clicked__ 2005 -#define __buttonSource_clicked__ 2006 -#define __buttonDesc_clicked__ 2007 -#define __buttonSrcDesc_clicked__ 2008 -#define __buttonClearDesc_clicked__ 2009 -#define __buttonCancel_clicked__ 2010 -#define __buttonSave_clicked__ 2011 - -/*----------------------------------------------------------------------*/ - -CLASS IdeChangeLog INHERIT IdeObject - - DATA nCntr INIT 0 - DATA qHiliter - DATA oEdit - DATA qEdit - DATA oTheme - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() - METHOD show() - METHOD execEvent( nEvent, p ) - METHOD updateLog() - METHOD refresh() - METHOD addToLog( aLog ) - METHOD getLogEntry() - METHOD buildLogEntry() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeChangeLog:new( oIde ) - - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeChangeLog:create( oIde ) - - DEFAULT oIde TO ::oIde - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeChangeLog:destroy() - - IF !empty( ::oUI ) - ::oUI:buttonNew :disconnect( "clicked()" ) - - ::oUI:destroy() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeChangeLog:show() - - IF empty( ::oUI ) - ::oUI := hbide_getUI( "changelog", ::oDlg:oWidget ) - ::oUI:setWindowFlags( Qt_Sheet ) - ::oUI:setWindowIcon( QIcon( hbide_image( "hbide" ) ) ) - - ::oUI:buttonOpen :setIcon( QIcon( hbide_image( "dc_folder" ) ) ) - ::oUI:buttonNew :setIcon( QIcon( hbide_image( "new" ) ) ) - ::oUI:buttonTitle :setIcon( QIcon( hbide_image( "dc_plus" ) ) ) - ::oUI:buttonSource :setIcon( QIcon( hbide_image( "dc_plus" ) ) ) - ::oUI:buttonDesc :setIcon( QIcon( hbide_image( "dc_plus" ) ) ) - ::oUI:buttonSrcDesc :setIcon( QIcon( hbide_image( "dc_plus" ) ) ) - - ::oUI:buttonOpen :setToolTip( "Open a ChangeLog" ) - ::oUI:buttonNew :setToolTip( "Create Empty ChangeLog" ) - ::oUI:buttonTitle :setToolTip( "Add Title in current entry" ) - ::oUI:buttonSource :setToolTip( "Add Source in current entry" ) - ::oUI:buttonDesc :setToolTip( "Add Action_Description in current entry" ) - ::oUI:buttonSrcDesc :setToolTip( "Add Source_Action_Description in current entry" ) - - ::oUI:buttonOpen :connect( "clicked()", {|| ::execEvent( __buttonOpen_clicked__ ) } ) - ::oUI:buttonNew :connect( "clicked()", {|| ::execEvent( __buttonNew_clicked__ ) } ) - - ::oUI:buttonTitle :connect( "clicked()", {|| ::execEvent( __buttonTitle_clicked__ ) } ) - ::oUI:buttonSource :connect( "clicked()", {|| ::execEvent( __buttonSource_clicked__ ) } ) - ::oUI:buttonDesc :connect( "clicked()", {|| ::execEvent( __buttonDesc_clicked__ ) } ) - ::oUI:buttonSrcDesc :connect( "clicked()", {|| ::execEvent( __buttonSrcDesc_clicked__ ) } ) - ::oUI:buttonClearDesc :connect( "clicked()", {|| ::execEvent( __buttonClearDesc_clicked__ ) } ) - - ::oUI:buttonCancel :connect( "clicked()", {|| ::execEvent( __buttonCancel_clicked__ ) } ) - ::oUI:buttonSave :connect( "clicked()", {|| ::execEvent( __buttonSave_clicked__ ) } ) - - ::oUI:editChangelog :connect( "textChanged(QString)", {|p| ::execEvent( __editChangelog_textChanged__, p ) } ) - ::oUI:editUser :connect( "textChanged(QString)", {|p| ::execEvent( __editUser_textChanged__ , p ) } ) - - ::oUI:comboAction :addItem( "! Fixed : " ) - ::oUI:comboAction :addItem( "* Changed: " ) - ::oUI:comboAction :addItem( "% Optimzd: " ) - ::oUI:comboAction :addItem( "+ Added : " ) - ::oUI:comboAction :addItem( "- Removed: " ) - ::oUI:comboAction :addItem( "; Comment: " ) - ::oUI:comboAction :addItem( "@ TODO : " ) - ::oUI:comboAction :addItem( "| Moved : " ) - - IF empty( ::oINI:cUserChangeLog ) - ::oINI:cUserChangeLog := hbide_fetchAString( ::oDlg:oWidget, ::oINI:cUserChangeLog, , "Developer Name" ) - ENDIF - - aeval( ::oINI:aLogTitle , {|e| ::oUI:comboTitle:insertItem( 0,e ) } ) - aeval( ::oINI:aLogSources, {|e| ::oUI:comboSources:insertItem( 0,e ) } ) - - ::oUI:comboTitle:setCurrentIndex( -1 ) - ::oUI:comboSources:setCurrentIndex( -1 ) - - ::oUI:plainChangelog :setFont( ::oFont:oWidget ) - ::oUI:plainLogEntry :setFont( ::oFont:oWidget ) - ::oUI:plainCurrentLog :setFont( ::oFont:oWidget ) - - ::oUI:plainLogEntry :ensureCursorVisible() - - ::oUI:editUser:setText( ::oINI:cUserChangeLog ) - ::oUI:setWindowTitle( "Manage ChangeLog(s)" ) - - ::oEdit := IdeEdit():new( ::oIde ) - ::qEdit := ::oUI:plainChangelog - ::oEdit:qEdit := ::qEdit - ::qEdit:setFocusPolicy( Qt_NoFocus ) - ::qEdit:hbHorzRulerVisible( .f. ) - - ::oTheme := IdeThemes():new( ::oIde ):create() - ::qHiliter := ::oTheme:setSyntaxHilighting( ::qEdit, , .t., .t. ) - ::qHiliter:hbSetType( 1 ) - - ::oUI:editChangelog :setText( ::oINI:cChangeLog ) - - ::oUI:oWidget:connect( QEvent_Close, {|| ::oIde:oINI:cChangelogDialogGeometry := hbide_posAndSize( ::oUI:oWidget ) } ) - ENDIF - - ::oIde:setPosAndSizeByIniEx( ::oUI:oWidget, ::oINI:cChangelogDialogGeometry ) - ::oUI:show() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_eol() - RETURN hb_eol() // chr( 13 ) + chr( 10 ) - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_getLogCounter( cBuffer ) - LOCAL n, n1, nCntr := 0 - - IF ( n := at( "$<", cBuffer ) ) > 0 - n1 := at( ">", cBuffer ) - nCntr := val( substr( cBuffer, n + 2, n1 - n - 2 ) ) - ENDIF - - RETURN nCntr + 1 - -/*----------------------------------------------------------------------*/ - -METHOD IdeChangeLog:execEvent( nEvent, p ) - LOCAL cTmp, cTmp1, s, n - - HB_SYMBOL_UNUSED( p ) - - IF ::lQuitting - RETURN Self - ENDIF - - SWITCH nEvent - - CASE __buttonTitle_clicked__ - IF ! empty( cTmp := ::oUI:comboTitle:currentText() ) - ::addToLog( { "Title", cTmp, "" } ) - ::refresh() - IF ascan( ::oINI:aLogTitle, {|e| upper( e ) == upper( cTmp ) } ) == 0 - aadd( ::oINI:aLogTitle, cTmp ) - ::oUI:comboTitle:insertItem( 0,cTmp ) - ENDIF - ENDIF - EXIT - CASE __buttonSource_clicked__ - IF ! empty( cTmp := ::oUI:comboSources:currentText() ) - ::addToLog( { "Source", cTmp, "" } ) - ::refresh() - IF ascan( ::oINI:aLogSources, {|e| upper( e ) == upper( cTmp ) } ) == 0 - aadd( ::oINI:aLogSources, cTmp ) - ::oUI:comboSources:insertItem( 0,cTmp ) - ENDIF - ENDIF - EXIT - CASE __buttonDesc_clicked__ - IF ! empty( cTmp := ::oUI:plainCurrentLog:toPlainText() ) - ::addToLog( { "Desc", ::oUI:comboAction:currentText(), cTmp } ) - ::oUI:plainCurrentLog:clear() - ::refresh() - ENDIF - EXIT - CASE __buttonSrcDesc_clicked__ - IF ! empty( cTmp := ::oUI:comboSources:currentText() ) - ::addToLog( { "Source", cTmp, "" } ) - ENDIF - IF ! empty( cTmp := ::oUI:plainCurrentLog:toPlainText() ) - ::addToLog( { "Desc", ::oUI:comboAction:currentText(), cTmp } ) - ::oUI:plainCurrentLog:clear() - ENDIF - ::refresh() - EXIT - CASE __buttonClearDesc_clicked__ - ::oUI:plainCurrentLog:clear() - EXIT - CASE __buttonSave_clicked__ - IF ! empty( cTmp := ::buildLogEntry() ) - cTmp1 := hb_memoread( ::oINI:cChangeLog ) - ::nCntr := hbide_getLogCounter( cTmp1 ) - s := "$<" + strzero( ::nCntr, 6 ) + "> " + hbide_dtosFmt() + " " + left( time(), 5 ) + " " + ::oINI:cUserChangeLog - - IF ( n := at( "$<", cTmp1 ) ) > 0 - //cTmp1 := substr( cTmp1, 1, n - 1 ) + s + hbide_eol() + cTmp + hbide_eol() + substr( cTmp1, n ) - cTmp1 := substr( cTmp1, 1, n - 1 ) + s + hbide_eol() + cTmp + substr( cTmp1, n ) - ELSE - cTmp1 += hbide_eol() + s + hbide_eol() + cTmp1 + hbide_eol() - ENDIF - hb_memowrit( ::oINI:cChangeLog, cTmp1 ) /* TODO: put it under locking protocol */ - ::updateLog() - ENDIF - EXIT - CASE __buttonCancel_clicked__ - ::oUI:plainLogEntry:clear() - EXIT - CASE __buttonOpen_clicked__ - cTmp := hbide_fetchAFile( ::oDlg, "Select a ChangeLog File" ) - IF ! empty( cTmp ) .AND. hb_fileExists( cTmp ) - ::oINI:cChangeLog := cTmp - ::oUI:editChangelog:setText( ::oINI:cChangeLog ) - ENDIF - EXIT - CASE __buttonNew_clicked__ - cTmp := hbide_saveAFile( ::oDlg, "New ChangeLog File" ) - IF ! empty( cTmp ) - ::oINI:cChangeLog := cTmp - - s := "" + hbide_eol() - s += "$<000000> " + hbide_dtosFmt( date() ) + " " + left( time(),5 ) + " hbIDE" + hbide_eol() - s += " # Initialized by hbIDE" + hbide_eol() - - hb_memowrit( ::oINI:cChangeLog, s ) - - ::oUI:editChangelog:setText( ::oINI:cChangeLog ) - ENDIF - EXIT - CASE __editUser_textChanged__ - IF !empty( p ) - ::oINI:cUserChangeLog := p - ENDIF - EXIT - CASE __editChangelog_textChanged__ - IF ! empty( p ) .AND. hb_fileExists( p ) - ::oINI:cChangeLog := p - ::oUI:editChangelog:setStyleSheet( "" ) - ::updateLog() - ELSE - ::oUI:editChangelog:setStyleSheet( "background-color: rgba( 240,120,120,255 );" ) - ::oUI:plainChangelog:clear() - ENDIF - EXIT - - ENDSWITCH - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeChangeLog:updateLog() - - ::oUI:plainLogEntry:clear() - ::oUI:plainCurrentLog:clear() - ::oUI:plainChangelog:clear() - - ::oUI:plainChangelog:setPlainText( hb_memoread( ::oINI:cChangeLog ) ) - - ::refresh() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_dtosFmt( dDate ) - LOCAL s - - DEFAULT dDate TO date() - - s := dtos( dDate ) - - RETURN substr( s, 1, 4 ) + "-" + substr( s, 5, 2 ) + "-" + substr( s, 7, 2 ) - -/*----------------------------------------------------------------------*/ - -METHOD IdeChangeLog:refresh() - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeChangeLog:addToLog( aLog ) - LOCAL k, e - LOCAL a_:= ::getLogEntry() - - DO CASE - CASE aLog[ 1 ] == "Title" - aadd( a_, " # " + aLog[ 2 ] ) - CASE aLog[ 1 ] == "Source" - aadd( a_, " * " + aLog[ 2 ] ) - CASE aLog[ 1 ] == "Desc" - k := hbide_memoToArray( aLog[ 3 ] ) - FOR EACH e IN k - IF e:__enumIndex() == 1 - aadd( a_, " " + aLog[ 2 ] + e ) - ELSE - aadd( a_, " " + space( 11 ) + e ) - ENDIF - NEXT - ENDCASE - - ::oUI:plainLogEntry:setPlainText( hbide_arrayToMemo( a_ ) ) - QApplication():sendEvent( ::oUI:plainLogEntry, QKeyEvent( QEvent_KeyPress, Qt_Key_End, Qt_ControlModifier ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeChangeLog:getLogEntry() - LOCAL e, n, f, s_:={}, lHandelled - LOCAL a_:= hbide_memoToArray( ::oUI:plainLogEntry:toPlainText() ) - - FOR EACH e IN a_ - lHandelled := .f. - f := ltrim( e ) - - SWITCH left( f, 1 ) - CASE "#" - aadd( s_, " " + f ) - lHandelled := .t. - EXIT - CASE "*" - IF substr( f,3,7 ) == "Changed" - aadd( s_, " " + f ) - ELSE - aadd( s_, " " + f ) - ENDIF - lHandelled := .t. - EXIT - CASE "!" - IF substr( f,3,5 ) == "Fixed" - aadd( s_, " " + f ) - lHandelled := .t. - ENDIF - EXIT - CASE "%" - IF substr( f,3,7 ) == "Optimzd" - aadd( s_, " " + f ) - lHandelled := .t. - ENDIF - EXIT - CASE "+" - IF substr( f,3,5 ) == "Added" - aadd( s_, " " + f ) - lHandelled := .t. - ENDIF - EXIT - CASE "-" - IF substr( f,3,7 ) == "Removed" - aadd( s_, " " + f ) - lHandelled := .t. - ENDIF - EXIT - CASE ";" - IF substr( f,3,7 ) == "Comment" - aadd( s_, " " + f ) - lHandelled := .t. - ENDIF - EXIT - CASE "@" - IF substr( f,3,4 ) == "TODO" - aadd( s_, " " + f ) - lHandelled := .t. - ENDIF - EXIT - CASE "|" - IF substr( f,3,5 ) == "Moved" - aadd( s_, " " + f ) - lHandelled := .t. - ENDIF - EXIT - ENDSWITCH - - IF ! lHandelled - n := hbide_howManyPreSpaces( e ) - IF n >= 15 - aadd( s_, e ) - ELSE - aadd( s_, space( 15 ) + f ) - ENDIF - ENDIF - NEXT - - RETURN s_ - -/*----------------------------------------------------------------------*/ - -METHOD IdeChangeLog:buildLogEntry() - RETURN hbide_arrayToMemo( ::getLogEntry() ) - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_howManyPreSpaces( cStr ) - LOCAL i, n := 0 - - FOR i := 1 TO Len( cStr ) - IF ! ( substr( cStr, i, 1 ) == " " ) - EXIT - ENDIF - n++ - NEXT - RETURN n - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/changelog.ui b/harbour/contrib/hbide/changelog.ui deleted file mode 100644 index 69c2c48248..0000000000 --- a/harbour/contrib/hbide/changelog.ui +++ /dev/null @@ -1,286 +0,0 @@ - - - FormChangelog - - - - 0 - 0 - 454 - 674 - - - - Manage ChangeLog - - - - - - ChangeLog File - - - - 0 - - - - - - - - ... - - - - - - - ... - - - - - - - User: - - - - - - - - - - - - - - 16777215 - 180 - - - - Build Log Entry - - - - 0 - - - - - Title - - - - - - - true - - - QComboBox::InsertAlphabetically - - - - - - - Source: - - - - - - - Action: - - - - - - - - - - QPlainTextEdit::NoWrap - - - - - - - - - Title - - - - - - - Source - - - - - - - Description - - - - - - - Source + Desc - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Clear Desc - - - - - - - - - - 0 - 0 - - - - true - - - QComboBox::InsertAlphabetically - - - - - - - - - - - 16777215 - 200 - - - - Current Log Entry - - - - 0 - - - 0 - - - - - QPlainTextEdit::NoWrap - - - false - - - - - - - - - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Cancel - - - - - - - Save - - - - - - - - - - - - - ChangeLog Contents - - - - 0 - - - - - QPlainTextEdit::NoWrap - - - false - - - - - - - - - - - HBQPlainTextEdit - QPlainTextEdit -
hbqplaintextedit.h
-
-
- - -
diff --git a/harbour/contrib/hbide/console.prg b/harbour/contrib/hbide/console.prg deleted file mode 100644 index 87508c78ef..0000000000 --- a/harbour/contrib/hbide/console.prg +++ /dev/null @@ -1,5224 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2011 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 25Aug2011 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "common.ch" -#include "hbclass.ch" -#include "hbqtgui.ch" -#include "hbide.ch" -#include "xbp.ch" -#include "inkey.ch" -#include "hbgtinfo.ch" -#include "achoice.ch" -#include "box.ch" - -/*----------------------------------------------------------------------*/ - -THREAD STATIC s_vid_stk := "" - -/*----------------------------------------------------------------------*/ - -#define THE_FILL chr( 177 ) -#define CHR_PIPE chr( 124 ) -#define B_SLIM chr( 219 ) + chr( 223 ) + chr( 219 ) + chr( 219 ) + chr( 219 ) + chr( 220 ) + chr( 219 ) + chr( 219 ) - -#define OBJ_TYPE 1 // N 1 - -#define OBJ_ROW 2 // N 3 -#define OBJ_COL 3 // N 3 -#define OBJ_TO_ROW 4 // N 3 -#define OBJ_TO_COL 5 // N 3 - -#define OBJ_TEXT 6 // C 15 -#define OBJ_EQN 6 // C 240 -#define OBJ_NAME 6 // C 240 - -#define OBJ_F_TYPE 7 // C 1 -#define OBJ_F_LEN 8 // N 3 -#define OBJ_F_DEC 9 // N 2 -#define OBJ_F_PIC 10 // C 20 -#define OBJ_COLOR 11 // C 7 - -#define OBJ_WHEN 12 // C 7 -#define OBJ_BORDER 12 // C 7 -#define OBJ_BOX_SHAPE 12 // C -- - -#define OBJ_VALID 13 // C 7 -#define OBJ_PATTERN 13 // C 10 - -#define OBJ_ID 14 // C 15 -#define OBJ_SEC_ROW 15 // N 3 -#define OBJ_OBJ_UNIQUE 16 // N 4 -#define OBJ_MDL_F_TYPE 17 // C 10 -// -#define OBJ_INIT_VRBLS 17 - - -#define OBJ_REFRESH_ALL 1 -#define OBJ_REFRESH_LINE 2 -#define OBJ_REFRESH_NIL 0 - -#define OBJ_O_BOX 1 -#define OBJ_O_LINE 2 -#define OBJ_O_TEXT 3 -#define OBJ_O_FIELD 4 -#define OBJ_O_EXP 5 -#define OBJ_O_BMP 6 - -#define OBJ_MODE_SELECT 1 -#define OBJ_MODE_MOVE 2 -#define OBJ_MODE_IDLE 0 - -#translate B_MSG ; - [ ] ; - [ AT [, ] ] ; - [ TO [, ] ] ; - [ WIDTH ] ; - [ DEPTH ] ; - [ COLOR ] ; - [ CHOOSE ] ; - [ CHOOSECOLOR ] ; - [ CHCOLOR ] ; - [ INTO ] ; - [ WAIT ] ; - [ ] ; - [ ] ; - [ ] ; - [ TRIGGER ] ; - [ INITIAL ] ; - [ SELECTABLES ] ; - [ ABORT ] ; - [ ] ; - [ ] ; - [ ] ; - [ TAGGED ] ; - [ ] ; - [ HELP ] ; - [ EXECUTE ] ; - [ NUMBERED ] ; - [ ] ; - [ WINDOW ] ; - [ ICON ] ; - [ WVT ] ; - [ ALIGN ] ; - => ; - [ := ] VouchMsgBox (, , , , , , ; - {}, , {}, , , <.rest.>, ; - <.paste.>, <.shadow.>, , , , , ; - <.selections.>, <.leftright.>, <.cent.>, ,<.num.>,; - ,,,<.lNoXpp.>,,,, ) - - -#xtranslate B_GETS ; - HEADERS VALUES ; - [ SELECTABLES ] ; - [ AT [, ] ] ; - [ TO [, ] ] ; - [ TITLE ] ; - [ INTO ] ; - [ WHEN ] ; - [ VALID ] ; - [ PICTURE ] ; - [ HELP ] ; - [ ORDER ] ; - => ; - [ := ] VouchGetArray(, , , , , , , ; - , , , , , ) - - -#define COMPILE( cStr ) &( "{|v,w,x| " + cStr + " }" ) - -#define CHECKMARK chr( 251 ) - -/*----------------------------------------------------------------------*/ - -CLASS IdeConsole INHERIT IdeObject - - DATA oXbpDock - DATA oMDI - DATA oMDIArea - DATA nOffX - DATA nOffY - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD show() - METHOD resizeByRowCols( nRows, nCols ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeConsole:new( oIde ) - - DEFAULT oIde TO ::oIde - - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeConsole:create( oIde ) - - DEFAULT oIde TO ::oIde - - ::oIde := oIde - - RETURN self - -/*----------------------------------------------------------------------*/ - -METHOD IdeConsole:show() - LOCAL qRect, qRect1 - - IF empty( ::oUI ) - IF empty( ::oMdiArea ) - ::oMdiArea := QMdiArea() - ::oMdiArea:setHorizontalScrollBarPolicy( Qt_ScrollBarAlwaysOn ) - ::oMdiArea:setVerticalScrollBarPolicy( Qt_ScrollBarAlwaysOn ) - - ::oCuiEdDock:oWidget:setWidget( ::oMdiArea ) - ENDIF - - ::oUI := XbpCrt():new( , , { 10,10 }, { 600,480 }, , .t. ) - - ::oUI:title := "My First CRT" - ::oUI:toolTiptext := "Really My First XbpCRT()" - ::oUI:lModal := .f. - ::oUI:create() - ::oUI:show() - - hb_gtInfo( HB_GTI_RESIZEMODE, HB_GTI_RESIZEMODE_ROWS ) - SetColor( "N/W" ) - ? " " - hb_gtInfo( HB_GTI_FONTSIZE, 12 ) - SetMode( 28,80 ) - hb_setDispCP( "EN" ) - - qRect := ::oUI:oWidget:frameGeometry() - qRect1 := ::oUI:oWidget:geometry() - ::nOffX := qRect:width() - qRect1:width() - ::nOffY := qRect:height() - qRect1:height() - - ::oMdi := ::oMdiArea:addSubWindow( ::oUI:oWidget ) - - ::oMdi:show() - ::resizeByRowCols( 28, 80 ) - - BuildScreen() - - ::oMdiArea:removeSubWindow( ::oMDI ) - - ::oUI:destroy() - ::oUI := NIL - - ::oCuiEdDock:oWidget:hide() - ENDIF - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD IdeConsole:resizeByRowCols( nRows, nCols ) - LOCAL nW := nCols * hb_gtInfo( HB_GTI_FONTWIDTH ) + ::nOffX - LOCAL nH := nRows * hb_gtInfo( HB_GTI_FONTSIZE ) + ::nOffY - - ::oCuiEdDock:oWidget:resize( nW, nH ) - - ::oMdi:resize( nW, nH ) - - RETURN Self - -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#define N_TRIM( n ) ltrim( str( n, 10, 0 ) ) - -/*----------------------------------------------------------------------*/ - -CLASS hbCUIEditor - - DATA cSource INIT "" - DATA cScreen INIT "" - DATA lEdited INIT .f. - - DATA obj_ INIT {} - DATA scn_ - DATA rpt_ INIT { { "", 0, "" } } - - DATA aUndo INIT {} - DATA aRedo INIT {} - - DATA sectors_ INIT {} - DATA nDesign INIT 1 - DATA nTop INIT 1 - DATA nLeft INIT 0 - DATA nBottom INIT maxrow() - 2 - DATA nRight INIT maxcol() - DATA nMode INIT 0 - DATA nRowCur INIT 0 - DATA nColCur INIT 0 - DATA nRowRep INIT 1 - DATA nColRep INIT 1 - DATA nRowDis INIT -1 - DATA nColDis INIT -1 - DATA nRowMenu INIT 0 - DATA nRowRuler INIT 0 - DATA nRowStatus INIT maxrow() - 1 - DATA nColStatus INIT 0 - DATA nColsMax INIT 400 - DATA nRowsMax INIT 200 - DATA nRowPrev INIT 1 - DATA nColPrev INIT 1 - DATA cClrStatus INIT "W+/BG" - DATA cClrText INIT "W+/B" - DATA cClrHilite INIT "GR+/BG" - DATA cClrWindow INIT "W+/BG" - DATA cClrRuler INIT "N/W" - DATA cClrOverall INIT "N/W" - DATA cClrPrev INIT "B/W" - DATA cClrSelect INIT "GR+/N" - DATA nObjHilite INIT 0 - DATA nObjSelected INIT 0 - DATA cRuler INIT "" - DATA cDrawFill INIT chr( 176 ) - DATA aObjId INIT { 'Bitmap','Line','Text','Field','Expression','BitMap' } - DATA xRefresh INIT OBJ_REFRESH_ALL - DATA nObjCopied INIT 0 - DATA aProperty INIT {} - DATA lGraphics INIT .f. - DATA aTextBlock INIT {} - DATA aFields INIT {} - DATA nLastKey INIT 0 - - METHOD new( cSource, cScreen ) - METHOD create( cSource, cScreen ) - METHOD destroy() - - METHOD operate() - - METHOD scrDisplay() - METHOD scrMove() - METHOD scrMoveLine() - METHOD scrDispSelected() - METHOD scrDispGhost( gst_ ) - METHOD scrStatus() - - METHOD scrMouse() - METHOD scrToMouse( nmRow, nmCol ) - METHOD scrOrdObj() - METHOD scrMovRgt() - METHOD scrMovLft() - METHOD scrMovUp() - METHOD scrMovDn() - METHOD scrChkObj() - METHOD scrUpdObjRC() - METHOD scrRepCol() - METHOD scrAddLine() - METHOD scrDelLine() - METHOD scrIsBoxIn() - METHOD scrObjCopy() - METHOD scrObjPas() - METHOD scrObjDel( nObj ) - METHOD scrOnLastCol( nObj ) - METHOD scrOnFirstCol( nObj, type_ ) - METHOD scrGetChar( nRow, nCol ) - METHOD scrTextBlock() - METHOD scrTextMove( nMode ) - METHOD scrTextPost( gst_, nMode ) - METHOD scrTextDel() - - METHOD scrLoad( lAsk ) - METHOD scrSave( lAsk ) - - METHOD scrAddBox( nObj ) - METHOD scrAddFld( nObj ) - METHOD scrAddTxt( nMode ) - METHOD scrMsg( msg ) - METHOD scrInKey( key_ ) - METHOD scrConfig() - METHOD scrReConfig() - METHOD scrObjBlank() - METHOD scrVrbBlank( nType ) - METHOD scrObj2Vv( o_ ) - METHOD scrVv2Obj( v_, o_ ) - - METHOD objType( nObj ) - METHOD objIsBox( nObj ) - METHOD objIsFld( nObj ) - METHOD objIsTxt( nObj ) - METHOD scrIsTxt() - - METHOD scrVrbHeaders( nType ) - METHOD scrGetProperty( nObj ) - METHOD scrUpdateSource( prg_ ) - METHOD scrBuildSource( prg_, nIndent ) - METHOD scrBuildFunction( prg_ ) - METHOD scrBuildFromBuffer( cBuffer, cScreen ) - METHOD scrOrdGets() - METHOD scrUpdateUndo() - METHOD scrUndo() - METHOD scrPreview() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD hbCUIEditor:new( cSource, cScreen ) - - DEFAULT cSource TO ::cSource - DEFAULT cScreen TO ::cScreen - - ::cSource := cSource - ::cScreen := cScreen - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD hbCUIEditor:create( cSource, cScreen ) - - DEFAULT cSource TO ::cSource - DEFAULT cScreen TO ::cScreen - - ::cSource := cSource - ::cScreen := cScreen - - ::scrLoad( .f. ) - ::scrConfig() - ::operate() - - RETURN SELF - -/*----------------------------------------------------------------------*/ - -METHOD hbCUIEditor:destroy() - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD hbCUIEditor:scrLoad( lAsk ) - LOCAL cBuffer, n, n1, nSel, aMatches, aMatch, cSource - LOCAL scr_:={} - - IF ::lEdited - IF alert( "Screen has been edited, save ?", { "Yes","No" } ) == 1 - ::scrSave( .f. ) - ENDIF - ENDIF - - IF lAsk - cSource := alltrim( VouchGetSome( "Source (.PRG)", pad( ::cSource, 50 ) ) ) - IF empty( cSource ) - RETURN NIL - ENDIF - IF ! ( cSource == ::cSource ) - ::obj_:={} - ::cSource := cSource - ENDIF - ENDIF - IF empty( ::cSource ) - RETURN Self - ENDIF - - IF lAsk .OR. empty( ::cScreen ) - cBuffer := hb_memoread( ::cSource ) - aMatches := hb_regExAll( "HB_SCREEN_BEGINS", cBuffer, .f., .f., 0, 1, .f. ) - IF ! empty( aMatches ) - FOR EACH aMatch IN aMatches - IF ( n := hb_at( "<", cBuffer, aMatch[ 2 ] ) ) > 0 - IF ( n1 := hb_at( ">", cBuffer, aMatch[ 2 ] ) ) > 0 - aadd( scr_, substr( cBuffer, n + 1, n1 - n - 1 ) ) - ENDIF - ENDIF - NEXT - ENDIF - IF ! empty( scr_ ) - B_MSG "Select a Screen" CHOOSE scr_ RESTORE SHADOW CENTER INTO nSel - IF nSel > 0 - ::cScreen := scr_[ nSel ] - ENDIF - ENDIF - ENDIF - - IF ! empty( cBuffer) - ::obj_:= {} - ::scrBuildFromBuffer( cBuffer, ::cScreen ) - ::xRefresh := OBJ_REFRESH_ALL - ::lEdited := .f. - ::aUndo := {} - ENDIF - - ::cScreen := iif( empty( ::cScreen ), "", ::cScreen ) - - RETURN Self - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrBuildFromBuffer( cBuffer, cScreen ) - LOCAL cTokenB := "/* HB_SCREEN_BEGINS <" + cScreen + "> */" - LOCAL cTokenE := "/* HB_SCREEN_ENDS <" + cScreen + "> */" - LOCAL cCode, aCode, cLine, aAttr, aMatch, aMatches, nStart, nEnd, nLen, s, n, o_, a_ - - IF ( nStart := at( cTokenB, cBuffer ) ) > 0 - IF ( nEnd := at( cTokenE, cBuffer ) ) > 0 - cCode := substr( cBuffer, nStart + Len( cTokenB ), nEnd - nStart - 1 - len( cTokenB ) ) - aCode := hb_aTokens( strtran( cCode, chr( 13 ), chr( 10 ) ), chr( 10 ) ) - IF ! empty( aCode ) - aAttr := {} - FOR EACH cLine IN aCode - cLine := alltrim( cLine ) - IF ! empty( cLine ) - IF left( cLine, 3 ) == "///" - aAttr := hb_aTokens( substr( cLine, 5 ), " " ) - aSize( aAttr, 6 ) - DEFAULT aAttr[ 6 ] TO "" - aAttr[ 1 ] := val( aAttr[ 1 ] ) - aAttr[ 2 ] := val( aAttr[ 2 ] ) - aAttr[ 3 ] := aAttr[ 3 ] - aAttr[ 4 ] := val( aAttr[ 4 ] ) - aAttr[ 5 ] := val( aAttr[ 5 ] ) - aAttr[ 6 ] := strtran( aAttr[ 6 ], "~", " " ) - - ELSE - SWITCH aAttr[ 2 ] - - CASE OBJ_O_BOX - aMatches := hb_regExAll( "^@|\bBOX\b|\bCOLOR\b", cLine, .f., .f., 0, 1, .f. ) - IF ! empty( nLen := Len( aMatches ) ) - o_:= ::scrObjBlank() - // - o_[ OBJ_TYPE ] := OBJ_O_BOX - o_[ OBJ_F_LEN ] := 9 - o_[ OBJ_MDL_F_TYPE ] := 62 - - FOR EACH aMatch IN aMatches - SWITCH alltrim( upper( aMatch[ 1 ] ) ) - CASE "@" - n := aMatches[ aMatch:__enumIndex() + 1, 2 ] - s := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) ) - s := strtran( s, " ,", "," ) - s := strtran( s, ", ", "," ) - a_:= hb_aTokens( s, "," ) - - o_[ OBJ_ROW ] := val( alltrim( a_[ 1 ] ) ) + 1 - o_[ OBJ_COL ] := val( alltrim( a_[ 2 ] ) ) + 1 - o_[ OBJ_TO_ROW ] := val( alltrim( a_[ 3 ] ) ) + 1 - o_[ OBJ_TO_COL ] := val( alltrim( a_[ 4 ] ) ) + 1 - - EXIT - CASE "BOX" - IF nLen > 2 - n := aMatches[ aMatch:__enumIndex() + 1, 2 ] - s := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) ) - ELSE - s := substr( cLine, aMatch[ 3 ] + 1 ) - ENDIF - s := alltrim( s ) - s := strtran( s, '"', "" ) - o_[ OBJ_BOX_SHAPE ] := substr( s, 1, 8 ) - o_[ OBJ_PATTERN ] := iif( Len( s ) == 9, "FILLED", "CLEAR" ) - - EXIT - CASE "COLOR" - o_[ OBJ_COLOR ] := alltrim( substr( cLine, aMatch[ 3 ] + 1 ) ) - - EXIT - ENDSWITCH - NEXT - aadd( ::obj_, o_ ) - ENDIF - EXIT - - CASE OBJ_O_TEXT - aMatches := hb_regExAll( "^@|\bSAY\b|\bCOLOR\b", cLine, .f., .f., 0, 1, .f. ) - IF ! empty( nLen := Len( aMatches ) ) - o_:= ::scrObjBlank() - // - o_[ OBJ_TYPE ] := OBJ_O_TEXT - o_[ OBJ_F_TYPE ] := "C" - - FOR EACH aMatch IN aMatches - SWITCH alltrim( upper( aMatch[ 1 ] ) ) - CASE "@" - n := aMatches[ aMatch:__enumIndex() + 1, 2 ] - s := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) ) - s := strtran( s, ", ", "," ) - a_:= hb_aTokens( s, "," ) - - o_[ OBJ_ROW ] := val( alltrim( a_[ 1 ] ) ) + 1 - o_[ OBJ_COL ] := val( alltrim( a_[ 2 ] ) ) + 1 - - EXIT - CASE "SAY" - IF nLen > 2 - n := aMatches[ aMatch:__enumIndex() + 1, 2 ] - s := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) ) - ELSE - s := substr( cLine, aMatch[ 3 ] + 1 ) - ENDIF - IF ! empty( aAttr[ 6 ] ) - o_[ OBJ_TEXT ] := aAttr[ 6 ] - o_[ OBJ_ID ] := s - s := aAttr[ 6 ] - ELSE - s := alltrim( s ) - s := substr( s, 2, Len( s ) - 2 ) - o_[ OBJ_TEXT ] := s - ENDIF - o_[ OBJ_TO_ROW ] := o_[ OBJ_ROW ] - o_[ OBJ_TO_COL ] := o_[ OBJ_COL ] + Len( s ) - 1 - o_[ OBJ_F_LEN ] := Len( s ) - - EXIT - CASE "COLOR" - o_[ OBJ_COLOR ] := alltrim( substr( cLine, aMatch[ 3 ] + 1 ) ) - - ENDSWITCH - NEXT - - aadd( ::obj_, o_ ) - ENDIF - EXIT - - CASE OBJ_O_FIELD - aMatches := hb_regExAll( "^@|\bGET\b|\bPICTURE\b|\bCOLOR\b|\bWHEN\b|\bVALID\b", cLine, .f., .f., 0, 1, .f. ) - IF ! empty( nLen := Len( aMatches ) ) - o_:= ::scrObjBlank() - // - o_[ OBJ_TYPE ] := OBJ_O_FIELD - - FOR EACH aMatch IN aMatches - SWITCH alltrim( upper( aMatch[ 1 ] ) ) - - CASE "@" - n := aMatches[ aMatch:__enumIndex() + 1, 2 ] - s := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) ) - s := strtran( s, ", ", "," ) - a_:= hb_aTokens( s, "," ) - - o_[ OBJ_ROW ] := val( alltrim( a_[ 1 ] ) ) + 1 - o_[ OBJ_COL ] := val( alltrim( a_[ 2 ] ) ) + 1 - o_[ OBJ_TO_ROW ] := o_[ OBJ_ROW ] - o_[ OBJ_TO_COL ] := o_[ OBJ_COL ] + aAttr[ 4 ] - 1 - o_[ OBJ_F_TYPE ] := aAttr[ 3 ] - o_[ OBJ_F_LEN ] := aAttr[ 4 ] - o_[ OBJ_F_DEC ] := aAttr[ 5 ] - - EXIT - - CASE "GET" - IF nLen > 2 - n := aMatches[ aMatch:__enumIndex() + 1, 2 ] - s := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) ) - ELSE - s := substr( cLine, aMatch[ 3 ] + 1 ) - ENDIF - s := alltrim( s ) - o_[ OBJ_ID ] := s - o_[ OBJ_EQN ] := padc( s, aAttr[ 4 ] ) - EXIT - - CASE "PICTURE" - IF aMatch:__enumIndex() < Len( aMatches ) - n := aMatches[ aMatch:__enumIndex() + 1, 2 ] - o_[ OBJ_F_PIC ] := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) ) - ELSE - o_[ OBJ_F_PIC ] := alltrim( substr( cLine, aMatch[ 3 ] + 1 ) ) - ENDIF - EXIT - - CASE "COLOR" - IF aMatch:__enumIndex() < Len( aMatches ) - n := aMatches[ aMatch:__enumIndex() + 1, 2 ] - o_[ OBJ_COLOR ] := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) ) - ELSE - o_[ OBJ_COLOR ] := alltrim( substr( cLine, aMatch[ 3 ] + 1 ) ) - ENDIF - EXIT - - CASE "WHEN" - IF aMatch:__enumIndex() < Len( aMatches ) - n := aMatches[ aMatch:__enumIndex() + 1, 2 ] - o_[ OBJ_WHEN ] := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) ) - ELSE - o_[ OBJ_WHEN ] := alltrim( substr( cLine, aMatch[ 3 ] + 1 ) ) - ENDIF - EXIT - - CASE "VALID" - IF aMatch:__enumIndex() < Len( aMatches ) - n := aMatches[ aMatch:__enumIndex() + 1, 2 ] - o_[ OBJ_VALID ] := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) ) - ELSE - o_[ OBJ_VALID ] := alltrim( substr( cLine, aMatch[ 3 ] + 1 ) ) - ENDIF - EXIT - - ENDSWITCH - - NEXT - - aadd( ::obj_, o_ ) - ENDIF - EXIT - - ENDSWITCH - aAttr := {} - ENDIF - ENDIF - NEXT - ENDIF - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD hbCUIEditor:scrSave( lAsk ) - LOCAL s, o_, cSource, cScreen, nLenSay, nLenPic, nLenClr, nLenWhn, nLenVld, nLenGet - local prg_:={} - - DEFAULT lAsk TO .f. - - IF empty( ::cSource ) .OR. lAsk - cSource := trim( VouchGetSome( "Source (.PRG) File", pad( ::cSource, 40 ) ) ) - IF empty( cSource ) - RETURN NIL - ENDIF - ::cSource := trim( cSource ) - ENDIF - - IF empty( ::cScreen ) .OR. lAsk .OR. ::cScreen == "Untitled" - cScreen := alltrim( VouchGetSome( "Screen Identity?", pad( ::cScreen, 13 ) ) ) - IF empty( cScreen ) - cScreen := dtos( date() ) + left( time(), 5 ) - ENDIF - ::cScreen := cScreen - ENDIF - - ::scrOrdObj() - - nLenSay := nLenPic := nLenClr := nLenWhn := nLenVld := nLenGet := 0 - - aeval( ::obj_, {|e_| iif( e_[ OBJ_TYPE ] == OBJ_O_FIELD, nLenGet := max( Len( e_[ OBJ_ID ] ), nLenGet ), ; - iif( e_[ OBJ_TYPE ] == OBJ_O_TEXT , nLenSay := max( Len( e_[ OBJ_TEXT ] ), nLenSay ), NIL ) ) } ) - nLenSay := iif( empty( nLenSay ), 0, nLenSay + 2 ) - - aeval( ::obj_, {|e_| nLenClr := max( Len( e_[ OBJ_COLOR ] ), nLenClr ) } ) - aeval( ::obj_, {|e_| nLenPic := max( Len( e_[ OBJ_F_PIC ] ), nLenPic ) } ) - aeval( ::obj_, {|e_| nLenWhn := max( Len( e_[ OBJ_WHEN ] ), nLenWhn ) } ) - aeval( ::obj_, {|e_| nLenVld := max( Len( e_[ OBJ_VALID ] ), nLenVld ) } ) - - aadd( prg_, "/* HB_SCREEN_BEGINS <" + ::cScreen + "> */" ) - aadd( prg_, " " ) - FOR EACH o_ IN ::obj_ - IF ! empty( o_[ OBJ_TYPE ] ) - - aadd( prg_, "/// " + hb_ntos( o_:__enumIndex() ) + " " + hb_ntos( o_[ OBJ_TYPE ] ) + " " + ; - o_[ OBJ_F_TYPE ] + " " + N_TRIM( o_[ OBJ_F_LEN ] ) + " " + N_TRIM( o_[ OBJ_F_DEC ] ) + ; - iif( o_[ OBJ_TYPE ] == OBJ_O_TEXT, " " + strtran( o_[ OBJ_ID ], " ", "~" ), "" ) ) - - s := pad( "@ " + N_TRIM( o_[ OBJ_ROW ] - 1 ) + ", " + N_TRIM( o_[ OBJ_COL ] - 1 ), 10 ) + " " - - SWITCH o_[ OBJ_TYPE ] - - CASE OBJ_O_FIELD - s += "GET " + pad( o_[ OBJ_ID ], nLenGet ) + " " - IF !empty( o_[ OBJ_F_PIC ] ) - s += "PICTURE " + pad( o_[ OBJ_F_PIC ], nLenPic ) + " " - ELSE - IF nLenPic > 0 - s += space( 8 + nLenPic + 1 ) - ENDIF - ENDIF - IF !empty( o_[ OBJ_COLOR ] ) - s += "COLOR " + pad( o_[ OBJ_COLOR ], nLenClr ) + " " - ELSE - IF nLenClr > 0 - s += space( 6 + nLenClr + 1 ) - ENDIF - ENDIF - IF !empty( o_[ OBJ_WHEN ] ) - s += "WHEN " + pad( o_[ OBJ_WHEN ], nLenWhn ) + " " - ELSE - IF nLenWhn > 0 - s += space( 5 + nLenWhn + 1 ) - ENDIF - ENDIF - IF !empty( o_[ OBJ_VALID ] ) - s += "VALID " + pad( o_[ OBJ_VALID ], nLenVld ) + " " - ELSE - s += space( 6 + nLenVld ) - ENDIF - EXIT - - CASE OBJ_O_BOX - s += ", " + N_TRIM( o_[ OBJ_TO_ROW ] - 1 ) + ", " + N_TRIM( o_[ OBJ_TO_COL ] - 1 ) + " BOX " + ; - '"' + o_[ OBJ_BOX_SHAPE ] + iif( o_[ OBJ_PATTERN ] == "CLEAR", "", " " ) + '"' + " " - IF ! empty( o_[ OBJ_COLOR ] ) - s += "COLOR " + o_[ OBJ_COLOR ] - ENDIF - EXIT - - CASE OBJ_O_TEXT - IF ! empty( o_[ OBJ_ID ] ) - s += "SAY " + o_[ OBJ_ID ] + " " - ELSE - s += "SAY " + pad( '"' + o_[ OBJ_TEXT ] + '"', nLenSay ) + " " - ENDIF - IF ! empty( o_[ OBJ_COLOR ] ) - s += "COLOR " + o_[ OBJ_COLOR ] - ENDIF - EXIT - - ENDSWITCH - - aadd( prg_, s ) - ENDIF - NEXT - aadd( prg_, " " ) - aadd( prg_, "/* HB_SCREEN_ENDS <" + ::cScreen + "> */" ) - - IF !empty( prg_ ) - ::scrUpdateSource( prg_ ) - ENDIF - - RETURN Self - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrBuildFunction( prg_ ) - LOCAL s - - s := hb_eol() - s += "FUNCTION hbcui_" + lower( strtran( ::cScreen, " ", "_" ) ) + "()" + hb_eol() - s += hb_eol() - s += ::scrBuildSource( prg_, 3 ) + hb_eol() - s += hb_eol() - s += " RETURN NIL" - s += hb_eol() - - RETURN s - -/*----------------------------------------------------------------------*/ - -METHOD hbCUIEditor:scrBuildSource( prg_, nIndent ) - LOCAL cP, s := "" - - cP := space( nIndent ) - aeval( prg_, {|e| s += cP + e + hb_eol() } ) - s := substr( s, 1, Len( s ) - len( hb_eol() ) ) - - RETURN s - -/*----------------------------------------------------------------------*/ - -METHOD hbCUIEditor:scrUpdateSource( prg_ ) - LOCAL cBuffer, cTokenB, cTokenE, nStart, nEnd, s, nIndent, cTmp - - IF hb_fileExists( ::cSource ) - cBuffer := hb_memoread( ::cSource ) - cTokenB := "/* HB_SCREEN_BEGINS <" + ::cScreen + "> */" - cTokenE := "/* HB_SCREEN_ENDS <" + ::cScreen + "> */" - - IF ( nStart := at( cTokenB, cBuffer ) ) > 0 - nEnd := at( cTokenE, cBuffer ) - IF nEnd == 0 - nEnd := nStart + Len( cTokenB ) - ELSE - nEnd += Len( cTokenE ) - ENDIF - cTmp := substr( cBuffer, 1, nStart - 1 ) - nIndent := nStart - hb_rat( hb_eol(), cTmp ) - Len( hb_eol() ) - - s := ::scrBuildSource( prg_, nIndent ) - s := substr( cBuffer, 1, nStart - nIndent - 1 ) + s + substr( cBuffer, nEnd ) - - ELSE - s := ::scrBuildFunction( prg_ ) - s := cBuffer + hb_eol() + s - - ENDIF - - ELSE - s := ::scrBuildFunction( prg_) - - ENDIF - - hb_memowrit( ::cSource, s ) - ::lEdited := .f. - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD hbCUIEditor:scrConfig() - LOCAL s, n - - ::sectors_ := {} - ::nDesign := 1 - - ::nTop := 1 - ::nLeft := 0 - ::nBottom := maxrow()-2 - ::nRight := maxcol() - - ::nMode := 0 - ::nRowCur := ::nTop - ::nColCur := ::nLeft - ::nRowRep := 1 - ::nColRep := 1 - ::nRowDis := ::nTop - 1 - ::nColDis := ::nLeft - 1 - - ::nRowMenu := 0 - ::nRowRuler := 0 - ::nRowStatus := maxrow() - 1 - ::nColStatus := 0 - - ::nColsMax := 400 - ::nRowPrev := ::nTop - ::nColPrev := ::nLeft - ::nRowsMax := 200 - - ::cClrStatus := "W+/BG" - ::cClrText := 'W+/B' - ::cClrHilite := 'GR+/BG' - ::cClrWindow := 'W+/BG' - ::cClrRuler := "N/W" - ::cClrOverall := "N/W" - ::cClrPrev := 'B/W' - ::cClrSelect := 'GR+/N' - - ::nObjHilite := 0 - ::nObjSelected := 0 - - s := '.' - FOR n := 1 TO 40 - s += '.......' + strtran( str( n,3 ), ' ', '.' ) - NEXT - ::cRuler := s - - ::cDrawFill := replicate( chr( 176 ), 9 ) - ::aObjId := { 'Bitmap','Line','Text','Field','Expression','BitMap' } - ::xRefresh := OBJ_REFRESH_ALL - ::nObjCopied := 0 - ::aProperty := {} - ::lGraphics := .f. - ::aTextBlock := {} - ::aFields := {} - ::nLastKey := 0 - - RETURN Self - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrReConfig() - - ::nMode := 0 - - ::nTop := 1 - ::nLeft := 0 - ::nBottom := maxrow() - 2 - ::nRight := maxcol() - - ::nRowCur := ::nTop - ::nColCur := ::nLeft - ::nRowRep := 1 - ::nColRep := 1 - ::nRowDis := ::nTop - 1 - ::nColDis := ::nLeft - 1 - - ::nRowMenu := 0 - ::nRowRuler := 0 - ::nRowStatus := maxrow() - 1 - ::nColStatus := 0 - - ::nRowPrev := ::nTop - ::nColPrev := ::nLeft - ::nColsMax := 400 - ::nRowsMax := 200 - - RETURN NIL - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrUpdateUndo() - - aadd( ::aUndo, aclone( ::obj_ ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD hbCUIEditor:scrUndo() - LOCAL nLast - - IF ! empty( nLast := Len( ::aUndo ) ) - ::obj_:= aclone( ::aUndo[ nLast ] ) - hb_adel( ::aUndo, nLast, .t. ) - ::xRefresh := OBJ_REFRESH_ALL - ENDIF - - RETURN Self - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:operate() - LOCAL nObj, nToCol, i, nOff, qApp - LOCAL grf_:= { 43,45,46,48,49,50,51,52,53,54,55,56,57 } - - readinsert( .t. ) - - ::scrDisplay() - ::scrMove() - ::scrStatus() - - keyboard( chr( K_UP ) ) - - qApp := QApplication() - DO WHILE .t. - ::nRowPrev := ::nRowCur - ::nColPrev := ::nColCur - ::xRefresh := OBJ_REFRESH_NIL - - setCursor( .t. ) - setCursor( iif( readInsert(), 2, 1 ) ) - - DO WHILE .t. - ::nLastKey := inkey( 0, INKEY_ALL + HB_INKEY_GTEVENT ) - qApp:processEvents() - IF ::nLastKey != 0 .OR. ::nLastKey != K_MOUSEMOVE - EXIT - ENDIF - ENDDO - - DO CASE - CASE ::lGraphics .AND. ascan( grf_,::nLastKey ) > 0 - //processkey() - CASE ::scrMouse() -#IF 0 - CASE ::nLastKey == K_ALT_F6 - graphChar() - ::lGraphics := ! ::lGraphics - ::xRefresh := OBJ_REFRESH_ALL -#ENDIF - /* Save Report */ - CASE ::nLastKey == K_ESC - IF alert( "Do you want to exit ?", { "Yes","No" } ) == 1 - IF ::lEdited - IF alert( "Screen has been edited, do you want to save ?", { "Yes","No" } ) == 1 - ::scrSave() - ENDIF - ENDIF - EXIT - ENDIF - CASE ::nLastKey == K_CTRL_ENTER - IF ::lEdited - ::scrSave() - ENDIF - EXIT - CASE ::nLastKey == K_ALT_P - ::scrPreview() - CASE ::nLastKey == K_ALT_L - ::scrLoad( .t. ) - CASE ::nLastKey == K_ALT_S - ::scrSave( .t. ) - CASE ::nLastKey == K_ALT_G - ::scrOrdGets() - CASE ::nLastKey == K_ALT_Z - ::scrUndo() - - CASE ::nLastKey == K_RIGHT - ::scrMovRgt() - CASE ::nLastKey == K_LEFT - ::scrMovLft() - CASE ::nLastKey == K_UP - ::scrMovUp() - CASE ::nLastKey == K_DOWN - ::scrMovDn() - CASE ::nLastKey == K_MWBACKWARD - ::scrMovDn() - CASE ::nLastKey == K_MWFORWARD - ::scrMovUp() - CASE ::nLastKey == K_HOME - ::nColRep := 1 - ::nColCur := ::nLeft - ::nColDis := ::nLeft - 1 - ::xRefresh := OBJ_REFRESH_ALL - CASE ::nLastKey == K_END - nToCol := 0 - ascan( ::obj_, {|e_| iif( e_[ OBJ_ROW ] == ::nRowRep, nToCol := max( nToCol, e_[ OBJ_TO_COL ] ), NIL ) } ) - IF nToCol > 0 - IF nToCol < ::nColRep - nOff := ::nColRep - nToCol - 1 - FOR i := 1 TO nOff - ::scrMovLft() - NEXT - ELSEIF nToCol > ::nColRep - FOR i := ::nColRep TO nToCol - ::scrMovRgt() - NEXT - ENDIF - ENDIF - ::xRefresh := OBJ_REFRESH_ALL - CASE ::nLastKey == K_PGUP - nOff := min( ::nRowRep - 1, ::nBottom - ::nTop + 1 ) - FOR i := 1 TO nOff - ::scrMovUp() - NEXT - ::xRefresh := OBJ_REFRESH_ALL - CASE ::nLastKey == K_PGDN - nOff := min( ::nRowsMax - ::nRowRep, ::nBottom - ::nTop + 1 ) - FOR i := 1 TO nOff - ::scrMovDn() - NEXT - ::xRefresh := OBJ_REFRESH_ALL - - CASE ::nLastKey == K_INS - readInsert( !readInsert() ) - setcursor( iif( readInsert(), 2, 1 ) ) - - CASE ::nLastKey == K_ENTER - IF ::nMode == OBJ_MODE_SELECT .AND. ::nObjSelected > 0 - ::nMode := OBJ_MODE_IDLE - ::xRefresh := OBJ_REFRESH_LINE - ::nObjSelected := 0 - ::scrMsg() - ENDIF - - CASE VouchInRange( ::nLastKey, K_SPACE, 254 ) .AND. ::nMode != OBJ_MODE_SELECT - ::scrAddTxt( 1 ) - - CASE ::nLastKey == K_F1 // Help - help() - CASE ::nLastKey == K_F7 // Copy - ::scrObjCopy() - CASE ::nLastKey == K_F8 // Paste - ::scrObjPas() - CASE ::nLastKey == K_F9 // Box - ::scrAddBox() - CASE ::nLastKey == K_F10 // Fields - ::scrAddFld() - - CASE ::nLastKey == K_DEL - IF ::nMode == OBJ_MODE_SELECT .AND. ::nObjSelected > 0 - ::scrObjDel( ::nObjSelected ) - ::nMode := 0 - ::xRefresh := OBJ_REFRESH_ALL - ::scrMsg() - ELSE - IF ! empty( ::aTextBlock ) - ::scrTextDel() - ::scrOrdObj() - ::nMode := 0 - ::nObjSelected := 0 - ::nObjHilite := 0 - ::xRefresh := OBJ_REFRESH_ALL - ELSEIF ::scrIsTxt() - ::scrAddTxt( 2 ) - ELSEIF ::nObjHilite > 0 - ::scrObjDel( ::nObjHilite ) - ::nMode := 0 - ::nObjHilite := 0 - ::xRefresh := OBJ_REFRESH_ALL - ENDIF - ENDIF - CASE ::nLastKey == K_BS - IF ::nMode != OBJ_MODE_SELECT - IF ::scrMovLft() - IF ::scrIsTxt() - ::scrAddTxt( 3 ) - ENDIF - ENDIF - ENDIF - - CASE ::nLastKey == K_ALT_N - ::scrAddLine() - ::lEdited := .t. - - CASE ::nLastKey == K_ALT_O - ::scrDelLine() - ::lEdited := .t. - - CASE ::nLastKey == K_CTRL_F6 // Selection of Block - ::scrTextBlock() - CASE ::nLastKey == K_CTRL_F7 // Move, Copy - ::scrTextMove( 1 ) - CASE ::nLastKey == K_CTRL_F8 // Move, Cut AND Paste - ::scrTextMove( 0 ) - - CASE ::nLastKey == HB_K_RESIZE - ::scrReConfig() - ::scrDisplay() - ::scrMove() - ::scrStatus() - - ENDCASE - - IF ::nMode == OBJ_MODE_SELECT - ::xRefresh := iif( ::xRefresh == OBJ_REFRESH_NIL, OBJ_REFRESH_LINE, ::xRefresh ) - ::scrUpdObjRC() - ENDIF - - // Check on which OBJECT cursor is placed - // - nObj := ::scrChkObj() - - IF nObj > 0 .and. ::nLastKey == K_F4 - ::scrGetProperty( nObj ) - ENDIF - - IF nObj > 0 .AND. ::nMode != OBJ_MODE_SELECT - ::xRefresh := iif( ::xRefresh == OBJ_REFRESH_NIL, OBJ_REFRESH_LINE, ::xRefresh ) - ::nObjHilite := nObj - ::scrOnFirstCol( nObj, { OBJ_O_FIELD, OBJ_O_EXP } ) - - ELSEIF ! empty( ::nObjHilite ) - ::xRefresh := iif( ::xRefresh == OBJ_REFRESH_NIL, OBJ_REFRESH_LINE, ::xRefresh ) - ::nObjHilite := 0 - - ENDIF - - IF nObj > 0 .AND. ::nLastKey == K_F5 - SWITCH ::obj_[ nObj, OBJ_TYPE ] - CASE OBJ_O_FIELD - ::scrAddFld( nObj ) ; EXIT - CASE OBJ_O_TEXT - ::scrGetProperty( nObj ); EXIT - CASE OBJ_O_BOX - ::scrAddBox( nObj ) ; EXIT - ENDSWITCH - ENDIF - - // Is the OBJECT selected - IF nObj > 0 .AND. ::nLastKey == K_F6 .AND. ::objIsBox( nObj ) - ::scrUpdateUndo() - - ::nMode := OBJ_MODE_SELECT - ::nObjSelected := nObj - ::scrOnFirstCol( nObj, { OBJ_O_BOX } ) - ::scrMsg( "BOX is selected: Arrow-keys to move, ENTER to finished, DEL to delete" ) - ::lEdited := .t. - - ELSEIF nObj > 0 .AND. ::nLastKey == K_F6 .AND. ! ::objIsBox( nObj ) - ::scrUpdateUndo() - - ::nMode := OBJ_MODE_SELECT - ::nObjSelected := nObj - ::scrOnFirstCol( nObj, { OBJ_O_TEXT } ) - ::scrMsg( iif( ::objIsTxt( nObj ), "TEXT", "FIELD" ) + " is selected: Arrow-keys to move, ENTER to finished, DEL to delete" ) - ::lEdited := .t. - - ENDIF - - IF ::xRefresh == OBJ_REFRESH_ALL - ::scrMove() - ELSEIF ::xRefresh == OBJ_REFRESH_LINE - IF ::scrIsBoxIn() - ::scrMove() - ELSE - ::scrMoveLine() - ENDIF - ENDIF - - ::scrStatus() - - IF ::lGraphics - //grfRest() - ENDIF - ENDDO - - ::scrOrdObj() - - RETURN Self - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrDisplay() - - dispbegin() - setcursor( 0 ) - setColor( ::cClrOverall ) - cls - - @ ::nRowRuler, ::nLeft SAY substr( ::cRuler, 1, ::nRight - ::nLeft + 1 ) COLOR ::cClrRuler - - ::scrMsg() - - setcolor( ::cClrWindow ) - setCursor( 2 ) - dispend() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD hbCUIEditor:scrMove() - LOCAL i - LOCAL crs := setCursor( 0 ) - LOCAL nOff, cText, nRow, nCol, cColor - - dispBegin() - - dispBox( ::nTop ,; - ::nLeft ,; - ::nBottom ,; - ::nRight ,; - ::cDrawFill ,; - ::cClrPrev ) - - FOR i := 1 TO Len( ::obj_ ) - IF ::obj_[ i,OBJ_ROW ] + ::nRowDis <= ::nBottom .AND. ; - ::obj_[ i,OBJ_COL ] + ::nColDis <= ::nRight - - nOff := ::obj_[ i,OBJ_COL ] + ::nColDis - nRow := ::obj_[ i,OBJ_ROW ] + ::nRowDis - nCol := ::obj_[ i,OBJ_COL ] + ::nColDis - - IF nOff < 0 - nCol := 0 - ENDIF - - IF ::objIsBox( i ) - cColor := iif( ::nObjSelected == i, ::cClrSelect,; - iif( ::nObjHilite == i, ::cClrHilite,; - 'W/B' ) ) - DO CASE - CASE VouchInArray( ::obj_[ i,OBJ_MDL_F_TYPE ], { 61,62,63,67,68 } ) - dispBox( ::obj_[ i,OBJ_ROW ] + ::nRowDis,; - ::obj_[ i,OBJ_COL ] + ::nColDis,; - ::obj_[ i,OBJ_TO_ROW ] + ::nRowDis,; - ::obj_[ i,OBJ_TO_COL ] + ::nColDis,; - substr( ::obj_[ i, OBJ_BOX_SHAPE ], 1, 8 ),; - cColor ) - - CASE VouchInArray( ::obj_[ i, OBJ_MDL_F_TYPE ], { 64,65 } ) // Line - @ ::obj_[ i, OBJ_ROW ] + ::nRowDis,; - ::obj_[ i, OBJ_COL ] + ::nColDis ; - TO ::obj_[ i, OBJ_TO_ROW ] + ::nRowDis,; - ::obj_[ i, OBJ_TO_COL ] + ::nColDis ; - COLOR cColor - - ENDCASE - ENDIF - - IF ::objIsFld( i ) - cText := ::obj_[ i,OBJ_TEXT ] - cColor := iif( ::nObjSelected == i, ::cClrSelect,; - iif( ::nObjHilite == i, ::nObjHilite,; - 'W+/W' ) ) - IF nOff < 0 - cText := substr( ::obj_[ i,OBJ_TEXT ], abs( nOff ) + 1 ) - ENDIF - @ nRow, nCol SAY cText COLOR cColor - ENDIF - - IF ::objIsTxt( i ) - cText := ::obj_[ i,OBJ_EQN ] - cColor := iif( ::nObjSelected == i, ::cClrSelect,; - iif( empty( ::obj_[ i, OBJ_COLOR ] ), ::cClrText,; - 'W/B' ) ) - IF nOff < 0 - cText := substr( ::obj_[ i, OBJ_EQN ], abs( nOff ) + 1 ) - ENDIF - - @ nRow, nCol SAY cText COLOR cColor - ENDIF - - ELSEIF ( ::obj_[ i, OBJ_ROW ] + ::nRowDis > ::nBottom ) - - ENDIF - NEXT - - ::ScrDispSelected() - dispEnd() - setcursor( crs ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD hbCUIEditor:scrMoveLine() - LOCAL i,crs, nRow, nCol, cText, nOff, cColor - - crs := setCursor( 0 ) - - IF ::nRowPrev == ::nRowCur - dispbegin() - dispBox( ::nRowCur ,; - ::nLeft ,; - ::nRowCur ,; - ::nRight ,; - ::cDrawFill ,; - ::cClrPrev ) - - FOR i := 1 TO Len( ::obj_ ) - nOff := ::obj_[ i, OBJ_COL ] + ::nColDis - nRow := ::obj_[ i, OBJ_ROW ] + ::nRowDis - nCol := nOff - - IF ::objIsBox( i ) - DO CASE - CASE VouchInArray( ::obj_[ i, OBJ_MDL_F_TYPE ], {64,65} ) // Lines V.H - @ ::obj_[ i, OBJ_ROW ] + ::nRowDis,; - ::obj_[ i, OBJ_COL ] + ::nColDis ; - TO ::obj_[ i, OBJ_TO_ROW ] + ::nRowDis,; - ::obj_[ i, OBJ_TO_COL ] + ::nColDis ; - COLOR iif( ::nObjHilite == i, ::nObjHilite,; - 'W/B' ) - ENDCASE - ENDIF - - IF ::obj_[ i, OBJ_ROW ] == ::nRowRep - IF ::objIsFld( i ) - cText := ::obj_[ i,OBJ_TEXT ] - cColor := iif( ::nObjSelected == i, ::cClrSelect,; - iif( ::nObjHilite == i, ::nObjHilite,; - 'W+/W' ) ) - @ nRow, nCol SAY cText COLOR cColor - ENDIF - - IF ::objIsTxt( i ) - cText := ::obj_[ i, OBJ_EQN ] - cColor := iif( ::nObjSelected == i, ::cClrSelect,; - iif( empty( ::obj_[ i, OBJ_COLOR ] ), ::cClrText,; - 'W/B' ) ) - @ nRow, nCol SAY cText COLOR cColor - ENDIF - ENDIF - NEXT - - ::scrDispSelected() - - dispEnd() - ELSE - ::scrMove() - - ENDIF - - setCursor( crs ) - RETURN NIL - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrDispSelected() - LOCAL i,j,nCol,nRow - - IF ! empty( ::aTextBlock ) - DispBegin() - - FOR i := ::aTextBlock[ 1 ] TO ::aTextBlock[ 3 ] - IF ( nRow := i + ::nRowDis ) <= ::nBottom - FOR j := ::aTextBlock[ 2 ] TO ::aTextBlock[ 4 ] - IF ( nCol := j + ::nColDis ) <= ::nRight - @ nRow, nCol SAY ::scrGetChar( i, j ) COLOR 'GR+/R' - ENDIF - NEXT - ENDIF - NEXT - - DispEnd() - ENDIF - RETURN NIL - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrDispGhost( gst_ ) - LOCAL i,j,nRow,nCol - - DispBegin() - FOR i := gst_[ 1 ] TO gst_[ 3 ] - IF ( nRow := i + ::nRowDis ) <= ::nBottom - FOR j := gst_[ 2 ] TO gst_[ 4 ] - IF ( nCol := j + ::nColDis ) <= ::nRight - @ nRow, nCol SAY THE_FILL COLOR 'GR+/R' - ENDIF - NEXT - ENDIF - NEXT - DispEnd() - - RETURN NIL - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrStatus() - LOCAL s, typ_, objId, cS - - cS := iif( Len( ::cSource ) <= 20, ::cSource, substr( ::cSource, 1, 3 ) + ".." + right( ::cSource, 15 ) ) - - dispbegin() - s := pad( cS, 20 ) + CHR_PIPE - - s += pad( ::cScreen, 13 ) +; - CHR_PIPE+; - ' R:'+; - str( ::nRowRep - 1, 3 ) +; - ' C:'+; - str( ::nColRep - 1, 3 ) +; - CHR_PIPE +; - iif( readInsert(), 'Ins', ' ' ) +; - CHR_PIPE - - objId := '' - IF ::nObjHilite > 0 - objId := ::aObjId[ ::obj_[ ::nObjHilite, OBJ_TYPE ] ] - IF ::objIsBox( ::nObjHilite ) - typ_:= { 'Bitmap', 'Frame', 'Ellipse', 'Line (H)', 'Line (V)', 'Grid', 'BarCode', 'Text Box' } - objId := typ_[ ::obj_[ ::nObjHilite, OBJ_MDL_F_TYPE ] - 60 ] - ENDIF - - ELSEIF ::nObjSelected > 0 - objId := ::aObjId[ ::obj_[ ::nObjSelected, OBJ_TYPE ] ] - IF ::objIsBox( ::nObjSelected ) - typ_:= {'Bitmap','Frame','Ellipse','Line (H)','Line (V)','Grid','BarCode','Text Box'} - objId := typ_[ ::obj_[ ::nObjSelected, OBJ_MDL_F_TYPE ] - 60 ] - ENDIF - ENDIF - - s += pad( trim( objId ), 10 ) + CHR_PIPE - s += "U:" + hb_ntos( Len( ::aUndo ) ) - - @ ::nRowStatus, ::nColStatus SAY pad( s, maxcol() + 1 ) COLOR ::cClrStatus - - /* Ruler */ - s := substr( ::cRuler, max( 1, ::nColRep - ::nColCur + ::nLeft ), ::nRight - ::nLeft + 1 ) - DispBox( ::nTop - 1, 0, ::nTop - 1, maxcol(), ' ', ::cClrOverall ) - @ ::nRowRuler, ::nLeft SAY s COLOR ::cClrRuler - @ ::nRowRuler, ::nColCur SAY substr( s, ::nColCur - ::nLeft + 1, 1 ) COLOR 'GR+/BG' - - DevPos( ::nRowCur, ::nColCur ) - - ::nRowPrev := ::nRowCur - ::nColPrev := ::nColCur - - dispend() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD hbCUIEditor:scrMouse() - LOCAL nmRow, nmCol - LOCAL nEvent := ::nLastKey - LOCAL aEvents_:= { K_LBUTTONUP, K_LBUTTONDOWN, K_MMLEFTDOWN } - - STATIC nLastCol := 0 - STATIC nLastRow := 0 - STATIC lAnchored := .f. - STATIC nCursor - - IF ! VouchInArray( ::nLastKey, aEvents_ ) - RETURN .f. - ENDIF - - nmRow := mRow() - nmCol := mCol() - - IF nmRow < ::nTop .OR. nmRow > ::nBottom .OR. nmCol < ::nLeft .OR. nmCol > ::nRight - RETURN .f. - ENDIF - - ::scrToMouse( nmRow, nmCol ) - - IF nEvent == K_LDBLCLK - - ELSEIF nEvent == K_MMLEFTDOWN /*K_LBUTTONDOWN */ .AND. ! lAnchored - IF ::scrChkObj() > 0 .AND. ::nMode != OBJ_MODE_SELECT - nCursor := SetCursor( 0 ) - lAnchored := .t. - ::nLastKey := K_F6 - ENDIF - - ELSEIF nEvent == K_MMLEFTDOWN .AND. lAnchored - - ELSEIF nEvent == K_LBUTTONUP .AND. lAnchored - SetCursor( nCursor ) - lAnchored := .f. - __keyboard( chr( K_ENTER ) ) - - ELSEIF nEvent == K_LBUTTONUP - - ENDIF - - RETURN .t. - -/*----------------------------------------------------------------------*/ - -METHOD hbCUIEditor:scrToMouse( nmRow, nmCol ) - LOCAL nRowOff, nColOff - - nRowOff := nmRow - ::nRowCur - IF nRowOff != 0 - ::nRowCur += nRowOff - ::nRowRep += nRowOff - ENDIF - - nColOff := nmCol - ::nColCur - IF nColOff != 0 - ::nColCur += nColOff - ::nColRep += nColOff - ENDIF - - RETURN NIL - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrOrdGets() - LOCAL a_:={}, d_:={}, t_, n_, h_, n - - t_:={} - FOR EACH a_ IN ::obj_ - IF a_[ OBJ_TYPE ] == OBJ_O_BOX - aadd( t_, a_ ) - ENDIF - NEXT - IF ! empty( t_ ) - asort( t_, , , {|e_,f_| e_[ OBJ_ROW ] < f_[ OBJ_ROW ] } ) - aeval( t_, {|e_| aadd( d_, e_ ) } ) - ENDIF - - t_:={} - FOR EACH a_ IN ::obj_ - IF a_[ OBJ_TYPE ] == OBJ_O_TEXT - aadd( t_, a_ ) - ENDIF - NEXT - IF ! empty( t_ ) - asort( t_, , , {|e_,f_| e_[ OBJ_ROW ] < f_[ OBJ_ROW ] } ) - aeval( t_, {|e_| aadd( d_, e_ ) } ) - ENDIF - - // GETS are TO be appended as ordered by the developer - t_:={} - FOR EACH a_ IN ::obj_ - IF a_[ OBJ_TYPE ] == OBJ_O_FIELD - aadd( t_, a_ ) - ENDIF - NEXT - IF ! empty( t_ ) - n_:= array( Len( t_ ) ) - h_:= array( Len( t_ ) ) - aeval( t_, {|e_,i| e_:= e_, n_[ i ] := i } ) - aeval( t_, {|e_,i| h_[ i ] := e_[ OBJ_ID ] } ) - - ::scrMsg( "ENTER: Next Number if Blank, 0 if Numbered CTRL_ENTER: When Done" ) - B_MSG "Order GETS" CHOOSE h_ RESTORE SHADOW CENTER INTO n_ SELECTIONS NUMERIC // NUMBERED n_ - ::scrMsg() - - IF Len( n_ ) != len( t_ ) - alert( "Must ORDER every field !" ) - RETURN Self - ENDIF - FOR EACH n IN n_ - aadd( d_, t_[ n ] ) - NEXT - ENDIF - - ::obj_:= d_ - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD hbCUIEditor:scrOrdObj() - LOCAL a_:={}, d_:={}, t_ - - t_:={} - FOR EACH a_ IN ::obj_ - IF a_[ OBJ_TYPE ] == OBJ_O_BOX - aadd( t_, a_ ) - ENDIF - NEXT - IF ! empty( t_ ) - asort( t_, , , {|e_,f_| e_[ OBJ_ROW ] < f_[ OBJ_ROW ] } ) - aeval( t_, {|e_| aadd( d_, e_ ) } ) - ENDIF - - t_:={} - FOR EACH a_ IN ::obj_ - IF a_[ OBJ_TYPE ] == OBJ_O_TEXT - aadd( t_, a_ ) - ENDIF - NEXT - IF ! empty( t_ ) - asort( t_, , , {|e_,f_| e_[ OBJ_ROW ] < f_[ OBJ_ROW ] } ) - aeval( t_, {|e_| aadd( d_, e_ ) } ) - ENDIF - - // GETS are TO be appended as ordered by the developer - FOR EACH a_ IN ::obj_ - IF a_[ OBJ_TYPE ] == OBJ_O_FIELD - aadd( d_, a_ ) - ENDIF - NEXT - - ::obj_:= d_ - - RETURN Self - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrMovRgt() - LOCAL lMoved := .t. - - ::nColCur++ - IF ::nColCur > ::nRight - IF ::nColsMax > ::nColRep - ::nColDis-- - ::nColCur-- - ::nColRep++ - ::xRefresh := OBJ_REFRESH_ALL - ELSE - lMoved := .f. - tone( 100,1 ) - ::nColCur-- - ENDIF - ELSE - ::nColRep++ - ENDIF - RETURN lMoved - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrMovLft() - LOCAL lMoved := .t. - ::nColCur-- - IF ::nColCur < ::nLeft - IF ::nColRep > 1 - ::nColDis++ - ::nColCur++ - ::nColRep-- - ::xRefresh := OBJ_REFRESH_ALL - ELSE - lMoved := .f. - tone(200,1) - ::nColCur++ - ENDIF - ELSE - ::nColRep-- - ENDIF - RETURN lMoved - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrMovUp() - LOCAL lMoved := .t. - - ::nRowCur-- - IF ::nRowCur < ::nTop - ::nRowCur := ::nTop - IF ::nRowRep > 1 - ::nRowDis++ - ::nRowRep-- - ::xRefresh := OBJ_REFRESH_ALL - ELSE - lMoved := .f. - tone(300,1) - ENDIF - ELSE - ::nRowRep-- - ENDIF - RETURN lMoved - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrMovDn() - LOCAL lMoved := .t. - - ::nRowCur++ - IF ::nRowCur > ::nBottom - ::nRowCur := ::nBottom - IF ::nRowRep < ::nRowsMax - ::nRowDis-- - ::nRowRep++ - ::xRefresh := OBJ_REFRESH_ALL - ELSE - lMoved := .f. - tone( 300,1 ) - ENDIF - ELSE - ::nRowRep++ - ENDIF - RETURN lMoved - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:objType( nObj ) - RETURN ::obj_[ nObj, OBJ_TYPE ] - -/*----------------------------------------------------------------------*/ - -METHOD hbCUIEditor:objIsTxt( nObj ) - RETURN ::obj_[ nObj, OBJ_TYPE ] == OBJ_O_TEXT - -/*----------------------------------------------------------------------*/ - -METHOD hbCUIEditor:objIsBox( nObj ) - RETURN ::obj_[ nObj, OBJ_TYPE ] == OBJ_O_BOX - -/*----------------------------------------------------------------------*/ - -METHOD hbCUIEditor:objIsFld( nObj ) - RETURN ::obj_[ nObj, OBJ_TYPE ] == OBJ_O_FIELD - -/*----------------------------------------------------------------------*/ - -METHOD hbCUIEditor:scrIsTxt() - LOCAL e_ - - FOR EACH e_ IN ::obj_ - IF e_[ OBJ_TYPE ] == OBJ_O_TEXT - IF ::nRowRep == e_[ OBJ_ROW ] .AND. ( ::nColRep >= e_[ OBJ_COL ] .AND. ::nColRep <= e_[ OBJ_TO_COL ] ) - RETURN .t. - ENDIF - ENDIF - NEXT - - RETURN .f. - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrChkObj() - LOCAL a_:={}, e_ - - FOR EACH e_ IN ::obj_ - IF e_[ OBJ_TYPE ] == OBJ_O_BOX - IF ( ::nRowRep == e_[ OBJ_ROW ] .OR. ::nRowRep == e_[ OBJ_TO_ROW ] ) .AND. ; - ( ::nColRep >= e_[ OBJ_COL ] .AND. ::nColRep <= e_[ OBJ_TO_COL ] ) - aadd( a_, e_:__enumIndex() ) - ELSEIF ( ::nColRep == e_[ OBJ_COL ] .OR. ::nColRep == e_[ OBJ_TO_COL ] ) .AND. ; - ( ::nRowRep >= e_[ OBJ_ROW ] .AND. ::nRowRep <= e_[ OBJ_TO_ROW ] ) - aadd( a_, e_:__enumIndex() ) - ENDIF - ELSE - IF ::nRowRep == e_[ OBJ_ROW ] .AND. ( ::nColRep >= e_[ OBJ_COL ] .AND. ::nColRep <= e_[ OBJ_TO_COL ] ) - aadd( a_, e_:__enumIndex() ) - ENDIF - ENDIF - NEXT - - IF !empty( a_ ) - IF Len( a_ ) >= 2 - RETURN a_[ 2 ] - ELSE - RETURN a_[ 1 ] - ENDIF - ENDIF - - RETURN 0 - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrUpdObjRC() - LOCAL nW, nH - LOCAL nObj := ::nObjSelected - - IF nObj > 0 - nH := ::obj_[ nObj, OBJ_TO_ROW ] - ::obj_[ nObj, OBJ_ROW ] - nW := ::obj_[ nObj, OBJ_TO_COL ] - ::obj_[ nObj, OBJ_COL ] - - ::obj_[ nObj, OBJ_ROW ] := ::nRowRep - ::obj_[ nObj, OBJ_COL ] := ::nColRep - - IF ::objIsBox( nObj ) - ::obj_[ nObj, OBJ_TO_ROW ] := ::obj_[ nObj, OBJ_ROW ] + nH - ::obj_[ nObj, OBJ_TO_COL ] := ::obj_[ nObj, OBJ_COL ] + nW - ELSE - ::obj_[ nObj, OBJ_TO_ROW ] := ::nRowRep - ::obj_[ nObj, OBJ_TO_COL ] := ::nColRep + Len( ::obj_[ nObj, iif( ::objIsTxt( nObj ), OBJ_EQN, OBJ_TEXT ) ] ) - 1 - ENDIF - ENDIF - RETURN NIL - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrRepCol() - LOCAL oCol := ::nColsMax, nCol - - nCol := VouchGetSome( 'Number of Columns?', oCol ) - - IF !empty( nCol ) - nCol := max( 10, nCol ) - ::nColsMax := nCol - ::nRight := min( maxcol(), ::nLeft + nCol - 1 ) - ::xRefresh := OBJ_REFRESH_ALL - ENDIF - - RETURN NIL - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrAddLine() - - ::scrUpdateUndo() - - aeval( ::obj_, {|e_,i| iif( e_[ OBJ_ROW ] >= ::nRowRep, ::obj_[ i, OBJ_TO_ROW ]++, NIL ) } ) - aeval( ::obj_, {|e_,i| iif( e_[ OBJ_ROW ] >= ::nRowRep, ::obj_[ i, OBJ_ROW ]++, NIL ) } ) - - ::xRefresh := OBJ_REFRESH_ALL - - RETURN NIL - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrDelLine() - LOCAL nRow := ::nRowRep - LOCAL n, isLast - - ::scrUpdateUndo() - - isLast := ( nRow == ::nRowsMax ) - - IF ::nRowsMax < ( ::nBottom - ::nTop + 1 ) - ::nBottom := max( ::nTop, min( ::nBottom - 1, maxrow() - 2 ) ) - ENDIF - - DO WHILE .t. - IF ( n := ascan( ::obj_, {|e_| e_[ OBJ_ROW ] == nRow } ) ) == 0 - EXIT - ENDIF - VouchAShrink( ::obj_, n ) - ENDDO - - aeval( ::obj_, {|e_,i| iif( e_[ OBJ_ROW ] > nRow, ::obj_[ i, OBJ_TO_ROW ]--, NIL ) } ) - aeval( ::obj_, {|e_,i| iif( e_[ OBJ_ROW ] > nRow, ::obj_[ i, OBJ_ROW ]--, NIL ) } ) - - IF isLast - ::nRowRep-- - ::nRowCur-- - ENDIF - - ::xRefresh := OBJ_REFRESH_ALL - - RETURN NIL - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrIsBoxIn() - RETURN ascan( ::obj_,{|e_| VouchInRange( ::nRowRep, e_[ OBJ_ROW ], e_[ OBJ_TO_ROW ] ); - .AND. ; - ( e_[ OBJ_TYPE ] == OBJ_O_BOX ) } ) > 0 - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrObjCopy() - - IF ::nMode == OBJ_MODE_SELECT - ::nObjCopied := ::nObjSelected - ELSEIF ::nObjHilite > 0 - ::nObjCopied := ::nObjHilite - ENDIF - RETURN NIL - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrObjPas() // Paste Copied OBJECT - LOCAL nObj, o_, oldRow, oldCol, oldRow2, oldcol2 - - IF ( nObj := ::nObjCopied ) > 0 .AND. ::nObjSelected == 0 - ::scrUpdateUndo() - - o_:= aclone( ::obj_[ nObj ] ) - - oldRow := o_[ OBJ_ROW ] ; oldCol := o_[ OBJ_COL ] - oldRow2 := o_[ OBJ_TO_ROW ] ; oldCol2 := o_[ OBJ_TO_COL ] - - o_[ OBJ_ROW ] := ::nRowRep - o_[ OBJ_COL ] := ::nColRep - IF o_[ OBJ_TYPE ] == OBJ_O_FIELD - o_[ OBJ_TO_ROW ] := ::nRowRep - o_[ OBJ_TO_COL ] := ::nColRep + Len( o_[ OBJ_TEXT ] ) - 1 - ELSEIF o_[ OBJ_TYPE ] == OBJ_O_BOX - o_[ OBJ_TO_ROW ] := ::nRowRep + ( oldRow2 - oldRow ) - o_[ OBJ_TO_COL ] := ::nColRep + ( oldCol2 - oldCol ) - ELSEIF o_[ OBJ_TYPE ] == OBJ_O_TEXT - o_[ OBJ_TO_ROW] := ::nRowRep - o_[ OBJ_TO_COL ] := ::nColRep + ( oldCol2 - oldCol ) - ENDIF - - aadd( ::obj_, o_ ) - - ::scrOrdObj() - ::nObjSelected := 0 - ::xRefresh := OBJ_REFRESH_LINE - ::nMode := 0 - ::nObjCopied := 0 - ENDIF - RETURN NIL - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrObjDel( nObj ) - - ::scrUpdateUndo() - - VouchAShrink( ::obj_, nObj ) - ::nObjSelected := 0 - ::xRefresh := OBJ_REFRESH_LINE - - RETURN Self - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrOnLastCol( nObj ) - LOCAL nOff, i - - IF ::objIsBox( nObj ) - nOff := ::obj_[ nObj, OBJ_TO_COL ] - ::nColRep - FOR i := 1 TO nOff - ::scrMovRgt() - NEXT - - nOff := ::obj_[ nObj, OBJ_TO_ROW ] - ::nRowRep - FOR i := 1 TO nOff - ::scrMovDn() - NEXT - ::scrMove() - ::scrStatus() - ::nRowPrev := ::nRowCur - ::nColPrev := ::nColCur - ENDIF - - RETURN NIL - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrOnFirstCol( nObj, type_ ) - LOCAL nCur, nOff - - IF ::nColRep != ::obj_[ nObj,OBJ_COL ] - IF VouchInArray( ::obj_[ nObj, OBJ_TYPE ], type_ ) - IF ::objIsBox( nObj ) - nCur := ::nColCur - nOff := ::nColRep - ::obj_[ nObj, OBJ_COL ] - ::nColCur := max( ::nLeft, ::nColCur - nOff ) - ::nColRep := ::obj_[ nObj, OBJ_COL] - IF nOff > nCur - ::nLeft - ::xRefresh := OBJ_REFRESH_ALL - ::nColDis += nOff - ( nCur - ::nLeft ) - ENDIF - - nCur := ::nRowCur - nOff := ::nRowRep - ::obj_[ nObj, OBJ_ROW ] - ::nRowCur := max( ::nTop, ::nRowCur - nOff ) - ::nRowRep := ::obj_[ nObj,OBJ_ROW ] - IF nOff > nCur - ::nTop - ::xRefresh := OBJ_REFRESH_ALL - ::nRowDis += nOff - ( nCur - ::nTop ) - ENDIF - - ELSE - IF ::nLastKey == K_RIGHT - nCur := ::nColCur - nOff := ::obj_[ nObj, OBJ_TO_COL ] - ::nColRep + 1 // NEXT Col TO OBJECT - IF ::nColRep + nOff > ::nColsMax - ::nColsMax := ::nColRep + nOff - ENDIF - ::nColCur := min( ::nRight, ::nColCur + nOff ) - ::nColRep := ::obj_[ nObj,OBJ_TO_COL ] + 1 - IF nOff > ::nRight - nCur - ::xRefresh := OBJ_REFRESH_ALL - ::nColDis -= nOff - ( ::nRight - nCur ) - ENDIF - ::nObjHilite := 0 - ELSE - nCur := ::nColCur - nOff := ::nColRep - ::obj_[ nObj,OBJ_COL ] - ::nColCur := max( ::nLeft, ::nColCur - nOff ) - ::nColRep := ::obj_[ nObj,OBJ_COL ] - IF nOff > nCur - ::nLeft - ::xRefresh := OBJ_REFRESH_ALL - ::nColDis += nOff - ( nCur - ::nLeft ) - ENDIF - ENDIF - ENDIF - ENDIF - ENDIF - - RETURN NIL - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrGetChar( nRow, nCol ) - LOCAL s := THE_FILL,n - - // Locate Text - n := ascan( ::obj_,{|e_| e_[ OBJ_ROW ] == nRow .AND. ; - VouchInRange( nCol, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) } ) - IF n == 0 // Locate Box - n := ascan( ::obj_,{|e_| VouchInRange( nRow, e_[ OBJ_ROW ], e_[ OBJ_TO_ROW ] ) .AND. ; - VouchInRange( nCol, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) } ) - ENDIF - - IF n > 0 - IF ::objIsTxt( n ) - s := substr( ::obj_[ n, OBJ_TEXT ], nCol - ::obj_[ n, OBJ_COL ] + 1, 1 ) - - ELSEIF ::objIsFld( n ) - s := substr( ::obj_[ n, OBJ_ID ], nCol - ::obj_[ n, OBJ_COL ] + 1, 1 ) - - ELSEIF ::objIsBox( n ) - IF nRow == ::obj_[ n, OBJ_ROW ] - IF nCol == ::obj_[ n, OBJ_COL ] - s := substr(::obj_[ n, OBJ_BOX_SHAPE ], 1, 1 ) - ELSEIF nCol == ::obj_[ n, OBJ_TO_COL ] - s := substr(::obj_[ n, OBJ_BOX_SHAPE ], 3, 1 ) - ELSE - s := substr(::obj_[ n, OBJ_BOX_SHAPE ], 2, 1 ) - ENDIF - ELSEIF nRow == ::obj_[ n, OBJ_TO_ROW ] - IF nCol == ::obj_[ n, OBJ_COL ] - s := substr(::obj_[ n, OBJ_BOX_SHAPE ], 7, 1 ) - ELSEIF nCol == ::obj_[ n, OBJ_TO_COL ] - s := substr(::obj_[ n, OBJ_BOX_SHAPE ], 5, 1 ) - ELSE - s := substr(::obj_[ n, OBJ_BOX_SHAPE ], 6, 1 ) - ENDIF - ELSE - IF nCol == ::obj_[ n, OBJ_COL ] - s := substr(::obj_[ n, OBJ_BOX_SHAPE ], 8, 1 ) // 4.8 are Same - ELSEIF nCol == ::obj_[ n, OBJ_TO_COL ] - s := substr(::obj_[ n, OBJ_BOX_SHAPE ], 4, 1 ) - ELSE - s := substr(::obj_[ n, OBJ_BOX_SHAPE ], 9, 1 ) - s := iif( empty( s ), THE_FILL, s ) - ENDIF - ENDIF - ENDIF - ENDIF - RETURN s - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrTextBlock() - LOCAL n, nKey - LOCAL key_:= { K_RIGHT,K_LEFT,K_UP,K_DOWN,K_ENTER } - - ::aTextBlock := { ::nRowRep, ::nColRep, ::nRowRep, ::nColRep } - - ::scrMsg( 'Use TO Select Text Block, TO Finish' ) - ::scrMove() - ::scrStatus() - - DO WHILE .t. - nKey := ::scrInkey( key_ ) - - DO CASE - CASE nKey == key_[ 1 ] - IF ::scrMovRgt() - ::aTextBlock[ 4 ]++ - ENDIF - CASE nKey == key_[ 2 ] - IF ::scrMovLft() - ::aTextBlock[ 4 ]-- - ENDIF - CASE nKey == key_[ 3 ] - IF ::scrMovUp() - ::aTextBlock[ 3 ]-- - ENDIF - CASE nKey == key_[ 4 ] - IF ::scrMovDn() - ::aTextBlock[ 3 ]++ - ENDIF - CASE nKey == key_[ 5 ] - EXIT - ENDCASE - - IF ::aTextBlock[ 3 ] < ::aTextBlock[ 1 ] - n := ::aTextBlock[ 1 ] - ::aTextBlock[ 1 ] := ::aTextBlock[ 3 ] - ::aTextBlock[ 3 ] := n - ENDIF - - IF ::aTextBlock[ 4 ] < ::aTextBlock[ 2 ] - n := ::aTextBlock[ 2 ] - ::aTextBlock[ 2 ] := ::aTextBlock[ 4 ] - ::aTextBlock[ 4 ] := n - ENDIF - - ::scrMove() - ::scrStatus() - ENDDO - ::scrMsg() - - RETURN NIL - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrTextMove( nMode ) - LOCAL gst_, nKey - LOCAL crs := setCursor(0) - LOCAL key_:= { K_RIGHT, K_LEFT, K_UP, K_DOWN, K_ENTER } - - DEFAULT nMode TO 0 // 0.Paste 1.Copy - - IF ! empty( ::aTextBlock ) - // CREATE a ghost movement block - ::scrMsg('Use Arrow Keys TO Move Selected Block') - // Check FOR current cursor position - gst_:= { ::nRowRep , ::nColRep,; - ::nRowRep + ::aTextBlock[ 3 ] - ::aTextBlock[ 1 ],; - ::nColRep + ::aTextBlock[ 4 ] - ::aTextBlock[ 2 ] } - DO WHILE .t. - ::scrMove() - ::scrDispGhost( gst_ ) - ::scrStatus() - - nKey := ::scrInkey( key_ ) - DO CASE - CASE nKey == key_[1] - IF ::scrMovRgt() - gst_[2]++ ; gst_[4]++ - ENDIF - CASE nKey == key_[2] - IF ::scrMovLft() - gst_[2]-- ; gst_[4]-- - ENDIF - CASE nKey == key_[3] - IF ::scrMovUp() - gst_[1]-- ; gst_[3]-- - ENDIF - CASE nKey == key_[4] - IF ::scrMovDn() - gst_[1]++ ; gst_[3]++ - ENDIF - CASE nKey == key_[5] - EXIT - ENDCASE - ENDDO - - ::scrTextPost( gst_, nMode ) - - ::scrOrdObj() - ::scrMove() - ::scrStatus() - - ::scrMsg() - ENDIF - setCursor(crs) - - RETURN Self - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrTextPost( gst_, nMode ) - LOCAL n,i,s,s1,s2,s3,n1,nWid,nCol,nn - LOCAL del_:={0},ins_:={},d_:={},ddd_ - LOCAL old_:= aclone( ::aTextBlock ) - - ::scrUpdateUndo() - - FOR i := gst_[ 1 ] TO gst_[ 3 ] - n := -1 - DO WHILE .t. - n := ascan( ::obj_, {|e_| e_[ OBJ_ROW ] == i ; - .AND. ; - ( VouchInRange( e_[ OBJ_COL ], gst_[ 2 ], gst_[ 4 ] ); - .OR. ; - VouchInRange( e_[ OBJ_TO_COL ], gst_[ 2 ], gst_[ 4 ] ) ) ; - .AND.; - ! VouchInArray( n, del_ ) } ) - IF n > 0 - IF ::objIsTxt( n ) - aadd( del_, n ) - - s1 := '' ; s3 := '' - s := ::obj_[ n, OBJ_EQN ] - nCol := ::obj_[ n, OBJ_COL ] - - IF gst_[2] <= ::obj_[ n, OBJ_COL ] .AND. gst_[ 4 ] >= ::obj_[ n, OBJ_TO_COL ] - // Only deletion of OBJECT - // s2 := s - ELSEIF gst_[2] >= nCol - s1 := substr( s, 1, gst_[ 2 ] - nCol ) - // s2 := substr(s,gst_[2]-nCol+1,gst_[4]-nCol+1) - s3 := substr( s, gst_[ 4 ] - nCol + 2 ) - ELSEIF gst_[ 2 ] < nCol - s1 := substr( s, 1, gst_[ 2 ] - nCol ) - // s2 := substr(s,gst_[2]-nCol+1,gst_[4]-nCol+1) - s3 := substr( s, gst_[ 4 ] - nCol + 2 ) - ENDIF - - IF Len( s1 ) > 0 - aadd( ins_, ::scrObjBlank() ) ; n1 := Len( ins_ ) - - ins_[ n1, OBJ_TYPE ] := OBJ_O_TEXT - ins_[ n1, OBJ_ROW ] := ::obj_[ n, OBJ_ROW ] - ins_[ n1, OBJ_COL ] := ::obj_[ n, OBJ_COL ] - ins_[ n1, OBJ_EQN ] := s1 - ins_[ n1, OBJ_TO_ROW ] := ::obj_[ n, OBJ_ROW ] - ins_[ n1, OBJ_TO_COL ] := ins_[ n1, OBJ_COL ] + Len( s1 ) - 1 - ENDIF - - IF Len( s3 ) > 0 - aadd( ins_, ::scrObjBlank() ) - n1 := Len( ins_ ) - - ins_[ n1, OBJ_TYPE ] := OBJ_O_TEXT - ins_[ n1, OBJ_ROW ] := ::obj_[n, OBJ_ROW] - ins_[ n1, OBJ_COL ] := gst_[ 4 ] + 1 - ins_[ n1, OBJ_EQN ] := s3 - ins_[ n1, OBJ_TO_ROW ] := ::obj_[ n, OBJ_ROW ] - ins_[ n1, OBJ_TO_COL ] := ins_[ n1, OBJ_COL ] + Len( s3 ) - 1 - ENDIF - - ELSEIF ::objIsFld( n ) - aadd( del_, n ) - - ELSEIF ::objIsBox( n ) - - ENDIF - ELSE - EXIT - ENDIF - ENDDO - NEXT - - ddd_:= del_ ; del_:={0} ; nn := 0 - - FOR i := old_[1] TO old_[3] // Rows - n := -1 - - DO WHILE .t. - n := ascan(::obj_,{|e_| e_[ OBJ_ROW ] == i; - .AND. ; - ( VouchInRange(e_[ OBJ_COL ], old_[ 2 ], old_[ 4 ] ); - .OR. ; - VouchInRange( e_[ OBJ_TO_COL ], old_[ 2 ], old_[ 4 ] ) ) ; - .AND. ; - ! VouchInArray( n, del_ ) } ) - IF n > 0 - IF ::objIsTxt( n ) - aadd( del_, n ) - - // TO be retained as it is - s1 := '' ; s2 := '' ; s3 := '' - s := ::obj_[ n,OBJ_EQN] - nCol := ::obj_[ n,OBJ_COL] - - IF old_[ 2 ] <= ::obj_[ n, OBJ_COL ] .AND. old_[ 4 ] >= ::obj_[ n, OBJ_TO_COL ] - s2 := s // Insert WITH moved coordinates - ELSEIF old_[ 2 ] >= ::obj_[ n, OBJ_COL ] - s1 := substr( s, 1, old_[ 2 ] - nCol ) - s2 := substr( s, old_[ 2 ] - nCol + 1, old_[ 4 ] - old_[ 2 ] + 1 ) - s3 := substr( s, old_[ 4 ] - nCol + 2 ) - ELSEIF old_[ 2 ] < nCol - s1 := substr( s, 1, old_[ 2 ] - nCol ) - s2 := substr( s, old_[ 2 ] - nCol + 1, old_[ 4 ] - old_[ 2 ] + 1 ) - s3 := substr( s, old_[ 4 ] - nCol + 2 ) - ENDIF - - IF nMode == 0 - IF Len( s1 ) > 0 - aadd( ins_, ::scrObjBlank() ) ; n1 := Len( ins_ ) - - ins_[ n1, OBJ_TYPE ] := OBJ_O_TEXT - ins_[ n1, OBJ_ROW ] := ::obj_[ n, OBJ_ROW ] - ins_[ n1, OBJ_COL ] := ::obj_[ n, OBJ_COL ] - ins_[ n1, OBJ_EQN ] := s1 - ins_[ n1, OBJ_TO_ROW ] := ::obj_[ n, OBJ_ROW ] - ins_[ n1, OBJ_TO_COL ] := ins_[ n1,OBJ_COL ] + Len( s1 ) - 1 - ENDIF - IF Len(s3) > 0 - aadd( ins_, ::scrObjBlank() ) ; n1 := Len( ins_ ) - - ins_[ n1, OBJ_TYPE ] := OBJ_O_TEXT - ins_[ n1, OBJ_ROW ] := ::obj_[ n, OBJ_ROW ] - ins_[ n1, OBJ_COL ] := old_[ 4 ] + 1 - ins_[ n1, OBJ_EQN ] := s3 - ins_[ n1, OBJ_TO_ROW ] := ::obj_[ n, OBJ_ROW ] - ins_[ n1, OBJ_TO_COL ] := ins_[ n1,OBJ_COL ] + Len( s3 ) - 1 - ENDIF - ENDIF - - IF Len(s2) > 0 - aadd( ins_, aclone( ::obj_[ n ] ) ) ; n1 := Len( ins_ ) - - ins_[ n1, OBJ_ROW ] := gst_[ 1 ] + nn - ins_[ n1, OBJ_COL ] := gst_[ 2 ]+ iif( old_[ 2 ] - ::obj_[ n, OBJ_COL ] >= 0, 0, abs( old_[ 2 ] - ::obj_[ n, OBJ_COL ] ) ) - ins_[ n1, OBJ_TO_ROW ] := ins_[ n1, OBJ_ROW ] - ins_[ n1, OBJ_TO_COL ] := ins_[ n1, OBJ_COL ] + Len( s2 ) - 1 - ins_[ n1, OBJ_EQN ] := s2 - ENDIF - - ELSEIF ::objIsFld( n ) - IF nMode == 0 - aadd( del_, n ) - ENDIF - - // Same OBJECT is TO be inserted IN moved block - aadd( ins_, aclone( ::obj_[ n ] ) ) ; n1 := Len( ins_ ) - nWid := ::obj_[ n, OBJ_TO_COL ] - ::obj_[ n, OBJ_COL ] - - ins_[ n1, OBJ_ROW ] := gst_[ 1 ] + nn - ins_[ n1, OBJ_COL ] := gst_[ 2 ] + old_[ 2 ] - ::obj_[ n, OBJ_COL ] - ins_[ n1, OBJ_TO_ROW ] := ins_[ n1, OBJ_ROW ] - ins_[ n1, OBJ_TO_COL ] := ins_[ n1, OBJ_COL ] + nWid - ENDIF - ELSE - EXIT - ENDIF - ENDDO - nn++ - NEXT - - IF nMode != 0 - del_:={} - ENDIF - aeval( ddd_,{|e| aadd( del_, e ) } ) - - IF !empty( del_ ) - FOR i := 1 TO Len( ::obj_) - IF ascan( del_, i ) == 0 - aadd( d_, ::obj_[ i ] ) - ENDIF - NEXT - ::obj_:= aclone( d_ ) - ENDIF - - aeval( ins_, {|e_| aadd( ::obj_, e_ ) } ) - - ::aTextBlock := {} - - RETURN Self - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrTextDel() - LOCAL i,n,n1,s,s1,s3,nCol - LOCAL ins_:={},del_:={},d_:={},old_:={} - - ::scrUpdateUndo() - - old_:= ::aTextBlock - FOR i := old_[1] TO old_[3] // Rows - n := -1 - - DO WHILE .t. - n := ascan( ::obj_,{|e_| e_[ OBJ_ROW ] == i; - .AND. ; - ( VouchInRange( e_[ OBJ_COL ], old_[ 2 ], old_[ 4 ] ); - .OR. ; - VouchInRange( e_[ OBJ_TO_COL ], old_[ 2 ], old_[ 4 ] ) ) ; - .AND. ; - ! VouchInArray( n, del_ ) }) - IF n > 0 - IF ::objIsTxt( n ) - aadd( del_, n ) - - // TO be retained as it is - s1 := '' ; s3 := '' - s := ::obj_[ n, OBJ_EQN ] - nCol := ::obj_[ n, OBJ_COL ] - - IF old_[ 2 ] <= ::obj_[ n, OBJ_COL ] .AND. old_[ 4 ] >= ::obj_[ n, OBJ_TO_COL ] - // s2 := s // Insert WITH moved coordinates - ELSEIF old_[ 2 ] >= ::obj_[ n, OBJ_COL ] - s1 := substr( s, 1, old_[ 2 ] - nCol ) - // s2 := substr(s,old_[2]-nCol+1,old_[4]-old_[2]+1) - s3 := substr( s, old_[ 4 ] - nCol + 2 ) - ELSEIF old_[ 2 ] < nCol - s1 := substr( s, 1, old_[ 2 ] - nCol ) - // s2 := substr(s,old_[2]-nCol+1,old_[4]-old_[2]+1) - s3 := substr( s, old_[ 4 ] - nCol + 2 ) - ENDIF - - IF Len( s1 ) > 0 - aadd( ins_, ::scrObjBlank() ) ; n1 := Len( ins_ ) - - ins_[ n1, OBJ_TYPE ] := OBJ_O_TEXT - ins_[ n1, OBJ_ROW ] := ::obj_[ n,OBJ_ROW ] - ins_[ n1, OBJ_COL ] := ::obj_[ n,OBJ_COL ] - ins_[ n1, OBJ_EQN ] := s1 - ins_[ n1, OBJ_TO_ROW ] := ::obj_[ n, OBJ_ROW ] - ins_[ n1, OBJ_TO_COL ] := ins_[ n1, OBJ_COL ] + Len( s1 ) - 1 - ENDIF - IF Len( s3 ) > 0 - aadd( ins_, ::scrObjBlank() ) ; n1 := Len( ins_ ) - - ins_[ n1, OBJ_TYPE ] := OBJ_O_TEXT - ins_[ n1, OBJ_ROW ] := ::obj_[ n, OBJ_ROW ] - ins_[ n1, OBJ_COL ] := old_[ 4 ] + 1 - ins_[ n1, OBJ_EQN ] := s3 - ins_[ n1, OBJ_TO_ROW ] := ::obj_[ n, OBJ_ROW ] - ins_[ n1, OBJ_TO_COL ] := ins_[ n1, OBJ_COL ] + Len( s3 ) - 1 - ENDIF - - ELSEIF ::objIsFld( n ) - aadd(del_,n) - - ENDIF - ELSE - EXIT - ENDIF - ENDDO - NEXT - - IF !empty(del_) - FOR i := 1 TO Len( ::obj_ ) - IF ascan(del_,i) == 0 - aadd(d_,::obj_[i]) - ENDIF - NEXT - ::obj_:= aclone(d_) - IF empty( ::obj_ ) - aadd( ::obj_,::scrObjBlank()) - ENDIF - ENDIF - - aeval( ins_,{|e_| aadd( ::obj_,e_ ) } ) - ::aTextBlock := {} - - RETURN Self - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrAddTxt( nMode ) - LOCAL txt_:={}, n, lClub, i - LOCAL n1,s1,s2,nTxt,nDel - LOCAL nRepCol := ::nColRep, nRepRow := ::nRowRep - LOCAL nKey := ::nLastKey - - ::scrUpdateUndo() - - // nMode 1.Add 2.Del 3.BS - - // Scan obj_ FOR Text Objects Related WITH Current Report Row - aeval( ::obj_,{|e_| iif( e_[ OBJ_TYPE ] == OBJ_O_TEXT .AND. e_[ OBJ_ROW ] == nRepRow, aadd( txt_,e_ ),'' ) } ) - IF nMode == 1 // New Character - IF empty( txt_ ) .OR. ascan( txt_, {|e_| VouchInRange( nRepCol, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) } ) == 0 - aadd( txt_, ::scrObjBlank() ) - nTxt := Len( txt_ ) - txt_[ nTxt, OBJ_TYPE ] := OBJ_O_TEXT - txt_[ nTxt, OBJ_F_TYPE ] := 'C' - txt_[ nTxt, OBJ_F_LEN ] := 1 - txt_[ nTxt, OBJ_ROW ] := ::nRowRep - txt_[ nTxt, OBJ_COL ] := ::nColRep - txt_[ nTxt, OBJ_EQN ] := '' - txt_[ nTxt, OBJ_TO_ROW ] := ::nRowRep - txt_[ nTxt, OBJ_TO_COL ] := ::nColRep - ENDIF - ENDIF - - nTxt := ascan( txt_,{|e_| VouchInRange( nRepCol, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) } ) - - IF nMode == 1 - txt_[ nTxt, OBJ_EQN ] := substr( txt_[ nTxt, OBJ_EQN ], 1, ::nColRep - txt_[ nTxt, OBJ_COL] ) + ; - chr( nKey ) + ; - substr( txt_[ nTxt, OBJ_EQN ], ::nColRep - txt_[ nTxt, OBJ_COL ] + iif( ReadInsert(), 1, 2 ) ) - - txt_[ nTxt, OBJ_TO_COL ] := txt_[ nTxt, OBJ_COL ] + Len( txt_[ nTxt, OBJ_EQN ] ) - 1 - - ELSEIF nMode == 2 .OR. nMode == 3 // Delete - IF readInsert() - txt_[nTxt,OBJ_EQN] := substr( txt_[ nTxt, OBJ_EQN ], 1,; - ::nColRep - txt_[ nTxt, OBJ_COL ] ) + ; - substr( txt_[ nTxt, OBJ_EQN ], ::nColRep - txt_[ nTxt, OBJ_COL ] + 2 ) - txt_[ nTxt, OBJ_TO_COL ] := txt_[ nTxt, OBJ_COL ] + Len( txt_[ nTxt, OBJ_EQN ] ) - 1 - ELSE // Divide it IN two objects - s1 := substr( txt_[ nTxt, OBJ_EQN ], 1, ::nColRep - txt_[ nTxt, OBJ_COL ] ) - s2 := substr( txt_[ nTxt, OBJ_EQN ], ::nColRep - txt_[ nTxt, OBJ_COL ] + 2 ) - nDel := 0 - IF Len( s1 ) > 0 - txt_[ nTxt, OBJ_EQN ] := s1 - txt_[ nTxt, OBJ_TO_COL ] := txt_[ nTxt, OBJ_COL ] + Len( s1 ) - 1 - ELSE - nDel := nTxt - ENDIF - - IF Len( s2 ) > 0 - IF nDel == 0 - aadd( txt_, aclone( txt_[ nTxt ] ) ) - n1 := Len( txt_ ) - ELSE - n1 := nDel - ENDIF - txt_[ n1, OBJ_TYPE ] := OBJ_O_TEXT - txt_[ n1, OBJ_F_TYPE ] := 'C' - txt_[ n1, OBJ_F_LEN ] := Len( s2 ) - txt_[ n1, OBJ_ROW ] := ::nRowRep - txt_[ n1, OBJ_COL ] := ::nColRep+1 - txt_[ n1, OBJ_EQN ] := s2 - txt_[ n1, OBJ_TO_ROW ] := ::nRowRep - txt_[ n1, OBJ_TO_COL ] := txt_[ n1, OBJ_COL ] + Len( s2 ) - 1 - ENDIF - IF Len( s1 ) == 0 .AND. len( s2 ) == 0 - VouchAShrink( txt_, nTxt ) - ENDIF - ENDIF - ENDIF - - IF !empty( txt_ ) - DO WHILE .t. - IF ( n := ascan( txt_, {|e_| e_[ OBJ_TO_COL ] < e_[ OBJ_COL ] } ) ) > 0 - VouchAShrink( txt_, n ) - ELSE - EXIT - ENDIF - ENDDO - #if 0 - IF empty( txt_ ) - aadd( txt_, ::scrObjBlank() ) - ENDIF - #endif - // CLUB DIFFERENT TEXT OBJECTS IF THESE ARE ADJACENT - asort( txt_ , , , {|e_,f_| e_[ OBJ_COL ] < f_[ OBJ_COL ] } ) - - DO WHILE .t. - lClub := .f. - FOR i := 2 TO Len( txt_ ) - IF txt_[ i , OBJ_COL ] == txt_[ i - 1, OBJ_TO_COL ] + 1 - txt_[ i - 1, OBJ_EQN ] += txt_[ i, OBJ_EQN ] // Club both - txt_[ i - 1, OBJ_TO_COL ] := txt_[ i - 1, OBJ_COL ] + Len( txt_[ i - 1, OBJ_EQN ] ) - 1 - txt_[ i - 1, OBJ_F_LEN ] := Len( txt_[ i - 1, OBJ_EQN ] ) - VouchAShrink( txt_,i ) - lClub := .t. - ENDIF - NEXT - IF ! lClub - EXIT - ENDIF - ENDDO - ENDIF - - DO WHILE .t. - IF ( n := ascan( ::obj_, {|e_| e_[ OBJ_TYPE ] == OBJ_O_TEXT .AND. e_[ OBJ_ROW ] == ::nRowRep } ) ) > 0 - VouchAShrink( ::obj_,n ) - ELSE - EXIT - ENDIF - ENDDO - - aeval( txt_, {|e_| iif( e_[ OBJ_ROW ] > 0, aadd( ::obj_, e_ ), '' ) } ) - - DO WHILE .t. - IF ( n := ascan( ::obj_,{|e_| e_[ OBJ_TO_COL ] < e_[ OBJ_COL ] } ) ) > 0 - VouchAShrink( ::obj_, n ) - ELSE - EXIT - ENDIF - ENDDO - - IF nMode == 1 - keyboard( chr( K_RIGHT ) ) - ENDIF - - ::xRefresh := OBJ_REFRESH_LINE - ::lEdited := .t. - - ::scrOrdObj() - - RETURN NIL - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrMsg( msg ) - LOCAL row := row(), col := col() - - @ maxrow(),0 SAY padc( " ", maxcol()+1 ) COLOR "W+/W" - IF empty( msg ) - msg := "F1:Help F4:Prop F5:Edit F6:Select F7:Copy F8:Paste F9:Box F10:Field" - ENDIF - msg := " " + msg + " " - @ maxrow(), ( maxcol()+1-Len( msg ) )/2 SAY msg COLOR "W+/RB" - - setPos( row,col ) - RETURN NIL - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrInkey( key_ ) - LOCAL nKey - - DO WHILE .t. - nKey := inkey( 0 ) - IF ascan( key_, nKey ) > 0 - EXIT - ENDIF - ENDDO - - RETURN nKey - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrObjBlank() - LOCAL o_:= array( OBJ_INIT_VRBLS ) - - o_[ OBJ_TYPE ] := 0 - o_[ OBJ_ROW ] := 0 - o_[ OBJ_COL ] := 0 - o_[ OBJ_TO_ROW ] := 0 - o_[ OBJ_TO_COL ] := 0 - o_[ OBJ_TEXT ] := "" - o_[ OBJ_F_TYPE ] := "." - o_[ OBJ_F_LEN ] := 0 - o_[ OBJ_F_DEC ] := 0 - o_[ OBJ_F_PIC ] := "" - o_[ OBJ_COLOR ] := "" - o_[ OBJ_WHEN ] := "" - o_[ OBJ_VALID ] := "" - o_[ OBJ_ID ] := "" - o_[ OBJ_SEC_ROW ] := 0 - o_[ OBJ_OBJ_UNIQUE ] := 0 - o_[ OBJ_MDL_F_TYPE ] := 0 - - RETURN o_ - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrVrbBlank( nType ) - LOCAL v_:= {} - LOCAL nW := 200 - - SWITCH nType - CASE OBJ_O_FIELD - aadd( v_, space( nW ) ) - aadd( v_, 'C' ) - aadd( v_, 25 ) - aadd( v_, 0 ) - aadd( v_, space( nW ) ) - aadd( v_, space( nW ) ) - aadd( v_, space( nW ) ) - aadd( v_, space( nW ) ) - EXIT - CASE OBJ_O_BOX - aadd( v_, space( nW ) ) - aadd( v_, B_SINGLE ) - aadd( v_, "CLEAR" ) - EXIT - CASE OBJ_O_TEXT - aadd( v_, space( nW ) ) - aadd( v_, space( nW ) ) - EXIT - ENDSWITCH - - RETURN v_ - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrObj2Vv( o_ ) - LOCAL v_:={}, nW := 200 - - SWITCH o_[ OBJ_TYPE ] - - CASE OBJ_O_FIELD - aadd( v_, pad( o_[ OBJ_ID ], nW ) ) - aadd( v_, o_[ OBJ_F_TYPE ] ) - aadd( v_, o_[ OBJ_F_LEN ] ) - aadd( v_, o_[ OBJ_F_DEC ] ) - aadd( v_, pad( o_[ OBJ_F_PIC ], nW ) ) - aadd( v_, pad( o_[ OBJ_COLOR ], nW ) ) - aadd( v_, pad( o_[ OBJ_WHEN ], nW ) ) - aadd( v_, pad( o_[ OBJ_VALID ], nW ) ) - EXIT - CASE OBJ_O_BOX - aadd( v_, pad( o_[ OBJ_COLOR ], nW ) ) - aadd( v_, o_[ OBJ_BORDER ] ) - aadd( v_, o_[ OBJ_PATTERN ] ) - EXIT - CASE OBJ_O_TEXT - aadd( v_, pad( o_[ OBJ_ID ], nW ) ) - aadd( v_, pad( o_[ OBJ_COLOR ], nW ) ) - EXIT - ENDSWITCH - - RETURN v_ - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrVrbHeaders( nType ) - LOCAL h_:= {} - - SWITCH nType - CASE OBJ_O_FIELD - aadd( h_, ' Expression' ) - aadd( h_, ' Type ' ) - aadd( h_, ' Width ' ) - aadd( h_, ' Decimals ' ) - aadd( h_, ' Picture ' ) - aadd( h_, ' Color ' ) - aadd( h_, ' When ' ) - aadd( h_, ' Valid ' ) - EXIT - CASE OBJ_O_BOX - aadd( h_, ' Color ' ) - aadd( h_, ' Border ' ) - aadd( h_, ' Pattern ' ) - EXIT - CASE OBJ_O_TEXT - aadd( h_, ' Expression' ) - aadd( h_, ' Color ' ) - EXIT - ENDSWITCH - - RETURN h_ - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrVv2Obj( v_, o_ ) - - SWITCH o_[ OBJ_TYPE ] - - CASE OBJ_O_FIELD - o_[ OBJ_ID ] := trim( v_[ 1 ] ) - o_[ OBJ_F_TYPE ] := v_[ 2 ] - o_[ OBJ_F_LEN ] := v_[ 3 ] - o_[ OBJ_F_DEC ] := v_[ 4 ] - o_[ OBJ_F_PIC ] := trim( v_[ 5 ] ) - o_[ OBJ_COLOR ] := trim( v_[ 6 ] ) - o_[ OBJ_WHEN ] := trim( v_[ 7 ] ) - o_[ OBJ_VALID ] := trim( v_[ 8 ] ) - EXIT - CASE OBJ_O_BOX - o_[ OBJ_COLOR ] := trim( v_[ 1 ] ) - o_[ OBJ_BORDER ] := v_[ 2 ] - o_[ OBJ_PATTERN ] := v_[ 3 ] - EXIT - CASE OBJ_O_TEXT - o_[ OBJ_ID ] := trim( v_[ 1 ] ) - o_[ OBJ_COLOR ] := trim( v_[ 2 ] ) - EXIT - ENDSWITCH - - RETURN Self - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrAddBox( nObj ) - LOCAL o_, nKey, nnObj := nObj - - ::scrUpdateUndo() - - DEFAULT nObj TO 0 - - IF empty( nObj ) - o_:= ::scrObjBlank() - - o_[ OBJ_TYPE ] := OBJ_O_BOX - o_[ OBJ_ROW ] := ::nRowRep - o_[ OBJ_COL ] := ::nColRep - o_[ OBJ_TO_ROW ] := ::nRowRep - o_[ OBJ_TO_COL ] := ::nColRep - o_[ OBJ_F_LEN ] := 9 - o_[ OBJ_MDL_F_TYPE ] := 62 - - o_[ OBJ_BOX_SHAPE ] := B_SINGLE - o_[ OBJ_PATTERN ] := "CLEAR" - - aadd( ::obj_, o_ ) - nObj := Len( ::obj_ ) - ENDIF - - IF ! empty( nnObj ) - ::scrOnLastCol( nnObj ) - ENDIF - ::scrMsg( 'Draw Box with . Finish with ' ) - - DO WHILE .t. - nKey := inkey( 0 ) - DO CASE - CASE nKey == K_RIGHT - IF ::scrMovRgt() - ::obj_[ nObj,OBJ_TO_COL ]++ - ENDIF - CASE nKey == K_LEFT - IF ::scrMovLft() - ::obj_[ nObj,OBJ_TO_COL ]-- - ENDIF - CASE nKey == K_DOWN - IF ::scrMovDn() - ::obj_[ nObj,OBJ_TO_ROW ]++ - ENDIF - CASE nKey == K_UP - IF ::scrMovUp() - ::obj_[ nObj,OBJ_TO_ROW ]-- - ENDIF - CASE nKey == K_ENTER - EXIT - ENDCASE - ::scrMove() - ::scrStatus() - ENDDO - - ::scrOrdObj() - ::scrMsg() - ::xRefresh := OBJ_REFRESH_ALL - ::lEdited := .t. - - RETURN NIL - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrAddFld( nObj ) - LOCAL h_, w_, o_, v_ - - DEFAULT nObj TO 0 - - v_:= iif( nObj > 0, ::scrObj2Vv( ::obj_[ nObj ] ), ::scrVrbBlank( OBJ_O_FIELD ) ) - h_:= ::scrVrbHeaders( OBJ_O_FIELD ) - - w_:= afill( array( Len( h_ ) ), {|| .T. } ) - - w_[ 2 ] := {| | VouchMenuM( 'MN_TYFLD' ) } - w_[ 3 ] := {|v| v := oAchGet( 2 ), iif( v == 'D', !oCPut( 8 ), iif( v == 'L', !oCPut( 1 ), .t. ) ) } - w_[ 4 ] := {|v| v := oAchGet( 2 ), iif( !( v == 'N' ), !oCPut( 0 ), .t. ) } - - ::scrMsg( "ENTER: Starts Editing Current Selection. CTRL_ENTER: When Done." ) - B_GETS HEADERS h_ VALUES v_ TITLE 'Configure Field' WHEN w_ INTO v_ - ::scrMsg() - - v_:= v_[ 1 ] - v_[ 1 ] := alltrim( trim( v_[ 1 ] ) ) - IF empty( v_[ 1 ] ) - RETURN NIL - ENDIF - - IF lastkey() != K_ESC - ::scrUpdateUndo() - - IF nObj == 0 - o_:= ::scrObjBlank() - ELSE - o_:= ::obj_[ nObj ] - ENDIF - o_[ OBJ_TYPE ] := OBJ_O_FIELD - - ::scrVv2Obj( v_, o_ ) - - o_[ OBJ_ROW ] := iif( nObj == 0, ::nRowRep, o_[ OBJ_ROW ] ) - o_[ OBJ_COL ] := iif( nObj == 0, ::nColRep, o_[ OBJ_COL ] ) - o_[ OBJ_TEXT ] := padc( alltrim( v_[ 1 ] ), v_[ 3 ] ) - o_[ OBJ_TO_ROW ] := iif( nObj == 0, ::nRowRep, o_[ OBJ_TO_ROW ] ) - o_[ OBJ_TO_COL ] := iif( nObj == 0, ::nColRep, o_[ OBJ_COL ] ) + v_[ 3 ] - 1 - - IF nObj == 0 - aadd( ::obj_, o_ ) - nObj := Len( ::obj_ ) - ELSE - ::obj_[ nObj ] := o_ - ENDIF - - ::nObjSelected := 0 - ::xRefresh := OBJ_REFRESH_LINE - ::nMode := 0 - ::lEdited := .t. - ENDIF - - IF nObj > 0 - ::scrOrdObj() - ENDIF - - RETURN Self - -//----------------------------------------------------------------------// - -METHOD hbCUIEditor:scrGetProperty( nObj ) - LOCAL o_, v_, w_, h_ - - o_:= ::obj_[ nObj ] - - SWITCH ::objType( nObj ) - - CASE OBJ_O_BOX - ::scrUpdateUndo() - - v_:= iif( nObj > 0, ::scrObj2Vv( ::obj_[ nObj ] ), ::scrVrbBlank( OBJ_O_BOX ) ) - h_:= ::scrVrbHeaders( OBJ_O_BOX ) - w_:= afill( array( Len( h_ ) ), {|| .T. } ) - - w_[ 2 ] := {| | VouchMenuM( 'MN_BOX' ) } - w_[ 3 ] := {| | VouchMenuM( 'MN_FILL' ) } - - ::scrMsg( "ENTER: Starts Editing Current Selection. CTRL_ENTER: When Done." ) - B_GETS HEADERS h_ VALUES v_ TITLE 'Configure Field' WHEN w_ INTO v_ - ::scrMsg() - - ::scrVv2Obj( v_[ 1 ], o_ ) - EXIT - - CASE OBJ_O_TEXT - ::scrUpdateUndo() - - v_:= iif( nObj > 0, ::scrObj2Vv( ::obj_[ nObj ] ), ::scrVrbBlank( OBJ_O_TEXT ) ) - h_:= ::scrVrbHeaders( OBJ_O_TEXT ) - w_:= afill( array( Len( h_ ) ), {|| .T. } ) - - ::scrMsg( "ENTER: Starts Editing Current Selection. CTRL_ENTER: When Done." ) - B_GETS HEADERS h_ VALUES v_ TITLE 'Configure Field' WHEN w_ INTO v_ - ::scrMsg() - - ::scrVv2Obj( v_[ 1 ], o_ ) - EXIT - - CASE OBJ_O_FIELD - ::scrAddFld( nObj ) - EXIT - - ENDSWITCH - - ::lEdited := .t. - - RETURN SELF - -/*----------------------------------------------------------------------*/ - -METHOD hbCUIEditor:scrPreview() - LOCAL nRows, nCols, a_, cColor, aScr, cPic - LOCAL nMaxRows := 0 - LOCAL nMaxCols := 0 - LOCAL getlist := {} - LOCAL g_ := {} - - aeval( ::obj_, {|e_| nMaxRows := max( e_[ OBJ_TO_ROW ], nMaxRows ), nMaxCols := max( e_[ OBJ_TO_COL ], nMaxCols ) } ) - - IF nMaxRows > 25 - nMaxRows++ - ELSE - nMaxRows := 25 - ENDIF - IF nMaxCols > 80 - nMaxCols++ - ELSE - nMaxCols := 80 - ENDIF - - nRows := maxrow() - nCols := maxcol() - aScr := VouchWndSave( 0,0,maxrow(),maxcol() ) - vstk_push() - - ::scrOrdObj() - aeval( ::obj_, {|e_| iif( e_[ OBJ_TYPE ] == OBJ_O_FIELD, aadd( g_, VouchVrbBlank( e_ ) ), aadd( g_, NIL ) ) } ) - - SetColor( "W/B" ) - SetCursor( 0 ) - SetMode( nMaxRows, nMaxCols ) - CLS - - FOR EACH a_ IN ::obj_ - cColor := VouchGetColor( a_[ OBJ_TYPE ], a_[ OBJ_COLOR ] ) - - SWITCH a_[ OBJ_TYPE ] - CASE OBJ_O_BOX - DispBox( a_[ OBJ_ROW ]-1, a_[ OBJ_COL ]-1, a_[ OBJ_TO_ROW ]-1, a_[ OBJ_TO_COL ]-1, a_[ OBJ_BOX_SHAPE ] + iif( a_[ OBJ_PATTERN ] == "CLEAR", "", " " ), cColor ) - EXIT - CASE OBJ_O_TEXT - @ a_[ OBJ_ROW ]-1, a_[ OBJ_COL ]-1 SAY a_[ OBJ_TEXT ] COLOR cColor - EXIT - CASE OBJ_O_FIELD - cPic := VouchGetPic( a_[ OBJ_F_TYPE ], a_[ OBJ_F_PIC ], a_[ OBJ_F_LEN ], a_[ OBJ_F_DEC ] ) - IF ! empty( cPic ) - @ a_[ OBJ_ROW ]-1, a_[ OBJ_COL ]-1 GET g_[ a_:__enumIndex() ] COLOR cColor PICTURE cPic - ELSE - @ a_[ OBJ_ROW ]-1, a_[ OBJ_COL ]-1 GET g_[ a_:__enumIndex() ] COLOR cColor - ENDIF - EXIT - ENDSWITCH - NEXT - - IF Len( getlist ) > 0 - READ - ELSE - DO WHILE inkey() != K_ESC; ENDDO - ENDIF - - SetMode( nRows + 1, nCols + 1 ) - VouchWndRest( aScr ) - vstk_pop() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION VouchGetPic( cType, cPic, nLen, nDec ) - LOCAL cP := "" - - IF cType == "N" - cP := iif( nDec > 0, replicate( "9", nLen - nDec - 1 ) + "." + replicate( "9", nDec ), replicate( "9", nLen ) ) - ELSE - IF left( cPic,1 ) == '"' .and. right( cPic,1 ) == '"' - cP := substr( cPic, 2, Len( cPic ) - 2 ) - ELSEIF left( cPic,1 ) == "'" .and. right( cPic,1 ) == "'" - cP := substr( cPic, 2, Len( cPic ) - 2 ) - ENDIF - ENDIF - - RETURN cP - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION VouchVrbBlank( o_ ) - - SWITCH o_[ OBJ_F_TYPE ] - CASE "C" - RETURN space( o_[ OBJ_F_LEN ] ) - CASE "M" - RETURN space( 10 ) - CASE "N" - RETURN 0 - CASE "D" - RETURN hb_stod() - CASE "L" - RETURN .f. - ENDSWITCH - - RETURN "" - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION VouchGetColor( cType, cColor ) - - IF left( cColor,1 ) == '"' .and. right( cColor,1 ) == '"' - RETURN cColor - ELSEIF left( cColor,1 ) == "'" .and. right( cColor,1 ) == "'" - RETURN cColor - ELSE - IF cType == OBJ_O_BOX - RETURN "W/B" - ELSEIF cType == OBJ_O_TEXT - RETURN "W/B" - ELSEIF cType == OBJ_O_FIELD - RETURN "N/W,GR+/BG" - ENDIF - ENDIF - - RETURN "W/B" - -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#define CGO_POS 1 -#define CGO_ROW 2 -#define CGO_LSEL 3 -#define CGO_LNUM 4 -#define CGO_CH_ 5 -#define CGO_SEL_ 6 -#define CGO_EXE_ 7 -#define CGO_SCROL 8 -#define CGO_LENSCR 9 - - -#define LEN_COL_STR 20 -#define LEN_VID_STK_ENTRY LEN_COL_STR + 3 - -/*----------------------------------------------------------------------*/ - -FUNCTION VouchInRange( v, r1, r2 ) - RETURN v >= r1 .AND. v <= r2 - -/*----------------------------------------------------------------------*/ - -FUNCTION pad_max( a_,lNum,max ) - LOCAL i := 1 - DEFAULT lNum TO .f. - IF max == NIL - max := 0 - aeval( a_, {|x| max := max( max,Len( x ) )} ) - ENDIF - aeval( a_, {|x| a_[ i ] := iif( lNum, str( i,3 ) + ' ', '' ) + pad( x,max ), i++ } ) - RETURN a_ - -/*----------------------------------------------------------------------*/ - -FUNCTION VouchInArray( v,a_ ) - RETURN ascan( a_,{|e| e = v } ) > 0 - -//----------------------------------------------------------------------// - -FUNCTION VouchAShrink( a_,n ) - IF n > 0 - adel( a_,n ) - asize( a_,Len( a_ )-1 ) - ENDIF - RETURN a_ - -//----------------------------------------------------------------------// - -FUNCTION setGetAch( v_ ) - LOCAL lCrt - THREAD STATIC sCrt := {} - lCrt := sCrt - IF HB_ISARRAY( v_ ) - sCrt := v_ - ENDIF - RETURN lCrt - -/*----------------------------------------------------------------------*/ - -FUNCTION VouchWndSave( t, l, b, r ) - LOCAL wnd_,crs - - crs := mSetCursor( .f. ) - DEFAULT t TO 0, ; - l TO 0, ; - b TO maxrow(), ; - r TO maxcol() - - wnd_:= { t, l, b, r, saveScreen( t,l,b,r ) } - - mSetCursor( crs ) - - RETURN wnd_ - -//----------------------------------------------------------------------// - -FUNCTION VouchWndRest( wnd_ ) - LOCAL crs, bError - - bError := errorblock( {|oErr| Break( oErr ) } ) - BEGIN SEQUENCE - crs := mSetCursor( .f. ) - RestScreen( wnd_[1], wnd_[2], wnd_[3], wnd_[4], wnd_[5] ) - mSetCursor( crs ) - END - errorblock( bError ) - - RETURN NIL - -//----------------------------------------------------------------------// - -FUNCTION Wvt() - RETURN .F. - -/*----------------------------------------------------------------------*/ - -FUNCTION VouchGetArray( h_,vv_, sel_, nTop, nLft, nBtm, nRgt, title, bWhen_, bValid_, pic_, hlp, ord_ ) - LOCAL i, scr , nSel, maxL, mLen, nDiff, clr - LOCAL nLenVrb, clr1, s, cTyp - LOCAL nLastKey,cgo_, aScrol_,nLenMnu,pmt_:={} - - HB_SYMBOL_UNUSED( hlp ) - HB_SYMBOL_UNUSED( ord_ ) - - IF h_== NIL .OR. !( valtype(h_) == 'A' ) .OR. vv_== NIL .OR. !( valtype(vv_) == 'A' ) - RETURN {vv_, 0} - ENDIF - - nLenVrb := 0 - aeval( vv_, {|e| cTyp := valtype( e ), nLenVrb := max( ; - iif( cTyp == 'C', Len( e ), ; - iif( cTyp == 'N', 15, iif( cTyp == 'D', 8, 3 ) ) ), nLenVrb ) } ) - - IF bWhen_ == NIL - bWhen_:= afill( array( Len( vv_) ), {|| .t. } ) - FOR i := 1 TO Len( vv_ ) - s := h_[ i ] - IF valtype( vv_[ i ] ) == 'L' - bWhen_[ i ] := {|| VouchYN( s, oGet() ), .f. } - ENDIF - NEXT - ENDIF - - IF bValid_ == NIL - bValid_:= afill( array( Len( vv_ ) ), {|| .t. } ) - ENDIF - - pmt_:={} - aeval(h_,{|e,i| aadd( pmt_, e + " {"+xtos(vv_[i])+ "}" ) }) - - // decide maximum length of the largest prompt - mLen := 0 - aeval( pmt_, {|x| mLen := max( mLen, Len( x ) ) } ) - mLen := max( Len( h_[ 1 ] ) + 2 + nLenVrb, mLen ) + 2 - - IF nTop == NIL - nTop := int( ( maxrow() - min( 3 + Len( h_ ), maxrow() - 3 ) ) / 2 ) - ENDIF - IF nBtm == NIL - nBtm := min( nTop + Len( h_ ) + 3, maxrow() - 3 ) - ENDIF - - IF nLft == NIL - nLft := max( 4,int( ( maxcol() - min( 2+mLen, maxcol()-8 ) ) / 2 ) ) - ENDIF - IF nRgt == NIL - nRgt := nLft + mLen - IF nRgt > maxcol() - 4 - nDiff := nRgt - (maxcol()-4) - IF nLft - nDiff < 0 - nLft := 4 - nRgt := maxcol()-4 - ELSE - nLft := nLft - nDiff - nRgt := nLft + mLen - ENDIF - ENDIF - ENDIF - - IF title == NIL .OR. empty( title ) - title = "Untitled" - ELSE - title := alltrim( title ) - ENDIF - title := padc( title, nRgt - nLft ) - title := { title, replicate( chr( 196 ), Len( title ) + 2 ) } - maxL := Len( h_[ 1 ] ) - sel_ := iif( sel_ == NIL, .t., sel_ ) - - vstk_push() - setcursor(0) - - scr := VouchWndSave( max( 0, nTop -1 ), max( 0, nLft-1 ), nBtm + 1, nRgt + 2, .f. ) - - B_MSG title AT nTop, nLft TO nBtm, nRgt SHADOW - clr := "W+/BG" - setcolor( clr + "," + "+GR/B" + ",,," + "N" + substr( clr, at( "/", clr ) ) ) - aScrol_ := ScrolBarNew( nTop + 2, nRgt, nBtm, "gr+/b" ) - - nLenMnu := Len( pmt_ ) - clr1 := setColor() - - ScrolBarDisplay( aScrol_ ) - ScrolBarUpdate( aScrol_, 1, nLenMnu, .t. ) - - cgo_:= { 1, 0, .f., .f., pmt_, sel_,/*exe_*/, aScrol_, nLenMnu } - - SetGetAch( vv_ ) - - IF pic_ == NIL - pic_:= array( Len( vv_ ) ) - FOR i := 1 TO Len( vv_ ) - cTyp := valtype( vv_[ i ] ) - pic_[ i ] := iif( cTyp == "C", "@S" + hb_ntos( nLenVrb ) + "K ", iif( cTyp == "N", "@Z 99999999.999", iif( cTyp == "L", "Y", "@ " ) ) ) - NEXT - ENDIF - - DO WHILE .t. - setColor( clr1 ) - - pmt_:= {} - aeval( h_, {|e,i| aadd( pmt_, e + " {" + xtos( vv_[ i ] ) + "}" ) } ) - cgo_[ CGO_CH_ ] := pmt_ - - clear typeahead - nSel := VouchAChoice( nTop + 3, nLft + 1, nBtm - 1, nRgt - 1, ; - cgo_[ CGO_CH_ ], cgo_[ CGO_SEL_ ], "VouchFunc1", ; - cgo_[ CGO_POS ], cgo_[ CGO_ROW ],/* oWin */, @nLastKey, cgo_ ) - - IF nLastKey == K_ENTER - vv_[ nSel ] := VouchGetChoice( vv_[ nSel ], nTop + cgo_[ CGO_ROW ] + 3, ; - nLft + maxL + 1, nRgt - 1, bWhen_[ nSel ], ; - bValid_[ nSel ], pic_[ nSel ] ) - - ELSEIF nLastKey == K_F10 - EXIT - ELSEIF nLastKey == K_ESC - EXIT - ELSEIF nLastKey == K_CTRL_ENTER - EXIT - ELSEIF nLastKey == K_CTRL_END - EXIT - ENDIF - ENDDO - - vstk_pop() - VouchWndRest(scr) - - RETURN{ vv_, nSel } - -/*----------------------------------------------------------------------*/ - -FUNCTION VouchFunc1( mode, nElem, nRow, nKey, cgo_ ) - LOCAL ret := AC_CONT - - IF nKey != 0 - ScrolBarUpdate( cgo_[CGO_SCROL], nElem, cgo_[CGO_LENSCR], .t. ) - ENDIF - - cgo_[CGO_POS] := nElem - cgo_[CGO_ROW] := nRow - - DO CASE - CASE mode == AC_IDLE - CASE mode == AC_HITTOP - //NannyBoo - CASE mode == AC_HITBOTTOM - //Charge - CASE mode == AC_NOITEM - ret := AC_ABORT - OTHERWISE - DO CASE - CASE nKey == K_CTRL_END - ret := AC_SELECT - CASE nKey == K_ENTER - ret := AC_SELECT - CASE nKey == K_CTRL_ENTER - ret := AC_SELECT - CASE nKey == K_F10 - ret := AC_SELECT - CASE nKey == K_ESC - ret := AC_ABORT - CASE nKey > 31 .AND. nKey < 123 - cgo_[CGO_POS] := scan_ff( cgo_[CGO_POS], cgo_[CGO_CH_], chr( nKey ), 3 ) - RETURN AC_ABORT - ENDCASE - ENDCASE - - RETURN ret - -//----------------------------------------------------------------------// - -STATIC FUNCTION scan_ff( elem, a_, c /*, nFrom */ ) - LOCAL na, nlen - - c := lower( substr( c,1,1 ) ) - nLen := Len( c ) - IF ( na := ascan( a_,{|e| lower( substr( ltrim( e ),1,nLen ) ) == c }, min( elem+1, Len( a_ ) ) ) ) == 0 - na := ascan( a_,{|e| lower( substr( ltrim( e ),1,nlen ) ) == c },1,elem-1 ) - ENDIF - - RETURN iif( na == 0, elem, na ) - -//----------------------------------------------------------------------// - -STATIC FUNCTION VouchGetChoice( vrb, row, col, e_col, whn, vld, pic ) - LOCAL scr, maxL, n_vrb, dec, r, c, r1, c1, crs, clr - LOCAL type := valtype( vrb ) - LOCAL getlist := {} - - IF type == "N" - n_vrb := str( vrb ) - dec := at( ".", n_vrb ) - IF pic == NIL - IF dec > 0 - pic := replicate( "9", maxL -( maxL - dec ) - 1 ) + "." + replicate( "9", maxL - dec ) - ELSE - pic := replicate( "9", maxL ) - ENDIF - ENDIF - ELSEIF type == "D" - pic := "" - ELSEIF type == "L" - pic := "Y" - ELSEIF type == "C" - maxL := Len( vrb ) - pic := "@K" - IF ( maxL + col ) > e_col - pic += "S" + ltrim( str( e_col - col ) ) - ENDIF - ENDIF - - r := row - c := col - r1 := r - c1 := e_col - - clr := SetColor() - scr := VouchWndSave( r-1, c-1, r1, c1 ) - - @ r, c clear TO r1, c1 - - crs := setcursor( 1 ) - @ r, c+1 get vrb when whn() valid vld() picture pic - atail( getlist ):cargo := { whn,vld } - read - - setcursor( crs ) - SetColor( clr ) - VouchWndRest( scr ) - - RETURN vrb - -//----------------------------------------------------------------------// - -STATIC FUNCTION ScrolBarUpdate() - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION ScrolBarDisplay() - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION ScrolBarNew() - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION whn() - RETURN eval( getActive():cargo[1] ) - -//----------------------------------------------------------------------// - -STATIC FUNCTION vld() - RETURN eval( getActive():cargo[2] ) - -//----------------------------------------------------------------------// - -FUNCTION oAchGet( n ) - RETURN setGetAch()[n] - -//----------------------------------------------------------------------// - -/* -STATIC FUNCTION oAchPut( n,v ) - setGetAch()[n] := v - RETURN .t. -*/ - -//----------------------------------------------------------------------// - -FUNCTION oCPut( v ) - getactive():varPut( v ) - RETURN .t. - -//----------------------------------------------------------------------// - -STATIC FUNCTION oGet() - RETURN getActive():varGet() - -//----------------------------------------------------------------------// - -FUNCTION GetCrtCargoSlots() - RETURN { .f.,.f.,.f.,.f.,.f.,.f.,.f.,.f.,.f.,.f. } - -/*----------------------------------------------------------------------*/ - -FUNCTION xtos( x ) - LOCAL type := valtype( x ) - DO CASE - CASE type == 'C' - RETURN alltrim( x ) - CASE type == 'D' - RETURN dtoc( x ) - CASE type == 'L' - RETURN iif( x, 'Y', 'N' ) - CASE type == 'N' - RETURN ltrim( str( x ) ) - ENDCASE - RETURN "" - -//----------------------------------------------------------------------// - -FUNCTION VouchRgb( nR, nG, nB ) - RETURN nR +( nG * 256 ) +( nB * 256 * 256 ) - -//---------------------------------------------------------------------// - -FUNCTION VouchYN( msg, nInit ) - LOCAL g := getactive(), sel - - msg := iif( msg==NIL,'',msg ) - nInit := iif( nInit==NIL,1,iif( valtype( nInit )=='N',nInit,iif( nInit,1,2 ) ) ) - - B_MSG msg CHOOSE 'Yes','No ' TRIGGER {1,1} INITIAL nInit ; - RESTORE SHADOW AT g:row - 3, g:col INTO sel - - IF g != NIL - g:varPut( iif( sel == 1, .t., .f. ) ) - ENDIF - - RETURN sel == 1 - -//----------------------------------------------------------------------// - -FUNCTION VouchMenuMM( mnu_,nInit,msg,lExact,aSel ) - LOCAL n, i, t, m_:={} - - DEFAULT nInit TO getActive():varGet() - DEFAULT msg TO 'Select an Option' - DEFAULT lExact TO .f. - DEFAULT aSel TO {} - - aSel := asize( aSel, Len( mnu_ ) ) - FOR i := 1 TO Len( mnu_ ) - DEFAULT aSel[ i ] TO .t. - NEXT - - aeval( mnu_,{|e_| aadd( m_,e_[ 1 ] ) } ) - - IF ( t := valtype( nInit ) ) == 'C' - //nInit := iif( lExact, nInit, trim( nInit ) ) - ENDIF - - n := max( 1, ascan( mnu_, {|e_| ; - iif( t, iif( lExact, nInit, trim( nInit ) ) $ e_[ 2 ], nInit = e_[ 2 ] ) } ) ) - - B_MSG msg CHOOSE m_ INITIAL n SELECTABLES aSel RESTORE SHADOW AT row()-3,col() WVT .T. INTO n - n := max( 1,n ) - - getActive():varPut( iif( t,pad( mnu_[n,2],Len( nInit ) ),mnu_[n,2] ) ) - - RETURN .f. - -//----------------------------------------------------------------------// - -FUNCTION VouchMenuM( id,nInit,msg ) - LOCAL n, m_:={},t, mnu_ - - DEFAULT msg TO 'Select' - DEFAULT nInit TO getActive():varGet() - - mnu_:={} - DO CASE - CASE id == "MN_TYFLD" - aadd( mnu_, { "Character", "C" } ) - aadd( mnu_, { "Numeric" , "N" } ) - aadd( mnu_, { "Date" , "D" } ) - aadd( mnu_, { "Logical" , "L" } ) - - CASE id == "MN_BOX" - aadd( mnu_, { "B_SINGLE" , B_SINGLE } ) - aadd( mnu_, { "B_DOUBLE" , B_DOUBLE } ) - aadd( mnu_, { "B_SINGLE_DOUBLE" , B_SINGLE_DOUBLE } ) - aadd( mnu_, { "B_DOUBLE_SINGLE" , B_DOUBLE_SINGLE } ) - - CASE id == "MN_FILL" - aadd( mnu_, { "Clear" , "CLEAR" } ) - aadd( mnu_, { "Filled", "FILLED" } ) - - ENDCASE - - aeval( mnu_,{|e_| aadd( m_,e_[ 1 ] ) } ) - t := valtype( nInit ) == 'C' - n := max( 1, ascan( mnu_, {|e_| iif( t, trim( nInit ) $ e_[ 2 ], nInit == e_[ 2 ] ) } ) ) - - B_MSG msg CHOOSE m_ INITIAL n INTO n RESTORE SHADOW AT row()-3,col() WVT .T. - n := max( 1,n ) - - getActive():varPut( mnu_[n,2] ) - - RETURN .f. // Note, because the FUNCTION is used IN when clause - -//----------------------------------------------------------------------// - -FUNCTION vstk_push() - s_vid_stk := chr( set( _SET_CURSOR ) ) + ; - chr( row() ) + chr( col() ) + ; - pad( setcolor(), LEN_COL_STR ) + ; - s_vid_stk - RETURN NIL - -//----------------------------------------------------------------------// - -FUNCTION vstk_pop() - IF Len( s_vid_stk ) > 0 - setcursor( asc( substr( s_vid_stk, 1, 1 ) ) ) - //@ asc( substr( s_vid_stk, 2, 1 ) ), asc( substr( s_vid_stk, 3, 1 ) ) SAY "" - devpos( asc( substr( s_vid_stk, 2, 1 ) ), asc( substr( s_vid_stk, 3, 1 ) ) ) - setcolor( substr( s_vid_stk, 4, LEN_COL_STR ) ) - s_vid_stk := substr( s_vid_stk, LEN_VID_STK_ENTRY + 1 ) - ENDIF - RETURN NIL - -//----------------------------------------------------------------------// - -FUNCTION VouchMsgBox(r1, c1, r2, c2, width, depth, msg_, msgClr, ; - ch_, chClr, wait, restore, paste, shadow, trg_, sel, lSelect_, abr, ; - lSlctns, lLeftRight, center, tagged_,lNumeric,help,exe_,num_,; - lNoXpp, oWin, cIcon, lWvt, nAlign ) - - LOCAL msgLen := 0, chLen := 0, maxLen, pmtWidth, xRet:= NIL - LOCAL boxWide, boxDeep, oldCur, oldClr, oldScr, oldR, oldC, tBoxDeep - LOCAL i, oGet, oVal, gap, mCrs,n,nLastKey, cr1 - LOCAL nLenScrol, nMsg, clr, aScrolbar - LOCAL nSlctns_:={}, dd_:={}, cgo_:={} - - HB_SYMBOL_UNUSED( trg_ ) - HB_SYMBOL_UNUSED( help ) - HB_SYMBOL_UNUSED( cIcon ) - HB_SYMBOL_UNUSED( lWvt ) - - DEFAULT lNoXpp TO .f. - DEFAULT nAlign TO 2 // only FOR wvt . center - - DEFAULT ch_ TO {} - DEFAULT restore TO .f. - - DEFAULT r1 TO row() - DEFAULT c1 TO col() - DEFAULT msg_ TO {} - DEFAULT ch_ TO {} - DEFAULT lSelect_ TO {} - DEFAULT msgClr TO 1 //"W+/BG" - DEFAULT chClr TO 3 //"+W/B" - DEFAULT restore TO .f. - DEFAULT paste TO .f. - DEFAULT shadow TO .f. - DEFAULT abr TO .f. - DEFAULT lSlctns TO .f. - DEFAULT lLeftRight TO .f. - DEFAULT center TO .f. - DEFAULT tagged_ TO {} - DEFAULT lNumeric TO .f. - DEFAULT num_ TO {} - - oGet := iif( paste, getactive(), oGet ) - - IF ( Len( msg_) > 0) .AND. (valtype (msg_[1]) == "A" ) - msg_ := aclone( msg_[ 1 ] ) - ENDIF - IF ( Len( msg_ ) > 0 ) .AND. ( msg_[1] == NIL ) - msg_:= {} - ENDIF - IF ( Len( ch_ ) > 0 ) .AND. ( valtype( ch_[ 1 ] ) = "A" ) - ch_:= aclone( ch_[ 1 ] ) - ENDIF - IF Len( msg_ ) == 0 .AND. len( ch_ ) == 0 - RETURN .f. - ENDIF - - IF lSlctns - IF lNumeric - IF empty(num_) - FOR i := 1 TO Len (ch_) - ch_[i] := ' '+ch_[i] - NEXT - ELSE - FOR i := 1 TO Len (ch_) - IF (n := ascan(num_,i))==0 - ch_[ i ] := ' '+ch_[i] - ELSE - ch_[ i ] := pad( hb_ntos( n ), 4 ) + ch_[ i ] - ENDIF - NEXT - ENDIF - ELSE - FOR i := 1 TO Len( ch_ ) - ch_[ i ] := iif( empty( tagged_ ),' ', iif( tagged_[ i ], CHECKMARK + ' ', ' ' ) ) + ch_[ i ] - NEXT - ENDIF - ENDIF - - aeval( msg_, {|s| msgLen := max( msgLen, Len( s ) ) } ) - aeval( ch_, {|s| chLen := max( chLen, Len( s ) ) } ) - maxlen := max( msgLen, chLen ) - aeval( ch_, {|s,i| s := s, ch_[ i ] := pad( ch_[ i ], maxLen ) } ) - - IF empty( lSelect_ ) - lSelect_:= {} - aeval( ch_, {|s| aadd( lSelect_, iif( empty( s ), .f., .t. ) ) } ) - ELSE - aeval( ch_, {|s,i| lSelect_[ i ] := iif( empty( s ), .f., lSelect_[ i ] ) } ) - ENDIF - IF ascan( lSelect_, {|e| e } ) == 0 - IF Len(ch_) > 0 - RETURN 0 - ENDIF - ENDIF - - nMsg := Len( msg_ ) -// nOff := iif( nMsg == 1, 0, 1 ) - - boxDeep := iif( Len( msg_ )=0,0,len( msg_ )+1 ) + iif( len( ch_ )=0,0,len( ch_ )+1 ) - tBoxDeep := boxDeep - boxDeep := min( boxDeep, maxrow() - r1 ) - boxWide := max( msgLen, chLen ) + 3 - - DEFAULT r2 TO r1 + iif( depth = NIL, boxDeep, depth ) - DEFAULT c2 TO c1 + iif( width = NIL, boxWide, width ) - - IF center - r1 := int( ( maxrow() - tBoxDeep ) / 2 ) - r1 := iif( r1 <= 0,1,r1 ) - r2 := r1 + tBoxDeep - IF r2 > maxrow() - 1 - r2 := maxrow() - 1 - ENDIF - - c1 := int( ( maxcol() - boxWide ) / 2 ) - c1 := iif( c1 < 0, 3, c1 ) - c2 := c1 + boxWide - IF c2 > maxcol()-3 - c2 := maxcol()-3 - ENDIF - ELSE - IF r2 <= r1 - r2 := maxrow() - ENDIF - IF c2 <= c1 - c2 := maxcol() - ENDIF - IF r2 > maxrow() - gap := (r2 - maxrow () ) - r2 := r2 - gap - r1 := r1 - gap - ENDIF - IF c2 > maxcol() - 4 - gap := ( c2 - maxcol() + 4 ) - c2 := c2 - gap - c1 := c1 - gap - ENDIF - ENDIF - - IF shadow - IF r2 == maxrow() - r2 := r2 - 1 - ENDIF - IF c2 == maxcol () - c2 := c2 - 2 - c1 := c1 - 2 - ENDIF - ENDIF - - IF restore - IF shadow - oldScr := VouchWndSave( max( 0,r1-2 ), max( 0,c1-2 ), r2 + 1 , c2 + 3 ) - ELSE - oldScr := VouchWndSave( r1, c1, r2, c2 ) - ENDIF - ENDIF - - IF sel == NIL .OR. sel < 1 .OR. sel > Len( ch_ ) - sel := 1 - ENDIF - - vstk_push() - - oldR := row() - oldC := col() - oldCur := setcursor( 0 ) - oldClr := SetColor( "W+/BG" ) - mCrs := mSetCursor( .f. ) - - dispbox( r1, c1, r2, c2, B_SLIM + " " ) - IF shadow - VouchShadow( r1, c1, r2, c2 ) - ENDIF - - FOR i = 1 TO min( Len( msg_ ), r2 - ( r1 + 1 ) ) - devpos( r1 + i, c1 + 2 ) - devout( pad( msg_[ i ], c2 - ( c1 + 3 ) ) ) - NEXT i - mSetCursor( mCrs ) - - clr := "W+/BG" - IF Len( ch_ ) > 0 - IF nMsg > 0 - mCrs := mSetCursor(.f.) - devpos( r1 + 1 + nMsg, c1 + 1 ) - devout( replicate( chr( 196 ), c2 - ( c1 + 1 ) ) ) - mSetCursor( mCrs ) - cr1 := r1 + nMsg + 2 - ELSE - cr1 := r1 + 1 - ENDIF - - setcolor( clr + "," + "+W/B" + ",,," + "N" + substr( clr, at( "/", clr ) ) ) - aScrolBar := ScrolBarNew( cr1 - 1, c2, r2 /*, colorGet( C_SCROLL ) )*/ ) - - nLenScrol := Len( ch_ ) - pmtWidth := c2 - c1 - 3 - aeval( ch_, {|e,i| ch_[ i ] := pad( e, pmtWidth ) } ) - - ScrolBarDisplay( aScrolBar ) - ScrolBarUpdate( aScrolBar, sel, nLenScrol, .t. ) - - cgo_:= { sel, 0, lSlctns, lNumeric, ch_, lSelect_, exe_, aScrolbar, nLenScrol } - - DO WHILE .t. - sel := VouchAChoice( cr1, c1 + 2, r2 - 1, c1 + (c2 - c1) - 2, ; - cgo_[CGO_CH_], cgo_[CGO_SEL_], "VouchFunc2", ; - cgo_[CGO_POS], cgo_[CGO_ROW], oWin, ; - @nLastKey, @cgo_ ) - IF !lSlctns - EXIT - ELSE - IF nLastKey == K_ESC ; - .OR. nLastKey == K_CTRL_ENTER ; - .OR. nLastKey == K_ALT_F7 - EXIT - ENDIF - ENDIF - ENDDO - - ELSEIF valtype (wait) = "N" - sel := inkey (wait) - ENDIF - - IF paste - IF valtype( oGet:varGet() ) == "C" - oVal := oGet:varGet() - oGet:varPut( pad( ch_[ iif( sel = 0,1,sel ) ], Len( oVal ) ) ) - oGet:display() - ENDIF - ENDIF - - IF restore - VouchWndRest( oldScr ) - oldscr := NIL - ENDIF - - IF lSlctns - IF !lNumeric - FOR i = 1 TO Len( cgo_[CGO_CH_] ) - IF substr( cgo_[CGO_CH_,i], 1, 1) == CHECKMARK - aadd( nSlctns_,i ) - ENDIF - NEXT - ELSE - FOR i := 1 TO Len(cgo_[CGO_CH_]) - IF val( left( cgo_[CGO_CH_,i],4 ) )>0 - aadd( dd_,{val( left( cgo_[CGO_CH_,i],4 ) ),i} ) - ENDIF - NEXT - IF !empty(dd_) - asort(dd_,,,{|e_,f_| e_[1]0 - cgo_[CGO_CH_,cgo_[CGO_POS]] := " "+substr( cgo_[CGO_CH_,cgo_[CGO_POS]],5 ) - cgo_[CGO_POS] := min( cgo_[CGO_POS]+1,Len( cgo_[CGO_CH_] ) ) - FOR i := 1 TO Len( cgo_[CGO_CH_] ) - IF ( nn := val( left( cgo_[CGO_CH_,i],4 ) ) )>0 - IF nn > n - nn := nn - 1 - s := iif( nn > 0,pad( hb_ntos( nn ),4 )," " ) - cgo_[CGO_CH_,i] := s + substr( cgo_[CGO_CH_,i],5 ) - ENDIF - ENDIF - NEXT - ELSE - nn := 0 - n := 0 - aeval( cgo_[CGO_CH_], {|e| n := val( left( e,4 ) ), nn := iif( n>nn,n,nn ) } ) - cgo_[CGO_CH_,cgo_[CGO_POS]] := pad( hb_ntos( nn+1 ),4 ) + substr( cgo_[CGO_CH_,cgo_[CGO_POS]],5 ) - cgo_[CGO_POS] := min( cgo_[CGO_POS]+1, Len( cgo_[CGO_CH_] ) ) - ENDIF - RETURN AC_ABORT - ENDIF - ELSE - RETURN AC_SELECT - ENDIF - - CASE nKey = K_CTRL_ENTER - RETURN AC_SELECT - CASE nKey = HB_K_RESIZE - RETURN AC_CONT - OTHERWISE - IF cgo_[CGO_LSEL] - cgo_[CGO_POS] := scan_f( cgo_[CGO_POS], cgo_[CGO_CH_], nKey, iif( !cgo_[CGO_LNUM],3,5 ) ) - RETURN AC_ABORT - ELSE - RETURN AC_GOTO - ENDIF - ENDCASE - CASE nmode = AC_NOITEM - RETURN AC_ABORT - OTHERWISE - RETURN AC_GOTO - ENDCASE - - RETURN AC_CONT - -//----------------------------------------------------------------------// - -STATIC FUNCTION scan_f( elem, a_, key, nFrom ) - LOCAL n := elem, na, c - - c := lower( chr( key ) ) - na := ascan( a_, {|e| lower( substr( e, nFrom, 1 ) ) == c }, min( elem + 1, Len( a_ ) ) ) - IF na == 0 - na := ascan( a_,{|e| lower( substr( e, nFrom, 1 ) ) == c },1,elem-1 ) - ENDIF - IF na != 0 - n := na - ENDIF - RETURN n - -//----------------------------------------------------------------------// - -#define BLACK 0 -#define WHITE 7 -#define DK_GRAY 8 - -#define ATTR_CONV( FORE, BACK ) (BACK)*16+(FORE) -#define COL_SHADOW_ATTRIBUTE ATTR_CONV( DK_GRAY, BLACK ) - -//----------------------------------------------------------------------// - -STATIC FUNCTION VouchShadow( t, l, b, r ) - IF r < maxcol() - 1 .AND. b < maxrow() - sha_attr( b + 1, l + 1, b + 1, r + 1, COL_SHADOW_ATTRIBUTE ) - sha_attr( t + 1, r + 1, b + 1, r + 2, COL_SHADOW_ATTRIBUTE ) - ENDIF - RETURN NIL - -//----------------------------------------------------------------------// - -STATIC FUNCTION sha_attr( t, l, b, r, new_attr ) - LOCAL old_scr_area, new_scr_area, i - - old_scr_area := savescreen( t, l, b, r ) - new_scr_area = "" - - FOR i = 1 TO Len( old_scr_area ) STEP 2 - new_scr_area := new_scr_area + substr( old_scr_area, i, 1 ) + chr( new_attr ) - NEXT - - restscreen( t, l, b, r, new_scr_area ) - RETURN NIL - -//----------------------------------------------------------------------// - -FUNCTION VouchGetSome( msg, vrb, pass, pic, set_, wh, vl, nLastKey ) - LOCAL screen, l, nMaxLen, nLenMsg, nLenVrb, clr, r - LOCAL t := maxrow()-7 - LOCAL b := maxrow()-3 - LOCAL GetList := {} - LOCAL dType := valtype( vrb ) - - HB_SYMBOL_UNUSED( set_ ) - HB_SYMBOL_UNUSED( nLastKey ) - - DEFAULT msg TO 'Please Enter Required Value' - DEFAULT wh TO {|| .t. } - DEFAULT vl TO {|| .t. } - DEFAULT pass TO .f. - DEFAULT pic TO iif( dType == 'Y', 'Y', '@K ' ) - - clr := SetColor() - - nMaxLen := maxcol() - 7 - nLenMsg := Len( msg ) - - DO CASE - CASE dType == 'D' ; nLenVrb := 8 - CASE dType == 'N' ; nLenVrb := 17 - CASE dType == 'C' ; nLenVrb := Len( vrb ) - CASE dType == 'L' ; nLenVrb := 1 - ENDCASE - - IF nLenMsg + nLenVrb > nMaxLen // Only when vrb type c will be asked - nLenVrb := nMaxLen - nLenMsg - 7 - pic := substr( pic, 1, 1 ) + 'S' + hb_ntos( nLenVrb ) + substr( pic, 2 ) - ENDIF - - pic := iif( dType == 'N', '@Z 99999999999999.99', pic ) - l := ( ( maxcol() + 1 - ( nLenMsg + nLenVrb + 7 ) ) / 2 ) - r := l + nLenMsg + nLenVrb + 6 - - SetColor( 'W+/RB,GR+/BG,,,W+/BG' ) - vstk_push() - screen := VouchWndSave( t-1, l-4, b+2, r+3 ) - - dispbox( t, l, b, r, B_SLIM + " " ) - VouchShadow( t, l, b, r ) - - @ t+2, l+3 SAY msg GET vrb PICTURE pic WHEN eval(wh) VALID eval(vl) - setCursor(1) - read - - VouchWndRest( screen ) - vstk_pop() - SetColor( clr ) - - RETURN vrb - -/*----------------------------------------------------------------------*/ - -FUNCTION help( cToken ) - LOCAL nKey, nRows, nCols, aScr, lSetMode - - nRows := maxrow() - nCols := maxcol() - aScr := VouchWndSave( 0, 0, maxrow(), maxcol() ) - lSetMode := nRows != 27 .or. nCols != 79 - Vstk_push() - - IF lSetMode - SetMode( 28,80 ) - ENDIF - - SetCursor( 0 ) - SetColor( "W/B" ) - - DispBegin() - CLS - DispHelp( cToken ) - DispEnd() - - DO WHILE .t. - nKey := inkey() - IF nKey == K_ESC - SetHelpStr( "" ) - EXIT - ELSEIF nKey == 49 - SetHelpStr( "Keys" ) - __keyboard( chr( K_F1 ) ) - EXIT - ELSEIF nKey == 50 - SetHelpStr( "General-1" ) - __keyboard( chr( K_F1 ) ) - EXIT - ELSEIF nKey == 51 - SetHelpStr( "General-2" ) - __keyboard( chr( K_F1 ) ) - EXIT - ELSEIF nKey == 52 - SetHelpStr( "General-3" ) - __keyboard( chr( K_F1 ) ) - EXIT - ELSEIF nKey == 53 - SetHelpStr( "About" ) - __keyboard( chr( K_F1 ) ) - EXIT - ENDIF - ENDDO - - IF lSetMode - SetMode( nRows + 1, nCols + 1 ) - ENDIF - VouchWndRest( aScr ) - Vstk_pop() - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -FUNCTION SetHelpStr( cStr ) - LOCAL o_str - STATIC s_str := "" - - o_str := s_str - IF HB_ISSTRING( cStr ) - s_str := cStr - ENDIF - - RETURN o_str - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION DispHelp( cToken ) - - DEFAULT cToken TO SetHelpStr() - IF empty( cToken ) - cToken := "KEYS" - ENDIF - - SWITCH Upper( cToken ) - - CASE "KEYS" - /* HB_SCREEN_BEGINS */ - - /// 1 3 C 76 0 - @ 1, 2 SAY " Keys " COLOR "N/W*" - /// 2 3 C 12 0 - @ 3, 10 SAY "This screen." - /// 3 3 C 7 0 - @ 3, 2 SAY "F1 " COLOR "GR+/B" - /// 4 3 C 7 0 - @ 4, 2 SAY "F4 " COLOR "GR+/B" - /// 5 3 C 59 0 - @ 4, 10 SAY "Properties of current object in a selectable/editable list." - /// 6 3 C 64 0 - @ 5, 10 SAY "Edit current object: Text-no action, Box-resize action, Field-F4" - /// 7 3 C 7 0 - @ 5, 2 SAY "F5 " COLOR "GR+/B" - /// 8 3 C 7 0 - @ 6, 2 SAY "F6 " COLOR "GR+/B" - /// 9 3 C 40 0 - @ 6, 10 SAY "Selects current object (Box/Field/Text)." - /// 10 3 C 7 0 - @ 7, 2 SAY "F7 " COLOR "GR+/B" - /// 11 3 C 39 0 - @ 7, 10 SAY "Copies current object (Box/Field/Text)." - /// 12 3 C 48 0 - @ 8, 10 SAY "Pastes copied object at current cursor position." - /// 13 3 C 7 0 - @ 8, 2 SAY "F8 " COLOR "GR+/B" - /// 14 3 C 7 0 - @ 9, 2 SAY "F9 " COLOR "GR+/B" - /// 15 3 C 32 0 - @ 9, 10 SAY "Starts to define new box object." - /// 16 3 C 25 0 - @ 10, 10 SAY "Defines a new GET object." - /// 17 3 C 7 0 - @ 10, 2 SAY "F10 " COLOR "GR+/B" - /// 18 3 C 63 0 - @ 12, 10 SAY "Deletes current object (Box/Field) or current character (Text)." - /// 19 3 C 7 0 - @ 12, 2 SAY "Del " COLOR "GR+/B" - /// 20 3 C 36 0 - @ 13, 10 SAY "Cursor is positioned at column zero." - /// 21 3 C 7 0 - @ 13, 2 SAY "Home " COLOR "GR+/B" - /// 22 3 C 63 0 - @ 14, 10 SAY "Cursor is positioned at the next to last column of last object." - /// 23 3 C 7 0 - @ 14, 2 SAY "End " COLOR "GR+/B" - /// 24 3 C 54 0 - @ 16, 10 SAY "Inserts blank row, all objects are moved down one row." - /// 25 3 C 7 0 - @ 16, 2 SAY "Alt_N " COLOR "GR+/B" - /// 26 3 C 66 0 - @ 17, 10 SAY "Deletes objects on current row, next objects are moved up one row." - /// 27 3 C 7 0 - @ 17, 2 SAY "Alt_O " COLOR "GR+/B" - /// 28 3 C 7 0 - @ 18, 2 SAY "Alt_G " COLOR "GR+/B" - /// 29 3 C 53 0 - @ 18, 10 SAY "Re-order GETS. This is different than creation order." - /// 30 3 C 7 0 - @ 20, 2 SAY "Ctrl_F6" COLOR "GR+/B" - /// 31 3 C 23 0 - @ 20, 10 SAY "Begins block selection." - /// 32 3 C 36 0 - @ 21, 10 SAY "Copy selected block at new location." - /// 33 3 C 7 0 - @ 21, 2 SAY "Ctrl_F7" COLOR "GR+/B" - /// 34 3 C 7 0 - @ 22, 63 SAY "Alt_Z " COLOR "GR+/B" - /// 35 3 C 45 0 - @ 22, 10 SAY "Cut and paste selected block at new location." - /// 36 3 C 4 0 - @ 22, 71 SAY "Undo" - /// 37 3 C 7 0 - @ 22, 2 SAY "Ctrl_F8" COLOR "GR+/B" - /// 38 3 C 7 0 - @ 24, 63 SAY "Alt_P " COLOR "GR+/B" - /// 39 3 C 7 0 - @ 24, 71 SAY "Preview" - /// 40 3 C 7 0 - @ 24, 33 SAY "Alt_L " COLOR "GR+/B" - /// 41 3 C 20 0 - @ 24, 41 SAY "Load another screen." - /// 42 3 C 7 0 - @ 24, 2 SAY "Alt_S " COLOR "GR+/B" - /// 43 3 C 21 0 - @ 24, 10 SAY "Save designed screen." - /// 44 3 C 76 0 - @ 26, 2 SAY " ESC-Designer 1-Keys 2-General 3-ListedInputs 4-BlockSelection 5-About " COLOR "N/W*" - - /* HB_SCREEN_ENDS */ - EXIT - - CASE "GENERAL-1" - /* HB_SCREEN_BEGINS */ - - /// 1 3 C 76 0 - @ 1, 2 SAY " General " COLOR "N/W*" - /// 2 3 C 76 0 - @ 3, 2 SAY "hbCuiEd is a fixed-coordinated, character based screen designer which allows" - /// 3 3 C 76 0 - @ 4, 2 SAY "to arrange Harbour's GT oriented objects in visual interaction and saves the" - /// 4 3 C 76 0 - @ 5, 2 SAY "results as Harbour source code (with some meta info) directly into the .PRG " - /// 5 3 C 73 0 - @ 6, 2 SAY "file ready to be compiled and linked. Thus generated forms can be edited " - /// 6 3 C 76 0 - @ 7, 2 SAY "either directly in the source file or through this tool which allows two-way" - /// 7 3 C 56 0 - @ 8, 2 SAY "communication leading to highest degree of productivity." - /// 8 3 C 76 0 - @ 10, 2 SAY "One source file can contain n number of screens, anywhere in the source, at " - /// 9 3 C 74 0 - @ 11, 2 SAY "any indentation. The only requirement is to place following lines where a " - /// 10 3 C 17 0 - @ 12, 2 SAY "screen is needed:" - /// 11 3 C 35 0 - @ 13, 22 SAY "/* HB_SCREEN_BEGINS */" COLOR "GR+/B" - /// 12 3 C 33 0 - @ 14, 22 SAY "/* HB_SCREEN_ENDS */" COLOR "GR+/B" - /// 13 3 C 76 0 - @ 15, 2 SAY " should be unique 13 characters long string across given source." - /// 14 3 C 74 0 - @ 16, 2 SAY "This is to be done manually. Once you place above lines into source file, " - /// 15 3 C 75 0 - @ 17, 2 SAY "just supply that source to load a screen. All screens defined therein will " - /// 16 3 C 39 0 - @ 18, 2 SAY "be presented to be selected and edited." - /// 17 3 C 76 0 - @ 20, 2 SAY "The designer implements SAYs with/without expression, GETs with all clauses," - /// 18 3 C 56 0 - @ 21, 2 SAY "BOXes with all flavours, special characters (TOBE Done)." - /// 19 3 C 76 0 - @ 26, 2 SAY " ESC-Designer 1-Keys 2-General 3-ListedInputs 4-BlockSelection 5-About " COLOR "N/W*" - - /* HB_SCREEN_ENDS */ - EXIT - - CASE "GENERAL-2" - /* HB_SCREEN_BEGINS */ - - /// 1 3 C 76 0 - @ 1, 2 SAY " Selective Input " COLOR "N/W*" - /// 2 3 C 76 0 - @ 26, 2 SAY " ESC-Designer 1-Keys 2-General 3-ListedInputs 4-BlockSelection 5-About " COLOR "N/W*" - - /* HB_SCREEN_ENDS */ - EXIT - - CASE "GENERAL-3" - /* HB_SCREEN_BEGINS */ - - /// 1 3 C 76 0 - @ 1, 2 SAY " Block Selection " COLOR "N/W*" - /// 2 3 C 76 0 - @ 26, 2 SAY " ESC-Designer 1-Keys 2-General 3-ListedInputs 4-BlockSelection 5-About " COLOR "N/W*" - - /* HB_SCREEN_ENDS */ - EXIT - - CASE "ABOUT" - /* HB_SCREEN_BEGINS */ - - /// 1 3 C 76 0 - @ 1, 2 SAY " About " COLOR "N/W*" - /// 2 3 C 1 0 - @ 4, 40 SAY "*" COLOR "W+/B" - /// 3 3 C 35 0 - @ 7, 23 SAY "Harbour Screen Designer ( hbCuiEd )" COLOR "GR+/B" - /// 4 3 C 13 0 - @ 9, 34 SAY "Developed by" - /// 5 3 C 40 0 - @ 10, 20 SAY "Pritpal Bedi ( bedipritpal@hotmail.com )" - /// 6 3 C 14 0 - @ 14, 33 SAY "Copyright 2011" - /// 7 3 C 12 0 - @ 15, 34 SAY "Pritpal Bedi" COLOR "W+/B" - /// 8 3 C 23 0 - @ 16, 29 SAY "www.harbour-project.org" - /// 9 3 C 29 0 - @ 20, 26 SAY "Visit the project website at:" - /// 10 3 C 31 0 - @ 21, 25 SAY "http://www.harbour-project.org/" COLOR "GR+/B" - /// 11 3 C 1 0 - @ 23, 40 SAY "*" COLOR "W+/B" - /// 12 3 C 76 0 - @ 26, 2 SAY " ESC-Designer 1-Keys 2-General 3-ListedInputs 4-BlockSelection 5-About " COLOR "N/W*" - - /* HB_SCREEN_ENDS */ - EXIT - - ENDSWITCH - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -FUNCTION hbcui_test() - LOCAL getlist := {} - - /* HB_SCREEN_BEGINS */ - - /// 1 1 . 9 0 - @ 1, 2 , 12, 36 BOX "+-+|+-+|" - /// 2 3 C 5 0 - @ 3, 4 SAY "Name " - /// 3 3 C 15 0 - @ 5, 4 SAY "Salary " - /// 4 3 C 14 0 - @ 7, 4 SAY "Date of Birth " - /// 5 4 C 25 0 - @ 3, 10 GET cName PICTURE "@K! " - /// 6 4 N 12 2 - @ 5, 23 GET nSalary - /// 7 4 D 8 0 - @ 7, 27 GET dBirth - - /* HB_SCREEN_ENDS */ - - RETURN NIL - -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#define INRANGE( xLo, xVal, xHi ) ( ( xVal >= xLo ) .AND. ( xVal <= xHi ) ) -#define BETWEEN( xLo, xVal, xHi ) min( max( xLo, xVal ), xHi ) - -/*----------------------------------------------------------------------*/ - -FUNCTION VouchAChoice( nTop, nLft, nBtm, nRgt, acItems, xSelect, cUserFunc, nPos, nHiLytRow, oWin, nLastKey, cargo_ ) - LOCAL nChoice, oChoice - LOCAL crs := SetCursor( 0 ) - - oChoice := AChoiceNew():New( nTop, nLft, nBtm, nRgt, acItems, xSelect, ; - cUserFunc, ; - nPos, nHiLytRow, oWin, nLastKey, cargo_ ) - oChoice:Exe() - nChoice := oChoice:nPos - nLastKey := oChoice:nKey - oChoice:Destroy() - - SetCursor( crs ) - - RETURN nChoice - -/*----------------------------------------------------------------------*/ - -CREATE CLASS AChoiceNew - - VAR nTop, nLeft, nBottom, nRight - VAR acItems - VAR xSelect - VAR cUserFunc - VAR nPos - VAR nHiLiteRow - VAR oWin - VAR cargo_ - VAR nNumCols - VAR nNumRows - VAR acCopy - VAR alSelect - VAR nNewPos - VAR lFinished - VAR nKey - VAR nMode - VAR nAtTop - VAR nAtBtm - VAR nItems - VAR bScan - VAR lUserFunc - VAR nUserFunc - VAR bUserFunc - VAR cLoClr - VAR cHiClr - VAR cUnClr - VAR nFrstItem - VAR nLastItem - VAR bAction - VAR mrc_ - - METHOD init - METHOD Destroy - METHOD DispPageNew - METHOD DispLineNew - METHOD Up - METHOD Down - METHOD PageUp - METHOD PageDown - METHOD GoTop - METHOD GoBottom - METHOD Top - METHOD Bottom - METHOD GoTo - METHOD Exe - METHOD DeHilite - METHOD HiLite - METHOD DispAtNew - -ENDCLASS - -//----------------------------------------------------------------------// - -METHOD AChoiceNew:Destroy() - - RETURN NIL - -//----------------------------------------------------------------------// - -METHOD AChoiceNew:init( nTop, nLft, nBtm, nRgt, acItems, xSelect, ; - cUserFunc, nPos, nHiLiteRow, oWin, nLastKey, cargo_ ) - LOCAL nCntr - - HB_SYMBOL_UNUSED( nLastKey ) - - DEFAULT nTop TO 0 // The topmost row of the window - DEFAULT nLft TO 0 // The leftmost column of the window - DEFAULT nBtm TO maxrow() + 1 // The bottommost row of the windows - DEFAULT nRgt TO maxcol() + 1 // The rightmost column of the window - DEFAULT acItems TO {} // The items FROM which TO choose - DEFAULT xSelect TO .T. // Array OR logical, what is selectable - DEFAULT cUserFunc TO NIL // Optional FUNCTION FOR key exceptions - DEFAULT nPos TO 1 // The number of the selected item - DEFAULT nHiLiteRow TO 0 // The row TO be highlighted - - ::nTop := nTop - ::nLeft := nLft - ::nBottom := nBtm - ::nRight := nRgt - ::acItems := acItems - ::xSelect := xSelect - ::cUserFunc := cUserFunc - ::nPos := nPos - ::nHiLiteRow := nHiLiteRow - ::oWin := oWin - ::cargo_ := cargo_ - - ::nNumCols := 0 // Number of columns IN the window - ::nNumRows := 0 // Number of rows IN the window - ::acCopy := {} // A padded copy of the items - ::alSelect := {} // Select permission - ::nNewPos := 0 // The NEXT item TO be selected - ::lFinished := .F. // Is processing finished? - ::nKey := 0 // The keystroke TO be processed - ::nMode := AC_IDLE // The current operating mode - ::nAtTop := 1 // The number of the item at the top - ::nAtBtm := 1 // The number of the item at the bottom - ::nItems := 0 // The number of items - ::bScan := {| cX | iif( left( cX, 1 ) == upper( chr( ::nKey ) ), .T., .F. ) } - ::lUserFunc := ( !empty( ::cUserFunc ) ) - ::nUserFunc := 0 // RETURN value FROM user FUNCTION - ::bUserFunc := {|| AC_ABORT } // Block form of user FUNCTION - ::cLoClr := Before( ",", setcolor() ) - ::cHiClr := Before( ",", After( ",", setcolor() ) ) - ::cUnClr := After( ",", After( ",", After( ",", After( ",", setcolor() ) ) ) ) - ::nFrstItem := 0 - ::nLastItem := 0 - ::bAction := NIL - ::mrc_ := {} - - IF ::lUserFunc - ::bUserFunc := &( "{|nM,nP,nH,nK,aC|" + ::cUserFunc + "(nM,nP,nH,nK,aC)}" ) - ENDIF - - IF empty( ::cHiClr ) - ::cHiClr := After( "/", ::cLoClr ) + "/" + Before( "/", ::cLoClr ) - ENDIF - - IF empty( ::cUnClr ) - ::cUnClr := ::cLoClr - ENDIF - - ::nNumCols := ::nRight - ::nLeft + 1 - ::nNumRows := ::nBottom - ::nTop + 1 - - aeval( ::acItems, {| x | iif( valtype( x ) == "C", aadd( ::acCopy, padr( x, ::nNumCols ) ), .F. ) } ) - ::nItems := Len( ::acCopy ) - - ::alSelect := array( ::nItems ) - - IF valtype( ::xSelect ) == "A" - afill( ::alSelect, .T. ) - FOR nCntr := 1 TO Len( ::xSelect ) - IF nCntr <= ::nItems - IF valtype( ::xSelect[ nCntr ] ) == "C" - IF empty( ::xSelect[ nCntr ] ) - ::lFinished := .T. - ::nPos := 0 - ELSE - ::alSelect[ nCntr ] := &( ::xSelect[ nCntr ] ) - ENDIF - ELSE - ::alSelect[ nCntr ] := ::xSelect[ nCntr ] - ENDIF - ELSE - nCntr := Len( ::xSelect ) + 1 - ENDIF - NEXT - ELSE - afill( ::alSelect, ::xSelect ) - ENDIF - - RETURN SELF - -//----------------------------------------------------------------------// - -METHOD AChoiceNew:Exe() - - IF !( ::lFinished ) - ::nFrstItem := ascan( ::alSelect, .T. ) // First valid item - - IF ::nFrstItem == 0 - ::nLastItem := 0 - ::nPos := 0 - ::nMode := AC_NOITEM - ELSE - ::nMode := AC_IDLE - ::nLastItem := ::nItems - DO WHILE ( !( ::alSelect[ ::nLastItem ] ) ) - ::nLastItem-- - ENDDO - ENDIF - - // Ensure hilighted item can be selected - ::nPos := BETWEEN( ::nFrstItem, ::nPos, ::nLastItem ) - ::nNewPos := ::nPos - IF !( ::alSelect[ ::nNewPos ] ) - IF ::nNewPos == ::nLastItem - ::nNewPos := ::nFrstItem - ENDIF - DO WHILE ( !( ::alSelect[ ::nNewPos ] ) ) - ::nNewPos++ - ENDDO - ENDIF - ::nPos := ::nNewPos - - // Force hilighted row TO be valid - // - ::nHiLiteRow := BETWEEN( 0, ::nHiLiteRow, ::nNumRows - 1 ) - - // Force the topmost item TO be a valid index of the array - // - ::nAtTop := BETWEEN( 1, max( 1, ::nPos - ::nHiLiteRow ), ::nItems ) - - // Ensure as much of the selection area as possible is covered - // - IF ( ::nAtTop + ::nNumRows - 1 ) > ::nItems - ::nAtTop := max( 1, ::nItems - ::nNumrows + 1 ) - ENDIF - - ::DispPageNew() - ENDIF - - DO WHILE ( !::lFinished ) - - IF ::nMode != AC_GOTO .AND. ::nMode != AC_NOITEM - ::nKey := inkey( , INKEY_ALL + HB_INKEY_GTEVENT ) - ::nMode := AC_IDLE - ::mrc_ := { 0, 0, mRow(), mCol(), 0, LastKey(), .f. } - ENDIF - - #ifdef __WVT__ - IF nLastPos != ::nPos - Wvt_DrawFocusRect( ::nTop + ( ::nPos - ::nAtTop ), ::nLeft, ; - ::nTop + ( ::nPos - ::nAtTop ), ::nRight ) - nLastPos := ::nPos - ENDIF - #ENDIF - - DO CASE - CASE ( ::bAction := SetKey( ::nKey ) ) != NIL - eval( ::bAction, ProcName( 1 ), ProcLine( 1 ), '' ) - - CASE ::nKey == K_MOUSEMOVE - ::nPos := ::DispAtNew() - - CASE ::nKey == K_MWFORWARD - ::Up() - - CASE ::nKey == K_MWBACKWARD - ::Down() - - CASE ::nKey == K_LDBLCLK - ::nPos := ::DispAtNew() - ::nMode := AC_SELECT - - CASE ::nKey == K_LBUTTONDOWN - IF ::mrc_[ 3 ] >= ::nTop .AND. ::mrc_[ 3 ] <= ::nBottom .AND. ; - ::mrc_[ 4 ] >= ::nLeft .AND. ::mrc_[ 4 ] <= ::nRight - keyboard( chr( K_ENTER ) ) - ENDIF - - CASE ( ( ::nKey == K_ESC ) .OR. ( ::nMode == AC_NOITEM ) ) .AND. ( !::lUserFunc ) - ::nMode := AC_ABORT - ::nPos := 0 - ::lFinished := .T. - - CASE ::nKey == K_UP - ::Up() - - CASE ::nKey == K_DOWN - ::Down() - - CASE ::nKey == K_PGUP - ::PageUp() - - CASE ::nKey == K_PGDN - ::PageDown() - - CASE ::nKey == K_HOME - ::Top() - - CASE ::nKey == K_END - ::Bottom() - - CASE ( ::nKey == K_CTRL_HOME .OR. ::nKey == K_CTRL_PGUP ) - ::GoTop() - - CASE ( ::nKey == K_CTRL_END .OR. ::nKey == K_CTRL_PGDN ) - ::GoBottom() - - CASE ( ::nKey == K_ENTER ) .AND. ( !::lUserFunc ) - ::nMode := AC_SELECT - ::lFinished := .T. - - CASE ( ::nKey == K_RIGHT ) .AND. ( !::lUserFunc ) - ::nPos := 0 - ::lFinished := .T. - - CASE ( ::nKey == K_LEFT ) .AND. ( !::lUserFunc ) - ::nPos := 0 - ::lFinished := .T. - - CASE INRANGE( 32, ::nKey, 255 ) .AND. ( ( !::lUserFunc ) .OR. ( ::nMode == AC_GOTO ) ) - ::GoTo() - ::nMode := AC_IDLE - - CASE ::nMode == AC_GOTO - ::nMode := AC_IDLE - - OTHERWISE - IF ::nKey == 0 - ::nMode := AC_IDLE - ELSE - ::nMode := AC_EXCEPT - ENDIF - - ENDCASE - - IF ::lUserFunc - ::nUserFunc := eval( ::bUserFunc, ::nMode, ::nPos, ; - ::nPos - ::nAtTop, ::nKey, ::cargo_ ) - DO CASE - CASE ::nUserFunc == AC_ABORT - ::lFinished := .T. - ::nPos := 0 - - CASE ::nUserFunc == AC_SELECT - ::lFinished := .T. - - CASE ::nUserFunc == AC_CONT - - CASE ::nUserFunc == AC_GOTO - ::nMode := AC_GOTO - - ENDCASE - ENDIF - ENDDO - - RETURN SELF - -//----------------------------------------------------------------------// - -METHOD AChoiceNew:DispPageNew() - LOCAL nCntr - LOCAL nRow := row() - LOCAL nCol := col() - LOCAL nRowPos, nPos - - DispBegin() - - FOR nCntr := 1 TO ::nNumRows - nRowPos := ::nTop + nCntr - 1 - nPos := ::nAtTop + nCntr - 1 - - IF INRANGE( 1, nPos, ::nItems ) - ::DispLineNew( nPos, nRowPos, nPos == ::nPos ) - ELSE - DispOutAt( nRowPos, ::nLeft, space( Len( ::acCopy[ 1 ] ) ), ::cLoClr, ::oWin ) - ENDIF - NEXT - - DispEnd() - - SetPos( nRow,nCol ) - - RETURN SELF - -//----------------------------------------------------------------------// - -METHOD AChoiceNew:DispLineNew( nPos, nRow, lHiLite ) - - DispOutAt( nRow, ::nLeft, ::acCopy[ nPos ],; - iif( ::alSelect[ nPos ], ; - iif( lHiLite, ::cHiClr, ::cLoClr ), ::cUnClr ), ::oWin ) - - RETURN SELF - -//----------------------------------------------------------------------// - -METHOD AChoiceNew:DeHilite() - - ::DispLineNew( ::nPos, ::nTop + ( ::nPos - ::nAtTop ), .F. ) - - RETURN SELF - -//----------------------------------------------------------------------// - -METHOD AChoiceNew:HiLite() - - ::DispLineNew( ::nPos, ::nTop + ( ::nPos - ::nAtTop ), .T. ) - - RETURN SELF - -//----------------------------------------------------------------------// - -METHOD AChoiceNew:Up() - LOCAL nScroll - - IF ::nPos == ::nFrstItem - ::nMode := AC_HITTOP - IF ::nAtTop > max( 1, ::nPos - ::nNumRows + 1 ) - ::nAtTop := max( 1, ::nPos - ::nNumRows + 1 ) - ::DispPageNew() - ENDIF - ELSE - ::nNewPos := ::nPos - 1 - DO WHILE !( ::alSelect[ ::nNewPos ] ) - ::nNewPos-- - ENDDO - - IF INRANGE( ::nAtTop, ::nNewPos, ::nAtTop + ::nNumRows - 1 ) - ::DeHilite() - ::nPos := ::nNewPos - ::HiLite() - ELSE - DispBegin() - - ::DeHilite() - - nScroll := max( -::nNumRows, ( ::nNewPos - ( ::nAtTop + ::nNumRows - 1 ) ) ) - Scroll( ::nTop, ::nLeft, ::nBottom, ::nRight, nScroll ) - - ::nAtTop := ::nNewPos - ::nPos := max( ::nPos, ::nAtTop + ::nNumRows - 1 ) - - DO WHILE ( ::nPos > ::nNewPos ) - ::DispLineNew( ::nPos, ::nTop + ( ::nPos - ::nAtTop ), .F. ) - ::nPos-- - ENDDO - - ::HiLite() - - Dispend() - ENDIF - ENDIF - - RETURN SELF - -//----------------------------------------------------------------------// - -METHOD AChoiceNew:Down() - LOCAL nScroll - - IF ::nPos == ::nLastItem - ::nMode := AC_HITBOTTOM - IF ::nAtTop < min( ::nPos, ::nItems - ::nNumRows + 1 ) - ::nAtTop := min( ::nPos, ::nItems - ::nNumRows + 1 ) - ::DispPageNew() - ENDIF - ELSE - ::nNewPos := ::nPos + 1 - DO WHILE !( ::alSelect[ ::nNewPos ] ) - ::nNewPos++ - ENDDO - - IF INRANGE( ::nAtTop, ::nNewPos, ::nAtTop + ::nNumRows - 1 ) - ::DeHilite() - ::nPos := ::nNewPos - ::HiLite() - ELSE - Dispbegin() - - ::DeHilite() - - nScroll := min( ::nNumRows, ( ::nNewPos - ( ::nAtTop + ::nNumRows - 1 ) ) ) - scroll( ::nTop, ::nLeft, ::nBottom, ::nRight, nScroll ) - - ::nAtTop := ::nNewPos - ::nNumRows + 1 - ::nPos := max( ::nPos, ::nAtTop ) - DO WHILE ( ::nPos < ::nNewPos ) - ::DispLineNew( ::nPos, ::nTop + ( ::nPos - ::nAtTop ), .F. ) - ::nPos ++ - ENDDO - - ::Hilite() - - Dispend() - ENDIF - ENDIF - - RETURN SELF - -//----------------------------------------------------------------------// - -METHOD AChoiceNew:PageUp() - - IF ::nPos == ::nFrstItem - ::nMode := AC_HITTOP - IF ::nAtTop > max( 1, ::nPos - ::nNumRows + 1 ) - ::nAtTop := max( 1, ::nPos - ::nNumRows + 1 ) - ::DispPageNew() - ENDIF - ELSE - IF INRANGE( ::nAtTop, ::nFrstItem, ::nAtTop + ::nNumRows - 1 ) - ::nPos := ::nFrstItem - ::nAtTop := max( ::nPos - ::nNumRows + 1, 1 ) - ::DispPageNew() - ELSE - IF ( ::nPos - ::nNumRows + 1 ) < ::nFrstItem - ::nPos := ::nFrstItem - ::nAtTop := ::nFrstItem - ELSE - ::nPos := max( ::nFrstItem, ::nPos - ::nNumRows + 1 ) - ::nAtTop := max( 1, ::nAtTop - ::nNumRows + 1 ) - DO WHILE ( ::nPos > ::nFrstItem ) .AND. ( !( ::alSelect[ ::nPos ] ) ) - ::nPos-- - ::nAtTop-- - ENDDO - ::nAtTop := max( 1, ::nAtTop ) - ENDIF - ::DispPageNew() - ENDIF - ENDIF - - RETURN SELF - -//----------------------------------------------------------------------// - -METHOD AChoiceNew:PageDown() - LOCAL nGap - - IF ::nPos == ::nLastItem - ::nMode := AC_HITBOTTOM - IF ::nAtTop < min( ::nPos, max( 1, ::nItems - ::nNumRows + 1 ) ) - ::nAtTop := min( ::nPos, max( 1, ::nItems - ::nNumRows + 1 ) ) - ::DispPageNew() - ENDIF - ELSE - IF INRANGE( ::nAtTop, ::nLastItem, ::nAtTop + ::nNumRows - 1 ) - ::DeHilite() - ::nPos := ::nLastItem - ::Hilite() - ELSE - nGap := ::nPos - ::nAtTop - ::nPos := min( ::nLastItem, ::nPos + ::nNumRows - 1 ) - IF ( ::nPos + ::nNumRows - 1 ) > ::nLastItem - ::nAtTop := ::nLastItem - ::nNumRows + 1 - ::nPos := min( ::nLastItem, ::nAtTop + nGap ) - ELSE - ::nAtTop := ::nPos - nGap - ENDIF - - DO WHILE ( ::nPos < ::nLastItem ) .AND. !( ::alSelect[ ::nPos ] ) - ::nPos++ - ::nAtTop++ - ENDDO - - DO WHILE ( ::nAtTop + ::nNumRows - 1 ) > ::nItems - ::nAtTop-- - ENDDO - ::DispPageNew() - ENDIF - ENDIF - - RETURN SELF - -//----------------------------------------------------------------------// - -METHOD AChoiceNew:Top() - - IF ::nPos == ::nFrstItem - IF ::nAtTop == max( 1, ::nPos - ::nNumRows + 1 ) - ::nMode := AC_HITTOP - ELSE - ::nAtTop := max( 1, ::nPos - ::nNumRows + 1 ) - ::DispPageNew() - ENDIF - ELSE - ::nNewPos := ::nAtTop - DO WHILE !( ::alSelect[ ::nNewPos ] ) - ::nNewPos++ - ENDDO - IF ::nNewPos != ::nPos - ::DeHilite() - ::nPos := ::nNewPos - ::HiLite() - ENDIF - ENDIF - - RETURN SELF - -//----------------------------------------------------------------------// - -METHOD AChoiceNew:Bottom() - - IF ::nPos == ::nLastItem - IF ::nAtTop == min( ::nPos, ::nItems - ::nNumRows + 1 ) - ::nMode := AC_HITBOTTOM - ELSE - ::nAtTop := min( ::nPos, ::nItems - ::nNumRows + 1 ) - ::DispPageNew() - ENDIF - ELSE - ::nNewPos := ::nAtTop + ::nNumRows - 1 - DO WHILE !( ::alSelect[ ::nNewPos ] ) - ::nNewPos-- - ENDDO - IF ::nNewPos != ::nPos - ::DeHilite() - ::nPos := ::nNewPos - ::HiLite() - ENDIF - ENDIF - - RETURN SELF - -//----------------------------------------------------------------------// - -METHOD AChoiceNew:GoTop() - - IF ::nPos == ::nFrstItem - IF ::nAtTop == max( 1, ::nPos - ::nNumRows + 1 ) - ::nMode := AC_HITTOP - ELSE - ::nAtTop := max( 1, ::nPos - ::nNumRows + 1 ) - ::DispPageNew() - ENDIF - ELSE - ::nPos := ::nFrstItem - ::nAtTop := ::nPos - ::DispPageNew() - ENDIF - - RETURN SELF - -//----------------------------------------------------------------------// - -METHOD AChoiceNew:GoBottom() - - IF ::nPos == ::nLastItem - IF ::nAtTop == min( ::nLastItem, ::nItems - ::nNumRows + 1 ) - ::nMode := AC_HITBOTTOM - ELSE - ::nAtTop := min( ::nLastItem, ::nItems - ::nNumRows + 1 ) - ::DispPageNew() - ENDIF - ELSE - IF INRANGE( ::nAtTop, ::nLastItem, ::nAtTop + ::nNumRows - 1 ) - ::DeHilite() - ::nPos := ::nLastItem - ::HiLite() - ELSE - ::nPos := ::nLastItem - ::nAtTop := max( 1, ::nPos - ::nNumRows + 1 ) - ::DispPageNew() - ENDIF - ENDIF - - RETURN SELF - -//----------------------------------------------------------------------// - -METHOD AChoiceNew:GoTo() - - ::nNewPos := ascan( ::acCopy, ::bScan, ::nPos + 1 ) - DO WHILE INRANGE( ::nPos, ::nNewPos, ::nLastItem ) .AND. !( ::alSelect[ ::nNewPos ] ) - ::nNewPos := ascan( ::acCopy, ::bScan, ::nNewPos + 1 ) - ENDDO - - IF ::nNewPos == 0 - ::nNewPos := ascan( ::acCopy, ::bScan ) - DO WHILE INRANGE( 1, ::nNewPos, ::nLastItem ) .AND. !( ::alSelect[ ::nNewPos ] ) - ::nNewPos := ascan( ::acCopy, ::bScan, ::nNewPos + 1 ) - ENDDO - ENDIF - - IF INRANGE( ::nFrstItem, ::nNewPos, ::nLastItem ) .AND. ::alSelect[ ::nNewPos ] - IF INRANGE( ::nAtTop, ::nNewPos, ::nAtTop + ::nNumRows - 1 ) - ::DeHilite() - ::nPos := ::nNewPos - ::HiLite() - ELSE - ::nPos := ::nNewPos - ::nAtTop := BETWEEN( 1, ::nPos - ::nNumRows + 1, ::nItems ) - ::DispPageNew() - ENDIF - ENDIF - - RETURN SELF - -//----------------------------------------------------------------------// - -METHOD AChoiceNew:DispAtNew() - LOCAL nNewPos - - IF ::mrc_[ 3 ] >= ::nTop .AND. ::mrc_[ 3 ] <= ::nTop + ::nNumRows - 1 ; - .AND. ; - ::mrc_[ 4 ] >= ::nLeft .AND. ::mrc_[ 4 ] <= ::nRight - - IF ( nNewPos := ::nAtTop + ( ::mrc_[ 3 ] - ::nTop ) ) != ::nPos - IF ::alSelect[ nNewPos ] - ::DeHilite() - ::nPos := nNewPos - ::nNewPos := ::nPos - ::HiLite() - ENDIF - ENDIF - ENDIF - - RETURN ::nPos - -//----------------------------------------------------------------------// - -STATIC FUNCTION Before( cDelim, cValue ) - LOCAL cRetVal := cValue - - IF cDelim $ cValue - cRetVal := left( cValue, at( cDelim, cValue ) - 1 ) - ENDIF - - RETURN cRetVal - -//----------------------------------------------------------------------// - -STATIC FUNCTION After( cDelim, cValue ) - LOCAL cRetVal := '' - - IF cDelim $ cValue - cRetVal := substr( cValue, at( cDelim, cValue ) + 1 ) - ENDIF - - RETURN cRetVal - -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION BuildScreen() - LOCAL oCUI - - SET SCOREBOARD OFF - CLS - - hb_gtInfo( HB_GTI_WINTITLE , "Harbour CUI Forms Designer" ) - hb_gtInfo( HB_GTI_RESIZEMODE, HB_GTI_RESIZEMODE_ROWS ) - - oCUI := hbCUIEditor():new():create() - oCUI:destroy() - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_setExitCuiEd( lYes ) - LOCAL l_lYes - STATIC s_lYes := .f. - l_lYes := s_lYes - IF HB_ISLOGICAL( lYes ) - s_lYes := lYes - ENDIF - RETURN l_lYes - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/dict.prg b/harbour/contrib/hbide/dict.prg deleted file mode 100644 index 0226da061b..0000000000 --- a/harbour/contrib/hbide/dict.prg +++ /dev/null @@ -1,447 +0,0 @@ - /* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 11Jun2010 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "common.ch" -#include "hbclass.ch" -#include "hbqtgui.ch" -#include "hbide.ch" -#include "xbp.ch" - -/*----------------------------------------------------------------------*/ - -#define __checkDictToPrg_stateChanged__ 2056 -#define __checkDictToC_stateChanged__ 2057 -#define __checkDictToCpp_stateChanged__ 2058 -#define __checkDictToCh_stateChanged__ 2059 -#define __checkDictToH_stateChanged__ 2060 -#define __checkDictToIni_stateChanged__ 2061 -#define __checkDictToTxt_stateChanged__ 2062 -#define __checkDictToHbp_stateChanged__ 2063 -#define __checkDictActive_stateChanged__ 2064 -#define __checkDictCaseSens_stateChanged__ 2065 -#define __checkDictBold_stateChanged__ 2066 -#define __checkDictItalic_stateChanged__ 2067 -#define __checkDictULine_stateChanged__ 2068 -#define __checkDictColorText_stateChanged__ 2069 -#define __checkDictColorBack_stateChanged__ 2070 -#define __radioDictConvNone_clicked__ 2071 -#define __radioDictToLower_clicked__ 2072 -#define __radioDictToUpper_clicked__ 2073 -#define __radioDictAsIn_clicked__ 2074 - -#define DIC_FILENAME 1 -#define DIC_ACTIVE 2 -#define DIC_APPLYTO 3 -#define DIC_CONVMODE 4 -#define DIC_CASESENSTITIVE 5 -#define DIC_BOLD 6 -#define DIC_ITALIC 7 -#define DIC_UNDERLINE 8 -#define DIC_TXTCOLOR 9 -#define DIC_BGCOLOR 10 - -#define DIC_NUM_VRBLS 10 - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_loadUserDictionaries( oIde ) - LOCAL aDict := oIde:oINI:aDictionaries - LOCAL oDict, i - - FOR i := 1 TO Len( aDict ) - oDict := IdeDictionary():new( oIde ):create() - oDict:load( aDict[ i ] ) - aadd( oIde:aUserDict, oDict ) - NEXT - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -CLASS IdeDictionary INHERIT IdeObject - - DATA cDictInfo INIT "" - DATA cFilename INIT "" - DATA lActive INIT .T. - DATA cApplyTo INIT "" - DATA lToPrg INIT .T. - DATA lToC INIT .F. - DATA lToCPP INIT .F. - DATA lToCH INIT .F. - DATA lToH INIT .F. - DATA lToIni INIT .F. - DATA lToTxt INIT .F. - DATA lToHbp INIT .F. - DATA cConvMode INIT "ASIS" - DATA lCaseSens INIT .F. - DATA lBold INIT .F. - DATA lItalic INIT .F. - DATA lULine INIT .F. - DATA lTxtColor INIT .F. - DATA lBgColor INIT .F. - DATA cTxtColor INIT "" - DATA cBgColor INIT "" - DATA aRawLines INIT {} - - DATA hItems INIT {=>} - - DATA aTxtRGB INIT {} - DATA aBgRGB INIT {} - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() VIRTUAL - METHOD load( cDict ) - METHOD toString() - METHOD populateUI( oUI ) - METHOD execColorDialog( oUI, cMode ) - METHOD setButtonColors( oUI ) - METHOD checkStateChanged( oUI, p, p1 ) - METHOD radioButtonClicked( oUI, p ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeDictionary:new( oIde ) - - ::oIde := oIde - hb_HCaseMatch( ::hItems, .F. ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDictionary:create( oIde ) - DEFAULT oIde TO ::oIde - ::oIde := oIde - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDictionary:load( cDict ) - LOCAL a_:= hb_aTokens( cDict, ";" ) - LOCAL s, b_, n, n1, cKeyword, cSyntax, cDesc, c_ - - IF !empty( a_ ) .AND. HB_ISARRAY( a_ ) - asize( a_, DIC_NUM_VRBLS ) - - DEFAULT a_[ DIC_FILENAME ] TO "" - DEFAULT a_[ DIC_ACTIVE ] TO "YES" - DEFAULT a_[ DIC_APPLYTO ] TO ".PRG" - DEFAULT a_[ DIC_CONVMODE ] TO "ASIS" - DEFAULT a_[ DIC_CASESENSTITIVE ] TO "NO" - DEFAULT a_[ DIC_BOLD ] TO "NO" - DEFAULT a_[ DIC_ITALIC ] TO "NO" - DEFAULT a_[ DIC_UNDERLINE ] TO "NO" - DEFAULT a_[ DIC_TXTCOLOR ] TO "" - DEFAULT a_[ DIC_BGCOLOR ] TO "" - - - ::cDictInfo := cDict - ::cFilename := a_[ DIC_FILENAME ] - ::lActive := a_[ DIC_ACTIVE ] == "YES" - ::cApplyTo := a_[ DIC_APPLYTO ] - ::lToPRG := ".PRG" $ a_[ DIC_APPLYTO ] - ::lToC := ".C" $ a_[ DIC_APPLYTO ] - ::lToCPP := ".CPP" $ a_[ DIC_APPLYTO ] - ::lToCH := ".CH" $ a_[ DIC_APPLYTO ] - ::lToH := ".H" $ a_[ DIC_APPLYTO ] - ::lToIni := ".INI" $ a_[ DIC_APPLYTO ] - ::lToTxt := ".TXT" $ a_[ DIC_APPLYTO ] - ::lToHbp := ".HBP" $ a_[ DIC_APPLYTO ] - ::cConvMode := a_[ DIC_CONVMODE ] - ::lCaseSens := a_[ DIC_CASESENSTITIVE ] == "YES" - ::lBold := a_[ DIC_BOLD ] == "YES" - ::lItalic := a_[ DIC_ITALIC ] == "YES" - ::lULine := a_[ DIC_UNDERLINE ] == "YES" - ::lTxtColor := ! Empty( a_[ DIC_TXTCOLOR ] ) - ::lBgColor := ! Empty( a_[ DIC_BGCOLOR ] ) - ::cTxtColor := a_[ DIC_TXTCOLOR ] - ::cBgColor := a_[ DIC_BGCOLOR ] - - IF ! Empty( ::cTxtColor ) - c_:= hbide_evalAsIs( ::cTxtColor ) - IF HB_ISARRAY( c_ ) .AND. Len( c_ ) == 3 - ::aTxtRGB := AClone( c_ ) - ENDIF - ENDIF - IF ! Empty( ::cBgColor ) - c_:= hbide_evalAsIs( ::cBgColor ) - IF HB_ISARRAY( c_ ) .AND. Len( c_ ) == 3 - ::aBgRGB := AClone( c_ ) - ENDIF - ENDIF - - IF !empty( ::cFilename ) .AND. hb_fileExists( ::cFilename ) - IF Lower( hb_FNameExt( ::cFilename ) ) == ".hbx" - b_:= hbide_getHbxFunctions( hb_MemoRead( ::cFilename ) ) - ELSEIF Lower( hb_FNameExt( ::cFilename ) ) == ".tag" - c_:= hb_deserialize( hb_memoRead( ::cFilename ) ) - IF Empty( c_ ) .OR. ! HB_ISARRAY( c_ ) - c_:= {} - ENDIF - b_:= {} - FOR EACH s IN c_ - AAdd( b_, s[ 5 ] ) - NEXT - ELSE - b_:= hbide_readSource( ::cFilename ) - ENDIF - ::aRawLines := b_ - FOR EACH s IN b_ - s := alltrim( s ) - IF empty( s ) - LOOP - ENDIF - cKeyword := "" - cSyntax := "" - cDesc := "" - IF ( n := at( "(", s ) ) > 0 - IF ( n1 := at( ")", s ) ) > 0 - cKeyword := alltrim( substr( s, 1, n - 1 ) ) - cSyntax := strtran( substr( s, 1, n1 ), " (", "(" ) - cDesc := alltrim( substr( s, n1 + 1 ) ) - ENDIF - ELSE - cKeyword := s - ENDIF - - IF !empty( cKeyword ) - ::hItems[ cKeyword ] := { cKeyword, cSyntax, cDesc } - ENDIF - NEXT - ENDIF - - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDictionary:toString() - - ::cDictInfo := ::cFilename + ";" + ; - iif( ::lActive , "YES", "NO" ) + ";" + ; - iif( ::lToPRG , ".PRG", "" ) + ; - iif( ::lToC , ".C" , "" ) + ; - iif( ::lToCPP , ".CPP", "" ) + ; - iif( ::lToCH , ".CPP", "" ) + ; - iif( ::lToH , ".H" , "" ) + ; - iif( ::lToIni , ".INI", "" ) + ; - iif( ::lToTxt , ".TXT", "" ) + ; - iif( ::lToHbp , ".HBP", "" ) + ";" + ; - ::cConvMode + ";" + ; - iif( ::lCaseSens, "YES", "NO" ) + ";" + ; - iif( ::lBold , "YES", "NO" ) + ";" + ; - iif( ::lItalic , "YES", "NO" ) + ";" + ; - iif( ::lULine , "YES", "NO" ) + ";" + ; - ::cTxtColor + ";" + ; - ::cBgColor + ";" - - RETURN ::cDictInfo - -/*----------------------------------------------------------------------*/ - -METHOD IdeDictionary:populateUI( oUI ) - - oUI:checkDictToPrg : setChecked( ".PRG" $ ::cApplyTo ) - oUI:checkDictToC : setChecked( ".C" $ ::cApplyTo ) - oUI:checkDictToCpp : setChecked( ".CPP" $ ::cApplyTo ) - oUI:checkDictToCh : setChecked( ".CH" $ ::cApplyTo ) - oUI:checkDictToh : setChecked( ".H" $ ::cApplyTo ) - oUI:checkDictToIni : setChecked( ".INI" $ ::cApplyTo ) - oUI:checkDictToTxt : setChecked( ".TXT" $ ::cApplyTo ) - oUI:checkDictToHbp : setChecked( ".HBP" $ ::cApplyTo ) - - oUI:checkDictActive : setChecked( ::lActive ) - oUI:checkDictCaseSens : setChecked( ::lCaseSens ) - oUI:checkDictBold : setChecked( ::lBold ) - oUI:checkDictItalic : setChecked( ::lItalic ) - oUI:checkDictULine : setChecked( ::lULine ) - oUI:checkDictColorText : setChecked( ! Empty( ::cTxtColor ) ) - oUI:checkDictColorBack : setChecked( ! Empty( ::cBgColor ) ) - - oUI:radioDictConvNone : setChecked( ::cConvMode == "NONE" ) - oUI:radioDictToLower : setChecked( ::cConvMode == "LOWER" ) - oUI:radioDictToUpper : setChecked( ::cConvMode == "UPPER" ) - oUI:radioDictAsIn : setChecked( ::cConvMode == "ASIS" ) - - oUI:plainKeywords : clear() - oUI:plainKeywords : setPlainText( hbide_arrayToMemo( ::aRawLines ) ) - - ::setButtonColors( oUI ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeDictionary:setButtonColors( oUI ) - - oUI:btnDictColorText:setStyleSheet( "" ) - oUI:btnDictColorBack:setStyleSheet( "" ) - IF ! Empty( ::aTxtRGB ) - oUI:btnDictColorText: setStyleSheet( "background-color: rgb(" + hb_ntos( ::aTxtRGB[ 1 ] ) + "," + hb_ntos( ::aTxtRGB[ 2 ] ) + "," + hb_ntos( ::aTxtRGB[ 3 ] ) + ");" ) - ENDIF - IF ! Empty( ::aBgRGB ) - oUI:btnDictColorBack: setStyleSheet( "background-color: rgb(" + hb_ntos( ::aBgRGB[ 1 ] ) + "," + hb_ntos( ::aBgRGB[ 2 ] ) + "," + hb_ntos( ::aBgRGB[ 3 ] ) + ");" ) - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeDictionary:execColorDialog( oUI, cMode ) - LOCAL qColorDlg := QColorDialog( oUI:oWidget ) - LOCAL nRet, qColor - - IF cMode == "back" .AND. ! Empty( ::aBgRGB ) - qColorDlg:SetCurrentColor( QColor( ::aBgRGB[ 1 ], ::aBgRGB[ 2 ], ::aBgRGB[ 3 ] ) ) - ELSEIF cMode == "text" .AND. ! Empty( ::aTxtRGB ) - qColorDlg:SetCurrentColor( QColor( ::aTxtRGB[ 1 ], ::aTxtRGB[ 2 ], ::aTxtRGB[ 3 ] ) ) - ENDIF - - nRet := qColorDlg:exec() - - IF nRet == QDialog_Accepted - qColor := qColorDlg:selectedColor() - IF cMode == "back" - ::aBgRGB := Array( 3 ) - ::aBgRGB[ 1 ] := qColor:red() - ::aBgRGB[ 2 ] := qColor:green() - ::aBgRGB[ 3 ] := qColor:blue() - ::cBgColor := "{" + hb_ntos( ::aBgRGB[ 1 ] ) + "," + hb_ntos( ::aBgRGB[ 2 ] ) + "," + hb_ntos( ::aBgRGB[ 3 ] ) + "}" - ::lBgColor := .T. - oUI:checkDictColorBack : setChecked( ! Empty( ::cBgColor ) ) - ELSE - ::aTxtRGB := Array( 3 ) - ::aTxtRGB[ 1 ] := qColor:red() - ::aTxtRGB[ 2 ] := qColor:green() - ::aTxtRGB[ 3 ] := qColor:blue() - ::cTxtColor := "{" + hb_ntos( ::aTxtRGB[ 1 ] ) + "," + hb_ntos( ::aTxtRGB[ 2 ] ) + "," + hb_ntos( ::aTxtRGB[ 3 ] ) + "}" - ::lTxtColor := .T. - oUI:checkDictColorText : setChecked( ! Empty( ::cTxtColor ) ) - ENDIF - ::setButtonColors( oUI ) - ENDIF - qColorDlg:setParent( QWidget() ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeDictionary:checkStateChanged( oUI, p, p1 ) - LOCAL lChecked := p1 != 0 - - SWITCH p - CASE __checkDictActive_stateChanged__ ; ::lActive := lChecked ; EXIT - CASE __checkDictToPrg_stateChanged__ ; ::lToPrg := lChecked ; EXIT - CASE __checkDictToC_stateChanged__ ; ::lToC := lChecked ; EXIT - CASE __checkDictToCpp_stateChanged__ ; ::lToCPP := lChecked ; EXIT - CASE __checkDictToCh_stateChanged__ ; ::lToCH := lChecked ; EXIT - CASE __checkDictToH_stateChanged__ ; ::lToH := lChecked ; EXIT - CASE __checkDictToIni_stateChanged__ ; ::lToIni := lChecked ; EXIT - CASE __checkDictToTxt_stateChanged__ ; ::lToTxt := lChecked ; EXIT - CASE __checkDictToHbp_stateChanged__ ; ::lToHbp := lChecked ; EXIT - CASE __checkDictActive_stateChanged__ ; ::lActive := lChecked ; EXIT - CASE __checkDictCaseSens_stateChanged__ ; ::lCaseSens := lChecked ; EXIT - CASE __checkDictBold_stateChanged__ ; ::lBold := lChecked ; EXIT - CASE __checkDictItalic_stateChanged__ ; ::lItalic := lChecked ; EXIT - CASE __checkDictULine_stateChanged__ ; ::lULine := lChecked ; EXIT - CASE __checkDictColorText_stateChanged__ ; ::lTxtColor := lChecked ; EXIT - CASE __checkDictColorBack_stateChanged__ ; ::lBgColor := lChecked ; EXIT - ENDSWITCH - - IF ! ::lTxtColor - ::aTxtRGB := {} - ::cTxtColor := "" - ENDIF - IF ! ::lBgColor - ::aBgRGB := {} - ::cBgColor := "" - ENDIF - ::setButtonColors( oUI ) - - ::toString() - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeDictionary:radioButtonClicked( oUI, p ) - - SWITCH p - CASE __radioDictConvNone_clicked__ ; ::cConvMode := "NONE" ; EXIT - CASE __radioDictToLower_clicked__ ; ::cConvMode := "LOWER" ; EXIT - CASE __radioDictToUpper_clicked__ ; ::cConvMode := "UPPER" ; EXIT - CASE __radioDictAsIn_clicked__ ; ::cConvMode := "ASIS" ; EXIT - ENDSWITCH - - ::toString( oUI ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/docks.prg b/harbour/contrib/hbide/docks.prg deleted file mode 100644 index 435338cdea..0000000000 --- a/harbour/contrib/hbide/docks.prg +++ /dev/null @@ -1,1826 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 28Dec2009 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbide.ch" -#include "common.ch" -#include "hbclass.ch" -#include "xbp.ch" -#include "appevent.ch" -#include "hbqtgui.ch" - -/*----------------------------------------------------------------------*/ - -#define __QEvent_WindowStateChange__ 2001 -#define __QEvent_Hide__ 2002 -#define __qSystemTrayIcon_activated__ 2003 -#define __qSystemTrayIcon_show__ 2004 -#define __qSystemTrayIcon_close__ 2005 -#define __qTimer_timeOut__ 2006 -#define __buttonViewTabbed_clicked__ 2007 -#define __x_mdiArea_subWindowActivated__ 2008 -#define __buttonViewOrganized_clicked__ 2009 -#define __buttonSaveLayout_clicked__ 2010 -#define __buttonViewCascaded_clicked__ 2011 -#define __buttonViewTiled_clicked__ 2012 -#define __buttonViewMaximized_clicked__ 2013 -#define __buttonViewStackedVert_clicked__ 2014 -#define __buttonViewStackedHorz_clicked__ 2015 -#define __buttonViewZoomedIn_clicked__ 2016 -#define __buttonViewZoomedOut_clicked__ 2017 -#define __mdiArea_subWindowActivated__ 2018 -#define __editWidget_dragEnterEvent__ 2019 -#define __editWidget_dragMoveEvent__ 2020 -#define __editWidget_dropEvent__ 2021 -#define __mdiSubWindow_windowStateChanged__ 2022 -#define __projectTree_dragEnterEvent__ 2023 -#define __projectTree_dropEvent__ 2024 -#define __dockSkltnsTree_visibilityChanged__ 2025 -#define __oFuncDock_visibilityChanged__ 2026 -#define __qHelpBrw_contextMenuRequested__ 2027 -#define __dockHelpDock_visibilityChanged__ 2028 -#define __outputConsole_contextMenuRequested__ 2029 -#define __dockThemes_visibilityChanged__ 2030 -#define __dockProperties_visibilityChanged__ 2031 -#define __dockFindInFiles_visibilityChanged__ 2032 -#define __dockDocViewer_visibilityChanged__ 2033 -#define __dockDocWriter_visibilityChanged__ 2034 -#define __docFunctions_visibilityChanged__ 2035 -#define __docEnvironments_visibilityChanged__ 2036 -#define __docSkeletons_visibilityChanged__ 2037 -#define __dockSourceThumbnail_visibilityChanged__ 2038 -#define __dockFormat_visibilityChanged__ 2041 -#define __dockCuiEd_visibilityChanged__ 2042 -#define __dockUISrc_visibilityChanged__ 2043 - -/*----------------------------------------------------------------------*/ - -CLASS IdeDocks INHERIT IdeObject - - DATA nPass INIT 0 - DATA aPanels INIT {} - DATA aMdiBtns INIT {} - DATA aBtnLines INIT {} - DATA aBtnDocks INIT {} - DATA oBtnTabClose - - DATA aViewsInfo INIT {} - - DATA qTBtnClose - - DATA lChanging INIT .f. - - DATA qTimer - DATA nPrevWindowState INIT Qt_WindowNoState - DATA lSystemTrayAvailable INIT .f. - DATA lMinimizeInSystemTray INIT .f. /* TODO: make it user definable */ - DATA qAct1 - DATA qAct2 - DATA cOldView INIT "" - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() - METHOD execEvent( nEvent, p, p1 ) - METHOD setView( cView ) - METHOD buildHelpWidget() - METHOD buildSkeletonWidget() - METHOD buildDialog() - METHOD buildViewWidget( cView ) - METHOD buildStackedWidget() - METHOD buildSearchReplaceWidget() - METHOD buildDockWidgets() - METHOD buildProjectTree() - METHOD buildEditorTree() - METHOD buildFuncList() - METHOD buildFunctionsDock() - METHOD buildSkeletonsTree() - METHOD buildCompileResults() - METHOD buildLinkResults() - METHOD buildOutputResults() - METHOD buildFindInFiles() - METHOD buildThemesDock() - METHOD buildPropertiesDock() - METHOD buildEnvironDock() - METHOD buildDocViewer() - METHOD buildDocWriter() - METHOD outputDoubleClicked( lSelected ) - METHOD buildStatusBar() - METHOD setStatusText( nPart, xValue ) - METHOD getMarkWidget( nIndex ) - METHOD dispEnvironment( cEnviron ) - //METHOD addPanelButton( cPanel ) - METHOD disblePanelButton( qTBtn ) - METHOD getADockWidget( nAreas, cObjectName, cWindowTitle, nFlags ) - METHOD getPanelIcon( cView ) - METHOD animateComponents( nMode ) - METHOD buildSourceThumbnail() - METHOD buildUpDownWidget() - METHOD buildSystemTray() - METHOD showDlgBySystemTrayIconCommand() - METHOD setViewInitials() - METHOD getEditorPanelsInfo() - METHOD restPanelsGeometry() - METHOD savePanelsGeometry() - METHOD stackVertically() - METHOD stackHorizontally() - METHOD stackMaximized() - METHOD stackZoom( nMode ) - METHOD restState( nMode ) - METHOD setButtonState( cButton, lChecked ) - METHOD buildFormatWidget() - METHOD hideAllDocks() - METHOD buildCuiEdWidget() - METHOD buildUISrcDock() - METHOD showSelectedTextToolbar( oEdit ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:new( oIde ) - ::oIde := oIde - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:create( oIde ) - DEFAULT oIde TO ::oIde - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:hideAllDocks() - - // Left - ::oDockPT : hide() - ::oDockED : hide() - ::oSkltnsTreeDock : hide() - - // Right - ::oEnvironDock : hide() - ::oPropertiesDock : hide() - ::oThemesDock : hide() - ::oDocViewDock : hide() - ::oDocWriteDock : hide() - ::oFindDock : hide() - ::oFunctionsDock : hide() - ::oSkeltnDock : hide() - ::oHelpDock : hide() - ::oFuncDock : hide() - ::oSourceThumbnailDock : hide() - ::oFormatDock : hide() - ::oCuiEdDock : hide() - ::oUiSrcDock : hide() - - // Bottom - ::oDockB2 : hide() - ::oDockB1 : hide() - ::oDockB : hide() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:destroy() - LOCAL qTmp - - FOR EACH qTmp IN ::oIde:aViews - qTmp:oTabWidget:oWidget:disconnect( QEvent_DragEnter ) - qTmp:oTabWidget:oWidget:disconnect( QEvent_DragMove ) - qTmp:oTabWidget:oWidget:disconnect( QEvent_Drop ) - NEXT - - ::oDlg:oWidget : disconnect( QEvent_WindowStateChange ) - ::oDlg:oWidget : disconnect( QEvent_Hide ) - - ::oIde:oProjRoot := NIL - ::oIde:oOpenedSources := NIL - - ::oOutputResult:oWidget : disconnect( "copyAvailable(bool)" ) - ::oEnvironDock:oWidget : disconnect( "visibilityChanged(bool)" ) - ::oPropertiesDock:oWidget : disconnect( "visibilityChanged(bool)" ) - ::oThemesDock:oWidget : disconnect( "visibilityChanged(bool)" ) - ::oDocViewDock:oWidget : disconnect( "visibilityChanged(bool)" ) - ::oDocWriteDock:oWidget : disconnect( "visibilityChanged(bool)" ) - ::oFindDock:oWidget : disconnect( "visibilityChanged(bool)" ) - ::oFunctionsDock:oWidget : disconnect( "visibilityChanged(bool)" ) - ::oSkeltnDock:oWidget : disconnect( "visibilityChanged(bool)" ) - ::oHelpDock:oWidget : disconnect( "visibilityChanged(bool)" ) - ::oFuncDock:oWidget : disconnect( "visibilityChanged(bool)" ) - - ::oSourceThumbnailDock:oWidget: disconnect( "visibilityChanged(bool)" ) - ::oFormatDock:oWidget : disconnect( "visibilityChanged(bool)" ) - ::oCuiEdDock:oWidget : disconnect( "visibilityChanged(bool)" ) - ::oUiSrcDock:oWidget : disconnect( "visibilityChanged(bool)" ) - - #if 0 /* Not Implemented */ - ::oDockPT:oWidget : disconnect( "visibilityChanged(bool)" ) - ::oDockED:oWidget : disconnect( "visibilityChanged(bool)" ) - ::oDockB2:oWidget : disconnect( "visibilityChanged(bool)" ) - #endif - - IF !empty( ::oSys ) - ::oIde:oSys : disconnect( "activated(QSystemTrayIcon::ActivationReason)" ) - IF HB_ISOBJECT( ::qAct1 ) - ::qAct1 : disconnect( "triggered(bool)" ) - ::qAct2 : disconnect( "triggered(bool)" ) - ENDIF - - ::oIde:oSys := NIL - ::qAct1 := NIL - ::qAct2 := NIL - ENDIF - - IF !empty( ::qTimer ) - ::qTimer:disconnect( "timeout()" ) - ::qTimer:stop() - ::qTimer := NIL - ENDIF - - FOR EACH qTmp IN ::aPanels - qTmp:disconnect( "clicked()" ) - qTmp := NIL - NEXT - FOR EACH qTmp IN ::aMdiBtns - qTmp:disconnect( "clicked()" ) - qTmp := NIL - NEXT - - FOR EACH qTmp IN ::oIde:aMarkTBtns - qTmp:disconnect( "clicked()" ) - qTmp := NIL - NEXT - - FOR EACH qTmp IN ::oIde:aMdies - qTmp:disconnect( "windowStateChanged(Qt::WindowStates,Qt::WindowStates)" ) - qTmp := NIL - NEXT - - IF HB_ISOBJECT( ::qMdiToolBar ) - ::qMdiToolBar:destroy() - ::qMdiToolBar := NIL - ENDIF - IF HB_ISOBJECT( ::qMdiToolBarL ) - ::qMdiToolBarL:destroy() - ::qMdiToolBarL := NIL - ENDIF - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD IdeDocks:getEditorPanelsInfo() - LOCAL qLst, k, j, b_, a_:= {} - - qLst := ::oStackedWidget:oWidget:subWindowList( QMdiArea_StackingOrder ) /* The order tabs are visible */ - FOR k := 1 TO qLst:count() -#if 0 - cView := qLst:at( k - 1 ):objectName() - ascan( ::aViewsInfo, {|e_| e_[ 1 ] == cView } ) -#else - j := k -#endif - b_:= ::aViewsInfo[ j ] - - aadd( a_, b_[ 1 ] + "," + ; - iif( empty( b_[ 2 ] ), "", hbide_nArray2String( { b_[ 2 ]:x(), b_[ 2 ]:y(), b_[ 2 ]:width(), b_[ 2 ]:height() } ) ) + "," + ; - hb_ntos( b_[ 3 ] ) + "," + hb_ntos( b_[ 4 ] ) + "," + ; - hb_ntos( ::oStackedWidget:oWidget:viewMode() ) + "," + hb_ntos( ::oINI:nEditsViewStyle ) + "," ; - ) - NEXT - RETURN a_ - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildDialog() - LOCAL s, aSize, a_, x_, lNew := .f. - - ::oIde:oDlg := XbpDialog():new() - ::oDlg:icon := hbide_image( "hbide" ) - ::oDlg:title := "Harbour IDE" - ::oDlg:create( , , , , , .f. ) - - ::oDlg:oWidget:setStyleSheet( GetStyleSheet( "QMainWindow", ::nAnimantionMode ) ) - - ::oDlg:close := {|| hbide_setClose( hbide_getYesNo( "HbIDE is about to be closed!", "Are you sure?" ) ), ; - PostAppEvent( xbeP_Close, , , ::oDlg ) } - ::oDlg:setDockOptions( QMainWindow_AllowTabbedDocks + QMainWindow_AllowNestedDocks + QMainWindow_AnimatedDocks ) - ::oDlg:setTabShape( ::oINI:nDocksTabShape ) - ::oDlg:setTabPosition( Qt_RightDockWidgetArea , ::oINI:nDocksRightTabPos ) - ::oDlg:setTabPosition( Qt_BottomDockWidgetArea, ::oINI:nDocksBottomTabPos ) - ::oDlg:setTabPosition( Qt_LeftDockWidgetArea , ::oINI:nDocksLeftTabPos ) - ::oDlg:setTabPosition( Qt_TopDockWidgetArea , ::oINI:nDocksTopTabPos ) - - ::oDlg:setCorner( Qt_BottomLeftCorner , Qt_LeftDockWidgetArea ) - ::oDlg:setCorner( Qt_BottomRightCorner, Qt_RightDockWidgetArea ) - ::oDlg:oWidget:resize( 1000,570 ) - - ::oIde:oDa := ::oDlg:drawingArea - - ::oParts:buildParts() - - SetAppWindow( ::oDlg ) - - // Center on Desktop and decorate - aSize := AppDesktop():currentSize() - ::oDlg:setPos( { ( aSize[ 1 ] - ::oDlg:currentSize()[ 1 ] ) / 2, ; - ( aSize[ 2 ] - ::oDlg:currentSize()[ 2 ] ) / 2 } ) - ::oIde:setPosAndSizeByIniEx( ::oDlg:oWidget, ::oINI:cMainWindowGeometry ) - - /* StatusBar */ - ::buildStatusBar() - - ::oAC:buildMdiToolbar() - ::oParts:addWidget( IDE_PART_EDITOR, ::oAC:qMdiToolbar:oWidget , 0, 0, 1, 2 ) - ::oAC:buildMdiToolbarLeft() - ::oParts:addWidget( IDE_PART_EDITOR, ::oAC:qMdiToolbarL:oWidget , 1, 0, 1, 1 ) - ::buildStackedWidget() - ::oParts:addWidget( IDE_PART_EDITOR, ::oStackedWidget:oWidget , 1, 1, 1, 1 ) - ::buildSearchReplaceWidget() - ::oParts:addWidget( IDE_PART_EDITOR, ::oSearchReplace:oUI:oWidget, 2, 0, 1, 2 ) - - /* Normalize Views */ - FOR EACH s IN ::oINI:aViews - a_:= hb_aTokens( s, "," ) - asize( a_, 6 ) - IF ! empty( a_[ 2 ] ) - a_[ 2 ] := hbide_array2Rect( hbide_string2nArray( a_[ 2 ] ) ) - ENDIF - DEFAULT a_[ 3 ] TO "0" - DEFAULT a_[ 4 ] TO "0" - DEFAULT a_[ 5 ] TO hb_ntos( QMdiArea_TabbedView ) - DEFAULT a_[ 6 ] TO "0" - a_[ 3 ] := val( a_[ 3 ] ) - a_[ 4 ] := val( a_[ 4 ] ) - a_[ 5 ] := val( a_[ 5 ] ) - a_[ 6 ] := val( a_[ 6 ] ) - aadd( ::aViewsInfo, a_ ) - NEXT - IF ascan( ::aViewsInfo, {|e_| e_[ 1 ] == "Main" } ) == 0 - lNew := .t. - hb_ains( ::aViewsInfo, 1, { "Main", NIL, 0, 0, QMdiArea_TabbedView, 0 }, .t. ) - ENDIF - - /* View Panels */ - x_:= aclone( ::aViewsInfo ) - FOR EACH a_ IN ::aViewsInfo - ::buildViewWidget( a_[ 1 ] ) - NEXT - - ::setView( "Main" ) - - IF lNew - ::oStackedWidget:setViewMode( QMdiArea_TabbedView ) - ::oINI:nEditsViewStyle := HBPMDI_STYLE_MAXIMIZED - ::stackMaximized() - - ELSE - IF x_[ 1,5 ] == QMdiArea_TabbedView - ::oStackedWidget:setViewMode( QMdiArea_TabbedView ) - ENDIF - - IF x_[ 1,6 ] == HBPMDI_STYLE_TILED - ::oStackedWidget:tileSubWindows() - ELSEIF x_[ 1,6 ] == HBPMDI_STYLE_CASCADED - ::oStackedWidget:cascadeSubWindows() - ELSEIF x_[ 1,6 ] == HBPMDI_STYLE_MAXIMIZED - ::oINI:nEditsViewStyle := HBPMDI_STYLE_MAXIMIZED - ::stackMaximized() - ELSEIF x_[ 1,6 ] == HBPMDI_STYLE_TILEDVERT - ::oINI:nEditsViewStyle := HBPMDI_STYLE_TILEDVERT - ::stackVertically() - ELSEIF x_[ 1,6 ] == HBPMDI_STYLE_TILEDHORZ - ::oINI:nEditsViewStyle := HBPMDI_STYLE_TILEDHORZ - ::stackHorizontally() - ELSE - FOR EACH a_ IN x_ - IF !empty( a_[ 2 ] ) - ::oIde:aMdies[ a_:__enumIndex() ]:setGeometry( a_[ 2 ] ) - ENDIF - ::oIde:aMdies[ a_:__enumIndex() ]:setWindowState( a_[ 4 ] ) - NEXT - ENDIF - ENDIF - - ::oDlg:oWidget:connect( QEvent_WindowStateChange, {|e| ::execEvent( __QEvent_WindowStateChange__, e ) } ) - ::oDlg:oWidget:connect( QEvent_Hide , {|e| ::execEvent( __QEvent_Hide__ , e ) } ) - - ::buildSystemTray() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildDockWidgets() - - ::buildProjectTree() - ::buildEditorTree() - - ::buildFuncList() - ::buildSkeletonsTree() - - ::buildHelpWidget() - ::buildSkeletonWidget() - ::buildFindInFiles() - ::buildThemesDock() - ::buildPropertiesDock() - ::buildEnvironDock() - - ::buildCompileResults() - ::buildLinkResults() - ::buildOutputResults() - ::buildDocViewer() - ::buildDocWriter() - ::buildFunctionsDock() - ::buildSourceThumbnail() - ::buildUpDownWidget() - ::buildFormatWidget() - ::buildCuiEdWidget() - ::buildUiSrcDock() - - /* Bottom Docks */ - ::oDlg:oWidget:tabifyDockWidget( ::oDockB:oWidget , ::oDockB1:oWidget ) - ::oDlg:oWidget:tabifyDockWidget( ::oDockB1:oWidget , ::oDockB2:oWidget ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildSystemTray() - - IF empty( ::oSys ) - ::oIde:oSys := QSystemTrayIcon( ::oDlg:oWidget ) - IF ( ::lSystemTrayAvailable := ::oSys:isSystemTrayAvailable() ) .AND. ::lMinimizeInSystemTray - ::oSys:setIcon( QIcon( hbide_image( "hbide" ) ) ) - ::oSys:connect( "activated(QSystemTrayIcon::ActivationReason)", {|p| ::execEvent( __qSystemTrayIcon_activated__, p ) } ) - - ::oIde:oSysMenu := QMenu() - ::qAct1 := ::oSysMenu:addAction( QIcon( hbide_image( "fullscreen" ) ), "&Show" ) - ::oSysMenu:addSeparator() - ::qAct2 := ::oSysMenu:addAction( QIcon( hbide_image( "exit" ) ), "&Exit" ) - - ::qAct1:connect( "triggered(bool)", {|| ::execEvent( __qSystemTrayIcon_show__ ) } ) - ::qAct2:connect( "triggered(bool)", {|| ::execEvent( __qSystemTrayIcon_close__ ) } ) - - ::oSys:setContextMenu( ::oSysMenu ) - ::oSys:hide() - ::oSys:setToolTip( "Harbour's Integrated Development Environment (v1.0)" ) - ENDIF - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:execEvent( nEvent, p, p1 ) - LOCAL qEvent, qMime, qList, qUrl, i, n, oEdit, aMenu - - IF ::lQuitting - RETURN Self - ENDIF - - SWITCH nEvent - CASE __dockUISrc_visibilityChanged__ - IF p; ::oUiS:show(); ENDIF - IF ! p .AND. ! p1:isVisible() - p1:raise() - ENDIF - EXIT - - CASE __dockCuiEd_visibilityChanged__ - IF p; ::oCUI:show(); ENDIF - IF ! p .AND. ! p1:isVisible() - p1:raise() - ENDIF - EXIT - - CASE __dockFormat_visibilityChanged__ - IF p; ::oFmt:show(); ENDIF - IF ! p .AND. ! p1:isVisible() - p1:raise() - ENDIF - EXIT - CASE __dockSourceThumbnail_visibilityChanged__ - IF p; ::oEM:showThumbnail(); ENDIF - IF !empty( p1 ) - IF ! p .AND. ! p1:isVisible() - p1:raise() - ENDIF - ENDIF - EXIT - CASE __dockSkltnsTree_visibilityChanged__ - IF p; ::oSK:showTree(); ENDIF - IF !empty( p1 ) - IF ! p .AND. ! p1:isVisible() - p1:raise() - ENDIF - ENDIF - EXIT - CASE __dockHelpDock_visibilityChanged__ - IF !empty( p1 ) - IF ! p .AND. ! p1:isVisible() - p1:raise() - ENDIF - ENDIF - EXIT - CASE __dockDocViewer_visibilityChanged__ - IF p; ::oHL:show(); ENDIF - IF !empty( p1 ) - IF ! p .AND. ! p1:isVisible() - p1:raise() - ENDIF - ENDIF - EXIT - CASE __dockDocWriter_visibilityChanged__ - IF p; ::oDW:show(); ENDIF - IF !empty( p1 ) - IF ! p .AND. ! p1:isVisible() - p1:raise() - ENDIF - ENDIF - EXIT - CASE __oFuncDock_visibilityChanged__ - IF !empty( p1 ) - IF ! p .AND. ! p1:isVisible() - p1:raise() - ENDIF - ENDIF - EXIT - CASE __docFunctions_visibilityChanged__ - IF p; ::oFN:show(); ENDIF - IF !empty( p1 ) - IF ! p .AND. ! p1:isVisible() - p1:raise() - ENDIF - ENDIF - EXIT - CASE __dockProperties_visibilityChanged__ - IF p; ::oPM:fetchProperties(); ENDIF - IF !empty( p1 ) - IF ! p .AND. ! p1:isVisible() - p1:raise() - ENDIF - ENDIF - EXIT - CASE __docEnvironments_visibilityChanged__ - IF p; ::oEV:show(); ENDIF - IF !empty( p1 ) - IF ! p .AND. ! p1:isVisible() - p1:raise() - ENDIF - ENDIF - EXIT - CASE __docSkeletons_visibilityChanged__ - IF p; ::oSK:show(); ENDIF - IF !empty( p1 ) - IF ! p .AND. ! p1:isVisible() - p1:raise() - ENDIF - ENDIF - EXIT - CASE __dockThemes_visibilityChanged__ - IF p; ::oTH:show(); ENDIF - IF !empty( p1 ) - IF ! p .AND. ! p1:isVisible() - p1:raise() - ENDIF - ENDIF - EXIT - CASE __dockFindInFiles_visibilityChanged__ - IF p; ::oFF:show(); ENDIF - IF !empty( p1 ) - IF ! p .AND. ! p1:isVisible() - p1:raise() - ENDIF - ENDIF - EXIT - /* Miscellaneous */ - CASE __qHelpBrw_contextMenuRequested__ - hbide_popupBrwContextMenu( ::qHelpBrw, p ) - EXIT - CASE __outputConsole_contextMenuRequested__ - aMenu := {} - aadd( aMenu, { "Clear" , {|| ::oOutputResult:oWidget:clear() } } ) - aadd( aMenu, { "" } ) - aadd( aMenu, { "Select All", {|| ::oOutputResult:oWidget:selectAll() } } ) - aadd( aMenu, { "Copy" , {|| ::oOutputResult:oWidget:copy() } } ) - hbide_execPopup( aMenu, p, ::oOutputResult:oWidget ) - EXIT - - CASE QEvent_WindowStateChange - ::nPrevWindowState := p:oldState() - EXIT - - CASE QEvent_Hide - IF ::lSystemTrayAvailable .AND. ::lMinimizeInSystemTray - qEvent := p - IF ! ::lChanging - ::lChanging := .t. - IF qEvent:spontaneous() - IF empty( ::qTimer ) - ::qTimer := QTimer() - ::qTimer:setSingleShot( .t. ) - ::qTimer:setInterval( 250 ) - ::qTimer:connect( "timeout()", {|| ::execEvent( __qTimer_timeOut__ ) } ) - ENDIF - ::qTimer:start() - qEvent:ignore() - ENDIF - ::lChanging := .f. - ENDIF - ENDIF - EXIT - - CASE __qTimer_timeOut__ - ::oDlg:hide() - ::oSys:setToolTip( ::oDlg:oWidget:windowTitle() ) - ::oSys:show() - EXIT - - CASE __qSystemTrayIcon_close__ - PostAppEvent( xbeP_Close, NIL, NIL, ::oDlg ) - EXIT - - CASE __qSystemTrayIcon_show__ - ::showDlgBySystemTrayIconCommand() - EXIT - - CASE __qSystemTrayIcon_activated__ - IF p == QSystemTrayIcon_Trigger - ::showDlgBySystemTrayIconCommand() - ELSEIF p == QSystemTrayIcon_DoubleClick - ELSEIF p == QSystemTrayIcon_Context - ELSEIF p == QSystemTrayIcon_MiddleClick - ENDIF - EXIT - - CASE __editWidget_dragMoveEvent__ - CASE __editWidget_dragEnterEvent__ - p:acceptProposedAction() - EXIT - - CASE __editWidget_dropEvent__ - qMime := p:mimeData() - IF qMime:hasUrls() - qList := qMime:urls() - FOR i := 0 TO qList:size() - 1 - qUrl := qList:at( i ) - IF hbide_isValidText( qUrl:toLocalFile() ) - ::oSM:editSource( hbide_pathToOSPath( qUrl:toLocalFile() ) ) - ENDIF - NEXT - p:setDropAction( Qt_CopyAction ) - p:accept() - qList := NIL - ENDIF - qMime := NIL - EXIT - - CASE __projectTree_dragEnterEvent__ - p:acceptProposedAction() - EXIT - - CASE __projectTree_dropEvent__ - qMime := p:mimeData() - IF qMime:hasUrls() - qList := qMime:urls() - FOR i := 0 TO qList:size() - 1 - qUrl := qList:at( i ) - IF hbide_sourceType( qUrl:toLocalFile() ) == ".hbp" - ::oPM:loadProperties( qUrl:toLocalFile(), .f., .f., .t. ) - ENDIF - NEXT - ENDIF - EXIT - - CASE __x_mdiArea_subWindowActivated__ - IF ! empty( ::oIde:aMdies ) - IF ( n := ascan( ::oIde:aMdies, {|e| hbqt_IsEqual( e, p ) } ) ) > 0 - - ::setView( ::oIde:aMdies[ n ]:objectName() ) - - IF ! ::oIde:aMdies[ n ]:objectName() == "Stats" .AND. ! empty( ::oEM ) .AND. ! empty( oEdit := ::oEM:getEditorCurrent() ) - oEdit:setDocumentProperties() - oEdit:qCoEdit:relayMarkButtons() - oEdit:qCoEdit:toggleLineNumbers() - oEdit:qCoEdit:toggleHorzRuler() - oEdit:qCoEdit:toggleCurrentLineHighlightMode() - oEdit:qCoEdit:dispStatusInfo() - ::oUpDn:show() - ::showSelectedTextToolbar() - oEdit:changeThumbnail() - ENDIF - - ENDIF - ENDIF - EXIT - - /* Left-toolbar actions */ - CASE __buttonViewTabbed_clicked__ - ::oStackedWidget:setViewMode( iif( ::oStackedWidget:viewMode() == QMdiArea_TabbedView, QMdiArea_SubWindowView, QMdiArea_TabbedView ) ) - EXIT - CASE __buttonViewOrganized_clicked__ - ::oINI:nEditsViewStyle := HBPMDI_STYLE_ORGANIZED - ::restState() - EXIT - CASE __buttonSaveLayout_clicked__ - IF ::oINI:nEditsViewStyle == HBPMDI_STYLE_ORGANIZED - ::savePanelsGeometry() - ENDIF - EXIT - CASE __buttonViewTiled_clicked__ - ::oStackedWidget:tileSubWindows() - ::oINI:nEditsViewStyle := HBPMDI_STYLE_TILED - EXIT - CASE __buttonViewCascaded_clicked__ - ::oStackedWidget:cascadeSubWindows() - ::oINI:nEditsViewStyle := HBPMDI_STYLE_CASCADED - EXIT - CASE __buttonViewMaximized_clicked__ - ::oINI:nEditsViewStyle := HBPMDI_STYLE_MAXIMIZED - ::stackMaximized() - EXIT - CASE __buttonViewStackedVert_clicked__ - ::oINI:nEditsViewStyle := HBPMDI_STYLE_TILEDVERT - ::stackVertically() - EXIT - CASE __buttonViewStackedHorz_clicked__ - ::oINI:nEditsViewStyle := HBPMDI_STYLE_TILEDHORZ - ::stackHorizontally() - EXIT - CASE __buttonViewZoomedIn_clicked__ - ::stackZoom( +1 ) - EXIT - CASE __buttonViewZoomedOut_clicked__ - ::stackZoom( -1 ) - EXIT - /* Ends: MDI actions */ - - CASE __mdiSubWindow_windowStateChanged__ - IF ! empty( ::oIde:aMdies ) - IF ( n := ascan( ::oIde:aMdies, {|o| o == p } ) ) > 0 - ::aViewsInfo[ n, 3 ] := p1[ 1 ] - ::aViewsInfo[ n, 4 ] := p1[ 2 ] - ENDIF - IF p1[ 2 ] >= 8 .AND. !( ::cWrkView == p:objectName() ) - ::setView( p:objectName() ) - IF ! empty( ::oEM ) .AND. ! empty( oEdit := ::oEM:getEditorCurrent() ) - oEdit:setDocumentProperties() - oEdit:qCoEdit:relayMarkButtons() - oEdit:qCoEdit:toggleLineNumbers() - oEdit:qCoEdit:toggleHorzRuler() - oEdit:qCoEdit:toggleCurrentLineHighlightMode() - oEdit:qCoEdit:dispStatusInfo() - ::oUpDn:show() - ::showSelectedTextToolbar() - oEdit:changeThumbnail() - ENDIF - ENDIF - ENDIF - EXIT - - ENDSWITCH - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:restState( nMode ) - LOCAL qMdi - HB_SYMBOL_UNUSED( nMode ) - FOR EACH qMdi IN ::oIde:aMdies - qMdi:setWindowState( Qt_WindowNoState ) - NEXT - ::restPanelsGeometry() - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:stackMaximized() - LOCAL qObj, qMdi - qObj := ::oStackedWidget:activeSubWindow() - FOR EACH qMdi IN ::oIde:aMdies - qMdi:setWindowState( Qt_WindowMaximized ) - NEXT - ::oStackedWidget:setActiveSubWindow( qObj ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:stackZoom( nMode ) - LOCAL qMdi, nT, nL, nH, nW, qRect - - HB_SYMBOL_UNUSED( nMode ) - - IF ::oINI:nEditsViewStyle == 4 .OR. ::oINI:nEditsViewStyle == 5 - IF ::oINI:nEditsViewStyle == 4 - nT := 0 - FOR EACH qMdi IN ::oIde:aMdies - qRect := qMdi:geometry() - nH := qRect:height() + ( nMode * ( qRect:height() / 4 ) ) - qMdi:setGeometry( QRect( 0, nT, qRect:width(), nH ) ) - nT += nH - NEXT - ELSE - nL := 0 - FOR EACH qMdi IN ::oIde:aMdies - qRect := qMdi:geometry() - nW := qRect:width() + ( nMode * ( qRect:width() / 4 ) ) - qMdi:setGeometry( QRect( nL, 0, nW, qRect:height() ) ) - nL += nW - NEXT - ENDIF - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:stackHorizontally() - LOCAL qArea, qObj, qVPort, nH, nT, nW, qMdi, nL - - ::restState( 0 ) - - qArea := ::oStackedWidget - qObj := qArea:activeSubWindow() - qVPort := qArea:viewport() - nH := qVPort:height() - nW := qVPort:width() / Len( ::oIde:aMdies ) - nT := 0 - nL := 0 - - FOR EACH qMdi IN ::oIde:aMdies - qMdi:setGeometry( QRect( nL, nT, nW, nH ) ) - nL += nW - NEXT - - ::oStackedWidget:setActiveSubWindow( qObj ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:stackVertically() - LOCAL qArea, qObj, qVPort, nH, nT, nW, qMdi - - ::restState( 0 ) - - qArea := ::oStackedWidget - qObj := qArea:activeSubWindow() - qVPort := qArea:viewport() - nH := qVPort:height() / Len( ::oIde:aMdies ) - nW := qVPort:width() - nT := 0 - - FOR EACH qMdi IN ::oIde:aMdies - qMdi:setGeometry( QRect( 0, nT, nW, nH ) ) - nT += nH - NEXT - - ::oStackedWidget:setActiveSubWindow( qObj ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:restPanelsGeometry() - LOCAL a_, n - FOR EACH a_ IN ::aViewsInfo - IF ( n := ascan( ::oIde:aMdies, {|o| o:objectName() == a_[ 1 ] } ) ) > 0 - IF HB_ISOBJECT( a_[ 2 ] ) - ::oIde:aMdies[ n ]:setGeometry( a_[ 2 ] ) - ENDIF - ENDIF - NEXT - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD IdeDocks:savePanelsGeometry() - LOCAL a_, n - FOR EACH a_ IN ::aViewsInfo - IF ( n := ascan( ::oIde:aMdies, {|o| o:objectName() == a_[ 1 ] } ) ) > 0 - a_[ 2 ] := ::oIde:aMdies[ n ]:geometry() - ENDIF - NEXT - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD IdeDocks:showDlgBySystemTrayIconCommand()() - - ::oSys:hide() - - IF hb_bitAnd( ::nPrevWindowState, Qt_WindowMaximized ) == Qt_WindowMaximized - ::oDlg:oWidget:showMaximized() - ELSEIF hb_bitAnd( ::nPrevWindowState, Qt_WindowFullScreen ) == Qt_WindowFullScreen - ::oDlg:oWidget:showFullScreen() - ELSE - ::oDlg:oWidget:showNormal() - ENDIF - - ::oDlg:oWidget:raise() - ::oDlg:oWidget:activateWindow() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:getADockWidget( nAreas, cObjectName, cWindowTitle, nFlags ) - LOCAL oDock, nBasic - - DEFAULT nFlags TO 0 - - nBasic := hb_bitOR( QDockWidget_DockWidgetClosable, nFlags ) - - oDock := XbpWindow():new() - oDock:oWidget := QDockWidget( ::oDlg:oWidget ) - oDock:oWidget:setObjectName( cObjectName ) - ::oDlg:addChild( oDock ) - oDock:oWidget:setFeatures( nBasic ) - oDock:oWidget:setAllowedAreas( nAreas ) - oDock:oWidget:setWindowTitle( cWindowTitle ) - oDock:oWidget:setFocusPolicy( Qt_NoFocus ) - oDock:oWidget:setStyleSheet( getStyleSheet( "QDockWidget", ::nAnimantionMode ) ) - oDock:hide() - - RETURN oDock - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:setViewInitials() - LOCAL a_ - - FOR EACH a_ IN ::aViewsInfo - ::setView( a_[ 1 ] ) - - IF ::qTabWidget:count() == 1 - ::oEM:setSourceVisibleByIndex( 0 ) - ELSE -#if 0 - ::qTabWidget:setCurrentIndex( 0 ) - ::qTabWidget:setCurrentIndex( ::qTabWidget:count() - 1 ) - ::qTabWidget:setCurrentIndex( 0 ) -#endif - ENDIF - NEXT - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD IdeDocks:setView( cView ) - LOCAL n, nIndex - - ::cOldView := ::oIde:cWrkView - - SWITCH cView - - CASE "New..." - cView := hbide_fetchAString( ::qViewsCombo, cView, "Name the View", "New View" ) - IF !( cView == "New..." ) .AND. !( cView == "Main" ) - IF ascan( ::aViewsInfo, {|e_| e_[ 1 ] == cView } ) > 0 - MsgBox( "View: " + cView + ", already exists" ) - ELSE - aadd( ::aViewsInfo, { cView, NIL, 0, 0, 0, 0 } ) - ::oTM:addPanelsMenu( cView ) - ::buildViewWidget( cView ) - ::setView( cView ) - ENDIF - ENDIF - EXIT - - OTHERWISE - IF ( n := ascan( ::aViews, {|o| iif( HB_ISSTRING( o:oWidget:objectName() ), o:oWidget:objectName() == cView, .f. ) } ) ) > 0 - ::oIde:cWrkView := cView - ::oIde:qTabWidget := ::aViews[ n ]:oTabWidget:oWidget - ::oIde:oTabParent := ::aViews[ n ] - - nIndex := ::oIde:qTabWidget:currentIndex() - IF nIndex + 1 == ::oIde:qTabWidget:count() - IF !( ::oIde:lClosing ) - ::oIde:qTabWidget:setCurrentIndex( 0 ) - ::oIde:qTabWidget:setCurrentIndex( nIndex ) /* TODO: Must be last saved */ - ENDIF - ENDIF - - ::oStackedWidget:oWidget:setActiveSubWindow( ::oIde:aMdies[ n ] ) - ::setStatusText( SB_PNL_VIEW, ::cWrkView ) - ELSE - aadd( ::aViewsInfo, { cView, NIL, 0, 0, 0, 0 } ) - ::oTM:addPanelsMenu( cView ) - ::buildViewWidget( cView ) - ::setView( cView ) - ENDIF - EXIT - - ENDSWITCH - - RETURN NIL - -/*------------------------------------------------------------------------*/ - -METHOD IdeDocks:setButtonState( cButton, lChecked ) - IF ::oAC:qMdiToolbar:contains( cButton ) - RETURN ::oAC:qMdiToolbar:setItemChecked( cButton, lChecked ) - ELSEIF ::oAC:qMdiToolbarL:contains( cButton ) - RETURN ::oAC:qMdiToolbarL:setItemChecked( cButton, lChecked ) - ENDIF - RETURN .f. - -/*------------------------------------------------------------------------*/ - -METHOD IdeDocks:buildStackedWidget() - - ::oIde:oStackedWidget := XbpWindow():new( ::oDa ) - ::oStackedWidget:oWidget := QMdiArea( ::oDa:oWidget ) - ::oStackedWidget:oWidget:setObjectName( "editMdiArea" ) - ::oStackedWidget:oWidget:setDocumentMode( .t. ) - ::oStackedWidget:oWidget:setOption( QMdiArea_DontMaximizeSubWindowOnActivation, .t. ) - ::oStackedWidget:oWidget:setVerticalScrollBarPolicy( Qt_ScrollBarAsNeeded ) - ::oStackedWidget:oWidget:setHorizontalScrollBarPolicy( Qt_ScrollBarAsNeeded ) - ::oStackedWidget:oWidget:setActivationOrder( QMdiArea_CreationOrder ) - ::oStackedWidget:oWidget:setTabsMovable( .t. ) -// ::oStackedWidget:oWidget:setTabsClosable( .t. ) /* Later */ - ::oStackedWidget:setTabShape( ::oINI:nPanelsTabShape ) - ::oStackedWidget:setTabPosition( ::oINI:nPanelsTabPosition ) - - ::oDa:addChild( ::oStackedWidget ) - - ::oStackedWidget:oWidget:connect( "subWindowActivated(QMdiSubWindow*)", {|p| ::execEvent( __mdiArea_subWindowActivated__, p ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildViewWidget( cView ) - LOCAL oFrame, qTBtnClose, qDrop, qMdi, n - - qMdi := QMdiSubWindow() - qMdi:setWindowTitle( cView ) - qMdi:setObjectName( cView ) - qMdi:setWindowIcon( QIcon( ::getPanelIcon( cView ) ) ) - - oFrame := XbpWindow():new( ::oStackedWidget ) - oFrame:oWidget := QWidget( ::oStackedWidget:oWidget ) - oFrame:oWidget:setObjectName( cView ) - ::oStackedWidget:addChild( oFrame ) - - oFrame:hbLayout := HBPLAYOUT_TYPE_VERTBOX - oFrame:qLayout:setContentsMargins( 0,0,0,0 ) - - oFrame:oTabWidget := XbpTabWidget():new():create( oFrame, , {0,0}, {200,200}, , .t. ) - - qTBtnClose := QToolButton() - qTBtnClose:setTooltip( "Close Tab" ) - qTBtnClose:setAutoRaise( .t. ) - qTBtnClose:setIcon( QIcon( hbide_image( "closetab" ) ) ) - qTBtnClose:connect( "clicked()", {|| ::oSM:closeSource() } ) - oFrame:oTabWidget:qCornerWidget := qTBtnClose - oFrame:oTabWidget:oWidget:setCornerWidget( qTBtnClose, Qt_TopRightCorner ) - - qDrop := oFrame:oTabWidget:oWidget - - qDrop:setAcceptDrops( .t. ) - qDrop:connect( QEvent_DragEnter, {|p| ::execEvent( __editWidget_dragEnterEvent__, p ) } ) - qDrop:connect( QEvent_DragMove , {|p| ::execEvent( __editWidget_dragMoveEvent__ , p ) } ) - qDrop:connect( QEvent_Drop , {|p| ::execEvent( __editWidget_dropEvent__ , p ) } ) - - oFrame:oTabWidget:oWidget:setUsesScrollButtons( .t. ) - oFrame:oTabWidget:oWidget:setMovable( .t. ) - - oFrame:oWidget:show() - oFrame:oTabWidget:oWidget:show() - - aadd( ::oIde:aViews, oFrame ) - aadd( ::oIde:aMdies, qMdi ) - - IF ( n := ascan( ::aViewsInfo, {|e_| e_[ 1 ] == cView } ) ) > 0 - IF !empty( ::aViewsInfo[ n, 2 ] ) - qMdi:setGeometry( ::aViewsInfo[ n, 2 ] ) - ELSE - qMdi:resize( 300, 200 ) - ENDIF - ENDIF - qMdi:setWidget( oFrame:oWidget ) - - ::oStackedWidget:oWidget:addSubWindow( qMdi ) - qMdi:connect( "windowStateChanged(Qt::WindowStates,Qt::WindowStates)", ; - {|p,p1| ::execEvent( __mdiSubWindow_windowStateChanged__, qMdi, { p, p1 } ) } ) - ::setView( cView ) - - RETURN oFrame - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildSearchReplaceWidget() - - ::oIde:oSearchReplace := IdeSearchReplace():new( ::oIde ):create() - ::oSearchReplace:oUI:hide() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildUpDownWidget() - - ::oIde:oUpDn := IdeUpDown():new( ::oIde ):create() - ::oUpDn:oUI:hide() - - ::oUpDn:oUI:setParent( ::oAC:qMdiToolbarL:oWidget ) - ::oUpDn:oUI:show() - ::oAC:qMdiToolbarL:addWidget( "UpDown", ::oUpDn:oUI:oWidget ) - ::oUpDn:oUI:hide() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:disblePanelButton( qTBtn ) - LOCAL q - FOR EACH q IN ::aPanels - q:setEnabled( !( q == qTBtn ) ) - NEXT - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:getPanelIcon( cView ) - LOCAL n - - IF ( n := ascan( ::aViewsInfo, {|e_| e_[ 1 ] == cView } ) ) > 0 - IF n > 20 - n -= 20 - ENDIF - // RETURN hbide_image( "panel_" + hb_ntos( n ) ) - RETURN hbide_image( "b_" + hb_ntos( n ) ) - ENDIF - - RETURN "" - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildProjectTree() - LOCAL i, oItem, qDrop - LOCAL nAreas := Qt_LeftDockWidgetArea + Qt_RightDockWidgetArea + Qt_TopDockWidgetArea + Qt_BottomDockWidgetArea - - ::oIde:oDockPT := ::getADockWidget( nAreas, "dockProjectTree", "Projects", QDockWidget_DockWidgetFloatable ) - ::oDlg:oWidget:addDockWidget( Qt_LeftDockWidgetArea, ::oDockPT:oWidget, Qt_Vertical ) - - ::oIde:oProjTree := XbpTreeView():new() - ::oProjTree:hasLines := .T. - ::oProjTree:hasButtons := .T. - ::oProjTree:create( ::oDockPT, , { 0,0 }, { 100,10 }, , .t. ) - - ::oProjTree:oWidget:setStyleSheet( GetStyleSheet( "QTreeWidgetHB", ::nAnimantionMode ) ) - ::oProjTree:oWidget:setMinimumWidth( 100 ) - ::oProjTree:oWidget:setSizePolicy( QSizePolicy_MinimumExpanding, QSizePolicy_Preferred ) - ::oProjTree:oWidget:setIconSize( QSize( 12,12 ) ) - ::oProjTree:oWidget:setIndentation( 12 ) - - * ::oProjTree:itemMarked := {|oItem| ::manageItemSelected( 0, oItem ), ::oCurProjItem := oItem } - ::oProjTree:itemMarked := {|oItem| ::oIde:oCurProjItem := oItem } //, ::oIde:manageFocusInEditor() } - ::oProjTree:itemSelected := {|oItem| ::oIde:manageItemSelected( oItem ) } - ::oProjTree:hbContextMenu := {|mp1, mp2, oXbp| ::oIde:manageProjectContext( mp1, mp2, oXbp ) } - - ::oIde:oProjRoot := ::oProjTree:rootItem:addItem( "Projects" ) - - oItem := ::oProjRoot:addItem( "Executables" ) - oItem:oWidget:setIcon( 0, QIcon( hbide_image( "fl_exe" ) ) ) - aadd( ::aProjData, { oItem, "Executables", ::oProjRoot, NIL, NIL } ) - oItem := ::oProjRoot:addItem( "Libs" ) - oItem:oWidget:setIcon( 0, QIcon( hbide_image( "fl_lib" ) ) ) - aadd( ::aProjData, { oItem, "Libs" , ::oProjRoot, NIL, NIL } ) - oItem := ::oProjRoot:addItem( "Dlls" ) - oItem:oWidget:setIcon( 0, QIcon( hbide_image( "fl_dll" ) ) ) - aadd( ::aProjData, { oItem, "Dlls" , ::oProjRoot, NIL, NIL } ) - - ::oProjRoot:expand( .t. ) - // - FOR i := 1 TO Len( ::aProjects ) - ::oIde:updateProjectTree( ::aProjects[ i, 3 ] ) - NEXT - - /* Insert Project Tree Into Dock Widget */ - ::oDockPT:oWidget:setWidget( ::oProjTree:oWidget ) - - ::oDockPT:hide() - - qDrop := ::oDockPT:oWidget // ::oProjTree:oWidget - - qDrop:setAcceptDrops( .t. ) - qDrop:connect( QEvent_DragEnter, {|p| ::execEvent( __projectTree_dragEnterEvent__, p ) } ) - qDrop:connect( QEvent_Drop , {|p| ::execEvent( __projectTree_dropEvent__ , p ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildEditorTree() - LOCAL nAreas := Qt_LeftDockWidgetArea + Qt_RightDockWidgetArea + Qt_TopDockWidgetArea + Qt_BottomDockWidgetArea - - ::oIde:oDockED := ::getADockWidget( nAreas, "dockEditorTabs", "Editors", QDockWidget_DockWidgetFloatable ) - ::oDlg:oWidget:addDockWidget( Qt_LeftDockWidgetArea, ::oDockED:oWidget, Qt_Vertical ) - - ::oIde:oEditTree := XbpTreeView():new() - ::oEditTree:hasLines := .T. - ::oEditTree:hasButtons := .T. - ::oEditTree:create( ::oDockED, , { 0,0 }, { 100,10 }, , .t. ) - - ::oEditTree:oWidget:setSizePolicy( QSizePolicy_MinimumExpanding, QSizePolicy_Preferred ) - ::oEditTree:oWidget:setMinimumWidth( 100 ) - ::oEditTree:oWidget:setIconSize( QSize( 12,12 ) ) - ::oEditTree:oWidget:setIndentation( 12 ) - * ::oEditTree:oWidget:setRootIsDecorated( .f. ) - - * ::oEditTree:itemMarked := {|oItem| ::manageItemSelected( 0, oItem ), ::oCurProjItem := oItem } - ::oEditTree:itemMarked := {|oItem| ::oIde:oCurProjItem := oItem } - ::oEditTree:itemSelected := {|oItem| ::oIde:manageItemSelected( oItem ) } - ::oEditTree:hbContextMenu := {|mp1, mp2, oXbp| ::oIde:manageProjectContext( mp1, mp2, oXbp ) } - - ::oIde:oOpenedSources := ::oEditTree:rootItem:addItem( "Editors" ) - ::oOpenedSources:expand( .t. ) - - /* Insert Project Tree Into Dock Widget */ - ::oDockED:oWidget:setWidget( ::oEditTree:oWidget ) - - ::oDockED:hide() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildSkeletonsTree() - LOCAL nAreas := Qt_LeftDockWidgetArea + Qt_RightDockWidgetArea + Qt_TopDockWidgetArea + Qt_BottomDockWidgetArea - - ::oIde:oSkltnsTreeDock := ::getADockWidget( nAreas, "dockSkltnsTree", "Skeletons", QDockWidget_DockWidgetFloatable ) - ::oDlg:oWidget:addDockWidget( Qt_LeftDockWidgetArea, ::oSkltnsTreeDock:oWidget, Qt_Vertical ) - ::oSkltnsTreeDock:oWidget:connect( "visibilityChanged(bool)", {|p| ::execEvent( __dockSkltnsTree_visibilityChanged__, p, ::oSkltnsTreeDock:oWidget ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildFuncList() - LOCAL nAreas := Qt_LeftDockWidgetArea + Qt_RightDockWidgetArea + Qt_TopDockWidgetArea + Qt_BottomDockWidgetArea - - ::oIde:oFuncDock := ::getADockWidget( nAreas, "dockFuncList", "Functions List", QDockWidget_DockWidgetFloatable ) - ::oDlg:oWidget:addDockWidget( Qt_RightDockWidgetArea, ::oFuncDock:oWidget, Qt_Vertical ) - ::oFuncDock:oWidget:connect( "visibilityChanged(bool)", {|p| ::execEvent( __oFuncDock_visibilityChanged__, p, ::oFuncDock:oWidget ) } ) - - ::oIde:oFuncList := XbpListBox():new( ::oFuncDock ):create( , , { 0,0 }, { 100,400 }, , .t. ) - ::oFuncList:oWidget:setEditTriggers( QAbstractItemView_NoEditTriggers ) - - //::oFuncList:ItemMarked := {|mp1, mp2, oXbp| ::gotoFunction( mp1, mp2, oXbp ) } - ::oFuncList:ItemSelected := {|mp1, mp2, oXbp| ::oIde:gotoFunction( mp1, mp2, oXbp ) } - /* Harbour Extension : prefixed with "hb" */ - ::oFuncList:hbContextMenu := {|mp1, mp2, oXbp| ::oIde:manageFuncContext( mp1, mp2, oXbp ) } - - ::oFuncDock:oWidget:setWidget( ::oFuncList:oWidget ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildHelpWidget() - - ::oIde:oHelpDock := ::getADockWidget( Qt_RightDockWidgetArea, "dockHelp", "hbIDE Help", QDockWidget_DockWidgetFloatable ) - ::oDlg:oWidget:addDockWidget( Qt_RightDockWidgetArea, ::oHelpDock:oWidget, Qt_Horizontal ) - - ::oIde:qHelpBrw := QTextBrowser( ::oHelpDock:oWidget ) - ::qHelpBrw:show() - ::qHelpBrw:setContextMenuPolicy( Qt_CustomContextMenu ) - ::qHelpBrw:setOpenExternalLinks( .t. ) - - ::qHelpBrw:setSource( QUrl( "qrc:///docs/faq.htm" ) ) - - ::oHelpDock:oWidget:setWidget( ::oIde:qHelpBrw ) - - ::qHelpBrw:connect( "customContextMenuRequested(QPoint)", {|p| ::execEvent( __qHelpBrw_contextMenuRequested__, p ) } ) - - ::oHelpDock:oWidget:connect( "visibilityChanged(bool)", {|p| ::execEvent( __dockHelpDock_visibilityChanged__, p, ::oHelpDock:oWidget ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildCompileResults() - - ::oIde:oDockB := ::getADockWidget( Qt_BottomDockWidgetArea, "dockCompileResults", "Compile Results" ) - ::oDlg:oWidget:addDockWidget( Qt_BottomDockWidgetArea, ::oDockB:oWidget, Qt_Horizontal ) - - ::oIde:oCompileResult := XbpMLE():new( ::oDockB ):create( , , { 0,0 }, { 100,400 }, , .t. ) - ::oDockB:oWidget:setWidget( ::oCompileResult:oWidget ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildLinkResults() - - ::oIde:oDockB1 := ::getADockWidget( Qt_BottomDockWidgetArea, "dockLinkResults", "Link Results" ) - ::oDlg:oWidget:addDockWidget( Qt_BottomDockWidgetArea, ::oDockB1:oWidget, Qt_Horizontal ) - - ::oIde:oLinkResult := XbpMLE():new( ::oDockB1 ):create( , , { 0,0 }, { 100, 400 }, , .T. ) - ::oDockB1:oWidget:setWidget( ::oLinkResult:oWidget ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildOutputResults() - LOCAL nAreas := Qt_TopDockWidgetArea + Qt_BottomDockWidgetArea - - ::oIde:oDockB2 := ::getADockWidget( nAreas, "dockOutputResults", "Output Console" )//, QDockWidget_DockWidgetFloatable ) - ::oDlg:oWidget:addDockWidget( Qt_BottomDockWidgetArea, ::oDockB2:oWidget, Qt_Horizontal ) - - ::oIde:oOutputResult := XbpRtf():new( ::oDockB2 ):create( , , { 0,0 }, { 100, 400 }, , .T. ) - ::oOutputResult:oWidget:setAcceptRichText( .T. ) - ::oOutputResult:oWidget:setReadOnly( .T. ) - ::oOutputResult:setContextMenuPolicy( Qt_CustomContextMenu ) - - ::oDockB2:oWidget:setWidget( ::oOutputResult:oWidget ) - - ::oOutputResult:oWidget:connect( "customContextMenuRequested(QPoint)", {|p| ::execEvent( __outputConsole_contextMenuRequested__, p ) } ) - ::oOutputResult:oWidget:connect( "copyAvailable(bool)", {|l| ::outputDoubleClicked( l ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:outputDoubleClicked( lSelected ) - LOCAL qCursor, cText - LOCAL cSource, nLine - - IF lSelected - qCursor := ::oOutputResult:oWidget:textCursor() - cText := qCursor:block():text() - - IF hbide_parseFNfromStatusMsg( cText, @cSource, @nLine, .T. ) - IF ::oSM:editSource( cSource, 0, 0, 0, NIL, NIL, .f., .t. ) - qCursor := ::oIde:qCurEdit:textCursor() - nLine := iif( nLine < 1, 0, nLine - 1 ) - - qCursor:setPosition( 0 ) - qCursor:movePosition( QTextCursor_Down, QTextCursor_MoveAnchor, nLine ) - ::oIde:qCurEdit:setTextCursor( qCursor ) - ::oIde:qCurEdit:centerCursor() - ::oIde:manageFocusInEditor() - ENDIF - ENDIF - ENDIF - - RETURN nLine - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildStatusBar() - LOCAL i - - STATIC qTBtn - - ::oIde:oSBar := XbpStatusBar():new() - ::oSBar:create( ::oDlg, , { 0,0 }, { ::oDlg:currentSize()[ 1 ], 30 } ) - ::oSBar:oWidget:showMessage( "" ) - ::oSBar:oWidget:setStyleSheet( GetStyleSheet( "QStatusBar", ::nAnimantionMode ) ) - - ::oSBar:getItem( SB_PNL_MAIN ):autosize := XBPSTATUSBAR_AUTOSIZE_SPRING - - ::oSBar:addItem( "", , , , "Ready" ):oWidget:setMinimumWidth( 40 ) - ::oSBar:addItem( "", , , , "Line" ):oWidget:setMinimumWidth( 110 ) - ::oSBar:addItem( "", , , , "Column" ):oWidget:setMinimumWidth( 40 ) - ::oSBar:addItem( "", , , , "Ins" ):oWidget:setMinimumWidth( 20 ) - ::oSBar:addItem( "", , , , "SelChar" ):oWidget:setMinimumWidth( 20 ) - ::oSBar:addItem( "", , , , "Modified" ):oWidget:setMinimumWidth( 20 ) - ::oSBar:addItem( "", , , , "Stream" ):oWidget:setMinimumWidth( 20 ) - ::oSBar:addItem( "", , , , "Edit" ):oWidget:setMinimumWidth( 20 ) - ::oSBar:addItem( "", , , , "Search" ):oWidget:setMinimumWidth( 20 ) - ::oSBar:addItem( "", , , , "Encoding" ):oWidget:setMinimumWidth( 20 ) - ::oSBar:addItem( "", , , , "Environ" ):oWidget:setMinimumWidth( 20 ) - ::oSBar:addItem( "", , , , "View" ):oWidget:setMinimumWidth( 20 ) - ::oSBar:addItem( "", , , , "Project" ):oWidget:setMinimumWidth( 20 ) - ::oSBar:addItem( "", , , , "Theme" ):oWidget:setMinimumWidth( 20 ) - - - qTBtn := QToolButton( ::oSBar:oWidget ) - qTBtn:setTooltip( "Toggle Mark" ) - qTBtn:setIcon( QIcon( hbide_image( "bookmark" ) ) ) - qTBtn:connect( "clicked()", {|| ::oEM:setMark() } ) - qTBtn:setMaximumHeight( 16 ) - qTBtn:setMaximumWidth( 16 ) - qTBtn:setAutoRaise( .t. ) - ::oSBar:oWidget:addWidget( qTBtn ) - FOR i := 1 TO 6 - ::oSBar:oWidget:addWidget( ::getMarkWidget( i ) ) - NEXT - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:setStatusText( nPart, xValue ) - LOCAL oPanel - - IF ! HB_ISOBJECT( ::oSBar ) - RETURN Self - ENDIF - - oPanel := ::oSBar:getItem( nPart ) - - SWITCH nPart - - CASE SB_PNL_MAIN - oPanel:caption := '' + xValue + "" - EXIT - CASE SB_PNL_READY - EXIT - CASE SB_PNL_LINE - EXIT - CASE SB_PNL_COLUMN - EXIT - CASE SB_PNL_INS - EXIT - CASE SB_PNL_SELECTEDCHARS - oPanel:caption := iif( xValue == 0, "", "Sel: " + hb_ntos( xValue ) ) - EXIT - CASE SB_PNL_MODIFIED - oPanel:caption := xValue - EXIT - CASE SB_PNL_STREAM - oPanel:caption := iif( empty( xValue ), "St", xValue ) - EXIT - CASE SB_PNL_EDIT - EXIT - CASE SB_PNL_SEARCH - oPanel:caption := "Find: " + xValue - EXIT - CASE SB_PNL_CODEC - xValue := iif( empty( xValue ), "default", xValue ) - oPanel:caption := "Enc: " + xValue + "" - EXIT - CASE SB_PNL_ENVIRON - xValue := iif( empty( xValue ), "default", xValue ) - oPanel:caption := "Env: " + xValue + "" - EXIT - CASE SB_PNL_VIEW - oPanel:caption := "Panel: " + xValue + "" - EXIT - CASE SB_PNL_PROJECT - xValue := iif( empty( xValue ), "none", xValue ) - oPanel:caption := "Prj: " + xValue + "" - EXIT - CASE SB_PNL_THEME - xValue := iif( empty( xValue ), "Bare Minimum", xValue ) - oPanel:caption := "Theme: " + xValue + "" - EXIT - - ENDSWITCH - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:dispEnvironment( cEnviron ) - ::setStatusText( SB_PNL_ENVIRON, cEnviron ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:getMarkWidget( nIndex ) - LOCAL aColors := { "rgb( 255,255,127 )", "rgb( 175,175,255 )", "rgb( 255,175,175 )", ; - "rgb( 175,255,175 )", "rgb( 255,190,125 )", "rgb( 175,255,255 )" } - - ::oIde:aMarkTBtns[ nIndex ] := QToolButton() - - ::oIde:aMarkTBtns[ nIndex ]:setMaximumHeight( 12 ) - ::oIde:aMarkTBtns[ nIndex ]:setMaximumWidth( 12 ) - ::oIde:aMarkTBtns[ nIndex ]:setStyleSheet( "background-color: " + aColors[ nIndex ] + ";" ) - ::oIde:aMarkTBtns[ nIndex ]:hide() - ::oIde:aMarkTBtns[ nIndex ]:connect( "clicked()" , {|| ::oEM:gotoMark( nIndex ) } ) - ::oIde:aMarkTBtns[ nIndex ]:connect( QEvent_Enter, {|| ::oEM:setTooltipMark( nIndex ) } ) - - RETURN ::oIde:aMarkTBtns[ nIndex ] - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:animateComponents( nMode ) - LOCAL cStyle, oView, oMenu - - IF nMode == NIL - ::oIde:nAnimantionMode := iif( ::nAnimantionMode == HBIDE_ANIMATION_NONE, HBIDE_ANIMATION_GRADIENT, HBIDE_ANIMATION_NONE ) - nMode := ::nAnimantionMode - ENDIF - ::oIde:nAnimantionMode := nMode - ::oIde:oINI:cIdeAnimated := hb_ntos( ::nAnimantionMode ) - - ::qAnimateAction:setChecked( ::nAnimantionMode != HBIDE_ANIMATION_NONE ) - - /* Main Window */ - ::oDlg:oWidget:setStyleSheet( GetStyleSheet( "QMainWindow", ::nAnimantionMode ) ) - - /* Main Menu Bar with all its submenus */ - ::oDlg:menubar():oWidget:setStyleSheet( GetStyleSheet( "QMenuBar", nMode ) ) - FOR EACH oMenu IN ::oDlg:menubar():childList() - oMenu:oWidget:setStyleSheet( GetStyleSheet( "QMenuPop", nMode ) ) - NEXT - - /* Toolbars */ - ::oMainToolbar:oWidget:setStyleSheet( GetStyleSheet( iif( ::oMainToolbar : oWidget:orientation() == Qt_Horizontal, "QToolBar", "QToolBarLR5" ), nMode ) ) - ::oAC:qFilesToolbar :setStyleSheet( GetStyleSheet( iif( ::oAC:qFilesToolbar : oWidget:orientation() == Qt_Horizontal, "QToolBar", "QToolBarLR5" ), nMode ) ) - ::oAC:qTBarDocks :setStyleSheet( GetStyleSheet( iif( ::oAC:qTBarDocks : oWidget:orientation() == Qt_Horizontal, "QToolBar", "QToolBarLR5" ), nMode ) ) - ::oAC:qPartsToolbar :setStyleSheet( GetStyleSheet( iif( ::oAC:qPartsToolbar : oWidget:orientation() == Qt_Horizontal, "QToolBar", "QToolBarLR5" ), nMode ) ) - ::oAC:qProjectToolbar :setStyleSheet( GetStyleSheet( iif( ::oAC:qProjectToolbar: oWidget:orientation() == Qt_Horizontal, "QToolBar", "QToolBarLR5" ), nMode ) ) - ::oAC:qMdiToolbar :setStyleSheet( GetStyleSheet( iif( ::oAC:qMdiToolbar : oWidget:orientation() == Qt_Horizontal, "QToolBar", "QToolBarLR5" ), nMode ) ) - ::oAC:qMdiToolbarL :setStyleSheet( GetStyleSheet( iif( ::oAC:qMdiToolbarL : oWidget:orientation() == Qt_Horizontal, "QToolBar", "QToolBarLR5" ), nMode ) ) - /* User defined toolbars */ - ::oTM:setStyleSheet( GetStyleSheet( "QToolBarLR5", nMode ) ) - - ::oEM:setStyleSheet( nMode ) - - /* Statusbar */ - ::oSBar:oWidget:setStyleSheet( GetStyleSheet( "QStatusBar", nMode ) ) - - /* Docking Widgets */ - cStyle := GetStyleSheet( "QDockWidget", nMode ) - // - ::oDockPT:oWidget : setStyleSheet( cStyle ) - ::oDockED:oWidget : setStyleSheet( cStyle ) - ::oSkltnsTreeDock:oWidget : setStyleSheet( cStyle ) - ::oHelpDock:oWidget : setStyleSheet( cStyle ) - ::oDocViewDock:oWidget : setStyleSheet( cStyle ) - ::oDocWriteDock:oWidget : setStyleSheet( cStyle ) - ::oFuncDock:oWidget : setStyleSheet( cStyle ) - ::oFunctionsDock:oWidget : setStyleSheet( cStyle ) - ::oPropertiesDock:oWidget : setStyleSheet( cStyle ) - ::oEnvironDock:oWidget : setStyleSheet( cStyle ) - ::oSkeltnDock:oWidget : setStyleSheet( cStyle ) - ::oThemesDock:oWidget : setStyleSheet( cStyle ) - ::oFindDock:oWidget : setStyleSheet( cStyle ) - ::oDockB2:oWidget : setStyleSheet( cStyle ) - ::oSourceThumbnailDock:oWidget : setStyleSheet( cStyle ) - - ::oProjTree:oWidget:setStyleSheet( GetStyleSheet( "QTreeWidgetHB", ::nAnimantionMode ) ) - - /* Edior Tab Widget */ - FOR EACH oView IN ::aViews - oView:oTabWidget:oWidget:setStyleSheet( GetStyleSheet( "QTabWidget", nMode ) ) - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildThemesDock() - LOCAL nAreas := Qt_LeftDockWidgetArea + Qt_RightDockWidgetArea + Qt_TopDockWidgetArea + Qt_BottomDockWidgetArea - - ::oIde:oThemesDock := ::getADockWidget( nAreas, "dockThemes", "Theme Manager", QDockWidget_DockWidgetFloatable ) - ::oDlg:oWidget:addDockWidget( Qt_RightDockWidgetArea, ::oThemesDock:oWidget, Qt_Horizontal ) - ::oThemesDock:oWidget:connect( "visibilityChanged(bool)", {|p| ::execEvent( __dockThemes_visibilityChanged__, p, ::oThemesDock:oWidget ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildPropertiesDock() - LOCAL nAreas := Qt_LeftDockWidgetArea + Qt_RightDockWidgetArea + Qt_TopDockWidgetArea + Qt_BottomDockWidgetArea - - ::oIde:oPropertiesDock := ::getADockWidget( nAreas, "dockProperties", "Project Properties", QDockWidget_DockWidgetFloatable ) - ::oDlg:oWidget:addDockWidget( Qt_RightDockWidgetArea, ::oPropertiesDock:oWidget, Qt_Horizontal ) - ::oPropertiesDock:oWidget:connect( "visibilityChanged(bool)", {|p| ::execEvent( __dockProperties_visibilityChanged__, p, ::oPropertiesDock:oWidget ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildFindInFiles() - LOCAL nAreas := Qt_LeftDockWidgetArea + Qt_RightDockWidgetArea + Qt_TopDockWidgetArea + Qt_BottomDockWidgetArea - - ::oIde:oFindDock := ::getADockWidget( nAreas, "dockFindInFiles", "Find in Files", QDockWidget_DockWidgetFloatable ) - ::oDlg:oWidget:addDockWidget( Qt_RightDockWidgetArea, ::oFindDock:oWidget, Qt_Horizontal ) - ::oFindDock:oWidget:connect( "visibilityChanged(bool)", {|p| ::execEvent( __dockFindInFiles_visibilityChanged__, p, ::oFindDock:oWidget ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildDocViewer() - LOCAL nAreas := Qt_LeftDockWidgetArea + Qt_RightDockWidgetArea + Qt_TopDockWidgetArea + Qt_BottomDockWidgetArea - - ::oIde:oDocViewDock := ::getADockWidget( nAreas, "dockDocViewer", "Harbour Documentation", QDockWidget_DockWidgetFloatable ) - ::oDlg:oWidget:addDockWidget( Qt_RightDockWidgetArea, ::oDocViewDock:oWidget, Qt_Horizontal ) - ::oDocViewDock:oWidget:connect( "visibilityChanged(bool)", {|p| ::execEvent( __dockDocViewer_visibilityChanged__, p, ::oDocViewDock:oWidget ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildDocWriter() - LOCAL nAreas := Qt_LeftDockWidgetArea + Qt_RightDockWidgetArea + Qt_TopDockWidgetArea + Qt_BottomDockWidgetArea - - ::oIde:oDocWriteDock := ::getADockWidget( nAreas, "dockDocWriter", "Documentation Writer", QDockWidget_DockWidgetFloatable ) - ::oDlg:oWidget:addDockWidget( Qt_RightDockWidgetArea, ::oDocWriteDock:oWidget, Qt_Horizontal ) - ::oDocWriteDock:oWidget:connect( "visibilityChanged(bool)", {|p| ::execEvent( __dockDocWriter_visibilityChanged__, p, ::oDocWriteDock:oWidget ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildFunctionsDock() - LOCAL nAreas := Qt_LeftDockWidgetArea + Qt_RightDockWidgetArea + Qt_TopDockWidgetArea + Qt_BottomDockWidgetArea - - ::oIde:oFunctionsDock := ::getADockWidget( nAreas, "dockFunctions", "Projects Functions Lookup", QDockWidget_DockWidgetFloatable ) - ::oDlg:oWidget:addDockWidget( Qt_RightDockWidgetArea, ::oFunctionsDock:oWidget, Qt_Horizontal ) - ::oFunctionsDock:oWidget:connect( "visibilityChanged(bool)", {|p| ::execEvent( __docFunctions_visibilityChanged__, p, ::oFunctionsDock:oWidget ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildEnvironDock() - LOCAL nAreas := Qt_LeftDockWidgetArea + Qt_RightDockWidgetArea + Qt_TopDockWidgetArea + Qt_BottomDockWidgetArea - - ::oIde:oEnvironDock := ::getADockWidget( nAreas, "dockEnvironments", "Compiler Environments", QDockWidget_DockWidgetFloatable ) - ::oDlg:oWidget:addDockWidget( Qt_RightDockWidgetArea, ::oEnvironDock:oWidget, Qt_Horizontal ) - ::oEnvironDock:oWidget:connect( "visibilityChanged(bool)", {|p| ::execEvent( __docEnvironments_visibilityChanged__, p, ::oEnvironDock:oWidget ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildSkeletonWidget() - LOCAL nAreas := Qt_LeftDockWidgetArea + Qt_RightDockWidgetArea + Qt_TopDockWidgetArea + Qt_BottomDockWidgetArea - - ::oIde:oSkeltnDock := ::getADockWidget( nAreas, "dockSkeleton", "Code Skeletons", QDockWidget_DockWidgetFloatable ) - ::oDlg:oWidget:addDockWidget( Qt_RightDockWidgetArea, ::oSkeltnDock:oWidget, Qt_Horizontal ) - ::oSkeltnDock:oWidget:connect( "visibilityChanged(bool)", {|p| ::execEvent( __docSkeletons_visibilityChanged__, p, ::oSkeltnDock:oWidget ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildSourceThumbnail() - LOCAL oDock - LOCAL nAreas := Qt_LeftDockWidgetArea + Qt_RightDockWidgetArea + Qt_TopDockWidgetArea + Qt_BottomDockWidgetArea - - oDock := ::getADockWidget( nAreas, "dockSourceThumbnail", "Source Thumbnail", QDockWidget_DockWidgetFloatable ) - ::oDlg:oWidget:addDockWidget( Qt_RightDockWidgetArea, oDock:oWidget, Qt_Horizontal ) - oDock:oWidget:connect( "visibilityChanged(bool)", {|p| ::execEvent( __dockSourceThumbnail_visibilityChanged__, p, oDock:oWidget ) } ) - ::oIde:oSourceThumbnailDock := oDock - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildFormatWidget() - LOCAL nAreas := Qt_LeftDockWidgetArea + Qt_RightDockWidgetArea + Qt_TopDockWidgetArea + Qt_BottomDockWidgetArea - - ::oIde:oFormatDock := ::getADockWidget( nAreas, "dockFormat", "Format Source", QDockWidget_DockWidgetFloatable ) - ::oDlg:oWidget:addDockWidget( Qt_RightDockWidgetArea, ::oFormatDock:oWidget, Qt_Horizontal ) - ::oFormatDock:oWidget:connect( "visibilityChanged(bool)", {|p| ::execEvent( __dockFormat_visibilityChanged__, p, ::oFormatDock:oWidget ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildCuiEdWidget() - LOCAL nAreas := Qt_LeftDockWidgetArea + Qt_RightDockWidgetArea + Qt_TopDockWidgetArea + Qt_BottomDockWidgetArea - - ::oIde:oCuiEdDock := ::getADockWidget( nAreas, "dockCuiEd", "CUI Screen Designer", QDockWidget_DockWidgetFloatable ) - ::oDlg:oWidget:addDockWidget( Qt_RightDockWidgetArea, ::oCuiEdDock:oWidget, Qt_Horizontal ) - ::oCuiEdDock:oWidget:connect( "visibilityChanged(bool)", {|p| ::execEvent( __dockCuiEd_visibilityChanged__, p, ::oCuiEdDock:oWidget ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocks:buildUISrcDock() - LOCAL nAreas := Qt_LeftDockWidgetArea + Qt_RightDockWidgetArea + Qt_TopDockWidgetArea + Qt_BottomDockWidgetArea - - ::oIde:oUISrcDock := ::getADockWidget( nAreas, "dockUISrc", "UI Source Manager", QDockWidget_DockWidgetFloatable ) - ::oDlg:oWidget:addDockWidget( Qt_RightDockWidgetArea, ::oUISrcDock:oWidget, Qt_Horizontal ) - ::oUISrcDock:oWidget:connect( "visibilityChanged(bool)", {|p| ::execEvent( __dockUISrc_visibilityChanged__, p, ::oUISrcDock:oWidget ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -#define __selectionMode_stream__ 1 -#define __selectionMode_column__ 2 -#define __selectionMode_line__ 3 - -METHOD IdeDocks:showSelectedTextToolbar( oEdit ) - LOCAL qRect, nVPH, nVPW, nTBH, nTBW, nY, nX - LOCAL qToolbar := ::oAC:qSelToolbar - - DEFAULT oEdit TO ::oEM:getEditObjectCurrent() - - IF ! empty( oEdit ) - IF ! ::oINI:lSelToolbar - qToolbar:hide() - RETURN Self - ENDIF - IF oEdit:aSelectionInfo[ 1 ] > -1 - qRect := oEdit:qEdit:cursorRect() - IF oEdit:aSelectionInfo[ 5 ] == __selectionMode_column__ - qToolbar:setOrientation( Qt_Vertical ) - qToolbar:adjustSize() - nTBH := qToolbar:height() - nVPH := oEdit:qEdit:viewport():height() - nY := qRect:y() - ( nTBH / 2 ) - IF nY < 0 - nY := 0 - ELSEIF nY + nTBH > nVPH - nY := nVPH - nTBH - ENDIF - nX := Max( oEdit:aSelectionInfo[ 2 ], oEdit:aSelectionInfo[ 4 ] )* oEdit:qEdit:fontMetrics():averageCharWidth() + 30 - qToolbar:move( oEdit:qEdit:viewport():mapToGlobal( QPoint( nX, nY ) ) ) - ELSE - qToolbar:setOrientation( Qt_Horizontal ) - qToolbar:adjustSize() - nVPW := oEdit:qEdit:viewport():width() - nTBW := qToolbar:width() - nX := ( nVPW / 2 ) - ( nTBW / 2 ) - IF nX < 0 - nX := 0 - ELSEIF nX + nTBW > nVPW - nX := nVPW - nTBW - ENDIF - IF oEdit:aSelectionInfo[ 1 ] <= oEdit:aSelectionInfo[ 3 ] /* Downward selection */ - nY := qRect:y() + ( qRect:height() * 2 ) - ELSE - nY := qRect:y() - ( qRect:height() * 3 ) - ENDIF - qToolbar:move( oEdit:qEdit:viewport():mapToGlobal( QPoint( nX, nY ) ) ) - ENDIF - qToolbar:show() - qToolbar:raise() - ELSE - qToolbar:hide() - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - diff --git a/harbour/contrib/hbide/docs/faq.htm b/harbour/contrib/hbide/docs/faq.htm deleted file mode 100644 index 56cd2cd47a..0000000000 --- a/harbour/contrib/hbide/docs/faq.htm +++ /dev/null @@ -1,131 +0,0 @@ - - - - -Does HbIDE support editing of sa - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
-

- Does HbIDE support - editing of same source at more than one place simultaneously ? -

-

- Yes. HbIDE provides for - splitting an editing window, horizontally and vertically, both ways. - Right-click anywhere in the editor, point to "Split..." and then click - on required option.

 
-

- Does HbIDE support - session management ?

-

- Yes. And in a unique - way. It provides to construct n number of "Panels" where you can spread - sources. Each panel is given a name as well as corresponding button on - the left-toolbar, a colored circle, to bring it forward. New panel can - be created from selecting "New..." from drop-down list on top-toolbar - and providing a name in the editing dialog. For this reason you will - never need to exit HbIDE and reenter again. It is a big productivity - boost.

 
-

- Does HbIDE allows to - compile a project for different compilers and/or environments ? -

-

- Yes. Infact this feature - had been the one of the main reasons of HbIDEs existance. All you have - to do is to enter different environment settings in _ONE_ hbide.env file - which resides alongside hbide.ini. HbIDE provides the interface to - manipulate this .env settings which can be invoked from right-toolbar - icon "Compiler Environments". Follow the input fields. A template is - provided in "hbide.env", inspect it and you are through. Once hbide.env - is ready, you will simply need to switch over the other environment - which can be invoked via right-click on a project node in "Projects" - tree and point to "Select an environment" and click on listed options. - Next step is just to build the project.

 
-

- Can we keep any other - content in hbide.ini ?

-

- No. hbide.ini is always - re-written at the time HbIDE exits. Also this action is executed several - times depending upon the underlying needs. However, you can alter the - contents in some sections, i.e., [Files], [Projects], etc., but only - before running HbIDE. At exit, it will re-write it again.

 
-

- Does HbIDE provides "intellisense" - ? If yes, in what aspects ?

-

- Yes. Not so powerful - yet, but "yes". HbIDE embeds two components as the basis of this - intellisense, 1. Harbour Documentation, and 2. Project(s) Prototype - Tagging. Both these components can be pressed in servive simultaneously - and as per need. Both are loaded only when requested. Prototype Tagging - extends one step forward as to offer to load only those projects which a - developer will be working on during that session. Both components can be - aligned on the side corners to provide always-on view of the actual - contents. The moment you press "(" HbIDE examines the contents of these - components, if the function is available in Harbour Docs, its details - are dumped into the viewer, otherwise if the function is contained in - the tagged prototypes, it is made current in the list, and a html - formatted prototype is displayed as tooltip beneth the current caret - position. Code completion tool is almost done with, and probably will - make up its presence in the HbIDE soon.

- - - - diff --git a/harbour/contrib/hbide/docs/idemainpage.html b/harbour/contrib/hbide/docs/idemainpage.html deleted file mode 100644 index 8af3367ee1..0000000000 --- a/harbour/contrib/hbide/docs/idemainpage.html +++ /dev/null @@ -1,16 +0,0 @@ - - -

hbIDE Help

-

-

This effort may not bring desired results but hopefully solve some of the issues supporting the project.

-

-

Interface Elements

-

Multi Views

-

-

-

Please bear with me if things appear to be simple.

-

-

Pritpal Bedi

-

\ No newline at end of file diff --git a/harbour/contrib/hbide/docs/interfaceelements.html b/harbour/contrib/hbide/docs/interfaceelements.html deleted file mode 100644 index deda049274..0000000000 --- a/harbour/contrib/hbide/docs/interfaceelements.html +++ /dev/null @@ -1,15 +0,0 @@ - - -

Interface Elements

-

-

hbIDE interface contains

-

-

1. Main Frame

-

2. Menubar

-

3. Toolbar

-

4. Statusbar

-

5. Left docking Project Tree

-

6. Left docking Tabs Tree

-

diff --git a/harbour/contrib/hbide/docs/multiviews.html b/harbour/contrib/hbide/docs/multiviews.html deleted file mode 100644 index 4854691dd3..0000000000 --- a/harbour/contrib/hbide/docs/multiviews.html +++ /dev/null @@ -1,10 +0,0 @@ - - -

Multi Views

-

-

hbIDE interface provides multiple views to organize your sources in a convenient way. The creation of a panel is a few clicks away. Switching is even simple.

-

-

-

diff --git a/harbour/contrib/hbide/docviewgenerator.ui b/harbour/contrib/hbide/docviewgenerator.ui deleted file mode 100644 index 76af6b4779..0000000000 --- a/harbour/contrib/hbide/docviewgenerator.ui +++ /dev/null @@ -1,841 +0,0 @@ - - - FormDocViewer - - - - 0 - 0 - 645 - 557 - - - - Form - - - - - - - - - - - false - - - - - - - - - - false - - - - - - - - - - false - - - - - - - - - - false - - - - - - - - - - false - - - - - - - - - - false - - - - - - - - - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - false - - - - - - - - - - - Harbour Installation Root: - - - - - - - - - - - - - false - - - - - - - Doc folder prefix: - - - - - - - - 70 - 16777215 - - - - - - - - - - Qt::Horizontal - - - - - 185 - 16777215 - - - - 0 - - - false - - - - Topics - - - - - - - 1 - - - - - - - - - Index - - - - - - - - - - - - - Category - - - - - - - 1 - - - - - - - - - - 0 - - - - View - - - - - - - - - - Write - - - - 0 - - - 0 - - - 0 - - - - - - 0 - 30 - - - - - 16777215 - 30 - - - - QFrame::Panel - - - QFrame::Raised - - - - 2 - - - 5 - - - 4 - - - - - Load from current function - - - ... - - - false - - - - - - - Load from .txt file - - - ... - - - false - - - - - - - Load from source ( .prg,.c,.c++ ) file - - - ... - - - false - - - - - - - Toggle Arguments Section - - - ... - - - false - - - - - - - Toggle Descriptions Section - - - ... - - - false - - - - - - - Toggle Examples Section - - - ... - - - false - - - - - - - Toggle Tests Section - - - ... - - - false - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Save written/updated documentation - - - ... - - - false - - - - - - - - - - QFrame::NoFrame - - - true - - - - - 0 - 0 - 414 - 665 - - - - - 3 - - - 0 - - - 0 - - - 0 - - - 9 - - - - - Qt::Vertical - - - 2 - - - - - 16777215 - 268 - - - - QFrame::NoFrame - - - QFrame::Plain - - - - 4 - - - 4 - - - 0 - - - 2 - - - - - Template: - - - - - - - Version: - - - - - - - Status: - - - - - - - Compliance: - - - - - - - - - - Version of this document contents - - - - - - - Status should usually be described as one character - - - - - - - Describe comatibility with other language - - - - - - - Category: - - - - - - - Sub-category: - - - - - - - Category should describe main area this function belongs to - - - - - - - - - - Name: - - - - - - - External Link: - - - - - - - Name of the function, and if appropriate, with open/close parenthis. - - - - - - - External link, i.e., http://www.trolltech.com/ - - - - - - - One Liner: - - - - - - - A brief description this function accomlishes - - - - - - - Syntax: - - - - - - - Syntax, or prototype as to how this function will be called - - - - - - - Returns: - - - - - - - Variable name with hungarian notation with brief description as what this function returns - - - - - - - See Also: - - - - - - - A comma separated list of related functions/keywords - - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 2 - - - 4 - - - 0 - - - 2 - - - - - Arguments: - - - - - - - ... - - - true - - - - - - - One argument per line in the form - argName description - - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 2 - - - 4 - - - 0 - - - 2 - - - - - Description: - - - - - - - ... - - - true - - - - - - - Detailed description as musch as possible to convey to the user what should be kept in mind when this function is called. - - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 2 - - - 4 - - - 0 - - - 2 - - - - - Examples: - - - - - - - ... - - - true - - - - - - - A real-time source code which could be compiled out of this box. - - - QPlainTextEdit::NoWrap - - - - - - - - - 0 - 0 - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 2 - - - 4 - - - 0 - - - 2 - - - - - Tests: - - - - - - - ... - - - true - - - - - - - Compilable code out of the box which could be used to test this function - - - QPlainTextEdit::NoWrap - - - - - - - - - - - - - - - - - - - - - diff --git a/harbour/contrib/hbide/docwriter.prg b/harbour/contrib/hbide/docwriter.prg deleted file mode 100644 index fbfdfd856c..0000000000 --- a/harbour/contrib/hbide/docwriter.prg +++ /dev/null @@ -1,730 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 14Mar2010 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbide.ch" -#include "common.ch" -#include "hbclass.ch" -#include "hbqtgui.ch" - -/*----------------------------------------------------------------------*/ - -#define buttonArgs_clicked 101 -#define buttonDesc_clicked 102 -#define buttonExample_clicked 103 -#define buttonTests_clicked 104 - -#define buttonCloseArgs_clicked 111 -#define buttonCloseDesc_clicked 112 -#define buttonCloseExample_clicked 113 -#define buttonCloseTests_clicked 114 - -#define buttonLoadFromCurFunc_clicked 115 - -#define buttonClear_clicked 116 -#define buttonSaveInFunc_clicked 117 -#define buttonSave_clicked 118 - - -#define qqTemplate 1 -#define qqVersion 2 -#define qqStatus 3 -#define qqCompliance 4 -#define qqCategory 5 -#define qqSubCategory 6 -#define qqName 7 -#define qqExtLink 8 -#define qqOneLiner 9 -#define qqSyntax 10 -#define qqReturns 11 -#define qqSeeAlso 12 -#define qqFiles 13 -#define qqArgs 14 -#define qqDesc 15 -#define qqExamples 16 -#define qqTests 17 - -#define qqNumVrbls 17 - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_getSVNHeader() - - RETURN "/* " + hb_eol() + " * $Id:" + hb_eol() + " */" + hb_eol() + hb_eol() - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_populateParam( txt_, cToken, cParam ) - LOCAL a_ - IF !empty( cParam ) - aadd( txt_, cToken ) - a_:= hbide_memoToArray( cParam ) - aeval( a_, {|e| aadd( txt_, " * " + strtran( strtran( e, chr( 13 ), "" ), chr( 10 ), "" ) ) } ) - ENDIF - RETURN nil - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_ar2paramList( aArg ) - LOCAL s, cList := "" - FOR EACH s IN aArg - s := alltrim( s ) - cList += s + iif( s:__enumIndex() < Len( aArg ), ", ", "" ) - NEXT - RETURN cList - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_arg2memo( aArg ) - LOCAL s, cMemo := "" - - FOR EACH s IN aArg - cMemo += "<" + s + ">" + iif( s:__enumIndex() < Len( aArg ), hb_eol(), "" ) - NEXT - - RETURN cMemo - -/*----------------------------------------------------------------------*/ - -CLASS IdeDocWriter INHERIT IdeObject - - DATA qHiliter - DATA qHiliter1 - - DATA oEdit - DATA cFuncPtoto INIT "" - DATA nFuncLine INIT 0 - DATA nTagsIndex INIT 0 - DATA cSourceFile INIT "" - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() - METHOD show() - METHOD execEvent( nMode, p ) - METHOD setImages() - METHOD installSignals() - METHOD setParameters() - METHOD loadCurrentFuncDoc() - METHOD parsePrototype( cProto ) - METHOD clear() - METHOD fillForm( aFacts ) - METHOD fillFormByObject( oFunc ) - METHOD buildDocument() - METHOD saveInFunction() - METHOD saveInFile() - METHOD pullDocFromSource( nLineFrom, oEdit ) - METHOD removeDocHelp( nLineFrom, oEdit ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocWriter:new( oIde ) - - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocWriter:create( oIde ) - - DEFAULT oIde TO ::oIde - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocWriter:destroy() - - ::oEdit := NIL - - IF !empty( ::oUI ) - ::oUI:destroy() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocWriter:show() - - IF empty( ::oUI ) - ::oUI := hbide_getUI( "docwriter" ) - - ::oDocWriteDock:oWidget:setWidget( ::oUI:oWidget ) - - ::setImages() - ::installSignals() - ::setParameters() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocWriter:setImages() - - ::oUI:buttonLoadFromDocFile :setIcon( QIcon( hbide_image( "load_3" ) ) ) - ::oUI:buttonLoadFromSource :setIcon( QIcon( hbide_image( "load_2" ) ) ) - ::oUI:buttonLoadFromCurFunc :setIcon( QIcon( hbide_image( "load_1" ) ) ) - - ::oUI:buttonArgs :setIcon( QIcon( hbide_image( "arguments" ) ) ) - ::oUI:buttonDesc :setIcon( QIcon( hbide_image( "description" ) ) ) - ::oUI:buttonExamples :setIcon( QIcon( hbide_image( "example" ) ) ) - ::oUI:buttonTests :setIcon( QIcon( hbide_image( "tests" ) ) ) - - ::oUI:buttonClear :setIcon( QIcon( hbide_image( "clean" ) ) ) - ::oUI:buttonSaveInFunc :setIcon( QIcon( hbide_image( "unload_1" ) ) ) - ::oUI:buttonSave :setIcon( QIcon( hbide_image( "helpdoc" ) ) ) - - ::oUI:buttonCloseArgs :setIcon( QIcon( hbide_image( "closetab" ) ) ) - ::oUI:buttonCloseDesc :setIcon( QIcon( hbide_image( "closetab" ) ) ) - ::oUI:buttonCloseExamples :setIcon( QIcon( hbide_image( "closetab" ) ) ) - ::oUI:buttonCloseTests :setIcon( QIcon( hbide_image( "closetab" ) ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocWriter:installSignals() - - ::oUI:buttonArgs :connect( "toggled(bool)", {|p| ::execEvent( buttonArgs_clicked , p ) } ) - ::oUI:buttonDesc :connect( "toggled(bool)", {|p| ::execEvent( buttonDesc_clicked , p ) } ) - ::oUI:buttonExamples :connect( "toggled(bool)", {|p| ::execEvent( buttonExample_clicked , p ) } ) - ::oUI:buttonTests :connect( "toggled(bool)", {|p| ::execEvent( buttonTests_clicked , p ) } ) - ::oUI:buttonCloseArgs :connect( "clicked()" , {| | ::execEvent( buttonCloseArgs_clicked ) } ) - ::oUI:buttonCloseDesc :connect( "clicked()" , {| | ::execEvent( buttonCloseDesc_clicked ) } ) - ::oUI:buttonCloseExamples :connect( "clicked()" , {| | ::execEvent( buttonCloseExample_clicked ) } ) - ::oUI:buttonCloseTests :connect( "clicked()" , {| | ::execEvent( buttonCloseTests_clicked ) } ) - ::oUI:buttonClear :connect( "clicked()" , {| | ::execEvent( buttonClear_clicked ) } ) - ::oUI:buttonSaveInFunc :connect( "clicked()" , {| | ::execEvent( buttonSaveInFunc_clicked ) } ) - ::oUI:buttonSave :connect( "clicked()" , {| | ::execEvent( buttonSave_clicked ) } ) - ::oUI:buttonLoadFromCurFunc:connect( "clicked()" , {|| ::execEvent( buttonLoadFromCurFunc_clicked ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocWriter:setParameters() - - ::oUI:buttonArgs :setCheckable( .t. ) - ::oUI:buttonDesc :setCheckable( .t. ) - ::oUI:buttonExamples:setCheckable( .t. ) - ::oUI:buttonTests :setCheckable( .t. ) - - ::oUI:buttonArgs :setChecked( .t. ) - ::oUI:buttonDesc :setChecked( .t. ) - ::oUI:buttonExamples:setChecked( .f. ) - ::oUI:buttonTests :setChecked( .f. ) - - ::oUI:frameTests:hide() - ::oUI:frameExamples:hide() - - ::oUI:comboTemplate:addItem( "Function" ) - ::oUI:comboTemplate:addItem( "Procedure" ) - ::oUI:comboTemplate:addItem( "Class" ) - - ::qHiliter := ::oTH:SetSyntaxHilighting( ::oUI:plainExamples, "Pritpal's Favourite" ) - ::qHiliter1 := ::oTH:SetSyntaxHilighting( ::oUI:plainTests , "Evening Glamour" ) - - ::oUI:plainExamples:setFont( ::oFont:oWidget ) - ::oUI:plainTests:setFont( ::oFont:oWidget ) - - ::oUI:frameGeneral:setSizePolicy( QSizePolicy_Preferred, QSizePolicy_Fixed ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocWriter:execEvent( nMode, p ) - - IF ::lQuitting - RETURN Self - ENDIF - - SWITCH nMode - CASE buttonArgs_clicked - IF p - ::oUI:frameArgs:show() - ELSE - ::oUI:frameArgs:hide() - ENDIF - EXIT - CASE buttonDesc_clicked - IF p - ::oUI:frameDesc:show() - ELSE - ::oUI:frameDesc:hide() - ENDIF - EXIT - CASE buttonExample_clicked - IF p - ::oUI:frameExamples:show() - ELSE - ::oUI:frameExamples:hide() - ENDIF - EXIT - CASE buttonTests_clicked - IF p - ::oUI:frameTests:show() - ELSE - ::oUI:frameTests:hide() - ENDIF - EXIT - - CASE buttonCloseArgs_clicked - ::oUI:buttonArgs:setChecked( .f. ) - EXIT - CASE buttonCloseDesc_clicked - ::oUI:buttonDesc:setChecked( .f. ) - EXIT - CASE buttonCloseExample_clicked - ::oUI:buttonExamples:setChecked( .f. ) - EXIT - CASE buttonCloseTests_clicked - ::oUI:buttonTests:setChecked( .f. ) - EXIT - - CASE buttonLoadFromCurFunc_clicked - ::loadCurrentFuncDoc() - EXIT - CASE buttonClear_clicked - ::clear() - EXIT - CASE buttonSaveInFunc_clicked - ::saveInFunction() - EXIT - CASE buttonSave_clicked - ::saveInFile() - EXIT - - ENDSWITCH - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocWriter:clear() - - ::oEdit := NIL - ::cFuncPtoto := "" - ::nFuncLine := 0 - ::nTagsIndex := 0 - ::cSourceFile := "" - - ::fillForm( afill( array( qqNumVrbls ), "" ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocWriter:fillForm( aFacts ) - - ::oUI:editVersion :setText ( aFacts[ qqVersion ] ) - ::oUI:editStatus :setText ( aFacts[ qqStatus ] ) - ::oUI:editCompliance :setText ( aFacts[ qqCompliance ] ) - ::oUI:editCategory :setText ( aFacts[ qqCategory ] ) - ::oUI:editSubCategory :setText ( aFacts[ qqSubCategory ] ) - ::oUI:editName :setText ( aFacts[ qqName ] ) - ::oUI:editExtLink :setText ( aFacts[ qqExtLink ] ) - ::oUI:editOneLiner :setText ( aFacts[ qqOneLiner ] ) - ::oUI:editSyntax :setText ( aFacts[ qqSyntax ] ) - ::oUI:editReturns :setText ( aFacts[ qqReturns ] ) - ::oUI:editSeeAlso :setText ( aFacts[ qqSeeAlso ] ) - ::oUI:editFiles :setText ( aFacts[ qqFiles ] ) - ::oUI:plainArgs :setPlainText ( aFacts[ qqArgs ] ) - ::oUI:plainDesc :setPlainText ( aFacts[ qqDesc ] ) - ::oUI:plainExamples :setPlainText ( aFacts[ qqExamples ] ) - ::oUI:plainTests :setPlainText ( aFacts[ qqTests ] ) - - ::oUI:comboTemplate:setCurrentIndex( iif( aFacts[ qqVersion ] == "Procedure", 1, ; - iif( aFacts[ qqVersion ] == "Class", 2, 0 ) ) ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocWriter:fillFormByObject( oFunc ) - - ::oUI:editVersion :setText ( oFunc:cVersion ) - ::oUI:editStatus :setText ( oFunc:cStatus ) - ::oUI:editCompliance :setText ( oFunc:cPlatForms ) - ::oUI:editCategory :setText ( oFunc:cCategory ) - ::oUI:editSubCategory :setText ( oFunc:cSubCategory ) - ::oUI:editName :setText ( oFunc:cName ) - ::oUI:editExtLink :setText ( oFunc:cExternalLink ) - ::oUI:editOneLiner :setText ( oFunc:cOneLiner ) - ::oUI:editSyntax :setText ( hbide_ar2delString( oFunc:aSyntax , "; " ) ) - ::oUI:editReturns :setText ( hbide_ar2delString( oFunc:aReturns, "; " ) ) - ::oUI:editSeeAlso :setText ( oFunc:cSeeAlso ) - ::oUI:editFiles :setText ( hbide_ar2delString( oFunc:aFiles , "; " ) ) - ::oUI:plainArgs :setPlainText ( hbide_arrayTOmemo( oFunc:aArguments ) ) - ::oUI:plainDesc :setPlainText ( hbide_arrayTOmemo( oFunc:aDescription ) ) - ::oUI:plainExamples :setPlainText ( hbide_arrayTOmemo( oFunc:aExamples ) ) - ::oUI:plainTests :setPlainText ( hbide_arrayTOmemo( oFunc:aTests ) ) - - ::oUI:comboTemplate:setCurrentIndex( iif( oFunc:cTemplate == "Procedure", 1, ; - iif( oFunc:cTemplate == "Class", 2, 0 ) ) ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocWriter:removeDocHelp( nLineFrom, oEdit ) - LOCAL i, cLine, n, lExists, lDone, nFrom, nTo - - n := 0 - lExists := .f. - lDone := .f. - - FOR i := ( nLineFrom - 1 ) TO 1 STEP -1 - cLine := oEdit:getLine( i ) - - IF "$END$" $ cLine - nTo := i + 1 - lExists := .t. - ENDIF - IF "$DOC$" $ cLine - lDone := .t. - nFrom := i - ENDIF - IF ++n > 4 .AND. ! lExists - EXIT - ENDIF - IF lDone - EXIT - ENDIF - NEXT - - IF !empty( nFrom ) .AND. !empty( nTo ) - oEdit:goto( nFrom ) - FOR i := 1 TO ( nTo - nFrom + 1 ) - oEdit:deleteLine() - NEXT - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocWriter:pullDocFromSource( nLineFrom, oEdit ) - LOCAL aDoc, i, cLine, n, lExists, lDone, a_ - - aDoc := {} - n := 0 - lExists := .f. - lDone := .f. - - FOR i := ( nLineFrom - 1 ) TO 1 STEP -1 - cLine := oEdit:getLine( i ) - - IF "$END$" $ cLine - lExists := .t. - ENDIF - IF "$DOC$" $ cLine - lDone := .t. - ENDIF - - IF lExists - aadd( aDoc, cLine ) - ENDIF - - IF ++n > 4 .AND. ! lExists /* Search must terminate after 4 lines if document is not in sight */ - EXIT - ENDIF - IF lDone - EXIT - ENDIF - NEXT - - a_:={} - IF lDone - FOR i := Len( aDoc ) TO 1 STEP -1 - aadd( a_, aDoc[ i ] ) - NEXT - ENDIF - - RETURN a_ - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocWriter:loadCurrentFuncDoc() - LOCAL oEdit, nCurLine, n, cProto, nProtoLine, aFacts, aDoc, oFunc - - IF !empty( oEdit := ::oEM:getEditObjectCurrent() ) - IF oEdit:isModified() - MsgBox( oEdit:oEditor:sourceFile + " is modified.", "Please save the source first" ) - RETURN Self - ENDIF - - IF !empty( ::aTags ) - nCurLine := oEdit:getLineNo() - IF Len( ::aTags ) == 1 - n := 1 - ELSEIF ( n := ascan( ::aTags, {|e_| e_[ 3 ] >= nCurLine } ) ) == 0 - n := Len( ::aTags ) - ELSEIF n > 0 - n-- - ENDIF - IF n > 0 - nProtoLine := ::aTags[ n, 3 ] - cProto := oEdit:getLine( nProtoLine ) - - IF !empty( aFacts := ::parsePrototype( cProto ) ) - ::clear() - ::oEdit := oEdit - ::cFuncPtoto := cProto - ::nFuncLine := nProtoLine - ::nTagsIndex := n - ::cSourceFile := oEdit:oEditor:sourceFile - IF empty( aDoc := ::pullDocFromSource( nProtoLine, oEdit ) ) - ::fillForm( aFacts ) - ELSE - IF !empty( oFunc := ::oHL:getDocFunction( aDoc ) ) - ::fillFormByObject( oFunc ) - ELSE - ::fillForm( aFacts ) - ENDIF - ENDIF - ENDIF - ENDIF - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocWriter:parsePrototype( cProto ) - LOCAL aFacts, n, n1, cPre, cArg, aArg, cSyn, cTpl, cFun, s - - IF ( n := at( "(", cProto ) ) > 0 - IF ( n1 := at( ")", cProto ) ) > 0 - cPre := alltrim( substr( cProto, 1, n - 1 ) ) - cArg := alltrim( substr( cProto, n + 1, n1 - n - 1 ) ) - aArg := hb_aTokens( cArg, "," ) - FOR EACH s IN aArg - s := alltrim( s ) - NEXT - n := rat( " ", cPre ) /* and it must be */ - cTpl := alltrim( substr( cPre, 1, n - 1 ) ) - cFun := alltrim( substr( cPre, n + 1 ) ) - - cSyn := cFun + "( " + hbide_ar2paramList( aArg ) + " )" - cSyn := strtran( cSyn, "( )", "()" ) - - aFacts := afill( array( qqNumVrbls ), "" ) - cTpl := lower( cTpl ) - aFacts[ qqTemplate ] := iif( "func" $ cTpl, "Function" , ; - iif( "proc" $ cTpl, "Procedure", ; - iif( "class" $ cTpl, "Class" , "Function" ) ) ) - - aFacts[ qqVersion ] := "" - aFacts[ qqStatus ] := "" - aFacts[ qqCompliance ] := "" - aFacts[ qqCategory ] := "" - aFacts[ qqSubCategory ] := "" - aFacts[ qqName ] := upper( cFun ) + "()" - aFacts[ qqExtLink ] := "" - aFacts[ qqOneLiner ] := "" - aFacts[ qqSyntax ] := cSyn - aFacts[ qqReturns ] := "" - aFacts[ qqSeeAlso ] := "" - aFacts[ qqFiles ] := "" - aFacts[ qqArgs ] := hbide_arg2memo( aArg ) - aFacts[ qqDesc ] := "" - aFacts[ qqExamples ] := "" - aFacts[ qqTests ] := "" - - ENDIF - ENDIF - - RETURN aFacts - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocWriter:saveInFile() - LOCAL cFile, cBuffer - LOCAL txt_ := ::buildDocument() - LOCAL n := ::oUI:comboTemplate:currentIndex() - LOCAL cPrefix := iif( n == 0, "fun_", iif( n == 1, "proc_", "class_" ) ) - LOCAL cName := lower( ::oUI:editName:text() ) - - cName := strtran( cName, "(", "" ) - cName := strtran( cName, ")", "" ) - cFile := cPrefix + alltrim( cName ) + ".txt" - - cFile := hbide_saveAFile( ::oDlg, "Provide filename to save documentation", ; - { { "Harbour Documentation File", "*.txt" } }, cFile, "txt" ) - IF !empty( cFile ) - cBuffer := hb_memoread( cFile ) - cBuffer := iif( "$Id:" $ cBuffer, cBuffer, hbide_getSVNHeader() + cBuffer ) - cBuffer += hb_eol() - cBuffer += hbide_arrayToMemo( txt_ ) - - hb_memowrit( cFile, cBuffer ) - MsgBox( cFile + " : is saved", "Save File Alert" ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocWriter:saveInFunction() - LOCAL nCurLine, oEdit, qCursor, a_ - - /* Bring it on top and make it current */ - ::oSM:editSource( ::cSourceFile, , , , , , .f. ) - - IF !empty( oEdit := ::oEM:getEditObjectCurrent() ) - IF oEdit:lReadOnly - RETURN Self - ENDIF - - IF oEdit:isModified() - MsgBox( oEdit:oEditor:sourceFile + " is modified.", "Please save the source first!" ) - RETURN Self - ENDIF - IF oEdit:find( ::cFuncPtoto, 0 ) - nCurLine := oEdit:getLineNo() - IF nCurLine != ::nFuncLine - // This is possible user might have edited the source; just issue warning - MsgBox( "Source is modified, anyway proceeding.", "Documentation Save Alert" ) - ENDIF - - qCursor := oEdit:qEdit:textCursor() - qCursor:beginEditBlock() - - ::removeDocHelp( nCurLine, oEdit ) - - a_:= ::buildDocument() - - oEdit:home() - oEdit:insertText( a_ ) - - qCursor:endEditBlock() - oEdit:qEdit:setTextCursor( qCursor ) - oEdit:qEdit:centerCursor() - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocWriter:buildDocument() - LOCAL s - LOCAL nIndex := ::oUI:comboTemplate:currentIndex() - - LOCAL hEntry := { => } - - hb_HKeepOrder( hEntry, .T. ) - - hEntry[ "TEMPLATE" ] := iif( nIndex == 2, "Class", iif( nIndex == 1, "Procedure", "Function" ) ) - IF !empty( s := ::oUI:editName:text() ) - hEntry[ "NAME" ] := s - ENDIF - IF !empty( s := ::oUI:editCategory:text() ) - hEntry[ "CATEGORY" ] := s - ENDIF - IF !empty( s := ::oUI:editSubCategory:text() ) - hEntry[ "SUBCATEGORY" ] := s - ENDIF - IF !empty( s := ::oUI:editExtLink:text() ) - hEntry[ "EXTERNALLINK" ] := s - ENDIF - IF !empty( s := ::oUI:editOneLiner:text() ) - hEntry[ "ONELINER" ] := s - ENDIF - IF !empty( s := ::oUI:editSyntax:text() ) - hEntry[ "SYNTAX" ] := s - ENDIF - hEntry[ "ARGUMENTS" ] := ::oUI:plainArgs:toPlainText() - IF !empty( s := ::oUI:editReturns:text() ) - hEntry[ "RETURNS" ] := s - ENDIF - hEntry[ "DESCRIPTION" ] := ::oUI:plainDesc:toPlainText() - hEntry[ "EXAMPLES" ] := ::oUI:plainExamples:toPlainText() - hEntry[ "TESTS" ] := ::oUI:plainTests:toPlainText() - IF !empty( s := ::oUI:editStatus:text() ) - hEntry[ "STATUS" ] := s - ENDIF - IF !empty( s := ::oUI:editCompliance:text() ) - hEntry[ "PLATFORMS" ] := s - ENDIF - IF !empty( s := ::oUI:editVersion:text() ) - hEntry[ "VERSION" ] := s - ENDIF - IF !empty( s := ::oUI:editFiles:text() ) - hEntry[ "FILES" ] := s - ENDIF - IF !empty( s := ::oUI:editSeeAlso:text() ) - hEntry[ "SEEALSO" ] := s - ENDIF - - RETURN __hbdoc_ToSource( { hEntry } ) - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/docwriter.ui b/harbour/contrib/hbide/docwriter.ui deleted file mode 100644 index 697d195c65..0000000000 --- a/harbour/contrib/hbide/docwriter.ui +++ /dev/null @@ -1,688 +0,0 @@ - - - FormDocWriter - - - - 0 - 0 - 445 - 584 - - - - - 0 - 0 - - - - Form - - - - 0 - - - 2 - - - 0 - - - 0 - - - 0 - - - - - QFrame::NoFrame - - - true - - - - - 0 - -78 - 423 - 657 - - - - - 3 - - - 0 - - - 0 - - - 0 - - - 9 - - - - - Qt::Vertical - - - 2 - - - - - 0 - 300 - - - - - 16777215 - 300 - - - - QFrame::NoFrame - - - QFrame::Plain - - - - 4 - - - 4 - - - 0 - - - 2 - - - - - Template: - - - - - - - Version: - - - - - - - Status: - - - - - - - Compliance: - - - - - - - - - - Version of this document contents - - - - - - - Status should usually be described as one character - - - - - - - Describe comatibility with other language - - - - - - - Category: - - - - - - - Sub-category: - - - - - - - Category should describe main area this function belongs to - - - - - - - - - - Name: - - - - - - - External Link: - - - - - - - Name of the function, and if appropriate, with open/close parenthis. - - - - - - - External link, i.e., http://www.trolltech.com/ - - - - - - - One Liner: - - - - - - - A brief description this function accomlishes - - - - - - - Syntax: - - - - - - - Syntax, or prototype as to how this function will be called - - - - - - - Returns: - - - - - - - Variable name with hungarian notation with brief description as what this function returns - - - - - - - See Also: - - - - - - - A comma separated list of related functions/keywords - - - - - - - Files: - - - - - - - A comma separated list of relevant files, i.e., hbrtl.lib, hbqt.lib. - - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 2 - - - 4 - - - 0 - - - 2 - - - - - Arguments: - - - - - - - ... - - - true - - - - - - - One argument per line in the form - argName description - - - QPlainTextEdit::NoWrap - - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 2 - - - 4 - - - 0 - - - 2 - - - - - Description: - - - - - - - ... - - - true - - - - - - - Detailed description as musch as possible to convey to the user what should be kept in mind when this function is called. - - - QPlainTextEdit::NoWrap - - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 2 - - - 4 - - - 0 - - - 2 - - - - - Examples: - - - - - - - ... - - - true - - - - - - - A real-time source code which could be compiled out of this box. - - - QPlainTextEdit::NoWrap - - - - - - - - - 0 - 0 - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 2 - - - 4 - - - 0 - - - 2 - - - - - Tests: - - - - - - - ... - - - true - - - - - - - Compilable code out of the box which could be used to test this function - - - QPlainTextEdit::NoWrap - - - - - - - - - - - - - - - - 0 - 30 - - - - - 16777215 - 30 - - - - QFrame::Panel - - - QFrame::Raised - - - - 2 - - - 5 - - - 4 - - - - - Load from current function - - - ... - - - true - - - - - - - Load from .txt file - - - ... - - - true - - - - - - - Load from source ( .prg,.c,.c++ ) file - - - ... - - - true - - - - - - - Toggle Arguments Section - - - ... - - - true - - - - - - - Toggle Descriptions Section - - - ... - - - true - - - - - - - Toggle Examples Section - - - ... - - - true - - - - - - - Toggle Tests Section - - - ... - - - true - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Clear form - note that it will not save current document. - - - ... - - - true - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Save written/updated documentation - - - ... - - - true - - - - - - - Save the documentation with function in source - - - ... - - - true - - - - - - - - - - - diff --git a/harbour/contrib/hbide/edit.prg b/harbour/contrib/hbide/edit.prg deleted file mode 100644 index e36afdb224..0000000000 --- a/harbour/contrib/hbide/edit.prg +++ /dev/null @@ -1,3663 +0,0 @@ - /* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 27Dec2009 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "common.ch" -#include "hbclass.ch" -#include "hbqtgui.ch" -#include "hbide.ch" -#include "xbp.ch" - -/*----------------------------------------------------------------------*/ - -#define __customContextMenuRequested__ 1 -#define __textChanged__ 2 -#define __copyAvailable__ 3 -#define __modificationChanged__ 4 -#define __redoAvailable__ 5 -#define __selectionChanged__ 6 -#define __undoAvailable__ 7 -#define __updateRequest__ 8 -#define __cursorPositionChanged__ 9 - -#define __timerTimeout__ 23 - -#define __selectionMode_stream__ 1 -#define __selectionMode_column__ 2 -#define __selectionMode_line__ 3 - -/*----------------------------------------------------------------------*/ - -CLASS IdeEdit INHERIT IdeObject - - DATA oEditor - - DATA qEdit - DATA nOrient INIT 0 - - DATA nMode INIT 0 - DATA nLineNo INIT -99 - DATA nMaxDigits INIT 5 // Tobe - DATA nMaxRows INIT 100 - DATA nLastLine INIT -99 - DATA nCurLineNo INIT 0 - DATA nPrevLineNo INIT -1 - DATA nPrevLineNo1 INIT -1 - - DATA aBookMarks INIT {} - - DATA lModified INIT .F. - DATA lIndentIt INIT .F. - DATA lUpdatePrevWord INIT .F. - DATA lCopyWhenDblClicked INIT .F. - DATA cCurLineText INIT "" - - DATA cProto INIT "" - DATA cProtoOrg INIT "" - DATA qTimer - DATA nProtoLine INIT -1 - DATA nProtoCol INIT -1 - DATA isSuspended INIT .F. - - DATA nProtoRows INIT 1 - DATA nProtoCols INIT 10 - - DATA fontFamily - DATA pointSize - DATA currentPointSize - DATA qFont - DATA aBlockCopyContents INIT {} - DATA isLineSelectionON INIT .F. - DATA aSelectionInfo INIT { -1,-1,-1,-1,1,0 } - DATA aViewportInfo INIT { -1,-1,-1,-1,-1,-1 } - - DATA isColumnSelectionON INIT .F. - DATA lReadOnly INIT .F. - DATA isHighLighted INIT .f. - DATA cLastWord, cCurWord - DATA hLogicals - DATA isMatchingPair INIT .F. - - METHOD new( oIde, oEditor, nMode ) - METHOD create( oIde, oEditor, nMode ) - METHOD destroy() - METHOD execEvent( nMode, p, p1 ) - METHOD execKeyEvent( nMode, nEvent, p, p1, p2 ) - METHOD connectEditSignals() - METHOD disconnectEditSignals() - - METHOD reload() - METHOD redo() - METHOD undo() - METHOD cut() - METHOD copy() - METHOD paste() - METHOD selectAll() - - METHOD setReadOnly( lReadOnly ) - METHOD setNewMark() - METHOD setTooltipMark( nIndex ) - METHOD gotoMark( nIndex ) - METHOD duplicateLine() - METHOD deleteLine() - METHOD blockComment() - METHOD streamComment() - METHOD blockIndent( nDirctn ) - METHOD moveLine( nDirection ) - METHOD caseUpper() - METHOD caseLower() - METHOD caseInvert() - METHOD convertQuotes() - METHOD convertDQuotes() - METHOD findLastIndent() - METHOD reLayMarkButtons() - METHOD presentSkeletons() - METHOD handleCurrentIndent() - METHOD loadFuncHelp() - METHOD clickFuncHelp() - METHOD goto( nLine ) - METHOD gotoFunction() - METHOD toggleLineNumbers() - METHOD toggleHorzRuler() - - METHOD toggleSelectionMode() - METHOD toggleStreamSelectionMode() - METHOD toggleColumnSelectionMode() - METHOD toggleLineSelectionMode() - METHOD clearSelection() - METHOD togglePersistentSelection() - METHOD toggleCodeCompetion() - METHOD toggleCompetionTips() - - METHOD getWord( lSelect ) - METHOD getLine( nLine, lSelect ) - METHOD getText() - METHOD getSelectedText() - METHOD getColumnNo() - METHOD getLineNo() - METHOD insertSeparator( cSep ) - METHOD insertText( cText ) - - METHOD suspendPrototype() - METHOD resumePrototype() - METHOD showPrototype( cProto ) - METHOD hidePrototype() - METHOD completeCode( p ) - - METHOD setLineNumbersBkColor( nR, nG, nB ) - METHOD setCurrentLineColor( nR, nG, nB ) - METHOD getCursor() INLINE ::qEdit:textCursor() - METHOD find( cText, nPosFrom ) - METHOD refresh() - METHOD isModified() INLINE ::oEditor:qDocument:isModified() - METHOD setFont() - METHOD markCurrentFunction() - METHOD copyBlockContents() - METHOD pasteBlockContents() - METHOD insertBlockContents( oKey ) - METHOD cutBlockContents( k ) - METHOD zoom( nKey ) - METHOD blockConvert( cMode ) - METHOD dispStatusInfo() - METHOD toggleCurrentLineHighlightMode() - METHOD currentFunctionIndex() - METHOD toPreviousFunction() - METHOD toNextFunction() - - METHOD home() - METHOD end() - METHOD down() - METHOD up() - METHOD goBottom() - METHOD goTop() - METHOD left() - METHOD right() - METHOD panEnd() - METHOD panHome() - METHOD pageUp() - METHOD pageDown() - METHOD printPreview() - METHOD paintRequested( qPrinter ) - METHOD tabs2spaces() - METHOD spaces2tabs() - METHOD removeTrailingSpaces() - METHOD formatBraces() - METHOD upperCaseKeywords() - METHOD findEx( cText, nFlags, nStart ) - METHOD highlightAll( cText ) - METHOD unHighlight() - METHOD parseCodeCompletion( cSyntax ) - - METHOD highlightPage() - METHOD reformatLine( nPos, nDeleted, nAdded ) - METHOD handleTab( key ) - METHOD matchPair( x, y ) - METHOD unmatchPair() - METHOD alignAt( cAt ) - METHOD stringify() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:new( oIde, oEditor, nMode ) - - DEFAULT oIde TO ::oIde - DEFAULT oEditor TO ::oEditor - DEFAULT nMode TO ::nMode - - ::oIde := oIde - ::oEditor := oEditor - ::nMode := nMode - - ::fontFamily := ::oINI:cFontName - ::pointSize := ::oINI:nPointSize - ::currentPointSize := ::oINI:nPointSize - - ::hLogicals := {=>} - hb_hCaseMatch( ::hLogicals, .F. ) - ::hLogicals := { "t" => NIL, "f" => NIL, "or" => NIL, "and" => NIL, "not" => NIL } - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:create( oIde, oEditor, nMode ) - LOCAL nBlock, oPalette - - DEFAULT oIde TO ::oIde - DEFAULT oEditor TO ::oEditor - DEFAULT nMode TO ::nMode - - ::oIde := oIde - ::oEditor := oEditor - ::nMode := nMode - - ::qEdit := HBQPlainTextEdit() - // - ::qEdit:setLineWrapMode( QTextEdit_NoWrap ) - ::qEdit:ensureCursorVisible() - ::qEdit:setContextMenuPolicy( Qt_CustomContextMenu ) - ::qEdit:setTabChangesFocus( .f. ) - ::qEdit:setFocusPolicy( Qt_StrongFocus ) - ::qEdit:setObjectName( hbide_getNextIDasString( "HBQPlainTextEdit" ) ) - ::qEdit:setMouseTracking( .T. ) - - oPalette := ::qEdit:palette() - oPalette:setColor( QPalette_Inactive, QPalette_Highlight, QColor( Qt_yellow ) ) - ::qEdit:setPalette( oPalette ) - - ::setFont() - - ::qEdit:hbSetSpaces( ::nTabSpaces ) - - ::qEdit:hbSetCompleter( ::qCompleter ) - - ::toggleCurrentLineHighlightMode() - ::toggleLineNumbers() - ::toggleHorzRuler() - - FOR EACH nBlock IN ::aBookMarks - ::qEdit:hbBookMarks( nBlock ) - NEXT - - ::connectEditSignals() - - ::qEdit:connect( QEvent_KeyPress , {|p| ::execKeyEvent( 101, QEvent_KeyPress , p ) } ) - ::qEdit:connect( QEvent_Wheel , {|p| ::execKeyEvent( 102, QEvent_Wheel , p ) } ) - ::qEdit:connect( QEvent_FocusIn , {| | ::execKeyEvent( 104, QEvent_FocusIn ) } ) - ::qEdit:connect( QEvent_Resize , {| | ::execKeyEvent( 106, QEvent_Resize ) } ) - ::qEdit:connect( QEvent_FocusOut , {| | ::execKeyEvent( 105, QEvent_FocusOut ) } ) - ::qEdit:connect( QEvent_MouseButtonPress , {| | ::execKeyEvent( 106, QEvent_MouseButtonPress ) } ) - - ::qEdit:hbSetEventBlock( {|p,p1,p2| ::execKeyEvent( 115, 1001, p, p1, p2 ) } ) - - ::qTimer := QTimer() - ::qTimer:setInterval( 2000 ) - ::qTimer:connect( "timeout()", {|| ::execEvent( __timerTimeout__ ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:destroy() - - IF Self == ::oEditor:oEdit - ::oSourceThumbnailDock:oWidget:hide() - ENDIF - - ::oEditor := NIL - - ::qTimer:disconnect( "timeout()" ) - IF ::qTimer:isActive() - ::qTimer:stop() - ENDIF - ::qTimer := NIL - - ::qEdit:disconnect( QEvent_KeyPress ) - ::qEdit:disconnect( QEvent_Wheel ) - ::qEdit:disconnect( QEvent_FocusIn ) - ::qEdit:disconnect( QEvent_FocusOut ) - ::qEdit:disconnect( QEvent_Resize ) - ::qEdit:disconnect( QEvent_MouseButtonDblClick ) - ::qEdit:disconnect( QEvent_MouseMove ) - - ::disconnectEditSignals() - - //::qEdit := NIL - ::qEdit:setParent( QWidget() ) /* Works, but GPF on exit */ - ::qFont := NIL - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:disconnectEditSignals() - - ::qEdit:disConnect( "customContextMenuRequested(QPoint)" ) - ::qEdit:disConnect( "textChanged()" ) - ::qEdit:disConnect( "selectionChanged()" ) - ::qEdit:disConnect( "cursorPositionChanged()" ) - ::qEdit:disConnect( "copyAvailable(bool)" ) - - #if 0 - ::qEdit:disConnect( "updateRequest(QRect,int)" ) - ::qEdit:disConnect( "modificationChanged(bool)" ) - ::qEdit:disConnect( "redoAvailable(bool)" ) - ::qEdit:disConnect( "undoAvailable(bool)" ) - #endif - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:connectEditSignals() - - ::qEdit:connect( "customContextMenuRequested(QPoint)", {|p | ::execEvent( __customContextMenuRequested__, p ) } ) - ::qEdit:connect( "selectionChanged()" , {|p | ::execEvent( __selectionChanged__, p ) } ) - ::qEdit:connect( "cursorPositionChanged()" , {| | ::execEvent( __cursorPositionChanged__ ) } ) - ::qEdit:connect( "copyAvailable(bool)" , {|p | ::execEvent( __copyAvailable__, p ) } ) - - #if 0 - ::qEdit:connect( "modificationChanged(bool)" , {|p | ::execEvent( __modificationChanged__, p ) } ) - ::qEdit:connect( "textChanged()" , {| | ::execEvent( __textChanged__ ) } ) - ::qEdit:connect( "updateRequest(QRect,int)" , {|p,p1| ::execEvent( __updateRequest__, p, p1 ) } ) - ::qEdit:connect( "redoAvailable(bool)" , {|p | ::execEvent( __redoAvailable__, p ) } ) - ::qEdit:connect( "undoAvailable(bool)" , {|p | ::execEvent( __undoAvailable__, p ) } ) - #endif - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:execEvent( nMode, p, p1 ) - LOCAL qAct, n, qCursor, cAct, lOtherEdit - - HB_SYMBOL_UNUSED( p1 ) - - IF ::lQuitting - RETURN NIL - ENDIF - - qCursor := ::qEdit:textCursor() - ::nCurLineNo := qCursor:blockNumber() - - SWITCH nMode - - CASE __timerTimeout__ - IF empty( ::cProto ) - ::hidePrototype() - ELSE - ::showPrototype() - ENDIF - EXIT - - CASE __cursorPositionChanged__ - ::oEditor:dispEditInfo( ::qEdit ) /* Is a MUST */ - ::markCurrentFunction() /* Optimized */ - EXIT - - CASE __selectionChanged__ - lOtherEdit := ! ( ::oEditor:qCqEdit == ::qEdit ) - IF lOtherEdit - ::oEditor:qCqEdit := ::qEdit - ::oEditor:qCoEdit := Self - IF HB_ISOBJECT( ::oEditor:qHiliter ) - ::oEditor:qHiliter:hbSetEditor( ::qEdit ) - ::qEdit:hbSetHighlighter( ::oEditor:qHiliter ) - ENDIF - ENDIF - IF ::aSelectionInfo[ 1 ] > -1 .AND. ::aSelectionInfo[ 1 ] == ::aSelectionInfo[ 3 ] - ::oDK:setStatusText( SB_PNL_SELECTEDCHARS, Len( ::getSelectedText() ) ) - ELSE - ::oDK:setStatusText( SB_PNL_SELECTEDCHARS, 0 ) - ENDIF - - ::oDK:showSelectedTextToolbar( Self ) - ::unHighlight() - ::oUpDn:show( Self ) - EXIT - - CASE __copyAvailable__ - IF p .AND. ::lCopyWhenDblClicked - ::qEdit:copy() - ENDIF - ::lCopyWhenDblClicked := .f. - EXIT - - CASE __customContextMenuRequested__ - ::oEM:aActions[ 17, 2 ]:setEnabled( !empty( qCursor:selectedText() ) ) - - n := ascan( ::oEditor:aEdits, {|o| o == Self } ) - - ::oEM:aActions[ 18, 2 ]:setEnabled( Len( ::oEditor:aEdits ) == 0 .OR. ::oEditor:nSplOrient == -1 .OR. ::oEditor:nSplOrient == 1 ) - ::oEM:aActions[ 19, 2 ]:setEnabled( Len( ::oEditor:aEdits ) == 0 .OR. ::oEditor:nSplOrient == -1 .OR. ::oEditor:nSplOrient == 2 ) - ::oEM:aActions[ 21, 2 ]:setEnabled( n > 0 ) - IF empty( qAct := ::oEM:qContextMenu:exec( ::qEdit:mapToGlobal( p ) ) ) - RETURN Self - ENDIF - cAct := strtran( qAct:text(), "&", "" ) - SWITCH cAct - CASE "Split Horizontally" - ::oEditor:split( 1, Self ) - EXIT - CASE "Split Vertically" - ::oEditor:split( 2, Self ) - EXIT - CASE "Close Splitted Instance" - IF n > 0 /* 1 == Main Edit */ - hb_adel( ::oEditor:aEdits, n, .t. ) - ::oEditor:qCqEdit := ::oEditor:qEdit - ::oEditor:qCoEdit := ::oEditor:oEdit - ::destroy() - ::oIde:manageFocusInEditor() - ENDIF - EXIT - CASE "Save as Skeleton..." - ::oSK:saveAs( ::getSelectedText() ) - EXIT - CASE "Apply Theme" - ::oEditor:applyTheme() - EXIT - CASE "Goto Function" - ::gotoFunction() - EXIT - CASE "Cut" - ::cut() - EXIT - CASE "Copy" - ::copy() - EXIT - CASE "Paste" - ::paste() - EXIT - CASE "Undo" - ::undo() - EXIT - CASE "Redo" - ::redo() - EXIT - CASE "Diff" - ::oEditor:vssExecute( "Diff" ) - EXIT - CASE "Get Latest Version" - ::oEditor:vssExecute( "Get" ) - EXIT - CASE "Checkin" - ::oEditor:vssExecute( "Checkin" ) - EXIT - CASE "Undo Checkout" - ::oEditor:vssExecute( "Undocheckout" ) - EXIT - CASE "Checkout" - ::oEditor:vssExecute( "Checkout" ) - EXIT - ENDSWITCH - EXIT - - #if 0 - CASE __textChanged__ - ::oEditor:setTabImage( ::qEdit ) - EXIT - CASE __modificationChanged__ - ::oEditor:setTabImage( ::qEdit ) - EXIT - CASE __redoAvailable__ - EXIT - CASE __undoAvailable__ - EXIT - CASE __updateRequest__ - EXIT - #endif - ENDSWITCH - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:execKeyEvent( nMode, nEvent, p, p1, p2 ) - LOCAL key, kbm, lAlt, lCtrl, lShift - - HB_SYMBOL_UNUSED( nMode ) - HB_SYMBOL_UNUSED( p1 ) - - SWITCH nEvent - - CASE QEvent_KeyPress /* The key is sent here prior TO applying TO editor */ - ::unmatchPair() - - key := p:key() - kbm := p:modifiers() - - lAlt := hb_bitAnd( kbm, Qt_AltModifier ) == Qt_AltModifier - lCtrl := hb_bitAnd( kbm, Qt_ControlModifier ) == Qt_ControlModifier - lShift := hb_bitAnd( kbm, Qt_ShiftModifier ) == Qt_ShiftModifier - - SWITCH key /* On top of any user defined action be executed - QPlainTextEdit's default keys */ - CASE Qt_Key_Tab - CASE Qt_Key_Backtab - p:accept() - ::handleTab( key ) - RETURN .t. - ENDSWITCH - - IF ::oSC:execKey( Self, key, lAlt, lCtrl, lShift ) /* User Defined Actions */ - RETURN .f. - ENDIF - - SWITCH ( key ) - - CASE Qt_Key_F3 - IF ! lCtrl .AND. ! lAlt - ::oFR:find( .f. ) - ENDIF - EXIT - CASE Qt_Key_Insert - IF lCtrl - ::copy() - ENDIF - EXIT - CASE Qt_Key_Backspace - IF ! lCtrl .AND. ! lAlt - IF ::getLineNo() == ::nProtoLine .AND. ::getColumnNo() <= ::nProtoCol + 1 - ::hidePrototype() - ENDIF - ENDIF - EXIT - CASE Qt_Key_Space - IF ! lAlt .AND. ! lShift .AND. ! lCtrl - ::lUpdatePrevWord := .t. - ENDIF - EXIT - CASE Qt_Key_Return - CASE Qt_Key_Enter - ::lIndentIt := .t. - EXIT - CASE Qt_Key_ParenLeft - IF ! lCtrl .AND. ! lAlt - ::loadFuncHelp() /* Also invokes prototype display */ - ENDIF - EXIT - CASE Qt_Key_Escape - CASE Qt_Key_ParenRight - IF ! lCtrl .AND. ! lAlt - ::hidePrototype() - ENDIF - EXIT - CASE Qt_Key_PageUp - IF lAlt - ::toPreviousFunction() - ENDIF - EXIT - CASE Qt_Key_PageDown - IF lAlt - ::toNextFunction() - ENDIF - EXIT - ENDSWITCH - EXIT - CASE QEvent_Enter - CASE QEvent_FocusIn - IF key == QEvent_FocusIn - ::oUpDn:show() - ::oDK:showSelectedTextToolbar() - ENDIF - EXIT - CASE QEvent_Resize - ::oUpDn:show() - ::oDK:showSelectedTextToolbar() - EXIT - CASE QEvent_Leave - CASE QEvent_FocusOut - EXIT - CASE QEvent_Wheel - EXIT - CASE 1001 /* Fired from hbqt_hbqplaintextedit.cpp */ - SWITCH p - CASE QEvent_MouseButtonDblClick - // ::lCopyWhenDblClicked := .t. - ::clickFuncHelp() - EXIT - CASE QEvent_MouseButtonPress - ::matchPair( p1, p2 ) - EXIT - CASE 21000 /* Sends Block Info { t,l,b,r,mode,state } hbGetBlockInfo() */ - ::aSelectionInfo := p1 - ::oDK:setButtonState( "SelectionMode", ::aSelectionInfo[ 5 ] > 1 ) - EXIT - CASE 21011 - ::copyBlockContents() - EXIT - CASE 21012 - ::pasteBlockContents() - EXIT - CASE 21013 - ::insertBlockContents( p1 ) - EXIT - CASE 21014 /* ->hbCut() */ - ::cutBlockContents( p1 ) - EXIT - CASE 21017 /* Sends Block Info { t,l,b,r,mode,state } hbGetBlockInfo() */ - ::aViewportInfo := p1 - EXIT - CASE 21041 - ::qEdit:hbSetFieldsListActive( ::oEM:updateFieldsList( p1 ) ) - EXIT - CASE 21042 - ::qEdit:hbSetFieldsListActive( ::oEM:updateFieldsList() ) - EXIT - ENDSWITCH - EXIT - ENDSWITCH - - RETURN .F. /* Important - NEVER CHANGE IT TO .T. */ - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:zoom( nKey ) - - DEFAULT nKey TO 0 - - IF nKey == 1 - IF ::currentPointSize + 1 < 30 - ::currentPointSize++ - ENDIF - - ELSEIF nKey == -1 - IF ::currentPointSize - 1 > 3 - ::currentPointSize-- - ENDIF - - ELSEIF nKey == 0 - ::currentPointSize := ::pointSize - - ELSEIF nKey >= 3 .AND. nKey <= 30 - ::currentPointSize := nKey - - ELSE - RETURN Self - - ENDIF - - ::setFont() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:setFont() - - ::qFont := QFont() - ::qFont:setFamily( ::fontFamily ) - ::qFont:setFixedPitch( .t. ) - ::qFont:setPointSize( ::currentPointSize ) - - ::qEdit:setFont( ::qFont ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:highlightPage() - - IF HB_ISOBJECT( ::oEditor:qHiliter ) - ::qEdit:hbHighlightPage() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:dispStatusInfo() - LOCAL nMode - - nMode := ::aSelectionInfo[ 5 ] - ::oDK:setButtonState( "SelectionMode", nMode > 1 ) - ::oDK:setStatusText( SB_PNL_STREAM, iif( nMode == 2, "Column", iif( nMode == 3, "Line", "Stream" ) ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_blockContents( aContents ) - LOCAL oldContents - STATIC contents := {} - - oldContents := contents - IF HB_ISARRAY( aContents ) - contents := aclone( aContents ) - ENDIF - - RETURN oldContents - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_setQCursor( qEdit, a_ ) - LOCAL qCursor - - IF HB_ISARRAY( a_ ) - qCursor := a_[ 1 ] - qCursor:movePosition( QTextCursor_Start, QTextCursor_MoveAnchor ) - qCursor:movePosition( QTextCursor_Down , QTextCursor_MoveAnchor, a_[ 2 ] ) - qCursor:movePosition( QTextCursor_Right, QTextCursor_MoveAnchor, a_[ 3 ] ) - qEdit:setTextCursor( qCursor ) - qCursor:endEditBlock() - ELSE - qCursor := qEdit:textCursor() - qCursor:beginEditBlock() - RETURN { qCursor, qCursor:blockNumber(), qCursor:columnNumber() } - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_qReplaceLine( qCursor, nLine, cLine ) - - qCursor:movePosition( QTextCursor_Start , QTextCursor_MoveAnchor ) - qCursor:movePosition( QTextCursor_Down , QTextCursor_MoveAnchor, nLine ) - qCursor:movePosition( QTextCursor_StartOfLine, QTextCursor_MoveAnchor ) - qCursor:movePosition( QTextCursor_EndOfLine , QTextCursor_KeepAnchor ) - qCursor:insertText( cLine ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_qPositionCursor( qCursor, nRow, nCol ) - - qCursor:movePosition( QTextCursor_Start, QTextCursor_MoveAnchor ) - qCursor:movePosition( QTextCursor_Down , QTextCursor_MoveAnchor, nRow ) - qCursor:movePosition( QTextCursor_Right, QTextCursor_MoveAnchor, nCol ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_invert( cBuffer ) - LOCAL s, i, c, nLen - - s := "" - nLen := Len( cBuffer ) - FOR i := 1 TO nLen - c := substr( cBuffer, i, 1 ) - IF isAlpha( c ) - s += iif( isUpper( c ), lower( c ), upper( c ) ) - ELSE - s += c - ENDIF - NEXT - - RETURN s - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_convertALine( cLine, cMode ) - - SWITCH cMode - CASE "toupper" - cLine := upper( cLine ) - EXIT - CASE "tolower" - cLine := lower( cLine ) - EXIT - CASE "invert" - cLine := hbide_invert( cLine ) - EXIT - CASE "sgl2dbl" - cLine := strtran( cLine, "'", '"' ) - EXIT - CASE "dbl2sgl" - cLine := strtran( cLine, '"', "'" ) - EXIT - ENDSWITCH - - RETURN cLine - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_qCursorDownInsert( qCursor ) - LOCAL nRow := qCursor:blockNumber() - - qCursor:movePosition( QTextCursor_Down, QTextCursor_MoveAnchor ) - IF qCursor:blockNumber() == nRow - qCursor:movePosition( QTextCursor_EndOfBlock, QTextCursor_MoveAnchor ) - qCursor:insertBlock() - qCursor:movePosition( QTextCursor_NextBlock, QTextCursor_MoveAnchor ) - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:copyBlockContents() - LOCAL nT, nL, nB, nR, nW, i, cLine, nMode, qClip, aCord - LOCAL cClip := "" - - HB_TRACE( HB_TR_DEBUG, "IdeEdit:copyBlockContents( aCord )" ) - - aCord := ::aSelectionInfo - - hbide_normalizeRect( aCord, @nT, @nL, @nB, @nR ) - nMode := aCord[ 5 ] - - ::aBlockCopyContents := {} - - nW := nR - nL - FOR i := nT TO nB - cLine := ::getLine( i + 1 ) - cLine := strtran( cLine, chr( 13 ) ) - cLine := strtran( cLine, chr( 10 ) ) - - IF nMode == __selectionMode_stream__ - IF aCord[ 1 ] > aCord[ 3 ] // Selection - bottom to top - IF i == nT .AND. i == nB - cLine := substr( cLine, min( aCord[ 2 ], aCord[ 4 ] ) + 1, nW ) - ELSEIF i == aCord[ 1 ] - cLine := substr( cLine, 1, aCord[ 2 ] ) - ELSEIF i == aCord[ 3 ] - cLine := substr( cLine, aCord[ 4 ] + 1 ) - ENDIF - ELSE // Selection - top to bottom or same row - IF i == nT .AND. i == nB - cLine := substr( cLine, min( aCord[ 2 ], aCord[ 4 ] ) + 1, nW ) - ELSEIF i == aCord[ 1 ] - cLine := substr( cLine, aCord[ 2 ] + 1 ) - ELSEIF i == aCord[ 3 ] - cLine := substr( cLine, 1, aCord[ 4 ] ) - ENDIF - ENDIF - - ELSEIF nMode == __selectionMode_column__ - cLine := pad( substr( cLine, nL + 1, nW ), nW ) - - ELSEIF nMode == __selectionMode_line__ - // Nothing to do, complete line is already pulled - - ENDIF - - aadd( ::aBlockCopyContents, cLine ) - cClip += cLine + iif( nT == nB, "", iif( i < nB, hb_eol(), "" ) ) - NEXT - - hbide_blockContents( { nMode, ::aBlockCopyContents } ) - - qClip := QClipboard() - qClip:clear() - qClip:setText( cClip ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:pasteBlockContents() - LOCAL i, nCol, qCursor, nMaxCol, aCopy, a_, nPasteMode, nMode - - IF ::lReadOnly - RETURN Self - ENDIF - - nMode := ::aSelectionInfo[ 5 ] - - aCopy := hb_ATokens( StrTran( QClipboard():text(), Chr( 13 ) + Chr( 10 ), _EOL ), _EOL ) - IF empty( aCopy ) - RETURN Self - ENDIF - - nPasteMode := nMode /* OR Stream - needs to be thought carefully */ - - a_:= hbide_blockContents() - IF !empty( a_ ) - IF ( Len( a_[ 2 ] ) == len( aCopy ) ) .OR. ( len( a_[ 2 ] ) == len( aCopy ) + 1 ) - IF a_[ 2,1 ] == aCopy[ 1 ] - nPasteMode := a_[ 1 ] - ENDIF - ENDIF - ENDIF - - nPasteMode := iif( empty( nPasteMode ), __selectionMode_stream__, nPasteMode ) - qCursor := ::qEdit:textCursor() - nCol := qCursor:columnNumber() - - qCursor:beginEditBlock() - // - SWITCH nPasteMode - CASE __selectionMode_column__ - FOR i := 1 TO Len( aCopy ) - qCursor:insertText( aCopy[ i ] ) - IF i < Len( aCopy ) - hbide_qCursorDownInsert( qCursor ) - - qCursor:movePosition( QTextCursor_EndOfLine, QTextCursor_MoveAnchor ) - nMaxCol := qCursor:columnNumber() - IF nMaxCol < nCol - qCursor:insertText( replicate( " ", nCol - nMaxCol ) ) - ENDIF - qCursor:movePosition( QTextCursor_StartOfLine, QTextCursor_MoveAnchor ) - qCursor:movePosition( QTextCursor_Right , QTextCursor_MoveAnchor, nCol ) - ENDIF - NEXT - EXIT - CASE __selectionMode_stream__ - FOR i := 1 TO Len( aCopy ) - qCursor:insertText( aCopy[ i ] ) - IF i < Len( aCopy ) - qCursor:insertText( hb_eol() ) - ENDIF - NEXT - EXIT - CASE __selectionMode_line__ - qCursor:movePosition( QTextCursor_StartOfLine, QTextCursor_MoveAnchor ) - FOR i := 1 TO Len( aCopy ) - qCursor:insertText( aCopy[ i ] ) - qCursor:insertBlock() - NEXT - EXIT - ENDSWITCH - - qCursor:endEditBlock() - ::qEdit:ensureCursorVisible() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:insertBlockContents( oKey ) /* Only called if block selection is on */ - LOCAL nT, nL, nB, nR, nW, i, cLine, cKey, qCursor, aCord, qCur - - IF ::lReadOnly - RETURN Self - ENDIF - - cKey := chr( hbxbp_QKeyEventToAppEvent( oKey ) ) - - aCord := ::aSelectionInfo - hbide_normalizeRect( aCord, @nT, @nL, @nB, @nR ) - nW := nR - nL - - qCursor := ::qEdit:textCursor() - qCur := ::qEdit:textCursor() - qCursor:beginEditBlock() - - IF nW == 0 - FOR i := nT TO nB - cLine := ::getLine( i + 1 ) - cLine := pad( substr( cLine, 1, nL ), nL ) + cKey + substr( cLine, nL + 1 ) - hbide_qReplaceLine( qCursor, i, cLine ) - NEXT - - hbide_qPositionCursor( qCursor, qCur:blockNumber(), nR + 1 ) - ELSE - FOR i := nT TO nB - cLine := ::getLine( i + 1 ) - cLine := pad( substr( cLine, 1, nL ), nL ) + replicate( cKey, nW ) + substr( cLine, nR + 1 ) - hbide_qReplaceLine( qCursor, i, cLine ) - NEXT - - hbide_qPositionCursor( qCursor, qCur:blockNumber(), nR ) - ENDIF - - ::qEdit:setTextCursor( qCursor ) - qCursor:endEditBlock() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:cutBlockContents( k ) - LOCAL nT, nL, nB, nR, i, cLine, qCursor, nSelMode, aCord, qCur - - IF ::lReadOnly - RETURN Self - ENDIF - - k := iif( empty( k ), Qt_Key_X, k ) - IF k == Qt_Key_X - ::copyBlockContents() - ENDIF - aCord := ::aSelectionInfo - hbide_normalizeRect( aCord, @nT, @nL, @nB, @nR ) - - nSelMode := aCord[ 5 ] - - qCursor := ::qEdit:textCursor() - qCur := ::qEdit:textCursor() - qCursor:beginEditBlock() - - IF k == Qt_Key_Backspace - IF nSelMode == __selectionMode_column__ - FOR i := nT TO nB - cLine := ::getLine( i + 1 ) - cLine := pad( substr( cLine, 1, nL - 1 ), nL - 1 ) + substr( cLine, nL + 1 ) - hbide_qReplaceLine( qCursor, i, cLine ) - NEXT - hbide_qPositionCursor( qCursor, qCur:blockNumber(), nR - 1 ) - ENDIF - ELSE - IF k == Qt_Key_Delete .OR. k == Qt_Key_X - IF nSelMode == __selectionMode_column__ - FOR i := nT TO nB - cLine := ::getLine( i + 1 ) - cLine := pad( substr( cLine, 1, nL ), nL ) + substr( cLine, nR + 1 ) - hbide_qReplaceLine( qCursor, i, cLine ) - NEXT - hbide_qPositionCursor( qCursor, qCur:blockNumber(), nL ) - ::qEdit:hbSetSelectionInfo( { nT, nL, nB, nL, __selectionMode_column__ } ) - - ELSEIF nSelMode == __selectionMode_stream__ - hbide_qPositionCursor( qCursor, nT, nL ) - qCursor:movePosition( QTextCursor_Down , QTextCursor_KeepAnchor, nB - nT ) - qCursor:movePosition( QTextCursor_StartOfLine, QTextCursor_KeepAnchor ) - qCursor:movePosition( QTextCursor_Right , QTextCursor_KeepAnchor, nR ) - qCursor:removeSelectedText() - ::qEdit:hbSetSelectionInfo( { -1, -1, -1, -1, __selectionMode_stream__ } ) - - ELSEIF nSelMode == __selectionMode_line__ - hbide_qPositionCursor( qCursor, nT, nL ) - qCursor:movePosition( QTextCursor_Down , QTextCursor_KeepAnchor, nB - nT + 1 ) - qCursor:movePosition( QTextCursor_StartOfLine, QTextCursor_KeepAnchor ) - qCursor:removeSelectedText() - ::qEdit:hbSetSelectionInfo( { -1, -1, -1, -1, __selectionMode_stream__ } ) - ::isLineSelectionON := .f. - - ENDIF - ENDIF - ENDIF - - ::qEdit:setTextCursor( qCursor ) - qCursor:endEditBlock() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:blockComment() /* Toggles the block comments - always inserted at the begining of the line */ - LOCAL nT, nL, nB, nR, nW, i, cLine, qCursor, aCord, nMode, a_ - LOCAL cComment := "// " - LOCAL nLen := Len( cComment ) - - IF ::lReadOnly - RETURN Self - ENDIF - - aCord := ::aSelectionInfo - hbide_normalizeRect( aCord, @nT, @nL, @nB, @nR ) - nW := nR - nL - - IF nW >= 0 - nMode := aCord[ 5 ] - a_:= hbide_setQCursor( ::qEdit ) - qCursor := a_[ 1 ] - - FOR i := nT TO nB - cLine := ::getLine( i + 1 ) - - SWITCH nMode - CASE __selectionMode_stream__ - CASE __selectionMode_line__ - IF substr( cLine, 1, nLen ) == cComment - cLine := substr( cLine, nLen + 1 ) - ELSE - cLine := cComment + cLine - ENDIF - EXIT - CASE __selectionMode_column__ - IF substr( cLine, nL + 1, nLen ) == cComment - cLine := pad( substr( cLine, 1, nL ), nL ) + substr( cLine, nL + nLen + 1 ) - ELSE - cLine := pad( substr( cLine, 1, nL ), nL ) + cComment + substr( cLine, nL + 1 ) - ENDIF - EXIT - ENDSWITCH - - hbide_qReplaceLine( qCursor, i, cLine ) - NEXT -#if 1 - hbide_setQCursor( ::qEdit, a_ ) -#else - hbide_qPositionCursor( qCursor, qCur:blockNumber(), nL ) - ::qEdit:hbSetSelectionInfo( { nT, nL, nB, nL, __selectionMode_column__ } ) -#endif - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:streamComment() - LOCAL nT, nL, nB, nR, nW, i, cLine, qCursor, aCord, nMode, a_ - - IF ::lReadOnly - RETURN Self - ENDIF - - aCord := ::aSelectionInfo - hbide_normalizeRect( aCord, @nT, @nL, @nB, @nR ) - nW := nR - nL - - IF nW >= 0 - nMode := aCord[ 5 ] - a_:= hbide_setQCursor( ::qEdit ) ; qCursor := a_[ 1 ] - - FOR i := nT TO nB - cLine := ::getLine( i + 1 ) - - DO CASE - CASE nMode == __selectionMode_stream__ - IF i == nT - cLine := substr( cLine, 1, nL ) + "/* " + substr( cLine, nL + 1 ) - ELSEIF i == nB - cLine := substr( cLine, 1, nR ) + " */" + substr( cLine, nR + 1 ) - ENDIF - - CASE nMode == __selectionMode_line__ - IF i == nT - cLine := "/* " + cLine - ELSEIF i == nB - cLine += " */" - ENDIF - - ENDCASE - - hbide_qReplaceLine( qCursor, i, cLine ) - NEXT - - hbide_setQCursor( ::qEdit, a_ ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:handleTab( key ) - LOCAL nT, nL, nB, nR, i, cLine, qCursor, aCord, nMode, nCol, nRow - LOCAL cComment := space( ::nTabSpaces ) - LOCAL nLen := ::nTabSpaces - LOCAL nOff := iif( key == Qt_Key_Tab, nLen, -nLen ) - - IF ::lReadOnly - RETURN Self - ENDIF - - aCord := ::aSelectionInfo - hbide_normalizeRect( aCord, @nT, @nL, @nB, @nR ) - nMode := aCord[ 5 ] - - qCursor := ::qEdit:textCursor() - qCursor:beginEditBlock() - nCol := qCursor:columnNumber() - nRow := qCursor:blockNumber() - - SWITCH nMode - CASE __selectionMode_column__ - FOR i := nT TO nB - cLine := ::getLine( i + 1 ) - IF key == Qt_Key_Tab - //cLine := substr( cLine, 1, nCol ) + cComment + substr( cLine, nCol + 1 ) - cLine := substr( cLine, 1, nL ) + cComment + substr( cLine, nL + 1 ) - ELSE - //cLine := substr( cLine, 1, nCol - 3 ) + substr( cLine, nCol + 1 ) - cLine := substr( cLine, 1, nL - 3 ) + substr( cLine, nL + 1 ) - ENDIF - hbide_qReplaceLine( qCursor, i, cLine ) - NEXT - hbide_qPositionCursor( qCursor, nRow, max( 0, nCol + nOff ) ) - ::qEdit:hbSetSelectionInfo( { nT, max( 0, nL + nOff ), nB, max( 0, nR + nOff ), __selectionMode_column__ } ) - EXIT - CASE __selectionMode_stream__ - CASE __selectionMode_line__ - IF nL >= 0 /* Selection is marked */ - // ::cutBlockContents( Qt_Key_Delete ) /* Other editors DO it like but FOR source code it must be different */ - FOR i := nT TO nB - cLine := ::getLine( i + 1 ) - IF key == Qt_Key_Tab - cLine := cComment + cLine - ELSE - cLine := substr( cLine, nLen + 1 ) - ENDIF - hbide_qReplaceLine( qCursor, i, cLine ) - NEXT - hbide_qPositionCursor( qCursor, nRow, max( 0, nCol + nOff ) ) - ELSE - IF key == Qt_Key_Tab - qCursor:insertText( Space( ::nTabSpaces ) ) - ELSE - cLine := ::getLine( nRow + 1 ) - cLine := substr( cLine, 1, nCol - nLen ) + substr( cLine, nCol + 1 ) - hbide_qReplaceLine( qCursor, nRow, cLine ) - hbide_qPositionCursor( qCursor, nRow, max( 0, nCol + nOff ) ) - ENDIF - ENDIF - EXIT - ENDSWITCH - ::qEdit:setTextCursor( qCursor ) - qCursor:endEditBlock() - - RETURN .t. - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:blockIndent( nDirctn ) - IF nDirctn == 1 - ::handleTab( Qt_Key_Tab ) - ELSE - ::handleTab( Qt_Key_Backtab ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:stringify() - LOCAL nT, nL, nB, nR, nW, i, cLine, qCursor, aCord, a_, cTkn, cT1 - - IF ::lReadOnly - RETURN Self - ENDIF - aCord := ::aSelectionInfo - hbide_normalizeRect( aCord, @nT, @nL, @nB, @nR ) - nW := nR - nL - IF nW > 0 - a_:= hbide_setQCursor( ::qEdit ) ; qCursor := a_[ 1 ] - IF aCord[ 5 ] == __selectionMode_column__ - FOR i := nT TO nB - cLine := ::getLine( i + 1 ) - cTkn := SubStr( cLine, nL + 1, nR - nL ) - cT1 := Trim( cTkn ) - cTkn := '"' + cT1 + '"' + Space( Len( cTkn ) - Len( cT1 ) ) - cLine := SubStr( cLine, 1, nL ) + cTkn + SubStr( cLine, nR + 1 ) - hbide_qReplaceLine( qCursor, i, cLine ) - NEXT - ELSEIF aCord[ 1 ] == aCord[ 3 ] /* same line selection */ - cLine := qCursor:block():text() - cTkn := SubStr( cLine, nL + 1, nR - nL ) - cTkn := '"' + cTkn + '"' - cLine := SubStr( cLine, 1, nL ) + cTkn + SubStr( cLine, nR + 1 ) - hbide_qReplaceLine( qCursor, qCursor:blockNumber(), cLine ) - ENDIF - hbide_setQCursor( ::qEdit, a_ ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:alignAt( cAt ) - LOCAL nT, nL, nB, nR, nW, i, cLine, qCursor, aCord, a_, nMax, n, c1st, c2nd - - IF ::lReadOnly - RETURN Self - ENDIF - - nMax := 0 - aCord := ::aSelectionInfo - hbide_normalizeRect( aCord, @nT, @nL, @nB, @nR ) - nW := nR - nL - a_:= hbide_setQCursor( ::qEdit ) ; qCursor := a_[ 1 ] - IF nW >= 0 - FOR i := nT TO nB - cLine := ::getLine( i + 1 ) - IF ( n := At( cAt, SubStr( cLine, nL, nR - nL + 1 ) ) ) > 0 - nMax := Max( nMax, n ) - ENDIF - NEXT - ENDIF - IF nMax > 0 - nMax += nL - 2 - FOR i := nT TO nB - cLine := ::getLine( i + 1 ) - IF ( n := At( cAt, SubStr( cLine, nL, nR - nL + 1 ) ) ) > 0 - c1st := SubStr( cLine, 1, nL + n - 2 ) - c2nd := SubStr( cLine, nL + n - 1 ) - cLine := PadR( c1st, nMax ) + c2nd - ENDIF - hbide_qReplaceLine( qCursor, i, cLine ) - NEXT - ENDIF - hbide_setQCursor( ::qEdit, a_ ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:blockConvert( cMode ) - LOCAL nT, nL, nB, nR, nW, i, cLine, qCursor, aCord, a_, nMode - - IF ::lReadOnly - RETURN Self - ENDIF - - aCord := ::aSelectionInfo - hbide_normalizeRect( aCord, @nT, @nL, @nB, @nR ) - nW := nR - nL - - IF nW >= 0 - nMode := aCord[ 5 ] - a_:= hbide_setQCursor( ::qEdit ) ; qCursor := a_[ 1 ] - - FOR i := nT TO nB - cLine := ::getLine( i + 1 ) - - DO CASE - CASE nMode == __selectionMode_stream__ - IF nT == nB - cLine := substr( cLine, 1, nL ) + hbide_convertALine( substr( cLine, nL + 1, nW ), cMode ) + substr( cLine, nL + 1 + nW ) - ELSE - IF i == nT - cLine := substr( cLine, 1, nL ) + hbide_convertALine( substr( cLine, nL + 1 ), cMode ) - ELSEIF i == nB - cLine := hbide_convertALine( substr( cLine, 1, nR ), cMode ) + substr( cLine, nR + 1 ) - ELSE - cLine := hbide_convertALine( cLine, cMode ) - ENDIF - ENDIF - - CASE nMode == __selectionMode_column__ - cLine := pad( substr( cLine, 1, nL ), nL ) + hbide_convertALine( pad( substr( cLine, nL + 1, nW ), nW ), cMode ) + substr( cLine, nR + 1 ) - - CASE nMode == __selectionMode_line__ - cLine := hbide_convertALine( cLine, cMode ) - - ENDCASE - - hbide_qReplaceLine( qCursor, i, cLine ) - NEXT - - hbide_setQCursor( ::qEdit, a_ ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:getSelectedText() - LOCAL nT, nL, nB, nR, nW, i, cLine, nMode, cClip := "", aCord - - HB_TRACE( HB_TR_DEBUG, "IdeEdit:getSelectedText()", ProcName( 1 ), procName( 2 ) ) - - aCord := ::aSelectionInfo - hbide_normalizeRect( aCord, @nT, @nL, @nB, @nR ) - nMode := aCord[ 5 ] - - nW := nR - nL - FOR i := nT TO nB - cLine := ::getLine( i + 1 ) - - IF nMode == __selectionMode_stream__ - IF i == nT .AND. i == nB - cLine := substr( cLine, nL + 1, nR - nL ) - ELSEIF i == nT - cLine := substr( cLine, nL + 1 ) - ELSEIF i == nB - cLine := substr( cLine, 1, nR + 1 ) - ENDIF - - ELSEIF nMode == __selectionMode_column__ - cLine := pad( substr( cLine, nL + 1, nW ), nW ) - - ELSEIF nMode == __selectionMode_line__ - // Nothing to do, complete line is already pulled - - ENDIF - - cClip += cLine + iif( i < nB, hb_eol(), "" ) - NEXT - - RETURN cClip - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:caseUpper() - RETURN ::blockConvert( "toupper" ) - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:caseLower() - RETURN ::blockConvert( "tolower" ) - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:caseInvert() - RETURN ::blockConvert( "invert" ) - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:convertQuotes() - RETURN ::blockConvert( "dbl2sgl" ) - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:convertDQuotes() - RETURN ::blockConvert( "sgl2dbl" ) - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:currentFunctionIndex() - LOCAL n := -1, nCurLine - - IF !empty( ::aTags ) - nCurLine := ::getLineNo() - IF Len( ::aTags ) == 1 - n := 1 - ELSEIF ( n := ascan( ::aTags, {|e_| e_[ 3 ] >= nCurLine } ) ) == 0 - n := Len( ::aTags ) - ELSEIF n > 0 - n-- - ENDIF - ENDIF - - RETURN n - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:toNextFunction() - LOCAL n - - IF ( n := ::currentFunctionIndex() ) >= 0 - IF n < Len( ::aTags ) - IF ::find( ::aTags[ n+1, 8 ], QTextDocument_FindCaseSensitively ) - ::qEdit:centerCursor() - ::down() - ENDIF - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:toPreviousFunction() - LOCAL n - - IF ( n := ::currentFunctionIndex() ) > 1 - IF ::find( ::aTags[ n-1, 8 ], QTextDocument_FindCaseSensitively ) - ::qEdit:centerCursor() - ::down() - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:markCurrentFunction() - LOCAL n - - IF ::oFuncDock:oWidget:isVisible() - IF ::nPrevLineNo1 != ::getLineNo() - ::nPrevLineNo1 := ::getLineNo() - IF ( n := ::currentFunctionIndex() ) > 0 - ::oIde:oFuncList:setItemColorFG( ::aTags[ n,7 ], { 255,0,0 } ) - ::oIde:oFuncList:setVisible( ::aTags[ n,7 ] ) - ENDIF - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:presentSkeletons() - ::oSK:selectByMenuAndPostText( ::qEdit ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:toggleCurrentLineHighlightMode() - ::qEdit:hbHighlightCurrentLine( ::lCurrentLineHighlightEnabled ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:toggleLineNumbers() - ::qEdit:hbNumberBlockVisible( ::lLineNumbersVisible ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:toggleHorzRuler() - ::qEdit:hbHorzRulerVisible( ::lHorzRulerVisible ) - RETURN Self - -/*----------------------------------------------------------------------*/ -/* Fired by icon */ - -METHOD IdeEdit:toggleSelectionMode() - LOCAL qFocus - - qFocus := QApplication():focusWidget() - ::qEdit:hbSetSelectionMode( iif( ::oDK:setButtonState( "SelectionMode" ), 2, 1 ), .f. ) - qFocus:setFocus( 0 ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:toggleStreamSelectionMode() - ::qEdit:hbSetSelectionMode( 1, .t. ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:toggleColumnSelectionMode() - ::qEdit:hbSetSelectionMode( 2, .t. ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:toggleLineSelectionMode() - ::qEdit:hbSetSelectionMode( 3, .t. ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:clearSelection() - ::qEdit:hbSetSelectionMode( 0, .t. ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:togglePersistentSelection() - ::qEdit:hbTogglePersistentSelection() - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:toggleCodeCompetion() - ::qEdit:hbToggleCodeCompetion() - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:toggleCompetionTips() - ::qEdit:hbToggleCompetionTips() - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:reload() - LOCAL lLoad := .t. - - IF ::oEditor:qDocument:isModified() - lLoad := hbide_getYesNo( "Source is in modified state", "Reload it anyway?", "Reload" ) - ENDIF - IF lLoad - ::oEditor:reload() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:redo() - ::qEdit:redo() - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:undo() - ::qEdit:undo() - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:cut() - IF ::lReadOnly - RETURN Self - ENDIF - ::cutBlockContents( Qt_Key_X ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:copy() - ::copyBlockContents() - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:paste() - - IF ::lReadOnly - RETURN Self - ENDIF - IF ::aSelectionInfo[ 1 ] > -1 - ::cutBlockContents( Qt_Key_Delete ) - ENDIF - ::pasteBlockContents() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:selectAll() - ::qEdit:hbSelectAll() - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:setReadOnly( lReadOnly ) - IF ::oEditor:lReadOnly - lReadOnly := .t. - ELSE - IF ! HB_ISLOGICAL( lReadOnly ) - lReadOnly := ! ::qEdit:isReadOnly() - ENDIF - ENDIF - ::lReadOnly := lReadOnly - ::qEdit:setReadOnly( lReadOnly ) - ::oEditor:setTabImage() - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:relayMarkButtons() - LOCAL oBtn - FOR EACH oBtn IN ::aMarkTBtns - oBtn:hide() - NEXT - FOR EACH oBtn IN ::aBookMarks - ::aMarkTBtns[ oBtn:__enumIndex() ]:show() - NEXT - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:setTooltipMark( nIndex ) - LOCAL oBlock - - IF Len( ::aBookMarks ) >= nIndex - oBlock := ::qEdit:document():findBlockByNumber( ::aBookMarks[ nIndex ] - 1 ) - IF oBlock:isValid() - ::aMarkTBtns[ nIndex ]:setTooltip( hb_ntos( ::aBookMarks[ nIndex ] ) + " : " + oBlock:text() ) - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:gotoMark( nIndex ) - - IF Len( ::aBookMarks ) >= nIndex - ::qEdit:hbGotoBookmark( ::aBookMarks[ nIndex ] ) - ::qEdit:centerCursor() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:setNewMark() - LOCAL qCursor, nBlock, n - - IF !( qCursor := ::qEdit:textCursor() ):isNull() - nBlock := qCursor:blockNumber() + 1 - - IF ( n := ascan( ::aBookMarks, nBlock ) ) > 0 - hb_adel( ::aBookMarks, n, .t. ) - ::aMarkTBtns[ Len( ::aBookMarks ) + 1 ]:hide() - ELSE - IF Len( ::aBookMarks ) == 6 - RETURN Self - ENDIF - aadd( ::aBookMarks, nBlock ) - n := Len( ::aBookMarks ) - ::aMarkTBtns[ n ]:show() - ENDIF - - ::qEdit:hbBookMarks( nBlock ) - ::qEdit:repaint() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:setLineNumbersBkColor( nR, nG, nB ) - ::qEdit:hbSetLineAreaBkColor( QColor( nR, nG, nB ) ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:setCurrentLineColor( nR, nG, nB ) - ::qEdit:hbSetCurrentLineColor( QColor( nR, nG, nB ) ) - RETURN Self - -/*----------------------------------------------------------------------*/ -/* TO BE EXTENDED */ -METHOD IdeEdit:find( cText, nPosFrom ) - LOCAL lFound, nPos - LOCAL qCursor := ::getCursor() - - nPos := qCursor:position() - IF HB_ISNUMERIC( nPosFrom ) - qCursor:setPosition( nPosFrom ) - ENDIF - ::qEdit:setTextCursor( qCursor ) - IF ! ( lFound := ::qEdit:find( cText, QTextDocument_FindCaseSensitively ) ) - IF ! HB_ISNUMERIC( nPosFrom ) - lFound := ::qEdit:find( cText, QTextDocument_FindBackward + QTextDocument_FindCaseSensitively ) - ENDIF - ENDIF - - IF ! lFound - qCursor:setPosition( nPos ) - ::qEdit:setTextCursor( qCursor ) - ELSE - ::qEdit:centerCursor() - ENDIF - - RETURN lFound - -/*----------------------------------------------------------------------*/ -/* nFlags will decide the position, case sensitivity and direction - */ -METHOD IdeEdit:findEx( cText, nFlags, nStart ) - LOCAL qCursor, lFound, nPos - - DEFAULT cText TO ::getSelectedText() - DEFAULT nFlags TO 0 - DEFAULT nStart TO 0 - - qCursor := ::getCursor() - nPos := qCursor:position() - - IF nStart == 0 - // No need to move cursor - ELSEIF nStart == 1 - ::qEdit:moveCursor( QTextCursor_Start ) - ELSEIF nStart == 2 - ::qEdit:moveCursor( QTextCursor_End ) - ENDIF - - IF ( lFound := ::qEdit:find( cText, nFlags ) ) - ::qEdit:centerCursor() - qCursor := ::qEdit:textCursor() - - ::qEdit:hbSetSelectionInfo( { qCursor:blockNumber(), qCursor:columnNumber() - Len( cText ), ; - qCursor:blockNumber(), qCursor:columnNumber(), 1, .t., .f. } ) - qCursor:clearSelection() - ELSE - qCursor:setPosition( nPos ) - ::qEdit:setTextCursor( qCursor ) - ENDIF - - RETURN lFound - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_matchForward( qCursor, cStartingW, cEndingW, qPairFormat ) - LOCAL cFWord, cSWord, nCol, cOpnWord - LOCAL nInner := 0 - - DO WHILE qCursor:movePosition( QTextCursor_Down ) - nCol := hbide_getFrontSpacesAndWord( qCursor:block():text(), @cFWord, @cSWord ) - cFWord := Lower( cFWord ) - cSWord := Lower( AllTrim( cSWord ) ) - IF " " $ cStartingW - cOpnWord := cFWord + " " + cSWord - ELSE - cOpnWord := cFWord - ENDIF - IF cFWord == cEndingW .AND. nInner == 0 - qCursor:movePosition( QTextCursor_StartOfBlock ) - qCursor:movePosition( QTextCursor_Right, QTextCursor_MoveAnchor, nCol ) - qCursor:movePosition( QTextCursor_Right, QTextCursor_KeepAnchor, Len( cEndingW ) ) - qCursor:mergeCharFormat( qPairFormat ) - EXIT - ELSEIF cFWord == cEndingW .AND. nInner > 0 - nInner-- - ELSEIF cOpnWord == cStartingW - nInner++ - ENDIF - ENDDO - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_matchBackward( qCursor, cStartingW, cEndingW, qPairFormat ) - LOCAL cFWord, cSWord, nCol, cOpnWord, n - LOCAL nInner := 0 - LOCAL aStartingW := hb_ATokens( cStartingW, "|" ) - - DO WHILE qCursor:movePosition( QTextCursor_Up ) - nCol := hbide_getFrontSpacesAndWord( qCursor:block():text(), @cFWord, @cSWord ) - cFWord := Lower( cFWord ) - cSWord := Lower( AllTrim( cSWord ) ) - IF " " $ cStartingW - cOpnWord := cFWord + " " + cSWord - ELSE - cOpnWord := cFWord - ENDIF - - n := AScan( aStartingW, {|e| e == cOpnWord .OR. e == cSWord } ) - IF n > 0 .AND. nInner == 0 - qCursor:movePosition( QTextCursor_StartOfBlock ) - qCursor:movePosition( QTextCursor_Right, QTextCursor_MoveAnchor, nCol ) - qCursor:movePosition( QTextCursor_Right, QTextCursor_KeepAnchor, Len( aStartingW[ n ] ) ) - qCursor:mergeCharFormat( qPairFormat ) - EXIT - ELSEIF n > 0 .AND. nInner > 0 - nInner-- - ELSEIF cFWord == cEndingW - nInner++ - ENDIF - ENDDO - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:unmatchPair() - LOCAL lModified - - IF ::isMatchingPair - ::isMatchingPair := .F. - lModified := ::qEdit:document():isModified() - ::qEdit:undo() - IF ! lModified - ::qEdit:document():setModified( .F. ) - ENDIF - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:matchPair( x, y ) - LOCAL qCursor, cWord, qFormat, lModified, nPostn - - ::unmatchPair() - - qCursor := ::qEdit:cursorForPosition( ::qEdit:viewport():mapFromGlobal( QPoint( x,y ) ) ) - IF ! qCursor:isNull() - qCursor:select( QTextCursor_WordUnderCursor ) - cWord := Lower( qCursor:selectedText() ) - - IF AScan( { "if","endif","for","next","switch","endswitch","do","enddo","endcase","return","function","procedure","method","class","endclass" }, {|e| e == cWord } ) > 0 - ::isMatchingPair := .T. - - qFormat := QTextCharFormat() - qFormat:setBackground( QBrush( QColor( Qt_yellow ) ) ) - - lModified := ::qEdit:document():isModified() - - qCursor:beginEditBlock() - nPostn := qCursor:position() - - SWITCH cWord - CASE "if" /* Forward search */ - qCursor:mergeCharFormat( qFormat ) - hbide_matchForward( qCursor, "if", "endif", qFormat ) - EXIT - CASE "endif" - qCursor:mergeCharFormat( qFormat ) - hbide_matchBackward( qCursor, "if", "endif", qFormat ) - EXIT - CASE "for" - qCursor:mergeCharFormat( qFormat ) - hbide_matchForward( qCursor, "for", "next", qFormat ) - EXIT - CASE "next" - qCursor:mergeCharFormat( qFormat ) - hbide_matchBackward( qCursor, "for", "next", qFormat ) - EXIT - CASE "switch" - qCursor:mergeCharFormat( qFormat ) - hbide_matchForward( qCursor, "switch", "endswitch", qFormat ) - EXIT - CASE "endswitch" - qCursor:mergeCharFormat( qFormat ) - hbide_matchBackward( qCursor, "switch", "endswitch", qFormat ) - EXIT - CASE "do" - qCursor:mergeCharFormat( qFormat ) - qCursor:movePosition( QTextCursor_NextWord, QTextCursor_MoveAnchor ) - qCursor:select( QTextCursor_WordUnderCursor ) - cWord := Lower( qCursor:selectedText() ) - qCursor:clearSelection() - IF cWord == "case" - hbide_matchForward( qCursor, "do case", "endcase", qFormat ) - ELSEIF cWord == "while" - hbide_matchForward( qCursor, "do while", "enddo", qFormat ) - ENDIF - EXIT - CASE "endcase" - qCursor:mergeCharFormat( qFormat ) - hbide_matchBackward( qCursor, "do case", "endcase", qFormat ) - EXIT - CASE "enddo" - qCursor:mergeCharFormat( qFormat ) - hbide_matchBackward( qCursor, "do while", "enddo", qFormat ) - EXIT - CASE "return" - qCursor:mergeCharFormat( qFormat ) - hbide_matchBackward( qCursor, "function|procedure|method", "return", qFormat ) - EXIT - CASE "endclass" - qCursor:mergeCharFormat( qFormat ) - hbide_matchBackward( qCursor, "class", "endclass", qFormat ) - EXIT - CASE "function" - qCursor:mergeCharFormat( qFormat ) - hbide_matchForward( qCursor, "function", "return", qFormat ) - EXIT - CASE "procedure" - qCursor:mergeCharFormat( qFormat ) - hbide_matchForward( qCursor, "procedure", "return", qFormat ) - EXIT - CASE "method" - qCursor:mergeCharFormat( qFormat ) - hbide_matchForward( qCursor, "method", "return", qFormat ) - EXIT - CASE "class" - qCursor:mergeCharFormat( qFormat ) - hbide_matchForward( qCursor, "class", "endclass", qFormat ) - EXIT - ENDSWITCH - - qCursor:setPosition( nPostn ) - ::qEdit:setTextCursor( qCursor ) - qCursor:endEditBlock() - IF ! lModified - ::qEdit:document():setModified( .f. ) - ENDIF - ENDIF - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:unHighlight() - LOCAL qCursor, nPos, lModified - - IF ::isHighLighted - ::isHighLighted := .f. - qCursor := ::getCursor() - nPos := qCursor:position() - lModified := ::qEdit:document():isModified() - ::qEdit:undo() - IF ! lModified - ::qEdit:document():setModified( .f. ) - ::oEditor:setTabImage( ::qEdit ) - ENDIF - qCursor:setPosition( nPos ) - ::qEdit:setTextCursor( qCursor ) - RETURN .t. - ENDIF - - RETURN .f. - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:highlightAll( cText ) - LOCAL qDoc, qFormat, qCursor, qFormatHL, qCur, lModified - - IF ::unHighLight() - RETURN Self - ENDIF - - ::isHighLighted := .t. - - qDoc := ::oEditor:qDocument - lModified := ::qEdit:document():isModified() - - qCur := ::getCursor() - qCur:beginEditBlock() - - qCursor := QTextCursor( qDoc ) - qFormat := qCursor:charFormat() - qFormatHL := qFormat - qFormatHL:setBackground( QBrush( QColor( Qt_yellow ) ) ) - - DO WHILE .t. - qCursor := qDoc:find( cText, qCursor, 0 ) - IF qCursor:isNull() - EXIT - ENDIF - qCursor:mergeCharFormat( qFormatHL ) - ENDDO - qCur:endEditBlock() - - IF ! lModified - ::qEdit:document():setModified( .f. ) - ::oEditor:setTabImage( ::qEdit ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:refresh() - ::qEdit:hbRefresh() - RETURN Self - -/*----------------------------------------------------------------------*/ -// TBrowse Like Navigation -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:home() - ::qEdit:hbApplyKey( Qt_Key_Home ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:end() - ::qEdit:hbApplyKey( Qt_Key_End ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:down() - ::qEdit:hbApplyKey( Qt_Key_Down ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:up() - ::qEdit:hbApplyKey( Qt_Key_Up ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:goBottom() - ::qEdit:hbApplyKey( Qt_Key_End, Qt_ControlModifier ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:goTop() - ::qEdit:hbApplyKey( Qt_Key_Home, Qt_ControlModifier ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:left() - ::qEdit:hbApplyKey( Qt_Key_Left ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:right() - ::qEdit:hbApplyKey( Qt_Key_Right ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:panEnd() - LOCAL qCursor := ::getCursor() - LOCAL cLine := ::getLine() - ::qEdit:hbGetViewportInfo() - IF Len( cLine ) - ::aViewportInfo[ 2 ] > ::aViewportInfo[ 4 ] - qCursor:movePosition( QTextCursor_Right, QTextCursor_MoveAnchor, Len( cLine ) - ::aViewportInfo[ 2 ] ) - ELSE - qCursor:movePosition( QTextCursor_EndOfLine ) - ENDIF - ::qEdit:setTextCursor( qCursor ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:panHome() - LOCAL qCursor := ::getCursor() - ::qEdit:hbGetViewportInfo() - IF ::aViewportInfo[ 2 ] == 0 - qCursor:movePosition( QTextCursor_StartOfLine ) - ELSE - qCursor:movePosition( QTextCursor_Left, QTextCursor_MoveAnchor, qCursor:columnNumber() - ::aViewportInfo[ 2 ] ) - ENDIF - ::qEdit:setTextCursor( qCursor ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:pageUp() - ::qEdit:hbApplyKey( Qt_Key_PageUp ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:pageDown() - ::qEdit:hbApplyKey( Qt_Key_PageDown ) - RETURN Self - -/*----------------------------------------------------------------------*/ -// -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:printPreview() - LOCAL qDlg := QPrintPreviewDialog( ::oDlg:oWidget ) - - qDlg:setWindowTitle( "hbIDE Preview Dialog" ) - qDlg:connect( "paintRequested(QPrinter*)", {|p| ::paintRequested( p ) } ) - * qDlg:setWindowState( Qt_WindowMaximized ) - qDlg:exec() - qDlg:disconnect( "paintRequested(QPrinter*)" ) - - RETURN self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:paintRequested( qPrinter ) - ::qEdit:print( qPrinter ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:upperCaseKeywords() - LOCAL qDoc, cText, cRegEx, aMatches, aMatch, b_ - - qDoc := ::qEdit:document() - - IF !( qDoc:isEmpty() ) - qDoc:setUndoRedoEnabled( .f. ) - - cText := qDoc:toPlainText() - - b_:= { 'function','procedure','thread','return','static','local','default', ; - 'if','else','elseif','endif','end', ; - 'docase','case','endcase','otherwise', ; - 'switch','endswitch', ; - 'do','while','exit','enddo','loop',; - 'for','each','next','step','to','in',; - 'with','replace','object','endwith','request',; - 'nil','and','or','in','not','self',; - 'class','endclass','method','data','var','destructor','inline','assign','access',; - 'inherit','init','create','virtual','message', 'from', 'setget',; - 'begin','sequence','try','catch','always','recover','hb_symbol_unused', ; - 'error','handler','private','public' } - cRegEx := "" - aeval( b_, {|e| cRegEx += iif( empty( cRegEx ), "", "|" ) + "\b" + e + "\b" } ) - - aMatches := hb_regExAll( cRegEx, cText, .f., .f., 0, 1, .f. ) - - IF ! empty( aMatches ) - FOR EACH aMatch IN aMatches - cText := stuff( cText, aMatch[ 2 ], aMatch[ 3 ] - aMatch[ 2 ] + 1, upper( aMatch[ 1 ] ) ) - NEXT - ENDIF - - qDoc:clear() - qDoc:setPlainText( cText ) - - qDoc:setUndoRedoEnabled( .t. ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:formatBraces() - LOCAL qDoc, cText - - qDoc := ::qEdit:document() - - IF !( qDoc:isEmpty() ) - qDoc:setUndoRedoEnabled( .f. ) - - cText := qDoc:toPlainText() - - cText := strtran( cText, "( ", "(" ) - cText := strtran( cText, "( ", "(" ) - cText := strtran( cText, "( ", "(" ) - cText := strtran( cText, "( ", "(" ) - cText := strtran( cText, "( ", "(" ) - cText := strtran( cText, "( ", "(" ) - cText := strtran( cText, " (", "(" ) - cText := strtran( cText, " (", "(" ) - cText := strtran( cText, " (", "(" ) - cText := strtran( cText, " (", "(" ) - cText := strtran( cText, " (", "(" ) - - cText := strtran( cText, " )", ")" ) - cText := strtran( cText, " )", ")" ) - cText := strtran( cText, " )", ")" ) - cText := strtran( cText, " )", ")" ) - cText := strtran( cText, " )", ")" ) - cText := strtran( cText, " )", ")" ) - - cText := strtran( cText, "(", "( " ) - cText := strtran( cText, ")", " )" ) - - cText := strtran( cText, "( )", "()" ) - cText := strtran( cText, "( )", "()" ) - cText := strtran( cText, "( )", "()" ) - cText := strtran( cText, "( )", "()" ) - cText := strtran( cText, "( )", "()" ) - - qDoc:clear() - qDoc:setPlainText( cText ) - - qDoc:setUndoRedoEnabled( .t. ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:removeTrailingSpaces() - LOCAL qDoc, cText, a_, s - - qDoc := ::qEdit:document() - IF !( qDoc:isEmpty() ) - qDoc:setUndoRedoEnabled( .f. ) - cText := qDoc:toPlainText() - a_:= hbide_memoToArray( cText ) - FOR EACH s IN a_ - s := trim( s ) - NEXT - cText := hbide_arrayToMemo( a_ ) - qDoc:clear() - qDoc:setPlainText( cText ) - qDoc:setUndoRedoEnabled( .t. ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:tabs2spaces() - LOCAL qDoc, cText, cSpaces - - qDoc := ::qEdit:document() - IF !( qDoc:isEmpty() ) - cSpaces := space( ::nTabSpaces ) - - qDoc:setUndoRedoEnabled( .f. ) - - cText := qDoc:toPlainText() - qDoc:clear() - qDoc:setPlainText( strtran( cText, chr( 9 ), cSpaces ) ) - - qDoc:setUndoRedoEnabled( .t. ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:spaces2tabs() - LOCAL qDoc, cText, cSpaces - - qDoc := ::qEdit:document() - IF !( qDoc:isEmpty() ) - cSpaces := space( ::nTabSpaces ) - - qDoc:setUndoRedoEnabled( .f. ) - - cText := qDoc:toPlainText() - qDoc:clear() - qDoc:setPlainText( strtran( cText, cSpaces, chr( 9 ) ) ) - - qDoc:setUndoRedoEnabled( .t. ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:duplicateLine() - ::qEdit:hbDuplicateLine() - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:deleteLine() - ::qEdit:hbDeleteLine() - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:moveLine( nDirection ) - ::qEdit:hbMoveLine( nDirection ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:getText() - RETURN ::qEdit:textCursor():selectedText() - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:getWord( lSelect ) - LOCAL cText, qCursor := ::qEdit:textCursor() - - DEFAULT lSelect TO .F. - - qCursor:select( QTextCursor_WordUnderCursor ) - cText := qCursor:selectedText() - - IF lSelect - ::qEdit:setTextCursor( qCursor ) - ENDIF - RETURN cText - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:goto( nLine ) - LOCAL nRows, qGo - LOCAL qCursor := ::qEdit:textCursor() - - IF empty( nLine ) - nRows := ::qEdit:blockCount() - nLine := qCursor:blockNumber() - - qGo := QInputDialog( ::oDlg:oWidget ) - qGo:setInputMode( 1 ) - qGo:setIntMinimum( 1 ) - qGo:setIntMaximum( nRows ) - qGo:setIntValue( nLine + 1 ) - qGo:setLabelText( "Goto Line Number [1-" + hb_ntos( nRows ) + "]" ) - qGo:setWindowTitle( "Harbour" ) - - ::oIde:setPosByIniEx( qGo, ::oINI:cGotoDialogGeometry ) - qGo:exec() - ::oIde:oINI:cGotoDialogGeometry := hbide_posAndSize( qGo ) - nLine := qGo:intValue() - ::qEdit:setFocus() - ENDIF - - qCursor:movePosition( QTextCursor_Start ) - qCursor:movePosition( QTextCursor_Down, QTextCursor_MoveAnchor, nLine - 1 ) - ::qEdit:setTextCursor( qCursor ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:getLine( nLine, lSelect ) - LOCAL cText, qCursor := ::qEdit:textCursor() - - DEFAULT nLine TO qCursor:blockNumber() + 1 - DEFAULT lSelect TO .F. - - IF nLine != qCursor:blockNumber() + 1 - qCursor:movePosition( QTextCursor_Start ) - qCursor:movePosition( QTextCursor_Down, QTextCursor_MoveAnchor, nLine - 1 ) - ENDIF - - qCursor:select( QTextCursor_LineUnderCursor ) - cText := qCursor:selectedText() - IF lSelect - ::qEdit:setTextCursor( qCursor ) - ENDIF - - RETURN cText - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:getColumnNo() - RETURN ::qEdit:textCursor():columnNumber() + 1 - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:getLineNo() - RETURN ::qEdit:textCursor():blockNumber() + 1 - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:insertSeparator( cSep ) - LOCAL qCursor := ::qEdit:textCursor() - - IF empty( cSep ) - cSep := ::cSeparator - ENDIF - qCursor:beginEditBlock() - qCursor:movePosition( QTextCursor_StartOfBlock ) - qCursor:insertBlock() - qCursor:movePosition( QTextCursor_PreviousBlock ) - qCursor:insertText( cSep ) - qCursor:movePosition( QTextCursor_NextBlock ) - qCursor:movePosition( QTextCursor_StartOfBlock ) - qCursor:endEditBlock() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:insertText( cText ) - LOCAL qCursor, nL, nB - - IF HB_ISSTRING( cText ) .AND. !Empty( cText ) - qCursor := ::qEdit:textCursor() - - nL := Len( cText ) - nB := qCursor:position() + nL - - qCursor:beginEditBlock() - qCursor:removeSelectedText() - qCursor:insertText( cText ) - qCursor:setPosition( nB ) - qCursor:endEditBlock() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ -/* called via qDocument:contentsChange(*/ - -METHOD IdeEdit:reformatLine( nPos, nDeleted, nAdded ) - LOCAL cProto, nRows, nCols, nCol, cWord - LOCAL cPWord, cPPWord, nPostn, nLine, nLPrev, nLPrevPrev, nCPrev, nCPrevPrev, nOff, cCased - LOCAL cCWord := "" - LOCAL cRest := "" - LOCAL qCursor := ::qEdit:textCursor() - - IF ::oEditor:lIsPRG - qCursor:joinPreviousEditBlock() - // qCursor:beginEditBlock() /* Why this misbehaves - stops TO undo previous stacks */ - - nPostn := qCursor:position() - nLine := qCursor:blockNumber() - - IF nPos == -1 - cCWord := " " - ELSE - IF ( nCol := nPostn - qCursor:block():position() ) > 0 - cCWord := SubStr( qCursor:block():text(), nCol, 1 ) - ENDIF - ENDIF - - IF qCursor:movePosition( QTextCursor_EndOfLine, QTextCursor_KeepAnchor ) .AND. qCursor:position() > nPostn - cRest := qCursor:selectedText() - ENDIF - qCursor:clearSelection() - qCursor:setPosition( nPostn ) - - qCursor:movePosition( QTextCursor_PreviousWord, QTextCursor_MoveAnchor, 1 ) - nLPrev := qCursor:blockNumber() - IF nLPrev == nLine - nCPrev := qCursor:position() - qCursor:block():position() - qCursor:select( QTextCursor_WordUnderCursor ) - cPWord := qCursor:selectedText() - qCursor:clearSelection() - qCursor:setPosition( nPostn ) - - qCursor:movePosition( QTextCursor_PreviousWord, QTextCursor_MoveAnchor, 2 ) - nLPrevPrev := qCursor:blockNumber() - IF nLPrevPrev == nLine - nCPrevPrev := qCursor:position() - qCursor:block():position() - qCursor:select( QTextCursor_WordUnderCursor ) - cPPWord := qCursor:selectedText() - ELSE - nCPrevPrev := -1 - cPPWord := "" - ENDIF - qCursor:clearSelection() - qCursor:setPosition( nPostn ) - - /* Group I operations */ - IF cPWord == "." .AND. cPPWord $ ::hLogicals /* ALWAYS */ - IF ! ::oINI:lSupressHbKWordsToUpper - qCursor:movePosition( QTextCursor_PreviousWord, QTextCursor_MoveAnchor, 2 ) - qCursor:select( QTextCursor_WordUnderCursor ) - qCursor:removeSelectedText() - qCursor:insertText( upper( cPPWord ) ) - qCursor:setPosition( nPostn ) - ENDIF - - ELSEIF cPWord == ":=" .AND. cCWord == "=" .AND. nAdded == 1 - IF ::oINI:lISOperator - qCursor:insertText( " " ) - ENDIF - IF ::oINI:lISAlignAssign - // look for previous lines and IF 2nd keyword is assignment operator then align both TO same offset - hbide_alignAssignments( qCursor ) - ENDIF - - ELSEIF ::oINI:lISCodeBlock .AND. Right( cPWord, 2 ) == "{|" .AND. cCWord == "|" .AND. nAdded == 1 .AND. Empty( cRest ) - qCursor:insertText( "| }" ) - qCursor:setPosition( nPostn ) - - ELSEIF cCWord == "(" .AND. ( hbide_isHarbourFunction( cPPWord, @cCased ) .OR. hbide_isQtFunction( cPPWord, @cCased ) .OR. hbide_isUserFunction( cPPWord, @cCased ) ) - hbide_replaceWord( qCursor, 2, cCased, nPostn ) - IF ::oINI:lISClosingP - IF cCWord == "(" .AND. nAdded == 1 - qCursor:insertText( ")" ) - IF ::oINI:lISSpaceP - qCursor:setPosition( nPostn ) - qCursor:insertText( " " ) - nPostn++ - ENDIF - ENDIF - ENDIF - qCursor:setPosition( nPostn ) - - ELSEIF cCWord == " " .AND. hbide_isUserFunction( cPPWord, @cCased ) /* User dictionaries : only keywords */ - hbide_replaceWord( qCursor, 2, cCased, nPostn ) - - ELSEIF cCWord == " " .AND. cPPWord != "#" .AND. hbide_isHarbourKeyword( cPWord ) - IF ! ::oINI:lSupressHbKWordsToUpper - qCursor:movePosition( QTextCursor_PreviousWord, QTextCursor_MoveAnchor, 1 ) - qCursor:select( QTextCursor_WordUnderCursor ) - qCursor:removeSelectedText() - qCursor:insertText( upper( cPWord ) ) - qCursor:setPosition( nPostn ) - ENDIF - - ENDIF - - IF cCWord == " " .AND. ! Empty( cPWord ) .AND. ! ( Left( cPWord, 1 ) $ "`~!@#$%^&*()+1234567890-=+[]{}|\':;?/>.<," ) - IF Len( cPWord ) > 3 - IF ! cPWord $ ::oEM:hEditingWords - ::oEM:hEditingWords[ cPWord ] := cPWord - ::oEM:updateCompleter() - ENDIF - ENDIF - - ELSEIF cCWord $ ",:" .AND. ! Empty( cPPWord ) .AND. ! ( Left( cPPWord, 1 ) $ "`~!@#$%^&*()+1234567890-=+[]{}|\':;?/>.<," ) - IF Len( cPPWord ) > 3 - IF ! cPPWord $ ::oEM:hEditingWords - ::oEM:hEditingWords[ cPPWord ] := cPPWord - ::oEM:updateCompleter() - ENDIF - ENDIF - - ENDIF - - /* Group II operations */ - IF empty( cPPWord ) .AND. cCWord == " " - IF hbide_isStartingKeyword( cPWord, ::oIde ) /* FUNCTION PROCEDURE CLASS */ - qCursor:movePosition( QTextCursor_StartOfBlock ) - qCursor:movePosition( QTextCursor_NextCharacter, QTextCursor_KeepAnchor, nCPrev ) - qCursor:removeSelectedText() - qCursor:movePosition( QTextCursor_NextCharacter, QTextCursor_MoveAnchor, Len( cPWord ) + 1 ) - - ELSEIF hbide_isMinimumIndentableKeyword( cPWord, ::oIde ) .AND. ::oINI:lAutoIndent /* LOCAL STATIC DEFAULT PRIVATE PUBLIC ENDCLASS RETURN */ - qCursor:movePosition( QTextCursor_StartOfBlock ) - qCursor:movePosition( QTextCursor_NextCharacter, QTextCursor_KeepAnchor, nCPrev ) - qCursor:removeSelectedText() - qCursor:insertText( space( ::nTabSpaces ) ) - qCursor:movePosition( QTextCursor_NextCharacter, QTextCursor_MoveAnchor, Len( cPWord ) + 1 ) - - ELSEIF hbide_isIndentableKeyword( cPWord, ::oIde ) .AND. ::oINI:lAutoIndent /* IF SWITCH FOR DO */ - IF nCPrev < ::nTabSpaces - nOff := ::nTabSpaces - nCPrev - qCursor:movePosition( QTextCursor_StartOfBlock ) - qCursor:insertText( space( nOff ) ) - qCursor:setPosition( nPostn + nOff ) - - ELSEIF ( nOff := nCPrev % ::nTabSpaces ) > 0 /* We always go back to the previous indent */ - qCursor:movePosition( QTextCursor_StartOfBlock ) - qCursor:movePosition( QTextCursor_NextCharacter, QTextCursor_KeepAnchor, nOff ) - qCursor:removeSelectedText() - qCursor:setPosition( nPostn - nOff ) - - ENDIF - ENDIF - ENDIF - - /* Group III operations */ - IF cCWord == " " .AND. nAdded == 1 .AND. Empty( cRest ) /* Only first time having only word on a line */ - cWord := Lower( cPWord ) - - IF ::oINI:lISClosing - IF ::oINI:lISIf .AND. cWord == "if" .AND. Empty( cPPWord ) /* Protected for #if */ - hbide_appendIf( qCursor, hbide_getFrontSpacesAndWord( qCursor:block():text() ), qCursor:position(), ::nTabSpaces, ::oINI:lISElse, ::oINI:lISEmbrace ) - - ELSEIF ::oINI:lISFor .AND. cWord == "for" - hbide_appendFor( qCursor, hbide_getFrontSpacesAndWord( qCursor:block():text() ), qCursor:position() ) - - ELSEIF ::oINI:lISSwitch .AND. cWord == "switch" - hbide_appendSwitch( qCursor, hbide_getFrontSpacesAndWord( qCursor:block():text() ), qCursor:position(), ::nTabSpaces, ::oINI:nISSwitchCases, ::oINI:lISSwitchOWise, ::oINI:lISExitSameLine ) - - ELSEIF ::oINI:lISDoCase .AND. Lower( cPPWord ) == "do" .AND. cWord == "case" - hbide_appendCase( qCursor, hbide_getFrontSpacesAndWord( qCursor:block():text() ), qCursor:position(), ::oINI:nISCaseCases, ::oINI:lISCaseOWise ) - - ELSEIF ::oINI:lISDoWhile .AND. Lower( cPPWord ) == "do" .AND. cWord == "while" - hbide_appendWhile( qCursor, hbide_getFrontSpacesAndWord( qCursor:block():text() ), qCursor:position() ) - - ENDIF - ENDIF - - IF cWord == "elseif" .OR. cWord == "else" .OR. cWord == "endif" - hbide_alignToPrevWord( qCursor, "if", "endif", Len( cWord ), nPostn ) - - ELSEIF cWord == "next" - hbide_alignToPrevWord( qCursor, "for", "next", Len( cWord ), nPostn ) - - ELSEIF Lower( cPPWord ) == "static" .AND. ( cPWord == "function" .OR. cPWord == "procedure" ) - hbide_removeStartingSpaces( qCursor, nCPrevPrev ) - IF ::oINI:lISFunction - hbide_appendFunction( qCursor, ::nTabSpaces, ::oINI:lISLocal, ::oINI:lISReturn, ::oINI:lISSeparator, ::oINI:lReturnAsBeginKeyword, ::cSeparator ) - ENDIF - - ELSEIF Empty( cPPWord ) .AND. ( cPWord == "function" .OR. cPWord == "procedure" ) - IF ::oINI:lISFunction - hbide_appendFunction( qCursor, ::nTabSpaces, ::oINI:lISLocal, ::oINI:lISReturn, ::oINI:lISSeparator, ::oINI:lReturnAsBeginKeyword, ::cSeparator ) - ENDIF - - ELSEIF Lower( cPPWord ) == "create" .AND. cPWord == "class" - hbide_removeStartingSpaces( qCursor, nCPrevPrev ) - - ELSEIF cPPWord == "CLASS" .AND. ! Empty( cPWord ) - IF ::oINI:lISClass - hbide_appendClass( qCursor, ::nTabSpaces, ::oINI, cPWord ) - ENDIF - - ENDIF - ENDIF - - ::qEdit:setTextCursor( qCursor ) - ENDIF - - qCursor:endEditBlock() - ENDIF - - IF nPos != -1 - ::handleCurrentIndent() - ENDIF - - IF ::nProtoLine != -1 - IF ::getLineNo() == ::nProtoLine .AND. ::getColumnNo() >= ::nProtoCol + 1 - IF !empty( cProto := hbide_formatProto_1( ::cProtoOrg, ::getLine(), ::nProtoCol, ::getColumnNo(), @nRows, @nCols ) ) - ::cProto := cProto - ::nProtoRows := nRows - ::nProtoCols := nCols - ::showProtoType() - ENDIF - ENDIF - ENDIF - - HB_SYMBOL_UNUSED( nDeleted ) - RETURN cRest - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_getFrontSpacesAndWordsByCursor( qCursor, /*@*/aWords ) - LOCAL cLine, cWord - LOCAL nPos := qCursor:position() - LOCAL nBlock := qCursor:blockNumber() - LOCAL nStart := 0 - - aWords := {} - IF Empty( cLine := qCursor:block():text() ) - RETURN 0 - - ELSE - DO WHILE SubStr( cLine, ++nStart, 1 ) == " " ; ENDDO - nStart-- - - qCursor:movePosition( QTextCursor_StartOfBlock ) - qCursor:movePosition( QTextCursor_StartOfWord ) - DO WHILE .T. - IF ! qCursor:movePosition( QTextCursor_EndOfWord, QTextCursor_KeepAnchor ) - qCursor:movePosition( QTextCursor_NextWord ) - ENDIF - IF qCursor:blockNumber() != nBlock - EXIT - ENDIF - IF ! Empty( cWord := qCursor:selectedText() ) - AAdd( aWords, cWord ) - ENDIF - qCursor:clearSelection() - ENDDO - - ENDIF - qCursor:clearSelection() - qCursor:setPosition( nPos ) - - RETURN nStart - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_removeStartingSpaces( qCursor, nCPrevPrev ) - LOCAL nPostn - - IF nCPrevPrev > 0 - nPostn := qCursor:position() - qCursor:movePosition( QTextCursor_StartOfBlock ) - qCursor:movePosition( QTextCursor_NextWord, QTextCursor_KeepAnchor ) - qCursor:removeSelectedText() - qCursor:setPosition( nPostn - nCPrevPrev ) - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_alignToPrevWord( qCursor, cWord, cEWord, nLenCWord, nPostn ) - LOCAL cFWord, nCol, nInner := 0 - LOCAL lFound := .F. - - DO WHILE .T. - IF qCursor:movePosition( QTextCursor_Up, QTextCursor_MoveAnchor ) - nCol := hbide_getFrontSpacesAndWord( qCursor:block():text(), @cFWord ) - IF Lower( cFWord ) == cWord .AND. nInner == 0 - lFound := .T. - EXIT - ELSEIF Lower( cFWord ) == cWord .AND. nInner > 0 - nInner-- - ELSEIF Lower( cFWord ) == cEWord - nInner++ - ENDIF - ELSE - EXIT - ENDIF - ENDDO - qCursor:setPosition( nPostn ) - IF lFound - qCursor:movePosition( QTextCursor_StartOfBlock, QTextCursor_MoveAnchor ) - qCursor:movePosition( QTextCursor_NextWord, QTextCursor_KeepAnchor ) - qCursor:removeSelectedText() - qCursor:insertText( Space( nCol ) ) - qCursor:movePosition( QTextCursor_Right, QTextCursor_MoveAnchor, nLenCWord + 1 ) - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_replaceWord( qCursor, nWord, cWord, nPostn ) - - qCursor:movePosition( QTextCursor_PreviousWord, QTextCursor_MoveAnchor, nWord ) - qCursor:select( QTextCursor_WordUnderCursor ) - qCursor:removeSelectedText() - qCursor:insertText( cWord ) - qCursor:setPosition( nPostn ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_appendClass( qCursor, nTabSpaces, oINI, cClassName ) - LOCAL cMethod - LOCAL aMethods := hb_ATokens( oINI:cISMethods, ";" ) - LOCAL nPostn := qCursor:position() - LOCAL nClosingIndent := iif( oINI:lReturnAsBeginKeyword, 0, nTabSpaces ) - - qCursor:movePosition( QTextCursor_EndOfBlock ) - qCursor:insertBlock() - qCursor:insertText( Space( nTabSpaces ) + PadR( oINI:cISData, 7 ) + "xDummy" + Space( 34 ) + "INIT NIL" ) - qCursor:insertBlock() - FOR EACH cMethod IN aMethods - qCursor:insertBlock() - qCursor:insertText( Space( nTabSpaces ) + "METHOD " + cMethod + "()" ) - NEXT - qCursor:insertBlock() - qCursor:insertBlock() - qCursor:insertText( Space( nClosingIndent ) + "ENDCLASS " ) - qCursor:insertBlock() - FOR EACH cMethod IN aMethods - qCursor:insertBlock() - IF oINI:cISFormat == "class:method" - qCursor:insertText( "METHOD " + cClassName + ":" + cMethod + "()" ) - ELSE - qCursor:insertText( "METHOD " + cMethod + "() CLASS " + cClassName ) - ENDIF - qCursor:insertBlock() - qCursor:insertBlock() - qCursor:insertText( Space( nClosingIndent ) + "RETURN Self " ) - qCursor:insertBlock() - NEXT - qCursor:insertBlock() - qCursor:setPosition( nPostn ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_appendFunction( qCursor, nTabSpaces, lLocal, lReturn, lSeparator, lReturnAsBeginKeyword, cSeparator ) - LOCAL nPostn := qCursor:position() - - qCursor:movePosition( QTextCursor_EndOfBlock ) - IF lLocal - qCursor:insertBlock() - qCursor:insertText( Space( nTabSpaces ) + "LOCAL " ) - qCursor:insertBlock() - ENDIF - IF lReturn - qCursor:insertBlock() - qCursor:insertText( Space( iif( lReturnAsBeginKeyword, 0, nTabSpaces ) ) + "RETURN " ) - qCursor:insertBlock() - IF lSeparator - qCursor:insertBlock() - qCursor:insertText( cSeparator ) - qCursor:insertBlock() - ENDIF - ENDIF - qCursor:insertBlock() - qCursor:setPosition( nPostn ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_appendCase( qCursor, nIndent, nCurPos, nCases, lOWise ) - LOCAL i - - qCursor:movePosition( QTextCursor_EndOfBlock ) - FOR i := 1 TO nCases - qCursor:insertBlock() - qCursor:insertText( Space( nIndent ) + "CASE " ) - NEXT - IF lOWise - qCursor:insertBlock() - qCursor:insertText( Space( nIndent ) + "OTHERWISE" ) - ENDIF - qCursor:insertBlock() - qCursor:insertText( Space( nIndent ) + "ENDCASE" ) - qCursor:setPosition( nCurPos ) - qCursor:movePosition( QTextCursor_NextBlock ) - qCursor:movePosition( QTextCursor_EndOfLine ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_appendSwitch( qCursor, nIndent, nCurPos, nTabSpaces, nCases, lOWise, lExitSameLine ) - LOCAL i - - qCursor:movePosition( QTextCursor_EndOfBlock ) - FOR i := 1 TO nCases - qCursor:insertBlock() - IF lExitSameLine - qCursor:insertText( Space( nIndent ) + "CASE ; EXIT" ) - ELSE - qCursor:insertText( Space( nIndent ) + "CASE " ) - qCursor:insertBlock() - qCursor:insertText( Space( nIndent + nTabSpaces ) + "EXIT" ) - ENDIF - NEXT - IF lOWise - qCursor:insertBlock() - qCursor:insertText( Space( nIndent ) + "OTHERWISE" ) - ENDIF - qCursor:insertBlock() - qCursor:insertText( Space( nIndent ) + "ENDSWITCH" ) - qCursor:setPosition( nCurPos ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_appendWhile( qCursor, nIndent, nCurPos ) - - qCursor:movePosition( QTextCursor_EndOfBlock ) - qCursor:insertBlock() - qCursor:insertText( Space( nIndent ) + "ENDDO" ) - qCursor:setPosition( nCurPos ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_appendFor( qCursor, nIndent, nCurPos ) - - qCursor:movePosition( QTextCursor_EndOfBlock ) - qCursor:insertBlock() - qCursor:insertText( Space( nIndent ) + "NEXT" ) - qCursor:setPosition( nCurPos ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_appendIf( qCursor, nIndent, nCurPos, nTabSpaces, lElse, lEmbrace ) - LOCAL nCol, cLine - LOCAL lAligned := .F. - - IF lEmbrace - qCursor:movePosition( QTextCursor_StartOfBlock ) - IF qCursor:movePosition( QTextCursor_NextBlock ) - /* First line after IF must be starting on same indent where IF starts ; TO qualify FOR embracing */ - cLine := qCursor:block():text() - nCol := hbide_getFrontSpacesAndWord( cLine ) - IF ! Empty( cLine ) .AND. nCol == nIndent - lAligned := .T. - qCursor:insertText( Space( nTabSpaces ) ) - DO WHILE qCursor:movePosition( QTextCursor_NextBlock ) - nCol := hbide_getFrontSpacesAndWord( qCursor:block():text() ) - IF nCol < nIndent - qCursor:movePosition( QTextCursor_PreviousBlock ) - EXIT - ENDIF - qCursor:insertText( Space( nTabSpaces ) ) - ENDDO - ENDIF - ENDIF - ENDIF - IF ! lAligned - qCursor:movePosition( QTextCursor_PreviousBlock ) - qCursor:setPosition( nCurPos ) - ENDIF - - qCursor:movePosition( QTextCursor_EndOfBlock ) - IF lElse - qCursor:insertBlock() - qCursor:insertText( Space( nIndent ) + "ELSE" ) - ENDIF - qCursor:insertBlock() - qCursor:insertText( Space( nIndent ) + "ENDIF" ) - qCursor:setPosition( nCurPos ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_alignAssignments( qCursor ) - LOCAL aWords, cLine, nIndent, nPostn, cCLine, nCBlock, nAssgnAt, nCol - LOCAL lAssign := .F. - - nIndent := hbide_getFrontSpacesAndWordsByCursor( qCursor, @aWords ) - IF Len( aWords ) >= 2 - IF Len( aWords ) == 2 .AND. aWords[ 2 ] == ":=" .OR. ; - Len( aWords ) == 4 .AND. aWords[ 4 ] == ":=" .OR. ; - Len( aWords ) == 5 .AND. aWords[ 5 ] == ":=" .AND. aWords[ 1 ] == "::" - - cCLine := qCursor:block():text() - nPostn := qCursor:position() - nAssgnAt := At( ":=", cCLine ) - nCBlock := qCursor:blockNumber() - - DO WHILE .T. - IF qCursor:movePosition( QTextCursor_PreviousBlock, QTextCursor_MoveAnchor ) - IF ! Empty( cLine := qCursor:block():text() ) - nCol := hbide_getFrontSpacesAndWordsByCursor( qCursor, @aWords ) - IF nCol == nIndent .AND. Len( aWords ) >= 2 .AND. aWords[ 2 ] == ":=" - nAssgnAt := Max( nAssgnAt, At( ":=", cLine ) ) - lAssign := .T. - ELSEIF nCol == nIndent .AND. Len( aWords ) >= 4 .AND. aWords[ 2 ] == ":" .AND. aWords[ 4 ] == ":=" - nAssgnAt := Max( nAssgnAt, At( ":=", cLine ) ) - lAssign := .T. - ELSEIF nCol == nIndent .AND. Len( aWords ) >= 5 .AND. aWords[ 1 ] == "::" .AND. aWords[ 3 ] == ":" .AND. aWords[ 5 ] == ":=" - nAssgnAt := Max( nAssgnAt, At( ":=", cLine ) ) - lAssign := .T. - ELSE - EXIT - ENDIF - ENDIF - ELSE - EXIT - ENDIF - ENDDO - /* Anyway we are TO move TO NEXT block */ - qCursor:movePosition( QTextCursor_NextBlock, QTextCursor_MoveAnchor ) - IF lAssign - DO WHILE .T. - cLine := qCursor:block():text() - IF ! Empty( cLine ) - nCol := At( ":=", cLine ) - cLine := Pad( Trim( SubStr( cLine, 1, nCol - 1 ) ), nAssgnAt - 1 ) + ":=" + Trim( SubStr( cLine, nCol + 2 ) ) - qCursor:movePosition( QTextCursor_EndOfLine, QTextCursor_KeepAnchor ) - qCursor:removeSelectedText() - qCursor:insertText( cLine ) - ENDIF - IF qCursor:blockNumber() == nCBlock - EXIT - ENDIF - qCursor:movePosition( QTextCursor_NextBlock, QTextCursor_MoveAnchor ) - ENDDO - /* We have reached on current line */ - qCursor:movePosition( QTextCursor_EndOfBlock, QTextCursor_MoveAnchor ) - ELSE - qCursor:setPosition( nPostn ) - ENDIF - ENDIF - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:findLastIndent() - LOCAL qCursor, qTextBlock, cText, cWord - LOCAL nSpaces := 0 - - qCursor := ::qEdit:textCursor() - qTextBlock := qCursor:block() - - qTextBlock := qTextBlock:previous() - DO WHILE .t. - IF !( qTextBlock:isValid() ) - EXIT - ENDIF - IF !empty( cText := qTextBlock:text() ) - nSpaces := hbide_getFrontSpacesAndWord( cText, @cWord ) - IF !empty( cWord ) - IF ::oINI:lSmartIndent .AND. hbide_isIndentableKeyword( cWord, ::oIde ) - nSpaces += ::nTabSpaces - ENDIF - EXIT - ENDIF - ENDIF - qTextBlock := qTextBlock:previous() - ENDDO - - RETURN nSpaces - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:handleCurrentIndent() - LOCAL qCursor, nSpaces - - IF ::lIndentIt - ::lIndentIt := .f. - IF ( nSpaces := ::findLastIndent() ) > 0 - qCursor := ::qEdit:textCursor() - qCursor:insertText( space( nSpaces ) ) - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:gotoFunction() - LOCAL cWord, n - LOCAL lFindCur := .f. - IF !empty( cWord := ::getWord( .f. ) ) - IF ( n := ascan( ::aTags, {|e_| lower( cWord ) $ lower( e_[ 7 ] ) } ) ) > 0 - IF ::find( alltrim( ::aTags[ n,8 ] ) ) - lFindCur := .t. - ENDIF - ENDIF - IF ! lFindCur - ::oFN:jumpToFunction( cWord, .t. ) - ENDIF - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:clickFuncHelp() - LOCAL cWord - IF !empty( cWord := ::getWord( .f. ) ) - IF ! empty( ::oHL ) - ::oHL:jumpToFunction( cWord ) - ENDIF - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:loadFuncHelp() - LOCAL qEdit, qCursor, qTextBlock, cText, cWord, nCol, cPro - - qEdit := ::qEdit - qCursor := qEdit:textCursor() - qTextBlock := qCursor:block() - cText := qTextBlock:text() - nCol := qCursor:columnNumber() - cWord := hbide_getPreviousWord( cText, nCol ) - - IF !empty( cWord ) - IF empty( cPro := ::oEM:getProto( cWord ) ) - IF ! empty( ::oHL ) - ::oHL:jumpToFunction( cWord ) - ENDIF - IF !empty( cPro := ::oFN:positionToFunction( cWord, .t. ) ) - IF empty( ::cProto ) - ::showPrototype( cPro ) - ENDIF - ENDIF - ELSE - ::showPrototype( cPro ) - ENDIF - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:resumePrototype() - - ::isSuspended := .f. - IF !empty( ::qEdit ) - IF ::getLineNo() == ::nProtoLine .AND. ::getColumnNo() >= ::nProtoCol - ::qEdit:hbShowPrototype( ::cProto, ::nProtoRows, ::nProtoCols ) - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:suspendPrototype() - - ::isSuspended := .t. - IF !empty( ::qEdit ) - ::qEdit:hbShowPrototype( "", 0, 0 ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:showPrototype( cProto ) - - IF ! ::isSuspended .AND. !empty( ::qEdit ) - IF !empty( cProto ) - ::cProtoOrg := cProto - ::cProto := hbide_formatProto( cProto ) - ::nProtoLine := ::getLineNo() - ::nProtoCol := ::getColumnNo() - ENDIF - ::qEdit:hbShowPrototype( ::cProto, ::nProtoRows, ::nProtoCols ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:hidePrototype() - - IF !empty( ::qedit ) - ::nProtoLine := -1 - ::nProtoCol := -1 - ::cProto := "" - ::nProtoCols := 10 - ::nProtoRows := 1 - ::qEdit:hbShowPrototype( "", 0, 0 ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:parseCodeCompletion( cSyntax ) - LOCAL cText, n, nFun, nAbr, nSpc - - nAbr := at( "-", cSyntax ) - nSpc := at( " ", cSyntax ) - nFun := at( "(", cSyntax ) - - IF "[f]" $ cSyntax - cText := alltrim( substr( cSyntax, 1, nSpc ) ) - - ELSEIF nAbr > 0 .AND. iif( nSpc == 0, .t., nAbr < nSpc ).AND. iif( nFun == 0, .t., nAbr < nFun ) - cText := alltrim( substr( cSyntax, nAbr + 1 ) ) - - ELSE - IF ::oINI:lCompleteArgumented - IF ( n := rat( ")", cSyntax ) ) > 0 - cText := trim( substr( cSyntax, 1, n ) ) - ELSE - cText := trim( cSyntax ) - ENDIF - ELSE - IF nFun > 0 .AND. iif( nSpc == 0, .t., nFun < nSpc ) - cText := trim( substr( cSyntax, 1, nFun - 1 ) ) - ELSE - cText := trim( cSyntax ) - ENDIF - ENDIF - ENDIF - - RETURN cText - -/*----------------------------------------------------------------------*/ - -METHOD IdeEdit:completeCode( p ) - LOCAL qCursor := ::qEdit:textCursor() - LOCAL cWord - - qCursor:movePosition( QTextCursor_Left ) - - qCursor:movePosition( QTextCursor_StartOfWord ) - qCursor:movePosition( QTextCursor_EndOfWord, QTextCursor_KeepAnchor ) - - cWord := qCursor:selectedText() - IF cWord == "->" - qCursor:clearSelection() - ENDIF - - qCursor:insertText( ::parseCodeCompletion( p ) ) - qCursor:movePosition( QTextCursor_Left ) - qCursor:movePosition( QTextCursor_Right ) - - ::qEdit:setTextCursor( qCursor ) - - ::qEdit:hbSetFieldsListActive( ::oEM:updateFieldsList() ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_getPreviousWord( cText, nPos ) - LOCAL cWord, n - - cText := alltrim( substr( cText, 1, nPos ) ) - IF ( n := rat( " ", cText ) ) > 0 - cWord := substr( cText, n + 1 ) - ELSE - cWord := cText - ENDIF - - RETURN cWord - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_getFirstWord( cText ) - LOCAL cWord, n - - cText := alltrim( cText ) - IF ( n := at( " ", cText ) ) > 0 - cWord := left( cText, n-1 ) - ELSE - cWord := cText - ENDIF - - RETURN cWord - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_getSecondWord( cText ) - LOCAL cWord := "", a_ - - a_:= hb_ATokens( AllTrim( cText ), " " ) - IF Len( a_ ) >= 2 - cWord := a_[ 2 ] - ENDIF - - RETURN cWord - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_getFrontSpacesAndWord( cText, cWord, cSWord ) - LOCAL n := 0 - - DO WHILE .t. - IF !( substr( cText, ++n, 1 ) == " " ) - EXIT - ENDIF - ENDDO - n-- - - cWord := hbide_getFirstWord( cText ) - cSWord := hbide_getSecondWord( cText ) - - RETURN n - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_formatProto_1( cProto, cText, nProtoCol, nCurCol, nRows, nCols ) - LOCAL s, nArgs, cArgs, aArgs, cArg, n, n1, i, nnn, cPro, cFunc - - IF nCurCol > nProtoCol - n := at( "(", cProto ) ; n1 := at( ")", cProto ) - IF n > 0 .AND. n1 > 0 .AND. "," $ cProto - cProto := substr( cProto, 1, n1 ) - - s := substr( cText, nProtoCol, nCurCol - nProtoCol ) - nArgs := 1 - FOR i := 1 TO Len( s ) - IF substr( s, i, 1 ) == "," - nArgs++ - ENDIF - NEXT - - nRows := 1; nCols := 0 - - IF nArgs > 0 - n := at( "(", cProto ) ; n1 := at( ")", cProto ) - - cFunc := substr( cProto, 1, n - 1 ) - cArgs := substr( cProto, n + 1, n1 - n - 1 ) - aArgs := hb_aTokens( cArgs, "," ) - cArgs := "" - nCols := Len( cFunc ) + 1 - FOR EACH cArg IN aArgs - cArg := alltrim( cArg ) - - nRows++ - nCols := max( nCols, Len( cArg ) + 3 ) - - cArg := StrTran( cArg, "<", "<" ) - cArg := StrTran( cArg, ">", ">" ) - - nnn := cArg:__enumIndex() - IF nnn == nArgs - cArg := "" + cArg + "" - ENDIF - IF nnn == Len( aArgs ) - cArgs += "
" + " " + cArg - ELSE - cArgs += "
" + " " + cArg + "" + "," + "" - ENDIF - NEXT - nCols += iif( nCols <= Len( cFunc ), 0, 1 ) - - //cPro := "

" + "" + cFunc + "" + ; - cPro := "

" + "" + cFunc + "" + ; - "" + "(" + "" + ; - cArgs + ; - "" + ")" + "" + "

" - ENDIF - ENDIF - ENDIF - - RETURN cPro - -/*------------------------------------------------------------------------*/ - -FUNCTION hbide_formatProto( cProto ) - LOCAL n, n1, cArgs - - cProto := StrTran( cProto, "<", "<" ) - cProto := StrTran( cProto, ">", ">" ) - - n := at( "(", cProto ) - n1 := at( ")", cProto ) - - IF n > 0 .AND. n1 > 0 - cArgs := substr( cProto, n + 1, n1 - n - 1 ) - cArgs := strtran( cArgs, ",", "" + "," + "" ) - cProto := "

" + "" + substr( cProto, 1, n - 1 ) + "" + ; - "" + "(" + "" + ; - cArgs + ; - "" + ")" + "" + "

" - ENDIF - RETURN cProto - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_normalizeRect( aCord, nT, nL, nB, nR ) - nT := iif( aCord[ 1 ] > aCord[ 3 ], aCord[ 3 ], aCord[ 1 ] ) - nB := iif( aCord[ 1 ] > aCord[ 3 ], aCord[ 1 ], aCord[ 3 ] ) - nL := iif( aCord[ 2 ] > aCord[ 4 ], aCord[ 4 ], aCord[ 2 ] ) - nR := iif( aCord[ 2 ] > aCord[ 4 ], aCord[ 2 ], aCord[ 4 ] ) - RETURN NIL - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_isStartingKeyword( cWord, oIde ) - LOCAL s_b_ - - IF empty( s_b_ ) - IF ! oIde:oINI:lReturnAsBeginKeyword - s_b_ := { ; - 'function' => NIL,; - 'procedure' => NIL,; - 'class' => NIL,; - 'method' => NIL } - ELSE - s_b_ := { ; - 'function' => NIL,; - 'procedure' => NIL,; - 'class' => NIL,; - 'method' => NIL,; - 'return' => NIL } - ENDIF - ENDIF - - RETURN Lower( cWord ) $ s_b_ - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_isMinimumIndentableKeyword( cWord, oIde ) - LOCAL s_b_ - - IF empty( s_b_ ) - IF ! oIde:oINI:lReturnAsBeginKeyword - s_b_ := { ; - 'local' => NIL,; - 'private' => NIL,; - 'public' => NIL,; - 'static' => NIL,; - 'endclass' => NIL,; - 'default' => NIL,; - 'return' => NIL } - ELSE - s_b_ := { ; - 'local' => NIL,; - 'private' => NIL,; - 'public' => NIL,; - 'static' => NIL,; - 'endclass' => NIL,; - 'default' => NIL } - ENDIF - ENDIF - - RETURN Lower( cWord ) $ s_b_ - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_isIndentableKeyword( cWord, oIde ) - STATIC s_b_ := { ; - 'if' => NIL,; - 'else' => NIL,; - 'elseif' => NIL,; - 'docase' => NIL,; - 'case' => NIL,; - 'otherwise' => NIL,; - 'do' => NIL,; - 'while' => NIL,; - 'switch' => NIL,; - 'for' => NIL,; - 'begin' => NIL,; - 'sequence' => NIL,; - 'try' => NIL,; - 'catch' => NIL,; - 'always' => NIL,; - 'recover' => NIL,; - 'finally' => NIL } - - HB_SYMBOL_UNUSED( oIde ) - - RETURN Lower( cWord ) $ s_b_ - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_harbourKeywords() - STATIC s_b_ := { ; - 'function' => NIL,; - 'procedure' => NIL,; - 'thread' => NIL,; - 'return' => NIL,; - 'request' => NIL,; - 'static' => NIL,; - 'local' => NIL,; - 'default' => NIL,; - 'if' => NIL,; - 'else' => NIL,; - 'elseif' => NIL,; - 'endif' => NIL,; - 'end' => NIL,; - 'endswitch' => NIL,; - 'docase' => NIL,; - 'case' => NIL,; - 'endcase' => NIL,; - 'otherwise' => NIL,; - 'switch' => NIL,; - 'do' => NIL,; - 'while' => NIL,; - 'enddo' => NIL,; - 'exit' => NIL,; - 'for' => NIL,; - 'each' => NIL,; - 'next' => NIL,; - 'step' => NIL,; - 'to' => NIL,; - 'class' => NIL,; - 'endclass' => NIL,; - 'method' => NIL,; - 'data' => NIL,; - 'var' => NIL,; - 'destructor' => NIL,; - 'inline' => NIL,; - 'setget' => NIL,; - 'assign' => NIL,; - 'access' => NIL,; - 'inherit' => NIL,; - 'init' => NIL,; - 'create' => NIL,; - 'virtual' => NIL,; - 'message' => NIL,; - 'begin' => NIL,; - 'sequence' => NIL,; - 'try' => NIL,; - 'catch' => NIL,; - 'always' => NIL,; - 'recover' => NIL,; - 'with' => NIL,; - 'replace' => NIL,; - 'hb_symbol_unused' => NIL,; - 'error' => NIL,; - 'handler' => NIL,; - 'loop' => NIL,; - 'in' => NIL,; - 'nil' => NIL } - RETURN s_b_ - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_isHarbourKeyword( cWord, oIde ) - - HB_SYMBOL_UNUSED( oIde ) - - RETURN Lower( cWord ) $ hbide_harbourKeywords() - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_addInList( hHash, aList ) - LOCAL s - - FOR EACH s IN aList - IF ! empty( s ) - s := alltrim( s ) - hHash[ s ] := s - ENDIF - NEXT - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_isHarbourFunction( cWord, cCased ) - - STATIC s_b_ - IF empty( s_b_ ) - s_b_:= {=>} - hb_hCaseMatch( s_b_, .f. ) - hbide_addInList( s_b_, hbide_getHarbourFunctions( hbide_getHarbourHbx() ) ) - ENDIF - IF cWord $ s_b_ - cCased := s_b_[ cWord ] - RETURN .T. - ENDIF - - RETURN .f. - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_isQtFunction( cWord, cCased ) - - STATIC s_b_ - IF empty( s_b_ ) - s_b_:= {=>} - hb_hCaseMatch( s_b_, .f. ) - hbide_addInList( s_b_, hbide_getQtFunctions( hbide_getQtCoreFilelist() ) ) - hbide_addInList( s_b_, hbide_getQtFunctions( hbide_getQtGuiFilelist() ) ) - hbide_addInList( s_b_, hbide_getQtFunctions( hbide_getQtNetworkFilelist() ) ) - ENDIF - IF cWord $ s_b_ - cCased := s_b_[ cWord ] - RETURN .T. - ENDIF - - RETURN .f. - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_isUserFunction( cWord, cCased ) - LOCAL oDict - - FOR EACH oDict IN hbide_setIDE():aUserDict - IF oDict:lActive - IF hb_HHasKey( oDict:hItems, cWord ) - SWITCH oDict:cConvMode - CASE "ASIS" ; cCased := oDict:hItems[ cWord ][ 1 ] ; EXIT - CASE "LOWER" ; cCased := Lower( oDict:hItems[ cWord ][ 1 ] ) ; EXIT - CASE "UPPER" ; cCased := Upper( oDict:hItems[ cWord ][ 1 ] ) ; EXIT - CASE "NONE" ; cCased := cWord ; EXIT - ENDSWITCH - RETURN .T. - ENDIF - ENDIF - NEXT - - RETURN .F. - -/*----------------------------------------------------------------------*/ -/* Pulled from harbour/bin/find.hb and adopted for file as buffer */ -STATIC FUNCTION hbide_getHarbourFunctions( cFile ) - LOCAL pRegex - LOCAL tmp - LOCAL aDynamic := {} - - IF ! Empty( cFile ) .AND. ; - ! Empty( pRegex := hb_regexComp( "^DYNAMIC ([a-zA-Z0-9_]*)$", .T., .T. ) ) - FOR EACH tmp IN hb_regexAll( pRegex, StrTran( cFile, Chr( 13 ) ),,,,, .T. ) - AAdd( aDynamic, tmp[ 2 ] ) - NEXT - ENDIF - - RETURN aDynamic - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_getQtFunctions( cBuffer ) - LOCAL pRegex - LOCAL tmp - LOCAL aDynamic := {} - - IF ! Empty( cBuffer ) .AND. ; - ! Empty( pRegex := hb_regexComp( "^([a-zA-Z0-9_]*.qth)$", .T., .T. ) ) - FOR EACH tmp IN hb_regexAll( pRegex, StrTran( cBuffer, Chr( 13 ) ),,,,, .T. ) - AAdd( aDynamic, StrTran( tmp[ 1 ], ".qth" ) ) - NEXT - ENDIF - - RETURN aDynamic - -/*----------------------------------------------------------------------*/ -#pragma -km+ - -FUNCTION hbide_getHarbourHbx() - #pragma __binarystreaminclude "harbour.hbx" | RETURN %s - -FUNCTION hbide_getQtGuiFilelist() - #pragma __binarystreaminclude "../hbqt/qtgui/qth/filelist.hbm" | RETURN %s - -FUNCTION hbide_getQtCoreFilelist() - #pragma __binarystreaminclude "../hbqt/qtcore/qth/filelist.hbm" | RETURN %s - -FUNCTION hbide_getQtNetworkFilelist() - #pragma __binarystreaminclude "../hbqt/qtnetwork/qth/filelist.hbm" | RETURN %s - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/editor.prg b/harbour/contrib/hbide/editor.prg deleted file mode 100644 index b9d113e9f1..0000000000 --- a/harbour/contrib/hbide/editor.prg +++ /dev/null @@ -1,2115 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 27Dec2009 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "common.ch" -#include "hbclass.ch" -#include "hbqtgui.ch" -#include "hbide.ch" -#include "xbp.ch" -#include "fileio.ch" - -/*----------------------------------------------------------------------*/ - -#define EDT_LINNO_WIDTH 50 - -#define __qcompleter_activated__ 2001 -#define __qFldsCompleter_activated__ 2002 -#define __qDocModificationChanged__ 2003 -#define __qDocContentsChange__ 2004 -#define __qTimeSave_timeout__ 2005 -#define __qTab_contextMenu__ 2006 -#define __qTabWidget_tabCloseRequested__ 2007 - - -#define __selectionMode_stream__ 1 -#define __selectionMode_column__ 2 -#define __selectionMode_line__ 3 - -/*----------------------------------------------------------------------*/ - -CLASS IdeEditsManager INHERIT IdeObject - - DATA qContextMenu - DATA qContextSub - DATA qSrcControlSub - DATA aActions INIT {} - DATA aProtos INIT {} - - DATA qFldsStrList - DATA qFldsModel - - DATA hEditingWords INIT {=>} - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() - METHOD removeSourceInTree( cSourceFile ) - METHOD addSourceInTree( cSourceFile, cView ) - METHOD execEvent( nEvent, p ) - METHOD buildEditor( cSourceFile, nPos, nHPos, nVPos, cTheme, cView, aBookMarks ) - METHOD getTabBySource( cSource ) - METHOD getTabCurrent() - METHOD getDocumentCurrent() - METHOD getEditObjectCurrent() - METHOD getEditCurrent() - METHOD getEditorCurrent() - METHOD getEditorByIndex( nIndex ) - METHOD getEditorByTabObject( oTab ) - METHOD getEditorByTabPosition( nPos ) - METHOD getEditorBySource( cSource ) - METHOD reLoad( cSource ) - METHOD isOpen( cSource ) - METHOD setSourceVisible( cSource ) - METHOD setSourceVisibleByIndex( nIndex ) - METHOD undo() - METHOD redo() - METHOD cut() - METHOD copy() - METHOD paste() - METHOD selectAll() - METHOD switchToReadOnly() - METHOD convertSelection( cKey ) - METHOD insertText( cKey ) - METHOD insertSeparator( cSep ) - METHOD zoom( nKey ) - METHOD printPreview() - METHOD paintRequested( qPrinter ) - METHOD setMark() - METHOD setTooltipMark( nIndex ) - METHOD gotoMark( nIndex ) - METHOD goto( nLine ) - METHOD formatBraces() - METHOD upperCaseKeywords() - METHOD removeTabs() - METHOD RemoveTrailingSpaces() - METHOD getSelectedText() - METHOD duplicateLine() - METHOD deleteLine() - METHOD moveLine( nDirection ) - METHOD streamComment() - METHOD blockComment() - METHOD indent( nStep ) - METHOD convertQuotes() - METHOD convertDQuotes() - - METHOD toggleSelectionMode() - METHOD toggleStreamSelectionMode() - METHOD toggleColumnSelectionMode() - METHOD toggleLineSelectionMode() - - METHOD toggleLineNumbers() - METHOD toggleHorzRuler() - METHOD toggleCurrentLineHighlightMode() - METHOD toggleCodeCompetion() - METHOD toggleCompetionTips() - - METHOD getText() - METHOD getWord( lSelect ) - METHOD getLine( nLine, lSelect ) - METHOD presentSkeletons() - METHOD gotoFunction() - METHOD clearSelection() - - METHOD home() - METHOD end() - METHOD down() - METHOD up() - METHOD goBottom() - METHOD goTop() - METHOD left() - METHOD right() - METHOD panEnd() - METHOD panHome() - METHOD pageUp() - METHOD pageDown() - - METHOD find( cString, nPosFrom ) - METHOD showThumbnail() - METHOD changeThumbnail() - METHOD spaces2tabs() - METHOD qscintilla() - METHOD setStyleSheet( nMode ) - METHOD updateCompleter() - METHOD updateFieldsList( cAlias ) - METHOD getProto( cWord ) - METHOD alignAt() - METHOD stringify() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:new( oIde ) - - ::oIde := oIde - - hb_hCaseMatch( ::hEditingWords, .F. ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:destroy() - LOCAL a_ - - ::qCompleter:disconnect( "activated(QString)" ) - - ::oIde:qCompModel := NIL - ::oIde:qProtoList := NIL - - FOR EACH a_ IN ::aActions - a_[ 2 ] := NIL - a_:= NIL - NEXT - ::aActions := NIL - ::aProtos := NIL - - ::qContextMenu := NIL - ::qFldsStrList := NIL - ::qFldsModel := NIL - - FOR EACH a_ IN ::oIde:aTabs - a_[ 2 ]:destroy() - a_:= NIL - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:create( oIde ) - LOCAL qAct - - DEFAULT oIde TO ::oIde - - ::oIde := oIde - - ::qContextMenu := QMenu() - - aadd( ::aActions, { "GotoFunc" , ::qContextMenu:addAction( ::oAC:getAction( "GotoFunc" ) ) } ) - aadd( ::aActions, { "" , ::qContextMenu:addSeparator() } ) - aadd( ::aActions, { "TB_Cut" , ::qContextMenu:addAction( ::oAC:getAction( "TB_Cut" ) ) } ) - aadd( ::aActions, { "TB_Copy" , ::qContextMenu:addAction( ::oAC:getAction( "TB_Copy" ) ) } ) - aadd( ::aActions, { "TB_Paste" , ::qContextMenu:addAction( ::oAC:getAction( "TB_Paste" ) ) } ) - aadd( ::aActions, { "" , ::qContextMenu:addSeparator() } ) - aadd( ::aActions, { "TB_Undo" , ::qContextMenu:addAction( ::oAC:getAction( "TB_Undo" ) ) } ) - aadd( ::aActions, { "TB_Redo" , ::qContextMenu:addAction( ::oAC:getAction( "TB_Redo" ) ) } ) - aadd( ::aActions, { "" , ::qContextMenu:addSeparator() } ) - aadd( ::aActions, { "TB_Save" , ::qContextMenu:addAction( ::oAC:getAction( "TB_Save" ) ) } ) - aadd( ::aActions, { "TB_Close" , ::qContextMenu:addAction( ::oAC:getAction( "TB_Close" ) ) } ) - aadd( ::aActions, { "" , ::qContextMenu:addSeparator() } ) - aadd( ::aActions, { "TB_Compile" , ::qContextMenu:addAction( ::oAC:getAction( "TB_Compile" ) ) } ) - aadd( ::aActions, { "TB_CompilePPO", ::qContextMenu:addAction( ::oAC:getAction( "TB_CompilePPO" ) ) } ) - aadd( ::aActions, { "" , ::qContextMenu:addSeparator() } ) - aadd( ::aActions, { "Apply Theme" , ::qContextMenu:addAction( QIcon( hbide_image( "syntaxhiliter" ) ), "Apply Theme" ) } ) - aadd( ::aActions, { "Save as Skltn", ::qContextMenu:addAction( "Save as Skeleton..." ) } ) - ::qContextSub := ::qContextMenu:addMenu( QIcon( hbide_image( "split" ) ), "Split" ) - // - ::qContextSub:addAction( qAct := ::oAC:getAction( "SplitH" ) ) - aadd( ::aActions, { "Split H" , qAct } ) - ::qContextSub:addAction( qAct := ::oAC:getAction( "SplitV" ) ) - aadd( ::aActions, { "Split V" , qAct } ) - aadd( ::aActions, { "" , ::qContextSub:addSeparator() } ) - ::qContextSub:addAction( qAct := ::oAC:getAction( "SplitClose" ) ) - aadd( ::aActions, { "Close Split" , qAct } ) - aadd( ::aActions, { "" , ::qContextSub:addSeparator() } ) - ::qContextMenu:addAction( qAct := ::oFormatDock:oWidget:toggleViewAction() ) - aadd( ::aActions, { "Format" , qAct } ) - // - ::qSrcControlSub := ::qContextMenu:addMenu( "Source Control - VSS" ) - aadd( ::aActions, { "Get" , ::qSrcControlSub:addAction( "Get Latest Version" ) } ) - aadd( ::aActions, { "" , ::qSrcControlSub:addSeparator() } ) - aadd( ::aActions, { "Checkout" , ::qSrcControlSub:addAction( "Checkout" ) } ) - aadd( ::aActions, { "UndoCheckout" , ::qSrcControlSub:addAction( "Undo Checkout" ) } ) - aadd( ::aActions, { "" , ::qSrcControlSub:addSeparator() } ) - aadd( ::aActions, { "Checkin" , ::qSrcControlSub:addAction( "Checkin" ) } ) - aadd( ::aActions, { "" , ::qSrcControlSub:addSeparator() } ) - aadd( ::aActions, { "Diff" , ::qSrcControlSub:addAction( "Diff" ) } ) - - - /* Define code completer */ - ::oIde:qProtoList := QStringList() - ::oIde:qCompModel := QStringListModel() - ::oIde:qCompleter := QCompleter() - // - ::qCompleter:connect( "activated(QString)", {|p| ::execEvent( __qcompleter_activated__, p ) } ) - - /* Define fields completer */ - ::qFldsStrList := QStringList() - ::qFldsModel := QStringListModel() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:setStyleSheet( nMode ) - - ::qContextMenu:setStyleSheet( GetStyleSheet( "QMenuPop", nMode ) ) - ::qContextSub:setStyleSheet( GetStyleSheet( "QMenuPop", nMode ) ) - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD IdeEditsManager:updateFieldsList( cAlias ) - LOCAL aFlds - - IF ! empty( cAlias ) .AND. ! empty( aFlds := ::oBM:fetchFldsList( cAlias ) ) - - asort( aFlds, , , {|e,f| lower( e ) < lower( f ) } ) - - ::qFldsStrList:clear() - aeval( aFlds, {|e| ::qFldsStrList:append( e ) } ) - ::qFldsModel:setStringList( ::qFldsStrList ) - - ::qCompleter:setModel( ::qFldsModel ) - - RETURN .t. - ELSE - ::qCompleter:setModel( ::qCompModel ) - - ENDIF - - RETURN .f. - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:updateCompleter() - LOCAL aFun, aHrb, aUsr, n, s, k_ - - /* Collection of prototypes can be extended to honor plugins and defined in "setup" */ - - aFun := ::oFN:getFunctionPrototypes() - aHrb := ::oHL:getFunctionPrototypes() - aUsr := hbide_getUserPrototypes() - - ::qCompleter:disconnect( "activated(QString)" ) - - ::aProtos := {} - aeval( aHrb, {|e| aadd( ::aProtos, e ) } ) - aeval( aFun, {|e| aadd( ::aProtos, e ) } ) - aeval( aUsr, {|e| aadd( ::aProtos, e ) } ) - // Current session words - FOR EACH s IN ::hEditingWords - AAdd( ::aProtos, s ) - NEXT - - k_:= {} - FOR EACH s IN ::aProtos - // s := alltrim( s ) - IF ! ::oINI:lCompletionWithArgs - IF ( n := at( "(", s ) ) == 0 - IF ( n := at( " ", s ) ) > 0 - s := substr( s, 1, n - 1 ) - ENDIF - ELSE - s := substr( s, 1, n - 1 ) - ENDIF - ENDIF - s := alltrim( s ) - IF ascan( k_, s ) == 0 - aadd( k_, s ) - ENDIF - NEXT - asort( k_, , , {|e,f| lower( e ) < lower( f ) } ) - - ::qProtoList:clear() - - aeval( k_, {|e| ::qProtoList:append( e ) } ) - - ::qCompModel:setStringList( ::qProtoList ) - // - ::qCompleter:setWrapAround( .t. ) - ::qCompleter:setCaseSensitivity( Qt_CaseInsensitive ) - ::qCompleter:setModelSorting( QCompleter_CaseInsensitivelySortedModel ) - ::qCompleter:setModel( ::qCompModel ) - ::qCompleter:setCompletionMode( QCompleter_PopupCompletion ) - ::qCompleter:popup():setAlternatingRowColors( .t. ) - ::qCompleter:popup():setFont( QFont( "Courier New", 8 ) ) - ::qCompleter:popup():setMaximumWidth( 400 ) -// ::qCompleter:popup():setHorizontalScrollBarPolicy ( Qt_ScrollBarAsNeeded ) - - ::qCompleter:connect( "activated(QString)", {|p| ::execEvent( __qcompleter_activated__, p ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:getProto( cWord ) - LOCAL n, nLen - - cWord := upper( cWord ) - nLen := Len( cWord ) - - /* This can be rationalized */ - IF ( n := ascan( ::aProtos, {|e| upper( left( e, nLen ) ) == cWord } ) ) > 0 - RETURN ::aProtos[ n ] - ENDIF - - RETURN "" - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:removeSourceInTree( cSourceFile ) - LOCAL n - - IF !Empty( cSourceFile ) - IF ( n := aScan( ::aProjData, {|e_| e_[ TRE_ORIGINAL ] == cSourceFile .AND. e_[ 2 ] == "Opened Source" } ) ) > 0 - ::aProjData[ n,3 ]:delItem( ::oIde:aProjData[ n,1 ] ) - hb_adel( ::aProjData, n, .T. ) - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:addSourceInTree( cSourceFile, cView ) - LOCAL cPath, cFile, cExt, oItem - LOCAL oParent := ::oOpenedSources - - IF Empty( cSourceFile ) - RETURN Self - ENDIF - - hb_fNameSplit( cSourceFile, @cPath, @cFile, @cExt ) - - oItem := oParent:addItem( cFile + cExt ) - oItem:tooltipText := cSourceFile - oItem:oWidget:setIcon( 0, QIcon( ::oDK:getPanelIcon( cView ) ) ) - aadd( ::aProjData, { oItem, "Opened Source", oParent, ; - cSourceFile, hbide_pathNormalized( cSourceFile ) } ) - - ::oEditTree:oWidget:sortItems( 0, Qt_AscendingOrder ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:execEvent( nEvent, p ) - LOCAL oEdit - - IF ::lQuitting - RETURN Self - ENDIF - - SWITCH nEvent - CASE __qFldsCompleter_activated__ - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:completeFieldName( p ) - ENDIF - EXIT - CASE __qcompleter_activated__ - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:completeCode( p ) - ENDIF - EXIT - ENDSWITCH - - RETURN Nil - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:buildEditor( cSourceFile, nPos, nHPos, nVPos, cTheme, cView, aBookMarks ) - - IdeEditor():new():create( ::oIde, cSourceFile, nPos, nHPos, nVPos, cTheme, cView, aBookMarks ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:getTabBySource( cSource ) - - cSource := hbide_pathNormalized( cSource, .t. ) - - RETURN ascan( ::aTabs, {|e_| hb_FileMatch( e_[ TAB_OEDITOR ]:pathNormalized, cSource ) } ) - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:getTabCurrent() - LOCAL qTab, nTab - - IF !empty( ::qTabWidget ) - qTab := ::qTabWidget:currentWidget() - nTab := ascan( ::aTabs, {|e_| hbqt_IsEqual( e_[ TAB_OTAB ]:oWidget, qTab ) } ) - ENDIF - RETURN nTab - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:getDocumentCurrent() - LOCAL qTab, nTab - - IF !empty( ::qTabWidget ) .AND. ::qTabWidget:count() > 0 - qTab := ::qTabWidget:currentWidget() - IF ( nTab := ascan( ::aTabs, {|e_| hbqt_IsEqual( e_[ TAB_OTAB ]:oWidget, qTab ) } ) ) > 0 - RETURN ::aTabs[ nTab, TAB_OEDITOR ]:document() - ENDIF - ENDIF - - RETURN Nil - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:getEditObjectCurrent() - LOCAL qTab, nTab - - IF !empty( ::qTabWidget ) .AND. ::qTabWidget:count() > 0 - qTab := ::qTabWidget:currentWidget() - IF ( nTab := ascan( ::aTabs, {|e_| hbqt_IsEqual( e_[ TAB_OTAB ]:oWidget, qTab ) } ) ) > 0 - RETURN ::aTabs[ nTab, TAB_OEDITOR ]:qCoEdit - ENDIF - ENDIF - - RETURN Nil - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:getEditCurrent() - LOCAL qTab, nTab - - IF !empty( ::qTabWidget ) .AND. ::qTabWidget:count() > 0 - qTab := ::qTabWidget:currentWidget() - IF ( nTab := ascan( ::aTabs, {|e_| hbqt_IsEqual( e_[ TAB_OTAB ]:oWidget, qTab ) } ) ) > 0 - RETURN ::aTabs[ nTab, TAB_OEDITOR ]:qCqEdit - ENDIF - ENDIF - - RETURN Nil - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:getEditorCurrent() - LOCAL qTab, nTab - - IF !empty( ::qTabWidget ) .AND. ::qTabWidget:count() > 0 - qTab := ::qTabWidget:currentWidget() - IF ( nTab := ascan( ::aTabs, {|e_| hbqt_IsEqual( e_[ TAB_OTAB ]:oWidget, qTab ) } ) ) > 0 - RETURN ::aTabs[ nTab, TAB_OEDITOR ] - ENDIF - ENDIF - - RETURN Nil - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:getEditorByIndex( nIndex ) /* Index is 0 based */ - LOCAL qTab, a_ - - IF HB_ISNUMERIC( nIndex ) .AND. nIndex >= 0 .AND. nIndex < ::qTabWidget:count() - qTab := ::qTabWidget:widget( nIndex ) - FOR EACH a_ IN ::aTabs - IF !empty( a_[ TAB_OTAB ] ) .AND. hbqt_IsEqual( a_[ TAB_OTAB ]:oWidget, qTab ) - RETURN ::aTabs[ a_:__enumIndex(), TAB_OEDITOR ] - ENDIF - NEXT - ENDIF - - RETURN Nil - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:getEditorByTabObject( oTab ) - LOCAL nPos - - IF HB_ISOBJECT( oTab ) - IF ( nPos := ascan( ::aTabs, {|e_| e_[ TAB_OTAB ] == oTab } ) ) > 0 - RETURN ::aTabs[ nPos, TAB_OEDITOR ] - ENDIF - ENDIF - - RETURN Nil - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:getEditorByTabPosition( nPos ) - - IF HB_ISNUMERIC( nPos ) .AND. nPos > 0 .AND. nPos <= Len( ::aTabs ) - IF !empty( ::aTabs[ nPos, TAB_OEDITOR ] ) - RETURN ::aTabs[ nPos, TAB_OEDITOR ] - ENDIF - ENDIF - RETURN Nil - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:getEditorBySource( cSource ) - LOCAL n - - cSource := hbide_pathNormalized( cSource, .t. ) - IF ( n := ascan( ::aTabs, {|e_| hb_FileMatch( e_[ TAB_OEDITOR ]:pathNormalized, cSource ) } ) ) > 0 - RETURN ::aTabs[ n, TAB_OEDITOR ] - ENDIF - - RETURN Nil - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:reLoad( cSource ) - LOCAL oEdit - - IF empty( cSource ) - IF ! empty( oEdit := ::getEditObjectCurrent() ) - oEdit:reload() - ENDIF - ELSE - IF hb_fileExists( cSource ) .AND. hbide_isValidText( cSource ) - IF !empty( oEdit := ::getEditorBySource( cSource ) ) - oEdit:qEdit:clear() - oEdit:qEdit:setPlainText( hb_memoread( hbide_pathToOSPath( cSource ) ) ) - ENDIF - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:isOpen( cSource ) - RETURN !empty( ::getEditorBySource( cSource ) ) - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:setSourceVisible( cSource ) - LOCAL oEdit, nIndex - - IF !empty( oEdit := ::getEditorBySource( cSource ) ) - ::oDK:setView( oEdit:cView ) - - nIndex := ::qTabWidget:indexOf( oEdit:oTab:oWidget ) - IF ::qTabWidget:currentIndex() != nIndex - ::qTabWidget:setCurrentIndex( nIndex ) - ELSE - oEdit:setDocumentProperties() - ENDIF - RETURN .t. - ENDIF - - RETURN .f. - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:setSourceVisibleByIndex( nIndex ) /* nIndex is 0 based */ - - IF ::qTabWidget:count() == 0 - RETURN .f. - ENDIF - - IF nIndex >= ::qTabWidget:count() - nIndex := 0 - ENDIF - - ::qTabWidget:setCurrentIndex( nIndex ) - ::getEditorByIndex( nIndex ):setDocumentProperties() - - RETURN .f. - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:qscintilla() - LOCAL oEdit - IF !empty( oEdit := ::getEditorCurrent() ) - oEdit:qscintilla() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:undo() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:undo() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:redo() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:redo() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:cut() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:cut() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:copy() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:copy() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:paste() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:paste() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:selectAll() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:selectAll() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:toggleSelectionMode() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:toggleSelectionMode() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:toggleStreamSelectionMode() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:toggleStreamSelectionMode() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:toggleColumnSelectionMode() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:toggleColumnSelectionMode() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:toggleLineSelectionMode() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:toggleLineSelectionMode() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:toggleCurrentLineHighlightMode() - LOCAL oEdit - ::oIde:lCurrentLineHighlightEnabled := ! ::lCurrentLineHighlightEnabled - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:toggleCurrentLineHighlightMode() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:toggleLineNumbers() - LOCAL oEdit - ::oIde:lLineNumbersVisible := ! ::lLineNumbersVisible - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:toggleLineNumbers() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:toggleHorzRuler() - LOCAL oEdit - ::oIde:lHorzRulerVisible := ! ::lHorzRulerVisible - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:toggleHorzRuler() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:toggleCodeCompetion() - LOCAL oEdit - ::oIde:lHorzRulerVisible := ! ::lHorzRulerVisible - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:toggleCodeCompetion() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:toggleCompetionTips() - LOCAL oEdit - ::oIde:lHorzRulerVisible := ! ::lHorzRulerVisible - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:toggleCompetionTips() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:duplicateLine() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:duplicateLine() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:moveLine( nDirection ) - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:moveLine( nDirection ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:deleteLine() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:deleteLine() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:streamComment() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:streamComment() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:blockComment() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:blockComment() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:indent( nStep ) - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:blockIndent( nStep ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:convertQuotes() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:convertQuotes() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:convertDQuotes() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:convertDQuotes() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:alignAt() - LOCAL oEdit, cWord - IF !empty( oEdit := ::getEditObjectCurrent() ) - IF oEdit:aSelectionInfo[ 5 ] == __selectionMode_column__ - IF ! Empty( cWord := hbide_fetchAString( ::oDlg:oWidget, "", "Align At ?", "Selected-Text Alignment Proto" ) ) - oEdit:alignAt( cWord ) - ENDIF - ENDIF - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:stringify() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:stringify() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:switchToReadOnly() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:setReadOnly() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:presentSkeletons() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:presentSkeletons() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:clearSelection() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:clearSelection() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:gotoFunction() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:gotoFunction() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:getText() - LOCAL oEdit, cText := "" - IF !empty( oEdit := ::getEditObjectCurrent() ) - cText := oEdit:getText() - ENDIF - RETURN cText - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:getWord( lSelect ) - LOCAL oEdit, cText := "" - IF !empty( oEdit := ::getEditObjectCurrent() ) - cText := oEdit:getWord( lSelect ) - ENDIF - RETURN cText - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:getLine( nLine, lSelect ) - LOCAL oEdit, cText := "" - IF !empty( oEdit := ::getEditObjectCurrent() ) - cText := oEdit:getLine( nLine, lSelect ) - ENDIF - RETURN cText - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:convertSelection( cKey ) - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - SWITCH cKey - CASE "ToUpper" - oEdit:caseUpper() - EXIT - CASE "ToLower" - oEdit:caseLower() - EXIT - CASE "Invert" - oEdit:caseInvert() - EXIT - ENDSWITCH - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:insertSeparator( cSep ) - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:insertSeparator( cSep ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:insertText( cKey ) - LOCAL cFile, cText, oEdit - - IF ! empty( oEdit := ::getEditObjectCurrent() ) - DO CASE - - CASE cKey == "InsertDateTime" - cText := DTOC( Date() ) + ' - ' + Time() - - CASE cKey == "InsertRandomName" - cText := hbide_getUniqueFuncName() - - CASE cKey == "InsertExternalFile" - cFile := ::oSM:selectSource( "open" ) - IF Empty( cFile ) .OR. !hb_FileExists( cFile ) - RETURN Self - ENDIF - IF !( hbide_isValidText( cFile ) ) - MsgBox( "File type unknown or unsupported: " + cFile ) - RETURN Self - ENDIF - cText := hb_memoread( cFile ) - - OTHERWISE - RETURN Self - - ENDCASE - - oEdit:insertText( cText ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:upperCaseKeywords() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:upperCaseKeywords() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:formatBraces() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:formatBraces() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:removeTabs() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:tabs2spaces() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:spaces2tabs() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:spaces2tabs() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:removeTrailingSpaces() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:removeTrailingSpaces() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:zoom( nKey ) - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:zoom( nKey ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:printPreview() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:printPreview() - ENDIF - RETURN self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:paintRequested( qPrinter ) - ::qCurEdit:print( qPrinter ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:getSelectedText() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - RETURN oEdit:getSelectedText() - ENDIF - RETURN "" - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:setMark() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:setNewMark() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:setTooltipMark( nIndex ) - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:setTooltipMark( nIndex ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:gotoMark( nIndex ) - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:gotoMark( nIndex ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditsManager:goto( nLine ) - LOCAL oEdit - IF ! empty( oEdit := ::oEM:getEditObjectCurrent() ) - oEdit:goto( nLine ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ -// Navigation -/*----------------------------------------------------------------------*/ -METHOD IdeEditsManager:home() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:home() - ENDIF - RETURN Self -/*----------------------------------------------------------------------*/ -METHOD IdeEditsManager:end() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:end() - ENDIF - RETURN Self -/*----------------------------------------------------------------------*/ -METHOD IdeEditsManager:down() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:down() - ENDIF - RETURN Self -/*----------------------------------------------------------------------*/ -METHOD IdeEditsManager:up() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:up() - ENDIF - RETURN Self -/*----------------------------------------------------------------------*/ -METHOD IdeEditsManager:goBottom() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:goBottom() - ENDIF - RETURN Self -/*----------------------------------------------------------------------*/ -METHOD IdeEditsManager:goTop() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:goTop() - ENDIF - RETURN Self -/*----------------------------------------------------------------------*/ -METHOD IdeEditsManager:left() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:left() - ENDIF - RETURN Self -/*----------------------------------------------------------------------*/ -METHOD IdeEditsManager:right() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:right() - ENDIF - RETURN Self -/*----------------------------------------------------------------------*/ -METHOD IdeEditsManager:panEnd() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:panEnd() - ENDIF - RETURN Self -/*----------------------------------------------------------------------*/ -METHOD IdeEditsManager:panHome() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:panHome() - ENDIF - RETURN Self -/*----------------------------------------------------------------------*/ -METHOD IdeEditsManager:pageUp() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:pageUp() - ENDIF - RETURN Self -/*----------------------------------------------------------------------*/ -METHOD IdeEditsManager:pageDown() - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - oEdit:pageDown() - ENDIF - RETURN Self -/*----------------------------------------------------------------------*/ -METHOD IdeEditsManager:showThumbnail() - LOCAL oEdit - IF !empty( oEdit := ::getEditorCurrent() ) - oEdit:showThumbnail() - ENDIF - RETURN Self -/*----------------------------------------------------------------------*/ -METHOD IdeEditsManager:changeThumbnail() - LOCAL oEdit - IF !empty( oEdit := ::getEditorCurrent() ) - oEdit:changeThumbnail() - ENDIF - RETURN Self -/*----------------------------------------------------------------------*/ -// Locating -/*----------------------------------------------------------------------*/ -METHOD IdeEditsManager:find( cString, nPosFrom ) - LOCAL oEdit - IF !empty( oEdit := ::getEditObjectCurrent() ) - IF empty( cString ) - ::oFR:show() - ELSE - oEdit:find( cString, nPosFrom ) - ENDIF - ENDIF - RETURN Self -/*----------------------------------------------------------------------*/ -// -// CLASS IdeEditor -// Holds One Document in One Tab -// -/*----------------------------------------------------------------------*/ - -#define qTimeSave_timeout 101 - -CLASS IdeEditor INHERIT IdeObject - - DATA oTab - DATA cPath - DATA cFile INIT "" - DATA cExt INIT "" - DATA cType INIT "" - DATA cTheme INIT "" - DATA cView - DATA qDocument - DATA qDocLayout - DATA qHiliter - DATA qTimerSave - DATA sourceFile INIT "" - DATA pathNormalized - DATA qLayout - DATA lLoaded INIT .F. - DATA lInitLoad INIT .t. - - DATA qThumbnail - DATA qTNFont - DATA qTNHiliter - DATA qHSpltr - DATA qVSpltr - - DATA aEdits INIT {} /* Hold IdeEdit Objects */ - DATA oEdit - DATA qEdit - DATA qCqEdit - DATA qCoEdit - - DATA nBlock INIT -1 - DATA nColumn INIT -1 - - DATA nPos INIT 0 - DATA nHPos INIT 0 - DATA nVPos INIT 0 - DATA nID - - DATA qCursor - DATA aSplits INIT {} - - DATA qHLayout - DATA qLabel - DATA nnRow INIT -99 - - DATA qEvents - DATA lReadOnly INIT .F. - - DATA cEol INIT "" - DATA nSplOrient INIT -1 - DATA qSplitter - - DATA lIsPRG INIT .t. - - METHOD new( oIde, cSourceFile, nPos, nHPos, nVPos, cTheme, cView ) - METHOD create( oIde, cSourceFile, nPos, nHPos, nVPos, cTheme, cView, aBookMarks ) - METHOD split( nOrient, oEditP ) - METHOD relay( oEdit ) - METHOD destroy() - METHOD execEvent( nEvent, p, p1, p2 ) - METHOD setDocumentProperties() - METHOD activateTab( mp1, mp2, oXbp ) - METHOD buildTabPage( cSource ) - METHOD dispEditInfo( qEdit ) - METHOD setTabImage( qEdit ) - METHOD applyTheme( cTheme ) - METHOD showThumbnail() - METHOD changeThumbnail() - METHOD scrollThumbnail() - METHOD qscintilla() - METHOD prepareBufferToLoad( cBuffer ) - METHOD prepareBufferToSave( cBuffer ) - METHOD reload() - METHOD vssExecute( cAction ) - METHOD updateComponents() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:new( oIde, cSourceFile, nPos, nHPos, nVPos, cTheme, cView ) - - DEFAULT oIde TO ::oIde - DEFAULT cSourceFile TO ::sourceFile - DEFAULT nPos TO ::nPos - DEFAULT nHPos TO ::nHPos - DEFAULT nVPos TO ::nVPos - DEFAULT cTheme TO ::cTheme - DEFAULT cView TO ::cView - - ::oIde := oIde - ::sourceFile := cSourceFile - ::nPos := nPos - ::nHPos := nHPos - ::nVPos := nVPos - ::cTheme := cTheme - ::cView := cView - - ::nID := hbide_getNextUniqueID() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:create( oIde, cSourceFile, nPos, nHPos, nVPos, cTheme, cView, aBookMarks ) - LOCAL cFileTemp, nAttr - - DEFAULT oIde TO ::oIde - DEFAULT cSourceFile TO ::sourceFile - DEFAULT nPos TO ::nPos - DEFAULT nHPos TO ::nHPos - DEFAULT nVPos TO ::nVPos - DEFAULT cTheme TO ::cTheme - DEFAULT cView TO ::cView - DEFAULT aBookMarks TO {} - - ::oIde := oIde - ::SourceFile := hbide_pathNormalized( cSourceFile, .F. ) - ::nPos := nPos - ::nHPos := nHPos - ::nVPos := nVPos - ::cTheme := cTheme - ::cView := cView - - DEFAULT ::cView TO iif( ::cWrkView == "Stats", "Main", ::cWrkView ) - ::oDK:setView( ::cView ) - - ::pathNormalized := hbide_pathNormalized( cSourceFile, .t. ) - - hb_fNameSplit( cSourceFile, @::cPath, @::cFile, @::cExt ) - - cFileTemp := hbide_pathToOSPath( ::cPath + ::cFile + ::cExt + ".tmp" ) - IF hb_fileExists( cFileTemp ) - IF hbide_getYesNo( "An auto saved version already exists, restore ?", cSourceFile, "Last run crash detected" ) - hb_memowrit( hbide_pathToOSPath( cSourceFile ), hb_memoread( cFileTemp ) ) - ELSE - ferase( cFileTemp ) - ENDIF - ENDIF - IF hb_fGetAttr( cSourceFile, @nAttr ) - ::lReadOnly := hb_bitAnd( nAttr, FC_READONLY ) == FC_READONLY - ENDIF - - ::cType := upper( strtran( ::cExt, ".", "" ) ) - ::cType := iif( ::cType $ "PRG,C,CPP,H,CH,PPO,HBS", ::cType, "U" ) - - ::lIsPRG := ::cType $ "PRG,HB" - - ::buildTabPage( ::sourceFile ) - - ::qLayout := QBoxLayout( Qt_Vertical ) - ::qLayout:setContentsMargins( 0,0,0,0 ) - // - ::oTab:oWidget:setLayout( ::qLayout ) - - ::oEdit := IdeEdit():new( ::oIde, Self, 0 ) - ::oEdit:aBookMarks := aBookMarks - ::oEdit:create() - ::qEdit := ::oEdit:qEdit - ::qCqEdit := ::oEdit:qEdit - ::qCoEdit := ::oEdit - - ::qLayout:addWidget( ::oEdit:qEdit ) - - ::oEdit:qEdit:connect( "updateRequest(QRect,int)", {|| ::scrollThumbnail() } ) - - ::qDocument := ::qEdit:document() - ::qCursor := ::qEdit:textCursor() - - /* Populate Tabs Array */ - aadd( ::aTabs, { ::oTab, Self } ) - - /* Populate right at creation */ - ::oEM:addSourceInTree( ::sourceFile, ::cView ) - - //::qTabWidget:setStyleSheet( GetStyleSheet( "QTabWidget", ::nAnimantionMode ) ) - IF ::lReadOnly - ::oEdit:setReadOnly( .t. ) - ::qEdit:setTextInteractionFlags( Qt_TextSelectableByMouse + Qt_TextSelectableByKeyboard ) - ENDIF - - ::qDocument:connect( "modificationChanged(bool)" , {|p | ::execEvent( __qDocModificationChanged__, p ) } ) - ::qDocument:connect( "contentsChange(int,int,int)", {|p,p1,p2| ::execEvent( __qDocContentsChange__ , p, p1, p2 ) } ) - - ::qDocument:setModified( .f. ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:destroy() - LOCAL n, oEdit - - HB_TRACE( HB_TR_DEBUG, "..........................................................IdeEditor:destroy()", 0 ) - - ::oEdit:qEdit:disconnect( "updateRequest(QRect,int)" ) - - IF !empty( ::qTimerSave ) - ::qTimerSave:disconnect( "timeout()" ) - ::qTimerSave:stop() - ::qTimerSave := NIL - ENDIF - /* This code is reached under normal circumstances, so delete auto saved file */ - ferase( hbide_pathToOSPath( ::cPath + ::cFile + ::cExt + ".tmp" ) ) - - ::qCqEdit := NIL - ::qCoEdit := NIL - ::qEdit := NIL - - DO WHILE Len( ::aEdits ) > 0 - oEdit := ::aEdits[ 1 ] - hb_adel( ::aEdits, 1, .t. ) - oEdit:destroy() - ENDDO - ::oEdit:destroy() - - IF !Empty( ::qDocument ) - ::qDocument := NIL - ENDIF - - IF !Empty( ::qHiliter ) - ::qHiliter := NIL - ENDIF - - ::qSplitter := NIL - ::oEdit := NIL - ::qLayout := NIL - - IF ( n := ascan( ::aTabs, {|e_| e_[ TAB_OEDITOR ] == Self } ) ) > 0 - hb_adel( ::oIde:aTabs, n, .T. ) - ENDIF - - ::oEM:removeSourceInTree( ::sourceFile ) - - ::qTabWidget:removeTab( ::qTabWidget:indexOf( ::oTab:oWidget ) ) - ::oTab := NIL - - IF ::qTabWidget:count() == 0 - IF ::lDockRVisible - ::oFuncDock:hide() - ::oIde:lDockRVisible := .f. - ENDIF - ENDIF - HB_TRACE( HB_TR_DEBUG, "................................................................IdeEditor:destroy()", 1 ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:relay( oEdit ) - LOCAL oEdt - - IF Len( ::aEdits ) == 0 - IF ::nSplOrient > -1 - ::nSplOrient := -1 - ::qLayout:removeWidget( ::qSplitter ) - ::qLayout:addWidget( ::oEdit:qEdit ) - ENDIF - ENDIF - - IF HB_ISOBJECT( oEdit ) - aadd( ::aEdits, oEdit ) - ENDIF - - IF ::nSplOrient == -1 - ::nSplOrient := oEdit:nOrient - - IF oEdit:nOrient == 1 - ::qSplitter := QSplitter( Qt_Horizontal ) - ELSE - ::qSplitter := QSplitter( Qt_Vertical ) - ENDIF - - ::qLayout:removeWidget( ::oEdit:qEdit ) - ::qLayout:addWidget( ::qSplitter ) - - ::qSplitter:addWidget( ::oEdit:qEdit ) - ENDIF - - FOR EACH oEdt IN ::aEdits - ::qSplitter:addWidget( oEdt:qEdit ) - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:split( nOrient, oEditP ) - LOCAL oEdit - - HB_SYMBOL_UNUSED( oEditP ) - - oEdit := IdeEdit():new( ::oIde, Self, 1 ):create() - oEdit:qEdit:setDocument( ::qDocument ) - oEdit:nOrient := nOrient - - ::relay( oEdit ) - - IF HB_ISOBJECT( ::qHiliter ) - oEdit:qEdit:hbSetHighLighter( ::qHiliter ) - oEdit:qEdit:hbHighlightPage() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:prepareBufferToSave( cBuffer ) - LOCAL cE, cEOL, a_, s - - cE := ::oSetup:eol() - - // here we can extercise user settings via Setup - // - cEOL := iif( ::cEOL == "", cE, ::cEOL ) - IF !( cEOL == cE ) - // MsgBox( "Difference in set EOL and current file EOL mode, saving with original mode!" ) - ENDIF - - cBuffer := strtran( cBuffer, chr( 13 ) ) - IF !( cEOL == chr( 10 ) ) - cBuffer := strtran( cBuffer, chr( 10 ), cEOL ) - ENDIF - IF ::oINI:lTrimTrailingBlanks - a_:= hb_atokens( cBuffer, cEOL ) - FOR EACH s IN a_ - s := trim( s ) - NEXT - cBuffer := "" - aeval( a_, {|e| cBuffer += e + cEOL } ) - cBuffer := substr( cBuffer, 1, Len( cBuffer ) - len( cEOL ) ) - ENDIF - - RETURN cBuffer - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:prepareBufferToLoad( cBuffer ) - LOCAL cSpaces - - ::cEOL := hbide_getEol( @cBuffer ) - - IF ::oINI:lConvTabToSpcWhenLoading - cSpaces := space( ::nTabSpaces ) - cBuffer := strtran( cBuffer, chr( 9 ), cSpaces ) - ENDIF - - RETURN cBuffer - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:vssExecute( cAction ) - LOCAL cPath, cFile, cExt, cCmd, cC, oProcess, cBatch, cOutput := "" - LOCAL aCmd := {} - - IF ! empty( ::oINI:cVSSExe ) .AND. ! empty( ::oINI:cVSSDatabase ) - hb_fNameSplit( ::sourceFile, @cPath, @cFile, @cExt ) - - aadd( aCmd, "SET ssdir=" + hbide_pathToOSPath( ::oINI:cVSSDatabase ) ) - aadd( aCmd, "SET Force_dir=YES" ) - IF cAction == "Checkin" - aadd( aCmd, "call " + '"' + ::oINI:cVSSExe + '/ss.exe' + '" ' + cAction + " " + cFile + cExt + " -ChbIDE" ) - ELSEIF cAction == "Checkout" - aadd( aCmd, "call " + '"' + ::oINI:cVSSExe + '/ss.exe' + '" ' + cAction + " " + cFile + cExt + " -C-" ) - ELSE - aadd( aCmd, "call " + '"' + ::oINI:cVSSExe + '/ss.exe' + '" ' + cAction + " " + cFile + cExt ) - ENDIF - - cBatch := hbide_getShellCommandsTempFile( aCmd ) - - cCmd := hbide_getShellCommand() - cC := iif( hbide_getOS() == "nix", "", "/C " ) - - oProcess := HbpProcess():new() - // - oProcess:output := {|cOut| cOutput += cOut } - oProcess:finished := {|| iif( !empty( cOutput ), ::reload(), NIL ), MsgBox( cOutput ) } - oProcess:workingPath := hbide_pathToOSPath( cPath ) - - oProcess:addArg( cC + cBatch ) - oProcess:start( cCmd ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:reload() - LOCAL nAttr, nPos, qCursor, nHPos, nVPos - - qCursor := ::qEdit:textCursor() - nPos := qCursor:position() - nHPos := ::qEdit:horizontalScrollBar():value() - nVPos := ::qEdit:verticalScrollBar():value() - - - IF hb_fGetAttr( ::sourceFile, @nAttr ) - ::lReadOnly := hb_bitAnd( nAttr, FC_READONLY ) == FC_READONLY - ENDIF - - ::oEdit:setReadOnly( ::lReadOnly ) - ::setTabImage() - - ::qEdit:clear() - ::qEdit:setPlainText( ::prepareBufferToLoad( hb_memoread( ::sourceFile ) ) ) - - qCursor:setPosition( nPos ) - ::qEdit:setTextCursor( qCursor ) - ::qEdit:horizontalScrollBar():setValue( nHPos ) - ::qEdit:verticalScrollBar():setValue( nVPos ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:setDocumentProperties() - LOCAL qCursor - - qCursor := ::qEdit:textCursor() - - IF !( ::lLoaded ) /* First Time */ - ::qEdit:setPlainText( ::prepareBufferToLoad( hb_memoread( ::sourceFile ) ) ) - - IF !( ::cType == "U" ) - ::qHiliter := ::oTH:setSyntaxHilighting( ::qEdit, @::cTheme ) - ENDIF - - qCursor:setPosition( ::nPos ) - ::qEdit:setTextCursor( qCursor ) - - ::qEdit:horizontalScrollBar():setValue( ::nHPos ) - ::qEdit:verticalScrollBar():setValue( ::nVPos ) - - ::qEdit:document():setModified( .f. ) -// ::qEdit:document():setMetaInformation( QTextDocument_DocumentTitle, hbide_pathNormalized( ::sourceFile ) ) - ::qEdit:document():setMetaInformation( QTextDocument_DocumentTitle, hb_FNameName( ::sourceFile ) ) - - ::lLoaded := .T. - - IF HB_ISOBJECT( ::qHiliter ) - ::qHiliter:hbSetInitialized( .t. ) - ::qEdit:hbHighlightPage() - ENDIF - - IF ::cType $ "PRG,C,CPP,H,CH,HBS" - ::qTimerSave := QTimer() - ::qTimerSave:setInterval( max( 30000, ::oINI:nTmpBkpPrd * 1000 ) ) - ::qTimerSave:connect( "timeout()", {|| ::execEvent( __qTimeSave_timeout__ ) } ) - ::qTimerSave:start() - ENDIF - ::oUpDn:show() - ENDIF - - - ::nBlock := qCursor:blockNumber() - ::nColumn := qCursor:columnNumber() - - ::oIde:aSources := { ::sourceFile } - ::oIde:createTags() - ::oIde:updateFuncList() - ::oIde:updateTitleBar() - - ::dispEditInfo( ::qEdit ) - - ::oIde:manageFocusInEditor() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:execEvent( nEvent, p, p1, p2 ) - LOCAL cFileTemp - - IF ::lQuitting - RETURN Self - ENDIF - - SWITCH nEvent - - CASE __qTabWidget_tabCloseRequested__ - ::oSM:closeSource( p + 1 ) - EXIT - - CASE __qDocModificationChanged__ - ::setTabImage() - EXIT - - CASE __qDocContentsChange__ - IF p1 + p2 > 0 - ::qCoEdit:reformatLine( p, p1, p2 ) - ENDIF - EXIT - - CASE __qTimeSave_timeout__ - IF ::qDocument:isModified() - cFileTemp := hbide_pathToOSPath( ::cPath + ::cFile + ::cExt + ".tmp" ) - hb_memowrit( cFileTemp, ::qEdit:toPlainText() ) - ENDIF - EXIT - - ENDSWITCH - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:updateComponents() - LOCAL qCoEdit := ::qCoEdit - - ::setDocumentProperties() - qCoEdit:relayMarkButtons() - qCoEdit:updateTitleBar() - qCoEdit:toggleLineNumbers() - qCoEdit:toggleHorzRuler() - qCoEdit:toggleCurrentLineHighlightMode() - qCoEdit:dispStatusInfo() - ::oUpDn:show() - ::oDK:showSelectedTextToolbar() - ::changeThumbnail() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:activateTab( mp1, mp2, oXbp ) - LOCAL oEdit - - HB_SYMBOL_UNUSED( mp1 ) - HB_SYMBOL_UNUSED( mp2 ) - - IF !empty( oEdit := ::oEM:getEditorByTabObject( oXbp ) ) - oEdit:updateComponents() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:buildTabPage( cSource ) - - ::oTab := XbpTabPage():new( ::oTabParent, , { 5,5 }, { 700,400 }, , .t. ) - - IF Empty( cSource ) - ::oTab:caption := "Untitled " + hb_ntos( hbide_getNextUntitled() ) - ELSE - ::oTab:caption := ::cFile + iif( ::oINI:lTabRemoveExt, "", ::cExt ) - ENDIF - ::oTab:minimized := .F. - - ::oTab:create() - - IF ::oINI:lTabAddClose - ::qTabWidget:setTabsClosable( .T. ) - ::qTabWidget:connect( "tabCloseRequested(int)", {|i| ::execEvent( __qTabWidget_tabCloseRequested__, i ) } ) - ENDIF - ::qTabWidget:setTabTooltip( ::qTabWidget:indexOf( ::oTab:oWidget ), cSource ) - ::oTab:tabActivate := {|mp1,mp2,oXbp| ::activateTab( mp1, mp2, oXbp ) } - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:dispEditInfo( qEdit ) - LOCAL s, qDocument, qCursor - - DEFAULT qEdit TO ::qEdit - - qDocument := qEdit:document() - qCursor := qEdit:textCursor() - - s := "Line "+ hb_ntos( qCursor:blockNumber() + 1 ) + " of " + ; - hb_ntos( qDocument:blockCount() ) + "" - - ::oIde:oSBar:getItem( SB_PNL_MAIN ):caption := "Success" - ::oIde:oSBar:getItem( SB_PNL_READY ):caption := "Ready" - ::oIde:oSBar:getItem( SB_PNL_LINE ):caption := s - ::oIde:oSBar:getItem( SB_PNL_COLUMN ):caption := "Col " + hb_ntos( qCursor:columnNumber() + 1 ) - ::oIde:oSBar:getItem( SB_PNL_INS ):caption := iif( qEdit:overwriteMode() , " ", "Ins" ) - ::oIde:oSBar:getItem( SB_PNL_MODIFIED ):caption := iif( qDocument:isModified(), "Modified", iif( qEdit:isReadOnly(), "ReadOnly", " " ) ) - ::oIde:oSBar:getItem( SB_PNL_EDIT ):caption := "Edit" - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:setTabImage( qEdit ) - LOCAL nIndex, lModified, lReadOnly, cIcon - - DEFAULT qEdit TO ::oEdit:qEdit - - nIndex := ::qTabWidget:indexOf( ::oTab:oWidget ) - lModified := ::qDocument:isModified() - lReadOnly := iif( ::lReadOnly, ::lReadOnly, qEdit:isReadOnly() ) - - IF lReadOnly - cIcon := "tabreadonly" - ELSE - IF lModified - cIcon := "tabmodified" - ELSE - cIcon := "tabunmodified" - ENDIF - ENDIF - - ::qTabWidget:setTabIcon( nIndex, QIcon( hbide_image( cIcon ) ) ) - ::oDK:setStatusText( SB_PNL_MODIFIED, iif( lModified, "Modified", iif( lReadOnly, "ReadOnly", " " ) ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:applyTheme( cTheme ) - - IF !( ::cType == "U" ) - IF empty( cTheme ) - cTheme := ::oTH:selectTheme() - ENDIF - - IF ::oTH:contains( cTheme ) - ::cTheme := cTheme - ::qHiliter := ::oTH:SetSyntaxHilighting( ::qEdit, @::cTheme ) - ENDIF - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:showThumbnail() - - IF empty( ::qThumbnail ) - ::qThumbnail := IdeEdit():new( ::oIde, Self, 0 ):create() - ::qThumbnail:currentPointSize := 4 - ::qThumbnail:fontFamily := "Courier New" - ::qThumbnail:setFont() - ::qThumbnail:setReadOnly( .t. ) - IF !( ::cType == "U" ) - ::qTNHiliter := ::oTH:SetSyntaxHilighting( ::qThumbnail:qEdit, @::cTheme ) - ENDIF - ::qThumbnail:qEdit:setTextInteractionFlags( Qt_TextSelectableByMouse + Qt_TextSelectableByKeyboard ) - ENDIF - - ::oSourceThumbnailDock:oWidget:setWidget( ::qThumbnail:qEdit ) - ::qThumbnail:qEdit:clear() - ::qThumbnail:qEdit:setPlainText( hb_memoRead( ::sourceFile ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:changeThumbnail() - - IF ::lLoaded .AND. ::oSourceThumbnailDock:oWidget:isVisible() - ::showThumbnail() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:scrollThumbnail() - LOCAL qScroll - - IF ::lLoaded .AND. ::oSourceThumbnailDock:oWidget:isVisible() .AND. !empty( ::qThumbnail ) - qScroll := ::oEdit:qEdit:verticalScrollBar() - ::qThumbnail:qEdit:verticalScrollBar():setValue( qScroll:value() ) - - ::oEdit:qEdit:hbGetViewportInfo() - - ::qThumbnail:qEdit:hbHighlightArea( ::oEdit:aViewportInfo[ 1 ], 0, ::oEdit:aViewportInfo[ 1 ]+::oEdit:aViewportInfo[ 3 ]-1, 0, 1 ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ -// Generic Tests -/*----------------------------------------------------------------------*/ - -METHOD IdeEditor:qscintilla() - - // hbide_qtDesigner() - - #ifdef HB_WITH_QSCINTILLA - #include "hbqscintilla.ch" - - #if 0 - SCE_FS_DEFAULT - SCE_FS_COMMENT - SCE_FS_COMMENTLINE - SCE_FS_COMMENTDOC - SCE_FS_COMMENTLINEDOC - SCE_FS_COMMENTDOCKEYWORD - SCE_FS_COMMENTDOCKEYWORDERROR - SCE_FS_KEYWORD - SCE_FS_KEYWORD2 - SCE_FS_KEYWORD3 - SCE_FS_KEYWORD4 - SCE_FS_NUMBER - SCE_FS_STRING - SCE_FS_PREPROCESSOR - SCE_FS_OPERATOR - SCE_FS_IDENTIFIER - SCE_FS_DATE - SCE_FS_STRINGEOL - SCE_FS_CONSTANT - SCE_FS_WORDOPERATOR - SCE_FS_DISABLEDCODE - SCE_FS_DEFAULT_C - SCE_FS_COMMENTDOC_C - SCE_FS_COMMENTLINEDOC_C - SCE_FS_KEYWORD_C - SCE_FS_KEYWORD2_C - SCE_FS_NUMBER_C - SCE_FS_STRING_C - SCE_FS_PREPROCESSOR_C - SCE_FS_OPERATOR_C - SCE_FS_IDENTIFIER_C - SCE_FS_STRINGEOL_C - SCE_FS_BRACE - #endif - - STATIC oSci, qLexer, qAPIs, fontBold, fontNormal, fontItalic, c1, c2, c3 - - IF empty( oSci ) - oSci := HBQsciScintilla() - // - oSci:setAutoIndent( .t. ) - oSci:setCaretLineVisible( .t. ) - oSci:setCaretWidth( 2 ) - oSci:setFolding( QsciScintilla_BoxedTreeFoldStyle ) - oSci:setTabWidth( 3 ) - oSci:setMarginLineNumbers( 0,.t. ) - oSci:setMarginWidth( 0,30 ) - oSci:setSelectionBackgroundColor( QColor( 255,0,0 ) ) - oSci:setEdgeColumn( 40 ) - oSci:setCallTipsVisible( 3 ) - oSci:setFont( ::oFont:oWidget ) - oSci:setEdgeColor( QColor( 0,0,255 ) ) - oSci:setMarginsFont( ::oFont:oWidget ) - oSci:setIndentationGuides( .t. ) - - oSci:setCallTipsHighlightColor( QColor( 255,127,0 ) ) - - /* Auto Completion */ - oSci:setAutoCompletionSource( QsciScintilla_AcsAll ) - oSci:setAutoCompletionThreshold( 3 ) - oSci:setAutoCompletionCaseSensitivity( .t. ) - oSci:setAutoCompletionShowSingle( .t. ) - oSci:setAutoCompletionFillupsEnabled( .t. ) - - HB_TRACE( HB_TR_DEBUG, time() ) - oSci:setText( hb_memoread( "c:\harbour\contrib\hbide\idemisc.prg" ) ) - // oSci:setText( hb_memoread( "c:\harbour\contrib\hbide\ideparseexpr.c" ) ) - HB_TRACE( HB_TR_DEBUG, time(), "after" ) - - c1 := QColor( 0,0,255 ) - c2 := QColor( 0,12,133 ) - c3 := QColor( 20,122,144 ) - oSci:setBraceMatching( QsciScintilla_StrictBraceMatch ) - oSci:setMatchedBraceForegroundColor( c1 ) - oSci:setMatchedBraceBackgroundColor( c2 ) - oSci:setUnmatchedBraceForegroundColor( c3 ) - - qLexer := QsciLexerFlagship() - //qLexer := QsciLexerCPP() - qLexer:setDefaultFont( ::oFont:oWidget ) - qLexer:setFoldAtElse( .f. ) - - fontBold := QFont() - fontBold:setFamily( "Courier New" ) - fontBold:setPointSize(10) - fontBold:setWeight(100) - - fontNormal := QFont() - fontNormal:setFamily( "Courier New" ) - fontNormal:setPointSize(10) - - fontItalic := QFont() - fontItalic:setFamily( "Courier New" ) - fontItalic:setPointSize( 10 ) - fontItalic:setItalic( .t. ) - - qLexer:setFont( fontBold, SCE_FS_COMMENTLINEDOC ) - qLexer:setFont( fontBold, SCE_FS_COMMENTDOCKEYWORD ) - qLexer:setFont( fontBold, SCE_FS_NUMBER ) - - qLexer:setColor( QColor( 255, 127, 67 ), SCE_FS_KEYWORD ) - qLexer:setColor( QColor( 255, 0, 127 ), SCE_FS_KEYWORD2 ) - qLexer:setColor( QColor( 127, 67, 255 ), SCE_FS_OPERATOR ) - qLexer:setColor( QColor( 255, 0, 0 ), SCE_FS_BRACE ) - - qApis := QsciAPIs( qLexer ) - qApis:load( "c:/temp/cpp.api" ) - qApis:prepare() - qLexer:setAPIs( qApis ) - - oSci:setLexer( qLexer ) - qLexer:setEditor( oSci ) - - ENDIF - ::oQScintillaDock:oWidget:setWidget( oSci ) - #endif - RETURN Self - -/*----------------------------------------------------------------------*/ - -#if 0 -STATIC FUNCTION hbide_qtDesigner() - - #ifdef __DESIGNER__ - LOCAL n - STATIC oEdt, oWM - - oEdt := QDesignerFormEditorInterface( ::oDlg:oWidget ) - HB_TRACE( HB_TR_DEBUG, 1 ) - oWM := oEdt:formWindowManager() - HB_TRACE( HB_TR_DEBUG, 2 ) - oWM:createFormWindow( ::oQScintillaDock:oWidget ) - HB_TRACE( HB_TR_DEBUG, 3 ) - ::oQScintillaDock:oWidget:show() - HB_TRACE( HB_TR_DEBUG, 4 ) - n := oWM:formWindowCount() - HB_TRACE( HB_TR_DEBUG, n ) - - /* - QDesignerActionEditorInterface * actionEditor () const - QDesignerFormWindowManagerInterface * formWindowManager () const - QDesignerObjectInspectorInterface * objectInspector () const - QDesignerPropertyEditorInterface * propertyEditor () const - void setActionEditor ( QDesignerActionEditorInterface * actionEditor ) - void setObjectInspector ( QDesignerObjectInspectorInterface * objectInspector ) - void setPropertyEditor ( QDesignerPropertyEditorInterface * propertyEditor ) - void setWidgetBox ( QDesignerWidgetBoxInterface * widgetBox ) - QWidget * topLevel () const - QDesignerWidgetBoxInterface * widgetBox () const - */ - - #endif - RETURN NIL -#endif - -/*----------------------------------------------------------------------*/ - diff --git a/harbour/contrib/hbide/editor.ui b/harbour/contrib/hbide/editor.ui deleted file mode 100644 index 0262306bc4..0000000000 --- a/harbour/contrib/hbide/editor.ui +++ /dev/null @@ -1,89 +0,0 @@ - - - Form - - - - 0 - 0 - 413 - 522 - - - - Editor - - - - - - - - - - - - ... - - - - - - - ... - - - - - - - ... - - - - - - - ... - - - - - - - Close - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Save - - - - - - - SaveAs - - - - - - - - diff --git a/harbour/contrib/hbide/env/pritpalsfav.ide b/harbour/contrib/hbide/env/pritpalsfav.ide deleted file mode 100644 index acb665c20b..0000000000 --- a/harbour/contrib/hbide/env/pritpalsfav.ide +++ /dev/null @@ -1,2 +0,0 @@ -[General] -hbidesettings="@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x3\0\0\0\0\0\0\0\x87\0\0\x2\x9c\xfc\x2\0\0\0\x3\xfb\0\0\0\x1e\0\x64\0o\0\x63\0k\0P\0r\0o\0j\0\x65\0\x63\0t\0T\0r\0\x65\0\x65\x1\0\0\0\x15\0\0\x1\x93\0\0\0]\0\xff\xff\xff\xfb\0\0\0\x1c\0\x64\0o\0\x63\0k\0\x45\0\x64\0i\0t\0o\0r\0T\0\x61\0\x62\0s\x1\0\0\x1\xac\0\0\0\xa4\0\0\0]\0\xff\xff\xff\xfb\0\0\0\x1c\0\x64\0o\0\x63\0k\0S\0k\0l\0t\0n\0s\0T\0r\0\x65\0\x65\x1\0\0\x2T\0\0\0]\0\0\0]\0\xff\xff\xff\0\0\0\x1\0\0\x1\xd5\0\0\x2\x9c\xfc\x1\0\0\0\x2\xfb\0\0\0\x10\0\x64\0o\0\x63\0k\0H\0\x65\0l\0p\0\0\0\x3\x94\0\0\x1\xd5\0\0\0P\0\xff\xff\xff\xfc\0\0\x3u\0\0\x1\xd5\0\0\0\0\0\xff\xff\xff\xfa\xff\xff\xff\xff\x1\0\0\0\xf\xfb\0\0\0\x1a\0\x64\0o\0\x63\0k\0\x44\0o\0\x63\0V\0i\0\x65\0w\0\x65\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\x1\x8e\0\xff\xff\xff\xfb\0\0\0\x18\0\x64\0o\0\x63\0k\0\x46\0u\0n\0\x63\0L\0i\0s\0t\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\xfb\0\0\0\x1a\0\x64\0o\0\x63\0k\0\x46\0u\0n\0\x63\0t\0i\0o\0n\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\xfb\0\0\0\x1c\0\x64\0o\0\x63\0k\0P\0r\0o\0p\0\x65\0r\0t\0i\0\x65\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\xfb\0\0\0 \0\x64\0o\0\x63\0k\0\x45\0n\0v\0i\0r\0o\0n\0m\0\x65\0n\0t\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\x1\x6\0\xff\xff\xff\xfb\0\0\0\x18\0\x64\0o\0\x63\0k\0S\0k\0\x65\0l\0\x65\0t\0o\0n\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\xfb\0\0\0\x14\0\x64\0o\0\x63\0k\0T\0h\0\x65\0m\0\x65\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\xfb\0\0\0\x1e\0\x64\0o\0\x63\0k\0\x46\0i\0n\0\x64\0I\0n\0\x46\0i\0l\0\x65\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\xfb\0\0\0\x1a\0\x64\0o\0\x63\0k\0\x44\0o\0\x63\0W\0r\0i\0t\0\x65\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\x1,\0\xff\xff\xff\xfb\0\0\0&\0\x64\0o\0\x63\0k\0S\0o\0u\0r\0\x63\0\x65\0T\0h\0u\0m\0\x62\0n\0\x61\0i\0l\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\xfb\0\0\0\x1c\0\x64\0o\0\x63\0k\0Q\0S\0\x63\0i\0n\0t\0i\0l\0l\0\x61\0\0\0\0\0\xff\xff\xff\xff\0\0\0\xb8\0\xff\xff\xff\xfb\0\0\0$\0\x64\0o\0\x63\0k\0R\0\x65\0p\0o\0r\0t\0\x44\0\x65\0s\0i\0g\0n\0\x65\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\x1\x34\0\xff\xff\xff\xfb\0\0\0\x14\0\x64\0o\0\x63\0k\0\x46\0o\0r\0m\0\x61\0t\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\xfb\0\0\0\x12\0\x64\0o\0\x63\0k\0\x43\0u\0i\0\x45\0\x64\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\xfb\0\0\0\x12\0\x64\0o\0\x63\0k\0U\0I\0S\0r\0\x63\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\0\0\0\x3\0\0\x4\xc8\0\0\0]\xfc\x1\0\0\0\x1\xfc\0\0\0\xa1\0\0\x4\xc8\0\0\0\0\0\xff\xff\xff\xfa\xff\xff\xff\xff\x1\0\0\0\x3\xfb\0\0\0$\0\x64\0o\0\x63\0k\0\x43\0o\0m\0p\0i\0l\0\x65\0R\0\x65\0s\0u\0l\0t\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0G\0\xff\xff\xff\xfb\0\0\0\x1e\0\x64\0o\0\x63\0k\0L\0i\0n\0k\0R\0\x65\0s\0u\0l\0t\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0G\0\xff\xff\xff\xfb\0\0\0\"\0\x64\0o\0\x63\0k\0O\0u\0t\0p\0u\0t\0R\0\x65\0s\0u\0l\0t\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0G\0\xff\xff\xff\0\0\x4\xb3\0\0\x2\x9c\0\0\0\x4\0\0\0\x4\0\0\0\x1\0\0\0\x2\xfc\0\0\0\x3\0\0\0\0\0\0\0\x1\0\0\0\x1c\0X\0\x42\0P\0T\0O\0O\0L\0\x42\0\x41\0R\0M\0\x41\0I\0N\x3\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\x1a\0T\0o\0o\0l\0\x42\0\x61\0r\0_\0\x44\0o\0\x63\0k\0s\x2\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x2\0\0\0\0)" diff --git a/harbour/contrib/hbide/environ.prg b/harbour/contrib/hbide/environ.prg deleted file mode 100644 index 2a19f8aa04..0000000000 --- a/harbour/contrib/hbide/environ.prg +++ /dev/null @@ -1,268 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 01Mar2010 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbide.ch" -#include "hbqtgui.ch" -#include "common.ch" -#include "hbclass.ch" - -/*----------------------------------------------------------------------*/ -// -// Class IdeEnvironments -// -/*----------------------------------------------------------------------*/ - -CLASS IdeEnvironments INHERIT IdeObject - - DATA aNames INIT {} - DATA aEnvrns INIT {} - DATA aShellContents INIT {} - DATA aCommons INIT {} - DATA oUI_1 - - METHOD new( oIDE ) - METHOD create( oIDE ) - METHOD destroy() - METHOD parse( cEnvFile ) - METHOD prepareBatch( cEnvName ) - METHOD getNames() INLINE ::aNames - METHOD saveEnv() - METHOD show() - METHOD fetchNew() - METHOD getHbmk2Commands( cEnvName ) - - ENDCLASS - -/*------------------------------------------------------------------------*/ - -METHOD IdeEnvironments:new( oIde ) - ::oIde := oIde - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD IdeEnvironments:create( oIde ) - - DEFAULT oIde TO ::oIde - ::oIde := oIde - - IF hb_fileExists( ::oINI:getEnvFile() ) - ::parse( ::oINI:getEnvFile() ) - ENDIF - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD IdeEnvironments:destroy() - - IF !empty( ::oUI ) - ::oUI:destroy() - ENDIF - IF !empty( ::oUI_1 ) - ::oUI_1:destroy() - ENDIF - - ::aNames := NIL - ::aEnvrns := NIL - ::aShellContents := NIL - ::aCommons := NIL - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD IdeEnvironments:parse( cEnvFile ) - LOCAL s, cPart, cEnv, a_, cKey, cVal - LOCAL aContents := hbide_readSource( cEnvFile ) - - ::aNames := {} - ::aEnvrns := {} - a_ := {} - cEnv := "" - - FOR EACH s IN aContents - s := alltrim( s ) - IF empty( s ) .OR. left( s, 1 ) == "#" /* Remark */ - LOOP - ENDIF - IF left( s, 1 ) == "[" - s := alltrim( strtran( s, "[", "" ) ) - s := alltrim( strtran( s, "]", "" ) ) - IF lower( s ) == "common" - cPart := "common" - ELSE - cPart := "environment" - IF !( s == cEnv ) .AND. !empty( cEnv ) - aadd( ::aNames, cEnv ) - aadd( ::aEnvrns, { cEnv, a_ } ) - ENDIF - cEnv := s - a_:= {} - ENDIF - ELSE - IF cPart == "common" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - aadd( ::aCommons, { lower( cKey ), cVal } ) /* Format Later */ - ENDIF - ELSEIF cPart == "environment" - IF hbide_parseFilter( s, @cKey, @cVal ) - aadd( a_, { lower( cKey ), cVal } ) - ENDIF - ENDIF - ENDIF - NEXT - IF !empty( cEnv ) .AND. !empty( a_ ) - aadd( ::aNames, cEnv ) - aadd( ::aEnvrns, { cKey, a_ } ) - ENDIF - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD IdeEnvironments:getHbmk2Commands( cEnvName ) - LOCAL n, s, a_, aCmd := {} - - IF ( n := ascan( ::aEnvrns, {|e_| e_[ 1 ] == cEnvName } ) ) > 0 - FOR EACH a_ IN ::aEnvrns[ n, 2 ] - s := a_[ 1 ] - IF s == "hbmk2" - aadd( aCmd, a_[ 2 ] ) - ENDIF - NEXT - ENDIF - - RETURN aCmd - -/*------------------------------------------------------------------------*/ - -METHOD IdeEnvironments:prepareBatch( cEnvName ) - LOCAL cPath, n, s, a_, aCmd := {} - - IF ( n := ascan( ::aEnvrns, {|e_| e_[ 1 ] == cEnvName } ) ) > 0 - FOR EACH a_ IN ::aEnvrns[ n, 2 ] - s := lower( a_[ 1 ] ) - IF s == "content" .OR. s == "contents" - aadd( aCmd, a_[ 2 ] ) - ENDIF - NEXT - ELSE - IF ! empty( cPath := ::oINI:getHarbourPath() ) - aadd( aCmd, "SET PATH=" + cPath + "bin" + ";%PATH%" ) - ELSE - aadd( aCmd, "SET PATH=%PATH%" ) - ENDIF - ENDIF - - RETURN hbide_getShellCommandsTempFile( aCmd ) - -/*------------------------------------------------------------------------*/ - -METHOD IdeEnvironments:show() - - IF empty( ::oUI ) - ::oUI := hbide_getUI( "environments" ) - - ::oEnvironDock:oWidget:setWidget( ::oUI:oWidget ) - - ::oUI:buttonCn :connect( "clicked()", {|| ::oEnvironDock:hide() } ) - ::oUI:buttonSave :connect( "clicked()", {|| ::saveEnv() } ) - ::oUI:buttonSaveExit:connect( "clicked()", {|| ::saveEnv(), ::oEnvironDock:hide() } ) - - ::oUI:editCompilers:setFont( ::oFont:oWidget ) - ENDIF - ::oUI:editCompilers:setPlainText( hb_memoread( ::oINI:getEnvFile() ) ) - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD IdeEnvironments:saveEnv() - LOCAL cText - - IF !empty( cText := ::oUI:editCompilers:toPlainText() ) - hb_MemoWrit( ::oINI:getEnvFile(), cText ) - ::parse( ::oINI:getEnvFile() ) - ENDIF - - RETURN Self - -/*------------------------------------------------------------------------*/ -// New Interface to Environments : TODO -/*------------------------------------------------------------------------*/ - -METHOD IdeEnvironments:fetchNew() - - IF empty( ::oUI_1 ) - ::oUI_1 := hbide_getUI( "environ" ) - ::oUI_1:setWindowFlags( Qt_Sheet ) - ENDIF - ::oUI_1:show() - - RETURN Self - -/*------------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/environ.ui b/harbour/contrib/hbide/environ.ui deleted file mode 100644 index 3c05353c62..0000000000 --- a/harbour/contrib/hbide/environ.ui +++ /dev/null @@ -1,804 +0,0 @@ - - - EnvForm - - - - 0 - 0 - 554 - 488 - - - - Environment - - - - - 14 - 10 - 39 - 16 - - - - Name: - - - - - - 10 - 28 - 197 - 22 - - - - - - - 430 - 28 - 51 - 24 - - - - Copy - - - - - - 490 - 28 - 51 - 24 - - - - Paste - - - - - - 12 - 56 - 431 - 16 - - - - Batch Commands: will be executed before any of the compiler/linker command is invoked. - - - - - - 10 - 74 - 531 - 53 - - - - QPlainTextEdit::NoWrap - - - - - - 236 - 10 - 46 - 14 - - - - Type: - - - - - - 234 - 28 - 109 - 22 - - - - - - - 370 - 28 - 51 - 24 - - - - New - - - - - - 10 - 140 - 533 - 303 - - - - 0 - - - - PRG Compiler - - - - - 8 - 11 - 31 - 16 - - - - Exe: - - - - - - 38 - 10 - 119 - 20 - - - - - - - 170 - 12 - 67 - 16 - - - - Install Path: - - - - - - 234 - 10 - 239 - 20 - - - - - - - 492 - 10 - 25 - 20 - - - - ... - - - - - - 10 - 38 - 191 - 19 - - - - -a Automatic memvar declaration - - - - - - 10 - 62 - 173 - 19 - - - - -b Include debug info - - - - - - 10 - 86 - 173 - 19 - - - - -l No line numbers - - - - - - 10 - 110 - 175 - 19 - - - - -v Variables are assumed (m->) - - - - - - 10 - 134 - 193 - 19 - - - - -z Supress short-cut optimizations - - - - - - 10 - 174 - 465 - 93 - - - - QPlainTextEdit::NoWrap - - - - - - 10 - 156 - 463 - 16 - - - - More Options - - - Qt::AlignCenter - - - - - - 288 - 38 - 109 - 13 - - - - -w Warning level: - - - - - - 288 - 62 - 119 - 16 - - - - -es Exit severity level: - - - - - - 288 - 86 - 119 - 16 - - - - -m No start procedure: - - - - - - 288 - 110 - 113 - 16 - - - - -g Output type: - - - - - - 416 - 38 - 57 - 22 - - - - - - - 416 - 62 - 57 - 22 - - - - - - - 416 - 86 - 57 - 22 - - - - - - - 416 - 110 - 57 - 22 - - - - - - - 288 - 134 - 115 - 16 - - - - -k Compatibility mode: - - - - - - 416 - 134 - 57 - 22 - - - - - - - C Compiler - - - - - 38 - 10 - 119 - 20 - - - - - - - 492 - 12 - 25 - 20 - - - - ... - - - - - - 234 - 12 - 239 - 20 - - - - - - - 8 - 12 - 31 - 16 - - - - Exe: - - - - - - 170 - 12 - 67 - 16 - - - - Install Path: - - - - - - 8 - 58 - 465 - 211 - - - - QPlainTextEdit::NoWrap - - - - - - 8 - 38 - 463 - 16 - - - - Compiler commands - write each one on separate line. - - - - - - Linker - - - - - 68 - 10 - 449 - 59 - - - - QPlainTextEdit::NoWrap - - - - - - 8 - 34 - 46 - 14 - - - - EXE - - - - - - 68 - 76 - 449 - 59 - - - - QPlainTextEdit::NoWrap - - - - - - 68 - 142 - 449 - 59 - - - - QPlainTextEdit::NoWrap - - - - - - 68 - 210 - 449 - 59 - - - - QPlainTextEdit::NoWrap - - - - - - 8 - 98 - 46 - 14 - - - - LIB - - - - - - 10 - 166 - 46 - 14 - - - - DLL - - - - - - 10 - 234 - 46 - 14 - - - - RES - - - - - - EXE Defaults - - - - - 8 - 10 - 511 - 16 - - - - Runtime static default files ( libraries ) - each entry on separate line. - - - - - - 8 - 32 - 511 - 237 - - - - QPlainTextEdit::NoWrap - - - - - - DLL Defaults - - - - - 8 - 10 - 511 - 16 - - - - DLL import default files ( libraries ) - each entry on separate line. - - - - - - 8 - 32 - 511 - 237 - - - - QPlainTextEdit::NoWrap - - - - - - User Cmds - - - - - 8 - 10 - 509 - 16 - - - - EXEcutable Projects - - - - - - 8 - 28 - 511 - 61 - - - - QPlainTextEdit::NoWrap - - - - - - 8 - 118 - 511 - 61 - - - - QPlainTextEdit::NoWrap - - - - - - 8 - 100 - 509 - 16 - - - - LIBrary Projects - - - - - - 8 - 208 - 511 - 61 - - - - QPlainTextEdit::NoWrap - - - - - - 8 - 190 - 509 - 16 - - - - DLL Projects - - - - - - Info - - - - - 8 - 10 - 511 - 259 - - - - QPlainTextEdit::NoWrap - - - - - - - - 380 - 456 - 75 - 24 - - - - OK - - - - - - 468 - 456 - 75 - 24 - - - - Cancel - - - - - - diff --git a/harbour/contrib/hbide/environments.ui b/harbour/contrib/hbide/environments.ui deleted file mode 100644 index b2112cd42f..0000000000 --- a/harbour/contrib/hbide/environments.ui +++ /dev/null @@ -1,75 +0,0 @@ - - - FormEnvironments - - - - 0 - 0 - 367 - 519 - - - - Form - - - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">HBIDE employes the concept of keeping everything tied together. It means all complier specific environments are kept together in a convinient way and applied as per need.</span></p> -<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">So here you view/edit all the environments you employ in your applications. At the time you will build the project, a list of stated environments will be presented to choose from.</span></p> -<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This opens up the possibility to experiment with different compilers without re-opening the IDE or setting up the envvars manually.</span></p></body></html> - - - - - - QPlainTextEdit::NoWrap - - - - - - - Cancel - - - false - - - - - - - Save and Close - - - - - - - Save - - - false - - - true - - - - - - - - diff --git a/harbour/contrib/hbide/fetchdate.ui b/harbour/contrib/hbide/fetchdate.ui deleted file mode 100644 index 4b4bf16db2..0000000000 --- a/harbour/contrib/hbide/fetchdate.ui +++ /dev/null @@ -1,71 +0,0 @@ - - - DialogDate - - - - 0 - 0 - 194 - 104 - - - - Fetch a date - - - - - 14 - 30 - 161 - 22 - - - - true - - - - - - 14 - 68 - 75 - 24 - - - - OK - - - - - - 102 - 68 - 75 - 24 - - - - Cancel - - - - - - 14 - 8 - 159 - 16 - - - - Select a date - - - - - - diff --git a/harbour/contrib/hbide/finddialog.ui b/harbour/contrib/hbide/finddialog.ui deleted file mode 100644 index 04cf00d43a..0000000000 --- a/harbour/contrib/hbide/finddialog.ui +++ /dev/null @@ -1,259 +0,0 @@ - - - DialogFind - - - - 0 - 0 - 333 - 155 - - - - Find and Replace - - - - - 272 - 6 - 51 - 24 - - - - Find - - - false - - - false - - - - - - 272 - 98 - 51 - 24 - - - - Qt::NoFocus - - - Replace - - - false - - - false - - - - - - 272 - 124 - 51 - 24 - - - - Qt::NoFocus - - - Close - - - false - - - - - - 10 - 100 - 253 - 22 - - - - true - - - - - - 10 - 128 - 71 - 19 - - - - Qt::NoFocus - - - Global - - - - - - 132 - 128 - 89 - 19 - - - - Qt::NoFocus - - - No prompting - - - - - - 10 - 52 - 161 - 41 - - - - - - - - - 8 - 4 - 141 - 19 - - - - Qt::NoFocus - - - Start from cursor position - - - - - - 8 - 20 - 141 - 19 - - - - Qt::NoFocus - - - Entire file - - - - - - - 180 - 52 - 81 - 41 - - - - - - - - - 10 - 4 - 41 - 19 - - - - Qt::NoFocus - - - up - - - - - - 10 - 20 - 51 - 19 - - - - Qt::NoFocus - - - Down - - - - - - - 10 - 32 - 81 - 19 - - - - Qt::NoFocus - - - Match case - - - - - - 132 - 32 - 71 - 19 - - - - Qt::NoFocus - - - List only - - - - - - 10 - 8 - 253 - 22 - - - - true - - - - - - diff --git a/harbour/contrib/hbide/findinfiles.ui b/harbour/contrib/hbide/findinfiles.ui deleted file mode 100644 index 816c0ca69e..0000000000 --- a/harbour/contrib/hbide/findinfiles.ui +++ /dev/null @@ -1,348 +0,0 @@ - - - FindReplInFiles - - - - 0 - 0 - 422 - 472 - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - Find & Replace in Files - - - - - - - 52 - 16777215 - - - - Projects: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - - 0 - 60 - - - - - 16777215 - 60 - - - - QAbstractItemView::NoEditTriggers - - - QAbstractItemView::MultiSelection - - - false - - - - - - - Qt::Horizontal - - - - - - - - 52 - 16777215 - - - - Expression - - - - - - - true - - - - - - - RegEx - - - - - - - List only - - - - - - - - 52 - 16777215 - - - - Replace: - - - - - - - true - - - - - - - Qt::Horizontal - - - - - - - Match case - - - - - - - - - - 52 - 0 - - - - - 52 - 16777215 - - - - File types: - - - - - - - all - - - - - - - .prg - - - - - - - .c - - - - - - - .c++ - - - - - - - .ch - - - - - - - .h - - - - - - - - 33 - 16777215 - - - - .rc - - - - - - - - - Qt::Horizontal - - - - - - - Include open tabs - - - - - - - Include sub-projects - - - - - - - Include sub-folders - - - - - - - - - Find - - - - - - - Replace - - - - - - - Stop - - - - - - - Close - - - - - - - - - QTextEdit::NoWrap - - - - - - - - - - 52 - 16777215 - - - - Folder: - - - - - - - true - - - - - - - ... - - - - - - - - - QFrame::Panel - - - QFrame::Sunken - - - - - - false - - - - - - - Include folders - - - - - - - - diff --git a/harbour/contrib/hbide/findinfilesex.ui b/harbour/contrib/hbide/findinfilesex.ui deleted file mode 100644 index 47be11920f..0000000000 --- a/harbour/contrib/hbide/findinfilesex.ui +++ /dev/null @@ -1,414 +0,0 @@ - - - FormFindInFiles - - - - 0 - 0 - 404 - 444 - - - - Find in Files - - - - 2 - - - 2 - - - - - - 16777215 - 175 - - - - - - - - 0 - - - - - Projects - - - - 2 - - - 2 - - - - - - 0 - 80 - - - - - 16777215 - 80 - - - - QAbstractItemView::NoEditTriggers - - - QAbstractItemView::MultiSelection - - - false - - - - - - - Include open tabs - - - - - - - Include sub-projects - - - - - - - true - - - - - - - ... - - - - - - - Include folders - - - - - - - Include sub-folders - - - - - - - - - - - 60 - 0 - - - - - 60 - 16777215 - - - - File(s) - - - - 2 - - - - - all - - - - - - - .prg - - - - - - - .c - - - - - - - .cpp - - - - - - - .ch - - - - - - - .h - - - - - - - - 40 - 16777215 - - - - .txt - - - - - - - - - - - - - - 0 - 70 - - - - - 16777215 - 70 - - - - - - - - 0 - - - - - - - - - 2 - - - - - - 40 - 16777215 - - - - Find - - - - - - - true - - - - - - - - 40 - 16777215 - - - - Replace - - - - - - - true - - - - - - - - - - - 60 - 16777215 - - - - - - - - 2 - - - - - RegEx - - - - - - - Case - - - - - - - List only - - - - - - - - - - - - - - 0 - 35 - - - - - 16777215 - 35 - - - - - - - - 4 - - - 0 - - - - - Find - - - - - - - Replace - - - - - - - Stop - - - - - - - Close - - - - - - - - - - Results - - - - 2 - - - 0 - - - - - QTextEdit::NoWrap - - - - - - - QFrame::Panel - - - QFrame::Sunken - - - - - - false - - - - - - - - - - - diff --git a/harbour/contrib/hbide/findreplace.prg b/harbour/contrib/hbide/findreplace.prg deleted file mode 100644 index d84147676f..0000000000 --- a/harbour/contrib/hbide/findreplace.prg +++ /dev/null @@ -1,1561 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 28Dec2009 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbide.ch" -#include "common.ch" -#include "hbclass.ch" -#include "hbqtgui.ch" - -/*----------------------------------------------------------------------*/ - -#define __buttonPrev_clicked__ 2001 -#define __buttonNext_clicked__ 2002 -#define __buttonFirst_clicked__ 2003 -#define __buttonLast_clicked__ 2004 -#define __buttonAll_clicked__ 2005 -#define __buttonClose__ 2006 -#define __buttonFolder__ 2007 -#define __buttonFind__ 2008 -#define __buttonRepl__ 2009 -#define __buttonStop__ 2010 -#define __checkAll__ 2011 -#define __comboFind__ 2012 -#define __checkListOnly__ 2013 -#define __checkFolders__ 2014 -#define __editResults__ 2015 -#define __editResults_contextMenu__ 2016 - -/*----------------------------------------------------------------------*/ - -CLASS IdeUpDown INHERIT IdeObject - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() - METHOD show( oEdit ) - METHOD position() - METHOD execEvent( nEvent, p ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeUpDown:new( oIde ) - - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUpDown:position() - LOCAL qRect, qHSBar, qVSBar, qEdit - - IF !empty( qEdit := ::oEM:getEditCurrent() ) - ::oUI:setParent( qEdit ) - - qHSBar := qEdit:horizontalScrollBar() - qVSBar := qEdit:verticalScrollBar() - - qRect := qEdit:geometry() - - ::oUI:move( qRect:width() - ::oUI:width() - iif( qVSBar:isVisible(), qVSBar:width() , 0 ), ; - qRect:height() - ::oUI:height() - iif( qHSBar:isVisible(), qHSBar:height(), 0 ) ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUpDown:show( oEdit ) - - DEFAULT oEdit TO ::oEM:getEditObjectCurrent() - - IF ! empty( oEdit ) - IF oEdit:aSelectionInfo[ 1 ] > -1 - ::oUI:setEnabled( .t. ) - ELSE - ::oUI:setEnabled( .f. ) - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUpDown:create( oIde ) - - DEFAULT oIde TO ::oIde - - ::oIde := oIde - - ::oUI := hbide_getUI( "updown_v" ) - - ::oUI:setWindowFlags( hb_bitOr( Qt_Tool, Qt_FramelessWindowHint ) ) - ::oUI:setFocusPolicy( Qt_NoFocus ) - - ::oUI:buttonPrev:setIcon( QIcon( hbide_image( "go-prev" ) ) ) - ::oUI:buttonPrev:setToolTip( "Find Previous" ) - ::oUI:buttonPrev:connect( "clicked()", {|| ::execEvent( __buttonPrev_clicked__ ) } ) - // - ::oUI:buttonNext:setIcon( QIcon( hbide_image( "go-next" ) ) ) - ::oUI:buttonNext:setToolTip( "Find Next" ) - ::oUI:buttonNext:connect( "clicked()", {|| ::execEvent( __buttonNext_clicked__ ) } ) - // - ::oUI:buttonFirst:setIcon( QIcon( hbide_image( "go-first" ) ) ) - ::oUI:buttonFirst:setToolTip( "Find First" ) - ::oUI:buttonFirst:connect( "clicked()", {|| ::execEvent( __buttonFirst_clicked__ ) } ) - // - ::oUI:buttonLast:setIcon( QIcon( hbide_image( "go-last" ) ) ) - ::oUI:buttonLast:setToolTip( "Find Last" ) - ::oUI:buttonLast:connect( "clicked()", {|| ::execEvent( __buttonLast_clicked__ ) } ) - // - ::oUI:buttonAll:setIcon( QIcon( hbide_image( "hilight-all" ) ) ) - ::oUI:buttonAll:setToolTip( "Highlight All" ) - ::oUI:buttonAll:connect( "clicked()", {|| ::execEvent( __buttonAll_clicked__ ) } ) - - ::oUI:setEnabled( .f. ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUpDown:execEvent( nEvent, p ) - LOCAL cText, oEdit - - HB_SYMBOL_UNUSED( p ) - IF ::lQuitting - RETURN Self - ENDIF - - IF !empty( oEdit := ::oEM:getEditObjectCurrent() ) - cText := oEdit:getSelectedText() - ENDIF - IF !empty( cText ) - SWITCH nEvent - - CASE __buttonPrev_clicked__ - oEdit:findEx( cText, QTextDocument_FindBackward, 0 ) - EXIT - CASE __buttonNext_clicked__ - oEdit:findEx( cText, 0, 0 ) - EXIT - CASE __buttonFirst_clicked__ - oEdit:findEx( cText, 0, 1 ) - EXIT - CASE __buttonLast_clicked__ - oEdit:findEx( cText, QTextDocument_FindBackward, 2 ) - EXIT - CASE __buttonAll_clicked__ - oEdit:highlightAll( cText ) - EXIT - ENDSWITCH - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUpDown:destroy() - - IF HB_ISOBJECT( ::oUI ) - ::oUI:destroy() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ -// IdeSearchReplace - Extended Window at the bottom -/*----------------------------------------------------------------------*/ - -CLASS IdeSearchReplace INHERIT IdeObject - - DATA oXbp - DATA qFindLineEdit - DATA qReplLineEdit - DATA nCurDirection INIT 0 - DATA cFind INIT "" - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() - METHOD beginFind() - METHOD setFindString( cText ) - METHOD find( cText, lBackward ) - METHOD startFromTop() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeSearchReplace:new( oIde ) - - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSearchReplace:create( oIde ) - - DEFAULT oIde TO ::oIde - - ::oIde := oIde - - ::oUI := hbide_getUI( "searchreplace" ) - - ::oUI:setFocusPolicy( Qt_StrongFocus ) - - ::oUI:frameFind:setStyleSheet( "" ) - ::oUI:frameReplace:setStyleSheet( "" ) - - ::oUI:buttonClose:setIcon( QIcon( hbide_image( "closetab" ) ) ) - ::oUI:buttonClose:setToolTip( "Close" ) - ::oUI:buttonClose:connect( "clicked()", {|| ::oUI:hide() } ) - - ::oUI:buttonNext:setIcon( QIcon( hbide_image( "next" ) ) ) - ::oUI:buttonNext:setToolTip( "Find Next" ) - ::oUI:buttonNext:connect( "clicked()", {|| ::find( ::cFind ), ::oIde:manageFocusInEditor() } ) - - ::oUI:buttonPrev:setIcon( QIcon( hbide_image( "previous" ) ) ) - ::oUI:buttonPrev:setToolTip( "Find Previous" ) - ::oUI:buttonPrev:connect( "clicked()", {|| ::find( ::cFind, .t. ), ::oIde:manageFocusInEditor() } ) - - ::oUI:checkReplace:setChecked( .f. ) - ::oUI:checkReplace:connect( "stateChanged(int)", {|i| ; - ::oUI:comboReplace:setEnabled( i == 2 ), ; - ::oUI:buttonReplace:setEnabled( i == 2 ), ; - iif( i == 2, ::oUI:frameReplace:show(), ::oUI:frameReplace:hide() ) } ) - - ::qFindLineEdit := ::oUI:comboFind:lineEdit() - ::qFindLineEdit:setFocusPolicy( Qt_StrongFocus ) - ::qFindLineEdit:setStyleSheet( "background-color: white;" ) - ::qFindLineEdit:connect( "textChanged(QString)", {|cText| ::setFindString( cText ) } ) - ::qFindLineEdit:connect( "returnPressed()" , {|| ::find( ::cFind ) } ) - - ::qReplLineEdit := ::oUI:comboReplace:lineEdit() - ::qReplLineEdit:setFocusPolicy( Qt_StrongFocus ) - ::qReplLineEdit:setStyleSheet( "background-color: white;" ) - - ::oUI:checkReplace:setEnabled( .f. ) - ::oUI:frameReplace:hide() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSearchReplace:destroy() - - IF HB_ISOBJECT( ::oUI ) - - ::qFindLineEdit:disconnect( "textChanged(QString)" ) - ::qFindLineEdit:disconnect( "returnPressed()" ) - - ::oUI:destroy() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSearchReplace:find( cText, lBackward ) - LOCAL qCursor, qDoc, qCur, qReg - LOCAL lFound := .f. - LOCAL nFlags := 0 - - DEFAULT lBackward TO .f. - - ::nCurDirection := iif( lBackward, QTextDocument_FindBackward, 0 ) - - IF Len( cText ) > 0 - qCursor := ::qCurEdit:textCursor() - - IF ::oUI:checkRegEx:isChecked() - qDoc := ::qCurEdit:document() - qReg := QRegExp() - qReg:setPattern( cText ) - qReg:setCaseSensitivity( iif( ::oUI:checkMatchCase:isChecked(), Qt_CaseSensitive, Qt_CaseInsensitive ) ) - - nFlags += ::nCurDirection - nFlags += iif( ::oUI:checkWhole:isChecked(), QTextDocument_FindWholeWords, 0 ) - - qCur := qDoc:find( qReg, qCursor, nFlags ) - lFound := ! qCur:isNull() - IF lFound - ::qCurEdit:setTextCursor( qCur ) - ENDIF - ELSE - nFlags += iif( ::oUI:checkMatchCase:isChecked(), QTextDocument_FindCaseSensitively, 0 ) - nFlags += iif( ::oUI:checkWhole:isChecked(), QTextDocument_FindWholeWords, 0 ) - nFlags += ::nCurDirection - - lFound := ::oEM:getEditCurrent():find( cText, nFlags ) - ENDIF - - IF ! lFound - ::qCurEdit:setTextCursor( qCursor ) - ::oUI:checkReplace:setChecked( .f. ) - ::oUI:checkReplace:setEnabled( .f. ) - ELSE - ::oUI:checkReplace:setEnabled( .t. ) - ::qCurEdit:centerCursor() - ENDIF - ENDIF - RETURN lFound - -/*----------------------------------------------------------------------*/ - -METHOD IdeSearchReplace:beginFind() - - ::oUI:checkReplace:setChecked( .f. ) - ::oUI:checkReplace:setEnabled( .f. ) - - ::oUI:radioTop:setChecked( .t. ) - - ::oUI:show() - ::cFind := "" - - ::qFindLineEdit:activateWindow() - ::qFindLineEdit:setFocus() - ::qFindLineEdit:selectAll() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSearchReplace:setFindString( cText ) - LOCAL qCursor, nPos - - IF empty( cText ) - RETURN .f. - ENDIF - - qCursor := ::qCurEdit:textCursor() - IF ::oUI:radioTop:isChecked() - nPos := qCursor:position() - qCursor:setPosition( 0 ) - ::qCurEdit:setTextCursor( qCursor ) - ENDIF - - IF ! ::find( cText ) - IF !empty( nPos ) - qCursor:setPosition( nPos ) - ::qCurEdit:setTextCursor( qCursor ) - ENDIF - ::cFind := "" - ::qFindLineEdit:setStyleSheet( getStyleSheet( "PathIsWrong", ::nAnimantionMode ) ) - ELSE - ::cFind := cText - ::qFindLineEdit:setStyleSheet( "background-color: white;" ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSearchReplace:startFromTop() - LOCAL qCursor - - qCursor := ::qCurEdit:textCursor() - qCursor:setPosition( 0 ) - ::qCurEdit:setTextCursor( qCursor ) - - ::find( ::cFind ) - - RETURN Self - -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -// IdeFindReplace -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -CLASS IdeFindReplace INHERIT IdeObject - - DATA qLineEdit - DATA qReplaceEdit - DATA cText - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() - METHOD show() - METHOD getFocus() - METHOD onClickReplace( nFrom ) - METHOD replaceSelection( cReplWith ) - METHOD replace() - METHOD onClickFind( nFrom ) - METHOD find( lWarn ) - METHOD updateFindReplaceData( cMode ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindReplace:new( oIde ) - - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindReplace:destroy() - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindReplace:getFocus() - - ::oUI:comboFindWhat:setFocus() - ::qLineEdit:activateWindow() - ::qLineEdit:setFocus() - - IF ! empty( ::cText := ::oEM:getSelectedText() ) - ::qLineEdit:setText( ::cText ) - ::updateFindReplaceData( "find" ) - ENDIF - ::qLineEdit:selectAll() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindReplace:create( oIde ) - - DEFAULT oIde TO ::oIde - - ::oIde := oIde - - ::oUI := hbide_getUI( "finddialog", ::oIde:oDlg:oWidget ) - - ::oUI:setWindowFlags( Qt_Sheet ) - - aeval( ::oINI:aFind , {|e| ::oUI:comboFindWhat:addItem( e ) } ) - aeval( ::oINI:aReplace, {|e| ::oUI:comboReplaceWith:addItem( e ) } ) - - ::oUI:radioFromCursor:setChecked( .t. ) - ::oUI:radioDown:setChecked( .t. ) - - ::oUI:connect( QEvent_Close, {|| ::oIde:oINI:cFindDialogGeometry := hbide_posAndSize( ::oUI:oWidget ) } ) - ::oUI:connect( QEvent_Hide , {|| ::oIde:oINI:cFindDialogGeometry := hbide_posAndSize( ::oUI:oWidget ) } ) - - ::oUI:buttonFind :connect( "clicked()" , {| | ::onClickFind( 0 ) } ) - ::oUI:buttonReplace:connect( "clicked()" , {| | ::onClickReplace( 0 ) } ) - ::oUI:buttonClose :connect( "clicked()" , {| | ::oIde:oINI:cFindDialogGeometry := hbide_posAndSize( ::oUI:oWidget ), ::oUI:hide() } ) - ::oUI:comboFindWhat:connect( "currentIndexChanged(QString)", {|p| ::oIde:oSBar:getItem( SB_PNL_SEARCH ):caption := "FIND: " + p } ) - ::oUI:checkListOnly:connect( "stateChanged(int)" , {|p| ::oUI:comboReplaceWith:setEnabled( p == 0 ), ; - iif( p == 1, ::oUI:buttonReplace:setEnabled( .f. ), NIL ) } ) - - ::qLineEdit := ::oUI:comboFindWhat:lineEdit() - ::qLineEdit:connect( "returnPressed()" , {|| ::updateFindReplaceData( "find" ), ::onClickFind( 1 ) } ) - ::qLineEdit:connect( "textChanged(QString)", {|| ::oUI:radioEntire:setChecked( .t. ) } ) - - ::qReplaceEdit := ::oUI:comboReplaceWith:lineEdit() - ::qReplaceEdit:connect( "returnPressed()", {|| ::updateFindReplaceData( "replace" ), ::onClickReplace( 1 ) } ) - - ::oUI:comboFindWhat:setCurrentIndex( -1 ) - ::oUI:comboReplaceWith:setCurrentIndex( -1 ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindReplace:show() - - IF ! ::oUI:isHidden() - ::oIde:oINI:cFindDialogGeometry := hbide_posAndSize( ::oUI:oWidget ) - ENDIF - - ::oIde:setPosByIniEx( ::oUI:oWidget, ::oINI:cFindDialogGeometry ) - - ::oUI:buttonReplace:setEnabled( .f. ) - ::oUI:checkGlobal:setEnabled( .f. ) - ::oUI:checkNoPrompting:setEnabled( .f. ) - ::oUI:checkListOnly:setChecked( .f. ) - - ::getFocus() - - IF ::oUI:isHidden() - ::oUI:show() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindReplace:onClickFind( nFrom ) - LOCAL lFound, nPos, qCursor - - HB_SYMBOL_UNUSED( nFrom ) - - IF ::oUI:radioEntire:isChecked() - ::oUI:radioFromCursor:setChecked( .t. ) - qCursor := ::qCurEdit:textCursor() - nPos := qCursor:position() - qCursor:setPosition( 0 ) - ::qCurEdit:setTextCursor( qCursor ) - IF ! ( lFound := ::find() ) - qCursor:setPosition( nPos ) - ::qCurEdit:setTextCursor( qCursor ) - ENDIF - ELSE - lFound := ::find() - ENDIF - - IF lFound - ::oUI:buttonReplace:setEnabled( .t. ) - ::oUI:checkGlobal:setEnabled( .t. ) - ::oUI:checkNoPrompting:setEnabled( .t. ) - ELSE - ::getFocus() - ::oUI:buttonReplace:setEnabled( .f. ) - ::oUI:checkGlobal:setEnabled( .f. ) - ::oUI:checkNoPrompting:setEnabled( .f. ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindReplace:find( lWarn ) - LOCAL nFlags - LOCAL cText := ::oUI:comboFindWhat:lineEdit():text() - LOCAL lFound := .f. - - DEFAULT lWarn TO .t. - - IF ! empty( cText ) - nFlags := 0 - nFlags += iif( ::oUI:checkMatchCase:isChecked(), QTextDocument_FindCaseSensitively, 0 ) - nFlags += iif( ::oUI:radioUp:isChecked(), QTextDocument_FindBackward, 0 ) - - IF ! ( lFound := ::oEM:getEditObjectCurrent():findEx( cText, nFlags ) ) .AND. lWarn - ::oEM:getEditObjectCurrent():clearSelection() - hbide_showWarning( "Cannot find : " + cText ) - ENDIF - ENDIF - - RETURN lFound - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindReplace:onClickReplace( nFrom ) - - HB_SYMBOL_UNUSED( nFrom ) - - IF ::oUI:comboReplaceWith:isEnabled() - ::replace() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindReplace:replaceSelection( cReplWith ) - LOCAL nB, nL, cBuffer, qCursor - - DEFAULT cReplWith TO "" - - qCursor := ::qCurEdit:textCursor() - IF qCursor:hasSelection() .and. ! empty( cBuffer := qCursor:selectedText() ) - nL := Len( cBuffer ) - nB := qCursor:position() - nL - - qCursor:beginEditBlock() - qCursor:removeSelectedText() - qCursor:insertText( cReplWith ) - qCursor:setPosition( nB + Len( cReplWith ) ) - ::qCurEdit:setTextCursor( qCursor ) - ::oEM:getEditObjectCurrent():clearSelection() - qCursor:endEditBlock() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindReplace:replace() - LOCAL cReplWith - LOCAL nFound - - IF !empty( ::qCurEdit ) - cReplWith := ::oUI:comboReplaceWith:lineEdit():text() - ::replaceSelection( cReplWith ) - - IF ::oUI:checkGlobal:isChecked() - IF ::oUI:checkNoPrompting:isChecked() - nFound := 1 - DO WHILE ::find( .f. ) - nFound++ - ::replaceSelection( cReplWith ) - ENDDO - ::oDK:setStatusText( SB_PNL_MAIN, "Replaced [" + hb_ntos( nFound ) + "] : " + cReplWith ) - ::oUI:buttonReplace:setEnabled( .f. ) - ::oUI:checkGlobal:setChecked( .f. ) - ::oUI:checkNoPrompting:setChecked( .f. ) - ELSE - ::find() - ENDIF - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindReplace:updateFindReplaceData( cMode ) - LOCAL cData, nIndex - - IF cMode == "find" - cData := ::oUI:comboFindWhat:lineEdit():text() - IF ! empty( cData ) - IF ( nIndex := ascan( ::oINI:aFind, {|e| e == cData } ) ) == 0 - hb_ains( ::oINI:aFind, 1, cData, .t. ) - ::oUI:comboFindWhat:insertItem( 0, cData ) - ENDIF - ENDIF - ::oDK:setStatusText( SB_PNL_SEARCH, cData ) - ELSE - cData := ::oUI:comboReplaceWith:lineEdit():text() - IF !empty( cData ) - IF ascan( ::oINI:aReplace, cData ) == 0 - hb_ains( ::oINI:aReplace, 1, cData, .t. ) - ::oUI:comboReplaceWith:insertItem( 0, cData ) - ENDIF - ENDIF - ENDIF - - RETURN nIndex - -/*----------------------------------------------------------------------*/ -// -// Class IdeFindInFiles -// -/*----------------------------------------------------------------------*/ - -#define L2S( l ) iif( l, "Yes", "No" ) - -#define F_BLACK '' -#define F_GREEN '' -#define F_RED '' -#define F_CYAN '' -#define F_BLUE '' -#define F_YELLOW '' - -#define F_SECTION '' -#define F_SECTION_ITEM '' -#define F_INFO '' -#define F_FILE '' -#define F_SEARCH '' - -#define F_END '' - -#define LOG_MISSING 1 -#define LOG_FINDS 2 -#define LOG_SEPARATOR 3 -#define LOG_FLAGS 4 -#define LOG_TERMINATED 5 -#define LOG_SECTION 6 -#define LOG_SECTION_ITEM 7 -#define LOG_EMPTY 8 -#define LOG_INFO 9 - -/*----------------------------------------------------------------------*/ - -CLASS IdeFindInFiles INHERIT IdeObject - - DATA aItems INIT {} - DATA lStop INIT .f. - DATA aInfo INIT {} - - DATA nSearched INIT 0 - DATA nFounds INIT 0 - DATA nMisses INIT 0 - - DATA cOrigExpr - DATA compRegEx - DATA cReplWith - DATA lRegEx INIT .F. - DATA lListOnly INIT .T. - DATA lMatchCase INIT .F. - DATA lNotDblClick INIT .F. - DATA lShowOnCreate INIT .T. - DATA lInDockWindow INIT .F. - - DATA qEditFind - - METHOD new( oIde, lShowOnCreate ) - METHOD create( oIde, lShowOnCreate ) - METHOD destroy() - METHOD show() - METHOD print() - METHOD paintRequested( qPrinter ) - METHOD find() - METHOD findInABunch( aFiles ) - METHOD showLog( nType, cMsg, aLines ) - - METHOD execEvent( nEvent, p ) - METHOD execContextMenu( p ) - METHOD buildUI() - METHOD replaceAll() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindInFiles:new( oIde, lShowOnCreate ) - - ::oIde := oIde - ::lShowOnCreate := lShowOnCreate - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindInFiles:create( oIde, lShowOnCreate ) - - DEFAULT oIde TO ::oIde - DEFAULT lShowOnCreate TO ::lShowOnCreate - - ::oIde := oIde - ::lShowOnCreate := lShowOnCreate - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindInFiles:destroy() - LOCAL qItem - - IF !empty( ::oUI ) - ::qEditFind:disConnect( "returnPressed()" ) - - FOR EACH qItem IN ::aItems - qItem := NIL - NEXT - - ::oUI:destroy() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindInFiles:buildUI() - LOCAL cText, qLineEdit, aProjList, cProj, qItem, n - - ::oUI := hbide_getUI( "findinfilesex" ) - - ::oFindDock:oWidget:setWidget( ::oUI:oWidget ) - - ::oUI:buttonFolder:setIcon( QIcon( ::resPath + "folder.png" ) ) - - aeval( ::oINI:aFind , {|e| ::oUI:comboExpr:addItem( e ) } ) - aeval( ::oINI:aReplace, {|e| ::oUI:comboRepl:addItem( e ) } ) - aeval( ::oINI:aFolders, {|e| ::oUI:comboFolder:addItem( e ) } ) - - n := ascan( ::oINI:aFind, {|e| e == ::cWrkFind } ) - ::oUI:comboExpr:setCurrentIndex( n-1 ) - - n := ascan( ::oINI:aReplace, {|e| e == ::cWrkReplace } ) - ::oUI:comboRepl:setCurrentIndex( n - 1 ) - - n := ascan( ::oIni:aFolders, {|e| e == ::cWrkFolderFind } ) - ::oUI:comboFolder:setCurrentIndex( n - 1 ) - ::oUI:comboFolder:setEnabled( .f. ) - ::oUI:checkFolders:setChecked( .f. ) - ::oUI:checkSubFolders:setChecked( .f. ) - ::oUI:checkSubFolders:setEnabled( .f. ) - - ::oUI:buttonRepl:setEnabled( .f. ) - ::oUI:buttonStop:setEnabled( .f. ) - ::oUI:comboRepl:setEnabled( .f. ) - - ::oUI:checkListOnly:setChecked( .t. ) - ::oUI:checkPrg:setChecked( .t. ) - - qLineEdit := ::oUI:comboExpr:lineEdit() - IF !empty( ::oEM ) - IF !empty( cText := ::oEM:getSelectedText() ) - qLineEdit:setText( cText ) - ENDIF - ENDIF - qLineEdit:selectAll() - - /* Populate Projects Name */ - IF !empty( ::oPM ) - aProjList := ::oPM:getProjectsTitleList() - FOR EACH cProj IN aProjList - IF !empty( cProj ) - qItem := QListWidgetItem() - qItem:setFlags( Qt_ItemIsUserCheckable + Qt_ItemIsEnabled + Qt_ItemIsSelectable ) - qItem:setText( cProj ) - qItem:setCheckState( 0 ) - ::oUI:listProjects:addItem( qItem ) - aadd( ::aItems, qItem ) - ENDIF - NEXT - ENDIF - - ::oUI:editResults:setReadOnly( .t. ) - ::oUI:editResults:setFont( ::oIde:oFont:oWidget ) - ::oUI:editResults:setContextMenuPolicy( Qt_CustomContextMenu ) - - ::oUI:labelStatus:setText( "Ready" ) - ::oUI:comboExpr:setFocus() - - /* Attach all signals */ - // - ::oUI:buttonClose :connect( "clicked()" , {| | ::execEvent( __buttonClose__ ) } ) - ::oUI:buttonFolder :connect( "clicked()" , {| | ::execEvent( __buttonFolder__ ) } ) - ::oUI:buttonFind :connect( "clicked()" , {| | ::execEvent( __buttonFind__ ) } ) - ::oUI:buttonRepl :connect( "clicked()" , {| | ::execEvent( __buttonRepl__ ) } ) - ::oUI:buttonStop :connect( "clicked()" , {| | ::execEvent( __buttonStop__ ) } ) - ::oUI:checkAll :connect( "stateChanged(int)" , {|p| ::execEvent( __checkAll__ , p ) } ) - ::oUI:comboExpr :connect( "currentIndexChanged(QString)" , {|p| ::execEvent( __comboFind__ , p ) } ) - ::oUI:checkListOnly:connect( "stateChanged(int)" , {|p| ::execEvent( __checkListOnly__ , p ) } ) - ::oUI:checkFolders :connect( "stateChanged(int)" , {|p| ::execEvent( __checkFolders__ , p ) } ) - ::oUI:editResults :connect( "copyAvailable(bool)" , {|p| ::execEvent( __editResults__ , p ) } ) - ::oUI:editResults :connect( "customContextMenuRequested(QPoint)", {|p| ::execEvent( __editResults_contextMenu__, p ) } ) - - ::qEditFind := ::oUI:comboExpr:lineEdit() - ::qEditFind:connect( "returnPressed()", {|| ::execEvent( __buttonFind__ ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindInFiles:execEvent( nEvent, p ) - LOCAL cPath, qLineEdit, qCursor, cSource, v, nInfo - - IF ::lQuitting - RETURN Self - ENDIF - - SWITCH nEvent - - CASE __buttonClose__ - ::oFindDock:hide() - EXIT - - CASE __comboFind__ - ::oIde:oSBar:getItem( SB_PNL_SEARCH ):caption := "FIND: " + p - EXIT - - CASE __checkListOnly__ - ::oUI:comboRepl:setEnabled( p == 0 ) - ::oUI:buttonRepl:setEnabled( !( p == 1 ) ) - EXIT - - CASE __checkFolders__ - ::oUI:comboFolder:setEnabled( p == 2 ) - ::oUI:checkSubFolders:setEnabled( p == 2 ) - EXIT - - CASE __buttonFind__ - ::find() - EXIT - - CASE __buttonRepl__ - ::replaceAll() - EXIT - - CASE __buttonStop__ - ::lStop := .t. - EXIT - - CASE __buttonFolder__ - cPath := hbide_fetchADir( ::oDlg, "Select a folder for search operation", ::cLastFileOpenPath ) - IF !empty( cPath ) - ::oIde:cLastFileOpenPath := cPath - - qLineEdit := ::oUI:comboFolder:lineEdit() - qLineEdit:setText( cPath ) - IF ascan( ::oINI:aFolders, {|e| e == cPath } ) == 0 - hb_ains( ::oINI:aFolders, 1, cPath, .t. ) - ENDIF - ::oUI:comboFolder:insertItem( 0, cPath ) - ENDIF - EXIT - - CASE __checkAll__ - v := !( p == 0 ) - ::oUI:checkPrg:setChecked( v ) - ::oUI:checkC:setChecked( v ) - ::oUI:checkCpp:setChecked( v ) - ::oUI:checkCh:setChecked( v ) - ::oUI:checkH:setChecked( v ) - ::oUI:checkRc:setChecked( v ) - EXIT - - CASE __editResults_contextMenu__ - ::execContextMenu( p ) - EXIT - - CASE __editResults__ - IF p .AND. ! ::lNotDblClick - qCursor := ::oUI:editResults:textCursor() - nInfo := qCursor:blockNumber() + 1 - - IF nInfo <= Len( ::aInfo ) .AND. ::aInfo[ nInfo, 1 ] == -2 - cSource := ::aInfo[ nInfo, 2 ] - - ::oSM:editSource( cSource, 0, 0, 0, NIL, NIL, .f., .t. ) - qCursor := ::oIde:qCurEdit:textCursor() - qCursor:setPosition( 0 ) - qCursor:movePosition( QTextCursor_Down, QTextCursor_MoveAnchor, ::aInfo[ nInfo, 3 ] - 1 ) - qCursor:movePosition( QTextCursor_Right, QTextCursor_MoveAnchor, ::aInfo[ nInfo, 4 ] - 1 ) - qCursor:movePosition( QTextCursor_Right, QTextCursor_KeepAnchor, Len( ::aInfo[ nInfo, 5 ] ) ) - ::oIde:qCurEdit:setTextCursor( qCursor ) - ::oIde:manageFocusInEditor() - ENDIF - ELSE - ::lNotDblClick := .F. - ENDIF - EXIT - ENDSWITCH - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindInFiles:execContextMenu( p ) - LOCAL nLine, qCursor, qMenu, qAct, cFind - - qCursor := ::oUI:editResults:textCursor() - nLine := qCursor:blockNumber() + 1 - - IF nLine <= Len( ::aInfo ) - qMenu := QMenu() - - qMenu:addAction( "Copy" ) - qMenu:addAction( "Select All" ) - qMenu:addAction( "Clear" ) - qMenu:addAction( "Print" ) - qMenu:addAction( "Save as..." ) - qMenu:addSeparator() - qMenu:addAction( "Find" ) - qMenu:addSeparator() - IF ::aInfo[ nLine, 1 ] == -2 /* Found Line */ - qMenu:addAction( "Replace Line" ) - ELSEIF ::aInfo[ nLine, 1 ] == -1 /* Source File */ - qMenu:addAction( "Open" ) - qMenu:addAction( "Replace All" ) - ENDIF - qMenu:addSeparator() - qMenu:addAction( "Zom In" ) - qMenu:addAction( "Zoom Out" ) - - IF ! empty( qAct := qMenu:exec( ::oUI:editResults:mapToGlobal( p ) ) ) - SWITCH qAct:text() - - CASE "Save as..." - EXIT - CASE "Find" - IF !empty( cFind := hbide_fetchAString( ::oUI:editResults, , "Find what?", "Find" ) ) - ::lNotDblClick := .T. - IF !( ::oUI:editResults:find( cFind, 0 ) ) - MsgBox( "Not Found" ) - ENDIF - ENDIF - EXIT - CASE "Print" - ::print() - EXIT - CASE "Clear" - ::oUI:editResults:clear() - ::aInfo := {} - EXIT - CASE "Copy" - ::lNotDblClick := .T. - ::oUI:editResults:copy() - EXIT - CASE "Select All" - ::oUI:editResults:selectAll() - EXIT - CASE "Replace Line" - EXIT - CASE "Replace Source" - EXIT - CASE "Zoom In" - ::oUI:editResults:zoomIn() - EXIT - CASE "Zoom Out" - ::oUI:editResults:zoomOut() - EXIT - ENDSWITCH - ENDIF - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindInFiles:show() - - IF empty( ::oUI ) - ::buildUI() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindInFiles:find() - LOCAL lPrg, lC, lCpp, lH, lCh, lRc, a_ - LOCAL lTabs, lSubF, lSubP, cFolder, qItem, aFilter, cExt, cMask, cWrkFolder, cProjPath - LOCAL nStart, nEnd, cSource, aDir, cProjTitle, aProjFiles - LOCAL aOpenSrc := {} - LOCAL aFolderSrc := {} - LOCAL aProjSrc := {} - LOCAL aProjs := {} - LOCAL aPaths := {} - - IF empty( ::cOrigExpr := ::oUI:comboExpr:currentText() ) - RETURN Self - ENDIF - - ::lListOnly := ::oUI:checkListOnly:isChecked() - ::lMatchCase := ::oUI:checkMatchCase:isChecked() - ::cReplWith := ::oUI:comboRepl:currentText() - - ::lRegEx := ::oUI:checkRegEx:isChecked() - IF ::lRegEx - ::compRegEx := hb_regExComp( ::cOrigExpr, ::lMatchCase ) - IF ! hb_isRegEx( ::compRegEx ) - MsgBox( "Error in Regular Expression" ) - RETURN Self - ENDIF - ENDIF - - cFolder := ::oUI:comboFolder:currentText() - cWrkFolder := cFolder - lTabs := ::oUI:checkOpenTabs:isChecked() - lSubF := ::oUI:checkSubFolders:isChecked() - lSubP := ::oUI:checkSubProjects:isChecked() - /* Type of files */ - lPrg := ::oUi:checkPrg:isChecked() - lC := ::oUI:checkC:isChecked() - lCpp := ::oUI:checkCpp:isChecked() - lH := ::oUI:checkH:isChecked() - lCh := ::oUI:checkCh:isChecked() - lRc := ::oUI:checkRc:isChecked() /* Conceptually it is now lText */ - - aFilter := hbide_buildFilter( lPrg, lC, lCpp, lH, lCh, lRc ) - - /* Process Open Tabs */ - IF lTabs - FOR EACH a_ IN ::aTabs - cSource := a_[ 2 ]:sourceFile - IF hbide_isSourceOfType( cSource, aFilter ) - aadd( aOpenSrc, cSource ) - ENDIF - NEXT - ENDIF - - /* Process Folder */ - IF ::oUI:checkFolders:isChecked() .AND. ! empty( cFolder ) - hbide_fetchSubPaths( @aPaths, cFolder, ::oUI:checkSubFolders:isChecked() ) - - FOR EACH cFolder IN aPaths - FOR EACH cExt IN aFilter - cMask := hbide_pathToOsPath( cFolder + cExt ) - aDir := directory( cMask ) - FOR EACH a_ IN aDir - aadd( aFolderSrc, cFolder + a_[ 1 ] ) - NEXT - NEXT - NEXT - ENDIF - - /* Process Projects */ - IF !empty( ::aItems ) - FOR EACH qItem IN ::aItems - IF qItem:checkState() == 2 - aadd( aProjs, qItem:text() ) - ENDIF - NEXT - ENDIF - IF !empty( aProjs ) - FOR EACH cProjTitle IN aProjs - a_:= {} - IF !empty( aProjFiles := ::oPM:getSourcesByProjectTitle( cProjTitle ) ) - cProjPath := ::oPM:getProjectPathFromTitle( cProjTitle ) - FOR EACH cSource IN aProjFiles - IF hbide_isSourceOfType( cSource, aFilter ) - aadd( a_, hbide_syncProjPath( cProjPath, hbide_stripFilter( cSource ) ) ) - ENDIF - NEXT - ENDIF - IF !empty( a_ ) - aadd( aProjSrc, { cProjTitle, a_ } ) - ENDIF - NEXT - ENDIF - - /* Supress Find button - user must not click it again */ - ::oUI:buttonFind:setEnabled( .f. ) - ::oUI:buttonStop:setEnabled( .t. ) - - ::nSearched := 0 - ::nFounds := 0 - ::nMisses := 0 - - ::oUI:labelStatus:setText( "Ready" ) - - /* Fun Begins */ - ::showLog( LOG_SEPARATOR ) - ::showLog( LOG_FLAGS, "[Begins: " + dtoc( date() ) + "-" + time() + "][" + "Find Expression: " + ::cOrigExpr + "]" ) - ::showLog( LOG_FLAGS, hbide_getFlags( lPrg, lC, lCpp, lH, lCh, lRc, lTabs, lSubF, lSubP, ::lRegEx, ::lListOnly, ::lMatchCase ) ) - ::showLog( LOG_EMPTY ) - - nStart := seconds() - - IF lTabs - ::showLog( LOG_SECTION, "OpenTabs" ) - IF !empty( aOpenSrc ) - ::findInABunch( aOpenSrc ) - ELSE - ::showLog( LOG_INFO, "No matching files found" ) - ENDIF - ENDIF - - IF ::oUI:checkFolders:isChecked() .AND. ! empty( cFolder ) - ::showLog( LOG_SECTION, "Folders" ) - IF !empty( aFolderSrc ) - ::showLog( LOG_SECTION_ITEM, "Folder: " + cFolder ) - ::findInABunch( aFolderSrc ) - ELSE - ::showLog( LOG_INFO, "No matching files found" ) - ENDIF - ENDIF - - IF !empty( aProjs ) - ::showLog( LOG_SECTION, "Projects" ) - IF !empty( aProjSrc ) - FOR EACH a_ IN aProjSrc - ::showLog( LOG_SECTION_ITEM, "Project: " + a_[ 1 ] ) - ::findInABunch( a_[ 2 ] ) - NEXT - ELSE - ::showLog( LOG_INFO, "No matching files found" ) - ENDIF - ENDIF - - nEnd := seconds() - - ::showLog( LOG_EMPTY ) - ::showLog( LOG_FLAGS, "[Ends:" + dtoc( date() ) + "-" + time() + "-" + hb_ntos( nEnd - nStart ) + " Secs]" + ; - "[Searched: " + hb_ntos( ::nSearched ) + "][Finds: " + hb_ntos( ::nFounds ) + "]" + ; - "[Files not found: " + hb_ntos( ::nMisses ) + "]" ) - ::showLog( LOG_SEPARATOR ) - ::showLog( LOG_EMPTY ) - - ::oUI:labelStatus:setText( "[ Time: " + hb_ntos( nEnd - nStart ) + " ] " + ; - "[ Searched: " + hb_ntos( ::nSearched ) + " ] [ Finds: " + hb_ntos( ::nFounds ) + " ] " + ; - "[ Files not found: " + hb_ntos( ::nMisses ) + " ]" ) - ::lStop := .f. - ::oUI:buttonStop:setEnabled( .f. ) - ::oUI:buttonFind:setEnabled( .t. ) - - IF ::nFounds > 0 - IF ascan( ::oINI:aFind, {|e| e == ::cOrigExpr } ) == 0 - hb_ains( ::oINI:aFind, 1, ::cOrigExpr, .t. ) - ::oUI:comboFolder:insertItem( 0, ::cOrigExpr ) - ENDIF - ::oIde:cWrkFind := ::cOrigExpr - ::oIde:cWrkFolderFind := cWrkFolder - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindInFiles:findInABunch( aFiles ) - LOCAL s, cExpr, nLine, aLines, aBuffer, cLine, nNoMatch, aMatch, regEx - - nNoMatch := 0 - FOR EACH s IN aFiles - IF ::lStop /* Stop button is pressed */ - ::showLog( LOG_EMPTY ) - ::showLog( LOG_TERMINATED ) - EXIT - ENDIF - aLines := {} - s := hbide_pathToOSPath( s ) - IF hb_fileExists( s ) - ::nSearched++ - IF ::oEM:isOpen( s ) - ::oSM:editSource( s, 0, 0, 0, NIL, "Main", .f., .t. ) - aBuffer := hb_ATokens( StrTran( ::qCurEdit:toPlainText(), Chr( 13 ) ), Chr( 10 ) ) - ELSE - aBuffer := hb_ATokens( StrTran( hb_MemoRead( s ), Chr( 13 ) ), Chr( 10 ) ) - ENDIF - nLine := 0 - - IF ::lRegEx - regEx := ::compRegEx - FOR EACH cLine IN aBuffer - nLine++ - // exp, string, lMatchCase, lNewLine, nMaxMatch, nMatchWhich, lMatchOnly - IF !empty( aMatch := hb_regExAll( regEx, cLine, ::lMatchCase, .F., 0, 1, .F. ) ) - aadd( aLines, { nLine, cLine, aMatch } ) - ENDIF - NEXT - ELSE - IF ::lMatchCase - cExpr := ::cOrigExpr - FOR EACH cLine IN aBuffer - nLine++ - IF cExpr $ cLine - aadd( aLines, { nLine, cLine, NIL } ) - ENDIF - NEXT - ELSE - cExpr := lower( ::cOrigExpr ) - FOR EACH cLine IN aBuffer - nLine++ - IF cExpr $ lower( cLine ) - aadd( aLines, { nLine, cLine, NIL } ) - ENDIF - NEXT - ENDIF - ENDIF - - IF Len( aLines ) > 0 - ::showLog( LOG_FINDS, s, aLines ) - ::nFounds++ - ELSE - nNoMatch++ - ENDIF - ELSE - ::showLog( LOG_MISSING, s ) - ::nMisses++ - ENDIF - NEXT - IF nNoMatch == Len( aFiles ) - ::showLog( LOG_INFO, "Searched (" + hb_ntos( Len( aFiles ) ) + ") files, no matches found" ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindInFiles:replaceAll() - LOCAL nL, nB, qCursor, aFind - LOCAL cSource := "" - - IF empty( ::cReplWith := ::oUI:comboRepl:currentText() ) - RETURN Self - ENDIF - nL := Len( ::cReplWith ) - - IF ! hbide_getYesNo( "Starting REPLACE operation", "No way to interrupt", "Critical" ) - RETURN Self - ENDIF - - FOR EACH aFind IN ::aInfo - IF aFind[ 1 ] == -2 - IF ! ( cSource == aFind[ 2 ] ) - cSource := aFind[ 2 ] - ::oSM:editSource( cSource, 0, 0, 0, NIL, "Main", .f., .t. ) - ENDIF - - qCursor := ::oIde:qCurEdit:textCursor() - qCursor:setPosition( 0 ) - qCursor:movePosition( QTextCursor_Down, QTextCursor_MoveAnchor, aFind[ 3 ] - 1 ) - qCursor:movePosition( QTextCursor_Right, QTextCursor_MoveAnchor, aFind[ 4 ] - 1 ) - qCursor:movePosition( QTextCursor_Right, QTextCursor_KeepAnchor, Len( aFind[ 5 ] ) ) - ::qCurEdit:setTextCursor( qCursor ) - - nB := qCursor:position() - - qCursor:beginEditBlock() - qCursor:removeSelectedText() - qCursor:insertText( ::cReplWith ) - qCursor:setPosition( nB + nL ) - ::qCurEdit:setTextCursor( qCursor ) - ::oEM:getEditObjectCurrent():clearSelection() - qCursor:endEditBlock() - ENDIF - NEXT - - ::oUI:editResults:clear() /* Mandatory - otherwise previous info will agin be inclusive */ - ::aInfo := {} - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindInFiles:showLog( nType, cMsg, aLines ) - LOCAL a_, n, cPre, cPost, nWidth, cText, nB, cL, nL, cT, cExp, aM - LOCAL qCursor, qResult - - qResult := ::oUI:editResults - - DEFAULT cMsg TO "" - cMsg := hbide_convertHtmlDelimiters( cMsg ) - - qCursor := ::oUI:editResults:textCursor() - - SWITCH nType - - CASE LOG_SEPARATOR - qResult:append( F_BLACK + hbide_outputLine( "=", 68 ) + F_END ) - aadd( ::aInfo, { 0, NIL, NIL } ) - EXIT - - CASE LOG_FLAGS - qResult:append( F_BLACK + cMsg + F_END ) - aadd( ::aInfo, { 0, NIL, NIL } ) - EXIT - - CASE LOG_INFO - qResult:append( F_INFO + "" + cMsg + "" + F_END ) - aadd( ::aInfo, { 0, NIL, NIL } ) - EXIT - - CASE LOG_SECTION - qResult:append( F_SECTION + "" + cMsg + "" + F_END ) - aadd( ::aInfo, { 0, NIL, NIL } ) - EXIT - - CASE LOG_SECTION_ITEM - qResult:append( F_SECTION_ITEM + cMsg + F_END ) - aadd( ::aInfo, { 0, NIL, NIL } ) - EXIT - - CASE LOG_FINDS - cText := F_FILE + "" + cMsg + " ( "+ hb_ntos( Len( aLines ) ) + " )" + "" + F_END - ::oUI:editResults:append( cText ) - ::oUI:labelStatus:setText( cText ) - aadd( ::aInfo, { -1, cMsg, NIL } ) - - n := 0 - aeval( aLines, {|a_| n := max( n, a_[ 1 ] ) } ) - nWidth := iif( n < 10, 1, iif( n < 100, 2, iif( n < 1000, 3, iif( n < 10000, 4, iif( n < 100000, 5, 7 ) ) ) ) ) - - IF ::lRegEx - FOR EACH a_ IN aLines - nL := a_[ 1 ] - aM := a_[ 3 ] - nB := aM[ 1, 2 ] - cL := hbide_buildResultLine( a_[ 2 ], aM ) - cT := aM[ 1, 1 ] - - qResult:append( F_BLACK + "   (" + strzero( nL, nWidth ) + ")  " + cL + F_END ) - - aadd( ::aInfo, { -2, cMsg, nL, nB, cT } ) - qCursor:movePosition( QTextCursor_Down ) - NEXT - ELSE - cExp := iif( ::lMatchCase, ::cOrigExpr, lower( ::cOrigExpr ) ) - FOR EACH a_ IN aLines - nL := a_[ 1 ] - cL := a_[ 2 ] - //nB := at( cExp, cL ) - nB := at( cExp, iif( ::lMatchCase, cL, lower( cL ) ) ) - cPre := substr( cL, 1, nB - 1 ) - cPost := substr( cL, nB + Len( cExp ) ) - cT := substr( cL, nB, Len( cExp ) ) - cL := hbide_convertHtmlDelimiters( cPre ) + F_SEARCH + "" + hbide_convertHtmlDelimiters( cT ) + ; - "" + F_END + hbide_convertHtmlDelimiters( cPost ) - - qResult:append( F_BLACK + "   (" + strzero( nL, nWidth ) + ")  " + cL + F_END ) - - // mode, source, line#, pos, slctn - aadd( ::aInfo, { -2, cMsg, nL, nB, cT } ) - qCursor:movePosition( QTextCursor_Down ) - NEXT - ENDIF - EXIT - - CASE LOG_TERMINATED - qResult:append( F_RED + "---------------- Terminated ---------------" + F_END ) - aadd( ::aInfo, { 0, NIL, NIL } ) - EXIT - - CASE LOG_MISSING - qResult:append( F_RED + cMsg + F_END ) - aadd( ::aInfo, { 0, NIL, NIL } ) - EXIT - - CASE LOG_EMPTY - qResult:append( F_BLACK + " " + F_END ) - aadd( ::aInfo, { 0, NIL, NIL } ) - EXIT - - ENDSWITCH - - qCursor:movePosition( QTextCursor_Down ) - ::oUI:editResults:setTextCursor( qCursor ) - - QApplication():processEvents() - RETURN Self - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_buildResultLine( cLine, aM ) - LOCAL cT, cR, i - - FOR i := 1 TO Len( aM ) - cR := aM[ i, 1 ] - cT := replicate( chr( 255 ), Len( aM[ i, 1 ] ) ) - cLine := strtran( cLine, cR, cT, 1, 1 ) - NEXT - FOR i := 1 TO Len( aM ) - cR := replicate( chr( 255 ), Len( aM[ i, 1 ] ) ) - cT := F_SEARCH + "" + hbide_convertHtmlDelimiters( aM[ i, 1 ] ) + "" + F_END - cLine := strtran( cLine, cR, cT, 1, 1 ) - NEXT - - RETURN cLine - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindInFiles:print() - LOCAL qDlg - - qDlg := QPrintPreviewDialog( ::oUI:oWidget ) - qDlg:setWindowTitle( "Harbour-QT Preview Dialog" ) - qDlg:connect( "paintRequested(QPrinter*)", {|p| ::paintRequested( p ) } ) - qDlg:exec() - qDlg:disconnect( "paintRequested(QPrinter*)" ) - - RETURN self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFindInFiles:paintRequested( qPrinter ) - ::oUI:editResults:print( qPrinter ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_buildFilter( lPrg, lC, lCpp, lH, lCh, lTxt ) - LOCAL aFilter := {} - LOCAL aExt - - IF lPrg - aadd( aFilter, "*.prg" ) - ENDIF - IF lC - aadd( aFilter, "*.c" ) - ENDIF - IF lCpp - aadd( aFilter, "*.cpp" ) - ENDIF - IF lh - aadd( aFilter, "*.h" ) - ENDIF - IF lCh - aadd( aFilter, "*.ch" ) - aadd( aFilter, "*.h" ) - ENDIF - IF lTxt - aExt := hb_atokens( hbide_setIde():oINI:cTextFileExtensions, "," ) - aeval( aExt, {|e| iif( empty( e ), NIL, aadd( aFilter, e ) ) } ) - ENDIF - - RETURN aFilter - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_getFlags( lPrg, lC, lCpp, lH, lCh, lRc, lTabs, lSubF, lSubP, lRegEx, lListOnly, lMatchCase ) - LOCAL s := "" - - HB_SYMBOL_UNUSED( lTabs ) - HB_SYMBOL_UNUSED( lSubF ) - HB_SYMBOL_UNUSED( lSubP ) - HB_SYMBOL_UNUSED( lListOnly ) - - s += "[.prg=" + L2S( lPrg ) + "]" - s += "[.c=" + L2S( lC ) + "]" - s += "[.cpp=" + L2S( lCpp ) + "]" - s += "[.h=" + L2S( lH ) + "]" - s += "[.ch=" + L2S( lCh ) + "]" - s += "[.rc=" + L2S( lRc ) + "]" - s += "[RegEx=" + L2S( lRegEx ) + "]" - s += "[Case=" + L2S( lMatchCase ) + "]" - - RETURN s - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_isSourceOfType( cSource, aFilter ) - LOCAL cExt - - hb_fNameSplit( cSource, , , @cExt ) - cExt := lower( cExt ) - - RETURN ascan( aFilter, {|e| cExt $ e } ) > 0 - -/*----------------------------------------------------------------------*/ - - diff --git a/harbour/contrib/hbide/findsource.ui b/harbour/contrib/hbide/findsource.ui deleted file mode 100644 index 68f51a6a33..0000000000 --- a/harbour/contrib/hbide/findsource.ui +++ /dev/null @@ -1,107 +0,0 @@ - - - Dialog - - - - 0 - 0 - 308 - 151 - - - - Find Project File - - - - - 16 - 8 - 125 - 16 - - - - File Name: - - - - - - 16 - 28 - 277 - 22 - - - - - - - 16 - 60 - 121 - 77 - - - - Search Mode - - - - - 16 - 24 - 97 - 19 - - - - File name only - - - - - - 16 - 44 - 82 - 19 - - - - As listed - - - - - - - 216 - 84 - 75 - 24 - - - - OK - - - - - - 216 - 112 - 75 - 24 - - - - Cancel - - - - - - diff --git a/harbour/contrib/hbide/format.prg b/harbour/contrib/hbide/format.prg deleted file mode 100644 index b7d2d45a40..0000000000 --- a/harbour/contrib/hbide/format.prg +++ /dev/null @@ -1,226 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 07Jan2011 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbide.ch" -#include "common.ch" -#include "hbclass.ch" -#include "hbqtgui.ch" - -/*----------------------------------------------------------------------*/ - -CLASS IdeFormat INHERIT IdeObject - - DATA lSelOnly INIT .f. - DATA oFormat - DATA qEdit - DATA qLayout - DATA qHiliter - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() - METHOD show() - METHOD execEvent( cEvent, p ) - METHOD format( nMode ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeFormat:new( oIde ) - - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFormat:create( oIde ) - - DEFAULT oIde TO ::oIde - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFormat:destroy() - - IF !empty( ::oUI ) - ::oUI:btnEditCmnds:disconnect( "clicked()" ) - ::oUI:btnStart :disconnect( "clicked()" ) - ::oUI:btnCancel :disconnect( "clicked()" ) - ::oUI:btnUpdSrc :disconnect( "clicked()" ) - ::oUI:checkSelOnly:disconnect( "stateChanged(int)" ) - - ::qEdit := NIL - ::qHiliter := NIL - ::oFormat := NIL - - ::oUI:destroy() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFormat:show() - - IF empty( ::oUI ) - ::oUI := hbide_getUI( "format" ) - ::oFormatDock:oWidget:setWidget( ::oUI:oWidget ) - - ::oUI:btnEditCmnds:connect( "clicked()" , {| | ::execEvent( "buttonEditCmds_clicked" ) } ) - ::oUI:btnStart :connect( "clicked()" , {| | ::execEvent( "buttonStart_clicked" ) } ) - ::oUI:btnCancel :connect( "clicked()" , {| | ::execEvent( "buttonCancel_clicked" ) } ) - ::oUI:btnUpdSrc :connect( "clicked()" , {| | ::execEvent( "buttonUpdSrc_clicked" ) } ) - ::oUI:checkSelOnly:connect( "stateChanged(int)" , {|i| ::execEvent( "checkSelOnly_changed", i ) } ) - - ::qEdit := ::oUI:plainFormatter - - ::qEdit:setLineWrapMode( QTextEdit_NoWrap ) - ::qEdit:setFont( ::oIde:oFont:oWidget ) - ::qEdit:ensureCursorVisible() - ::qEdit:setReadOnly( .t. ) - ::qEdit:setTextInteractionFlags( Qt_TextSelectableByMouse + Qt_TextSelectableByKeyboard ) - ::qHiliter := ::oTH:SetSyntaxHilighting( ::qEdit, "Pritpal's Favourite" ) - - ::oFormat := HbFormatCode():new() - ENDIF - - ::lSelOnly := .f. - ::oUI:checkSelOnly:setChecked( .f. ) - ::qEdit:clear() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFormat:execEvent( cEvent, p ) - - HB_SYMBOL_UNUSED( p ) - - IF ::lQuitting - RETURN Self - ENDIF - - SWITCH cEvent - - CASE "checkSelOnly_changed" - ::lSelOnly := p > 0 - EXIT - - CASE "buttonStart_clicked" - ::format( 1 ) - EXIT - - CASE "buttonUpdSrc_clicked" - ::format( 2 ) - EXIT - - CASE "buttonCancel_clicked" - ::oFormatDock:hide() - EXIT - - CASE "buttonEditCmds_clicked" - EXIT - - ENDSWITCH - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeFormat:format( nMode ) - LOCAL oEdit, aText, cBuffer - - HB_SYMBOL_UNUSED( nMode ) - - IF !empty( oEdit := ::oEM:getEditObjectCurrent() ) - IF ::lSelOnly - cBuffer := oEdit:getSelectedText() - ELSE - cBuffer := oEdit:qEdit:toPlainText() - ENDIF - - aText := hb_aTokens( strtran( cBuffer, chr( 13 ) ), chr( 10 ) ) - - #ifdef __PRITPAL__ - IF nMode == 1 - FormatCode( aText, 3 ) - ELSE - ::oFormat:reFormat( aText ) - ENDIF - #else - ::oFormat:reFormat( aText ) - #endif - - ::qEdit:setPlainText( hbide_arrayToMemo( aText ) ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/format.ui b/harbour/contrib/hbide/format.ui deleted file mode 100644 index 2887b66414..0000000000 --- a/harbour/contrib/hbide/format.ui +++ /dev/null @@ -1,87 +0,0 @@ - - - FormFormatter - - - - 0 - 0 - 392 - 508 - - - - Form - - - - - - - 0 - 80 - - - - - 16777215 - 80 - - - - - - - - - - Current selection only - - - - - - - Edit list of command keywords - - - - - - - Start - - - - - - - Cancel - - - - - - - Update Source - - - - - - - - - - QFrame::StyledPanel - - - 3 - - - - - - - - diff --git a/harbour/contrib/hbide/funclist.ui b/harbour/contrib/hbide/funclist.ui deleted file mode 100644 index e101261cdb..0000000000 --- a/harbour/contrib/hbide/funclist.ui +++ /dev/null @@ -1,104 +0,0 @@ - - - Form - - - - 0 - 0 - 400 - 486 - - - - Form - - - - - - - - - - - - - 46 - 16777215 - - - - Syntax: - - - - - - - - - - - 70 - 16777215 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Horizontal - - - - - - - Mark Projects - - - - - - - Load Tags - - - - - - - Re-Tag - - - - - - - Close - - - - - - - - 16777215 - 100 - - - - - - - - - diff --git a/harbour/contrib/hbide/functions.prg b/harbour/contrib/hbide/functions.prg deleted file mode 100644 index 575e51f4c5..0000000000 --- a/harbour/contrib/hbide/functions.prg +++ /dev/null @@ -1,695 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 06Mar2010 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbide.ch" -#include "common.ch" -#include "hbclass.ch" -#include "xbp.ch" -#include "hbqtgui.ch" - -/*----------------------------------------------------------------------*/ - -#define FLIST_NAME 1 -#define FLIST_TYPE 2 -#define FLIST_LINE 3 -#define FLIST_SOURCE 4 -#define FLIST_NAME_1 5 -#define FLIST_TYPE_1 6 -#define FLIST_SYNTAX 7 - -/*----------------------------------------------------------------------*/ - -#define __editFunc_textChanged__ 2001 -#define __editFunc_returnPressed__ 2002 -#define __buttonMark_clicked__ 2003 -#define __buttonLoad_clicked__ 2004 -#define __buttonTag_clicked__ 2005 -#define __buttonClose_clicked__ 2006 -#define __tableFuncList_itemSelectionChanged__ 2007 -#define __tableFuncList_itemDoubleClicked__ 2008 - -/*----------------------------------------------------------------------*/ - -CLASS IdeFunctions INHERIT IdeObject - - DATA isNotSetYet INIT .t. - DATA aHdr INIT {} - DATA aItems INIT {} - DATA aTags INIT { { "", {} } } - DATA aList INIT {} - DATA inAction INIT .f. - DATA nPNm INIT 25 - DATA nPPr INIT 15 - DATA nPSr INIT 50 - DATA aProjList INIT {} - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() - METHOD clear( lHdrAlso ) - METHOD show() - METHOD tagProject( cProjectTitle, lGUI ) - METHOD populateTable() - METHOD consolidateList() - METHOD buildHeader() - METHOD execEvent( nEvent, p ) - METHOD openFunction( lCheckDuplicates ) - METHOD jumpToFunction( cWord ) - METHOD positionToFunction( cWord, lShowTip ) - METHOD buildTags() - METHOD loadTags( aProjects ) - METHOD listProjects() - METHOD clearProjects() - METHOD getMarkedProjects() - METHOD enableControls( lEnable ) - METHOD getFunctionPrototypes() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeFunctions:new( oIde ) - ::oIde := oIde - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFunctions:create( oIde ) - - DEFAULT oIde TO ::oIde - ::oIde := oIde - - ::oUI := hbide_getUI( "funclist" ) - - ::buildHeader() - - ::oUI:editFunction :connect( "textChanged(QString)" , {|p| ::execEvent( __editFunc_textChanged__ , p ) } ) - ::oUI:editFunction :connect( "returnPressed()" , {| | ::execEvent( __editFunc_returnPressed__ ) } ) - ::oUI:buttonMark :connect( "clicked()" , {| | ::execEvent( __buttonMark_clicked__ ) } ) - ::oUI:buttonLoad :connect( "clicked()" , {| | ::execEvent( __buttonLoad_clicked__ ) } ) - ::oUI:buttonTag :connect( "clicked()" , {| | ::execEvent( __buttonTag_clicked__ ) } ) - ::oUI:buttonClose :connect( "clicked()" , {| | ::execEvent( __buttonClose_clicked__ ) } ) - ::oUI:tableFuncList:connect( "itemSelectionChanged()" , {| | ::execEvent( __tableFuncList_itemSelectionChanged__ ) } ) - ::oUI:tableFuncList:connect( "itemDoubleClicked(QTableWidgetItem*)", {|p| ::execEvent( __tableFuncList_itemDoubleClicked__, p ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFunctions:execEvent( nEvent, p ) - LOCAL n, nLen - - IF ::lQuitting - RETURN Self - ENDIF - - SWITCH nEvent - CASE __editFunc_textChanged__ - p := upper( p ) - nLen := Len( p ) - IF ( n := ascan( ::aList, {|e_| left( e_[ 1 ], nLen ) == p } ) ) > 0 - ::oUI:tableFuncList:setCurrentItem( ::aItems[ n ] ) - ENDIF - EXIT - CASE __editFunc_returnPressed__ - ::openFunction( .f. ) - EXIT - CASE __tableFuncList_itemDoubleClicked__ - ::openFunction( .f. ) - EXIT - CASE __buttonMark_clicked__ - ::oUI:listProjects:show() - ::listProjects() - EXIT - CASE __buttonLoad_clicked__ - ::oUI:listProjects:hide() - ::loadTags() - EXIT - CASE __buttonTag_clicked__ - ::oUI:listProjects:hide() - ::buildTags() - ::oEM:updateCompleter() - EXIT - CASE __buttonClose_clicked__ - ::oFunctionsDock:hide() - EXIT - CASE __tableFuncList_itemSelectionChanged__ - n := ::oUI:tableFuncList:currentRow() - IF n >= 0 - ::oUI:editSyntax:setText( ::aList[ n + 1, 2 ] ) - ENDIF - EXIT - ENDSWITCH - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFunctions:buildHeader() - LOCAL oTbl, qItm, cHdr, qFnt, qHdr - LOCAL cDH := " " - - oTbl := ::oUI:tableFuncList - - qFnt := QFont( "Courier New" ) - oTbl:setFont( qFnt ) - - oTbl:verticalHeader():hide() - - qHdr := oTbl:horizontalHeader() - qHdr:setStretchLastSection( .t. ) - - oTbl:setColumnCount( 1 ) - - cHdr := pad( "Name", ::nPNm ) + cDH + "Typ " + cDH + " Line" + cDH + ; - pad( "Project", ::nPPr ) + cDH + pad( "Source", ::nPSr ) - - qItm := QTableWidgetItem() - qItm:setText( cHdr ) - qItm:setFont( qFnt ) - qItm:setTextAlignment( Qt_AlignLeft ) - aadd( ::aHdr, qItm ) - oTbl:setHorizontalHeaderItem( 0, qItm ) - oTbl:setColumnWidth( 0, 800 ) - - oTbl:setShowGrid( .f. ) - - oTbl:setAlternatingRowColors( .t. ) - - ::oUI:listProjects:hide() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFunctions:destroy() - LOCAL qitm - - IF !empty( ::oUI ) - ::clearProjects() - - FOR EACH qItm IN ::aHdr - qItm := NIL - NEXT - ::aHdr := {} - - ::clear( .t. ) - - ::oUI:destroy() - ENDIF - - ::isNotSetYet := NIL - ::aHdr := NIL - ::aItems := NIL - ::aTags := NIL - ::aList := NIL - ::inAction := NIL - ::nPNm := NIL - ::nPPr := NIL - ::nPSr := NIL - ::aProjList := NIL - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFunctions:clear( lHdrAlso ) - LOCAL qItm - - IF lHdrAlso - FOR EACH qItm IN ::aHdr - qItm := NIL - NEXT - ::aHdr := {} - ENDIF - - FOR EACH qItm IN ::aItems - qItm := NIL - NEXT - ::aItems := {} - - IF lHdrAlso - ::oUI:tableFuncList:clear() - ELSE - ::oUI:tableFuncList:clearContents() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFunctions:show() - - IF ::isNotSetYet - ::isNotSetYet := .f. - - ::oFunctionsDock:oWidget:setWidget( ::oUI:oWidget ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFunctions:positionToFunction( cWord, lShowTip ) - LOCAL nLen, p, n, cProto := "" - - IF !empty( ::aList ) - p := upper( cWord ) - nLen := Len( p ) - IF ( n := ascan( ::aList, {|e_| left( e_[ 1 ], nLen ) == p } ) ) > 0 - ::oUI:editFunction:setText( cWord ) - ::oUI:tableFuncList:setCurrentItem( ::aItems[ n ] ) - - cProto := ::aList[ n, 2 ] - - IF lShowTip - // TODO: where - - ENDIF - ENDIF - ENDIF - - RETURN cProto - -/*----------------------------------------------------------------------*/ - -METHOD IdeFunctions:jumpToFunction( cWord ) - LOCAL nLen, lOpened := .f., p, n - - IF !empty( ::aList ) - p := upper( cWord ) - nLen := Len( p ) - IF ( n := ascan( ::aList, {|e_| left( e_[ 1 ], nLen ) == p } ) ) > 0 - ::oUI:editFunction:setText( cWord ) - ::oUI:tableFuncList:setCurrentItem( ::aItems[ n ] ) - lOpened := ::openFunction( .t. ) - ENDIF - ENDIF - - RETURN lOpened - -/*----------------------------------------------------------------------*/ - -METHOD IdeFunctions:openFunction( lCheckDuplicates ) - LOCAL n, cFunc, cSource, oEdit, lFound, cProto - LOCAL lOpened := .f. - - IF ( n := ::oUI:tableFuncList:currentRow() ) >= 0 - n++ - cFunc := ::aList[ n, 1 ] - IF lCheckDuplicates .AND. n < Len( ::aList ) .AND. ::aList[ n + 1, 1 ] == cFunc - ::oFunctionsDock:show() - ::oUI:tableFuncList:setFocus() - RETURN lOpened - ENDIF - - cProto := ::aList[ n, 2 ] - cSource := alltrim( substr( ::aList[ n, 3 ], 53 ) ) - ::oSM:editSource( cSource, , , , , , .f. ) - - IF !empty( oEdit := ::oEM:getEditCurrent() ) - IF !( lFound := oEdit:find( cProto, QTextDocument_FindCaseSensitively ) ) - lFound := oEdit:find( cProto, QTextDocument_FindBackward + QTextDocument_FindCaseSensitively ) - ENDIF - IF lFound - oEdit:centerCursor() - lOpened := .t. - ELSE - HB_TRACE( HB_TR_DEBUG, "IdeFunctions:openFunction()", "It should not happen." ) - ENDIF - ENDIF - ENDIF - - RETURN lOpened - -/*----------------------------------------------------------------------*/ - -METHOD IdeFunctions:clearProjects() - LOCAL qItm - - IF !empty( ::aProjList ) - FOR EACH qItm IN ::aProjList - qItm := NIL - NEXT - ENDIF - ::aProjList := {} - ::oUI:listProjects:clear() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFunctions:listProjects() - LOCAL s, qItm, oLst := ::oUI:listProjects - - ::clearProjects() - - FOR EACH s IN ::oPM:getProjectsTitleList() - qItm := QListWidgetItem() - qItm:setText( s ) - qItm:setCheckState( Qt_Unchecked ) - //oLst:addItem_1( qItm ) - oLst:addItem( qItm ) - aadd( ::aProjList, qItm ) - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFunctions:getMarkedProjects() - LOCAL qItm, a_:= {} - - FOR EACH qItm IN ::aProjList - IF qItm:checkState() == 2 - aadd( a_, qItm:text() ) - ENDIF - NEXT - - RETURN a_ - -/*----------------------------------------------------------------------*/ - -METHOD IdeFunctions:enableControls( lEnable ) - - ::inAction := ! lEnable - - ::oUI:buttonMark:setEnabled( lEnable ) - ::oUI:buttonLoad:setEnabled( lEnable ) - ::oUI:buttonTag:setEnabled( lEnable ) - - ::oUI:editFunction:setEnabled( lEnable ) - - ::showApplicationCursor( iif( lEnable, NIL, Qt_BusyCursor ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFunctions:loadTags( aProjects ) - LOCAL cProjectTitle, cProjFile, cTagFile, aTags, n, a_ - LOCAL lPopulate := .f. - LOCAL qApp := QApplication() - - DEFAULT aProjects TO ::getMarkedProjects() - - IF empty( aProjects ) - RETURN Self - ENDIF - a_:= aProjects - - IF !( ::inAction ) - ::enableControls( .f. ) - - FOR EACH cProjectTitle IN a_ - cProjFile := ::oPM:getProjectFileNameFromTitle( cProjectTitle ) - IF ! empty( cProjFile ) .AND. hb_fileExists( cProjFile ) - cTagFile := hb_FNameExtSet( cProjFile, ".tag" ) - IF hb_fileExists( cTagFile ) - lPopulate := .t. - - aTags := hb_deserialize( hb_memoRead( cTagFile ) ) - - IF ( n := ascan( ::aTags, {|e_| e_[ 1 ] == cProjectTitle } ) ) == 0 - aadd( ::aTags, { cProjectTitle, aTags } ) - ELSE - ::aTags[ n, 2 ] := aTags - ENDIF - ENDIF - ENDIF - - qApp:processEvents() - IF ::lQuitting - EXIT - ENDIF - NEXT - - IF lPopulate - ::consolidateList() - ::populateTable() - ENDIF - - ::enableControls( .t. ) - ENDIF - - ::clearProjects() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFunctions:buildTags() - LOCAL cProjectTitle - LOCAL a_:= ::getMarkedProjects() - - IF !empty( a_ ) - FOR EACH cProjectTitle IN a_ - ::tagProject( cProjectTitle ) - NEXT - ::oIde:oINI:aTaggedProjects := a_ - ::clearProjects() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFunctions:tagProject( cProjectTitle, lGUI ) - LOCAL aSumData := "" - LOCAL cComments, aSummary, cPath, cSource, cExt, aTags, aText, aFuncList, aLines - LOCAL cProjFile, cRoot, aCTags, aSources, cSrc, a_, n - LOCAL qApp := QApplication() - - hb_default( @lGUI, .T. ) - - IF !( ::inAction ) - IF lGUI - ::enableControls( .f. ) - ENDIF - - cProjFile := ::oPM:getProjectFileNameFromTitle( cProjectTitle ) - aSources := ::oPM:getSourcesByProjectTitle( cProjectTitle ) - cRoot := ::oPM:getProjectPathFromTitle( cProjectTitle ) - - FOR EACH cSource IN aSources - aSources[ cSource:__enumIndex() ] := hbide_syncProjPath( cRoot, cSource ) - NEXT - - aCTags := {} - - FOR EACH cSrc IN aSources - aFuncList := {} - aLines := {} - - HB_FNameSplit( cSrc, @cPath, @cSource, @cExt ) - - IF upper( cExt ) $ ".PRG.CPP" - IF !empty( aText := hbide_readSource( cSrc ) ) - aSumData := {} - cComments := CheckComments( aText ) - aSummary := Summarize( aText, cComments, @aSumData , iif( upper( cExt ) == ".PRG", 9, 1 ) ) - aTags := UpdateTags( cSrc, aSummary, aSumData, @aFuncList, @aLines, aText ) - - IF !empty( aTags ) - aeval( aTags, {|e_| aadd( aCTags, { e_[1],e_[2],e_[3],e_[4],e_[7] } ) } ) - ENDIF - ENDIF - ENDIF - - qApp:processEvents() - IF ::lQuitting - EXIT - ENDIF - NEXT - - FOR EACH a_ IN aCTags - a_[ 5 ] := iif( left( a_[ 5 ], 1 ) == ":", substr( a_[ 5 ], 2 ), a_[ 5 ] ) - NEXT - - IF ( n := ascan( ::aTags, {|e_| e_[ 1 ] == cProjectTitle } ) ) == 0 - aadd( ::aTags, { cProjectTitle, aCTags } ) - ELSE - ::aTags[ n, 2 ] := aCTags - ENDIF - - hb_memowrit( hb_FNameExtSet( cProjFile, ".tag" ), hb_serialize( aCTags ) ) - - IF lGUI - ::consolidateList() - ::populateTable() - - ::enableControls( .t. ) - ENDIF - ENDIF - - RETURN cProjFile - -//----------------------------------------------------------------------// - -METHOD IdeFunctions:consolidateList() - LOCAL s, a_, b_, cProjectTitle - LOCAL cDL := " " - - ::aList := {} - - FOR EACH b_ IN ::aTags - IF !empty( cProjectTitle := b_[ 1 ] ) - FOR EACH a_ IN b_[ 2 ] - s := pad( a_[ 1 ], ::nPNm ) + ; - cDL + ; - hbide_abbrFuncType( a_[ 2 ] ) + ; - cDL + ; - padl( ltrim( str( a_[ 3 ] ) ), 6 ) + ; - cDL + ; - pad( cProjectTitle, ::nPPr ) + ; - cDL + ; - pad( a_[ 4 ], ::nPSr ) - - aadd( ::aList, { a_[ 1 ], a_[ 5 ], s } ) - NEXT - ENDIF - NEXT - - IF !empty( ::aList ) - asort( ::aList, , , {|e_,f_| e_[ 1 ] < f_[ 1 ] } ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFunctions:populateTable() - LOCAL oTbl, qItm, a_, n - LOCAL qApp := QApplication() - - ::clear( .t. ) - ::buildHeader() - - oTbl := ::oUI:tableFuncList - oTbl:setRowCount( Len( ::aList ) ) - - n := 0 - FOR EACH a_ IN ::aList - qItm := QTableWidgetItem() - - qItm:setText( a_[ 3 ] ) - qItm:setTooltip( a_[ 2 ] ) - oTbl:setItem( n, 0, qItm ) - oTbl:setRowHeight( n, 16 ) - - qApp:processEvents() - IF ::lQuitting - EXIT - ENDIF - - aadd( ::aItems, qItm ) - n++ - ::oUI:labelEntries:setText( "Entries: " + hb_ntos( n ) ) - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeFunctions:getFunctionPrototypes() - LOCAL aProto := {}, a_ - - FOR EACH a_ IN ::aList - aadd( aProto, alltrim( a_[ 2 ] ) ) - NEXT - - RETURN aProto - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_abbrFuncType( cFunc ) - LOCAL cAbbr := "" - - IF "STATIC" $ cFunc - cAbbr += "S" - ENDIF - IF "FUNC" $ cFunc - cAbbr += "F" - ENDIF - IF "PROC" $ cFunc - cAbbr += "P" - ENDIF - IF "HB_" $ cFunc - cAbbr += ":C" - ENDIF - IF "CLASS" $ cFunc - cAbbr += "C" - ENDIF - IF "METHOD" $ cFunc - cAbbr += "M" - IF ":" $ cFunc - cAbbr += ":D" - ENDIF - ENDIF - - RETURN padc( cAbbr, 3 ) - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/harbourhelp.prg b/harbour/contrib/hbide/harbourhelp.prg deleted file mode 100644 index 9f7397f401..0000000000 --- a/harbour/contrib/hbide/harbourhelp.prg +++ /dev/null @@ -1,1472 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 20Feb2010 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbide.ch" -#include "common.ch" -#include "hbclass.ch" -#include "hbqtgui.ch" - -/*----------------------------------------------------------------------*/ - -#define DOC_FUN_BEGINS -5 -#define DOC_FUN_ENDS -1 -#define DOC_FUN_NONE 0 -#define DOC_FUN_TEMPLATE 1 -#define DOC_FUN_FUNCNAME 2 -#define DOC_FUN_CATEGORY 3 -#define DOC_FUN_SUBCATEGORY 4 -#define DOC_FUN_ONELINER 5 -#define DOC_FUN_SYNTAX 6 -#define DOC_FUN_ARGUMENTS 7 -#define DOC_FUN_RETURNS 8 -#define DOC_FUN_DESCRIPTION 9 -#define DOC_FUN_EXAMPLES 10 -#define DOC_FUN_TESTS 11 -#define DOC_FUN_FILES 12 -#define DOC_FUN_STATUS 13 -#define DOC_FUN_PLATFORMS 14 -#define DOC_FUN_SEEALSO 15 -#define DOC_FUN_VERSION 16 -#define DOC_FUN_INHERITS 17 -#define DOC_FUN_METHODS 18 -#define DOC_FUN_EXTERNALLINK 19 - -/*----------------------------------------------------------------------*/ - -#define __buttonInstall_clicked__ 2001 -#define __buttonHome_clicked__ 2002 -#define __buttonBackward_clicked__ 2003 -#define __buttonForward_clicked__ 2004 -#define __buttonUp_clicked__ 2005 -#define __buttonRefresh_clicked__ 2006 -#define __buttonPrint_clicked__ 2007 -#define __buttonPdf_clicked__ 2008 -#define __buttonPdfAll_clicked__ 2009 -#define __browserView_anchorClicked__ 2010 -#define __tabWidgetContents_currentChanged__ 2011 -#define __editInstall_textChanged__ 2012 -#define __editIndex_textChanged__ 2013 -#define __editIndex_returnPressed__ 2014 -#define __treeDoc_itemSelectionChanged__ 2015 -#define __treeCategory_itemSelectionChanged__ 2016 -#define __listIndex_ItemDoubleClicked__ 2017 - -/*----------------------------------------------------------------------*/ - -CLASS IdeDocFunction - - DATA cName INIT "" - DATA cTemplate INIT "" - DATA cCategory INIT "" - DATA cSubCategory INIT "" - DATA cOneliner INIT "" - DATA cStatus INIT "" - DATA cPlatforms INIT "" - DATA cSeeAlso INIT "" - DATA cVersion INIT "" - DATA cInherits INIT "" - DATA cExternalLink INIT "" - DATA aSyntax INIT {} - DATA aArguments INIT {} - DATA aReturns INIT {} - DATA aDescription INIT {} - DATA aExamples INIT {} - DATA aTests INIT {} - DATA aFiles INIT {} - DATA aMethods INIT {} - DATA aSource INIT {} - - DATA oTVItem - DATA cSourceTxt INIT "" - - DATA lOk INIT .f. - - METHOD new() INLINE Self - METHOD destroy() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeDocFunction:destroy() - - ::cName := NIL - ::cTemplate := NIL - ::cCategory := NIL - ::cSubCategory := NIL - ::cOneliner := NIL - ::cStatus := NIL - ::cPlatforms := NIL - ::cSeeAlso := NIL - ::cVersion := NIL - ::cInherits := NIL - ::cExternalLink := NIL - ::aSyntax := NIL - ::aArguments := NIL - ::aReturns := NIL - ::aDescription := NIL - ::aExamples := NIL - ::aTests := NIL - ::aFiles := NIL - ::aMethods := NIL - ::aSource := NIL - ::oTVItem := NIL - ::cSourceTxt := NIL - ::lOk := NIL - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -CLASS IdeHarbourHelp INHERIT IdeObject - - DATA oUI - DATA cPathInstall INIT "" - DATA cDocPrefix - - DATA aNodes INIT {} - DATA aFunctions INIT {} - DATA aFuncByFile INIT {} - DATA aHistory INIT {} - DATA aCategory INIT {} - - DATA nCurTVItem INIT 0 - DATA nCurInHist INIT 0 - - DATA qHiliter - - DATA hIndex INIT {=>} - - DATA aProtoTypes INIT {} - DATA lLoadedProto INIT .f. - DATA aFuncDefs INIT {} - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD show() - METHOD destroy() - METHOD clear() - - METHOD execEvent( nEvent, p, p1 ) - - METHOD setImages() - METHOD setTooltips() - METHOD setParameters() - - METHOD installSignals() - METHOD refreshDocTree() - METHOD updateViewer( aHtm, cDocName ) - METHOD populateFuncDetails( n ) - METHOD populateTextFile( cTextFile ) - METHOD populateRootInfo() - METHOD populatePathInfo( cPath ) - METHOD populateIndex() - METHOD populateIndexedSelection() - METHOD buildView( oFunc ) - METHOD print() - METHOD exportAsPdf() - METHOD exportAsPdfAll() - METHOD paintRequested( qPrinter ) - METHOD parseTextFile( cTextFile, oParent ) - METHOD jumpToFunction( cFunction ) - METHOD getDocFunction( acBuffer ) - METHOD getFunctionPrototypes() - METHOD pullDefinitions( acBuffer ) - METHOD pullDefinitionsHBD( cFileHBD ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:new( oIde ) - - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:create( oIde ) - LOCAL cPath - - DEFAULT oIde TO ::oIde - ::oIde := oIde - - ::cPathInstall := ::oINI:getHarbourPath() - IF empty( ::cPathInstall ) - hb_fNameSplit( hb_dirBase(), @cPath ) - IF hb_fileExists( cPath + "hbmk2.exe" ) - ::cPathInstall := cPath + ".." + hb_ps() - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:show() - - IF empty( ::oUI ) - ::oUI := hbide_getUI( "docviewgenerator" ) - - ::oDocViewDock:oWidget:setWidget( ::oUI:oWidget ) - - ::setImages() - ::setTooltips() - ::installSignals() - ::setParameters() - - ::populateRootInfo() - - ::refreshDocTree() - - ::oUI:editInstall:setText( ::cPathInstall ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:destroy() - LOCAL aTmp, oFun - - IF ! empty( ::oUI ) - ::oUI:buttonInstall :disconnect( "clicked()" ) - ::oUI:buttonHome :disconnect( "clicked()" ) - ::oUI:buttonBackward :disconnect( "clicked()" ) - ::oUI:buttonForward :disconnect( "clicked()" ) - ::oUI:buttonUp :disconnect( "clicked()" ) - ::oUI:buttonRefresh :disconnect( "clicked()" ) - ::oUI:buttonPrint :disconnect( "clicked()" ) - ::oUI:buttonPdf :disconnect( "clicked()" ) - ::oUI:buttonPdfAll :disconnect( "clicked()" ) - ::oUI:browserView :disconnect( "anchorClicked(QUrl)" ) - ::oUI:tabWidgetContents:disconnect( "currentChanged(int)" ) - ::oUI:editInstall :disconnect( "textChanged(QString)" ) - ::oUI:editIndex :disconnect( "textChanged(QString)" ) - ::oUI:editIndex :disconnect( "returnPressed()" ) - ::oUI:listIndex :disconnect( "itemDoubleClicked(QListWidgetItem*)" ) - ::oUI:treeDoc :disconnect( "itemSelectionChanged()" ) - ::oUI:treeCategory :disconnect( "itemSelectionChanged()" ) - - ::clear() - - ::oUI:destroy() - ENDIF - - ::aNodes := NIL - ::aFunctions := NIL - FOR EACH aTmp IN ::aFuncByFile - aTmp[ 1 ] := NIL - FOR EACH oFun IN aTmp[ 2 ] - oFun:destroy() - oFun := NIL - NEXT - aTmp[ 2 ] := NIL - NEXT - - ::aFuncByFile := NIL - ::aHistory := NIL - ::aCategory := NIL - ::nCurTVItem := NIL - ::nCurInHist := NIL - ::hIndex := NIL - ::aProtoTypes := NIL - ::lLoadedProto := NIL - ::aFuncDefs := NIL - - ::qHiliter := NIL - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:clear() - LOCAL a_ - - ::aHistory := {} - ::aFuncByFile := {} - - FOR EACH a_ IN ::aCategory - a_[ 4 ] := NIL // Reference to Contents node - NEXT - FOR EACH a_ IN ::aFunctions - a_[ 4 ] := NIL // Reference to Contents node - NEXT - - /* Contents Tab */ - FOR EACH a_ IN ::aNodes - IF a_[ 2 ] == "Function" -// a_[ 3 ]:removeChild( a_[ 1 ] ) - a_[ 1 ] := NIL ; a_[ 3 ] := NIL - ENDIF - NEXT - FOR EACH a_ IN ::aNodes - IF a_[ 2 ] == "File" -// a_[ 3 ]:removeChild( a_[ 1 ] ) - a_[ 1 ] := NIL ; a_[ 3 ] := NIL - ENDIF - NEXT - FOR EACH a_ IN ::aNodes - IF a_[ 2 ] == "Path" - IF HB_ISOBJECT( a_[ 3 ] ) -// a_[ 3 ]:removeChild( a_[ 1 ] ) - a_[ 3 ] := NIL - ENDIF - a_[ 1 ] := NIL - ENDIF - NEXT - IF !empty( ::aNodes ) - ::aNodes[ 1, 1 ] := NIL - ENDIF - ::aNodes := {} - - /* Index Tab */ - FOR EACH a_ IN ::aFunctions - a_[ 5 ] := NIL - NEXT - ::aFunctions := {} - - /* Category Tab */ - FOR EACH a_ IN ::aCategory - IF a_[ 7 ] == " " -// a_[ 6 ]:removeChild( a_[ 5 ] ) - a_[ 5 ] := NIL - a_[ 6 ] := NIL - ENDIF - NEXT - FOR EACH a_ IN ::aCategory - IF a_[ 7 ] == "U" - a_[ 5 ] := NIL - ENDIF - NEXT - ::aCategory := {} - - ::oUI:treeDoc:clear() - ::oUI:treeCategory:clear() - ::oUI:listIndex:clear() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:setImages() - LOCAL oUI := ::oUI - - oUI:buttonHome :setIcon( QIcon( hbide_image( "dc_home" ) ) ) - oUI:buttonBackward:setIcon( QIcon( hbide_image( "dc_left" ) ) ) - oUI:buttonForward :setIcon( QIcon( hbide_image( "dc_right" ) ) ) - oUI:buttonUp :setIcon( QIcon( hbide_image( "dc_up" ) ) ) - oUI:buttonRefresh :setIcon( QIcon( hbide_image( "dc_refresh" ) ) ) - oUI:buttonPrint :setIcon( QIcon( hbide_image( "dc_print" ) ) ) - oUI:buttonPdf :setIcon( QIcon( hbide_image( "dc_pdffile" ) ) ) - oUI:buttonPdfAll :setIcon( QIcon( hbide_image( "dc_pdffile" ) ) ) - - oUI:buttonSave :setIcon( QIcon( hbide_image( "save" ) ) ) - oUI:buttonExit :setIcon( QIcon( hbide_image( "dc_quit" ) ) ) - - oUI:buttonInstall :setIcon( QIcon( hbide_image( "dc_folder" ) ) ) - - //oUI:buttonArgPlus:setIcon( QIcon( hbide_image( "dc_plus" ) ) ) - //oUI:buttonArgMinus:setIcon( QIcon( QIcon( hbide_image( "dc_delete" ) ) ) - //oUI:buttonArgUp:setIcon( QIcon( hbide_image( "dc_up" ) ) ) - //oUI:buttonArgDown:setIcon( QIcon( hbide_image( "dc_down" ) ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:setTooltips() - LOCAL oUI := ::oUI - - oUI:buttonHome :setToolTip( "Home" ) - oUI:buttonBackward:setToolTip( "Backward" ) - oUI:buttonForward :setToolTip( "Forward" ) - oUI:buttonRefresh :setToolTip( "Refresh" ) - oUI:buttonUp :setToolTip( "Up" ) - oUI:buttonPrint :setToolTip( "Print" ) - oUI:buttonPdf :setToolTip( "Export as PDF Document" ) - oUI:buttonPdfAll :setToolTip( "Export ALL as PDF Documents" ) - - oUI:buttonSave :setToolTip( "Save" ) - oUI:buttonExit :setToolTip( "Exit" ) - - oUI:buttonInstall :setToolTip( "Select Harbour Installation Path" ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:setParameters() - LOCAL oUI := ::oUI - - oUI:treeDoc:setHeaderHidden( .t. ) - oUI:treeCategory:setHeaderHidden( .t. ) - oUI:editInstall:setText( ::cWrkHarbour ) - - #if 0 - ::qHiliter := ::oTH:SetSyntaxHilighting( oUI:plainExamples, "Bare Minimum" ) - - oUI:plainExamples:setFont( ::oFont:oWidget ) - oUI:plainDescription:setFont( ::oFont:oWidget ) - oUI:plainArguments:setFont( ::oFont:oWidget ) - oUI:plainArgDesc:setFont( ::oFont:oWidget ) - oUI:plainTests:setFont( ::oFont:oWidget ) - - oUI:plainExamples:setLineWrapMode( QTextEdit_NoWrap ) - oUI:plainTests:setLineWrapMode( QTextEdit_NoWrap ) - #endif - - oUI:treeDoc:setExpandsOnDoubleClick( .f. ) - - oUI:browserView:setOpenLinks( .t. ) - oUI:browserView:setOpenExternalLinks( .t. ) - oUI:tabWidgetContents:setFocusPolicy( Qt_NoFocus ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:installSignals() - - ::oUI:buttonInstall :connect( "clicked()" , {| | ::execEvent( __buttonInstall_clicked__ ) } ) - ::oUI:buttonHome :connect( "clicked()" , {| | ::execEvent( __buttonHome_clicked__ ) } ) - ::oUI:buttonBackward :connect( "clicked()" , {| | ::execEvent( __buttonBackward_clicked__ ) } ) - ::oUI:buttonForward :connect( "clicked()" , {| | ::execEvent( __buttonForward_clicked__ ) } ) - ::oUI:buttonUp :connect( "clicked()" , {| | ::execEvent( __buttonUp_clicked__ ) } ) - ::oUI:buttonRefresh :connect( "clicked()" , {| | ::execEvent( __buttonRefresh_clicked__ ) } ) - ::oUI:buttonPrint :connect( "clicked()" , {| | ::execEvent( __buttonPrint_clicked__ ) } ) - ::oUI:buttonPdf :connect( "clicked()" , {| | ::execEvent( __buttonPdf_clicked__ ) } ) - ::oUI:buttonPdfAll :connect( "clicked()" , {| | ::execEvent( __buttonPdfAll_clicked__ ) } ) - - ::oUI:browserView :connect( "anchorClicked(QUrl)" , {|p| ::execEvent( __browserView_anchorClicked__ , p ) } ) - ::oUI:tabWidgetContents:connect( "currentChanged(int)" , {|p| ::execEvent( __tabWidgetContents_currentChanged__, p ) } ) - - ::oUI:editInstall :connect( "textChanged(QString)" , {|p| ::execEvent( __editInstall_textChanged__ , p ) } ) - ::oUI:editIndex :connect( "textChanged(QString)" , {|p| ::execEvent( __editIndex_textChanged__ , p ) } ) - ::oUI:editIndex :connect( "returnPressed()" , {| | ::execEvent( __editIndex_returnPressed__ ) } ) - - ::oUI:treeDoc :connect( "itemSelectionChanged()" , {| | ::execEvent( __treeDoc_itemSelectionChanged__ ) } ) - ::oUI:treeCategory :connect( "itemSelectionChanged()" , {| | ::execEvent( __treeCategory_itemSelectionChanged__ ) } ) - - ::oUI:listIndex :connect( "itemDoubleClicked(QListWidgetItem*)", {|p| ::execEvent( __listIndex_ItemDoubleClicked__, p ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:execEvent( nEvent, p, p1 ) - LOCAL cPath, qTWItem, cText, n, nn, nLen, cLower - - HB_SYMBOL_UNUSED( p1 ) - - IF ::lQuitting - RETURN Self - ENDIF - - SWITCH nEvent - - CASE __buttonInstall_clicked__ - cPath := hbide_fetchADir( ::oDocViewDock, "Harbour Install Root" ) - IF !empty( cPath ) - ::oUI:editInstall:setText( cPath ) - ENDIF - EXIT - - CASE __tabWidgetContents_currentChanged__ - IF p == 1 - ::oUI:editIndex:setFocus() - ENDIF - EXIT - - CASE __browserView_anchorClicked__ - cText := lower( p:toString() ) - nLen := Len( cText ) - IF ( n := ascan( ::aFunctions, {|e_| left( e_[ 6 ], nLen ) == cText } ) ) > 0 - ::oUI:listIndex:setCurrentItem( ::aFunctions[ n, 5 ] ) - ::populateIndexedSelection() - ENDIF - EXIT - - CASE __listIndex_ItemDoubleClicked__ - ::populateIndexedSelection() - ::oUI:editIndex:setFocus() - EXIT - - CASE __editIndex_returnPressed__ - IF !empty( ::oUI:editIndex:text() ) - ::populateIndexedSelection() - ::oUI:editIndex:setFocus() - ENDIF - EXIT - - CASE __editIndex_textChanged__ - IF ( nLen := Len( p ) ) > 0 - cLower := lower( p ) - IF ( n := ascan( ::aFunctions, {|e_| left( e_[ 6 ], nLen ) == cLower } ) ) > 0 - ::oUI:listIndex:setCurrentItem( ::aFunctions[ n, 5 ] ) - ENDIF - ENDIF - EXIT - - CASE __editInstall_textChanged__ - IF hb_dirExists( p ) - ::oUI:editInstall:setStyleSheet( "" ) - ::cPathInstall := hbide_pathStripLastSlash( hbide_pathNormalized( p, .f. ) ) -// ::oIde:cWrkHarbour := ::cPathInstall - ELSE - ::oUI:editInstall:setStyleSheet( getStyleSheet( "PathIsWrong", ::nAnimantionMode ) ) - ENDIF - EXIT - - CASE __buttonHome_clicked__ - IF !empty( ::aNodes ) - ::oUI:treeDoc:setCurrentItem( ::aNodes[ 1, 1 ], 0 ) - ENDIF - EXIT - - CASE __buttonBackward_clicked__ - IF ::nCurInHist > 1 - ::oUI:treeDoc:setCurrentItem( ::aNodes[ ::aHistory[ ::nCurInHist - 1 ], 1 ], 0 ) - ENDIF - EXIT - - CASE __buttonForward_clicked__ - IF ::nCurInHist < Len( ::aHistory ) - ::oUI:treeDoc:setCurrentItem( ::aNodes[ ::aHistory[ ::nCurInHist + 1 ], 1 ], 0 ) - ENDIF - EXIT - - CASE __buttonUp_clicked__ - IF ::nCurInHist > 1 .AND. ::nCurInHist <= Len( ::aHistory ) - IF ! empty( qTWItem := ::oUI:treeDoc:itemAbove( ::oUI:treeDoc:currentItem( 0 ) ) ) - ::oUI:treeDoc:setCurrentItem( qTWItem, 0 ) - ENDIF - ENDIF - EXIT - - CASE __buttonRefresh_clicked__ - ::refreshDocTree() - ::aProtoTypes := {} - ::lLoadedProto := .f. - ::oEM:updateCompleter() - EXIT - - CASE __buttonPrint_clicked__ - ::print() - EXIT - - CASE __buttonPdf_clicked__ - ::exportAsPdf() - EXIT - - CASE __buttonPdfAll_clicked__ - ::exportAsPdfAll() - EXIT - - CASE __treeCategory_itemSelectionChanged__ - qTWItem := ::oUI:treeCategory:currentItem() - n := ascan( ::aCategory, {|e_| hbqt_IsEqual( e_[ 5 ], qTWItem ) } ) - IF n > 0 - IF ::aCategory[ n, 5 ]:childCount() == 0 - ::oUI:treeDoc:setCurrentItem( ::aCategory[ n, 4 ], 0 ) - ENDIF - ENDIF - EXIT - - CASE __treeDoc_itemSelectionChanged__ - qTWItem := ::oUI:treeDoc:currentItem() - cText := qTWItem:text( 0 ) - - IF ( n := ascan( ::aNodes, {|e_| e_[ 5 ] == cText } ) ) > 0 - IF ( nn := ascan( ::aHistory, n ) ) == 0 - aadd( ::aHistory, n ) - ::nCurInHist := Len( ::aHistory ) - ELSE - ::nCurInHist := nn - ENDIF - ::nCurTVItem := n - - IF ::aNodes[ n, 2 ] == "Root" - ::populateRootInfo() - ELSEIF ::aNodes[ n, 2 ] == "Path" - ::populatePathInfo( ::aNodes[ n, 4 ] ) - ELSEIF ::aNodes[ n, 2 ] == "File" - ::populateTextFile( ::aNodes[ n, 4 ] ) - ELSEIF ::aNodes[ n, 2 ] == "Function" - ::populateFuncDetails( n ) - ENDIF - ENDIF - EXIT - - ENDSWITCH - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:jumpToFunction( cFunction ) - LOCAL n, nLen - - nLen := Len( cFunction ) - cFunction := lower( cFunction ) - IF !empty( ::aNodes ) - IF ( n := ascan( ::aFunctions, {|e_| lower( left( e_[ 2 ], nLen ) ) == cFunction } ) ) > 0 - ::oUI:treeDoc:setCurrentItem( ::aFunctions[ n, 4 ] ) - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:populateIndexedSelection() - LOCAL qItem, cText, n - - IF !empty( ::aNodes ) - IF !empty( qItem := ::oUI:listIndex:currentItem() ) - cText := qItem:text() - IF ( n := ascan( ::aFunctions, {|e_| e_[ 2 ] == cText } ) ) > 0 - ::oUI:treeDoc:setCurrentItem( ::aFunctions[ n, 4 ] ) - ENDIF - ENDIF - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:refreshDocTree() - LOCAL aPaths, cFolder, cNFolder, aDocs, oChild, oParent, oRoot, cRoot - LOCAL aDir, a_, cTextFile, n, aHbd - - IF empty( ::cPathInstall ) .OR. ! hb_dirExists( ::cPathInstall ) - RETURN Self - ENDIF - - //::oUI:treeDoc:disconnect( "itemSelectionChanged()" ) - //::oUI:treeCategory:disconnect( "itemSelectionChanged()" ) - ::showApplicationCursor( Qt_BusyCursor ) - - /* Clean Environment */ - ::clear() - - ::aNodes := {} - ::aFuncByFile := {} - ::aHistory := {} - ::aFunctions := {} - ::nCurTVItem := 0 - ::nCurInHist := 0 - - aPaths := {} - aDocs := {} - - cRoot := ::cPathInstall - IF ! ( right( cRoot, 1 ) $ "/\" ) - cRoot += hb_ps() - ENDIF - cRoot := hbide_pathToOSPath( cRoot + "/doc/" ) - aHbd := directory( cRoot + "*.hbd" ) - - IF ! empty( aHbd ) - aPaths := { cRoot } - aDocs := { cRoot } - ELSE - hbide_fetchSubPaths( @aPaths, ::cPathInstall, .t. ) - cRoot := aPaths[ 1 ] - FOR EACH cFolder IN aPaths - cNFolder := hbide_pathNormalized( cFolder, .t. ) - IF ( "/doc" $ cNFolder ) .OR. ( "/doc/en" $ cNFolder ) - aadd( aDocs, cFolder ) - ENDIF - NEXT - ENDIF - - oRoot := QTreeWidgetItem() - oRoot:setText( 0, aPaths[ 1 ] ) - oRoot:setIcon( 0, QIcon( hbide_image( "dc_home" ) ) ) - oRoot:setToolTip( 0, aPaths[ 1 ] ) - oRoot:setExpanded( .t. ) - - ::oUI:treeDoc:addTopLevelItem( oRoot ) - - aadd( ::aNodes, { oRoot, "Path", NIL, cRoot, cRoot } ) - hbide_buildFoldersTree( ::aNodes, aDocs ) - ::aNodes[ 1,2 ] := iif( empty( aHbd ), "Root", "Path" ) - - FOR EACH cFolder IN aDocs - IF ( n := ascan( ::aNodes, {|e_| e_[ 2 ] == "Path" .AND. lower( e_[ 4 ] ) == lower( cFolder ) } ) ) > 0 - oParent := ::aNodes[ n, 1 ] - - IF ! empty( aHbd ) - aDir := aHbd - ELSE - aDir := directory( cFolder + "*.txt" ) - ENDIF - FOR EACH a_ IN aDir - IF !( a_[ 5 ] == "D" ) - cTextFile := cFolder + a_[ 1 ] - oChild := QTreeWidgetItem() - oChild:setText( 0, a_[ 1 ] ) - oChild:setIcon( 0, QIcon( ::resPath + "dc_textdoc.png" ) ) - oChild:setToolTip( 0, cTextFile ) - oParent:addChild( oChild ) - aadd( ::aNodes, { oChild, "File", oParent, cTextFile, a_[ 1 ] } ) - ::parseTextFile( cTextFile, oChild ) - ENDIF - NEXT - ENDIF - NEXT - - ::populateIndex() - - ::oUI:treeDoc:expandItem( oRoot ) - - ::showApplicationCursor() - //::oUI:treeDoc:connect( "itemSelectionChanged()" , {|| ::execEvent( "treeDoc_itemSelectionChanged" ) } ) - //::oUI:treeCategory:connect( "itemSelectionChanged()" , {|| ::execEvent( "treeCategory_itemSelectionChanged" ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_buildFoldersTree( aNodes, aPaths ) - LOCAL cRoot, cPath, s, aSubs, i, n, cCPath, cPPath, nP, cOSPath, oParent, oChild - LOCAL cIcon := hbide_image( "dc_folder" ) - - cRoot := aNodes[ 1, 4 ] - - FOR EACH s IN aPaths - cPath := s - cPath := hbide_stripRoot( cRoot, cPath ) - cPath := hbide_pathNormalized( cPath, .f. ) - - aSubs := hb_aTokens( cPath, "/" ) - - FOR i := 1 TO Len( aSubs ) - IF !empty( aSubs[ i ] ) - cCPath := hbide_buildPathFromSubs( aSubs, i ) - n := ascan( aNodes, {|e_| hb_FileMatch( hbide_pathNormalized( e_[ 4 ], .f. ), hbide_pathNormalized( cRoot + cCPath, .f. ) ) } ) - - IF n == 0 - cPPath := hbide_buildPathFromSubs( aSubs, i - 1 ) - nP := ascan( aNodes, {|e_| hb_FileMatch( hbide_pathNormalized( e_[ 4 ], .f. ), hbide_pathNormalized( cRoot + cPPath, .f. ) ) } ) - IF nP > 0 - oParent := aNodes[ nP, 1 ] - - cOSPath := hbide_pathToOSPath( cRoot + cCPath ) - - oChild := QTreeWidgetItem() - oChild:setText( 0, aSubs[ i ] ) - oChild:setIcon( 0, QIcon( cIcon ) ) - oChild:setToolTip( 0, cOSPath ) - - oParent:addChild( oChild ) - - aadd( aNodes, { oChild, "Path", oParent, cOSPath, aSubs[ i ] } ) - ENDIF - ENDIF - ENDIF - NEXT - NEXT - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_buildPathFromSubs( aSubs, nUpto ) - LOCAL i, cPath := "" - - IF nUpto > 0 - FOR i := 1 TO nUpto - cPath += aSubs[ i ] + "/" - NEXT - ENDIF - RETURN cPath - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:populateIndex() - LOCAL a_, qItem, oFunc, oParent, n - LOCAL aUnq := {} - - asort( ::aFunctions, , , {|e_, f_| e_[ 2 ] < f_[ 2 ] } ) - - ::oUI:listIndex:setSortingEnabled( .t. ) - - FOR EACH a_ IN ::aFunctions - IF !empty( a_[ 2 ] ) - qItem := QListWidgetItem() - qItem:setText( a_[ 2 ] ) - a_[ 5 ] := qItem - ::oUI:listIndex:addItem( qItem ) - ENDIF - NEXT - - FOR EACH a_ IN ::aFunctions - oFunc := a_[ 3 ] - IF !empty( oFunc:cCategory ) - IF ascan( aUnq, {|e_| e_[ 1 ] == oFunc:cCategory } ) == 0 - aadd( aUnq, { oFunc:cCategory, NIL } ) - aadd( ::aCategory, { oFunc:cCategory, oFunc:cSubCategory, oFunc, a_[ 4 ], NIL, NIL, "U" } ) - ELSE - aadd( ::aCategory, { oFunc:cCategory, oFunc:cSubCategory, oFunc, a_[ 4 ], NIL, NIL, " " } ) - ENDIF - ENDIF - NEXT - IF !empty( ::aCategory ) - asort( ::aCategory, , , {|e_, f_| e_[ 1 ] < f_[ 1 ] } ) - ENDIF - FOR EACH a_ IN aUnq - qItem := QTreeWidgetItem() - qItem:setText( 0, a_[ 1 ] ) - ::oUI:treeCategory:addTopLevelItem( qItem ) - a_[ 2 ] := qItem - NEXT - FOR EACH a_ IN ::aCategory - IF ( n := ascan( aUnq, {|e_| e_[ 1 ] == a_[ 1 ] } ) ) > 0 - oParent := aUnq[ n, 2 ] - - qItem := QTreeWidgetItem() - qItem:setText( 0, a_[ 3 ]:cName ) - - oParent:addChild( qItem ) - a_[ 5 ] := qItem - a_[ 6 ] := oParent - ENDIF - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:pullDefinitions( acBuffer ) - - IF HB_ISARRAY( acBuffer ) - RETURN doc2functions( __hbdoc_fromSource( hbide_arrayTOmemo( acBuffer ) ) ) - ELSE - IF hb_fileExists( acBuffer ) - RETURN doc2functions( __hbdoc_fromSource( memoread( acBuffer ) ) ) - ELSE - RETURN doc2functions( __hbdoc_fromSource( acBuffer ) ) - ENDIF - ENDIF - - RETURN {} - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:pullDefinitionsHBD( cFileHBD ) - - IF hb_fileExists( cFileHBD ) - RETURN doc2functions( __hbdoc_LoadHBD( cFileHBD ) ) - ENDIF - - RETURN {} - -/*----------------------------------------------------------------------*/ - -#define __S2A( c ) hb_aTokens( strtran( c, chr( 13 ) ), chr( 10 ) ) - -STATIC FUNCTION doc2functions( hFile ) - LOCAL oFunc, hDoc - LOCAL aFn := {} - - FOR EACH hDoc IN hFile - oFunc := IdeDocFunction():new() - - IF "TEMPLATE" $ hDoc - oFunc:cTemplate := hDoc[ "TEMPLATE" ] - ENDIF - IF "FUNCNAME" $ hDoc - oFunc:cName := hDoc[ "FUNCNAME" ] - ENDIF - IF "NAME" $ hDoc - oFunc:cName := hDoc[ "NAME" ] - ENDIF - IF "CATEGORY" $ hDoc - oFunc:cCategory := hDoc[ "CATEGORY" ] - ENDIF - IF "SUBCATEGORY" $ hDoc - oFunc:cSubCategory := hDoc[ "SUBCATEGORY" ] - ENDIF - IF "ONELINER" $ hDoc - oFunc:cOneLiner := hDoc[ "ONELINER" ] - ENDIF - IF "SYNTAX" $ hDoc - oFunc:aSyntax := __S2A( hDoc[ "SYNTAX" ] ) - ENDIF - IF "ARGUMENTS" $ hDoc - oFunc:aArguments := __S2A( hDoc[ "ARGUMENTS" ] ) - ENDIF - IF "RETURNS" $ hDoc - oFunc:aReturns := __S2A( hDoc[ "RETURNS" ] ) - ENDIF - IF "DESCRIPTION" $ hDoc - oFunc:aDescription := __S2A( hDoc[ "DESCRIPTION" ] ) - ENDIF - IF "EXAMPLES" $ hDoc - oFunc:aExamples := __S2A( hDoc[ "EXAMPLES" ] ) - ENDIF - IF "TESTS" $ hDoc - oFunc:aTests := __S2A( hDoc[ "TESTS" ] ) - ENDIF - IF "FILES" $ hDoc - oFunc:aFiles := __S2A( hDoc[ "FILES" ] ) - ENDIF - IF "STATUS" $ hDoc - oFunc:cStatus := hDoc[ "STATUS" ] - ENDIF - IF "PLATFORMS" $ hDoc - oFunc:cPlatForms := hDoc[ "PLATFORMS" ] - ENDIF - IF "COMPLIANCE" $ hDoc - oFunc:cPlatForms := hDoc[ "COMPLIANCE" ] - ENDIF - IF "SEEALSO" $ hDoc - oFunc:cSeeAlso := hDoc[ "SEEALSO" ] - ENDIF - IF "VERSION" $ hDoc - oFunc:cVersion := hDoc[ "VERSION" ] - ENDIF - IF "INHERITS" $ hDoc - oFunc:cInherits := hDoc[ "INHERITS" ] - ENDIF - IF "METHODS" $ hDoc - oFunc:aMethods := __S2A( hDoc[ "METHODS" ] ) - ENDIF - IF "EXTERNALLINK" $ hDoc - oFunc:cExternalLink := hDoc[ "EXTERNALLINK" ] - ENDIF - - aadd( aFn, oFunc ) - NEXT - - RETURN aFn - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:parseTextFile( cTextFile, oParent ) - LOCAL aFn, oFunc, oTWItem - LOCAL cIcon := hbide_image( "dc_function" ) - LOCAL nParsed := ascan( ::aFuncByFile, {|e_| e_[ 1 ] == cTextFile } ) - - IF nParsed == 0 - IF ".hbd" $ lower( cTextFile ) - aFn := ::pullDefinitionsHBD( cTextFile ) - ELSE - aFn := ::pullDefinitions( cTextFile ) - ENDIF - IF ! empty( aFn ) - FOR EACH oFunc IN aFn - oTWItem := QTreeWidgetItem() - oTWItem:setText( 0, oFunc:cName ) - oTWItem:setIcon( 0, QIcon( cIcon ) ) - oTWItem:setTooltip( 0, oFunc:cName ) - oParent:addChild( oTWItem ) - aadd( ::aNodes, { oTWItem, "Function", oParent, cTextFile + "<::>" + oFunc:cName, oFunc:cName } ) - aadd( ::aFunctions, { cTextFile, oFunc:cName, oFunc, oTWItem, NIL, lower( oFunc:cName ) } ) - NEXT - ENDIF - aadd( ::aFuncByFile, { cTextFile, aFn } ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:getDocFunction( acBuffer ) - LOCAL aFn - - IF !empty( aFn := ::pullDefinitions( acBuffer ) ) - RETURN aFn[ 1 ] - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:getFunctionPrototypes() - LOCAL a_, cFolder, aFN, oFunc, cNFolder, cRoot, aHbd - LOCAL aPaths := {} - LOCAL aDocs := {} - LOCAL aProto - - IF empty( ::aProtoTypes ) - IF ! empty( ::cPathInstall ) - IF ! ::lLoadedProto - - cRoot := ::cPathInstall - IF ! ( right( cRoot, 1 ) $ "/\" ) - cRoot += hb_ps() - ENDIF - cRoot := hbide_pathToOSPath( cRoot + "/doc/" ) - aHbd := directory( cRoot + "*.hbd" ) - - IF ! empty( aHbd ) - aPaths := { cRoot } - aDocs := { cRoot } - ELSE - hbide_fetchSubPaths( @aPaths, ::cPathInstall, .t. ) - - FOR EACH cFolder IN aPaths - cNFolder := hbide_pathNormalized( cFolder, .t. ) - IF ( "/doc" $ cNFolder ) .OR. ( "/doc/en" $ cNFolder ) - aadd( aDocs, cFolder ) - ENDIF - NEXT - ENDIF - - aProto := {} - - IF empty( aHbd ) - FOR EACH cFolder IN aDocs - FOR EACH a_ IN directory( cFolder + "*.txt" ) - IF !( a_[ 5 ] == "D" ) - aFn := ::pullDefinitions( cFolder + a_[ 1 ] ) - FOR EACH oFunc IN aFn - IF HB_ISOBJECT( oFunc ) - IF !empty( oFunc:aSyntax ) - IF "C Prototype" $ oFunc:aSyntax[ 1 ] - aadd( aProto, alltrim( oFunc:aSyntax[ Len( oFunc:aSyntax ) ] ) ) - ELSE - aadd( aProto, alltrim( oFunc:aSyntax[ 1 ] ) ) - ENDIF - ENDIF - ENDIF - NEXT - ENDIF - NEXT - NEXT - ELSE - FOR EACH a_ IN aHbd - aFn := ::pullDefinitionsHBD( cRoot + a_[ 1 ] ) - FOR EACH oFunc IN aFn - IF HB_ISOBJECT( oFunc ) - IF !empty( oFunc:aSyntax ) - IF "C Prototype" $ oFunc:aSyntax[ 1 ] - aadd( aProto, alltrim( oFunc:aSyntax[ Len( oFunc:aSyntax ) ] ) ) - ELSE - aadd( aProto, alltrim( oFunc:aSyntax[ 1 ] ) ) - ENDIF - ENDIF - ENDIF - NEXT - NEXT - ENDIF - - ::aProtoTypes := aProto - ::lLoadedProto := .t. - ENDIF - ENDIF - ENDIF - - RETURN ::aProtoTypes - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:updateViewer( aHtm, cDocName ) - - ::oUI:browserView:setHTML( hbide_arrayToMemo( aHtm ) ) - ::oUI:browserView:setDocumentTitle( cDocName ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:populateRootInfo() - LOCAL aHtm := {} - - aadd( aHtm, "" ) - aadd( aHtm, ' ' ) - aadd( aHtm, '

' + "Welcome" + '

' ) - aadd( aHtm, '
' + ' ' + '
' ) - aadd( aHtm, '

' + ::cPathInstall + '

' ) - aadd( aHtm, '
 
' ) - aadd( aHtm, '
 
' ) - aadd( aHtm, '
' ) - aadd( aHtm, " " ) - aadd( aHtm, "" ) - - ::updateViewer( aHtm, "Welcome" ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:populatePathInfo( cPath ) - LOCAL aHtm := {} - - aadd( aHtm, "" ) - aadd( aHtm, " " ) - aadd( aHtm, '

' + cPath + '

' ) - aadd( aHtm, " " ) - aadd( aHtm, "" ) - - ::updateViewer( aHtm, cPath ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:populateTextFile( cTextFile ) - LOCAL aHtm, aFn, oFunc - LOCAL nParsed := ascan( ::aFuncByFile, {|e_| e_[ 1 ] == cTextFile } ) - - /* Build HTML */ - aHtm := {} - aadd( aHtm, "" ) - aadd( aHtm, " " ) - aadd( aHtm, '

' + cTextFile + '

' ) - aadd( aHtm, '
' + ' 

' ) - IF nParsed > 0 - aFn := ::aFuncByFile[ nParsed, 2 ] - IF Len( aFn ) > 0 - FOR EACH oFunc IN aFn - IF HB_ISOBJECT( oFunc ) - aadd( aHtm, '
' + hbide_arrayToMemoHtml( oFunc:aSyntax ) + '
' ) - ENDIF - NEXT - ELSE - aadd( aHtm, '
' + hb_memoread( cTextFile ) + '

' ) - ENDIF - ENDIF - aadd( aHtm, " " ) - aadd( aHtm, "" ) - - ::updateViewer( aHtm, cTextFile ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:populateFuncDetails( n ) - LOCAL oTWItem := ::aNodes[ n, 1 ] - LOCAL nIndex, oFunc - - IF ( nIndex := ascan( ::aFunctions, {|e_| e_[ 4 ] == oTWItem } ) ) > 0 - oFunc := ::aFunctions[ nIndex, 3 ] - ENDIF - IF !empty( oFunc ) - ::buildView( oFunc ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:buildView( oFunc ) - LOCAL s, x, y, v, w, z, n, s1, a_, cTxt - LOCAL aHtm := {} - - aadd( aHtm, "" ) - - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - - aadd( ahtm, ' ' ) - aadd( ahtm, '
' ) - - s := ' ' - aadd( aHtm, s ) - - aadd( aHtm, '' ) - //aadd( aHtm, '
' + oFunc:cOneLiner + '
' ) - aadd( aHtm, '
' + oFunc:cOneLiner + '
' ) - cTxt := " " - IF !empty( oFunc:cCategory ) - cTxt += "Category: " + oFunc:cCategory + " " - ENDIF - IF !empty( oFunc:cSubCategory ) - cTxt += "Sub: " + oFunc:cSubCategory + " " - ENDIF - IF !empty( oFunc:cVersion ) - cTxt += "Version: " + oFunc:cVersion + " " - ENDIF - IF !empty( cTxt ) - aadd( aHtm, "
" + "[" + cTxt + "]" + "
" ) - ENDIF - IF !empty( s1 := oFunc:cExternalLink ) - aadd( aHtm, '
' + "" + s1 + "" + "
" ) - ENDIF - aadd( aHtm, '
' ) - - x := '" - v := '" - z := "" - - IF !empty( oFunc:cInherits ) - aadd( aHtm, x + "Inherits" + y ) - a_:= hb_aTokens( oFunc:cInherits, "," ) - IF !empty( a_ ) - aadd( aHtm, "" ) - ENDIF - //aadd( aHtm, v + oFunc:cInherits + w ) - aadd( aHtm, z ) - ENDIF - #if 0 - aadd( aHtm, x + "Category" + y ) - aadd( aHtm, v + oFunc:cCategory + w ) - aadd( aHtm, z ) - aadd( aHtm, x + "SubCategory" + y ) - aadd( aHtm, v + oFunc:cSubCategory+ w ) - aadd( aHtm, z ) - #endif - IF !empty( s := hbide_arrayToMemoHtml( oFunc:aSyntax ) ) - aadd( aHtm, x + "Syntax" + y ) - aadd( aHtm, v + s + w ) - aadd( aHtm, z ) - ENDIF - IF !empty( s := hbide_arrayToMemoHtml( oFunc:aArguments ) ) - aadd( aHtm, x + "Arguments" + y ) - aadd( aHtm, v + s + w ) - aadd( aHtm, z ) - ENDIF - IF !empty( s := hbide_arrayToMemoHtml( oFunc:aReturns ) ) - aadd( aHtm, x + "Returns" + y ) - aadd( aHtm, v + s + w ) - aadd( aHtm, z ) - ENDIF - IF !empty( s := hbide_arrayToMemoHtml( oFunc:aMethods ) ) - aadd( aHtm, x + "Methods" + y ) - aadd( aHtm, v + s + w ) - aadd( aHtm, z ) - ENDIF - IF !empty( s := hbide_arrayToMemoHtml( oFunc:aDescription ) ) - aadd( aHtm, x + "Description" + y ) - aadd( aHtm, v + s + w ) - aadd( aHtm, z ) - ENDIF - IF !empty( s := hbide_arrayToMemoHtml( oFunc:aExamples ) ) - aadd( aHtm, x + "Examples" + y ) - aadd( aHtm, v + s + w ) - aadd( aHtm, z ) - ENDIF - #if 0 - aadd( aHtm, x + "Vesrion" + y ) - aadd( aHtm, v + oFunc:cVersion + w ) - aadd( aHtm, z ) - #endif - IF !empty( s := hbide_arrayToMemoHtml( oFunc:aFiles ) ) - aadd( aHtm, x + "Files" + y ) - aadd( aHtm, v + s + w ) - aadd( aHtm, z ) - ENDIF - - IF ! empty( oFunc:cSeeAlso ) - a_:= hb_atokens( oFunc:cSeeAlso, "," ) - IF !empty( a_ ) - aadd( aHtm, x + "SeeAlso" + y ) - aadd( aHtm, "" ) - aadd( aHtm, z ) - ENDIF - ENDIF - - IF !empty( oFunc:cPlatforms ) - aadd( aHtm, x + "Compliance | Platforms" + y ) - aadd( aHtm, v + oFunc:cPlatforms + w ) - aadd( aHtm, z ) - ENDIF - IF !empty( oFunc:cStatus ) - aadd( aHtm, x + "Status" + y ) - aadd( aHtm, v + oFunc:cStatus + w ) - aadd( aHtm, z ) - ENDIF - - aadd( aHtm, "
' + oFunc:cName + '
' ; y := "
'                    ; w := "
 
" ) - FOR EACH s IN a_ - s := alltrim( s ) - IF ( n := at( "(", s ) ) > 0 - s1 := substr( s, 1, n-1 ) - ELSE - s1 := s - ENDIF - aadd( aHtm, '' + s + "" + ; - iif( s:__enumIndex() == Len( a_ ), "", ", " ) ) - NEXT - aadd( aHtm, "
" ) - - FOR EACH s IN a_ - s := alltrim( s ) - IF ( n := at( "(", s ) ) > 0 - s1 := substr( s, 1, n-1 ) - ELSE - s1 := s - ENDIF - aadd( aHtm, '' + s + "" + ; - iif( s:__enumIndex() == Len( a_ ), "", ", " ) ) - NEXT - aadd( aHtm, "
" ) - aadd( aHtm, "
" ) - aadd( aHtm, " " ) - aadd( aHtm, "" ) - - ::updateViewer( aHtm, strtran( strtran( oFunc:cName, ")" ), "(" ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:print() - LOCAL qDlg - - qDlg := QPrintPreviewDialog( ::oUI:oWidget ) - qDlg:setWindowTitle( "Harbour Help Document" ) - qDlg:connect( "paintRequested(QPrinter*)", {|p| ::paintRequested( p ) } ) - qDlg:exec() - qDlg:disconnect( "paintRequested(QPrinter*)" ) - - RETURN self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:paintRequested( qPrinter ) - - ::oUI:browserView:print( qPrinter ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:exportAsPdf() - LOCAL cPdf, qPrinter, cExt, cPath, cFile - - IF !empty( cPdf := hbide_fetchAFile( ::oDlg, "Provide a file name", { { "Pdf Document", "*.pdf" } } ) ) - hb_fNameSplit( cPdf, @cPath, @cFile, @cExt ) - qPrinter := QPrinter() - qPrinter:setOutputFileName( cPath + cFile + "_" + trim( ::oUI:browserView:documentTitle() ) + ".pdf" ) - qPrinter:setFullPage( .t. ) - ::oUI:browserView:print( qPrinter ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHarbourHelp:exportAsPdfAll() - LOCAL cPdf, qPrinter, cExt, cPath, cFile, aItems - LOCAL qApp := QApplication() - - IF empty( ::aNodes ) - RETURN Self - ENDIF - - IF !empty( cPdf := hbide_fetchAFile( ::oDlg, "Provide a file name", { { "Pdf Documents", "*.pdf" } } ) ) - hb_fNameSplit( cPdf, @cPath, @cFile, @cExt ) - qPrinter := QPrinter() - - FOR EACH aItems IN ::aNodes - ::oUI:treeDoc:setCurrentItem( aItems[ 1 ], 0 ) - qApp:processEvents() - IF ::lQuitting - EXIT - ENDIF - qPrinter:setOutputFileName( cPath + cFile + "_" + trim( ::oUI:browserView:documentTitle() ) + ".pdf" ) - qPrinter:setFullPage( .t. ) - ::oUI:browserView:print( qPrinter ) - qPrinter:newPage() - NEXT - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - diff --git a/harbour/contrib/hbide/hbide.ch b/harbour/contrib/hbide/hbide.ch deleted file mode 100644 index 3614e48e6a..0000000000 --- a/harbour/contrib/hbide/hbide.ch +++ /dev/null @@ -1,152 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#ifndef __HBIDE_CH -#define __HBIDE_CH - -#include "hbtrace.ch" - -#undef HB_TR_ALWAYS -#define HB_TR_ALWAYS HB_TR_DEBUG - -#define UI_MODE_FUNC 0 -#define UI_MODE_UIC 1 -#define UI_MODE_UI 2 -#define UI_MODE_DEFAULT UI_MODE_FUNC - -#define _EOL Chr( 10 ) - -#define HBIDE_USE_UIC - -#define HBIDE_ANIMATION_NONE 0 -#define HBIDE_ANIMATION_GRADIENT 1 -#define HBIDE_ANIMATION_GRADIENT_BLUE 2 - -#define HBIDE_RUN_MODE_INI 1 -#define HBIDE_RUN_MODE_HBP 2 -#define HBIDE_RUN_MODE_PRG 3 - -/* .hbi structure constants */ -#define PRJ_PRP_PROPERTIES 1 -#define PRJ_PRP_FLAGS 2 -#define PRJ_PRP_SOURCES 3 -#define PRJ_PRP_METADATA 4 -// -#define PRJ_PRP_SECTIONS 4 - -#define PRJ_PRP_TYPE 1 -#define PRJ_PRP_TITLE 2 -#define PRJ_PRP_LOCATION 3 -#define PRJ_PRP_WRKFOLDER 4 -#define PRJ_PRP_DSTFOLDER 5 -#define PRJ_PRP_OUTPUT 6 -#define PRJ_PRP_LPARAMS 7 -#define PRJ_PRP_LPROGRAM 8 -#define PRJ_PRP_BACKUP 9 -#define PRJ_PRP_XHB 10 -#define PRJ_PRP_XPP 11 -#define PRJ_PRP_CLP 12 -// -#define PRJ_PRP_PRP_VRBLS 12 - -/* Project Properties array elements */ -#define E_qPrjType 1 -#define E_oPrjTtl 2 -#define E_oPrjLoc 3 -#define E_oPrjWrk 4 -#define E_oPrjDst 5 -#define E_oPrjOut 6 -#define E_oPrjLau 7 -#define E_oPrjLEx 8 -#define E_oPrjInc 9 -#define E_oPrjSrc 10 -#define E_oPrjMta 11 -#define E_oPrjHbp 12 -#define E_oPrjCmp 13 - -#define SB_PNL_MAIN 1 -#define SB_PNL_READY 2 -#define SB_PNL_LINE 3 -#define SB_PNL_COLUMN 4 -#define SB_PNL_INS 5 -#define SB_PNL_SELECTEDCHARS 6 -#define SB_PNL_MODIFIED 7 -#define SB_PNL_STREAM 8 -#define SB_PNL_EDIT 9 -#define SB_PNL_SEARCH 10 -#define SB_PNL_CODEC 11 -#define SB_PNL_ENVIRON 12 -#define SB_PNL_VIEW 13 -#define SB_PNL_PROJECT 14 -#define SB_PNL_THEME 15 - -#define TAB_OTAB 1 -#define TAB_OEDITOR 2 - -#define TRE_OITEM 1 -#define TRE_TYPE 2 // Path | Source File | Project | Opened File -#define TRE_OPARENT 3 -#define TRE_ORIGINAL 4 -#define TRE_DATA 5 - -#define ACT_NAME 1 -#define ACT_TEXT 2 -#define ACT_IMAGE 3 -#define ACT_SHORTCUT 4 -#define ACT_CHECKABLE 5 -#define ACT_VISINMENU 6 - -#define IDE_PART_EDITOR 0 -#define IDE_PART_DBU 1 -#define IDE_PART_REPORTSDESIGNER 2 -#define IDE_PART_CUISCREENDESIGNER 3 - -#endif diff --git a/harbour/contrib/hbide/hbide.env b/harbour/contrib/hbide/hbide.env deleted file mode 100644 index b3d201d8f2..0000000000 --- a/harbour/contrib/hbide/hbide.env +++ /dev/null @@ -1,31 +0,0 @@ -[ COMMON ] - -[ MINGW - Windows ] -{content} set HB_WITH_QT=C:\qt\2009.03\qt\include -{content} set PATH=%HB_WITH_QT%\..\bin;%PATH% -{content} set PATH=c:\mingw\bin;%PATH% - -[ MSVS 9.0 ] -{content} set HB_WITH_QT=C:\qt\2009.03\qt\include -{content} set PATH=%HB_WITH_QT%\..\bin;%PATH% -{content} call "%ProgramFiles%\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86 - -[ BCC 5.5.1 Command Line Tools ] -{content} set PATH=C:\Borland\BCC55\Bin;%PATH% - -[ Pelles C ] -{content} set PATH=%ProgramFiles%\PellesC\Bin;%PATH% -{content} set INCLUDE=%ProgramFiles%\PellesC\Include;%ProgramFiles%\PellesC\Include\Win;%INCLUDE% -{content} set LIB=%ProgramFiles%\PellesC\Lib;%ProgramFiles%\PellesC\Lib\Win;%LIB% - -[ Watcom ] -{content} SET WATCOM=C:\watcom -{content} SET PATH=%WATCOM%\BINNT;%WATCOM%\BINW;%PATH% -{content} SET EDPATH=%WATCOM%\EDDAT -{content} SET INCLUDE=%WATCOM%\H;%WATCOM%\H\NT - -[ MINGW - Linux - A Skeleton ] -{hb_plat} win -{hb_comp} mingw -{content} shell command 1 -{content} shell command 2 diff --git a/harbour/contrib/hbide/hbide.hbp b/harbour/contrib/hbide/hbide.hbp deleted file mode 100644 index fd0071c987..0000000000 --- a/harbour/contrib/hbide/hbide.hbp +++ /dev/null @@ -1,105 +0,0 @@ -# -# $Id$ -# - --3rd=hbide_version=1.0 --3rd=hbide_title=hbide --3rd=hbide_output=hbide - --inc --o${hb_name} - --w3 -es2 - --icon={allwin}hbide.ico - -#-instfile={win&HB_WITH_QT&!(HB_WITH_QT='no')}${HB_WITH_QT}/../bin/libgcc_s_dw2-1.dll -#-instfile={win&HB_WITH_QT&!(HB_WITH_QT='no')}${HB_WITH_QT}/../bin/mingwm10.dll -#-instfile={win&HB_WITH_QT&!(HB_WITH_QT='no')}${HB_WITH_QT}/../bin/QtCore4.dll -#-instfile={win&HB_WITH_QT&!(HB_WITH_QT='no')}${HB_WITH_QT}/../bin/QtGui4.dll -#-instfile={win&HB_WITH_QT&!(HB_WITH_QT='no')}${HB_WITH_QT}/../bin/QtNetwork4.dll - -hbxbp.hbc -hbqt.hbc -hbformat.hbc - -xbpaddons/xbpaddons.hbp -xbpaddons/xbpaddons.hbc - --env:HB_DYNLOAD_RDDADS=yes -rddads.hbc - -main.prg -parts.prg -object.prg -stylesheets.prg -tags.prg -misc.prg -actions.prg -editor.prg -findreplace.prg -docks.prg -saveload.prg -themes.prg -projmanager.prg -sources.prg -harbourhelp.prg -environ.prg -home.prg -functions.prg -docwriter.prg -skeletons.prg -wizard.prg -tools.prg -shortcuts.prg -edit.prg -plugins.prg -dict.prg -format.prg -changelog.prg -console.prg -uisrcmanager.prg -projectwizard.prg - -hbqtoolbar.prg - -parseexpr.c - -docviewgenerator.ui -docwriter.ui -editor.ui -environ.ui -environments.ui -finddialog.ui -findinfiles.ui -findinfilesex.ui -findsource.ui -funclist.ui -mainwindow.ui -projectpropertiesex.ui -searchreplace.ui -searchreplacepanel.ui -selectionlist.ui -selectproject.ui -setup.ui -shortcuts.ui -skeletons.ui -themes.ui -themesex.ui -toolsutilities.ui -updown.ui -fetchdate.ui -updown_v.ui -format.ui -changelog.ui -projectwizard.ui -panels.ui - -hbide.qrc -settings.qrc - --3rd=hbide_file=hbide.ch - -# Always build in shared mode for these platforms because the -# tool is included in std distro and we want to minimize its size. -{_HB_BUILD_&(!(HB_BUILD_DYN='no')&(win|wce|os2))}-shared diff --git a/harbour/contrib/hbide/hbide.ico b/harbour/contrib/hbide/hbide.ico deleted file mode 100644 index 11fee6d15e5ea6a6f9e2151f10c0c2bcaea008eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44708 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 diff --git a/harbour/contrib/hbide/hbide.qrc b/harbour/contrib/hbide/hbide.qrc deleted file mode 100644 index 7e04e95561..0000000000 --- a/harbour/contrib/hbide/hbide.qrc +++ /dev/null @@ -1,272 +0,0 @@ - - - resources/minimize_all.png - resources/maximize_all.png - resources/maximize.png - resources/minimize.png - resources/arguments.png - resources/blockcomment.png - resources/blockindentl.png - resources/blockindentr.png - resources/bookmark.png - resources/browser.png - resources/build.png - resources/builderror.png - resources/buildlaunch.png - resources/buildrun.png - resources/buildsource.png - resources/check.png - resources/clean.png - resources/cleanrun.png - resources/close.png - resources/close3.png - resources/closeall.png - resources/closeexcept.png - resources/closetab.png - resources/codeskeletons.png - resources/column.png - resources/compile.png - resources/copy-filname.png - resources/copy.png - resources/curlinehilight.png - resources/cut.png - resources/cutb16.png - resources/dbl2sglquote.png - resources/dbstruct.png - resources/dc_delete.png - resources/dc_down.png - resources/dc_folder.png - resources/dc_function.png - resources/dc_home.png - resources/dc_left.png - resources/dc_pdffile.png - resources/dc_plus.png - resources/dc_print.png - resources/dc_quit.png - resources/dc_refresh.png - resources/dc_right.png - resources/dc_textdoc.png - resources/dc_textdocument.png - resources/dc_up.png - resources/debug.png - resources/decreaseindent.png - resources/deleteline.png - resources/description.png - resources/designer.png - resources/docwriter.png - resources/down.png - resources/down16.png - resources/duplicateline.png - resources/editstree.png - resources/envconfig.png - resources/example.png - resources/exit.png - resources/exit3.png - resources/exporthtml.png - resources/ffn.png - resources/filec.png - resources/fileprg.png - resources/find.png - resources/fl_c.png - resources/fl_dll.png - resources/fl_exe.png - resources/fl_ini.png - resources/fl_lib.png - resources/fl_prg.png - resources/fl_res.png - resources/fl_txt.png - resources/file-open.png - resources/folder.png - resources/font.png - resources/formview.png - resources/fullscreen.png - resources/go-bottom.png - resources/go-down.png - resources/go-first.png - resources/go-jump.png - resources/go-last.png - resources/go-next.png - resources/go-prev.png - resources/go-top.png - resources/go-up.png - resources/gotoline.png - resources/gotoline3.png - resources/gotomark.png - resources/grid.png - resources/harbour.png - resources/harbourhelp.png - resources/hb-16x16.png - resources/hb-32x32.png - resources/hbide.png - resources/hbidesplash.png - resources/hbidesplashwatermark.png - resources/help.png - resources/help1.png - resources/helpdoc.png - resources/hilight-all.png - resources/home3.png - resources/horzruler.png - resources/idepreferences.png - resources/increaseindent.png - resources/indent-more.png - resources/indent-less.png - resources/info.png - resources/infotips.png - resources/insert-datetime.png - resources/insert-external-file.png - resources/insert-procname.png - resources/insert-separator.png - resources/invertcase.png - resources/keyboardmappings.png - resources/launch.png - resources/lense.png - resources/list-developers.png - resources/list-users.png - resources/load_1.png - resources/load_2.png - resources/load_3.png - resources/Lookup.png - resources/matchobj.png - resources/minus.png - resources/modulelist.png - resources/movelinedown.png - resources/movelineup.png - resources/new.png - resources/new2.png - resources/next.png - resources/notepad.png - resources/open.png - resources/open2.png - resources/open3.png - resources/panel_1.png - resources/panel_2.png - resources/panel_3.png - resources/panel_4.png - resources/panel_5.png - resources/panel_6.png - resources/panel_7.png - resources/panel_8.png - resources/panel_9.png - resources/panel_10.png - resources/panel_11.png - resources/panel_12.png - resources/panel_13.png - resources/paste.png - resources/placeremovemark.png - resources/ppo.png - resources/previous.png - resources/print.png - resources/project.png - resources/projectadd.png - resources/projectdel.png - resources/projectstree.png - resources/projtree.png - resources/properties.png - resources/readonly.png - resources/rebuild.png - resources/rebuildlaunch.png - resources/redo.png - resources/richtext.png - resources/run.png - resources/runscript.png - resources/runnodebug.png - resources/save.png - resources/save3.png - resources/saveall.png - resources/saveas.png - resources/search.png - resources/selectall.png - resources/selectionline.png - resources/setmain.png - resources/sgl2dblquote.png - resources/sort.png - resources/sortdescend.png - resources/source_c.png - resources/source_cpp.png - resources/source_h.png - resources/source_o.png - resources/source_prg.png - resources/source_res.png - resources/source_txt.png - resources/source_unknown.png - resources/statistics.png - resources/spacestotabs.png - resources/stream.png - resources/streamcomment.png - resources/syntaxhiliter.png - resources/tabcmodified.png - resources/tabmodified.png - resources/tabreadonly.png - resources/tabs.png - resources/tabstospaces.png - resources/tabunmodified.png - resources/tests.png - resources/text.png - resources/thumbnail.png - resources/togglelinenumber.png - resources/tolower.png - resources/tools.png - resources/toupper.png - resources/trashpage.png - resources/undo.png - resources/unload_1.png - resources/up.png - resources/up16.png - resources/vr-16x16.png - resources/vr.png - resources/xmate.png - resources/zoomin.png - resources/zoomout.png - resources/zoomin3.png - resources/zoomout3.png - resources/memo.png - resources/hideshow.png - resources/cuied.png - resources/expand_m.png - resources/collapse_m.png - resources/view_docks.png - resources/b_1.png - resources/b_2.png - resources/b_3.png - resources/b_4.png - resources/b_5.png - resources/b_6.png - resources/b_7.png - resources/b_8.png - resources/b_9.png - resources/b_10.png - resources/b_11.png - resources/b_12.png - resources/b_13.png - resources/b_14.png - resources/b_15.png - resources/b_16.png - resources/b_17.png - resources/b_18.png - resources/b_19.png - resources/b_20.png - resources/split.png - resources/split_close.png - resources/split_h.png - resources/split_v.png - resources/align_at.png - resources/dc_method.png - resources/dc_class.png - resources/dc_procedure.png - resources/stringify.png - resources/dictionary.png - resources/launch_r.png - resources/editor.png - resources/configtoolbars.png - resources/view_cascaded.png - resources/view_organized.png - resources/view_tabbed.png - resources/view_tiled.png - resources/view_vertstacked.png - resources/view_horzstacked.png - resources/view_zoomin.png - resources/view_zoomout.png - resources/view_refresh.png - docs/faq.htm - - diff --git a/harbour/contrib/hbide/hbqtoolbar.prg b/harbour/contrib/hbide/hbqtoolbar.prg deleted file mode 100644 index 52c2416caa..0000000000 --- a/harbour/contrib/hbide/hbqtoolbar.prg +++ /dev/null @@ -1,371 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2010-2012 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 07Aug2010 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbide.ch" -#include "common.ch" -#include "hbclass.ch" -#include "hbqtgui.ch" - -/*----------------------------------------------------------------------*/ - -CLASS HbqToolbar - - DATA oWidget - DATA cName - DATA oParent - DATA hItems INIT {=>} - DATA hActions INIT {=>} - - DATA allowedAreas INIT Qt_TopToolBarArea + Qt_LeftToolBarArea + Qt_BottomToolBarArea + Qt_RightToolBarArea - DATA initialArea INIT Qt_TopToolBarArea - DATA orientation INIT Qt_Horizontal - DATA size - DATA moveable INIT .T. - DATA floatable INIT .T. - - DATA lPressed INIT .f. - DATA qPos - DATA qDrag - DATA qMime - DATA qDropAction - DATA qPix - DATA qByte - - METHOD new( cName, oParent ) - METHOD create( cName, oParent ) - METHOD destroy() - METHOD execEvent( cEvent, p, p1 ) - METHOD addToolButton( cName, cDesc, cImage, bAction, lCheckable, lDragEnabled ) - METHOD setItemChecked( cName, lState ) - METHOD setItemEnabled( cName, lEnabled ) - METHOD addWidget( cName, qWidget ) - METHOD addAction( cName, qAction, bBlock ) - METHOD addSeparator() - METHOD contains( cName ) INLINE hb_hHasKey( ::hActions, cName ) - METHOD getItem( cName ) INLINE iif( hb_hHasKey( ::hActions, cName ), ::hActions[ cName ], NIL ) - METHOD itemToggle( cName ) - - ERROR HANDLER onError( ... ) - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD HbqToolbar:new( cName, oParent ) - - ::cName := cName - ::oParent := oParent - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbqToolbar:create( cName, oParent ) - - STATIC nID := 0 - - DEFAULT cName TO ::cName - DEFAULT oParent TO ::oParent - ::cName := cName - ::oParent := oParent - - DEFAULT ::cName TO "HbqToolbar_" + hb_ntos( ++nID ) - - DEFAULT ::size TO QSize( 16,16 ) - - ::oWidget := QToolbar( ::oParent ) - ::oWidget:setObjectName( ::cName ) - ::oWidget:setAllowedAreas( ::allowedAreas ) - ::oWidget:setOrientation( ::orientation ) - ::oWidget:setIconSize( ::size ) - ::oWidget:setMovable( ::moveable ) - ::oWidget:setFloatable( ::floatable ) - ::oWidget:setFocusPolicy( Qt_NoFocus ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbqToolbar:onError( ... ) - LOCAL cMsg := __GetMessage() - - IF SubStr( cMsg, 1, 1 ) == "_" - cMsg := SubStr( cMsg, 2 ) - ENDIF - RETURN ::oWidget:&cMsg( ... ) - -/*----------------------------------------------------------------------*/ - -METHOD HbqToolbar:destroy() - LOCAL xTmp - - FOR EACH xTmp IN ::hItems - IF xTmp:className() == "QTOOLBUTTON" - xTmp:disconnect( QEvent_MouseButtonPress ) - xTmp:disconnect( QEvent_MouseButtonRelease ) - xTmp:disconnect( QEvent_MouseMove ) - xTmp:disconnect( QEvent_Enter ) - xTmp:disconnect( "clicked()" ) - ENDIF - xTmp := NIL - NEXT - ::cName := NIL - ::oParent := NIL - ::hItems := NIL - ::allowedAreas := NIL - ::initialArea := NIL - ::orientation := NIL - ::size := NIL - ::moveable := NIL - ::floatable := NIL - ::lPressed := NIL - ::qPos := NIL - ::qDrag := NIL - ::qMime := NIL - ::qDropAction := NIL - ::qPix := NIL - ::qByte := NIL - ::oWidget := NIL - - ::hActions := NIL - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbqToolbar:execEvent( cEvent, p, p1 ) - LOCAL qEvent, qRC - - qEvent := p - - SWITCH cEvent - CASE "QEvent_MouseLeave" - EXIT - - CASE "QEvent_MouseMove" - qRC := QRect( ::qPos:x() - 5, ::qPos:y() - 5, 10, 10 ):normalized() - IF qRC:contains( qEvent:pos() ) - ::qByte := QByteArray( ::hItems[ p1 ]:objectName() ) - - ::qMime := QMimeData() - ::qMime:setData( "application/x-toolbaricon", ::qByte ) - ::qMime:setHtml( ::hItems[ p1 ]:objectName() ) - - ::qPix := QIcon( ::hItems[ p1 ]:icon ):pixmap( 16,16 ) - - ::qDrag := QDrag( hbide_setIde():oDlg:oWidget ) - ::qDrag:setMimeData( ::qMime ) - ::qDrag:setPixmap( ::qPix ) - ::qDrag:setHotSpot( QPoint( 15,15 ) ) - ::qDrag:setDragCursor( ::qPix, Qt_CopyAction + Qt_IgnoreAction ) - ::qDropAction := ::qDrag:exec( Qt_CopyAction + Qt_IgnoreAction ) /* Why this is not terminated GPF's */ - - ::qDrag := NIL - ::qPos := NIL - ::hItems[ p1 ]:setChecked( .f. ) - ::hItems[ p1 ]:setWindowState( 0 ) - ENDIF - EXIT - - CASE "QEvent_MouseRelease" - ::qDrag := NIL - EXIT - - CASE "QEvent_MousePress" - ::qPos := qEvent:pos() - EXIT - - CASE "buttonNew_clicked" - EXIT - - ENDSWITCH - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD HbqToolbar:addWidget( cName, qWidget ) - LOCAL qAction - - DEFAULT cName TO hbide_getNextIDasString( "IdeToolButtonWidget" ) - - qAction := QWidgetAction( ::oWidget ) - qAction:setDefaultWidget( qWidget ) - ::oWidget:addAction( qAction ) - - ::hItems[ cName ] := qWidget - ::hActions[ cName ] := qAction - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD HbqToolbar:addSeparator() - LOCAL qAction - LOCAL cName := hbide_getNextIDasString( "IdeToolButtonSeparator" ) - - qAction := ::oWidget:addSeparator() - - ::hItems[ cName ] := cName - ::hActions[ cName ] := qAction - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD HbqToolbar:addAction( cName, qAction, bBlock ) - - DEFAULT cName TO hbide_getNextIdAsString( "IdeToolButtonAction" ) - - ::oWidget:addAction( qAction ) - - ::hItems[ cName ] := cName - ::hActions[ cName ] := qAction - IF HB_ISBLOCK( bBlock ) - qAction:connect( "triggered()", bBlock ) - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD HbqToolbar:addToolButton( cName, cDesc, cImage, bAction, lCheckable, lDragEnabled ) - LOCAL oButton, oActBtn - - DEFAULT cName TO hbide_getNextIDasString( "IdeToolButton" ) - DEFAULT cDesc TO "" - DEFAULT lCheckable TO .f. - DEFAULT lDragEnabled TO .f. - - oButton := QToolButton() - oButton:setObjectName( cName ) - oButton:setTooltip( cDesc ) - oButton:setIcon( QIcon( cImage ) ) - oButton:setCheckable( lCheckable ) - oButton:setFocusPolicy( Qt_NoFocus ) - - IF lDragEnabled - oButton:connect( QEvent_MouseButtonPress , {|p| ::execEvent( "QEvent_MousePress" , p, cName ) } ) - oButton:connect( QEvent_MouseButtonRelease, {|p| ::execEvent( "QEvent_MouseRelease", p, cName ) } ) - oButton:connect( QEvent_MouseMove , {|p| ::execEvent( "QEvent_MouseMove" , p, cName ) } ) - oButton:connect( QEvent_Enter , {|p| ::execEvent( "QEvent_MouseEnter" , p, cName ) } ) - ENDIF - - IF HB_ISBLOCK( bAction ) - oButton:connect( "clicked()", bAction ) - ENDIF - oActBtn := ::oWidget:addWidget( oButton ) - - ::hItems[ cName ] := oButton - ::hActions[ cName ] := oActBtn - - RETURN oButton - -/*----------------------------------------------------------------------*/ - -METHOD HbqToolbar:setItemChecked( cName, lState ) - LOCAL lOldState - - IF hb_hHasKey( ::hActions, cName ) - IF ::hActions[ cName ]:isCheckable() - lOldState := ::hActions[ cName ]:isChecked() - IF HB_ISLOGICAL( lState ) - ::hActions[ cName ]:setChecked( lState ) - ENDIF - ENDIF - ENDIF - - RETURN lOldState - -/*----------------------------------------------------------------------*/ - -METHOD HbqToolbar:setItemEnabled( cName, lEnabled ) - LOCAL lOldEnabled - - IF hb_hHasKey( ::hActions, cName ) - lOldEnabled := ::hActions[ cName ]:isEnabled() - IF HB_ISLOGICAL( lEnabled ) - ::hActions[ cName ]:setEnabled( lEnabled ) - ENDIF - ENDIF - - RETURN lOldEnabled - -/*----------------------------------------------------------------------*/ - -METHOD HbqToolbar:itemToggle( cName ) - LOCAL lOldState - - IF hb_hHasKey( ::hActions, cName ) - IF ::hActions[ cName ]:isCheckable() - lOldState := ::hActions[ cName ]:isChecked() - ::hActions[ cName ]:setChecked( ! lOldState ) - ENDIF - ENDIF - - RETURN lOldState - -/*----------------------------------------------------------------------*/ - diff --git a/harbour/contrib/hbide/home.prg b/harbour/contrib/hbide/home.prg deleted file mode 100644 index b4772665b4..0000000000 --- a/harbour/contrib/hbide/home.prg +++ /dev/null @@ -1,621 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 04Mar2010 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbide.ch" -#include "common.ch" -#include "hbclass.ch" -#include "xbp.ch" -#include "hbqtgui.ch" - -/*----------------------------------------------------------------------*/ - -#define __browserStat_anchorClicked__ 2001 -#define __browserWelcome_contextMenuRequested__ 2002 -#define __browserFaq_contextMenuRequested__ 2003 -#define __tabWidget_currentChanged__ 2004 - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_htmlImgAnchor( cHref, cImg, nWidth, nHeight ) - DEFAULT nWidth TO 12 - DEFAULT nHeight TO 12 - RETURN '' + ' ' + '' - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_htmlAnchor( cHref, cText, cTooltip ) - - RETURN '' + cText + '' - -/*----------------------------------------------------------------------*/ - -CLASS IdeHome INHERIT IdeObject - - DATA oWelcomeTab - DATA qWelcomeBrowser - DATA oFaqTab - DATA qFaqBrowser - DATA oView - - DATA cClickedProject - DATA cClickedSource - - DATA qCurBrowser - DATA qPrnDlg - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() - METHOD refresh() - METHOD execEvent( nEvent, p ) - METHOD buildWelcomeTab() - METHOD activateTab( mp1, mp2, oTab ) - METHOD addProjectsInfo( aHtm ) - METHOD buildProjectDetails( cProjectTitle ) - METHOD buildSourcesInfo( cProjectTitle, aSrcInfo ) - METHOD formatSourceInfo( aHtm, aSrc ) - METHOD buildFaqTab() - METHOD setStyleSheetTextBrowser( qBrw ) - METHOD print() - METHOD paintRequested( qPrinter ) - METHOD buildView() - METHOD show() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeHome:new( oIde ) - ::oIde := oIde - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHome:create( oIde ) - - DEFAULT oIde TO ::oIde - ::oIde := oIde - - ::buildView() - - ::oView:oTabWidget:oWidget:setDocumentMode( .t. ) - ::oView:oTabWidget:oWidget:setStyleSheet( "QTabWidget::tab-bar {left: 5px;}" ) - ::oView:qLayout:setContentsMargins( 0,0,0,0 ) - - ::buildWelcomeTab() - ::buildFaqTab() - - ::oView:oTabWidget:oWidget:setCurrentIndex( 0 ) - - ::oView:hide() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHome:show() - - IF ::oView:oWidget:isVisible() - ::oView:hide() - ELSE - ::oIde:setPosAndSizeByIniEx( ::oView:oWidget, ::oINI:cStatsDialogGeometry ) - ::oView:show() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHome:buildView() - LOCAL oFrame - - oFrame := XbpWindow():new( ::oDa ) - oFrame:oWidget := QWidget( ::oDa:oWidget ) - oFrame:oWidget:resize( 750,300 ) - oFrame:oWidget:connect( QEvent_Close, {|| ::oINI:cStatsDialogGeometry := hbide_posAndSize( ::oView:oWidget ) } ) - - oFrame:oWidget:setWindowFlags( Qt_Sheet ) - oFrame:oWidget:setObjectName( "Stats" ) - ::oDa:addChild( oFrame ) - - oFrame:hbLayout := HBPLAYOUT_TYPE_VERTBOX - oFrame:qLayout:setContentsMargins( 0,0,0,0 ) - - oFrame:oTabWidget := XbpTabWidget():new():create( oFrame, , {0,0}, {600,300}, , .t. ) - - oFrame:oTabWidget:oWidget:setUsesScrollButtons( .t. ) - oFrame:oTabWidget:oWidget:setMovable( .t. ) - - ::oView := oFrame - - ::oIde:setPosAndSizeByIniEx( oFrame:oWidget, ::oINI:cStatsDialogGeometry ) - - RETURN self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHome:destroy() - - IF !empty( ::qPrnDlg ) - ::qPrnDlg:disconnect( "paintRequested(QPrinter*)" ) - ::qPrnDlg := NIL - ENDIF - - ::qWelcomeBrowser:disconnect( "anchorClicked(QUrl)" ) - ::qWelcomeBrowser:disconnect( "customContextMenuRequested(QPoint)" ) - ::qFaqBrowser:disconnect( "customContextMenuRequested(QPoint)" ) - - ::oWelcomeTab := NIL - ::qWelcomeBrowser := NIL - ::qCurBrowser := NIL - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHome:execEvent( nEvent, p ) - LOCAL cAct, cText, cExt - - IF ::lQuitting - RETURN Self - ENDIF - - SWITCH nEvent - CASE __tabWidget_currentChanged__ - IF p == 0 - ::qCurBrowser := ::qWelcomeBrowser - ELSEIF p == 1 - ::qCurBrowser := ::qFaqBrowser - ENDIF - EXIT - CASE __browserStat_anchorClicked__ - cText := p:toString() - - IF "prj-" $ lower( cText ) - ::cClickedProject := substr( cText, 5 ) - ::buildProjectDetails( ::cClickedProject ) - - ELSEIF "fle-" $ lower( cText ) - ::cClickedSource := substr( cText, 5 ) - - /* Send it for Editing */ - hb_fNameSplit( ::cClickedSource, , , @cExt ) - IF lower( cExt ) == ".hbp" - ::buildProjectDetails( ::cClickedSource ) - ELSE - ::oSM:editSource( hbide_stripFilter( ::cClickedSource ) ) - ENDIF - /* Stay on the Same Page */ - ::buildProjectDetails( ::cClickedProject ) - ENDIF - EXIT - CASE __browserWelcome_contextMenuRequested__ - CASE __browserFaq_contextMenuRequested__ - IF !empty( cAct := hbide_popupBrwContextMenu( ::qCurBrowser, p ) ) - IF cAct $ "Back,Forward,Home" - ::refresh() - ELSEIF cAct == "Print" - ::print() - ENDIF - ENDIF - EXIT - ENDSWITCH - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHome:activateTab( mp1, mp2, oTab ) - - HB_SYMBOL_UNUSED( mp1 ) - HB_SYMBOL_UNUSED( mp2 ) - - IF oTab == ::oWelcomeTab - ::qCurBrowser := ::qWelcomeBrowser - ELSEIF oTab == ::oFaqTab - ::qCurBrowser := ::qFaqBrowser - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHome:print() - - ::qPrnDlg := NIL - IF empty( ::qPrnDlg ) - ::qPrnDlg := QPrintPreviewDialog() - ::qPrnDlg:setWindowTitle( "Welcome::Projects" ) - ::qPrnDlg:setWindowIcon( QIcon( hbide_image( "hbide" ) ) ) - ::qPrnDlg:connect( "paintRequested(QPrinter*)", {|p| ::paintRequested( p ) } ) - ENDIF - - ::qPrnDlg:exec() - - RETURN self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHome:paintRequested( qPrinter ) - ::qCurBrowser:print( qPrinter ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHome:setStyleSheetTextBrowser( qBrw ) - - qBrw:setStyleSheet( 'QTextBrowser { background-image: url(:/resources/hbidesplashwatermark.png); ' + ; - 'background-attachment: scroll; background-repeat:no-repeat; background-position:center; ' + ; - 'background-color: rgb(255,255,255); }' ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHome:buildWelcomeTab() - LOCAL oTab, qBrw, qSList - - //oTab := XbpTabPage():new( ::aViews[ 1 ], , { 5,5 }, { 700,400 }, , .t. ) - oTab := XbpTabPage():new( ::oView, , { 5,5 }, { 700,400 }, , .t. ) - oTab:caption := "Welcome" - oTab:minimized := .F. - oTab:create() - oTab:tabActivate := {|mp1,mp2,oXbp| ::activateTab( mp1, mp2, oXbp ) } - - oTab:hbLayout := HBPLAYOUT_TYPE_VERTBOX - oTab:qLayout:setContentsMargins( 0,0,0,0 ) - - qBrw := QTextBrowser() - oTab:qLayout:addWidget( qBrw ) - qBrw:setContextMenuPolicy( Qt_CustomContextMenu ) - ::setStyleSheetTextBrowser( qBrw ) - - ::oWelcomeTab := oTab - ::qWelcomeBrowser := qBrw - ::qCurBrowser := qBrw - - qBrw:connect( "anchorClicked(QUrl)" , {|p| ::execEvent( __browserStat_anchorClicked__ , p ) } ) - qBrw:connect( "customContextMenuRequested(QPoint)", {|p| ::execEvent( __browserWelcome_contextMenuRequested__, p ) } ) - - qSList := QStringList() - qSList:append( hb_dirBase() + "docs" ) - qBrw:setSearchPaths( qSList ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHome:refresh() - LOCAL aHtm := {} - - aadd( aHtm, '' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - AADD( aHtm, ' ' ) - // - ::addProjectsInfo( @aHtm ) - // - aadd( aHtm, '
' ) - aadd( aHtm, ' ' + ' ' + ' ' + ' ' ) - aadd( aHtm, ' Projects' ) - aadd( aHtm, '  ' + ' ' + ' ' ) - aadd( aHtm, ' ' + '( ' + hbide_pathNormalized( ::oIde:cProjIni, .f. ) + ' )' + '' ) - aadd( aHtm, '
Title Type Sources Location Last Modified
' ) - aadd( aHtm, ' ' ) - aadd( aHtm, '' ) - // - ::qWelcomeBrowser:clear() - // - ::qWelcomeBrowser:setHTML( hbide_arrayToMemo( aHtm ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHome:addProjectsInfo( aHtm ) - LOCAL a_, prp_, src_, dir_, cIcon - - IF empty( ::aProjects ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' + 'None' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - ELSE - FOR EACH a_ IN ::aProjects - prp_ := a_[ 3, PRJ_PRP_PROPERTIES, 1 ] - src_ := a_[ 3, PRJ_PRP_SOURCES , 1 ] - dir_ := directory( a_[ 1 ] ) - cIcon := hbide_imageForProjectType( prp_[ PRJ_PRP_TYPE ] ) - - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' + hbide_htmlImgAnchor( 'prj-' + prp_[ PRJ_PRP_TITLE ], ':/resources/' + cIcon + '.png' ) + ' ' ) - aadd( aHtm, ' ' + hbide_htmlAnchor( 'prj-' + prp_[ PRJ_PRP_TITLE ], prp_[ PRJ_PRP_TITLE ], a_[ 1 ] ) ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' + left( prp_[ PRJ_PRP_TYPE ], 3 ) ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' + hb_ntos( Len( src_ ) ) ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' + hbide_pathNormalized( a_[ 1 ], .f. ) ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - IF ! empty( dir_ ) - aadd( aHtm, ' ' + dtoc( dir_[ 1,3 ] ) + " " + dir_[ 1,4 ] ) - ELSE - aadd( aHtm, ' ' ) - ENDIF - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - NEXT - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHome:buildProjectDetails( cProjectTitle ) - LOCAL aSrc, cSrc, dir_, cRoot, cExt, cIcon, cName, cPath - LOCAL aSrcInfo := {}, a_:= {} - - aSrc := ::oPM:getSourcesByProjectTitle( cProjectTitle ) - cRoot := ::oPM:getProjectPathFromTitle( cProjectTitle ) - - FOR EACH cSrc IN aSrc - aadd( a_, hbide_syncProjPath( cRoot, cSrc ) ) - NEXT - a_ := hbide_groupSources( "org", a_ ) - FOR EACH cSrc IN a_ - hb_fNameSplit( cSrc, @cPath, @cName, @cExt ) - cExt := lower( cExt ) - cIcon := hbide_imageForFileType( cExt ) - IF !empty( dir_:= directory( cSrc ) ) - // bytes date time - aadd( aSrcInfo, { cSrc, hbide_pathNormalized( cPath,.f. ), cName, cExt, cIcon, dir_[ 1,2 ], dir_[ 1,3 ], dir_[ 1,4 ] } ) - ENDIF - NEXT - - IF !empty( aSrcInfo ) - ::buildSourcesInfo( cProjectTitle, aSrcInfo ) - ELSE - ::refresh() - ENDIF - - RETURN aSrcInfo - -/*----------------------------------------------------------------------*/ - -METHOD IdeHome:buildSourcesInfo( cProjectTitle, aSrcInfo ) - LOCAL aHtm := {}, aSrc - LOCAL cIcon := hbide_imageForProjectType( ::oPM:getProjectTypeFromTitle( cProjectTitle ) ) - - aadd( aHtm, '' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - AADD( aHtm, ' ' ) - // - FOR EACH aSrc IN aSrcInfo - ::formatSourceInfo( @aHtm, aSrc ) - NEXT - // - aadd( aHtm, '
' ) - aadd( aHtm, ' ' + ' ' + ' ' + ' ' ) - aadd( aHtm, ' ' + cProjectTitle + '' ) - aadd( aHtm, '
SourceTypeSizeLocationLast Modified
' ) - aadd( aHtm, ' ' ) - aadd( aHtm, '' ) - // - ::qWelcomeBrowser:clear() - // - ::qWelcomeBrowser:setHTML( hbide_arrayToMemo( aHtm ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHome:formatSourceInfo( aHtm, aSrc ) - - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' + hbide_htmlImgAnchor( 'fle-' + aSrc[ 1 ], ':/resources/' + aSrc[ 5 ] + '.png' ) + ' ' ) - aadd( aHtm, ' ' + hbide_htmlAnchor( 'fle-' + aSrc[ 1 ], aSrc[ 3 ], aSrc[ 1 ] ) ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' + aSrc[ 4 ] ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' + hb_ntos( aSrc[ 6 ] ) ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' + aSrc[ 2 ] ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' + dtoc( aSrc[ 7 ] ) + " " + aSrc[ 8 ] ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeHome:buildFaqTab() - LOCAL oTab, qBrw, aFaq, aHtm, a_, b_, s - - //oTab := XbpTabPage():new( ::aViews[ 1 ], , { 5,5 }, { 700,400 }, , .t. ) - oTab := XbpTabPage():new( ::oView, , { 5,5 }, { 700,400 }, , .t. ) - oTab:caption := "FAQ's" - oTab:minimized := .F. - oTab:create() - oTab:tabActivate := {|mp1,mp2,oXbp| ::activateTab( mp1, mp2, oXbp ) } - - oTab:hbLayout := HBPLAYOUT_TYPE_VERTBOX - oTab:qLayout:setContentsMargins( 0,0,0,0 ) - - qBrw := QTextBrowser() - oTab:qLayout:addWidget( qBrw ) - qBrw:setContextMenuPolicy( Qt_CustomContextMenu ) - ::setStyleSheetTextBrowser( qBrw ) - - qBrw:connect( "customContextMenuRequested(QPoint)", {|p| ::execEvent( __browserFaq_contextMenuRequested__, p ) } ) - - ::oFaqTab := oTab - ::qFaqBrowser := qBrw - - aFaq := hbide_getFaqs() ; a_:= aFaq[ 1 ]; b_:= aFaq[ 2 ] - aHtm := {} - - aadd( aHtm, '' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - FOR EACH s IN a_ - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - aadd( aHtm, ' ' ) - NEXT - aadd( aHtm, '
' ) - aadd( aHtm, ' ' + s + '' ) - aadd( aHtm, '
' ) - aadd( aHtm, ' ' + b_[ s:__enumIndex() ] + '' ) - aadd( aHtm, '
' ) - aadd( aHtm, ' ' ) - aadd( aHtm, '' ) - // - ::qFaqBrowser:clear() - // - ::qFaqBrowser:setHTML( hbide_arrayToMemo( aHtm ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_getFaqs() - LOCAL a_:= {}, b_:= {} - - aadd( a_, 'Does HbIDE support editing of same source at more than one place simultaneously ?' ) - aadd( b_, 'Yes. HbIDE provides for splitting an editing window, horizontally and vertically, ' + ; - 'both ways. Right-click anywhere in the editor, point to "Split..." and then ' + ; - 'click on required option.' ) - - aadd( a_, 'Does HbIDE support session management ?' ) - aadd( b_, 'Yes. And in a unique way. It provides to construct n number of "Panels" where you can spread ' + ; - 'sources. Each panel is given a name as well as corresponding button on the left-toolbar, a colored ' + ; - 'circle, to bring it forward. New panel can be created from selecting "New..." from drop-down ' + ; - 'list on top-toolbar and providing a name in the editing dialog. For this reason you will never ' + ; - 'need to exit HbIDE and reenter again. It is a big productivity boost.' ) - - aadd( a_, 'Does HbIDE allows to compile a project for different compilers and/or environments ?' ) - aadd( b_, 'Yes. Infact this feature had been the one of the main reasons of HbIDEs existance. ' + ; - 'All you have to do is to enter different environment settings in _ONE_ hbide.env file which ' + ; - 'resides alongside hbide.ini. HbIDE provides the interface to manipulate this .env settings ' + ; - 'which can be invoked from right-toolbar icon "Compiler Environments". Follow the input fields. ' + ; - 'A template is provided in "hbide.env", inspect it and you are through. Once hbide.env ' + ; - 'is ready, you will simply need to switch over the other environment which can be invoked ' + ; - 'via right-click on a project node in "Projects" tree and point to "Select an environment" ' + ; - 'and click on listed options. Next step is just to build the project.' ) - - aadd( a_, 'Can we keep any other content in hbide.ini ?' ) - aadd( b_, 'No. hbide.ini is always re-written at the time HbIDE exits. Also this action is executed ' + ; - 'several times depending upon the underlying needs. However, you can alter the contents in some ' + ; - 'sections, i.e., [Files], [Projects], etc., but only before running HbIDE. At exit, it will ' + ; - 're-write it again.' ) - - aadd( a_, 'Does HbIDE provides "intellisense" ? If yes, in what aspects ?' ) - aadd( b_, 'Yes. Not so powerful yet, but "yes". HbIDE embeds two components as the basis of this intellisense, ' + ; - hb_eol() + ; - ' 1. Harbour Documentation, and ' + hb_eol() + ; - ' 2. Project(s) Prototype Tagging. ' + hb_eol() + ; - 'Both these components can be pressed in servive simultaneously and as per need. Both are loaded ' + ; - 'only when requested. Prototype Tagging extends one step forward as to offer to load only those ' + ; - 'projects which a developer will be working on during that session. Both components can be aligned ' + ; - 'on the side corners to provide always-on view of the actual contents. The moment you press "(" ' + ; - 'HbIDE examines the contents of these components, if the function is available in Harbour Docs, ' + ; - 'its details are dumped into the viewer, otherwise if the function is contained in the tagged ' + ; - 'prototypes, it is made current in the list, and a html formatted prototype is displayed as tooltip ' + ; - 'beneth the current caret position. ' + hb_eol() + ; - hb_eol() + ; - 'Code completion tool is almost done with, and probably will make up its presence in the HbIDE soon. ' ) - - RETURN { a_, b_ } - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/main.prg b/harbour/contrib/hbide/main.prg deleted file mode 100644 index 6f49bb847e..0000000000 --- a/harbour/contrib/hbide/main.prg +++ /dev/null @@ -1,1774 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 17Nov2009 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * Many thanks to Vailton Renato for adding new functionalities. - */ -/*----------------------------------------------------------------------*/ - -#include "hbide.ch" -#include "common.ch" -#include "xbp.ch" -#include "appevent.ch" -#include "inkey.ch" -#include "gra.ch" -#include "set.ch" - -#include "hbclass.ch" -#include "hbver.ch" - -#if defined( __PLATFORM__WINDOWS ) .OR. ; - defined( __PLATFORM__LINUX ) - #include "rddads.hbx" -#endif - -/* Link all Harbour Functions : needed to run external scripts */ -/* NOTE: Please only add what's actually requested by plugin developers */ -//REQUEST __HB_EXTERN__ -//REQUEST __HBEXTERN__HBXBP__ -//REQUEST __HBEXTERN__HBQTCORE__ -//REQUEST __HBEXTERN__HBQTGUI__ -//REQUEST __HBEXTERN__HBQTNETWORK__ -//REQUEST __HBEXTERN__HBQTSQL__ - -/*----------------------------------------------------------------------*/ - -REQUEST DBFCDX -REQUEST DBFNTX -REQUEST DBFNSX -REQUEST ADS - -/*----------------------------------------------------------------------*/ - -FUNCTION Main( ... ) - LOCAL oTmp - - LOCAL hRDDADS, tmp - - #ifdef HB_IDE_DISTRO - LOCAL cBse := hb_dirBase() + ".." - - /* Set the path env variable to Qt's run-time which is used to compile Harbour binaries */ - hb_setEnv( "PATH", cBse + hb_ps() + "qt" + hb_ps() + "lib" + ; - hb_osPathListSeparator() + hb_getEnv( "PATH" ) ) - - /* Variable is used in hbide.env */ - hb_setEnv( "HB_IDE_INSTALL", cBse ) - #endif - - - IF hb_FileExists( tmp := hb_dirBase() + hb_libName( "rddads" + hb_libPostfix() ) ) - hRDDADS := hb_libLoad( tmp ) - IF ! Empty( hRDDADS ) - hbide_setAdsAvailable( .t. ) - hb_rddadsRegister() - ENDIF - ENDIF - - SET DATE TO ANSI - SET CENTURY ON - - QResource():registerResource_1( hbqtres_HbIde() ) - QResource():registerResource_1( hbqtres_Settings() ) - - oTmp := HbIde():new( hb_aParams() ) -#if 0 - oTmp:create() - oTmp:destroy() -#else - oTmp:create() -#endif - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -CLASS HbIde - - DATA aParams INIT {} - DATA cProjIni INIT "" - - DATA oAC /* Actions Manager */ - DATA oBM /* Database Browser Manager */ - DATA oDK /* Main Window Components Manager */ - DATA oDW /* Document Writer Manager */ - DATA oEM /* Editor Tabs Manager */ - DATA oEV /* Available Environments */ - DATA oFF /* Find in Files Manager */ - DATA oFN /* Functions Tags Manager */ - DATA oFR /* Find Replace Manager */ - DATA oHL /* Harbour Help Manager */ - DATA oHM /* panel manager */ - DATA oPM /* Project Manager */ - DATA oSM /* Souces Manager */ - DATA oSK /* Skeletons Manager */ - DATA oSC /* Shortcuts Manager */ - DATA oTM /* Plugin Tools Manager */ - DATA oTH /* Themes Manager */ - DATA oRM /* Reports Manager */ - DATA oSetup /* Setup Manager */ - DATA oINI /* INI Manager */ - DATA oFmt /* Code Formatter Manager */ - DATA oCL /* ChangeLog Manager */ - DATA oCUI /* CUI Screen Designer Console */ - DATA oUiS /* UI Source Writer */ - DATA oPWZ /* Project Wizard */ - DATA oParts /* HbIDE Parts Manager */ - - DATA nRunMode INIT HBIDE_RUN_MODE_INI - DATA nAnimantionMode INIT HBIDE_ANIMATION_NONE - - DATA oUI - - DATA aMeta INIT {} /* Holds current definition only */ - - DATA mp1, mp2, oXbp, nEvent - - DATA aTabs INIT {} - DATA aViews INIT {} - DATA aMdies INIT {} - DATA aProjData INIT {} - DATA aPrpObjs INIT {} - DATA aEditorPath INIT {} - DATA aSrcOnCmdLine INIT {} - DATA aHbpOnCmdLine INIT {} - DATA aDbfOnCmdLine INIT {} - -// DATA qLayout - - DATA qTabWidget - DATA oTabParent - DATA oFrame - DATA qLayoutFrame - DATA qViewsCombo - - DATA qFindDlg - - DATA qFontWrkProject - DATA qBrushWrkProject - DATA qProcess - DATA qHelpBrw - DATA qTBarLines - DATA qTBarPanels - DATA qTBarDocks - DATA qCompleter - DATA qCompModel - DATA qProtoList - - ACCESS oCurEditor INLINE ::oEM:getEditorCurrent() - ACCESS qCurEdit INLINE ::oEM:getEditCurrent() - ACCESS qCurDocument INLINE ::oEM:getDocumentCurrent() - - /* XBP Objects */ - DATA oDlg - DATA oDa - DATA oSBar - DATA oMenu - DATA oTBar - DATA oStackedWidget - DATA oStackedWidgetMisc - DATA oFont - DATA oProjTree - DATA oEditTree - DATA oFuncList - DATA oOutputResult - DATA oCompileResult - DATA oLinkResult - DATA oNewDlg - DATA oPBFind, oPBRepl, oPBClose, oFind, oRepl - DATA oCurProjItem - DATA oCurProject - DATA oProjRoot - DATA oExes - DATA oLibs - DATA oDlls - DATA oProps - DATA oGeneral - DATA oSearchReplace - DATA oMainToolbar - - DATA oDockR - DATA oDockB - DATA oDockB1 - DATA oDockB2 - DATA oDockPT - DATA oDockED - DATA oThemesDock - DATA oPropertiesDock - DATA oEnvironDock - DATA oFuncDock - DATA oDocViewDock - DATA oDocWriteDock - DATA oFunctionsDock - DATA oSkltnsTreeDock - DATA oHelpDock - DATA oSkeltnDock - DATA oFindDock - DATA oSourceThumbnailDock - DATA oQScintillaDock - DATA oUpDn - DATA oReportsManagerDock - DATA oFormatDock - DATA oCuiEdDock - DATA oUISrcDock - - DATA qAnimateAction - DATA qStatusBarAction - DATA qFuncFragmentWindowGeometry - - DATA lProjTreeVisible INIT .t. - DATA lDockRVisible INIT .f. - DATA lDockBVisible INIT .f. - DATA lTabCloseRequested INIT .f. - DATA isColumnSelectionEnabled INIT .f. - DATA lLineNumbersVisible INIT .t. - DATA lHorzRulerVisible INIT .t. - DATA lCurrentLineHighlightEnabled INIT .t. - - DATA cWrkFolderLast INIT "" - DATA cWrkProject INIT "" - DATA cWrkTheme INIT "" - DATA cWrkCodec INIT "EN" - DATA cWrkPathMk2 INIT hb_getenv( "HBIDE_DIR_HBMK2" ) - DATA cWrkPathEnv INIT hb_DirBase() - DATA cWrkEnvironment INIT "" - DATA cWrkFind INIT "" - DATA cWrkFolderFind INIT "" - DATA cWrkReplace INIT "" - DATA cWrkView INIT "Main" - DATA cWrkHarbour INIT "" - DATA cPathShortcuts INIT "" - DATA cTextExtensions INIT "" - - DATA oEnvironment - - DATA cPathSkltns INIT "" - DATA cSaveTo INIT "" - DATA oOpenedSources - DATA resPath INIT ":/resources" + hb_ps() - DATA pathSep INIT hb_ps() - DATA cLastFileOpenPath INIT hb_DirBase() + "projects" - DATA cProcessInfo - DATA cIniThemes - DATA cSeparator INIT "/*" + replicate( "-", 70 ) + "*/" - - DATA nTabSpaces INIT 3 /* Via User Setup */ - DATA cTabSpaces INIT space( 3 ) //::nTabSpaces ) - - DATA aTags INIT {} - DATA aText INIT {} - DATA aSkltns INIT {} - DATA aSources INIT {} - DATA aFuncList INIT {} - DATA aLines INIT {} - DATA aComments INIT {} - DATA aProjects INIT {} - DATA aUserDict INIT {} - - DATA aMarkTBtns INIT array( 6 ) - DATA lClosing INIT .f. - DATA lStatusBarVisible INIT .t. - - DATA nModeUI INIT UI_MODE_DEFAULT - - DATA oSys - DATA oSysMenu - - DATA lSortedFuncList INIT .t. - DATA lQuitting INIT .f. - - DATA oBMM /* Testing */ - - METHOD new( aParams ) - METHOD create( aParams ) - METHOD destroy() - // - METHOD setPosAndSizeByIniEx( qWidget, cParams ) - METHOD setPosByIniEx( qWidget, cParams ) - // - METHOD manageFocusInEditor() - METHOD removeProjectTree( aPrj ) - METHOD updateProjectTree( aPrj ) - METHOD manageItemSelected( oXbpTreeItem ) - METHOD manageProjectContext( mp1, mp2, oXbpTreeItem ) - METHOD updateFuncList( lSorted ) - METHOD gotoFunction( mp1, mp2, oListBox ) - METHOD manageFuncContext( mp1, mp2, oXbp ) - METHOD createTags() - METHOD updateProjectMenu() - METHOD updateTitleBar() - METHOD setCodec( cCodec ) - - METHOD execAction( cKey ) - METHOD execProjectAction( cKey ) - METHOD execSourceAction( cKey ) - METHOD execEditorAction( cKey ) - - METHOD showApplicationCursor( nCursor ) - METHOD testPainter( qPainter ) - - METHOD parseParams() - METHOD showCodeFregment( oXbp ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:destroy() - LOCAL xTmp - - /* Very important - destroy resources */ - HB_TRACE( HB_TR_DEBUG, "------------------------------------------------------" ) - HB_TRACE( HB_TR_DEBUG, "Before ::oIde:destroy()", memory( 1001 ) ) - HB_TRACE( HB_TR_DEBUG, " " ) - - ::oSBar := NIL - ::oMenu := NIL - ::oTBar := NIL - - ::oSetup:destroy() - ::oUpdn:destroy() - ::oHL:destroy() - ::oHM:destroy() - ::oSK:destroy() - - ::oFR:destroy() - ::oFF:destroy() - ::oSearchReplace:destroy() - - ::oFN:destroy() - ::oTM:destroy() - - ::oSC:destroy() - ::oDW:destroy() - ::oEV:destroy() - ::oTH:destroy() - ::oPM:destroy() - ::oRM:destroy() - - ::oBM:destroy() - ::oSM:destroy() - ::oEM:destroy() - - ::oAC:destroy() - ::oDK:destroy() - ::oDA := NIL - ::oDlg:destroy() - - ::oINI:destroy() - ::oFmt:destroy() - - FOR EACH xTmp IN ::aUserDict - xTmp:destroy() - NEXT - FOR EACH xTmp IN ::aSkltns - xTmp[ 1 ] := NIL - xTmp[ 2 ] := NIL - NEXT - - ::oFont := NIL - ::oTH := NIL - - ::aMeta := NIL - ::mp1 := NIL - ::mp2 := NIL - ::oXbp := NIL - ::nEvent := NIL - ::aTabs := NIL - ::aViews := NIL - ::aMdies := NIL - ::aProjData := NIL - ::aPrpObjs := NIL - ::aEditorPath := NIL - ::aSrcOnCmdLine := NIL - ::aHbpOnCmdLine := NIL - ::oTabParent := NIL - ::oFrame := NIL - ::aTags := NIL - ::aText := NIL - ::aSkltns := NIL - ::aSources := NIL - ::aFuncList := NIL - ::aLines := NIL - ::aComments := NIL - ::aProjects := NIL - ::aUserDict := NIL - ::aMarkTBtns := NIL - // - ::oStackedWidget := NIL - ::oStackedWidgetMisc := NIL - ::oFont := NIL - ::oProjTree := NIL - ::oEditTree := NIL - ::oFuncList := NIL - ::oOutputResult := NIL - ::oCompileResult := NIL - ::oLinkResult := NIL - ::oNewDlg := NIL - ::oPBFind := NIL - ::oPBRepl := NIL - ::oPBClose := NIL - ::oFind := NIL - ::oRepl := NIL - ::oCurProjItem := NIL - ::oCurProject := NIL - ::oProjRoot := NIL - ::oExes := NIL - ::oLibs := NIL - ::oDlls := NIL - ::oProps := NIL - ::oGeneral := NIL - ::oSearchReplace := NIL - ::oMainToolbar := NIL - ::oDockR := NIL - ::oDockB := NIL - ::oDockB1 := NIL - ::oDockB2 := NIL - ::oDockPT := NIL - ::oDockED := NIL - ::oThemesDock := NIL - ::oPropertiesDock := NIL - ::oEnvironDock := NIL - ::oFuncDock := NIL - ::oDocViewDock := NIL - ::oDocWriteDock := NIL - ::oFunctionsDock := NIL - ::oSkltnsTreeDock := NIL - ::oHelpDock := NIL - ::oSkeltnDock := NIL - ::oFindDock := NIL - ::oSourceThumbnailDock := NIL - ::oQScintillaDock := NIL - ::oUpDn := NIL - ::oReportsManagerDock := NIL - ::oFormatDock := NIL - ::lClosing := NIL - ::lStatusBarVisible := NIL - ::nModeUI := NIL - ::oSys := NIL - ::oSysMenu := NIL - - ::qLayout := NIL - ::qTabWidget := NIL - ::qLayoutFrame := NIL - ::qViewsCombo := NIL - ::qFindDlg := NIL - ::qFontWrkProject := NIL - ::qBrushWrkProject := NIL - ::qProcess := NIL - ::qHelpBrw := NIL - ::qTBarLines := NIL - ::qTBarPanels := NIL - ::qTBarDocks := NIL - ::qAnimateAction := NIL - ::qStatusBarAction := NIL - ::qCompModel := NIL - ::qProtoList := NIL - - HB_TRACE( HB_TR_DEBUG, " " ) - HB_TRACE( HB_TR_DEBUG, "After ::oIde:destroy()", memory( 1001 ) ) - HB_TRACE( HB_TR_DEBUG, "======================================================" ) - - RETURN self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:new( aParams ) - - DEFAULT aParams TO ::aParams - ::aParams := aParams - - RETURN self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:create( aParams ) - LOCAL qPixmap, qSplash, cView - LOCAL mp1, mp2, oXbp, nEvent - - qPixmap := QPixmap( ":/resources" + hb_ps() + "hbidesplash.png" ) - qSplash := QSplashScreen() - // qSplash:setWindowFlags( hb_bitOr( Qt_WindowStaysOnTopHint, qSplash:windowFlags() ) ) - qSplash:setPixmap( qPixmap ) - qSplash:show() - ::showApplicationCursor( Qt_BusyCursor ) - QApplication():processEvents() - - DEFAULT aParams TO ::aParams - ::aParams := aParams - ::parseParams() - - /* Setup GUI Error Reporting System*/ - hbqt_errorsys() - - /* Post self to set/get function - object variables may be needed on functions level */ - hbide_setIde( Self ) - - /* Editor's Font - TODO: User Managed Interface */ - ::oFont := XbpFont():new() - ::oFont:fixed := .t. - ::oFont:create( "10.Courier" ) - - /* Functions Tag Manager */ - ::oFN := IdeFunctions():new( Self ):create() - - /* Skeletons Manager */ - ::oSK := IdeSkeletons():new( Self ):create() - - /* Initiate UI Source Manager */ - ::oUiS := IdeUISrcManager():new( Self ):create() - - /* Initiate Project Wizard */ - ::oPWZ := IdeProjectWizard():new( Self ):create() - - /* Initialte Project Manager */ - ::oPM := IdeProjManager():new( Self ):create() - - /* INI Manager - array base to be removed later */ - ::oINI := IdeINI():new( Self ):create() - IF ::nRunMode == HBIDE_RUN_MODE_INI - ::oINI:load( ::cProjIni ) - ENDIF - - /* Load Persistent Scripts - hbide_persist_*.prg | hbs */ - hbide_loadPersistentScripts() - - /* Load User Dictionaries */ - hbide_loadUserDictionaries( Self ) - - /* Shortcuts */ - ::oSC := IdeShortcuts():new( Self ):create() - - /* Insert command line projects */ - aeval( ::aHbpOnCmdLine, {|e| aadd( ::oINI:aProjFiles, e ) } ) - /* Insert command line sources */ - aeval( ::aSrcOnCmdLine, {|e| aadd( ::oINI:aFiles, hbide_parseSourceComponents( e ) ) } ) - - /* Store to restore when all preliminary operations are completed */ - cView := ::cWrkView - - /* Setup Manager */ - ::oSetup := IdeSetup():new( Self ):create() - ::oSetup:setBaseColor() - - /* Load Code Skeletons */ - hbide_loadSkltns( Self ) - - /* Set Codec at the Begining - no interface display */ - hb_cdpSelect( ::cWrkCodec ) - - /* Parts Manager */ - ::oParts := IdeParts():new( Self ):create() - - /* Load IDE|User defined Themes */ - ::oTH := IdeThemes():new( Self, ::oINI:getThemesFile() ):create() - - /* DOCKing windows and ancilliary windows */ - ::oDK := IdeDocks():new( Self ):create() - - /* Tools Manager */ - ::oTM := IdeToolsManager():new( Self ):create() - - /* Actions */ - ::oAC := IdeActions():new( Self ):create() - - /* IDE's Main Window */ - ::oDK:buildDialog() - - /* Docking Widgets */ - ::oDK:buildDockWidgets() - - /* Toolbars */ - ::oAC:buildToolBars() - - /* Main Menu */ - ::oAC:buildMainMenu() - - /* Initialize ChangeLog Manager */ - ::oCL := IdeChangeLog():new():create( Self ) - - /* Initialize Doc Writer Manager */ - ::oDW := IdeDocWriter():new():create( Self ) - - /* Once create Find/Replace dialog */ - ::oFR := IdeFindReplace():new():create( Self ) - ::oFF := IdeFindInFiles():new():create( Self ) - - /* Sources Manager */ - ::oSM := IdeSourcesManager():new():create( Self ) - - /* Edits Manager */ - ::oEM := IdeEditsManager():new():create( Self ) - - /* Harbour Help Object */ - ::oHL := ideHarbourHelp():new():create( Self ) - - /* Load Environments */ - ::oEV := IdeEnvironments():new():create( Self ) - - /* Home Implementation */ - ::oHM := IdeHome():new():create( Self ) - - /* Browser Manager */ - ::oBM := HbpDBU():new() - ::oBM:qtObject := ::oParts:oStackDbu - ::oBM:create( ::oDlg, , {0,0}, {640,400}, , .T. ) - - /* Reports Manager */ - ::oRM := HbpReports():new() - ::oRM:qtObject := ::oParts:oStackReports - ::oRM:create( ::oDlg, , {0,0}, {640,400}, , .T. ) - - /* Code Formatter Manager */ - ::oFmt := IdeFormat():new():create( Self ) - - /* Console Editor */ - ::oCUI := IdeConsole():new():create( Self ) - - ::oDlg:show() /* Shifted here - it gives the effect that time opening HbIDE is much less */ - qSplash:raise() - - /* Fill various elements of the IDE */ - ::oPM:populate() - ::oSM:loadSources() - - ::updateTitleBar() - /* Set some last settings */ - ::oPM:setCurrentProject( ::cWrkProject, .f. ) - - /* Again to be displayed in Statusbar */ - ::setCodec( ::cWrkCodec ) - ::oDK:setStatusText( SB_PNL_THEME, ::cWrkTheme ) - - /* Display cWrkEnvironment in StatusBar */ - ::oDK:dispEnvironment( ::cWrkEnvironment ) - - #if 0 /* for screen capture */ - n := seconds() - DO WHILE .t. - IF seconds() > n + 10 - EXIT - ENDIF - QApplication():processEvents() - ENDDO - #endif - - IF empty( ::cWrkFolderLast ) - ::cWrkFolderLast := hb_dirBase() + "projects" + hb_ps() - ENDIF - - /* Request Main Window to Appear on the Screen */ - ::oHM:refresh() - - ::oDK:animateComponents( val( ::oINI:cIdeAnimated ) ) - - // ::oSetup:setSystemStyle( ::oINI:cIdeTheme ) /* This causes 2.5 seconds delay */ - - ::oDK:setViewInitials() - - /* Refresh Stylesheet for all components at once */ - ::oDK:animateComponents( ::nAnimantionMode ) - - /* Restore Settings - just before making application visible */ - hbide_restSettings( Self ) - IF ! ::oINI:lShowHideDocks - ::oINI:lShowHideDocks := .t. - ::oINI:showHideDocks() - ENDIF - - ::oDockB2:hide() /* This widget never contains anything so must be forced to hide */ - - IF ::nRunMode == HBIDE_RUN_MODE_PRG - ::oDockPT:hide() - ::oDockED:hide() - ::oAC:qTBarDocks:hide() - ::oMainToolbar:hide() - ::oDK:setView( "Main" ) - ELSEIF ::nRunMode == HBIDE_RUN_MODE_HBP - ::oDockED:hide() - ::oDK:setView( "Main" ) - ELSE - ::oDK:setView( "Main" ) - ::oDK:setView( cView ) - ENDIF - - IF ! empty( ::aDbfOnCmdLine ) /* Will take priority and allot more width to browser than editor : logical */ - ::oBM:open( ::aDbfOnCmdLine ) - ::oParts:setStack( IDE_PART_DBU ) - ENDIF - - ::qTabWidget:setCurrentIndex( -1 ) - ::qTabWidget:setCurrentIndex( 0 ) - ::qTabWidget:setCurrentIndex( ::qTabWidget:count() - 1 ) - ::qTabWidget:setCurrentIndex( val( ::oINI:cRecentTabIndex ) ) - - ::showApplicationCursor() - qSplash:close() - qSplash := NIL - qPixMap := NIL - - /* Load tags last tagged projects */ - ::oFN:loadTags( ::oINI:aTaggedProjects ) - - /* Run Auto Scripts */ - hbide_execAutoScripts() - - /* Initialize plugins */ - hbide_loadPlugins( Self, "1.0" ) - - /* Fill auto completion lists - it must be the last action and be present here always */ - ::oEM:updateCompleter() - ::oAC:qSelToolbar:hide() - - DO WHILE .t. - nEvent := AppEvent( @mp1, @mp2, @oXbp ) - - IF nEvent == xbeP_Quit - ::lQuitting := .t. - ::oINI:save() - EXIT - ENDIF - - IF nEvent == xbeP_Close .AND. oXbp == ::oDlg - IF hbide_setClose() - ::lQuitting := .t. - ::oINI:save() - ::oSM:closeAllSources( .f. /* can not cancel */ ) - EXIT - ENDIF - - ELSEIF nEvent == xbeP_Keyboard - DO CASE - - CASE mp1 == xbeK_INS - IF !empty( ::qCurEdit ) - ::qCurEdit:setOverwriteMode( !::qCurEdit:overwriteMode() ) - ::oCurEditor:dispEditInfo( ::qCurEdit ) - ENDIF - - ENDCASE - ENDIF - - oXbp:handleEvent( nEvent, mp1, mp2 ) - ENDDO - - hbide_setExitCuiEd( .t. ) - - DbCloseAll() - ::cProjIni := NIL - hbide_setIde( NIL ) - hbide_destroyPlugins() - - RETURN self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:parseParams() - LOCAL s, cExt - LOCAL aIni := {} - - FOR EACH s IN ::aParams - s := alltrim( s ) - - DO CASE - CASE left( s, 1 ) == "-" - // Switches, futuristic - OTHERWISE - hb_fNameSplit( s, , , @cExt ) - cExt := lower( cExt ) - DO CASE - CASE cExt == ".ini" - aadd( aIni, s ) - CASE cExt == ".dbf" - aadd( ::aDbfOnCmdLine, s ) - CASE cExt == ".hbp" - aadd( ::aHbpOnCmdLine, s ) - CASE cExt $ ".prg.cpp" - aadd( ::aSrcOnCmdLine, s ) - CASE hbide_isValidText( s ) - aadd( ::aSrcOnCmdLine, s ) - ENDCASE - ENDCASE - NEXT - - IF !empty( aIni ) /* Discard aHbp */ - ::cProjIni := aIni[ 1 ] - ::nRunMode := HBIDE_RUN_MODE_INI - ELSEIF !empty( ::aHbpOnCmdLine ) - ::cProjIni := "" - ::nRunMode := HBIDE_RUN_MODE_HBP - ELSEIF !empty( ::aSrcOnCmdLine ) - ::cProjIni := "" - ::nRunMode := HBIDE_RUN_MODE_PRG - ELSEIF !empty( ::aDbfOnCmdLine ) - ::cProjIni := "" - ::nRunMode := HBIDE_RUN_MODE_PRG /* Because then bare-bone HbIDE will be presented like sources */ - ELSE - ::cProjIni := "" - ::nRunMode := HBIDE_RUN_MODE_INI - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:showApplicationCursor( nCursor ) - - LOCAL qCrs - - IF empty( nCursor ) - QApplication():restoreOverrideCursor() - ELSE - qCrs := QCursor( nCursor ) - QApplication():setOverrideCursor( qCrs ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:execAction( cKey ) - - SWITCH cKey - CASE "Hide" - ::oINI:showHideDocks() - EXIT - CASE "ToggleStatusBar" - IF ::lStatusBarVisible - ::oSBar:oWidget:hide() - ELSE - ::oSBar:oWidget:show() - ENDIF - ::lStatusBarVisible := ! ::lStatusBarVisible - ::qStatusBarAction:setChecked( ::lStatusBarVisible ) - EXIT - - CASE "ChangeLog" - ::oCL:show() - EXIT - - CASE "Tools" - ::oTM:show() - EXIT - CASE "Environments" - ::oEV:fetchNew() - EXIT - CASE "Exit" - ::lQuitting := .t. - hbide_setClose( .T. ) - PostAppEvent( xbeP_Close, NIL, NIL, ::oDlg ) - EXIT - CASE "Home" - //::oDK:setView( "Stats" ) - ::oHM:show() - RETURN Self - CASE "Animate" - ::oDK:animateComponents() - EXIT - CASE "Setup" - ::oSetup:show() - EXIT - CASE "Shortcuts" - ::oSC:show() - EXIT - CASE "NewProject" - CASE "LoadProject" - CASE "LaunchProject" - CASE "RunAsScript" - CASE "BuildSource" - CASE "Build" - CASE "BuildLaunch" - CASE "Rebuild" - CASE "RebuildLaunch" - CASE "Compile" - CASE "CompilePPO" - CASE "Properties" - CASE "SelectProject" - CASE "CloseProject" - ::execProjectAction( cKey ) - EXIT - CASE "New" - CASE "Open" - CASE "Save" - CASE "SaveAs" - CASE "SaveAll" - CASE "SaveExit" - CASE "Revert" - CASE "Close" - CASE "CloseAll" - CASE "CloseOther" - ::execSourceAction( cKey ) - EXIT - CASE "Print" - CASE "Undo" - CASE "Redo" - CASE "Cut" - CASE "Copy" - CASE "Paste" - CASE "SelectAll" - CASE "SelectionMode" - CASE "DuplicateLine" - CASE "DeleteLine" - CASE "MoveLineUp" - CASE "MoveLineDown" - CASE "BlockComment" - CASE "StreamComment" - CASE "BlockIndentR" - CASE "BlockIndentL" - CASE "BlockSgl2Dbl" - CASE "BlockDbl2Sgl" - CASE "switchReadOnly" - CASE "Find" - CASE "FindEx" - CASE "SetMark" - CASE "GotoMark" - CASE "Goto" - CASE "ToUpper" - CASE "ToLower" - CASE "Invert" - CASE "MatchPairs" - CASE "Tools" - CASE "InsertSeparator" - CASE "InsertDateTime" - CASE "InsertRandomName" - CASE "InsertExternalFile" - CASE "ZoomIn" - CASE "ZoomOut" - CASE "UpperCaseKeywords" - CASE "FormatBraces" - CASE "RemoveTabs" - CASE "Spaces2Tabs" - CASE "RemoveTrailingSpaces" - ::execEditorAction( cKey ) - EXIT - CASE "ToggleProjectTree" - CASE "ToggleBuildInfo" - CASE "ToggleFuncList" - //::execWindowsAction( cKey ) - EXIT - CASE "Help" - ::oHelpDock:show() - EXIT - CASE "EDITOR" - ::oParts:setStack( IDE_PART_EDITOR ) - EXIT - CASE "DBU" - ::oParts:setStack( IDE_PART_DBU ) - EXIT - CASE "REPORTS" - ::oParts:setStack( IDE_PART_REPORTSDESIGNER ) - EXIT - ENDSWITCH - - ::manageFocusInEditor() - - RETURN nil - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:execEditorAction( cKey ) - - SWITCH cKey - CASE "Print" - ::oEM:printPreview() - EXIT - CASE "Undo" - ::oEM:undo() - EXIT - CASE "Redo" - ::oEM:redo() - EXIT - CASE "Cut" - ::oEM:cut() - EXIT - CASE "Copy" - ::oEM:copy() - EXIT - CASE "Paste" - ::oEM:paste() - EXIT - CASE "SelectAll" - ::oEM:selectAll() - EXIT - CASE "SelectionMode" - ::oEM:toggleSelectionMode() - EXIT - CASE "DuplicateLine" - ::oEM:duplicateLine() - EXIT - CASE "MoveLineUp" - ::oEM:moveLine( -1 ) - EXIT - CASE "MoveLineDown" - ::oEM:moveLine( 1 ) - EXIT - CASE "DeleteLine" - ::oEM:deleteLine() - EXIT - CASE "BlockComment" - ::oEM:blockComment() - EXIT - CASE "StreamComment" - ::oEM:streamComment() - EXIT - CASE "BlockIndentR" - ::oEM:indent( 1 ) - EXIT - CASE "BlockIndentL" - ::oEM:indent( -1 ) - EXIT - CASE "BlockSgl2Dbl" - ::oEM:convertDQuotes() - EXIT - CASE "BlockDbl2Sgl" - ::oEM:convertQuotes() - EXIT - CASE "switchReadOnly" - ::oEM:switchToReadOnly() - EXIT - CASE "Find" - ::oEM:find() - EXIT - CASE "FindEx" - IF !Empty( ::qCurEdit ) - ::oSearchReplace:beginFind() - ENDIF - EXIT - CASE "SetMark" - ::oEM:setMark() - EXIT - CASE "GotoMark" - ::oEM:gotoMark() - EXIT - CASE "Goto" - ::oEM:goTo() - EXIT - CASE "ToUpper" - ::oEM:convertSelection( cKey ) - EXIT - CASE "ToLower" - ::oEM:convertSelection( cKey ) - EXIT - CASE "Invert" - ::oEM:convertSelection( cKey ) - EXIT - CASE "MatchPairs" - EXIT - CASE "Tools" - ::oTM:show() - EXIT - CASE "InsertSeparator" - ::oEM:insertSeparator() - EXIT - CASE "InsertDateTime" - ::oEM:insertText( cKey ) - EXIT - CASE "InsertRandomName" - ::oEM:insertText( cKey ) - EXIT - CASE "InsertExternalFile" - ::oEM:insertText( cKey ) - EXIT - CASE "ZoomIn" - ::oEM:zoom( +1 ) - EXIT - CASE "ZoomOut" - ::oEM:zoom( -1 ) - EXIT - CASE "UpperCaseKeywords" - ::oEM:upperCaseKeywords() - EXIT - CASE "FormatBraces" - ::oEM:formatBraces() - EXIT - CASE "RemoveTabs" - ::oEM:removeTabs() - EXIT - CASE "Spaces2Tabs" - ::oEM:spaces2tabs() - EXIT - CASE "RemoveTrailingSpaces" - ::oEM:removeTrailingSpaces() - EXIT - ENDSWITCH - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:execSourceAction( cKey ) - SWITCH cKey - CASE "New" - ::oSM:editSource( '' ) - EXIT - CASE "Open" - ::oSM:openSource() - EXIT - CASE "Save" - ::oSM:saveSource( ::oEM:getTabCurrent(), .f., .f. ) - EXIT - CASE "SaveAs" - ::oSM:saveSource( ::oEM:getTabCurrent(), .t., .t. ) - EXIT - CASE "SaveAll" - ::oSM:saveAllSources() - EXIT - CASE "SaveExit" - ::oSM:saveAndExit() - EXIT - CASE "Revert" - ::oSM:RevertSource() - EXIT - CASE "Close" - ::oSM:closeSource() - EXIT - CASE "CloseAll" - ::oSM:closeAllSources() - EXIT - CASE "CloseOther" - ::oSM:closeAllOthers() - EXIT - ENDSWITCH - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:execProjectAction( cKey ) - SWITCH cKey - CASE "NewProject" - ::oPM:loadProperties( , .t., .t., .t. ) - EXIT - CASE "LoadProject" - ::oPM:loadProperties( , .f., .f., .t. ) - EXIT - CASE "LaunchProject" - ::oPM:launchProject() - EXIT - CASE "RunAsScript" - ::oPM:runAsScript( .t. ) - EXIT - CASE "BuildSource" - ::oPM:buildSource( .t. ) - EXIT - CASE "Build" - ::oPM:buildProject( '', .F., .F. ) - EXIT - CASE "BuildLaunch" - ::oPM:buildProject( '', .T., .F. ) - EXIT - CASE "Rebuild" - ::oPM:buildProject( '', .F., .T. ) - EXIT - CASE "RebuildLaunch" - ::oPM:buildProject( '', .T., .T. ) - EXIT - CASE "Compile" - ::oPM:buildSource( .f. ) - EXIT - CASE "CompilePPO" - ::oPM:buildProject( '', .F., .F., .T., .T. ) - EXIT - CASE "Properties" - ::oPM:getProperties() - EXIT - CASE "SelectProject" - ::oPM:selectCurrentProject() - EXIT - CASE "CloseProject" - ::oPM:closeProject() - EXIT - ENDSWITCH - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:setPosAndSizeByIniEx( qWidget, cParams ) - LOCAL aRect - - IF !empty( cParams ) - aRect := hb_atokens( cParams, "," ) - aeval( aRect, {|e,i| aRect[ i ] := val( e ) } ) - - qWidget:move( aRect[ 1 ], aRect[ 2 ] ) - qWidget:resize( aRect[ 3 ], aRect[ 4 ] ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:setPosByIniEx( qWidget, cParams ) - LOCAL aRect - - IF !empty( cParams ) - aRect := hb_atokens( cParams, "," ) - aeval( aRect, {|e,i| aRect[ i ] := val( e ) } ) - - qWidget:move( aRect[ 1 ], aRect[ 2 ] ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:manageFocusInEditor() - LOCAL qEdit - - IF !empty( qEdit := ::oEM:getEditCurrent() ) - qEdit:setFocus( 0 ) - ENDIF - - RETURN self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:removeProjectTree( aPrj ) - LOCAL oProject, nIndex, oParent, oP, n - - oProject := IdeProject():new( Self, aPrj ) - IF empty( oProject:title ) - RETURN Self - ENDIF - nIndex := aScan( ::aProjData, {|e_| e_[ TRE_TYPE ] == "Project Name" .AND. e_[ TRE_ORIGINAL ] == oProject:title } ) - IF nIndex > 0 - oParent := ::aProjData[ nIndex, TRE_OITEM ] - DO WHILE .t. - n := ascan( ::aProjData, {|e_| e_[ TRE_OPARENT ] == oParent } ) - IF n == 0 - EXIT - ENDIF - oParent:delItem( ::aProjData[ n, TRE_OITEM ] ) - hb_adel( ::aProjData, n, .t. ) - ENDDO - ENDIF - - oP := oParent - - SWITCH oProject:type - CASE "Executable" - oParent := ::aProjData[ 1, 1 ] - EXIT - CASE "Lib" - oParent := ::aProjData[ 2, 1 ] - EXIT - CASE "Dll" - oParent := ::aProjData[ 3, 1 ] - EXIT - ENDSWITCH - - nIndex := aScan( ::aProjData, {|e_| e_[ TRE_OITEM ] == oP } ) - oParent:delItem( oP ) - hb_adel( ::aProjData, nIndex, .t. ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:updateProjectTree( aPrj ) - LOCAL oProject, n, oSource, oItem, nProjExists, oP, oParent, a_:={}, b_ - - oProject := IdeProject():new( Self, aPrj ) - - IF empty( oProject:title ) - RETURN Self - ENDIF - - SWITCH oProject:type - CASE "Executable" - oParent := ::aProjData[ 1, 1 ] - EXIT - CASE "Lib" - oParent := ::aProjData[ 2, 1 ] - EXIT - CASE "Dll" - oParent := ::aProjData[ 3, 1 ] - EXIT - ENDSWITCH - - nProjExists := aScan( ::aProjData, {|e_| e_[ TRE_TYPE ] == "Project Name" .AND. e_[ TRE_ORIGINAL ] == oProject:title } ) - - IF nProjExists > 0 - nProjExists := aScan( oParent:aChilds, {|o| o:caption == oProject:title } ) - IF nProjExists > 0 - oP := oParent:aChilds[ nProjExists ] - ELSE - RETURN Self /* Some Error - It must never happen */ - ENDIF - /* Delete Existing Nodes */ - DO WHILE .t. - IF ( n := ascan( ::aProjData, {|e_| e_[ TRE_OPARENT ] == oP } ) ) == 0 - EXIT - ENDIF - oP:delItem( ::aProjData[ n, TRE_OITEM ] ) - hb_adel( ::aProjData, n, .t. ) - ENDDO - ENDIF - IF empty( oP ) - oParent:expand( .t. ) - oP := oParent:addItem( oProject:title ) - oP:tooltipText := hbide_pathNormalized( ::oPM:getProjectFileNameFromTitle( oProject:title ) ) - aadd( ::aProjData, { oP, "Project Name", oParent, oProject:title, aPrj, oProject } ) - ENDIF - FOR EACH oSource IN oProject:hSources - aadd( a_, { oSource:ext, oSource:file, oSource } ) - NEXT - IF !empty( a_ ) - asort( a_, , , {|e_,f_| lower( e_[ 1 ] + e_[ 2 ] ) < lower( f_[ 1 ] + f_[ 2 ] ) } ) - ENDIF - FOR EACH b_ IN a_ - oSource := b_[ 3 ] - oItem := oP:addItem( oSource:file + oSource:ext ) - oItem:tooltipText := oSource:original - oItem:oWidget:setIcon( 0, QIcon( hbide_image( hbide_imageForFileType( oSource:ext ) ) ) ) - aadd( ::aProjData, { oItem, "Source File", oP, oSource:original, oProject:title } ) - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:manageItemSelected( oXbpTreeItem ) - LOCAL n, cHbp, cSource, cExt - - IF oXbpTreeItem == ::oProjRoot - n := -1 - ELSEIF oXbpTreeItem == ::oOpenedSources - n := -2 - ELSE - n := ascan( ::aProjData, {|e_| e_[ 1 ] == oXbpTreeItem } ) - ENDIF - - DO CASE - CASE n == 0 // Source File - nothing to do - CASE n == -2 // "Files" - CASE n == -1 - CASE ::aProjData[ n, TRE_TYPE ] == "Project Name" - cHbp := ::oPM:getProjectFileNameFromTitle( ::aProjData[ n, TRE_ORIGINAL ] ) - ::oPM:loadProperties( cHbp, .f., .t., .f. ) - - CASE ::aProjData[ n, TRE_TYPE ] == "Source File" - cSource := hbide_stripFilter( ::aProjData[ n, TRE_ORIGINAL ] ) - hb_fNameSplit( cSource, , , @cExt ) - IF lower( cExt ) == ".ui" - ::oUiS:openUi( cSource ) - ELSE - ::oSM:editSource( cSource ) - ENDIF - - CASE ::aProjData[ n, TRE_TYPE ] == "Opened Source" - ::oEM:setSourceVisible( ::aProjData[ n, TRE_DATA ] ) - - CASE ::aProjData[ n, TRE_TYPE ] == "Path" - - ENDCASE - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:manageProjectContext( mp1, mp2, oXbpTreeItem ) - LOCAL n, cHbp, s - LOCAL aPops := {}, aSub :={} - - HB_SYMBOL_UNUSED( mp2 ) - - IF oXbpTreeItem == ::oProjRoot - n := -1 - ELSEIF oXbpTreeItem == ::oOpenedSources - n := -2 - ELSE - n := ascan( ::aProjData, {|e_| e_[ 1 ] == oXbpTreeItem } ) - ENDIF - - DO CASE - CASE n == 0 // Source File - nothing to do - CASE n == -2 // "Files" - CASE n == -1 // Project Root - aadd( aPops, { "New Project" , {|| ::oPM:loadProperties( NIL, .t., .t., .t. ) } } ) - aadd( aPops, { "" } ) - aadd( aPops, { "Open Project..." , {|| ::oPM:loadProperties( NIL, .f., .f., .t. ) } } ) - aadd( aPops, { "" } ) - // - IF !empty( ::oEV:getNames() ) - aadd( aPops, { "" } ) - FOR EACH s IN ::oEV:getNames() - aadd( aSub, { s , {|x| ::cWrkEnvironment := x, ::oDK:dispEnvironment( x ) } } ) - NEXT - aadd( aPops, { aSub, "Environment..." } ) - ENDIF - // - hbide_ExecPopup( aPops, mp1, ::oProjTree:oWidget ) - - CASE ::aProjData[ n, TRE_TYPE ] == "Project Name" - cHbp := hbide_pathToOSPath( ::oPM:getProjectFileNameFromTitle( ::aProjData[ n, TRE_ORIGINAL ] ) ) - // - IF !( Alltrim( Upper( ::cWrkProject ) ) == Alltrim( Upper( oXbpTreeItem:caption ) ) ) - aadd( aPops, { "Set as Current" , {|| ::oPM:setCurrentProject( oXbpTreeItem:caption ) } } ) - End - aadd( aPops, { ::oAC:getAction( "Properties" ), {|| ::oPM:loadProperties( cHbp, .f., .t., .t. ) } } ) - aadd( aPops, { "" } ) - aadd( aPops, { ::oAC:getAction( "BuildQt" ), {|| ::oPM:buildProject( oXbpTreeItem:caption, .F., , , .T. ) } } ) - aadd( aPops, { ::oAC:getAction( "BuildLaunchQt" ), {|| ::oPM:buildProject( oXbpTreeItem:caption, .T., , , .T. ) } } ) - aadd( aPops, { ::oAC:getAction( "ReBuildQt" ), {|| ::oPM:buildProject( oXbpTreeItem:caption, .F., .T., , .T. ) } } ) - aadd( aPops, { ::oAC:getAction( "ReBuildLaunchQt" ), {|| ::oPM:buildProject( oXbpTreeItem:caption, .T., .T., , .T. ) } } ) - aadd( aPops, { "" } ) - aadd( aPops, { ::oAC:getAction( "LaunchProject" ), {|| ::oPM:launchProject( oXbpTreeItem:caption ) } } ) - aadd( aPops, { "" } ) - aadd( aPops, { "Remove Project" , {|| ::oPM:removeProject( oXbpTreeItem:caption ) } } ) - IF !empty( ::oEV:getNames() ) - aadd( aPops, { "" } ) - FOR EACH s IN ::oEV:getNames() - aadd( aSub, { s , {|x| ::cWrkEnvironment := x, ::oDK:dispEnvironment( x ) } } ) - NEXT - aadd( aPops, { aSub, "Select an environment" } ) - ENDIF - aadd( aPops, { "" } ) - aadd( aPops, { ::oAC:getAction( "Dictionary" ), {|v| v := ::oFN:tagProject( ::aProjData[ n, TRE_ORIGINAL ], .F. ), ; - MsgBox( iif( Empty( v ), "Not Succeeded", v ), "Dictionary Creation" ) } } ) - - hbide_ExecPopup( aPops, mp1, ::oProjTree:oWidget ) - - CASE ::aProjData[ n, TRE_TYPE ] == "Source File" - // - - CASE ::aProjData[ n, TRE_TYPE ] == "Opened Source" - n := ::oEM:getTabBySource( ::aProjData[ n, 5 ] ) - // - aadd( aPops, { "Save" , {|| ::oSM:saveSource( n ) } } ) - aadd( aPops, { "Save As" , {|| ::oSM:saveSource( n, , .t. ) } } ) - aadd( aPops, { "" } ) - aadd( aPops, { "Close" , {|| ::oSM:closeSource( n ) } } ) - aadd( aPops, { "Close Others" , {|| ::oSM:closeAllOthers( n ) } } ) - aadd( aPops, { "" } ) - aadd( aPops, { "Apply Theme" , {|| ::oEM:getEditorCurrent():applyTheme() } } ) - // - hbide_ExecPopup( aPops, mp1, ::oProjTree:oWidget ) - - CASE ::aProjData[ n, 2 ] == "Path" - - ENDCASE - - ::manageFocusInEditor() - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:updateFuncList( lSorted ) - LOCAL aFunc :={}, a_, nIndex - - DEFAULT lSorted TO ::lSortedFuncList - - ::lSortedFuncList := lSorted - - ::oFuncList:clear() - IF !empty( ::aTags ) - IF lSorted - aeval( ::aTags, {|e_| aadd( aFunc, { e_[ 6 ], e_[ 7 ] } ) } ) - asort( aFunc, , , {|e,f| lower( e[ 2 ] ) < lower( f[ 2 ] ) } ) - FOR EACH a_ IN aFunc - nIndex := ::oFuncList:addItem( a_[ 2 ] ) - ::oFuncList:setIcon( nIndex, QIcon( hbide_identifierImage( a_[ 1 ] ) ) ) - NEXT - ELSE - FOR EACH a_ IN ::aTags - nIndex := ::oFuncList:addItem( a_[ 7 ] ) - ::oFuncList:setIcon( nIndex, QIcon( hbide_identifierImage( a_[ 6 ] ) ) ) - NEXT - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:showCodeFregment( oXbp ) - LOCAL xTmp2, n, i, cAnchor, oEdit, lFound, qCursor, nLine, cCode, qWidget, nVPos, qH - - xTmp2 := oXbp:text() - - IF ( n := ascan( ::aTags, {|e_| xTmp2 == e_[ 7 ] } ) ) > 0 - nLine := ::aTags[ n,3 ] - cAnchor := trim( ::aText[ nLine ] ) - IF !empty( oEdit := ::oEM:getEditCurrent() ) - qCursor := oEdit:textCursor() - nVPos := oEdit:verticalScrollBar():value() - - IF ! ( lFound := oEdit:find( cAnchor, QTextDocument_FindCaseSensitively ) ) - lFound := oEdit:find( cAnchor, QTextDocument_FindBackward + QTextDocument_FindCaseSensitively ) - ENDIF - IF lFound - oEdit:setTextCursor( QCursor ) - oEdit:verticalScrollBar():setValue( nVPos ) - - cCode := "" - qCursor:movePosition( QTextCursor_Start ) - IF Len( ::aTags ) == n - IF qCursor:movePosition( QTextCursor_Down, QTextCursor_MoveAnchor, nLine - 1 ) - cCode += qCursor:block():text() + hb_eol() - DO WHILE qCursor:movePosition( QTextCursor_Down ) - cCode += qCursor:block():text() + hb_eol() - ENDDO - ENDIF - ELSE - IF qCursor:movePosition( QTextCursor_Down, QTextCursor_MoveAnchor, nLine - 1 ) - cCode += qCursor:block():text() + hb_eol() - FOR i := ::aTags[ n, 3 ] TO ::aTags[ n+1, 3 ] - 2 - IF qCursor:movePosition( QTextCursor_Down ) - cCode += qCursor:block():text() + hb_eol() - ENDIF - NEXT - ENDIF - ENDIF - ENDIF - IF ! Empty( cCode ) - qWidget := QPlainTextEdit( ::oDlg:oWidget ) - qWidget:setWindowFlags( hb_bitOr( Qt_Sheet, Qt_CustomizeWindowHint, Qt_WindowTitleHint, Qt_WindowCloseButtonHint ) ) - qWidget:setWindowTitle( oEdit:document():metaInformation( QTextDocument_DocumentTitle ) + " : " + cAnchor ) - qWidget:setWindowIcon( QIcon( hbide_identifierImage( ::aTags[ n, 6 ] ) ) ) - qWidget:setWordWrapMode( QTextOption_NoWrap ) - qWidget:setFont( QFont( "Courier New", 8 ) ) - qH := ::oTH:setSyntaxHilighting( qWidget, "Pritpal's Favourite", , .F. ) - qH:hbSetInitialized( .T. ) - qWidget:setPlainText( cCode ) - qWidget:setGeometry( iif( Empty( ::qFuncFragmentWindowGeometry ), QRect( 500, 200, 300, 300 ), ::qFuncFragmentWindowGeometry:translated( 10,20 ) ) ) - qWidget:connect( QEvent_Close , {|| ::qFuncFragmentWindowGeometry := qWidget:geometry(), qWidget:setParent( QWidget() ) } ) - qWidget:connect( QEvent_Move , {|| ::qFuncFragmentWindowGeometry := qWidget:geometry() } ) - qWidget:connect( QEvent_Resize, {|| ::qFuncFragmentWindowGeometry := qWidget:geometry() } ) - - qWidget:show() - ENDIF - ENDIF - ENDIF - ::manageFocusInEditor() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:gotoFunction( mp1, mp2, oListBox ) - LOCAL n, cAnchor, oEdit, lFound - - mp1 := oListBox:getData() - mp2 := oListBox:getItem( mp1 ) - - IF ( n := ascan( ::aTags, {|e_| mp2 == e_[ 7 ] } ) ) > 0 - cAnchor := trim( ::aText[ ::aTags[ n,3 ] ] ) - IF !empty( oEdit := ::oEM:getEditCurrent() ) - IF !( lFound := oEdit:find( cAnchor, QTextDocument_FindCaseSensitively ) ) - lFound := oEdit:find( cAnchor, QTextDocument_FindBackward + QTextDocument_FindCaseSensitively ) - ENDIF - IF lFound - oEdit:centerCursor() - ENDIF - ENDIF - ENDIF - ::manageFocusInEditor() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:manageFuncContext( mp1, mp2, oXbp ) - LOCAL aPops := {} - - HB_SYMBOL_UNUSED( mp2 ) - - IF ::oFuncList:numItems() > 0 - aadd( aPops, { 'Show Sorted' , {|| ::updateFuncList( .t. ) } } ) - aadd( aPops, { 'Show in Natural Order' , {|| ::updateFuncList( .f. ) } } ) - aadd( aPops, { "" } ) - aadd( aPops, { "Show Code Fregment" , {|| ::showCodeFregment( oXbp ) } } ) - aadd( aPops, { "" } ) - aadd( aPops, { 'Comment out' , {|| NIL } } ) - aadd( aPops, { 'Reformat' , {|| NIL } } ) - aadd( aPops, { 'Print' , {|| NIL } } ) - aadd( aPops, { 'Delete' , {|| NIL } } ) - aadd( aPops, { 'Move to another source', {|| NIL } } ) - - hbide_ExecPopup( aPops, mp1, ::oFuncList:oWidget ) - - ::manageFocusInEditor() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:CreateTags() - LOCAL aSumData := "" - LOCAL cComments, aSummary, i, cPath, cSource, cExt - - ::aTags := {} - - FOR i := 1 TO Len( ::aSources ) - HB_FNameSplit( ::aSources[ i ], @cPath, @cSource, @cExt ) - - IF Upper( cExt ) $ ".PRG.CPP" - IF !empty( ::aText := hbide_readSource( ::aSources[ i ] ) ) - aSumData := {} - - cComments := CheckComments( ::aText ) - aSummary := Summarize( ::aText, cComments, @aSumData , iif( Upper( cExt ) == ".PRG", 9, 1 ) ) - ::aTags := UpdateTags( ::aSources[ i ], aSummary, aSumData, @::aFuncList, @::aLines, ::aText ) - - #if 0 - IF !empty( aTags ) - aeval( aTags, {|e_| aadd( ::aTags, e_ ) } ) - ::hData[ cSource+cExt ] := { a[ i ], aTags, aclone( ::aText ), cComments, ::aFuncList, ::aLines } - aadd( ::aSrcLines, ::aText ) - aadd( ::aComments, cComments ) - ENDIF - #endif - ENDIF - ENDIF - NEXT - - RETURN NIL - -//----------------------------------------------------------------------// -/* - * Update the project menu to show current info. - * 03/01/2010 - 12:48:18 - vailtom - */ -METHOD HbIde:updateProjectMenu() - LOCAL oItem := hbide_mnuFindItem( Self, 'Project' ) - - IF Empty( oItem ) - RETURN Self - ENDIF - - IF Empty( ::cWrkProject ) - oItem[ 2 ]:setDisabled( .T. ) - RETURN Self - ENDIF - - oItem[ 2 ]:setEnabled( .T. ) - RETURN Self - -/*----------------------------------------------------------------------*/ -/* - * Updates the title bar of the main window, indicating the project and the - * current filename. - * 02/01/2010 - 16:30:06 - vailtom - */ -METHOD HbIde:updateTitleBar() - LOCAL cTitle := "Harbour IDE (r" + hb_ntos( hb_version( HB_VERSION_REVISION ) ) + ")" - LOCAL oEdit - - IF Empty( ::oDlg ) - RETURN Self - ENDIF - - IF !Empty( ::cWrkProject ) - cTitle += " [" + ::cWrkProject + "] " - ENDIF - - IF !empty( oEdit := ::oEM:getEditorCurrent() ) - IF Empty( oEdit:sourceFile ) - cTitle += " [" + oEdit:oTab:caption + "]" - ELSE - cTitle += " [" + oEdit:sourceFile + "]" - ENDIF - ENDIF - - ::oDlg:Title := cTitle - ::oDlg:oWidget:setWindowTitle( ::oDlg:Title ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:setCodec( cCodec ) - - DEFAULT cCodec TO ::cWrkCodec - - ::cWrkCodec := hbide_getCDPforID( cCodec ) - - ::oDK:setStatusText( SB_PNL_CODEC, hb_cdpUniID( ::cWrkCodec ) ) - - hb_cdpSelect( ::cWrkCodec ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:testPainter( qPainter ) - - HB_TRACE( HB_TR_DEBUG, "qPainter:isActive()", qPainter:isActive() ) - - qPainter:setPen( Qt_red ) - qPainter:drawEllipse( 100,300,100,150 ) - qPainter:setFont( ::oFont:oWidget ) - qPainter:drawText( 100,300,"Harbour" ) - - //qPainter:fillRect( 100, 100, 500, 500, QColor( 175, 175, 255 ) ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -FUNCTION hb_gtsys() - REQUEST HB_GT_QTC - RETURN NIL - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/mainwindow.ui b/harbour/contrib/hbide/mainwindow.ui deleted file mode 100644 index f134a1866b..0000000000 --- a/harbour/contrib/hbide/mainwindow.ui +++ /dev/null @@ -1,43 +0,0 @@ - - - mainWindow - - - - 0 - 0 - 851 - 473 - - - - MainWindow - - - true - - - QTabWidget::Triangular - - - true - - - QMainWindow::AllowNestedDocks|QMainWindow::AllowTabbedDocks|QMainWindow::AnimatedDocks - - - - - - 0 - 0 - 851 - 19 - - - - - - - - diff --git a/harbour/contrib/hbide/misc.prg b/harbour/contrib/hbide/misc.prg deleted file mode 100644 index 456115513b..0000000000 --- a/harbour/contrib/hbide/misc.prg +++ /dev/null @@ -1,2052 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 23Nov2009 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "common.ch" -#include "fileio.ch" - -#include "xbp.ch" - -#include "hbide.ch" - -STATIC aRegList - -/*----------------------------------------------------------------------*/ - -PROCEDURE AppSys() - RETURN - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_setIde( oIde ) - LOCAL oldIde - STATIC ide - oldIde := ide - IF PCount() > 0 - ide := oIde - ENDIF - RETURN oldIde - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_setProjectOutputPath( cPath ) - LOCAL oldProjPath - - STATIC cProjPath := "" - - oldProjPath := cProjPath - - IF HB_ISSTRING( cPath ) - cProjPath := cPath - ENDIF - - RETURN oldProjPath - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_setProjectTitle( cTitle ) - LOCAL oldProjTitle - - STATIC cProjTitle - - IF empty( cProjTitle ) - cProjTitle := hbide_setIde():oPM:getCurrentProjectTitle() - ENDIF - oldProjTitle := cProjTitle - - IF HB_ISSTRING( cTitle ) - cProjTitle := cTitle - ENDIF - - RETURN oldProjTitle - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_execPopup( aPops, aqPos, qParent ) - LOCAL i, qPop, qPoint, qAct, cAct, xRet, a_, qSub, b_, qSub_:={}, qAct_:={} - - qPop := QMenu( iif( HB_ISOBJECT( qParent ), qParent, NIL ) ) - qPop:setStyleSheet( GetStyleSheet( "QMenuPop", hbide_setIde():nAnimantionMode ) ) - - FOR i := 1 TO Len( aPops ) - IF empty( aPops[ i,1 ] ) - aadd( qAct_, qPop:addSeparator() ) - ELSE - IF HB_ISOBJECT( aPops[ i, 1 ] ) - aadd( qAct_, qPop:addAction( aPops[ i, 1 ] ) ) - ELSEIF HB_ISARRAY( aPops[ i, 1 ] ) /* Sub-menu */ - qSub := QMenu( qPop ) - qSub:setStyleSheet( GetStyleSheet( "QMenuPop", hbide_setIde():nAnimantionMode ) ) - FOR EACH a_ IN aPops[ i, 1 ] - qSub:addAction( a_[ 1 ] ) - NEXT - qSub:setTitle( aPops[ i,2 ] ) - aadd( qAct_, qPop:addMenu( qSub ) ) - aadd( qSub_, qSub ) - ELSE - aadd( qAct_, qPop:addAction( aPops[ i, 1 ] ) ) - ENDIF - ENDIF - NEXT - - IF HB_ISARRAY( aqPos ) - qPoint := QPoint( aqPos[ 1 ], aqPos[ 2 ] ) - ELSEIF HB_ISOBJECT( aqPos ) - qPoint := aqPos - ENDIF - - cAct := "" - IF __objGetClsName( qAct := qPop:exec( qPoint ) ) == "QACTION" - IF valtype( cAct := qAct:text() ) == "C" - FOR EACH a_ IN aPops - IF HB_ISOBJECT( a_[ 1 ] ) - IF a_[ 1 ]:text() == cAct .AND. len( a_ ) >= 2 - xRet := eval( aPops[ a_:__enumIndex(), 2 ] ) - EXIT - ENDIF - ELSEIF HB_ISARRAY( a_[ 1 ] ) - FOR EACH b_ IN a_[ 1 ] - IF b_[ 1 ] == cAct - xRet := eval( b_[ 2 ], cAct ) - EXIT - ENDIF - NEXT - ELSE - IF a_[ 1 ] == cAct .AND. len( a_ ) >= 2 - xRet := eval( aPops[ a_:__enumIndex(), 2 ], cAct ) - EXIT - ENDIF - ENDIF - NEXT - ENDIF - ENDIF - qPop:setParent( QWidget() ) - HB_SYMBOL_UNUSED( xRet ) - RETURN cAct - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_menuAddSep( oMenu ) - - oMenu:addItem( { NIL, NIL, XBPMENUBAR_MIS_SEPARATOR, NIL } ) - - RETURN nil - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_createTarget( cFile, txt_ ) - LOCAL hHandle := fcreate( cFile ) - LOCAL cNewLine := hb_eol() - - IF hHandle != F_ERROR - aeval( txt_, {| e | fWrite( hHandle, e + cNewLine ) } ) - fClose( hHandle ) - ENDIF - - RETURN hb_FileExists( cFile ) - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_posAndSize( qWidget ) - - RETURN hb_ntos( qWidget:x() ) + "," + hb_ntos( qWidget:y() ) + "," + ; - hb_ntos( qWidget:width() ) + "," + hb_ntos( qWidget:height() ) + "," - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_showWarning( cMsg, cInfo, cTitle, qParent ) - LOCAL oMB, nRet - - DEFAULT cTitle TO "Information" - DEFAULT qParent TO SetAppWindow():oWidget - - oMB := QMessageBox( qParent ) - oMB:setText( cMsg ) - IF !empty( cInfo ) - oMB:setInformativeText( cInfo ) - ENDIF - oMB:setIcon( QMessageBox_Critical ) - oMB:setWindowFlags( Qt_Dialog ) - oMB:setWindowTitle( cTitle ) - - nRet := oMB:exec() - oMB:setParent( QWidget() ) - - RETURN nRet - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_getYesNo( cMsg, cInfo, cTitle, qParent ) - LOCAL oMB, nRet - - DEFAULT cTitle TO "Option Please!" - DEFAULT qParent TO hbide_setIde():oDlg:oWidget - - oMB := QMessageBox( qParent ) - oMB:setText( ""+ cMsg +"" ) - IF !empty( cInfo ) - oMB:setInformativeText( cInfo ) - ENDIF - oMB:setIcon( QMessageBox_Information ) - oMB:setWindowTitle( cTitle ) - oMB:setWindowFlags( Qt_Dialog ) - oMB:setStandardButtons( QMessageBox_Yes + QMessageBox_No ) - - nRet := oMB:exec() - - oMB:setParent( QWidget() ) - - RETURN nRet == QMessageBox_Yes - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_getYesNoCancel( cMsg, cInfo, cTitle ) - LOCAL oMB, nRet - - DEFAULT cTitle TO "Option Please!" - - oMB := QMessageBox( SetAppWindow():oWidget ) - oMB:setText( ""+ cMsg +"" ) - IF !empty( cInfo ) - oMB:setInformativeText( cInfo ) - ENDIF - oMB:setIcon( QMessageBox_Information ) - oMB:setWindowFlags( Qt_Dialog ) - oMB:setWindowTitle( cTitle ) - oMB:setStandardButtons( QMessageBox_Yes + QMessageBox_No + QMessageBox_Cancel ) - - nRet := oMB:exec() - oMB:setParent( QWidget() ) - - RETURN nRet - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_fetchAFile( oWnd, cTitle, aFlt, cDftDir, cDftSuffix, lAllowMulti ) - LOCAL oDlg - - DEFAULT cTitle TO "Please Select a File" - DEFAULT aFlt TO { { "All Files", "*" } } - DEFAULT cDftDir TO hb_dirBase() - DEFAULT lAllowMulti TO .f. - - oDlg := XbpFileDialog():new():create( oWnd, , { 10,10 } ) - - oDlg:title := cTitle - oDlg:center := .t. - oDlg:fileFilters := aFlt - IF HB_ISSTRING( cDftSuffix ) - oDlg:oWidget:setDefaultSuffix( cDftSuffix ) - ENDIF - - RETURN oDlg:open( cDftDir, , lAllowMulti ) - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_saveAFile( oWnd, cTitle, aFlt, cDftFile, cDftSuffix ) - LOCAL oDlg - - DEFAULT cTitle TO "Please Select a File" - - oDlg := XbpFileDialog():new():create( oWnd, , { 10,10 } ) - - oDlg:title := cTitle - oDlg:center := .t. - oDlg:fileFilters := aFlt - IF HB_ISSTRING( cDftSuffix ) - oDlg:oWidget:setDefaultSuffix( cDftSuffix ) - ENDIF - - RETURN oDlg:saveAs( cDftFile, .f., .t. ) - -/*----------------------------------------------------------------------*/ -/* Function to user select a existing folder - * 25/12/2009 - 19:10:41 - vailtom - */ -FUNCTION hbide_fetchADir( oWnd, cTitle, cDftDir ) - LOCAL oDlg, cFile - - DEFAULT cTitle TO "Please Select a Folder" - DEFAULT cDftDir TO hb_dirBase() - - oDlg := XbpFileDialog():new():create( oWnd, , { 10,10 } ) - - oDlg:title := cTitle - oDlg:center := .t. - oDlg:oWidget:setFileMode( 4 ) - - cFile := oDlg:open( cDftDir, , .f. ) - oDlg:destroy() - IF HB_ISSTRING( cFile ) - //cFile := strtran( cFile, "/", hb_ps() ) - RETURN cFile - ENDIF - - RETURN "" - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_getEol( cBuffer ) - LOCAL cStyle - - IF chr( 13 ) + chr( 10 ) $ cBuffer - cStyle := chr( 13 ) + chr( 10 ) - ELSEIF chr( 13 ) $ cBuffer - cStyle := chr( 13 ) - ELSEIF chr( 10 ) $ cBuffer - cStyle := chr( 10 ) - ELSE - cStyle := "" - ENDIF - - RETURN cStyle - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_readSource( cTxtFile ) - LOCAL cFileBody := hb_MemoRead( cTxtFile ) - - HB_TRACE( HB_TR_DEBUG, cFileBody ) - - cFileBody := StrTran( cFileBody, Chr( 13 ) ) - - RETURN hb_ATokens( cFileBody, Chr( 10 ) ) - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_evalAsString( cExp ) - LOCAL cValue - - BEGIN SEQUENCE WITH {|| break() } - cValue := Eval( hb_macroBlock( cExp ) ) - RECOVER - cValue := cExp - END SEQUENCE - - IF !HB_ISSTRING( cValue ) - cValue := "" - ENDIF - - RETURN cValue - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_evalAsIs( cExp ) - LOCAL xValue - - BEGIN SEQUENCE WITH {|| break() } - xValue := Eval( hb_macroBlock( cExp ) ) - RECOVER - xValue := cExp - END SEQUENCE - - RETURN xValue - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_setupMetaKeys( a_ ) - LOCAL s, n, cKey, cVal - LOCAL a4_1 := {} - - FOR EACH s IN a_ - IF !( "#" == left( s,1 ) ) - IF ( n := at( "=", s ) ) > 0 - cKey := alltrim( substr( s, 1, n-1 ) ) - cVal := hbide_evalAsString( alltrim( substr( s, n+1 ) ) ) - aadd( a4_1, { "<"+ cKey +">", cVal } ) - ENDIF - ENDIF - NEXT - - RETURN a4_1 - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_applyMetaData( s, a_ ) - LOCAL k - - IF ! Empty( a_ ) - FOR EACH k IN a_ - s := StrTran( s, hbide_pathNormalized( k[ 2 ], .f. ), k[ 1 ] ) - NEXT - ENDIF - - RETURN s - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_parseWithMetaData( s, a_ ) - LOCAL k - - IF ! Empty( a_ ) - FOR EACH k IN a_ DESCEND - s := StrTran( s, k[ 1 ], k[ 2 ] ) - NEXT - ENDIF - - RETURN s - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_ar2delString( a_, cDlm ) - LOCAL s := "" - - aeval( a_, {|e| s += e + cDlm } ) - - RETURN substr( s, 1, Len( s ) - len( cDlm ) ) - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_arrayToMemo( a_ ) - LOCAL s := "" - - aeval( a_, {|e| s += e + hb_eol() } ) - - s += hb_eol() - - RETURN s - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_arrayToMemoEx( a_ ) - LOCAL s := "" - - aeval( a_, {|e| s += e + hb_eol() } ) - - s := substr( s, 1, Len( s ) - 2 ) - - RETURN s - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_arrayToMemoEx2( a_ ) - RETURN hbide_arrayToMemoEx( a_ ) - - #if 0 - LOCAL s := "", k - LOCAL lNewPara := .t. - - FOR EACH k IN a_ - IF empty( k ) - s += hb_eol() + hb_eol() - lNewPara := .t. - ELSE - s += iif( lNewPara, "", " " ) + k - lNewPara := .f. - ENDIF - NEXT - - DO WHILE .t. - IF right( s, 2 ) == hb_eol() - s := substr( s, 1, Len( s ) - 2 ) - ELSE - EXIT - ENDIF - ENDDO - - RETURN s - #endif - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_convertHtmlDelimiters( s ) - - s := StrTran( s, "&", "&" ) - s := StrTran( s, "<", "<" ) - s := StrTran( s, ">", ">" ) - s := StrTran( s, '"', """ ) - - RETURN s - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_arrayToMemoHtml( a_ ) - RETURN hbide_convertHtmlDelimiters( hbide_arrayToMemoEx( a_ ) ) - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_memoToArray( s ) - LOCAL aLine := hb_ATokens( StrTran( RTrim( s ), Chr( 13 ) + Chr( 10 ), _EOL ), _EOL ) - LOCAL nNewSize := 0 - LOCAL line - - FOR EACH line IN aLine DESCEND - IF ! Empty( line ) - nNewSize := line:__enumIndex() - EXIT - ENDIF - NEXT - - ASize( aLine, nNewSize ) - - RETURN aLine - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_isValidPath( cPath, cPathDescr ) - - DEFAULT cPathDescr TO '' - - IF hb_dirExists( cPath ) - RETURN .T. - ENDIF - - IF empty( cPathDescr ) - MsgBox( 'The specified path is invalid "' + cPath + '"' ) - ELSE - //MsgBox( 'The specified path is invalid for ' + cPathDescr + ': "' + cPath + '"' ) - MsgBox( 'The specified path is invalid for : "' + cPath + '"', cPathDescr ) - ENDIF - RETURN .F. - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_isValidText( cSourceFile ) - LOCAL cExt - - hb_fNameSplit( cSourceFile, , , @cExt ) - - RETURN lower( cExt ) $ hbide_setIde():oINI:cTextFileExtensions - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_isValidSource( cSourceFile ) - LOCAL cExt - - hb_fNameSplit( cSourceFile, , , @cExt ) - - RETURN lower( cExt ) $ ".c,.cpp,.prg,.res,.rc,.hb" - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_isSourcePPO( cSourceFile ) - LOCAL cExt - - hb_fNameSplit( cSourceFile, , , @cExt ) - - RETURN lower( cExt ) == ".ppo" - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_isSourcePRG( cSourceFile ) - LOCAL cExt - - hb_fNameSplit( cSourceFile, , , @cExt ) - - RETURN lower( cExt ) == ".prg" - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_sourceType( cSourceFile ) - LOCAL cExt - - hb_fNameSplit( cSourceFile, , , @cExt ) - - RETURN lower( cExt ) - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_pathNormalized( cPath ) - RETURN strtran( cPath, "\", "/" ) - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_pathFile( cPath, cFile ) - cPath := iif( right( cPath, 1 ) $ "\/", substr( cPath, 1, Len( cPath ) - 1 ), cPath ) - RETURN hbide_pathToOSPath( iif( empty( cPath ), cFile, cPath + "\" + cFile ) ) - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_pathStripLastSlash( cPath ) - RETURN iif( right( cPath, 1 ) $ "\/", substr( cPath, 1, Len( cPath ) - 1 ), cPath ) - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_pathAppendLastSlash( cPath ) - RETURN iif( right( cPath, 1 ) $ "\/", cPath, cPath + hb_ps() ) - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_pathToOSPath( cPath ) - LOCAL n - - cPath := strtran( cPath, "//" , hb_ps() ) - cPath := strtran( cPath, "/" , hb_ps() ) - cPath := strtran( cPath, "\\" , hb_ps() ) - cPath := strtran( cPath, "\" , hb_ps() ) - - IF ( n := at( ":", cPath ) ) > 0 - cPath := substr( cPath, 1, n - 1 ) + substr( cPath, n ) - ENDIF - - RETURN cPath - -/*----------------------------------------------------------------------*/ -/* - * This function fills an array with the list of regular expressions that will - * identify the errors messages retrieved from during the build process. - * 29/12/2009 - 12:43:26 - vailtom - */ -#define MSG_TYPE_ERR 1 -#define MSG_TYPE_INFO 2 -#define MSG_TYPE_WARN 3 - -#define CLR_MSG_ERR 'red' -#define CLR_MSG_INFO 'brown' -#define CLR_MSG_WARN 'blue' - -STATIC FUNCTION hbide_buildRegExpressList( aRegList ) - - AAdd( aRegList, { MSG_TYPE_WARN, hb_RegexComp( ".*: warning.*" ) } ) - AAdd( aRegList, { MSG_TYPE_WARN, hb_RegexComp( ".*\) Warning W.*" ) } ) - AAdd( aRegList, { MSG_TYPE_WARN, hb_RegexComp( "^Warning W([0-9]+).*" ) } ) - - AAdd( aRegList, { MSG_TYPE_ERR , hb_RegexComp( ".*: error.*" ) } ) - AAdd( aRegList, { MSG_TYPE_ERR , hb_RegexComp( ".*\) Error E.*" ) } ) - AAdd( aRegList, { MSG_TYPE_ERR , hb_RegexComp( "^Error E([0-9]+).*" ) } ) - AAdd( aRegList, { MSG_TYPE_ERR , hb_RegexComp( "^Error: ." ) } ) - AAdd( aRegList, { MSG_TYPE_ERR , hb_RegexComp( ".*:([0-9]+):([\w|\s]*)error.*" ) } ) - AAdd( aRegList, { MSG_TYPE_ERR , hb_RegexComp( ".*:\(\.\w+\+.*\):.*" ) } ) - AAdd( aRegList, { MSG_TYPE_ERR , hb_RegexComp( ".*: fatal\s.*" ) } ) - - AAdd( aRegList, { MSG_TYPE_INFO, hb_RegexComp( ".*: note.*" ) } ) - AAdd( aRegList, { MSG_TYPE_INFO, hb_RegexComp( ".*: In function '.*" ) } ) - AAdd( aRegList, { MSG_TYPE_INFO, hb_RegexComp( "^(\s*).*\s: see.*" ) } ) - - RETURN aRegList - -/*----------------------------------------------------------------------*//* - * Catch source file name & line error from an msg status from compiler result. - * 29/12/2009 - 13:22:29 - vailtom - */ -FUNCTION hbide_parseFNfromStatusMsg( cText, cFileName, nLine, lValidText ) - LOCAL regLineN := hb_RegexComp( ".*(\(([0-9]+)\)|:([0-9]+):|\s([0-9]+):).*" ) - LOCAL aList, nPos, cLine, n - - DEFAULT lValidText TO .T. - - cFileName := '' - nLine := 0 - - /* Xbase++ */ - IF "XBT" $ cText - nPos := at( "(", cText ) - n := at( ")", cText ) - cFileName := substr( cText, 1, nPos - 1 ) - cLine := substr( cText, nPos + 1, n - 1 - nPos ) - n := at( ":", cLine ) - cLine := substr( cLine, 1, n - 1 ) - nLine := val( cLine ) - - RETURN !empty( cFileName ) - ENDIF - - * Validate if current text is a error/warning/info message. - * 29/12/2009 - 22:51:39 - vailtom - IF lValidText - nPos := aScan( aRegList, {| reg | !Empty( hb_RegEx( reg[ 2 ], cText ) ) } ) - IF ( nPos <= 0 ) - RETURN .F. - ENDIF - ENDIF - - aList := hb_RegEx( regLineN, cText ) - - IF !Empty( aList ) - nLine := alltrim( aList[ 2 ] ) - cText := Substr( cText, 1, At( nLine, cText ) - 1 ) - cText := alltrim( cText ) + '(' - - nLine := strtran( nLine, ":", "" ) - nLine := strtran( nLine, "(", "" ) - nLine := strtran( nLine, ")", "" ) - nLine := VAL( alltrim( nLine ) ) - ENDIF - - IF ( nPos := hb_At( '(', cText ) ) > 0 - cFileName := alltrim( Subst( cText, 1, nPos - 1 ) ) - ELSE - IF ( nPos := At( 'referenced from', Lower( cText ) ) ) != 0 - cFileName := SubStr( cText, nPos + Len( 'referenced from' ) ) - ELSE - * GCC & MSVC filename detect... - IF Subst( cText, 2, 1 ) == ':' - nPos := hb_At( ':', cText, 3 ) - ELSE - nPos := hb_At( ':', cText ) - ENDIF - IF nPos != 0 - cFileName := SubStr( cText, 1, nPos - 1 ) - ENDIF - ENDIF - ENDIF - - cFileName := strtran( cFileName, "(", "" ) - cFileName := strtran( cFileName, ")", "" ) - cFileName := alltrim( cFileName ) - cFileName := strtran( cFileName, "\\", "/" ) - cFileName := strtran( cFileName, "\" , "/" ) - - IF ( nPos := Rat( ' ', cFileName ) ) != 0 - cFileName := SubStr( cFileName, nPos + 1 ) - ENDIF - - IF Subst( cFileName, 2, 1 ) == ':' - nPos := hb_At( ':', cFileName, 3 ) - ELSE - nPos := hb_At( ':', cFileName ) - ENDIF - - IF nPos != 0 - cFileName := SubStr( cFileName, 1, nPos - 1 ) - ENDIF - - cFileName := alltrim( cFileName ) - - RETURN !Empty( cFileName ) - -/*----------------------------------------------------------------------*/ -/* - * This function parses compiler result and hightlight errors & warnings using - * regular expressions. (vailtom) - * - * More about Qt Color names: - * http://www.w3.org/TR/SVG/types.html#ColorKeywords - * - * 28/12/2009 - 16:17:37 - */ -FUNCTION hbide_convertBuildStatusMsgToHtml( cText, oWidget ) - LOCAL aColors := { CLR_MSG_ERR, CLR_MSG_INFO, CLR_MSG_WARN } - LOCAL aLines, cIfError, cLine, nPos - - IF aRegList == NIL - aRegList := {} - hbide_BuildRegExpressList( aRegList ) - ENDIF - - cText := StrTran( cText, Chr( 13 ) + Chr( 10 ), Chr( 10 ) ) - cText := StrTran( cText, Chr( 13 ) , Chr( 10 ) ) - cText := StrTran( cText, Chr( 10 ) + Chr( 10 ), Chr( 10 ) ) - cText := StrTran( cText, " ", " " ) - - /* Convert some chars to valid HTML chars */ - DO WHILE "<" $ cText - cText := StrTran( cText, "<", "<" ) - ENDDO - DO WHILE ">" $ cText - cText := StrTran( cText, ">", ">" ) - ENDDO - aLines := hb_aTokens( cText, Chr( 10 ) ) - - FOR EACH cLine IN aLines - - IF !Empty( cLine ) - IF ( nPos := aScan( aRegList, {| reg | !Empty( hb_RegEx( reg[ 2 ], cLine ) ) } ) ) > 0 - IF aRegList[ nPos,1 ] == MSG_TYPE_ERR - cIfError := cLine - ENDIF - cLine := '' + cLine + '' - ELSEIF "XBT" $ cLine - cLine := '' + cLine + '' - ELSE - cLine := "" + cLine + "" - ENDIF - ENDIF - - oWidget:append( cLine ) - NEXT - - RETURN cIfError - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_filesToSources( aFiles ) - LOCAL aSrc := {} - LOCAL s - - FOR EACH s IN aFiles - IF hbide_isValidSource( s ) - aadd( aSrc, s ) - ENDIF - NEXT - - RETURN aSrc - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_parseKeyValPair( s, cKey, cVal ) - LOCAL n, lYes := .f. - - IF ( n := at( "=", s ) ) > 0 - cKey := alltrim( substr( s, 1, n - 1 ) ) - cVal := alltrim( substr( s, n + 1 ) ) - lYes := ( !empty( cKey ) .and. !empty( cVal ) ) - ENDIF - - RETURN lYes - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_parseFilter( s, cKey, cVal ) - LOCAL n, n1, lYes := .f. - - IF ( n := at( "{", s ) ) > 0 - IF ( n1 := at( "}", s ) ) > 0 - cKey := alltrim( substr( s, n+1, n1-n-1 ) ) - cVal := alltrim( substr( s, n1+1 ) ) - lYes := .t. - ENDIF - ENDIF - RETURN lYes - -/*----------------------------------------------------------------------*/ -/* - * Return the next untitled filename available. - * 01/01/2010 - 19:40:17 - vailtom - */ -FUNCTION hbide_getNextUntitled() - STATIC s_nCount := 0 - RETURN ++s_nCount - -/*----------------------------------------------------------------------*/ -/* - * Return the next TAB_ID or IDE_ID available. - * 02/01/2010 - 10:47:16 - vailtom - */ -FUNCTION hbide_getNextUniqueID() - STATIC s_nCount := 0 - - IF s_nCount > 4294967295 - s_nCount := 0 - ENDIF - RETURN ++s_nCount - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_getNextIDasString( cString ) - - STATIC hIDs := {=>} - - IF ! hb_hHasKey( hIDs, cString ) - hIDs[ cString ] := 0 - ENDIF - - RETURN cString + "_" + hb_ntos( ++hIDs[ cString ] ) - -/*----------------------------------------------------------------------*/ -/* - * Check if cFilename has a extension... and add cDefaultExt if not exist. - * 01/01/2010 - 20:48:10 - vailtom - */ -FUNCTION hbide_checkDefaultExtension( cFileName, cDefaultExt ) - LOCAL cPath, cFile, cExt - hb_fNameSplit( cFileName, @cPath, @cFile, @cExt ) - IF Empty( cExt ) - cExt := cDefaultExt - ENDIF - RETURN cPath + hb_ps() + cFile + hb_ps() + cExt - -/*----------------------------------------------------------------------*/ - -function hbide_toString( x, lLineFeed, lInherited, lType, cFile, lForceLineFeed ) - LOCAL s := '' - LOCAL t := valtype( x ) - LOCAL i, j - - DEFAULT lLineFeed TO .T. - DEFAULT lInherited TO .F. - DEFAULT lType TO .F. - DEFAULT cFile TO "" - DEFAULT lForceLineFeed TO .F. - - DO CASE - CASE ( t == "C" ) - s := iif( lType, "[C]=", "" ) + '"' + x + '"' - CASE ( t == "N" ) - s := iif( lType, "[N]=", "" ) + alltrim(str( x )) - CASE ( t == "D" ) - s := iif( lType, "[D]=", "" ) + "ctod('"+ dtoc(x) +"')" - CASE ( t == "L" ) - s := iif( lType, "[L]=", "" ) + iif( x, '.T.', '.F.' ) - CASE ( t == "M" ) - s := iif( lType, "[M]=", "" ) + '"' + x + '"' - CASE ( t == "B" ) - s := iif( lType, "[B]=", "" ) + '{|| ... }' - CASE ( t == "U" ) - s := iif( lType, "[U]=", "" ) + 'NIL' - CASE ( t == "A" ) - s := iif( lType, "[A]=", "" ) + "{" - IF Len( x ) == 0 - s += " " - ELSE - s += iif( valtype( x[1] ) == "A" .or. lForceLineFeed, hb_eol(), "" ) - j := Len( x ) - - FOR i := 1 TO j - s += iif( valtype( x[i] ) == "A", " ", " " ) + iif( lForceLineFeed, " ", "" ) + hbide_toString( x[i], .F. ) - s += iif( i != j, ",", "" ) - IF lLineFeed - IF !lInherited .and. ( valtype( x[i] ) == "A" .or. lForceLineFeed ) - s += hb_eol() - ENDIF - ENDIF - NEXT - ENDIF - s += iif( !lForceLineFeed, " ", "" ) + "}" - - CASE ( t == "O" ) - IF lInherited - // E necessario linkar \harbour\lib\xhb.lib - // s := iif( lType, "[O]=", "" ) + hb_dumpvar( x ) + iif( lLineFeed, hb_eol(), "" ) - s := '' + iif( lLineFeed, hb_eol(), "" ) - ELSE -// s := iif( lType, "[O]=", "" ) + x:ClassName()+'():New()' + iif( lLineFeed, hb_eol(), "" ) - s := iif( lType, "[O]=", "" ) + x:ClassName() + iif( lLineFeed, hb_eol(), "" ) - ENDIF - ENDCASE - - IF !empty( cFile ) - memowrit( cFile, s ) - ENDIF - - RETURN s - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_help( nOption ) - LOCAL txt_ := {} - LOCAL tit_ := '' - - SWITCH nOption - CASE 1 - tit_ := 'About hbIde' - AAdd( txt_, "Harbour IDE ( HbIDE )" ) - AAdd( txt_, "Developed by" ) - AAdd( txt_, "Pritpal Bedi ( bedipritpal@hotmail.com )" ) - AAdd( txt_, "" ) - AAdd( txt_, "built with:" ) - AAdd( txt_, HB_VERSION() ) - AAdd( txt_, HB_COMPILER() ) - AAdd( txt_, "Qt " + QT_VERSION_STR() ) - AAdd( txt_, "" ) - AAdd( txt_, "Visit the project website at:" ) - AAdd( txt_, "http://harbour-project.org/" ) - AAdd( txt_, "http://hbide.vouch.info/" ) - EXIT - - CASE 2 - tit_ := 'Mailing List' - AAdd( txt_, "Harbour Development Mailing List" ) - AAdd( txt_, "" ) - AAdd( txt_, "Please visit the home page:" ) - AAdd( txt_, "http://groups.google.com/group/harbour-devel/" ) - EXIT - - CASE 3 - tit_ := 'Mailing List' - AAdd( txt_, "Harbour Users Mailing List" ) - AAdd( txt_, "" ) - AAdd( txt_, "Please visit the home page:" ) - AAdd( txt_, "http://groups.google.com/group/harbour-users/" ) - EXIT - - CASE 4 - tit_ := 'About Harbour' - AAdd( txt_, "About Harbour" ) - AAdd( txt_, "" ) - AAdd( txt_, '"Harbour is the Free Open Source Software implementation' ) - AAdd( txt_, 'of a multi-platform, multi-threading, object-oriented, scriptable' ) - AAdd( txt_, 'programming language, backwards compatible with Clipper/xBase.' ) - AAdd( txt_, 'Harbour consists of a compiler and runtime libraries with multiple' ) - AAdd( txt_, 'UI and database backends, its own make system and a large' ) - AAdd( txt_, 'collection of libraries and interfaces to many popular APIs."' ) - AAdd( txt_, "" ) - AAdd( txt_, "Get downloads, samples, contribs and much more at:" ) - AAdd( txt_, "http://harbour-project.org/" ) - EXIT - - END - - IF !Empty( txt_ ) - MsgBox( hbide_arrayToMemo( txt_ ), tit_ ) - ENDIF - - RETURN nil - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_getUniqueFuncName() - LOCAL t, b, c, n - - t := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' - n := Len( t ) - b := '' - DO WHILE Len( b ) != 10 - c := Substr( t, HB_RANDOMINT( 1, n ), 1 ) - - IF !( c $ b ) - IF Empty( b ) .AND. IsDigit( c ) - LOOP - ENDIF - b += c - ENDIF - ENDDO - b += '( ' - - RETURN b - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_findProjTreeItem( oIde, cNodeText, cType ) - LOCAL oItem, a_ - - FOR EACH a_ IN oIde:aProjData - IF a_[ TRE_TYPE ] == cType .AND. a_[ TRE_OITEM ]:caption == cNodeText - oItem := a_[ TRE_OITEM ] - EXIT - ENDIF - NEXT - RETURN oItem - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_expandChildren( oIde, oItem ) - LOCAL a_ - - oItem:expand( .t. ) - FOR EACH a_ IN oIde:aProjData - IF a_[ TRE_OPARENT ] == oItem - a_[ TRE_OITEM ]:expand( .t. ) - ENDIF - NEXT - - RETURN nil - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_collapseProjects( oIde ) - LOCAL a_ - - FOR EACH a_ IN oIde:aProjData - IF a_[ TRE_TYPE ] == "Project Name" - a_[ TRE_OITEM ]:expand( .f. ) - ENDIF - NEXT - - RETURN nil - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_expandProjects( oIde ) - LOCAL a_ - - FOR EACH a_ IN oIde:aProjData - IF a_[ TRE_TYPE ] == "Project Name" - hbide_expandChildren( oIde, a_[ TRE_OITEM ] ) - ENDIF - NEXT - - RETURN nil - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_buildLinesLabel( nFrom, nTo, nW, nMax ) - LOCAL n, i, s := "" - - n := min( nMax, nTo - nFrom ) - - FOR i := 0 TO n - IF ( ( nFrom + i ) % 10 ) == 0 - s += "" + padl( hb_ntos( nFrom + i ), nW ) + "
" - ELSE - //s += padl( hb_ntos( nFrom + i ), nW ) + hb_eol() - s += padl( hb_ntos( nFrom + i ), nW ) + "
" - ENDIF - NEXT - - RETURN s - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_parseMacros( cP ) - LOCAL lHas, n, n1, cMacro - - IF !empty( cP ) - DO WHILE .t. - lHas := .f. - - IF ( n := at( "${" , cP ) ) > 0 - IF ( n1 := at( "}" , cP ) ) > 0 - lHas := .t. - cMacro := substr( cP, n + 2, n1 - n - 2 ) - cP := substr( cP, 1, n - 1 ) + hbide_macro2value( cMacro ) + substr( cP, n1 + 1 ) - ENDIF - ENDIF - IF ! lHas - EXIT - ENDIF - ENDDO - ENDIF - - RETURN cP - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_macro2value( cMacro ) - LOCAL cVal, cMacroL, oEdit, cFile, cPath, cExt - LOCAL oIde := hbide_setIDE() - - cMacro := alltrim( cMacro ) - cMacroL := lower( cMacro ) - - oEdit := oIde:oEM:getEditorCurrent() - IF !empty( oEdit ) - hb_fNameSplit( oEdit:sourceFile, @cPath, @cFile, @cExt ) - ELSE - cPath := ""; cFile := ""; cExt := "" - ENDIF - - DO CASE - CASE cMacroL == "source_fullname" - cVal := hbide_pathToOSPath( cPath + cFile + cExt ) - - CASE cMacroL == "source_path" - cVal := hbide_pathToOSPath( cPath ) - - CASE cMacroL == "source_fullname_less_ext" - cVal := hbide_pathToOSPath( cPath + cFile ) - - CASE cMacroL == "source_name" - cVal := cFile + cExt - - CASE cMacroL == "source_name_less_ext" - cVal := cFile - - CASE cMacroL == "source_ext" - cVal := cExt - - CASE cMacroL == "project_title" - cVal := hbide_setProjectTitle() - - CASE cMacroL == "project_path" - cVal := oIde:oPM:getProjectPathFromTitle( hbide_setProjectTitle() ) - - CASE cMacroL == "project_output_path" - cVal := hbide_setProjectOutputPath() - - OTHERWISE - cVal := hb_GetEnv( cMacro ) - - ENDCASE - - RETURN cVal - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_getShellCommandsTempFile( aCmd ) - LOCAL cExt - LOCAL fhnd - LOCAL cCmdFileName - LOCAL cCmdFile - LOCAL tmp - - #if defined( __PLATFORM__WINDOWS ) - cExt := ".bat" - #elif defined( __PLATFORM__OS2 ) - cExt := ".cmd" - #elif defined( __PLATFORM__UNIX ) - cExt := ".sh" - #endif - - IF ! Empty( cExt ) - - cCmdFile := "" - FOR EACH tmp IN aCmd - tmp := hbide_parseMacros( tmp ) - cCmdFile += tmp + hb_eol() - NEXT - - IF ( fhnd := hb_FTempCreateEx( @cCmdFileName, NIL, NIL, cExt ) ) != F_ERROR - FWrite( fhnd, cCmdFile ) - FClose( fhnd ) - ENDIF - ENDIF - - RETURN cCmdFileName - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_getShellCommand() - LOCAL cShellCmd - - #if defined( __PLATFORM__WINDOWS ) - cShellCmd := hb_getenv( "COMSPEC" ) - #elif defined( __PLATFORM__OS2 ) - cShellCmd := hb_getenv( "COMSPEC" ) - #elif defined( __PLATFORM__UNIX ) - cShellCmd := hb_getenv( "SHELL" ) - #endif - - RETURN cShellCmd - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_getOS() - LOCAL cOS - #if defined( __PLATFORM__WINDOWS ) - cOS := "win" - #elif defined( __PLATFORM__OS2 ) - cOS := "os" - #elif defined( __PLATFORM__UNIX ) - cOS := "nix" - #endif - RETURN cOS - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_fetchADate( qParent, cTitle, cPrompt, dDefault ) - LOCAL qDate, oUI, nRet - - DEFAULT cTitle TO "A Date Value" - DEFAULT cPrompt TO "What" - - oUI := hbide_getUI( "fetchdate", qParent ) - - oUI:setWindowTitle( cTitle ) - oUI:labelPrompt:setText( cPrompt ) - IF dDefault != NIL - qDate := QDate() - qDate:setYear( year( dDefault ) ) - qDate:setMonth( month( dDefault ) ) - qDate:setDay( day( dDefault ) ) - oUI:editDate:setDate( qDate ) - ENDIF - - oUI:buttonOk:connect( "clicked()", {|| oUI:done( 1 ) } ) - oUI:buttonCancel:connect( "clicked()", {|| oUI:done( 0 ) } ) - - nRet := oUI:exec() - - oUI:buttonOk:disconnect( "clicked()" ) - oUI:buttonCancel:disconnect( "clicked()" ) - - IF nRet == 1 - qDate := oUI:editDate:date() - RETURN stod( strzero( qDate:year(), 4 ) + strzero( qDate:month(),2 ) + strzero( qDate:day(), 2 ) ) - ENDIF - - RETURN NIL - -/*------------------------------------------------------------------------*/ - -FUNCTION hbide_fetchAString( qParent, cDefault, cWhat, cTitle ) - LOCAL qGo, cText - - DEFAULT cDefault TO "" - DEFAULT cWhat TO "" - DEFAULT cTitle TO "A String Value" - - qGo := QInputDialog( qParent ) - qGo:setTextValue( cDefault ) - qGo:setLabelText( cWhat ) - qGo:setWindowTitle( cTitle ) - - qGo:exec() - cText := qGo:textValue() - qGo:setParent( QWidget() ) - - RETURN cText - -/*----------------------------------------------------------------------*/ -/* - * Harbour Project source code: - * - * Copyright 2010 Viktor Szakats (harbour syenar.net) - * www - http://harbour-project.org - * - */ -#define HBIDE_HBP_PTYPE_FILES "files" -#define HBIDE_HBP_PTYPE_OPTIONS "options" -#define HBIDE_HBP_PTYPE_HBIDEPARAMS "hbideparams" - -FUNCTION hbide_fetchHbpData( cHBPFileName ) - LOCAL aParamList - - aParamList := hbide_HBPGetParamList( cHBPFileName ) - - RETURN { hbide_HBPParamListFilter( aParamList, HBIDE_HBP_PTYPE_OPTIONS ), ; - hbide_HBPParamListFilter( aParamList, HBIDE_HBP_PTYPE_FILES ) } - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_HBPParamListFilter( aParams, nType ) - LOCAL aArray := {} - LOCAL tmp - LOCAL cParamNQ - - FOR EACH tmp IN aParams - DO CASE - CASE Lower( Left( tmp[ 1 ], 7 ) ) == "#hbide." - IF nType == HBIDE_HBP_PTYPE_HBIDEPARAMS - AAdd( aArray, tmp[ 1 ] ) - ENDIF - CASE Left( tmp[ 1 ], 1 ) == "#" - /* misc comment line, always skip */ - CASE Empty( tmp[ 1 ] ) - /* empty line, always skip */ - OTHERWISE - cParamNQ := hbide_HBPStrStripQuote( tmp[ 1 ] ) - IF Left( cParamNQ, 1 ) == "-" - /* in conformance with hbmk2, skip remaining hbmk2 parameters if -skip is found */ - IF Lower( cParamNQ ) == "-skip" .AND. ( nType == HBIDE_HBP_PTYPE_FILES .OR. nType == HBIDE_HBP_PTYPE_OPTIONS ) - EXIT - ENDIF - IF nType == HBIDE_HBP_PTYPE_OPTIONS - AAdd( aArray, cParamNQ ) - ENDIF - ELSE - IF nType == HBIDE_HBP_PTYPE_FILES - AAdd( aArray, cParamNQ ) - ENDIF - ENDIF - ENDCASE - NEXT - - RETURN aArray - -/*----------------------------------------------------------------------*/ - -/* Load entire .hbp files, with empty lines and comments for - further processing. [vszakats] */ -FUNCTION hbide_HBPGetParamList( cFileName ) - LOCAL aParams := {} - - hbide_HBPLoad( aParams, cFileName ) - - RETURN aParams - -/*----------------------------------------------------------------------*/ - -/* Recursive .hbp/.hbm files are not currently supported. - It can be added, but it makes updating the options much more - complicated. [vszakats] */ - -#define HBIDE_HBP_EOL Chr( 10 ) - -STATIC PROCEDURE hbide_HBPLoad( aParams, cFileName ) - LOCAL cFile - LOCAL cLine - LOCAL cParam - LOCAl cParamNQ - - IF hb_FileExists( cFileName ) - - cFile := MemoRead( cFileName ) /* NOTE: Intentionally using MemoRead() which handles EOF char. */ - - IF ! hb_eol() == HBIDE_HBP_EOL - cFile := StrTran( cFile, hb_eol(), HBIDE_HBP_EOL ) - ENDIF - IF ! hb_eol() == Chr( 13 ) + Chr( 10 ) - cFile := StrTran( cFile, Chr( 13 ) + Chr( 10 ), HBIDE_HBP_EOL ) - ENDIF - - FOR EACH cLine IN hb_ATokens( cFile, HBIDE_HBP_EOL ) - IF Empty( cLine ) .OR. ; - Left( cLine, 1 ) == "#" - AAdd( aParams, { cLine, cFileName, cLine:__enumIndex() } ) - ELSE - FOR EACH cParam IN hb_ATokens( cLine,, .T. ) - cParamNQ := hbide_HBPStrStripQuote( cParam ) - IF ! Empty( cParamNQ ) - #if 0 - DO CASE - CASE !( Left( cParamNQ, 1 ) == "-" ) .AND. Len( cParamNQ ) >= 1 .AND. Left( cParamNQ, 1 ) == "@" .AND. ; - !( Lower( hb_FNameExt( cParamNQ ) ) == ".clp" ) - /* skip recurse */ - CASE !( Left( cParamNQ, 1 ) == "-" ) .AND. ; - ( Lower( hb_FNameExt( cParamNQ ) ) == ".hbm" .OR. ; - Lower( hb_FNameExt( cParamNQ ) ) == ".hbp" ) - /* skip recurse */ - OTHERWISE - AAdd( aParams, { cParam, cFileName, cLine:__enumIndex() } ) - ENDCASE - #endif - AAdd( aParams, { cParam, cFileName, cLine:__enumIndex() } ) - ENDIF - NEXT - ENDIF - NEXT - ENDIF - - RETURN - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_HBPStrStripQuote( cString ) - RETURN iif( Left( cString, 1 ) == '"' .AND. Right( cString, 1 ) == '"',; - SubStr( cString, 2, Len( cString ) - 2 ),; - cString ) - -/*----------------------------------------------------------------------*/ -// -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_parseHbpFilter( s, cFilt, cPath ) - LOCAL n, n1 - - cFilt := "" - cPath := s - IF ( n := at( "{", s ) ) > 0 - IF ( n1 := at( "}", s ) ) > 0 - cFilt := substr( s, n + 1, n1 - n + 1 ) - cPath := alltrim( substr( s, n1 + 1 ) ) - RETURN .t. - ENDIF - ENDIF - - RETURN .f. - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_outputLine( cLine, nOccur ) - - DEFAULT cLine TO "-" - DEFAULT nOccur TO 100 - - RETURN "" + replicate( cLine, nOccur ) + "" - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_fetchSubPaths( aPaths, cRootPath, lSubs ) - LOCAL aDir, a_ - - DEFAULT lSubs TO .t. - - IF !( right( cRootPath, 1 ) == hb_ps() ) - cRootPath += hb_ps() - ENDIF - cRootPath := hbide_pathToOSPath( cRootPath ) - - aadd( aPaths, cRootPath ) - - IF lSubs - aDir := directory( cRootPath + "*", "D" ) - FOR EACH a_ IN aDir - IF a_[ 5 ] == "D" .AND. !( left( a_[ 1 ], 1 ) == "." ) - hbide_fetchSubPaths( @aPaths, cRootPath + a_[ 1 ] ) - ENDIF - NEXT - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_image( cName ) - DEFAULT cName TO "" - RETURN hbide_pathToOsPath( ":/resources" + "/" + cName + ".png" ) - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_uic( cName ) - LOCAL tmp - DEFAULT cName TO "" - tmp := hbide_pathToOsPath( hb_DirBase() + "resources" + "/" + cName + ".uic" ) - IF ! hb_FileExists( tmp ) - MsgBox( "Error: File " + tmp + " is missing. Please check your installation." ) - QUIT - ENDIF - RETURN tmp - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_ui( cName ) - LOCAL tmp - DEFAULT cName TO "" - tmp := hbide_pathToOsPath( hb_DirBase() + "resources" + "/" + cName + ".ui" ) - IF ! hb_FileExists( tmp ) - MsgBox( "Error: File " + tmp + " is missing. Please check your installation." ) - QUIT - ENDIF - RETURN tmp - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_isPrevParent( cRoot, cPath ) - LOCAL cLRoot, cLPath - - cLRoot := hbide_pathNormalized( cRoot, .t. ) - cLPath := hbide_pathNormalized( cPath, .t. ) - - IF hb_FileMatch( left( cLPath, Len( cLRoot ) ), cLRoot ) - RETURN .t. - ENDIF - - RETURN .f. - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_space2amp( cStr ) - RETURN strtran( cStr, " ", chr( 38 ) ) - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_amp2space( cStr ) - RETURN strtran( cStr, chr( 38 ), " " ) - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_stripFilter( cSrc ) - LOCAL n, n1 - - DO WHILE .t. - IF ( n := at( "{", cSrc ) ) == 0 - EXIT - ENDIF - IF ( n1 := at( "}", cSrc ) ) == 0 - EXIT - ENDIF - cSrc := substr( cSrc, 1, n - 1 ) + substr( cSrc, n1 + 1 ) - ENDDO - - RETURN cSrc - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_stripRoot( cRoot, cPath ) - LOCAL cLRoot, cLPath, cP - - IF !empty( cRoot ) .AND. ! ( right( cRoot, 1 ) $ "/\" ) - cRoot += "/" - ENDIF - - cLRoot := hbide_pathNormalized( cRoot, .t. ) - cLPath := hbide_pathNormalized( cPath, .f. ) - IF hb_FileMatch( left( lower( cLPath ), Len( cLRoot ) ), cLRoot ) - cP := substr( cLPath, Len( cRoot ) + 1 ) - RETURN cP - ENDIF - - RETURN cPath - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_syncRoot( cRoot, cPath ) - LOCAL cPth, cFile, cExt - LOCAL cPathProc := hb_PathJoin( cPath, cRoot ) - - hb_fNameSplit( cPath, @cPth, @cFile, @cExt ) - -//HB_TRACE( HB_TR_DEBUG, "hbide_syncRoot( cRoot, cPath )", cPathProc, hbide_pathToOSpath( cPathProc + "/" + cFile + cExt ) ) - - RETURN hbide_pathToOSpath( cPathProc + "/" + cFile + cExt ) - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_array2cmdParams( aHbp ) - LOCAL cCmd := " " - - aeval( aHbp, {|e| cCmd += e + " " } ) - - RETURN cCmd - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_syncProjPath( cRoot, cSource ) - - IF left( cSource, 1 ) $ "./\" .OR. substr( cSource, 2, 1 ) == ":" - RETURN cSource - ENDIF - - IF !empty( cRoot ) .AND. ! ( right( cRoot, 1 ) $ "/\" ) - cRoot += "/" - ENDIF - - RETURN cRoot + cSource - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_popupBrwContextMenu( qTextBrowser, p ) - LOCAL aMenu := {} - - aadd( aMenu, { "Back" , {|| qTextBrowser:backward() } } ) - aadd( aMenu, { "Forward" , {|| qTextBrowser:forward() } } ) - aadd( aMenu, { "Home" , {|| qTextBrowser:home() } } ) - aadd( aMenu, { "" } ) - aadd( aMenu, { "Reload" , {|| qTextBrowser:reload() } } ) - aadd( aMenu, { "" } ) - aadd( aMenu, { "Select All", {|| qTextBrowser:selectAll() } } ) - aadd( aMenu, { "Copy" , {|| qTextBrowser:copy() } } ) - aadd( aMenu, { "Print" , {|| NIL } } ) - - RETURN hbide_execPopup( aMenu, qTextBrowser:mapToGlobal( QPoint( p ) ), qTextBrowser ) - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_groupSources( cMode, a_ ) - LOCAL cTyp, s, d_, n - LOCAL aSrc := { ".prg", ".c", ".cpp", ".h", ".ch", ".hbp", ".hbc", ".rc", ".res", ".obj", ".o", ".lib", ".a" } - LOCAL aTxt := { {} , {} , {} , {} , {} , {} , {} , {} , {} , {} , {} , {} , {} } - LOCAL aRst := {} - - IF cMode == "az" - asort( a_, , , {|e,f| lower( hbide_stripFilter( e ) ) < lower( hbide_stripFilter( f ) ) } ) - ELSEIF cMode == "za" - asort( a_, , , {|e,f| lower( hbide_stripFilter( f ) ) < lower( hbide_stripFilter( e ) ) } ) - ELSEIF cMode == "org" - asort( a_, , , {|e,f| lower( hbide_stripFilter( e ) ) < lower( hbide_stripFilter( f ) ) } ) - - FOR EACH s IN a_ - s := alltrim( s ) - IF !( left( s, 1 ) == "#" ) - cTyp := hbide_sourceType( s ) - - IF ( n := ascan( aSrc, {|e| cTyp == e } ) ) > 0 - aadd( aTxt[ n ], s ) - ELSE - aadd( aRst, s ) - ENDIF - ENDIF - NEXT - - a_:= {} - FOR EACH d_ IN aTxt - IF !empty( d_ ) - FOR EACH s IN d_ - aadd( a_, s ) - NEXT - ENDIF - NEXT - IF !empty( aRst ) - FOR EACH s IN aRst - aadd( a_, s ) - NEXT - ENDIF - ENDIF - - RETURN a_ - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_imageForProjectType( cType ) - cType := left( cType, 8 ) - RETURN iif( cType == "Lib", "fl_lib", iif( cType == "Dll", "fl_dll", "fl_exe" ) ) - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_imageForFileType( cType ) - cType := lower( cType ) - SWITCH cType - CASE ".exe" - RETURN "fl_exe" - CASE ".lib" - CASE ".a" - RETURN "fl_lib" - CASE ".rc" - CASE ".res" - RETURN "source_res" //"fl_res" - CASE ".prg" - RETURN "source_prg" //"fl_prg" - CASE ".c" - RETURN "source_c" - CASE ".cpp" - RETURN "source_cpp" //"fl_c" - CASE ".o" - CASE ".obj" - RETURN "source_o" //"fl_obj" - CASE ".hbp" - RETURN "project" - CASE ".hbc" - RETURN "envconfig" - CASE ".h" - CASE ".ch" - RETURN "source_h" - OTHERWISE - RETURN "source_unknown" //"fl_txt" - ENDSWITCH - RETURN NIL - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_array2string( a_, cDlm ) - LOCAL s := "" - - aeval( a_, {|e| s += e + cDlm } ) - - RETURN s - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_nArray2string( a_ ) - LOCAL cString := "" - LOCAL n - - FOR EACH n IN a_ - cString += hb_ntos( n ) - cString += " " - NEXT - - RETURN cString - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_string2nArray( s ) - LOCAL b_, a_:= {} - - b_:= hb_atokens( s, " " ) - FOR EACH s IN b_ - s := alltrim( s ) - IF Len( s ) > 0 - aadd( a_, val( s ) ) - ENDIF - NEXT - - RETURN a_ - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_array2rect( a_ ) - RETURN QRect( a_[ 1 ], a_[ 2 ], a_[ 3 ], a_[ 4 ] ) - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_parseSourceComponents( cCompositeSource ) - LOCAL a_ - - a_:= hb_atokens( cCompositeSource, "," ) - asize( a_, 7 ) - DEFAULT a_[ 1 ] TO "" - DEFAULT a_[ 2 ] TO "" - DEFAULT a_[ 3 ] TO "" - DEFAULT a_[ 4 ] TO "" - DEFAULT a_[ 5 ] TO "" - DEFAULT a_[ 6 ] TO "Main" - DEFAULT a_[ 7 ] TO "" - - // - a_[ 1 ] := alltrim( a_[ 1 ] ) - a_[ 2 ] := val( alltrim( a_[ 2 ] ) ) - a_[ 3 ] := val( alltrim( a_[ 3 ] ) ) - a_[ 4 ] := val( alltrim( a_[ 4 ] ) ) - a_[ 5 ] := alltrim( a_[ 5 ] ) - a_[ 6 ] := alltrim( a_[ 6 ] ) - a_[ 7 ] := hbide_string2nArray( a_[ 7 ] ) - - RETURN a_ - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_parseUserToolbarComponents( cCompositeTool ) - LOCAL a_ - - a_:= hb_atokens( cCompositeTool, "," ) - asize( a_, 7 ) - DEFAULT a_[ 1 ] TO "" - DEFAULT a_[ 2 ] TO "" - DEFAULT a_[ 3 ] TO "" - DEFAULT a_[ 4 ] TO "" - DEFAULT a_[ 5 ] TO "" - DEFAULT a_[ 6 ] TO "" - DEFAULT a_[ 7 ] TO "" - a_[ 1 ] := alltrim( a_[ 1 ] ) - a_[ 2 ] := alltrim( a_[ 2 ] ) - a_[ 3 ] := alltrim( a_[ 3 ] ) - a_[ 4 ] := alltrim( a_[ 4 ] ) - a_[ 5 ] := alltrim( a_[ 5 ] ) - a_[ 6 ] := alltrim( a_[ 6 ] ) - a_[ 7 ] := alltrim( a_[ 7 ] ) - - RETURN a_ - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_parseToolComponents( cCompositeTool ) - LOCAL a_ - - a_:= hb_atokens( cCompositeTool, "," ) - asize( a_, 12 ) - DEFAULT a_[ 1 ] TO "" - DEFAULT a_[ 2 ] TO "" - DEFAULT a_[ 3 ] TO "" - DEFAULT a_[ 4 ] TO "" - DEFAULT a_[ 5 ] TO "" - DEFAULT a_[ 6 ] TO "" - DEFAULT a_[ 7 ] TO "-1" - DEFAULT a_[ 8 ] TO "YES" - DEFAULT a_[ 9 ] TO "" - DEFAULT a_[10 ] TO "" - DEFAULT a_[11 ] TO "" - DEFAULT a_[12 ] TO "" - a_[ 1 ] := alltrim( a_[ 1 ] ) - a_[ 2 ] := alltrim( a_[ 2 ] ) - a_[ 3 ] := alltrim( a_[ 3 ] ) - a_[ 4 ] := alltrim( a_[ 4 ] ) - a_[ 5 ] := alltrim( a_[ 5 ] ) - a_[ 6 ] := alltrim( a_[ 6 ] ) - a_[ 7 ] := alltrim( a_[ 7 ] ) - a_[ 8 ] := alltrim( a_[ 8 ] ) - a_[ 9 ] := alltrim( a_[ 9 ] ) - a_[10 ] := alltrim( a_[10 ] ) - a_[11 ] := alltrim( a_[11 ] ) - a_[12 ] := alltrim( a_[12 ] ) - - RETURN a_ - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_parseKeywordsComponents( cStr ) - LOCAL a_ - - a_:= hb_atokens( cStr, "~" ) - asize( a_, 2 ) - DEFAULT a_[ 1 ] TO "" - DEFAULT a_[ 2 ] TO "" - a_[ 1 ] := alltrim( a_[ 1 ] ) - a_[ 2 ] := alltrim( a_[ 2 ] ) - - RETURN a_ - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_parseThemeComponent( cComponent ) - LOCAL i, a_, n - - a_:= hb_aTokens( cComponent, "," ) - - aSize( a_, 6 ) - DEFAULT a_[ 1 ] TO "" - DEFAULT a_[ 2 ] TO "" - DEFAULT a_[ 3 ] TO "" - DEFAULT a_[ 4 ] TO "" - DEFAULT a_[ 5 ] TO "" - DEFAULT a_[ 6 ] TO "" - a_[ 1 ] := alltrim( a_[ 1 ] ) - a_[ 2 ] := alltrim( a_[ 2 ] ) - a_[ 3 ] := alltrim( a_[ 3 ] ) - a_[ 4 ] := alltrim( a_[ 4 ] ) - a_[ 5 ] := alltrim( a_[ 5 ] ) - a_[ 6 ] := alltrim( a_[ 6 ] ) - - FOR i := 2 TO 6 - IF !empty( a_[ i ] ) - a_[ i ] := hb_aTokens( a_[ i ], " " ) - FOR EACH n IN a_[ i ] - n := val( n ) - NEXT - ELSE - a_[ i ] := {} - ENDIF - NEXT - - RETURN a_ - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_SetWrkFolderLast( cPathFile ) - LOCAL cPth, cOldPath - - STATIC cPath - IF empty( cPath ) - cPath := hb_dirBase() - ENDIF - cOldPath := cPath - - IF HB_ISSTRING( cPathFile ) - hb_fNameSplit( cPathFile, @cPth ) - cPath := cPth - ENDIF - RETURN cOldPath - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_getUI( cUI, qParent ) - - IF hbide_setIde():nModeUI == UI_MODE_FUNC - SWITCH Lower( cUI ) - CASE "findinfilesex" ; RETURN hbqtui_Findinfilesex( qParent ) - CASE "updown" ; RETURN hbqtui_UpDown( qParent ) - CASE "updown_v" ; RETURN hbqtui_UpDown_v( qParent ) - CASE "searchreplace" ; RETURN hbqtui_SearchReplace( qParent ) - CASE "finddialog" ; RETURN hbqtui_FindDialog( qParent ) - CASE "environments" ; RETURN hbqtui_Environments( qParent ) - CASE "environ" ; RETURN hbqtui_Environ( qParent ) - CASE "shortcuts" ; RETURN hbqtui_Shortcuts( qParent ) - CASE "docwriter" ; RETURN hbqtui_Docwriter( qParent ) - CASE "toolsutilities" ; RETURN hbqtui_Toolsutilities( qParent ) - CASE "funclist" ; RETURN hbqtui_Funclist( qParent ) - CASE "docviewgenerator" ; RETURN hbqtui_Docviewgenerator( qParent ) - CASE "selectproject" ; RETURN hbqtui_Selectproject( qParent ) - CASE "projectpropertiesex" ; RETURN hbqtui_Projectpropertiesex( qParent ) - CASE "selectionlist" ; RETURN hbqtui_Selectionlist( qParent ) - CASE "themesex" ; RETURN hbqtui_Themesex( qParent ) - CASE "setup" ; RETURN hbqtui_Setup( qParent ) - CASE "mainwindow" ; RETURN hbqtui_Mainwindow( qParent ) - CASE "skeletons" ; RETURN hbqtui_Skeletons( qParent ) - CASE "editor" ; RETURN hbqtui_Editor( qParent ) - CASE "fetchdate" ; RETURN hbqtui_FetchDate( qParent ) - CASE "format" ; RETURN hbqtui_Format( qParent ) - CASE "changelog" ; RETURN hbqtui_Changelog( qParent ) - ENDSWITCH - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ -/* An interface component function which will be called by Reports Manager - whenever a request is made. Application will supply the required info - in this case it is hbIDE. */ - -FUNCTION app_image( cName ) - RETURN hbide_image( cName ) - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_isCompilerSource( cSource, cIncList ) - LOCAL cExt, aExt - - DEFAULT cIncList TO ".c,.cpp,.prg,.hb,.rc,.res,.hbm,.hbc,.qrc,.ui,.hbp" - - cIncList := lower( cIncList ) - aExt := hb_aTokens( lower( cIncList ), "," ) - - cExt := lower( hb_FNameExt( cSource ) ) - - RETURN ascan( aExt, {|e| cExt == e } ) > 0 - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_prepareSourceForHbp( cSource ) - - IF ! empty( cSource ) .AND. !( left( cSource,1 ) $ "-#" ) .AND. ! lower( left( cSource, 5 ) ) == "-3rd=" - IF ! hbide_isCompilerSource( cSource ) - RETURN "-3rd=hbide_file=" + cSource - ENDIF - ENDIF - - RETURN cSource - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_synchronizeForHbp( aHbp ) - LOCAL s - LOCAL txt_:={} - - FOR EACH s IN aHbp - aadd( txt_, hbide_prepareSourceForHbp( s ) ) - NEXT - - RETURN txt_ - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_setClose( lYes ) - LOCAL yes - STATIC sYes := .f. - yes := sYes - IF HB_ISLOGICAL( lYes ) - sYes := lYes - ENDIF - RETURN yes - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_setAdsAvailable( lYes ) - LOCAL yes - STATIC sYes := .f. - yes := sYes - IF HB_ISLOGICAL( lYes ) - sYes := lYes - ENDIF - RETURN yes - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_getHbxFunctions( cBuffer ) - LOCAL pRegex - LOCAL tmp - LOCAL aDynamic := {} - - IF ! Empty( cBuffer ) .AND. ; - ! Empty( pRegex := hb_regexComp( "^DYNAMIC ([a-zA-Z0-9_]*)$", .T., .T. ) ) - FOR EACH tmp IN hb_regexAll( pRegex, StrTran( cBuffer, Chr( 13 ) ),,,,, .T. ) - AAdd( aDynamic, tmp[ 2 ] ) - NEXT - ENDIF - - RETURN aDynamic - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_identifierImage( cIdentifier ) - LOCAL cImage - - cIdentifier := Upper( cIdentifier ) - cImage := iif( "CLAS" $ cIdentifier, "dc_class", iif( "METH" $ cIdentifier, "dc_method", iif( "PROC" $ cIdentifier, "dc_procedure", "dc_function" ) ) ) - - RETURN hbide_image( cImage ) - -/*----------------------------------------------------------------------*/ - diff --git a/harbour/contrib/hbide/object.prg b/harbour/contrib/hbide/object.prg deleted file mode 100644 index a0281cf2aa..0000000000 --- a/harbour/contrib/hbide/object.prg +++ /dev/null @@ -1,250 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 03Jan2010 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbide.ch" -#include "common.ch" -#include "hbclass.ch" - -/*----------------------------------------------------------------------*/ - -CLASS IdeObject - - DATA xD - DATA xD1 - DATA xD2 - - DATA oIde - DATA oUI - DATA qContextMenu - - ACCESS oFR INLINE ::oIde:oFR - ACCESS oBM INLINE ::oIde:oBM - ACCESS oEM INLINE ::oIde:oEM - ACCESS oPM INLINE ::oIde:oPM - ACCESS oDK INLINE ::oIde:oDK - ACCESS oAC INLINE ::oIde:oAC - ACCESS oSM INLINE ::oIde:oSM - ACCESS oEV INLINE ::oIde:oEV - ACCESS oHL INLINE ::oIde:oHL - ACCESS oHM INLINE ::oIde:oHM - ACCESS oFN INLINE ::oIde:oFN - ACCESS oDW INLINE ::oIde:oDW - ACCESS oSK INLINE ::oIde:oSK - ACCESS oSC INLINE ::oIde:oSC - ACCESS oTM INLINE ::oIde:oTM - ACCESS oTH INLINE ::oIde:oTH - ACCESS oFF INLINE ::oIde:oFF - ACCESS oRM INLINE ::oIde:oRM - ACCESS oSetup INLINE ::oIde:oSetup - ACCESS oINI INLINE ::oIde:oINI - ACCESS oFmt INLINE ::oIde:oFmt - ACCESS oCL INLINE ::oIde:oCL - ACCESS oCUI INLINE ::oIde:oCUI - ACCESS oUiS INLINE ::oIde:oUiS - ACCESS oPWZ INLINE ::oIde:oPWZ - ACCESS oParts INLINE ::oIde:oParts - - ACCESS aMeta INLINE ::oIde:aMeta - ACCESS aTags INLINE ::oIde:aTags - - ACCESS oFont INLINE ::oIde:oFont - ACCESS oSBar INLINE ::oIde:oSBar - ACCESS oDlg INLINE ::oIde:oDlg - ACCESS oDA INLINE ::oIde:oDA - - ACCESS qLayout INLINE ::oIde:qLayout - ACCESS qCurEdit INLINE ::oIde:qCurEdit - ACCESS qCurDocument INLINE ::oIde:qCurDocument - ACCESS oCurEditor INLINE ::oIde:oCurEditor - ACCESS qTabWidget INLINE ::oIde:qTabWidget - ACCESS oTabParent INLINE ::oIde:oTabParent - ACCESS qBrushWrkProject INLINE ::oIde:qBrushWrkProject - ACCESS qViewsCombo INLINE ::oIde:qViewsCombo - ACCESS qHelpBrw INLINE ::oIde:qHelpBrw - ACCESS qAnimateAction INLINE ::oIde:qAnimateAction - ACCESS qStatusBarAction INLINE ::oIde:qStatusBarAction - - ACCESS qTBarLines INLINE ::oIde:qTBarLines - ACCESS qTBarPanels INLINE ::oIde:qTBarPanels - ACCESS qCompleter INLINE ::oIde:qCompleter - ACCESS qCompModel INLINE ::oIde:qCompModel - ACCESS qProtoList INLINE ::oIde:qProtoList - - ACCESS cWrkProject INLINE ::oIde:cWrkProject - ACCESS cWrkTheme INLINE ::oIde:cWrkTheme - ACCESS cWrkCodec INLINE ::oIde:cWrkCodec - ACCESS cWrkPathMk2 INLINE ::oIde:cWrkPathMk2 - ACCESS cWrkPathEnv INLINE ::oIde:cWrkPathEnv - ACCESS cWrkEnvironment INLINE ::oIde:cWrkEnvironment - ACCESS cWrkFind INLINE ::oIde:cWrkFind - ACCESS cWrkFolderFind INLINE ::oIde:cWrkFolderFind - ACCESS cWrkReplace INLINE ::oIde:cWrkReplace - ACCESS cWrkView INLINE ::oIde:cWrkView - ACCESS cWrkHarbour INLINE ::oIde:cWrkHarbour - ACCESS cPathShortcuts INLINE ::oIde:cPathShortcuts - ACCESS cTextExtensions INLINE ::oIde:cTextExtensions - ACCESS cWrkFolderLast INLINE ::oIde:cWrkFolderLast - // - ACCESS resPath INLINE ::oIde:resPath - ACCESS pathSep INLINE ::oIde:pathSep - ACCESS cLastFileOpenPath INLINE ::oIde:cLastFileOpenPath - ACCESS nAnimantionMode INLINE ::oIde:nAnimantionMode - ACCESS nModeUI INLINE ::oIde:nModeUI - - ACCESS aProjects INLINE ::oIde:aProjects - ACCESS aSources INLINE ::oIde:aSources - ACCESS aEditorPath INLINE ::oIde:aEditorPath - ACCESS aProjData INLINE ::oIde:aProjData - ACCESS aTabs INLINE ::oIde:aTabs - ACCESS aViews INLINE ::oIde:aViews - ACCESS aSkltns INLINE ::oIde:aSkltns - ACCESS aUserDict INLINE ::oIde:aUserDict - - ACCESS nTabSpaces INLINE ::oIde:nTabSpaces - ACCESS cTabSpaces INLINE ::oIde:cTabSpaces - ACCESS cSeparator INLINE ::oIde:cSeparator - ACCESS cPathSkltns INLINE ::oIde:cPathSkltns - - ACCESS oDockPT INLINE ::oIde:oDockPT - ACCESS oProjTree INLINE ::oIde:oProjTree - ACCESS oProjRoot INLINE ::oIde:oProjRoot - ACCESS oDockED INLINE ::oIde:oDockED - ACCESS oEditTree INLINE ::oIde:oEditTree - ACCESS oOpenedSources INLINE ::oIde:oOpenedSources - ACCESS oFuncDock INLINE ::oIde:oFuncDock - ACCESS oFuncList INLINE ::oIde:oFuncList - ACCESS oDockB INLINE ::oIde:oDockB - ACCESS oCompileResult INLINE ::oIde:oCompileResult - ACCESS oDockB1 INLINE ::oIde:oDockB1 - ACCESS oLinkResult INLINE ::oIde:oLinkResult - ACCESS oDockB2 INLINE ::oIde:oDockB2 - ACCESS oOutputResult INLINE ::oIde:oOutputResult - ACCESS oStackedWidget INLINE ::oIde:oStackedWidget - ACCESS oStackedWidgetMisc INLINE ::oIde:oStackedWidgetMisc - ACCESS oFrame INLINE ::oIde:oFrame - ACCESS oHelpDock INLINE ::oIde:oHelpDock - ACCESS oSkeltnDock INLINE ::oIde:oSkeltnDock - ACCESS oGeneral INLINE ::oIde:oGeneral - ACCESS oThemesDock INLINE ::oIde:oThemesDock - ACCESS oPropertiesDock INLINE ::oIde:oPropertiesDock - ACCESS oEnvironDock INLINE ::oIde:oEnvironDock - ACCESS oSearchReplace INLINE ::oIde:oSearchReplace - ACCESS oDocViewDock INLINE ::oIde:oDocViewDock - ACCESS oDocWriteDock INLINE ::oIde:oDocWriteDock - ACCESS oFunctionsDock INLINE ::oIde:oFunctionsDock - ACCESS oSkltnsTreeDock INLINE ::oIde:oSkltnsTreeDock - ACCESS oFindDock INLINE ::oIde:oFindDock - ACCESS oSourceThumbnailDock INLINE ::oIde:oSourceThumbnailDock - ACCESS oQScintillaDock INLINE ::oIde:oQScintillaDock - ACCESS oMainToolbar INLINE ::oIde:oMainToolbar - ACCESS oUpDn INLINE ::oIde:oUpDn - ACCESS oReportsManagerDock INLINE ::oIde:oReportsManagerDock - ACCESS oFormatDock INLINE ::oIde:oFormatDock - ACCESS oSys INLINE ::oIde:oSys - ACCESS oSysMenu INLINE ::oIde:oSysMenu - ACCESS oCuiEdDock INLINE ::oIde:oCuiEdDock - ACCESS oUISrcDock INLINE ::oIde:oUISrcDock - - ACCESS lProjTreeVisible INLINE ::oIde:lProjTreeVisible - ACCESS lDockRVisible INLINE ::oIde:lDockRVisible - ACCESS lDockBVisible INLINE ::oIde:lDockBVisible - ACCESS lTabCloseRequested INLINE ::oIde:lTabCloseRequested - ACCESS isColumnSelectionEnabled INLINE ::oIde:isColumnSelectionEnabled - ACCESS lLineNumbersVisible INLINE ::oIde:lLineNumbersVisible - ACCESS lHorzRulerVisible INLINE ::oIde:lHorzRulerVisible - ACCESS lStatusBarVisible INLINE ::oIde:lStatusBarVisible - ACCESS lCurrentLineHighlightEnabled INLINE ::oIde:lCurrentLineHighlightEnabled - - ACCESS aMarkTBtns INLINE ::oIde:aMarkTBtns - ACCESS lQuitting INLINE ::oIde:lQuitting - - DATA aSlots INIT {} - DATA aEvents INIT {} - - METHOD createTags( ... ) INLINE ::oIde:createTags( ... ) - METHOD addSourceInTree( ... ) INLINE ::oIde:addSourceInTree( ... ) - METHOD setPosAndSizeByIni( ... ) INLINE ::oIde:setPosAndSizeByIni( ... ) - METHOD setPosByIni( ... ) INLINE ::oIde:setPosByIni( ... ) - METHOD setSizeByIni( ... ) INLINE ::oIde:setSizeByIni( ... ) - METHOD execAction( ... ) INLINE ::oIde:execAction( ... ) - METHOD manageFuncContext( ... ) INLINE ::oIde:manageFuncContext( ... ) - METHOD manageProjectContext( ... ) INLINE ::oIde:manageProjectContext( ... ) - METHOD updateFuncList( ... ) INLINE ::oIde:updateFuncList( ... ) - METHOD gotoFunction( ... ) INLINE ::oIde:gotoFunction( ... ) - METHOD updateProjectMenu( ... ) INLINE ::oIde:updateProjectMenu( ... ) - METHOD updateProjectTree( ... ) INLINE ::oIde:updateProjectTree( ... ) - METHOD manageItemSelected( ... ) INLINE ::oIde:manageItemSelected( ... ) - METHOD manageFocusInEditor( ... ) INLINE ::oIde:manageFocusInEditor( ... ) - METHOD setCodec( ... ) INLINE ::oIde:setCodec( ... ) - METHOD updateTitleBar( ... ) INLINE ::oIde:updateTitleBar( ... ) - METHOD showApplicationCursor( ... ) INLINE ::oIde:showApplicationCursor( ... ) - - METHOD editSource( ... ) INLINE ::oSM:editSource( ... ) - METHOD getEditorByIndex( ... ) INLINE ::oSM:getEditorByIndex( ... ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/panels.ui b/harbour/contrib/hbide/panels.ui deleted file mode 100644 index d6165e1fa0..0000000000 --- a/harbour/contrib/hbide/panels.ui +++ /dev/null @@ -1,194 +0,0 @@ - - - Dialog - - - - 0 - 0 - 217 - 410 - - - - - 217 - 346 - - - - - 217 - 410 - - - - Manage Panels - - - - - 16 - 12 - 69 - 16 - - - - Create New: - - - - - - 92 - 16 - 105 - 20 - - - - - - - 92 - 52 - 105 - 192 - - - - <html><head/><body><p>Drag, position and drop panels the way you want them to appear.</p></body></html> - - - - - - 16 - 48 - 46 - 13 - - - - Reorder: - - - - - - 16 - 256 - 69 - 16 - - - - Tabs Position: - - - - - - 92 - 260 - 105 - 22 - - - - - - - 16 - 376 - 75 - 23 - - - - OK - - - false - - - - - - 124 - 376 - 75 - 23 - - - - Cancel - - - false - - - - - - 16 - 360 - 181 - 16 - - - - Qt::Horizontal - - - - - - 16 - 292 - 65 - 16 - - - - Tabs Shape: - - - - - - 92 - 296 - 105 - 22 - - - - - - - 16 - 328 - 69 - 16 - - - - Delete Panel: - - - - - - 92 - 332 - 105 - 22 - - - - - - - diff --git a/harbour/contrib/hbide/parseexpr.c b/harbour/contrib/hbide/parseexpr.c deleted file mode 100644 index 4306562163..0000000000 --- a/harbour/contrib/hbide/parseexpr.c +++ /dev/null @@ -1,340 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009 Andy Wos - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Code Forwarded by Andy Wos - * - * Pritpal Bedi - * 22Nov2009 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbapi.h" -#include "hbapiitm.h" - -/*----------------------------------------------------------------------*/ - -static HB_ISIZ ide_linearfind( const char ** array, const char * pszText, HB_ISIZ lenarray, HB_ISIZ lentext, HB_BOOL bMatchCase ) -{ - HB_ISIZ i; - - if( bMatchCase ) - { - for( i = 0; i < lenarray; i++ ) - { - if( strncmp( pszText, array[ i ], lentext + 1 ) == 0 ) - return i + 1; - } - } - else - { - for( i = 0; i < lenarray; i++ ) - { - if( hb_strnicmp( pszText, array[ i ], lentext + 1 ) == 0 ) - return i + 1; - } - } - return 0; -} - -/*----------------------------------------------------------------------*/ - -static HB_BOOL ide_strempty( const char * pszString ) -{ - HB_ISIZ i = 0; - - while( pszString[ i ] != 0 ) - { - if( pszString[ i++ ] != ' ' ) - return HB_FALSE; - } - - return HB_TRUE; -} - -/*----------------------------------------------------------------------*/ - -static HB_ISIZ ide_atbuff( const char * pszChars, const char * pszString, HB_ISIZ StartFrom, HB_ISIZ Target, HB_ISIZ len_chars, HB_ISIZ len ) -{ - if( len >= len_chars && StartFrom <= len - len_chars ) - { - HB_ISIZ x; - HB_ISIZ counter = 0; - - for( x = StartFrom; x <= ( len - len_chars ); x++ ) - { - if( strncmp( pszString + x, pszChars, len_chars ) == 0 ) - { - if( ++counter == Target ) - return x + 1; - } - } - } - return 0; -} - -/*----------------------------------------------------------------------*/ - -static HB_ISIZ ide_getword( const char * pszText, HB_BOOL bHonorSpacing, char * pszWord, HB_ISIZ * pnpos ) -{ - static const char s_szGood[] = "''_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890."; - static const char * s_szDoubleList[] = { "*/", "/*", "//", "->", "::", "||", "++", "--", "**", ":=", - "<=", ">=", "<>", "!=", "==", "+=", "-=", "*=", "/=", "%=", - "^=", "&&", "^^", ">>", "<<", "=>", "&=", "|=" }; - - static HB_ISIZ s_lengood = HB_SIZEOFARRAY( s_szGood ) - 1; - static HB_ISIZ s_lendouble = HB_SIZEOFARRAY( s_szDoubleList ); - - HB_ISIZ maxlen = strlen( pszText ); - HB_ISIZ npos = 0; - HB_ISIZ wordlen = 0; - - if( maxlen > 0 ) - { - char temp; - char ch; - char szSingle[ 2 ]; - char szDouble[ 3 ]; - - szSingle[ 1 ] = '\0'; - szDouble[ 2 ] = '\0'; - - ch = pszText[ 0 ]; - - if( ch == ',' ) /* lists */ - { - pszWord[ wordlen++ ] = ch; - npos++; - } - else /* literals */ - { - if( ch == '"' || ch == '\'' ) - { - temp = ch; - pszWord[ wordlen++ ] = ch; - npos++; - ch = ' '; - while( npos < maxlen && ch != temp ) - { - ch = pszText[ npos ]; - pszWord[ wordlen++ ] = ch; - npos++; - } - } - else - { - szSingle[ 0 ] = ch; - if( ide_atbuff( szSingle, s_szGood, 0, 1, 1, s_lengood ) ) /* ch $ s_szGood ) // variables, commands, function names */ - { - while( npos < maxlen && ide_atbuff( szSingle, s_szGood, 0, 1, 1, s_lengood ) ) - { - pszWord[ wordlen++ ] = ch; - npos++; - ch = pszText[ npos ]; - szSingle[ 0 ] = ch; - } - } - else if( ch == ' ' ) - { - while( npos < maxlen && ch == ' ' ) - { - pszWord[ wordlen++ ] = ch; - npos++; - ch = pszText[ npos ]; - } - - if( ! bHonorSpacing ) - { - pszWord[ 0 ] = ' '; /* reduce spaces to 1 */ - wordlen = 1; - } - } - else /* operators, punctuation */ - { - pszWord[ wordlen++ ]= ch; - npos++; - ch = pszText[ npos ]; - if( maxlen > npos ) - { - szDouble[ 0 ] = pszWord[ 0 ]; - szDouble[ 1 ] = ch; - if( ide_linearfind( s_szDoubleList, szDouble, s_lendouble, 2, HB_TRUE ) ) /* if( (pszWord + ch) $ s_szDoubleList) //aScan( s_szDoubleList, pszWord + ch ) > 0 */ - { - pszWord[ wordlen++ ] = ch; - npos++; - } - } - } - } - } - } - - pszWord[ wordlen ] = '\0'; - *pnpos = npos; - - return wordlen; -} - -/*----------------------------------------------------------------------*/ - -HB_FUNC( PARSEXPR ) /* ( c, bHonorSpacing, bInRemark, bUpperKeyWord, bKeepComments, bPRG, bKeepSpaces ) */ -{ - const char * pszExpr = hb_parcx( 1 ); - - PHB_ITEM paExpr = hb_itemArrayNew( 0 ); - PHB_ITEM pTemp = hb_itemNew( NULL ); - - HB_BOOL bHonorSpacing = hb_parl( 2 ); - HB_BOOL bInRemark = hb_parl( 3 ); - HB_BOOL bKeepComments = hb_parldef( 5, 1 ); - HB_BOOL bPRG = hb_parldef( 6, 1 ); - HB_BOOL bKeepSpaces = hb_parldef( 7, 1 ); - HB_BOOL bFirst = HB_TRUE; - HB_ISIZ lenprocessed = 0; - HB_ISIZ lenwords = 0; - HB_ISIZ wordlen; - HB_ISIZ npos; - - char szNextWord[ 2048 ]; - - szNextWord[ 0 ] = '\0'; - - while( ( wordlen = ide_getword( pszExpr, bHonorSpacing, szNextWord, &lenprocessed ) ) != 0 ) - { - pszExpr += lenprocessed; - - if( strncmp( szNextWord, "*/", 3 ) == 0 ) /* remark end */ - { - if( bKeepComments ) - { - lenwords++; - hb_arrayAdd( paExpr, hb_itemPutC( pTemp, szNextWord ) ); - } - bInRemark = HB_FALSE; - } - else if( ( strncmp( szNextWord, "/*", 3 ) == 0 ) || bInRemark ) /* remark start */ - { - bInRemark = ( ( npos = ide_atbuff( "*/", pszExpr, 0, 1, 2, strlen( pszExpr ) ) ) == 0 ); - - if( bInRemark ) - { - if( bKeepComments ) - { - hb_strncat( szNextWord, pszExpr, sizeof( szNextWord ) - 1 ); - lenwords++; - hb_arrayAdd( paExpr, hb_itemPutC( pTemp, szNextWord ) ); - } - break; - } - else - { - if( bKeepComments ) - { - hb_strncpy( szNextWord + wordlen, pszExpr, sizeof( szNextWord ) - 1 - wordlen ); - lenwords++; - hb_arrayAdd( paExpr, hb_itemPutC( pTemp, szNextWord ) ); - } - pszExpr += npos + 1; - } - } - else if( strncmp( szNextWord, "//", 3 ) == 0 || ( bPRG && strncmp( szNextWord, "&&", 3 ) == 0 ) ) /* inline remark */ - { - if( bKeepComments ) - { - hb_strncat( szNextWord, pszExpr, sizeof( szNextWord ) - 1 ); - lenwords++; - hb_arrayAdd( paExpr, hb_itemPutC( pTemp, szNextWord ) ); - } - break; - } - else if( strncmp( szNextWord, "**", 3 ) == 0 && bFirst && bPRG ) - { - if( bKeepComments ) - { - hb_strncat( szNextWord, pszExpr, sizeof( szNextWord ) - 1 ); - lenwords++; - hb_arrayAdd( paExpr, hb_itemPutC( pTemp, szNextWord ) ); - } - break; - } - else - { - if( bKeepSpaces || ! ide_strempty( szNextWord ) ) - { - lenwords++; - hb_arrayAdd( paExpr, hb_itemPutC( pTemp, szNextWord ) ); - } - } - - if( ! ide_strempty( szNextWord ) ) - bFirst = HB_FALSE; - } - - if( ! bKeepComments && !( lenwords > 0 ) && hb_arrayGetCPtr( paExpr, lenwords ) ) - hb_arraySize( paExpr, lenwords ); - - hb_storl( bInRemark, 3 ); - - hb_itemRelease( pTemp ); - hb_itemReturnRelease( paExpr ); -} - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/parts.prg b/harbour/contrib/hbide/parts.prg deleted file mode 100644 index 1849a31945..0000000000 --- a/harbour/contrib/hbide/parts.prg +++ /dev/null @@ -1,230 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2012 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 31Aug2012 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "common.ch" -#include "hbclass.ch" -#include "hbqtgui.ch" -#include "hbide.ch" - -/*----------------------------------------------------------------------*/ - -CLASS IdeParts INHERIT IdeObject - - DATA oIde - DATA nCurStacksIndex INIT IDE_PART_EDITOR - - DATA oLayoutDA - DATA oLayoutEditor - DATA oLayoutDbu - DATA oLayoutReports - - DATA oStackWidget - - DATA oStackEditor - DATA oStackDbu - DATA oStackReports - - DATA oSettings - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() VIRTUAL - - METHOD buildParts() - METHOD buildLayout( nLayout ) - - METHOD setStack( nIndex ) INLINE ::oStackWidget:setCurrentIndex( nIndex ) - - METHOD execStackIndexChanged( nIndex ) - METHOD addWidget( nPart, oWidget, nFromRow, nFromColumn, nRowSpan, nColumnSpan ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeParts:new( oIde ) - - DEFAULT oIde TO ::oIde - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeParts:create( oIde ) - - DEFAULT oIde TO ::oIde - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeParts:buildLayout( nLayout ) - LOCAL oLayout - - SWITCH nLayout - CASE 0 - oLayout := QGridLayout() - oLayout:setContentsMargins( 0,0,0,0 ) - oLayout:setHorizontalSpacing( 0 ) - oLayout:setVerticalSpacing( 0 ) - EXIT - CASE 1 /* QHBoxLayout */ - EXIT - CASE 2 /* QVBoxLayout */ - EXIT - ENDSWITCH - - RETURN oLayout - -/*----------------------------------------------------------------------*/ - -METHOD IdeParts:buildParts() - - ::oLayoutDA := ::buildLayout( 0 ) - ::oLayoutDbu := ::buildLayout( 0 ) - ::oLayoutEditor := ::buildLayout( 0 ) - ::oLayoutReports := ::buildLayout( 0 ) - - ::oDa:setLayout( ::oLayoutDA ) - - ::oStackWidget := QStackedWidget( ::oDa:oWidget ) - // - ::oStackEditor := QWidget( ::oStackWidget ) - ::oStackDbu := QWidget( ::oStackWidget ) - ::oStackReports := QWidget( ::oStackWidget ) - // - ::oStackWidget:addWidget( ::oStackEditor ) - ::oStackWidget:addWidget( ::oStackDbu ) - ::oStackWidget:addWidget( ::oStackReports ) - - ::oStackEditor :setLayout( ::oLayoutEditor ) - ::oStackDbu :setLayout( ::oLayoutDbu ) - ::oStackReports:setLayout( ::oLayoutReports ) - - ::oLayoutDA:addWidget( ::oStackWidget, 0, 0, 1, 1 ) - - ::oStackWidget:setCurrentIndex( 0 ) - ::oStackWidget:connect( "currentChanged(int)", {|i| ::execStackIndexChanged( i ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeParts:execStackIndexChanged( nIndex ) - - IF ! Empty( ::oSettings ) - ::oDlg:oWidget:restoreState( ::oSettings ) - ENDIF - ::oSettings := ::oDlg:oWidget:saveState() - - SWITCH nIndex - - CASE IDE_PART_EDITOR - ::oIde:oSBar:show() - EXIT - - CASE IDE_PART_DBU - ::oIde:oSBar:hide() - ::oDK:hideAllDocks() - EXIT - - CASE IDE_PART_REPORTSDESIGNER - ::oIde:oSBar:hide() - ::oDK:hideAllDocks() - EXIT - - ENDSWITCH - - ::nCurStacksIndex := nIndex - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeParts:addWidget( nPart, oWidget, nFromRow, nFromColumn, nRowSpan, nColumnSpan ) - - SWITCH nPart - - CASE IDE_PART_EDITOR - ::oLayoutEditor:addWidget( oWidget, nFromRow, nFromColumn, nRowSpan, nColumnSpan ) - EXIT - - CASE IDE_PART_DBU - ::oLayoutDbu:addWidget( oWidget, nFromRow, nFromColumn, nRowSpan, nColumnSpan ) - EXIT - - CASE IDE_PART_REPORTSDESIGNER - ::oLayoutReports:addWidget( oWidget, nFromRow, nFromColumn, nRowSpan, nColumnSpan ) - EXIT - - ENDSWITCH - - RETURN Self - -/*----------------------------------------------------------------------*/ - diff --git a/harbour/contrib/hbide/plugins.prg b/harbour/contrib/hbide/plugins.prg deleted file mode 100644 index 45576ed11d..0000000000 --- a/harbour/contrib/hbide/plugins.prg +++ /dev/null @@ -1,328 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 08May2010 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "common.ch" -#include "hbclass.ch" -#include "inkey.ch" -#include "hbide.ch" -#include "hbhrb.ch" - -/*----------------------------------------------------------------------*/ - -STATIC s_aPlugins := { { "", NIL } } -STATIC s_aLoaded := { { "", .f. } } -STATIC s_aPersist := {} - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_loadPlugins( oIde, cVer ) - LOCAL a_, cPlugin - - FOR EACH a_ IN oIde:oINI:aTools - IF a_[ 12 ] == "YES" - hb_fNameSplit( a_[ 11 ], , @cPlugin ) - - RETURN hbide_loadAPlugin( cPlugin, oIde, cVer ) - ENDIF - NEXT - - RETURN .f. - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_execPlugin( cPlugin, oIde, ... ) - LOCAL n, lLoaded - - cPlugin := lower( cPlugin ) - - IF ( n := ascan( s_aLoaded, {|e_| e_[ 1 ] == cPlugin } ) ) == 0 - lLoaded := hbide_loadAPlugin( cPlugin, oIde, "1.0" ) - ELSE - lLoaded := s_aLoaded[ n,2 ] - ENDIF - IF lLoaded - IF ( n := ascan( s_aPlugins, {|e_| e_[ 1 ] == cPlugin } ) ) > 0 - RETURN eval( s_aPlugins[ n, 2 ], oIde, ... ) - ENDIF - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_loadAPlugin( cPlugin, oIde, cVer ) - LOCAL pHrb, bBlock, lLoaded, cFileName, cFile, cPath - - IF !empty( cPath := oIde:oINI:getResourcesPath() ) - - cFileName := cPath + "hbide_plugin_" + cPlugin + ".hrb" - IF hb_fileExists( cFileName ) - pHrb := hb_hrbLoad( HB_HRB_BIND_OVERLOAD, cFileName ) - ELSE - cFileName := cPath + "hbide_plugin_" + cPlugin + ".prg" - IF hb_fileExists( cFileName ) - cFile := hb_memoread( cFileName ) - cFile := hb_compileFromBuf( cFile, "-n2", "-w3", "-es2", "-q0" ) - IF ! Empty( cFile ) - pHrb := hb_hrbLoad( HB_HRB_BIND_OVERLOAD, cFile ) - ENDIF - ELSE - cFileName := cPath + "hbide_plugin_" + cPlugin + ".hb" - IF hb_fileExists( cFileName ) - cFile := hb_memoread( cFileName ) - cFile := hb_compileFromBuf( cFile, "-n2", "-w3", "-es2", "-q0" ) - IF ! Empty( cFile ) - pHrb := hb_hrbLoad( HB_HRB_BIND_OVERLOAD, cFile ) - ENDIF - ENDIF - ENDIF - ENDIF - - IF ( lLoaded := ! empty( pHrb ) ) - IF ! Empty( hb_hrbGetFunSym( pHrb, cPlugin + "_init" ) ) - bBlock := &( "{|...| " + cPlugin + "_init(...) }" ) - - IF eval( bBlock, oIde, cVer ) - IF ! Empty( hb_hrbGetFunSym( pHrb, cPlugin + "_exec" ) ) - aadd( s_aPlugins, { cPlugin, &( "{|...| " + cPlugin + "_exec(...) }" ), pHrb } ) - lLoaded := .t. - - ENDIF - ENDIF - ENDIF - ENDIF - ENDIF - - aadd( s_aLoaded, { cPlugin, lLoaded } ) - - RETURN lLoaded - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_runAScript( cBuffer, cCompFlags, xParam ) - LOCAL cFile, pHrb, oErr - LOCAL lError := .f. - LOCAL bError := ErrorBlock( {|o| break( o ) } ) - - BEGIN SEQUENCE - cFile := hb_compileFromBuf( cBuffer, cCompFlags ) - IF ! Empty( cFile ) - pHrb := hb_hrbLoad( HB_HRB_BIND_FORCELOCAL, cFile ) - ENDIF - RECOVER USING oErr - MsgBox( oErr:description ) - lError := .t. - END SEQUENCE - - IF ! lError .AND. !empty( pHrb ) - BEGIN SEQUENCE - hb_hrbDo( pHrb, xParam ) - RECOVER USING oErr - MsgBox( oErr:description, "Error running script" ) - END SEQUENCE - ENDIF - - ErrorBlock( bError ) - RETURN NIL - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_execAutoScripts() - LOCAL cPath, a_, dir_, cFileName, cBuffer - - IF !empty( cPath := hbide_setIde():oINI:getResourcesPath() ) - a_:= {} - dir_:= directory( cPath + "hbide_auto_*.prg" ) - aeval( dir_, {|e_| aadd( a_, e_[ 1 ] ) } ) - dir_:= directory( cPath + "hbide_auto_*.hb" ) - aeval( dir_, {|e_| aadd( a_, e_[ 1 ] ) } ) - - FOR EACH cFileName IN a_ - IF !empty( cBuffer := hb_memoRead( cPath + cFileName ) ) - hbide_runAScript( cBuffer, /* No Compiler Flag */, hbide_setIde() ) - ENDIF - NEXT - ENDIF - RETURN NIL - -/*------------------------------------------------------------------------*/ - -FUNCTION hbide_getUserPrototypes() - LOCAL aProto := {} - LOCAL cPath, aDir, cMask, a_, b_ - - IF ! empty( cPath := hbide_setIde():oINI:getResourcesPath() ) - cMask := cPath + "hbide_protos_*" - IF ! empty( aDir := directory( cMask ) ) - FOR EACH a_ IN aDir - b_:= hbide_loadProtoTypes( cPath + a_[ 1 ] ) - aeval( b_, {|e| aadd( aProto, e ) } ) - NEXT - ENDIF - ENDIF - - RETURN aProto - -/*------------------------------------------------------------------------*/ - -FUNCTION hbide_loadPrototypes( cPath ) - LOCAL a_, s, nLen, i - LOCAL aProto := {}, b_:={} - - IF hb_fileExists( cPath ) - a_:= hbide_readSource( cPath ) - - FOR EACH s IN a_ - s := alltrim( s ) - IF empty( s ) - LOOP - ENDIF - aadd( b_, s ) - NEXT - ENDIF - - nLen := Len( b_ ) - FOR EACH s IN b_ - i := s:__enumIndex() - IF right( s, 1 ) == ";" - s := substr( s, 1, Len( s ) - 1 ) - IF i < nLen - b_[ i + 1 ] := s + " " + b_[ i + 1 ] - s := "" - ENDIF - ENDIF - NEXT - - FOR EACH s IN b_ - IF empty( s ) - LOOP - ENDIF - aadd( aProto, s ) - NEXT - - RETURN aProto - -/*------------------------------------------------------------------------*/ -/* Silent Mode */ - -FUNCTION hbide_compileAScript( cBuffer, cCompFlags ) - LOCAL cFile, pHrb - LOCAL bError := ErrorBlock( {|o| break( o ) } ) - - BEGIN SEQUENCE - cFile := hb_compileFromBuf( cBuffer, cCompFlags ) - IF ! Empty( cFile ) - pHrb := hb_hrbLoad( HB_HRB_BIND_OVERLOAD, cFile ) - ENDIF - END SEQUENCE - - ErrorBlock( bError ) - RETURN pHrb - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_loadPersistentScripts() - LOCAL cPath, a_, dir_, cFileName, cBuffer, pHrb - - IF !empty( cPath := hbide_setIde():oINI:getResourcesPath() ) - a_:= {} - dir_:= directory( cPath + "hbide_persist_*.prg" ) - aeval( dir_, {|e_| aadd( a_, e_[ 1 ] ) } ) - dir_:= directory( cPath + "hbide_persist_*.hb" ) - aeval( dir_, {|e_| aadd( a_, e_[ 1 ] ) } ) - - FOR EACH cFileName IN a_ - IF !empty( cBuffer := hb_memoRead( cPath + cFileName ) ) - IF !empty( pHrb := hbide_compileAScript( cBuffer ) ) - aadd( s_aPersist, pHrb ) - ENDIF - ENDIF - NEXT - ENDIF - - RETURN NIL - -/*------------------------------------------------------------------------*/ - -FUNCTION hbide_execScriptFunction( cFunc, ... ) - - IF hb_IsFunction( "script_" + cFunc ) - RETURN eval( &( "{|...| " + "script_" + cFunc + "( ... )" + "}" ), ... ) - ENDIF - - RETURN .F. - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_destroyPlugins() - - s_aPlugins := NIL - s_aLoaded := NIL - s_aPersist := NIL - - RETURN NIL - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/plugins/hbide_plugin_savebackup.hb b/harbour/contrib/hbide/plugins/hbide_plugin_savebackup.hb deleted file mode 100644 index 6f136cad05..0000000000 --- a/harbour/contrib/hbide/plugins/hbide_plugin_savebackup.hb +++ /dev/null @@ -1,94 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * hbide plugin. - * - * Copyright 2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -/*----------------------------------------------------------------------*/ - -FUNCTION savebackup_init( oIde, cVer ) - - HB_SYMBOL_UNUSED( oIde ) - HB_SYMBOL_UNUSED( cVer ) - - IF cVer != "1.0" - RETURN .f. - ENDIF - - RETURN .t. - -/*----------------------------------------------------------------------*/ - -FUNCTION savebackup_exec( oIde, ... ) - LOCAL c - - FOR EACH c IN { ... } - IF lower( c ) == "saveas" - savebackup_saveAs( oIde ) - ENDIF - - NEXT - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION savebackup_saveAs( oIde ) - LOCAL cFile, oEdit - - oEdit := oIde:oEM:getEditorCurrent() - cFile := oEdit:sourceFile + "_bkp_" + strtran( dtoc( date() ), "/", "-" ) + "_" + strtran( time(), ":", "_" ) - cFile := hbide_pathToOSPath( cFile ) - - hb_memowrit( cFile, oIde:oEM:getEditObjectCurrent():qEdit:toPlainText() ) - - MsgBox( cFile, "Backup Saved" ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/plugins/hbide_script_qtgui.hb b/harbour/contrib/hbide/plugins/hbide_script_qtgui.hb deleted file mode 100644 index d1632197e3..0000000000 --- a/harbour/contrib/hbide/plugins/hbide_script_qtgui.hb +++ /dev/null @@ -1,115 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * hbide plugin. - * - * Copyright 2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -/*----------------------------------------------------------------------*/ - -FUNCTION Main( oIde ) - LOCAL nRet, cText, lOtherLib, cOpt - LOCAL qDlg, qLbl, qCheck, qEdit, qCombo, qBtnOk, qBtnCn - LOCAL pEvents := HBQT_EVENTS_NEW() - LOCAL pSlots := HBQT_SLOTS_NEW() - - IF ! hb_isObject( oIde ) - oIde := hbide_setIde() - ENDIF - - qDlg := QDialog( oIde:oDlg:oWidget ) - qdlg:resize( 300, 350 ) - - qLbl := QLabel( qDlg ) - qLbl:setText( "Harbour-Qt Gui Dialog as Script" ) - qLbl:move( 20,20 ) - - qCombo := QComboBox( qDlg ) - qCombo:move( 100, 100 ) - qCombo:resize( 130, 30 ) - qCombo:addItem( "Sky" ) - qCombo:addItem( "Is" ) - qCombo:addItem( "The Limit" ) - qCombo:setCurrentIndex( 0 ) - - qCheck := QCheckBox( qDlg ) - qCheck:move( 100, 150 ) - qCheck:setText( "Harbour is Preferred ?" ) - qCheck:setChecked( .t. ) - - qEdit := QLineEdit( qDlg ) - qEdit:move( 100, 180 ) - qEdit:resize( 130, 30 ) - qEdit:setText( "Harbour Root Path" ) - - qBtnOk := QPushButton( qDlg ) - qBtnOk:move( 50, 300 ) - qBtnOk:setText( "OK" ) - - qBtnCn := QPushButton( qDlg ) - qBtnCn:move( 170, 300 ) - qBtnCn:setText( "Cancel" ) - - QT_EVENTS_CONNECT( pEvents, qDlg, 10, {|| qDlg:done( 0 ) } ) - - HBQT_SLOTS_CONNECT( pSlots, qBtnOk, "clicked()", {|| qDlg:done( 1 ) } ) - HBQT_SLOTS_CONNECT( pSlots, qBtnCn, "clicked()", {|| qDlg:done( 2 ) } ) - - nRet := qDlg:exec() - - IF nRet == 1 /* OK */ - cText := qEdit:text() - lOtherLib := qCheck:isChecked() - cOpt := { "Sky", "Is", "The Limit" }[ qCombo:currentIndex() + 1 ] /* Zero based */ - - msgBox( cText, cOpt ) - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/plugins/hbide_script_rdds.prg b/harbour/contrib/hbide/plugins/hbide_script_rdds.prg deleted file mode 100644 index e08b6f8ec5..0000000000 --- a/harbour/contrib/hbide/plugins/hbide_script_rdds.prg +++ /dev/null @@ -1,92 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * hbide plugin. - * - * Copyright 2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -/*----------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------// - - Script TO handle rdd call from hbide - To be linked with hbIDE, change the name of this file to - hbide_persist_rdds.prg and place inside "resources" folder. - hbIDE will call these functions at appropriate times - when initializing the RDD structures. - - Please note that RDDs supposed to be operated as such - must be linked properly with hbIDE build process. - You will need to expand these functions. - -//----------------------------------------------------------------------*/ - -FUNCTION script_rdds() - RETURN {} - -/*----------------------------------------------------------------------*/ - -FUNCTION script_tableExists( cTable ) - - RETURN .f. - -/*----------------------------------------------------------------------*/ - -FUNCTION script_tableUse( cTable, cAlias ) - - RETURN .f. - -/*----------------------------------------------------------------------*/ - -FUNCTION script_tableSelect( cDriver ) - LOCAL cTable := "" - - RETURN cTable - -/*----------------------------------------------------------------------*/ - diff --git a/harbour/contrib/hbide/projectpropertiesex.ui b/harbour/contrib/hbide/projectpropertiesex.ui deleted file mode 100644 index 54eae036f1..0000000000 --- a/harbour/contrib/hbide/projectpropertiesex.ui +++ /dev/null @@ -1,467 +0,0 @@ - - - FormProjectPropEx - - - - 0 - 0 - 324 - 434 - - - - Form - - - - - - 0 - - - - General - - - - - - - 75 - true - - - - Project Type: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">A project may be of type Executable|Library|Dll.</span></p></body></html> - - - false - - - - - - - Project Title: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Title will be shown as a node in project tree.</span></p></body></html> - - - - - - - Project Location: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Project location is the folder where project definition file .hbi will be stored. &lt;Project Location&gt; plus &lt;Output Name&gt; will comprise the full file name with .hbp extension.</span></p></body></html> - - - - - - - Destination Folder: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Destination folder is a compatibility slot and is reserved to place the &lt;Output&gt; .exe .a .lib. </p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">But currently this functionality will be achieved through the -o compiler flag.</p></body></html> - - - - - - - Launch Parameters: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - Launch Program: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - Backup Location: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Output name is used as final name for .hbi .hbp .exe .lib .a and will be added to the paths retrieved via &lt;Project Location&gt;, &lt;Working Folder&gt;, &lt;Destination Folder&gt;, etc. So this is a very important component.</p></body></html> - - - - - - - Output Name: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - ... - - - - - - - ... - - - - - - - ... - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Working folder will be used to host hbmk2 compliant </span><span style=" font-size:8pt; font-weight:600;">&lt;Output Name&gt;</span><span style=" font-size:8pt;"> plus </span><span style=" font-size:8pt; font-weight:600;">&lt;hbp&gt;</span><span style=" font-size:8pt;"> and will be designated as current folder when </span><span style=" font-size:8pt; font-weight:600;">hbmk2</span><span style=" font-size:8pt;"> will be invoked.</span></p></body></html> - - - - - - - Start In: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - ... - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Xharbour - - - - - - - Xbase++ - - - - - - - Clipper - - - - - - - - HBP - - - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">You can include hereunder any type of file which can be edited via plain text editor. One file per line. You can use meta-keys to define your source paths to make your projects location independant. </span></p> -<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">NOTE:</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Only .prg .c .cpp .rc .res files will be supplied to the hbmk2. All other files will be made visible for editing in &lt;Project Tree&gt;.</span></p></body></html> - - - - - - QPlainTextEdit::NoWrap - - - - - - - Select Sources - - - - - - - - - - Sort by Ascending Order - - - - - - - - - - Sort by Descending Order - - - - - - - - - - Organize by Type and Sort Ascending - - - - - - - - - - ... - - - - - - - ... - - - - - - - - Flags - - - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Meta-keys are a special way of keeping generic information which is of repeated and/or of dynamic nature. HBIDE implements meta key/value pair more comprehensively. It allows you to write an expression for the value part which get evaluated at the time project is loaded. The only point to take into consideration is that value returned by such expression must be of type character.</span></p> -<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">The expression is evaluated only once and keeps its value until the HBIDE interface is closed. In case of any error, the expression string itself is returned.</span></p></body></html> - - - - - - QPlainTextEdit::NoWrap - - - true - - - - - - - - Sources - - - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Here you can view in real-time the resultant &lt;hbp&gt; output which will be supplied to hbmk2. This view may give you insight about your source layout and many other facts.</span></p> -<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14pt; font-weight:600; text-decoration: underline;">Enjoy</span></p></body></html> - - - - - - QPlainTextEdit::NoWrap - - - true - - - - - - - - - - - - - Save and Close - - - - - - - Save - - - false - - - true - - - - - - - Cancel - - - false - - - - - - - - - - diff --git a/harbour/contrib/hbide/projectwizard.prg b/harbour/contrib/hbide/projectwizard.prg deleted file mode 100644 index fdfca6b535..0000000000 --- a/harbour/contrib/hbide/projectwizard.prg +++ /dev/null @@ -1,1479 +0,0 @@ - /* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 14Jul2012 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbide.ch" -#include "hbqtgui.ch" -#include "common.ch" -#include "hbclass.ch" - -/*----------------------------------------------------------------------*/ - -#define __frameSrc_dragMoveEvent__ 2001 -#define __frameSrc_dragEnterEvent__ 2002 -#define __frameSrc_dropEvent__ 2003 -#define __treeProps_itemSelectionChanged__ 2004 -#define __treeProps_itemCollapsed__ 2005 -#define __treeProps_itemExpanded__ 2006 -#define __treeSrc_itemExpanded__ 2007 -#define __treeSrc_itemCollapsed__ 2008 -#define __qTBtn_clicked__ 2009 -#define __qSBtn_clicked__ 2010 -#define __toolSrcDel_clicked__ 2011 -#define __toolSrcMin_clicked__ 2012 -#define __toolSrcMax_clicked__ 2013 -#define __btnSwMin_clicked__ 2014 -#define __btnSwMax_clicked__ 2015 -#define __toolSrcGet_clicked__ 2016 -#define __treeSrc_contextMenuRequested__ 2017 -#define __treeProps_contextMenuRequested__ 2018 -#define __treeSrc_doubleClicked__ 2019 -#define __btnSw_clicked__ 2020 -#define __treeProps_doubleClicked__ 2021 -#define __btnNew_clicked__ 2022 -#define __btnSave_clicked__ 2023 -#define __btnNext_clicked__ 2024 -#define __btnBack_clicked__ 2025 - -/*----------------------------------------------------------------------*/ - -#define PROPS_TREENODE 1 -#define PROPS_PROPNAME 2 -#define PROPS_TREEBUTTON 6 - -#define UI_LOAD_NORMAL 0 -#define UI_LOAD_DEFAULTS 1 - -/*----------------------------------------------------------------------*/ - -CREATE CLASS IdeProjectWizard INHERIT IdeObject - - DATA oProject - DATA lEdited INIT .f. - DATA aItmProps INIT {} - DATA aItmSrc INIT {} - DATA cProjPath - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() - METHOD show() - METHOD execEvent( nEvent, p, p1 ) - METHOD loadDefaults() - METHOD saveProject() - METHOD clear() - METHOD loadSourcesSections() - METHOD loadSwichesSections() - METHOD deleteTreeItem( oChild ) - METHOD addTreeItem( oParent ) - METHOD addDropIndicator( oTree, oNode, nMsg, cCSS, nIndex ) - METHOD addSourceFile( cFile ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjectWizard:new( oIde ) - - DEFAULT oIde TO ::oIde - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjectWizard:create( oIde ) - - DEFAULT oIde TO ::oIde - ::oIde := oIde - - ::oProject := IdeExProject():new() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjectWizard:destroy() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjectWizard:clear() - - ::oUI:comboProjType : setCurrentIndex( 0 ) - ::oUI:comboGT : setCurrentIndex( 9 ) - - ::oUI:treeProps : clear() - ::loadSwichesSections() - - ::oUI:treeSrc : clear() - ::loadSourcesSections() - - ::oProject:loadUI( Self, UI_LOAD_DEFAULTS ) - - ::lEdited := .f. - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjectWizard:show() - LOCAL oBrush - - IF empty( ::oUI ) - ::oUI := ui_projectWizard():new( ::oIde:oDlg:oWidget ) - ::oUI:oWidget:connect( QEvent_Close, {|| ::oUI:oWidget:done( 0 ) } ) - - ::oUI:btnSwAZ : connect( "clicked()", {|| ::execEvent( __btnSw_clicked__, "az" ) } ) - ::oUI:btnSwZA : connect( "clicked()", {|| ::execEvent( __btnSw_clicked__, "za" ) } ) - ::oUI:btnSwUpper : connect( "clicked()", {|| ::execEvent( __btnSw_clicked__, "upper" ) } ) - ::oUI:btnSwLower : connect( "clicked()", {|| ::execEvent( __btnSw_clicked__, "lower" ) } ) - ::oUI:btnSwDelete : connect( "clicked()", {|| ::execEvent( __btnSw_clicked__, "delete") } ) - - ::oUI:btnNext : connect( "clicked()", {|| ::execEvent( __btnNext_clicked__ ) } ) - ::oUI:btnBack : connect( "clicked()", {|| ::execEvent( __btnBack_clicked__ ) } ) - ::oUI:btnNew : connect( "clicked()", {|| ::execEvent( __btnNew_clicked__ ) } ) - ::oUI:btnSave : connect( "clicked()", {|| ::execEvent( __btnSave_clicked__ ) } ) - ::oUI:btnCancel : connect( "clicked()", {|| ::oUI:oWidget:done( 0 ) } ) - - ::oUI:btnSwMax : connect( "clicked()", {|| ::execEvent( __btnSwMax_clicked__ ) } ) - ::oUI:btnSwMin : connect( "clicked()", {|| ::execEvent( __btnSwMin_clicked__ ) } ) - - ::oUI:toolSrcGet : connect( "clicked()", {|| ::execEvent( __toolSrcGet_clicked__ ) } ) - ::oUI:toolSrcMax : connect( "clicked()", {|| ::execEvent( __toolSrcMax_clicked__ ) } ) - ::oUI:toolSrcMin : connect( "clicked()", {|| ::execEvent( __toolSrcMin_clicked__ ) } ) - ::oUI:toolSrcDel : connect( "clicked()", {|| ::execEvent( __toolSrcDel_clicked__ ) } ) - - ::oUI:comboProjType : addItem( "Executable" ) - ::oUI:comboProjType : addItem( "Library" ) - ::oUI:comboProjType : addItem( "DLL - Without HVM" ) - ::oUI:comboProjType : addItem( "DLL - With HVM" ) - - ::oUI:comboGT : addItem( "gtCGI" ) - ::oUI:comboGT : addItem( "gtCRS" ) - ::oUI:comboGT : addItem( "gtDOS" ) - ::oUI:comboGT : addItem( "gtGUI" ) - ::oUI:comboGT : addItem( "gtOS2" ) - ::oUI:comboGT : addItem( "gtPCA" ) - ::oUI:comboGT : addItem( "gtSLN" ) - ::oUI:comboGT : addItem( "gtSTD" ) - ::oUI:comboGT : addItem( "gtTRM" ) - ::oUI:comboGT : addItem( "gtWIN" ) - ::oUI:comboGT : addItem( "gtWVT" ) - ::oUI:comboGT : addItem( "gtWVG" ) - ::oUI:comboGT : addItem( "gtXWC" ) - - ::oUI:treeProps:setContextMenuPolicy( Qt_CustomContextMenu ) - ::oUI:treeProps:setDragEnabled( .t. ) - ::oUI:treeProps:setDropIndicatorShown( .t. ) - ::oUI:treeProps:setAcceptDrops( .t. ) - ::oUI:treeProps:setDragDropMode( QAbstractItemView_InternalMove ) - ::oUI:treeProps:setRootIsDecorated( .F. ) /* Important to present as a list */ - ::oUI:treeProps:header():resizeSection( 0, 237 ) - ::oUI:treeProps:connect( "itemCollapsed(QTreeWidgetItem*)" , {|p | ::execEvent( __treeProps_itemCollapsed__ , p ) } ) - ::oUI:treeProps:connect( "itemExpanded(QTreeWidgetItem*)" , {|p | ::execEvent( __treeProps_itemExpanded__ , p ) } ) - ::oUI:treeProps:connect( "customContextMenuRequested(QPoint)" , {|p | ::execEvent( __treeProps_contextMenuRequested__, p ) } ) - ::oUI:treeProps:connect( "itemDoubleClicked(QTreeWidgetItem*,int)", {|p,p1| ::execEvent( __treeProps_doubleClicked__ , p, p1 ) } ) - ::oUI:treeProps:connect( "itemSelectionChanged()" , {| | ::execEvent( __treeProps_itemSelectionChanged__ ) } ) - - oBrush := QBrush( QColor( 248, 248, 248 ) ) - - aadd( ::aItmProps, { NIL, ".hbc Files" , QBrush( QColor( 136, 136, 136 ) ), oBrush, NIL, NIL, "background-color: rgb(136,136,136);" } ) - aadd( ::aItmProps, { NIL, "Libraries" , QBrush( QColor( 144, 144, 144 ) ), oBrush, NIL, NIL, "background-color: rgb(144,144,144);" } ) - aadd( ::aItmProps, { NIL, "Library Paths" , QBrush( QColor( 152, 152, 152 ) ), oBrush, NIL, NIL, "background-color: rgb(152,152,152);" } ) - aadd( ::aItmProps, { NIL, "Include Paths" , QBrush( QColor( 160, 160, 160 ) ), oBrush, NIL, NIL, "background-color: rgb(160,160,160);" } ) - aadd( ::aItmProps, { NIL, "PRG Defines" , QBrush( QColor( 168, 168, 168 ) ), oBrush, NIL, NIL, "background-color: rgb(168,168,168);" } ) - aadd( ::aItmProps, { NIL, "PRG Undefines" , QBrush( QColor( 176, 176, 176 ) ), oBrush, NIL, NIL, "background-color: rgb(176,176,176);" } ) - aadd( ::aItmProps, { NIL, "hbmk2 Command-Line Params" , QBrush( QColor( 184, 184, 184 ) ), oBrush, NIL, NIL, "background-color: rgb(184,184,184);" } ) - aadd( ::aItmProps, { NIL, "Batch File Commands" , QBrush( QColor( 192, 192, 192 ) ), oBrush, NIL, NIL, "background-color: rgb(192,192,192);" } ) - aadd( ::aItmProps, { NIL, "Actions after Successful Build", QBrush( QColor( 200, 200, 200 ) ), oBrush, NIL, NIL, "background-color: rgb(200,200,200);" } ) - - - ::oUI:treeSrc:setContextMenuPolicy( Qt_CustomContextMenu ) - ::oUI:treeSrc:setDragEnabled( .t. ) - ::oUI:treeSrc:setDropIndicatorShown( .t. ) - ::oUI:treeSrc:setAcceptDrops( .t. ) - ::oUI:treeSrc:setDragDropMode( QAbstractItemView_InternalMove ) - ::oUI:treeSrc:setRootIsDecorated( .F. ) /* Important to present as a list */ - ::oUI:treeSrc:header():resizeSection( 0, 393 ) - ::oUI:treeSrc:connect( "itemCollapsed(QTreeWidgetItem*)" , {|p | ::execEvent( __treeSrc_itemCollapsed__ , p ) } ) - ::oUI:treeSrc:connect( "itemExpanded(QTreeWidgetItem*)" , {|p | ::execEvent( __treeSrc_itemExpanded__ , p ) } ) - ::oUI:treeSrc:connect( "customContextMenuRequested(QPoint)" , {|p | ::execEvent( __treeSrc_contextMenuRequested__, p ) } ) - ::oUI:treeSrc:connect( "itemDoubleClicked(QTreeWidgetItem*,int)", {|p,p1| ::execEvent( __treeSrc_doubleClicked__ , p, p1 ) } ) - - aadd( ::aItmSrc, { NIL, "PRG Files" , QBrush( QColor( 184, 184, 184 ) ), oBrush, ".prg", NIL, "background-color: rgb(184,184,184);" } ) - aadd( ::aItmSrc, { NIL, "C Files" , QBrush( QColor( 176, 176, 176 ) ), oBrush, ".c" , NIL, "background-color: rgb(176,176,176);" } ) - aadd( ::aItmSrc, { NIL, "CPP Files" , QBrush( QColor( 168, 168, 168 ) ), oBrush, ".cpp", NIL, "background-color: rgb(168,168,168);" } ) - aadd( ::aItmSrc, { NIL, "CH Files" , QBrush( QColor( 160, 160, 160 ) ), oBrush, ".ch" , NIL, "background-color: rgb(160,160,160);" } ) - aadd( ::aItmSrc, { NIL, "H Files" , QBrush( QColor( 152, 152, 152 ) ), oBrush, ".h" , NIL, "background-color: rgb(152,152,152);" } ) - aadd( ::aItmSrc, { NIL, "UI Files" , QBrush( QColor( 144, 144, 144 ) ), oBrush, ".ui" , NIL, "background-color: rgb(144,144,144);" } ) - aadd( ::aItmSrc, { NIL, "All Other Files", QBrush( QColor( 136, 136, 136 ) ), oBrush, "*" , NIL, "background-color: rgb(136,136,136);" } ) - - ::clear() - - ::oUI:frameSrc:setAcceptDrops( .t. ) - ::oUI:frameSrc:connect( QEvent_DragEnter, {|p| ::execEvent( __frameSrc_dragEnterEvent__, p ) } ) - ::oUI:frameSrc:connect( QEvent_DragMove , {|p| ::execEvent( __frameSrc_dragMoveEvent__ , p ) } ) - ::oUI:frameSrc:connect( QEvent_Drop , {|p| ::execEvent( __frameSrc_dropEvent__ , p ) } ) - - ENDIF - - IF ::loadDefaults() - ::oUI:exec() - ::oUI:oWidget:hide() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjectWizard:execEvent( nEvent, p, p1 ) - LOCAL cText, qItm, n, i, oFont, aMenu, aFiles, aFilt, cFile, lTop, nChildren, qChild - LOCAL qMime, qUrl, qList, aItm - - HB_SYMBOL_UNUSED( p1 ) - - SWITCH nEvent - - CASE __frameSrc_dragMoveEvent__ - CASE __frameSrc_dragEnterEvent__ - p:acceptProposedAction() - EXIT - CASE __frameSrc_dropEvent__ - qMime := p:mimeData() - IF qMime:hasUrls() - qList := qMime:urls() - FOR i := 0 TO qList:size() - 1 - qUrl := qList:at( i ) - ::addSourceFile( qUrl:toLocalFile() ) /* Raw Form Only */ - NEXT - p:setDropAction( Qt_CopyAction ) - p:accept() - ENDIF - EXIT - CASE __treeProps_itemSelectionChanged__ - IF ! empty( qItm := ::oUI:treeProps:currentItem() ) - lTop := ::oUI:treeProps:indexOfTopLevelItem( qItm ) >= 0 - ::oUI:btnSwPlus:setEnabled( lTop ) - ::oUI:btnSwAZ:setEnabled( lTop ) - ::oUI:btnSwZA:setEnabled( lTop ) - ENDIF - EXIT - CASE __treeProps_itemCollapsed__ - CASE __treeProps_itemExpanded__ - IF ( n := ::oUI:treeProps:indexOfTopLevelItem( p ) ) >= 0 - n++ - IF hb_isObject( ::aItmProps[ n, PROPS_TREEBUTTON ] ) - ::aItmProps[ n, PROPS_TREEBUTTON ]:setIcon( QIcon( hbide_image( iif( nEvent == __treeProps_itemExpanded__, "collapse_m", "expand_m" ) ) ) ) - ENDIF - p:setSelected( .t. ) - ENDIF - EXIT - CASE __treeSrc_itemExpanded__ - CASE __treeSrc_itemCollapsed__ - IF ( n := ::oUI:treeSrc:indexOfTopLevelItem( p ) ) >= 0 - IF hb_isObject( ::aItmSrc[ n+1, PROPS_TREEBUTTON ] ) - ::aItmSrc[ n+1, PROPS_TREEBUTTON ]:setIcon( QIcon( hbide_image( iif( nEvent == __treeSrc_itemCollapsed__, "expand_m", "collapse_m" ) ) ) ) - ENDIF - p:setSelected( .t. ) - ENDIF - EXIT - CASE __qTBtn_clicked__ - IF ::aItmProps[ p, PROPS_TREENODE ]:isExpanded() - ::aItmProps[ p, PROPS_TREENODE ]:setExpanded( .f. ) - ELSE - IF ::aItmProps[ p, PROPS_TREENODE ]:childCount() > 0 - ::aItmProps[ p, PROPS_TREENODE ]:setExpanded( .t. ) - ENDIF - ENDIF - IF ! empty( qItm := ::oUI:treeProps:currentItem() ) - qItm:setSelected( .f. ) - ENDIF - ::aItmProps[ p, PROPS_TREENODE ]:setSelected( .t. ) - EXIT - CASE __qSBtn_clicked__ - IF ::aItmSrc[ p, PROPS_TREENODE ]:isExpanded() - ::aItmSrc[ p, PROPS_TREENODE ]:setExpanded( .f. ) - ELSE - IF ::aItmSrc[ p, PROPS_TREENODE ]:childCount() > 0 - ::aItmSrc[ p, PROPS_TREENODE ]:setExpanded( .t. ) - ENDIF - ENDIF - IF ! empty( qItm := ::oUI:treeSrc:currentItem() ) - qItm:setSelected( .f. ) - ENDIF - ::aItmSrc[ p, PROPS_TREENODE ]:setSelected( .t. ) - EXIT - CASE __toolSrcDel_clicked__ - IF hbide_getYesNo( "Do you really want to delete all sources ?", "Dangerous Action", "Confirmation Required!", ::oUI:oWidget ) - FOR EACH aItm IN ::aItmSrc - IF ! empty( aItm[ PROPS_TREENODE ] ) - n := aItm[ PROPS_TREENODE ]:childCount() - FOR i := 1 TO n - aItm[ PROPS_TREENODE ]:removeChild( aItm[ PROPS_TREENODE ]:child( 0 ) ) - NEXT - ENDIF - NEXT - ENDIF - EXIT - CASE __toolSrcMin_clicked__ - FOR EACH aItm IN ::aItmSrc - IF ! empty( aItm[ 1 ] ) - aItm[ 1 ]:setExpanded( .F. ) - ENDIF - NEXT - EXIT - CASE __toolSrcMax_clicked__ - FOR EACH aItm IN ::aItmSrc - IF ! empty( aItm[ PROPS_TREENODE ] ) - aItm[ PROPS_TREENODE ]:setExpanded( .T. ) - ENDIF - NEXT - EXIT - CASE __btnSwMin_clicked__ - FOR EACH aItm IN ::aItmProps - IF ! empty( aItm[ PROPS_TREENODE ] ) - aItm[ PROPS_TREENODE ]:setExpanded( .F. ) - ENDIF - NEXT - EXIT - CASE __btnSwMax_clicked__ - FOR EACH aItm IN ::aItmProps - IF ! empty( aItm[ PROPS_TREENODE ] ) - aItm[ PROPS_TREENODE ]:setExpanded( .T. ) - ENDIF - NEXT - EXIT - CASE __toolSrcGet_clicked__ - aFilt := {} - aadd( aFilt, { "Program Files", "*.prg" } ) - aadd( aFilt, { "C Files" , "*.c" } ) - aadd( aFilt, { "CPP Files" , "*.cpp" } ) - aadd( aFilt, { "H Files" , "*.h" } ) - aadd( aFilt, { "CH Files" , "*.ch" } ) - aadd( aFilt, { "All Others" , "*" } ) - - aFiles := hbide_fetchAFile( ::oDlg, "Select Sources", aFilt, ::cProjPath, , .t. ) - IF ! empty( aFiles ) - oFont := QFont( "Courier New" ) - oFont:setPointSize( 8 ) - FOR EACH cFile IN aFiles - ::addSourceFile( cFile ) - NEXT - ENDIF - EXIT - CASE __treeSrc_contextMenuRequested__ - IF ! empty( qItm := ::oUI:treeSrc:itemAt( p ) ) - cText := substr( qItm:text( 0 ), 8 ) - aMenu := {} - aadd( aMenu, { ::oAC:getAction( "Delete" ) } ) - IF ( n := ascan( ::aItmSrc, {|e_| e_[ 2 ] == cText } ) ) > 0 - aadd( aMenu, { ::oAC:getAction( "SortAZ" ) } ) - aadd( aMenu, { ::oAC:getAction( "SortZA" ) } ) - ENDIF - cText := hbide_execPopup( aMenu, ::oUI:treeSrc:mapToGlobal( p ), ::oUI:treeSrc ) - IF cText == "Delete" - IF n > 0 - n := qItm:childCount() - FOR i := 1 TO n - ::deleteTreeItem( qItm:child( 0 ) ) - NEXT - ELSE - ::deleteTreeItem( qItm ) - ENDIF - ELSEIF cText == "Sort Ascending" - ::aItmSrc[ n, PROPS_TREENODE ]:sortChildren( 0, Qt_AscendingOrder ) - ELSEIF cText == "Sort Descending" - ::aItmSrc[ n, PROPS_TREENODE ]:sortChildren( 0, Qt_DescendingOrder ) - ENDIF - ENDIF - EXIT - CASE __treeProps_contextMenuRequested__ - IF ! empty( qItm := ::oUI:treeProps:itemAt( p ) ) - cText := substr( qItm:text( 0 ), 8 ) - aMenu := {} - aadd( aMenu, { ::oAC:getAction( "Delete" ) } ) - IF ( n := ascan( ::aItmProps, {|e_| e_[ 2 ] == cText } ) ) > 0 - aadd( aMenu, { ::oAC:getAction( "SortAZ" ) } ) - aadd( aMenu, { ::oAC:getAction( "SortZA" ) } ) - ENDIF - cText := hbide_execPopup( aMenu, ::oUI:treeProps:mapToGlobal( p ), ::oUI:treeProps ) - IF cText == "Delete" - IF n > 0 - n := qItm:childCount() - FOR i := 1 TO n - ::deleteTreeItem( qItm:child( 0 ) ) - NEXT - ELSE - ::deleteTreeItem( qItm ) - ENDIF - ELSEIF cText == "Sort Ascending" - ::aItmProps[ n, PROPS_TREENODE ]:sortChildren( 0, Qt_AscendingOrder ) - ELSEIF cText == "Sort Descending" - ::aItmProps[ n, PROPS_TREENODE ]:sortChildren( 0, Qt_DescendingOrder ) - ENDIF - ENDIF - EXIT - CASE __treeSrc_doubleClicked__ - EXIT - CASE __btnSw_clicked__ - IF empty( qItm := ::oUI:treeProps:currentItem() ) - EXIT - ENDIF - IF ::oUI:treeProps:indexOfTopLevelItem( qItm ) >= 0 - IF p == "plus" - ::addTreeItem( qItm ) - - ELSEIF ( nChildren := qItm:childCount() ) > 0 - IF p == "az" - qItm:sortChildren( 0, Qt_AscendingOrder ) - ELSEIF p == "za" - qItm:sortChildren( 0, Qt_DescendingOrder ) - ELSEIF p == "delete" - FOR i := 1 TO nChildren - ::deleteTreeItem( qItm:child( 0 ) ) - NEXT - ELSE - FOR i := 1 TO nChildren - qChild := qItm:child( i-1 ) - IF p == "upper" ; qChild:setText( 0, upper( qChild:text( 0 ) ) ) - ELSEIF p == "lower" ; qChild:setText( 0, lower( qChild:text( 0 ) ) ) - ENDIF - NEXT - ENDIF - ENDIF - ELSE // Indivisual node - SWITCH p - CASE "delete" ; ::deleteTreeItem( qItm ) ; EXIT - CASE "upper" ; qItm:setText( 0, upper( qItm:text( 0 ) ) ); EXIT - CASE "lower" ; qItm:setText( 0, lower( qItm:text( 0 ) ) ); EXIT - ENDSWITCH - ENDIF - EXIT - CASE __treeProps_doubleClicked__ - IF ::oUI:treeProps:indexOfTopLevelItem( p ) >= 0 - ::addTreeItem( p ) - ENDIF - EXIT - CASE __btnNew_clicked__ - IF ::lEdited .AND. hbide_getYesNo( "Create new without saving current ?", "Current project has not been saved !", "Please Confirm", ::oUI:oWidget ) - ::clear() - IF ! ::loadDefaults() - ::oUI:oWidget:done( 0 ) - ENDIF - ENDIF - EXIT - CASE __btnSave_clicked__ - ::saveProject() - EXIT - CASE __btnNext_clicked__ - IF ::oUI:stackedWidget:currentIndex() == 0 - ::oUI:stackedWidget:setcurrentIndex( 1 ) - ENDIF - EXIT - CASE __btnBack_clicked__ - IF ::oUI:stackedWidget:currentIndex() == 1 - ::oUI:stackedWidget:setcurrentIndex( 0 ) - ENDIF - EXIT - ENDSWITCH - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjectWizard:addSourceFile( cFile ) - LOCAL oParent, qItm, cExt, n, cSource, lExists, i - LOCAL oFont := QFont( "Courier New" ) - - oFont:setPointSize( 8 ) - - IF hbide_isValidText( cFile ) - hb_fNameSplit( cFile, , , @cExt ) - IF ( n := ascan( ::aItmSrc, {|e_| e_[ 5 ] == lower( cExt ) } ) ) == 0 - n := len( ::aItmSrc ) - ENDIF - oParent := ::aItmSrc[ n,1 ] - - // cSource := hbide_prepareSourceForHbp( hbide_stripRoot( ::cProjPath, cFile ) ) /* this action be performed on final .hbp */ - cSource := cFile - - lExists := .f. - IF ( n := oParent:childCount() ) > 0 - FOR i := 1 TO n - IF lower( oParent:child( i-1 ):text( 0 ) ) == lower( cSource ) - lExists := .t. - EXIT - ENDIF - NEXT - ENDIF - - IF ! lExists - oParent:setExpanded( .t. ) - qItm := QTreeWidgetItem() - oParent:addChild( qItm ) - qItm:setFlags( 0 ) - qItm:setFlags( hb_bitOr( Qt_ItemIsSelectable, Qt_ItemIsDragEnabled, Qt_ItemIsEnabled ) ) - qItm:setText( 0, cSource ) - qItm:setTooltip( 0, cFile ) - qItm:setFont( 0, oFont ) - qItm:setBackground( 0, QBrush( QColor( 250, 250, 250 ) ) ) - ENDIF - ENDIF - - RETURN .t. - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjectWizard:addTreeItem( oParent ) - LOCAL oFont, qItm - - oFont := QFont( "Courier New" ) - oFont:setPointSize( 8 ) - - oParent:setExpanded( .t. ) - - qItm := QTreeWidgetItem() - oParent:addChild( qItm ) - qItm:setFlags( 0 ) - qItm:setFlags( hb_bitOr( Qt_ItemIsSelectable, Qt_ItemIsDragEnabled, Qt_ItemIsEnabled, Qt_ItemIsEditable ) ) - qItm:setText( 0, "" ) - qItm:setFont( 0, oFont ) - qItm:setBackground( 0, QBrush( QColor( 250, 250, 250 ) ) ) - qItm:setFirstColumnSpanned( .t. ) - - oParent:treeWidget():editItem( qItm, 0 ) - - RETURN .t. - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjectWizard:deleteTreeItem( oChild ) - LOCAL oParent - - oParent := oChild:parent() - oParent:removeChild( oChild ) - IF oParent:childCount() == 0 - oParent:setExpanded( .f. ) - oParent:setSelected( .t. ) - ENDIF - - RETURN .t. - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjectWizard:addDropIndicator( oTree, oNode, nMsg, cCSS, nIndex ) - LOCAL qTBtn := QToolButton() - - qTBtn:setIcon( QIcon( hbide_image( "expand_m" ) ) ) - qTBtn:setAutoFillBackground( .t. ) - qTBtn:setAutoRaise( .t. ) - qTBtn:setMaximumWidth( 20 ) - qTBtn:setMaximumHeight( 20 ) - qTBtn:setStyleSheet( "" ) - qTBtn:setStyleSheet( cCSS ) - qTBtn:connect( "clicked()", {|| ::execEvent( nMsg, nIndex ) } ) - oTree:setItemWidget( oNode, 1, qTBtn ) - - RETURN qTBtn - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjectWizard:loadSwichesSections() - LOCAL oTree := ::oUI:treeProps - LOCAL qItm, aAct, oFont - - oFont := QTreeWidgetItem():font( 0 ) - oFont:setBold( .t. ) - FOR EACH aAct IN ::aItmProps - qItm := QTreeWidgetItem() - aAct[ PROPS_TREENODE ] := qItm - qItm:setFlags( 0 ) - qItm:setFlags( hb_bitOr( Qt_ItemIsSelectable, Qt_ItemIsDropEnabled, Qt_ItemIsEnabled ) ) - qItm:setText( 0, space( 7 ) + aAct[ PROPS_PROPNAME ] ) - qItm:setBackground( 0, aAct[ 3 ] ) - qItm:setForeground( 0, QBrush( QColor( 255,255,255 ) ) ) - qItm:setFont( 0, oFont ) - qItm:setTooltip( 0, "Double-click to add a value !" ) - oTree:addTopLevelItem( qItm ) - oTree:setFirstItemColumnSpanned( qItm, .t. ) - qItm:setChildIndicatorPolicy( QTreeWidgetItem_ShowIndicator ) - - aAct[ PROPS_TREEBUTTON ] := ::addDropIndicator( oTree, aAct[ PROPS_TREENODE ], __qTBtn_clicked__, aAct[ 7 ], aAct:__enumIndex() ) - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjectWizard:loadSourcesSections() - LOCAL oTree := ::oUI:treeSrc - LOCAL qItm, aAct, oFont - - oFont := QTreeWidgetItem():font( 0 ) - oFont:setBold( .t. ) - FOR EACH aAct IN ::aItmSrc - qItm := QTreeWidgetItem() - aAct[ PROPS_TREENODE ] := qItm - qItm:setFlags( 0 ) - qItm:setFlags( hb_bitOr( Qt_ItemIsSelectable, Qt_ItemIsDropEnabled, Qt_ItemIsEnabled ) ) - qItm:setText( 0, space( 7 ) + aAct[ PROPS_PROPNAME ] ) - qItm:setBackground( 0, aAct[ 3 ] ) - qItm:setForeground( 0, QBrush( QColor( 255,255,255 ) ) ) - qItm:setFont( 0, oFont ) - qItm:setTooltip( 0, "Drag and drop a source OR select with open icon at the top !" ) - oTree:addTopLevelItem( qItm ) - oTree:setFirstItemColumnSpanned( qItm, .t. ) - qItm:setChildIndicatorPolicy( QTreeWidgetItem_ShowIndicator ) - - aAct[ PROPS_TREEBUTTON ] := ::addDropIndicator( oTree, aAct[ PROPS_TREENODE ], __qSBtn_clicked__, aAct[ 7 ], aAct:__enumIndex() ) - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjectWizard:loadDefaults() - LOCAL cProjPath, cPath, cName, cExt, lTmpltExists := .f. - - cProjPath := ::oUI:editProjPath:text() - IF empty( cProjPath ) - cProjPath := hbide_fetchAFile( ::oDlg, "Create a Harbour Project File", { { "Harbour Project", ".hbp" } }, hb_dirBase() + "projects" + hb_ps(), "hbp" ) - IF empty( cProjPath ) - RETURN .f. - ENDIF - - hb_fNameSplit( cProjPath, @cPath, @cName, @cExt ) - IF ! ( lower( cExt ) == ".hbp" ) - MsgBox( "Wrong type of project name !" ) - RETURN .f. - ENDIF - - IF hb_fileExists( cPath + cName + ".tpl" ) - lTmpltExists := .t. - ELSEIF hb_fileExists( cProjPath ) - MsgBox( "Project file already exists, cannot reload in wizard!" ) - RETURN .f. - ENDIF - ::cProjPath := cPath - - IF lTmpltExists - ::oProject:load( cPath + cName + ".tpl" ) - ::oProject:loadUI( Self, UI_LOAD_NORMAL ) - ELSE - ::oUI:editProjPath:setText( cProjPath ) - ::oUI:editProjName:setText( upper( substr( cName, 1, 1 ) ) + lower( substr( cName, 2 ) ) ) - ::oUI:editOutName:setText( cName ) - ENDIF - - ::lEdited := .t. - ENDIF - - RETURN .t. - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjectWizard:saveProject() - LOCAL cPath, cFile, cExt - - ::oProject:saveUI( Self ) - hb_fNameSplit( ::oUI:editProjPath:text(), @cPath, @cFile, @cExt ) - ::oProject:save( cPath + cFile + ".tpl" ) - - RETURN Self - -/*----------------------------------------------------------------------*/ -// CLASS IdeExProject -/*----------------------------------------------------------------------*/ - -CREATE CLASS IdeExProject - - DATA cTmplt INIT "" - - DATA cPathTmplt - DATA cPathHbp - - DATA cProjPath - DATA cProjName - DATA cProjType - DATA cOutName - DATA cOutPath - DATA cWorkPath - DATA cLaunchExe - DATA cLaunchParams - DATA cStayIn - DATA lXhb - DATA lXbase - DATA lHbQt - DATA lXbp - DATA lFwh - DATA lHmg - DATA lOther - DATA lA - DATA lB - DATA lES - DATA lG - DATA lJ - DATA lL - DATA lM - DATA lN - DATA lV - DATA lW - DATA lZ - DATA lQ - DATA lBuild - DATA lCredits - DATA cES - DATA cG - DATA cM - DATA cW - DATA cQ - DATA lInc - DATA lGui - DATA lMt - DATA lShared - DATA lFullStatic - DATA lTrace - DATA lInfo - DATA cGT - DATA lGtGui - DATA lGtWin - DATA lGtWvt - DATA lGtWvg - DATA lGtXwc - DATA lGtCgi - DATA lGtTrm - DATA lGtStd - DATA lGtSln - DATA lGtPca - DATA lGtOs2 - DATA lGtCrs - DATA aExtras - DATA aPrpHbcs - DATA aPrpLibs - DATA aPrpLPaths - DATA aPrpIPaths - DATA aPrpDefines - DATA aPrpUnDefines - DATA aPrpHbmk2 - DATA aPrpBatch - DATA aPrpAActions - DATA aSrcPrgs - DATA aSrcCs - DATA aSrcCpps - DATA aSrcChs - DATA aSrcHs - DATA aSrcUIs - DATA aSrcOthers - - METHOD new( cPathTmplt ) - METHOD create( cPathTmplt ) - METHOD defaults() - METHOD setTmpltPath( cPathTmplt ) INLINE ::cPathTmplt := cPathTmplt - METHOD load( cPathTmplt ) - METHOD save( cPathTmplt ) - METHOD loadUI( oWizard, nMode ) - METHOD saveUI( oWizard ) - METHOD retrieveProps( oWizard ) - METHOD retrieveSources( oWizard ) - METHOD retrieveExtras( oWizard ) - METHOD loadProps( oWizard ) - METHOD loadSources( oWizard ) - METHOD loadExtras( oWizard ) - METHOD addSection( aTxt, cSection, aValues ) - METHOD sectionToArray( cBuffer, cSection ) - METHOD getKeyValuePair( cStr ) - METHOD retrieveSection( cBuffer, cSection, aPost ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeExProject:new( cPathTmplt ) - - hb_default( cPathTmplt, ::cPathTmplt ) - - ::cPathTmplt := cPathTmplt - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeExProject:create( cPathTmplt ) - - hb_default( cPathTmplt, ::cPathTmplt ) - - ::cPathTmplt := cPathTmplt - - ::defaults() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeExProject:defaults() - - ::cProjPath := "" - ::cProjName := "" - ::cProjType := "" - ::cOutName := "" - ::cOutPath := "" - ::cWorkPath := "" - ::cLaunchExe := "" - ::cLaunchParams := "" - ::cStayIn := "" - ::lXhb := .F. - ::lXbase := .F. - ::lHbQt := .F. - ::lXbp := .F. - ::lFwh := .F. - ::lHmg := .F. - ::lOther := .F. - ::lA := .F. - ::lB := .F. - ::lES := .T. - ::lG := .F. - ::lJ := .F. - ::lL := .F. - ::lM := .T. - ::lN := .T. - ::lV := .F. - ::lW := .F. - ::lZ := .F. - ::lQ := .F. - ::lBuild := .F. - ::lCredits := .F. - ::cES := "0" - ::cG := "" - ::cM := "" - ::cW := "" - ::cQ := "" - ::lInc := .T. - ::lGui := .F. - ::lMt := .F. - ::lShared := .F. - ::lFullStatic := .F. - ::lTrace := .F. - ::lInfo := .T. - ::cGT := "" - ::lGtGui := .F. - ::lGtWin := .F. - ::lGtWvt := .F. - ::lGtWvg := .F. - ::lGtXwc := .F. - ::lGtCgi := .F. - ::lGtTrm := .F. - ::lGtStd := .F. - ::lGtSln := .F. - ::lGtPca := .F. - ::lGtOs2 := .F. - ::lGtCrs := .F. - ::aExtras := {} - ::aPrpHbcs := {} - ::aPrpLibs := {} - ::aPrpLPaths := {} - ::aPrpIPaths := {} - ::aPrpDefines := {} - ::aPrpUnDefines := {} - ::aPrpHbmk2 := {} - ::aPrpBatch := {} - ::aPrpAActions := {} - ::aSrcPrgs := {} - ::aSrcCs := {} - ::aSrcCpps := {} - ::aSrcChs := {} - ::aSrcHs := {} - ::aSrcUIs := {} - ::aSrcOthers := {} - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeExProject:loadUI( oWizard, nMode ) - LOCAL oUI := oWizard:oUI - - IF nMode == 1 - ::defaults() - ENDIF - - oUI:editProjPath : setText( ::cProjPath ) - oUI:editProjName : setText( ::cProjName ) - oUI:editOutName : setText( ::cOutName ) - oUI:editOutPath : setText( ::cOutPath ) - oUI:editWorkPath : setText( ::cWorkPath ) - oUI:editWorkPath : setText( ::cWorkPath ) - oUI:editLaunchExe : setText( ::cLaunchExe ) - oUI:editLaunchParams : setText( ::cLaunchParams ) - oUI:editStayIn : setText( ::cStayIn ) - oUi:chkXhb : setChecked( ::lXhb ) - oUi:chkXBase : setChecked( ::lXBase ) - oUi:chkHbQt : setChecked( ::lHbQt ) - oUi:chkXbp : setChecked( ::lXbp ) - oUi:chkFWH : setChecked( ::lFWH ) - oUi:chkHMG : setChecked( ::lHMG ) - oUi:chkOther : setChecked( ::lOther ) - oUi:chkA : setChecked( ::lA ) - oUi:chkB : setChecked( ::lB ) - oUi:chkES : setChecked( ::lES ) - oUi:chkG : setChecked( ::lG ) - oUi:chkJ : setChecked( ::lJ ) - oUi:chkL : setChecked( ::lL ) - oUi:chkM : setChecked( ::lM ) - oUi:chkN : setChecked( ::lN ) - oUi:chkV : setChecked( ::lV ) - oUi:chkW : setChecked( ::lW ) - oUi:chkZ : setChecked( ::lZ ) - oUi:chkQ : setChecked( ::lQ ) - oUi:chkBuild : setChecked( ::lBuild ) - oUi:chkCredits : setChecked( ::lCredits ) - oUi:chkInc : setChecked( ::lInc ) - oUi:chkGui : setChecked( ::lGui ) - oUi:chkInfo : setChecked( ::lInfo ) - oUi:chkShared : setChecked( ::lShared ) - oUi:chkMt : setChecked( ::lMt ) - oUi:chkTrace : setChecked( ::lTrace ) - oUi:chkFullstatic : setChecked( ::lFullstatic ) - oUi:chkGtgui : setChecked( ::lGtgui ) - oUi:chkGtwin : setChecked( ::lGtwin ) - oUi:chkGtwvt : setChecked( ::lGtwvt ) - oUi:chkGtwvg : setChecked( ::lGtwvg ) - oUi:chkGtxwc : setChecked( ::lGtxwc ) - oUi:chkGttrm : setChecked( ::lGttrm ) - oUi:chkGtstd : setChecked( ::lGtstd ) - oUi:chkGtsln : setChecked( ::lGtsln ) - oUi:chkGtpca : setChecked( ::lGtpca ) - oUi:chkGtos2 : setChecked( ::lGtos2 ) - oUi:chkGtcrs : setChecked( ::lGtcrs ) - oUi:chkGtcgi : setChecked( ::lGtcgi ) - oUI:editES : setText( ::cES ) - oUI:editG : setText( ::cG ) - oUI:editM : setText( ::cM ) - oUI:editQ : setText( ::cQ ) - oUI:editW : setText( ::cW ) - - ::loadProps( oWizard ) - ::loadSources( oWizard ) - ::loadExtras( oWizard ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeExProject:saveUI( oWizard ) - LOCAL oUI := oWizard:oUI - - ::defaults() /* Clean the variables */ - - ::cProjPath := oUI:editProjPath : text() - ::cProjName := oUI:editProjName : text() - ::cProjType := oUI:comboProjType : currentText() - ::cOutName := oUI:editOutName : text() - ::cOutPath := oUI:editOutPath : text() - ::cWorkPath := oUI:editWorkPath : text() - ::cLaunchExe := oUI:editLaunchExe : text() - ::cLaunchParams := oUI:editLaunchParams : text() - ::cStayIn := oUI:editStayIn : text() - ::lXhb := oUI:chkXhb : isChecked() - ::lXbase := oUI:chkXbase : isChecked() - ::lHbQt := oUI:chkHbQt : isChecked() - ::lXbp := oUI:chkXbp : isChecked() - ::lFwh := oUI:chkFwh : isChecked() - ::lHmg := oUI:chkHmg : isChecked() - ::lOther := oUI:chkOther : isChecked() - ::lA := oUI:chkA : isChecked() - ::lB := oUI:chkB : isChecked() - ::lES := oUI:chkES : isChecked() - ::lG := oUI:chkG : isChecked() - ::lJ := oUI:chkJ : isChecked() - ::lL := oUI:chkL : isChecked() - ::lM := oUI:chkM : isChecked() - ::lN := oUI:chkN : isChecked() - ::lV := oUI:chkV : isChecked() - ::lW := oUI:chkW : isChecked() - ::lZ := oUI:chkZ : isChecked() - ::lQ := oUI:chkQ : isChecked() - ::lBuild := oUI:chkBuild : isChecked() - ::lCredits := oUI:chkCredits : isChecked() - ::cES := oUI:editES : text() - ::cG := oUI:editG : text() - ::cM := oUI:editM : text() - ::cW := oUI:editW : text() - ::cQ := oUI:editQ : text() - ::lInc := oUI:chkInc : isChecked() - ::lGui := oUI:chkGui : isChecked() - ::lMt := oUI:chkMt : isChecked() - ::lShared := oUI:chkShared : isChecked() - ::lFullStatic := oUI:chkFullStatic : isChecked() - ::lTrace := oUI:chkTrace : isChecked() - ::lInfo := oUI:chkInfo : isChecked() - ::cGT := oUI:comboGT : currentText() - ::lGtGui := oUI:chkGtGui : isChecked() - ::lGtWin := oUI:chkGtWin : isChecked() - ::lGtWvt := oUI:chkGtWvt : isChecked() - ::lGtWvg := oUI:chkGtWvg : isChecked() - ::lGtXwc := oUI:chkGtXwc : isChecked() - ::lGtCgi := oUI:chkGtCgi : isChecked() - ::lGtTrm := oUI:chkGtTrm : isChecked() - ::lGtStd := oUI:chkGtStd : isChecked() - ::lGtSln := oUI:chkGtSln : isChecked() - ::lGtPca := oUI:chkGtPca : isChecked() - ::lGtOs2 := oUI:chkGtOs2 : isChecked() - ::lGtCrs := oUI:chkGtCrs : isChecked() - - ::retrieveProps( oWizard ) - ::retrieveSources( oWizard ) - ::retrieveExtras( oWizard ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeExProject:retrieveProps( oWizard ) - LOCAL a_, n, cNode, cText - - FOR EACH a_ IN oWizard:aItmProps - IF hb_isObject( a_[ PROPS_TREENODE ] ) - cNode := alltrim( a_[ PROPS_TREENODE ]:text( 0 ) ) - FOR n := 1 TO a_[ PROPS_TREENODE ]:childCount() - cText := alltrim( a_[ PROPS_TREENODE ]:child( n - 1 ):text( 0 ) ) - SWITCH cNode - CASE ".hbc Files" ; AAdd( ::aPrpHbcs , cText ) ; EXIT - CASE "Libraries" ; AAdd( ::aPrpLibs , cText ) ; EXIT - CASE "Library Paths" ; AAdd( ::aPrpLPaths , cText ) ; EXIT - CASE "Include Paths" ; AAdd( ::aPrpIPaths , cText ) ; EXIT - CASE "PRG Defines" ; AAdd( ::aPrpDefines , cText ) ; EXIT - CASE "PRG Undefines" ; AAdd( ::aPrpUnDefines , cText ) ; EXIT - CASE "hbmk2 Command-Line Params" ; AAdd( ::aPrpHbmk2 , cText ) ; EXIT - CASE "Batch File Commands" ; AAdd( ::aPrpBatch , cText ) ; EXIT - CASE "Actions after Successful Build" ; AAdd( ::aPrpAActions , cText ) ; EXIT - ENDSWITCH - NEXT - ENDIF - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeExProject:retrieveSources( oWizard ) - LOCAL a_, n, cNode, cText - - FOR EACH a_ IN oWizard:aItmSrc - IF hb_isObject( a_[ PROPS_TREENODE ] ) - cNode := alltrim( a_[ PROPS_TREENODE ]:text( 0 ) ) - FOR n := 1 TO a_[ PROPS_TREENODE ]:childCount() - cText := alltrim( a_[ PROPS_TREENODE ]:child( n - 1 ):text( 0 ) ) - SWITCH cNode - CASE "PRG Files" ; AAdd( ::aSrcPrgs , cText ) ; EXIT - CASE "C Files" ; AAdd( ::aSrcCs , cText ) ; EXIT - CASE "CPP Files" ; AAdd( ::aSrcCpps , cText ) ; EXIT - CASE "CH Files" ; AAdd( ::aSrcChs , cText ) ; EXIT - CASE "H Files" ; AAdd( ::aSrcHs , cText ) ; EXIT - CASE "UI Files" ; AAdd( ::aSrcUIs , cText ) ; EXIT - CASE "All Other Files" ; AAdd( ::aSrcOthers , cText ) ; EXIT - ENDSWITCH - NEXT - ENDIF - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeExProject:retrieveExtras( oWizard ) - LOCAL s, a_:= hbide_memoToArray( oWizard:oUI:plainExtras:toPlainText() ) - - FOR EACH s IN a_ - aadd( ::aExtras, alltrim( s ) ) - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeExProject:loadProps( oWizard ) - LOCAL a_, aValues, cValue, qItm - - FOR EACH a_ IN oWizard:aItmProps - IF hb_isObject( a_[ PROPS_TREENODE ] ) - SWITCH alltrim( a_[ PROPS_TREENODE ]:text( 0 ) ) - CASE ".hbc Files" ; aValues := ::aPrpHbcs ; EXIT - CASE "Libraries" ; aValues := ::aPrpLibs ; EXIT - CASE "Library Paths" ; aValues := ::aPrpLPaths ; EXIT - CASE "Include Paths" ; aValues := ::aPrpIPaths ; EXIT - CASE "PRG Defines" ; aValues := ::aPrpDefines ; EXIT - CASE "PRG Undefines" ; aValues := ::aPrpUnDefines ; EXIT - CASE "hbmk2 Command-Line Params" ; aValues := ::aPrpHbmk2 ; EXIT - CASE "Batch File Commands" ; aValues := ::aPrpBatch ; EXIT - CASE "Actions after Successful Build" ; aValues := ::aPrpAActions ; EXIT - ENDSWITCH - IF ! empty( aValues ) - FOR EACH cValue IN aValues - IF ! empty( cValue ) - qItm := QTreeWidgetItem() - qItm:setText( 0, cValue ) - a_[ PROPS_TREENODE ]:addChild( qItm ) - ENDIF - NEXT - ENDIF - a_[ PROPS_TREENODE ]:setExpanded( .t. ) - ENDIF - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeExProject:loadSources( oWizard ) - LOCAL a_, aValues, cValue, qItm - - FOR EACH a_ IN oWizard:aItmSrc - IF hb_isObject( a_[ PROPS_TREENODE ] ) - SWITCH alltrim( a_[ PROPS_TREENODE ]:text( 0 ) ) - CASE "PRG Files" ; aValues := ::aSrcPrgs ; EXIT - CASE "C Files" ; aValues := ::aSrcCs ; EXIT - CASE "CPP Files" ; aValues := ::aSrcCpps ; EXIT - CASE "CH Files" ; aValues := ::aSrcChs ; EXIT - CASE "H Files" ; aValues := ::aSrcHs ; EXIT - CASE "UI Files" ; aValues := ::aSrcUIs ; EXIT - CASE "All Other Files" ; aValues := ::aSrcOthers ; EXIT - ENDSWITCH - - IF ! empty( aValues ) - FOR EACH cValue IN aValues - IF ! empty( cValue ) - qItm := QTreeWidgetItem() - qItm:setText( 0, cValue ) - a_[ PROPS_TREENODE ]:addChild( qItm ) - ENDIF - NEXT - ENDIF - a_[ PROPS_TREENODE ]:setExpanded( .t. ) - ENDIF - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeExProject:loadExtras( oWizard ) - - oWizard:oUI:plainExtras : setPlainText( hbide_arrayToMemo( ::aExtras ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeExProject:addSection( aTxt, cSection, aValues ) - LOCAL s - - AAdd( aTxt, "" ) - AAdd( aTxt, " <" + cSection + ">" ) - FOR EACH s IN aValues - AAdd( aTxt, " " + s ) - NEXT - AAdd( aTxt, " " ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeExProject:save( cPathTmplt ) - LOCAL cTxt, aGen :={}, aTxt := {} - - AAdd( aGen, "cProjPath = " + ::cProjPath ) - AAdd( aGen, "cProjName = " + ::cProjName ) - AAdd( aGen, "cProjType = " + ::cProjType ) - AAdd( aGen, "cOutName = " + ::cOutName ) - AAdd( aGen, "cOutPath = " + ::cOutPath ) - AAdd( aGen, "cWorkPath = " + ::cWorkPath ) - AAdd( aGen, "cLaunchExe = " + ::cLaunchExe ) - AAdd( aGen, "cLaunchParams = " + ::cLaunchParams ) - AAdd( aGen, "cStayIn = " + ::cStayIn ) - AAdd( aGen, "lXhb = " + iif( ::lXhb , "YES", "NO" ) ) - AAdd( aGen, "lXbase = " + iif( ::lXbase , "YES", "NO" ) ) - AAdd( aGen, "lHbQt = " + iif( ::lHbQt , "YES", "NO" ) ) - AAdd( aGen, "lXbp = " + iif( ::lXbp , "YES", "NO" ) ) - AAdd( aGen, "lFwh = " + iif( ::lFwh , "YES", "NO" ) ) - AAdd( aGen, "lHmg = " + iif( ::lHmg , "YES", "NO" ) ) - AAdd( aGen, "lOther = " + iif( ::lOther , "YES", "NO" ) ) - AAdd( aGen, "lA = " + iif( ::lA , "YES", "NO" ) ) - AAdd( aGen, "lB = " + iif( ::lB , "YES", "NO" ) ) - AAdd( aGen, "lES = " + iif( ::lES , "YES", "NO" ) ) - AAdd( aGen, "lG = " + iif( ::lG , "YES", "NO" ) ) - AAdd( aGen, "lJ = " + iif( ::lJ , "YES", "NO" ) ) - AAdd( aGen, "lL = " + iif( ::lL , "YES", "NO" ) ) - AAdd( aGen, "lM = " + iif( ::lM , "YES", "NO" ) ) - AAdd( aGen, "lN = " + iif( ::lN , "YES", "NO" ) ) - AAdd( aGen, "lV = " + iif( ::lV , "YES", "NO" ) ) - AAdd( aGen, "lW = " + iif( ::lW , "YES", "NO" ) ) - AAdd( aGen, "lZ = " + iif( ::lZ , "YES", "NO" ) ) - AAdd( aGen, "lQ = " + iif( ::lQ , "YES", "NO" ) ) - AAdd( aGen, "lBuild = " + iif( ::lBuild , "YES", "NO" ) ) - AAdd( aGen, "lCredits = " + iif( ::lCredits , "YES", "NO" ) ) - AAdd( aGen, "cES = " + ::cES ) - AAdd( aGen, "cG = " + ::cG ) - AAdd( aGen, "cM = " + ::cM ) - AAdd( aGen, "cW = " + ::cW ) - AAdd( aGen, "cQ = " + ::cQ ) - AAdd( aGen, "lInc = " + iif( ::lInc , "YES", "NO" ) ) - AAdd( aGen, "lGui = " + iif( ::lGui , "YES", "NO" ) ) - AAdd( aGen, "lMt = " + iif( ::lMt , "YES", "NO" ) ) - AAdd( aGen, "lShared = " + iif( ::lShared , "YES", "NO" ) ) - AAdd( aGen, "lFullStatic = " + iif( ::lFullStatic , "YES", "NO" ) ) - AAdd( aGen, "lTrace = " + iif( ::lTrace , "YES", "NO" ) ) - AAdd( aGen, "lInfo = " + iif( ::lInfo , "YES", "NO" ) ) - AAdd( aGen, "cGT = " + ::cGT ) - AAdd( aGen, "lGtGui = " + iif( ::lGtGui , "YES", "NO" ) ) - AAdd( aGen, "lGtWin = " + iif( ::lGtWin , "YES", "NO" ) ) - AAdd( aGen, "lGtWvt = " + iif( ::lGtWvt , "YES", "NO" ) ) - AAdd( aGen, "lGtWvg = " + iif( ::lGtWvg , "YES", "NO" ) ) - AAdd( aGen, "lGtXwc = " + iif( ::lGtXwc , "YES", "NO" ) ) - AAdd( aGen, "lGtCgi = " + iif( ::lGtCgi , "YES", "NO" ) ) - AAdd( aGen, "lGtTrm = " + iif( ::lGtTrm , "YES", "NO" ) ) - AAdd( aGen, "lGtStd = " + iif( ::lGtStd , "YES", "NO" ) ) - AAdd( aGen, "lGtSln = " + iif( ::lGtSln , "YES", "NO" ) ) - AAdd( aGen, "lGtPca = " + iif( ::lGtPca , "YES", "NO" ) ) - AAdd( aGen, "lGtOs2 = " + iif( ::lGtOs2 , "YES", "NO" ) ) - AAdd( aGen, "lGtCrs = " + iif( ::lGtCrs , "YES", "NO" ) ) - - AAdd( aTxt, "" ) - AAdd( aTxt, " " ) - // - ::addSection( aTxt, "GENERAL" , aGen ) - ::addSection( aTxt, "EXTRAS" , ::aExtras ) - ::addSection( aTxt, "HBCS" , ::aPrpHbcs ) - ::addSection( aTxt, "LIBS" , ::aPrpLibs ) - ::addSection( aTxt, "LIBPATHS" , ::aPrpLPaths ) - ::addSection( aTxt, "INCLUDEPATHS" , ::aPrpIPaths ) - ::addSection( aTxt, "DEFINES" , ::aPrpDefines ) - ::addSection( aTxt, "UNDEFINES" , ::aPrpUnDefines ) - ::addSection( aTxt, "HBMK2CMDLINEPARAMS" , ::aPrpHbmk2 ) - ::addSection( aTxt, "BATCHCOMMANDS" , ::aPrpBatch ) - ::addSection( aTxt, "ACTIONSAFTERBUILD" , ::aPrpAActions ) - ::addSection( aTxt, "SOURCESPRG" , ::aSrcPrgs ) - ::addSection( aTxt, "SOURCESC" , ::aSrcCs ) - ::addSection( aTxt, "SOURCESCPP" , ::aSrcCpps ) - ::addSection( aTxt, "SOURCESCH" , ::aSrcChs ) - ::addSection( aTxt, "SOURCESH" , ::aSrcHs ) - ::addSection( aTxt, "SOURCESUI" , ::aSrcUIs ) - ::addSection( aTxt, "SOURCESOTHER" , ::aSrcOthers ) - // - AAdd( aTxt, "" ) - AAdd( aTxt, " " ) - AAdd( aTxt, "" ) - - cTxt := "" - aeval( aTxt, {|e| cTxt += e + hb_eol() } ) - - RETURN hb_memowrit( cPathTmplt, cTxt ) - -/*----------------------------------------------------------------------*/ - -METHOD IdeExProject:sectionToArray( cBuffer, cSection ) - LOCAL cTxt, n, nn, cTknB, cTknE - LOCAL a_:={} - - cTknB := "<" + cSection + ">" - cTknE := "" - - IF ( n := at( cTknB, cBuffer ) ) > 0 - IF( nn := at( cTknE, cBuffer ) ) > 0 - cTxt := SubStr( cBuffer, n + Len( cTknB ), nn - 1 - ( n + Len( cTknB ) ) ) - ENDIF - IF ! Empty( cTxt ) - a_:= hb_ATokens( cTxt, Chr( 10 ) ) - ENDIF - ENDIF - - RETURN a_ - -/*----------------------------------------------------------------------*/ - -METHOD IdeExProject:getKeyValuePair( cStr ) - LOCAL n - - IF ( n := at( "=", cStr ) ) > 0 - RETURN { alltrim( substr( cStr, 1, n - 1 ) ), alltrim( substr( cStr, n + 1 ) ) } - ENDIF - - RETURN {} - -/*----------------------------------------------------------------------*/ - -METHOD IdeExProject:retrieveSection( cBuffer, cSection, aPost ) - LOCAL s - - FOR EACH s IN ::sectiontoArray( cBuffer, cSection ) - AAdd( aPost, alltrim( s ) ) - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeExProject:load( cPathTmplt ) - LOCAL cBuffer := hb_memoRead( cPathTmplt ) - LOCAL cValid := "" - LOCAL s, a_ - - IF ! ( left( cBuffer, len( cValid ) ) == cValid ) - RETURN Self - ENDIF - - IF !( hb_eol() == Chr( 10 ) ) - cBuffer := StrTran( cBuffer, hb_eol(), Chr( 10 ) ) - ENDIF - IF !( hb_eol() == Chr( 13 ) + Chr( 10 ) ) - cBuffer := StrTran( cBuffer, Chr( 13 ) + Chr( 10 ), Chr( 10 ) ) - ENDIF - - ::defaults() /* Clear variables */ - - FOR EACH s IN ::sectiontoArray( cBuffer, "GENERAL" ) - IF ! empty( a_:= ::getKeyValuePair( s ) ) - SWITCH a_[ 1 ] - CASE "cProjPath" ; ::cProjPath := a_[ 2 ] ; EXIT - CASE "cProjName" ; ::cProjName := a_[ 2 ] ; EXIT - CASE "cProjType" ; ::cProjType := a_[ 2 ] ; EXIT - CASE "cOutName" ; ::cOutName := a_[ 2 ] ; EXIT - CASE "cOutPath" ; ::cOutPath := a_[ 2 ] ; EXIT - CASE "cWorkPath" ; ::cWorkPath := a_[ 2 ] ; EXIT - CASE "cLaunchExe" ; ::cLaunchExe := a_[ 2 ] ; EXIT - CASE "cLaunchParams" ; ::cLaunchParams := a_[ 2 ] ; EXIT - CASE "cStayIn" ; ::cStayIn := a_[ 2 ] ; EXIT - CASE "lXhb" ; ::lXhb := a_[ 2 ] == "YES" ; EXIT - CASE "lXbase" ; ::lXbase := a_[ 2 ] == "YES" ; EXIT - CASE "lHbQt" ; ::lHbQt := a_[ 2 ] == "YES" ; EXIT - CASE "lXbp" ; ::lXbp := a_[ 2 ] == "YES" ; EXIT - CASE "lFwh" ; ::lFwh := a_[ 2 ] == "YES" ; EXIT - CASE "lHmg" ; ::lHmg := a_[ 2 ] == "YES" ; EXIT - CASE "lOther" ; ::lOther := a_[ 2 ] == "YES" ; EXIT - CASE "lA" ; ::lA := a_[ 2 ] == "YES" ; EXIT - CASE "lB" ; ::lB := a_[ 2 ] == "YES" ; EXIT - CASE "lES" ; ::lES := a_[ 2 ] == "YES" ; EXIT - CASE "lG" ; ::lG := a_[ 2 ] == "YES" ; EXIT - CASE "lJ" ; ::lJ := a_[ 2 ] == "YES" ; EXIT - CASE "lL" ; ::lL := a_[ 2 ] == "YES" ; EXIT - CASE "lM" ; ::lM := a_[ 2 ] == "YES" ; EXIT - CASE "lN" ; ::lN := a_[ 2 ] == "YES" ; EXIT - CASE "lV" ; ::lV := a_[ 2 ] == "YES" ; EXIT - CASE "lW" ; ::lW := a_[ 2 ] == "YES" ; EXIT - CASE "lZ" ; ::lZ := a_[ 2 ] == "YES" ; EXIT - CASE "lQ" ; ::lQ := a_[ 2 ] == "YES" ; EXIT - CASE "lBuild" ; ::lBuild := a_[ 2 ] == "YES" ; EXIT - CASE "lCredits" ; ::lCredits := a_[ 2 ] == "YES" ; EXIT - CASE "cES" ; ::cES := a_[ 2 ] ; EXIT - CASE "cG" ; ::cG := a_[ 2 ] ; EXIT - CASE "cM" ; ::cM := a_[ 2 ] ; EXIT - CASE "cW" ; ::cW := a_[ 2 ] ; EXIT - CASE "cQ" ; ::cQ := a_[ 2 ] ; EXIT - CASE "lInc" ; ::lInc := a_[ 2 ] == "YES" ; EXIT - CASE "lGui" ; ::lGui := a_[ 2 ] == "YES" ; EXIT - CASE "lMt" ; ::lMt := a_[ 2 ] == "YES" ; EXIT - CASE "lShared" ; ::lShared := a_[ 2 ] == "YES" ; EXIT - CASE "lFullStatic" ; ::lFullStatic := a_[ 2 ] == "YES" ; EXIT - CASE "lTrace" ; ::lTrace := a_[ 2 ] == "YES" ; EXIT - CASE "lInfo" ; ::lInfo := a_[ 2 ] == "YES" ; EXIT - CASE "cGT" ; ::cGT := a_[ 2 ] ; EXIT - CASE "lGtGui" ; ::lGtGui := a_[ 2 ] == "YES" ; EXIT - CASE "lGtWin" ; ::lGtWin := a_[ 2 ] == "YES" ; EXIT - CASE "lGtWvt" ; ::lGtWvt := a_[ 2 ] == "YES" ; EXIT - CASE "lGtWvg" ; ::lGtWvg := a_[ 2 ] == "YES" ; EXIT - CASE "lGtXwc" ; ::lGtXwc := a_[ 2 ] == "YES" ; EXIT - CASE "lGtCgi" ; ::lGtCgi := a_[ 2 ] == "YES" ; EXIT - CASE "lGtTrm" ; ::lGtTrm := a_[ 2 ] == "YES" ; EXIT - CASE "lGtStd" ; ::lGtStd := a_[ 2 ] == "YES" ; EXIT - CASE "lGtSln" ; ::lGtSln := a_[ 2 ] == "YES" ; EXIT - CASE "lGtPca" ; ::lGtPca := a_[ 2 ] == "YES" ; EXIT - CASE "lGtOs2" ; ::lGtOs2 := a_[ 2 ] == "YES" ; EXIT - CASE "lGtCrs" ; ::lGtCrs := a_[ 2 ] == "YES" ; EXIT - ENDSWITCH - ENDIF - NEXT - - ::retrieveSection( cBuffer, "EXTRAS" , ::aExtras ) - ::retrieveSection( cBuffer, "HBCS" , ::aPrpHbcs ) - ::retrieveSection( cBuffer, "LIBS" , ::aPrpLibs ) - ::retrieveSection( cBuffer, "LIBPATHS" , ::aPrpLPaths ) - ::retrieveSection( cBuffer, "INCLUDEPATHS" , ::aPrpIPaths ) - ::retrieveSection( cBuffer, "DEFINES" , ::aPrpDefines ) - ::retrieveSection( cBuffer, "UNDEFINES" , ::aPrpUnDefines ) - ::retrieveSection( cBuffer, "HBMK2CMDLINEPARAMS" , ::aPrpHbmk2 ) - ::retrieveSection( cBuffer, "BATCHCOMMANDS" , ::aPrpBatch ) - ::retrieveSection( cBuffer, "ACTIONSAFTERBUILD" , ::aPrpAActions ) - ::retrieveSection( cBuffer, "SOURCESPRG" , ::aSrcPrgs ) - ::retrieveSection( cBuffer, "SOURCESC" , ::aSrcCs ) - ::retrieveSection( cBuffer, "SOURCESCPP" , ::aSrcCpps ) - ::retrieveSection( cBuffer, "SOURCESCH" , ::aSrcChs ) - ::retrieveSection( cBuffer, "SOURCESH" , ::aSrcHs ) - ::retrieveSection( cBuffer, "SOURCESUI" , ::aSrcUIs ) - ::retrieveSection( cBuffer, "SOURCESOTHER" , ::aSrcOthers ) - - RETURN Self - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/projectwizard.ui b/harbour/contrib/hbide/projectwizard.ui deleted file mode 100644 index 98585875af..0000000000 --- a/harbour/contrib/hbide/projectwizard.ui +++ /dev/null @@ -1,1587 +0,0 @@ - - - Dialog - - - - 0 - 0 - 470 - 630 - - - - - 470 - 630 - - - - - 470 - 630 - - - - New Project Wizard - - - - - 0 - 0 - 469 - 581 - - - - 0 - - - - - - 8 - 244 - 453 - 149 - - - - QFrame::Panel - - - QFrame::Raised - - - - - 0 - 0 - 81 - 149 - - - - Tick the project's underlying type, or say, necessary info which will be used by HbIDE to offer color syntax etc. for the library(s) used. - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 12 - 88 - 70 - 17 - - - - FWH - - - - - - 12 - 8 - 70 - 17 - - - - XHarbour - - - - - - 12 - 28 - 70 - 17 - - - - XBase++ - - - - - - 12 - 68 - 70 - 17 - - - - HbXbp - - - - - - 12 - 48 - 70 - 17 - - - - HbQt - - - - - - 12 - 108 - 70 - 17 - - - - HMG - - - - - - 12 - 128 - 70 - 17 - - - - Other - - - - - - - 88 - 0 - 161 - 149 - - - - Harbour specif comman-line switches. - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 8 - 8 - 41 - 17 - - - - / a - - - - - - 8 - 28 - 41 - 17 - - - - / b - - - - - - 8 - 48 - 41 - 17 - - - - / es - - - - - - 8 - 68 - 41 - 17 - - - - / g - - - - - - 8 - 108 - 41 - 17 - - - - / l - - - - - - 48 - 48 - 29 - 17 - - - - - - - 84 - 8 - 41 - 17 - - - - / m - - - - - - 124 - 8 - 29 - 17 - - - - - - - 48 - 68 - 29 - 17 - - - - - - - 84 - 28 - 41 - 17 - - - - / n - - - - - - 84 - 48 - 41 - 17 - - - - / v - - - - - - 84 - 68 - 41 - 17 - - - - / w - - - - - - 84 - 88 - 41 - 17 - - - - / z - - - - - - 124 - 68 - 29 - 17 - - - - - - - 8 - 128 - 65 - 17 - - - - build - - - - - - 84 - 128 - 70 - 17 - - - - credits - - - - - - 84 - 108 - 41 - 17 - - - - / q - - - - - - 124 - 108 - 29 - 17 - - - - - - - 8 - 88 - 41 - 17 - - - - / j - - - - - - - 252 - 0 - 65 - 149 - - - - hbmk2 specific switches. - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 8 - 8 - 53 - 17 - - - - inc - - - - - - 8 - 28 - 53 - 17 - - - - gui - - - - - - 8 - 128 - 53 - 17 - - - - info - - - - - - 8 - 68 - 53 - 17 - - - - shared - - - - - - 8 - 48 - 53 - 17 - - - - mt - - - - - - 8 - 108 - 53 - 17 - - - - trace - - - - - - 8 - 88 - 53 - 17 - - - - fullstatic - - - - - - - 320 - 0 - 129 - 149 - - - - Default GT to be linked plus other GT's to be linked. - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 12 - 108 - 53 - 17 - - - - gtxwc - - - - - - 12 - 28 - 53 - 17 - - - - gtgui - - - - - - 12 - 68 - 53 - 17 - - - - gtwvt - - - - - - 12 - 48 - 53 - 17 - - - - gtwin - - - - - - 12 - 88 - 53 - 17 - - - - gtwvg - - - - - - 76 - 88 - 53 - 17 - - - - gtpca - - - - - - 76 - 48 - 53 - 17 - - - - gtstd - - - - - - 76 - 28 - 53 - 17 - - - - gttrm - - - - - - 76 - 68 - 53 - 17 - - - - gtsln - - - - - - 76 - 108 - 53 - 17 - - - - gtos2 - - - - - - 36 - 8 - 85 - 17 - - - - - - - 12 - 8 - 25 - 16 - - - - GT - - - - - - 12 - 128 - 53 - 17 - - - - gtcgi - - - - - - 76 - 128 - 53 - 17 - - - - gtcrs - - - - - - - - 8 - 396 - 325 - 185 - - - - QFrame::Panel - - - QFrame::Raised - - - - - 8 - 8 - 277 - 169 - - - - Qt::ScrollBarAsNeeded - - - Qt::ScrollBarAlwaysOff - - - QAbstractItemView::SelectRows - - - 10 - - - true - - - true - - - false - - - 1 - - - 20 - - - - 1 - - - - - - - 292 - 56 - 25 - 20 - - - - Add a new element - - - ... - - - - :/resources/dc_plus.png:/resources/dc_plus.png - - - true - - - - - - 292 - 76 - 25 - 20 - - - - Sort Ascending - - - ... - - - - :/resources/sort.png:/resources/sort.png - - - true - - - - - - 292 - 96 - 25 - 20 - - - - Sort Descending - - - ... - - - - :/resources/sortdescend.png:/resources/sortdescend.png - - - true - - - - - - 292 - 112 - 25 - 20 - - - - Convert to upper-case - - - ... - - - - :/resources/toupper.png:/resources/toupper.png - - - true - - - - - - 292 - 128 - 25 - 20 - - - - Convert to lower-case - - - ... - - - - :/resources/tolower.png:/resources/tolower.png - - - true - - - - - - 292 - 156 - 25 - 20 - - - - Delete element( s ) - - - ... - - - - :/resources/dc_delete.png:/resources/dc_delete.png - - - true - - - - - - 292 - 8 - 25 - 19 - - - - ... - - - - :/resources/maximize_all.png:/resources/maximize_all.png - - - true - - - - - - 292 - 28 - 25 - 19 - - - - ... - - - - :/resources/minimize_all.png:/resources/minimize_all.png - - - true - - - - - - - 8 - 8 - 453 - 233 - - - - QFrame::Panel - - - QFrame::Raised - - - - - 12 - 12 - 46 - 13 - - - - Path - - - - - - 92 - 8 - 321 - 20 - - - - The path to the project file to be saved. - - - - - - 422 - 8 - 25 - 19 - - - - ... - - - - :/resources/open.png:/resources/open.png - - - true - - - - - - 12 - 40 - 65 - 16 - - - - HbIDE Name - - - - - - 92 - 36 - 221 - 20 - - - - The name of the project which will be displayed in the Projects tree on left docking area. - - - - - - 336 - 36 - 105 - 22 - - - - - - - 12 - 68 - 73 - 16 - - - - Output Name - - - - - - 92 - 64 - 221 - 20 - - - - The name of the linked file the project will produce after project is built. Please avoid any extention as hbmk2 will automatically do so depending upon the operating system. - - - - - - 12 - 96 - 65 - 16 - - - - Output Path - - - - - - 92 - 92 - 321 - 20 - - - - The folder where the build results will be stored. - - - - - - 12 - 124 - 65 - 16 - - - - Working Path - - - - - - 92 - 120 - 321 - 20 - - - - The working folder which will be used by hbmk2 to create in and assemble for the build process. By default it is .hbmk in the same folder where project file resides. You should keep it blank unless required most. - - - - - - 420 - 92 - 25 - 19 - - - - ... - - - - :/resources/open.png:/resources/open.png - - - true - - - - - - 420 - 120 - 25 - 19 - - - - ... - - - - :/resources/open.png:/resources/open.png - - - true - - - - - - 12 - 152 - 65 - 16 - - - - Launch Exec - - - - - - 12 - 180 - 77 - 16 - - - - Launch Params - - - - - - 92 - 148 - 321 - 20 - - - - - - - 92 - 176 - 321 - 20 - - - - - - - 12 - 208 - 65 - 16 - - - - Stay In - - - - - - 92 - 204 - 321 - 20 - - - - - - - 420 - 204 - 25 - 19 - - - - ... - - - - :/resources/open.png:/resources/open.png - - - true - - - - - - - 336 - 396 - 125 - 185 - - - - QFrame::Panel - - - QFrame::Raised - - - - - 8 - 24 - 109 - 153 - - - - - Courier New - - - - <html><head/><body><p>A free-slowing area where you can enter any other compiler switches, hbmk2 switches, or command-line swiches to be passed to hbmk2. Though it will be valid, but please do not add source files here which will be asked for on next page.</p></body></html> - - - QPlainTextEdit::NoWrap - - - - - - 4 - 4 - 117 - 16 - - - - Anything Else - - - Qt::AlignCenter - - - - - - - - - 12 - 0 - 449 - 33 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 4 - 8 - 25 - 19 - - - - Select Sources - - - ... - - - - :/resources/open.png:/resources/open.png - - - true - - - - - - 92 - 8 - 25 - 19 - - - - Expand all sections - - - ... - - - - :/resources/maximize_all.png:/resources/maximize_all.png - - - true - - - - - - 120 - 8 - 25 - 19 - - - - Collapse all sections - - - ... - - - - :/resources/minimize_all.png:/resources/minimize_all.png - - - true - - - - - - 416 - 8 - 25 - 19 - - - - ... - - - - :/resources/dc_delete.png:/resources/dc_delete.png - - - true - - - - - - - 12 - 32 - 449 - 549 - - - - QFrame::Panel - - - QFrame::Raised - - - - - 8 - 8 - 433 - 533 - - - - QAbstractItemView::SelectRows - - - 10 - - - true - - - true - - - false - - - - 1 - - - - - - - - - - 8 - 588 - 453 - 37 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 292 - 8 - 75 - 23 - - - - Save this project - - - Save - - - - - - 372 - 8 - 75 - 23 - - - - Close - - - - - - 212 - 8 - 75 - 23 - - - - Clear current project to create new one ! - - - New - - - - - - 8 - 8 - 25 - 19 - - - - Go to previous page - - - ... - - - - :/resources/dc_left.png:/resources/dc_left.png - - - true - - - - - - 40 - 8 - 25 - 19 - - - - Go to next page - - - ... - - - - :/resources/dc_right.png:/resources/dc_right.png - - - true - - - - - - - - - diff --git a/harbour/contrib/hbide/projmanager.prg b/harbour/contrib/hbide/projmanager.prg deleted file mode 100644 index 4f182c0d88..0000000000 --- a/harbour/contrib/hbide/projmanager.prg +++ /dev/null @@ -1,1776 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 03Jan2010 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbide.ch" -#include "hbqtgui.ch" -#include "common.ch" -#include "hbclass.ch" - -/*----------------------------------------------------------------------*/ -// -// Class IdeSource -// -/*----------------------------------------------------------------------*/ - -CLASS IdeSource - - DATA original - DATA normalized - DATA filter - DATA path - DATA file - DATA ext - DATA projPath - - METHOD new( cSource ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeSource:new( cSource ) - LOCAL cFilt, cPathFile, cPath, cFile, cExt - - cSource := hbide_pathToOSPath( cSource ) - - hbide_parseHbpFilter( cSource, @cFilt, @cPathFile ) - hb_fNameSplit( cPathFile, @cPath, @cFile, @cExt ) - - ::original := cSource - ::normalized := hbide_pathNormalized( cSource, .t. ) - ::filter := cFilt - ::path := hbide_pathNormalized( cPath, .t. ) - ::file := cFile - //::ext := lower( cExt ) - ::ext := cExt - - RETURN Self - -/*----------------------------------------------------------------------*/ -// -// Class IdeProject -// -/*----------------------------------------------------------------------*/ - -CLASS IdeProject - - DATA aProjProps INIT {} - - DATA fileName INIT "" - DATA normalizedName INIT "" - - DATA type INIT "Executable" - DATA title INIT "" - DATA location INIT hb_dirBase() + "projects" - DATA destination INIT "" - DATA outputName INIT "" - DATA backup INIT "" - DATA launchParams INIT "" - DATA launchProgram INIT "" - DATA wrkDirectory INIT "" - DATA isXhb INIT .f. - DATA isXpp INIT .f. - DATA isClp INIT .f. - - DATA hbpFlags INIT {} - DATA sources INIT {} - DATA dotHbp INIT "" - DATA compilers INIT "" - DATA cPathHbMk2 - DATA hSources INIT {=>} - DATA hPaths INIT {=>} - DATA lPathAbs INIT .F. // Lets try relative paths first . xhp and hbp will be relative anyway - DATA projPath INIT "" - - METHOD new( oIDE, aProps ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeProject:new( oIDE, aProps ) - LOCAL b_, a_, oSource, cSource - - IF HB_ISARRAY( aProps ) .AND. !empty( aProps ) - ::aProjProps := aProps - - b_:= aProps - a_:= b_[ PRJ_PRP_PROPERTIES, 2 ] - - ::type := a_[ PRJ_PRP_TYPE ] - ::title := a_[ PRJ_PRP_TITLE ] - ::location := "" /* See below */ - ::wrkDirectory := a_[ PRJ_PRP_WRKFOLDER ] - ::destination := a_[ PRJ_PRP_DSTFOLDER ] - ::outputName := a_[ PRJ_PRP_OUTPUT ] - ::launchParams := a_[ PRJ_PRP_LPARAMS ] - ::launchProgram := a_[ PRJ_PRP_LPROGRAM ] - ::backup := a_[ PRJ_PRP_BACKUP ] - ::isXhb := a_[ PRJ_PRP_XHB ] == "YES" - ::isXpp := a_[ PRJ_PRP_XPP ] == "YES" - ::isClp := a_[ PRJ_PRP_CLP ] == "YES" - - ::projPath := oIde:oPM:getProjectPathFromTitle( ::title ) - IF empty( ::projPath ) - ::projPath := hb_dirBase() /* In case of new project */ - ENDIF - ::location := ::projPath - - ::hbpFlags := aclone( b_[ PRJ_PRP_FLAGS , 2 ] ) - ::sources := aclone( b_[ PRJ_PRP_SOURCES , 2 ] ) - ::dotHbp := "" - ::compilers := "" - - ::cPathHbMk2 := oIde:oINI:getHbmk2File() - - FOR EACH cSource IN ::sources - cSource := hbide_syncProjPath( ::projPath, cSource ) - - oSource := IdeSource():new( cSource ) - oSource:projPath := ::projPath - ::hSources[ oSource:normalized ] := oSource - ::hPaths[ oSource:path ] := NIL - NEXT - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ -// IdeProjectManager -/*----------------------------------------------------------------------*/ - -CLASS IdeProjManager INHERIT IdeObject - - DATA cargo - DATA cSaveTo - DATA aPrjProps INIT {} - - DATA nStarted INIT 0 - - DATA lLaunch INIT .F. - DATA cProjectInProcess INIT "" - DATA cPPO INIT "" - DATA lPPO INIT .F. - DATA oProject - DATA cBatch - DATA oProcess - DATA lSaveOK INIT .F. - - DATA cProjFileName INIT "" - DATA lNew INIT .F. - DATA lFetch INIT .T. - DATA lUpdateTree INIT .F. - - DATA cIfError INIT NIL - - METHOD new( oIDE ) - METHOD create( oIDE ) - METHOD destroy() - - METHOD populate() - METHOD loadProperties( cProjFileName, lNew, lFetch, lUpdateTree ) - METHOD fetchProperties() - METHOD getProperties() - METHOD sortSources( cMode ) - METHOD save( lCanClose ) - METHOD updateHbp( iIndex ) - METHOD addSources() - - METHOD setCurrentProject( cProjectName ) - METHOD selectCurrentProject() - - METHOD getCurrentProject( lAlert ) - METHOD getCurrentProjectTitle() - METHOD getProjectProperties( cProjectTitle ) - - METHOD getProjectByFile( cProjectFile ) - METHOD getProjectByTitle( cProjectTitle ) - METHOD getProjectsTitleList() - - METHOD getProjectFileNameFromTitle( cProjectTitle ) - METHOD getProjectTypeFromTitle( cProjectTitle ) - METHOD getProjectPathFromTitle( cProjectTitle ) - METHOD getSourcesByProjectTitle( cProjectTitle ) - - METHOD removeProject( cProjectTitle ) - METHOD closeProject( cProjectTitle ) - METHOD promptForPath( oEditPath, cTitle, cObjFileName ) - METHOD buildSource( lExecutable ) - METHOD buildProject( cProject, lLaunch, lRebuild, lPPO, lViaQt ) - METHOD launchProject( cProject, cExe ) - METHOD showOutput( cOutput, mp2, oProcess ) - METHOD finished( nExitCode, nExitStatus, oProcess ) - METHOD isValidProjectLocation( lTell ) - METHOD setProjectLocation( cPath ) - METHOD buildInterface() - METHOD pullHbpData( cHbp ) - METHOD synchronizeAlienProject( cProjFileName ) - METHOD outputText( cText ) - METHOD runAsScript() - METHOD insertHeader( aHdr, aHbp ) - METHOD stripHeader( aHbp ) - METHOD moveLine( nDirection ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:new( oIDE ) - - ::oIDE := oIDE - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:create( oIDE ) - - DEFAULT oIDE TO ::oIDE - - ::oIDE := oIDE - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:destroy() - - IF !empty( ::oUI ) - ::oUI:buttonCn :disconnect( "clicked()" ) - ::oUI:buttonSave :disconnect( "clicked()" ) - ::oUI:buttonSaveExit :disconnect( "clicked()" ) - ::oUI:buttonSelect :disconnect( "clicked()" ) - ::oUI:buttonUp :disconnect( "clicked()" ) - ::oUI:buttonDown :disconnect( "clicked()" ) - // ::oUI:buttonSort :disconnect( "clicked()" ) - // ::oUI:buttonSortZA :disconnect( "clicked()" ) - // ::oUI:buttonSortOrg :disconnect( "clicked()" ) - ::oUI:tabWidget :disconnect( "currentChanged(int)" ) - ::oUI:buttonChoosePrjLoc:disconnect( "clicked()" ) - ::oUI:buttonChooseWd :disconnect( "clicked()" ) - ::oUI:buttonChooseDest :disconnect( "clicked()" ) - ::oUI:buttonBackup :disconnect( "clicked()" ) - ::oUI:editPrjLoctn :disconnect( "textChanged(QString)" ) - - ::oUI:destroy() - ENDIF - - IF !empty( ::aPrjProps ) - ::aPrjProps[ 1,1 ] := NIL - ::aPrjProps[ 1,2 ] := NIL - ::aPrjProps[ 1 ] := NIL - ::aPrjProps[ 2,1 ] := NIL - ::aPrjProps[ 2,2 ] := NIL - ::aPrjProps[ 2 ] := NIL - ::aPrjProps[ 3,1 ] := NIL - ::aPrjProps[ 3,2 ] := NIL - ::aPrjProps[ 3 ] := NIL - ::aPrjProps[ 4,1 ] := NIL - ::aPrjProps[ 4,2 ] := NIL - ::aPrjProps[ 4 ] := NIL - ::aPrjProps[ 5 ] := NIL - - ::aPrjProps := NIL - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:populate() - LOCAL cProject - - FOR EACH cProject IN ::oINI:aProjFiles - ::loadProperties( cProject, .f., .f., .T. ) - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:getProperties() - LOCAL cTmp, n - - cTmp := ::getCurrentProject() - IF ( n := ascan( ::aProjects, {|e_| e_[ 3, PRJ_PRP_PROPERTIES, 2, PRJ_PRP_TITLE ] == cTmp } ) ) > 0 - ::loadProperties( ::aProjects[ n, 1 ], .f., .t., .t. ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:loadProperties( cProjFileName, lNew, lFetch, lUpdateTree ) - LOCAL nAlready, cProjPath - - DEFAULT cProjFileName TO "" - DEFAULT lNew TO .F. - DEFAULT lFetch TO .T. - DEFAULT lUpdateTree TO .F. - - ::cProjFileName := cProjFileName - ::lNew := lNew - ::lFetch := lFetch - ::lUpdateTree := lUpdateTree - - ::aPrjProps := {} - ::cSaveTo := "" - ::oProject := NIL - - IF lNew - lFetch := .t. - ELSE - IF empty( cProjFileName ) - cProjFileName := hbide_fetchAFile( ::oDlg, "Open Project...", { { "Harbour Make Projects", "*.hbp" } , ; - { "xMate Projects" , "*.xhp" } , ; - { "xBuild Projects" , "*.xbp" } } ) - cProjFileName := ::synchronizeAlienProject( cProjFileName ) - ::oDockPT:show() - ENDIF - IF empty( cProjFileName ) - RETURN Self - ENDIF - ENDIF - - cProjFileName := hbide_pathToOSPath( cProjFileName ) - - ::oIde:oPropertiesDock:setWindowTitle( cProjFileName ) - - nAlready := ascan( ::aProjects, {|e_| hb_FileMatch( e_[ 1 ], hbide_pathNormalized( cProjFileName ) ) } ) - - IF !empty( cProjFileName ) .AND. hb_fileExists( cProjFileName ) - ::aPrjProps := ::pullHbpData( hbide_pathToOSPath( cProjFileName ) ) - ENDIF - - IF lFetch - IF lNew - IF empty( cProjPath := hbide_fetchADir( ::oDlg, "Project Path", hbide_SetWrkFolderLast() ) ) - RETURN Self - ENDIF - cProjPath := hbide_pathAppendLastSlash( cProjPath ) - hbide_SetWrkFolderLast( cProjPath ) - ENDIF - /* Access/Assign via this object */ - ::oProject := IdeProject():new( ::oIDE, ::aPrjProps ) - IF !empty( cProjPath ) - ::oProject:location := hbide_pathNormalized( cProjPath, .f. ) - ::oProject:projPath := ::oProject:location - ENDIF - // - ::oPropertiesDock:hide() - ::oPropertiesDock:show() - ELSE - IF !empty( ::aPrjProps ) - IF nAlready == 0 - aadd( ::oIDE:aProjects, { hbide_pathNormalized( cProjFileName ), cProjFileName, aclone( ::aPrjProps ) } ) - IF lUpdateTree - ::oIDE:updateProjectTree( ::aPrjProps ) - ENDIF - hbide_mnuAddFileToMRU( ::oIDE, cProjFileName, "recent_projects" ) - ELSE - ::aProjects[ nAlready, 3 ] := aclone( ::aPrjProps ) - IF lUpdateTree - ::oIDE:updateProjectTree( ::aPrjProps ) - ENDIF - ENDIF - ENDIF - - ::oHM:refresh() /* Rearrange Projects Data */ - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ -// -// Without user-interface -// -METHOD IdeProjManager:pullHbpData( cHbp ) - LOCAL n, n1, s, cKey, cVal, aOptns, aFiles, c3rd, nL, aData, cHome, cOutName, cType - LOCAL aPrp := { ; - "hbide_type=" , ; - "hbide_title=" , ; - "hbide_location=" , ; - "hbide_workingfolder=" , ; - "hbide_destinationfolder=" , ; - "hbide_output=" , ; - "hbide_launchparams=" , ; - "hbide_launchprogram=" , ; - "hbide_backupfolder=" , ; - "hbide_xhb=" , ; - "hbide_xpp=" , ; - "hbide_clp=" , ; - "hbide_launchim=" ; - } - - LOCAL a1_0 := afill( array( PRJ_PRP_PRP_VRBLS ), "" ) - LOCAL a1_1 := {} - LOCAL a2_0 := {} - LOCAL a2_1 := {} - LOCAL a3_0 := {} - LOCAL a3_1 := {} - LOCAL a4_0 := {} - LOCAL a4_1 := {} - LOCAL a3rd := {} - - hb_fNameSplit( cHbp, @cHome, @cOutName ) - cHome := hbide_pathStripLastSlash( cHome ) - - c3rd := "-3rd=" - nL := Len( c3rd ) - aData := hbide_fetchHbpData( cHbp ) - aOptns := aData[ 1 ] - aFiles := aData[ 2 ] - - FOR EACH s IN aFiles - s := hbide_stripRoot( cHome, s ) - NEXT - - IF ( n := ascan( aOptns, {|e| lower( e ) $ "-hbexe,-hblib,-hbdyn" } ) ) > 0 - cType := lower( aOptns[ n ] ) - cType := iif( cType == "-hblib", "Lib", iif( cType == "-hbdyn", "Dll", "Executable" ) ) - ELSE - cType := "Executable" - ENDIF - - /* Separate HbIDE specific flags */ - FOR EACH s IN aOptns - IF ( n := at( c3rd, s ) ) > 0 - IF ( n1 := hb_at( " ", s, n ) ) > 0 - aadd( a3rd, substr( s, n + nL, n1 - n - nL ) ) - s := substr( s, 1, n - 1 ) + substr( s, n1 ) - ELSE - aadd( a3rd, substr( s, n + nL ) ) - s := substr( s, 1, n - 1 ) - ENDIF - ENDIF - NEXT - - /* PRJ_PRP_PROPERTIES */ - FOR EACH s IN a3rd - IF ( n := at( "=", s ) ) > 0 - cKey := alltrim( substr( s, 1, n ) ) - cVal := alltrim( substr( s, n + 1 ) ) - - IF ( n := ascan( aPrp, {|e| e == cKey } ) ) > 0 - a1_0[ n ] := hbide_amp2space( cVal ) - ENDIF - ENDIF - NEXT - - a1_0[ PRJ_PRP_TYPE ] := iif( empty( a1_0[ PRJ_PRP_TYPE ] ), cType , a1_0[ PRJ_PRP_TYPE ] ) - a1_0[ PRJ_PRP_TITLE ] := iif( empty( a1_0[ PRJ_PRP_TITLE ] ), cOutName, a1_0[ PRJ_PRP_TITLE ] ) - a1_0[ PRJ_PRP_OUTPUT ] := cOutName - a1_0[ PRJ_PRP_LOCATION ] := hbide_pathNormalized( cHome ) - - /* PRJ_PRP_FLAGS */ - FOR EACH s IN aOptns - IF !empty( s ) - aadd( a2_0, s ) - ENDIF - NEXT - - /* PRJ_PRP_SOURCES */ - FOR EACH s IN aFiles - aadd( a3_0, s ) - NEXT - - /* Check sources which are not compilable but make-up source list */ - FOR EACH s IN a3rd - IF "hbide_file=" == lower( left( s, 11 ) ) - aadd( a3_0, hbide_stripRoot( cHome, alltrim( substr( s, 12 ) ) ) ) - ENDIF - NEXT - - /* Properties */ - FOR EACH s IN a1_0 - aadd( a1_1, s ) - NEXT - - /* Flags */ - IF !empty( a2_0 ) - FOR EACH s IN a2_0 - aadd( a2_1, s ) - NEXT - ENDIF - - /* Sources */ - IF !empty( a3_0 ) - FOR EACH s IN a3_0 - IF !( "#" == left( s,1 ) ) .and. !empty( s ) - aadd( a3_1, hbide_stripRoot( cHome, hbide_stripFilter( s ) ) ) - ENDIF - NEXT - ENDIF - - RETURN { { a1_0, a1_1 }, { a2_0, a2_1 }, { a3_0, a3_1 }, { a4_0, a4_1 }, hbide_readSource( cHbp ) } - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:save( lCanClose ) - LOCAL a_, lOk, txt_, nAlready - LOCAL c3rd := "-3rd=" - LOCAL hdr_:= {} - - * Validate certain parameters before continuing ... (vailtom) - - IF Empty( ::oUI:editPrjTitle:text() ) - ::oUI:editPrjTitle:setText( ::oUI:editOutName:text() ) - ENDIF - - IF Empty( ::oUI:editOutName:text() ) - MsgBox( 'Invalid Output FileName' ) - ::oUI:editOutName:setFocus() - RETURN .F. - ENDIF - - /* This must be valid, we cannot skip */ - IF !hbide_isValidPath( ::oUI:editPrjLoctn:text(), 'Project Location' ) - ::oUI:editPrjLoctn:setFocus() - RETURN .F. - ENDIF - - txt_:= {} - // - aadd( hdr_, c3rd + "hbide_version=" + "1.0" ) - // - IF ::oUI:comboPrjType:currentIndex() != 0 - aadd( hdr_, c3rd + "hbide_type=" + { "Executable", "Lib", "Dll" }[ ::oUI:comboPrjType:currentIndex() + 1 ] ) - ENDIF - IF ! Empty( ::oUI:editPrjTitle :text() ) - aadd( hdr_, c3rd + "hbide_title=" + hbide_space2amp( ::oUI:editPrjTitle :text() ) ) - ENDIF - IF ! Empty( ::oUI:editWrkFolder :text() ) - aadd( hdr_, c3rd + "hbide_workingfolder=" + hbide_space2amp( ::oUI:editWrkFolder :text() ) ) - ENDIF - IF ! Empty( ::oUI:editDstFolder :text() ) - aadd( hdr_, c3rd + "hbide_destinationfolder=" + hbide_space2amp( ::oUI:editDstFolder :text() ) ) - ENDIF - IF ! Empty( ::oUI:editOutName :text() ) - aadd( hdr_, c3rd + "hbide_output=" + hbide_space2amp( ::oUI:editOutName :text() ) ) - ENDIF - IF ! Empty( ::oUI:editLaunchParams:text() ) - aadd( hdr_, c3rd + "hbide_launchparams=" + hbide_space2amp( ::oUI:editLaunchParams:text() ) ) - ENDIF - IF ! Empty( ::oUI:editLaunchExe :text() ) - aadd( hdr_, c3rd + "hbide_launchprogram=" + hbide_space2amp( ::oUI:editLaunchExe :text() ) ) - ENDIF - IF ! Empty( ::oUI:editBackup :text() ) - aadd( hdr_, c3rd + "hbide_backupfolder=" + hbide_space2amp( ::oUI:editBackup :text() ) ) - ENDIF - IF ::oUI:checkXhb:isChecked() - aadd( hdr_, c3rd + "hbide_xhb=" + iif( ::oUI:checkXhb:isChecked(), "YES", "NO" ) ) - ENDIF - IF ::oUI:checkXpp:isChecked() - aadd( hdr_, c3rd + "hbide_xpp=" + iif( ::oUI:checkXpp:isChecked(), "YES", "NO" ) ) - ENDIF - IF ::oUI:checkClp:isChecked() - aadd( hdr_, c3rd + "hbide_clp=" + iif( ::oUI:checkClp:isChecked(), "YES", "NO" ) ) - ENDIF - - a_:= hbide_synchronizeForHbp( hbide_memoToArray( ::oUI:editSources:toPlainText() ) ) - a_:= ::insertHeader( hdr_, a_ ) - aeval( a_, {|e| aadd( txt_, e ) } ) - aadd( txt_, " " ) - - ::cSaveTo := ::oUI:editPrjLoctn:text() + ::pathSep + ::oUI:editOutName:text() + ".hbp" - - ::cSaveTo := hbide_pathToOSPath( ::cSaveTo ) - - IF ( lOk := hbide_createTarget( ::cSaveTo, txt_ ) ) - ::aPrjProps := ::pullHbpData( hbide_pathToOSPath( ::cSaveTo ) ) - - IF ( nAlready := ascan( ::aProjects, {|e_| hb_FileMatch( e_[ 1 ], hbide_pathNormalized( ::cSaveTo ) ) } ) ) == 0 - aadd( ::oIDE:aProjects, { hbide_pathNormalized( ::cSaveTo ), ::cSaveTo, aclone( ::aPrjProps ) } ) - IF ::lUpdateTree - ::oIDE:updateProjectTree( ::aPrjProps ) - ENDIF - hbide_mnuAddFileToMRU( ::oIDE, ::cSaveTo, "recent_projects" ) - ELSE - ::aProjects[ nAlready, 3 ] := aclone( ::aPrjProps ) - IF ::lUpdateTree - ::oIDE:updateProjectTree( ::aPrjProps ) - ENDIF - ENDIF - - ::oHM:refresh() /* Rearrange Projects Data */ - ELSE - MsgBox( 'Error saving project file: ' + ::cSaveTo, 'Error saving project ...' ) - - ENDIF - - IF lCanClose .AND. lOk - ::oPropertiesDock:hide() - ENDIF - - IF lOk - ::oDockPT:show() - ENDIF - RETURN lOk - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:insertHeader( aHdr, aHbp ) - LOCAL txt_:={} - - aadd( txt_, "#" ) - aadd( txt_, "# $" + "Id" + "$" ) - aadd( txt_, "#" ) - aadd( txt_, "" ) - aeval( aHdr, {|e| aadd( txt_, e ) } ) - aadd( txt_, "" ) - aeval( aHbp, {|e| aadd( txt_, e ) } ) - aadd( txt_, "" ) - - RETURN txt_ - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:stripHeader( aHbp ) - LOCAL nStart, n, s - LOCAL a_:= {} - - FOR EACH s IN aHbp - n := s:__enumIndex() - s := alltrim( s ) - IF left( s, 1 ) == "#" .AND. n <= 3 - nStart := n - LOOP - ENDIF - IF empty( s ) - LOOP - ENDIF - IF "-3rd=hbide_file" $ s - nStart := n - EXIT - ENDIF - IF ! ( "-3rd=hbide_" $ s ) - nStart := n - EXIT - ENDIF - NEXT - - IF ! empty( nStart ) - FOR EACH s IN aHbp - IF s:__enumIndex() < nStart - LOOP - ENDIF - aadd( a_, s ) - NEXT - ELSE - RETURN aHbp - ENDIF - - RETURN a_ - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:updateHbp( iIndex ) - LOCAL txt_ - - IF iIndex != 3 - RETURN NIL - ENDIF - - /* Sources */ - txt_:= hbide_synchronizeForHbp( hb_atokens( ::oUI:editSources:toPlainText(), _EOL ) ) - - /* Final assault */ - ::oUI:editHbp:setPlainText( hbide_arrayToMemo( txt_ ) ) - - RETURN txt_ - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:fetchProperties() - - IF empty( ::oProject ) - ::oProject := IdeProject():new( ::oIDE, ::aPrjProps ) - ENDIF - - IF empty( ::oUI ) - ::buildInterface() - ENDIF - - IF empty( ::aPrjProps ) - ::oUI:comboPrjType:setCurrentIndex( 0 ) - - ::oUI:editPrjTitle :setText( "" ) - ::oUI:editPrjLoctn :setText( hbide_pathNormalized( ::oProject:location, .F. ) ) - ::oUI:editDstFolder:setText( "" ) - ::oUI:editBackup :setText( "" ) - ::oUI:editOutName :setText( "" ) - - ::oUI:editFlags :setPlainText( "" ) - ::oUI:editSources :setPlainText( "" ) - - ::oUI:editLaunchParams:setText( "" ) - ::oUI:editLaunchExe:setText( "" ) - ::oUI:editWrkFolder:setText( "" ) - ::oUI:editHbp:setPlainText( "" ) - - ::oUI:oWidget:setWindowTitle( 'New Project...' ) - - ELSE - DO CASE - CASE empty( ::aPrjProps ) - ::oUI:comboPrjType:setCurrentIndex( 0 ) - CASE ::aPrjProps[ PRJ_PRP_PROPERTIES, 2, E_qPrjType ] == "Lib" - ::oUI:comboPrjType:setCurrentIndex( 1 ) - CASE ::aPrjProps[ PRJ_PRP_PROPERTIES, 2, E_qPrjType ] == "Dll" - ::oUI:comboPrjType:setCurrentIndex( 2 ) - OTHERWISE - ::oUI:comboPrjType:setCurrentIndex( 0 ) - ENDCASE - - ::oUI:editPrjTitle :setText( ::oProject:title ) - ::oUI:editPrjLoctn :setText( ::oProject:location ) - ::oUI:editDstFolder:setText( ::oProject:destination ) - ::oUI:editOutName :setText( ::oProject:outputName ) - ::oUI:editBackup :setText( ::oProject:backup ) - - ::oUI:checkXhb :setChecked( ::oProject:isXhb ) - ::oUI:checkXpp :setChecked( ::oProject:isXpp ) - ::oUI:checkClp :setChecked( ::oProject:isClp ) - - ::oUI:editFlags :setPlainText( hbide_arrayToMemo( ::aPrjProps[ PRJ_PRP_FLAGS , 1 ] ) ) - ::oUI:editSources :setPlainText( hbide_arrayToMemo( ::stripHeader( ::aPrjProps[ 5 ] ) ) ) - - ::oUI:editLaunchParams:setText( ::oProject:launchParams ) - ::oUI:editLaunchExe:setText( ::oProject:launchProgram ) - ::oUI:editWrkFolder:setText( ::oProject:wrkDirectory ) - - ::oUI:editHbp:setPlainText( "" ) - - ::oUI:oWidget:setWindowTitle( 'Properties for "' + ::oUI:editPrjTitle:Text() + '"' ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:buildInterface() - LOCAL cLukupPng - - ::oUI := hbide_getUI( "projectpropertiesex" ) - - ::oPropertiesDock:oWidget:setWidget( ::oUI:oWidget ) - - ::oUI:comboPrjType:addItem( "Executable" ) - ::oUI:comboPrjType:addItem( "Library" ) - ::oUI:comboPrjType:addItem( "Dll" ) - - cLukupPng := hbide_image( "folder" ) - // - ::oUI:buttonChoosePrjLoc:setIcon( QIcon( cLukupPng ) ) - ::oUI:buttonChooseWd :setIcon( QIcon( cLukupPng ) ) - ::oUI:buttonChooseDest :setIcon( QIcon( cLukupPng ) ) - ::oUI:buttonBackup :setIcon( QIcon( cLukupPng ) ) - - ::oUI:buttonSelect :setIcon( QIcon( hbide_image( "open" ) ) ) - ::oUI:buttonUp :setIcon( QIcon( hbide_image( "dc_up" ) ) ) - ::oUI:buttonDown :setIcon( QIcon( hbide_image( "dc_down" ) ) ) - - ::oUI:buttonSort :setIcon( QIcon( hbide_image( "sort" ) ) ) - ::oUI:buttonSortZA :setIcon( QIcon( hbide_image( "sortdescend" ) ) ) - ::oUI:buttonSortOrg:setIcon( QIcon( hbide_image( "invertcase" ) ) ) - - ::oUI:buttonSort :hide() - ::oUI:buttonSortZA :hide() - ::oUI:buttonSortOrg:hide() - - ::oUI:buttonCn :connect( "clicked()", {|| ::lSaveOK := .f., ::oPropertiesDock:hide() } ) - ::oUI:buttonSave :connect( "clicked()", {|| ::lSaveOK := .t., ::save( .F. ) } ) - ::oUI:buttonSaveExit :connect( "clicked()", {|| ::lSaveOK := .t., ::save( .T. ) } ) - ::oUI:buttonSelect :connect( "clicked()", {|| ::addSources() } ) - ::oUI:buttonUp :connect( "clicked()", {|| ::moveLine( -1 ) } ) - ::oUI:buttonDown :connect( "clicked()", {|| ::moveLine( +1 ) } ) -// ::oUI:buttonSort :connect( "clicked()", {|| ::sortSources( "az" ) } ) -// ::oUI:buttonSortZA :connect( "clicked()", {|| ::sortSources( "za" ) } ) -// ::oUI:buttonSortOrg :connect( "clicked()", {|| ::sortSources( "org" ) } ) - ::oUI:tabWidget :connect( "currentChanged(int)", {|p| ::updateHbp( p ) } ) - ::oUI:buttonChoosePrjLoc:connect( "clicked()", {|| ::PromptForPath( ::oUI:editPrjLoctn , 'Choose Project Location...' ) } ) - ::oUI:buttonChooseWd :connect( "clicked()", {|| ::PromptForPath( ::oUI:editWrkFolder, 'Choose Working Folder...' ) } ) - ::oUI:buttonChooseDest :connect( "clicked()", {|| ::PromptForPath( ::oUI:editDstFolder, 'Choose Destination Folder...' ) } ) - ::oUI:buttonBackup :connect( "clicked()", {|| ::PromptForPath( ::oUI:editBackup , 'Choose Backup Folder...' ) } ) - ::oUI:editPrjLoctn :connect( "textChanged(QString)", {|cPath| ::setProjectLocation( cPath ) } ) - - /* Set monospaced fonts */ - ::oUI:editFlags :setFont( ::oFont:oWidget ) - ::oUI:editSources :setFont( ::oFont:oWidget ) - ::oUI:editHbp :setFont( ::oFont:oWidget ) - - #if 0 - ::oUI:editPrjTitle :setFont( ::oFont:oWidget ) - ::oUI:editPrjLoctn :setFont( ::oFont:oWidget ) - ::oUI:editWrkFolder :setFont( ::oFont:oWidget ) - ::oUI:editDstFolder :setFont( ::oFont:oWidget ) - ::oUI:editOutName :setFont( ::oFont:oWidget ) - ::oUI:editBackup :setFont( ::oFont:oWidget ) - ::oUI:editLaunchParams:setFont( ::oFont:oWidget ) - ::oUI:editLaunchExe :setFont( ::oFont:oWidget ) - #endif - - ::oUI:setTabOrder( ::oUI:comboPrjType , ::oUI:editPrjTitle ) - ::oUI:setTabOrder( ::oUI:editPrjTitle , ::oUI:editPrjLoctn ) - ::oUI:setTabOrder( ::oUI:editPrjLoctn , ::oUI:editOutName ) - ::oUI:setTabOrder( ::oUI:editOutName , ::oUI:checkXhb ) - ::oUI:setTabOrder( ::oUI:checkXhb , ::oUI:checkXpp ) - ::oUI:setTabOrder( ::oUI:checkXpp , ::oUI:checkClp ) - ::oUI:setTabOrder( ::oUI:checkClp , ::oUI:editDstFolder ) - ::oUI:setTabOrder( ::oUI:editDstFolder , ::oUI:editBackup ) - ::oUI:setTabOrder( ::oUI:editBackup , ::oUI:editLaunchParams ) - ::oUI:setTabOrder( ::oUI:editLaunchParams, ::oUI:editLaunchExe ) - ::oUI:setTabOrder( ::oUI:editLaunchExe , ::oUI:editWrkFolder ) - ::oUI:setTabOrder( ::oUI:editWrkFolder , ::oUI:tabFiles ) - // - ::oUI:setTabOrder( ::oUI:tabFiles , ::oUI:editSources ) - ::oUI:setTabOrder( ::oUI:editSources , ::oUI:tabFlags ) - // - ::oUI:setTabOrder( ::oUI:tabFlags , ::oUI:editFlags ) - ::oUI:setTabOrder( ::oUI:editFlags , ::oUI:tabHbp ) - // - ::oUI:setTabOrder( ::oUI:tabHbp , ::oUI:editHbp ) - // - ::oUI:setTabOrder( ::oUI:editHbp , ::oUI:buttonSaveExit ) - ::oUI:setTabOrder( ::oUI:buttonSaveExit , ::oUI:buttonSave ) - ::oUI:setTabOrder( ::oUI:buttonSave , ::oUI:buttonCn ) - - ::oUI:tabHbp:hide() - ::oUI:tabFlags:hide() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:synchronizeAlienProject( cProjFileName ) - LOCAL cPath, cFile, cExt, cHbp - LOCAL cExeHbMk2, oProcess, cCmd - - hb_fNameSplit( cProjFileName, @cPath, @cFile, @cExt ) - IF lower( cExt ) == ".hbp" /* Nothing to do */ - RETURN cProjFileName - ENDIF - - IF !( lower( cExt ) $ ".xhp|.xbp" ) /* Not a valid alien project file */ - RETURN "" - ENDIF - - cHbp := cPath + cFile + ".hbp" - IF hb_fileExists( cHbp ) - IF ! hbide_getYesNo( "A .hbp with converted name already exists, overwrite?", "", "Project exists" ) - RETURN "" - ENDIF - ENDIF - - cExeHbMk2 := ::oINI:getHbmk2File() - - SWITCH lower( cExt ) - CASE ".xhp" - cCmd := cExeHbMk2 + " -xhp=" + cProjFileName - EXIT - CASE ".xbp" - cCmd := cExeHbMk2 + " -xbp=" + cProjFileName - EXIT - CASE "???" - cCmd := cExeHbMk2 + " -hbmake=" + cProjFileName - EXIT - ENDSWITCH - - oProcess := QProcess() - oProcess:start( cCmd ) - oProcess:waitForFinished() - - RETURN cHbp - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:sortSources( cMode ) - LOCAL a_, cTyp, s, d_, n - LOCAL aSrc := { ".prg", ".ch", ".c", ".cpp", ".h", ".obj", ".o", ".lib", ".a", ".rc", ".res" } - LOCAL aTxt := { {} , {} , {} , {} , {} , {} , {} , {} , {} , {} , {} } - LOCAL aRst := {} - - a_:= hbide_memoToArray( ::oUI:editSources:toPlainText() ) - - IF cMode == "az" - asort( a_, , , {|e,f| lower( hbide_stripFilter( e ) ) < lower( hbide_stripFilter( f ) ) } ) - ELSEIF cMode == "za" - asort( a_, , , {|e,f| lower( hbide_stripFilter( f ) ) < lower( hbide_stripFilter( e ) ) } ) - ELSEIF cMode == "org" - asort( a_, , , {|e,f| lower( hbide_stripFilter( e ) ) < lower( hbide_stripFilter( f ) ) } ) - - FOR EACH s IN a_ - s := alltrim( s ) - IF !( left( s, 1 ) == "#" ) - cTyp := hbide_sourceType( s ) - - IF ( n := ascan( aSrc, {|e| cTyp == e } ) ) > 0 - aadd( aTxt[ n ], s ) - ELSE - aadd( aRst, s ) - ENDIF - ENDIF - NEXT - - a_:= {} - FOR EACH d_ IN aTxt - IF !empty( d_ ) - aadd( a_, " #" ) - aadd( a_, " #" + aSrc[ d_:__enumIndex() ] ) - aadd( a_, " #" ) - FOR EACH s IN d_ - aadd( a_, s ) - NEXT - ENDIF - NEXT - IF !empty( aRst ) - aadd( a_, " #" ) - aadd( a_, " #" + "Unrecognized..." ) - aadd( a_, " #" ) - FOR EACH s IN aRst - aadd( a_, s ) - NEXT - ENDIF - ENDIF - - ::oUI:editSources:clear() - ::oUI:editSources:setPlainText( hbide_arrayToMemo( a_ ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:setProjectLocation( cPath ) - - IF ! hb_dirExists( cPath ) - ::oUI:editPrjLoctn:setStyleSheet( "background-color: rgba( 240,120,120,255 );" ) - ::oUI:editSources:setEnabled( .f. ) - ::oUI:buttonSelect:setEnabled( .f. ) - ELSE - ::oProject:location := cPath - ::oUI:editPrjLoctn:setStyleSheet( "" ) - ::oUI:editSources:setEnabled( .T. ) - ::oUI:buttonSelect:setEnabled( .T. ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:isValidProjectLocation( lTell ) - LOCAL lOk := .f. - - IF empty( ::oUI:editPrjLoctn:text() ) - IF lTell - MsgBox( "Please supply 'Project Location' first" ) - ENDIF - ELSEIF ! hb_dirExists( ::oUI:editPrjLoctn:text() ) - IF lTell - MsgBox( "Please ensure 'Project Location' is correct" ) - ENDIF - ELSE - lOk := .t. - ENDIF - - RETURN lOk - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:moveLine( nDirection ) - - IF nDirection == -1 - - ELSE - - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:addSources() - LOCAL aFiles, a_, b_, s, cHome - - IF ::isValidProjectLocation( .t. ) - IF !empty( aFiles := ::oSM:selectSource( "openmany", , , ::oUI:editPrjLoctn:text() ) ) - a_:= hbide_memoToArray( ::oUI:editSources:toPlainText() ) - - b_:={} - aeval( aFiles, {|e| aadd( b_, e ) } ) - - cHome := ::oUI:editPrjLoctn:text() - FOR EACH s IN b_ - s := hbide_prepareSourceForHbp( hbide_stripRoot( cHome, s ) ) - IF ascan( a_, s ) == 0 - aadd( a_, s ) - ENDIF - NEXT - - ::oUI:editSources:setPlainText( hbide_arrayToMemo( a_ ) ) - ENDIF - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ -/* Set current project for build - vailtom - * 26/12/2009 - 02:19:38 - */ -METHOD IdeProjManager:setCurrentProject( cProjectName ) - LOCAL aPrjProps, n, oItem - LOCAL cOldProject := ::cWrkProject - LOCAL lValid := .T. - - IF Empty( cProjectName ) - ::oIDE:cWrkProject := '' - - ELSEIF ( n := ascan( ::aProjects, {|e_| e_[ 3, PRJ_PRP_PROPERTIES, 2, E_oPrjTtl ] == cProjectName } ) ) > 0 - aPrjProps := ::aProjects[ n, 3 ] - ::oIDE:cWrkProject := aPrjProps[ PRJ_PRP_PROPERTIES, 2, E_oPrjTtl ] - - ELSE - lValid := .F. - - ENDIF - - IF lValid - IF !Empty( ::oSBar ) - ::oDK:setStatusText( SB_PNL_PROJECT, ::cWrkProject ) - ENDIF - - ::oIDE:updateTitleBar() - - /* Reset Old Color */ - IF !empty( cOldProject ) - IF !empty( oItem := hbide_findProjTreeItem( ::oIDE, cOldProject, "Project Name" ) ) - oItem:oWidget:setForeground( 0, QBrush( QColor( 0,0,0 ) ) ) - ENDIF - ENDIF - /* Set New Color */ - IF !empty( ::cWrkProject ) - IF !empty( oItem := hbide_findProjTreeItem( ::oIDE, ::cWrkProject, "Project Name" ) ) - oItem:oWidget:setForeground( 0, QBrush( QColor( 255,0,0 ) ) ) - ::oProjTree:oWidget:setCurrentItem( oItem:oWidget ) - ENDIF - ::loadProperties( ::getProjectFileNameFromTitle( ::cWrkProject ), .f., .f., .f. ) - ENDIF - ENDIF - - RETURN cOldProject - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:getCurrentProjectTitle() - - IF Empty( ::aProjects ) - RETURN "" - ENDIF - IF ! Empty( ::cWrkProject ) - RETURN ::cWrkProject - ENDIF - IF Len( ::aProjects ) == 1 - ::setCurrentProject( ::aProjects[ 1, 3, PRJ_PRP_PROPERTIES, 2, E_oPrjTtl ] ) - RETURN ::aProjects[ 1, 3, PRJ_PRP_PROPERTIES, 2, E_oPrjTtl ] - ENDIF - - RETURN "" - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:getCurrentProject( lAlert ) - - DEFAULT lAlert TO .t. - - IF !Empty( ::cWrkProject ) - RETURN ::cWrkProject - ENDIF - - IF Empty( ::aProjects ) - IF lAlert - MsgBox( "No Projects Available" ) - ENDIF - RETURN "" - ENDIF - - IF Len( ::aProjects ) == 1 - ::setCurrentProject( ::aProjects[ 1, 3, PRJ_PRP_PROPERTIES, 2, E_oPrjTtl ] ) - RETURN ::aProjects[ 1, 3, PRJ_PRP_PROPERTIES, 2, E_oPrjTtl ] - ENDIF - - RETURN ::selectCurrentProject() - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:selectCurrentProject() - LOCAL oDlg, p, t - - IF Empty( ::aProjects ) - MsgBox( "No Projects Available" ) - RETURN ::cWrkProject - ENDIF - - oDlg := hbide_getUI( "selectproject", ::oDlg:oWidget ) - - FOR EACH p IN ::aProjects - IF !empty( t := p[ 3, PRJ_PRP_PROPERTIES, 2, E_oPrjTtl ] ) - oDlg:cbProjects:addItem( t ) - ENDIF - NEXT - - oDlg:btnCancel:connect( "clicked()", {|| oDlg:oWidget:done( 1 ) } ) - oDlg:btnOk :connect( "clicked()", {|| ::setCurrentProject( oDlg:cbProjects:currentText() ), ; - oDlg:done( 1 ) } ) - oDlg:exec() - - oDlg:btnCancel:disconnect( "clicked()" ) - oDlg:btnOk :disconnect( "clicked()" ) - oDlg:destroy() - oDlg := NIL - - RETURN ::cWrkProject - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:getProjectsTitleList() - LOCAL a_, aList := {} - - FOR EACH a_ IN ::aProjects - aadd( aList, a_[ 3, PRJ_PRP_PROPERTIES, 2, PRJ_PRP_TITLE ] ) - NEXT - - RETURN aList - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:getProjectProperties( cProjectTitle ) - LOCAL n - - IF ( n := ascan( ::aProjects, {|e_, x| x := e_[ 3 ], x[ 1, 2, PRJ_PRP_TITLE ] == cProjectTitle } ) ) > 0 - RETURN ::aProjects[ n, 3 ] - ENDIF - - RETURN {} - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:getProjectByFile( cProjectFile ) - LOCAL n, aProj - - cProjectFile := hbide_pathNormalized( cProjectFile ) - - IF ( n := ascan( ::aProjects, {|e_| hb_FileMatch( e_[ 1 ], cProjectFile ) } ) ) > 0 - aProj := ::aProjects[ n ] - ENDIF - - RETURN IdeProject():new( ::oIDE, aProj ) - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:getProjectTypeFromTitle( cProjectTitle ) - LOCAL n, cType := "" - - IF ( n := ascan( ::aProjects, {|e_, x| x := e_[ 3 ], x[ 1, 2, PRJ_PRP_TITLE ] == cProjectTitle } ) ) > 0 - cType := ::aProjects[ n, 3, PRJ_PRP_PROPERTIES, 1, PRJ_PRP_TYPE ] - ENDIF - - RETURN cType - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:getProjectPathFromTitle( cProjectTitle ) - LOCAL cPath - - hb_fNameSplit( ::getProjectFileNameFromTitle( cProjectTitle ), @cPath ) - - RETURN cPath - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:getProjectFileNameFromTitle( cProjectTitle ) - LOCAL n, cProjFileName := "" - - IF ( n := ascan( ::aProjects, {|e_, x| x := e_[ 3 ], x[ 1, 2, PRJ_PRP_TITLE ] == cProjectTitle } ) ) > 0 - cProjFileName := ::aProjects[ n, 2 ] - ENDIF - - RETURN cProjFileName - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:getSourcesByProjectTitle( cProjectTitle ) - LOCAL n, aProj - - IF ( n := ascan( ::aProjects, {|e_, x| x := e_[ 3 ], x[ 1, 2, PRJ_PRP_TITLE ] == cProjectTitle } ) ) > 0 - aProj := ::aProjects[ n, 3 ] - RETURN aProj[ PRJ_PRP_SOURCES, 2 ] /* 2 == parsed sources */ - ENDIF - - RETURN {} - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:getProjectByTitle( cProjectTitle ) - LOCAL n, aProj - - IF ( n := ascan( ::aProjects, {|e_, x| x := e_[ 3 ], x[ 1, 2, PRJ_PRP_TITLE ] == cProjectTitle } ) ) > 0 - aProj := ::aProjects[ n, 3 ] - ENDIF - - RETURN IdeProject():new( ::oIDE, aProj ) - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:removeProject( cProjectTitle ) - LOCAL cProjFileName, nPos - - IF !empty( cProjFileName := ::getProjectFileNameFromTitle( cProjectTitle ) ) - ::closeProject( cProjectTitle ) - - nPos := ascan( ::aProjects, {|e_| e_[ 2 ] == cProjFileName } ) - IF nPos > 0 - hb_adel( ::aProjects, nPos, .T. ) - ::oINI:save() - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:closeProject( cProjectTitle ) - LOCAL oProject, aProp - - IF Empty( ::aProjects ) - RETURN Self - ENDIF - - aProp := ::getProjectProperties( cProjectTitle ) - oProject := IdeProject():new( ::oIDE, aProp ) - IF empty( oProject:title ) - RETURN Self - ENDIF - - ::oIDE:removeProjectTree( aProp ) - - ::setCurrentProject( '' ) - - RETURN Self - -/*----------------------------------------------------------------------*/ -/* Prompt for user to select a existing folder - * 25/12/2009 - 19:03:09 - vailtom - */ -METHOD IdeProjManager:promptForPath( oEditPath, cTitle, cObjFileName ) - LOCAL cTemp, cPath, cFile - - IF HB_ISOBJECT( ::oProject ) - cTemp := oEditPath:Text() - ELSE - cTemp := "" - ENDIF - - IF !HB_ISSTRING( cObjFileName ) - cPath := hbide_fetchADir( ::oDlg, cTitle, cTemp ) - - ELSE - cTemp := hbide_fetchAFile( ::oDlg, cTitle, { { "Harbour IDE Projects", "*.hbp" } }, cTemp ) - IF !Empty( cTemp ) - hb_fNameSplit( hbide_pathNormalized( cTemp, .f. ), @cPath, @cFile ) - oEditPath:setText( cFile ) - ENDIF - ENDIF - - IF !Empty( cPath ) - IF Right( cPath, 1 ) $ '/\' - cPath := Left( cPath, Len( cPath ) - 1 ) - ENDIF - oEditPath:setText( cPath ) - ENDIF - - oEditPath:setFocus() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:buildSource( lExecutable ) - LOCAL oEdit, cTmp, cExeHbMk2, cCmd, cC, cCmdParams, cBuf - LOCAL cbRed := "", ceRed := "" - LOCAL lRebuild := .T. - LOCAL aHbp := {} - - ::lPPO := .t. - ::lLaunch := lExecutable - ::cProjectInProcess := NIL - - IF !empty( oEdit := ::oEM:getEditorCurrent() ) - IF ! hbide_isSourcePRG( oEdit:sourceFile ) - MsgBox( 'Operation not supported for this file type: "' + oEdit:sourceFile + '"' ) - RETURN Self - ENDIF - ELSE - MsgBox( "No active editing source available !" ) - RETURN Self - ENDIF - IF ::oINI:lSaveSourceWhenComp - ::oSM:saveNamedSource( oEdit:sourceFile ) - ENDIF - - ::cargo := oEdit - - aadd( aHbp, "-q" ) - aadd( aHbp, "-trace" ) - aadd( aHbp, "-info" ) - aadd( aHbp, "-lang=en" ) - aadd( aHbp, "-width=0" ) - aadd( aHbp, "-rebuild" ) - IF lExecutable - aadd( aHbp, "-hbexe" ) - ELSE - aadd( aHbp, "-s" ) - ENDIF - aadd( aHbp, hbide_pathToOSPath( oEdit:sourceFile ) ) - - ::oDockB2:show() - ::oOutputResult:oWidget:clear() - - ::oOutputResult:oWidget:append( hbide_outputLine() ) - cTmp := "Project [ " + oEdit:sourceFile + " ] " + ; - "Launch [ " + iif( ::lLaunch, 'Yes', 'No' ) + " ] " + ; - "Rebuild [ " + iif( lRebuild , 'Yes', 'No' ) + " ] " + ; - "Started [ " + time() + " ]" - ::oOutputResult:oWidget:append( cTmp ) - ::oOutputResult:oWidget:append( hbide_outputLine() ) - - ::oIDE:oEV := IdeEnvironments():new():create( ::oIDE ) - ::cBatch := ::oEV:prepareBatch( ::cWrkEnvironment ) - aeval( ::oEV:getHbmk2Commands( ::cWrkEnvironment ), {|e| aadd( aHbp, e ) } ) - - cExeHbMk2 := "hbmk2" - - cCmdParams := hbide_array2cmdParams( aHbp ) - - ::oProcess := HbpProcess():new() - // - ::oProcess:output := {|cOut, mp2, oHbp| ::showOutput( cOut,mp2,oHbp ) } - ::oProcess:finished := {|nEC , nES, oHbp| ::finished( nEC ,nES,oHbp ) } - ::oProcess:workingPath := hbide_pathToOSPath( oEdit:cPath ) - // - cCmd := hbide_getShellCommand() - cC := iif( hbide_getOS() == "nix", "", "/C " ) - - IF hb_fileExists( ::cBatch ) - cBuf := memoread( ::cBatch ) - cBuf += hb_eol() + cExeHbMk2 + " " + cCmdParams + hb_eol() - hb_memowrit( ::cBatch, cBuf ) - ENDIF - // - ::outputText( cbRed + "Batch File " + iif( hb_fileExists( ::cBatch ), " Exists", " : doesn't Exist" ) + " => " + ceRed + trim( ::cBatch ) ) - ::outputText( cbRed + "Batch File Contents => " + ceRed ) - ::outputText( memoread( ::cBatch ) ) - ::outputText( cbRed + "Command => " + ceRed + cCmd ) - ::outputText( cbRed + "Arguments => " + ceRed + cC + ::cBatch ) - ::outputText( hbide_outputLine() ) - // - ::oProcess:addArg( cC + ::cBatch ) - ::oProcess:start( cCmd ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:buildProject( cProject, lLaunch, lRebuild, lPPO, lViaQt ) - LOCAL cHbpPath, oEdit, cHbpFN, cTmp, cExeHbMk2, aHbp, cCmd, cC, oSource, cCmdParams, cBuf - LOCAL cbRed := "", ceRed := "" - - aHbp := {} - - DEFAULT lLaunch TO .F. - DEFAULT lRebuild TO .F. - DEFAULT lPPO TO .F. - DEFAULT lViaQt TO .F. - - ::lPPO := lPPO - ::lLaunch := lLaunch - ::cProjectInProcess := cProject - - IF ::lPPO .AND. empty( ::oEM:getEditCurrent() ) - MsgBox( 'No source available to be compiled' ) - RETURN Self - ENDIF - IF empty( cProject ) - cProject := ::getCurrentProject( .f. ) - ENDIF - IF empty( cProject ) .AND. !( ::lPPO ) - RETURN Self - ENDIF - IF ::lPPO - lRebuild := .t. - ENDIF - - /* Set it as current project */ - ::setCurrentProject( cProject ) - - /* Make Macros happy */ - hbide_setProjectTitle( cProject ) - - ::oProject := ::getProjectByTitle( cProject ) - // attempt to save the sources if are open in editors should it be controlled by some option ? - IF ::oINI:lSaveSourceWhenComp - FOR EACH oSource IN ::oProject:hSources - ::oSM:saveNamedSource( oSource:original ) - NEXT - ENDIF - - cHbpFN := hbide_pathFile( ::oProject:location, iif( empty( ::oProject:outputName ), "_temp", ::oProject:outputName ) ) - cHbpPath := cHbpFN + iif( ::lPPO, '_tmp', "" ) + ".hbp" - - IF !( ::lPPO ) - IF ::oProject:type == "Lib" - aadd( aHbp, "-hblib" ) - ELSEIF ::oProject:type == "Dll" - // aadd( aHbp, "-hbdynvm" ) /* Better if is provided as a flag -hbdyn or -hbdynvm */ - ENDIF - ENDIF - - IF ::oProject:isXhb - aadd( aHbp, "-xhb" ) - ENDIF - aadd( aHbp, "-q" ) - aadd( aHbp, "-trace" ) - aadd( aHbp, "-info" ) - aadd( aHbp, "-lang=en" ) - aadd( aHbp, "-width=512" ) - IF lRebuild - aadd( aHbp, "-rebuild" ) - ENDIF - - IF ::lPPO - IF !empty( oEdit := ::oEM:getEditorCurrent() ) - IF hbide_isSourcePRG( oEdit:sourceFile ) - aadd( aHbp, "-s" ) - aadd( aHbp, "-p" ) - aadd( aHbp, "-hbraw" ) - - // TODO: We have to test if the current file is part of a project, and we - // pull your settings, even though this is not the active project - vailtom - aadd( aHbp, hbide_pathToOSPath( oEdit:sourceFile ) ) - - ::cPPO := hbide_pathFile( oEdit:cPath, oEdit:cFile + '.ppo' ) - FErase( ::cPPO ) - - ELSE - MsgBox( 'Operation not supported for this file type: "' + oEdit:sourceFile + '"' ) - RETURN Self - - ENDIF - - lViaQt := .t. /* Donot know why it fails with Qt */ - ENDIF - ENDIF - - ::oDockB2:show() - ::oOutputResult:oWidget:clear() - - IF .f. - ::oOutputResult:oWidget:append( 'Error saving: ' + cHbpPath ) - - ELSE - ::oOutputResult:oWidget:append( hbide_outputLine() ) - cTmp := "Project [ " + cProject + " ] " + ; - "Launch [ " + iif( lLaunch , 'Yes', 'No' ) + " ] " + ; - "Rebuild [ " + iif( lRebuild, 'Yes', 'No' ) + " ] " + ; - "Started [ " + time() + " ]" - ::oOutputResult:oWidget:append( cTmp ) - ::oOutputResult:oWidget:append( hbide_outputLine() ) - - ::oIDE:oEV := IdeEnvironments():new():create( ::oIDE ) - ::cBatch := ::oEV:prepareBatch( ::cWrkEnvironment ) - aeval( ::oEV:getHbmk2Commands( ::cWrkEnvironment ), {|e| aadd( aHbp, e ) } ) - - cExeHbMk2 := ::oINI:getHbmk2File() - cCmdParams := hbide_array2cmdParams( aHbp ) - - ::oProcess := HbpProcess():new() - // - ::oProcess:output := {|cOut, mp2, oHbp| ::showOutput( cOut,mp2,oHbp ) } - ::oProcess:finished := {|nEC , nES, oHbp| ::finished( nEC ,nES,oHbp ) } - ::oProcess:workingPath := hbide_pathToOSPath( ::oProject:location ) - // - cCmd := hbide_getShellCommand() - cC := iif( hbide_getOS() == "nix", "", "/C " ) - - IF hb_fileExists( ::cBatch ) - cBuf := memoread( ::cBatch ) - cBuf += hb_eol() + cExeHbMk2 + " " + cHbpPath + cCmdParams + hb_eol() - hb_memowrit( ::cBatch, cBuf ) - ENDIF - // - ::outputText( cbRed + "Batch File " + iif( hb_fileExists( ::cBatch ), " Exists", " : doesn't Exist" ) + " => " + ceRed + trim( ::cBatch ) ) - ::outputText( cbRed + "Batch File Contents => " + ceRed ) - ::outputText( memoread( ::cBatch ) ) - ::outputText( cbRed + "Command => " + ceRed + cCmd ) - ::outputText( cbRed + "Arguments => " + ceRed + cC + ::cBatch ) - ::outputText( hbide_outputLine() ) - // - ::oProcess:addArg( cC + ::cBatch ) - ::oProcess:start( cCmd ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:showOutput( cOutput, mp2, oProcess ) - LOCAL cIfError - - HB_SYMBOL_UNUSED( mp2 ) - HB_SYMBOL_UNUSED( oProcess ) - - cIfError := hbide_convertBuildStatusMsgToHtml( cOutput, ::oOutputResult:oWidget ) - IF ! empty( cIfError ) .AND. empty( ::cIfError ) - ::cIfError := cIfError - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:finished( nExitCode, nExitStatus, oProcess ) - LOCAL cTmp, n, n1, cTkn, cExe, qDoc, qCursor - - HB_SYMBOL_UNUSED( oProcess ) - - ::outputText( hbide_outputLine() ) - cTmp := "Exit Code [ " + hb_ntos( nExitCode ) + " ] Exit Status [ " + hb_ntos( nExitStatus ) + " ] " +; - "Finished at [ " + time() + " ] Done in [ " + hb_ntos( seconds() - oProcess:started ) + " Secs ]" - ::outputText( cTmp ) - ::outputText( hbide_outputLine() ) - - ferase( ::cBatch ) - - IF ! empty( ::cIfError ) - ::oOutputResult:SelStart := 0 - ::oOutputResult:find( ::cIfError ) - ::oOutputResult:SelBold := .T. - - qDoc := ::oOutputResult:document() - FOR n := 0 TO qDoc:blockCount() - 1 - IF ::cIfError == qDoc:findBlockByNumber( n ):text() - qCursor := qDoc:find( ::cIfError ) - ::oOutputResult:setTextCursor( qCursor ) - EXIT - ENDIF - NEXT - ENDIF - - cTmp := ::oOutputResult:oWidget:toPlainText() - cExe := "" - IF empty( cExe ) - cTkn := "hbmk2: Linking... " - IF ( n := at( cTkn, cTmp ) ) > 0 - n1 := hb_at( Chr( 10 ), cTmp, n + Len( cTkn ) ) - cExe := StrTran( substr( cTmp, n + Len( cTkn ), n1 - n - len( cTkn ) ), Chr( 13 ) ) - ENDIF - ENDIF - IF empty( cExe ) - cTkn := "hbmk2: Target up to date: " - IF ( n := at( cTkn, cTmp ) ) > 0 - n1 := hb_at( Chr( 10 ), cTmp, n + Len( cTkn ) ) - cExe := StrTran( substr( cTmp, n + Len( cTkn ), n1 - n - len( cTkn ) ), Chr( 13 ) ) - ENDIF - ENDIF - - IF HB_ISOBJECT( ::cargo ) - cExe := hb_PathJoin( hbide_pathToOSPath( ::cargo:cPath ), cExe ) - ELSE - cExe := hb_PathJoin( hbide_pathToOSPath( ::oProject:location ), cExe ) - ENDIF - - IF !empty( cExe ) - hb_fNameSplit( cExe, @cTmp ) - hbide_setProjectOutputPath( cTmp ) - ENDIF - - IF ::lLaunch - ::outputText( " " ) - IF empty( cExe ) - ::outputText( "" + "Executable could not been detected from linker output!" + "" ) - ELSE - cExe := alltrim( cExe ) - ::outputText( "" + "Detected executable => " + cExe + "" ) - ENDIF - ::outputText( " " ) - - IF nExitCode == 0 - ::launchProject( ::cProjectInProcess, cExe ) - ELSE - ::outputText( "Sorry, cannot launch project because of errors..." ) - ENDIF - ENDIF - IF ::lPPO .AND. hb_FileExists( ::cPPO ) - ::editSource( ::cPPO ) - ENDIF - - ::cIfError := NIL - ::oOutputResult:ensureCursorVisible() - IF !empty( qCursor ) - qCursor:clearSelection() - ::oOutputResult:setTextCursor( qCursor ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ -/* - * Launch selected project. - * 03/01/2010 - 09:24:50 - */ -METHOD IdeProjManager:launchProject( cProject, cExe ) - LOCAL cTargetFN, cTmp, oProject, cPath - LOCAL qProcess, qStr - - IF empty( cProject ) - cProject := ::oPM:getCurrentProject( .f. ) - ENDIF - - IF !empty( cProject ) - oProject := ::getProjectByTitle( cProject ) - ENDIF - - IF empty( cExe ) .AND. !empty( oProject ) - cTargetFN := hbide_pathFile( oProject:destination, iif( empty( oProject:outputName ), "_temp", oProject:outputName ) ) - #ifdef __PLATFORM__WINDOWS - IF oProject:type == "Executable" - cTargetFN += '.exe' - ENDIF - #endif - IF ! hb_FileExists( cTargetFN ) - cTargetFN := oProject:launchProgram - ENDIF - ELSE - cTargetFN := cExe - ENDIF - IF empty( cTargetFN ) - cTargetFN := "" - ENDIF - cTargetFN := hbide_pathToOSPath( cTargetFN ) - - IF ! hb_FileExists( cTargetFN ) - cTmp := "Launch error: file not found - " + cTargetFN - - ELSEIF empty( oProject ) .OR. oProject:type == "Executable" - cTmp := "Launching application [ " + cTargetFN + " ]" - - if .t. - qProcess := QProcess() - - qStr := QStringList() - - IF !empty( oProject ) - IF !empty( oProject:launchParams ) - qStr:append( oProject:launchParams ) - ENDIF - qProcess:startDetached( cTargetFN, qStr, hbide_pathToOSPath( oProject:wrkDirectory ) ) - ELSE - hb_fNameSplit( cTargetFN, @cPath ) - qProcess:startDetached( cTargetFN, qStr, hbide_pathToOSPath( cPath ) ) - ENDIF - - qProcess:waitForStarted( 3000 ) - qProcess := NIL - - else - hb_processRun( cTargetFN, , , , .t. ) - - endif - ELSE - cTmp := "Launching application [ " + cTargetFN + " ] ( not applicable )." - - ENDIF - - ::oOutputResult:oWidget:append( cTmp ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:runAsScript() - LOCAL oEdit - - IF !empty( oEdit := ::oEM:getEditorCurrent() ) - hbide_runAScript( oEdit:qEdit:toPlainText() ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeProjManager:outputText( cText ) - - ::oOutputResult:oWidget:append( "" + cText + "" ) - - RETURN Self - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/resources/Lookup.png b/harbour/contrib/hbide/resources/Lookup.png deleted file mode 100644 index 9d7be322540f8d103de893ba9eac9e2ad13386a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 489 zcmVs9aGpN{};lv^s0-rr-$sNzRc zFcS@dnDl~w3OY;txQyMb#?i0lXflDna~h7Pl5veZX1w7(=29=d8-hG!3cM>@6nMvO z=6JmcrR6yb&h7zXG4^Edr--b^u2* zjrqoE_j^=44-Hw&x9h z)&_CT*E8LsVWT%3Y%g$0akP!wNXe)nQ|o=zMX7Rbdj?y2SRDer?$BfrWq?RXW(~3|>hG41)`9w fR&l$3;YPUt&=J$!)O1kO00000NkvXXu0mjfC5q&8 diff --git a/harbour/contrib/hbide/resources/align_at.png b/harbour/contrib/hbide/resources/align_at.png deleted file mode 100644 index 5d20a770e910e24f9ec4d9d7be8a73fe74dbe1e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 912 zcmV;B18@9^P) z*=`d{6h(O;k5|eI{Kx%;%Xcw{;U}0OJV1v zNjs%e$9vU2rO1-6NctsPYt@e*ldWo1?<*C(yFkH%yY=D2|8~z+)8gLM0PFSvUE(4D z7yWZqfa@e>egCniAA9>3CU`94bJ4Xk1H4-V*w^0vf%Xs3;a})LaNx1vbI%_GU_LxL z*73=S>b060LH(5K^_ptdV|VoN;fDjyFTla!k&cc}3|`m$SG#(+`Av^jM7{BPSFJ|C z?&{;i4+oxKfZ6ml1wo*w-BcR2)QQ>)QO9=PZZ_CmeSG-g!1D@VscSl^)zxe?Y?2)@ z)#JBIQ8RheZn3-i`0&GlcisS7VjY{QRu9x{HkH^!SrRErm!eMNkO1t?K0f?#;IZJB z2iTegsGBJW8VXyj*$cd}$u^gw-mvpD3fY}~eE8wOW5GXHfWV%vVd=xrrticmvPAtA zQFERqVObwP9C&^KFf}cGY!lvlxub_~cA07+Y9{PrPnG1etfJ(L6<@Xy&d9I5RJh<@70<4?|Ar-fdPPomD8X(x9wJY$ytN< q?-^tseyOOq-+0}N;b>WXC#%GTg2N{7SDpe|z~JfX=d#Wzp$P!0X*DDO diff --git a/harbour/contrib/hbide/resources/b_1.png b/harbour/contrib/hbide/resources/b_1.png deleted file mode 100644 index 893e7eba8f4b2ef4407de2f938a17c07993d7606..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 773 zcmV+g1N!`lP)<)(>XI|2L9_IFJ1lAXC39bWO`(B z9h;u+c6!jsWPTx$NiUSsLgZ|6Q`WBqvyc70#(LZ5&4+P^VYHV>ei1J2z?CkHyj46i zLv*rU$md_aXMTG%_>tcaBfT3Y&7rxJgmM|OJ-9T0s{*W2SSG~WUP zYp+wc$C@OeMxZHZ1VIeF1ol$662mBhVF;H~cq30j6Ew&9NDsC^-_%DMR6`X|171Mc zj4eNO5J?aC*fp<_lm^bi?g&!?AHfQ*21rJM@ zN+Qd;9dChJm%B6uTmnr17TOBR5}uUseYDB+=NOE_;|d;}!ygMM*1Ef$p{>yps8YlR z=-S{HP^T~t;U|S>HQW!ucvw_0TR<^~diigoyjb#_wMCaPq#-0RL_!-tr7*LwOd$@y zwBRhbrPBVX_=5R1sBXgg`~ah(p&&sYl^E2})?k;=BoG)7zquuO>d+^JY8g$oK{%x` z$DB_`XoI#5;&#v`fil2nf=1wtVw^{o7N!gQw46yCoo<8i?mg`4grfL_rVOc8=xTrz zeduOr8bTo89lk2zSpkcc!v`nzXms!8Pw(1y`_!|$RMSI@35g;|b0ke6iVy>|4cHP{ zmCkp1Uu$=Gi*Mh4^y=T{+SxvKbqD+O7{4B(X0yi#f`D;~<}%Xt@ zS2>IR0e*Ev+m3Pdrq6<4P8d&!lT)(Q8Izl9{&(>=p9D-L2Hw}400000NkvXXu0mjf Dqkm^P diff --git a/harbour/contrib/hbide/resources/b_10.png b/harbour/contrib/hbide/resources/b_10.png deleted file mode 100644 index 69132e69f452a4d06765d7ddd5865f442bf700cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 727 zcmV;|0x127P)NklQqL6<&(%epG4?_f7sD5!|m zQmuy4W~`kiCb_xyxR|6?QgQ3q40Gnr?|%2d4E*mUhc!cuBIf9<7nv7h>ljHWm!VKf zrCe^v@yfEe-4%J!==>85=ZZB|eW0=4#Y|Lf91Fz~R3~9-8eg4M#IyuilC1N{JbC)% zuV6^1X(4*7CYrO>L;w^^aB2#!T!ZU%IDZk0!EZJPvik9bd~4o6h(`NZjiT$zBFNkX zMEC%44Dke1Pr>D@aPt;ixCD{KeqN8f_qX}c+R)qe#nJK22<$mKt3ehfAR_qTE*^}5 zqh&Zf1!tz=WCE20rfb;KQ;~`+sFY?#&OYe8pYL0$qx*dnAOvs@`VQ3R&-&fG=Ui2@ zY<{$K|Hxga7ZmY6V1+!H576tvP73R5@ag?9wS}+iu(pbAZHw>h)yKe}0}>krf;Ctq zPX*BH!PX|ceVt=#t9gHG6F$6y<_7HTCSzb9$P@}bV64qkhGD|icAj=8g%fY`7up$o zPhs~5^!g*_H`p_zJ%s{bg2w__`y1U!b7ZrbkHa|_IK1}^0_hkyP#SwM0|)^y5POe3 zh&q>Fhvmf3R@8>j7y}6`2Vr4LnREgUs0b9i#~6zp&eR7_Fb1cPsi!m0RxGkS1}4XN zxtFn&!M%G(jVN=F$Ok)_GF|8nH~@#(!vsI>x*zbkV=iDH40 zK*1Pd4Il;wbQPR2gJST{tD^UBq--1t0<0v|+MdN7Sm-L%FkE8+#Gry6fz~n6rHbgo znFH9NAi%S;lqwx&+A!aTx>phaE2I%Lim==+v2v%$*zfEAuU`@tJzasDT^#@b002ov JPDHLkV1oG)Rv7>Q diff --git a/harbour/contrib/hbide/resources/b_11.png b/harbour/contrib/hbide/resources/b_11.png deleted file mode 100644 index 89d6d0ade63eb3a593077b24c2e6ea9476aeb6b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 670 zcmV;P0%84$P)Q?xMQu{WF|{jE6Pg4EUs8a zhG2t!5WNWV7KyP|-E+=2pL@Z*xJ`WPfiJuFaL(tR=RUiR{W;{&WStzzC?YY=cs#3d zHCN*4{B~|>B3EQ`>Y)O)Sid(cnRSY2W`wgboyV?As1ras59ICwQ;)!lvy#s|)5ZOH zCJRpw?2cVYIz>D)%}2)!jE=)hY7!VL0L3T3(h9Kl-V9$}HN@OvfzX;|is5U_#NruH zcEFqWfakA(kDq~Z8TefRzI+8=S~2LP|1Dn*CKVn{>lRi8saz@*uh)R@n}G3`La=qx znR#92?kF};3?vx8s>+(+@+zQztAd2Tc?({6EJe1!Y#{HCX$Y%8EJLZHRC2Be%q;?I zAAoh;g5P}t7G41P2jJ$X2a-jWe2-LC0q;x zk(7nmQ93EX6uKsiDyRVldo`Tv1^Q#PQFVd&``QjKZAXlx$Y_?Dp}StwN1rLi-rCy7N(-E?VgrxG}m(5QA^!Y5iKdS8lj{R z`ZE_&L=fU2iDgU7d(P9m3^Erxh_}A*W6m7T`JMNfGoiy-edDSuWhgCeNRiBusT*Vs zO^}r>koj;{ipd3~>C-4bkZd5QD*8uc>W)EnYJ`+N1`JIA`B`A{IWY5r)ck9*=a!`? zEU6>=%DP-xIxnX(IdU?i05kXqc<=<6ehIu?13s;LtbQct*@`Uq(twzWVJTRa&I8Pz zaC{DU^8xtw1NgHG6pO&mO+J7e?ldrdPgZID!(_9_7jj%L>if^Y);2&6!(y+~`DL<= zr%EdkcHWhuOD7d9VUI4NaWR?iyy<~Nyf&Tk@QoqaLN#4j(?_!vxcif$KVfrXpCBoP(vaa<4 zJ@;7V<45OCS5MU`czr8 zO^WJh(Q!e2E5O~dm@lg{!w0yy&zrY_SO?G)Bd5(x#(P6SbvdpoYMbR$xMs&Wd1f2o zx?NN^5?J04^WZVh@xi>7_k{MVCU?QPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0isDnK~yM_wbH$A z(@+$^@&CQP{z{!Tbr?JGvBHogUD%MiFhndtyZ{p;QyID;1_s0fFfc?&C2~ZxIsjDO|4hok54;Mv1Pl;(Xh89*6I~3azfCk$p*rAyK zC;&6EqM@Otrlvxp0np?is!<2a*rTS#P*I{u0Uyw;$VG007YUO~0X(RtVuwiCd50&Q(cqY20`Oy@YXRyn;JVL1NmpM`1%C8WU5b45h<# zTy&C7Dzeu1_}2vw_{cD!J4cE&v>3hP$X^8a_{7)1%L31^g-txdC1yw&yx`c1V8wef zv<|U{U8LB?F1C>12QIjM&bpdJ%?J7kt$nnyfq)LSv5zKF9O5y}5q&j@nv7ltC7K9` zNYU}99YlI+5|y_M6EqMpM~Tux?tTS6GgL`brgR%9P#{NvIdWVhx0K@w+nCW+i7Hd% z7D^Pzkz^*mZD0IU)V&%3>i`clqe7}#|%?UkXVW;0av)fIttvNff5BW zq{vaCz!-_8s1h0dq}#w6qJ=5$aEpir0s^jaia8^dpyr4&Vh>NTgErO>ksu;LhI5?a z3qd8SX)^dmFUJH=u!AkEBSC=-XShJgKuxgXHP>fsL_~DZMv90G6MV-3S)aC=;2v-2 zpVPa+9SSrs#~d3tU~s~*6~O~uF${Fa780}=op9v8^&5RObZepo3!DG|002ovPDHLk FV1hHGy_Ns~ diff --git a/harbour/contrib/hbide/resources/b_15.png b/harbour/contrib/hbide/resources/b_15.png deleted file mode 100644 index a61682379fa2c341e3d41dd0a5be3a2b5267bedc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 488 zcmVP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0ewkCK~yNuwUWO| z98na9zdQHNx~%KU5;ZDxz5hc-8*Bk%djeT$!QLU^PR)*{DFUM>S?&Qtrs&1ZAr?FPsgu-`#b8Lmt~oh znw^j+O2sr+&tHJMzg0SKr)5e)soNYBEfwzy7;>CcwWwoRzCrS7kWPK8nRQN~Jwo4eRURa|qAtV{I+O zbb61&!^!8s%gZ_)&fvO7bPf;%4k{I3a})4=AWc&w$$$a7czykjgM*(R11~P>1YJ{E z3)QNN?QIwntXc)Owt#Zk?tOlaF&gy{MJLP9!UA@BT4wZf&RTSGO^R|Zm4J;63)|VT z0rU(4m&%*W;taR9ejey~`-tNX)ww8exmW~K2Nm170(hRCYfb-s-(~6@25sbl^Ld-U z0XM(^{~k%A`u%AdX&Suyn&B=1)lJ7Z%HH07+k6f-z*;sme|cdSs6f6s;A~biju|A5 zEoe5g&f~G&roA#hh~FdS@G4B z3?{`2s5O;D{}nKbv_8xOlcZ1i4O5d0lnpsch14wvP`ZOb%6UHzEEGa>Y@+DPqA7Bc z>4->;0_ha!z0^KEN#THj!aQ(y_YMyaT}J)N^j!mx0$n>@Ih8@`1e01dWIT?|6|7Y5 zR$sm2<2oVNv=*J+#Q|1bvvj4{HZW!bfA9vK;O6G>~e#twF%r~32N`qA(i&2ION(rdc6t$yYUMr_X_uwA{%l5 O0000VTEJ5x7O)denjshYHAA@<% z&Wa!#(K6C#*RwNk-puS8`0wIm8PCsAavW?gFT*PoutlvGivZVAK9Awj68zU!-0tjP z`X}JY2^tJIGzPm2c3l_F>MBsF0Oc|eMTkB>5inu@HwSpj1kHCliEEPZ&HtqPGZ|vzvnhl$ia9+YW<_N>nh*#L7wnR;wimw34|Y z^ERtEyt+a;1;~T#FhrN^OpaErVCf*^c&`NXiTASUn=LRbz00J{6yW;J{IA3h?a>bp=`wmLCJr9tS@^ zCw}Uw1>{gP90Av}0OO2y5Ee*1Qwvn05~zRL>wG#*67fzVtK^X!1ZJDBp;$06Rzlg- z5`8NnuZ`@Z6d;|3q~BCeERYoii-p)NCQ!LSfQb8H3XqPzt_?G8*r6y$sw*NkN~Bw$ zbFm$dV}=0}`60%%``vhXz3| zs2v6ydx6zgTdo+-2N-gI*L*>}%S$}``g8C+G|1wJ1M0GDm;G|)EwK`@^nhS}+D?7{ z8!Qu0(r%;7DK}Y~N5Cz%pgsp3k?D|(ecEmZgY@s~|H~H!{0jH|+9<350000i-;Y+?TO_>Z$Cu%wo5p8O|VVZ(eZB#d&WyK?1Q=W-1!ZJr&IA;IynWXd8Dw7Fp*bdBPikNnZ>+p#%hL*J8ur9}yg-UBuam6y2kky)(C!y0 z>^~6gQmY%=yYTb(A*7{0C}BCI|YXP_#T9PQYUF6$ra~@cqX=1@C4TBksGtJ2bdLz_<}tWCF@rD_6s=>W z2u9%?Vdwz=sR~$cGV={4Gjt8vVaV>w3dKK(0EFX+Ynvwm%Ae)cz_wmeeXCtQ9-0AX zgzJ8rM;^RCqkfdS+dYg6bN(=+o7#@SnTMtG3p+& zY))leD=DtjONAAB&>5Nmt3@zAmU+xgFSuiILFa%KnmPwSZ|sojTDu75YO;mV)T1re zH-_>{s-(*W<)DmEaM7Q~tZ?G|qF`FAM+|p~_wN1B`dYWnKV8}M#=4|OGYZ#hW z3oAz<(=dX>lKVvr3A}Ni?sMTra8>;3fgksr%Q?UEJm)#5;A*zeRH)GR)JOHDgT%iW zV1v*4^JIzS!`U!9w(^9;*W%PjdZg%5GJj@3<(>Bq_9p$DH|Z4~F7|^cgVB{yh^@z9 zhMg7`J}z+S4{4Hkm%4VLjLy(1|6E`$m<;fNbO4aS=L7IKI}Forr(ktw6>{Hm5^G;r zKC_icq4eA|nIuC{);r$|h%Ah*MB(+$GVF1C@ay+6oSdG({?R^ez^67-r&>a3>s`{y9ZZEJZrY&T^4#gi;9IaW|o3v~Z3PQ-s6gLs7<~P?B$c zdk+aVE)0u>QV5+9C)*Y807ER|9oUmk}{E(4zqKEuJ$4@tcHa~EE1XJO*a1cYCN zS%uI}?0Hwz4W6V&mi~(}ycEWTD3uC>EN#Dp#Cie?hMVRULQBw+Z+m2e?#XVH$^4%> zMv7tt`?3u1o+^aRzGhYgoMTStnPJY9;+;eR%JGZi(BcCK&Ign!o9>%Py{lfhNGgkE zaC|S;EijV|Q3@Fob+f&Wt8!F>vBwCGAv=ggQk*H`Px`;{AR22nC zaZRxV{!=%qIh|EUaBjh6TB+GwRPCsv$}MF?YtpdS8*bzgtx?04o6Csarl)XD!If-( Y0a-X)9a*_M&Hw-a07*qoM6N<$f|j0JP5=M^ diff --git a/harbour/contrib/hbide/resources/b_2.png b/harbour/contrib/hbide/resources/b_2.png deleted file mode 100644 index 735feeed2b23e4147ba5f35357a57149e9e80f57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 463 zcmV;=0WkiFP)VG007YUO~0X(RtVuwiCd50&Q(caY20`Oy@YXRyn;JVL1NmpM`1%C8WU5b45h<# zT(reWMb`Qr|GMBIAM_>Krbw}ZhJm*Z{6%n|kG=?w6nKUWtm6?bFhQ#4g+oh%W$$EY z*vAgGkzy0u*g%5sICtZ@RTYV<_qq}dyJ%t!0WEA|7j>lA$76K^T@{I{Oh*eP>IjHP z(ekG)L>(20g*W;V)DSU6iPB8&eg!`1n@cQ=wbf9dK#l@a5F? diff --git a/harbour/contrib/hbide/resources/b_20.png b/harbour/contrib/hbide/resources/b_20.png deleted file mode 100644 index 6b02ba97f3476fca31b4bb579e79aab463cc196b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 544 zcmV+*0^j|KP)}e>S zHoGg6;(al$W=354*1M^>c+KxOU*GqhS*hoj6yiB-Nd1daa9Q$y8JYtKOPfF|yVCqQ zsL8tm=s(bm6v#@YpTZ`kE4qkFhkKwI&@5;X)B>e`3R2)+s{at1k|J~;mCSX}Q_ySB z9H<3K4)p4ylMYG$4e4PCbO-bdGz(e;wLH*UP*%LC1L zEh;EIk4sMmXcTlEGzEGCngg{w&>UzK)B$!%FGHXP=n`lWbRYB*^bR!dg62W5LFYgn zU_g590}X*LfG&e>f~G*zpr(D&0_Y>?gT4I|&@iY2YzOS3VNe4!2D%Em4SEE60Sav1 zf~G+)LC-KOyJ-S+!A6sy8=$+O2cY0)3iKFs2Q&maE%mr=`UluMItCg6 zje{mY*FZPy?E{%f&>7HPP@mT{^R-H_I%=Z<&`Hn;=pWD+XcROIItUs7ZIwnnL3=p` zKUfvjP!nhe=ugmY(00%U&?P)4%G5XXP>-tOM*TH>5L2?uitxK1F&HRnM52_nOFa&M9}acP%nlRz4$O2`LLDuI*l zU^Q1H5RAbl7z>1L=_G4)d%OGg%}cR4%WyVslc{Eg_kR3m=DmUcy2+c8$`2_Q>Z@MN zM64Mh(q}D(ESkw$XDYp9S56muGX1i6Cs5OGhau?g5V%1i0~^Oe7Q;pcm)Gzcoq$P> zM07_A|GoKj^7O4h<(pxMlDi=?Th^EefGmbf7vSSf7`+cyE`l-mgS?SP$G^+L{MPGG z^Lm+1?43r~vJjyPRvnoy{gkZ$D|>o12-^t~ z;X|AB0gS*}(yF|?4*e9~OJTTVt^uj*ey0aU?xZ~?pr4N$r^ zb~*@oIawZ!mQIO|x&-m6Sfo{^3Z;ix34fo!!$a^2*1(e!cs#=%R^rdxXa%^S>RUCa zQLNZj1whrnvpM|vyjA`9xXnMC!-GTEKZVmpe+5_*$f@Y6#aPp-)Bt4zhehkp7VuZv zUdZbCq(%9V~+Jg0q1_Yw}Q2uxO0LI~#R$|BYYo5568A zQQSSI+){iLW66l=nwVG(7{TEwX>dlH)JMM!LU!vDe%ycSa@gbMaE`xoLcLwm3=}T_ z76S$XCUh`I>!GvL3--G)zwEzrecj`WtcQ;0xJgYj^7wuWwX+B_O|iRklD+HvT=2iM Ze*iEdJ)Z*BBGv!^002ovPDHLkV1jyhV~79% diff --git a/harbour/contrib/hbide/resources/b_4.png b/harbour/contrib/hbide/resources/b_4.png deleted file mode 100644 index ddf7f74e37f0072c490fa1eeb72b0af81ff24a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 727 zcmV;|0x127P)Nkl4%06u|NSyxFO0%5E>TUy=S?#{lM6epb(P9|;gx;M=HcyD+!@Lvye?P~ZrU19C6(Xefe z3=A<}rA>w%uNpV(n)Kkzn8TsDKmAuQ4bS>9HoGzMpoQr<>r6(%Iw`kVVO?DmWMqu& zPmO>4i~R7{m%;F)pTy*8677~)lK^BSY>@FSIRkF;H8&6p$2w_Vo6{G^X7cbVnp|zu zc-b?sMT;a5aR@Dhn{>EC&iCBn8*X3`-r2K6HQpOh9u4C2z03CH(zBJjYhv7?C5aLN zP$Gh1l@=SM+$JNZ%~!POv&x2DNlXkoS@fHi&H_|lZ&Ul;BELWZ0ufKZqbPPz5W<;-E674?c3lgfo1;4AvfsNa#4M7_hRa@PrwGz?h0xi~%U{jHx)K zqQWv~fD&i&@q*;Hq-)-F&_phOo( z#0Qv^F<2QcgUA7)-r+;Dj#uys-4yLOtO&u*2SQbm0C+`e!ZT*y#DF^w%cb^J>}zMi$H?2khPGG zBe?k};T1}ccx^Owzs6qsA>Tbd`r_xn;clPFY>!X%4yErAbiT*R{1rrrv>C; zM{It^t_K00|CrIuHktTsY8{}OU!Y?W8IsxqCiNlrpH2DS#orXJK&WXC&7}YU002ov JPDHLkV1g;YR|)_C diff --git a/harbour/contrib/hbide/resources/b_5.png b/harbour/contrib/hbide/resources/b_5.png deleted file mode 100644 index de7b7080d26b1aa62565dc709cbaac49a19b2588..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 755 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 diff --git a/harbour/contrib/hbide/resources/blockindentr.png b/harbour/contrib/hbide/resources/blockindentr.png deleted file mode 100644 index edca6816b69a8a55800cafa0fb6f417cfdf08eff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 202 zcmV;*05$)KP)iee6FenED1#4b1T1!Q#9*{|RDb127B$Dgc3(fB*l#{OAAwy}$ndU-skw{|Vpz z|F8P`AL1pL#tU;2{(o8{%;F}k-P&{XNnzZP%r>2{vlEWaJjmC+tk7+S zVs%bESKQI$uk~jZv@LM|**Ei7f~iSocEir?d*zEF9`YxJI+oRWT;T9kEyWkOU7)#^AZekh`^@Hyri*2~6BZoU4PU~5J0qO-^(~C=r&Hw-a07*qoM6N<$f=Y~Y7ytkO diff --git a/harbour/contrib/hbide/resources/build.png b/harbour/contrib/hbide/resources/build.png deleted file mode 100644 index e52a87c7bb78b1a6ce94f267db205f92dd275feb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`=AJH&Ar-gYPBi3VFyLVR{N<00 zs&n^ZlfEYPR|4(LOE`AusocM__c>!8=Z_yz-xoHtY~3K{rX%zCpKGn<|HE5=Mlg7~ L`njxgN@xNA4I(E2 diff --git a/harbour/contrib/hbide/resources/builderror.png b/harbour/contrib/hbide/resources/builderror.png deleted file mode 100644 index 2a06edaba31099de143954dec4fc4938e7d0e1a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 919 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl4m>B|mLR^8||Ns93iDjog{Qv#o zz<~n|4Gmxspv)*34S``E0uTRA+6(j|M@f)hFfiGJ0K>iJy^%mMJ5LwKkcwNqr#A93 zDDW^Jv}oDz|5$>HpfcCGn!UXuhcCI>HAOKx2$;3S8MGvTp^#;`ph+1ApUqN Yli39p)wQ!T)_?-g)78&qol`;+05;x20ssI2 diff --git a/harbour/contrib/hbide/resources/buildlaunch.png b/harbour/contrib/hbide/resources/buildlaunch.png deleted file mode 100644 index c809fdf8ca66ba7224523ce9567fb054bc52f950..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;AlBbJfNX4zQlN`Ai6nU6ytLoQ% z*(7QrF+-GvUFAfAXY}j8;qN$}Ybfp8J^Q|R8b?Iyv-O|e6sh>wEIjyTh0K&qN47kT z?THGz-QzV;U}0N-%!i<^^5|*Zxr>iIIdp2rhc9Uitu~%%e=7cW18rmQboFyt=akR{ E01V$eJOBUy diff --git a/harbour/contrib/hbide/resources/buildrun.png b/harbour/contrib/hbide/resources/buildrun.png deleted file mode 100644 index 8a3682bcca2dd1ef05b18df623954ff1b2257b01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;AvZsqiWOYU{KsB4sXmY>j(b}7;FqM}Eu+7`4@_y0%DAU>{oLXMN4QNQ{!e0GD&iY` z@8y?*CtO-fTUow+n8>Q{`e%FU&&%I8NKa-z_0i$^9d@(To@wlp17m^KF?hQAxvXn65YCTCtd&L&$Li6+#T~25Z>3weAtV? zV9vQ!HA7t9bM^vnUbRBgWYR^$j9Bo#GgnwWLOlaZ z1X`x(xyHn`z0H{bCe~BH?BZbUv>Nmd!GojbK6Nh94pT47yBDaha)55Aj5O$-psbUG zR2a#w$;n?@RtU^)<%8D3xeZpSugd%g%T69D`-r!^nPMxA_wXtQdMiCs8HxH4`Yd>sMBt%4*(KgE30rKU_Br8J-9r{J5By&6Dv3tPLH|<1 z9h1ne1W+4^8~0;b{n<-ZAH*}+6*NSc%#Ea7(~R`_=l+ynNjhK*Fzy;J}I002ovPDHLkV1l?J@xA~6 diff --git a/harbour/contrib/hbide/resources/clean.png b/harbour/contrib/hbide/resources/clean.png deleted file mode 100644 index 1ec3aae2cae288eba57bcb19b56f6c4e2f597fc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 501 zcmVk~KaToxR*Wxh8P(FS;XIms8sS*(0?yy^d!$4mdeySw=R(T%BH zB)K9tJ68YRxt_n@pRN1<>EW{fXZIBR-!{!Bk|aZ>cSkLMeXZyJr30n^kFAROe<;i5 z_rWy@i;r$dv?9uYzyKf7o(A7_nzpT=W0yK&M~Yn)AQA%71f0LLwj02J|$>7hKw$@qgXquouM{zJ=aC reyk)#X;N&6a#oycf`^-YRWMC9QfL!5_M=Ae+x9aOWbAg?Kx-1t@Zf+z5zooR4B^c(#+!~uoeXvE~I318w>Hx-iRL~tr+al%;o20 zZFJ5S1UlNpTg|sb_0Mv*&vv$C!eTmxPkkEHsxzCM^Zx>G9?Jw4lfpRMTMhebHM$Hk zJQqhpuj9>Y%K5En!jusI3jh4*tI?f)3dRO1CL)EGqeN8V=&J`guskis#Jf67+OK2O zat;>bQOG56TGuv~E@J%V&nt*AB-*`|{#=sNKfu&<2z_QHJ`bG7^l&pKZC5eUR|R=N zda?^xR=IkRJ6Db{#2}<={}dhfm6H4qpeZ|8-)qQ&{iO=y12veiUPQOCbW9@32zCL1 z+6ddG87T;aP(&iCKLAnc;7U>wgG3^6pt>|wZ@Di+zvC-IJtxt2t)QLU!qTp=DQDvm zFi!~jN(i4>ipaqrFehaHxiog|WE?OQ``@zKyAbC^Jr1jZ;~T~jDhgq%tNJB>jAJeD+$ zy&nln?1Y$V)|8OLlk(Ynh`&=vivoO3``lQm568Ch^;Tg*DpwHy`|;udzcRngagrU@ k)ZM&Oe0CZM5`=$&U!=5}8&!)sw*UYD07*qoM6N<$g1_@f4gdfE diff --git a/harbour/contrib/hbide/resources/close.png b/harbour/contrib/hbide/resources/close.png deleted file mode 100644 index ac1e90826e5309ab74eb66d70077cdd44334a228..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmV;50d@X~P)ha&{6~iLFFd);?K@#8x7aSR}F%i=0H>y}oRN4_mV2ivvl?x%aie z3Bb>&%HhRp?I&ryAJ>0w{q|fgt#{b-ZR|ZFPr+kZS^;;@G;7F_W5B}FRu+PRZyZBt z>WD?{A_kuV{>qaDg8sxYAhs;Ch(g~wp^M0Q5ZZ>|BRoYDaqBc3KpaquJPjlgCIaRi zQ^Ya`2o*xBP}dHpxW8p$X_i(DeGD+W(Mw=dz))c6ZKuMHHgTy>13QJ!Km4DIU=8#g-lxCCgZCbZHHm%{ z|1SR{z1^MqZ^Z)OWY1Zh#4%|UVhD|CTim#LT>$j#->HS|A=8MfL(hM)El&4e)a`rr z(!8Y&(wMOBp=^UUS1vFxc5TCDe+IGOFbB9#&T`ml}Z%YzvgaN06w9 zz;U@-y#2kgiPi{G!kU9}OG+-Zc<3gl+?opvlAaMltI&uL&Pf)8C#HdB{DV8$|hW?6EFJ+EN1SX zr|ZD3uREwKNh6m>jtsGG`!*Kp72+fy3MF+*047ycA&MHL&U)UDPqR4oigT|=1%OPY zLd{H5$a-w(I7kv@a0(monp%+B#ZOE^U7(>0%zg3+hwpG=_tw=b#1v@$IL7DpPR?9@ zNX|-eZ5z@6&r%q%rl2*}$^u5#re2=m*4y#bKah6Bv*8zH)nhu#6+(ZWXfbBFR${(X gWif$SAmKmp1=1b}L{{=k8UO$Q07*qoM6N<$f}(mTAOHXW diff --git a/harbour/contrib/hbide/resources/closeall.png b/harbour/contrib/hbide/resources/closeall.png deleted file mode 100644 index 9a52cb97a80e8b753161933b99c305445ecb56e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 413 zcmV;O0b>4%P)ZDnO;Z6y+kMIw>4$Vueg>&t)pWj{;y#mNHMJ@@5? z3_vz|gLmTlZ{Tp)JdR^z@bH9V$=8B|LTQ-U26$)StR@t!i46E8IERBGLH7;|n%=x% zL2Nm8Cuje~Y5udfiho^lNqi=OCV|E0Et1AS!L5h2zx!m)k{}p--r{t&Y;hJmHjV#n zkqV3=fkLtcGmnOuB0pRBh*fZeY>~y2wpl^8h~cnk4k2h@PY4l}Zb1S)@cFU@c5cNo z%V=_X3#<*W)Hvolg0C=i4KhOlqdUkJ`=X?sTSOqiW4hrnUZMLEnzHgm$rgOgx+Lu@ zH&d8`)0M&%R-L1*OCC}LvIPqelmw-jgS#)WnH;(+(X{PZAX{uxkJV%^7GgFRj4Fp4 z3RptgPXgIOs}8Df(04Vu=8mSm;eM-7l?93-N1k6$5R!WWHKgiFwT&k600000NkvXX Hu0mjfsXDTj diff --git a/harbour/contrib/hbide/resources/closeexcept.png b/harbour/contrib/hbide/resources/closeexcept.png deleted file mode 100644 index 55504bcb9bf26eb7cae46277f08a249a8f30a0a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 398 zcmV;90df9`P)&b{yk zAT#I*zv1j$0zaG-sGl7F3fRS`$e#mi*mC6C0OKkX&$i_!WRhsK!Uv4!`w|OO2w{tn z97?ixn(8LOc#dS5yezLFz^~zRU<-Qybf4GOqr^B!3`!9FA%77-V%+fpaNU^{NU{%b zetiY>NP%_CvNb9(5k^ZG+CmQkW8~Omai>6Baq|jTcWJf?@cn6e3(O5R`-ImO`i@-# z!AY#Mz@(!rN#eV_9P;!)Ff}AEA!Uzw@uz?i6cFjxmpM;=$u`Or7FnQe$|T!!ApWqk zdjMWUkzmK}BIkX;GZwy>9g?33&!jzzs?W@3^z7*Sy8?`b+onH*3QP_ly*9Rz3K sU4xE2!I}r^szg=ZQ4}}a2@)>61N}w#+MejSApigX07*qoM6N<$g50UCTL1t6 diff --git a/harbour/contrib/hbide/resources/closetab.png b/harbour/contrib/hbide/resources/closetab.png deleted file mode 100644 index ef9e02086c67814fd00c89620fd0d981b997e6cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 zcmV--0f_#IP)fruJ3jc8<|8pe&b0zCL@6z2E5pzd+(iAlUs$!iqI4S^6p4AC9Nf@vzUPSy(P~ z1SuhEk+Uxp0002ovPDHLkV1ikVxH|v< diff --git a/harbour/contrib/hbide/resources/codeskeletons.png b/harbour/contrib/hbide/resources/codeskeletons.png deleted file mode 100644 index 5f10f621b4b92b487cc6c3dcbae1d38fcda4b33c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`uAVNAAr-goUNq!7U?9MJuyR+O zoU>PQ%$zO9R;siujj&73=L^`lTn_H$5vQp;aEUknj0?S& z8w4ahx*Pq!e(?e3|7vg3Ux>W<`%#{^=I8z2oeP8a{J(ww|B4UBK97#qhy37Ey7>L= zdl!`dulgY`8u$PHZ@w4({}xOCi}~5l t6JGy5p8L~IhyTas@t@d`AE(aEpg80D!hkE63V=>z@O1TaS?83{1ORf1Y1aS% diff --git a/harbour/contrib/hbide/resources/column.png b/harbour/contrib/hbide/resources/column.png deleted file mode 100644 index 369904df1059bdb1b5f3deb5ac33657d5f6da204..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 898 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl4m>B|mLR^8||6l-QjDpb+7-=Ek zacVm|(9g^zL4Lvi|1(@a#p?*<>Up|2hE&{|+ZWBn;K0Ge{=WW2YX^r?&)4(pT1;02 oQaDs%9$na|dTO)muegu?@^^nQE?pNbVhIX7Pgg&ebxsLQ0HaJS7ytkO diff --git a/harbour/contrib/hbide/resources/compile.png b/harbour/contrib/hbide/resources/compile.png deleted file mode 100644 index 7462f43848103df0004c95370b0ff670386cd5b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`$(}BbAr-fdPP)y;U?|}H`@g-d zwDzYBD?>D*`(CEX81CATc6vdBat*H0b0l4>FVdQ&MBb@ E0L+y(od5s; diff --git a/harbour/contrib/hbide/resources/configtoolbars.png b/harbour/contrib/hbide/resources/configtoolbars.png deleted file mode 100644 index 226ebe419e92a034205377f92ea5e85d8850043b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1213 zcmV;u1Va0XP)=^;8SL)v&YYc{ooH)qH#{*wT3Tw(YqayRCWK-ve%km&a30bo;aK=j7xZOL-*))9FqqD=X`KOG`@) z(bBlOx@w6TQCwWyTRlBJ)q1@i=yW+B9TD) zfplPddV*X&1tTLP5FHf_CbJ2$-pMXQ@$vE5_4Su3WHKq{a(PHDmji*}hu((-i&1#^ zb1*hGLM<=*37;qpcL)dvxfk_sZc8Kk`!@~LUET8akv4A9FfSE z0pu;PL^6t+uY8XK0=A&{a&w`kwiaLOzJ{nENx@(?+Y_e7dMm1gp-nzKq{5i z-1zmzmt>3aq3u)+Q*+2n%tlQ2$WD&m`@*Y&kdV5uk#UwzuLCYO5L+$QHc}-A$tch~ z>imBK4y5mYbL&%E#WT|iXM^4V3>OB;Ga6`ay0V{$-&sq?uL{UMlyxLDbo2RPy}^GvIF&$#RVsBkS)SX7 bIQ9Jna3lOa6@sys00000NkvXXu0mjfp;t8y diff --git a/harbour/contrib/hbide/resources/copy-filname.png b/harbour/contrib/hbide/resources/copy-filname.png deleted file mode 100644 index e89a563dd9f128db85682d38de5b1b7218293ad1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`n>}3|Ln>~qonXktWGLYJog?n> zE$IrD{DjAu+eGdhQ(m%Vi|@h>saBW$BzGS?rav>aJCe=lL0tt)*-7O+c~ieOCS05) zq;tLf)B1)Dwk?wLABgH#@L5}OGw)>Rl$ibZrs{;#@qI;ByKXe`$FjPMM}Mf30aCgP zj5ymaw=C`!OG)}^n0Cz8ut(2$*@C(NiCC>qyJm}}LeK23)Ne-BU!6K_(mz>%&S&s+^>bP0l+XkKB5qmh diff --git a/harbour/contrib/hbide/resources/copy.png b/harbour/contrib/hbide/resources/copy.png deleted file mode 100644 index 85ef73cb6b7aed9ff8b9fa15466b7eead3c5e26b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265 zcmV+k0rvihP)`a&B!b}hCn*B28R3`*1*-mneN@0=Myzc!!p|f_f;L=(A%Yj%&e;F#jzP?Rig4!#Wq2SHG0OR8z) zG&#@n|Ct6wL?lqJi~p(BM|W@IzL#@4aNql%9IAzBmubzkq7C{Ajm*@RnpvK+oUxqo z%Qwd1?FR>M9=}2s`ij0oU(qMpdwmEp$axdnJrRZ^K6y_kjzSrH{Y5uMG%ePNvbLerQ zjD$I%nu;sU#hjSJ6h?(@krw4@+lo0%ok@(s9D>A^wqXeszWDO-SEIsGr1SWA)*B7o z-wHv6LKRE#!O@cs$EP13KDxf1_WY^&Z}CrOr@wyRa0|`L`TY+CpwLp{b?Hw40000< KMNUMnLSTZmnCA=t diff --git a/harbour/contrib/hbide/resources/curlinehilight.png b/harbour/contrib/hbide/resources/curlinehilight.png deleted file mode 100644 index 8c9ba785d00f5dc53011530efd406334408377ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`ex5FlAr_~TpY*5yIPakLW52z2*eMDmUKSw!|W;vB-N1F$ik{VN;-kk2qm3^=a?fLQ0Z;$poT0J1zC znc3=q92w0_*PEg0GHt0lONW4F2y|*DI=2SJy8S^#fXlsEzXbsC4(|c{E2o1D;7$Or wjfWEepAl06unjOV07*qoM6N<$f`_YK$N&HU diff --git a/harbour/contrib/hbide/resources/cutb16.png b/harbour/contrib/hbide/resources/cutb16.png deleted file mode 100644 index 65a611541a63e05921dc985b725a98b2b8764bb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 807 zcmV+?1K9kDP)*9LIl^r(=zCQyX=aMd$&UhxJEAMHGM3<&VTxmZu{RH?CZl?&tYDWn@&=5~her z89AEcJhU2ljGIGO+;wVft{S_0cWj->`pbL!Y~Sza;r0D|p9lb(GVLIfM>?i(xX(3~ z70Zm&|2Hx8a^MbjWK?BBc*N`5H=^y=0kYFG_viC-MtZxt(bghBP6oe<3w z?=*0=T8*ixY2>A)BR({&KnqB_OOCWOHDgh!gjhU|zP^4uDk=tfi^EHdi7RQ<#8xyt z{TbuqV&rFJt^i8cI!NM07G~!{G9iItZVnR?3A#ny$RblwT~Ub@Nu^&jvF~UXw1N{I zqrS97IRBWkbYCFLMAnP{yIMoi3XIJmWGJHphou9YX<88+KH{J3H$to>E?$| zA^Wia+0UPlE-Eq6KZsH`7h%4P{{Oy%azf9z+xl=;ufM;%!`mGlfkBw;8-Td-89oGu zp!1?H1a3zs>S()zHvk?J2KvnhkCaK1V(_~#95dJ5A@*`mH@Uds{Uru|6|>ZG)_Hsn zKMSFgy{cl@zJPUrTteTj$MXah$N+SnaTLBi=|qfrIjA~qEifCyz*z8URqHWpqRZVy zIP77AGV?txDS8GvYXDuUWuyJU--;`)XtT8z)zc4f#(d~1fg>HGey$kzJfx~Nv*L)H zEk#3~=6FCeujlI+odb({Xqe*iF%jn0|ANH72Z002ovPDHLkV1nrWdu0Fs diff --git a/harbour/contrib/hbide/resources/dbl2sglquote.png b/harbour/contrib/hbide/resources/dbl2sglquote.png deleted file mode 100644 index 3301fbd6fcd0a57b0724beff5537b834f4cd51c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1156 zcmd^;ziU)M5XVPT7z07EI6=}F)R@9TrZJUzUNAuuj{E?{B7(4;oe)8bhmZq_f)WT! z5lEq;MMTpJ0l~sdYXV}bDfh_xqi9kDKFHdwWjwh)D0~ zNMnNeXnwl8c%MCYWKyI{n%Ad>39Ir{WvYm(YK`%2?bYW!5mlc2(^{?8*VotI-#<7w zI6XZ*Ha1qT*N29N;$aod=7uczZv5Q%w7tEt^5&U_BoPyFz;m`F6;pAQ05ORsNl7e; zCy8=ZO_GV3xJi^ubxAJf;x55D#6mm-2w=c4;R>ZFz?LReQ+3S&^@vkaOX^9Zl;=2^ znyH&cVZ-g@YOd}YB{PLusE0-&3J^@8R_bTo-~tR1sZnIG!LXFPNTMWxS#nEJ6vDtf zxu+;jEu54g@b8;mF|!7>z5l{m1kG?VVp z7Mg(T*o?1uN%L?Ehp>bk)YD5OqABNRnz^;mp*{sc1d>#)b4Wxo0RJXtRxjn`%*@Q} z>};#mT3lRQUteEcUESQ=+}he|x7#~AJNx_lolYly?=3ICsH%z&2Wn9!W>$>GmmfDo z4#>TU@yW9B|Gs4M*P+w-?>gGJJazx;($n{cMY=!!i8});-;WKPzjbA~Hb4LF;M|$v oC$DSuOBd$mYaedzEj&1W@%i16cIVXY(lyd$ba=e+wtoB3Us_bCOaK4? diff --git a/harbour/contrib/hbide/resources/dbstruct.png b/harbour/contrib/hbide/resources/dbstruct.png deleted file mode 100644 index 88cc63608e6669fc53b2155756e4f9d826dbdfc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`XFXjULoEE06BdZf;kUe7srTec zebI-T6DFtfD6nz-vHsed!gGn+jNwS;zopr0P=5jmjD0& diff --git a/harbour/contrib/hbide/resources/dc_class.png b/harbour/contrib/hbide/resources/dc_class.png deleted file mode 100644 index 480f78c2205b829a8ce609ad93cf88dee8cd1631..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 436 zcmV;l0ZaagP)5pcS|RXK)#$48SckLz1#9IVYb54n3gE;P zj`Y9m^-NG~NCOUw6KscAk(Lzxh@_oW+$G{2o`XOBwpG>^@fxCIOHY)?r*hiT^Yk-= z;uVFH-Wy=+J=okcfv{Nl`3|QE2(VxRVNF16u-^e=USWkAkL_BW{9 z-1k99KQNn5d5}SqfQ}cbeYr;ujA7 zkHyvfSaD9rZ}B)S{NCDt;CTn3C>}(L27xipIURe9v8LQ&4Yv0!pb&#|taeY)SdCLs zr2vW%4CJmwS(SLYGOl?hhjmuL+yVq)uaN-#%X5JwHZ|9o3@x7t1B!J~BbYP6N&W0000gAZYf&57& z%?i(HC%hOzosoV?Q+e3%3dM*Oo|1N`Cv8wqQAJXEijmH+Zb5F!pqf z^*XEqX7vk5xSX}&W(z(M!_O$5OCq%k%(j>Ca3N%aT6_SidRUXX><76ogzUUT$p; zaB_e>zs@7rGrYoy&&lSgUkrD9q_OAId-QpbF=X`6tEP`9osjXW%XoGn4#bYQ560CM f@+d=DWP~z*M;0re-K92h00000NkvXXu0mjft9#;7 diff --git a/harbour/contrib/hbide/resources/dc_down.png b/harbour/contrib/hbide/resources/dc_down.png deleted file mode 100644 index a0a3771bfde09c87a1f49b94e9afab8c399f247d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 533 zcmV+w0_y#VP);5Ap^THFG8qm?}Gk<9}pyHqDGA~8U#9&h>0On4iij> z)zB$Ft|}`DD-x{)QNsJKR_omy_w1XY7oJ(?-D~YNTLDm$>#hwdLf=O2>Ys^KkN9e0 z%~zQ<4>I5W-ZRM1Cmu6Ia{M+0={Hp>{WeClV)ghc3j6*E+^>M1pfb#9C8l8fb+t-` zah0NuhjD~|x{&|nVM*h2zl>B^4arfNk83prcS|+ujwTRA>97;IJrB8ELMYVdKjfIM7eUo zaPc&56&o;2*taz7H_n9NY2 z5xw&*7fgXH1NkP*Zk@vYjVe6+>_#|RXQ(`~?Q&U5o@8+$P?>0d}9`yoL3WgOGg{>MrC z*_8|Im-NlIVCr2U7wv!ke*veKoVj$Z?t0H$E4q6+N4U3=W;qwXVu20EAwH=Qt(5x* Xz2Zel^;M1@00000NkvXXu0mjfQ(El` diff --git a/harbour/contrib/hbide/resources/dc_folder.png b/harbour/contrib/hbide/resources/dc_folder.png deleted file mode 100644 index e7da28c8006518ab9ca0edbf62ba3aa805ddf109..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389 zcmV;00eb$4P)l3JLTYoJ%>l!xvhe6<*0{%2Y<8 z`S*c|BO?i9VV@VUn0m(aj*O`U9s9y%T6;t%lZC~C zJ`X=%geNA^AiHOt)L}iaCX_H4mk``7)fGrcumw&zJ^r?E}8%U diff --git a/harbour/contrib/hbide/resources/dc_home.png b/harbour/contrib/hbide/resources/dc_home.png deleted file mode 100644 index 600263b2009754b73c21b36cbb5dcf3f40e0d672..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmV-e0jK_nP)63@s=-W#WvuhjxY>yWSO&}~AlK^AR;yz?wD zN3Kgi7f|Io%irTB2WX!FWGgODCle*253qcz%D(R>BGH@^olB498&#fO9n#ZT3ac*i zuoGZ;HL&EJAv&`)R{11f&b5pr0-ui+DGMPWGB}qJ%poA|i}`KfXVyw%6Ca3W9UQ^j z!miQME??|?L|h1hH-L9n!9F6&pZFy(?;JB60Q(1??{dsP1U|Y3g?*FJ2Ev}X1+#zy qIF4RQ8HxizMV*1i0rQWXAg}>h<8{o-IVg1i00005WYA1hMg0!y2?5RqC$ zT(}SyZU|Rj&--k>ICi}C>G^S<=hJyR9SuNEhIfm+6Nfqo%?6&cT@ED$LP-Oml%a)E zLZh0Xoa*tUMDVN})~-G$6>@p(ARq6aZ;;XM4e8k*0WXgx3XuL70o54YFR&HRoD!&I z0_U$ih~F7Fc=pNr|BDjH<)NJt9KW<+Cm&yfh|`SZbm2?T1DLH!CuNu4RX}f4vgR=?2W5 z>WEzGm^~4gITD!ujq1g392lS-764#L?^+d0rsVfe7@XU&dhI}8yjlsAgpdO)2w#+; zo9gbB8j1wR3|$$N;FqM+bh2dOtPCAyEe~1gFrADNSS5j29ZLd>uAG8E%*9x*@Dr~; z;(YH0V!M1QcD0dSz*?uwgv@G_2Bb_|LAPQyV az71c=4_RaQE(?$V0000A&u0Yzx=Bt&}7a(F_U}a=v zv9kJVWAlT7fyLVTtG)eyAQvcQZT%UnfWg)lsPZ!-BTywP0|U@BHlP+D2~-be0L^0s zYCIlnej3P>DGBlmW-z{W*m&I>wW@5M?kb0Ml9DmqhaLQGsb$aMiIE9-_>_Txk=@h9 zF{C1H@5Gzynhkhd)UAK-+hX$n|J>_~-KGi^#{asYtde74l-wl0$m7IqHQ}0`iwcGt zUK%qxvdn!otF(DeRDFv=>K6?OD?v4Z%UuSG4`@`biYUET9C7eYn~DbW**&cLoMuCj#0rIiauK{W@+o^5A=FHIsyD4YTu0|W4z%}AwENG6l&_x1c7 zJ%>dlpiCx%bULjbjJVzKO-{l)K8}#X4nYu9xxP5*IXr&!z+c?mg(!-uLUucR27}sQ zd2oQ8_?E^S)=lbIQ;7?2yA*4HvthYhW8)dVR}l(D<(!_)NdYau|xuKL4MV=33u~9S;mTj&570_clnY7GqRf&t+qBuplppP47esCt zZMHR|C`$PQq+NYI?>W6I$4=Sa`t&@{`#jI*)H$aHz#rDG8=;2x)MyI6i(e=d*IBGi z5dRp*!LtpC&xz^;r|+YP76wT)R=L1+rNhyy1CfFSCvU@WUFx(2E9U}aE(EOdoY;S| zB9u2H_F`u>=huuZSWX!D3**Rj_|c5rTpvlKvVGc91dH)jgmX6dvnE1BAS1$`G0Am+ zMS@43@8#^EJw>o^+=*aDf-l_#-vg0mbW_eFQMyy^Ls=_mPZ7)=_CO}aB16PH<=#{W zwh3>lo%INj_2e0j=2w`B_G0VasBmY*EY<3nr8B8bQ!pKpu$eT#lhn&lUDWF%xwyc1To)C$C!l9ytp?=^G XCLX0TxY!y100000NkvXXu0mjfUcSVF diff --git a/harbour/contrib/hbide/resources/dc_print.png b/harbour/contrib/hbide/resources/dc_print.png deleted file mode 100644 index 1348b1d4c9041fcc9cf9194e45903fccbda9a912..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 341 zcmV-b0jmCqP)Vb`lDbp$RRNg496i65}R_VD$+) zNF`L|_nZS2!JAvfz&G6U|L5ZdZVJFjD2MIOZ>Ts};11^KPJs6>phtYn0Gb^q2&T(j z^a9`auRPBi)*dgwBnkd<>W*lqDFQm=UDw6WLJGL;rg3xsrh+r+#Bq!u2v}5RL6!xp z^{<3alcEmkEY}Or4ht^j7x)lG5z2R2RNHAC+~Mw4AUD_*G+#10^n%uNoeMg+lPEZp zJ;9mdI5G^w5Qbsk+I~>M*;YV1EI3cmmorVX!UIA|uVbi?%(iXmS(eqH-OS$0YV}c2 n3xv*pPg!n6loH6P1ShcpGlS5`3JwBa00000NkvXXu0mjf>b;Ta diff --git a/harbour/contrib/hbide/resources/dc_procedure.png b/harbour/contrib/hbide/resources/dc_procedure.png deleted file mode 100644 index a9af009cb3f5cfd2e48705a6c8bea60eb3ef92de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 393 zcmV;40e1e0P)Uu@edO*gty#%5}8{``^GK+1LsDjuJ%5JIzU{6z`GKz9w n6`se&JgOi9%1lnYiSKMIqf{{lqgW}HzMu3iT%$!vhPPzVt^%D4H6^e$h6;ub*~yf zBDZmndX1SOb*c<_OXlcU7|8i^L3nmkXeS6?VHDonFkWu+2o)#6<)4C#Qy}YAVcC5h#fc{D#qO5?Y#jVL z3De3Q=o2k4t{7lRnqb?of-ATVfenum36}!f0S&&r=@oo}!L$usNi*!(KDag=VB?A6 z^Fv_WeGQ9`t|I4CW5z!K-q9)e4!rqiY*1cg+=&Id9GMX%K5^|BGV37v71-eTS$1B= z$9^f++zMoPJsvlofzW?ooH{KGe0d;4ytf_h^we1w`Y$5TevSb) e+C7@I((W&Q85>*Fs_x|g0000bzi(=3Tr@ZE51#94eJAH7}UMG}5Na zpj41`BOV1qF3+3v{!O#w3+yN0&3E62rW zc^#Bs@tYBxz|P399`-aFqp?TMSG+Tl>BAYSnKn_%)1+^{Ek2gux{xD^Ub&O)62!wL z9{kq2pvk<6Yzlv@BKdV89eNl_S7uAe^2R{bFU{2O(M(JWqlZg}p*!f%P~=EBc{B?N zdJLin{oWnia{ZS=y0c`Z))^CVm&H|ZDGRM3J=;k8Jd7lj+%f<+WFSRaBcfxYJ1Fse z7^S{CL7YX@hJQHxRe%A%UJr_%*iGK`n-&p=FzE5X;}SomvMFX&?TYW7O*}CMI8g$L zTLs(98U+sIAquN9VU@Q@DQ;y4nJgESmKIWiROG75DnNqm7@ zKoZnID%9@f?1F!{7s+bHgmk2%8(MUr5I2#GE@&~t1fdTqoQEOMp`eq~5#)2jlaLE5 zR%Iayx#&d^nve*IppzX498^-EQ%=G6{l3cV;?HPA9}2M9%O+VlI<}Mi9bNKQQ4Wyq+r0C)O6#rUF z@>?>30h5RZ50^?{kd{gMg*jp^pUYb!Yv(# diff --git a/harbour/contrib/hbide/resources/dc_right.png b/harbour/contrib/hbide/resources/dc_right.png deleted file mode 100644 index 712736a7078d9b407a9ba2f0dbdf20e26d550569..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 480 zcmV<60U!Q}P)?R19s&o@wIN%C_>WS~ARn21?T1rt##=rR%?vx@q@fX>$DW*6yOqr8iwkt0B}y=|Q;6uJ6QPubU`isC)DTkjHnS@QnBk3CFdLV=@82j>VHSA870~I;u=cy!v3ym; z0t)Lv6;^`oU=;(v2+b?8bWz0No?w+R%m{bD!Tcw1uR1vF4pghK5z*U=YNphzPn3j35_*IT%b<3)_+ z%+uTuF9N+Xr>5v|h^HGBoa6QB{l2Zh&%*=H`|+Nh_jh^rO2O54if2gviRcyn9WIY{`m~d`W51KyN9Phi-rQtmCo_y<99rJa}lPUb6E9F zLi~9Ox9*6swz|gppif}h>2xBO%MrG4+uPej`rr}X?Vci+U(7(NxJusc3UTKCHKJKs zMmQXn@U478rBe0ud@B^j-27cUrWZo~9Y`1E@Nhv6oleL4Ba z@8^3QUtC%{A^n6}m(_|JdjEKrv^r?&zI}ODA!OY#K0Ub_mBWAS>R61J8Jx0tgFPm( z7?=w@2nlsfzie{i^*_5n5yK`<<(40f3A69+f4W{eXH#^?N4DDg&euy73;IPT)Yk54 zJ761kVVmxiQdy?&5sWv(+fS!|OOJTxx2EAuYGmJ|In6fb4@RBl`p~#Rj=fgny=`l+ vp@s%qlZmflUvhv~uhP;Z3Y#j7j^AN!epMmGJ>x_a&?gL@u6{1-oD!MeGBawW4?NNzi+K)zjxaJkeA6rWfS1c?+E{XJaJGAK9mJZSkA@v@0H;C za}Ie?8)9h-u}6iKv;%qTJ$vjs3+$22YNRqAY`ipRq7N3L_ll4tXkO1d?UAob zbir_{7Q?9;NXmWjP7xNCZY@fJl6Ovr(FKD^w=tA-5pH8J;i9(-;Y$;d8w-(ZVeZlb z?UChD>Vp3DI%9yKlzY4mp;LwMl|`7E(1`*$1n&t+De$e<8-2{mZz6c4FnexdhM2uD z5j92vxBgSst5MS>j%flEZyHs4L T+LtN@G>XB~)z4*}Q$iB}K^r7n diff --git a/harbour/contrib/hbide/resources/deleteline.png b/harbour/contrib/hbide/resources/deleteline.png deleted file mode 100644 index a619548ac2f9f22a5226430d4acf9a03c2acbd25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 449 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMf#sHrXSM|oL3HkH8#1;Pk|DVx! zzOk|KhXKP328Ih-4BdxbPd)y&Y5%Lz8CUk-`Mm1lhs)2t*YAD#`t$GH_Pz1x(@#DA zw(9bSX~*9_`0#uFnRoYI|JwWDTYmS^jH>mYfB#P_UH<*||CEA-B~vfldi~?V+drGG zf7*KeQ_+OeYp;J~? zo_Q{GNI}3YkYiW3YUjr9H>%(N`o}MpF!4;m|H5z5H_m%ID)vjS;L5r(^MB*bZ7jjH zbt>N@H~ViW>NY*-&|&iO=zafe=K%f~mgNgFHXD2qf1Le?OZtgrl*z|=Re`#x_2kl?&~QA>8(<=to`mWK=&|sy85}Sb4q9e07sV$ AOaK4? diff --git a/harbour/contrib/hbide/resources/description.png b/harbour/contrib/hbide/resources/description.png deleted file mode 100644 index ffbe4b73747be0f9e9727fcc0a3fb44c16a51ae2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135 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 R6Kntg002ovPDHLkV1gnZaL51v diff --git a/harbour/contrib/hbide/resources/editstree.png b/harbour/contrib/hbide/resources/editstree.png deleted file mode 100644 index 11300cc393b7bcfb4179c8d171f3a0c010ff46e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 785 zcmV+s1Md8ZP)5G2$ptMHd+XF7Fvp_ zL`0ORMVe%ij2e@fIdjjs=l$Ae|F^}xNQwok`K{uo*0=VypLzA8ch%4( zMtrd{^!2*-g3Y1nY#_Z0Y^R2Odmf$N`r_;8==wM6l@GrA@}IX}f9Ky0Sb$5HkgPlb zSpX|{3Frd0_x~okeeJ4NyHD-k(O`3+Sy8VjAE5wpAOjo1NqdR4i-%XWsnTrFK+}NV zf~qX47F6p{A_RdW*s$n9$6%{R_ZHn-21B3IV{fdz@Im(e8K|N__azs0*BM>1Ob3pM ztr^>b@l-Q;e3Mb283l^9u}{)zUV9T?`?ktHxdv5~6NVwr9?k&Z=tubLdr&29Tw`AN zoTgV)CD;}`0p|prMh{}EU^Mgz&qI!n@8MABTesQUe;T!Shy2?gsKW*`8q+o4EEpw- z6QzqRPSXlDl%lsn*BP8rn8}Rh=BIG~2KC8=uIcE#F>MQ;0;fR)t&1#9k_-J|_wbMZ$4V^&B7$`) z&|RG+QBv9AWX(55xbgc;QI7;X1=>^K1%al^7K^Mhz(_234uSx9`8`|*VqjoEdJsSm zdS`ifUgN|cX!@!-ON_gF2GPP2rwwsh5hWE-S`w!vVVo02IrBJoaZ>bURkm%{o2EFO zE6)!Gv%|MP3j#f>%QSE6yr}E4G*wa1-A}v P00000NkvXXu0mjfH~ehF diff --git a/harbour/contrib/hbide/resources/envconfig.png b/harbour/contrib/hbide/resources/envconfig.png deleted file mode 100644 index 73d460e48a615522271b60f2df341f520e60119b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Q$1ZALn>~yPGsadV8FrryJY^g z`Ibf&CthuFiqJ7#b~9=wtKh^B(yu1$s^R>rbL_)CYsoNuKl`o?txca@cZeq3J|AYE z?;3LJQz65eG{$Wo>Q2pfJdwUZrodApG9=G`)ydt;g^Y~n1Ps`jWC{ukF8__*woWbL zNIIjS%bV(5r`dej9?3n*-J#Nd;>7~CYPI`TGmc6W+33nJcg9RnJ^^$fgQu&X%Q~lo FCIGTuPbB~V diff --git a/harbour/contrib/hbide/resources/example.png b/harbour/contrib/hbide/resources/example.png deleted file mode 100644 index b80202de5704c149f5920bdfc97b3a73d1348c48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`fu1goAr-gwPITmAP~c$s{@?z^ zR<*`<6P?=`83(;DCsj1PI2knQK%uTgaqF62_t`WK>redeCReR@lt?5lQY5WX9QXsAmB>!01msd0#O_%=eq#|hpOpY=6J}LJPUO=#f zzXKdxK=s}+`5G=YO0q*fgV4K9quP-2e_+6U1(y=Vfad~h;YY~o5e(8YjS3w_s2&+Z z^IR0A-loKr3(!}c@;S-x@1Jzl>1Sz_Z^=Tgp%^8q7B!`OpUH`9NR)32e?|^xF4fl)~sXt)NR-N{mR>v=At;W~0(o z#|NyABPJg}vhBibi9qPtWPwE*F)>L-s|IC8Egxvp&A@Dpz+~BB@&@$c8aj;&G-6|p z9{~UqVFyHe*DN{>OVAnS==pb2fgcFsBscntFA?R1D3JHk^Z)<=07*qoM6N<$f)yd@ AJpcdz diff --git a/harbour/contrib/hbide/resources/exit3.png b/harbour/contrib/hbide/resources/exit3.png deleted file mode 100644 index bdbb58cd7a29204d7af281ed1c0c0aef08a9512b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 477 zcmV<30V4j1P)bI;7ah6gP6gm`E~*wK?5rl9Gf> zyKqQ|!bajo5AV0FUA%jjeCyNi^gN$_Or&Y%9pE@C!AOsEvDLUw6c;z+Uq#+@27Tj( zAfS6Gs4Q&m@qv@qckEpFVRt{lY`uZLX-g2$n{8zUU!H8@)13$FsGr_Mf^F|BX5Eh% z7`X&TKOjL!Lgg>JJi5Tb+0uplgnF4*$EVA^?yK8qJ@{kljHL`v|6>nW zId9QxJ_B2~Mj?4O|2KhwKSf)|F;>^FU~J!mM!!s<)Rr{l_Y6@cv$IrM&}uxQav<vQp;aEUknj0?S& z8w4ahx*Pq!e(?e3|7vg3Ux>W<`%#{^=I8z2oeP8a{J(wwzrYOsrS^wa>i)DJsL}Y# zr*!fA+sFT>J2-Oa{Qv*)Klh9yufa;>|GsbZu=&m3_%q;_Ttw6E-`5ZSU-9AB|9j;Q z^i3cKEmGl6XSH)Ua)9JDS!ilC1o4zn9XK)?a|ly+qP3LD#Q17?CNPc5#3zg z(a`vuKl|pwmDsgg!}9&aL-os(XI~lK@DQq%9(SS=N@oZ;7ZM2z9?7)gbKI}q~<5u%lx&H~m1#&Ax! z?iTE*gYBF_%LXutTh0Qfp-RRnnv|XeRsc@O7iHji&NLC0aSB|%$g3GkOd7z`z)>L3 zsKNt_1CLXhAX_>jk&>n1D(jX>Ru`3w&Y2Q$9^RCMr0kUmC8N0|3}}SXSzr;~6bY45 zGa9Wkz<^irawdmJPE>JYsz*%nsDdyC$r_ZD6mZo|XdX&ONzKC;IBO7;?xl52+Md+9)Wz)6*0I}tTl&7`L|@UVZ(}v4o+e8$@j0ul_?;eR$~O!kg01g;NrV zJB#HNKW3CQSRI$vJ7U#co5M#U{@tm9*6PUbW%H*sn$2IQJH{7uHAgPK9Vu_WHTPqy zGx(S_k{b_h+q$H(q$p?l{^)1lwyp88rETqdD~hhQ9i|&^9Cyr~L&L@&bdBx YR=t_CGAB{mJTUPJ#Tx>?yI6J8A7vT9L;wH) diff --git a/harbour/contrib/hbide/resources/ffn.png b/harbour/contrib/hbide/resources/ffn.png deleted file mode 100644 index 2158174cd9c4a36ff30028022394d2dd362a9663..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`o}Mm_Ar-gwPH^O6P~bWI=l}BM z#}!%=C-9c9xL}sk>pS;&s9RR*v-s>PH$Pvl@PH@V7;8iye0+UR;=-2TbR$`Z&3p?s e?qvMZesj{d#j)%5pU43k%HZkh=d#Wzp$PzF`!G-d diff --git a/harbour/contrib/hbide/resources/file-open.png b/harbour/contrib/hbide/resources/file-open.png deleted file mode 100644 index 028326c39c8314e8acb0479128340aa422ddbb81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 741 zcmV{0YcAuuoq9g6e{RRP!TGp$zZ*6yCXqb#6QDxqGlfv-EZ4Ovkj zi6Yuo8;-*ekH--XN6^>T7tdz1d!#bIsfr9yfD7n$yU_I@Ow)wNqe7BIB5)`GgDgw? zT)70YB%x8Sqg*bNvW#kF8^NHCd@e^InUupcdm)Mk5QwDG)1$i%?2e5@A^|}VNz|dI zKu$d5L?Qy=00R103uv${8~%VFM$v$xD(G}Nu6;)K2ciSeg4#X;k>5y!GB*iequFS< z0ID<`sz;Yd%w`jRYI!_ceg{*-X@X4biSIJ;qSb0Ow+@C;M6pnC-wV|(%;aC=&E`im zq&n`-+>4x$HizJi^ae~3~Oc@M*});pS%uDap08CrN0no;Lr29sEffl& zK?US4G);p=5&Hd6gq3XyRDw@xCy#_#P1I2(OLK?|r_8F=LyGM`sbUTM!FnH*kR+sLzOz471q_4_<~zHpKKDxYKJ z)*ZG|xytT8>1V-S@hxepytT%TCz8|gp`inR=UTN2)wjxe^&&DW!upRTHcQ(NXZ-1^gRKrKkHzK`j9nSI5*vxkUx+-3#70&|zRM6Gd0J|3f_D9 zHoG|i_^6(QY4*^@p&c3b`s{Z7EkM(R2%u^-{-U2AyAV5cqs4c}s5{DGo}cxX0Gd4H zb3Q<^$E774^q&B-OVZx}2HHC{J?EJR?VwE3Rnl8}4IuW2G3Gh_8U>Vtb#I{9VZEYw zOGKxOcK|3OAqfPqU2?Z`Q$hk*){rWSR{-@LfUSoz`_;E=o>Qo5&F=N$F)odGO8)oR zrF*zW_-#?Q?pw)7;)f8+l8u)}+x$+#ayVacApd^>B{Sa^xdF7X7_>z*$lI5y+9O~j omohA`BYs}?SFObStUd<(0tUL<3592oxc~qF07*qoM6N<$g3Z{Lp8x;= diff --git a/harbour/contrib/hbide/resources/fl_c.png b/harbour/contrib/hbide/resources/fl_c.png deleted file mode 100644 index a9674adeeab13eb06bd11bade3901d57d71c7ae7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!P=HT}>;M1%8yXsbJcfpb{|pQV z4jlM?Yi}Qr>*nd=7*cU7_Z%bF0RxZUN9gp{igDpa`d(2Pp z1vj)GcHD02zT&*3!u7Ueiv4O+Jeo=qZrAhVd}Jz7V0a8{(@rahCppR4oL`=E&Z7X19X)zDl}s+RBEpm!4dA-2 zGxYUq-@`|bp7A%m>hA8B|H)eE=;%23SHP3Uk9$Q#>h=2XrM1+xmMDrOH!>n3B0G2N z*fV?90T2;H1Zyo~1ts92a4bw#Ym`eRf*@cxo8`{!+YdHx+O+ErfD#DnntZLqKw+4> z{m;4b_8#Fxky1C=ub_&T+*`!q>FTU&zhk9#Ptd);`W2cWgaiV#^tU?(X?3F<)}J#-mote5ps z4^?jscJvm_vG0sdR+-N1Ob!4um4$h8=g{w*ho60fHIGW`ZsJW@O1U8h3hDMTEQy!z+Z74I0X{*#-&p%>P^H>;BtYjXM{*czh^g0w) zmu{2FQW<(EEtJM;daUMF=SyaWvG~L1Bl4G)n~R9RYLwrI_TkI*>%)PMJ+VYe_BiK<2;7=KvAQ<|6W>5FYij=RRI)6v1!V9Z!vQ; z8{?&2S(}u5lE#7OjB^^D+LE)si(wUMv>x`Sd!UKlt{Nyvg1Q?tCkJ+2TkrbR*<6%j z>tf@T+mb~)Pe?ahKtyJ%L>vpXo^{X;hIEW6!I(0m;Z`zKWkPlY_99mD-B|Gh6OUdL zBDS(lzUbV$rL8T_*GPJ#k&;xnkq8xuG#vJ&WP{7#!tpX$zM3Q!d}ADJz+;Ce@&nU> z&87!C*HZ550kLZtJ;%l%zjF3cUQqch)AxO>r~KJXB9kIm7pg7}OAL9tC)N+`Aq}T8 z4l-+oZKnK*cc7}g)A*dc(#sT8W}&an;i~>T=XJ@19oLXul|g8Nwom@V$;~0&VX?zG zXVsj1L%ojhV;XiPh47}Qnz`=NPmG;r9wrL0myuY{o3Pz~-!{ZXRw-A^)VZjf-;0$f bF00000NkvXXu0mjf=d(oN diff --git a/harbour/contrib/hbide/resources/fl_ini.png b/harbour/contrib/hbide/resources/fl_ini.png deleted file mode 100644 index 7eb99e7a6d72b9db2373d59e58e2199ceb3a44dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|#hxyXAsXkWPV(eCpuofY{AFEK z-7~pML9;e-XbZ91Y-BpvuEg)Vh3Q}Uqz2;yWr^Q7R~kBmuk7gHSWp_HdgGYFGKcvJ ziIW?)czbNm-~ML0qw-@9VGBB^#J{hbC;SPZj*QP)|I= V+Wcda^&z1344$rjF6*2UngE+2KQ#aV diff --git a/harbour/contrib/hbide/resources/fl_lib.png b/harbour/contrib/hbide/resources/fl_lib.png deleted file mode 100644 index 35d358ddc946e343537b65ae26395530fe9e6a3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|4xTQKAsQ2tfAq6RNJ#KCFov;( z@J?KH(bVBdfuYm|6N3k=ycQ;Z*p+>%LJmK;$Pn&3g)QZ(i)!!x6%2FzfyN03dTofB ScW^n-ECx?kKbLh*2~7a%1R{z6 diff --git a/harbour/contrib/hbide/resources/fl_prg.png b/harbour/contrib/hbide/resources/fl_prg.png deleted file mode 100644 index fc004ef8db2c87d7fefbc8b7f76d8190dcabe6e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|fu1goAsXkCfA}jUGz9QkFxc_V zC~|OQV`Hn4l4#IM;85&X)xLpOz+nonLjeO%gVY1HN1GWFwe)yTm?=b?W-+J9B(lDc k`mn@)OUns|tWRtVY7(|ib;W1y01apGboFyt=akR{0LJ(x8~^|S diff --git a/harbour/contrib/hbide/resources/fl_res.png b/harbour/contrib/hbide/resources/fl_res.png deleted file mode 100644 index b6175c83dfac0f7ab87283bfb32a357e2163800c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`C7v#hAr-gQP735}FyL^uv~s_F zR!#5g;+H82IiH&9zOb6V-M-`Z8>J>gx9%0bLPx4+x)((4Rk2vN@+QZ-8Pew$Xho+4!A7lqe2 z!4YPdVTLIhCc$L2Tx`$Yz86s}`LjOwlAwi6p8@l&Y<=r3R1Y=o{ie#-F4oJ(`$M5rv)9mb$0zJ(^)P}mJ?i^~KbSLDP%*l*Q5fn908|sc~4mD3Qr#mLc0@?kEP)PZB}kU}#kdgvhuRx>qcFWJ4Sbo0;q&?Z<~K~k{Re>#5fepWw9qI6FuQv~wPK3psoMG6STbR7){|)Zv?Faiv-)Yr3hqIf<4be zIIg38Xi2pFO;#rO;+^-naBBvCj*ekjrYd+nrxCn=Xrec`flSWAQO?BSv4Oaz3pk9X zo)DI`J(#AU2b_&4M|zE4wQ?+@zOtgr%#COv@-oWZ9XZSxG@bWF;g89Vl-)Ksooc z?}b`=RnY@Kcn071+xC5L#lOT}QoUKA=j~fx0>9J?*Va2k^&La$0>+ODh@EO! z%4*oYD&p|Ai1WOTn`a$QZ=kho&zB&%y8ashtxK+Mn1Y4HB@)o4 zM=>%IptDINmQ8`D!w2=ch`zyL1m$toiF7(`EKHOTk1On84WVob1VeE4sH4825lzi4 ztP{~_6mGY>9J-as@RTX&68(61)v>pKfK29$bt0e7BbUpSLsuG$#Y}bywF(@^ z;WLsX(Q_Fz5A*Rj{yK?-q9}hBP)bJGVyRr`I6iB)JF*T(?T@fptJRAC$OnnRPB##Y RrVIc8002ovPDHLkV1ivs*W&;H diff --git a/harbour/contrib/hbide/resources/fullscreen.png b/harbour/contrib/hbide/resources/fullscreen.png deleted file mode 100644 index e98e709168ea627ce8433d97fdb6434b6051a0af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)Qg$ z!O-kivF^V^-pc{(t%Qv;Vgrz50LZ+LQmwc3r`5 z04xxF%Gdo*@80>pd)Z02;(1#y{?DJd_rG`9I(VAE9*salth1K?cPmS->P)=K0L?NiH_-JA}R2!j0OQJz*7Zn!< zbOJs`O?;q<#%IP@td$#K4ch>xHZ7iaa|^P79_nI{0QNvxxe#aar{ zMBZ-B-vW@q^}sk*4@a>0o5B2n6|;MNnDl=WApZsM9@)|9R-w&Vf=@FA(A)Dc;p=(` zzyZsm8tpDQ3^Rq$JEUNLnIE(P0bJW)c&jZsK+;5UR}Ur8Q>W{J33MzdVVo;Q%k(QW zjOBpYY!%+F&Jr*AqNdc85%L_e*f^SmH(-b7FAI}f0pq+3EpsoSU=m>4ZUwVt0Q1uT ztCvR6=cgycE36^WQ7p~8IdkpzqkFjmmK7z;D{|0IG1Oy8C>xDM*+>i&!yH^65B1>Zv%GI2nwy@-V-8ka!}12;_O* zhuDza--WLmO2Jg=On_#Ampc*7To$a`jgZnYAu=1a1>qj%^b^|-jd$);R4pgrEtd@K zk2DPZp;2slCgi@WM$!sfKltLjf42rTo@CT*roi^E7Vn3o=ec^4`~Lqx#Mc$HEUCg4 z-)nU5%Fx4=hk3J*`(8lg9{C^RLjyh?2K`OQZ;rpreN$u@kI|z67m$2pz&^|GV*mgE M07*qoM6N<$f?i$?ng9R* diff --git a/harbour/contrib/hbide/resources/go-down.png b/harbour/contrib/hbide/resources/go-down.png deleted file mode 100644 index 5677cffe6a3946d9fc5f7acdfd9260b6f402fa78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 572 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 diff --git a/harbour/contrib/hbide/resources/go-top.png b/harbour/contrib/hbide/resources/go-top.png deleted file mode 100644 index 227a91e5157f4cdbe7152f6fa18fcb065c170563..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmV-K0=xZ*P)*d*cCcUDOO%d90}t+#`?>Dl!*y}rMdb#8jnu{gkXsV; zpvt63+27v87BizV$y3>0K5f3?l5(Sv==U4a0}&&AAw69lO*-4lzWo=VGzz1p$LgQ% z+1r?Xr!cvX(>K#X^MG!%2vtLy(K`>&AG${m5ATvwyh(bAC&%fH*U;eGLEWUB3)2dm z^Bq!+eYNsruANG8r<6xgh7?}A7)RTLmDrLKF?3QIZVZ&t6e`1=5UIGfX=SZec|{24 z+XJFW2S)!Pw9gdif@SDq+wgwtl!gjfB*Fa6oY35q0C+ zsrAaxX8bq4D8;qVQ8*wlKZJeO!tk7h(T^4!pRG8)SPKLgh2?);UMBG6T>UT6H)L3l SX`GV)0000c8$FDk#6CFrE!cl^85~0!5J;a! zb=&fSJPLf@80*N#Cj;;cjp!AQ!sClTq5BZF;_#uwxQUVjw1LPzQ zfv0Ai99e@C2^}n>dJMhm!rix>h`#Q`t(WJpn^~>qp*GftR|~B`t@9@y~;3O0I+T zksfxT3{BZ`aGx0M0O8{REW;HrkLX|}{%t7(*!Nx90jcSJ+?n(sGUZW28+=1VUTpv; i^;H>MNHppFJ^usaY=zMhYo@sX0000 x>t-JKBHPCMyRn5SVwTYEqy@Fx4u3zuxPRG=lYa!c&I0XW@O1TaS?83{1OQguGhP4y diff --git a/harbour/contrib/hbide/resources/gotoline3.png b/harbour/contrib/hbide/resources/gotoline3.png deleted file mode 100644 index b10cd0d77e300b23e0ea57af5bf2aaf84b0859ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329 zcmV-P0k-~$P)L?ZPTYB%n!F5{$Sx|54xcPOdbRZW!_FSQEbpdy>$ObFPEo(y zfjzr=|FPq{Pt)h4g!U1k1!X>awuO+2~Z153V}C9-Nr>xyVP1;sFkGC2K| zRam3a@U;HmT2`l|gX|40bGRcim>ql>yeEaNGR~iSnbqRs$MQOcKG&7{@AoRN1X|1B M>FVdQ&MBb@0Gv}f1poj5 diff --git a/harbour/contrib/hbide/resources/grid.png b/harbour/contrib/hbide/resources/grid.png deleted file mode 100644 index b2bc62a7461e7fff55a5f51e6566027782fe7b06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%_o-U3d7N?UF76|?DSM#;~FrVpL kLGi&1ot`%l3epS=j>|P}_`YDQ04inhboFyt=akR{0Fv4mfB*mh diff --git a/harbour/contrib/hbide/resources/harbour.png b/harbour/contrib/hbide/resources/harbour.png deleted file mode 100644 index fbf23f5e354c7a8eb3e773d52098fa37b2da7ee1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40702 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 RVU_>@002ovPDHLkV1k{*0WAOk diff --git a/harbour/contrib/hbide/resources/hbidesplashwatermark.png b/harbour/contrib/hbide/resources/hbidesplashwatermark.png deleted file mode 100644 index 283a2e0bab4eae31beb3cd64de599deb1270ccff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25197 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 UN=y^Gh5!Hn07*qoM6N<$f{i$cI{*Lx diff --git a/harbour/contrib/hbide/resources/help.png b/harbour/contrib/hbide/resources/help.png deleted file mode 100644 index 5cfef61e2e7c7bda1a4bc66d86eddc9c0664e3e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 814 zcmV+}1JV46P)=lj0@9EN|s?*7pv0~-KmYruFfV+_>q zQO~>?+nxS*Kl=;Zcj<6EZVxZ(YEN3G3CptJ`T?@JGIE6qre`XjL#2+4U)_=ZkAT1z zdV5j_7pE3te4>hM!G|9}jg6_W2W1H4>4aXBLc>bY+ z#T^z7^|xWm>Nvts;qHqWT(~`jkKbGfLR2ex_-=LQtIONdj6A2>Ta%wQtX+ZoFH2}| z(UCsBoPZ&MKt)|Cg>N|zdry5uJrhMroMN^RhC!!jSvokpd42ch@kt-Eo zuGib23WiApmIjklG&NB-$gz+aNvIpeQh6Y5CQuDoB(YxUrw*2O=$LXqssuDcKsU8$ zooWW&j~D9-F7h|mc8xeSCu4~KG76GKN_K9vv8hW(UyqKS4oR61i7C)ApK_q2CcoFx z&(5sMM21M{kn0r-1`B`R?U!FYR9#?l2KZ7?pjfaV!I0E^JbaYT(CI^ey@i!~ZuL@n z*8`bI2{R6x#%0Ge#NrZjlNy?n5>qtCiAg8p`fTfylS>N!y~dt>x04jWVJ5T#QZrI^ s%!WxsUJ#<}1Q`nL?6cD=NB+e80{U(;JQR}+(*OVf07*qoM6N<$g70f}00000 diff --git a/harbour/contrib/hbide/resources/help1.png b/harbour/contrib/hbide/resources/help1.png deleted file mode 100644 index 184ebcdba2dbf6675a0bf1ac3c948d49b45c3f19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 735 zcmV<50wDc~P)k#c1wMrdHBB3?=1^B6l`fO;&uRmO z=5m?CHA?eO>U6oT+GI{{TZ6HZ3o&pH{^9g9AMQgIzI5QiefXZwIfozlUy2~5ohQhB zlaf3(>Bxi5YNDvi-kG(=oE`VhVLr{UC|(TWeA@dZKjCLHUt;f&b| zNw)=LjD^G=fIx2pscx_d?=?pA=BQl}lHRfI+doziN0UWwhtNF3pa~mLuK`xpizAye z`sX1sJ0Z}tBjT2#hzAsF4(E-#!a3Y32(5bFzl>p*8;RdIkP$Dg3{F7*Jp}UFf#_FG z2%C){a^)Zos56x3OnH#_l^(e{WG%12y|#{vpWP7CG~KKVY9EF5+OgZhAf}B@s!*@; zfX7|Bv`M;gfgUk*{}&E1vq5CE8qgc$prydrekUYmJN8;#i0`!01}gA?hc8;<2Pk=l znkW5RAFZxi@}t7{6U0EPzns8+8-vUbEE2RPkg}>J9&l5AA!)z?8N(rAghkYl2Lf94 za*qY+76&4G?7z*qA6Xo*x)D|TWD`)&1B$Lm6FSW9v{5gzrUFQ(hccTBT`m@tj29Wh zZWMg-BX2s0WV&A{R|QC^B8@tEMbIS!}hmr?Eup~SQGpKlK!MgJaR zg@&dpZje88_L3l`_ECql)rf-w^Egfoxzhn09rxnU8z=T?yCANr+kCzj@-NYZJ8|_* zeyP>~8HFV^wj);A0AYn{jwTn9ok%2CrHbXst0K9wjT)Qilbs{i71Hf)e*vY*q>7}_ Rmcal3002ovPDHLkV1i4;P*DH? diff --git a/harbour/contrib/hbide/resources/helpdoc.png b/harbour/contrib/hbide/resources/helpdoc.png deleted file mode 100644 index d7d8cc9a48b78925dc65955b5898148282579fb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 529 zcmV+s0`C2ZP)cT624 zd?zvH&46q+hhE51PT3Sb2Wbj`$8DCvmt0^K*d9(tI6l{ z=-P>bGxyAGM==mdpgkWOMsfbA zFoxK&fYqOCY?4+HNox2KOThW0!>MTKxfO9Pt89)$Y+1n4@(K!N7UnLZ<#(kx93v0TZ|#8p+<#u}Sj;;n5i#mdAG`>*dW#_?|c THSqCY00000NkvXXu0mjf+ZXpZ diff --git a/harbour/contrib/hbide/resources/hideshow.png b/harbour/contrib/hbide/resources/hideshow.png deleted file mode 100644 index c7db0e468c6d7439860b215b4633b30070264db2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 549 zcmV+=0^0qFP)cDW zW3xPaq+AqtpS}Bh-={;ms>3YLIoA~z62Ndsl6G+?-(Rc3IHcNQ*zGgQQg$a3*0$m8 zw`2ZBBCy2@l{b#OjAW@~vy-xOsn0l5+}YXW@%tl+5NIPq#FlH+va;OXpOB^`m0T|tsS08C7%JALX%D`hQC=ct7?9PIYE zJWLs-ia}Q*g&>Fo+v#HvwDC=it4h?oYl++g8-NsqPLC#0v{9-c zHWg~AD;C87FAPmg_)#akntN{TZs1gk5h-n=>LFu9SzQp~80RBCL~Mwh8+h<3FboRY zO=%+&i3F4@*JSDly9k`l4Kr`>-mq60VwIEG248EuX&?mtSk7^PGR2C$iDW#I2=AGl zE{H~R)mug*$zp!S;g^pDYiXlwv0_>m6e@zz{G3h^&d^H&C&6KjCE;R9&yJthLNYJc nSe@f^fv-z~bNoXL*1Y%)GO-s9DJeMp00000NkvXXu0mjfLl*QK diff --git a/harbour/contrib/hbide/resources/hilight-all.png b/harbour/contrib/hbide/resources/hilight-all.png deleted file mode 100644 index fafd64b844dd63bae04a41c514bacaec7620979d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`iJmTwAr-gw_8sIrV8C^>bP0l+XkK D0=qbj diff --git a/harbour/contrib/hbide/resources/home3.png b/harbour/contrib/hbide/resources/home3.png deleted file mode 100644 index 545da634b1bbcdce8f0f7cfe1800bc14391a6de4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301 zcmV+|0n+}7P)U*5_Qu`02Coqr-fSSBPnr|hW{XbwT1;Q2+`}_ZcFfp3_V46FRe1sYBpC|)> zngftEFIlt*!w`I$gV8mgJ9iGl5TLpaY?}SiHH%d?|8F&61JhUxX+SXmo6R7N9h*La zX>2aRFaTNety{Oi8etg3M>phFx|IxA^OsFYoFG9^0D%;}`1Ak&8zBDh_y7OT|Nj5~ z4#dBK7z9A_Aax-1Pg~qwP+S3$0D()FE~D5E!ys`Gz!?+h1}wk+ACAc~0OU*PSdN_G;dv7v zbtJw0QclE?gof5eCxfg5D;Nuy|EL*F%w=FOWfxGtu6D8$XcL2{tDnm{r-UW|78EyS diff --git a/harbour/contrib/hbide/resources/idepreferences.png b/harbour/contrib/hbide/resources/idepreferences.png deleted file mode 100644 index 3d24a5013c15f0a587ef3aa807d00f53ee262fe6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 379 zcmV->0fhdEP)dQ$z=i~kFj8S*A7X0iOT>002ovPDHLkV1lxxtbG6g diff --git a/harbour/contrib/hbide/resources/increaseindent.png b/harbour/contrib/hbide/resources/increaseindent.png deleted file mode 100644 index 7129d21f17b9aad304a0ec9d95833b40790ad85e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~q!2~3e1aDLTDMwEi#}JM4$rcT~1_lN)2N(;y z1TGwCV7aj4MMI9X)P+9|2iO*{rP%URI5Hb49rXN>t8kOwSxIig4Tq~+Txzmd8CJMd VT)0*yt_d`Z!PC{xWt~$(698}rB#8h3 diff --git a/harbour/contrib/hbide/resources/indent-less.png b/harbour/contrib/hbide/resources/indent-less.png deleted file mode 100644 index 6d5bdc751e87c12e1ed3c4760f10cc11ec503cb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352 zcmV-m0iXVfP)j^PCAx^k#$jY=zMgCdkf(=^@y9XODzm4Y;~lHq`* zs&vbC`vs*Xq$C6p3|N__etf1lIX$Myoh$?d=l+15tTj?2A08ca0m+Tbjm*Fq^9K6K zy=()QSLc{N%@DstSgjV=|Li@1_Oq>Q0~Zu{>;lU`z)aq>k{dX)fkh}lcbullzkvq| z#LrkPU;P34(?W1;lEe+nXNaP3faDg=N+ikJ28uFAk!Q$>?ALn>oyfHfJx$se!tGu6oc{o!C(&J!FeDBD00004wo$e diff --git a/harbour/contrib/hbide/resources/indent-more.png b/harbour/contrib/hbide/resources/indent-more.png deleted file mode 100644 index a1cd8039b205b0528b1f5faf0a0bd9abec188025..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 355 zcmV-p0i6DcP)<43pO}Ztkw?0C6@p;+TO*7clmL7Ztc|28iugh@!ANV3;46FBllL0~MCN)&!Oe zOfl{VSk?+*7-#~gHFx8_-+^Pgg&ebxsLQ006u!6#xJL diff --git a/harbour/contrib/hbide/resources/infotips.png b/harbour/contrib/hbide/resources/infotips.png deleted file mode 100644 index 534dde8de5c64b7680a0cef7c3c52b9f5d7b4145..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 787 zcmV+u1MK{XP)!5qb0_U0^Kl_U6T+#o(5ml3)&UUIx|^rh~k%c z{uKyFQSkCxhJLi#SCKclftVf#*d6mo>smyHaRv;b0nF4}(~(@M=N5n(Q|O!3(7&!* z`UNk`8YmAxV}G+9Zgn7#1n@r7pFt{FPabT}@7KaS; zINUOaJ!%_d=4t517U3uFM!2{gY)Km;GSyB%-0K3UT$v!V={-)j&f>^}DR^i<;$Y1v zGHT3_TV~*^>_bqg33S;buoccKa_d1RNj6*n^P;jbxZDD7jTK&XV>o(u3`rH;__?|Y z&B!9WrB6YVw1X)(fvq$nLeRJgzy(C6-&P08OgN=}i<8wu@R4=FYMaIA${PG+od^}R zgCTVSl@_qoufe)n4qA+Ey9|{5oomI+>3csOne31G>2g0CouHmV2X?&`3jJ+ z#o1dHDV%y?H$APqfqtzSWVLhZ%{EY*Y@jt+!BF;qp3?w=D+d`bQvdT7NM5OsNLMb9 z+4Ugvv>-C;K%|symOVkn74dd-jRZ&LN#n>eoJseIM5&5M5GT?jh3?z^{SCY}i*&^U R8pQwr002ovPDHLkV1h;-Xg>e| diff --git a/harbour/contrib/hbide/resources/insert-datetime.png b/harbour/contrib/hbide/resources/insert-datetime.png deleted file mode 100644 index e96ec2b8954cf9b2c6560e13c396203173611091..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 491 zcmVd=sGHg@XiAXm_6 z)Fs+RZ_Z$d|3N|$&ipclMB8`64F^Y)gW?CC;ro4fUR}V0Vt7O%5oYIRLH{#$Q^FLc zfF$iO>78r?XkBMuw^eLSj1c*{r2(;*1023^aPZtg^l2}9Lw3E}eKv^f9K`^fKk1<| z-A{CSjQpmbyLY49Uqq>j!!*wJQD>aQgNvMu4Uq18#QrO%5l~tHGd3-MzQ5=0lgRz0 z!tLe(=Or`rm@7xO2{1p%Z}~ILj{-Muo!o@|lmY_k(i;li@y@`uAaJq1 z&Ur9MVr`8?Ai%HHRet*YoV9YgvO?VFBfh-M(ZT|IuP2Pa#+MBMn$0GSMuSi&gxzk( zX0vILWtn2Jh^ndpNRreR(8l$8opd@)EEXdi4r8@iNu^TSxKJpV0@}D%t5L01sZ=Vs z-EKrt)W^A8&J@tc<#HKCQLtDnB$G*foXuuU0exI5m2kOScsw5R`Mf^PWHM%e@dQDj h&2qnp7&q=*CuaS<{)zOmc2ulO3$mZW0fkOtm8 z@6s87j??uHwJES_P}>5Pd$f0$84^7>$P)fO-@Y=H7mOm|#X2wegM`3Xj~EAS9FEls zk)YTc^btY-=+a`oR3gbWa09`v5!j0hl4OI!h(H?-cO)BV5ey|FN;lBP#>pBWBKS9n zAk(0X1yrLAdr#9E@DB^&u-!c;HsGO7K(d_$e!3uRmoUM)9|e4mkQc~M3ZDA_JUt0t TSRc->00000NkvXXu0mjfgJEtu diff --git a/harbour/contrib/hbide/resources/insert-procname.png b/harbour/contrib/hbide/resources/insert-procname.png deleted file mode 100644 index d109dbc8efa787c7b4969351e634f4eb80d12711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405 zcmV;G0c!qi;#+TIaAa)87PUJj0F^ ziXi0{Szu$HIa$Ms2D<|Nt`Jm%WV@e&wL!ci`UljDk*&b;WKa8~DR9?c1TP?IN=7)< zV-<)Jj;6!xhaEvIf@uI|Nr{1#7i=0Vf)>$UFoy?%6FIPDvR5FSNN!82Rp3M!Cf8%0 z-arya;R$aCcyr^tEn!bW#g-M@ZUn*J5lqhpwshg0R_9SB-3 zmo`qak#5+kgBj~Q^ZH751V>QDKnwjYmG}4nr^xE%fQMl(00000NkvXXu0mjfpdhI_ diff --git a/harbour/contrib/hbide/resources/insert-separator.png b/harbour/contrib/hbide/resources/insert-separator.png deleted file mode 100644 index 6e8d8c3c09a281e00596c84f99595e88cba880c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`x}GkMAr_~T6C_x79H`IA{O8}- z_+PV-SMTiql~2F_&uII%JnBH8=@a&24T?Mr_w@wd%QhA)0BU6LboFyt=akR{0K;e^ AH~;_u diff --git a/harbour/contrib/hbide/resources/invertcase.png b/harbour/contrib/hbide/resources/invertcase.png deleted file mode 100644 index 2de7e6c20cc6f398f069fe93db95b9c0c914f8c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;AmZytjNX4zKlN|XN6gimx{$D=v z^0$CZldlwLsG0S-S}yl`bxZqAI2mdKI;Vst06a!MlmGw# diff --git a/harbour/contrib/hbide/resources/keyboardmappings.png b/harbour/contrib/hbide/resources/keyboardmappings.png deleted file mode 100644 index 9fa5cb8dd230019541f33699270064b747fedbf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 626 zcmV-&0*(ENP)B6)BoXv?~jV6;>j)K7xfr!k&olAR#oYEGpJw z$ATsm#fpYbrrP<}-nqT!92J&QcAf|RH^najFwVczz&Bvsu&t2KpPrm-K0=}JcxyAf z^B{_?VT#g%79mN7gkeZ7F#7YCuTNH5tt*CYg+k%f$Vhd!C=e0AlUaxNkl74pElMf0 z2qHpY0=BH1U1_!QhHaHy<*9nDiq?X&4)9p#@Xq7BM*-Ss@Q|iMq9|gR4#yTm_8TA? zt%c>@nJ^rtgkeZrEFLpK5FAc6leoRQhKP`+DK^XasaCJiAN1*Ty434+ zn$0G09J4Xl;LXBYM9T@|tnDwpTUyG6p;ii%5~W0uY$odFjq8o+h7Ie&n{oOINeWE2CrUYpFM|4h4jLCN@I1}%gdPo z9I(b8BuTP?(YWOn>fU|K(g#$Qp-xWY_l=UIsWI%Jv)<{72%-(dF)9j?BPWoF1BkWs zI^7M!4!XVGdbyCtHO2_8U8Vc+6YWxoxL9OQ6w(_E)-*fl^?GJveEdwBB+>kfmmh9F zoSSYPZ{41XlU2TrQuTnmT&!2eiiB_mLzyo&W#< M07*qoM6N<$f?;MTG5`Po diff --git a/harbour/contrib/hbide/resources/launch.png b/harbour/contrib/hbide/resources/launch.png deleted file mode 100644 index d911f32cbaa12241fedd575177b571f6b6352188..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`_MR?|Ar-fdUN+=naNuBe{Qv)@ z$EuK~4XzKC32mEDtfKh*fbjmq`Uw^Z3IZ^wapAV(dwG+*hxNVOi^^K3AKv=lHqa;r MPgg&ebxsLQ0OiCdG5`Po diff --git a/harbour/contrib/hbide/resources/launch_r.png b/harbour/contrib/hbide/resources/launch_r.png deleted file mode 100644 index 020bb66d5021953270f19c550aa216e6c8ed3624..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1307 zcmV+$1?2jPP)F3Ng&2;1g317 zh>j=-OT2`O5GIIhQ6wQTWJAZ8Tqf+=Lc6x7=bX0Z*7JI1LedYzEfIdn`ShMV|L1wn zlLHUR^y$+nco0fUOVb?=N0Y^3SqT~v?h}{GrBhY4LQ#~u&d#o6j_0?-{Zdg;vB>Rq zcdcH%TFuGHQPZ+4$M2r$;D2Bk#vBX=4`|*0s&)Q&XJ;o0^HH$cXB?d{VBRh-G3T(H z1>WgrgRaur(JsywR)6=7#JNKLV@u#1uZ*JOl3N#Z=z;Q9wKg^~@ulqhyhJt^j zxvwq(O^6BC==J)w`}cnZkw`?Fgh3p~1HY5XoS?T8Q*+Ipo$TG;1mLN+=6eJJ?5yxU8l0*sgoCnMf1CB=Xk)*w|rDiKS za_l(l-qVDid2Tt%%P%+xnsFy^)DA9yI9|{3!m3a>rk5oN;<5xdE`h4ZkV;F?^tv7% z$+G}S5HRBLfUE)_$^e`oL0|vSDeYss4)1Hi;|APSwCH|Tfc6aJ*DVa!$PQB z@i3T-MhG(u@R2A0NrOL1!O`CVqJoV2eB=y;kDZy;7|fhhfa|^82F_%1dSt!%m+ml# zf`CJzAZEg0j0p-vOykz`I^bmr$9NGVLIF9%%~nT4r>E{2O!?1%muhwrqA~f=fGwxQ zTVUdE+!3L@%a5*H=|zGZM>0n6c{@Tw3<(NQC?XPwB1B-=7>e`<<_m+PC#LMZX1HfS zoTRe2^sE9d!(4b0rC856>@XM#!-W9~e4{}SWEDpI90X$oNSGQ60h+>c60M#mL6V|Z zz0OFNCwJU{WgBXdOdD)5V@kGQOty&zqxk}v20xTP%Vaz;bNGs2;krk{7oMDDT4hK| z;y9VY63`ehP-z9`SL0$Z17vP4_vO7j3mSQLIK%I~ zWE;NOVH>*HVI3Jbm%;=to@}U&KmsKmuQC`7w}3K$-zzVG$~X?9`~y}PUGX<1 R{xJXm002ovPDHLkV1m14awh-) diff --git a/harbour/contrib/hbide/resources/lense.png b/harbour/contrib/hbide/resources/lense.png deleted file mode 100644 index e630d0707a65dc871ba80ef42bd9cb20aab12208..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`b39!fLn>}9o#@DS#DIgja@YK6 z^LILNU)0E{K6%jB<@Lb}8)}zU`FI+ImUcB{ZrLrM>7>^1Y-^a*J<*4Z3vQOxX1tP~ za4h7?-pB8MHgm>IU_OwRyX|hkIZMV)&U@mC!TUulMJQCUXWo3gc^>NF2S4FmejQb;BXebhQ$VqK zuW+Y6qV~u(^3Mxahi8p%maR2d6Jt$?i9HgpNqb`%Wx6e-aKIRHrS@^r*LWAvUuJU- zdS_l0#WYoF;k;?B95-?Hw@m|V)WJp_MAAiO+9wO!xbgBa>FoLd>y~jP4DE;RJOr^K z8$aZzzDp`uc{bB+GTp&MK1K&fqeB)K*X!2W_ecVWw(m%`p?@51eFG+hELV{>{X(}^ zCrs4E=nxad$gmr5ZQ-9;r8jB>Hz8>LZyma;P^`hmIfz!lU+X>pO(by!$8iNYF zP)rZ&x9qJIL>fap0{J?)B@hBk0RBzL_d?j_NF#dT;$K_&ed9_?$3>m_RquY|slt98 z5_G05H8ZTv4Kw-Se(IWgjL**!@BX> zpE=JpoXinv^W=BQS|wi}pP4bk5DBZhM1Dd_3F&5to(itpk4zGTfu*JEJEy;GpLPz6 zDy9ZSeBV&E`2HFHw+mMa!OPF61A~*=Esa891l*xIvOWN%0%Q?n9&ev&ekvXHlXK62 zi?vYimFeMwYW?E1@Y1QXc4d03(wG>{szPc=Jg^}m=dju>w2z(We0+7uJMrd=gDr7z zGS6_IWvB*sRV~#LtnJvI55G?K%uE!Ye|)ccv{n-3^;WiXc{TiF{(AcT;m68XUV5_H z(Xm7nbBfWrWO4+?1}ya|R7!$kUh?mjRX3W}RgRD#%$_kfxqo-gBt{Y?l5Pn90o_co UX2k<5V*mgE07*qoM6N<$f(Y@a<^TWy diff --git a/harbour/contrib/hbide/resources/list-users.png b/harbour/contrib/hbide/resources/list-users.png deleted file mode 100644 index 3aa66a591d8b72b8567c000da299ca912de536f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 431 zcmV;g0Z{&lP)F~q702e** zp->v1?NXeytJ7Gj>S>vbh<-u(|x!j?r37&kTJ#{BksbIWaKn$ zV9jh(mXJBE0z!z=6Ah$j5MHPzHmhr-Oy->fW{L`OE!Cma(Hr3EZCO|Q0t)3ysV2NklWa#W%cWjYfLL~>d&?So~IF$$wt z_{A{nF<0hNa<;J4bmlZ|5GB6kGMoDEoC`(y(t*QsIOqR6&%Ni~E6rgl@+@iP5?KoN zcCd5IIZ^wMEg;t~3J-9H6vX3LO+GGIZ?KD)b6jH$YiGlXg(m;hFr+;*puFuNZnvB1 zYsU4~dmM94)L6sXnN9So(lj{pJP((eOJJ}Sqo~CQQ+oy42c0Og-Q*nCghoYLX8!DX zMWmlQq3S5o>ocKm$bjCOgUaqF=oxl_ZDP`c`<;()j_RyoEi=DolC{O4L6V$^6iXtq zt(o}j9>h%R9&STk(^=LCEi+=U3Lk|WQ>n#qIUc8)GYUDJAQWK5P9wLTW zX_<1dtgBVifHvW7hYoDLqjr?G2BPfkT6Pha*n{XK*5P8)2BBq!Suw;Tw*rydxE{rJ zHSKu_o~cRP>DYw_UH-x=Is@n~sHo9uT2YYDGQ+Gm#%-})?m}A-U79s$aHU{+dJ27` zU9_bL$RCxc?)9ZX`s3Q0oz!F_Sj)`cS6i<$`qEzmQRNKAyTMa*_Wf}G9LGyn4eI*K zQPX#Yn#Bl>&Zq=4|6FCoQpuEF>J7_)8m(U<@nKj?_u(+Ueov;=BydjDSi@Ro=6p;s z2@1E_;)j86p%|G67ygN2&QWdFW19Cl2dE@DGD>o=Q#|i;{sj;+@0J0~+bsY9002ov JPDHLkV1fbqTL%CD diff --git a/harbour/contrib/hbide/resources/load_2.png b/harbour/contrib/hbide/resources/load_2.png deleted file mode 100644 index f00bcb3e62776442f28326a5cea49a1f4c7d2f0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 633 zcmV-<0*3vGP)1pn?f%Ku+3qLq~_dDmi59*>NF5b|HzH7WVe|?E) z>VK9P8q$aXEnf<0K_Hscu4axs)`;&P@}>AAH23u?M3WlXyWAYP-!(tryUnO>KLd_U z=o}hVO=@J1^jvmyUJMVR2ZUiXwx6KCMtc5f<~YvT1uE$fM0ya|ybXoZsoL-N!{_tC z>-ECp@i_l95AZyXdbJ5fI>*^j5yizpG&6TlP3cs9T9I*bT!knc!tH*6>FMc#{(#wi zv8LUez!o(e<9b~kZLW|&KkWdkbv%x1I*00VK5k`NI)f% zWs%EqVA+pgxh^b+Y&Hjm$zWq6jnvv25{V?D(HK@&BM61V2m}I{o13dp48x#Smr$2v zNL^%EfvhM{En^wHb+rvmoPCg0gC)933&eU4WjWh5-A3$^(@xYIcyLY#1LOht+C@#bSZcXvEmq7uTUXi||XWR(nDzy(Wqx1VI2H zBm=KBO_3x?hB%Hh4Da7pDwU^X?Qun3z4@TZp3RB^BWB2`49PKpl#z#XHVPD9x3*s| z(ea{tzb-tRRYxgQO@yjYD6)uLPJ|>0i~xjT4BwC8dTewe*c^5|KT)PDlzL?+?&lGC z6oD&(C?XO@4kQ9WB&=J4AQOn-xiLco-{nFv?3V4)`SLwu<@PERMPXfYU|D3~)}tt5 z-9tw9;dx$$APBPOe70fe$xsAtnLhL}3DHChEGL$pi)_ zSL5mbO`6Yn@lG9g2afa!lM@#)CY3=_58bv0%Tk$uYtU}DYdDURb^OyU$lUO1IXh^j z8z{ zsYiuz8B>KBR7xwT{(O#h+rj?c(c$N}y~_kAlptdI`rXM_#W`sqO%vqBF$BH?{RsW- zH?4@N|0AP_%lF>e@0nCxb@52fP2=T{Cf~dJ@BXru@h3U5a0%Qk{S9 Q2Aad*>FVdQ&MBb@00tZ>0RR91 diff --git a/harbour/contrib/hbide/resources/maximize.png b/harbour/contrib/hbide/resources/maximize.png deleted file mode 100644 index a3db49c23ddaad152e9a098d3d816b6328eec1a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1910 zcmV-+2Z{KJP)8HS&4W_H)d4Yd;o$A{YF03<3GKvSq)7gUJUrqGgvs6-SYE+`j(%Aq$%z2zEJ zTp=zvq)BV3Br!>pG;I?naYNH`5CKJ?Bu?ytiQ3fB#;4tx`9GZ1FMCF_9lUr|-{h5E zegDp`*6%al|9N+2Sz+CgV5LXNk>_3jJQn4}E1BeTWO-Y9xk?q%QF zeV==WbF!N-9yLcN4V>Yw2v)Mj*8wog<#|6qwF(J=-;$>X2M7UU9Rf{}V_{@{3&_(7 zycY+sI5Y!FCB=^iz!amm!^@|cpi0RG#`OXN+~h26bdv*ucv!-u5ugx{91m4W2_6l9 zlTm#7(!-}q?qOWd(@(%zR@03{f(I!eR01e25x@YGj50%?3^2hmC0i}Te;B5fUNqK) z${?h5z>j9l@~_fvn%qkWKC-}*X}psE(Weey+?5XClaTKxAHQMtb#4rwYnHiSVGd^e zF6#9vE%KLSS1SJ(Vm(bZuNq*~$3 zyv44Tt?`Z&fLpZ6Zr)37q54P%6g&!u1MZclxjyj^;)2lkrvG|<)1kSbY07mSJXdfX z57!kuZ@!A)&R5S?SK_4gnVF`Itrs45b3p?DYHdJPf0Y}B0_4+YAbp4xqz*QAw6VS8 zx#T=3jp&hnlmY4E8dXUD#N8Oq(M$u940)!whj-p}AgC6=kA$>a#TbQv%2K*sjg9(fUs|Wx>H#tu0F#Yl%<4X$PL`NiWa!}Q} zXsfAa3mIUJQR8ODMHtXfp_B|BR~h2_z%!&N0N+uu!=2# z&=TKb6hq&s)x%#wKz#!x;`SqJ1zh$^e|mTTxtH%U&5O(eLDKlv21=%GmJ*LL$Aio= zW{*SR{Qycfe33rc$%LET9Ew0uoBtho^Ed>6$6omydsw36vpkUsQG$}TT%Qh`3$mL~ zzQ#C)eu|6{08|2)1AHzsMV~y$1QAU*TTfy*P7pu)0A$%K+jx>HB?COcEc+=Y!&7AF zM&`ahf_hk$AxiXPxLO$?V3Ii=kf$Qy?Ke|ZH5j(zavWnJ93aQ9<>9pO>5_-o6NRvy z9iqez#8Fk;81%Qwofu#p(=0_NF6*kJ7mXe`_S$a%bP#vm$8;a6zvEZbNP3uk^Hx2` zAsxg87<}Cv{^>7Y`JX`@mLQ`c0QMqcI~jf;JNPCwl03>DLcT|d9rkYkpsF6}!ea>v zjRHg=enyQYkMVON(y}$XybeqP3MMps&{AU@fMstX1;Q}o1D9%T08j{xS%LhaSDOwf zsOky;Aj<}rv;aY{0$WHNQ@bs+0z>SGgf#(Bvoc#q#H|s4LTCc4(3kj#9_5IhWHmLC zo~B)2OdBk zm-HZy5Rp;vOrg1a=GW4R3kcu=jcmc?RSQx5na?vqC+l$l-=_H(9W*fFF;%a`2U&;M ziO2I~@hSnpT5>dVK!3jop$59@E^MRShPOg3L<3vMT8L`GXBlA)y-55*34l#>w3>7G zyAFQjzSZNjvcH@$bp|$)rI7=Al!x!1*wLd3Qtvn50UEJHdYEGi4V=^w+DI3Ao-T5X zkf#>_KjOezz-cViHM%!jZqGzH{3-_7OeX!?s9N`s8PzfMsgP4dl8Zde+ar_0w`MSMUNLBeYW9*>Bk;wIM z5$0~+Thj^RE@GV5;4v=wz3SenJa1g&M7KDueXxq0r zG4m8LDfqf-a*Fkv=#)2Je4VN^2%sv>=AQ-6Oyy%+Qea9qkZJgvos)W5V%ulB^r3543ZFQu@^`H?8jd)KBRF=ABe()M4uW&LAR@RT7ke7t{CvH0 zYh4t=m35e@0<^^e&@=!O2k>-?UESYFZXusjjPnKg1|c<&4&u_r2m$xS!mgo;4&)*b z8t(=gZ!Zp?p__+*m#Kw5%$G2Hk`mygSki`=H~=Q)X0A&eE{F6jwy{jL;wH)07*qoM6N<$f+Kcm#sB~S diff --git a/harbour/contrib/hbide/resources/maximize_all.png b/harbour/contrib/hbide/resources/maximize_all.png deleted file mode 100644 index 58d183ca2d9093d0204508d479cc092cb4efb4bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1044 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 Y!qkh!cK(U@_n`3eboFyt=akR{09~|1>i_@% diff --git a/harbour/contrib/hbide/resources/movelinedown.png b/harbour/contrib/hbide/resources/movelinedown.png deleted file mode 100644 index eb124696d91cb6bd970d1cf6a4a794911078b718..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMfv;dzF*Cua<|9ct!|NpPvcr_t^ zen#K<^z`)0&%T$=xU&Dw=hvTquf6_d>-A3;-u}sM-2UnNpOUE;zWn)r`q{7C_PyVK z|GW40$FZlsiYA=S?>?GRurMxl@}}#b;?t+U{`C98t3P)?{QLa-|AGsjS6=+^>)-#T zBkvx3`2GF&|HT(SrIjvE%ARxY^{?mO{=fYE`{cuKH(vk9s9L}G!8f2|*dKa)2fEOx zB*-rq$R!Oh@CM9y57b@l>EaktaVz#zxX>X30hWswqZD$A&dtb~{P5rO)GpkMdsDtUf-^;H>Zw5x><}{+~IVbfsbCCI;i|dVb!G=0_NX9$gHZ*8_A0 NgQu&X%Q~loCICGz@R|Ss diff --git a/harbour/contrib/hbide/resources/movelineup.png b/harbour/contrib/hbide/resources/movelineup.png deleted file mode 100644 index c1e551e63be95bcd0aad5479ec751422bd81de4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMf`~aU2*I8){|IaWqc{5aZZnm3w z|347yWoT?{oPOqA(~?^=E_}NC=I5ddANJh&vg*pmvroSDt-Uwv?E7aQf3?m$e&oT| zn$`_uFtyo>F|TEn{IsGedo*77e6`|UD|Tv z)7u~azyJNe=Em2{uYZ5|`sd7(Z@sH-UwQGPY4U-mU;Z6^@U^mjs~XqrfAAgX z7BiL!M}ST>EeY}q2Dyz?z)-XG0w@sLJY5_^DsF|Ixz2aUfXCtDm7{F|UZ?MgoVus| z|9|d{84X2CZJylNR53%5*WBa?#lGdj3Q7SI z3(qii+-J9{$WVW-eAv%iFS)G!^%XIy_*=P_Int?FMhTW?lx*jw)Ne|2L| h-#={oZ>hjHwvQ&FOtp!{%YZIo@O1TaS?83{1OPGr{_y|+ diff --git a/harbour/contrib/hbide/resources/new.png b/harbour/contrib/hbide/resources/new.png deleted file mode 100644 index 27bd47cb4866fdce470f5294d24db066c164581e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`%ROBjLn>~qy`ad)WGKLTVXx5j z2U0Pas@sZWr!Mx;(iWKNdw{2Fl7iHgbcvlOOJ=93|6G~z?C+M#d5@isS#hg+wtN|v4VTW+S5t7c%$)Vkz^!h_PtB;`+j!VDr8c^J1cExlr< zAfL+Q%JR&&!KY!VZE+^^=FN>dZ#DCo?y;p!i!u{~1gaC@crgv)-?7f!G9sXoVV YH{szw7JV5tppzLqUHx3vIVCg!0O;aUnE(I) diff --git a/harbour/contrib/hbide/resources/new2.png b/harbour/contrib/hbide/resources/new2.png deleted file mode 100644 index 255870cbc8bb580fcb4299ebb65f8217b503b7f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 283 zcmV+$0p$LPP)Jr^2lm^?I|2Ah<*_Ww zMt$Eydw$3DBY+0LKn9()cRs9|V22620HyLS=Ui5qpUb!r=gSqlfX5jG2vWOnP~EJD zA47pOzwp|D?u;?8)>gn!%u+K%b=GxVO>c@2Y71zGhq`wgGn-2(w*Z+5;-FM)J*63{ zv=U-$0UH_TQL9OhYx*41X83*usiD1i|tuC~KVqEh_e@bU;BKg$RW)j5G>kCLlOgFxY`q z-FPzs8Z%^|+gKnx6xd)0tVIi5K}XmuNMWP_AN-{4uV=qH_s@2cdr$5;`F_vm-du4c z_c+CTr#V8168b@KG?5*Qi)2dd%G=U0gf`J5!(&2-lfJCux%a!T>?brNUDN91- z$>?f2`ueP6?WbN<=_u+DS{*N2d{D_|prQaoRCsyxw#ffoRD0g5 zGRF(+i^im7tFp`5xlUqeX(Fo0v?${v-9(OlB);~%_o`gHs%#-zx~Y;iWj$f2`K^*b zA{aE|rE3atbtdVn4D!-sZB-gtoBo2B)p+5cR^5Cx1&I^U+Fa9fMGLlYh2Z=w1{K91 z%^z*LWr=RFNI##cU6JH}XvB;2LlpwDB+Wu1AQKFY1uSg-j8;=|!T4^7Vuq~9=p8aT z=z*FFeX$h@rl}wx^P`Mi;!^*FKONn;=)3W90Ds+;_r^AGFS;c<`h2DJ;u{|(4K?Mx zPxyZlZdCZ~ek&vrj35|tf(Znw6CkBQk2|PZV8jH*C@@5Yr7#$dg@<9VasV{pFvWsr z70^S50auXmK*W)*`%WP5-ohHOTvSgf7FX1?ba|S1;4Tfjf z#*YSl1NLngrk_;4YSKGA#ih~u4ScFtrZX4}c*(XJl}a_cjN{_KsOb1YHI6GT+dXvJ zpR2|Vm&|gPbmi_D^J4|9ggy4=rB;nJgiLHhgOA0~C(=^fT=$iw?pTbo>XQHLE>rJW z@bq9v7=t%k(r^4FlwD!a+}>-xcd{+82z z510*o+6-rV&M*8*s0@-D?+SoEUHDelg2Fa&1>%)vx?c!9uIzOk!aH{@U8cU{Y^dEaG>aT_#(T zDQU;zU0kdk?VN3&9Hnu0HHxiAyUF6vQO51l9daLLx5G7d&2aUX_0^{$>4_zKEi1|e zpI?_VALV#*$^+V3+FI}YDHtl>cK>lte)y|^j>FV=YQlFMKMSAi)24{EpA&SG#QVnh Oxk5v@!FK{vM1KR8n#>9S diff --git a/harbour/contrib/hbide/resources/notepad.png b/harbour/contrib/hbide/resources/notepad.png deleted file mode 100644 index bcad55cbf458523561094165fa61961f800d9479..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`<(@8%Ar-flPG;n4FyLYS{>3KO zes!Y2iY2>3nbX-f`%cO2;b=cETeUrBUNKvP>(+D5cO-8p318d&dzN3oLRA z;R4`aeEg!21{+D>GdaEAuJJ+N8Kiu=q9`w}gZF&|&yKM%@`ro`JWFRe;uJb-7=mpB z8m$Sax9}Etmlw@}<~M!@!W6&ST^@TA83OS<2)!kAfmXu?%&{5{5C_^QFB3%x3ju4w z63~nSoP_HI+ScF__U9Lt*6*p)7y>F;dJW71m@4@3fu$><8WFb=15Za-Cw)wJ@{s3x z7yWR@v%i640V4GZ7|j74KifQ=rqAc8EDkr8OU#s^t_tjj7!JdYF~G7;M4tK**RFsw z8K@~B>iQHQ6=gR_%;vH)F{8O+peuTv!KxfBvrXRvh69EgkZz!*fNUx>;sH_J@wk_` ol?BQoN1kWMvMX{X{h9v77qRo=vU&6r4*&oF07*qoM6N<$g3BPJ{Qv*} diff --git a/harbour/contrib/hbide/resources/open2.png b/harbour/contrib/hbide/resources/open2.png deleted file mode 100644 index 6dcfbb170045b797dc70fc7631cdd72bfa9d302c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 733 zcmV<30wVp1P)D~>P?=k9bCpV}Nba(q@TP6+_5jv~e__90)Wo2{h>+NVR_FV(h%dD7{x@xYzU~f~;==(jFS=N&@GSE5TSD;d+TCqD#B+_$`I9UIOJh zBP#k$DDNjx)@MP9){1;Jg{;m6q_@*ZZkWaS>s4^(@P9?vo+2WmSc5_>1*wWaq1p(k z+Jrn6iJVRgBpp_yDJi5VZHTI#f}~LoamEYSe_y&LB7Uerb{7RnD}l^bBW|^rklIWl z<&_238ZEfmKtU`Uu%CAX=`Tm&?h|QRvk$hHhzQQp;6@9DLGWmM1-7ox$Ts4giD71R=jq%}CSGz1X@ zjX_XLiAXdki4tj$m>P0@oqNywd>I%xL=@5Q2meU$hbrZ6!^F zHdV^qMzHDP3Grya6{sO}Qjie3`a zKlDKG3%w@~nk-8(Qlm|l;k38oEiDpk*aT{gV$sDq(Z}s1G`><0gm^$2XZVdR^bg(@ zY|$8lAS0?d1UXI4b(pSZR4t8jegNs_ky7Aluo|F#vxn`p^nH9UA+i;@LIab-!#Ivb zYqE;+C0@FUs7X?@O3f6>OP|WQ9+RpF&n=+?QW7n3RF3Jf2`s5-J9`BoYe*s4B?VGR zbRh6ZF^)~<6c~LqM(6xXvZB z^zbE~e4G-}(vo@b&_=tfyM0O8yq`zh#z!4 zkc5RIa`Y*U`}eV2uacxbaU`i*0?@1lRpK}#b9V4)VuqFRcU*fvCfFo184%3QP|CaP z>^w~xH{g_7aGP3@CWn`5B2ywXCFZ|+L?aKmaCk32>4Xx^U&i^?(M9i_XB4cAoNYtq z<5~eKF_etK+E_;AZR$(2-2X5k*rKH!^LpeB`QQazOI0Fofp{fhy|&20;udopZwmd(F6a%{u*jv;XeD z;`Pikm}Ov+fW8lgAy^b((}4R9{w#ML=(?cefSz{(Q3R%`gw_?jEekZ^t~})K7#ornm?nOs?rCR002ovPDHLkV1lA*VM71_ diff --git a/harbour/contrib/hbide/resources/panel_10.png b/harbour/contrib/hbide/resources/panel_10.png deleted file mode 100644 index 7480f9e8a0a9f57e5399289e5dec0281710d94ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`>pfi@Ln>~qz3k83rCf$oFx2r zt)0NV&QHFK&m2XsvDX}Z6~L$#SM89>6msyI!xSmzW8nt%F51Z=M|Qtt?sqz5`sBWr g_iMKKC-Z6<-fYM-zEcqT6X$D`|+cXjraDgZEu@yZ)whKIiAnNb2~;?UbOw@ ztL*HE(KMhyE)LS|JHCA9U7Nq(bLHg7*50n|<0I22d(PExrt6J%cRl>(Hv9W>d6H1T z{Rh5(?|oMn2iBHHvi4@Pi5xnU@zikAsa=|BoEmyZcYmfIK*|61^6{-(HXi+L^KfC7 zsUHS%5Tgb(O``~Nm54^STIrT6ZPOZ7of1V6C?Y}@Ci6L^QB2o3dqF>* z6Vwco(Zo2D<;tijhLfdYqz)*lW*Sc>WGE&RJ2!4vy>Qv?e8Y)QYn1~OYHFHBO0@~g zrl_;A^85uco*ghxyEMzM=1`(vH+_(AQ2aWEreVTC^i;m#-i}0OanI z^yL@6`{YxnPnKqta3)0D%7i;&UDU*>9wl P00000NkvXXu0mjf>D)t( diff --git a/harbour/contrib/hbide/resources/panel_12.png b/harbour/contrib/hbide/resources/panel_12.png deleted file mode 100644 index 6f7e1ac5864a74a465794244ed5be3885e1e198d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`6FglULo7}wCoC|l`1Jn%|1gDh z3`yk*eN2ybI_#0{uxB)kJA1r=tE3@9vcq>G&k4pyRx2FW7f3Q)I`iTG|9VFoHXnvZ zM;-p~-JRg>z$huibA$Vc{RCdkmMpbv4Qn0#Fx+eqFyh(K`G|K#S`d$gUnsN2H>RVF y9)%`N2fT!MD%!M7*QqFJ+ABas+Vww6UYsD%Z492SelF{r5}E*-M@7K^ diff --git a/harbour/contrib/hbide/resources/panel_13.png b/harbour/contrib/hbide/resources/panel_13.png deleted file mode 100644 index e8cdaab50221f7150b5ef33f9b34aa229eaef8aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmV+e0sQ`nP)pY^4;;Mgk>Y3sfjhfS6K%kkSMRZ>Mvx(dk}`_Zsh*k00RUY4^jC8-g@gbA002ov JPDHLkV1m)lf1dyV diff --git a/harbour/contrib/hbide/resources/panel_2.png b/harbour/contrib/hbide/resources/panel_2.png deleted file mode 100644 index a9bc9b14fa80273c86d1cc054b0f61313c91cd11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmV+e0sQ`nP)bI<;tJo&``oSd!ytE>0?->~8O|D#7A{{Qmj=YPDKFJ659KP+t3e}DgF z|6^m?v`Tyg`@2G}6fBxye zr{`j#4LEh`$^V}}e_6||MM4;A-yXhnu#^w@TGtMpS?jcplk-|20VCE88}RBqj?@S;giumOaXQsA6FC3?qIMlSMy6!q00000NkvXXu0mjfcxHEX diff --git a/harbour/contrib/hbide/resources/panel_4.png b/harbour/contrib/hbide/resources/panel_4.png deleted file mode 100644 index 06e2293d22071f6350524bb4bccd1e1b82553e7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258 zcmV+d0sa1oP)(kd+}M8*uaWO(btXHIrh%@kht0 zXaL1tpg0gIjz$nzd3hz#20Z)p40~z>8A2#2qd1-FnTZ?#07GZ3j|`#RQ~&?~07*qo IM6N<$g7`LhPXGV_ diff --git a/harbour/contrib/hbide/resources/panel_5.png b/harbour/contrib/hbide/resources/panel_5.png deleted file mode 100644 index ab8946f8444d37f7e53cbaad78bc6d331df9ba72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmV+f0sH=mP)pYrMCnd+tX4zy50O|A+6l|Nr^>(|^30pMN^`f7KP8|I02Z z|6hC66mG!b2RZ*wKdA#7^zGNH|2Q?zJj3vR{y9OM23&eE;s4Foi~oQB^$yjLPd^_0 zUwlD^Xak;n-24CcpC1TAjy@~|YbMr!2k*E3|McSl!hl_OLP$2?{kNM417Mm-G2q4L z<5V<&VlPk}h!jU72;6zQl4t|I{CtKzHG&Kwl$24NPW8-04gdhv&bI<;tJo&``oSd!ytE>0?->~8O|D#7A{{Qmj=YPDKFJ659KP+t3e}DgF z|6^mH7bmMHtwCeX%wF4-`%O zf3$1a|FhfA|Nr^(H^PwK-lJg6AUsnk*!ln8_3QufW~QT2rT_2h s*uV|A99R7RRz>IkZ!6aPr+V%M041uwZMf`1C;$Ke07*qoM6N<$f&e+)X#fBK diff --git a/harbour/contrib/hbide/resources/panel_9.png b/harbour/contrib/hbide/resources/panel_9.png deleted file mode 100644 index 286a59c5a4442e8777f5dd950d827d0fa8684aff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 243 zcmV9vf?lW9I)e+SoI#^g>GUq3QaOOAv@{|j6q}F?mdFYlE0OV$=dq#~*<_i` z%-jEenNP?1KzhWsL2PP-TO^ic!fz2lk9dUq9ft#AmM5k;VqQ>ys1RQL1KoWl#vD1s zIFk(Qo5Z0VAt%O`y(T7Eec;?Do{|b!Ro}5b5OfJCzJNt3J#cju5QXW1%g`7w-h%ld tTDeAr96S2JZKvWG^8YDIL9@?fdtRx)F=ip|mNEbU002ovPDHLkV1jiaWK{qF diff --git a/harbour/contrib/hbide/resources/paste.png b/harbour/contrib/hbide/resources/paste.png deleted file mode 100644 index 461120c69fdd763af9c97c1ea66cb57e2680d345..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286 zcmV+(0pb3MP)yE5I~Xpo&7@Pegj!KIXgLt#7^=Fv&hQI+LI?w-g4KJ966vQ4@l^Hy#NC>BFn;t$W2r*$9hepp!YtomsM&q{2rX9TbraGh~bcK!0}!3 zC6@t$k1jepzDweJh};5Brt&@wPz}hfMkL^5EUzsP=F(6ZiP{8Pz{!}OZh|HQ5*I+8 zmvsv`8B??qI7- kI7R|cU)BlzfGp_p2N!4VhwR#IU;qFB07*qoM6N<$g5QU95dZ)H diff --git a/harbour/contrib/hbide/resources/placeremovemark.png b/harbour/contrib/hbide/resources/placeremovemark.png deleted file mode 100644 index ac26e8391adaf558ab238911a9207d3a373a8033..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Wu7jMAr-ggPITmB5ENjs-8=tT zdfDp>H<_c^CmmW~bwncj@8@sD=Tg%{(vD>~Dv9$KRUR~a5nXz-dB(}DvG0Oi^ppXEV zp&LySnc`Y9T}!WDaCqvmsPWDRj;O#S&I=5zM|>7|-eFn7^@ZoGj{~Qn@Pxnxsa#?P zcOK~%dGkyvn&w`x!=P?Y|A}?)7jykO`eWy2;S*~(JKmjR{l#wH85D9o>EOXfKuZ}s MUHx3vIVCg!0PLncw*UYD diff --git a/harbour/contrib/hbide/resources/previous.png b/harbour/contrib/hbide/resources/previous.png deleted file mode 100644 index a2744fde741ce591738eae184994eb184c5e9834..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 833 zcmV-H1HSx;P)KEe>!jP+(=!+NVYC%9>cEfl;lTg*KF|BS=Nv%9zsmn9 zxRDCW0e~~-0$DQbxtN{&DSg|8#HRs|FuP1ACJtf!nor3kT^!W$M)Fo#5rh|j5# zmm!Ev;q)vDvHKM2dT$zv;-Hhlw-X*#1vKYX!wUIV94tdr@DN+vD2PLVnZ}ibkC`T4 z#Lj5cDaD3MhoOtYcM+ae1>&P1xONiSrnS{9_6tcufp2I~I>1buFX3mVeJx_|0o18V ze_ueCb3rT=N{)eo`BcWDdN1M!Z^XAwgd+uRMtm2E_l{sl?*IFlhB|!ZPb4*FzSb;M*Q*+M?XH$)1um~2rMKHgh#Fb#50mn zDT|}D+L3L@XwI;edAwnonm%cwi&~nrP+gYDRmbx{W_yz@C5v+eP(m}WWK5E8>Bvw; zck;uvp=%(|oeS|Et{`yZLJR=#t&FL4N%lb~zH%H??Dsn3)MPzdeKFj0lFtLc7Q%<{ zB9_`ZXja>mF9eB6GBI*bf44Adh`(V*5I{H)96R2ovz27+hg|A?OI7wp%~pR%1pt3L z-=>z85Wx}aK}2^R;bs5#z;c9L2v1@e!6i8M3oJ#PpEAxr|Eu@`zv_}9D{)^700000 LNkvXXu0mjfeoc2z diff --git a/harbour/contrib/hbide/resources/print.png b/harbour/contrib/hbide/resources/print.png deleted file mode 100644 index 1326f5cca500b23e3ea3cbec68b99d5d9717f9a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmV+x0qOpUP)!-}`z-38_$47bo* zL30k(>9^GbRb4|1npU@kq*xy40;}L)hzjRz5eXh)fa4X`C-4t2+D4P_uAsGmx(}6! z>Ox6`^mKs%k9(`VU2J^UL0-6;AbxlyMk diff --git a/harbour/contrib/hbide/resources/project.png b/harbour/contrib/hbide/resources/project.png deleted file mode 100644 index da18cb457146a99c45d3368403e9d43b607934b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319 zcmV-F0l@x=P)!6{w58$FP2eWq z{ND5RW;%`TG}QcE6q?=c3;G+GHqc2_qD^Q_K5hcuyvk%A1#PE+UjUagIhEHydiIno zNM$xnl~gA@2y_&%$!(s&cZ*q;FnstqyenY%{|WZ}P(w_>T_^>9T*pRP``)B*I12&8 z-hO7mY-@=J;JlB5`UDI+yDBHh;n8{6(P7&ktKWcOH!Q^j32P~+PQb7;izFylW_Yk8 z1>#3iQ$<090`KJnW}qPS6AFMkVXv=H;J7kZ4KRE(mVz=94uZJnY<@rp{s5wq5>r#l Rzd!&0002ovPDHLkV1i}PgIWLp diff --git a/harbour/contrib/hbide/resources/projectadd.png b/harbour/contrib/hbide/resources/projectadd.png deleted file mode 100644 index dbbb8af679551aa624cdd6fcf6b14707cf9b526f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmV<50U-W~P)I%{_meRBmsaK*Y-HXHlFBUTnFB>z>#3-scnliEAUSNH7*LY zY0$KOQSvuv6qt7fj>E)}gu}fzm?rx=>$?(SSul;qf{TaWNWcHV`Ta!ifN`8Y7J#U2 zGYd|?J>kc0$K?$M3irdfEHE_*hMEL5U)K4`xzD!`ZUHiy;z93hHAgy9Miar7_z4=*~f V?R@+pd>Q}%002ovPDHLkV1i9u&PD(L diff --git a/harbour/contrib/hbide/resources/projectdel.png b/harbour/contrib/hbide/resources/projectdel.png deleted file mode 100644 index b01fd1915aefc6c8fcb4b1b907f8380c33c9d57f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427 zcmV;c0aX5pP)vkKv6G!ry zzI@+H32XoaY&YPMrgcOQV|y&~HC_U1Pu+CLa)v(xv~e|{O^dd3tC5Rn6g+PO*2~08 z#LI&-nCIqp*S8U3Jupwd251IM)BJnjd_LoJIz8jhN0NteS`V0-0%MKi@rYS}c<@ED z&kKjc0ZlDo7PLUUpaissg94HQ+6V69&j3aV3=4wbfUDq|0$M9;$Y)eiLmV*oD3f;%s-Anhdf^ASJ&Bl%Rm{-$CCk z0UpHrRuXMSa*AF?DDwp2C29(|)(1!yK@3~3;%E{$6+yBDMOi)sB=@qj6?(M^bVRGR zuyTt=M5uWTP29GJfTDns3{o(NszAkZuwsuQ-(kN?k);XJBt{%Zh@vfG;`v|r7vGY0 V=$;IAhYB>Ar_~T6BdYNWMusC=XiYe zOo3aQ0^7>jw$)~d%{-GN|7mj?91v}~=};)(dqE(F?ZA;lwufKOJuqT;5-y;o&2u4{ zLB%b?coz4C%Z!Or U+{VHeK-(ESUHx3vIVCg!01U%C9RL6T diff --git a/harbour/contrib/hbide/resources/projtree.png b/harbour/contrib/hbide/resources/projtree.png deleted file mode 100644 index abfbf4c9c08c70192d99f2f0a458febadce3f291..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 785 zcmV+s1Md8ZP)28?4n>z$dM$DO%P3L*tTj&yX6bo8BI_1v|~S6+Je?IwyAy(3QI z1(EhwQmtHUwTq2%iPctE9{pP11|N6=^H||UDIgo+N z9`qc13ltAGKZUuFr&g~lT$0)A&xvj{I{QZiD4_d~TR;LeP(4Tq^~94bJn?uk9IcB` ztJx?6J9UJ)gTfKF7U3LmYKfN}V%`v~X<};`M2^KYAa8TGvnLXloVVU5Qaji_g*`DtDQ30i|v;0&~##e2bU ze#rLrYs`f)Q~wr~8X^Z*@ufv6jnJ~lriIinij{hJpgN1O5wdBxyLXQbf1iyzAF=E_ z`&Ylh_zM`L37wi1Roz*DUIHS5NPzPes|}A`yhK@4GIzgf*tq`U#V22WLsnBMWg}%%G;P~S)yc-TnZ%hEdGPb!g2AvIDzfUf P00000NkvXXu0mjfB>imY diff --git a/harbour/contrib/hbide/resources/properties.png b/harbour/contrib/hbide/resources/properties.png deleted file mode 100644 index 37045a183cdb4631ffa5cdeb2f0c2abbe909187a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`DV{ElAr-goPCm$az<`I@xXS%= z+PVddw&z4!|7ZpLF|f*U4l9?hd|A8w-bw%WS(fdqvp%sg9w=y%I3OrncD6ycjq@Rw z&>`g>cNK@c?6yyFTAuIH9m3cOSVMoj7p^g9JbwQto56|L&c6wBRe<&}c)I$ztaD0e F0sxGAIA{O> diff --git a/harbour/contrib/hbide/resources/readonly.png b/harbour/contrib/hbide/resources/readonly.png deleted file mode 100644 index c51ff1b0ab85bc7b234e7a53f5e22ee2602707e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 435 zcmV;k0ZjghP)Ln%xJ%r1+T1002ovPDHLkV1ib4-gE!} diff --git a/harbour/contrib/hbide/resources/rebuild.png b/harbour/contrib/hbide/resources/rebuild.png deleted file mode 100644 index d53d549d04194aac88a735d0d071e591ee038355..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`(Vi}jAr-goPCm%Rpupk${pG)% z4-*xSW<1c%Nc5Il%`wwbC@Vm4WA^p=%vrNIy7GSIGwc#saOCX1ck|xdULy25Jm(kt x0_U0of{`xQj~^(FwBr2zCj0}VaP0?iF(yBy?x$IAZvm}g@O1TaS?83{1OQMiI8Oio diff --git a/harbour/contrib/hbide/resources/rebuildlaunch.png b/harbour/contrib/hbide/resources/rebuildlaunch.png deleted file mode 100644 index 938d0ef568f718014d1f8345f8aa0b0f6c2f104a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;Aou`XqNX4zKlexJV6ggOJcbS{F zxXS%FdA5n|m0)m^U}wzJUIFE_ZI$Nr`d11X#Le=TDxdn#eNtelddQ2(2c(QkuBhJj zj{K!JPnf-i!C{#yxXz zmXW9kVch*F)^Q66o@2oH190J`#U})>q{tlrXOzEhzyKE)LV!*|KwbDZB0w{NpQ0000rp*T1Vyt=QNLK@vK>!;yuSMX_oLl- zF-Q$atyj%7F@ymn6U%-)Ir9JCKKuXwPX!|Iaj*aX_gVk{zrz%WP5%GiWBLEzPSgJ& zwQe=j%HRfg*3D>taBa)~=Xd7(zk6-s|6_*={~z8I`v34UH>?<>Hn3%GJKO-5$|>!8 zPObglzdrSU(M`VLGS06p{KW6?kqA*CUd*x(=0agWF?e&|E z{b#7zNE8OCbu8&c7+{v&*1mn+^8ZU(Gl;?D*ONci41r# zNDWA>c~&#R0Ojb)vN`jY{$ICf{{OA>Cga5*H6XQ`@zscEln*NrbI)yh(mQeb{|S@u zV~`q6arpq6c+7GPQPC|g`sijMX?2P0bBew)^tn@y7NHjb5r&i{&R**HOVR*I#0G6 ga!Bwh{b$r~Czn$OIhRfL^w*r8s OFnGH9xvXe3`NX&i%bnX5}vPQ(-D`B$YXL7zOx`z rSvWD0|A*(r9_H^wHox^N{x>t`=APQtHDT#QpcM?Bu6{1-oD!M<9t1Hc diff --git a/harbour/contrib/hbide/resources/save.png b/harbour/contrib/hbide/resources/save.png deleted file mode 100644 index 56c49c28e26bdcf19853b05a98331f953e69321b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424 zcmV;Z0ayNsP)oW{n5t|ZFBWM&!f3~S@>0$z?iY~?O&tX|(RWsRb0_ONDHI||xMzzS!W zl~d@8k5rap;`}oy>sEq^jN@ck^Cn<>*5YiNf)uWrj!Rq-xyYKol>~{(>|Ib*(=m6% ziwk?H9L|sMVMG`wjFTLjk)Uu0>Pt|TBLrg{8PX-uiC&g<&`Q+SeHYylYQmH6nWobH7 zrPD?*Ajt~45k)ugNPLgOu;W~WKhtPKcUKoCG{E$s>r^&U>1zDVe^P6Lmp)#?tw z)JY3V@-yiK6s4tAbO$6oF-cZHys=0BBCO{bN!A^Z=a5!80^0^q!v3ATjGr50_v9_Y z*#c?;>Ke3!NRibP0MAE8n0P#m&$3Q~)TUG@#*bg-hP;QCF;c`xCy1RS@|yEUPq47` z1B*rQUj!ViBx|_Ru%~AShv$|%|E9qhLv!B&f-)et8Fim`0=}#+kr#?et^+Xh=sp93 zLrgw>MqI+(Cl6^XFA}+kB)5b~(ivg?`v+E%lFwEHFfcg8u~WnJ38;md-ca)L+gIW= zguHFHX%N)~yXqUs=HI{L=9Q}$17(;Y~CQ1d2W56(w-lHe?yF=HJ*5OGoP2kJO)6Rb_Sorz?WK581E}3yRWm8J+^Y3zQN8*XFZf=OeB+BmbZ()j==@5wxw# zhG!S>e$!~02g;*hTm>?)Ro~lFh+r7J2&`QtRXxj~bI8>$V1FfS44`%D#v+3(-fJ#x zl(VCe*Mj#40XN4QR%tIR>~*&ZQc2)TJqyyVQYt-&B)k&5oe;b}S{IKwARLoD47k8AS)000083$ z{=+s?1MvukN$Uh(-t4#%wO)lGr|jjkX;B;^iMJWD7rth2I>6ha>@=zVF$3cvwr70X zn0#hE5sfc}{L_P!8XhuqOyFZ^sovn^ZOe6hZ?!NiIFTsy!*0j!#+NO58(Pd3DAlmvcXYL=R^wt-PL}44$rjF6*2UngD^&GJOC5 diff --git a/harbour/contrib/hbide/resources/setmain.png b/harbour/contrib/hbide/resources/setmain.png deleted file mode 100644 index bf959846d4c90cb496cda592fa133d9a38067938..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 454 zcmV;%0XhDOP)|N0h+3@yR*Z7D8#|S0;f|`2IwM{VlWsG3kTcs@U8G#U{S;Cw!B4#?$lD2if?uTrTH74>`9)>s#%Ih{`Ib~~!7 zngfc(A`XWGo6Uw*bl&B1;rIKEktUN#3WWmW@mRh{nx-MfWh_vu)iP=pTS%|hL)Z16 wn0Cwz(BsMU9s{jB107*qoM6N<$f+>l|lmGw# diff --git a/harbour/contrib/hbide/resources/sgl2dblquote.png b/harbour/contrib/hbide/resources/sgl2dblquote.png deleted file mode 100644 index 76d40d26832cadc3311079c2c6cfe3a6a41e41a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1160 zcmd^-zf0Cp6vmH8C59voLSjXNkWf^dAzqq#d98%B7k@yTO&8i40vj5>G`!#vK_Q(X za44an1|eDnBPvfzlv3ni4uTXV4H*rm&%ON_-Ix2l_uPBWbDrlp?@V*_d{<|0r-*b7 zUucZ6cIVmA&iCl?ed8kS(!4k^L|Bzsm8Bx8szt`<#rZcsL{ypir#(GAeSLlX{r!W3 zgOih!BO@dAdc9Vw#my?3%@w)pU*r4A%gxP|Cy(!FND?s-2Rvs>QZW@*2@sQLl9a@f zc#(nzwWOXjN_no6 zshPTI6gIq0uIB2lQ8H7gg?eZdq5#1ZYNdYW4KBbSks3t?2MkNeizG@Cm?gIqMIj8# zlY5Gy7B&{i13_6Cnlq^^6xk>s2S#Ykj!+5_;DG_PvL(UXEQ(o(p)j$#Mez=8)aKg5 zqF9OdIE}Slptg@x7C)wQ*?jg5`1t*!0t?VX*S`150K?qO9`{BfWbWnpE2>{&nZh z*?tbWtDEn-9_dP(l=IQ>T6?dBlk9D-1`o$;;Y}^>aoh<_ms-VnJT~buFfQTNo)Dh; zp2coY!@ii*$OY5av+~I;Na393=_~Q!!^-Zb>Z=N_yIzZ5_JJWW@>;CbhuRB3OBp;} L{an^LB{Ts5guy#7 diff --git a/harbour/contrib/hbide/resources/sortdescend.png b/harbour/contrib/hbide/resources/sortdescend.png deleted file mode 100644 index 9da08c646b0f3af0769170c97dd6e90ee4b6d532..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`8J;eVAr-gQP7LHbpupj5S(Sh8 zO?yp`+T9BRN(*WixXDGaMl3ASOxnvB*Iv)ubAzGh2IHO^%v)~kIk-07z>LX7;Wz_> zC&P8YhDUF`Zp4({S9n%ye~R(NyZGe^db=;55edCs{yjf%E4#_&Yq5!43;zS{WbkzL Kb6Mw<&;$U0w>+5u diff --git a/harbour/contrib/hbide/resources/source_c.png b/harbour/contrib/hbide/resources/source_c.png deleted file mode 100644 index 040d1cd5480877ef9864d4aaba10ee7daa60d5c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 800 zcmV+*1K<3KP)(!L0pOxE4d(16CqMpRW*VQXs($H&JAg+d4hgG_(~{eC}IR#vdM zxCocah3V;OkU&;emP@12pscJ6YPA|}xBHa5zrW7}dE3;6&1M4^GRDTnKmua1*qM`) zgY4{V==FNCeTGbxm$~4qRx6g4mZ-qMz`(y2qNAff357z$$H$|xvXaPqdwYybJ^Oq< z!ut9;O<{F)m4PxL0f9iEj*E)}6G=!&U>5nxMC$GBWr?#pb4Td!?`I+;Kx2%FiFGjn z29ZdF+S*!}&1UFyI%+L7HI=2$c7nCTL`gvLsHB?~Nt%8)_f}dOcqa^J&&kQj6y)yi z9)8$=!Zz)Ix$SfKW|H_Rzs8bLE+nN=iHwX4NF)*@CMH5El_E1UlWihR!0qwk!ojt&a*z3BrZQ^;R?`i=yVQF7KkFOWPm zJdBBn2~15*u|;7cW5KaSqLIFAc}?WLZ~aGCuia2{&!OKVfYJQthEo>(5)i?0000^!7{wR#q0~MJS`bm2E>W15)DI$fHU z%wTP84Zlq$%+JrGuHn;Jq(tV;FK{FCnqsAHHD(0BIM-cKqiwxsZ^4o6LP@bmLSW@aW>=#S%NT|6r* zD>1u7+N(M|*oaOPn&;-rh!IV~TU%0usQCMDHUhwz#XHBFc85fptetwRF zg9E&)s@deG=U)H@1_x1DS&6o`HY!eEUmtpUdQe|qPX&6f{lLr=a%)@1iIufY7+c>0 zaQ)ibi{as6jE;`NU@)-cS#VUO!^1_s81iM!3an0g%K|@q)1ExL0A(5`9>dr0%jpBOcWX jgwAQ4@h%(N;$iv++#`sYW0MBg00000NkvXXu0mjfs49(^ diff --git a/harbour/contrib/hbide/resources/source_h.png b/harbour/contrib/hbide/resources/source_h.png deleted file mode 100644 index 5e591c7df31a8aea44fa0aa20c525c386ae48c9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 811 zcmV+`1JwM9P)=SSZINk$BpmzVd&h$z9tXAu(K|(@;rmCt6|AW6uGNYKRqMDi-==J(jgP53@cDY;*sZ@%TloZf^c6K(h zva%o&iRjF}YPFj6$Kh~baB%Q<1Rjsq5+5IrxVShdl}b!ZOu%BXV03g8bWezmj>gc? z5Szlv$_jz?h#7>0gf#N`d_+VsI_xSiYGl+_c0&(Ht z;VhEJU0kc+9}R*LS|^^{j~l0|S_vnqmuMx7*Rv(}T^;O*A&QkeIFZ=idIK z^FbGceuFasgWI~{VOGA`Y^Ft_k+DYZ@9$%8Zx3(k-ZF9jfcEI})$209_$+Ay2IuPD zHT^Uijg*yoK(DhZ*4EarzP^r{I;F3nx%EfTg^QwqIAFk#n3TpBCa1m@CQH=9BuV?9 pxOYG0J^x1JQ@=2R$_{7sy36db<7r%s)+0;x;&_Toy zbSYyfx}-L5c}c|^YNGRw_Y3I1^FA;s=)l9_@V>wQ^M5YK4*-SYewnHyS8RH1{_YX)^K6rR(Hk(mWQiA;ad>D;JG&D3IAt3=K zlL_994Xm%Phjcn+#?JR58v$U>_mKgJhHR1QB_q1tyT-AQVE;Q z2DMrZkH>@k{e6P#>+3N-K90;>y_E?V4F&@W3k#vqXwcW!huz&>OioUstgH;Fsi~-} ztVB{$61KOuvAnztm&=8zsVQXT>bsdhYjJTgR4Nt9%gb?gc7}_K3wkduE!-hWDX7Znvn843yt z2tGVK#NOT>tX3<6f`Xt>C=eSPOWD`f)>u$^K7r`Kz`*m!$Vh~QgurgMGnidwQ=!rX z0s$KOxBBviqO%~ft{Tl92^|t=lCy-j!mMa?aSpoW!xJQ z;MP**85~4)bv0^gYGAQg(A?aN_V#x6=D-7NZEay;aT!-vSJWd*ed88azWiF?2RD|w zx;i)<4opu^Q@yjZv#ckS{bSQ722+zezjmK<|4JGsaKk6?$o1_ThK7bPGBUyzg^iH1 z9v>gmNUP273GQ|{&m*GlzT{wk#`*+!=Gw-yL9UG9;bBZnOt9?a!t3>7b8{0_=DN#< zrj`x9K={-L`vfR7=~>Zf8JVWE3|(7Vy3YD{q&|Dz8m&;i;=nu1wvS=)2ca2s;6NEC Qr2qf`07*qoM6N<$f~#JEy8r+H diff --git a/harbour/contrib/hbide/resources/source_prg.png b/harbour/contrib/hbide/resources/source_prg.png deleted file mode 100644 index 44bd71b3b73c2cf6e5add528e354bc377bf52d0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 825 zcmV-91IGM`P)4ja41fjMp2bl&cBPS#wda+PY@MbsSg-d1SC}m;_ zHN0{;*8E5(D1K~eQ&FeRrcS4#&W}{|Y43qyA-!-o7w`N0&U4QB|2dwc@PyvS$LG5r z*MFGnA21Ra#QSmW`i-wi4;~gu3+0dg6MO(1cJw_xJ*cj(Mp01_N=i!5(9i&lMgyTx zh_bRWY`9!-uCHTlZ4JL14$RNbqwP!k*|RKZG6CA#+mVuzg0!?W$Ye6gsi~>x=;%On zbTs<<`fzx7h~3>?606l}OiWB5JFlRP05vr=h>wp)ZEY>Kx3}STyOETXgsQ44h(sb( zR8(MRX9t^`o3PvM=2o5f>MS*w|R4r>BF@=cBH!j%?4(&B1Io zL#b3^XlUpHkdTmoh=>S;goGe8G!)_C;go}egHc*qitg@i3=R%rd3hN&n+A{!Px?Ck6$ zvCHLR1Ew$**J80itJSjMvCYsb9S#SB5+Ez*m5u;B9uL00zECI> z7#SJCUu(!dAwrvg*`AZM}-bdV}#; za5F;Y5no|iFTk(dXagU}Iwg%KC=0k4??%0f9kJykaka;&H~y zNU>P{5dc7V1JVT*SfUat_noK4U(liZ*_4W0Ig#`#eNh}syEEe!z0!~j) z>-Dc31+ogp;hp`UN5AhTOyHwK`xhPG8w#A z0Hsn1vr!N*D=RDG@fb}o$iS_TBt#s~&}=qGqY>_?QmN2%e0(fmbUGcD8I8uZvkNVw z-}`=aL#-lxKHt0dAJ|SCJK*D>5={`zFbpurG+XTbduE(5nMyr&F7cX9eiy5iKR;6` zlgXsl>-n$k_rc?EICejMe&v0M@awk&LNsx^-TYbck$~ClcAO7FVbjyoPNx$|3`Y0C z;nDed^Phx0)tHpI&j&|1x-hYt(}17-`!e|7F#(1C`kPyhe`07*qoM6N<$f~&JSjsO4v diff --git a/harbour/contrib/hbide/resources/source_txt.png b/harbour/contrib/hbide/resources/source_txt.png deleted file mode 100644 index e27fc8c23c0792450b2437c798a26bace187a531..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 835 zcmV-J1HAl+P)wy#@v`M;IsdKXKiNjO1e_w4DV%PP7yh{}gw0Ysx^o2I-_*e8_zI851DDH% zr6ng87VNNCW+ChB`F*nN;{JqSuiNcK*sDYQcK}>_0fJ3CF@3cF5!Q!|jSYmuVT3{< z`2Bt&<0Tf9RaSQ;1ciY>0E^$H;5_5tTGOy}B^$c7V-#LrU&q?o8dg?Tu)MqsyWI}6 z*^IO2Ycxs0vV9t{UoOPd$FU*Z0q5O3upVOqCd~<$wi}H`oT;iAO9~7+5n?~5!AUnE zB+P{V@d2%f`$$(WSO~QYNxI}i4 zlq3ax@;Y7Y*F3nfbi_27Fu%wnF#Tt**GmL6Znv9=Xy)hVK?NoGOlrVC$wi$_h)rf9 zuG)n0&Klb6^ZAH?gse%3n1srx;C_AC(`aM?+>C%1RD6d~bUm=GuZqArYhjmf#j|!HL?RJnG8q&K1qKENpj0Z+ z*VhNJ24py(M0G7PheDK9^zt-XFY{-og`Zr`dyTU#5%Vlg^8I?&zSOfAruO!Kq8SqE|){2(O`CVmR=-b z`*Uy{htFTWMR(=zxxvGm0WjndWas4WtH0M6C0i#j8JNjrg45|Fr$GlMd@kW$D@Q|_ zS=py~CXK*UkXW23tt>oUajA>H-)cUZe^Xvntu87qY2d-#WZMab-kUeyH$QgP(pnSb)x^v_Hcweyx|@7^`)2ms z0s({FzMk&$!RNhs*LBP*{7|J>wPLGCvqo`DLA6R>H@DUN!cwv+-sEZ^9eHy0CZ zz-b$XA=PR%a%`KPbUm^cmp@Dift_*P1bh<#z)=(#0-WKqh#Hc9)m7kaV95?!NnOXQ!v8#B4TevOrNP?obdU6`O&_aY7({A~OO37BY~)7lsiX z{5m!j{n*)6Tbmo7?EeWM2nJXbWqY1SfBs%j=i_#2d(ce2cX?4PY%g3RkYT|}-^jSM zyh^PtO%wzHeO~)go1U5+DwoT~Dst4^{QKX-FNcOtjt}2)Tx1f+Mhy&&JhUx6$;I5~t+c34w2D=6x3Ipy gS6JcekroikKjCDS!AQNaLI3~&07*qoM6N<$f(4QVu>b%7 diff --git a/harbour/contrib/hbide/resources/spacestotabs.png b/harbour/contrib/hbide/resources/spacestotabs.png deleted file mode 100644 index 2ad5ad15ee941f01a6e4a1a47f0da17a6d3af0b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Rh}-6Ar_~T6BdY^`S9Q;|KS@y zUcA~M)zICaqv04HkiwvM)J4*vP(px9cvDhqqQb%YpqTcvTmOHQY?GU?W6y7S-ovJG zGbVrdfBDvj|3{Ybi_HF4KjYi~{}-S9|35wAe|_}&5A$DSxRxC}t#|eRf3=K1>YA;S egxOS%GBNbVHN5!x<(>x66%3xPelF{r5}E)b5l+Vd diff --git a/harbour/contrib/hbide/resources/split.png b/harbour/contrib/hbide/resources/split.png deleted file mode 100644 index 239489891c3324882dd66d8f81488d2f9276f688..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 385 zcmV-{0e=38P)S6ouzq`Ut+FKiEY|5L(fNt>QvZ6tv>fXHXX^YQ>~dQ}g3Q^Mj4!oNI=eB#5F1 zJ|^cf_b_vZuT0hah~EgktkXXtbAIO$ z&_ZvQ)-&lZMqsLdr#ggQh9g0j4?d^_z+XAOxOM{tyxNEB=ztqHAfWj&;C38{(PLN# z^=82RBm$KaI8R)-9v5Q`JnH2Yi~z@r3213`kJe|N5x#+{LH59y!Nh+hpyjoFVo?Tt z16~Txtplb}LO|H?gY*fkG9ZdmP#IzQ1C@X@NA0~1>MB6bpeQ~-$5luHjmNh~cZe;2KGiS@ImgqqrB`RdeMobPLz8dYv| z52boXoLWnqsu{R+=qe7shOTmIZ6SSkBZDbyGr_?nbQM=3LvJsmdCDTl1P7PUeGiQN zKqkwBxY^*~>I1XYNxZcYxcb0i6NGo~ij`)M18cS+xOC{MG*(LCN318NoMe=w S8M90P0000fR_sqGo^7O@vzT7@xlR!Kn%jN z(hHtEf8~Dz4^I4FSUo=VkaH*f;nO)Hr2=s0<}NfDfRA6!$z|UG1#aKirD>hedkeu( zVU8kh!B7N+BGm1>L+H;26Qo$^4-A|NW zduT9Z{}g|@M{d)=YadrInT;uaw+^1+XA7RYHQ@N@z$U@zJVRWB%LdZXT`n8POISX; zf*D@k#99+DRdR-=1$V(FA%%WgMI8m!+R<^NU{9+EK}$Im8JQlj@3&r|p!=cZ;Mw8v zV!3rMr#!qr6{ssXe1DC%pJQ?669+;J!e;()BET(RhyTOHADrm88oe64O#lD@07*qo IM6N<$g7KlyApigX diff --git a/harbour/contrib/hbide/resources/split_v.png b/harbour/contrib/hbide/resources/split_v.png deleted file mode 100644 index 8868c0e695f6d37d32b5e331ea99bc9fc90ed8ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 422 zcmV;X0a^ZuP)9PHIr6<1R80@1Y6Hc}ccjRX*B2aLq)@YcIkZtWtw@n0 zf20F0(+GklT+fB$I*}sRlKkoQU%=dc9%3~Iv66vUe$-;G)IV4JEPV_Z+cq#v#iUOK zjBe!t1ZdbEYK^We$46V9DV84ive!Fulc4 zImOeb0|>c3p(esGfLOd&=8=sYU-q1HPfqbVAjY4-%yx)Y5TMfu@n2#stG{#3JvkPA zDqvz~@SiBwvjcbZseq~YZALacsYl~+1CzVYeEW9fr}qp?1<0C_S{Op}zlIJYsP%!6 QD*ylh07*qoM6N<$g1C{sf&c&j diff --git a/harbour/contrib/hbide/resources/statistics.png b/harbour/contrib/hbide/resources/statistics.png deleted file mode 100644 index 6ca8ac27a351d6586a33262ee5c8e3a206ddf3a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 682 zcmV;b0#*HqP)FUlLw#Y;s^icL7qCq`G1z9A$713*d40=(dSk}nu$;TKK zR6YekSlELE8B`FZW#odUmR)Bw9d6Jc?{<4|8y3Cgfx~$@pU*iD=MergXw?Nvxh0Bc zCK?mjkKsjo(VwS0bGtmL8m(rc-e?#VT-g5<%>PVzt|ww=2Ce(YGWkq^7z5)BBo!)S z&}D65N5#&8!{(7_m9ow%3Erj08#+gi4=vaWLE;6VR0+fwhzP`%Q{`IvZ1CKHW_R;r z0)X~sd*52WtneRTp&3Q6Bwzp$3`zfXCo~YE>FiYC&{&66go|Ji$fh!mq6;X705PJK z(x@42qX$n0*Yxs8QdVWciYY}wdU6gY;|WZ9G-ul9!g{dECoetmg^ zf&`2Zj;9d)@yZc?5F`K$aFTHFwe1lBXfPw*Va-%cnJExLgI;Mkid#SuF5;Yn77&sOAqxnX3dJSBh@*RW7@KL) zVJ;9901Du2*maixAQ%j~lS{L$W=CbG+2U{24MWxx9jc;1xCAIq*mLvY=Z@NJHCLAf z<8#jI%+_1&rAv%NBD}x9-<|%R4tc}w7Ej1sXZVc@Ns@DR*8X4*#os^gwy(WOI%7{~ zH{PhQrY`bj^@&!t`sJ*x=dBl7-drd9#+Q#qi kXEa`T@a96`Q3oUDturq^UGn|wFQCy3p00i_>zopr09-aRaR2}S diff --git a/harbour/contrib/hbide/resources/streamcomment.png b/harbour/contrib/hbide/resources/streamcomment.png deleted file mode 100644 index a766fe47e44097380cf1d0144b8bcb3c8d760658..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAm`Z~Df*JltPgL3p4nJ z@ErzW#^d=bQhOanX2>sQ3b5ELq`-J!>Vtx8nWB0vZ!zz{-8U~K0j*>3boFyt=akR{ E0Q^NWbN~PV diff --git a/harbour/contrib/hbide/resources/syntaxhiliter.png b/harbour/contrib/hbide/resources/syntaxhiliter.png deleted file mode 100644 index 28408f9148e27f1b316ae9b87e138bf596777bd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`-JULvAr`&K4^lXO_;aQ)2=4#? zSDicAwBg~8KoK6H-|J&}j-^O4umvz5kl+ls&fOz(zaU9~fCPSWtgqdx^%}`k;mgq%7HFNhu|*8o{zf@{Lo_#~fg;S!ht-_Kw3n?D*Eq#jWPgg&ebxsLQ08T<1G5`Po diff --git a/harbour/contrib/hbide/resources/tabreadonly.png b/harbour/contrib/hbide/resources/tabreadonly.png deleted file mode 100644 index 168c00def40ff32d7d7cb0b90285b7c0b79c3e91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`I-V|$Ar_~T6C_x-F#m7lkPKcj yQ^mO;Q|*?(2B(;YI<|mEtX<3#wJut0VPIH$uDpUXO@geCyVHXOA8 diff --git a/harbour/contrib/hbide/resources/tabs.png b/harbour/contrib/hbide/resources/tabs.png deleted file mode 100644 index 1787d1a8a9e6535fb6327ab7c358079fa0273e92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 576 zcmV-G0>Axpz-1n4xYRz(Irk76`as*mc+1&gqyo)f-%u$(cp0&6od$5Zjm-< z%bd7qJDwH;n?r? zc%q%1UTHVDT<(P3ezxJaz!r_Y!FH0#By?RzwOaiz(O4YKr)+K_7<mZ&A$aBp$Kw$1*>Z+E;*fWIxi#GZo>j~1d_K2ef|Bo*42ez@F7%H zLuq{je6&U|H1Z6h{1w87G|t%1VU&G=FHLcBH7ydiKj!umf(&*fa%!`zAfb-Niukz$9w;EEOsA4_QnZ_ zqKJ4r4nYuL7zUAq!(mI{58Ov)PJ*&pKy8Y}A{0d-|Ki__GK?h%-0Q_>v%ad8u+y+C z`$uq~rKR;XMY&~70D(f#Tmx{ O0000I-)O diff --git a/harbour/contrib/hbide/resources/tabstospaces.png b/harbour/contrib/hbide/resources/tabstospaces.png deleted file mode 100644 index 843a8f37d647964e26c9b506d6188d328fe4f80e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnY1=2t;!-MC-oP?KMs&DHR zKCKP^H$mh766^m*lmCC1mQ-^%2dILvB*-tA!Qt7BG$6;x)5S4_LzeZRq2OT$0S3dr ziW?-~#AGrooN(_2lerLQMB`tPin{#ghw4r@PGvq>%gD#DAy+Ju&CPg0TEcA|4uwCA XAK$XR^j`WIWEz8~tDnm{r-UW|;%+`) diff --git a/harbour/contrib/hbide/resources/tabunmodified.png b/harbour/contrib/hbide/resources/tabunmodified.png deleted file mode 100644 index 1e6581fe6c07e22c613dfbb069c11eb2665b6bee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^96-#)!2~4PmUdhRQgWUyjv*Y;$q5NR`dR<7PjX-q kJ+Q=3C84M}lu4V3;l#OhK~`o>AR`z&UHx3vIVCg!02O)_SpWb4 diff --git a/harbour/contrib/hbide/resources/tests.png b/harbour/contrib/hbide/resources/tests.png deleted file mode 100644 index 7cce8e9c6bcd5b401d35a20514c81237211eb423..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`{+=$5Ar_~T6Be-j;CK095XiPb zy3Myw<$A!Ixf8P(PF{3RW!Nmi)RVsKZ+qe*lfw*W1e8n{-R`?9>LS%3`@rCVJ#(7E j;$0065(&l)HVh0VvvMb|h??jFG@8NF)z4*}Q$iB}lPfGh diff --git a/harbour/contrib/hbide/resources/text.png b/harbour/contrib/hbide/resources/text.png deleted file mode 100644 index d2bf490804ec90fbecbee9f771cbd25557dfd538..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=r>Bc!NX4zUR}8rr3^<$v-`8i( zUb^_hK@L8?lRu(FdQNP4c0eghe#O6=JVhdB^H`Q>+hJ}WO3y;l><0ww+L{+5&XXz=@D)Ywc z)Bia3CfH&!PN1)u1ZByX(3^zwu%Hv31TJ93P75BC6?7IZQboE;tb(?^Huu|RUFpU9x{^EG>s^Km@cZQ&Fhia|~%P%qp%U#$k-}FVdQ&MBb@0By@Cxc~qF diff --git a/harbour/contrib/hbide/resources/tofront.png b/harbour/contrib/hbide/resources/tofront.png deleted file mode 100644 index 23559d4a1caced764db8bbcc04d3451e03fc6048..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`PM$7~Ar-gIUb@J}V8G*iv9{{J z&E05?sh#J<_^NkJS=+g=)WXH(DeJfBNsJ3Vmo}_nSkBxk_+aOCrl!9aUwAGs-N@3b WD?LBzWWo)gX$+pOelF{r5}E)L*(>n? diff --git a/harbour/contrib/hbide/resources/togglelinenumber.png b/harbour/contrib/hbide/resources/togglelinenumber.png deleted file mode 100644 index 2dbecb199a7a8e40b367ca2c3ef09ba503944d1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`n><|{Lo5X69yAO(#315&vHHKt zOC6mphb~>4W}0w5O7pJIwS&ffOC0PkK9nhEKQ#B5FrUt|hWrf)x_1O~Nc^XzbkF!&UueLPl%whZTxVGk)=A ma@r*5>NnOr`Bon}fzu*|!K3K;tO-EF89ZJ6T-G@yGywpPKrqJu diff --git a/harbour/contrib/hbide/resources/tools.png b/harbour/contrib/hbide/resources/tools.png deleted file mode 100644 index 085384d39984a4b34730a54a864e427461f10869..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jh-%!Ar-f#PUPe|V8Fpr`|F>L zubAT{&aIj~6AlMn?l9~TNq+eC4r3+%lm^d9+gv11H9qCR1Par>kn z0+ZYl49rz}8v-ts9k}n#$y)PpGs}_}F@Y;hrM4)aS#b1F{X!T2wo4mUym;v*(U>OxjubXQS4f*mav3kGn8t11fa7CQqMSnvd?~f}9outTj*g$~gv#fKy zqCbZTFV7iqE^g-Et%qt9HyCU%F);YBYxyZ{_w?{0X10jub8RE@T%HIWZItHwc-ZMn zjK~8gnNK!nk9QW_KiWEd%VVv`#z}3zGo3l^n7!P$f~9GDmxiUO(Hh4FGah-bJ554! zmomww9L`zP5-q`aIAZ!k5&3x{CTm5PT;Uctk;M9qw=S7AXT8vZsr8Hj0axGsp89rT m{oy56F}ekJ&lGqTbn?%ge}+$`s@53j0R~T3KbLh*2~7ZG2U@rQ diff --git a/harbour/contrib/hbide/resources/unload_1.png b/harbour/contrib/hbide/resources/unload_1.png deleted file mode 100644 index bf92c5d33e75555b084c42a909a05a503ad5e429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 721 zcmV;?0xtcDP)l9!5UA1s3mDU8DK zi(=SouFR$6Y+H#y$41cQ&k8Sm~b{inM2isOWlxJKfc| z(RrWpYRGV|x3 zS48@`5^9ejy*U%-Ne_DKFzIoFqt9tajqM3^#vJHcGK7b{%>157*49D|lH^3B7!r}! zb`CaY7iPw1mjl_xO!f#bGh(m`AB7xK6M>U*Jd&IC(H7&7@gj~^Ey09)9QFO>u#a28 zVHvUE%+viiL0)EiP;mB><3B7qQuD#wvGl<0x&p0>= z+E39AqH%y2W+i3Fa_iy8+i3M21Z$Af8iM>+Y807*aiwDmOXPi{MsQTU&lcW8#4sx@ zQ!bXZjcOX+W?X99NYh@AQu8{Lbq1pR?OK+|2gc0cxYwf*oaBi6OjmoJMVb zknm{rzF_8`tE^ZmRi>AD!!WEy=a)!YH3470C)4>K!3Spq*F=v!>}6)o#}t#Ga8(=p z@abC!Mkm9BhAHP7^=3V$d7pEDN|Ga^BrA*Zd7twyV|?$H16yJK00000NkvXXu0mjf DTdr4( diff --git a/harbour/contrib/hbide/resources/up.png b/harbour/contrib/hbide/resources/up.png deleted file mode 100644 index 5a143785b5f036a4cc21ee6204b97357b2f3444d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 637 zcmV-@0)qXCP)OCT&6v@J7v1ba@Me}Xgo>h&>N2{kt}T$FNVeRgt29wp+Me8*)9K7Y zC4&CJPj5sGY_nlcKX`KvJBJtFb9N5LNct=Nf0z}Zo<9n+?s$D2@^(97-=(wE@mnzK z?wMeh9>)eXzY*5RXs7tCPC@dV2xf&H$LeV+vWLct0ZlAAx_HfsV-4zUg&&9B^Ple2 zgGU2e{5YgU(XUwEYLZ@3XPbhzs#-m~7YJ-|)(sUlE z00R07^flOLv;hbPEO_9%RtzL7||YEUyJurgQ$3~-)upzqgsT0lAPpdC6--Q*mF9r95xslGj| zxiT2{bioCz0)j4q=Id6^e!y2KL_O5iY+_3tuI=_03wY3}3l53Q&8Wn3s04r$lWxGrp*D|Pl0w{5PkjejLh}eyldR^E3X1k3(GC$Y>)Zd;B(xCX;d%4p;q!YQcpd`azjEhCLTKz7;%*@) z5^I^7?2uGF-%_$yuq!~IAcBNJ_vV|*bjW8bP%&MC*#2Pf9~rH2%5>|EB}~)50$$Je zgjUXEtd6dCqis`;sxMh6T!=yGVkWLkiNSB+f_+U}$;{F+-3Hh_CN|~Dgf%4wQ1dGZ zIp2K{JMRS1I3GSkJb3pB;6HE-Mzu^Zvo&APGwE6?fN%&cqTQjs?W+RUSI^?=Mj&D) zol)>I6Ll*$;5B3k`wlLwpBclraUb-GG{H!shiw58!Y>*Xuid3uPF?mu)T9$azt;^Mg&}w?mN2X~09~xMp#m(b8M2f&XAnE>4~M55L@L72G_1ff6%#+kk@YSW zK3#6GX|{lCn=?4~O+ZVeVGFp$tP*y)Lpb7s6YmA!H8BxhBf=(rqHnbu1`2f?Xkfv+ z-4lU50Wi630un<$ssQss1Ci4c9)v?42z>1Vb2$qoEk#&aUx94y0W7Gld^?XLZa5ac z9e&Wy(+7znWh#Ij&tUVb4^9O4`5|HK0>TGQLevw4)BPbh)f>Vwmb!ca$oMM)7PRif0NSnaV>cwTWdjWe|^w;V5^6?j>E2Xp*vR zk%%i%<4X2Fw7+MEh|W-?zrBoHWj0bqQXy;=f+w|sPO=V29I5)}EwIw`a=7^>^GBq% z5L60aRc-}VIt%nf`WQ8L=&r6&Jwd}%J4q{&k;tf}=DkDxDkSF!d#Bpp8f0Omkc{K^ P00000NkvXXu0mjf2$^A0 diff --git a/harbour/contrib/hbide/resources/view_cascaded.png b/harbour/contrib/hbide/resources/view_cascaded.png deleted file mode 100644 index 66544cb4a6d0ee616b60ec2625eae2be97847ecd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 576 zcmV-G0>Ax0 zUr19?00!{$XhaX{TlVB);6sJ?K}-=>{%PhiSvG1h;g+kg9Q~1*Zp?c_P0?CGnM%8% zGPNbBBuG9P1`#9EMJlTX`Y@*5&6Pda%f9Z8j4|-uKKMPJkMo^F()J(lGG00$##MGE)jz^EJ$U{6uy4525q}d1 zTQ(HyY7%o;$zj6tJp55m@1z+EUsvJvEkpnK6*RrmD00oBaCi>KN8h7hWFGmhw>aA6 z#xc%?eQG91Zy@e~TK4~-Q^c((R4oG1?+(ZsKBY%mK^2J2Zbu?tR=?3HzqkM3#)ARW z-S1VzoYaAol$8f3W@a(|W(MBRJ~|~5{e`6!KfR3-%k4WL^dWX1grAt4q*FpaMQn;; z%!i=J;c$SEWEl787~)y^9)K9xf-eF^(g&mzWRzE&4tMl8(ag6Yw6Te`Z750>B$Fv& zBzzzcK=dyZwQ?MYOjz&2BL0^~Yg0_FKvkqU5v;vph8)vnbL?Q&AIldY6I=`TI$5b$T*iXdE1=P^7v*Kfnvu`icl>{S6l5E6=zQ2wTXQ(>%kKVj^!QS9hz zucfcOgZ~x94(pWEf@Mc%05miLLR)Cr zqu?3veOP*bgW~E8QRXPQhE5J28=%6nqpKEXxrYGx02&3Xh3T0~6bf@}ZmzJm{sT6w z;Yi&86&8fV^Uq*}lmJG+vrt&ROTM;?x|SAxZG1vo=b2f66URweW!q5uC_%6a7!q1; zW-U6zw==^OZ8u-;JfQ8`N1_tMWm1Y@K}ZCPPk;c#01iQEk{2`?5Byo)eO={rp$Eb( za3yG6AYnmCot&qd!AJZ<0SiK6>g72wS=5E}_1t3UZ4TeWgbr@^HdB6h0kv5)Dv`N3 zK}r=XLTY*KF=8z0%0%TWd|%7po0zSbl(+Z;wONQtR2TvBBhPfV@*_`GvV#+^Gr5LS zWe3V1s(_LZQB*+@RD=qnith>G&-FI~bO812&iZd#)bW*1Gk2TCN$CKa7l83gtk^#W2WOZ6ARL#R3dXTXss9a(ONklD33{)6O{tLEXAXE1W|`M>4S|NnmveM19I1t7V5_wM19XDBHv$E)D&(Cw7bKbLxh*q#aRUMt6(!NT_ z&`!jrYrOF)tsQm?{K-H>SZ+SBWyKMbsy-E`r0blZ(uP60aNoG7 zNY^Z&;GCG7rcQ%Rz-F0kPrQobAJ$o@qIHa_+QzBzi=EmnPU;(dwsNlyi4bs(@SY+)Cfs-9sdeX_b}dX5JH#|Spa34x^i_XXE0zV17Fw|OhxYeI_G zLSc7t?Kl4nI%5<`0k@3UdO0a7v}0KJN`Q`Dt^1plTkjK*SMQU4VV#_`1PBs>KmcGJ zj6gK7?LXMbYF9?EyLqy^y=23DFAc*%g_4_OhZ3%+Ks~f0r@TL2YO+yuvOi^Wbq~A9 zG%`z)l8mrXB4g4t&a5)iqvTtLE@^}aF^J6vK_G6|1|^+l2OZDX^Z3GEB*jVu8Ht(I z?vpp0*cS>4rN+SP6 z$_j*(LW2)yI(Xtn!(wCaG?{+PQOoxk(wnBKvTcHjYRq&;GeD2uS_lo8cnz!$Sy%*+44G}%gA)aQ j*tP?i+Bfj;4qfg)L0X0m1`=f800000NkvXXu0mjfLtbX0 diff --git a/harbour/contrib/hbide/resources/view_tabbed.png b/harbour/contrib/hbide/resources/view_tabbed.png deleted file mode 100644 index d73b3f9b6d0992235bd64f67cb28f996b2769cc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Z#-QbLn>~~y}Z%eDNyA2M`lHq ziQQK|CKkN-PhT zKiB1-Gw=C<@;`stxTkNsZew%y)??%8-#vRGyeuobv)OkCHVJ#P=e2HSPSPwcJ)HPn zbnQQbLjJqzE&cfxD??`HWy{Im-LH^2^P90<7Te2n3`r*?4!@6YP}}(AH)DSqkQQNK z>=y^p7Z0RxYILzL;{g(O^$fmAi`}=>1I1H(n)inT>5}JHf7bJ62ziS?_2z!s*}JdU ktlUmt#C!j56}LBRyPc1m?G>G|3g~YJPgg&ebxsLQ0NT`e8vpcoq&O@VDT*Fs(ES}ntGi}^&93I7@HV5`B==|X}SD})w09Ziw`(By97;G z85$N5mzme)0eK%m1g(UATDt)}?pKWM=4x;b>H<+k<|9=*(HskH~-Dg+LkU1-Or{={gF`=iuQ^h&s4exs`vG(5U zQnTrXXN&o1sm{yo3n!k)&0BTzKEL&ok~4pQ1{wpEu!EFryy3|*n|s#T4L1C}*V%>R YD;T97w66a$6KFq!r>mdKI;Vst0I8#sJ^%m! diff --git a/harbour/contrib/hbide/resources/view_vertstacked.png b/harbour/contrib/hbide/resources/view_vertstacked.png deleted file mode 100644 index 9ef365c077aaa6498edc298fdedbe667c2587c1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327 zcmV-N0l5B&P)o?5(57NtE|Nr#s|Nk$( z{r~^^`~Uy%eER?Y(U<@KUwr%j|J{%O|3Cl!|NrOT|6l;p%aB)CM79ASy$p?wjbs}D z(#ufa(C{BUkkA7WTOfl15u}%)xU8J)KrAUM|Hlv>8BMkqq@-n5G02!Zk!=7x9gu4P zJRM+5X|NQCFD1g$0l9%ly>vjX0pN51j7zc&0H*^r4bA^?$*CAPHYxQVh>l52!6^?) Z2LPg(?&u(PdH?_b002ovPDHLkV1l}so^=2K diff --git a/harbour/contrib/hbide/resources/view_zoomin.png b/harbour/contrib/hbide/resources/view_zoomin.png deleted file mode 100644 index f5871dc21c21c64bd8d562875293a9c7b2e626c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 769 zcmV+c1OEJpP)zY%KC9geZs_mWK4rq z<4TmWA~Na_a}%psn9_o-A0G68U&$v#a5geUDK2^4I2QI{o}giBKqAhmw+tmJq7DrU zxwj9tCu#`0{hrd7KX6WIWo|+PB0P^t`|~hAR)*ENCTw%xGHu@likqIImzDLb0x@gF zdc^(`VrqKv&VPg0or&0+g$T_??8!iEJA?2!gJW?AW{PW^D$t;pfdflL0rK3}1Xg{; zexyXJ6E&mZNg-F5bGDWx11^H1@W5KW_e4;WY$4qr<6z`3 z`Plcx;Lh%kl;3Y7{ze_ji)qA!IMS~10Uu?Ac0F);#I%7zcI>?b#j>Xk@=# zfy2@~?r%d;k}KWXoxE>YM^}>*+Po#Bdx?WT`9H3FYu!Y000000NkvXXu0mjfC!um9 diff --git a/harbour/contrib/hbide/resources/view_zoomout.png b/harbour/contrib/hbide/resources/view_zoomout.png deleted file mode 100644 index 29e9d69ee5a666382e60e98af4ccb1a1ab36df38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 772 zcmV+f1N;1mP)JmrlBxM`ZOOgnM}Vr@N(du`yROOeZ*+zW!N6RVWH{A(*N!j z%2@5qsF|)UVx-4D=5c=JSV#~3Q)-e8rnn?*dWLX~>v*!vAbZ;=%Bzp&y za9Aow?0-n4rkyQ09}qh;5W%+*fvJdX$%xJI2%mW7J!r%>>=tKLTC;zUgNb1(6j|?0 zZ~l(cB|WnEmrRa*fqiT#Qxb|F?Rtb(sHAySQRQ8%j!I+3ft zvONDAD~h{VqwhhkH!?Y~lo1LgWA|M*hd9W=qLd=6LeiLaz65v4tnEUs>tR(zFP^2{ z$WmV+d{bB(>_tSJuQ|k_92C?V7#VaKyW_byUaQ0@vz{4g)l7`aLwH}nJ?sF@27hWY zZD`b|59Q!ze?O9n>zi;nnu?X*IjjR>u-bZtVH=hBL?5T=^*RQ6R`8?s5SpY3(*55Y znEsNsZykTs)Y68!qK z{B{HlNd46IY1}{WMoU!ypUYR$taGL+djZm1;@}tC{k5|b4***L0000Z}Yywp2z(F=F}U-E0+u2aaqIOtEt zwnyu?9WAO#ffE z(_75uDF&N4bZkBEqNu`Adwb@I&u&c@zV~+i=~qZ*nKyHygt|dhy?To~XT@f>CW(}( z)%;Ft+8smQEUM#_ZFZMm;YCq z^T3Y#U~O2_Z4H+1KczveUn!wY$9=0jGAeEJ)An*N?NZ8o3Uo1pr>mdKI;Vst06k)8 AssI20 diff --git a/harbour/contrib/hbide/resources/zoomin.png b/harbour/contrib/hbide/resources/zoomin.png deleted file mode 100644 index e30b47fe6f487309a05d452012b973d18ea26906..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Gdx`!Ln>}dZ6WL3Sgzm~DZ!P)j%I7ijQeJ|c=W-iaP zzpTp>T~h3H!F|%AT`zf#>z&`p?afdiKJ7r+gMWgI2lqc=4McWo diff --git a/harbour/contrib/hbide/resources/zoomin3.png b/harbour/contrib/hbide/resources/zoomin3.png deleted file mode 100644 index e8287d0504d3e5500cdb2e9b81082730efc5e38e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 706 zcmV;z0zLhSP) zdn^-uW@r(No;K9+duu$cGuG9L-Z&9JqCr=^C+V64Mo<2copA>T_`0^fh+yf z&2A$~?0R;vXaG^NNeJaC1lCW$Lih^A6)(}{tVsH+bh$1i_qO^qOk;ipcs;!V*WzBd zmyf_#wg@}%Aat%2V+%_ZLK;QOVr@!>FtG@{RRWx*c~EE#^x~RvR5}Oy`UMzgcS4sV zQju5u4pI{%`xMzSgXXbSIF$@zUv>{DN(x4_6voLim=^TGs_ruku9bqkDcAT|6-rC;4ggtUE!ZP5TsGde*0 zGBCpLV{d*J93Q>Mp(j(&4;6#Flh~vtNL;!zT&Vj1rJ zYcMbBhOS@QIyp;rlbYZXb1lAP+A>cLm(~TGc=;7(S#7YZ9E4l%GOWt`LH>8)dDUyZ zT|jB1iFROthjwt$nz7(9EF}uq){f#p#SnI-H-nh@I35>+*@*zWt2RVaB5_G0Kar~z zD|0}PlLdWl4)oZW(DqFOTPVQPuqQT_Phv?Kix=6XEDfeTq>%$#kIp7JlaDaW#^-!a zO1M3~baJpd!GmgKKUS0%(N}E&F_&^_Gj4MYK@JxO_Ej)rTnG43-4x={J2&qhJq0P!*Z*>y|ZJWMx!wiz^CP=+N{Q@Rg)Bg~% ob*%+V?dmdKI;Vst0Bg)nf&c&j diff --git a/harbour/contrib/hbide/resources/zoomout3.png b/harbour/contrib/hbide/resources/zoomout3.png deleted file mode 100644 index 34b7f1425cc90cf677181f341deea43b6c9c9115..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 708 zcmV;#0z3VQP) zdn^*=5IdI>}i|tz;q3 zbVtm*#w{GC^{^tZag8Q)HZ|+pKmE~m*V5-h^rxtYCKOX6q$_oO6k7ulK3XJRK_&6! z?(|RT-Aqd9d~xW`5Mq^+NN<}%aMd_$#BHE3#R>)G#?oJ9cbQUJZ!@QM8d@Eo`3%VV z*AUsVg22W_*eix%9B~JmxROXRC{CGRS2Ti&B|tq3q;>s(plKOC)$?$v)Z%c>0xa@6 zV9J-wlV8$K(i5-z7~3?1hS4=R7mdJP-Vc_v2Ug;CFw<1nBUgh}F^+AQib4KKXGl+6 zJu=$o!L1qt37>$X%RmvOpil+qf(*oy!J%#vI}#s*{F9PNPgI$fQ}F?jEni`GTLYHt z6|AMbu#$FTzq}Jp&)&iL`4qOsC_w(HJkldj6z|GVA-HuJ-pz~fQZ2xv=?gqNm*At( z!Ar9S>%wlBaDRI@Of|#24)X z0;L(39q_4xkF^OQ=HDE|s`fn8 - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 28Dec2009 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbide.ch" -#include "common.ch" -#include "fileio.ch" -#include "hbclass.ch" -#include "hbqtgui.ch" - -/*----------------------------------------------------------------------*/ - -#define INI_SECTIONS_COUNT 14 -#define INI_HBIDE_VRBLS 30 - -/*----------------------------------------------------------------------*/ - -#define __buttonAddTextext_clicked__ 2001 -#define __buttonDelTextext_clicked__ 2002 -#define __buttonKeyAdd_clicked__ 2003 -#define __buttonKeyDel_clicked__ 2004 -#define __buttonKeyUp_clicked__ 2005 -#define __buttonKeyDown_clicked__ 2006 -#define __buttonSelFont_clicked__ 2007 -#define __buttonClose_clicked__ 2008 -#define __buttonOk_clicked__ 2009 -#define __buttonCancel_clicked__ 2010 -#define __treeWidget_itemSelectionChanged__ 2011 -#define __comboStyle_currentIndexChanged__ 2012 -#define __checkAnimated_stateChanged__ 2013 -#define __checkHilightLine_stateChanged__ 2014 -#define __checkHorzRuler_stateChanged__ 2015 -#define __checkLineNumbers_stateChanged__ 2016 -#define __checkShowLeftToolbar_stateChanged__ 2017 -#define __checkShowTopToolbar_stateChanged__ 2018 -#define __sliderValue_changed__ 2019 -#define __radioSection_clicked__ 2020 -#define __buttonThmAdd_clicked__ 2021 -#define __buttonThmDel_clicked__ 2022 -#define __buttonThmApp_clicked__ 2023 -#define __buttonThmSav_clicked__ 2024 -#define __listThemes_currentRowChanged__ 2025 -#define __buttonHrbRoot_clicked__ 2026 -#define __buttonHbmk2_clicked__ 2027 -#define __buttonEnv_clicked__ 2028 -#define __buttonResources_clicked__ 2029 -#define __buttonTemp_clicked__ 2030 -#define __buttonShortcuts_clicked__ 2031 -#define __buttonSnippets_clicked__ 2032 -#define __buttonThemes_clicked__ 2033 -#define __buttonViewIni_clicked__ 2034 -#define __buttonViewEnv_clicked__ 2035 -#define __buttonViewSnippets_clicked__ 2036 -#define __buttonViewThemes_clicked__ 2037 -#define __buttonDictPath_clicked__ 2038 -#define __comboTabsShape_currentIndexChanged__ 2039 -#define __comboLeftTabPos_currentIndexChanged__ 2040 -#define __comboTopTabPos_currentIndexChanged__ 2041 -#define __comboRightTabPos_currentIndexChanged__ 2042 -#define __comboBottomTabPos_currentIndexChanged__ 2043 -#define __comboTBSize_currentIndexChanged__ 2044 -#define __buttonVSSExe_clicked__ 2045 -#define __buttonVSSDatabase_clicked__ 2046 -#define __buttonEditorX_clicked__ 2047 -#define __buttonEditorSaveAs_clicked__ 2048 -#define __buttonEditorSave_clicked__ 2049 -#define __buttonEditorClose_clicked__ 2050 -#define __tableVar_keyPress__ 2051 -#define __listDictNames_currentRowChanged__ 2052 -#define __btnDictColorText_clicked__ 2053 -#define __btnDictColorBack_clicked__ 2054 -#define __checkDictToPrg_stateChanged__ 2056 -#define __checkDictToC_stateChanged__ 2057 -#define __checkDictToCpp_stateChanged__ 2058 -#define __checkDictToCh_stateChanged__ 2059 -#define __checkDictToH_stateChanged__ 2060 -#define __checkDictToIni_stateChanged__ 2061 -#define __checkDictToTxt_stateChanged__ 2062 -#define __checkDictToHbp_stateChanged__ 2063 -#define __checkDictActive_stateChanged__ 2064 -#define __checkDictCaseSens_stateChanged__ 2065 -#define __checkDictBold_stateChanged__ 2066 -#define __checkDictItalic_stateChanged__ 2067 -#define __checkDictULine_stateChanged__ 2068 -#define __checkDictColorText_stateChanged__ 2069 -#define __checkDictColorBack_stateChanged__ 2070 -#define __radioDictConvNone_clicked__ 2071 -#define __radioDictToLower_clicked__ 2072 -#define __radioDictToUpper_clicked__ 2073 -#define __radioDictAsIn_clicked__ 2074 -#define __buttonDictAdd_clicked__ 2075 -#define __buttonDictDelete_clicked__ 2076 -#define __checkShowSelToolbar_stateChanged__ 2077 - -/*----------------------------------------------------------------------*/ -// -// Class IdeINI -// -/*----------------------------------------------------------------------*/ - -CLASS IdeINI INHERIT IdeObject - - DATA aINI INIT {} - - DATA cMainWindowGeometry INIT "" - DATA cGotoDialogGeometry INIT "" - DATA cFindDialogGeometry INIT "" - DATA cToolsDialogGeometry INIT "" - DATA cSetupDialogGeometry INIT "" - DATA cShortcutsDialogGeometry INIT "" - DATA cDbStructDialogGeometry INIT "" - DATA cTablesDialogGeometry INIT "" - DATA cChangelogDialogGeometry INIT "" - DATA cStatsDialogGeometry INIT "" - // - DATA cRecentTabIndex INIT "" - // - DATA cIdeTheme INIT "" - DATA cIdeAnimated INIT "" - // - DATA cPathHrbRoot INIT "" - DATA cPathHbmk2 INIT "" - DATA cPathResources INIT "" - DATA cPathTemp INIT "" - DATA cPathEnv INIT "" - DATA cPathShortcuts INIT "" - DATA cPathSnippets INIT "" - DATA cPathThemes INIT "" - - DATA cVSSExe INIT "" - DATA cVSSDatabase INIT "" - - DATA cCurrentProject INIT "" - DATA cCurrentTheme INIT "" - DATA cCurrentCodec INIT "" - DATA cCurrentEnvironment INIT "" - DATA cCurrentFind INIT "" - DATA cCurrentFolderFind INIT "" - DATA cCurrentReplace INIT "" - DATA cCurrentView INIT "" - // - DATA cTextFileExtensions INIT ".c,.cpp,.prg,.h,.ch,.txt,.log,.ini,.env,.ppo,.qtp,.hb," + ; - ".cc,.hbc,.hbp,.hbm,.xml,.bat,.sh,.rc,.ui,.uic,.bak,.fmg,.qth,.qrc" - DATA aProjFiles INIT {} - DATA aFiles INIT {} - DATA aFind INIT {} - DATA aReplace INIT {} - DATA aRecentProjects INIT {} - DATA aRecentFiles INIT {} - DATA aFolders INIT {} - DATA aViews INIT {} - DATA aTaggedProjects INIT {} - DATA aTools INIT {} - DATA aUserToolbars INIT {} - DATA aKeywords INIT {} - DATA aDbuPanelNames INIT {} - DATA aDbuPanelsInfo INIT {} - DATA aDictionaries INIT {} - DATA aLogTitle INIT {} - DATA aLogSources INIT {} - - DATA cFontName INIT "Courier New" - DATA nPointSize INIT 10 - DATA cLineEndingMode INIT "" - - DATA lTrimTrailingBlanks INIT .f. - DATA lSaveSourceWhenComp INIT .t. - DATA lSupressHbKWordsToUpper INIT .f. - DATA lReturnAsBeginKeyword INIT .f. - DATA lConvTabToSpcWhenLoading INIT .f. - DATA lAutoIndent INIT .t. - DATA lSmartIndent INIT .t. - DATA lTabToSpcInEdits INIT .t. - //DATA nTabSpaces INIT ::oIde:nTabSpaces - DATA nIndentSpaces INIT 3 - DATA lSelToolbar INIT .T. - - DATA nTmpBkpPrd INIT 60 - DATA cBkpPath INIT "" - DATA cBkpSuffix INIT ".bkp" - - DATA lCompletionWithArgs INIT .t. - DATA lCompleteArgumented INIT .f. - - DATA aAppThemes INIT {} - DATA lEditsMdi INIT .t. - - DATA lShowEditsLeftToolbar INIT .t. - DATA lShowEditsTopToolbar INIT .t. - - DATA nDocksTabShape INIT QTabWidget_Triangular - DATA nDocksLeftTabPos INIT QTabWidget_South - DATA nDocksTopTabPos INIT QTabWidget_South - DATA nDocksBottomTabPos INIT QTabWidget_South - DATA nDocksRightTabPos INIT QTabWidget_South - - DATA cChangeLog INIT "" - DATA cUserChangeLog INIT "" - - DATA lShowHideDocks INIT .t. - DATA nEditsViewStyle INIT 0 - DATA cToolbarSize INIT "12" - - DATA nPanelsTabPosition INIT 0 - DATA nPanelsTabShape INIT 1 - - DATA lISClosing INIT .T. - DATA lISIf INIT .T. - DATA lISFor INIT .T. - DATA lISDoWhile INIT .T. - DATA lISDoCase INIT .T. - DATA lISSwitch INIT .T. - DATA lISElse INIT .F. - DATA lISCaseOWise INIT .F. - DATA lISSwitchOWise INIT .F. - DATA lISExitSameLine INIT .F. - DATA nISCaseCases INIT 3 - DATA nISSwitchCases INIT 3 - DATA lISClosingP INIT .F. - DATA lISSpaceP INIT .F. - DATA lISCodeBlock INIT .T. - DATA lISOperator INIT .F. - DATA lISAlignAssign INIT .F. - DATA lISFmtLine INIT .F. - DATA lISEmbrace INIT .F. - DATA lISLocal INIT .T. - DATA lISReturn INIT .T. - DATA lISSeparator INIT .T. - DATA lISDocs INIT .F. - DATA lISFunction INIT .T. - DATA lISClass INIT .T. - DATA cISData INIT "VAR" - DATA cISMethods INIT "new" - DATA cISFormat INIT "class:method" - - DATA lTabRemoveExt INIT .F. - DATA lTabAddClose INIT .F. - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() - METHOD load( cHbideIni ) - METHOD save( cHbideIni ) - - METHOD getIniPath() - METHOD getResourcesPath() - METHOD getTempPath() - METHOD getHarbourPath() - METHOD getIniFile() - METHOD getEnvFile() - METHOD getHbmk2File() - METHOD getSnippetsFile() - METHOD getShortcutsFile() - METHOD getThemesFile() - METHOD showHideDocks() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeINI:new( oIde ) - ::oIde := oIde - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeINI:destroy() - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeINI:create( oIde ) - DEFAULT oIde TO ::oIde - ::oIde := oIde - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeINI:getINIPath() - LOCAL cPath - hb_fNameSplit( ::oIde:cProjIni, @cPath ) - RETURN cPath - -/*------------------------------------------------------------------------*/ - -METHOD IdeINI:getResourcesPath() - LOCAL cPath := iif( empty( ::cPathResources ), ::getINIPath(), ::cPathResources ) - RETURN iif( empty( cPath ), cPath, hbide_pathToOSPath( hbide_pathAppendLastSlash( cPath ) ) ) - -/*------------------------------------------------------------------------*/ - -METHOD IdeINI:getHarbourPath() - LOCAL cPath := ::cPathHrbRoot - - IF empty( cPath ) - IF empty( cPath := hb_getEnv( "HB_INSTALL_PREFIX" ) ) /* This covers Harbour developers */ - hb_fNameSplit( hb_dirBase(), @cPath ) /* This covers USERS of nightly builds */ - IF ! hb_fileExists( cPath + "harbour.exe" ) - IF ! hb_fileExists( cPath + "harbour" ) - cPath := "" - ENDIF - ENDIF - IF ! empty( cPath ) - cPath := hbide_pathAppendLastSlash( cPath ) + ".." + hb_ps() - ENDIF - ENDIF - ENDIF - ::cPathHrbRoot := iif( empty( cPath ), "", hbide_pathToOSPath( hbide_pathAppendLastSlash( cPath ) ) ) - - RETURN ::cPathHrbRoot - -/*------------------------------------------------------------------------*/ - -METHOD IdeINI:getTempPath() - RETURN hbide_pathToOSPath( ::cPathTemp ) - -/*------------------------------------------------------------------------*/ - -METHOD IdeINI:getINIFile() - RETURN hbide_pathToOSPath( hbide_pathFile( ::getINIPath(), "hbide.ini" ) ) - -/*------------------------------------------------------------------------*/ - -METHOD IdeINI:getHbmk2File() - LOCAL cFile - - IF empty( ::cPathHbmk2 ) - IF empty( cFile := hb_getenv( "HBIDE_DIR_HBMK2" ) ) - cFile := "hbmk2" - ELSE - cFile := hbide_pathFile( cFile, "hbmk2" ) - ENDIF - ELSE - cFile := ::cPathHbmk2 - ENDIF - - RETURN hbide_pathToOSPath( cFile ) - -/*------------------------------------------------------------------------*/ - -METHOD IdeINI:getEnvFile() - RETURN hbide_pathToOSPath( iif( empty( ::cPathEnv ), hbide_pathFile( ::getINIPath(), "hbide.skl" ), ::cPathEnv ) ) - -/*------------------------------------------------------------------------*/ - -METHOD IdeINI:getSnippetsFile() - RETURN hbide_pathToOSPath( iif( empty( ::cPathSnippets ), hbide_pathFile( ::getINIPath(), "hbide.skl" ), ::cPathSnippets ) ) - -/*------------------------------------------------------------------------*/ - -METHOD IdeINI:getShortcutsFile() - RETURN hbide_pathToOSPath( iif( empty( ::cPathShortcuts ), hbide_pathFile( ::getINIPath(), "hbide.scu" ), ::cPathShortcuts ) ) - -/*------------------------------------------------------------------------*/ - -METHOD IdeINI:getThemesFile() - RETURN hbide_pathToOSPath( iif( empty( ::cPathThemes ), hbide_pathFile( ::getINIPath(), "hbide.hbt" ), ::cPathThemes ) ) - -/*------------------------------------------------------------------------*/ - -METHOD IdeINI:showHideDocks() - - IF ::lShowHideDocks /* Assumed visible, hide all */ - hbide_saveSettings( ::oIde, "tempsettings.ide" ) - ::oDK:hideAllDocks() - ELSE - hbide_restSettings( ::oIde, "tempsettings.ide" ) - ENDIF - - ::lShowHideDocks := ! ::lShowHideDocks - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeINI:save( cHbideIni ) - LOCAL j, nTab, pTab, n, txt_, oEdit, nTabs, nn, a_, s, qLst, k - - DEFAULT cHbideIni TO ::oIde:cProjIni - - IF ::oIde:nRunMode != HBIDE_RUN_MODE_INI - RETURN Nil - ENDIF - - IF ! ::lShowHideDocks - ::showHideDocks() - ::lShowHideDocks := .f. - ENDIF - - txt_:= {} - - aadd( txt_, "[HBIDE]" ) - aadd( txt_, " " ) - // - aadd( txt_, "MainWindowGeometry" + "=" + hbide_posAndSize( ::oDlg:oWidget ) ) - aadd( txt_, "GotoDialogGeometry" + "=" + ::cGotoDialogGeometry ) - aadd( txt_, "FindDialogGeometry" + "=" + ::cFindDialogGeometry ) - aadd( txt_, "ToolsDialogGeometry" + "=" + ::cToolsDialogGeometry ) - aadd( txt_, "ShortcutsDialogGeometry" + "=" + ::cShortcutsDialogGeometry ) - aadd( txt_, "SetupDialogGeometry" + "=" + ::cSetupDialogGeometry ) - aadd( txt_, "DbStructDialogGeometry" + "=" + ::cDbStructDialogGeometry ) - aadd( txt_, "TablesDialogGeometry" + "=" + ::cTablesDialogGeometry ) - aadd( txt_, "ChangelogDialogGeometry" + "=" + ::cChangelogDialogGeometry ) - aadd( txt_, "StatsDialogGeometry" + "=" + ::cStatsDialogGeometry ) - // - aadd( txt_, "CurrentLineHighlightMode" + "=" + iif( ::lCurrentLineHighlightEnabled, "YES", "NO" ) ) - aadd( txt_, "LineNumbersDisplayMode" + "=" + iif( ::lLineNumbersVisible, "YES", "NO" ) ) - aadd( txt_, "HorzRulerDisplayMode" + "=" + iif( ::lHorzRulerVisible, "YES", "NO" ) ) - // - aadd( txt_, "RecentTabIndex" + "=" + hb_ntos( ::qTabWidget:currentIndex() ) ) - // - aadd( txt_, "IdeTheme" + "=" + ::cIdeTheme ) - aadd( txt_, "IdeAnimated" + "=" + ::cIdeAnimated ) - // - aadd( txt_, "PathHrbRoot" + "=" + ::cPathHrbRoot ) - aadd( txt_, "PathMk2" + "=" + ::cPathHbMk2 ) - aadd( txt_, "PathResources" + "=" + ::cPathResources ) - aadd( txt_, "PathTemp" + "=" + ::cPathTemp ) - aadd( txt_, "PathEnv" + "=" + ::cPathEnv ) - aadd( txt_, "PathShortcuts" + "=" + ::cPathShortcuts ) - aadd( txt_, "PathSnippets" + "=" + ::cPathSnippets ) - aadd( txt_, "PathThemes" + "=" + ::cPathThemes ) - // - aadd( txt_, "CurrentProject" + "=" + ::oIde:cWrkProject ) - aadd( txt_, "CurrentTheme" + "=" + ::oIde:cWrkTheme ) - aadd( txt_, "CurrentCodec" + "=" + ::oIde:cWrkCodec ) - aadd( txt_, "CurrentEnvironment" + "=" + ::oIde:cWrkEnvironment ) - aadd( txt_, "CurrentFind" + "=" + ::oIde:cWrkFind ) - aadd( txt_, "CurrentFolderFind" + "=" + ::oIde:cWrkFolderFind ) - aadd( txt_, "CurrentReplace" + "=" + ::oIde:cWrkReplace ) - aadd( txt_, "CurrentView" + "=" + ::oIde:cWrkView ) - aadd( txt_, "TextFileExtensions" + "=" + ::cTextFileExtensions ) - // - aadd( txt_, "FontName" + "=" + ::cFontName ) - aadd( txt_, "PointSize" + "=" + hb_ntos( ::nPointSize ) ) - aadd( txt_, "LineEndingMode" + "=" + ::cLineEndingMode ) -// aadd( txt_, "" + "=" + ::c ) - // - aadd( txt_, " " ) - aadd( txt_, "TrimTrailingBlanks" + "=" + iif( ::lTrimTrailingBlanks , "YES", "NO" ) ) - aadd( txt_, "SaveSourceWhenComp" + "=" + iif( ::lSaveSourceWhenComp , "YES", "NO" ) ) - aadd( txt_, "SupressHbKWordsToUpper" + "=" + iif( ::lSupressHbKWordsToUpper , "YES", "NO" ) ) - aadd( txt_, "ReturnAsBeginKeyword" + "=" + iif( ::lReturnAsBeginKeyword , "YES", "NO" ) ) - aadd( txt_, "ConvTabToSpcWhenLoading" + "=" + iif( ::lConvTabToSpcWhenLoading, "YES", "NO" ) ) - aadd( txt_, "AutoIndent" + "=" + iif( ::lAutoIndent , "YES", "NO" ) ) - aadd( txt_, "SmartIndent" + "=" + iif( ::lSmartIndent , "YES", "NO" ) ) - aadd( txt_, "TabToSpcInEdits" + "=" + iif( ::lTabToSpcInEdits , "YES", "NO" ) ) - aadd( txt_, "TabSpaces" + "=" + hb_ntos( ::oIde:nTabSpaces ) ) - aadd( txt_, "IndentSpaces" + "=" + hb_ntos( ::nIndentSpaces ) ) - aadd( txt_, "TmpBkpPrd" + "=" + hb_ntos( ::nTmpBkpPrd ) ) - aadd( txt_, "BkpPath" + "=" + ::cBkpPath ) - aadd( txt_, "BkpSuffix" + "=" + ::cBkpSuffix ) - aadd( txt_, "CodeListWithArgs" + "=" + iif( ::lCompletionWithArgs , "YES", "NO" ) ) - aadd( txt_, "CompletionWithArgs" + "=" + iif( ::lCompleteArgumented , "YES", "NO" ) ) - aadd( txt_, "EditsMdi" + "=" + iif( ::lEditsMdi , "YES", "NO" ) ) - // - aadd( txt_, "ShowEditsLeftToolbar" + "=" + iif( ::lShowEditsLeftToolbar , "YES", "NO" ) ) - aadd( txt_, "ShowEditsTopToolbar" + "=" + iif( ::lShowEditsTopToolbar , "YES", "NO" ) ) - aadd( txt_, "DocksTabShape" + "=" + hb_ntos( ::nDocksTabShape ) ) - aadd( txt_, "DocksLeftTabPos" + "=" + hb_ntos( ::nDocksLeftTabPos ) ) - aadd( txt_, "DocksTopTabPos" + "=" + hb_ntos( ::nDocksTopTabPos ) ) - aadd( txt_, "DocksBottomTabPos" + "=" + hb_ntos( ::nDocksRightTabPos ) ) - aadd( txt_, "DocksRightTabPos" + "=" + hb_ntos( ::nDocksBottomTabPos ) ) - aadd( txt_, "ShowHideDocks" + "=" + iif( ::lShowHideDocks , "YES", "NO" ) ) - aadd( txt_, "ChangeLog" + "=" + ::cChangeLog ) - aadd( txt_, "UserChangeLog" + "=" + ::cUserChangeLog ) - aadd( txt_, "VSSExe" + "=" + ::cVSSExe ) - aadd( txt_, "VSSDatabase" + "=" + ::cVSSDatabase ) - aadd( txt_, "EditsViewStyle" + "=" + hb_ntos( ::nEditsViewStyle ) ) - aadd( txt_, "ToolbarSize" + "=" + ::cToolbarSize ) - aadd( txt_, "PanelsTabPosition" + "=" + hb_ntos( ::nPanelsTabPosition ) ) - aadd( txt_, "PanelsTabShape" + "=" + hb_ntos( ::nPanelsTabShape ) ) - - aadd( txt_, "ISClosing" + "=" + iif( ::lISClosing , "YES", "NO" ) ) - aadd( txt_, "ISIf" + "=" + iif( ::lISIf , "YES", "NO" ) ) - aadd( txt_, "ISFor" + "=" + iif( ::lISFor , "YES", "NO" ) ) - aadd( txt_, "ISDoWhile" + "=" + iif( ::lISDoWhile , "YES", "NO" ) ) - aadd( txt_, "ISDoCase" + "=" + iif( ::lISDoCase , "YES", "NO" ) ) - aadd( txt_, "ISSwitch" + "=" + iif( ::lISSwitch , "YES", "NO" ) ) - aadd( txt_, "ISElse" + "=" + iif( ::lISElse , "YES", "NO" ) ) - aadd( txt_, "ISCaseOWise" + "=" + iif( ::lISCaseOWise , "YES", "NO" ) ) - aadd( txt_, "ISSwitchOWise" + "=" + iif( ::lISSwitchOWise , "YES", "NO" ) ) - aadd( txt_, "ISExitSameLine" + "=" + iif( ::lISExitSameLine , "YES", "NO" ) ) - aadd( txt_, "ISCaseCases" + "=" + hb_ntos( ::nISCaseCases ) ) - aadd( txt_, "ISSwitchCases" + "=" + hb_ntos( ::nISSwitchCases ) ) - aadd( txt_, "ISClosingP" + "=" + iif( ::lISClosingP , "YES", "NO" ) ) - aadd( txt_, "ISSpaceP" + "=" + iif( ::lISSpaceP , "YES", "NO" ) ) - aadd( txt_, "ISCodeBlock" + "=" + iif( ::lISCodeBlock , "YES", "NO" ) ) - aadd( txt_, "ISOperator" + "=" + iif( ::lISOperator , "YES", "NO" ) ) - aadd( txt_, "ISAlignAssign" + "=" + iif( ::lISAlignAssign , "YES", "NO" ) ) - AAdd( txt_, "ISFmtLine" + "=" + iif( ::lISFmtLine , "YES", "NO" ) ) - AAdd( txt_, "ISEmbrace" + "=" + iif( ::lISEmbrace , "YES", "NO" ) ) - AAdd( txt_, "ISLocal" + "=" + iif( ::lISLocal , "YES", "NO" ) ) - AAdd( txt_, "ISReturn" + "=" + iif( ::lISReturn , "YES", "NO" ) ) - AAdd( txt_, "ISSeparator" + "=" + iif( ::lISSeparator , "YES", "NO" ) ) - AAdd( txt_, "ISDocs" + "=" + iif( ::lISDocs , "YES", "NO" ) ) - AAdd( txt_, "ISFunction" + "=" + iif( ::lISFunction , "YES", "NO" ) ) - AAdd( txt_, "ISClass" + "=" + iif( ::lISClass , "YES", "NO" ) ) - AAdd( txt_, "ISData" + "=" + ::cISData ) - AAdd( txt_, "ISMethods" + "=" + ::cISMethods ) - AAdd( txt_, "ISFormat" + "=" + ::cISFormat ) - // - AAdd( txt_, "SelToolbar" + "=" + iif( ::lSelToolbar , "YES", "NO" ) ) - AAdd( txt_, "TabRemoveExt" + "=" + iif( ::lTabRemoveExt , "YES", "NO" ) ) - AAdd( txt_, "TabAddClose" + "=" + iif( ::lTabAddClose , "YES", "NO" ) ) - - aadd( txt_, "" ) - aadd( txt_, "[PROJECTS]" ) - aadd( txt_, " " ) - FOR n := 1 TO Len( ::oIde:aProjects ) - aadd( txt_, "project_" + hb_ntos( n ) + "=" + hbide_pathNormalized( ::oIde:aProjects[ n, 2 ], .f. ) ) - NEXT - aadd( txt_, " " ) - - /*------------------- FILES -------------------*/ - aadd( txt_, "[FILES]" ) - aadd( txt_, " " ) - qLst := ::oStackedWidget:oWidget:subWindowList( QMdiArea_StackingOrder ) /* The order tabs are visible */ - nn := 0 - FOR k := 1 TO qLst:count() -#if 0 - cView := qLst:at( k - 1 ):objectName() - ascan( ::oDK:aViewsInfo, {|e_| e_[ 1 ] == cView } ) /* Not successful, QMdiArea has no method to determine the tab order */ -#else - j := k -#endif - ::oIde:lClosing := .t. - ::oDK:setView( ::oIde:aViews[ j ]:oWidget:objectName() ) - - nTabs := ::oIde:qTabWidget:count() - FOR n := 1 TO nTabs - pTab := ::oIde:qTabWidget:widget( n - 1 ) - nTab := ascan( ::oIde:aTabs, {|e_| hbqt_IsEqual( e_[ 1 ]:oWidget, pTab ) } ) - oEdit := ::oIde:aTabs[ nTab, TAB_OEDITOR ] - - IF !Empty( oEdit:sourceFile ) .AND. !( ".ppo" == lower( oEdit:cExt ) ) - IF oEdit:lLoaded - aadd( txt_, "file_" + hb_ntos( ++nn ) + "=" + hbide_getEditInfoAsString( oEdit ) ) - - ELSE - aadd( txt_, "file_" + hb_ntos( ++nn ) + "=" + hbide_pathNormalized( oEdit:sourceFile, .f. ) + "," + ; - hb_ntos( oEdit:nPos ) + "," + ; - hb_ntos( oEdit:nHPos ) + "," + ; - hb_ntos( oEdit:nVPos ) + "," + ; - oEdit:cTheme + "," + ; - oEdit:cView + "," + ; - hbide_nArray2string( oEdit:oEdit:aBookMarks ) + "," ) - ENDIF - ENDIF - NEXT - NEXT - aadd( txt_, " " ) - - aadd( txt_, "[FIND]" ) - aadd( txt_, " " ) - FOR n := 1 TO Len( ::aFind ) - aadd( txt_, "find_" + hb_ntos( n ) + "=" + ::aFind[ n ] ) - NEXT - aadd( txt_, " " ) - - aadd( txt_, "[REPLACE]" ) - aadd( txt_, " " ) - FOR n := 1 TO Len( ::aReplace ) - aadd( txt_, "replace_" + hb_ntos( n ) + "=" + ::aReplace[ n ] ) - NEXT - aadd( txt_, " " ) - - aadd( txt_, "[RECENTFILES]" ) - aadd( txt_, " " ) - FOR n := 1 TO Len( ::aRecentFiles ) - aadd( txt_, "recentfile_" + hb_ntos( n ) + "=" + hbide_pathNormalized( ::aRecentFiles[ n ], .f. ) ) - NEXT - aadd( txt_, " " ) - - aadd( txt_, "[RECENTPROJECTS]" ) - aadd( txt_, " " ) - FOR n := 1 TO Len( ::aRecentProjects ) - aadd( txt_, "recentproject_" + hb_ntos( n ) + "=" + hbide_pathNormalized( ::aRecentProjects[ n ], .f. ) ) - NEXT - aadd( txt_, " " ) - - aadd( txt_, "[FOLDERS]" ) - aadd( txt_, " " ) - FOR n := 1 TO Len( ::aFolders ) - aadd( txt_, "folder_" + hb_ntos( n ) + "=" + hbide_pathNormalized( ::aFolders[ n ], .f. ) ) - NEXT - aadd( txt_, " " ) - - aadd( txt_, "[VIEWS]" ) - aadd( txt_, " " ) - FOR EACH s IN ::oDK:getEditorPanelsInfo() - aadd( txt_, "view_" + hb_ntos( s:__enumIndex() ) + "=" + s ) - NEXT - aadd( txt_, " " ) - - aadd( txt_, "[TAGGEDPROJECTS]" ) - aadd( txt_, " " ) - FOR n := 1 TO Len( ::aTaggedProjects ) - aadd( txt_, "taggedproject_" + hb_ntos( n ) + "=" + ::aTaggedProjects[ n ] ) - NEXT - aadd( txt_, " " ) - - aadd( txt_, "[TOOLS]" ) - aadd( txt_, " " ) - FOR EACH a_ IN ::aTools - aadd( txt_, "tool_" + hb_ntos( a_:__enumIndex() ) + "=" + hbide_array2string( a_, "," ) ) - NEXT - aadd( txt_, " " ) - - aadd( txt_, "[USERTOOLBARS]" ) - aadd( txt_, " " ) - FOR n := 1 TO Len( ::aUserToolbars ) - aadd( txt_, "usertoolbars_" + hb_ntos( n ) + "=" + hbide_array2string( ::aUserToolbars[ n ], "," ) ) - NEXT - aadd( txt_, " " ) - - aadd( txt_, "[KEYWORDS]" ) - aadd( txt_, " " ) - FOR n := 1 TO Len( ::aKeywords ) - aadd( txt_, "keyword_" + hb_ntos( n ) + "=" + hbide_array2string( ::aKeywords[ n ], "~" ) ) - NEXT - aadd( txt_, " " ) - - aadd( txt_, "[DBUPANELS]" ) - aadd( txt_, " " ) - FOR EACH s IN ::oBM:getPanelNames() - aadd( txt_, "dbupanel_" + hb_ntos( s:__enumIndex() ) + "=" + s ) - NEXT - aadd( txt_, " " ) - - aadd( txt_, "[DBUPANELSINFO]" ) - aadd( txt_, " " ) - FOR EACH s IN ::oBM:getPanelsInfo() - aadd( txt_, "dbupanelinfo_" + hb_ntos( s:__enumIndex() ) + "=" + s ) - NEXT - aadd( txt_, " " ) - - aadd( txt_, "[APPTHEMES]" ) - aadd( txt_, " " ) - FOR EACH s IN ::aAppThemes - aadd( txt_, "apptheme_" + hb_ntos( s:__enumIndex() ) + "=" + s ) - NEXT - aadd( txt_, " " ) - - aadd( txt_, "[DICTIONARIES]" ) - aadd( txt_, " " ) - FOR EACH s IN ::oIde:aUserDict // aDictionaries - aadd( txt_, "dictionary_" + hb_ntos( s:__enumIndex() ) + "=" + s:toString() ) - NEXT - aadd( txt_, " " ) - - aadd( txt_, "[LOGTITLE]" ) - aadd( txt_, " " ) - FOR n := 1 TO Len( ::aLogTitle ) - aadd( txt_, "logtitle_" + hb_ntos( n ) + "=" + ::aLogTitle[ n ] ) - NEXT - aadd( txt_, " " ) - - aadd( txt_, "[LOGSOURCES]" ) - aadd( txt_, " " ) - FOR n := 1 TO Len( ::aLogSources ) - aadd( txt_, "logsources_" + hb_ntos( n ) + "=" + ::aLogSources[ n ] ) - NEXT - aadd( txt_, " " ) - - aadd( txt_, "[General]" ) - aadd( txt_, " " ) - - hbide_createTarget( ::oIde:cProjIni, txt_ ) - - RETURN hbide_saveSettings( ::oIde ) - -/*----------------------------------------------------------------------*/ - -METHOD IdeINI:load( cHbideIni ) - LOCAL aElem, s, nPart, cKey, cVal, a_ - - ::oIde:cProjIni := hbide_getIniPath( cHbideIni ) - - IF hb_FileExists( ::oIde:cProjIni ) - aElem := hbide_readSource( ::oIde:cProjIni ) - - FOR EACH s IN aElem - - s := alltrim( s ) - IF !empty( s ) - SWITCH Upper( s ) - - CASE "[GENERAL]" - nPart := "INI_GENERAL" - EXIT - CASE "[HBIDE]" - nPart := "INI_HBIDE" - EXIT - CASE "[PROJECTS]" - nPart := "INI_PROJECTS" - EXIT - CASE "[FILES]" - nPart := "INI_FILES" - EXIT - CASE "[FIND]" - nPart := "INI_FIND" - EXIT - CASE "[REPLACE]" - nPart := "INI_REPLACE" - EXIT - CASE "[RECENTFILES]" - nPart := "INI_RECENTFILES" - EXIT - CASE "[RECENTPROJECTS]" - nPart := "INI_RECENTPROJECTS" - EXIT - CASE "[FOLDERS]" - nPart := "INI_FOLDERS" - EXIT - CASE "[VIEWS]" - nPart := "INI_VIEWS" - EXIT - CASE "[TAGGEDPROJECTS]" - nPart := "INI_TAGGEDPROJECTS" - EXIT - CASE "[TOOLS]" - nPart := "INI_TOOLS" - EXIT - CASE "[USERTOOLBARS]" - nPart := "INI_USERTOOLBARS" - EXIT - CASE "[KEYWORDS]" - nPart := "INI_KEYWORDS" - EXIT - CASE "[DBUPANELS]" - nPart := "INI_DBUPANELS" - EXIT - CASE "[DBUPANELSINFO]" - nPart := "INI_DBUPANELSINFO" - EXIT - CASE "[APPTHEMES]" - nPart := "INI_APPTHEMES" - EXIT - CASE "[DICTIONARIES]" - nPart := "INI_DICTIONARIES" - EXIT - CASE "[LOGTITLE]" - nPart := "INI_LOGTITLE" - EXIT - CASE "[LOGSOURCES]" - nPart := "INI_LOGSOURCES" - EXIT - OTHERWISE - DO CASE - CASE Left( s, 1 ) $ '#[' - * Nothing todo! - - CASE nPart == "INI_GENERAL" - * Qt Setttings, do nothing. - - CASE nPart == "INI_HBIDE" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - - SWITCH cKey - - CASE "MainWindowGeometry" ; ::cMainWindowGeometry := cVal ; EXIT - CASE "GotoDialogGeometry" ; ::cGotoDialogGeometry := cVal ; EXIT - CASE "FindDialogGeometry" ; ::cFindDialogGeometry := cVal ; EXIT - CASE "ToolsDialogGeometry" ; ::cToolsDialogGeometry := cVal ; EXIT - CASE "SetupDialogGeometry" ; ::cSetupDialogGeometry := cVal ; EXIT - CASE "ShortcutsDialogGeometry" ; ::cShortcutsDialogGeometry := cVal ; EXIT - CASE "DbStructDialogGeometry" ; ::cDbStructDialogGeometry := cVal ; EXIT - CASE "TablesDialogGeometry" ; ::cTablesDialogGeometry := cVal ; EXIT - CASE "ChangelogDialogGeometry" ; ::cChangelogDialogGeometry := cVal ; EXIT - CASE "StatsDialogGeometry" ; ::cStatsDialogGeometry := cVal ; EXIT - // - CASE "CurrentLineHighlightMode" ; ::oIde:lCurrentLineHighlightEnabled := !( cVal == "NO" ); EXIT - CASE "LineNumbersDisplayMode" ; ::oIde:lLineNumbersVisible := !( cVal == "NO" ); EXIT - CASE "HorzRulerDisplayMode" ; ::oIde:lHorzRulerVisible := !( cVal == "NO" ); EXIT - // - CASE "RecentTabIndex" ; ::cRecentTabIndex := cVal ; EXIT - // - CASE "IdeTheme" ; ::cIdeTheme := cVal ; EXIT - CASE "IdeAnimated" ; ::cIdeAnimated := cVal ; EXIT - // - CASE "PathHrbRoot" ; ::cPathHrbRoot := cVal ; EXIT - CASE "PathMk2" ; ::cPathHbMk2 := cVal ; EXIT - CASE "PathResources" ; ::cPathResources := cVal ; EXIT - CASE "PathTemp" ; ::cPathTemp := cVal ; EXIT - CASE "PathEnv" ; ::cPathEnv := cVal ; EXIT - CASE "PathShortcuts" ; ::cPathShortcuts := cVal ; EXIT - CASE "PathSnippets" ; ::cPathSnippets := cVal ; EXIT - CASE "PathThemes" ; ::cPathThemes := cVal ; EXIT - // - CASE "CurrentProject" ; ::oIde:cWrkProject := cVal ; EXIT - CASE "CurrentTheme" ; ::oIde:cWrkTheme := cVal ; EXIT - CASE "CurrentCodec" ; ::oIde:cWrkCodec := cVal ; EXIT - CASE "CurrentEnvironment" ; ::oIde:cWrkEnvironment := cVal ; EXIT - CASE "CurrentFind" ; ::oIde:cWrkFind := cVal ; EXIT - CASE "CurrentFolderFind" ; ::oIde:cWrkFolderFind := cVal ; EXIT - CASE "CurrentReplace" ; ::oIde:cWrkReplace := cVal ; EXIT - CASE "CurrentView" ; ::oIde:cWrkView := cVal ; EXIT - CASE "TextFileExtensions" ; ::cTextFileExtensions := cVal ; EXIT - // - CASE "FontName" ; ::cFontName := cVal ; EXIT - CASE "PointSize" ; ::nPointSize := val( cVal ); EXIT - CASE "LineEndingMode" ; ::cLineEndingMode := cVal ; EXIT - // - CASE "TrimTrailingBlanks" ; ::lTrimTrailingBlanks := !( cVal == "NO" ) ; EXIT - CASE "SaveSourceWhenComp" ; ::lSaveSourceWhenComp := !( cVal == "NO" ) ; EXIT - CASE "SupressHbKWordsToUpper" ; ::lSupressHbKWordsToUpper := !( cVal == "NO" ) ; EXIT - CASE "ReturnAsBeginKeyword" ; ::lReturnAsBeginKeyword := !( cVal == "NO" ) ; EXIT - CASE "ConvTabToSpcWhenLoading" ; ::lConvTabToSpcWhenLoading := !( cVal == "NO" ) ; EXIT - CASE "AutoIndent" ; ::lAutoIndent := !( cVal == "NO" ) ; EXIT - CASE "SmartIndent" ; ::lSmartIndent := !( cVal == "NO" ) ; EXIT - CASE "TabToSpcInEdits" ; ::lTabToSpcInEdits := !( cVal == "NO" ) ; EXIT - CASE "TabSpaces" ; ::oIde:nTabSpaces := val( cVal ) ; EXIT - CASE "IndentSpaces" ; ::nIndentSpaces := val( cVal ) ; EXIT - CASE "TmpBkpPrd" ; ::nTmpBkpPrd := val( cVal ) ; EXIT - CASE "BkpPath" ; ::cBkpPath := cVal ; EXIT - CASE "BkpSuffix" ; ::cBkpSuffix := cVal ; EXIT - CASE "CodeListWithArgs" ; ::lCompletionWithArgs := !( cVal == "NO" ) ; EXIT - CASE "CompletionWithArgs" ; ::lCompleteArgumented := !( cVal == "NO" ) ; EXIT - CASE "EditsMdi" ; ::lEditsMdi := !( cVal == "NO" ) ; EXIT - - CASE "ShowEditsLeftToolbar" ; ::lShowEditsLeftToolbar := !( cVal == "NO" ) ; EXIT - CASE "ShowEditsTopToolbar" ; ::lShowEditsTopToolbar := !( cVal == "NO" ) ; EXIT - CASE "DocksTabShape" ; ::nDocksTabShape := val( cVal ) ; EXIT - CASE "DocksLeftTabPos" ; ::nDocksLeftTabPos := val( cVal ) ; EXIT - CASE "DocksTopTabPos" ; ::nDocksTopTabPos := val( cVal ) ; EXIT - CASE "DocksBottomTabPos" ; ::nDocksRightTabPos := val( cVal ) ; EXIT - CASE "DocksRightTabPos" ; ::nDocksBottomTabPos := val( cVal ) ; EXIT - CASE "ShowHideDocks" ; ::lShowHideDocks := !( cVal == "NO" ) ; EXIT - CASE "ChangeLog" ; ::cChangeLog := cVal ; EXIT - CASE "UserChangeLog" ; ::cUserChangeLog := cVal ; EXIT - // - CASE "VSSExe" ; ::cVSSExe := cVal ; EXIT - CASE "VSSDatabase" ; ::cVSSDatabase := cVal ; EXIT - CASE "EditsViewStyle" ; ::nEditsViewStyle := val( cVal ); EXIT - CASE "ToolbarSize" ; ::cToolbarSize := cVal ; EXIT - CASE "PanelsTabPosition" ; ::nPanelsTabPosition := val( cVal ); EXIT - CASE "PanelsTabShape" ; ::nPanelsTabShape := val( cVal ); EXIT - - CASE "ISClosing" ; ::lISClosing := !( cVal == "NO" ) ; EXIT - CASE "ISIf" ; ::lISIf := !( cVal == "NO" ) ; EXIT - CASE "ISFor" ; ::lISFor := !( cVal == "NO" ) ; EXIT - CASE "ISDoWhile" ; ::lISDoWhile := !( cVal == "NO" ) ; EXIT - CASE "ISDoCase" ; ::lISDoCase := !( cVal == "NO" ) ; EXIT - CASE "ISSwitch" ; ::lISSwitch := !( cVal == "NO" ) ; EXIT - CASE "ISElse" ; ::lISElse := !( cVal == "NO" ) ; EXIT - CASE "ISCaseOWise" ; ::lISCaseOWise := !( cVal == "NO" ) ; EXIT - CASE "ISSwitchOWise" ; ::lISSwitchOWise := !( cVal == "NO" ) ; EXIT - CASE "ISExitSameLine" ; ::lISExitSameLine := !( cVal == "NO" ) ; EXIT - CASE "ISCaseCases" ; ::nISCaseCases := val( cVal ) ; EXIT - CASE "ISSwitchCases" ; ::nISSwitchCases := val( cVal ) ; EXIT - CASE "ISClosingP" ; ::lISClosingP := !( cVal == "NO" ) ; EXIT - CASE "ISSpaceP" ; ::lISSpaceP := !( cVal == "NO" ) ; EXIT - CASE "ISCodeBlock" ; ::lISCodeBlock := !( cVal == "NO" ) ; EXIT - CASE "ISOperator" ; ::lISOperator := !( cVal == "NO" ) ; EXIT - CASE "ISAlignAssign" ; ::lISAlignAssign := !( cVal == "NO" ) ; EXIT - CASE "ISFmtLine" ; ::lISFmtLine := !( cVal == "NO" ) ; EXIT - CASE "ISEmbrace" ; ::lISEmbrace := !( cVal == "NO" ) ; EXIT - CASE "ISLocal" ; ::lISLocal := !( cVal == "NO" ) ; EXIT - CASE "ISReturn" ; ::lISReturn := !( cVal == "NO" ) ; EXIT - CASE "ISSeparator" ; ::lISSeparator := !( cVal == "NO" ) ; EXIT - CASE "ISDocs" ; ::lISDocs := !( cVal == "NO" ) ; EXIT - CASE "ISFunction" ; ::lISFunction := !( cVal == "NO" ) ; EXIT - CASE "ISClass" ; ::lISClass := !( cVal == "NO" ) ; EXIT - CASE "ISData" ; ::cISData := cVal ; EXIT - CASE "ISMethods" ; ::cISMethods := cVal ; EXIT - CASE "ISFormat" ; ::cISFormat := cVal ; EXIT - // - CASE "SelToolbar" ; ::lSelToolbar := !( cVal == "NO" ) ; EXIT - CASE "TabRemoveExt" ; ::lTabRemoveExt := !( cVal == "NO" ) ; EXIT - CASE "TabAddClose" ; ::lTabAddClose := !( cVal == "NO" ) ; EXIT - - ENDSWITCH - ENDIF - - CASE nPart == "INI_PROJECTS" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - aadd( ::aProjFiles, cVal ) - ENDIF - - CASE nPart == "INI_FILES" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - a_:= hbide_parseSourceComponents( cVal ) - IF !Empty( a_[ 1 ] ) - aadd( ::aFiles, a_ ) - ENDIF - ENDIF - - CASE nPart == "INI_FIND" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - aadd( ::aFind, cVal ) - ENDIF - - CASE nPart == "INI_REPLACE" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - aadd( ::aReplace, cVal ) - ENDIF - - CASE nPart == "INI_RECENTPROJECTS" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - IF Len( ::aRecentProjects ) < 25 - cVal := hbide_pathNormalized( cVal, .f. ) - IF aScan( ::aRecentProjects, {|e| hb_FileMatch( hbide_pathNormalized( e, .f. ), cVal ) } ) == 0 - AAdd( ::aRecentProjects, cVal ) - ENDIF - ENDIF - ENDIF - - CASE nPart == "INI_RECENTFILES" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - IF Len( ::aRecentFiles ) < 25 - cVal := hbide_pathNormalized( cVal, .f. ) - IF aScan( ::aRecentFiles, {|e| hb_FileMatch( hbide_pathNormalized( e, .f. ), cVal ) } ) == 0 - AAdd( ::aRecentFiles, cVal ) - ENDIF - ENDIF - ENDIF - - CASE nPart == "INI_FOLDERS" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - aadd( ::aFolders, cVal ) - ENDIF - - CASE nPart == "INI_VIEWS" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - aadd( ::aViews, cVal ) - ENDIF - - CASE nPart == "INI_TAGGEDPROJECTS" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - aadd(::aTaggedProjects, cVal ) - ENDIF - - CASE nPart == "INI_TOOLS" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - aadd( ::aTools, hbide_parseToolComponents( cVal ) ) - ENDIF - - CASE nPart == "INI_USERTOOLBARS" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - aadd( ::aUserToolbars, hbide_parseUserToolbarComponents( cVal ) ) - ENDIF - - CASE nPart == "INI_KEYWORDS" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - aadd( ::aKeywords, hbide_parseKeywordsComponents( cVal ) ) - ENDIF - - CASE nPart == "INI_DBUPANELS" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - aadd( ::aDbuPanelNames, cVal ) - ENDIF - - CASE nPart == "INI_DBUPANELSINFO" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - aadd( ::aDbuPanelsInfo, cVal ) - ENDIF - - CASE nPart == "INI_APPTHEMES" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - aadd( ::aAppThemes, cVal ) - ENDIF - - CASE nPart == "INI_DICTIONARIES" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - aadd( ::aDictionaries, cVal ) - ENDIF - - CASE nPart == "INI_LOGTITLE" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - aadd( ::aLogTitle, cVal ) - ENDIF - - CASE nPart == "INI_LOGSOURCES" - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - aadd( ::aLogSources, cVal ) - ENDIF - - ENDCASE - EXIT - ENDSWITCH - ENDIF - NEXT - ENDIF - - ::lEditsMdi := .t. /* Enabled Permanently - scheduled to be removed by next commit */ - - RETURN Self - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_saveSettings( oIde, cFile ) - LOCAL cPath - - DEFAULT cFile TO "settings.ide" - - hb_fNameSplit( oIde:cProjIni, @cPath ) - hbqt_QMainWindow_saveSettings( cPath + cFile, "hbidesettings", oIde:oDlg:oWidget ) - - RETURN nil - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_restSettings( oIde, cFile ) - LOCAL cPath - - DEFAULT cFile TO "settings.ide" - - hb_fNameSplit( oIde:cProjIni, @cPath ) - hbqt_QMainWindow_restSettings( cPath + cFile, "hbidesettings", oIde:oDlg:oWidget ) - - RETURN nil - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_getEditInfoAsString( oEdit ) - LOCAL qHScr := oEdit:qEdit:horizontalScrollBar() - LOCAL qVScr := oEdit:qEdit:verticalScrollBar() - LOCAL qCursor := oEdit:qEdit:textCursor() - LOCAL cBMarks := hbide_nArray2string( oEdit:oEdit:aBookMarks ) - - RETURN hbide_pathNormalized( oEdit:sourceFile, .f. ) + "," + ; - hb_ntos( qCursor:position() ) + "," + ; - hb_ntos( qHScr:value() ) + "," + ; - hb_ntos( qVScr:value() ) + "," + ; - oEdit:cTheme + "," + ; - oEdit:cView + "," + ; - cBMarks + "," - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_getIniPath( cHbideIni ) - LOCAL cPath, cIni - - IF empty( cHbideIni ) - IF ! hb_FileExists( cIni := hb_dirBase() + "hbide.ini" ) - #if defined( __PLATFORM__WINDOWS ) - cPath := hb_DirSepAdd( GetEnv( "APPDATA" ) ) + "hbide\" - #elif defined( __PLATFORM__UNIX ) - cPath := hb_DirSepAdd( GetEnv( "HOME" ) ) + ".hbide/" - #elif defined( __PLATFORM__OS2 ) - cPath := hb_DirSepAdd( GetEnv( "HOME" ) ) + ".hbide/" - #endif - IF ! hb_dirExists( cPath ) - hb_DirCreate( cPath ) - ENDIF - cIni := cPath + "hbide.ini" - ENDIF - ELSE - cIni := cHbideIni - ENDIF - - RETURN cIni - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_loadSkltns( oIde, cPathSkltns ) - LOCAL s, n, cSkltn, cCode - - IF empty( cPathSkltns ) - cPathSkltns := oIde:oINI:getSnippetsFile() - ENDIF - - IF hb_fileExists( cPathSkltns ) - s := hb_memoread( cPathSkltns ) - - DO WHILE .t. - IF ( n := at( "<", s ) ) == 0 - EXIT - ENDIF - s := substr( s, n + 1 ) - IF ( n := at( ">", s ) ) == 0 - EXIT - ENDIF - cSkltn := substr( s, 1, n - 1 ) - s := substr( s, n + 1 ) - IF ( n := at( "", s ) ) > 0 - cCode := substr( s, 1, n - 1 ) - cCode := alltrim( cCode ) - IF left( cCode, 1 ) $ chr( 13 ) + chr( 10 ) - cCode := substr( cCode, 2 ) - ENDIF - IF left( cCode, 1 ) $ chr( 13 ) + chr( 10 ) - cCode := substr( cCode, 2 ) - ENDIF - IF right( cCode, 1 ) $ chr( 13 ) + chr( 10 ) - cCode := substr( cCode, 1, Len( cCode ) - 1 ) - ENDIF - IF right( cCode, 1 ) $ chr( 13 ) + chr( 10 ) - cCode := substr( cCode, 1, Len( cCode ) - 1 ) - ENDIF - - aadd( oIde:aSkltns, { cSkltn, cCode } ) - s := substr( s, n + Len( "" ) ) - ELSE - EXIT - ENDIF - ENDDO - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_saveSkltns( oIde ) - LOCAL a_, txt_:= {} - - FOR EACH a_ IN oIde:aSkltns - aadd( txt_, "<" + a_[ 1 ] + ">" ) - aeval( hbide_memoToArray( a_[ 2 ] ), {|e| aadd( txt_, e ) } ) - aadd( txt_, "" ) - aadd( txt_, "" ) - NEXT - - RETURN hbide_createTarget( oIde:oINI:getSnippetsFile(), txt_ ) - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_loadShortcuts( oIde, cFileShortcuts ) - LOCAL a_:= {} - - IF empty( cFileShortcuts ) - cFileShortcuts := oIde:oINI:getShortcutsFile() - ENDIF - IF hb_fileExists( cFileShortcuts ) - a_:= hb_deSerialize( hb_memoread( cFileShortcuts ) ) - ENDIF - - RETURN a_ - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_saveShortcuts( oIde, a_, cFileShortcuts ) - - IF empty( cFileShortcuts ) - cFileShortcuts := oIde:oINI:getShortcutsFile() - ENDIF - hb_memowrit( cFileShortcuts, hb_serialize( a_ ) ) - - RETURN hb_fileExists( cFileShortcuts ) - -/*------------------------------------------------------------------------*/ - -FUNCTION hbide_loadHarbourProtos( oIde ) - - HB_SYMBOL_UNUSED( oIde ) - - RETURN NIL //hbide_harbourProtos() - -/*------------------------------------------------------------------------*/ - -FUNCTION hbide_saveHarbourProtos( oIde, aProto ) - LOCAL cFile := hb_dirBase() + "idehbprotos.prg" - LOCAL txt_ := {} - LOCAL cTxt := "" - - HB_SYMBOL_UNUSED( oIde ) - - aadd( txt_, "/*" ) - aadd( txt_, " * $Id$" ) - aadd( txt_, " */" ) - aadd( txt_, "" ) - aadd( txt_, "/* -------------------------------------------------------------------- */" ) - aadd( txt_, "/* WARNING: Automatically generated source file. DO NOT EDIT! */" ) - aadd( txt_, "/* Instead, edit corresponding .qth file, */" ) - aadd( txt_, "/* or the generator tool itself, and run regenarate. */" ) - aadd( txt_, "/* -------------------------------------------------------------------- */" ) - aadd( txt_, " " ) - - aadd( txt_, "" ) - aadd( txt_, "FUNCTION hbide_harbourProtos()" ) - aadd( txt_, " LOCAL aProto := {}" ) - aadd( txt_, "" ) - aeval( aProto, {|e| aadd( txt_, ' aadd( aProto, "' + strtran( e, '"', "'" ) + '" )' ) } ) - aadd( txt_, "" ) - aadd( txt_, " RETURN aProto" ) - aadd( txt_, "" ) - - - aeval( txt_, {|e| cTxt += e + chr( 13 ) + chr( 10 ) } ) - - hb_memoWrit( cFile, cTxt ) - - RETURN hb_fileExists( cFile ) - -/*----------------------------------------------------------------------*/ -// -// Class IdeSetup -// -/*----------------------------------------------------------------------*/ - -CLASS IdeSetup INHERIT IdeObject - - DATA oINI - DATA qOrgPalette - DATA aItems INIT {} - DATA aTree INIT { "General", "Intelli-sense", "Selections", "Miscellaneous", "Paths", "Variables", "Dictionaries", "Themes", "Formatting", "VSS" } - DATA aStyles INIT { "cleanlooks", "windows", "windowsxp", ; - "windowsvista", "cde", "motif", "plastique", "macintosh" } - DATA aKeyItems INIT {} - - DATA nCurThemeSlot INIT 0 - DATA aHilighters INIT {} - DATA aTBSize INIT { "8","9","10","11","12","13","14","15","16","17","18","19","20" } - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() - METHOD show() - METHOD execEvent( nEvent, p, p1 ) - METHOD buildTree() - METHOD setSystemStyle( cStyle ) - METHOD setBaseColor() - METHOD connectSlots() - METHOD disConnectSlots() - METHOD setIcons() - METHOD populate() - METHOD retrieve() - METHOD eol() - METHOD buildKeywords() - METHOD populateKeyTableRow( nRow, cTxtCol1, cTxtCol2 ) - METHOD populateThemeColors( nSlot, aRGB ) - METHOD pullThemeColors( nSlot ) - METHOD fetchThemeColorsString( nSlot ) - METHOD pushThemeColors( nTheme ) - METHOD pushThemesData() - METHOD getThemeData( nTheme ) - METHOD viewIt( cFileName, lSaveAs, lSave, lReadOnly, lApplyHiliter ) - METHOD uiDictionaries() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeSetup:new( oIde ) - ::oIde := oIde - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSetup:create( oIde ) - DEFAULT oIde TO ::oIde - ::oIde := oIde - ::oINI := ::oIde:oINI - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSetup:destroy() - - IF !empty( ::oUI ) - ::disConnectSlots() - ::oUI:destroy() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSetup:eol() - RETURN iif( ::oINI:cLineEndingMode == "CRLF", hb_eol(), iif( ::oINI:cLineEndingMode == "CR", chr( 13 ), ; - iif( ::oINI:cLineEndingMode == "LF", chr( 10 ), hb_eol() ) ) ) -/*----------------------------------------------------------------------*/ - -METHOD IdeSetup:setIcons() - - ::oUI:buttonAddTextExt : setIcon( QIcon( hbide_image( "dc_plus" ) ) ) - ::oUI:buttonDelTextExt : setIcon( QIcon( hbide_image( "dc_delete" ) ) ) - - ::oUI:buttonKeyAdd : setIcon( QIcon( hbide_image( "dc_plus" ) ) ) - ::oUI:buttonKeyDel : setIcon( QIcon( hbide_image( "dc_delete" ) ) ) - ::oUI:buttonKeyUp : setIcon( QIcon( hbide_image( "dc_up" ) ) ) - ::oUI:buttonKeyDown : setIcon( QIcon( hbide_image( "dc_down" ) ) ) - - /* Paths */ - ::oUI:buttonPathHrbRoot : setIcon( QIcon( hbide_image( "open" ) ) ) - ::oUI:buttonPathHbmk2 : setIcon( QIcon( hbide_image( "open" ) ) ) - ::oUI:buttonPathEnv : setIcon( QIcon( hbide_image( "open" ) ) ) - ::oUI:buttonPathResources : setIcon( QIcon( hbide_image( "open" ) ) ) - ::oUI:buttonPathTemp : setIcon( QIcon( hbide_image( "open" ) ) ) - ::oUI:buttonPathShortcuts : setIcon( QIcon( hbide_image( "open" ) ) ) - ::oUI:buttonPathSnippets : setIcon( QIcon( hbide_image( "open" ) ) ) - ::oUI:buttonPathThemes : setIcon( QIcon( hbide_image( "open" ) ) ) - - ::oUI:buttonViewIni : setIcon( QIcon( hbide_image( "file-open" ) ) ) - ::oUI:buttonViewEnv : setIcon( QIcon( hbide_image( "file-open" ) ) ) - ::oUI:buttonViewSnippets : setIcon( QIcon( hbide_image( "file-open" ) ) ) - ::oUI:buttonViewThemes : setIcon( QIcon( hbide_image( "file-open" ) ) ) - - ::oUI:buttonSelFont : setIcon( QIcon( hbide_image( "font" ) ) ) - - ::oUI:buttonThmAdd : setIcon( QIcon( hbide_image( "dc_plus" ) ) ) - ::oUI:buttonThmDel : setIcon( QIcon( hbide_image( "dc_delete" ) ) ) - ::oUI:buttonThmApp : setIcon( QIcon( hbide_image( "copy" ) ) ) - ::oUI:buttonThmSav : setIcon( QIcon( hbide_image( "save" ) ) ) - - /* VSS */ - ::oUI:buttonVSSExe : setIcon( QIcon( hbide_image( "open" ) ) ) - ::oUI:buttonVSSDatabase : setIcon( QIcon( hbide_image( "open" ) ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSetup:disConnectSlots() - - ::oUI:buttonAddTextExt :disconnect( "clicked()" ) - ::oUI:buttonDelTextExt :disconnect( "clicked()" ) - - ::oUI:buttonKeyAdd :disconnect( "clicked()" ) - ::oUI:buttonKeyDel :disconnect( "clicked()" ) - ::oUI:buttonKeyUp :disconnect( "clicked()" ) - ::oUI:buttonKeyDown :disconnect( "clicked()" ) - - ::oUI:tableVar :disconnect( "itemActivated(QTableWidgetItem*)" ) - - ::oUI:buttonSelFont :disconnect( "clicked()" ) - ::oUI:buttonClose :disConnect( "clicked()" ) - ::oUI:buttonOK :disConnect( "clicked()" ) - ::oUI:buttonCancel :disConnect( "clicked()" ) - ::oUI:treeWidget :disConnect( "itemSelectionChanged()" ) - ::oUI:comboStyle :disconnect( "currentIndexChanged(int)" ) - - ::oUI:checkAnimated :disconnect( "stateChanged(int)" ) - - ::oUI:checkHilightLine :disconnect( "stateChanged(int)" ) - ::oUI:checkHorzRuler :disconnect( "stateChanged(int)" ) - ::oUI:checkLineNumbers :disconnect( "stateChanged(int)" ) - ::oUI:checkShowLeftToolbar:disconnect( "stateChanged(int)" ) - ::oUI:checkShowTopToolbar :disconnect( "stateChanged(int)" ) - - ::oUI:sliderRed :disconnect( "valueChanged(int)" ) - ::oUI:sliderGreen :disconnect( "valueChanged(int)" ) - ::oUI:sliderBlue :disconnect( "valueChanged(int)" ) - - ::oUI:radioSec1 :disconnect( "clicked()" ) - ::oUI:radioSec2 :disconnect( "clicked()" ) - ::oUI:radioSec3 :disconnect( "clicked()" ) - ::oUI:radioSec4 :disconnect( "clicked()" ) - ::oUI:radioSec5 :disconnect( "clicked()" ) - - ::oUI:buttonThmAdd :disconnect( "clicked()" ) - ::oUI:buttonThmDel :disconnect( "clicked()" ) - ::oUI:buttonThmApp :disconnect( "clicked()" ) - ::oUI:buttonThmSav :disconnect( "clicked()" ) - - ::oUI:listThemes :disconnect( "currentRowChanged(int)" ) - - ::oUI:buttonPathHrbRoot :disconnect( "clicked()" ) - ::oUI:buttonPathHbmk2 :disconnect( "clicked()" ) - ::oUI:buttonPathEnv :disconnect( "clicked()" ) - ::oUI:buttonPathResources :disconnect( "clicked()" ) - ::oUI:buttonPathTemp :disconnect( "clicked()" ) - ::oUI:buttonPathShortcuts :disconnect( "clicked()" ) - ::oUI:buttonPathSnippets :disconnect( "clicked()" ) - ::oUI:buttonPathThemes :disconnect( "clicked()" ) - - ::oUI:buttonViewIni :disconnect( "clicked()" ) - ::oUI:buttonViewEnv :disconnect( "clicked()" ) - ::oUI:buttonViewSnippets :disconnect( "clicked()" ) - ::oUI:buttonViewThemes :disconnect( "clicked()" ) - - ::oUI:comboTabsShape :disconnect( "currentIndexChanged(int)" ) - ::oUI:comboLeftTabPos :disconnect( "currentIndexChanged(int)" ) - ::oUI:comboTopTabPos :disconnect( "currentIndexChanged(int)" ) - ::oUI:comboRightTabPos :disconnect( "currentIndexChanged(int)" ) - ::oUI:comboBottomTabPos :disconnect( "currentIndexChanged(int)" ) - ::oUI:comboTBSize :disconnect( "currentIndexChanged(int)" ) - - ::oUI:buttonVSSExe :disconnect( "clicked()" ) - ::oUI:buttonVSSDatabase :disconnect( "clicked()" ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSetup:connectSlots() - - ::oUI:buttonAddTextExt :connect( "clicked()" , {| | ::execEvent( __buttonAddTextext_clicked__ ) } ) - ::oUI:buttonDelTextExt :connect( "clicked()" , {| | ::execEvent( __buttonDelTextext_clicked__ ) } ) - - ::oUI:buttonKeyAdd :connect( "clicked()" , {| | ::execEvent( __buttonKeyAdd_clicked__ ) } ) - ::oUI:buttonKeyDel :connect( "clicked()" , {| | ::execEvent( __buttonKeyDel_clicked__ ) } ) - ::oUI:buttonKeyUp :connect( "clicked()" , {| | ::execEvent( __buttonKeyUp_clicked__ ) } ) - ::oUI:buttonKeyDown :connect( "clicked()" , {| | ::execEvent( __buttonKeyDown_clicked__ ) } ) - - ::oUI:buttonSelFont :connect( "clicked()" , {| | ::execEvent( __buttonSelFont_clicked__ ) } ) - ::oUI:buttonClose :connect( "clicked()" , {| | ::execEvent( __buttonClose_clicked__ ) } ) - ::oUI:buttonOk :connect( "clicked()" , {| | ::execEvent( __buttonOk_clicked__ ) } ) - ::oUI:buttonCancel :connect( "clicked()" , {| | ::execEvent( __buttonCancel_clicked__ ) } ) - ::oUI:treeWidget :connect( "itemSelectionChanged()" , {| | ::execEvent( __treeWidget_itemSelectionChanged__ ) } ) - ::oUI:comboStyle :connect( "currentIndexChanged(int)", {|i| ::execEvent( __comboStyle_currentIndexChanged__ , i ) } ) - - ::oUI:checkAnimated :connect( "stateChanged(int)" , {|i| ::execEvent( __checkAnimated_stateChanged__ , i ) } ) - - ::oUI:checkHilightLine :connect( "stateChanged(int)" , {|i| ::execEvent( __checkHilightLine_stateChanged__ , i ) } ) - ::oUI:checkHorzRuler :connect( "stateChanged(int)" , {|i| ::execEvent( __checkHorzRuler_stateChanged__ , i ) } ) - ::oUI:checkLineNumbers :connect( "stateChanged(int)" , {|i| ::execEvent( __checkLineNumbers_stateChanged__ , i ) } ) - ::oUI:checkShowLeftToolbar:connect( "stateChanged(int)" , {|i| ::execEvent( __checkShowLeftToolbar_stateChanged__ , i ) } ) - ::oUI:checkShowTopToolbar :connect( "stateChanged(int)" , {|i| ::execEvent( __checkShowTopToolbar_stateChanged__ , i ) } ) - ::oUI:checkShowSelToolbar :connect( "stateChanged(int)" , {|i| ::execEvent( __checkShowSelToolbar_stateChanged__ , i ) } ) - - ::oUI:sliderRed :connect( "valueChanged(int)" , {|i| ::execEvent( __sliderValue_changed__ , i, "R" ) } ) - ::oUI:sliderGreen :connect( "valueChanged(int)" , {|i| ::execEvent( __sliderValue_changed__ , i, "G" ) } ) - ::oUI:sliderBlue :connect( "valueChanged(int)" , {|i| ::execEvent( __sliderValue_changed__ , i, "B" ) } ) - - ::oUI:radioSec1 :connect( "clicked()" , {| | ::execEvent( __radioSection_clicked__ , 1 ) } ) - ::oUI:radioSec2 :connect( "clicked()" , {| | ::execEvent( __radioSection_clicked__ , 2 ) } ) - ::oUI:radioSec3 :connect( "clicked()" , {| | ::execEvent( __radioSection_clicked__ , 3 ) } ) - ::oUI:radioSec4 :connect( "clicked()" , {| | ::execEvent( __radioSection_clicked__ , 4 ) } ) - ::oUI:radioSec5 :connect( "clicked()" , {| | ::execEvent( __radioSection_clicked__ , 5 ) } ) - - ::oUI:buttonThmAdd :connect( "clicked()" , {| | ::execEvent( __buttonThmAdd_clicked__ ) } ) - ::oUI:buttonThmDel :connect( "clicked()" , {| | ::execEvent( __buttonThmDel_clicked__ ) } ) - ::oUI:buttonThmApp :connect( "clicked()" , {| | ::execEvent( __buttonThmApp_clicked__ ) } ) - ::oUI:buttonThmSav :connect( "clicked()" , {| | ::execEvent( __buttonThmSav_clicked__ ) } ) - - ::oUI:listThemes :connect( "currentRowChanged(int)" , {|i| ::execEvent( __listThemes_currentRowChanged__ , i ) } ) - - ::oUI:buttonPathHrbRoot :connect( "clicked()" , {| | ::execEvent( __buttonHrbRoot_clicked__ ) } ) - ::oUI:buttonPathHbmk2 :connect( "clicked()" , {| | ::execEvent( __buttonHbmk2_clicked__ ) } ) - ::oUI:buttonPathEnv :connect( "clicked()" , {| | ::execEvent( __buttonEnv_clicked__ ) } ) - ::oUI:buttonPathResources :connect( "clicked()" , {| | ::execEvent( __buttonResources_clicked__ ) } ) - ::oUI:buttonPathTemp :connect( "clicked()" , {| | ::execEvent( __buttonTemp_clicked__ ) } ) - ::oUI:buttonPathShortcuts :connect( "clicked()" , {| | ::execEvent( __buttonShortcuts_clicked__ ) } ) - ::oUI:buttonPathSnippets :connect( "clicked()" , {| | ::execEvent( __buttonSnippets_clicked__ ) } ) - ::oUI:buttonPathThemes :connect( "clicked()" , {| | ::execEvent( __buttonThemes_clicked__ ) } ) - - ::oUI:buttonViewIni :connect( "clicked()" , {| | ::execEvent( __buttonViewIni_clicked__ ) } ) - ::oUI:buttonViewEnv :connect( "clicked()" , {| | ::execEvent( __buttonViewEnv_clicked__ ) } ) - ::oUI:buttonViewSnippets :connect( "clicked()" , {| | ::execEvent( __buttonViewSnippets_clicked__ ) } ) - ::oUI:buttonViewThemes :connect( "clicked()" , {| | ::execEvent( __buttonViewThemes_clicked__ ) } ) - - ::oUI:comboTabsShape :connect( "currentIndexChanged(int)", {|i| ::execEvent( __comboTabsShape_currentIndexChanged__ , i ) } ) - ::oUI:comboLeftTabPos :connect( "currentIndexChanged(int)", {|i| ::execEvent( __comboLeftTabPos_currentIndexChanged__ , i ) } ) - ::oUI:comboTopTabPos :connect( "currentIndexChanged(int)", {|i| ::execEvent( __comboTopTabPos_currentIndexChanged__ , i ) } ) - ::oUI:comboRightTabPos :connect( "currentIndexChanged(int)", {|i| ::execEvent( __comboRightTabPos_currentIndexChanged__ , i ) } ) - ::oUI:comboBottomTabPos :connect( "currentIndexChanged(int)", {|i| ::execEvent( __comboBottomTabPos_currentIndexChanged__, i ) } ) - ::oUI:comboTBSize :connect( "currentIndexChanged(int)", {|i| ::execEvent( __comboTBSize_currentIndexChanged__ , i ) } ) - - ::oUI:buttonVSSExe :connect( "clicked()" , {| | ::execEvent( __buttonVSSExe_clicked__ ) } ) - ::oUI:buttonVSSDatabase :connect( "clicked()" , {| | ::execEvent( __buttonVSSDatabase_clicked__ ) } ) - - ::oUI:tableVar :connect( "itemActivated(QTableWidgetItem*)", {|p| ::execEvent( __tableVar_keyPress__, p ) } ) - - /* User Dictionaries */ - ::oUI:listDictNames :connect( "currentRowChanged(int)" , {|i| ::execEvent( __listDictNames_currentRowChanged__ , i ) } ) -// ::oUI:listDictNames :connect( "currentItemChanged(QListWidgetItem*,QListWidgetItem*)" , {|p,p1| ::execEvent( __listDictNames_currentRowChanged__ , p,p1 ) } ) - ::oUI:btnDictColorText :connect( "clicked()" , {| | ::execEvent( __btnDictColorText_clicked__ ) } ) - ::oUI:btnDictColorBack :connect( "clicked()" , {| | ::execEvent( __btnDictColorBack_clicked__ ) } ) - ::oUI:buttonDictAdd :connect( "clicked()" , {| | ::execEvent( __buttonDictAdd_clicked__ ) } ) - ::oUI:buttonDictDelete :connect( "clicked()" , {| | ::execEvent( __buttonDictDelete_clicked__ ) } ) - - ::oUI:checkDictActive :connect( "stateChanged(int)" , {|i| ::execEvent( __checkDictActive_stateChanged__ , i ) } ) - ::oUI:checkDictToPrg :connect( "stateChanged(int)" , {|i| ::execEvent( __checkDictToPrg_stateChanged__ , i ) } ) - ::oUI:checkDictToC :connect( "stateChanged(int)" , {|i| ::execEvent( __checkDictToC_stateChanged__ , i ) } ) - ::oUI:checkDictToCpp :connect( "stateChanged(int)" , {|i| ::execEvent( __checkDictToCpp_stateChanged__ , i ) } ) - ::oUI:checkDictToCh :connect( "stateChanged(int)" , {|i| ::execEvent( __checkDictToCh_stateChanged__ , i ) } ) - ::oUI:checkDictToH :connect( "stateChanged(int)" , {|i| ::execEvent( __checkDictToH_stateChanged__ , i ) } ) - ::oUI:checkDictToIni :connect( "stateChanged(int)" , {|i| ::execEvent( __checkDictToIni_stateChanged__ , i ) } ) - ::oUI:checkDictToTxt :connect( "stateChanged(int)" , {|i| ::execEvent( __checkDictToTxt_stateChanged__ , i ) } ) - ::oUI:checkDictToHbp :connect( "stateChanged(int)" , {|i| ::execEvent( __checkDictToHbp_stateChanged__ , i ) } ) - ::oUI:checkDictActive :connect( "stateChanged(int)" , {|i| ::execEvent( __checkDictActive_stateChanged__ , i ) } ) - ::oUI:checkDictCaseSens :connect( "stateChanged(int)" , {|i| ::execEvent( __checkDictCaseSens_stateChanged__ , i ) } ) - ::oUI:checkDictBold :connect( "stateChanged(int)" , {|i| ::execEvent( __checkDictBold_stateChanged__ , i ) } ) - ::oUI:checkDictItalic :connect( "stateChanged(int)" , {|i| ::execEvent( __checkDictItalic_stateChanged__ , i ) } ) - ::oUI:checkDictULine :connect( "stateChanged(int)" , {|i| ::execEvent( __checkDictULine_stateChanged__ , i ) } ) - ::oUI:checkDictColorText :connect( "stateChanged(int)" , {|i| ::execEvent( __checkDictColorText_stateChanged__, i ) } ) - ::oUI:checkDictColorBack :connect( "stateChanged(int)" , {|i| ::execEvent( __checkDictColorBack_stateChanged__, i ) } ) - ::oUI:radioDictConvNone :connect( "clicked()" , {| | ::execEvent( __radioDictConvNone_clicked__ ) } ) - ::oUI:radioDictToLower :connect( "clicked()" , {| | ::execEvent( __radioDictToLower_clicked__ ) } ) - ::oUI:radioDictToUpper :connect( "clicked()" , {| | ::execEvent( __radioDictToUpper_clicked__ ) } ) - ::oUI:radioDictAsIn :connect( "clicked()" , {| | ::execEvent( __radioDictAsIn_clicked__ ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSetup:retrieve() - LOCAL a_, i, s, qItm - - ::oINI:cLineEndingMode := iif( ::oUI:radioLineEndCRLF : isChecked(), "CRLF", ; - iif( ::oUI:radioLineEndCR : isChecked(), "CR" , ; - iif( ::oUI:radioLineEndLF : isChecked(), "LF" , ; - iif( ::oUI:radioLineEndOS : isChecked(), "OS" , ; - iif( ::oUI:radioLineEndAuto : isChecked(), "AUTO", "CRLF" ) ) ) ) ) - - ::oINI:lTrimTrailingBlanks := ::oUI:checkTrimTrailingBlanks : isChecked() - ::oINI:lSaveSourceWhenComp := ::oUI:checkSaveSourceWhenComp : isChecked() - ::oINI:lSupressHbKWordsToUpper := ::oUI:checkSupressHbKWordsToUpper : isChecked() - ::oINI:lReturnAsBeginKeyword := ::oUI:checkReturnAsBeginKeyword : isChecked() - ::oINI:lConvTabToSpcWhenLoading := ::oUI:checkConvTabToSpcWhenLoading : isChecked() - ::oINI:lTabToSpcInEdits := ::oUI:checkTabToSpcInEdits : isChecked() - ::oINI:lAutoIndent := ::oUI:checkAutoIndent : isChecked() - ::oINI:lSmartIndent := ::oUI:checkSmartIndent : isChecked() - ::oIde:nTabSpaces := val( ::oUI:editTabSpaces : text() ) - ::oINI:nIndentSpaces := val( ::oUI:editIndentSpaces : text() ) - ::oINI:lEditsMdi := ::oUI:checkEditsMdi : isChecked() - ::oINI:lSelToolbar := ::oUI:checkShowSelToolbar : isChecked() - - ::oINI:aKeywords := {} - FOR EACH a_ IN ::aKeyItems - aadd( ::oINI:aKeywords, { alltrim( ::aKeyItems[ a_:__enumIndex(),1 ]:text() ), alltrim( ::aKeyItems[ a_:__enumIndex(),2 ]:text() ) } ) - NEXT - - s := "" - FOR i := 1 TO ::oUI:listTextExt:count() - qItm := ::oUI:listTextExt:item( i - 1 ) - s += "." + qItm:text() + "," - NEXT - s := substr( s, 1, Len( s ) - 1 ) - ::oINI:cTextFileExtensions := s - - ::oINI:nTmpBkpPrd := val( ::oUI:editTmpBkpPrd : text() ) - ::oINI:cBkpPath := ::oUI:editBkpPath : text() - ::oINI:cBkpSuffix := ::oUI:editBkpSuffix : text() - ::oINI:lCompletionWithArgs := ::oUI:checkListlWithArgs : isChecked() - ::oINI:lCompleteArgumented := ::oUI:checkCmplInclArgs : isChecked() - - /* Paths */ - ::oINI:cPathHrbRoot := ::oUI:editPathHrbRoot : text() - ::oINI:cPathHbMk2 := ::oUI:editPathHbMk2 : text() - ::oINI:cPathResources := ::oUI:editPathResources : text() - ::oINI:cPathTemp := ::oUI:editPathTemp : text() - ::oINI:cPathEnv := ::oUI:editPathEnv : text() - ::oINI:cPathShortcuts := ::oUI:editPathShortcuts : text() - ::oINI:cPathSnippets := ::oUI:editPathSnippets : text() - ::oINI:cPathThemes := ::oUI:editPathThemes : text() - - /* Intelli-sense */ - ::oINI:lISClosing := ::oUI:grpISClosing : isChecked() - ::oINI:lISIf := ::oUI:chkISIf : isChecked() - ::oINI:lISFor := ::oUI:chkISFor : isChecked() - ::oINI:lISDoWhile := ::oUI:chkISDoWhile : isChecked() - ::oINI:lISDoCase := ::oUI:chkISDoCase : isChecked() - ::oINI:lISSwitch := ::oUI:chkISSwitch : isChecked() - ::oINI:lISElse := ::oUI:chkISElse : isChecked() - ::oINI:lISCaseOWise := ::oUI:chkISCaseOWise : isChecked() - ::oINI:lISSwitchOWise := ::oUI:chkISSwitchOWise : isChecked() - ::oINI:lISExitSameLine := ::oUI:chkISExitSameLine : isChecked() - ::oINI:nISCaseCases := ::oUI:spinISCaseCases : value() - ::oINI:nISSwitchCases := ::oUI:spinISSwitchCases : value() - ::oINI:lISClosingP := ::oUI:chkISClosingP : isChecked() - ::oINI:lISSpaceP := ::oUI:chkISSpaceP : isChecked() - ::oINI:lISCodeBlock := ::oUI:chkISCodeBlock : isChecked() - ::oINI:lISOperator := ::oUI:chkISOperator : isChecked() - ::oINI:lISAlignAssign := ::oUI:chkISAlignAssign : isChecked() - ::oINI:lISFmtLine := ::oUI:chkISFmtLine : isChecked() - ::oINI:lISEmbrace := ::oUI:ChkISEmbrace : isChecked() - ::oINI:lISLocal := ::oUI:chkISLocal : isChecked() - ::oINI:lISReturn := ::oUI:chkISReturn : isChecked() - ::oINI:lISSeparator := ::oUI:chkISSeparator : isChecked() - ::oINI:lISDocs := ::oUI:chkISDocs : isChecked() - ::oINI:lISFunction := ::oUI:grpISFunction : isChecked() - ::oINI:lISClass := ::oUI:grpISClass : isChecked() - ::oINI:cISData := ::oUI:comboISData : currentText() - ::oINI:cISMethods := ::oUI:comboISMethods : currentText() - ::oINI:cISFormat := ::oUI:comboISFormat : currentText() - ::oINI:lTabRemoveExt := ::oUI:chkTabRemoveExt : isChecked() - ::oINI:lTabAddClose := ::oUI:chkTabAddClose : isChecked() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSetup:populate() - LOCAL s, a_ - - ::disconnectSlots() - - ::oUI:checkAnimated : setChecked( val( ::oINI:cIdeAnimated ) > 0 ) - - ::oUI:checkHilightLine : setChecked( ::oIde:lCurrentLineHighlightEnabled ) - ::oUI:checkHorzRuler : setChecked( ::oIde:lHorzRulerVisible ) - ::oUI:checkLineNumbers : setChecked( ::oIde:lLineNumbersVisible ) - ::oUI:checkShowLeftToolbar : setChecked( ::oINI:lShowEditsLeftToolbar ) - ::oUI:checkShowTopToolbar : setChecked( ::oINI:lShowEditsTopToolbar ) - - /* Line Ending Mode */ - s := ::oINI:cLineEndingMode - // - ::oUI:radioLineEndCRLF : setChecked( s == "CRLF" .OR. empty( s ) ) - ::oUI:radioLineEndCR : setChecked( s == "CR" ) - ::oUI:radioLineEndLF : setChecked( s == "LF" ) - ::oUI:radioLineEndOS : setChecked( s == "OS" ) - ::oUI:radioLineEndAuto : setChecked( s == "AUTO" ) - - ::oUI:checkTrimTrailingBlanks : setChecked( ::oINI:lTrimTrailingBlanks ) - ::oUI:checkSaveSourceWhenComp : setChecked( ::oINI:lSaveSourceWhenComp ) - ::oUI:checkSupressHbKWordsToUpper : setChecked( ::oINI:lSupressHbKWordsToUpper ) - ::oUI:checkReturnAsBeginKeyword : setChecked( ::oINI:lReturnAsBeginKeyword ) - ::oUI:checkConvTabToSpcWhenLoading : setChecked( ::oINI:lConvTabToSpcWhenLoading ) - ::oUI:checkTabToSpcInEdits : setChecked( ::oINI:lTabToSpcInEdits ) - ::oUI:checkAutoIndent : setChecked( ::oINI:lAutoIndent ) - ::oUI:checkSmartIndent : setChecked( ::oINI:lSmartIndent ) - ::oUI:editTabSpaces : setText( hb_ntos( ::oIde:nTabSpaces ) ) - ::oUI:editIndentSpaces : setText( hb_ntos( ::oINI:nIndentSpaces ) ) - ::oUI:checkEditsMdi : setChecked( ::oINI:lEditsMdi ) - ::oUI:checkShowSelToolbar : setChecked( ::oINI:lSelToolbar ) - - /* Paths */ - ::oUI:editPathIni : setText( ::oIde:cProjIni ) - // - ::oUI:editPathHrbRoot : setText( ::oINI:cPathHrbRoot ) - ::oUI:editPathHbMk2 : setText( ::oINI:cPathHbMk2 ) - ::oUI:editPathResources : setText( ::oINI:cPathResources ) - ::oUI:editPathTemp : setText( ::oINI:cPathTemp ) - ::oUI:editPathEnv : setText( ::oINI:cPathEnv ) - ::oUI:editPathShortcuts : setText( ::oINI:cPathShortcuts ) - ::oUI:editPathSnippets : setText( ::oINI:cPathSnippets ) - ::oUI:editPathThemes : setText( ::oINI:cPathThemes ) - - /* Variables */ - ::oUI:tableVar:clearContents() - ::aKeyItems := {} - FOR EACH a_ IN ::oINI:aKeywords - ::populateKeyTableRow( a_:__enumIndex(), a_[ 1 ], a_[ 2 ] ) - NEXT - - ::oUI:listTextExt:clear() - a_:= hb_atokens( ::oINI:cTextFileExtensions, ",." ) - FOR EACH s IN a_ - ::oUI:listTextExt:addItem( strtran( s, "." ) ) - NEXT - ::oUI:listTextExt:setSortingEnabled( .t. ) - ::oUI:listTextExt:sortItems() - - ::oUI:editTmpBkpPrd : setText( hb_ntos( ::oINI:nTmpBkpPrd ) ) - ::oUI:editBkpPath : setText( ::oINI:cBkpPath ) - ::oUI:editBkpSuffix : setText( ::oINI:cBkpSuffix ) - - /* Selections - Code Completion */ - ::oUI:checkListlWithArgs : setChecked( ::oINI:lCompletionWithArgs ) - ::oUI:checkCmplInclArgs : setChecked( ::oINI:lCompleteArgumented ) - - /* Themes */ - ::oUI:sliderRed:setMinimum( 0 ) - ::oUI:sliderRed:setMaximum( 255 ) - - ::oUI:sliderGreen:setMinimum( 0 ) - ::oUI:sliderGreen:setMaximum( 255 ) - - ::oUI:sliderBlue:setMinimum( 0 ) - ::oUI:sliderBlue:setMaximum( 255 ) - - ::oUI:editSec1:setText( "0" ) - ::oUI:editSec5:setText( "1" ) - - ::oUI:editSec1:setReadOnly( .t. ) - ::oUI:editSec5:setReadOnly( .t. ) - - /* Dock Widgets */ - ::oUI:comboTabsShape : setCurrentIndex( ::oINI:nDocksTabShape ) - ::oUI:comboLeftTabPos : setCurrentIndex( ::oINI:nDocksLeftTabPos ) - ::oUI:comboTopTabPos : setCurrentIndex( ::oINI:nDocksTopTabPos ) - ::oUI:comboRightTabPos : setCurrentIndex( ::oINI:nDocksRightTabPos ) - ::oUI:comboBottomTabPos : setCurrentIndex( ::oINI:nDocksBottomTabPos ) - - ::oUI:editVSSExe : setText( ::oINI:cVSSExe ) - ::oUI:editVSSDatabase : setText( ::oINI:cVSSDatabase ) - - /* Intelli-sense */ - ::oUI:grpISClosing : setChecked( ::oINI:lISClosing ) - ::oUI:chkISIf : setChecked( ::oINI:lISIf ) - ::oUI:chkISFor : setChecked( ::oINI:lISFor ) - ::oUI:chkISDoWhile : setChecked( ::oINI:lISDoWhile ) - ::oUI:chkISDoCase : setChecked( ::oINI:lISDoCase ) - ::oUI:chkISSwitch : setChecked( ::oINI:lISSwitch ) - ::oUI:chkISElse : setChecked( ::oINI:lISElse ) - ::oUI:chkISCaseOWise : setChecked( ::oINI:lISCaseOWise ) - ::oUI:chkISSwitchOWise : setChecked( ::oINI:lISSwitchOWise ) - ::oUI:chkISExitSameLine : setChecked( ::oINI:lISExitSameLine ) - ::oUI:spinISCaseCases : setValue( ::oINI:nISCaseCases ) - ::oUI:spinISSwitchCases : setValue( ::oINI:nISSwitchCases ) - ::oUI:chkISClosingP : setChecked( ::oINI:lISClosingP ) - ::oUI:chkISSpaceP : setChecked( ::oINI:lISSpaceP ) - ::oUI:chkISCodeBlock : setChecked( ::oINI:lISCodeBlock ) - ::oUI:chkISOperator : setChecked( ::oINI:lISOperator ) - ::oUI:chkISAlignAssign : setChecked( ::oINI:lISAlignAssign ) - ::oUI:chkISFmtLine : setChecked( ::oINI:lISFmtLine ) - ::oUI:chkISEmbrace : setChecked( ::oINI:lISEmbrace ) - ::oUI:chkISLocal : setChecked( ::oINI:lISLocal ) - ::oUI:chkISReturn : setChecked( ::oINI:lISReturn ) - ::oUI:chkISSeparator : setChecked( ::oINI:lISSeparator ) - ::oUI:chkISDocs : setChecked( ::oINI:lISDocs ) - ::oUI:grpISFunction : setChecked( ::oINI:lISFunction ) - ::oUI:grpISClass : setChecked( ::oINI:lISClass ) - ::oUI:comboISData : setCurrentIndex( iif( ::oINI:cISData == "VAR", 0, 1 ) ) - ::oUI:comboISMethods : setCurrentIndex( AScan( { "new", "new;create", "new;create;destroy" }, {|e| e == ::oINI:cISMethods } ) - 1 ) - ::oUI:comboISFormat : setCurrentIndex( iif( ::oINI:cISFormat == "class:method", 0, 1 ) ) - - ::oUI:chkTabRemoveExt : setChecked( ::oINI:lTabRemoveExt ) - ::oUI:chkTabAddClose : setChecked( ::oINI:lTabAddClose ) - - ::connectSlots() - - ::pushThemesData() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSetup:show() - LOCAL cStyle - - IF empty( ::oUI ) - - ::oUI := hbide_getUI( "setup", ::oDlg:oWidget ) - - ::oUI:setWindowFlags( Qt_Sheet ) - - ::oUI:setMaximumWidth( ::oUI:width() ) - ::oUI:setMinimumWidth( ::oUI:width() ) - ::oUI:setMaximumHeight( ::oUI:height() ) - ::oUI:setMinimumHeight( ::oUI:height() ) - - ::buildTree() - ::buildKeywords() - - /* Dock Widgets */ - ::oUI:comboTabsShape:addItem( "Rounded" ) - ::oUI:comboTabsShape:addItem( "Triangular" ) - - ::oUI:comboLeftTabPos:addItem( "Top" ) - ::oUI:comboLeftTabPos:addItem( "Bottom" ) - ::oUI:comboLeftTabPos:addItem( "Left" ) - ::oUI:comboLeftTabPos:addItem( "Right" ) - - ::oUI:comboTopTabPos:addItem( "Top" ) - ::oUI:comboTopTabPos:addItem( "Bottom" ) - ::oUI:comboTopTabPos:addItem( "Left" ) - ::oUI:comboTopTabPos:addItem( "Right" ) - - ::oUI:comboBottomTabPos:addItem( "Top" ) - ::oUI:comboBottomTabPos:addItem( "Bottom" ) - ::oUI:comboBottomTabPos:addItem( "Left" ) - ::oUI:comboBottomTabPos:addItem( "Right" ) - - ::oUI:comboRightTabPos:addItem( "Top" ) - ::oUI:comboRightTabPos:addItem( "Bottom" ) - ::oUI:comboRightTabPos:addItem( "Left" ) - ::oUI:comboRightTabPos:addItem( "Right" ) - - ::oUI:editFontName:setText( ::oINI:cFontName ) - ::oUI:editPointSize:setText( hb_ntos( ::oINI:nPointSize ) ) - - FOR EACH cStyle IN ::aStyles - ::oUI:comboStyle:addItem( cStyle ) - NEXT - ::oUI:comboStyle:setCurrentIndex( ascan( ::aStyles, {|e| e == ::oINI:cIdeTheme } ) - 1 ) - - aeval( ::aTBSize, {|e| ::oUI:comboTBSize:addItem( e ) } ) - ::oUI:comboTBSize:setCurrentIndex( ascan( ::aTBSize, {|e| e == ::oINI:cToolbarSize } ) - 1 ) - - /* Intelli-sense */ - ::oUI:comboISData : addItem( "VAR" ) - ::oUI:comboISData : addItem( "DATA" ) - - ::oUI:comboISMethods : addItem( "new" ) - ::oUI:comboISMethods : addItem( "new;create" ) - ::oUI:comboISMethods : addItem( "new;create;destroy" ) - - ::oUI:comboISFormat : addItem( "class:method" ) - ::oUI:comboISFormat : addItem( "method CLASS class" ) - - ::setIcons() - ::connectSlots() - - ::oUI:stackedWidget:setCurrentIndex( 8 ) - ::oUI:stackedWidget:setCurrentIndex( 0 ) - ::oUI:hide() - ENDIF - - ::populate() - ::oIde:setPosByIniEx( ::oUI:oWidget, ::oINI:cSetupDialogGeometry ) - ::oUI:show() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSetup:execEvent( nEvent, p, p1 ) - LOCAL qItem, nIndex, qFontDlg, qFont, nOK, nRow, b_, q0, q1, nCol, w0, w1 - LOCAL aRGB, nSlot, qFrame, aGrad, n, cCSS, cTheme, cPath, cBuffer, cFile, oDict - - HB_SYMBOL_UNUSED( p1 ) - - IF ::lQuitting - RETURN Self - ENDIF - - SWITCH nEvent - - CASE __buttonSelFont_clicked__ - qFont := QFont( ::oINI:cFontName, ::oINI:nPointSize ) - qFont:setFixedPitch( .t. ) - qFontDlg := QFontDialog( ::oUI:oWidget ) - qFontDlg:setCurrentFont( qFont ) - nOK := qFontDlg:exec() - IF nOK == 1 - qFont := qFontDlg:currentFont() - - ::oUI:editFontName:setText( qFont:family() ) - ::oUI:editPointSize:setText( hb_ntos( qFont:pointSize() ) ) - - ::oINI:cFontName := ::oUI:editFontName:text() - ::oINI:nPointSize := val( ::oUI:editPointSize:text() ) - ENDIF - EXIT - - CASE __checkAnimated_stateChanged__ - ::oDK:animateComponents( iif( p == 0, 0, 1 ) ) - EXIT - - CASE __checkHilightLine_stateChanged__ - ::oEM:toggleCurrentLineHighlightMode() - EXIT - - CASE __checkHorzRuler_stateChanged__ - ::oEM:toggleHorzRuler() - EXIT - - CASE __checkLineNumbers_stateChanged__ - ::oEM:toggleLineNumbers() - EXIT - - CASE __checkShowSelToolbar_stateChanged__ - ::oINI:lSelToolbar := ( p != 0 ) - EXIT - - CASE __checkShowTopToolbar_stateChanged__ - IF ::oAC:qMdiToolbar:oWidget:isVisible() - ::oAC:qMdiToolbar:hide() - ELSE - ::oAC:qMdiToolbar:show() - ENDIF - ::oINI:lShowEditsTopToolbar := ::oAC:qMdiToolbar:oWidget:isVisible() - EXIT - - CASE __checkShowLeftToolbar_stateChanged__ - IF ::oAC:qMdiToolbarL:oWidget:isVisible() - ::oAC:qMdiToolbarL:hide() - ELSE - ::oAC:qMdiToolbarL:show() - ENDIF - ::oINI:lShowEditsLeftToolbar := ::oAC:qMdiToolbarL:oWidget:isVisible() - EXIT - - CASE __treeWidget_itemSelectionChanged__ - qItem := ::oUI:treeWidget:currentItem() - IF ( nIndex := ascan( ::aTree, qItem:text( 0 ) ) ) > 0 - ::oUI:stackedWidget:setCurrentIndex( nIndex - 1 ) - IF nIndex == 7 /* Dictionaries */ - ::uiDictionaries() - ENDIF - ENDIF - EXIT - - CASE __buttonCancel_clicked__ - ::oIde:oINI:cSetupDialogGeometry := hbide_posAndSize( ::oUI:oWidget ) - ::oUI:done( 0 ) - EXIT - - CASE __buttonClose_clicked__ - CASE __buttonOk_clicked__ - ::oIde:oINI:cSetupDialogGeometry := hbide_posAndSize( ::oUI:oWidget ) - ::retrieve() - ::oUI:done( 1 ) - EXIT - - CASE __comboStyle_currentIndexChanged__ - IF ( nIndex := ::oUI:comboStyle:currentIndex() ) > -1 - ::oINI:cIdeTheme := ::aStyles[ nIndex + 1 ] - ::setSystemStyle( ::aStyles[ nIndex + 1 ] ) - ENDIF - EXIT - - CASE __buttonAddTextext_clicked__ - q0 := hbide_fetchAString( ::oUI:oWidget, "", "Text File Extension" ) - IF !empty( q0 ) - ::oUI:listTextExt:addItem( lower( strtran( q0, "." ) ) ) - ENDIF - EXIT - - CASE __buttonDelTextext_clicked__ - IF ::oUI:listTextExt:currentRow() >= 0 - ::oUI:listTextExt:takeItem( ::oUI:listTextExt:currentRow() ) - ENDIF - EXIT - - CASE __buttonKeyAdd_clicked__ - ::populateKeyTableRow( Len( ::aKeyItems ) + 1, "", "" ) - ::oUI:tableVar:setCurrentItem( ::aKeyItems[ Len( ::aKeyItems ), 1 ] ) - EXIT - - CASE __buttonKeyDel_clicked__ - IF ( nRow := ::oUI:tableVar:currentRow() ) >= 0 - ::oUI:tableVar:removeRow( nRow ) - hb_adel( ::aKeyItems , nRow + 1, .t. ) - hb_adel( ::oINI:aKeywords, nRow + 1, .t. ) - ENDIF - EXIT - - CASE __buttonKeyUp_clicked__ - IF ( nRow := ::oUI:tableVar:currentRow() ) >= 1 - nCol := ::oUI:tableVar:currentColumn() - - b_ := ::aKeyItems[ nRow+1 ] - q0 := QTableWidgetItem(); q0:setText( b_[ 1 ]:text() ) - q1 := QTableWidgetItem(); q1:setText( b_[ 2 ]:text() ) - - b_ := ::aKeyItems[ nRow+0 ] - w0 := QTableWidgetItem(); w0:setText( b_[ 1 ]:text() ) - w1 := QTableWidgetItem(); w1:setText( b_[ 2 ]:text() ) - - ::oUI:tableVar:setItem( nRow-0, 0, w0 ) - ::oUI:tableVar:setItem( nRow-0, 1, w1 ) - - ::oUI:tableVar:setItem( nRow-1, 0, q0 ) - ::oUI:tableVar:setItem( nRow-1, 1, q1 ) - - ::aKeyItems[ nRow+1 ] := { w0,w1 } - ::aKeyItems[ nRow+0 ] := { q0,q1 } - - ::oUI:tableVar:setCurrentItem( iif( nCol == 0, q0, q1 ) ) - ENDIF - EXIT - - CASE __buttonKeyDown_clicked__ - nRow := ::oUI:tableVar:currentRow() - IF nRow >= 0 .AND. nRow + 1 < Len( ::aKeyItems ) - - nCol := ::oUI:tableVar:currentColumn() - - b_ := ::aKeyItems[ nRow + 1 ] - q0 := QTableWidgetItem(); q0:setText( b_[ 1 ]:text() ) - q1 := QTableWidgetItem(); q1:setText( b_[ 2 ]:text() ) - - b_ := ::aKeyItems[ nRow + 2 ] - w0 := QTableWidgetItem(); w0:setText( b_[ 1 ]:text() ) - w1 := QTableWidgetItem(); w1:setText( b_[ 2 ]:text() ) - - ::oUI:tableVar:setItem( nRow, 0, w0 ) - ::oUI:tableVar:setItem( nRow, 1, w1 ) - - ::oUI:tableVar:setItem( nRow+1, 0, q0 ) - ::oUI:tableVar:setItem( nRow+1, 1, q1 ) - - ::aKeyItems[ nRow + 1 ] := { w0,w1 } - ::aKeyItems[ nRow + 2 ] := { q0,q1 } - - ::oUI:tableVar:setCurrentItem( iif( nCol == 0, q0, q1 ) ) - ENDIF - EXIT - - CASE __tableVar_keyPress__ - IF ( nRow := ::oUI:tableVar:currentRow() ) >= 0 - HB_TRACE( HB_TR_DEBUG, "RECEIVING ENTER KEY" ) - ::oUI:tableVar:editItem( p ) - HB_SYMBOL_UNUSED( nRow ) - #if 0 - IF ::oUI:tableVar:currentColumn() == 0 - ::oUI:tableVar:setCurrentCell( ::oUI:tableVar:currentRow(), 1 ) - ENDIF - #endif - ENDIF - - CASE __radioSection_clicked__ - ::nCurThemeSlot := p - IF empty( aRGB := ::pullThemeColors( p ) ) - aRGB := { 0,0,0 } - ENDIF - ::oUI:sliderRed : setValue( aRGB[ 1 ] ) - ::oUI:sliderGreen : setValue( aRGB[ 2 ] ) - ::oUI:sliderBlue : setValue( aRGB[ 3 ] ) - EXIT - - CASE __sliderValue_changed__ - nSlot := ::nCurThemeSlot - - IF nSlot > 0 - qFrame := { ::oUI:frameSec1, ::oUI:frameSec2, ::oUI:frameSec3, ::oUI:frameSec4, ::oUI:frameSec5 }[ nSlot ] - aRGB := { ::oUI:sliderRed:value(), ::oUI:sliderGreen:value(), ::oUI:sliderBlue:value() } - ::populateThemeColors( nSlot, aRGB ) - qFrame:setStyleSheet( "background-color: " + hbide_rgbString( aRGB ) + ";" ) - ENDIF - - aGrad := {} - FOR nSlot := 1 TO 5 - n := val( { ::oUI:editSec1, ::oUI:editSec2, ::oUI:editSec3, ::oUI:editSec4, ::oUI:editSec5 }[ nSlot ]:text() ) - - IF !empty( aRGB := ::pullThemeColors( nSlot ) ) - aadd( aGrad, { n, aRGB[ 1 ], aRGB[ 2 ], aRGB[ 3 ] } ) - ENDIF - NEXT - IF !empty( aGrad ) - cCSS := 'background-color: qlineargradient(x1:0, y1:0, x2:1, y2:0, ' + hbide_buildGradientString( aGrad ) + ");" - ::oUI:frameHorz:setStyleSheet( cCSS ) - cCSS := 'background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, ' + hbide_buildGradientString( aGrad ) + ");" - ::oUI:frameVert:setStyleSheet( cCSS ) - ENDIF - EXIT - - CASE __listThemes_currentRowChanged__ - ::pushThemeColors( p + 1 ) - EXIT - CASE __buttonThmAdd_clicked__ - IF !empty( cTheme := hbide_fetchAString( ::oDlg:oWidget, cTheme, "Name the Theme", "New Theme" ) ) - aadd( ::oINI:aAppThemes, cTheme + "," + ::fetchThemeColorsString() ) - qItem := QListWidgetItem() - qItem:setText( cTheme ) - //::oUI:listThemes:addItem_1( qItem ) - ::oUI:listThemes:addItem( qItem ) - ::oUI:listThemes:setCurrentRow( Len( ::oINI:aAppThemes ) - 1 ) - ENDIF - EXIT - CASE __buttonThmApp_clicked__ - IF ( n := ::oUI:listThemes:currentRow() ) > -1 - hbide_setAppTheme( ::getThemeData( n + 1 ) ) - ::oDK:animateComponents( HBIDE_ANIMATION_GRADIENT ) - ENDIF - EXIT - CASE __buttonThmDel_clicked__ - EXIT - CASE __buttonThmSav_clicked__ - IF ( n := ::oUI:listThemes:currentRow() ) > -1 - ::oINI:aAppThemes[ n + 1 ] := ::oUI:listThemes:currentItem():text() + "," + ; - ::fetchThemeColorsString() - ENDIF - EXIT - CASE __buttonVSSExe_clicked__ - IF ! empty( cPath := hbide_fetchADir( ::oDlg, "Visual SourceSafe Installation Path", ::oINI:cVSSExe ) ) - ::oINI:cVSSExe := cPath - ::oUI:editVSSExe:setText( hbide_pathStripLastSlash( cPath ) ) - ENDIF - EXIT - CASE __buttonVSSDatabase_clicked__ - IF ! empty( cPath := hbide_fetchADir( ::oDlg, "Visual SourceSafe Database Path", ::oINI:cVSSDatabase ) ) - ::oINI:cVSSDatabase := cPath - ::oUI:editVSSDatabase:setText( hbide_pathStripLastSlash( cPath ) ) - ENDIF - EXIT - CASE __buttonHrbRoot_clicked__ - IF ! empty( cPath := hbide_fetchADir( ::oDlg, "Harbour's Root Path", ::oINI:cPathHrbRoot ) ) - ::oINI:cPathHrbRoot := cPath - ::oUI:editPathHrbRoot:setText( hbide_pathStripLastSlash( cPath ) ) - ENDIF - EXIT - CASE __buttonHbmk2_clicked__ - IF !empty( cPath := hbide_fetchAFile( ::oDlg, "Location of hbmk2", ; - { { "Harbour Make - hbmk2", "*" } }, ::oINI:cPathHbMk2 ) ) - ::oINI:cPathhbMk2 := cPath - ::oUI:editPathHbMk2:setText( cPath ) - ENDIF - EXIT - CASE __buttonEnv_clicked__ - IF !empty( cPath := hbide_fetchAFile( ::oDlg, "Environment Definitions File ( .env )", ; - { { "Environment Files", "*.env" } }, ::oINI:getEnvFile() ) ) - ::oINI:cPathEnv := cPath - ::oUI:editPathEnv:setText( cPath ) - ENDIF - EXIT - CASE __buttonResources_clicked__ - IF ! empty( cPath := hbide_fetchADir( ::oDlg, "Location of Resources ( Plugins, Dialogs, Images, Scripts )", ::oINI:getResourcesPath() ) ) - ::oINI:cPathResources := cPath - ::oUI:editPathResources:setText( cPath ) - ENDIF - EXIT - CASE __buttonTemp_clicked__ - IF ! empty( cPath := hbide_fetchADir( ::oDlg, "Location for Temporary and Transitory Files", ::oINI:getTempPath() ) ) - ::oINI:cPathTemp := cPath - ::oUI:editPathTemp:setText( cPath ) - ENDIF - EXIT - CASE __buttonShortcuts_clicked__ - IF !empty( cPath := hbide_fetchAFile( ::oDlg, "Keyboard Mapping Definitions File ( .scu )", ; - { { "Keyboard Mappings", "*.scu" } }, ::oINI:getShortcutsFile() ) ) - ::oINI:cPathShortcuts := cPath - ::oUI:editPathShortcuts:setText( cPath ) - ENDIF - EXIT - CASE __buttonSnippets_clicked__ - IF !empty( cPath := hbide_fetchAFile( ::oDlg, "Code Snippets File ( .skl )", ; - { { "Code Snippets", "*.skl" } }, ::oINI:getSnippetsFile() ) ) - ::oINI:cPathSnippets := cPath - ::oUI:editPathSnippets:setText( cPath ) - ENDIF - EXIT - CASE __buttonThemes_clicked__ - IF !empty( cPath := hbide_fetchAFile( ::oDlg, "Syntax Highlighting Theme File ( .hbt )", ; - { { "Syntax Theme", "*.hbt" } }, ::oINI:getThemesFile() ) ) - ::oINI:cPathThemes := cPath - ::oUI:editPathThemes:setText( cPath ) - ENDIF - EXIT - CASE __buttonViewIni_clicked__ - ::viewIt( ::oINI:getIniFile(), .t., .f., .f., .f. ) /* FileName, shouldSaveAs, shouldSave, shouldReadOnly, applyHiliter */ - EXIT - CASE __buttonViewEnv_clicked__ - ::viewIt( ::oINI:getEnvFile(), .t., .t., .f., .f. ) - EXIT - CASE __buttonViewSnippets_clicked__ - ::viewIt( ::oINI:getSnippetsFile(), .t., .t., .f., .t. ) - EXIT - CASE __buttonViewThemes_clicked__ - ::viewIt( ::oINI:getThemesFile(), .t., .t., .f., .f. ) - EXIT - - CASE __buttonEditorSaveAs_clicked__ - IF ! empty( cBuffer := p:plainText:toPlainText() ) - IF ! empty( cPath := hbide_saveAFile( ::oDlg, "Save: " + p1, NIL, p1 ) ) - hb_memowrit( cPath, cBuffer ) - ENDIF - ENDIF - EXIT - CASE __buttonEditorSave_clicked__ - IF ! empty( cBuffer := p:plainText:toPlainText() ) - hb_memowrit( p1, cBuffer ) - ENDIF - EXIT - CASE __buttonEditorClose_clicked__ - CASE __buttonEditorX_clicked__ - p:oWidget:disconnect( QEvent_Close ) - p:buttonSaveAs:disconnect( "clicked()" ) - p:buttonSave:disconnect( "clicked()" ) - p:buttonClose:disconnect( "clicked()" ) - p:close() - p:setParent( QWidget() ) /* Must Destroy It */ - EXIT - /* Docking Widgets */ - CASE __comboTabsShape_currentIndexChanged__ - ::oINI:nDocksTabShape := p - ::oDlg:setTabShape( ::oINI:nDocksTabShape ) - EXIT - CASE __comboLeftTabPos_currentIndexChanged__ - ::oINI:nDocksLeftTabPos := p - ::oDlg:setTabPosition( Qt_LeftDockWidgetArea , ::oINI:nDocksLeftTabPos ) - EXIT - CASE __comboTopTabPos_currentIndexChanged__ - ::oINI:nDocksTopTabPos := p - ::oDlg:setTabPosition( Qt_TopDockWidgetArea , ::oINI:nDocksTopTabPos ) - EXIT - CASE __comboRightTabPos_currentIndexChanged__ - ::oINI:nDocksRightTabPos := p - ::oDlg:setTabPosition( Qt_RightDockWidgetArea , ::oINI:nDocksRightTabPos ) - EXIT - CASE __comboBottomTabPos_currentIndexChanged__ - ::oINI:nDocksBottomTabPos := p - ::oDlg:setTabPosition( Qt_BottomDockWidgetArea, ::oINI:nDocksBottomTabPos ) - EXIT - CASE __comboTBSize_currentIndexChanged__ - ::oINI:cToolbarSize := ::oUI:comboTBSize:currentText() - ::oDK:setToolbarSize( val( ::oINI:cToolbarSize ) ) - EXIT - - /* Dictionaries */ - CASE __btnDictColorBack_clicked__ - p := ::oUI:listDictNames:currentRow() - IF p >= 0 .AND. p < Len( ::oIde:aUserDict ) - ::oIde:aUserDict[ p + 1 ]:execColorDialog( ::oUI, "back" ) - ENDIF - EXIT - CASE __btnDictColorText_clicked__ - p := ::oUI:listDictNames:currentRow() - IF p >= 0 .AND. p < Len( ::oIde:aUserDict ) - ::oIde:aUserDict[ p + 1 ]:execColorDialog( ::oUI, "text" ) - ENDIF - EXIT - CASE __listDictNames_currentRowChanged__ - IF p >= 0 .AND. p < Len( ::oIde:aUserDict ) - ::oIde:aUserDict[ p + 1 ]:populateUI( ::oUI ) - ENDIF - EXIT - CASE __checkDictActive_stateChanged__ - CASE __checkDictToPrg_stateChanged__ - CASE __checkDictToC_stateChanged__ - CASE __checkDictToCpp_stateChanged__ - CASE __checkDictToCh_stateChanged__ - CASE __checkDictToH_stateChanged__ - CASE __checkDictToIni_stateChanged__ - CASE __checkDictToTxt_stateChanged__ - CASE __checkDictToHbp_stateChanged__ - CASE __checkDictActive_stateChanged__ - CASE __checkDictCaseSens_stateChanged__ - CASE __checkDictBold_stateChanged__ - CASE __checkDictItalic_stateChanged__ - CASE __checkDictULine_stateChanged__ - CASE __checkDictColorText_stateChanged__ - CASE __checkDictColorBack_stateChanged__ - nRow := ::oUI:listDictNames:currentRow() - IF nRow >= 0 .AND. nRow < Len( ::oIde:aUserDict ) - ::oIde:aUserDict[ nRow + 1 ]:checkStateChanged( ::oUI, nEvent, p ) - ENDIF - EXIT - CASE __radioDictConvNone_clicked__ - CASE __radioDictToLower_clicked__ - CASE __radioDictToUpper_clicked__ - CASE __radioDictAsIn_clicked__ - p := ::oUI:listDictNames:currentRow() - IF p >= 0 .AND. p < Len( ::oIde:aUserDict ) - ::oIde:aUserDict[ p + 1 ]:radioButtonClicked( ::oUI, nEvent ) - ENDIF - EXIT - CASE __buttonDictDelete_clicked__ - p := ::oUI:listDictNames:currentRow() - IF p >= 0 .AND. p < Len( ::oIde:aUserDict ) - hb_ADel( ::oIde:aUserDict, p, .T. ) - ::uiDictionaries() - ::oUI:listDictNames:setCurrentRow( Min( Len( ::oIde:aUserDict ) - 1, p ) ) - ENDIF - EXIT - CASE __buttonDictAdd_clicked__ - cFile := hbide_fetchAFile( ::oDlg, "Open a Dictionary", ; - { { "HBX Files" , "*.hbx" }, ; - { "HbIDE .tag Files", "*.tag" }, ; - { "Text Files" , "*.txt" }, ; - { "Dictionary Files", "*.dic" }, ; - { "All Files" , "*" } } /*, cDftDir, cDftSuffix, lAllowMulti*/ ) - IF ! Empty( cFile ) - oDict := IdeDictionary():new( ::oIde ):create() - oDict:load( cFile ) - aadd( ::oIde:aUserDict, oDict ) - ::uiDictionaries() - ::oUI:listDictNames:setCurrentRow( Len( ::oIde:aUserDict ) - 1 ) - ENDIF - EXIT - ENDSWITCH - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSetup:uiDictionaries() - LOCAL oDict, nRow - - nRow := ::oUI:listDictNames:currentRow() - ::oUI:listDictNames:clear() - ::oUI:listDictNames:setCurrentRow( -1 ) - FOR EACH oDict IN ::oIde:aUserDict - ::oUI:listDictNames:addItem( oDict:cFilename ) - NEXT - ::oUI:listDictNames:setCurrentRow( Max( nRow, 0 ) ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeSetup:viewIt( cFileName, lSaveAs, lSave, lReadOnly, lApplyHiliter ) - LOCAL oUI - - oUI := hbide_getUI( "editor", ::oUI:oWidget ) - oUI:setWindowFlags( Qt_Sheet + Qt_CustomizeWindowHint + Qt_WindowTitleHint + Qt_WindowContextHelpButtonHint ) - - oUI:plainText:setReadOnly( lReadOnly ) - oUI:buttonSaveAs:setEnabled( lSaveAs ) - oUI:buttonSave:setEnabled( lSave ) - - oUI:plainText:setLineWrapMode( QPlainTextEdit_NoWrap ) - - oUI:plainText:setPlainText( hb_memoRead( cFileName ) ) - oUI:plainText:setFont( ::oIde:oFont:oWidget ) - IF lApplyHiliter - aadd( ::aHilighters, ::oTH:setSyntaxHilighting( oUI:plainText, "Bare Minimum" ) ) - ENDIF - - oUI:oWidget :connect( QEvent_Close, {|| ::execEvent( __buttonEditorX_clicked__ , oUI ) } ) - oUI:buttonSaveAs:connect( "clicked()" , {|| ::execEvent( __buttonEditorSaveAs_clicked__, oUI, cFileName ) } ) - oUI:buttonSave :connect( "clicked()" , {|| ::execEvent( __buttonEditorSave_clicked__ , oUI, cFileName ) } ) - oUI:buttonClose :connect( "clicked()" , {|| ::execEvent( __buttonEditorClose_clicked__ , oUI ) } ) - - oUI:show() - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD IdeSetup:pushThemesData() - LOCAL s, a_, qItem - - IF ::nCurThemeSlot == 0 - FOR EACH s IN ::oINI:aAppThemes - a_:= hb_aTokens( s, "," ) - qItem := QListWidgetItem() - qItem:setText( a_[ 1 ] ) - //::oUI:listThemes:addItem_1( qItem ) - ::oUI:listThemes:addItem( qItem ) - ::pushThemeColors( s:__enumIndex() ) - NEXT - ENDIF - IF !empty( ::oINI:aAppThemes ) - ::oUI:listThemes:setCurrentRow( -1 ) - ::oUI:listThemes:setCurrentRow( Len( ::oINI:aAppThemes ) - 1 ) - ::oUI:listThemes:setCurrentRow( 0 ) - ENDIF - ::oUI:radioSec1:click() - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD IdeSetup:getThemeData( nTheme ) - LOCAL a_, i, aTheme := {} - - IF nTheme >= 1 .AND. nTheme <= Len( ::oINI:aAppThemes ) - a_:= hbide_parseThemeComponent( ::oINI:aAppThemes[ nTheme ] ) - - FOR i := 2 TO 6 - IF !empty( a_[ i ] ) - aadd( aTheme, a_[ i ] ) - ENDIF - NEXT - ENDIF - - RETURN aTheme - -/*----------------------------------------------------------------------*/ - -METHOD IdeSetup:pushThemeColors( nTheme ) - LOCAL n, a_, i, aRGB, nSlot - - IF nTheme >= 1 .AND. nTheme <= Len( ::oINI:aAppThemes ) - a_:= hb_aTokens( ::oINI:aAppThemes[ nTheme ], "," ) - aSize( a_, 6 ) - DEFAULT a_[ 1 ] TO "" - DEFAULT a_[ 2 ] TO "" - DEFAULT a_[ 3 ] TO "" - DEFAULT a_[ 4 ] TO "" - DEFAULT a_[ 5 ] TO "" - DEFAULT a_[ 6 ] TO "" - - FOR i := 2 TO 6 - nSlot := i - 1 - IF !empty( a_[ i ] ) - aRGB := hb_aTokens( a_[ i ], " " ) - FOR EACH n IN aRGB - n := val( n ) - NEXT - { ::oUI:editSec1, ::oUI:editSec2, ::oUI:editSec3, ::oUI:editSec4, ::oUI:editSec5 }[ nSlot ]:setText( hb_ntos( aRGB[ 1 ] ) ) - - ::populateThemeColors( nSlot, { aRGB[ 2 ], aRGB[ 3 ], aRGB[ 4 ] } ) - ENDIF - NEXT - { ::oUI:radioSec1, ::oUI:radioSec2, ::oUI:radioSec3, ::oUI:radioSec4, ::oUI:radioSec5 }[ nSlot ]:click() - ENDIF - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD IdeSetup:populateThemeColors( nSlot, aRGB ) - LOCAL qFrame - - { ::oUI:editR1, ::oUI:editR2, ::oUI:editR3, ::oUI:editR4, ::oUI:editR5 }[ nSlot ]:setText( hb_ntos( aRGB[ 1 ] ) ) - { ::oUI:editG1, ::oUI:editG2, ::oUI:editG3, ::oUI:editG4, ::oUI:editG5 }[ nSlot ]:setText( hb_ntos( aRGB[ 2 ] ) ) - { ::oUI:editB1, ::oUI:editB2, ::oUI:editB3, ::oUI:editB4, ::oUI:editB5 }[ nSlot ]:setText( hb_ntos( aRGB[ 3 ] ) ) - - qFrame := { ::oUI:frameSec1, ::oUI:frameSec2, ::oUI:frameSec3, ::oUI:frameSec4, ::oUI:frameSec5 }[ nSlot ] - qFrame:setStyleSheet( "background-color: " + hbide_rgbString( aRGB ) + ";" ) - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD IdeSetup:fetchThemeColorsString( nSlot ) - LOCAL s := "" - - IF empty( nSlot ) - FOR nSlot := 1 TO 5 - s += { ::oUI:editSec1, ::oUI:editSec2, ::oUI:editSec3, ::oUI:editSec4, ::oUI:editSec5 }[ nSlot ]:text() + " " - - s += { ::oUI:editR1, ::oUI:editR2, ::oUI:editR3, ::oUI:editR4, ::oUI:editR5 }[ nSlot ]:text() + " " - s += { ::oUI:editG1, ::oUI:editG2, ::oUI:editG3, ::oUI:editG4, ::oUI:editG5 }[ nSlot ]:text() + " " - s += { ::oUI:editB1, ::oUI:editB2, ::oUI:editB3, ::oUI:editB4, ::oUI:editB5 }[ nSlot ]:text() - - s += "," - NEXT - ELSE - - ENDIF - - RETURN s - -/*------------------------------------------------------------------------*/ - -METHOD IdeSetup:pullThemeColors( nSlot ) - LOCAL aRGB := {} - - IF !empty( { ::oUI:editSec1, ::oUI:editSec2, ::oUI:editSec3, ::oUI:editSec4, ::oUI:editSec5 }[ nSlot ]:text() ) - aadd( aRGB, val( { ::oUI:editR1, ::oUI:editR2, ::oUI:editR3, ::oUI:editR4, ::oUI:editR5 }[ nSlot ]:text() ) ) - aadd( aRGB, val( { ::oUI:editG1, ::oUI:editG2, ::oUI:editG3, ::oUI:editG4, ::oUI:editG5 }[ nSlot ]:text() ) ) - aadd( aRGB, val( { ::oUI:editB1, ::oUI:editB2, ::oUI:editB3, ::oUI:editB4, ::oUI:editB5 }[ nSlot ]:text() ) ) - ENDIF - - RETURN aRGB - -/*------------------------------------------------------------------------*/ - -METHOD IdeSetup:populateKeyTableRow( nRow, cTxtCol1, cTxtCol2 ) - LOCAL lAppend := Len( ::aKeyItems ) < nRow - LOCAL q0, q1 - - IF lAppend - ::oUI:tableVar:setRowCount( nRow ) - - q0 := QTableWidgetItem() - q0:setText( cTxtCol1 ) - ::oUI:tableVar:setItem( nRow-1, 0, q0 ) - - q1 := QTableWidgetItem() - q1:setText( cTxtCol2 ) - ::oUI:tableVar:setItem( nRow-1, 1, q1 ) - - aadd( ::aKeyItems, { q0, q1 } ) - - ::oUI:tableVar:setRowHeight( nRow-1, 16 ) - - ELSE - ::aKeyItems[ nRow, 1 ]:setText( cTxtCol1 ) - ::aKeyItems[ nRow, 2 ]:setText( cTxtCol2 ) - - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSetup:buildKeywords() - LOCAL hdr_:= { { "Keyword", 100 }, { "Value", 230 } } - LOCAL oTbl, n, qItm - - oTbl := ::oUI:tableVar - - oTbl:verticalHeader():hide() - oTbl:horizontalHeader():setStretchLastSection( .t. ) - - oTbl:setAlternatingRowColors( .t. ) - oTbl:setColumnCount( Len( hdr_ ) ) - oTbl:setShowGrid( .t. ) - FOR n := 1 TO Len( hdr_ ) - qItm := QTableWidgetItem() - qItm:setText( hdr_[ n,1 ] ) - oTbl:setHorizontalHeaderItem( n-1, qItm ) - oTbl:setColumnWidth( n-1, hdr_[ n,2 ] ) - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSetup:buildTree() - LOCAL oRoot, oChild, s - - ::oUI:treeWidget:setHeaderHidden( .t. ) - ::oUI:treeWidget:setIconSize( QSize( 12,12 ) ) - ::oUI:treeWidget:setIndentation( 12 ) - - oRoot := QTreeWidgetItem() - oRoot:setText( 0, "Parts" ) - oRoot:setToolTip( 0, "Parts" ) - - ::oUI:treeWidget:addTopLevelItem( oRoot ) - - aadd( ::aItems, oRoot ) - - FOR EACH s IN ::aTree - oChild := QTreeWidgetItem() - oChild:setText( 0, s ) - oChild:setToolTip( 0, s ) - oRoot:addChild( oChild ) - aadd( ::aItems, oChild ) - NEXT - - oRoot:setExpanded( .t. ) - ::oUI:treeWidget:setCurrentItem( ::aItems[ 2 ] ) /* General */ - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSetup:setSystemStyle( cStyle ) - LOCAL qFactory - - IF !empty( cStyle ) - qFactory := QStyleFactory() - QApplication():setStyle( qFactory:create( cStyle ) ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSetup:setBaseColor() - #if 0 - LOCAL qPalette, oApp, qBrush, qColor - - oApp := QApplication() - - ::qOrgPalette := oApp:palette() - - qColor := QColor( Qt_red ) - qBrush := QBrush( qColor ) - - qPalette := oApp:palette() - qPalette:setBrush( QPalette_Window, qBrush ) - qPalette:setColor( QPalette_Window, qColor ) - qPalette:setColor( QPalette_Base, qColor ) - - oApp:setPalette( qPalette ) - #endif - RETURN Self - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_saveEnvironment( oIde, cFile ) - LOCAL cPath, cExt, oSettings - - DEFAULT cFile TO "settings.ide" - - cFile := lower( cFile ) - hb_fNameSplit( cFile, @cPath, @cFile, @cExt ) - IF empty( cExt ) - cExt := ".ide" - ENDIF - IF lower( cExt ) != ".ide" - RETURN NIL - ENDIF - IF empty( cPath ) - cPath := oIde:oINI:getINIPath() - ENDIF - - oSettings := QSettings( cPath + cFile + cExt, QSettings_IniFormat ) - oSettings:setValue( "hbidesettings", QVariant( oIde:oDlg:oWidget:saveState() ) ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_restEnvironment( oIde, cFile ) - LOCAL cPath, cExt, oSettings - - DEFAULT cFile TO "settings.ide" - - cFile := lower( cFile ) - hb_fNameSplit( cFile, @cPath, @cFile, @cExt ) - IF empty( cExt ) - cExt := ".ide" - ENDIF - IF lower( cExt ) != ".ide" - RETURN NIL - ENDIF - IF empty( cPath ) - cPath := oIde:oINI:getINIPath() - ENDIF - - oSettings := QSettings( cPath + cFile + cExt, QSettings_IniFormat ) - oIde:oDlg:oWidget:restoreState( oSettings:value( "hbidesettings" ):toByteArray() ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_restEnvironment_byResource( oIde, cFile ) - LOCAL oSettings := QSettings( ":/env/" + cFile + ".ide", QSettings_IniFormat ) - - oIde:oDlg:oWidget:restoreState( oSettings:value( "hbidesettings" ):toByteArray() ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_getFileContentsFromResource( cFile ) - - RETURN QResource( ":/" + cFile ):data() - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/searchreplace.ui b/harbour/contrib/hbide/searchreplace.ui deleted file mode 100644 index e53b7c5a66..0000000000 --- a/harbour/contrib/hbide/searchreplace.ui +++ /dev/null @@ -1,428 +0,0 @@ - - - FormSearchReplace1 - - - - 0 - 0 - 817 - 75 - - - - Qt::StrongFocus - - - Form - - - - 5 - - - 0 - - - 3 - - - 0 - - - 3 - - - - - QFrame::NoFrame - - - QFrame::Plain - - - - 5 - - - 5 - - - 0 - - - 5 - - - 0 - - - - - - 50 - 0 - - - - - 50 - 16777215 - - - - Search: - - - - - - - - 250 - 0 - - - - - 250 - 16777215 - - - - Qt::StrongFocus - - - true - - - - - - - ... - - - true - - - - - - - ... - - - true - - - - - - - - 30 - 0 - - - - - 35 - 16777215 - - - - From: - - - - - - - - 40 - 0 - - - - - 40 - 16777215 - - - - Top - - - - - - - - 60 - 0 - - - - - 60 - 16777215 - - - - Cursor - - - - - - - - 55 - 0 - - - - - 55 - 16777215 - - - - Case - - - - - - - - 55 - 0 - - - - - 55 - 16777215 - - - - Whole - - - - - - - - 55 - 0 - - - - - 55 - 16777215 - - - - RegEx - - - - - - - - 55 - 0 - - - - - 55 - 16777215 - - - - Replace - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - ... - - - true - - - - - - - - - - QFrame::NoFrame - - - QFrame::Plain - - - - 5 - - - 5 - - - 0 - - - 5 - - - 0 - - - - - - 50 - 0 - - - - - 50 - 16777215 - - - - Replace: - - - - - - - - 250 - 0 - - - - - 250 - 16777215 - - - - true - - - - - - - - 195 - 0 - - - - - 195 - 16777215 - - - - Replace - - - - - - - - 55 - 0 - - - - - 55 - 16777215 - - - - Global - - - - - - - - 70 - 0 - - - - - 70 - 16777215 - - - - No Prompt - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - ... - - - true - - - - - - - - - - - diff --git a/harbour/contrib/hbide/searchreplacepanel.ui b/harbour/contrib/hbide/searchreplacepanel.ui deleted file mode 100644 index ebae0c5e70..0000000000 --- a/harbour/contrib/hbide/searchreplacepanel.ui +++ /dev/null @@ -1,224 +0,0 @@ - - - FormSearchReplace - - - - 0 - 0 - 923 - 38 - - - - - 0 - 30 - - - - - 16777215 - 38 - - - - Form - - - border-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255, 255)); - - - - 2 - - - 2 - - - - - - 25 - 20 - - - - Find: - - - - - - - - 0 - 0 - - - - - 200 - 0 - - - - - 16777215 - 16777215 - - - - true - - - - - - - ... - - - true - - - - - - - ... - - - true - - - - - - - ... - - - true - - - - - - - Case - - - - - - - RegEx - - - - - - - - 30 - 20 - - - - - 30 - 20 - - - - - - - - - - - - 62 - 0 - - - - - 62 - 16777215 - - - - Replace: - - - - - - - - 0 - 0 - - - - - 200 - 0 - - - - - 16777215 - 16777215 - - - - true - - - - - - - Global - - - - - - - NoPrompt - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - ... - - - true - - - - - - - - diff --git a/harbour/contrib/hbide/selectionlist.ui b/harbour/contrib/hbide/selectionlist.ui deleted file mode 100644 index 1faa9942bb..0000000000 --- a/harbour/contrib/hbide/selectionlist.ui +++ /dev/null @@ -1,67 +0,0 @@ - - - Dialog - - - - 0 - 0 - 223 - 285 - - - - Select an Option - - - - - - QAbstractItemView::NoEditTriggers - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 77 - 25 - - - - OK - - - - - - - - 77 - 25 - - - - Cancel - - - - - - - - diff --git a/harbour/contrib/hbide/selectproject.ui b/harbour/contrib/hbide/selectproject.ui deleted file mode 100644 index 65cc31dde1..0000000000 --- a/harbour/contrib/hbide/selectproject.ui +++ /dev/null @@ -1,74 +0,0 @@ - - - Dialog - - - - 0 - 0 - 218 - 108 - - - - Select a Project... - - - - - 20 - 40 - 181 - 22 - - - - - - - 20 - 10 - 191 - 16 - - - - Select a project to make it the current. - - - false - - - - - - 45 - 70 - 75 - 23 - - - - Ok - - - - - - 125 - 70 - 75 - 23 - - - - Cancel - - - - - cbProjects - - - - diff --git a/harbour/contrib/hbide/settings.qrc b/harbour/contrib/hbide/settings.qrc deleted file mode 100644 index 28ac698841..0000000000 --- a/harbour/contrib/hbide/settings.qrc +++ /dev/null @@ -1,5 +0,0 @@ - - - env/pritpalsfav.ide - - diff --git a/harbour/contrib/hbide/setup.ui b/harbour/contrib/hbide/setup.ui deleted file mode 100644 index d5a4e73af8..0000000000 --- a/harbour/contrib/hbide/setup.ui +++ /dev/null @@ -1,3793 +0,0 @@ - - - DialogSetup - - - - 0 - 0 - 476 - 413 - - - - Setup - - - - - 6 - 10 - 99 - 397 - - - - 10 - - - false - - - - 1 - - - - - - - 116 - 8 - 353 - 367 - - - - 3 - - - - - - 0 - 0 - 351 - 365 - - - - - - - - - 10 - 2 - 331 - 265 - - - - Source - - - - - 14 - 18 - 301 - 19 - - - - Trim trailing blanks while source is saved ? - - - - - - 10 - 120 - 147 - 135 - - - - Line ending mode - - - - - 8 - 108 - 99 - 19 - - - - Auto detected - - - - - - 8 - 86 - 99 - 19 - - - - OS dependent - - - - - - 8 - 20 - 131 - 19 - - - - CRLF (0D+0A) default - - - - - - 8 - 42 - 82 - 19 - - - - CR (0D) - - - - - - 8 - 64 - 82 - 19 - - - - LF (0A) - - - - - - - 172 - 120 - 149 - 135 - - - - TABS - Indents - - - - - 8 - 18 - 131 - 19 - - - - Convert TAB to spaces - - - - - - 8 - 42 - 85 - 16 - - - - Spaces for a TAB - - - - - - 98 - 42 - 39 - 20 - - - - - - - 8 - 64 - 89 - 19 - - - - Auto indent - - - - - - 8 - 86 - 87 - 19 - - - - Smart indent - - - - - - 8 - 108 - 59 - 16 - - - - Indent size - - - - - - 98 - 104 - 39 - 20 - - - - - - - - 14 - 36 - 301 - 19 - - - - Save source before compiling process starts ? - - - - - - 14 - 56 - 301 - 19 - - - - Supress convertion to uppcase of Harbour keywords ? - - - - - - 14 - 96 - 301 - 19 - - - - Convert tabs to spaces when a source is loaded ? - - - - - - 14 - 76 - 301 - 19 - - - - Keyword RETURN be treated as AT-BEGINGING type ? - - - - - - - 10 - 258 - 331 - 97 - - - - Editing Area - - - - - 12 - 12 - 143 - 19 - - - - Show horizontal ruler - - - - - - 12 - 28 - 151 - 19 - - - - Show line numbers - - - - - - 12 - 44 - 149 - 19 - - - - Highlight current line - - - - - - 182 - 72 - 133 - 19 - - - - Animated ? - - - - - - 182 - 48 - 135 - 22 - - - - - - - 184 - 32 - 46 - 14 - - - - Style: - - - - - - 258 - 72 - 59 - 19 - - - - Edit MDI - - - - - - 12 - 60 - 121 - 18 - - - - Show left-toolbar - - - - - - 12 - 76 - 121 - 18 - - - - Show top-toolbar - - - - - - 124 - 68 - 37 - 21 - - - - - - - 180 - 12 - 133 - 17 - - - - Show Selection Toolbar - - - - - - - - - - 0 - 0 - 351 - 365 - - - - - - - - - 8 - 8 - 333 - 125 - - - - Closing Statements - - - Qt::AlignCenter - - - true - - - - - 8 - 20 - 72 - 18 - - - - IF - - - - - - 8 - 40 - 72 - 18 - - - - FOR - - - - - - 8 - 60 - 72 - 18 - - - - DO WHILE - - - - - - 8 - 80 - 72 - 18 - - - - DO CASE - - - - - - 8 - 101 - 72 - 18 - - - - SWITCH - - - - - - 80 - 80 - 37 - 16 - - - - CASEs - - - - - - 116 - 77 - 33 - 21 - - - - 1 - - - - - - 156 - 80 - 85 - 18 - - - - OTHERWISE - - - - - - 156 - 24 - 49 - 18 - - - - ELSE - - - - - - 156 - 101 - 85 - 18 - - - - OTHERWISE - - - - - - 80 - 101 - 37 - 16 - - - - CASEs - - - - - - 116 - 100 - 33 - 21 - - - - 1 - - - - - - 240 - 101 - 89 - 18 - - - - EXIT Same Line - - - - - - 240 - 24 - 93 - 18 - - - - Embrace Lower - - - - - - - 8 - 236 - 333 - 37 - - - - Function Call - - - Qt::AlignCenter - - - false - - - - - 8 - 16 - 145 - 18 - - - - Add Clsong Parenthesis ? - - - - - - 156 - 16 - 169 - 18 - - - - Add Spaces After/ Before () - - - - - - - 8 - 272 - 333 - 85 - - - - General - - - Qt::AlignCenter - - - - - 8 - 16 - 205 - 16 - - - - Add Closing Body of CodeBlock ? - - - - - - 8 - 32 - 205 - 18 - - - - Add Space After := Operator ? - - - - - - 8 - 64 - 205 - 18 - - - - Format Line after ENTER is pressed ? - - - - - - 8 - 48 - 205 - 18 - - - - Align Operator := to Previous Lines ? - - - - - - - 8 - 140 - 333 - 37 - - - - Function Declaration - - - Qt::AlignCenter - - - true - - - - - 8 - 16 - 61 - 17 - - - - LOCAL - - - - - - 80 - 16 - 70 - 17 - - - - RETURN - - - - - - 156 - 16 - 81 - 17 - - - - SEPERATOR - - - - - - 240 - 16 - 89 - 17 - - - - Documentation - - - - - - - 8 - 180 - 333 - 53 - - - - Class Declaration - - - Qt::AlignCenter - - - true - - - - - 8 - 28 - 61 - 19 - - - - - - - 80 - 28 - 133 - 19 - - - - - - - 8 - 12 - 61 - 16 - - - - Data Mem As - - - - - - 80 - 12 - 133 - 16 - - - - Initial Methods - - - Qt::AlignCenter - - - - - - 224 - 28 - 101 - 19 - - - - - - - 224 - 12 - 101 - 16 - - - - Method Format - - - Qt::AlignCenter - - - - - - - - - - 0 - 2 - 351 - 363 - - - - - - - - - 10 - 6 - 331 - 125 - - - - Caret after paste operation - - - - - 14 - 22 - 91 - 16 - - - - Stream Selection: - - - - - - 14 - 58 - 91 - 16 - - - - Column Selection: - - - - - - 16 - 92 - 89 - 16 - - - - Line Selection: - - - - - - 132 - 16 - 189 - 29 - - - - - - - - - 20 - 6 - 63 - 19 - - - - Begining - - - - - - 124 - 6 - 59 - 19 - - - - End - - - - - - - 132 - 50 - 189 - 33 - - - - - - - - - 18 - 6 - 74 - 22 - - - - - - - 106 - 6 - 74 - 22 - - - - - - - - 132 - 88 - 189 - 29 - - - - - - - - - 20 - 6 - 63 - 19 - - - - Top - - - - - - 124 - 6 - 59 - 19 - - - - Bottom - - - - - - - - 10 - 130 - 331 - 71 - - - - Code Completion - - - - - 12 - 20 - 307 - 19 - - - - Show code completion list with arguments ? - - - - - - 12 - 42 - 307 - 19 - - - - Complete the code including arguments body ? - - - - - - - 8 - 204 - 333 - 149 - - - - Docking Widgets - - - - - 12 - 18 - 157 - 16 - - - - Tabbed Widgets Tab Shape: - - - - - - 225 - 14 - 93 - 22 - - - - - - - 12 - 44 - 177 - 16 - - - - Left Docking Area's Tabs Position: - - - - - - 12 - 68 - 177 - 16 - - - - Top Docking Area's Tabs Position: - - - - - - 12 - 94 - 177 - 16 - - - - Right Docking Area's Tabs Position: - - - - - - 12 - 120 - 177 - 16 - - - - Bottom Docking Area's Tabs Position: - - - - - - 224 - 40 - 93 - 22 - - - - - - - 224 - 66 - 93 - 22 - - - - - - - 224 - 92 - 93 - 22 - - - - - - - 224 - 118 - 93 - 22 - - - - - - - - - - - 0 - 2 - 351 - 365 - - - - - - - - - 10 - 4 - 331 - 81 - - - - Font - - - - - 10 - 18 - 41 - 16 - - - - Name: - - - - - - 52 - 16 - 195 - 20 - - - - - - - 130 - 52 - 57 - 16 - - - - PointSize: - - - - - - 190 - 52 - 57 - 20 - - - - - - - 274 - 16 - 25 - 20 - - - - ... - - - - - - - 12 - 94 - 329 - 135 - - - - Backups - - - - - 10 - 20 - 177 - 16 - - - - Transitory temp backup period: - - - - - - 190 - 18 - 59 - 20 - - - - - - - 12 - 42 - 235 - 16 - - - - Permanent backup path: - - - - - - 12 - 60 - 239 - 20 - - - - - - - 276 - 60 - 25 - 20 - - - - ... - - - - - - 14 - 86 - 235 - 16 - - - - Permanent backup suffix: - - - - - - 12 - 104 - 239 - 20 - - - - - - - - 12 - 236 - 151 - 119 - - - - Text files extensions - - - - - 12 - 16 - 77 - 93 - - - - - - - 112 - 18 - 25 - 20 - - - - ... - - - - - - 112 - 44 - 25 - 20 - - - - ... - - - - - - - 176 - 236 - 165 - 117 - - - - Source Editor Tabs - - - - - 12 - 20 - 137 - 17 - - - - Remove File Extension ? - - - - - - 12 - 44 - 137 - 17 - - - - Add Closing Button ? - - - - - - - - - - 0 - 2 - 351 - 365 - - - - Paths - - - - - 14 - 86 - 259 - 16 - - - - hbmk2 executable ( D: _harbour_root_bin_hbmk2 ) - - - - - - 14 - 102 - 259 - 20 - - - - - - - 14 - 278 - 259 - 16 - - - - Snippets ( D: _ini_path_hbide.skl ) - - - - - - 14 - 296 - 259 - 20 - - - - - - - 14 - 200 - 261 - 16 - - - - Environments ( D: _ini_path_hbide.env ) - - - - - - 14 - 218 - 261 - 20 - - - - - - - 14 - 12 - 99 - 16 - - - - hbide.ini - - - - - - 14 - 28 - 259 - 20 - - - - - - - 14 - 238 - 257 - 16 - - - - Shortcuts ( D: _ini_path_hbide.scu ) - - - - - - 14 - 256 - 261 - 20 - - - - - - - 14 - 318 - 259 - 16 - - - - Syntax Themes ( D: _ini_path_hbide.hbt ) - - - - - - 14 - 336 - 261 - 20 - - - - - - - 284 - 102 - 25 - 21 - - - - ... - - - - - - 284 - 296 - 25 - 20 - - - - ... - - - - - - 284 - 218 - 25 - 20 - - - - ... - - - - - - 284 - 256 - 25 - 20 - - - - ... - - - - - - 284 - 336 - 25 - 20 - - - - ... - - - - - - 314 - 28 - 25 - 20 - - - - ... - - - - - - 314 - 296 - 25 - 21 - - - - ... - - - - - - 314 - 218 - 25 - 20 - - - - ... - - - - - - 314 - 336 - 25 - 20 - - - - ... - - - - - - 284 - 64 - 25 - 21 - - - - ... - - - - - - 14 - 64 - 259 - 20 - - - - - - - 14 - 48 - 259 - 16 - - - - Harbour Root - - - - - - 14 - 142 - 259 - 20 - - - - - - - 284 - 142 - 25 - 21 - - - - ... - - - - - - 14 - 126 - 259 - 16 - - - - Resources ( Plugins, Images, Dialogs, Scripts, etc. ) - - - - - - 14 - 180 - 259 - 20 - - - - - - - 284 - 180 - 25 - 21 - - - - ... - - - - - - 14 - 164 - 259 - 16 - - - - Temporary and Transitory Files Path - - - - - - - - - 0 - 2 - 351 - 365 - - - - - - - - - 6 - 32 - 337 - 327 - - - - - - - 8 - 6 - 25 - 20 - - - - ... - - - - - - 42 - 6 - 25 - 20 - - - - ... - - - - - - 78 - 6 - 25 - 20 - - - - ... - - - - - - 112 - 6 - 25 - 20 - - - - ... - - - - - - - - - 0 - -2 - 351 - 369 - - - - Keywords Dictionaries - - - - - 10 - 16 - 243 - 109 - - - - - - - 268 - 16 - 75 - 24 - - - - Add - - - false - - - - - - 268 - 44 - 75 - 24 - - - - Delete - - - false - - - - - - 288 - 108 - 53 - 19 - - - - Active - - - - - - 10 - 168 - 331 - 35 - - - - Auto case convertion ? - - - - - 62 - 12 - 69 - 19 - - - - To Lower - - - - - - 142 - 12 - 69 - 19 - - - - To Upper - - - - - - 226 - 12 - 97 - 19 - - - - As in dictionary - - - - - - 8 - 12 - 45 - 19 - - - - No - - - - - - - 146 - 218 - 193 - 143 - - - - QPlainTextEdit::NoWrap - - - - - - 10 - 126 - 331 - 37 - - - - Apply to - - - - - 246 - 14 - 43 - 19 - - - - Txt - - - - - - 286 - 14 - 43 - 19 - - - - Hbp - - - - - - 6 - 14 - 43 - 19 - - - - Prg - - - - - - 46 - 14 - 39 - 19 - - - - C - - - - - - 206 - 14 - 43 - 19 - - - - Ini - - - - - - 166 - 14 - 43 - 19 - - - - H - - - - - - 80 - 14 - 43 - 19 - - - - Cpp - - - - - - 126 - 14 - 43 - 19 - - - - Ch - - - - - - - 10 - 212 - 123 - 149 - - - - Colors / Fonts - - - - - 8 - 16 - 101 - 19 - - - - Case sensitive ? - - - - - - 8 - 36 - 71 - 19 - - - - Bold - - - - - - 8 - 56 - 71 - 19 - - - - Italics - - - - - - 8 - 78 - 71 - 19 - - - - Underline - - - - - - 8 - 100 - 71 - 19 - - - - Text color - - - - - - 8 - 124 - 75 - 19 - - - - Background - - - - - - 88 - 98 - 25 - 20 - - - - Click to define text color for keywords in this dictionary. - - - - - - - - - 88 - 124 - 25 - 20 - - - - Click to define background color for keywords in this dictionary. - - - - - - - - - - - - - 0 - 0 - 351 - 365 - - - - - - - - - 10 - 8 - 99 - 123 - - - - - - - 144 - 8 - 53 - 123 - - - - Horizontal Gradient - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - 207 - 8 - 135 - 123 - - - - Vertical Gradient - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - 10 - 138 - 331 - 155 - - - - - - - - - 50 - 128 - 49 - 20 - - - - Section at ? ( less than 1 ) - - - - - - 50 - 16 - 49 - 20 - - - - Section at 0 edge - - - - - - 50 - 44 - 49 - 20 - - - - Section at ? ( less than 1 ) - - - - - - 50 - 100 - 49 - 20 - - - - Section at ? ( less than 1 ) - - - - - - 50 - 72 - 49 - 20 - - - - Section at ? ( less than 1 ) - - - - - - 8 - 18 - 43 - 16 - - - - Sec 0 - - - - - - 8 - 130 - 43 - 16 - - - - Sec 1 - - - - - - 8 - 48 - 37 - 16 - - - - Sec ? - - - - - - 8 - 76 - 37 - 16 - - - - Sec ? - - - - - - 8 - 104 - 37 - 16 - - - - Sec ? - - - - - - 198 - 16 - 29 - 20 - - - - - - - 242 - 16 - 29 - 20 - - - - - - - 284 - 16 - 29 - 20 - - - - - - - 242 - 44 - 29 - 20 - - - - - - - 284 - 44 - 29 - 20 - - - - - - - 198 - 44 - 29 - 20 - - - - - - - 242 - 72 - 29 - 20 - - - - - - - 284 - 72 - 29 - 20 - - - - - - - 198 - 72 - 29 - 20 - - - - - - - 242 - 100 - 29 - 20 - - - - - - - 284 - 100 - 29 - 20 - - - - - - - 198 - 100 - 29 - 20 - - - - - - - 242 - 128 - 29 - 20 - - - - - - - 284 - 128 - 29 - 20 - - - - - - - 196 - 128 - 31 - 20 - - - - - - - 110 - 16 - 19 - 23 - - - - - - - - - - 110 - 44 - 19 - 19 - - - - - - - - - - 110 - 72 - 19 - 19 - - - - - - - - - - 110 - 100 - 19 - 19 - - - - - - - - - - 110 - 128 - 19 - 19 - - - - - - - - - - 134 - 16 - 51 - 20 - - - - Color at Section 1 - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - 134 - 44 - 51 - 20 - - - - Color at Section 1 - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - 134 - 72 - 51 - 20 - - - - Color at Section 2 - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - 134 - 100 - 51 - 20 - - - - Color at Section 4 - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - 134 - 128 - 51 - 20 - - - - Color at Section 5 - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - 60 - 300 - 277 - 16 - - - - Qt::Horizontal - - - - - - 60 - 322 - 277 - 16 - - - - Qt::Horizontal - - - - - - 60 - 344 - 277 - 16 - - - - Qt::Horizontal - - - - - - 12 - 302 - 46 - 14 - - - - Red - - - - - - 12 - 322 - 46 - 14 - - - - Green - - - - - - 12 - 342 - 46 - 14 - - - - Blue - - - - - - 114 - 8 - 25 - 20 - - - - Add a new theme - - - ... - - - - - - 114 - 32 - 25 - 20 - - - - Delete current highlighted theme - - - ... - - - - - - 114 - 72 - 25 - 20 - - - - Apply theme to application - - - ... - - - - - - 114 - 110 - 25 - 20 - - - - Save current theme - - - ... - - - - - - - - - 0 - 0 - 349 - 365 - - - - - - - - - 8 - 8 - 153 - 18 - - - - Indent code - - - - - - 8 - 100 - 153 - 18 - - - - Reformat spaces - - - - - - 8 - 24 - 157 - 18 - - - - Indent "Functions" etc. - - - - - - 8 - 40 - 157 - 18 - - - - Indent variable declarations - - - - - - 8 - 56 - 157 - 18 - - - - Indent directives - - - - - - 8 - 72 - 157 - 18 - - - - Indent "RETURN" - - - - - - 8 - 240 - 165 - 117 - - - - Empty Lines: before - - - - - 8 - 20 - 85 - 16 - - - - Function Declart - - - - - - 8 - 44 - 81 - 16 - - - - Variables Declart - - - - - - 8 - 92 - 73 - 16 - - - - RETURN - - - - - - 8 - 68 - 81 - 16 - - - - Code in function - - - - - - 96 - 16 - 61 - 22 - - - - - - - 96 - 40 - 61 - 22 - - - - - - - 96 - 64 - 61 - 22 - - - - - - - 96 - 88 - 61 - 22 - - - - - - - - 8 - 128 - 165 - 89 - - - - Number of Indent Spaces - - - - - 8 - 20 - 61 - 16 - - - - Leftmost - - - - - - 96 - 16 - 61 - 22 - - - - - - - 8 - 44 - 61 - 16 - - - - Generic - - - - - - 96 - 40 - 61 - 22 - - - - - - - 96 - 64 - 61 - 22 - - - - - - - 8 - 64 - 81 - 25 - - - - Continuation ";" - - - - - - - 180 - 124 - 161 - 133 - - - - Case Conversion - - - - - 8 - 16 - 65 - 16 - - - - Commands - - - - - - 92 - 12 - 61 - 22 - - - - - - - 8 - 40 - 73 - 16 - - - - Bool Operator - - - - - - 8 - 64 - 69 - 16 - - - - Functions - - - - - - 8 - 88 - 89 - 16 - - - - Unk'n Functions - - - - - - 8 - 112 - 77 - 16 - - - - Directives - - - - - - 92 - 36 - 61 - 22 - - - - - - - 92 - 60 - 61 - 22 - - - - - - - 92 - 84 - 61 - 22 - - - - - - - 92 - 108 - 61 - 22 - - - - - - - - 180 - 268 - 161 - 89 - - - - General - - - - - 8 - 16 - 77 - 17 - - - - Spaces after # - - - - - - 92 - 12 - 61 - 22 - - - - - - - 92 - 36 - 61 - 22 - - - - - - - 92 - 60 - 61 - 22 - - - - - - - 8 - 40 - 73 - 16 - - - - Nesting () - "," - - - - - - 8 - 64 - 73 - 16 - - - - Nesting () - ")" - - - - - - - 180 - 4 - 161 - 105 - - - - Convert - - - - - 8 - 84 - 141 - 18 - - - - .NOT. => ! - - - - - - 8 - 68 - 141 - 18 - - - - && => // - - - - - - 8 - 52 - 137 - 18 - - - - * => // - - - - - - 8 - 20 - 137 - 18 - - - - Case - - - - - - 8 - 36 - 137 - 18 - - - - Tabs => Spaces - - - - - - - - - - 0 - 0 - 349 - 365 - - - - - - - - - 12 - 12 - 61 - 16 - - - - Executable: - - - - - - 76 - 12 - 225 - 20 - - - - Path to VSS executable - ss.exe - - - - - - 312 - 12 - 25 - 20 - - - - ... - - - - - - 12 - 52 - 61 - 16 - - - - Database: - - - - - - 76 - 48 - 225 - 20 - - - - Path to VSS database where <srcsave.ini> resides - - - - - - 312 - 48 - 25 - 20 - - - - ... - - - - - - - - - 218 - 384 - 75 - 24 - - - - Close - - - false - - - - - - 306 - 384 - 75 - 24 - - - - Cancel - - - false - - - - - - 394 - 384 - 75 - 24 - - - - Ok - - - false - - - - - - - - diff --git a/harbour/contrib/hbide/shortcuts.prg b/harbour/contrib/hbide/shortcuts.prg deleted file mode 100644 index 2f98037ff2..0000000000 --- a/harbour/contrib/hbide/shortcuts.prg +++ /dev/null @@ -1,1701 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour IDE - * - * Pritpal Bedi - * 04Apr2010 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbide.ch" -#include "hbqtgui.ch" -#include "common.ch" -#include "hbclass.ch" -#include "appevent.ch" - -/*----------------------------------------------------------------------*/ - -#define __listMethods_itemDoubleClicked__ 2001 -#define __listMethods_currentRowChanged__ 2002 -#define __tableMacros_itemSelectionChanged__ 2003 -#define __tableMacros_itemDoubleClicked__ 2004 -#define __buttonSet_clicked__ 2005 -#define __buttonNew_clicked__ 2006 -#define __buttonTest_clicked__ 2007 -#define __buttonLoad_clicked__ 2008 -#define __buttonSave_clicked__ 2009 -#define __buttonSaveAs_clicked__ 2010 -#define __buttonDelete_clicked__ 2011 -#define __QEvent_KeyPress__ 2012 - -/*----------------------------------------------------------------------*/ - -CLASS IdeShortcuts INHERIT IdeObject - - DATA oEdit - - DATA aHdr INIT {} - DATA aKeys INIT {} - DATA aMethods INIT {} - DATA aMtdItms INIT {} - DATA aDftSCuts INIT {} - DATA aDftSCutsItms INIT {} - - DATA cName - DATA cKey - DATA cAlt - DATA cCtrl - DATA cShift - DATA cMenu - DATA cBlock - DATA cIcon - - DATA qHiliter - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() - METHOD show() - METHOD execEvent( nEvent, p ) - METHOD buildUI() - METHOD buildSignals() - - METHOD buildBlock( cString ) - METHOD evalMacro( cString ) - METHOD test( cString, lWarn ) - METHOD execKey( oEdit, nKey, lAlt, lCtrl, lShift ) - METHOD execMacroByName( cName ) - METHOD mergeMacros( a_ ) - - METHOD loadDftSCuts() - METHOD loadMethods() - METHOD loadKeys() - - METHOD clearDftSCuts() - METHOD populateData( nMode ) - METHOD populateDftSCuts() - METHOD populateKeys() - METHOD populateMethods() - METHOD checkDuplicate( cKey, cAlt, cCtrl, cShift, nRow ) - METHOD controls2vrbls() - METHOD vrbls2controls( nRow ) - METHOD array2controls( nRow ) - METHOD array2table( nRow, a_ ) - METHOD vrbls2array( nRow ) - METHOD getMacrosList() - - /* Public API Methods */ - METHOD getWord( lSelect ) - METHOD getLine( nLine, lSelect ) - METHOD getText() - METHOD execTool( ... ) - - /* hbIDE defined Macros as API Methods */ - METHOD help( cTopic ) - METHOD exit( lWarn ) - METHOD newSource( cType ) - METHOD open() - METHOD save() - METHOD saveAs() - METHOD saveAll() - METHOD close() - METHOD print() - METHOD revertToSaved() - METHOD findDlg() - METHOD findDlgEx() - METHOD gotoLine( nLine ) - METHOD duplicateLine() - METHOD deleteLine() - METHOD moveLineUp() - METHOD moveLineDown() - METHOD indentRight() - METHOD indentLeft() - METHOD blockComment() - METHOD streamComment() - METHOD build( cProj ) - METHOD buildLaunch( cProj ) - METHOD reBuild( cProj ) - METHOD reBuildLaunch( cProj ) - METHOD launch( cProj ) - METHOD insert( cText ) - METHOD separator( cSep ) - METHOD findAgain() - METHOD replace() - METHOD toUpper() - METHOD toLower() - METHOD invertCase() - METHOD zoom( nKey ) - METHOD cut() - METHOD copy() - METHOD paste() - METHOD undo() - METHOD redo() - METHOD selectAll() - METHOD setBookMark() - METHOD gotoMark( nIndex ) - METHOD switchToReadOnly() - METHOD dlgKeyboardMappings() - METHOD dlgToolsAndUtils() - METHOD setView( cView ) - METHOD compilePPO() - METHOD single2doubleQuotes() - METHOD double2singleQuotes() - METHOD tabs2spaces() - METHOD removeTrailingSpaces() - METHOD presentSkeletons() - METHOD gotoFunction() - METHOD execPlugin( cPlugin, ... ) - - METHOD toggleCurrentLineHilight() - METHOD toggleLineNumbersDisplay() - METHOD toggleStatusBar() - - /* Selection Modes */ - METHOD toggleStreamSelectionMode() - METHOD toggleColumnSelectionMode() - METHOD toggleLineSelectionMode() - METHOD clearSelection() - METHOD togglePersistentSelection() - - /* Navigation */ - METHOD home() - METHOD end() - METHOD down() - METHOD up() - METHOD goBottom() - METHOD goTop() - METHOD left() - METHOD right() - METHOD panEnd() - METHOD panHome() - METHOD pageUp() - METHOD pageDown() - METHOD find( cString, nPosFrom ) - - METHOD toNextFunction() - METHOD toPrevFunction() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:new( oIde ) - - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:create( oIde ) - - DEFAULT oIde TO ::oIde - ::oIde := oIde - - ::loadMethods() - ::loadKeys() - ::loadDftSCuts() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:destroy() - LOCAL a_, qItm - - IF !empty( ::oUI ) - ::oUI:oWidget:disconnect( QEvent_Close ) - - ::qHiliter := NIL - - FOR EACH qItm IN ::aHdr - qItm := NIL - NEXT - ::aHdr := {} - - FOR EACH qItm IN ::aMtdItms - qItm := NIL - NEXT - ::aMtdItms := {} - - FOR EACH a_ IN ::aDftSCutsItms - FOR EACH qItm IN a_ - qItm := NIL - NEXT - NEXT - ::aDftSCutsItms := {} - - ::oUI:destroy() - ENDIF - - ::aMethods := NIL - ::aKeys := NIL - ::aDftSCuts := NIL - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:show() - - IF empty( ::oUI ) - ::buildUI() - ::populateData( 1 ) - ENDIF - - ::oIde:setPosAndSizeByIniEx( ::oUI:oWidget, ::oINI:cShortcutsDialogGeometry ) - ::oUI:show() - ::oUI:raise() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:execEvent( nEvent, p ) - LOCAL nRow, cMethod, cFile, cPath, cTemp, cExt, a_ - - IF ::lQuitting - RETURN Self - ENDIF - - SWITCH nEvent - - CASE __QEvent_KeyPress__ - MsgBox( "KeyPress on LabelMacros" ) - EXIT - CASE __buttonDelete_clicked__ - nRow := ::oUI:tableMacros:currentRow() - IF nRow >= 0 .AND. nRow < Len( ::aDftSCuts ) - nRow++ - IF hbide_getYesNo( "Delete", ::aDftSCuts[ nRow, 1 ], "A Delete Operation Requested" ) - hb_adel( ::aDftSCuts, nRow, .t. ) - ::clearDftSCuts() - ::populateDftSCuts() - ENDIF - IF nRow <= Len( ::aDftSCuts ) - ::oUI:tableMacros:setCurrentCell( nRow - 1, 0 ) - ENDIF - ENDIF - EXIT - CASE __buttonTest_clicked__ - IF .t. - ::controls2vrbls() - IF !empty( ::cBlock ) - ::test( ::cBlock, .t. ) - ENDIF - ENDIF - EXIT - CASE __buttonLoad_clicked__ - cTemp := hbide_fetchAFile( ::oDlg, "Select a macro file", { { "hbIDE Script File", "*.scu" } }, ::cPathShortcuts ) - IF ! Empty( cTemp ) - hb_fNameSplit( hbide_pathNormalized( cTemp, .f. ), @cPath, @cFile, @cExt ) - IF lower( cExt ) == ".scu" - a_:= hb_deSerialize( hb_memoread( cTemp ) ) - IF !empty( a_ ) - ::mergeMacros( a_ ) - ::clearDftSCuts() - ::populateDftSCuts() - ENDIF - ENDIF - ENDIF - EXIT - CASE __buttonSave_clicked__ - hbide_saveShortcuts( ::oIde, ::aDftSCuts ) - EXIT - CASE __buttonSaveAs_clicked__ - cTemp := hbide_saveAFile( ::oDlg, "Select a macro file", { { "hbIDE Script File", "*.scu" } }, ::cPathShortcuts, ".scu" ) - IF ! Empty( cTemp ) - hb_fNameSplit( hbide_pathNormalized( cTemp, .f. ), @cPath, @cFile, @cExt ) - cFile := hbide_pathToOSPath( cPath + cFile + "scu" ) - hbide_saveShortcuts( ::oIde, ::aDftSCuts, cFile ) - ENDIF - EXIT - CASE __buttonNew_clicked__ - IF .t. - ::controls2vrbls() - IF !empty( ::cName ) - IF !( ::checkDuplicate( ::cKey, ::cAlt, ::cCtrl, ::cShift ) ) - aadd( ::aDftSCuts, { ::cName, ::cKey, ::cAlt, ::cCtrl, ::cShift, ::cMenu, ::cBlock, ::cIcon } ) - aadd( ::aDftSCutsItms, array( 6 ) ) - ::oUI:tableMacros:setRowCount( ::oUI:tableMacros:rowCount() + 1 ) - ::array2table( Len( ::aDftSCuts ), { ::cName, ::cKey, ::cAlt, ::cCtrl, ::cShift, ::cMenu, ::cBlock, ::cIcon } ) - ELSE - MsgBox( "Current shortcut is already defined!" ) - ENDIF - ENDIF - ENDIF - EXIT - CASE __buttonSet_clicked__ - nRow := ::oUI:tableMacros:currentRow() - IF nRow >= 0 .AND. nRow < Len( ::aDftSCuts ) - nRow++ - ::controls2vrbls() - IF !empty( ::cName ) .AND. !( ::checkDuplicate( ::cKey, ::cAlt, ::cCtrl, ::cShift, nRow ) ) .AND. ::test( ::cBlock, .f. ) - ::vrbls2array( nRow ) - ::vrbls2controls( nRow ) - ENDIF - ENDIF - EXIT - CASE __tableMacros_itemDoubleClicked__ - EXIT - CASE __tableMacros_itemSelectionChanged__ - nRow := ::oUI:tableMacros:currentRow() - IF nRow >= 0 .AND. nRow < Len( ::aDftSCuts ) - nRow++ - ::array2controls( nRow ) - ENDIF - EXIT - CASE __listMethods_itemDoubleClicked__ - IF ( nRow := ::oUI:listMethods:currentRow() ) >= 0 - nRow++ - IF !empty( ::aMethods[ nRow, 2 ] ) - cMethod := "::" + ::aMethods[ nRow, 2 ] - ::oUI:plainBlock:insertPlainText( cMethod ) - ENDIF - ENDIF - EXIT - CASE __listMethods_currentRowChanged__ - IF p >= 0 .AND. p < Len( ::aMethods ) - ::oUI:texteditSyntax:setPlainText( ::aMethods[ p+1, 3 ] ) - ENDIF - EXIT - ENDSWITCH - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:array2controls( nRow ) - LOCAL cKey, nKey - - ::oUI:editName:setText( ::aDftSCuts[ nRow, 1 ] ) - - cKey := ::aDftSCuts[ nRow, 2 ] - IF ( nKey := ascan( ::aKeys, {|e_| e_[ 2 ] == cKey } ) ) > 0 - ::oUI:comboKey:setCurrentIndex( nKey - 1 ) - ENDIF - - ::oUI:checkAlt :setChecked( ::aDftSCuts[ nRow, 3 ] == "YES" ) - ::oUI:checkCtrl :setChecked( ::aDftSCuts[ nRow, 4 ] == "YES" ) - ::oUI:checkShift:setChecked( ::aDftSCuts[ nRow, 5 ] == "YES" ) - - ::oUI:editMenu:setText( ::aDftSCuts[ nRow, 6 ] ) - - ::oUI:plainBlock:setPlainText( ::aDftSCuts[ nRow, 7 ] ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:vrbls2array( nRow ) - - IF nRow == NIL - aadd( ::aDftSCuts, array( 7 ) ) - nRow := Len( ::aDftSCuts ) - ENDIF - - ::aDftSCuts[ nRow, 1 ] := ::cName - ::aDftSCuts[ nRow, 2 ] := ::cKey - ::aDftSCuts[ nRow, 3 ] := ::cAlt - ::aDftSCuts[ nRow, 4 ] := ::cCtrl - ::aDftSCuts[ nRow, 5 ] := ::cShift - ::aDftSCuts[ nRow, 6 ] := ::cMenu - ::aDftSCuts[ nRow, 7 ] := ::cBlock - //::aDftSCuts[ nRow, 8 ] := ::cIcon - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:vrbls2controls( nRow ) - - ::aDftSCutsItms[ nRow, 1 ]:setIcon( QIcon( hbide_image( ::cIcon ) ) ) - ::aDftSCutsItms[ nRow, 2 ]:setText( ::cName ) - ::aDftSCutsItms[ nRow, 3 ]:setText( ::cKey ) - ::aDftSCutsItms[ nRow, 4 ]:setIcon( QIcon( hbide_image( iif( ::cAlt == "YES", "check", "" ) ) ) ) - ::aDftSCutsItms[ nRow, 5 ]:setIcon( QIcon( hbide_image( iif( ::cCtrl == "YES", "check", "" ) ) ) ) - ::aDftSCutsItms[ nRow, 6 ]:setIcon( QIcon( hbide_image( iif( ::cShift == "YES", "check", "" ) ) ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:array2table( nRow, a_ ) - LOCAL q0, q1, q2, q3, q4, q5 - LOCAL oTbl := ::oUI:tableMacros - LOCAL n := nRow - 1 - - q0 := QTableWidgetItem() - q0:setIcon( QIcon( hbide_image( a_[ 8 ] ) ) ) - oTbl:setItem( n, 0, q0 ) - - q1 := QTableWidgetItem() - q1:setText( a_[ 1 ] ) - oTbl:setItem( n, 1, q1 ) - - q2 := QTableWidgetItem() - q2:setText( a_[ 2 ] ) - oTbl:setItem( n, 2, q2 ) - - q3 := QTableWidgetItem() - q3:setIcon( QIcon( iif( a_[ 3 ] == "YES", hbide_image( "check" ), "" ) ) ) - oTbl:setItem( n, 3, q3 ) - - q4 := QTableWidgetItem() - q4:setIcon( QIcon( iif( a_[ 4 ] == "YES", hbide_image( "check" ), "" ) ) ) - oTbl:setItem( n, 4, q4 ) - - q5 := QTableWidgetItem() - q5:setIcon( QIcon( iif( a_[ 5 ] == "YES", hbide_image( "check" ), "" ) ) ) - oTbl:setItem( n, 5, q5 ) - - oTbl:setRowHeight( n, 16 ) - - ::aDftSCutsItms[ nRow, 1 ] := q0 - ::aDftSCutsItms[ nRow, 2 ] := q1 - ::aDftSCutsItms[ nRow, 3 ] := q2 - ::aDftSCutsItms[ nRow, 4 ] := q3 - ::aDftSCutsItms[ nRow, 5 ] := q4 - ::aDftSCutsItms[ nRow, 6 ] := q5 - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:controls2vrbls() - LOCAL nRow := ::oUI:comboKey:currentIndex() - - IF nRow >= 0 - nRow++ - ::cName := ::oUI:editName:text() - ::cKey := ::aKeys[ nRow, 2 ] - ::cAlt := iif( ::oUI:checkAlt :isChecked(), "YES", "NO" ) - ::cCtrl := iif( ::oUI:checkCtrl :isChecked(), "YES", "NO" ) - ::cShift := iif( ::oUI:checkShift:isChecked(), "YES", "NO" ) - ::cMenu := ::oUI:editMenu:text() - ::cBlock := ::oUI:plainBlock:toPlainText() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:checkDuplicate( cKey, cAlt, cCtrl, cShift, nRow ) - LOCAL lYes, e_ - - IF empty( nRow ) - lYes := ascan( ::aDftSCuts, {|e_| e_[ 2 ] == cKey .AND. e_[ 3 ] == cAlt .AND. ; - e_[ 4 ] == cCtrl .AND. e_[ 5 ] == cShift } ) > 0 - ELSE - lYes := .f. - FOR EACH e_ IN ::aDftSCuts - IF e_:__enumIndex() != nRow - IF e_[ 2 ] == cKey .AND. e_[ 3 ] == cAlt .AND. e_[ 4 ] == cCtrl .AND. e_[ 5 ] == cShift - lYes := .t. - EXIT - ENDIF - ENDIF - NEXT - ENDIF - - RETURN lYes - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:buildUI() - LOCAL oTbl, n, qItm - LOCAL hdr_:= { { "Img", 30 }, { "Name", 190 }, { "Key", 50 }, { "Alt", 30 }, { "Ctrl", 30 }, { "Shift", 30 } } - - ::oUI := hbide_getUI( "shortcuts" ) - ::oUI:setWindowIcon( QIcon( hbide_image( "hbide" ) ) ) - ::oUI:setParent( ::oDlg:oWidget ) - ::oUI:setWindowFlags( Qt_Sheet ) - - ::oUI:oWidget:connect( QEvent_Close, {|| ::oIde:oINI:cShortcutsDialogGeometry := hbide_posAndSize( ::oUI:oWidget ) } ) - - oTbl := ::oUI:tableMacros /* Build Table Header */ - oTbl:verticalHeader():hide() - oTbl:horizontalHeader():setStretchLastSection( .t. ) - oTbl:setAlternatingRowColors( .t. ) - oTbl:setColumnCount( Len( hdr_ ) ) - oTbl:setShowGrid( .t. ) - oTbl:setSelectionMode( QAbstractItemView_SingleSelection ) - oTbl:setSelectionBehavior( QAbstractItemView_SelectRows ) - FOR n := 1 TO Len( hdr_ ) - qItm := QTableWidgetItem() - qItm:setText( hdr_[ n,1 ] ) - oTbl:setHorizontalHeaderItem( n-1, qItm ) - oTbl:setColumnWidth( n-1, hdr_[ n,2 ] ) - aadd( ::aHdr, qItm ) - NEXT - - ::oUI:listMethods:setAlternatingRowColors( .t. ) /* Public Methods List */ - - ::qHiliter := ::oTH:SetSyntaxHilighting( ::oUI:plainBlock, "Pritpal's Favourite" ) - - ::buildSignals() - - /* Demonstration only */ - ::oUI:labelMacros:setFocusPolicy( Qt_StrongFocus ) - ::oUI:labelMacros:connect( QEvent_KeyPress, {|p| ::execEvent( __QEvent_KeyPress__, p ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:buildSignals() - - ::oUI:buttonNew :connect( "clicked()" , {| | ::execEvent( __buttonNew_clicked__ ) } ) - ::oUI:buttonSet :connect( "clicked()" , {| | ::execEvent( __buttonSet_clicked__ ) } ) - ::oUI:buttonTest :connect( "clicked()" , {| | ::execEvent( __buttonTest_clicked__ ) } ) - ::oUI:buttonLoad :connect( "clicked()" , {| | ::execEvent( __buttonLoad_clicked__ ) } ) - ::oUI:buttonSave :connect( "clicked()" , {| | ::execEvent( __buttonSave_clicked__ ) } ) - ::oUI:buttonSaveAs:connect( "clicked()" , {| | ::execEvent( __buttonSaveAs_clicked__ ) } ) - ::oUI:buttonDelete:connect( "clicked()" , {| | ::execEvent( __buttonDelete_clicked__ ) } ) - ::oUI:listMethods :connect( "itemDoubleClicked(QListWidgetItem*)" , {|p| ::execEvent( __listMethods_itemDoubleClicked__ , p ) } ) - ::oUI:listMethods :connect( "currentRowChanged(int)" , {|p| ::execEvent( __listMethods_currentRowChanged__ , p ) } ) - ::oUI:tableMacros :connect( "itemSelectionChanged()" , {| | ::execEvent( __tableMacros_itemSelectionChanged__ ) } ) - ::oUI:tableMacros :connect( "itemDoubleClicked(QTableWidgetItem*)", {|p| ::execEvent( __tableMacros_itemDoubleClicked__ , p ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:populateData( nMode ) - - IF nMode == 1 - ::populateMethods() - ::populateKeys() - ::populateDftSCuts() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:clearDftSCuts() - LOCAL a_, qItm - LOCAL oTbl := ::oUI:tableMacros - - FOR EACH a_ IN ::aDftSCutsItms - FOR EACH qItm IN a_ - qItm := NIL - NEXT - NEXT - ::aDftSCutsItms := {} - - oTbl:clearContents() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:populateDftSCuts() - LOCAL a_, nRow - LOCAL oTbl := ::oUI:tableMacros - LOCAL qApp := QApplication() - - oTbl:setRowCount( Len( ::aDftSCuts ) ) - - nRow := 0 - FOR EACH a_ IN ::aDftSCuts - nRow++ - aadd( ::aDftSCutsItms, array( 6 ) ) - ::array2table( nRow, a_ ) - qApp:processEvents() - IF ::lQuitting - EXIT - ENDIF - NEXT - oTbl:setCurrentCell( 0,0 ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:populateMethods() - LOCAL qItem, a_ - LOCAL qLW := ::oUI:listMethods - - //qLW:setSortingEnabled( .t. ) - - FOR EACH a_ IN ::aMethods - IF !empty( a_[ 1 ] ) - qItem := QListWidgetItem() - - IF left( a_[ 1 ], 1 ) == " " - qItem:setText( alltrim( a_[ 1 ] ) ) - qItem:setForeground( QBrush( QColor( 255,0,0 ) ) ) - qItem:setBackground( QBrush( QColor( 255,255,200 ) ) ) - qItem:setTextAlignment( Qt_AlignHCenter ) - ELSE - qItem:setText( a_[ 1 ] ) - ENDIF - aadd( ::aMtdItms, qItem ) - qLW:addItem( qItem ) - ENDIF - NEXT - qLW:setCurrentRow( 0 ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:populateKeys() - LOCAL a_ - LOCAL oCB := ::oUI:comboKey - - FOR EACH a_ IN ::aKeys - oCB:addItem( a_[ 2 ] ) - NEXT - oCB:setCurrentIndex( -1 ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:buildBlock( cString ) - LOCAL n, cBlock, cParam - LOCAL a_:= hbide_memoTOarray( cString ) - - cString := "" - aeval( a_, {|e| cString += e } ) - - IF ( n := at( "|", cString ) ) > 0 - cString := substr( cString, n + 1 ) - IF ( n := at( "|", cString ) ) == 0 - RETURN Self - ENDIF - cParam := substr( cString, 1, n - 1 ) - cString := substr( cString, n + 1 ) - cBlock := "{|o," + cParam + "|" + cString + " }" - ELSE - cBlock := "{|o| " + cString + " }" - ENDIF - cBlock := strtran( cBlock, "::", "o:" ) - - RETURN cBlock - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:test( cString, lWarn ) - LOCAL cBlock, oErr, bBlock - LOCAL lOk := .f. - LOCAL bError := ErrorBlock( {|o| break( o ) } ) - - cBlock := ::buildBlock( cString ) - - BEGIN SEQUENCE - bBlock := &( cBlock ) - lOk := .t. - IF lWarn - MsgBox( "Script compiles fine!", "Syntax checking", , , , bBlock ) - ENDIF - RECOVER USING oErr - MsgBox( "Wrongly defined script, try: |v| ::method( v )", oErr:description ) - END SEQUENCE - - ErrorBlock( bError ) - ::oUI:raise() - ::oUI:setFocus() - - RETURN lOk - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:evalMacro( cString ) - LOCAL bError := ErrorBlock( {|o| break( o ) } ) - LOCAL oErr, bBlock, cBlock - LOCAL lEvaluated := .f. - - cBlock := ::buildBlock( cString ) - - bBlock := &( cBlock ) - - BEGIN SEQUENCE - eval( bBlock, self ) - lEvaluated := .t. - RECOVER USING oErr - HB_SYMBOL_UNUSED( oErr ) - END SEQUENCE - - ErrorBlock( bError ) - RETURN lEvaluated - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:execKey( oEdit, nKey, lAlt, lCtrl, lShift ) - LOCAL lExecuted := .f. - LOCAL cKey, n - - IF ( n := ascan( ::aKeys, {|e_| e_[ 1 ] == nKey } ) ) > 0 - - ::oEdit := oEdit - - cKey := ::aKeys[ n, 2 ] - - n := ascan( ::aDftSCuts, {|e_| e_[ 2 ] == cKey .AND. ; - e_[ 3 ] == iif( lAlt , "YES", "NO" ) .AND. ; - e_[ 4 ] == iif( lCtrl , "YES", "NO" ) .AND. ; - e_[ 5 ] == iif( lShift, "YES", "NO" ) } ) - IF n > 0 - IF ! empty( ::aDftSCuts[ n, 7 ] ) - HB_TRACE( HB_TR_DEBUG, nKey, lAlt, lCtrl, lShift, cKey ) - - lExecuted := ::evalMacro( ::aDftSCuts[ n, 7 ] ) - ENDIF - ENDIF - ENDIF - - RETURN lExecuted - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:execMacroByName( cName ) - LOCAL n, lExecuted := .f. - - IF ( n := ascan( ::aDftSCuts, {|e_| e_[ 1 ] == cName } ) ) > 0 - ::oEdit := ::oEM:getEditObjectCurrent() - IF ! empty( ::aDftSCuts[ n, 7 ] ) - lExecuted := ::evalMacro( ::aDftSCuts[ n, 7 ] ) - ENDIF - ENDIF - - RETURN lExecuted - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:getMacrosList() - LOCAL aList := {} - - aeval( ::aDftSCuts, {|e_| aadd( aList, e_[ 1 ] ) } ) - - RETURN aList - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:loadKeys() - LOCAL a_ - - aadd( ::aKeys, { Qt_Key_Escape , "Escape " } ) - aadd( ::aKeys, { Qt_Key_Tab , "Tab " } ) - aadd( ::aKeys, { Qt_Key_Backtab , "Backtab " } ) - aadd( ::aKeys, { Qt_Key_Backspace , "Backspace " } ) - aadd( ::aKeys, { Qt_Key_Return , "Return " } ) - aadd( ::aKeys, { Qt_Key_Enter , "Enter " } ) - aadd( ::aKeys, { Qt_Key_Insert , "Insert " } ) - aadd( ::aKeys, { Qt_Key_Delete , "Delete " } ) - aadd( ::aKeys, { Qt_Key_Pause , "Pause " } ) - aadd( ::aKeys, { Qt_Key_Print , "Print " } ) - aadd( ::aKeys, { Qt_Key_SysReq , "SysReq " } ) - aadd( ::aKeys, { Qt_Key_Clear , "Clear " } ) - aadd( ::aKeys, { Qt_Key_Home , "Home " } ) - aadd( ::aKeys, { Qt_Key_End , "End " } ) - aadd( ::aKeys, { Qt_Key_Left , "Left " } ) - aadd( ::aKeys, { Qt_Key_Up , "Up " } ) - aadd( ::aKeys, { Qt_Key_Right , "Right " } ) - aadd( ::aKeys, { Qt_Key_Down , "Down " } ) - aadd( ::aKeys, { Qt_Key_PageUp , "PageUp " } ) - aadd( ::aKeys, { Qt_Key_PageDown , "PageDown " } ) - aadd( ::aKeys, { Qt_Key_CapsLock , "CapsLock " } ) - aadd( ::aKeys, { Qt_Key_NumLock , "NumLock " } ) - aadd( ::aKeys, { Qt_Key_ScrollLock , "ScrollLock " } ) - aadd( ::aKeys, { Qt_Key_F1 , "F1 " } ) - aadd( ::aKeys, { Qt_Key_F2 , "F2 " } ) - aadd( ::aKeys, { Qt_Key_F3 , "F3 " } ) - aadd( ::aKeys, { Qt_Key_F4 , "F4 " } ) - aadd( ::aKeys, { Qt_Key_F5 , "F5 " } ) - aadd( ::aKeys, { Qt_Key_F6 , "F6 " } ) - aadd( ::aKeys, { Qt_Key_F7 , "F7 " } ) - aadd( ::aKeys, { Qt_Key_F8 , "F8 " } ) - aadd( ::aKeys, { Qt_Key_F9 , "F9 " } ) - aadd( ::aKeys, { Qt_Key_F10 , "F10 " } ) - aadd( ::aKeys, { Qt_Key_F11 , "F11 " } ) - aadd( ::aKeys, { Qt_Key_F12 , "F12 " } ) - aadd( ::aKeys, { Qt_Key_F13 , "F13 " } ) - aadd( ::aKeys, { Qt_Key_F14 , "F14 " } ) - aadd( ::aKeys, { Qt_Key_F15 , "F15 " } ) - aadd( ::aKeys, { Qt_Key_F16 , "F16 " } ) - aadd( ::aKeys, { Qt_Key_F17 , "F17 " } ) - aadd( ::aKeys, { Qt_Key_F18 , "F18 " } ) - aadd( ::aKeys, { Qt_Key_F19 , "F19 " } ) - aadd( ::aKeys, { Qt_Key_F20 , "F20 " } ) - aadd( ::aKeys, { Qt_Key_F21 , "F21 " } ) - aadd( ::aKeys, { Qt_Key_F22 , "F22 " } ) - aadd( ::aKeys, { Qt_Key_F23 , "F23 " } ) - aadd( ::aKeys, { Qt_Key_F24 , "F24 " } ) - aadd( ::aKeys, { Qt_Key_F25 , "F25 " } ) - aadd( ::aKeys, { Qt_Key_F26 , "F26 " } ) - aadd( ::aKeys, { Qt_Key_F27 , "F27 " } ) - aadd( ::aKeys, { Qt_Key_F28 , "F28 " } ) - aadd( ::aKeys, { Qt_Key_F29 , "F29 " } ) - aadd( ::aKeys, { Qt_Key_F30 , "F30 " } ) - aadd( ::aKeys, { Qt_Key_F31 , "F31 " } ) - aadd( ::aKeys, { Qt_Key_F32 , "F32 " } ) - aadd( ::aKeys, { Qt_Key_F33 , "F33 " } ) - aadd( ::aKeys, { Qt_Key_F34 , "F34 " } ) - aadd( ::aKeys, { Qt_Key_F35 , "F35 " } ) - aadd( ::aKeys, { Qt_Key_Space , "Space " } ) - aadd( ::aKeys, { Qt_Key_Exclam , "Exclam " } ) - aadd( ::aKeys, { Qt_Key_QuoteDbl , "QuoteDbl " } ) - aadd( ::aKeys, { Qt_Key_NumberSign , "NumberSign " } ) - aadd( ::aKeys, { Qt_Key_Dollar , "Dollar " } ) - aadd( ::aKeys, { Qt_Key_Percent , "Percent " } ) - aadd( ::aKeys, { Qt_Key_Ampersand , "Ampersand " } ) - aadd( ::aKeys, { Qt_Key_Apostrophe , "Apostrophe " } ) - aadd( ::aKeys, { Qt_Key_ParenLeft , "ParenLeft " } ) - aadd( ::aKeys, { Qt_Key_ParenRight , "ParenRight " } ) - aadd( ::aKeys, { Qt_Key_Asterisk , "Asterisk " } ) - aadd( ::aKeys, { Qt_Key_Plus , "Plus " } ) - aadd( ::aKeys, { Qt_Key_Comma , "Comma " } ) - aadd( ::aKeys, { Qt_Key_Minus , "Minus " } ) - aadd( ::aKeys, { Qt_Key_Period , "Period " } ) - aadd( ::aKeys, { Qt_Key_Slash , "Slash " } ) - aadd( ::aKeys, { Qt_Key_0 , "0 " } ) - aadd( ::aKeys, { Qt_Key_1 , "1 " } ) - aadd( ::aKeys, { Qt_Key_2 , "2 " } ) - aadd( ::aKeys, { Qt_Key_3 , "3 " } ) - aadd( ::aKeys, { Qt_Key_4 , "4 " } ) - aadd( ::aKeys, { Qt_Key_5 , "5 " } ) - aadd( ::aKeys, { Qt_Key_6 , "6 " } ) - aadd( ::aKeys, { Qt_Key_7 , "7 " } ) - aadd( ::aKeys, { Qt_Key_8 , "8 " } ) - aadd( ::aKeys, { Qt_Key_9 , "9 " } ) - aadd( ::aKeys, { Qt_Key_Colon , "Colon " } ) - aadd( ::aKeys, { Qt_Key_Semicolon , "Semicolon " } ) - aadd( ::aKeys, { Qt_Key_Less , "Less " } ) - aadd( ::aKeys, { Qt_Key_Equal , "Equal " } ) - aadd( ::aKeys, { Qt_Key_Greater , "Greater " } ) - aadd( ::aKeys, { Qt_Key_Question , "Question " } ) - aadd( ::aKeys, { Qt_Key_At , "At " } ) - aadd( ::aKeys, { Qt_Key_A , "A " } ) - aadd( ::aKeys, { Qt_Key_B , "B " } ) - aadd( ::aKeys, { Qt_Key_C , "C " } ) - aadd( ::aKeys, { Qt_Key_D , "D " } ) - aadd( ::aKeys, { Qt_Key_E , "E " } ) - aadd( ::aKeys, { Qt_Key_F , "F " } ) - aadd( ::aKeys, { Qt_Key_G , "G " } ) - aadd( ::aKeys, { Qt_Key_H , "H " } ) - aadd( ::aKeys, { Qt_Key_I , "I " } ) - aadd( ::aKeys, { Qt_Key_J , "J " } ) - aadd( ::aKeys, { Qt_Key_K , "K " } ) - aadd( ::aKeys, { Qt_Key_L , "L " } ) - aadd( ::aKeys, { Qt_Key_M , "M " } ) - aadd( ::aKeys, { Qt_Key_N , "N " } ) - aadd( ::aKeys, { Qt_Key_O , "O " } ) - aadd( ::aKeys, { Qt_Key_P , "P " } ) - aadd( ::aKeys, { Qt_Key_Q , "Q " } ) - aadd( ::aKeys, { Qt_Key_R , "R " } ) - aadd( ::aKeys, { Qt_Key_S , "S " } ) - aadd( ::aKeys, { Qt_Key_T , "T " } ) - aadd( ::aKeys, { Qt_Key_U , "U " } ) - aadd( ::aKeys, { Qt_Key_V , "V " } ) - aadd( ::aKeys, { Qt_Key_W , "W " } ) - aadd( ::aKeys, { Qt_Key_X , "X " } ) - aadd( ::aKeys, { Qt_Key_Y , "Y " } ) - aadd( ::aKeys, { Qt_Key_Z , "Z " } ) - aadd( ::aKeys, { Qt_Key_BracketLeft , "BracketLeft " } ) - aadd( ::aKeys, { Qt_Key_Backslash , "Backslash " } ) - aadd( ::aKeys, { Qt_Key_BracketRight , "BracketRight " } ) - aadd( ::aKeys, { Qt_Key_AsciiCircum , "AsciiCircum " } ) - aadd( ::aKeys, { Qt_Key_Underscore , "Underscore " } ) - aadd( ::aKeys, { Qt_Key_QuoteLeft , "QuoteLeft " } ) - aadd( ::aKeys, { Qt_Key_BraceLeft , "BraceLeft " } ) - aadd( ::aKeys, { Qt_Key_Bar , "Bar " } ) - aadd( ::aKeys, { Qt_Key_BraceRight , "BraceRight " } ) - aadd( ::aKeys, { Qt_Key_AsciiTilde , "AsciiTilde " } ) - - FOR EACH a_ IN ::aKeys - a_[ 2 ] := trim( a_[ 2 ] ) - NEXT - RETURN Self - -/*----------------------------------------------------------------------*/ -// Edit Instance Specific / Override from top route -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:getWord( lSelect ) - RETURN ::oEdit:getWord( lSelect ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:getLine( nLine, lSelect ) - RETURN ::oEdit:getLine( nLine, lSelect ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:getText() - RETURN ::oEdit:getText() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:duplicateLine() - RETURN ::oEdit:duplicateLine() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:deleteLine() - RETURN ::oEdit:deleteLine() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:moveLineUp() - RETURN ::oEdit:moveLine( -1 ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:moveLineDown() - RETURN ::oEdit:moveLine( 1 ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:gotoLine( nLine ) - RETURN ::oEdit:goTo( nLine ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:indentRight() - RETURN ::oEdit:blockIndent( 1 ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:indentLeft() - RETURN ::oEdit:blockIndent( -1 ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:blockComment() - RETURN ::oEdit:blockComment() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:streamComment() - RETURN ::oEdit:streamComment() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:insert( cText ) - RETURN ::oEdit:insertText( cText ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:separator( cSep ) - RETURN ::oEdit:insertSeparator( cSep ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:print() - RETURN ::oEdit:printPreview() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:toUpper() - RETURN ::oEdit:caseUpper() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:toLower() - RETURN ::oEdit:caseLower() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:invertCase() - RETURN ::oEdit:caseInvert() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:zoom( nKey ) - RETURN ::oEdit:zoom( nKey ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:cut() - RETURN ::oEdit:cut() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:copy() - RETURN ::oEdit:copy() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:paste() - RETURN ::oEdit:paste() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:selectAll() - RETURN ::oEdit:selectAll() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:redo() - RETURN ::oEdit:redo() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:undo() - RETURN ::oEdit:undo() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:setBookMark() - RETURN ::oEdit:setNewMark() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:gotoMark( nIndex ) - RETURN ::oEdit:gotoMark( nIndex ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:switchToReadOnly() - RETURN ::oEdit:setReadOnly() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:single2doubleQuotes() - RETURN ::oEdit:convertDQuotes() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:double2singleQuotes() - RETURN ::oEdit:convertQuotes() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:tabs2spaces() - RETURN ::oEdit:tabs2spaces() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:removeTrailingSpaces() - RETURN ::oEdit:removeTrailingSpaces() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:toggleLineNumbersDisplay() - RETURN ::oEdit:toggleLineNumbers() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:presentSkeletons() - RETURN ::oEdit:presentSkeletons() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:gotoFunction() - RETURN ::oEdit:gotoFunction() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:toggleCurrentLineHilight() - RETURN ::oEdit:toggleCurrentLineHighlightMode() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:toggleStreamSelectionMode() - RETURN ::oEdit:toggleStreamSelectionMode() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:toggleColumnSelectionMode() - RETURN ::oEdit:toggleColumnSelectionMode() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:toggleLineSelectionMode() - RETURN ::oEdit:toggleLineSelectionMode() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:togglePersistentSelection() - RETURN ::oEdit:togglePersistentSelection() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:clearSelection() - RETURN ::oEdit:clearSelection() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:findAgain() - RETURN ::oEdit:findEx() -/*----------------------------------------------------------------------*/ -// Navigation -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:home() - RETURN ::oEM:home() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:end() - RETURN ::oEM:end() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:down() - RETURN ::oEM:down() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:up() - RETURN ::oEM:up() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:goBottom() - RETURN ::oEM:goBottom() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:goTop() - RETURN ::oEM:goTop() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:left() - RETURN ::oEM:left() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:right() - RETURN ::oEM:right() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:panEnd() - RETURN ::oEM:panEnd() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:panHome() - RETURN ::oEM:panHome() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:pageUp() - RETURN ::oEM:pageUp() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:pageDown() - RETURN ::oEM:pageDown() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:find( cString, nPosFrom ) - RETURN ::oEM:find( cString, nPosFrom ) -/*----------------------------------------------------------------------*/ -// Other Cpmponents -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:replace() - IF !empty( ::qCurEdit ) - ::oFR:replace() - ENDIF - RETURN Self -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:execTool( ... ) - RETURN ::oTM:execTool( ... ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:help( cTopic ) - HB_SYMBOL_UNUSED( cTopic ) - RETURN ::oHelpDock:show() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:exit( lWarn ) - IF HB_ISLOGICAL( lWarn ) .AND. lWarn - IF hbide_getYesNo( "Exit HbIDE ?", , "Macro Executed" ) - PostAppEvent( xbeP_Close, NIL, NIL, ::oDlg ) - ENDIF - ELSE - PostAppEvent( xbeP_Close, NIL, NIL, ::oDlg ) - ENDIF - RETURN Self -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:newSource( cType ) - HB_SYMBOL_UNUSED( cType ) - RETURN ::oSM:editSource( '' ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:open() - RETURN ::oSM:openSource() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:save() - RETURN ::oSM:saveSource( ::oEM:getTabCurrent(), .f., .f. ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:saveAs() - RETURN ::oSM:saveSource( ::oEM:getTabCurrent(), .t., .t. ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:saveAll() - RETURN ::oSM:saveAllSources() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:close() - RETURN ::oSM:closeSource() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:revertToSaved() - RETURN Self -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:findDlg() - IF !Empty( ::qCurEdit ) - ::oFR:show() - ENDIF - RETURN Self -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:findDlgEx() - IF !Empty( ::qCurEdit ) - ::oSearchReplace:beginFind() - ENDIF - RETURN Self -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:build( cProj ) - IF ! HB_ISSTRING( cProj ) - cProj := "" - ENDIF - RETURN ::oPM:buildProject( cProj, .F., .F. ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:buildLaunch( cProj ) - IF ! HB_ISSTRING( cProj ) - cProj := "" - ENDIF - RETURN ::oPM:buildProject( cProj, .T., .F. ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:reBuild( cProj ) - IF ! HB_ISSTRING( cProj ) - cProj := "" - ENDIF - RETURN ::oPM:buildProject( cProj, .F., .T. ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:reBuildLaunch( cProj ) - IF ! HB_ISSTRING( cProj ) - cProj := "" - ENDIF - RETURN ::oPM:buildProject( cProj, .T., .T. ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:launch( cProj ) - IF ! HB_ISSTRING( cProj ) - cProj := "" - ENDIF - RETURN ::oPM:launchProject( cProj ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:dlgKeyboardMappings() - RETURN ::oTM:show() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:dlgToolsAndUtils() - RETURN ::oSC:show() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:setView( cView ) - IF empty( cView ) - cView := "Stats" - ENDIF - RETURN ::oDK:setView( cView ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:compilePPO() - RETURN ::oPM:buildProject( '', .F., .F., .T., .T. ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:toggleStatusBar() - IF ::lStatusBarVisible - ::oSBar:oWidget:hide() - ELSE - ::oSBar:oWidget:show() - ENDIF - ::oIde:lStatusBarVisible := ! ::lStatusBarVisible - RETURN Self -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:execPlugin( cPlugin, ... ) - RETURN hbide_execPlugin( cPlugin, ::oIde, ... ) -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:toNextFunction() - RETURN ::oEdit:toNextFunction() -/*----------------------------------------------------------------------*/ -METHOD IdeShortcuts:toPrevFunction() - RETURN ::oEdit:toPreviousFunction() -/*----------------------------------------------------------------------*/ -// Public API Definitions -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:loadMethods() - - aadd( ::aMethods, { ' General', ; - '', ; - 'General API Methods follow.' } ) - //........................................................// - aadd( ::aMethods, { 'help( cTopic )', ; - 'help( "" )', ; - 'Invokes "Help" docking widget in the right docking area. is not active yet.' } ) - aadd( ::aMethods, { 'exit( lWarn )', ; - 'exit( .f. )', ; - 'Exits hbIDE. If then confirmation is requested through a popup dialog. All sources are saved if in modified state after confirmation to do so.' } ) - aadd( ::aMethods, { 'execTool( cName )' , ; - 'execTool( "" )' , ; - 'Executes a Tool defined and visible under tools menu.' } ) - aadd( ::aMethods, { 'execTool( cCmd, cParams, cStartIn, lCapture, lShowOutput )' , ; - 'execTool( "", "", "", .f., .f. )', ; - 'Executes a program or file with parameters and other attributes.' + hb_eol() + ; - 'http://hbide.vouch.info/ ( Topic: Tools and Utilities )' } ) - aadd( ::aMethods, { 'execPlugin( cPlugin )', ; - 'execPlugin( "" )', ; - 'Attempts to execute third-party plugins. First parameter passed is the instance to SELF exposing public API methods. Next parameters are passes as a list.' } ) - aadd( ::aMethods, { 'setBookMark()' , ; - 'setBookMark()' , ; - 'Attempts to install a bookmark onto current cursor position. If successful, mark appears as a colored tool-button on the statusbar and marked line is highlighted with the same color.' } ) - aadd( ::aMethods, { 'gotoMark( nIndex )' , ; - 'gotoMark( 1 )' , ; - 'Attempts to reach mark represented by . Please note maximum 6 bookmarks are avialable per edit instance.' } ) - aadd( ::aMethods, { 'setView( cView )' , ; - 'setView( "" )' , ; - 'Brings panel to front. Defaults to "Stats", i.e., tab.' } ) - aadd( ::aMethods, { 'presentSkeletons()', ; - 'presentSkeletons()', ; - 'Present snippets for selection.' } ) - aadd( ::aMethods, { 'gotoFunction()', ; - 'gotoFunction()', ; - 'Takes under-cursor word and attempts to open the source containing that function in a new tab.' } ) - aadd( ::aMethods, { 'toNextFunction()', ; - 'toNextFunction()', ; - 'Attempts to position the cursor at next available function body. Cursor is positioned centered in the editor.' } ) - aadd( ::aMethods, { 'toPrevFunction()', ; - 'toPrevFunction()', ; - 'Attempts to position the cursor at previous function body. Cursor is positioned centered in the editor.' } ) - - aadd( ::aMethods, { ' Navigation', ; - '', ; - 'Navigation API Methods follow.' } ) - //........................................................// - aadd( ::aMethods, { 'down()', ; - 'down()', ; - 'Cursor is positioned one row down.' } ) - aadd( ::aMethods, { 'up()', ; - 'up()', ; - 'Cursor is positioned one row up.' } ) - aadd( ::aMethods, { 'pageDown()', ; - 'pageDown()', ; - 'Cursor is positioned one page down.' } ) - aadd( ::aMethods, { 'pageUp()', ; - 'pageUp()', ; - 'Cursor is positioned one page up.' } ) - aadd( ::aMethods, { 'goBottom()', ; - 'goBottom()', ; - 'Cursor is positioned at the end of the source.' } ) - aadd( ::aMethods, { 'goTop()', ; - 'goTop()', ; - 'Cursor is positioned at the begining of the source.' } ) - aadd( ::aMethods, { 'right()', ; - 'right()', ; - 'Cursor is positioned one character to the right. If there is no character to the right in current line, cursor is positioned on next line, character 0.' } ) - aadd( ::aMethods, { 'left()', ; - 'left()', ; - 'Cursor is positioned one character to the left. If there is no character to the left in current line, cursor is positioned on previous line, last character.' } ) - aadd( ::aMethods, { 'end()', ; - 'end()', ; - 'Cursor is positioned at the right-most column.' } ) - aadd( ::aMethods, { 'home()', ; - 'home()', ; - 'Cursor is positioned at the left-most column.' } ) - aadd( ::aMethods, { 'panEnd()', ; - 'panEnd()', ; - 'Cursor is positioned last visible column in the viewport.' } ) - aadd( ::aMethods, { 'panHome()', ; - 'panHome()', ; - 'Cursor is positioned first visible column in the viewport.' } ) - aadd( ::aMethods, { 'gotoLine( nLine )', ; - 'gotoLine( )', ; - 'Attempt is made to position the cursor at . If is not supplied, a "Goto" dialog is opened to supply .' } ) - - aadd( ::aMethods, { ' Files', ; - '', ; - 'Files API Methods follow.' } ) - //........................................................// - aadd( ::aMethods, { 'newSource( cType )', ; - 'newSource( "" )', ; - 'Initiates a blank source file in an editing instance on the current panel.' } ) - aadd( ::aMethods, { 'open()', ; - 'open()', ; - 'Invokes "Open File" dialog and if a selection is made and such selection is a HbIDE supported valid text file, that is opened in a new editor instance on visible panel.' } ) - aadd( ::aMethods, { 'save()', ; - 'save()', ; - 'Saves the current editing instance if in modified state. Visual artifacts are updated accordingly.' } ) - aadd( ::aMethods, { 'saveAs()', ; - 'saveAs()', ; - 'Opens "File Save Dialog" to fetch a file name and saves the current editing instance into new file. Visual artifacts are updated accordingly.' } ) - aadd( ::aMethods, { 'saveAll()', ; - 'saveAll()', ; - 'Saves all opened editing instances on the visible panel, if in modified state. Visual artifacts are updated accordingly.' } ) - aadd( ::aMethods, { 'close()', ; - 'close()', ; - 'Closes the current editing instance.' } ) - aadd( ::aMethods, { 'print()', ; - 'print()', ; - 'Invokes "Print Preview" dialog with current source contents ready to be printed.' } ) - - aadd( ::aMethods, { ' Edit', ; - '', ; - 'Edit API Methods follow.' } ) - //........................................................// - aadd( ::aMethods, { 'cut()' , ; - 'cut()' , ; - 'Cuts the selected text and copies onto clipboard.' } ) - aadd( ::aMethods, { 'copy()' , ; - 'copy()' , ; - 'Copies the selected text onto clipboard.' } ) - aadd( ::aMethods, { 'paste()' , ; - 'paste()' , ; - 'Pastes the text available onto clipboard at the current cursor position.' } ) - aadd( ::aMethods, { 'undo()' , ; - 'undo()' , ; - 'Attempts to undo the last operation if one still hangs in the buffer.' } ) - aadd( ::aMethods, { 'redo()' , ; - 'redo()' , ; - 'Attempts to re-do the last undone action.' } ) - aadd( ::aMethods, { 'selectAll()' , ; - 'selectAll()' , ; - 'Selects the whole text and places the cursor at the end of source.' } ) - aadd( ::aMethods, { 'print()' , ; - 'print()' , ; - 'Opens Print Preview dialog which will contain the source line broken by pages.' } ) - aadd( ::aMethods, { 'findDlg()', ; - 'findDlg()', ; - 'Invokes "Find and Replace" dialog.' } ) - aadd( ::aMethods, { 'findAgain()', ; - 'findAgain()', ; - 'Finds last search string without opening the dialog.' } ) - aadd( ::aMethods, { 'replace()', ; - 'replace()', ; - 'Replaces last replace string if some text is already selected without opening the dialog.' } ) - aadd( ::aMethods, { 'findDlgEx()', ; - 'findDlgEx()', ; - 'Invokes extended "Find and Replace" dialog at the bottom of editing area.' } ) - aadd( ::aMethods, { 'insert( cText )' , ; - 'insert( "" )' , ; - 'Insert at current cursor position.' } ) - aadd( ::aMethods, { 'separator( cSep )' , ; - 'separator( ' + '/*' + replicate( "-", 68 ) + '*/' + ' )', ; - 'Inserts separator line immediately before current line. defaults to "/*---*/"' } ) - aadd( ::aMethods, { 'tabs2spaces()', ; - 'tabs2spaces()', ; - 'Converts tabs to spaces, currently 3, the entire source. However, source is not saved.' } ) - aadd( ::aMethods, { 'removeTrailingSpaces()', ; - 'removeTrailingSpaces()', ; - 'Removes trailing spaces per line, the entire source. However, source is not saved.' } ) - aadd( ::aMethods, { 'switchToReadOnly()', ; - 'switchToReadOnly()', ; - 'Flags current editing instance read-only.' } ) - - aadd( ::aMethods, { ' Line Operations', ; - '', ; - 'Line API Methods follow.' } ) - //........................................................// - aadd( ::aMethods, { 'duplicateLine()', ; - 'duplicateLine()', ; - 'Duplicates current line.' } ) - aadd( ::aMethods, { 'deleteLine()', ; - 'deleteLine()', ; - 'Deletes current line.' } ) - aadd( ::aMethods, { 'moveLineUp()', ; - 'moveLineUp()', ; - 'Moves current line up.' } ) - aadd( ::aMethods, { 'moveLineDown()', ; - 'moveLineDown()', ; - 'Moves current line down.' } ) - - aadd( ::aMethods, { ' Display Attributes', ; - '', ; - 'Display API Methods follow.' } ) - //........................................................// - aadd( ::aMethods, { 'zoom( nVal )' , ; - 'zoom( +1 )' , ; - 'Zooms in/out the current editing instance. nVal: 1-one size up; -1-one size less; NIL-original size; 5~30-to size.' } ) - aadd( ::aMethods, { 'toggleLineNumbersDisplay()', ; - 'toggleLineNumbersDisplay()', ; - 'Toggles line numbers display inside editing instances. This action has global scope and is saved for next run.' } ) - aadd( ::aMethods, { 'toggleCurrentLineHilight()', ; - 'toggleCurrentLineHilight()', ; - 'Toggles the mode to highlight current line or not in the editor. The effect is global. Setting is not retained for next run' } ) - aadd( ::aMethods, { 'toggleStatusBar()', ; - 'toggleStatusBar()', ; - 'Toggles display of statusbar. The action is not saved for next run.' } ) - - aadd( ::aMethods, { ' Block Operations', ; - '', ; - 'Blocks API Methods follow.' } ) - //........................................................// - aadd( ::aMethods, { 'indentRight()', ; - 'indentRight()', ; - 'Pushes one character right the currently selected text.' } ) - aadd( ::aMethods, { 'indentLeft()', ; - 'indentLeft()', ; - 'Pushes one character left the currently selected text. If there are no columns remains at left nothing happens.' } ) - aadd( ::aMethods, { 'blockComment()', ; - 'blockComment()', ; - 'Encloses currently selected text in line comments where each line is prefixed with //.' } ) - aadd( ::aMethods, { 'streamComment()', ; - 'streamComment()', ; - 'Encloses currently selected text in Anci-C like comments /* */' } ) - aadd( ::aMethods, { 'toUpper()', ; - 'toUpper()', ; - 'Converts currently selected text to upper-case.' } ) - aadd( ::aMethods, { 'toLower()', ; - 'toLower()', ; - 'Converts currently selected text to lower-case.' } ) - aadd( ::aMethods, { 'invertCase()', ; - 'invertCase()', ; - 'Inverts case of currently selected text: upper => lower; lower => upper.' } ) - aadd( ::aMethods, { 'single2doubleQuotes()', ; - 'single2doubleQuotes()', ; - 'Converts single quotes to double in the currently selected text.' } ) - aadd( ::aMethods, { 'double2singleQuotes()', ; - 'double2singleQuotes()', ; - 'Converts double quotes to single in the currently selected text.' } ) - - - aadd( ::aMethods, { ' Projects', ; - '', ; - 'Projects API Methods follow.' } ) - //........................................................// - aadd( ::aMethods, { 'build( cProj )', ; - 'build( "" )', ; - 'Builds if it is already loaded. All sources are saved if found in modified state before "build" is initiated.' } ) - aadd( ::aMethods, { 'buildLaunch( cProj )', ; - 'buildLaunch( "" )', ; - 'Builds and launches if it is already loaded. All sources are saved if found in modified state before "build" is initiated.' } ) - aadd( ::aMethods, { 'reBuild( cProj )', ; - 'reBuild( "" )', ; - 'Re-builds if it is already loaded. All sources are saved if found in modified state before "build" is initiated.' } ) - aadd( ::aMethods, { 'reBuildLaunch( cProj )', ; - 'reBuildLaunch( "" )', ; - 'Re-builds and launches if it is already loaded. All sources are saved if found in modified state before "build" is initiated.' } ) - aadd( ::aMethods, { 'launch( cProj )' , ; - 'launch( "" )' , ; - 'Launches if it is already loaded.' } ) - aadd( ::aMethods, { 'compilePPO()' , ; - 'compilePPO()' , ; - 'Attemps to compile current source to .ppo formats, and if successful, presents the compiled source in a new edit instance.' } ) - - aadd( ::aMethods, { ' Selections', ; - '', ; - 'Selections API Methods follow.' } ) - //........................................................// - aadd( ::aMethods, { 'toggleStreamSelectionMode()', ; - 'toggleStreamSelectionMode()', ; - 'Toggles stream selection mode. It switches on/off this mode.' } ) - aadd( ::aMethods, { 'toggleColumnSelectionMode()', ; - 'toggleColumnSelectionMode()', ; - 'Toggles column selection mode. It switches on/off this mode.' } ) - aadd( ::aMethods, { 'toggleLineSelectionMode()', ; - 'toggleLineSelectionMode()', ; - 'Toggles line selection mode. It switches on/off this mode' } ) - aadd( ::aMethods, { 'clearSelection()', ; - 'clearSelection()', ; - 'Clears the selection block, if any, and resets the selection mode to stream.' } ) - aadd( ::aMethods, { 'togglePersistentSelection()', ; - 'togglePersistentSelection()', ; - 'Toggles persistent selection mode. It switches on/off this mode' } ) - - - aadd( ::aMethods, { ' Retreivals', ; - '', ; - 'Text Retreival API Methods follow.' } ) - //........................................................// - aadd( ::aMethods, { 'getWord( lSelect )', ; - 'getWord( .f. )' , ; - 'Returns text of the word under cursor. If text appears as selected.' } ) - aadd( ::aMethods, { 'getLine( nLine, lSelect )', ; - 'getLine( , .f. )' , ; - 'Returns text of the current line. If text appears as selected.' } ) - aadd( ::aMethods, { 'getText()' , ; - 'getText()' , ; - 'Returns current selected text.' } ) - aadd( ::aMethods, { 'find( cString[, nFromPos ] )' , ; - 'find( "" )' , ; - 'Finds the from current location. If not found it searches backward. If is given, it searches from this position and no backward search is performed.' } ) - - - aadd( ::aMethods, { ' Activating Dialogs', ; - '', ; - 'Dialog API Methods follow.' } ) - //........................................................// - aadd( ::aMethods, { 'dlgKeyboardMappings()', ; - 'dlgKeyboardMappings()', ; - 'Opens "Keyboard Mappings" dialog.' } ) - aadd( ::aMethods, { 'dlgToolsAndUtils()', ; - 'dlgToolsAndUtils()', ; - 'Opens "Toola & Utilities" dialog.' } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:loadDftSCuts() - LOCAL a_, b_ - - IF .t. - b_:= {} - - /* Name Key Alt Ctrl Sh Menu Expr Icon */ - // - aadd( b_, { "Help" , "F1" , "NO", "NO" , "NO" , "", '::help( "" )' , "help" , "", "" } ) - aadd( b_, { "Exit" , "W" , "NO", "YES", "YES", "", '::exit( .f. )' , "exit" , "", "" } ) - - aadd( b_, { "Cut" , "X" , "NO", "YES", "NO" , "", '::cut()' , "cut" , "", "" } ) - aadd( b_, { "Copy" , "C" , "NO", "YES", "NO" , "", '::copy()' , "copy" , "", "" } ) - aadd( b_, { "Paste" , "V" , "NO", "YES", "NO" , "", '::paste()' , "paste" , "", "" } ) - aadd( b_, { "Undo" , "Z" , "NO", "YES", "NO" , "", '::undo()' , "undo" , "", "" } ) - aadd( b_, { "Redo" , "Y" , "NO", "YES", "NO" , "", '::redo()' , "redo" , "", "" } ) - aadd( b_, { "SelectAll" , "A" , "NO", "YES", "NO" , "", '::selectAll()' , "selectall" , "", "" } ) - - aadd( b_, { "New Source" , "N" , "YES","NO" , "NO" , "", '::newSource( "" )' , "new" , "", "" } ) - aadd( b_, { "Open" , "O" , "NO", "YES", "NO" , "", '::open()' , "open" , "", "" } ) - aadd( b_, { "Save" , "S" , "NO", "YES", "NO" , "", '::save()' , "save" , "", "" } ) - aadd( b_, { "Save All" , "S" , "NO", "YES", "YES", "", '::saveAll()' , "saveall" , "", "" } ) - aadd( b_, { "Close" , "W" , "NO", "YES", "NO" , "", '::close()' , "close" , "", "" } ) - aadd( b_, { "Print" , "P" , "NO", "YES", "NO" , "", '::print()' , "print" , "", "" } ) - * aadd( b_, { "Revert to Saved" , "R" , "NO", "NO" , "YES", "", '::revertToSaved()' , "" , "", "" } ) - - aadd( b_, { "Find Dialog" , "F" , "NO", "YES", "NO" , "", '::findDlg()' , "find" , "", "" } ) - aadd( b_, { "Find Again" , "N" , "NO", "YES", "NO" , "", '::findAgain()' , "" , "", "" } ) - aadd( b_, { "Replace" , "R" , "NO", "YES", "NO" , "", '::replace()' , "" , "", "" } ) - aadd( b_, { "Find Dialog Ex" , "F" , "NO", "YES", "YES", "", '::findDlgEx()' , "find" , "", "" } ) - - aadd( b_, { "Goto Line" , "G" , "NO", "YES", "NO" , "", '::gotoLine()' , "gotoline" , "", "" } ) - aadd( b_, { "Duplicate Line" , "D" , "NO", "YES", "NO" , "", '::duplicateLine()' , "duplicateline" , "", "" } ) - aadd( b_, { "Delete Line" , "Delete" , "NO", "YES", "NO" , "", '::deleteLine()' , "deleteline" , "", "" } ) - aadd( b_, { "Line Up" , "Up" , "NO", "YES", "YES", "", '::moveLineUp()' , "movelineup" , "", "" } ) - aadd( b_, { "Line Down" , "Down" , "NO", "YES", "YES", "", '::moveLineDown()' , "movelinedown" , "", "" } ) - - aadd( b_, { "Indent Right" , "Tab" , "NO", "YES", "NO" , "", '::indentRight()' , "blockindentr" , "", "" } ) - aadd( b_, { "Indent Left" , "Tab" , "NO", "YES", "YES", "", '::indentLeft()' , "blockindentl" , "", "" } ) - aadd( b_, { "Block Comment" , "Slash" , "NO", "YES", "YES", "", '::blockComment()' , "blockcomment" , "", "" } ) - aadd( b_, { "Stream Comment" , "Q" , "NO", "YES", "YES", "", '::streamComment()' , "streamcomment" , "", "" } ) - - aadd( b_, { "Build Project" , "F9" , "NO", "YES", "NO" , "", '::build( "" )' , "build" , "", "" } ) - aadd( b_, { "Build & Launch" , "F9" , "NO", "NO" , "NO" , "", '::buildLaunch( "" )' , "buildlaunch" , "", "" } ) - aadd( b_, { "Launch Project" , "F10" , "NO", "YES", "NO" , "", '::launch( "" )' , "launch" , "", "" } ) - - aadd( b_, { "Insert Text" , "F7" , "NO", "YES", "NO" , "", '::insert( "" )' , "insert-external-file", "", "" } ) - aadd( b_, { "Insert Separator", "F7" , "NO", "NO" , "NO" , "", '::separator( "" )' , "insert-separator", "", "" } ) - - aadd( b_, { "Toggle Line Selection Mode", "F11", "NO", "NO" , "NO" , "", '::toggleLineSelectionMode()', "" , "", "" } ) - aadd( b_, { "Toggle Persistent Selection Mode", "F11", "NO", "YES" , "NO" , "", '::togglePersistentSelection()', "" , "", "" } ) - aadd( b_, { "Clear Selection" , "F11" , "NO", "NO" , "YES", "", '::clearSelection()' , "" , "", "" } ) - aadd( b_, { "Present Snippets", "K" , "NO", "YES", "NO" , "", '::presentSkeletons()' , "" , "", "" } ) - aadd( b_, { "Goto Function" , "T" , "NO", "YES", "NO" , "", '::gotoFunction()' , "" , "", "" } ) - aadd( b_, { "Next Function" , "PageDown", "YES", "NO", "NO", "", '::toNextFunction()' , "" , "", "" } ) - aadd( b_, { "Prev Function" , "PageUp" , "YES", "NO", "NO" , "", '::toPrevFunction()' , "" , "", "" } ) - - ::aDftSCuts := b_ - ENDIF - - IF !empty( a_:= hbide_loadShortcuts( ::oIde ) ) - ::mergeMacros( a_ ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeShortcuts:mergeMacros( a_ ) - LOCAL c_, n - - FOR EACH c_ IN a_ - IF ( n := ascan( ::aDftSCuts, {|e_| e_[ 2 ] == c_[ 2 ] .AND. e_[ 3 ] == c_[ 3 ] .AND. ; - e_[ 4 ] == c_[ 4 ] .AND. e_[ 5 ] == c_[ 5 ] } ) ) == 0 - aadd( ::aDftSCuts, c_ ) - ELSE - ::aDftSCuts[ n ] := c_ - ENDIF - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - #if 0 - CASE "Environments" - ::oEV:fetchNew() - EXIT - CASE "Animate" - ::nAnimantionMode := iif( ::nAnimantionMode == HBIDE_ANIMATION_NONE, HBIDE_ANIMATION_GRADIENT, HBIDE_ANIMATION_NONE ) - ::oDK:animateComponents( ::nAnimantionMode ) - EXIT - CASE "Help" - ::oHelpDock:show() - EXIT - CASE "Goto" - ::oEM:goTo() - EXIT - CASE "FormatBraces" - ::oEM:formatBraces() - EXIT - CASE "SaveExit" - ::oSM:saveAndExit() - EXIT - CASE "Revert" - ::oSM:RevertSource() - EXIT - CASE "CloseAll" - ::oSM:closeAllSources() - EXIT - CASE "CloseOther" - ::oSM:closeAllOthers() - EXIT - CASE "NewProject" - ::oPM:loadProperties( , .t., .t., .t. ) - EXIT - CASE "Properties" - ::oPM:getProperties() - EXIT - CASE "SelectProject" - ::oPM:selectCurrentProject() - EXIT - CASE "CloseProject" - ::oPM:closeProject() - EXIT - ENDSWITCH - #endif -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/shortcuts.ui b/harbour/contrib/hbide/shortcuts.ui deleted file mode 100644 index f9788ff4a8..0000000000 --- a/harbour/contrib/hbide/shortcuts.ui +++ /dev/null @@ -1,257 +0,0 @@ - - - FormShortCuts - - - - 0 - 0 - 732 - 438 - - - - Keyboard Macros - - - - - - Public Methods - - - - - - - Description - - - - - - - Public Methods are avialble as API to configure your key-combination to any degree hbIDE can be exploited. Double-click on any node posts method prototype with blank parameters in <Script> edit box below-right. In the immediate right box a brief description of the navigated node is displayed. - - - - - - - Description of the public method highlighted on the left. - - - - - - - Keyboard Shortcuts - - - - - - - - - - Name - - - - - - - - - - Key - - - - - - - - - - Alt - - - - - - - Ctrl - - - - - - - Shift - - - - - - - Menu - - - - - - - - - - - - - Script: - - - - - - - - - - 50 - 0 - - - - - 50 - 16777215 - - - - New - - - - - - - - 50 - 0 - - - - - 50 - 16777215 - - - - Set - - - - - - - - 50 - 0 - - - - - 50 - 16777215 - - - - Test - - - - - - - - 50 - 0 - - - - - 50 - 16777215 - - - - Delete - - - - - - - - 50 - 0 - - - - - 50 - 16777215 - - - - Load - - - - - - - - 50 - 0 - - - - - 50 - 16777215 - - - - Save - - - - - - - - 50 - 0 - - - - - 50 - 16777215 - - - - SaveAs - - - - - - - - - - diff --git a/harbour/contrib/hbide/skeletons.prg b/harbour/contrib/hbide/skeletons.prg deleted file mode 100644 index 90dd014169..0000000000 --- a/harbour/contrib/hbide/skeletons.prg +++ /dev/null @@ -1,563 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 18Mar2010 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbide.ch" -#include "common.ch" -#include "hbclass.ch" -#include "hbqtgui.ch" - -/*----------------------------------------------------------------------*/ - -#define __buttonNew_clicked__ 2001 -#define __buttonRename_clicked__ 2002 -#define __buttonDelete_clicked__ 2003 -#define __buttonClear_clicked__ 2004 -#define __buttonGetSel_clicked__ 2005 -#define __buttonUpdate_clicked__ 2006 -#define __listNames_itemSelectionChanged__ 2007 -#define __oTree_itemSelected__ 2008 -#define __oTree_contextMenu__ 2009 - -/*----------------------------------------------------------------------*/ - -CLASS IdeSkeletons INHERIT IdeObject - - DATA oRoot - DATA oTree - DATA nPosCursor - DATA aItems INIT {} - DATA aMetas INIT { { "", NIL } } - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() - METHOD show() - METHOD execEvent( nEvent, p ) - METHOD postSkeleton( cSkeleton ) - METHOD selectByMenuAndPostText( qEdit ) - METHOD getText( cSkeleton ) - METHOD parseText( cText ) - METHOD parseMeta( cMeta ) - METHOD postText( qEdit, cText ) - METHOD showTree() - METHOD clearTree() - METHOD updateTree() - METHOD save( cName, cText ) - METHOD saveAs( cText ) - METHOD delete( cName ) - METHOD rename( cName ) - METHOD refreshList() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeSkeletons:new( oIde ) - - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSkeletons:create( oIde ) - - DEFAULT oIde TO ::oIde - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSkeletons:destroy() - - IF !empty( ::oUI ) - ::oUI:buttonNew :disconnect( "clicked()" ) - ::oUI:buttonRename:disconnect( "clicked()" ) - ::oUI:buttonDelete:disconnect( "clicked()" ) - ::oUI:buttonClear :disconnect( "clicked()" ) - ::oUI:buttonGetSel:disconnect( "clicked()" ) - ::oUI:buttonUpdate:disconnect( "clicked()" ) - ::oUI:listNames :disconnect( "itemSelectionChanged()" ) - - ::oUI:destroy() - ENDIF - - ::aItems := {} - ::oTree := NIL - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSkeletons:show() - - IF empty( ::oUI ) - ::oUI := hbide_getUI( "skeletons" ) - - ::oSkeltnDock:oWidget:setWidget( ::oUI:oWidget ) - - ::oUI:buttonNew :connect( "clicked()" , {|| ::execEvent( __buttonNew_clicked__ ) } ) - ::oUI:buttonRename:connect( "clicked()" , {|| ::execEvent( __buttonRename_clicked__ ) } ) - ::oUI:buttonDelete:connect( "clicked()" , {|| ::execEvent( __buttonDelete_clicked__ ) } ) - ::oUI:buttonClear :connect( "clicked()" , {|| ::execEvent( __buttonClear_clicked__ ) } ) - ::oUI:buttonGetSel:connect( "clicked()" , {|| ::execEvent( __buttonGetSel_clicked__ ) } ) - ::oUI:buttonUpdate:connect( "clicked()" , {|| ::execEvent( __buttonUpdate_clicked__ ) } ) - ::oUI:listNames :connect( "itemSelectionChanged()", {|| ::execEvent( __listNames_itemSelectionChanged__ ) } ) - - //::oUI:editCode:setFontFamily( "Courier New" ) - //::oUI:editCode:setFontPointSize( 10 ) - - ::oUI:editCode:setFont( ::oFont:oWidget ) - ENDIF - ::refreshList() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSkeletons:execEvent( nEvent, p ) - LOCAL cName, qItem, cCode, n, cOpt - LOCAL aPops := {} - - HB_SYMBOL_UNUSED( p ) - - IF ::lQuitting - RETURN Self - ENDIF - - SWITCH nEvent - - CASE __buttonNew_clicked__ - IF !empty( cName := hbide_fetchAString( ::oUI:listNames, "", "Name", "New Skeleton" ) ) - ::oUI:listNames:addItem( cName ) - aadd( ::oIde:aSkltns, { cName, "" } ) - ::oUI:listNames:setCurrentRow( Len( ::aSkltns ) - 1 ) - ENDIF - EXIT - - CASE __buttonRename_clicked__ - qItem := ::oUI:listNames:currentItem() - qItem:setText( ::rename( qItem:text() ) ) - EXIT - - CASE __buttonDelete_clicked__ - qItem := ::oUI:listNames:currentItem() - ::delete( qItem:text() ) - EXIT - - CASE __buttonClear_clicked__ - ::oUI:editCode:clear() - EXIT - - CASE __buttonGetSel_clicked__ - IF !empty( cCode := ::oEM:getSelectedText() ) - // TODO: Format cCode - ::oUI:editCode:setPlainText( cCode ) - ENDIF - EXIT - - CASE __buttonUpdate_clicked__ - qItem := ::oUI:listNames:currentItem() - ::save( qItem:text(), ::oUI:editCode:toPlainText() ) - EXIT - - CASE __listNames_itemSelectionChanged__ - qItem := ::oUI:listNames:currentItem() - cName := qItem:text() - IF ( n := ascan( ::aSkltns, {|e_| e_[ 1 ] == cName } ) ) > 0 - ::oUI:editCode:setPlainText( ::aSkltns[ n, 2 ] ) - ENDIF - EXIT - - CASE __oTree_contextMenu__ - IF p[ 3 ]:caption == "Skeletons" - // Root node - nothing to do. - ELSE - aadd( aPops, { 'Delete', {|| NIL } } ) - aadd( aPops, { "" , {|| NIL } } ) - aadd( aPops, { 'Rename', {|| NIL } } ) - - IF !empty( cOpt := hbide_ExecPopup( aPops, p[ 1 ], ::oSkltnsTreeDock:oWidget ) ) - IF cOpt == "Delete" - ::delete( p[ 3 ]:caption ) - ELSEIF cOpt == "Rename" - ::rename( p[ 3 ]:caption ) - ENDIF - ENDIF - ENDIF - EXIT - - CASE __oTree_itemSelected__ - ::oIde:manageFocusInEditor() - ::postSkeleton( p:caption ) - EXIT - - ENDSWITCH - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeSkeletons:refreshList() - - ::oUI:listNames:clear() - aeval( ::aSkltns, {|e_| ::oUI:listNames:addItem( e_[ 1 ] ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSkeletons:rename( cName ) - LOCAL n, cNewName - - IF ( n := ascan( ::aSkltns, {|e_| e_[ 1 ] == cName } ) ) > 0 - cNewName := hbide_fetchAString( ::oDlg:oWidget, cName, "Name", "Change Skeleton's Name" ) - IF !empty( cNewName ) .AND. !( cNewName == cName ) - ::aSkltns[ n, 1 ] := cNewName - ::updateTree() - hbide_saveSkltns( ::oIde ) - ENDIF - ENDIF - RETURN iif( empty( cNewName ), cName, cNewName ) - -/*----------------------------------------------------------------------*/ - -METHOD IdeSkeletons:delete( cName ) - LOCAL n - - IF ( n := ascan( ::aSkltns, {|e_| e_[ 1 ] == cName } ) ) > 0 - hb_adel( ::aSkltns, n, .t. ) - ::updateTree() - hbide_saveSkltns( ::oIde ) - IF !empty( ::oUI ) - ::refreshList() - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSkeletons:save( cName, cText ) - LOCAL n - - n := ascan( ::aSkltns, {|e_| e_[ 1 ] == cName } ) - IF n > 0 - ::aSkltns[ n, 2 ] := cText - ELSE - aadd( ::aSkltns, { cName, cText } ) - ENDIF - ::updateTree() - hbide_saveSkltns( ::oIde ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSkeletons:saveAs( cText ) - LOCAL cName - - cName := hbide_fetchAString( ::oDlg, "", "Skeleton's Name" ) - IF !empty( cName ) - ::save( cName, cText ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSkeletons:postSkeleton( cSkeleton ) - LOCAL oEdit, cText := ::getText( cSkeleton ) - - IF !empty( cText ) - IF !empty( oEdit := ::oEM:getEditObjectCurrent() ) - ::postText( oEdit:qEdit, cText ) - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSkeletons:selectByMenuAndPostText( qEdit ) - LOCAL cText, qCursor, qRect, qMenu, qAct, a_, aAct := {} - - IF !empty( ::aSkltns ) - qCursor := qEdit:textCursor() - - /* Look for if a macro is executed */ - qCursor:select( QTextCursor_WordUnderCursor ) - cText := qCursor:selectedText() - IF !empty( cText ) .AND. ascan( ::aSkltns, {|e_| e_[ 1 ] == cText } ) > 0 - qCursor:insertText( "" ) - qEdit:setTextCursor( qCursor ) - ::postText( qEdit, ::getText( cText ) ) - - ELSE - qRect := qEdit:cursorRect( qCursor ) - - qMenu := QMenu( qEdit ) - FOR EACH a_ IN ::aSkltns - aadd( aAct, qMenu:addAction( a_[ 1 ] ) ) - NEXT - - IF ! empty( qAct := qMenu:exec( qEdit:mapToGlobal( QPoint( qRect:x(), qRect:y() ) ) ) ) - IF !empty( cText := ::getText( qAct:text() ) ) - ::postText( qEdit, cText ) - ENDIF - ENDIF - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSkeletons:parseMeta( cMeta ) - LOCAL xVal, cData, n, cKey, cVal, nMeta - - IF hbide_parseKeyValPair( cMeta, @cKey, @cVal ) - cMeta := cVal - cKey := upper( cKey ) - IF ( nMeta := ascan( ::aMetas, {|e_| e_[ 1 ] == cKey } ) ) == 0 - aadd( ::aMetas, { cKey, "" } ) - nMeta := Len( ::aMetas ) - ENDIF - ENDIF - - IF ( n := at( ":", cMeta ) ) > 0 - cMeta := substr( cMeta, 1, n - 1 ) - cData := substr( cMeta, n + 1 ) - ENDIF - cMeta := upper( cMeta ) - - SWITCH cMeta - - CASE "CUR" - xVal := 0 - EXIT - - CASE "PROMPT" - DEFAULT cData TO "A string value ?" - xVal := hbide_fetchAString( ::oDlg:oWidget, "", cData, "Fetch a skeleton request" ) - IF !empty( xVal ) .AND. !empty( nMeta ) - ::aMetas[ nMeta, 2 ] := xVal - ENDIF - EXIT - - OTHERWISE - IF ( nMeta := ascan( ::aMetas, {|e_| e_[ 1 ] == cMeta } ) ) > 0 - xVal := ::aMetas[ nMeta, 2 ] - ELSE - xVal := cMeta - ENDIF - - ENDSWITCH - - RETURN xVal - -/*----------------------------------------------------------------------*/ - -METHOD IdeSkeletons:parseText( cText ) - LOCAL n, n1, cTkn, xVal - - n := 0 - DO WHILE .t. - IF ( n := hb_at( "<-", cText, n ) ) > 0 - IF ( n1 := hb_at( ">", cText, n ) ) > 0 - IF !empty( cTkn := substr( cText, n + 2, n1 - n - 2 ) ) - - xVal := ::parseMeta( hbide_evalAsString( cTkn ) ) - - IF valtype( xVal ) == "C" - cText := substr( cText, 1, n - 1 ) + xVal + substr( cText, n1 + 1 ) - - ELSEIF valtype( xVal ) == "N" - cText := substr( cText, 1, n - 1 ) + "" + substr( cText, n1 + 1 ) - ::nPosCursor := n - - ENDIF - ENDIF - ENDIF - ELSE - EXIT - ENDIF - ENDDO - - RETURN cText - -/*----------------------------------------------------------------------*/ - -METHOD IdeSkeletons:getText( cSkeleton ) - LOCAL n, cText := "" - - IF ( n := ascan( ::aSkltns, {|e_| e_[ 1 ] == cSkeleton } ) ) > 0 - cText := ::aSkltns[ n, 2 ] - ENDIF - - RETURN cText - -/*----------------------------------------------------------------------*/ - -METHOD IdeSkeletons:postText( qEdit, cText ) - LOCAL s, a_, nCol, nPos, nRowCur, nColCur, n - LOCAL qCursor := qEdit:textCursor() - - ::nPosCursor := NIL - ::aMetas := { { "", "" } } - - nPos := qCursor:position() - nCol := qCursor:columnNumber() - - a_:= hbide_memoToArray( cText ) - FOR EACH s IN a_ - IF ( n := s:__enumIndex() ) > 0 - s := iif( n > 1, space( nCol ), "" ) + ::parseText( s ) - IF valtype( ::nPosCursor ) == "N" - IF empty( nRowCur ) - nRowCur := n - nColCur := ::nPosCursor - ENDIF - ENDIF - ENDIF - NEXT - - qCursor:insertText( hbide_arrayToMemoEx( a_ ) ) - qCursor:setPosition( nPos ) - IF !empty( nRowCur ) - qCursor:movePosition( QTextCursor_Down, QTextCursor_MoveAnchor, nRowCur -1 ) - ENDIF - IF !empty( nColCur ) - qCursor:movePosition( QTextCursor_StartOfBlock ) - qCursor:movePosition( QTextCursor_Right, QTextCursor_MoveAnchor, nCol + nColCur - 1 ) - ENDIF - qEdit:setTextCursor( qCursor ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSkeletons:showTree() - - IF empty( ::oTree ) - ::oTree := XbpTreeView():new() - ::oTree:hasLines := .T. - ::oTree:hasButtons := .T. - ::oTree:create( ::oSkltnsTreeDock, , { 0,0 }, { 10,10 }, , .t. ) - - ::oTree:oWidget:setMinimumWidth( 100 ) - ::oTree:oWidget:setSizePolicy( QSizePolicy_MinimumExpanding, QSizePolicy_Preferred ) - ::oTree:oWidget:setIconSize( QSize( 12,12 ) ) - ::oTree:oWidget:setIndentation( 12 ) - - ::oTree:itemSelected := {|oItem | ::execEvent( __oTree_itemSelected__, oItem ) } - ::oTree:hbContextMenu := {|mp1, mp2, oXbp| ::execEvent( __oTree_contextMenu__ , { mp1, mp2, oXbp } ) } - - ::oRoot := ::oTree:rootItem:addItem( "Skeletons" ) - - ::updateTree() - - ::oRoot:expand( .t. ) - - ::oSkltnsTreeDock:oWidget:setWidget( ::oTree:oWidget ) - ENDIF - - ::oTree:oWidget:setStyleSheet( GetStyleSheet( "QTreeWidgetHB", ::nAnimantionMode ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSkeletons:updateTree() - LOCAL oItem, a_ - - ::clearTree() - - FOR EACH a_ IN ::aSkltns - oItem := ::oRoot:addItem( a_[ 1 ] ) - oItem:tooltipText := a_[ 2 ] - aadd( ::aItems, oItem ) - NEXT - - ::oRoot:oWidget:sortChildren( 0, Qt_AscendingOrder ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSkeletons:clearTree() - LOCAL oItem - - FOR EACH oItem IN ::aItems - ::oRoot:delItem( oItem ) - oItem := NIL - NEXT - ::aItems := {} - - RETURN Self - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/skeletons.ui b/harbour/contrib/hbide/skeletons.ui deleted file mode 100644 index c4571a4958..0000000000 --- a/harbour/contrib/hbide/skeletons.ui +++ /dev/null @@ -1,110 +0,0 @@ - - - FormSkeletons - - - - 0 - 0 - 290 - 508 - - - - Form - - - - - - Identity - - - - - - - - - - Delete - - - - - - - Rename - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Code Skeletons in hbIDE are implemented in unique way. </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">It is assumed that, while writing the source, any control structure</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">must be aligned to the column editing cursor is resting. So the</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">&quot;skeleton&quot; is inserted aligned to this column spanning multiple lines.</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Hence it is desired that you write code snippets aligned left without</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">any spaces for the left-most edge:</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">IF x == </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> y := 12</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">ELSE</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> y := 32</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">ENDIF</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Then, suppose edit cursor is resting on column 10, </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">all these lines will align to column 10. Inner indents will </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">be respected.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p></body></html> - - - QPlainTextEdit::NoWrap - - - - - - - Clear - - - - - - - Code Snippet - - - - - - - Get Selection - - - - - - - Add New - - - - - - - Update - - - - - - - - diff --git a/harbour/contrib/hbide/sources.prg b/harbour/contrib/hbide/sources.prg deleted file mode 100644 index 913721cba2..0000000000 --- a/harbour/contrib/hbide/sources.prg +++ /dev/null @@ -1,554 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2010-2012 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 09Jan2010 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "common.ch" -#include "hbclass.ch" -#include "hbqtgui.ch" -#include "hbide.ch" - -/*----------------------------------------------------------------------*/ - -CLASS IdeSourcesManager INHERIT IdeObject - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() - METHOD loadSources() - METHOD saveSource( nTab, lCancel, lAs ) - METHOD saveNamedSource( cSource ) - METHOD editSource( cSourceFile, nPos, nHPos, nVPos, cTheme, cView, lAlert, lVisible, aBookMarks ) - METHOD closeSource( nTab, lCanCancel, lCanceled, lAsk ) - METHOD closeAllSources( lCanCancel ) - METHOD closeAllOthers( nTab ) - METHOD saveAllSources() - METHOD saveAndExit() - METHOD revertSource( nTab ) - METHOD openSource() - METHOD selectSource( cMode, cFile, cTitle, cDftPath ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeSourcesManager:new( oIde ) - - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSourcesManager:destroy() - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD IdeSourcesManager:create( oIde ) - - DEFAULT oIde TO ::oIde - - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSourcesManager:loadSources() - LOCAL a_ - - IF ! empty( ::oIni:aFiles ) - FOR EACH a_ IN ::oIni:aFiles - /* File nPos nVPos nHPos cTheme cView lAlert lVisible, aBookMarks */ - ::editSource( a_[ 1 ], a_[ 2 ], a_[ 3 ], a_[ 4 ], a_[ 5 ], a_[ 6 ], .t., .f., a_[ 7 ] ) - NEXT - ELSE - ::editSource( "default.prg" ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSourcesManager:saveNamedSource( cSource ) - LOCAL lSaved, oEditor, a_, cBuffer - - cSource := hbide_pathNormalized( cSource, .t. ) - - FOR EACH a_ IN ::aTabs - oEditor := a_[ TAB_OEDITOR ] - IF HB_ISOBJECT( oEditor ) - IF hb_FileMatch( hbide_pathNormalized( oEditor:sourceFile, .t. ), cSource ) - IF oEditor:lLoaded - IF oEditor:qDocument:isModified() - cBuffer := oEditor:prepareBufferToSave( oEditor:qEdit:toPlainText() ) - - IF ( lSaved := hb_memowrit( hbide_pathToOSPath( cSource ), cBuffer ) ) - oEditor:qDocument:setModified( .f. ) - oEditor:setTabImage() - ENDIF - ENDIF - ENDIF - ENDIF - ENDIF - NEXT - - RETURN lSaved - -/*----------------------------------------------------------------------*/ - -METHOD IdeSourcesManager:editSource( cSourceFile, nPos, nHPos, nVPos, cTheme, cView, lAlert, lVisible, aBookMarks ) - LOCAL lNew - - DEFAULT lAlert TO .T. - DEFAULT lVisible TO .T. - - IF ( lNew := empty( cSourceFile ) ) - cSourceFile := hbide_saveAFile( ::oDlg, "Provide source filename", /*aFltr*/, hbide_SetWrkFolderLast(), /*cDftSuffix*/ ) - IF empty( cSourceFile ) - RETURN Self - ENDIF - hbide_SetWrkFolderLast( cSourceFile ) - ENDIF - - IF ! ( cSourceFile == "default.prg" ) - IF !Empty( cSourceFile ) - IF !( hbide_isValidText( cSourceFile ) ) - MsgBox( 'File type unknown or unsupported: ' + cSourceFile ) - RETURN .f. - ELSEIF ! lNew .AND. ! hb_FileExists( cSourceFile ) - MsgBox( 'File not found: ' + cSourceFile ) - RETURN .f. - ENDIF - IF ::oEM:isOpen( cSourceFile ) - IF lAlert - IF hbide_getYesNo( cSourceFile + " is already open.", "Want to re-load it again ?", "File Open Info!" ) - ::oEM:reLoad( cSourceFile ) - ENDIF - ENDIF - ::oEM:setSourceVisible( cSourceFile ) - RETURN .t. - ENDIF - ENDIF - ENDIF - - DEFAULT nPos TO 0 - DEFAULT nHPos TO 0 - DEFAULT nVPos TO 0 - - ::oEM:buildEditor( cSourceFile, nPos, nHPos, nVPos, cTheme, cView, aBookMarks ) - IF lVisible - ::oEM:setSourceVisible( cSourceFile ) - ENDIF - - IF ! Empty( cSourceFile ) .AND. ! ( cSourceFile == "default.prg" ) .AND. ! hbide_isSourcePPO( cSourceFile ) - hbide_mnuAddFileToMRU( Self, cSourceFile, "recent_files" ) - ENDIF - - RETURN .t. - -/*----------------------------------------------------------------------*/ -/* - * Save selected Tab on harddisk and return .T. if successfull! - */ -METHOD IdeSourcesManager:saveSource( nTab, lCancel, lAs ) - LOCAL oEdit, lNew, cBuffer, qDocument, nIndex, cSource, cFileTemp - LOCAL cFileToSave, cPath, cFile, cExt, cNewFile, oItem - - DEFAULT nTab TO ::oEM:getTabCurrent() - DEFAULT lAs TO .F. - - lCancel := .F. - - IF ! Empty( oEdit := ::oEM:getEditorByTabPosition( nTab ) ) - nIndex := ::qTabWidget:indexOf( oEdit:oTab:oWidget ) - cSource := oEdit:sourceFile - - IF cSource == "default.prg" .or. ! hb_fileExists( oEdit:sourceFile ) - lAs := .t. - ENDIF - - IF lAs .OR. Empty( cSource ) .OR. ( oEdit:lLoaded .AND. oEdit:qDocument:isModified() ) - - lNew := Empty( cSource ) .OR. lAs - IF lNew - cNewFile := ::selectSource( 'save', ; - iif( ! Empty( cSource ), cSource, hb_dirBase() + "projects" + hb_ps() ),; - "Save " + oEdit:oTab:caption + " as..." ) - IF Empty( cNewFile ) - // will check later what decision to take - RETURN .f. - ENDIF - IF hb_FileMatch( hbide_pathNormalized( cNewFile ), hbide_pathNormalized( cSource ) ) - lNew := .f. - ENDIF - ENDIF - - cFileToSave := iif( lNew, cNewFile, cSource ) - qDocument := oEdit:qDocument - - /* - * If the burn process fails, we should change the name of the previous file. - * 01/01/2010 - 21:24:41 - vailtom - */ - cBuffer := oEdit:prepareBufferToSave( oEdit:qEdit:toPlainText() ) - // - IF !hb_memowrit( cFileToSave, cBuffer ) - MsgBox( "Error saving the file " + oEdit:sourceFile + ".",, 'Error saving file!' ) - lCancel := .T. - RETURN .F. - ENDIF - - hb_fNameSplit( cFileToSave, @cPath, @cFile, @cExt ) - - IF lNew - oEdit:sourceFile := cFileToSave - - oEdit:oTab:Caption := cFile + cExt - oEdit:updateTitleBar() - - ::qTabWidget:setTabText( nIndex, cFile + cExt ) - ::qTabWidget:setTabTooltip( nIndex, cFileToSave ) - - IF empty( cSource ) - /* The file is not populated in editors tree. Inject */ - ::oEM:addSourceInTree( oEdit:sourceFile ) - ELSEIF lAs - /* Rename the existing nodes in tree */ - IF !empty( oItem := hbide_findProjTreeItem( ::oIde, oEdit:sourceFile, "Opened Source" ) ) - oItem:oWidget:caption := cFile + cExt - ENDIF - ENDIF - ENDIF - - qDocument:setModified( .f. ) - ::oIde:aSources := { oEdit:sourceFile } - ::createTags() - ::updateFuncList() - ::qTabWidget:setTabIcon( nIndex, QIcon( ::resPath + "tabunmodified.png" ) ) - ::oDK:setStatusText( SB_PNL_MODIFIED, " " ) - - cFileTemp := hbide_pathToOSPath( oEdit:cPath + oEdit:cFile + oEdit:cExt + ".tmp" ) - ferase( cFileTemp ) - - IF left( lower( cFile ), 4 ) == "cls_" - ::oUiS:reloadIfOpen( lower( cPath ) + lower( substr( cFile, 5 ) ) + ".ui" ) - ENDIF - ENDIF - ENDIF - - RETURN .T. - -/*----------------------------------------------------------------------*/ - -METHOD IdeSourcesManager:closeSource( nTab, lCanCancel, lCanceled, lAsk ) - LOCAL lSave, n, oEditor - - DEFAULT nTab TO ::oEM:getTabCurrent() - DEFAULT lAsk TO .t. - - IF !empty( oEditor := ::oEM:getEditorByTabPosition( nTab ) ) - - DEFAULT lCanCancel TO .F. - lCanceled := .F. - - IF !( oEditor:qDocument:isModified() ) /* File has not changed, ignore the question to User */ - lSave := .F. - - ELSEIF lCanCancel - n := hbide_getYesNoCancel( oEditor:oTab:caption, "has been modified, save this source?", 'Save?' ) - IF ( lCanceled := ( n == QMessageBox_Cancel ) ) - RETURN .F. - ENDIF - lSave := ( n == QMessageBox_Yes ) - - ELSE - IF lAsk - lSave := hbide_getYesNo( oEditor:oTab:caption, "has been modified, save this source?", 'Save?' ) - ELSE - lSave := .t. - ENDIF - ENDIF - - IF lSave .AND. ! ::saveSource( nTab, @lCanceled ) - IF lCanCancel - RETURN .F. - ENDIF - ENDIF - - oEditor:destroy() - ::oIde:updateTitleBar() - ENDIF - - RETURN .T. - -/*----------------------------------------------------------------------*/ -/* - * Close all opened files. - * 02/01/2010 - 15:31:44 - */ -METHOD IdeSourcesManager:closeAllSources( lCanCancel ) - LOCAL lCanceled - LOCAL i := 0 - - DEFAULT lCanCancel TO .t. - - DO WHILE ( ++i <= Len( ::aTabs ) ) - - IF ::closeSource( i, lCanCancel, @lCanceled ) - i -- - LOOP - ENDIF - - IF lCanceled - RETURN .F. - ENDIF - ENDDO - - RETURN .T. - -/*----------------------------------------------------------------------*/ -/* - * Close all opened files except current. - * 02/01/2010 - 15:47:19 - vailtom - */ -METHOD IdeSourcesManager:closeAllOthers( nTab ) - LOCAL lCanceled - LOCAL oEdit - LOCAL nID - - DEFAULT nTab TO ::oEM:getTabCurrent() - - IF empty( oEdit := ::oEM:getEditorByTabPosition( nTab ) ) - RETURN .F. - ENDIF - - nID := oEdit:nID - nTab := 0 - - * Finally now we will close all tabs. - DO WHILE ( ++nTab <= Len( ::aTabs ) ) - - oEdit := ::oEM:getEditorByTabPosition( nTab ) - - IF empty( oEdit ) .OR. oEdit:nID == nID - LOOP - ENDIF - - IF ::closeSource( nTab, .T., @lCanceled ) - nTab -- - LOOP - ENDIF - - IF lCanceled - RETURN .F. - ENDIF - ENDDO - - RETURN .T. - -/*----------------------------------------------------------------------*/ -/* - * Save all opened files... - * 01/01/2010 - 22:44:36 - vailtom - */ -METHOD IdeSourcesManager:saveAllSources() - LOCAL n - - FOR n := 1 TO Len( ::aTabs ) - ::saveSource( n ) - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ -/* - * Save current file and exits HBIDE - * 02/01/2010 - 18:45:06 - vailtom - */ -METHOD IdeSourcesManager:saveAndExit() - - IF ::saveSource() - ::execAction( "Exit" ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ -/* - * Revert current file to a previous saved file. - * 02/01/2010 - 19:45:34 - */ -METHOD IdeSourcesManager:revertSource( nTab ) - LOCAL oEditor - - DEFAULT nTab TO ::oEM:getTabCurrent() - - IF empty( oEditor := ::oEM:getEditorByTabPosition( nTab ) ) - RETURN .F. - ENDIF - - IF !( oEditor:qDocument:isModified() ) - * File has not changed, ignore the question to User - ELSE - IF !hbide_getYesNo( 'Revert ' + oEditor:oTab:Caption + '?', ; - 'The file ' + oEditor:sourceFile + ' has changed. '+; - 'Discard current changes and revert contents to the previously saved on disk?', 'Revert file?' ) - RETURN Self - ENDIF - ENDIF - - oEditor:qEdit:setPlainText( hb_memoRead( oEditor:sourceFile ) ) - oEditor:qEdit:ensureCursorVisible() - ::manageFocusInEditor() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSourcesManager:openSource() - LOCAL aSrc, cSource - - IF !empty( aSrc := ::selectSource( "openmany" ) ) - FOR EACH cSource IN aSrc - ::editSource( cSource ) - NEXT - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeSourcesManager:selectSource( cMode, cFile, cTitle, cDftPath ) - LOCAL oDlg, cPath, aFltr := {} - - DEFAULT cDftPath TO ::cLastFileOpenPath - - AAdd( aFltr, { "All Files" , "*.*" } ) - AAdd( aFltr, { "PRG Sources", "*.prg" } ) - AAdd( aFltr, { "C Sources" , "*.c" } ) - AAdd( aFltr, { "CPP Sources", "*.cpp" } ) - AAdd( aFltr, { "H Headers" , "*.h" } ) - AAdd( aFltr, { "CH Headers" , "*.ch" } ) - AAdd( aFltr, { "UI Files" , "*.ui" } ) - AAdd( aFltr, { "QRC Files" , "*.qrc" } ) - AAdd( aFltr, { "HBC Files" , "*.hbc" } ) - - oDlg := XbpFileDialog():new():create( ::oDlg, , { 10,10 } ) - - IF cMode == "open" - oDlg:title := "Select a Source File" - oDlg:center := .t. - oDlg:fileFilters := aFltr - - cFile := oDlg:open( cDftPath, , .f. ) - IF !empty( cFile ) - ::oIde:cLastFileOpenPath := cFile - ENDIF - - ELSEIF cMode == "openmany" - oDlg:title := "Select Sources" - oDlg:center := .t. - oDlg:defExtension:= 'prg' - oDlg:fileFilters := aFltr - - cFile := oDlg:open( cDftPath, , .t. ) - IF !empty( cFile ) .AND. !empty( cFile[ 1 ] ) - ::oIde:cLastFileOpenPath := cFile[ 1 ] - ENDIF - - ELSEIF cMode == "save" - oDlg:title := iif( !HB_ISSTRING( cTitle ), "Save as...", cTitle ) - oDlg:center := .t. - oDlg:defExtension:= 'prg' - - IF HB_ISSTRING( cFile ) .AND. !Empty( cFile ) - IF Right( cFile, 1 ) $ '/\' - cPath := cFile - ELSE - hb_fNameSplit( cFile, @cPath ) - Endif - Endif - - oDlg:fileFilters := aFltr - cFile := oDlg:saveAs( cPath ) - - ELSE - oDlg:title := "Save this Database" - oDlg:fileFilters := { { "Database Files", "*.dbf" } } - oDlg:quit := {|| MsgBox( "Quitting the Dialog" ), 1 } - cFile := oDlg:saveAs( "myfile.dbf" ) - IF !empty( cFile ) - HB_TRACE( HB_TR_DEBUG, cFile ) - ENDIF - - ENDIF - - oDlg:destroy() - - RETURN cFile - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/stylesheets.prg b/harbour/contrib/hbide/stylesheets.prg deleted file mode 100644 index f4d556d260..0000000000 --- a/harbour/contrib/hbide/stylesheets.prg +++ /dev/null @@ -1,593 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 17Nov2009 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "common.ch" -#include "hbide.ch" -#include "hbqtgui.ch" - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_setAppTheme( aTheme ) - LOCAL oTheme - STATIC sTheme - oTheme := sTheme - IF HB_ISARRAY( aTheme ) - sTheme := aTheme - ENDIF - RETURN oTheme - -/*----------------------------------------------------------------------*/ - -FUNCTION GetStyleSheet( cWidget, nMode ) - LOCAL txt_:= {} - LOCAL s - - DEFAULT nMode TO HBIDE_ANIMATION_NONE - - IF nMode == HBIDE_ANIMATION_NONE - DO CASE - CASE cWidget == "QMainWindow" - - aadd( txt_, 'QMainWindow::separator:hover { ' ) - aadd( txt_, ' background: rgb(200,200,200); ' ) - aadd( txt_, '} ' ) - - CASE cWidget == "QDockWidget" - - aadd( txt_, 'QDockWidget { ' ) - aadd( txt_, ' } ' ) - aadd( txt_, 'QDockWidget::title { ' ) - aadd( txt_, hbide_cssColorString( "bg-darker" ) ) - aadd( txt_, ' padding-left: 10px; ' ) - aadd( txt_, ' padding-top: 2px; ' ) - aadd( txt_, ' border: 1px solid darkgray; ' ) - aadd( txt_, ' border-top-left-radius: 5px; ' ) - aadd( txt_, ' border-top-right-radius: 5px; ' ) - aadd( txt_, ' } ' ) - - OTHERWISE - RETURN "" - - ENDCASE - ENDIF - - DO CASE - CASE cWidget == "QMenuPop" - IF nMode == HBIDE_ANIMATION_GRADIENT - aadd( txt_, 'QMenu { ' ) - aadd( txt_, hbide_ideThemeColorCSS( "MenuPop", 1 ) ) - aadd( txt_, '} ' ) - ELSE - aadd( txt_, 'QMenu { ' ) - aadd( txt_, hbide_cssColorString( "bg-std" ) ) - aadd( txt_, '} ' ) - ENDIF - aadd( txt_, 'QMenu::item { ' ) -// aadd( txt_, ' spacing : 3px; /* spacing between menu bar items */ ' ) - aadd( txt_, ' margin : 1px; ' ) - aadd( txt_, ' padding : 1px 24px; ' ) -// aadd( txt_, ' background : transparent; ' ) -// aadd( txt_, ' border-radius: 4px; ' ) - aadd( txt_, ' color : #000000; ' ) - aadd( txt_, '} ' ) - aadd( txt_, 'QMenu::item:selected { /* when selected using mouse or keyboard */ ' ) - aadd( txt_, ' background: #a8a8a8; ' ) - aadd( txt_, '} ' ) - aadd( txt_, 'QMenu::item:pressed { ' ) - aadd( txt_, ' background: #888888; ' ) - aadd( txt_, '} ' ) - - CASE cWidget == "QMenu" - - aadd( txt_, ' QMenu { ' ) - aadd( txt_, ' background-color: white; ' ) - aadd( txt_, ' margin: 2px; /* some spacing around the menu */ ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QMenu::item { ' ) - aadd( txt_, ' padding: 2px 25px 2px 20px; ' ) - aadd( txt_, ' border: 1px solid transparent; /* reserve space for selection border */ ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QMenu::item:selected { ' ) - aadd( txt_, ' border-color: darkblue; ' ) - aadd( txt_, ' background: rgba(100, 100, 100, 150); ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QMenu::icon:checked { /* appearance of a "checked" icon */ ' ) - aadd( txt_, ' background: gray; ' ) - aadd( txt_, ' border: 1px inset gray; ' ) - aadd( txt_, ' position: absolute; ' ) - aadd( txt_, ' top: 1px; ' ) - aadd( txt_, ' right: 1px; ' ) - aadd( txt_, ' bottom: 1px; ' ) - aadd( txt_, ' left: 1px; ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QMenu::separator { ' ) - aadd( txt_, ' height: 2px; ' ) - aadd( txt_, ' background: lightblue; ' ) - aadd( txt_, ' margin-left: 10px; ' ) - aadd( txt_, ' margin-right: 5px; ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QMenu::indicator { ' ) - aadd( txt_, ' width: 13px; ' ) - aadd( txt_, ' height: 13px; ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QMenu::indicator:non-exclusive:unchecked { ' ) - aadd( txt_, ' image: url(:/images/checkbox_unchecked.png); ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QMenu::indicator:non-exclusive:unchecked:selected { ' ) - aadd( txt_, ' image: url(:/images/checkbox_unchecked_hover.png); ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QMenu::indicator:non-exclusive:checked { ' ) - aadd( txt_, ' image: url(:/images/checkbox_checked.png); ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QMenu::indicator:non-exclusive:checked:selected { ' ) - aadd( txt_, ' image: url(:/images/checkbox_checked_hover.png); ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QMenu::indicator:exclusive:unchecked { ' ) - aadd( txt_, ' image: url(:/images/radiobutton_unchecked.png); ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QMenu::indicator:exclusive:unchecked:selected { ' ) - aadd( txt_, ' image: url(:/images/radiobutton_unchecked_hover.png); ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QMenu::indicator:exclusive:checked { ' ) - aadd( txt_, ' image: url(:/images/radiobutton_checked.png); ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QMenu::indicator:exclusive:checked:selected { ' ) - aadd( txt_, ' image: url(:/images/radiobutton_checked_hover.png); ' ) - aadd( txt_, ' } ' ) - - CASE cWidget == "QMenuBar" - - IF nMode == HBIDE_ANIMATION_GRADIENT - aadd( txt_, 'QMenuBar { ' ) - aadd( txt_, hbide_ideThemeColorCSS( "MenubarTop", 1 ) ) - aadd( txt_, '} ' ) - ELSE - aadd( txt_, 'QMenuBar { ' ) - aadd( txt_, hbide_cssColorString( "bg-std" ) ) - aadd( txt_, '} ' ) - ENDIF - aadd( txt_, 'QMenuBar::item { ' ) - aadd( txt_, ' spacing : 3px; /* spacing between menu bar items */ ' ) - aadd( txt_, ' padding : 1px 10px; ' ) - aadd( txt_, ' background : transparent; ' ) - aadd( txt_, ' border-radius: 4px; ' ) - aadd( txt_, ' color : #000000; ' ) - aadd( txt_, '} ' ) - aadd( txt_, 'QMenuBar::item:selected { /* when selected using mouse or keyboard */ ' ) - aadd( txt_, ' background: #a8a8a8; ' ) - aadd( txt_, '} ' ) - aadd( txt_, 'QMenuBar::item:pressed { ' ) - aadd( txt_, ' background: #888888; ' ) - aadd( txt_, '} ' ) - - CASE cWidget == "QToolBar" - IF nMode == HBIDE_ANIMATION_GRADIENT - aadd( txt_, 'QToolBar { ' ) - aadd( txt_, hbide_ideThemeColorCSS( "ToolbarTop", 1 ) ) - aadd( txt_, ' /*spacing: 3px; spacing between items in the tool bar */ ' ) - aadd( txt_, ' } ' ) - ELSE - aadd( txt_, 'QToolBar { ' ) - aadd( txt_, hbide_cssColorString( "bg-std" ) ) - aadd( txt_, ' } ' ) - ENDIF - - CASE cWidget == "QToolBarLR" - IF nMode == HBIDE_ANIMATION_GRADIENT - aadd( txt_, 'QToolBar { ' ) - aadd( txt_, ' background-color: qlineargradient(x1:1, y1:0, x2:0, y2:0, ' ) - aadd( txt_, ' stop:0 lightgray, stop:1 darkgray); ' ) - aadd( txt_, ' } ' ) - ELSE - aadd( txt_, 'QToolBar { ' ) - aadd( txt_, hbide_cssColorString( "bg-std" ) ) - aadd( txt_, ' } ' ) - ENDIF - - CASE cWidget == "QToolBarLR5" - IF nMode == HBIDE_ANIMATION_GRADIENT - aadd( txt_, 'QToolBar { ' ) - aadd( txt_, hbide_ideThemeColorCSS( "ToolbarLR", 1 ) ) - * aadd( txt_, ' spacing: 1px; color: white; margin-top: 2px; ' ) - aadd( txt_, ' } ' ) - ELSE - aadd( txt_, 'QToolBar { ' ) - aadd( txt_, hbide_cssColorString( "bg-std" ) ) - * aadd( txt_, ' spacing: 1px; color: white; margin-top: 2px; ' ) - aadd( txt_, ' } ' ) - ENDIF - - - CASE cWidget == "QToolBarRL" - IF nMode == HBIDE_ANIMATION_GRADIENT - aadd( txt_, 'QToolBar { ' ) - aadd( txt_, ' background-color: qlineargradient(x1:0, y1:0, x2:1, y2:0, ' ) - aadd( txt_, ' stop:0 lightgray, stop:1 darkgray); ' ) - aadd( txt_, ' /*spacing: 3px; spacing between items in the tool bar */ ' ) - aadd( txt_, ' } ' ) - ELSE - aadd( txt_, 'QToolBar { ' ) - aadd( txt_, hbide_cssColorString( "bg-std" ) ) - aadd( txt_, ' } ' ) - ENDIF - - CASE cWidget == "QToolBarRL5" - IF nMode == HBIDE_ANIMATION_GRADIENT - aadd( txt_, 'QToolBar { ' ) - aadd( txt_, ' background-color: qlineargradient(x1:0, y1:0, x2:1, y2:0, ' ) - aadd( txt_, ' stop:0 lightgray, stop:1 darkgray); ' ) - aadd( txt_, ' spacing: 1px; color: white; margin-top: 2px; ' ) - aadd( txt_, ' } ' ) - ELSE - aadd( txt_, 'QToolBar { ' ) - aadd( txt_, hbide_cssColorString( "bg-std" ) ) - aadd( txt_, ' } ' ) - ENDIF - - CASE cWidget == "QTreeWidgetHB" - - aadd( txt_, ' QTreeWidget { ' ) - aadd( txt_, ' alternate-background-color: yellow; ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QTreeWidget { ' ) - aadd( txt_, ' show-decoration-selected: 1; ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QTreeWidget::item:alternate { ' ) - aadd( txt_, ' background: #EEEEEE; ' ) - aadd( txt_, ' } ' ) - * aadd( txt_, ' QTreeWidget::item:selected { ' ) - * aadd( txt_, ' border: 1px solid #6a6ea9; ' ) - * aadd( txt_, ' } ' ) - - CASE cWidget == "QTreeWidget" - - aadd( txt_, ' QTreeWidget { ' ) - aadd( txt_, ' alternate-background-color: yellow; ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QTreeWidget { ' ) - aadd( txt_, ' show-decoration-selected: 1; ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QTreeWidget::item:alternate { ' ) - aadd( txt_, ' background: #EEEEEE; ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QTreeWidget::item:selected { ' ) - aadd( txt_, ' border: 1px solid #6a6ea9; ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QTreeWidget::item:selected:!active { ' ) - aadd( txt_, ' background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, ' ) - aadd( txt_, ' stop: 0 #ABAFE5, stop: 1 #8588B2); ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QTreeWidget::item:selected:active { ' ) - aadd( txt_, ' background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, ' ) - aadd( txt_, ' stop: 0 #6a6ea9, stop: 1 #888dd9); ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QTreeWidget::item:hover { ' ) - aadd( txt_, ' background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, ' ) - aadd( txt_, ' stop: 0 #FAFBFE, stop: 1 #DCDEF1); ' ) - aadd( txt_, '} ' ) - aadd( txt_, ' QTreeWidget { ' ) - aadd( txt_, ' background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, ' ) - aadd( txt_, ' stop: 0 rgba(173, 173, 173, 255), stop:1 rgba(255, 255, 255, 255)); ' ) - aadd( txt_, '} ' ) - - CASE cWidget == "QListView" - - aadd( txt_, ' QListView { ' ) - aadd( txt_, ' alternate-background-color: yellow; ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QListView { ' ) - aadd( txt_, ' show-decoration-selected: 1; ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QListView::item:alternate { ' ) - aadd( txt_, ' background: #EEEEEE; ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QListView::item:selected { ' ) - aadd( txt_, ' border: 1px solid #6a6ea9; ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QListView::item:selected:!active { ' ) - aadd( txt_, ' background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, ' ) - aadd( txt_, ' stop: 0 #ABAFE5, stop: 1 #8588B2); ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QListView::item:selected:active { ' ) - aadd( txt_, ' background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, ' ) - aadd( txt_, ' stop: 0 #6a6ea9, stop: 1 #888dd9); ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QListView::item:hover { ' ) - aadd( txt_, ' background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, ' ) - aadd( txt_, ' stop: 0 #FAFBFE, stop: 1 #DCDEF1); ' ) - aadd( txt_, '} ' ) - aadd( txt_, ' QListView { ' ) - IF nMode == HBIDE_ANIMATION_GRADIENT - aadd( txt_, ' background: qlineargradient(spread:pad, x1:0.755727, y1:0.864, x2:1, y2:0,' ) - aadd( txt_, ' stop:0 rgba(214, 209, 142, 255), stop:1 rgba(255, 255, 255, 255));' ) - ELSE - aadd( txt_, ' background: qlineargradient(x1: 1, y1: 0, x2: 0, y2: 0, ' ) - aadd( txt_, ' stop: 0 rgba(173, 173, 173, 255), stop:1 rgba(255, 255, 255, 255)); ' ) - ENDIF - aadd( txt_, '} ' ) - - CASE cWidget == "QMainWindow" - - aadd( txt_, 'QMainWindow::separator { ' ) - aadd( txt_, ' width: 6px; /* when vertical */ ' ) - aadd( txt_, ' height: 6px; /* when horizontal */ ' ) - aadd( txt_, '} ' ) - aadd( txt_, 'QMainWindow::separator:hover { ' ) - aadd( txt_, ' background: rgb(200,200,200); ' ) - aadd( txt_, '} ' ) - - CASE cWidget == "QStatusBar" - IF nMode == HBIDE_ANIMATION_GRADIENT - aadd( txt_, 'QStatusBar { ' ) - aadd( txt_, hbide_ideThemeColorCSS( "statusbar", 1 ) ) - aadd( txt_, ' } ' ) - ELSE - aadd( txt_, 'QStatusBar { ' ) - aadd( txt_, hbide_cssColorString( "bg-std" ) ) - aadd( txt_, ' } ' ) - ENDIF - - CASE cWidget == "QTabWidget" - IF nMode == HBIDE_ANIMATION_GRADIENT - - aadd( txt_, 'QTabWidget::pane { /* The tab widget frame */ ' ) - aadd( txt_, ' border-top: 2px solid #C2C7CB; ' ) - aadd( txt_, '} ' ) - aadd( txt_, 'QTabWidget::tab-bar { ' ) - aadd( txt_, ' background: qlineargradient(x1:0, y1:1, x2:0, y2:0, ' ) - aadd( txt_, ' stop:0 lightgray, stop:1 darkgray); ' ) - aadd( txt_, hbide_ideThemeColorCSS( "TabBar", 1 ) ) - aadd( txt_, '} ' ) - aadd( txt_, 'QTabBar::tab { ' ) - aadd( txt_, hbide_ideThemeColorCSS( "Tab", 1 ) ) - aadd( txt_, ' border: 2px solid #94C4C3; ' ) - aadd( txt_, ' border-bottom-color: #C2C7CB; /* same as the pane color */ ' ) - aadd( txt_, ' border-top-left-radius: 6px; ' ) - aadd( txt_, ' border-top-right-radius: 6px; ' ) - aadd( txt_, ' padding-left: 2px; ' ) - aadd( txt_, '} ' ) - aadd( txt_, ' QTabBar::tab:selected { ' ) - aadd( txt_, ' background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, ' ) - aadd( txt_, ' stop: 0 #fafafa, stop: 0.4 #f4f4f4, ' ) - aadd( txt_, ' stop: 0.5 #e7e7e7, stop: 1.0 #fafafa); ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QTabBar::tab:selected:hover { ' ) - aadd( txt_, ' background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, ' ) - aadd( txt_, ' stop: 0 #fafafa, stop: 0.4 #f4f4f4, ' ) - aadd( txt_, ' stop: 0.5 #e7e7e7, stop: 1.0 #fafafa); ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QTabBar::tab:hover { ' ) - aadd( txt_, ' background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, ' ) - aadd( txt_, ' stop: 0 yellow, stop: 0.4 #f4f4f4, ' ) - aadd( txt_, ' stop: 0.5 #e7e7e7, stop: 1.0 orange); ' ) - aadd( txt_, ' } ' ) - - ELSE - - aadd( txt_, 'QTabWidget::pane { /* The tab widget frame */ ' ) - aadd( txt_, ' border-top: 2px solid #C2C7CB; ' ) - aadd( txt_, '} ' ) - aadd( txt_, 'QTabWidget::tab-bar { ' ) - aadd( txt_, ' /* left: 5px; move to the right by 5px */ ' ) - aadd( txt_, '} ' ) - aadd( txt_, 'QTabBar { ' ) - aadd( txt_, hbide_cssColorString( "bg-std" ) ) - aadd( txt_, '} ' ) - aadd( txt_, 'QTabBar::tab { ' ) - aadd( txt_, hbide_cssColorString( "bg-std" ) ) - aadd( txt_, ' border: 2px solid #94C4C3; ' ) - aadd( txt_, ' border-bottom-color: #C2C7CB; /* same as the pane color */ ' ) - aadd( txt_, ' border-top-left-radius: 6px; ' ) - aadd( txt_, ' border-top-right-radius: 6px; ' ) - aadd( txt_, ' padding-left: 2px; ' ) - aadd( txt_, '} ' ) - aadd( txt_, ' QTabBar::tab:selected { ' ) - aadd( txt_, ' background: rgb( 230,230,230 ); ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QTabBar::tab:selected:hover { ' ) - aadd( txt_, ' background: yellow; ' ) - aadd( txt_, ' } ' ) - aadd( txt_, ' QTabBar::tab:hover { ' ) - aadd( txt_, ' background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, ' ) - aadd( txt_, ' stop: 0 yellow, stop: 0.4 #f4f4f4, ' ) - aadd( txt_, ' stop: 0.5 #e7e7e7, stop: 1.0 orange); ' ) - aadd( txt_, ' } ' ) - - ENDIF - CASE cWidget == "QPlainTextEdit" - - aadd( txt_, ' QPlainTextEdit { ' ) - aadd( txt_, ' background: qlineargradient(x1:0, y1:0, x2:0, y2:1, ' ) - aadd( txt_, ' stop:0 white, stop:1 lightblue); ' ) - aadd( txt_, ' } ' ) - - CASE cWidget == "QDockWidget" - - aadd( txt_, 'QDockWidget { ' ) - aadd( txt_, ' border: 1px solid darkgray; ' ) - aadd( txt_, ' } ' ) - aadd( txt_, 'QDockWidget::title { ' ) - IF nMode == HBIDE_ANIMATION_GRADIENT - aadd( txt_, hbide_ideThemeColorCSS( "DockWidget", 1 ) ) - ELSE - aadd( txt_, hbide_cssColorString( "bg-darker" ) ) - ENDIF - aadd( txt_, ' padding-left: 10px; ' ) - aadd( txt_, ' padding-top: 2px; ' ) - aadd( txt_, ' } ' ) - - CASE cWidget == "PathIsWrong" - aadd( txt_, "background-color: rgba( 240,120,120,255 );" ) - - ENDCASE - - s := "" - - aeval( txt_, {|e| s += trim( e ) + chr( 13 ) + chr( 10 ) } ) - - RETURN s - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_cssColorString( cPart ) - LOCAL qColor - - SWITCH lower( cPart ) - - CASE "bg-darker" - qColor := QPalette():color( QPalette_Button ):darker( 105 ) - RETURN ' background-color: ' + hbide_rgbString( qColor:red(), qColor:green(), qColor:blue() ) + ';' - - CASE "bg-std" - qColor := QPalette():color( QPalette_Button ) - RETURN ' background-color: ' + hbide_rgbString( qColor:red(), qColor:green(), qColor:blue() ) + ';' - - ENDSWITCH - - RETURN "" - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_rgbString( nR, nG, nB ) - IF HB_ISARRAY( nR ) - RETURN "rgb(" + hb_ntos( nR[ 1 ] ) + "," + hb_ntos( nR[ 2 ] ) + "," + hb_ntos( nR[ 3 ] ) + ")" - ELSE - RETURN "rgb(" + hb_ntos( nR ) + "," + hb_ntos( nG ) + "," + hb_ntos( nB ) + ")" - ENDIF - RETURN "" - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_buildGradientString( aGrands ) - LOCAL a_, s := "" - - FOR EACH a_ IN aGrands - s += "stop:" + hb_ntos( a_[ 1 ] ) + " " + hbide_rgbString( a_[ 2 ], a_[ 3 ], a_[ 4 ] ) + ", " - NEXT - - RETURN substr( s, 1, Len( s ) - 2 ) - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_loadIdeTheme( nTheme ) - // Theme values can be made outer - // - DO CASE - CASE nTheme == 1 - IF empty( hbide_setAppTheme() ) - RETURN { {0,255,255,255}, {0.25,219,230,244}, {0.5,201,217,237}, {0.75,231,242,255} } - ELSE - RETURN hbide_setAppTheme() - ENDIF - CASE nTheme == 2 - RETURN { {0,173,185,207}, {1,199,212,231} } - ENDCASE - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_ideThemeColorCSS( cPart, nTheme ) - LOCAL cCSS := "" - - cPart := lower( cPart ) - - DO CASE - CASE cPart == "menupop" - cCSS := ' background-color: qlineargradient(x1:0, y1:0, x2:1, y2:0, ' + ; - hbide_buildGradientString( hbide_loadIdeTheme( nTheme ) ) + "); " - CASE cPart == "menubartop" - cCSS := ' background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, ' + ; - hbide_buildGradientString( hbide_loadIdeTheme( nTheme ) ) + "); " - CASE cPart == "toolbartop" - cCSS := ' background-color: qlineargradient(x1:0, y1:1, x2:0, y2:0, ' + ; - hbide_buildGradientString( hbide_loadIdeTheme( nTheme ) ) + "); " - CASE cPart == "toolbarlr" - cCSS := ' background-color: qlineargradient(x1:1, y1:0, x2:0, y2:0, ' + ; - hbide_buildGradientString( hbide_loadIdeTheme( nTheme ) ) + "); " - CASE cPart == "dockwidget" - cCSS := ' background-color: qlineargradient(x1:0, y1:1, x2:0, y2:0, ' + ; - hbide_buildGradientString( hbide_loadIdeTheme( nTheme ) ) + "); " - CASE cPart == "tabbar" - cCSS := ' background-color: qlineargradient(x1:0, y1:1, x2:0, y2:0, ' + ; - hbide_buildGradientString( hbide_loadIdeTheme( nTheme ) ) + "); " - CASE cPart == "statusbar" - cCSS := ' background-color: qlineargradient(x1:0, y1:1, x2:0, y2:0, ' + ; - hbide_buildGradientString( hbide_loadIdeTheme( nTheme ) ) + "); " - CASE cPart == "tab" - cCSS := ' background-color: qlineargradient(x1:0, y1:1, x2:0, y2:0, ' + ; - hbide_buildGradientString( hbide_loadIdeTheme( nTheme ) ) + "); " - CASE cPart == "tabselected" - cCSS := ' background-color: qlineargradient(x1:0, y1:1, x2:0, y2:0, ' + ; - hbide_buildGradientString( hbide_loadIdeTheme( nTheme ) ) + "); " - CASE cPart == "tabselectedhover" - cCSS := ' background-color: qlineargradient(x1:0, y1:1, x2:0, y2:0, ' + ; - hbide_buildGradientString( hbide_loadIdeTheme( nTheme ) ) + "); " - ENDCASE - - RETURN cCSS - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/tags.prg b/harbour/contrib/hbide/tags.prg deleted file mode 100644 index 4fd931da5f..0000000000 --- a/harbour/contrib/hbide/tags.prg +++ /dev/null @@ -1,449 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009 Andy Wos - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Code Forwarded by Andy Wos - * - * Pritpal Bedi - * 22Nov2009 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "common.ch" -#include "xbp.ch" - -#define LEFTEQUAL( l, r ) ( Left( l, Len( r ) ) == r ) - -/*----------------------------------------------------------------------*/ - -FUNCTION UpdateTags( cModule, aSummary, aSumData, aFuncList, aLines, aText ) - LOCAL cType, cName, cSyntax, n, m, i, cSource, cExt - LOCAL cClassName := "" - LOCAL aTags := {} - LOCAL cGoodFuncNameChars := "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" - - Hb_FNameSplit( cModule, , @cSource, @cExt ) - cSource += cExt - - aFuncList := {} - aLines := {} - - FOR i := 1 TO Len( aSummary ) - cSyntax := lTrim( Substr( aSummary[ i ], 8 ) ) - - IF LEFT( cSyntax,14 ) == "HB_FUNC_STATIC" - cType := "HB_FUNC_STATIC" - cSyntax := AllTrim( StrTran( StrTran( Substr( cSyntax, 15 ), "(", "" ), ")", "" ) ) - cName := cSyntax - cSyntax += "(void)" - - ELSEIF LEFT( cSyntax, 7 ) == "HB_FUNC" - cType := "HB_FUNC" - cSyntax := AllTrim( StrTran( StrTran( Substr( cSyntax,8 ), "(", "" ), ")", "" ) ) - cName := cSyntax - cSyntax += "(void)" - - ELSE - cType := Upper( Left( cSyntax, At( " ", cSyntax ) - 1 ) ) - IF LEFTEQUAL( cType, "INIT" ) .OR. LEFTEQUAL( cType, "EXIT" ) - cSyntax := LTrim( Substr( cSyntax, 6 ) ) - cType +=" "+Upper( Left( cSyntax, ( n := At( " ", cSyntax ) ) - 1 ) ) - cSyntax := LTrim( Substr( cSyntax, n + 1 ) ) - - ELSEIF LEFTEQUAL( cType, "STATIC" ) - cSyntax := LTrim( Substr( cSyntax, 7 ) ) - cType += " " + Upper( Left( cSyntax, ( n := At( " ", cSyntax ) ) - 1 ) ) - cSyntax := LTrim( Substr( cSyntax, n + 1 ) ) - - ELSEIF LEFTEQUAL( cType, "DLL" ) - cSyntax := LTrim( Substr( cSyntax, 4 ) ) - cType += " " + Upper( Left( cSyntax, ( n := At( " ", cSyntax ) ) - 1 ) ) - cSyntax := LTrim( Substr( cSyntax, n + 1 ) ) - - ELSEIF LEFTEQUAL( cType, "DLL32" ) - cSyntax := LTrim( Substr( cSyntax, 6 ) ) - cType += " " + Upper( Left( cSyntax, ( n := At( " ", cSyntax ) ) - 1 ) ) - cSyntax := LTrim( Substr( cSyntax, n + 1 ) ) - - ELSEIF cType == "CLASS" - cSyntax := LTrim( SubStr( cSyntax, 7 ) ) - ELSE - cSyntax := LTrim( SubStr( cSyntax, Len( cType ) + 1 ) ) - ENDIF - - IF ( n := RAt( "(", cSyntax ) ) > 0 - cName := Trim( Left( cSyntax, n-1 ) ) - FOR m := Len( cName ) TO 1 STEP -1 - IF !( substr( cName, m, 1 ) $ cGoodFuncNameChars ) - EXIT - ENDIF - NEXT - - IF m > 0 - cType += " " + Left( cSyntax, m - 1 ) - cSyntax := SubStr( cSyntax, m + 1 ) - cName := SubStr( cName, m + 1 ) - ENDIF - - IF LEFTEQUAL( cType, "METH" ) - IF ( n := Rat( " CLASS ", cSyntax ) ) > 0 - cClassName := Upper( AllTrim( Substr( cSyntax, n + 7 ) ) ) - ELSE - cClassName := cClassName - ENDIF - ENDIF - - ELSEIF LEFTEQUAL( cType, "METH" ) - IF ( n := Rat( " CLASS ", cSyntax ) ) > 0 - cName := Left( cSyntax, n - 1 ) - cClassName := Upper( AllTrim( Substr( cSyntax, n + 7 ) ) ) - ELSE - cName := cSyntax - cClassName := cClassName - ENDIF - ELSE - cName := cSyntax - ENDIF - - IF cType == "CLASS" - cClassName := Upper( cName ) - cClassName := Left( cClassName, At( " ", cClassName + " " ) - 1 ) // remove INHERIT - ENDIF - - ENDIF - - IF !aSumData[ i,1 ] // not commented out ! - aAdd( aTags, { Upper( Trim( cName ) ) ,; - iif( LEFTEQUAL( cType, "METH" ), iif( !Empty( cClassName ), cClassName + ":" + Upper( cType ), Upper( cType ) ), Upper( cType ) ),; - aSumData[ i,2 ],; - cModule ,; - cSyntax ,; - cType ,; - iif( LEFTEQUAL( cType, "METH" ), "", "" ) + cSyntax, ; - aText[ aSumData[ i,2 ] ] ; - }; - ) - ENDIF - - AAdd( aFuncList, { iif( LEFTEQUAL( cType, "METH" ), "", "" ) + cSyntax, aSumData[ i, 2 ], aSumData[ i, 1 ] } ) - AAdd( aLines, i ) - NEXT - - RETURN aTags - -/*----------------------------------------------------------------------*/ - -FUNCTION Summarize( aText, cComments, aSumData, nFileType ) - LOCAL cline, i,j, n, c, a, aSummary - LOCAL cCLine := "" - LOCAL lInComment := .F. - LOCAL lInClass := .F. - LOCAL nLine := 1 - LOCAL nType := nFileType - LOCAL nNest := 0 - - aSummary := {} - aSumData := {} - n := Len( aText ) - - FOR i := 1 TO n - cline := Upper( AllTrim( aText[ i ] ) ) - - IF nType == 9 .OR. nType == 10 // PRG code - - IF ! lInClass .OR. LEFTEQUAL( cLine, "METH" ) - IF LEFTEQUAL( cLine, 'FUNCTION ' ) .OR. ; - LEFTEQUAL( cLine, 'PROCEDURE ' ) .OR. ; - LEFTEQUAL( cLine, 'STATIC PROCEDURE ' ) .OR. ; - LEFTEQUAL( cLine, 'STATIC FUNCTION ' ) .OR. ; - LEFTEQUAL( cLine, 'DLL FUNC' ) .OR. ; - LEFTEQUAL( cLine, 'DLL32 FUNC' ) .OR. ; - LEFTEQUAL( cLine, 'METHOD ' ) .OR. ; - LEFTEQUAL( cLine, 'FUNC ' ) .OR. ; - LEFTEQUAL( cLine, 'PROC ' ) .OR. ; - LEFTEQUAL( cLine, 'METH ' ) .OR. ; - LEFTEQUAL( cLine, 'STATIC PROC ' ) .OR. ; - LEFTEQUAL( cLine, 'STATIC FUNC ' ) .OR. ; - LEFTEQUAL( cLine, 'INIT FUNC' ) .OR. ; - LEFTEQUAL( cLine, 'INIT PROC' ) .OR. ; - LEFTEQUAL( cLine, 'EXIT FUNC' ) .OR. ; - LEFTEQUAL( cLine, 'EXIT PROC' ) .OR. ; - LEFTEQUAL( cLine, 'CLASS ' ) .OR. ; - LEFTEQUAL( cLine, 'CREATE CLASS ' ) .OR. ; - LEFTEQUAL( cLine, 'INIT CLASS ' ) - - // check for multiline declaration - a := ParsExpr( aText[ i ], .F., , , .F. ) - c := "" - AEval( a, {|x| c += x } ) - c := AllTrim( c ) - nLine := i - - DO WHILE Right( c, 1 ) == ";" - i++ - c := Left( c, Len( c ) - 1 ) - a := ParsExpr( aText[ i ] + " ", .F. , , ,.F. ) - AEval( a,{|x| c += x } ) - c := AllTrim( c ) - ENDDO - - IF lInClass - IF LEFTEQUAL( cLine, 'METH' ) - IF " INLINE " $ Upper( c ) - c := Trim( Left( c, At( " INLINE ", Upper( c ) ) ) ) - ELSE - LOOP - ENDIF - ENDIF - ENDIF - - IF ( j := At( ";", c ) ) > 0 - c := Left( c, j-1 ) - ENDIF - - lInComment := ( Asc( substr( cComments, nLine, 1 ) ) == 3 ) - aAdd( aSumData, { lInComment, nLine } ) - aAdd( aSummary, Str( nLine, 5, 0 ) + ': ' + c ) - - IF ! lInClass - lInClass := LEFTEQUAL( cLine, 'CLASS ' ) .OR. LEFTEQUAL( cLine, 'CREATE CLASS ' ) - ENDIF - ELSEIF LEFTEQUAL( cLine, "#PRAGMA BEGINDUMP" ) - nType := 1 - nNest := 0 - ccLine := "" - ENDIF - ELSE - lInClass := ( cline # 'END' ) - ENDIF - - ELSE // C code - - IF LEFTEQUAL( cLine, "#PRAGMA ENDDUMP" ) - nType := nFileType - ELSE - IF nNest == 0 - IF .F. - nLine := i - a := ParsExpr( aText[ i ], .F., @lInComment , , .F., .F. ) - ccLine := "" - c := "" - - AEval( a, {|x| c += x, nNest := Max( 0, nNest + iif( x == "{", 1, iif( x == "}", -1, 0 ) ) ) } ) - ccLine := AllTrim( c ) - ELSE - IF ! Empty( cLine ) - a := ParsExpr( aText[ i ], .F. , @lInComment, , .F., .F. ) - c := "" - IF Len( a ) > 0 .AND. a[ 1 ] == "#" - ccLine := "" - nLine := i+1 - ELSE - AEval( a, {|x| iif( x == ";", ( nLine := i+1, ccLine :="", c := "" ), c += x ), nNest := Max( 0, nNest + iif( x == "{", 1, iif( x == "}", -1, 0 ) ) ) } ) - ENDIF - IF !lInComment .AND. ! Empty(c) - ccLine += AllTrim( c ) + " " - ccLine := StrTran( ccLine, ") {", "){" ) - ENDIF - ELSE - nLine := i+1 - ENDIF - ENDIF - - IF "){" $ ccLine // this is a function call - ccline := Left( ccline, At( "){", ccline ) ) - aAdd( aSumData, { lInComment, nLine } ) - aAdd( aSummary, Str( nLine, 5, 0 ) + ': ' + ccline ) //lTrim( ::aText[ i ] ) ) - ccLine := "" - ENDIF - - ELSE - a := ParsExpr( aText[ i ], .F. , @lInComment, , .F., .F.) - AEval( a, {| x | nNest := Max( 0, nNest + iif( x == "{", 1, iif( x == "}", -1, 0 ) ) ) } ) - ccLine := "" - nLine := i+1 - ENDIF - ENDIF - ENDIF - NEXT - - RETURN aSummary - -/*----------------------------------------------------------------------*/ -/* - updates comments of the whole file or down from line nline (if supplied) - comment nState codes: - - start commented => 1 - leave commented => 2 - unchanged but contains comment code => 4 -*/ -FUNCTION CheckComments( aText ) - LOCAL i, j, lChanged, nState, cText, nPos, cQuote, lInString - LOCAL lInComment := .F. - LOCAL lLineComment := .F. - LOCAL cComments := "" - LOCAL nLine := 1 - LOCAL nLines := Len( aText ) - - cComments := Pad( cComments, nLines, chr( 0 ) ) - - FOR i := nLine TO nLines - - nState := iif( lInComment, 1, 0 ) - lChanged := .F. - cText := aText[ i ] - - IF "*" $ cText .OR. "/" $ cText // quick test - nPos := 0 - - DO WHILE .T. - - // check if terminated - IF lInComment - IF ( nPos := At( "*/", cText ) ) > 0 - lChanged := .T. - lInComment := .F. - cText := SubStr( cText, nPos + 2 ) - ENDIF - ENDIF - - // check for comment start - IF !lInComment - DO WHILE ( nPos := hb_at( "//", cText, nPos+1 ) ) > 0 // is the line commented out ? - IF ! IsInString( cText, nPos, 1 ) // or is it just part of the string ? - cText := Left( cText, nPos - 1 ) - - IF Empty( cText ) - lInComment := .T. - lLineComment := .T. - ENDIF - - EXIT - ENDIF - ENDDO - ENDIF - - IF ( nPos := At( "/*", cText ) ) > 0 // does start of comment exits on that line - - IF ( lInstring := IsInString( cText, nPos, 1, @cQuote ) ) - - // find the end of the string - FOR j := nPos+1 TO Len( cText ) - IF substr( cText, j, 1 ) == cQuote - cText := SubStr( cText, j + 1 ) - nPos := At( "/*", cText ) - lInString := .F. - EXIT - ENDIF - NEXT - IF j > Len( cText ) .AND. lInString - cText := "" - ENDIF - - ELSE - lChanged := .T. - lInComment := .T. - cText := Substr( cText, nPos + 2 ) - ENDIF - - ENDIF - - IF nPos == 0 .OR. Empty( cText ) - EXIT - ENDIF - ENDDO - ENDIF - - cComments := substr( cComments, 1, i-1 ) + chr( nState + ( iif( lInComment, 2, 0 ) + iif( lChanged, 4, 0 ) ) ) + substr( cComments, i+1 ) - IF nState == 0 .AND. lLineComment - lInComment := .F. - ENDIF - lLineComment := .F. - - NEXT - - RETURN cComments - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION IsInString( cText, nPos, nStart, cQuote ) - LOCAL j, cTkn - LOCAL lInString := .F. - - STATIC cAnyQuote := '"' + "'" - - FOR j := nStart TO nPos-1 // check if string did not begin before it - cTkn := substr( cText, j, 1 ) - IF cTkn $ cAnyQuote // any quote characters present ? - IF lInstring // if we are already in string - IF cTkn == cQuote // is it a matching quote ? - lInstring := .F. // yes, we are no in string any more - ENDIF - ELSE // we are not in string yet - cQuote := cTkn // this is the streing quote - lInstring := .T. // now we are in string - ENDIF - ENDIF - NEXT - - RETURN lInString - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/themes.prg b/harbour/contrib/hbide/themes.prg deleted file mode 100644 index 7f441a409f..0000000000 --- a/harbour/contrib/hbide/themes.prg +++ /dev/null @@ -1,1245 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 31Dec2009 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "common.ch" -#include "hbclass.ch" -#include "hbqtgui.ch" -#include "hbide.ch" - -/*----------------------------------------------------------------------*/ - -#define THM_ATR_R 1 -#define THM_ATR_G 2 -#define THM_ATR_B 3 -#define THM_ATR_ITALIC 4 -#define THM_ATR_BOLD 5 -#define THM_ATR_ULINE 6 - -#define THM_NUM_ATTRBS 6 - -/*----------------------------------------------------------------------*/ - -#define __listThemes_currentRowChanged__ 2001 -#define __listItems_currentRowChanged__ 2002 -#define __applyMenu_triggered_applyToCurrentTab__ 2003 -#define __applyMenu_triggered_applyToAllTabs__ 2004 -#define __applyMenu_triggered_setAsDefault__ 2005 - -/*----------------------------------------------------------------------*/ - -CLASS IdeThemes INHERIT IdeObject - - VAR lDefault INIT .t. - VAR cThemesFile INIT "" - - VAR aIni INIT {} - VAR aThemes INIT {} - VAR aControls INIT {} - VAR aItems INIT {} - VAR aPatterns INIT {} - VAR aApplyAct INIT {} - VAR nCurTheme INIT 1 - VAR nCurItem INIT 1 - - VAR qEdit - VAR oEdit - VAR qHiliter - VAR qMenuApply - - VAR lCreating INIT .f. - - VAR oSL - VAR cSelTheme - - METHOD new( oIde, cThemesFile ) - METHOD create( oIde, cThemesFile ) - METHOD destroy() - METHOD setWrkTheme( cTheme ) - METHOD contains( cTheme ) - METHOD load( cFile ) - METHOD save( lAsk ) - METHOD execEvent( nEvent, p ) - METHOD getThemeAttribute( cAttr, cTheme ) - METHOD buildSyntaxFormat( aAttr ) - METHOD setForeBackGround( qEdit, cTheme ) - METHOD setQuotesRule( qHiliter, cTheme ) - METHOD setMultiLineCommentRule( qHiliter, cTheme ) - METHOD setSingleLineCommentRule( qHiliter, cTheme ) - METHOD setSyntaxRule( qHiliter, cName, cPattern, lCaseSensitive, aAttr ) - METHOD setSyntaxFormat( qHiliter, cName, aAttr ) - METHOD setSyntaxHilighting( qEdit, cTheme, lNew, lSetEditor ) - METHOD show() - METHOD copy() - METHOD setTheme() - METHOD setAttributes() - METHOD updateColor() - METHOD updateAttribute( nAttr, iState ) - METHOD selectTheme() - METHOD selectThemeProc( nMode, p ) - METHOD buildINI() - METHOD parseINI( lAppend ) - METHOD updateLineNumbersBkColor() - METHOD updateCurrentLineColor() - METHOD mergeUserDictionaries( qHiliter, cTheme ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:new( oIde, cThemesFile ) - - ::oIde := oIde - ::cThemesFile := cThemesFile - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:destroy() - - IF !empty( ::oSL ) - ::oSL:listOptions :disConnect( "doubleClicked(QModelIndex)" ) - ::oSL:buttonOk :disConnect( "clicked()" ) - ::oSL:buttonCancel :disConnect( "clicked()" ) - ::oSL:destroy() - ENDIF - - ::aIni := NIL - ::aThemes := NIL - ::aControls := NIL - ::aItems := NIL - ::aPatterns := NIL - ::aApplyAct := NIL - - IF !empty( ::oUI ) - ::oUI:listThemes :disconnect( "currentRowChanged(int)" ) - ::oUI:listItems :disconnect( "currentRowChanged(int)" ) - ::oUI:buttonColor :disconnect( "clicked()" ) - ::oUI:buttonSave :disconnect( "clicked()" ) - ::oUI:buttonSaveAs :disconnect( "clicked()" ) - ::oUI:buttonCopy :disconnect( "clicked()" ) - ::oUI:buttonApply :disconnect( "clicked()" ) - ::oUI:buttonApplyAll:disconnect( "clicked()" ) - ::oUI:buttonDefault :disconnect( "clicked()" ) - ::oUI:checkItalic :disconnect( "stateChanged(int)" ) - ::oUI:checkBold :disconnect( "stateChanged(int)" ) - ::oUI:checkUnderline:disconnect( "stateChanged(int)" ) - ::oUI:buttonClose :disconnect( "clicked()" ) - - ::qHiliter := NIL - ::qEdit := NIL - - ::oUI:destroy() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:create( oIde, cThemesFile ) - LOCAL s, b_ - - DEFAULT oIde TO ::oIde - DEFAULT cThemesFile TO ::cThemesFile - - ::oIde := oIde - ::cThemesFile := cThemesFile - - /* next always load default themes */ - ::aIni := hbide_loadDefaultThemes() - ::parseINI() - - /* first load user defined themes */ - ::load( ::cThemesFile ) - - /* These are the supported patterns - rest will be ignore until implemented */ - - /* Compiler Directives */ - b_:= { "include","define","if","ifndef","ifdef","else","endif","command","xcommand","translate","xtranslate" } - s := ""; aeval( b_, {|e| s += iif( empty( s ), "", "|" ) + "#" + e + "\b" } ) - aadd( ::aPatterns, { "PreprocessorDirectives", s, .f. } ) - - /* Harbour Keywords */ - b_:= { 'function','procedure','thread','return','static','local','default', ; - 'if','else','elseif','endif','end', ; - 'docase','case','endcase','otherwise', ; - 'switch','endswitch', ; - 'do','while','exit','enddo','loop',; - 'for','each','next','step','to','in',; - 'with','replace','object','endwith','request',; - 'nil','and','or','in','not','self',; - 'class','endclass','method','data','var','destructor','inline','assign','access',; - 'inherit','init','create','virtual','message', 'from', 'setget',; - 'begin','sequence','try','catch','always','recover','hb_symbol_unused', ; - 'error','handler','private','public' } - s := ""; aeval( b_, {|e| s += iif( empty( s ), "", "|" ) + "\b" + e + "\b" } ) - aadd( ::aPatterns, { "HarbourKeywords" , s, .f. } ) - - /* C Language Keywords - Only for C or CPP sources - mutually exclusive with Harbour Sources */ - b_:= { "char", "class", "const", "double", "enum", "explicit", "friend", "inline", ; - "int", "long", "namespace", "operator", "private", "protected", "public", ; - "short", "signals", "signed", "slots", "static", "struct", "template", ; - "typedef", "typename", "union", "unsigned", "virtual", "void", "volatile" } - s := ""; aeval( b_, {|e| s += iif( empty( s ), "", "|" ) + "\b" + e + "\b" } ) - aadd( ::aPatterns, { "CLanguageKeywords" , s , .t. } ) - - //s := "\:\=|\:|\+|\-|\\|\*|\ IN\ |\ in\ |\=|\>|\<|\^|\%|\$|\&|\@|\.or\.|\.and\.|\.OR\.|\.AND\.|\!" - s := "\:\=|\:|\+|\-|\\|\*|\=|\>|\<|\^|\%|\$|\&|\@|\!" - aadd( ::aPatterns, { "Operators" , s , .f. } ) - - aadd( ::aPatterns, { "NumericalConstants", "\b[0-9.]+\b" , .f. } ) - - aadd( ::aPatterns, { "BracketsAndBraces" , "\(|\)|\{|\}|\[|\]|\|" , .f. } ) - - aadd( ::aPatterns, { "FunctionsBody" , "\b[A-Za-z0-9_]+(?=\()" , .f. } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:execEvent( nEvent, p ) - LOCAL oEditor, a_ - - HB_SYMBOL_UNUSED( p ) - - IF ::lQuitting - RETURN Self - ENDIF - - SWITCH nEvent - CASE __listItems_currentRowChanged__ - ::nCurItem := p+1 - IF ::nCurItem == 13 - ::updateCurrentLineColor() - ELSEIF ::nCurItem == 16 - ::updateLineNumbersBkColor() - ELSE - ::setAttributes( p ) - ENDIF - EXIT - CASE __listThemes_currentRowChanged__ - ::nCurTheme := p+1 - ::setTheme( p ) - EXIT - CASE __applyMenu_triggered_applyToAllTabs__ - FOR EACH a_ IN ::aTabs - a_[ TAB_OEDITOR ]:applyTheme( ::aThemes[ ::nCurTheme, 1 ] ) - NEXT - EXIT - CASE __applyMenu_triggered_applyToCurrentTab__ - IF !empty( oEditor := ::oEM:getEditorCurrent() ) - oEditor:applyTheme( ::aThemes[ ::nCurTheme, 1 ] ) - ENDIF - EXIT - CASE __applyMenu_triggered_setAsDefault__ - ::setWrkTheme( ::aThemes[ ::nCurTheme, 1 ] ) - EXIT - ENDSWITCH - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:setWrkTheme( cTheme ) - - IF empty( cTheme ) - cTheme := ::selectTheme() - ENDIF - IF !empty( cTheme ) - ::oIde:cWrkTheme := cTheme - ::oDK:setStatusText( SB_PNL_THEME, ::cWrkTheme ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:contains( cTheme ) - - RETURN ascan( ::aThemes, {|a_| a_[ 1 ] == cTheme } ) > 0 - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:load( cFile ) - - IF HB_ISSTRING( cFile ) .AND. !empty( cFile ) .AND. hb_FileExists( cFile ) - ::aIni:= hbide_readSource( cFile ) - ::parseINI() - ::lDefault := .f. - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:save( lAsk ) - LOCAL cFile - - DEFAULT lAsk TO .f. - IF ::lDefault - lAsk := .t. - ENDIF - IF lAsk - cFile := hbide_saveAFile( ::oDlg, "Select a file to Save Theme ( .hbt )", ; - { { "Syntax Themes", "*.hbt" } }, ::oINI:getThemesFile(), "hbt" ) - ELSE - cFile := ::oINI:getThemesFile() - ENDIF - IF !empty( cFile ) - hb_memowrit( cFile, ::buildINI() ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:getThemeAttribute( cAttr, cTheme ) - LOCAL nTheme, aAttr := {} - - IF !empty( cAttr ) - IF !empty( cTheme ) .and. HB_ISSTRING( cTheme ) .and. ( nTheme := ascan( ::aThemes, {|e_| e_[ 1 ] == cTheme } ) ) > 0 - aAttr := GetKeyValue( ::aThemes[ nTheme, 2 ], cAttr ) - ENDIF - ENDIF - - RETURN aAttr - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:buildSyntaxFormat( aAttr ) - LOCAL qFormat - - qFormat := QTextCharFormat() - - qFormat:setFontItalic( aAttr[ THM_ATR_ITALIC ] ) - IF aAttr[ THM_ATR_BOLD ] - qFormat:setFontWeight( 1000 ) - ENDIF - qFormat:setFontUnderline( aAttr[ THM_ATR_ULINE ] ) - // - qFormat:setForeground( QBrush( QColor( aAttr[ THM_ATR_R ], aAttr[ THM_ATR_G ], aAttr[ THM_ATR_B ] ) ) ) - - RETURN qFormat - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:setForeBackGround( qEdit, cTheme ) - LOCAL aAttr, s - - IF !empty( aAttr := ::getThemeAttribute( "Background", cTheme ) ) - s := 'QPlainTextEdit { background-color: rgba( ' + Attr2StrRGB( aAttr ) +", 255 ); " - aAttr := ::getThemeAttribute( "UnrecognizedText", cTheme ) - s += ' color: rgba( ' + Attr2StrRGB( aAttr ) + ", 255 ); " - s += ' border: 0px; ' - s += ' padding: 0px; ' - s += ' margin: 0px; }' - qEdit:setStyleSheet( s ) - //qEdit:setFrameStyle( hb_bitOR( QFrame_NoFrame, QFrame_Plain ) ) - //qEdit:setFrameStyle( QFrame_Sunken ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:setQuotesRule( qHiliter, cTheme ) - LOCAL aAttr - - IF !empty( aAttr := ::getThemeAttribute( "TerminatedStrings", cTheme ) ) - qHiliter:hbSetFormat( "TerminatedStrings", ::buildSyntaxFormat( aAttr ) ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:setSingleLineCommentRule( qHiliter, cTheme ) - LOCAL aAttr - - IF !empty( aAttr := ::getThemeAttribute( "CommentsAndRemarks", cTheme ) ) - qHiliter:hbSetSingleLineCommentFormat( ::buildSyntaxFormat( aAttr ) ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:setMultiLineCommentRule( qHiliter, cTheme ) - LOCAL aAttr - - IF !empty( aAttr := ::getThemeAttribute( "CommentsAndRemarks", cTheme ) ) - qHiliter:hbSetMultiLineCommentFormat( ::buildSyntaxFormat( aAttr ) ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:setSyntaxRule( qHiliter, cName, cPattern, lCaseSensitive, aAttr ) - LOCAL qRegExp := QRegExp() - - qRegExp:setCaseSensitivity( iif( lCaseSensitive, Qt_CaseSensitive, Qt_CaseInsensitive ) ) - qRegExp:setPattern( cPattern ) - - qHiliter:hbSetRuleWithRegExp( cName, qRegExp, ::buildSyntaxFormat( aAttr ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:setSyntaxFormat( qHiliter, cName, aAttr ) - - qHiliter:hbSetFormat( cName, ::buildSyntaxFormat( aAttr ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ -/* setSyntaxHilighting */ -METHOD IdeThemes:setSyntaxHilighting( qEdit, cTheme, lNew, lSetEditor ) - LOCAL a_, aAttr, qHiliter - - IF empty( cTheme ) - cTheme := ::cWrkTheme - ENDIF - IF empty( cTheme ) - cTheme := "Bare Minimum" /* "Pritpal's Favourite" */ - ENDIF - DEFAULT lNew TO .f. /* Apply one which is already formed */ - DEFAULT lSetEditor TO .t. - - HB_SYMBOL_UNUSED( lNew ) - - ::setForeBackGround( qEdit, cTheme ) - - qHiliter := HBQSyntaxHighlighter( qEdit:document() ) - - FOR EACH a_ IN ::aPatterns - IF !empty( aAttr := ::getThemeAttribute( a_[ 1 ], cTheme ) ) - ::setSyntaxRule( qHiliter, a_[ 1 ], a_[ 2 ], a_[ 3 ], aAttr ) - ENDIF - NEXT - - ::mergeUserDictionaries( qHiliter, cTheme ) - - ::setMultiLineCommentRule( qHiliter, cTheme ) - ::setSingleLineCommentRule( qHiliter, cTheme ) - ::setQuotesRule( qHiliter, cTheme ) - - IF __ObjGetClsName( qEdit ) == "HBQPLAINTEXTEDIT" - aAttr := ::getThemeAttribute( "CurrentLineBackground", cTheme ) - qEdit:hbSetCurrentLineColor( QColor( aAttr[ THM_ATR_R ], aAttr[ THM_ATR_G ], aAttr[ THM_ATR_B ] ) ) - - aAttr := ::getThemeAttribute( "LineNumbersBkColor", cTheme ) - qEdit:hbSetLineAreaBkColor( QColor( aAttr[ THM_ATR_R ], aAttr[ THM_ATR_G ], aAttr[ THM_ATR_B ] ) ) - - aAttr := ::getThemeAttribute( "SelectionBackground", cTheme ) - qEdit:hbSetSelectionColor( QColor( aAttr[ THM_ATR_R ], aAttr[ THM_ATR_G ], aAttr[ THM_ATR_B ] ) ) - - qEdit:hbSetHighLighter( qHiliter ) - ENDIF - - IF lSetEditor - qHiliter:hbSetEditor( qEdit ) - ENDIF - - RETURN qHiliter - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:mergeUserDictionaries( qHiliter, cTheme ) - LOCAL oDict, s, aAttr, qFormat, qRegExp, cName, a_ - - FOR EACH oDict IN ::oIde:aUserDict - IF oDict:lActive .AND. ! empty( oDict:hItems ) - cName := "UserDictionary" + hb_ntos( oDict:__enumIndex() ) - - s := "" - FOR EACH a_ IN oDict:hItems - s += "\b" + a_[ 1 ] + "\b|" - NEXT - s := substr( s, 1, Len( s ) - 1 ) - - qRegExp := QRegExp() - qRegExp:setCaseSensitivity( iif( oDict:lCaseSens, Qt_CaseSensitive, Qt_CaseInsensitive ) ) - qRegExp:setPattern( s ) - - /* Must be blended WITH dictionary definition attributes */ - aAttr := ::getThemeAttribute( "UserDictionary", cTheme ) // cName after slots are implemented - - qFormat := QTextCharFormat() - qFormat:setFontItalic( oDict:lItalic ) - IF oDict:lBold - qFormat:setFontWeight( 1000 ) - ENDIF - qFormat:setFontUnderline( oDict:lULine ) - - IF ! empty( oDict:aTxtRGB ) - qFormat:setForeground( QBrush( QColor( oDict:aTxtRGB[ 1 ], oDict:aTxtRGB[ 2 ], oDict:aTxtRGB[ 3 ] ) ) ) - ELSE - qFormat:setForeground( QBrush( QColor( aAttr[ THM_ATR_R ], aAttr[ THM_ATR_G ], aAttr[ THM_ATR_B ] ) ) ) - ENDIF - IF ! empty( oDict:aBgRGB ) - qFormat:setBackground( QBrush( QColor( oDict:aBgRGB[ 1 ], oDict:aBgRGB[ 2 ], oDict:aBgRGB[ 3 ] ) ) ) - ENDIF - - qHiliter:hbSetRuleWithRegExp( cName, qRegExp, qFormat ) - ENDIF - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:show() - - IF empty( ::oUI ) - ::lCreating := .t. - - ::oUI := hbide_getUI( "themesex" ) - - ::oThemesDock:oWidget:setWidget( ::oUI:oWidget ) - - ::oUI:listThemes :connect( "currentRowChanged(int)" , {|i| ::execEvent( __listThemes_currentRowChanged__, i ) } ) - ::oUI:listItems :connect( "currentRowChanged(int)" , {|i| ::execEvent( __listItems_currentRowChanged__, i ) } ) - ::oUI:buttonColor :connect( "clicked()" , {| | ::updateColor() } ) - ::oUI:buttonSave :connect( "clicked()" , {| | ::save( .f. ) } ) - ::oUI:buttonSaveAs :connect( "clicked()" , {| | ::save( .t. ) } ) - ::oUI:buttonCopy :connect( "clicked()" , {| | ::copy( .t. ) } ) - ::oUI:buttonApply :connect( "clicked()" , {| | ::execEvent( __applyMenu_triggered_applyToCurrentTab__ ) } ) - ::oUI:buttonApplyAll:connect( "clicked()" , {| | ::execEvent( __applyMenu_triggered_applyToAllTabs__ ) } ) - ::oUI:buttonDefault :connect( "clicked()" , {| | ::execEvent( __applyMenu_triggered_setAsDefault__ ) } ) - ::oUI:checkItalic :connect( "stateChanged(int)" , {|i| ::updateAttribute( THM_ATR_ITALIC, i ) } ) - ::oUI:checkBold :connect( "stateChanged(int)" , {|i| ::updateAttribute( THM_ATR_BOLD , i ) } ) - ::oUI:checkUnderline:connect( "stateChanged(int)" , {|i| ::updateAttribute( THM_ATR_ULINE , i ) } ) - ::oUI:buttonClose :connect( "clicked()" , {| | ::oThemesDock:hide() } ) - - /* Fill Themes Dialog Values */ - ::oUI:setWindowTitle( GetKeyValue( ::aControls, "dialogTitle" ) ) - - ::oUI:checkItalic :setText( GetKeyValue( ::aControls, "checkItalic" , "Italic" ) ) - ::oUI:checkBold :setText( GetKeyValue( ::aControls, "checkBold" , "Bold" ) ) - ::oUI:checkUnderline :setText( GetKeyValue( ::aControls, "checkUnderline", "Underline" ) ) - // - ::oUI:buttonColor :setText( GetKeyValue( ::aControls, "buttonColor" , "Color" ) ) - ::oUI:buttonSave :setText( GetKeyValue( ::aControls, "buttonSave" , "Save" ) ) - ::oUI:buttonSaveAs :setText( GetKeyValue( ::aControls, "buttonSaveAs" , "SaveAs" ) ) - ::oUI:buttonClose :setText( GetKeyValue( ::aControls, "buttonClose" , "Close" ) ) - ::oUI:buttonCopy :setText( GetKeyValue( ::aControls, "buttonCopy" , "Copy" ) ) - - aeval( ::aThemes, {|e_| ::oUI:listThemes:addItem( e_[ 1 ] ) } ) - aeval( ::aItems , {|e_| ::oUI:listItems:addItem( e_[ 2 ] ) } ) - - ::oEdit := IdeEdit():new( ::oIde ) - ::qEdit := ::oUI:plainThemeText - ::oEdit:qEdit := ::qEdit - - ::qEdit:setPlainText( GetSource() ) - ::qEdit:setLineWrapMode( QTextEdit_NoWrap ) - ::qEdit:setFont( ::oIde:oFont:oWidget ) - ::qEdit:ensureCursorVisible() - ::qEdit:setFocusPolicy( Qt_NoFocus ) - //::qEdit:setFocusPolicy( Qt_ClickFocus ) - - ::lCreating := .f. - - ::oUI:listThemes:setCurrentRow( 0 ) - ::oUI:listItems:setCurrentRow( 0 ) - - ::setTheme() - ENDIF - ::qEdit:hbHighlightPage() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:setTheme() - - IF ! ::lCreating - ::qHiliter := ::setSyntaxHilighting( ::qEdit, ::aThemes[ ::nCurTheme, 1 ], .t., .t. ) - ::setAttributes() - ::qHiliter:hbSetInitialized( .t. ) - ::setAttributes() - ::qEdit:hbHighlightPage() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:setAttributes() - LOCAL aAttr - - IF ! ::lCreating - aAttr := ::aThemes[ ::nCurTheme, 2, ::nCurItem, 2 ] - // - ::oUI:checkItalic :setChecked( aAttr[ THM_ATR_ITALIC ] ) - ::oUI:checkBold :setChecked( aAttr[ THM_ATR_BOLD ] ) - ::oUI:checkUnderline :setChecked( aAttr[ THM_ATR_ULINE ] ) - ::oUI:buttonColor :setStyleSheet( "color: " + Attr2RGBfnRev( aAttr ) + ";" + ; - "background-color: " + Attr2RGBfn( aAttr ) + ";" ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:updateLineNumbersBkColor() - LOCAL aAttr - - aAttr := ::getThemeAttribute( "LineNumbersBkColor", ::aThemes[ ::nCurTheme, 1 ] ) - ::oEdit:setLineNumbersBkColor( aAttr[ THM_ATR_R ], aAttr[ THM_ATR_G ], aAttr[ THM_ATR_B ] ) - ::setAttributes() - ::oEdit:refresh() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:updateCurrentLineColor() - LOCAL aAttr - - aAttr := ::getThemeAttribute( "CurrentLineBackground", ::aThemes[ ::nCurTheme, 1 ] ) - ::oEdit:setCurrentLineColor( aAttr[ THM_ATR_R ], aAttr[ THM_ATR_G ], aAttr[ THM_ATR_B ] ) - ::setAttributes() - ::oEdit:refresh() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:updateColor() - LOCAL aAttr, oDlg, qColor, s, aF, aB - - aAttr := ::aThemes[ ::nCurTheme, 2, ::nCurItem ] - - qColor := QColor( aAttr[ 2, THM_ATR_R ], aAttr[ 2, THM_ATR_G ], aAttr[ 2, THM_ATR_B ] ) - - oDlg := QColorDialog( ::oUI:oWidget ) - oDlg:setWindowTitle( "Select a Color" ) - oDlg:setCurrentColor( qColor ) - oDlg:exec() - - qColor := oDlg:currentColor() - - ::aThemes[ ::nCurTheme, 2, ::nCurItem, 2, THM_ATR_R ] := qColor:red() - ::aThemes[ ::nCurTheme, 2, ::nCurItem, 2, THM_ATR_G ] := qColor:green() - ::aThemes[ ::nCurTheme, 2, ::nCurItem, 2, THM_ATR_B ] := qColor:blue() - - IF aAttr[ 1 ] $ "Background,UnrecognizedText" - aF := GetKeyValue( ::aThemes[ ::nCurTheme, 2 ], "UnrecognizedText" ) - aB := GetKeyValue( ::aThemes[ ::nCurTheme, 2 ], "Background" ) - // - s := "QPlainTextEdit { " - s += " color: rgba( " + Attr2StrRGB( aF ) + ", 255 ); " - s += "background-color: rgba( " + Attr2StrRGB( aB ) + ", 255 ); }" - // - ::qEdit:setStyleSheet( s ) - - ELSEIF aAttr[ 1 ] == "CommentsAndRemarks" - ::setMultiLineCommentRule( ::qHiliter, ::aThemes[ ::nCurTheme, 1 ] ) - ::setSyntaxFormat( ::qHiliter, aAttr[ 1 ], aAttr[ 2 ] ) - - ELSEIF aAttr[ 1 ] == "CurrentLineBackground" - ::updateCurrentLineColor() - RETURN Self - - ELSEIF aAttr[ 1 ] == "LineNumbersBkColor" - ::updateLineNumbersBkColor() - RETURN Self - - ELSE - ::setSyntaxFormat( ::qHiliter, aAttr[ 1 ], aAttr[ 2 ] ) - - ENDIF - - ::qHiliter:rehighlight() - ::setAttributes() - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:updateAttribute( nAttr, iState ) - LOCAL aAttr - - aAttr := ::aThemes[ ::nCurTheme, 2, ::nCurItem ] - - ::aThemes[ ::nCurTheme, 2, ::nCurItem, 2, nAttr ] := ( iState == 2 ) - - ::setSyntaxFormat( ::qHiliter, aAttr[ 1 ], aAttr[ 2 ] ) - ::qHiliter:rehighlight() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:selectTheme() - LOCAL oStrList, oStrModel, a_, nDone - - IF empty( ::oSL ) - ::oSL := hbide_getUI( "selectionlist", ::oIde:oDlg:oWidget ) - - ::oSL:setWindowTitle( "Available Themes" ) - - ::oSL:listOptions :connect( "doubleClicked(QModelIndex)", {|p| ::selectThemeProc( 1, p ) } ) - ::oSL:buttonOk :connect( "clicked()" , {|p| ::selectThemeProc( 2, p ) } ) - ::oSL:buttonCancel:connect( "clicked()" , {|p| ::selectThemeProc( 3, p ) } ) - ENDIF - - oStrList := QStringList() - FOR EACH a_ IN ::aThemes - oStrList:append( a_[ 1 ] ) - NEXT - - oStrModel := QStringListModel() - oStrModel:setStringList( oStrList ) - - ::oSL:listOptions:setModel( oStrModel ) - - nDone := ::oSL:exec() - - RETURN iif( nDone == 1, ::cSelTheme, "" ) - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:selectThemeProc( nMode, p ) - LOCAL qModalIndex - - DO CASE - CASE nMode == 1 - ::cSelTheme := ::aThemes[ p:row() + 1, 1 ] - ::oSL:done( 1 ) - - CASE nMode == 2 - qModalIndex := ::oSL:listOptions:currentIndex() - ::cSelTheme := ::aThemes[ qModalIndex:row() + 1, 1 ] - ::oSL:done( 1 ) - - CASE nMode == 3 - ::oSL:done( 0 ) - - ENDCASE - - RETURN Nil - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:copy() - LOCAL aItems, qGo, cTheme - - qGo := QInputDialog( ::oUI:oWidget ) - qGo:setTextValue( ::aThemes[ ::nCurTheme, 1 ] ) - qGo:setLabelText( "Name of new Theme?" ) - qGo:setWindowTitle( "Harbour-Qt [ Get a Value ]" ) - - qGo:exec() - - cTheme := qGo:textValue() - - IF !empty( cTheme ) .and. !( cTheme == ::aThemes[ ::nCurTheme, 1 ] ) - aItems := aclone( ::aThemes[ ::nCurTheme ] ) - aItems[ 1 ] := cTheme - aadd( ::aThemes, aItems ) - ::oUI:listThemes:addItem( cTheme ) - ::oUI:listThemes:setCurrentRow( Len( ::aThemes ) - 1 ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:buildINI() - LOCAL a_, b_ - LOCAL txt_ := {} - LOCAL cINI := "" - - aadd( txt_, "# " ) - aadd( txt_, "# Harbour IDE Editor Themes" ) - aadd( txt_, "# Version 0.7" ) - aadd( txt_, "# Generated on " + dtoc( date() ) + " " + time() ) - aadd( txt_, "# " ) - aadd( txt_, " " ) - aadd( txt_, "[ Controls ]" ) - aadd( txt_, " " ) - FOR EACH a_ IN ::aControls - aadd( txt_, pad( a_[ 1 ], 30 ) + " = " + a_[ 2 ] ) - NEXT - aadd( txt_, " " ) - aadd( txt_, " " ) - aadd( txt_, "[ Items ]" ) - aadd( txt_, " " ) - FOR EACH a_ IN ::aItems - aadd( txt_, pad( a_[ 1 ], 30 ) + " = " + a_[ 2 ] ) - NEXT - FOR EACH a_ IN ::aThemes - aadd( txt_, " " ) - aadd( txt_, " " ) - aadd( txt_, "[ Theme : " + a_[ 1 ] + " ]" ) - aadd( txt_, " " ) - FOR EACH b_ IN a_[ 2 ] - aadd( txt_, pad( b_[ 1 ], 30 ) + " = " + Attr2Str( b_[ 2 ] ) ) - NEXT - NEXT - aadd( txt_, " " ) - - aeval( txt_, {|e| cINI += e + hb_eol() } ) - - RETURN cINI - -/*----------------------------------------------------------------------*/ - -METHOD IdeThemes:parseINI( lAppend ) - LOCAL s, n, cKey, cVal, nPart, nTheme, aVal, aV - - IF empty( ::aIni ) - RETURN Self - ENDIF - - DEFAULT lAppend TO .t. - - IF !( lAppend ) - ::aControls := {} - ::aThemes := {} - ::aItems := {} - ENDIF - - FOR EACH s IN ::aIni - IF !empty( s := alltrim( s ) ) .and. !left( s, 1 ) == "#" /* Comment */ - DO case - CASE s == "[ Controls ]" - nPart := 1 - CASE s == "[ Items ]" - nPart := 2 - CASE left( s, 7 ) == "[ Theme" - IF ( n := at( ":", s ) ) > 0 - cKey := alltrim( strtran( substr( s, n + 1 ), "]", "" ) ) - ENDIF - IF !empty( cKey ) - nPart := 3 - IF ( nTheme := ascan( ::aThemes, {|e_| e_[ 1 ] == cKey } ) ) == 0 - aadd( ::aThemes, { cKey, {} } ) - nTheme := Len( ::aThemes ) - ENDIF - ELSE - nPart := 0 - ENDIF - OTHERWISE - DO CASE - CASE nPart == 1 /* Controls */ - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - IF ( n := ascan( ::aControls, {|e_| e_[ 1 ] == cKey } ) ) > 0 - ::aControls[ n, 2 ] := cVal - ELSE - aadd( ::aControls, { cKey, cVal } ) - ENDIF - ENDIF - CASE nPart == 2 /* Items */ - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - IF ( n := ascan( ::aItems, {|e_| e_[ 1 ] == cKey } ) ) > 0 - ::aItems[ n, 2 ] := cVal - ELSE - aadd( ::aItems, { cKey, cVal } ) - ENDIF - ENDIF - CASE nPart == 3 /* Theams */ - IF hbide_parseKeyValPair( s, @cKey, @cVal ) - - aV := FillAttrbs() - aVal := hb_aTokens( cVal, "," ) - FOR n := 1 TO THM_NUM_ATTRBS - s := alltrim( aVal[ n ] ) - IF n <= 3 - aV[ n ] := val( s ) - ELSE - aV[ n ] := lower( s ) == "yes" - ENDIF - NEXT - IF ( n := ascan( ::aThemes[ nTheme, 2 ], {|e_| e_[ 1 ] == cKey } ) ) > 0 - ::aThemes[ nTheme, 2, n, 2 ] := aV - - ELSE - aadd( ::aThemes[ nTheme, 2 ], { cKey, aV } ) - - ENDIF - ENDIF - ENDCASE - ENDCASE - ENDIF - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION FillAttrbs() - RETURN { 0, 0, 0, .f., .f., .f. } - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION Attr2RGBfn( a_ ) - RETURN "rgba( " + Attr2StrRGB( a_ ) + ", 255 )" - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION Attr2RGBfnRev( a_ ) - LOCAL b_:= { ( a_[ THM_ATR_R ] + 255 ) % 256, ( a_[ THM_ATR_G ] + 255 ) % 256, ( a_[ THM_ATR_B ] + 255 ) % 256 } - RETURN "rgba( " + Attr2StrRGB( b_ ) + ", 255 )" - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION Attr2StrRGB( a_ ) - RETURN hb_ntos( a_[ THM_ATR_R ] ) +","+ hb_ntos( a_[ THM_ATR_G ] ) +","+ hb_ntos( a_[ THM_ATR_B ] ) - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION Attr2Str( a_ ) - - RETURN padl( hb_ntos( a_[ 1 ] ), 4 ) + "," +; - padl( hb_ntos( a_[ 2 ] ), 4 ) + "," +; - padl( hb_ntos( a_[ 3 ] ), 4 ) + "," +; - iif( a_[ 4 ], " Yes", " No" ) + "," +; - iif( a_[ 5 ], " Yes", " No" ) + "," +; - iif( a_[ 6 ], " Yes", " No" ) + "," - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION GetKeyValue( aKeys, cKey, cDef ) - LOCAL xVal, n - - DEFAULT cDef TO "" - - IF ( n := ascan( aKeys, {|e_| e_[ 1 ] == cKey } ) ) > 0 - xVal := aKeys[ n, 2 ] - ELSE - xVal := cDef - ENDIF - - RETURN xVal - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION GetSource() - LOCAL s := "" - LOCAL txt_:= {} - - aadd( txt_, '/* Copyright 2009-2012 Pritpal Bedi ' ) - aadd( txt_, ' * ' ) - aadd( txt_, ' * This program is free software; you can redistribute it and/or modify ' ) - aadd( txt_, '*/ ' ) - aadd( txt_, '#include "hbide.ch" ' ) - aadd( txt_, ' ' ) - aadd( txt_, 'CLASS IdeThemes /* This Class Manages Syntax Higlighting */ ' ) - aadd( txt_, ' VAR oIde ' ) - aadd( txt_, ' METHOD new() ' ) - aadd( txt_, ' ENDCLASS ' ) - aadd( txt_, '/*----------------------------------------------------------------------*/ ' ) - aadd( txt_, 'METHOD IdeThemes:new( oIde, cThemesFile ) ' ) - aadd( txt_, ' ' ) - aadd( txt_, ' * Legacy comment syntax, advised not be used ' ) - aadd( txt_, ' ' ) - aadd( txt_, ' ::oIde := oIde ' ) - aadd( txt_, ' ::cThemesFile := cThemesFile ' ) - aadd( txt_, ' ' ) - aadd( txt_, ' RETURN Self ' ) - aadd( txt_, '/*----------------------------------------------------------------------*/ ' ) - aadd( txt_, '// This function is used to retrieve value given a key ... ' ) - aadd( txt_, 'STATIC FUNCTION GetKeyValue( aKeys, cKey, cDef ) ' ) - aadd( txt_, ' LOCAL xVal ' ) - aadd( txt_, ' ' ) - aadd( txt_, ' DEFAULT cDef TO "" ' ) - aadd( txt_, ' ' ) - aadd( txt_, ' IF ( n := ascan( aKeys, {|e_| e_[ 1 ] == cKey } ) ) > 0 ' ) - aadd( txt_, ' xVal := aKeys[ n, 2 ] ' ) - aadd( txt_, ' ELSE ' ) - aadd( txt_, ' xVal := cDef ' ) - aadd( txt_, ' ENDIF ' ) - aadd( txt_, ' RETURN xVal ' ) - aadd( txt_, '/*----------------------------------------------------------------------*/ ' ) - - aeval( txt_, {|e| s += trim( e ) + hb_eol() } ) - - RETURN s - -/*----------------------------------------------------------------------*/ - -/* -STATIC FUNCTION hbide_setSyntaxAttrbs( qHiliter, cPattern, cName, nR, nG, nB, lItalic, lBold, lUnderline ) - LOCAL qFormat - - qFormat := QTextCharFormat() - - IF HB_ISLOGICAL( lItalic ) - qFormat:setFontItalic( lItalic ) - ENDIF - IF HB_ISLOGICAL( lBold ) .and. lBold - qFormat:setFontWeight( 1000 ) - ENDIF - IF HB_ISLOGICAL( lUnderline ) - qFormat:setFontUnderline( lUnderline ) - ENDIF - qFormat:setForeGround( QBrush( QColor( nR, nG, nB ) ) ) - - qHiliter:hbSetRule( cName, cPattern, qFormat ) - - RETURN nil -*/ - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_loadDefaultThemes() - LOCAL aIni := {} - - IF .t. - aadd( aIni, "[ Controls ] " ) - aadd( aIni, " " ) - aadd( aIni, "dialogTitle = HbIDE - Source Syntax Highlighting " ) - aadd( aIni, "labelItem = Item " ) - aadd( aIni, "labelTheme = Theme " ) - aadd( aIni, "checkItalic = Italic " ) - aadd( aIni, "checkBold = Bold " ) - aadd( aIni, "checkUnderline = Underline " ) - aadd( aIni, "buttonColor = Color " ) - aadd( aIni, "buttonSave = Save " ) - aadd( aIni, "buttonSaveAs = Save As " ) - aadd( aIni, "buttonApply = Apply " ) - aadd( aIni, "buttonCancel = Cancel " ) - aadd( aIni, "buttonCopy = Copy " ) - aadd( aIni, " " ) - aadd( aIni, "[ Items ] " ) - aadd( aIni, " " ) - aadd( aIni, "Background = Background " ) - aadd( aIni, "PreprocessorDirectives = Preprocessor Directives " ) - aadd( aIni, "HarbourKeywords = Harbour Keywords " ) - aadd( aIni, "CLanguageKeywords = C-CPP Language Keywords " ) - aadd( aIni, "Operators = Operators " ) - aadd( aIni, "NumericalConstants = Numerical Constants " ) - aadd( aIni, "BracketsAndBraces = Brackets and Braces " ) - aadd( aIni, "FunctionsBody = Functions Body " ) - aadd( aIni, "TerminatedStrings = Terminated Strings " ) - aadd( aIni, "CommentsAndRemarks = Comments and Remarks " ) - aadd( aIni, "UnrecognizedText = Unrecognized Text " ) - aadd( aIni, "BookMarkLineBackground = BookMark Line Background " ) - aadd( aIni, "SelectionBackground = Selection Background " ) - aadd( aIni, "CurrentLineBackground = Current Line Background " ) - aadd( aIni, "UnterminatedStrings = Unterminated Strings " ) - aadd( aIni, "LineNumbersBkColor = Line Numbers Background " ) - aadd( aIni, "UserDictionary = UserDictionary " ) - aadd( aIni, " " ) - aadd( aIni, " " ) - aadd( aIni, "[ Theme : Pritpal's Favourite ] " ) - aadd( aIni, " " ) - aadd( aIni, "Background = 245, 255, 216, No, No, No, " ) - aadd( aIni, "PreprocessorDirectives = 69, 138, 0, No, Yes, No, " ) - aadd( aIni, "HarbourKeywords = 54, 0, 162, No, Yes, No, " ) - aadd( aIni, "CLanguageKeywords = 0, 0, 128, No, No, No, " ) - aadd( aIni, "Operators = 172, 39, 255, No, Yes, No, " ) - aadd( aIni, "NumericalConstants = 0, 128, 0, No, No, No, " ) - aadd( aIni, "BracketsAndBraces = 255, 85, 0, No, No, No, " ) - aadd( aIni, "FunctionsBody = 15, 122, 255, No, Yes, No, " ) - aadd( aIni, "TerminatedStrings = 255, 0, 0, No, No, No, " ) - aadd( aIni, "CommentsAndRemarks = 165, 165, 165, No, No, No, " ) - aadd( aIni, "UnrecognizedText = 0, 0, 0, No, No, No, " ) - aadd( aIni, "BookMarkLineBackground = 0, 255, 255, No, No, No, " ) - aadd( aIni, "SelectionBackground = 220, 200, 135, No, No, No, " ) - aadd( aIni, "CurrentLineBackground = 255, 215, 155, No, No, No, " ) - aadd( aIni, "UnterminatedStrings = 255, 128, 128, No, No, No, " ) - aadd( aIni, "LineNumbersBkColor = 255, 215, 155, No, No, No, " ) - aadd( aIni, "UserDictionary = 0, 0, 0, No, No, No, " ) - aadd( aIni, " " ) - aadd( aIni, " " ) - aadd( aIni, "[ Theme : Bare Minimum ] " ) - aadd( aIni, " " ) - aadd( aIni, "Background = 255, 255, 255, No, No, No, " ) - aadd( aIni, "PreprocessorDirectives = 127, 0, 127, No, No, No, " ) - aadd( aIni, "HarbourKeywords = 0, 127, 127, No, Yes, No, " ) - aadd( aIni, "CLanguageKeywords = 0, 0, 128, No, No, No, " ) - aadd( aIni, "Operators = 0, 0, 0, No, No, No, " ) - aadd( aIni, "NumericalConstants = 0, 0, 0, No, No, No, " ) - aadd( aIni, "BracketsAndBraces = 0, 0, 0, No, No, No, " ) - aadd( aIni, "FunctionsBody = 0, 0, 255, No, No, No, " ) - aadd( aIni, "TerminatedStrings = 255, 0, 0, No, No, No, " ) - aadd( aIni, "CommentsAndRemarks = 165, 165, 165, No, No, No, " ) - aadd( aIni, "UnrecognizedText = 0, 0, 0, No, No, No, " ) - aadd( aIni, "BookMarkLineBackground = 0, 255, 255, No, No, No, " ) - aadd( aIni, "SelectionBackground = 160, 200, 255, No, No, No, " ) - aadd( aIni, "CurrentLineBackground = 235, 235, 235, No, No, No, " ) - aadd( aIni, "UnterminatedStrings = 255, 128, 128, No, No, No, " ) - aadd( aIni, "LineNumbersBkColor = 235, 235, 235, No, No, No, " ) - aadd( aIni, "UserDictionary = 0, 0, 0, No, No, No, " ) - aadd( aIni, " " ) - aadd( aIni, " " ) - aadd( aIni, "[ Theme : Classic ] " ) - aadd( aIni, " " ) - aadd( aIni, "Background = 255,255,255 , No, No, No, " ) - aadd( aIni, "PreprocessorDirectives = 128,128,0 , No, No, No, " ) - aadd( aIni, "HarbourKeywords = 128,0,128 , No, No, No, " ) - aadd( aIni, "CLanguageKeywords = 0,0,128 , No, No, No, " ) - aadd( aIni, "Operators = 0,0,0 , No, No, No, " ) - aadd( aIni, "NumericalConstants = 0,128,0 , No, No, No, " ) - aadd( aIni, "BracketsAndBraces = 64,0,0 , No, No, No, " ) - aadd( aIni, "FunctionsBody = 0,0,192 , No, No, No, " ) - aadd( aIni, "TerminatedStrings = 255,0,0 , No, No, No, " ) - aadd( aIni, "CommentsAndRemarks = 0,128,255 , No, No, No, " ) - aadd( aIni, "UnrecognizedText = 0,0,0 , No, No, No, " ) - aadd( aIni, "BookMarkLineBackground = 0,255,255 , No, No, No, " ) - aadd( aIni, "SelectionBackground = 255,200,220 , No, No, No, " ) - aadd( aIni, "CurrentLineBackground = 220,220,220 , No, No, No, " ) - aadd( aIni, "UnterminatedStrings = 255,128,128 , No, No, No, " ) - aadd( aIni, "LineNumbersBkColor = 220,220,220 , No, No, No, " ) - aadd( aIni, "UserDictionary = 0,0,0 , No, No, No, " ) - aadd( aIni, " " ) - aadd( aIni, " " ) - aadd( aIni, "[ Theme : City Lights ] " ) - aadd( aIni, " " ) - aadd( aIni, "Background = 0,0,0 , No, No, No, " ) - aadd( aIni, "PreprocessorDirectives = 255,0,0 , No, No, No, " ) - aadd( aIni, "HarbourKeywords = 128,0,128 , No, No, No, " ) - aadd( aIni, "CLanguageKeywords = 0,0,128 , No, No, No, " ) - aadd( aIni, "Operators = 128,255,0 , No, No, No, " ) - aadd( aIni, "NumericalConstants = 0,255,255 , No, No, No, " ) - aadd( aIni, "BracketsAndBraces = 255,128,128 , No, No, No, " ) - aadd( aIni, "FunctionsBody = 128,128,255 , No, No, No, " ) - aadd( aIni, "TerminatedStrings = 0,255,0 , No, No, No, " ) - aadd( aIni, "CommentsAndRemarks = 255,255,0 , No, No, No, " ) - aadd( aIni, "UnrecognizedText = 255,255,255 , No, No, No, " ) - aadd( aIni, "BookMarkLineBackground = 128,128,128 , No, No, No, " ) - aadd( aIni, "SelectionBackground = 255,128,255 , No, No, No, " ) - aadd( aIni, "CurrentLineBackground = 0,0,255 , No, No, No, " ) - aadd( aIni, "UnterminatedStrings = 255,255,255 , No, No, No, " ) - aadd( aIni, "LineNumbersBkColor = 0,0,255 , No, No, No, " ) - aadd( aIni, "UserDictionary = 0,0,0 , No, No, No, " ) - aadd( aIni, " " ) - aadd( aIni, " " ) - aadd( aIni, "[ Theme : Evening Glamour ] " ) - aadd( aIni, " " ) - aadd( aIni, "Background = 0,64,128 , No, No, No, " ) - aadd( aIni, "PreprocessorDirectives = 255,128,192 , No, No, No, " ) - aadd( aIni, "HarbourKeywords = 255,128,192 , No, No, No, " ) - aadd( aIni, "CLanguageKeywords = 0,0,128 , No, No, No, " ) - aadd( aIni, "Operators = 255,255,255 , No, No, No, " ) - aadd( aIni, "NumericalConstants = 0,255,0 , No, No, No, " ) - aadd( aIni, "BracketsAndBraces = 128,255,255 , No, No, No, " ) - aadd( aIni, "FunctionsBody = 128,255,128 , No, No, No, " ) - aadd( aIni, "TerminatedStrings = 255,255,128 , No, No, No, " ) - aadd( aIni, "CommentsAndRemarks = 192,192,192 , No, No, No, " ) - aadd( aIni, "UnrecognizedText = 255,255,255 , No, No, No, " ) - aadd( aIni, "BookMarkLineBackground = 128,0,255 , No, No, No, " ) - aadd( aIni, "SelectionBackground = 0,128,255 , No, No, No, " ) - aadd( aIni, "CurrentLineBackground = 90,180,180 , No, No, No, " ) - aadd( aIni, "UnterminatedStrings = 255,128,64 , No, No, No, " ) - aadd( aIni, "LineNumbersBkColor = 90,180,180 , No, No, No, " ) - aadd( aIni, "UserDictionary = 0,0,0 , No, No, No, " ) - aadd( aIni, " " ) - aadd( aIni, " " ) - aadd( aIni, "[ Theme : Sand Storm ] " ) - aadd( aIni, " " ) - aadd( aIni, "Background = 255,255,192 , No, No, No, " ) - aadd( aIni, "PreprocessorDirectives = 255,0,0 , No, No, No, " ) - aadd( aIni, "HarbourKeywords = 128,0,128 , No, No, No, " ) - aadd( aIni, "CLanguageKeywords = 0,0,128 , No, No, No, " ) - aadd( aIni, "Operators = 0,0,0 , No, No, No, " ) - aadd( aIni, "NumericalConstants = 0,128,128 , No, No, No, " ) - aadd( aIni, "BracketsAndBraces = 0,0,0 , No, No, No, " ) - aadd( aIni, "FunctionsBody = 0,0,192 , No, No, No, " ) - aadd( aIni, "TerminatedStrings = 0,128,0 , No, No, No, " ) - aadd( aIni, "CommentsAndRemarks = 128,128,128 , No, No, No, " ) - aadd( aIni, "UnrecognizedText = 0,0,0 , No, No, No, " ) - aadd( aIni, "BookMarkLineBackground = 0,255,255 , No, No, No, " ) - aadd( aIni, "SelectionBackground = 125,170,150 , No, No, No, " ) - aadd( aIni, "CurrentLineBackground = 220,220,110 , No, No, No, " ) - aadd( aIni, "UnterminatedStrings = 128,128,0 , No, No, No, " ) - aadd( aIni, "LineNumbersBkColor = 220,220,110 , No, No, No, " ) - aadd( aIni, "UserDictionary = 0,0,0 , No, No, No, " ) - aadd( aIni, " " ) - ENDIF - - RETURN aIni - -/*----------------------------------------------------------------------*/ -#if 0 - [Classic] [CityLights] [Evening] [SandStorm] - -Background = Background 255,255,255 0,0,0 0,64,128 255,255,192 -PreprocessorDirectives = Preprocessor Directives 128,128,0 255,0,0 255,128,192 255,0,0 -HarbourKeywords = Harbour Keywords 128,0,128 128,0,128 255,128,192 128,0,128 -CLanguageKeywords = C-CPP Language Keywords 0,0,128 0,0,128 0,0,128 0,0,128 -Operators = Operators 0,0,0 128,255,0 255,255,255 0,0,0 -NumericalConstants = Numerical Constants 0,128,0 0,255,255 0,255,0 0,128,128 -BracketsAndBraces = Brackets and Braces 64,0,0 255,128,128 128,255,255 0,0,0 -FunctionsBody = Functions Body 0,0,192 128,128,255 128,255,128 0,0,192 -TerminatedStrings = Terminated Strings 255,0,0 0,255,0 255,255,128 0,128,0 -CommentsAndRemarks = Comments and Remarks 0,128,255 255,255,0 192,192,192 128,128,128 -BookMarkLineBackground = BookMark Line Background 0,255,255 128,128,128 128,0,255 0,255,255 -SelectionBackground = Selection Background 255,128,255 255,128,255 0,128,255 255,0,255 -CurrentLineBackground = Current Line Background 128,0,0 0,0,255 128,255,255 128,0,0 -UnrecognizedText = Unrecognized Text 0,0,0 255,255,255 255,255,255 0,0,0 -UnterminatedStrings = Unterminated Strings 255,128,128 255,255,255 255,128,64 128,128,0 -LineNumbersBkColor = WAPIDictionary 0,0,128 0,0,128 128,128,64 0,0,128 -UserDictionary = UserDictionary 0,0,0 0,0,0 0,0,0 0,0,0 - -#endif - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/themes.ui b/harbour/contrib/hbide/themes.ui deleted file mode 100644 index 575a3729d0..0000000000 --- a/harbour/contrib/hbide/themes.ui +++ /dev/null @@ -1,204 +0,0 @@ - - - dialogThemes - - - - 0 - 0 - 430 - 385 - - - - HBIDE - Source Syntax Highlighting - - - - - - QLayout::SetDefaultConstraint - - - - - 10 - - - - - - 40 - 16777215 - - - - Theme - - - - - - - - - - - - - - - - - - - 10 - - - - - - 40 - 16777215 - - - - Item - - - - - - - - - - - 120 - 16777215 - - - - Color - - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 50 - 20 - - - - - - - - Bold - - - - - - - Italic - - - - - - - Underline - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 120 - 20 - - - - - - - - - - - - Qt::Horizontal - - - - - - - - - 10 - - - - - Save - - - - - - - Save As - - - - - - - Copy - - - - - - - Apply - - - - - - - Close - - - - - - - - - - - - diff --git a/harbour/contrib/hbide/themesex.ui b/harbour/contrib/hbide/themesex.ui deleted file mode 100644 index ae72be12ea..0000000000 --- a/harbour/contrib/hbide/themesex.ui +++ /dev/null @@ -1,264 +0,0 @@ - - - formThemes - - - - 0 - 0 - 387 - 433 - - - - Editing Themes Manager - - - - 2 - - - 2 - - - - - - 0 - 0 - - - - - 16777215 - 150 - - - - - - - false - - - - 0 - - - - - Themes - - - - 0 - - - - - - - - - - - Items - - - - 0 - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - - - - - - - - Attributes - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Bold - - - - - - - Italic - - - - - - - Underline - - - - - - - - 120 - 16777215 - - - - Color - - - - - - - - - - - - - Preview - - - false - - - - 0 - - - - - - - - false - - - - 0 - - - - - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Save - - - - - - - Save As - - - - - - - Copy - - - - - - - SetAsDefault - - - - - - - ApplyCurrent - - - - - - - ApplyAll - - - - - - - Close - - - - - - - - - - - - - - HBQPlainTextEdit - QPlainTextEdit -

hbqt_hbqplaintextedit.h
- - - - - diff --git a/harbour/contrib/hbide/tools.prg b/harbour/contrib/hbide/tools.prg deleted file mode 100644 index a453a6276e..0000000000 --- a/harbour/contrib/hbide/tools.prg +++ /dev/null @@ -1,1057 +0,0 @@ - /* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 20Mar2010 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbide.ch" -#include "common.ch" -#include "hbclass.ch" -#include "hbqtgui.ch" - -/*----------------------------------------------------------------------*/ - -#define __buttonAdd_clicked__ 2000 -#define __buttonDelete_clicked__ 2001 -#define __buttonUp_clicked__ 2002 -#define __buttonDown_clicked__ 2003 -#define __buttonExec_clicked__ 2004 -#define __buttonBrowse_clicked__ 2005 -#define __buttonUpdate_clicked__ 2006 -#define __buttonClose_clicked__ 2007 -#define __listNames_itemSelectionChanged__ 2008 -#define __buttonSetImage_clicked__ 2019 -#define __buttonUserToolbarUpd_clicked__ 2010 -#define __comboToolbarAsgnd_currentIndexChanged__ 2011 -#define __listToolbars_itemSelectionChanged__ 2012 -#define __checkToolActive_stateChanged__ 2013 -#define __User_Toolbar_clicked__ 2014 - -/*----------------------------------------------------------------------*/ - -CLASS IdeToolsManager INHERIT IdeObject - - DATA aAct INIT {} - DATA aSetAct INIT {} - DATA qToolsMenu - DATA qToolsButton - DATA qViewsMenu - DATA qViewsButton - DATA aPanelsAct INIT {} - DATA qPanelsButton - DATA qPanelsMenu - DATA oProcess - DATA lExecuting INIT .f. - DATA aHdr INIT {} - DATA aBtns INIT {} - DATA aToolbars INIT { NIL,NIL,NIL,NIL,NIL } - DATA aPlugins INIT {} - DATA cSetsFolderLast - DATA oUIPnls - - ACCESS aTools INLINE ::oINI:aTools - ACCESS aUserToolBars INLINE ::oINI:aUserToolbars - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() - METHOD show() - METHOD execEvent( nEvent, p ) - METHOD clearList() - METHOD populateList( aList ) - METHOD execTool( ... ) - METHOD execToolByParams( cCmd, cParams, cStartIn, lCapture, lOpen ) - METHOD ini2controls( nIndex ) - METHOD controls2ini( nIndex ) - METHOD buildToolsButton() - METHOD buildPanelsButton() - METHOD addPanelsMenu( cPrompt ) - METHOD showOutput( cOut, mp2, oHbp ) - METHOD finished( nEC, nES, oHbp ) - METHOD ini2toolbarControls( nIndex, nMode ) - METHOD populateButtonsTable( nIndex ) - METHOD buildUserToolbars() - METHOD populatePlugins( lClear ) - METHOD setStyleSheet( cCSS ) - METHOD buildViewsButton() - METHOD saveView() - METHOD execView( cView ) - METHOD managePanels() - METHOD arrangePanels() - METHOD deletePanel( cView ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:new( oIde ) - - ::oIde := oIde - - ::cSetsFolderLast := oIde:oINI:getINIPath() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:setStyleSheet( cCSS ) - LOCAL oToolbar - - FOR EACH oToolbar IN ::aToolbars - IF !empty( oToolbar ) - oToolbar:setStyleSheet( cCSS ) - ENDIF - NEXT - ::qToolsMenu:setStyleSheet( GetStyleSheet( "QMenuPop", ::nAnimantionMode ) ) - ::qPanelsMenu:setStyleSheet( GetStyleSheet( "QMenuPop", ::nAnimantionMode ) ) - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD IdeToolsManager:create( oIde ) - - DEFAULT oIde TO ::oIde - ::oIde := oIde - - IF empty( ::oINI:aUserToolbars ) - asize( ::oINI:aUserToolbars, 5 ) - DEFAULT ::oINI:aUserToolbars[ 1 ] TO { "","YES","","","YES","YES","YES" } - DEFAULT ::oINI:aUserToolbars[ 2 ] TO { "","YES","","","YES","YES","YES" } - DEFAULT ::oINI:aUserToolbars[ 3 ] TO { "","YES","","","YES","YES","YES" } - DEFAULT ::oINI:aUserToolbars[ 4 ] TO { "","YES","","","YES","YES","YES" } - DEFAULT ::oINI:aUserToolbars[ 5 ] TO { "","YES","","","YES","YES","YES" } - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:destroy() - LOCAL qAct, xTmp - - IF !empty( ::oUI ) - FOR EACH qAct IN ::aAct - qAct:disconnect( "triggered(bool)" ) - qAct := NIL - NEXT - FOR EACH qAct IN ::aPanelsAct - qAct:disconnect( "triggered(bool)" ) - qAct := NIL - NEXT - ::qToolsButton:disconnect( "clicked()" ) - ::qToolsButton := NIL - ::clearList() - - ::qPanelsButton :disconnect( "clicked()" ) - ::oUI:buttonAdd :disconnect( "clicked()" ) - ::oUI:buttonDelete :disconnect( "clicked()" ) - ::oUI:buttonUp :disconnect( "clicked()" ) - ::oUI:buttonDown :disconnect( "clicked()" ) - ::oUI:buttonExec :disconnect( "clicked()" ) - ::oUI:buttonBrowse :disconnect( "clicked()" ) - ::oUI:buttonUpdate :disconnect( "clicked()" ) - ::oUI:buttonClose :disconnect( "clicked()" ) - ::oUI:buttonSetImage :disconnect( "clicked()" ) - ::oUI:buttonUserToolbarUpd:disconnect( "clicked()" ) - ::oUI:comboToolbarAsgnd :disconnect( "currentIndexChanged(int)" ) - ::oUI:listToolbars :disconnect( "itemSelectionChanged()" ) - ::oUI:listNames :disconnect( "itemSelectionChanged()" ) - - ::oUI:destroy() - ENDIF - - FOR EACH xTmp IN ::aBtns - xTmp:disconnect( "clicked()" ) - xTmp := NIL - NEXT - FOR EACH xTmp IN ::aToolbars - xTmp := NIL - NEXT - - ::aAct := NIL - ::qToolsMenu := NIL - ::qToolsButton := NIL - ::aPanelsAct := NIL - ::qPanelsButton := NIL - ::qPanelsMenu := NIL - ::oProcess := NIL - ::lExecuting := NIL - ::aHdr := NIL - ::aBtns := NIL - ::aToolbars := NIL - ::aPlugins := NIL - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:show() - LOCAL oTbl, hdr_, n, qItm - - IF empty( ::oUI ) - ::oUI := hbide_getUI( "toolsutilities", ::oDlg:oWidget ) - - ::oUI:setWindowFlags( Qt_Sheet ) - - ::oUI:setWindowIcon( QIcon( hbide_image( "hbide" ) ) ) - ::oUI:setMaximumWidth( ::oUI:width() ) - ::oUI:setMinimumWidth( ::oUI:width() ) - ::oUI:setMaximumHeight( ::oUI:height() ) - ::oUI:setMinimumHeight( ::oUI:height() ) - - ::oUI:buttonAdd :connect( "clicked()", {|| ::execEvent( __buttonAdd_clicked__ ) } ) - ::oUI:buttonDelete:connect( "clicked()", {|| ::execEvent( __buttonDelete_clicked__ ) } ) - ::oUI:buttonUp :connect( "clicked()", {|| ::execEvent( __buttonUp_clicked__ ) } ) - ::oUI:buttonDown :connect( "clicked()", {|| ::execEvent( __buttonDown_clicked__ ) } ) - ::oUI:buttonExec :connect( "clicked()", {|| ::execEvent( __buttonExec_clicked__ ) } ) - ::oUI:buttonBrowse:connect( "clicked()", {|| ::execEvent( __buttonBrowse_clicked__ ) } ) - ::oUI:buttonUpdate:connect( "clicked()", {|| ::execEvent( __buttonUpdate_clicked__ ) } ) - ::oUI:buttonClose :connect( "clicked()", {|| ::execEvent( __buttonClose_clicked__ ) } ) - - ::oUI:listNames :connect( "itemSelectionChanged()", {|| ::execEvent( __listNames_itemSelectionChanged__ ) } ) - - ::oUI:buttonBtnDown :setIcon( QIcon( hbide_image( "dc_down" ) ) ) - ::oUI:buttonBtnUp :setIcon( QIcon( hbide_image( "dc_up" ) ) ) - - ::oUI:buttonSetImage:setIcon( QIcon( hbide_image( "open" ) ) ) - ::oUI:buttonSetImage:connect( "clicked()", {|| ::execEvent( __buttonSetImage_clicked__ ) } ) - - ::oUI:buttonUserToolbarUpd:connect( "clicked()", {|| ::execEvent( __buttonUserToolbarUpd_clicked__ ) } ) - - ::oUI:comboToolbarAsgnd:addItem( "User_Toolbar_1" ) - ::oUI:comboToolbarAsgnd:addItem( "User_Toolbar_2" ) - ::oUI:comboToolbarAsgnd:addItem( "User_Toolbar_3" ) - ::oUI:comboToolbarAsgnd:addItem( "User_Toolbar_4" ) - ::oUI:comboToolbarAsgnd:addItem( "User_Toolbar_5" ) - ::oUI:comboToolbarAsgnd:setCurrentIndex( -1 ) - ::oUI:comboToolbarAsgnd:connect( "currentIndexChanged(int)", {|p| ::execEvent( __comboToolbarAsgnd_currentIndexChanged__, p ) } ) - - ::oUI:listToolbars:addItem( "User_Toolbar_1" ) - ::oUI:listToolbars:addItem( "User_Toolbar_2" ) - ::oUI:listToolbars:addItem( "User_Toolbar_3" ) - ::oUI:listToolbars:addItem( "User_Toolbar_4" ) - ::oUI:listToolbars:addItem( "User_Toolbar_5" ) - ::oUI:listToolbars:connect( "itemSelectionChanged()", {|| ::execEvent( __listToolbars_itemSelectionChanged__ ) } ) - - ::oUI:comboInitPos:addItem( "Left" ) - ::oUI:comboInitPos:addItem( "Top" ) - ::oUI:comboInitPos:addItem( "Right" ) - ::oUI:comboInitPos:addItem( "Bottom" ) - ::oUI:comboToolbarAsgnd:setCurrentIndex( -1 ) - - ::oUI:checkDockTop :setChecked( .f. ) - ::oUI:checkDockLeft :setChecked( .t. ) - ::oUI:checkDockBottom:setChecked( .t. ) - ::oUI:checkDockRight :setChecked( .t. ) - ::oUI:checkFloatable :setChecked( .t. ) - - ::oUI:checkToolActive:setChecked( .t. ) - ::oUI:checkInactive:connect( "stateChanged(int)", {|p| ::execEvent( __checkToolActive_stateChanged__, p ) } ) - - hdr_:= { { "Img", 30 }, { "Tool", 218 } } - oTbl := ::oUI:tableButtons - // - oTbl:verticalHeader():hide() - oTbl:horizontalHeader():setStretchLastSection( .t. ) - oTbl:setAlternatingRowColors( .t. ) - oTbl:setColumnCount( Len( hdr_ ) ) - oTbl:setShowGrid( .t. ) - oTbl:setSelectionMode( QAbstractItemView_SingleSelection ) - oTbl:setSelectionBehavior( QAbstractItemView_SelectRows ) - FOR n := 1 TO Len( hdr_ ) - qItm := QTableWidgetItem() - qItm:setText( hdr_[ n,1 ] ) - oTbl:setHorizontalHeaderItem( n-1, qItm ) - oTbl:setColumnWidth( n-1, hdr_[ n,2 ] ) - aadd( ::aHdr, qItm ) - NEXT - - ::oUI:listToolbars:setCurrentRow( 0 ) - ENDIF - - ::populatePlugins( .t. ) - ::clearList() - ::populateList( ::oINI:aTools ) - ::oUI:listNames:setCurrentRow( 0 ) - ::oIde:setPosByIniEx( ::oUI:oWidget, ::oINI:cToolsDialogGeometry ) - ::oUI:show() - - RETURN Nil - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:execEvent( nEvent, p ) - LOCAL cFile, cFileName, nIndex, qItem, cName, nRow - LOCAL aTools := ::oINI:aTools - - HB_SYMBOL_UNUSED( p ) - - IF ::lQuitting - RETURN Self - ENDIF - - SWITCH nEvent - CASE __checkToolActive_stateChanged__ - nRow := ::oUI:listToolbars:currentRow() - ::aUserToolbars[ nRow + 1, 3 ] := "YES" - IF !empty( ::aToolbars[ nRow + 1 ] ) - IF p > 0 - ::aToolbars[ nRow + 1 ]:hide() - ELSE - ::aToolbars[ nRow + 1 ]:show() - ENDIF - ENDIF - EXIT - CASE __buttonSetImage_clicked__ - cFileName := hbide_fetchAFile( ::oDlg, "Select an PNG image", { { "Image Files", "*.png" } },/* cFolder */ , /*cDftSuffix*/ ) - IF !empty( cFileName ) - ::oUI:editImage:setText( hbide_pathNormalized( cFileName, .f. ) ) - ::oUI:buttonSetImage:setIcon( QIcon( hbide_pathToOsPath( cFileName ) ) ) - ENDIF - EXIT - CASE __buttonUserToolbarUpd_clicked__ - ::ini2toolbarControls( ::oUI:listToolbars:currentRow(), 2 ) - EXIT - CASE __listToolbars_itemSelectionChanged__ - // Clear tableButtons and populate with new values - ::ini2toolbarControls( ::oUI:listToolbars:currentRow(), 1 ) - ::populateButtonsTable( ::oUI:listToolbars:currentRow() ) - EXIT - CASE __comboToolbarAsgnd_currentIndexChanged__ - ::oUI:listToolbars:setCurrentRow( p ) - EXIT - CASE __listNames_itemSelectionChanged__ - qItem := ::oUI:listNames:currentItem() - cName := qItem:text() - IF ( nIndex := ascan( aTools, {|e_| e_[ 1 ] == cName } ) ) > 0 - ::ini2Controls( nIndex ) - ENDIF - EXIT - CASE __buttonAdd_clicked__ - IF !empty( ::oUI:editName:text() ) - ::controls2ini() - ::oUI:listNames:addItem( ::oUI:editName:text() ) - ENDIF - EXIT - CASE __buttonDelete_clicked__ - IF ::oUI:listNames:currentRow() >= 0 - qItem := ::oUI:listNames:currentItem() - cName := qItem:text() - IF ( nIndex := ascan( aTools, {|e_| e_[ 1 ] == cName } ) ) > 0 - hb_adel( ::oINI:aTools, nIndex, .t. ) - ::clearList() - ::populateList() - ENDIF - ENDIF - EXIT - CASE __buttonUp_clicked__ - EXIT - CASE __buttonDown_clicked__ - EXIT - CASE __buttonExec_clicked__ - IF ! ::lExecuting - ::lExecuting := .t. - IF ::oUI:listNames:currentRow() >= 0 - qItem := ::oUI:listNames:currentItem() - ::execTool( qItem:text() ) - ENDIF - ::lExecuting := .f. - ENDIF - EXIT - CASE __buttonBrowse_clicked__ - IF !empty( cFile := hbide_fetchAFile( ::oDlg, "Select a Tool" ) ) - hb_fNameSplit( cFile, , @cFileName ) - //::ini2controls() - ::oUI:editName : setText( cFileName ) - ::oUI:editCmdLine : setText( cFile ) - ENDIF - EXIT - CASE __buttonUpdate_clicked__ - IF ( nRow := ::oUI:listNames:currentRow() ) >= 0 - qItem := ::oUI:listNames:currentItem() - cName := qItem:text() - - IF ( nIndex := ascan( aTools, {|e_| e_[ 1 ] == cName } ) ) > 0 - ::controls2ini( nIndex ) - ::clearList() - ::populateList() - ::oUI:listNames:setCurrentRow( nRow ) - ENDIF - ENDIF - EXIT - CASE __buttonClose_clicked__ - ::oIde:oINI:cToolsDialogGeometry := hbide_posAndSize( ::oUI:oWidget ) - ::oUI:done( 1 ) - EXIT - CASE __User_Toolbar_clicked__ - ::execTool( p ) - EXIT - ENDSWITCH - - RETURN Self - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_toolBlock( o, a_ ) - LOCAL cTool := a_[ 1 ] - RETURN {|| o:execEvent( __User_Toolbar_clicked__, cTool ) } - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:buildUserToolbars() - LOCAL a_:={}, b_, qTbar, qTBtn, nn, nIndex - LOCAL area_:= { Qt_LeftToolBarArea, Qt_TopToolBarArea, Qt_RightToolBarArea, Qt_BottomToolBarArea } - LOCAL aIndex := {} - - FOR nIndex := 0 TO 4 - nn := nIndex + 1 - - FOR EACH b_ IN ::aTools - IF !empty( b_[ 7 ] ) .AND. val( b_[ 7 ] ) == nIndex - aadd( a_, b_ ) - aadd( aIndex, b_:__enumIndex() ) - ENDIF - NEXT - IF !empty( a_ ) - qTBar := QToolBar() - qTBar:setStyleSheet( GetStyleSheet( "QToolBarLR5", ::nAnimantionMode ) ) - qTBar:setObjectName( "User_Toolbar_" + hb_ntos( nIndex ) ) - qTBar:setWindowTitle( "User Toolbar : " + hb_ntos( nIndex ) ) - qTBar:setIconSize( QSize( 16,16 ) ) - qTBar:setToolButtonStyle( Qt_ToolButtonIconOnly ) - qTBar:setAllowedAreas( iif( ::aUserToolbars[ nn,4 ] == "YES", Qt_TopToolBarArea , 0 ) + ; - iif( ::aUserToolbars[ nn,5 ] == "YES", Qt_LeftToolBarArea , 0 ) + ; - iif( ::aUserToolbars[ nn,6 ] == "YES", Qt_BottomToolBarArea, 0 ) + ; - iif( ::aUserToolbars[ nn,7 ] == "YES", Qt_RightToolBarArea , 0 ) ) - - FOR EACH b_ IN a_ - qTBtn := QToolButton() - qTBtn:setText( b_[ 1 ] ) - qTBtn:setTooltip( b_[ 10 ] ) - qTBtn:setIcon( QIcon( hbide_pathToOSPath( b_[ 9 ] ) ) ) - qTBtn:setMaximumWidth( 20 ) - qTBtn:setMaximumHeight( 20 ) - qTBtn:connect( "clicked()", hbide_toolBlock( Self, b_ ) ) - qTBar:addWidget( qTBtn ) - IF !( b_[ 8 ] == "YES" ) - qTBtn:setEnabled( .f. ) - ENDIF - aadd( ::aBtns, qTBtn ) - NEXT - - ::oDlg:oWidget:addToolBar( area_[ val( ::aUserToolbars[ nn,4 ] ) + 1 ], qTBar ) - IF ::aUserToolbars[ nn, 3 ] == "YES" - qTBar:hide() - ENDIF - ::aToolbars[ nn ] := qTBar - a_:= {} - ENDIF - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:populateButtonsTable( nIndex ) - LOCAL a_:={}, b_, q0, q1, oTbl, nRow - - oTbl := ::oUI:tableButtons - oTbl:clearContents() - - IF nIndex > -1 - FOR EACH b_ IN ::aTools - IF !empty( b_[ 7 ] ) .AND. val( b_[ 7 ] ) == nIndex - aadd( a_, b_ ) - ENDIF - NEXT - - oTbl:setRowCount( Len( a_ ) ) - - IF !empty( a_ ) - FOR EACH b_ IN a_ - nRow := b_:__enumIndex()-1 - - q0 := QTableWidgetItem() - q0:setIcon( QIcon( hbide_pathToOSPath( b_[ 9 ] ) ) ) - q0:setTooltip( b_[ 10 ] ) - oTbl:setItem( nRow, 0, q0 ) - - q1 := QTableWidgetItem() - q1:setText( b_[ 1 ] ) - oTbl:setItem( nRow, 1, q1 ) - - oTbl:setRowHeight( nRow, 16 ) - NEXT - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:ini2toolbarControls( nIndex, nMode ) - - IF nIndex > -1 - nIndex++ - IF nMode == 1 - ::oUI:comboInitPos :setCurrentIndex( val( ::aUserToolBars[ nIndex, 1 ] ) ) - ::oUI:checkFloatable :setChecked( ::aUserToolBars[ nIndex, 2 ] == "YES" ) - ::oUI:checkInactive :setChecked( ::aUserToolBars[ nIndex, 3 ] == "YES" ) - ::oUI:checkDockTop :setChecked( ::aUserToolBars[ nIndex, 4 ] == "YES" ) - ::oUI:checkDockLeft :setChecked( ::aUserToolBars[ nIndex, 5 ] == "YES" ) - ::oUI:checkDockBottom:setChecked( ::aUserToolBars[ nIndex, 6 ] == "YES" ) - ::oUI:checkDockRight :setChecked( ::aUserToolBars[ nIndex, 7 ] == "YES" ) - - ELSE - ::aUserToolBars[ nIndex, 1 ] := hb_ntos( ::oUI:comboInitPos:currentIndex() ) - ::aUserToolBars[ nIndex, 2 ] := iif( ::oUI:checkFloatable :isChecked(), "YES", "NO" ) - ::aUserToolBars[ nIndex, 3 ] := iif( ::oUI:checkInactive :isChecked(), "YES", "NO" ) - ::aUserToolBars[ nIndex, 4 ] := iif( ::oUI:checkDockTop :isChecked(), "YES", "NO" ) - ::aUserToolBars[ nIndex, 5 ] := iif( ::oUI:checkDockLeft :isChecked(), "YES", "NO" ) - ::aUserToolBars[ nIndex, 6 ] := iif( ::oUI:checkDockBottom:isChecked(), "YES", "NO" ) - ::aUserToolBars[ nIndex, 7 ] := iif( ::oUI:checkDockRight :isChecked(), "YES", "NO" ) - - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:ini2controls( nIndex ) - - IF nIndex > 0 - ::oUI:editName :setText( ::aTools[ nIndex, 1 ] ) - ::oUI:editCmdLine :setText( ::aTools[ nIndex, 2 ] ) - ::oUI:editParams :setText( ::aTools[ nIndex, 3 ] ) - ::oUI:editStayIn :setText( ::aTools[ nIndex, 4 ] ) - ::oUI:checkCapture :setChecked( !empty( ::aTools[ nIndex, 5 ] ) ) - ::oUI:checkOpenCons :setChecked( !empty( ::aTools[ nIndex, 6 ] ) ) - - ::oUI:comboToolbarAsgnd:setCurrentIndex( iif( empty( ::aTools[ nIndex, 7 ] ), -1, val( ::aTools[ nIndex, 7 ] ) ) ) - ::oUI:checkToolActive :setChecked( ::aTools[ nIndex, 8 ] == "YES" ) - ::oUI:editImage :setText( hbide_pathNormalized( ::aTools[ nIndex, 9 ], .f. ) ) - ::oUI:buttonSetImage :setIcon( QIcon( iif( empty( ::aTools[ nIndex, 9 ] ), hbide_image( "open" ), ; - hbide_pathToOsPath( ::aTools[ nIndex, 9 ] ) ) ) ) - ::oUI:editTooltip :setText( ::aTools[ nIndex, 10 ] ) - ::oUI:comboPlugin :setCurrentIndex( ascan( ::aPlugins, {|e| ::aTools[ nIndex, 11 ] == e } ) - 1 ) - ::oUI:checkPlugInit :setChecked( ::aTools[ nIndex, 12 ] == "YES" ) - - ELSE - ::oUI:editName :setText( "" ) - ::oUI:editCmdLine :setText( "" ) - ::oUI:editParams :setText( "" ) - ::oUI:editStayIn :setText( "" ) - ::oUI:checkCapture :setChecked( .f. ) - ::oUI:checkOpenCons :setChecked( .f. ) - - ::oUI:comboToolbarAsgnd:setCurrentIndex( -1 ) - ::oUI:checkToolActive :setChecked( .t. ) - ::oUI:editImage :setText( "" ) - ::oUI:buttonSetImage :setIcon( QIcon( hbide_image( "open" ) ) ) - ::oUI:editTooltip :setText( "" ) - ::oUI:comboPlugin :setCurrentIndex( -1 ) - ::oUI:checkPlugInit :setChecked( .f. ) - - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:controls2ini( nIndex ) - - IF empty( nIndex ) - aadd( ::oINI:aTools, {} ) - nIndex := Len( ::oINI:aTools ) - ENDIF - - ::oINI:aTools[ nIndex ] := { ::oUI:editName:text() , ; - hbide_pathNormalized( ::oUI:editCmdLine:text() ), ; - hbide_pathNormalized( ::oUI:editParams:text() ), ; - hbide_pathNormalized( ::oUI:editStayIn:text() ), ; - iif( ::oUI:checkCapture :isChecked(), "YES", "" ), ; - iif( ::oUI:checkOpenCons:isChecked(), "YES", "" ), ; - ; - hb_ntos( ::oUI:comboToolbarAsgnd:currentIndex() ), ; - iif( ::oUI:checkToolActive:isChecked(), "YES", "NO" ), ; - ::oUI:editImage:text(), ; - ::oUI:editTooltip:text(), ; - ::oUI:comboPlugin:currentText(), ; - iif( ::oUI:checkPlugInit:isChecked(), "YES", "NO" ) ; - } - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:clearList() - - ::oUI:listNames:clear() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:populateList( aList ) - LOCAL a_ - - DEFAULT aList TO ::oINI:aTools - - FOR EACH a_ IN aList - ::oUI:listNames:addItem( a_[ 1 ] ) - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:populatePlugins( lClear ) - LOCAL cDir, aDir, aFile - - IF lClear - ::oUI:comboPlugin:clear() - ENDIF - ::aPlugins := {} - - cDir := hb_dirBase() + "plugins" + hb_ps() - aDir := directory( cDir + "*" ) - IF !empty( aDir ) - FOR EACH aFile IN aDir - ::oUI:comboPlugin:addItem( aFile[ 1 ] ) - aadd( ::aPlugins, aFile[ 1 ] ) - NEXT - ::oUI:comboPlugin:setCurrentIndex( -1 ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:buildToolsButton() - LOCAL a_, qAct - - ::qToolsMenu := QMenu() - ::qToolsMenu:setStyleSheet( GetStyleSheet( "QMenuPop", ::nAnimantionMode ) ) - FOR EACH a_ IN ::aTools - qAct := ::qToolsMenu:addAction( a_[ 1 ] ) - qAct:connect( "triggered(bool)", {|| ::execTool( a_[ 1 ] ) } ) - aadd( ::aAct, qAct ) - NEXT - ::qToolsButton := QToolButton() - ::qToolsButton:setTooltip( "Tools & Utilities" ) - ::qToolsButton:setIcon( QIcon( hbide_image( "tools" ) ) ) - ::qToolsButton:setPopupMode( QToolButton_MenuButtonPopup ) - ::qToolsButton:setMenu( ::qToolsMenu ) - - ::qToolsButton:connect( "clicked()", {|| ::show() } ) - - RETURN ::qToolsButton - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:execToolByParams( cCmd, cParams, cStartIn, lCapture, lOpen ) - LOCAL cArg, lTokened - - ::oProcess := HbpProcess():new() - - ::oProcess:output := {|cOut, mp2, oHbp| ::showOutput( cOut, mp2, oHbp ) } - ::oProcess:finished := {|nEC , nES, oHbp| ::finished( nEC, nES, oHbp ) } - ::oProcess:workingPath := cStartIn - ::oProcess:lDetached := !( lCapture ) - - IF empty( cCmd ) - lTokened := .f. - cCmd := hbide_getShellCommand() - cArg := iif( hbide_getOS() == "nix", "", "/C " ) - ELSE - lTokened := .t. - cArg := "" - ENDIF - - cArg += hbide_parseMacros( cParams ) - - IF lCapture - IF lOpen - ::oDockB2:show() - ENDIF - ::oOutputResult:oWidget:clear() - ::oOutputResult:oWidget:append( cCmd ) - ::oOutputResult:oWidget:append( cArg ) - ::oOutputResult:oWidget:append( hbide_outputLine() ) - ENDIF - ::oProcess:addArg( cArg, lTokened ) - ::oProcess:start( cCmd ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:execTool( ... ) - LOCAL nIndex, cCmd, cParams, cStayIn, lCapture, lOpen, aParam, cPlugin, a_ - - aParam := hb_aParams() - IF Len( aParam ) == 1 - IF ( nIndex := ascan( ::aTools, {|e_| e_[ 1 ] == aParam[ 1 ] } ) ) > 0 - hb_fNameSplit( ::aTools[ nIndex, 11 ], , @cPlugin ) - - cCmd := hbide_pathToOSPath( ::aTools[ nIndex, 2 ] ) - cParams := ::aTools[ nIndex, 3 ] - cParams := iif( "http://" $ lower( cParams ) .OR. !empty( cPlugin ), cParams, hbide_pathToOSPath( cParams ) ) - cParams := hbide_parseMacros( cParams ) - cStayIn := hbide_pathToOSPath( ::aTools[ nIndex, 4 ] ) - lCapture := ::aTools[ nIndex, 5 ] == "YES" - lOpen := ::aTools[ nIndex, 6 ] == "YES" - - ENDIF - - ELSEIF Len( aParam ) > 1 - asize( aParam, 5 ) - - DEFAULT aParam[ 1 ] TO "" - DEFAULT aParam[ 2 ] TO "" - DEFAULT aParam[ 3 ] TO "" - DEFAULT aParam[ 4 ] TO "" - DEFAULT aParam[ 5 ] TO "" - - cCmd := hbide_pathToOSPath( aParam[ 1 ] ) - cParams := aParam[ 2 ] - cParams := iif( "http://" $ lower( cParams ), cParams, hbide_pathToOSPath( cParams ) ) - cParams := hbide_parseMacros( cParams ) - cStayIn := hbide_pathToOSPath( aParam[ 3 ] ) - lCapture := iif( HB_ISLOGICAL( aParam[ 4 ] ), aParam[ 4 ], aParam[ 4 ] == "YES" ) - lOpen := iif( HB_ISLOGICAL( aParam[ 5 ] ), aParam[ 5 ], aParam[ 5 ] == "YES" ) - - ENDIF - - IF HB_ISLOGICAL( lCapture ) - IF !empty( cPlugin ) - a_:= hb_aTokens( cParams, " " ) - FOR EACH cParams IN a_ - cParams := hbide_evalAsis( cParams ) - NEXT - hbide_execPlugin( cPlugin, ::oIde, hb_arrayToParams( a_ ) ) - - ELSE - ::execToolByParams( cCmd, cParams, cStayIn, lCapture, lOpen ) - - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:showOutput( cOut, mp2, oHbp ) - - HB_SYMBOL_UNUSED( mp2 ) - HB_SYMBOL_UNUSED( oHbp ) - - hbide_convertBuildStatusMsgToHtml( cOut, ::oOutputResult:oWidget ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:finished( nEC, nES, oHbp ) - - HB_SYMBOL_UNUSED( oHbp ) - - ::oOutputResult:oWidget:append( hbide_outputLine() ) - ::oOutputResult:oWidget:append( "Finished: Exit Code = " + hb_ntos( nEC ) + " Status = " + hb_ntos( nES ) ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_blockView( oSelf, cView ) - RETURN {|| oSelf:execView( cView ) } - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:buildViewsButton() - LOCAL a_, b_, qAct, aSettings, cPath, cView - - cPath := ::oINI:getIniPath() - b_:= directory( cPath + "*.ide" ) - - aSettings := {} - aadd( aSettings, "Browse..." ) - aadd( aSettings, "..." ) - aadd( aSettings, "Pritpals Favourite" ) - aadd( aSettings, "..." ) - FOR EACH a_ IN b_ - IF ! ( a_[ 1 ] == "settings.ide" ) .AND. ! ( a_[ 1 ] == "tempsettings.ide" ) - aadd( aSettings, hbide_pathNormalized( cPath + a_[ 1 ] ) ) - ENDIF - NEXT - ::qViewsMenu := QMenu() - ::qViewsMenu:setStyleSheet( GetStyleSheet( "QMenuPop", ::nAnimantionMode ) ) - FOR EACH cView IN aSettings - IF cView == "..." - qAct := ::qViewsMenu:addSeparator() - ELSE - qAct := ::qViewsMenu:addAction( cView ) - qAct:connect( "triggered(bool)", hbide_blockView( Self, cView ) ) - ENDIF - aadd( ::aSetAct, { qAct, cView } ) - NEXT - ::qViewsButton := QToolButton() - ::qViewsButton:setObjectName( "HbIDE Views" ) - ::qViewsButton:setTooltip( "HbIDE Views" ) - ::qViewsButton:setIcon( QIcon( hbide_image( "view_docks" ) ) ) - ::qViewsButton:setPopupMode( QToolButton_MenuButtonPopup ) - ::qViewsButton:setMenu( ::qViewsMenu ) - ::qViewsButton:connect( "clicked()", {|| ::saveView() } ) - - RETURN ::qViewsButton - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:saveView() - LOCAL cView, qAct - - cView := hbide_saveAFile( ::oDlg, "Select a HbIDE Settings File", { { "HbIDE Settings", "*.ide" } }, ::cSetsFolderLast, "ide" ) - IF ! empty( cView ) - ::cSetsFolderLast := cView - cView := lower( hbide_pathNormalized( cView ) ) - hbide_saveEnvironment( ::oIde, cView ) - - IF ascan( ::aSetAct, {|e_| e_[ 2 ] == cView } ) == 0 - qAct := ::qViewsMenu:addAction( cView ) - qAct:connect( "triggered(bool)", hbide_blockView( Self, cView ) ) - aadd( ::aAct, { qAct, cView } ) - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:execView( cView ) - - IF cView == "Browse..." - cView := hbide_fetchAFile( ::oDlg, "Select a HbIDE Settings File", { { "HbIDE Settings", "*.ide" } }, ::cSetsFolderLast, "ide", .f. ) - IF empty( cView ) - RETURN Self - ENDIF - ::cSetsFolderLast := cView - hbide_restEnvironment( ::oIde, cView ) - ELSEIF cView == "Pritpals Favourite" - hbide_restEnvironment_byResource( ::oIde, "pritpalsfav" ) - ELSE - hbide_restEnvironment( ::oIde, cView ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:buildPanelsButton() - LOCAL s, a_ - - ::qPanelsMenu := QMenu() - ::qPanelsMenu:setStyleSheet( GetStyleSheet( "QMenuPop", ::nAnimantionMode ) ) - FOR EACH s IN ::oINI:aViews - a_:= hb_atokens( s, "," ) - ::addPanelsMenu( a_[ 1 ] ) - NEXT - ::qPanelsButton := QToolButton() - ::qPanelsButton:setTooltip( "Panels" ) - ::qPanelsButton:setIcon( QIcon( hbide_image( "b_20" ) ) ) //panel_8" ) ) ) - ::qPanelsButton:setPopupMode( QToolButton_MenuButtonPopup ) - ::qPanelsButton:setMenu( ::qPanelsMenu ) - -// ::qPanelsButton:connect( "clicked()", {|| ::oDK:setView( "New..." ) } ) - ::qPanelsButton:connect( "clicked()", {|| ::managePanels() } ) - - RETURN ::qPanelsButton - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:addPanelsMenu( cPrompt ) - LOCAL qAct - - qAct := ::qPanelsMenu:addAction( cPrompt ) - qAct:setIcon( QIcon( ::oDK:getPanelIcon( cPrompt ) ) ) - qAct:connect( "triggered(bool)", {|| ::oDK:setView( cPrompt ) } ) - aadd( ::aPanelsAct, qAct ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:managePanels() - LOCAL a_ - - IF empty( ::oUIPnls ) - ::oUIPnls := ui_panels():new( ::oDlg:oWidget ) - - ::oUIPnls:listOrder:setDragEnabled( .t. ) - ::oUIPnls:listOrder:setAcceptDrops( .t. ) - ::oUIPnls:listOrder:setDragDropMode( QAbstractItemView_InternalMove ) - - ::oUIPnls:comboPos:addItem( "Top" ) - ::oUIPnls:comboPos:addItem( "Bottom" ) - ::oUIPnls:comboPos:addItem( "Left" ) - ::oUIPnls:comboPos:addItem( "Right" ) - ::oUIPnls:comboPos:setCurrentIndex( ::oINI:nPanelsTabPosition ) - - ::oUIPnls:comboShape:addItem( "Round" ) - ::oUIPnls:comboShape:addItem( "Triangular" ) - ::oUIPnls:comboShape:setCurrentIndex( ::oINI:nPanelsTabShape ) - - ::oUIPnls : connect( QEvent_Close, {|| ::oUIPnls:hide() } ) - ::oUIPnls:btnOk : connect( "clicked()" , {|| ::oUIPnls:hide(), ::arrangePanels() } ) - ::oUIPnls:btnCancel: connect( "clicked()" , {|| ::oUIPnls:hide() } ) - ENDIF - - ::oUIPnls:move( ::qPanelsButton:mapToGlobal( QPoint( 0, 20 ) ) ) - ::oUIPnls:listOrder:clear() - ::oUIPnls:comboDelete:clear() - FOR EACH a_ IN ::oDK:aViewsInfo - ::oUIPnls:listOrder:addItem( a_[ 1 ] ) - ::oUIPnls:comboDelete:addItem( a_[ 1 ] ) - NEXT - ::oUIPnls:comboDelete:setCurrentIndex( -1 ) - ::oUIPnls:show() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:arrangePanels() - LOCAL a_:={}, v_:={}, w_:={}, n, i, cView - LOCAL lOrder := .f. - - ::oINI:nPanelsTabShape := ::oUIPnls:comboShape:currentIndex() - ::oINI:nPanelsTabPosition := ::oUIPnls:comboPos:currentIndex() - - /* These are easy */ - ::oDK:oStackedWidget:setTabShape( ::oINI:nPanelsTabShape ) - ::oDK:oStackedWidget:setTabPosition( ::oINI:nPanelsTabPosition ) - - /* Rearrange panels */ - FOR i := 1 TO ::oUIPnls:listOrder:count() - cView := ::oUIPnls:listOrder:item( i - 1 ):text() - n := ascan( ::oDK:aViewsInfo, {|e_| e_[ 1 ] == cView } ) - aadd( a_, n ) - IF n != i - lOrder := .t. - ENDIF - NEXT - IF lOrder - FOR EACH n IN a_ - aadd( v_, ::oDK:aViewsInfo[ n ] ) - aadd( w_, ::oIde:aViews[ n ] ) - NEXT - ::oDK:aViewsInfo := v_ - ::oIde:aViews := w_ - ENDIF - - /* tobe done at the end after re-order */ - IF ! empty( cView := trim( ::oUIPnls:editView:text() ) ) - ::oDK:setView( cView ) - ENDIF - IF ::oUIPnls:comboDelete:currentIndex() >= 0 - ::deletePanel( ::oUIPnls:comboDelete:currentText() ) - ENDIF - /* Reordering needs that HbIDE be re-executed */ - IF lOrder - MsgBox( "You will need to close HbIDE for panels re-order to take effect !" ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeToolsManager:deletePanel( cView ) - LOCAL nTab, n, pTab, oEdit - - ::oDK:setView( cView ) - IF ! hbide_getYesNo( "Are you sure to remove - " + cView + " - panel ?" ) - RETURN NIL - ENDIF - - DO WHILE ::oIde:qTabWidget:count() > 0 - pTab := ::oIde:qTabWidget:widget( 0 ) - IF ( nTab := ascan( ::oIde:aTabs, {|e_| hbqt_IsEqual( e_[ 1 ]:oWidget, pTab ) } ) ) > 0 - oEdit := ::oIde:aTabs[ nTab, TAB_OEDITOR ] - IF ! Empty( oEdit:sourceFile ) .AND. !( ".ppo" == lower( oEdit:cExt ) ) - ::oSM:closeSource( nTab, .F., .F., .T. ) /* This deletes the tabs also */ - ENDIF - ENDIF - ENDDO - - n := ascan( ::oDK:aViewsInfo, {|e_| e_[ 1 ] == cView } ) - // - ::oStackedWidget:oWidget:removeSubWindow( ::oIde:aMdies[ n ] ) - ::oIde:aMdies[ n ]:setParent( QWidget() ) /* Release memory */ - hb_adel( ::oIde:aMdies , n, .t. ) - hb_adel( ::oDK:aViewsInfo, n, .t. ) - hb_adel( ::oIde:aViews , n, .t. ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - diff --git a/harbour/contrib/hbide/toolsutilities.ui b/harbour/contrib/hbide/toolsutilities.ui deleted file mode 100644 index f95ffa7281..0000000000 --- a/harbour/contrib/hbide/toolsutilities.ui +++ /dev/null @@ -1,656 +0,0 @@ - - - DialogTools - - - - 0 - 0 - 602 - 478 - - - - Tools & Utilities - - - - - 12 - 236 - 251 - 16 - - - - Command Line ( Keep blank if excuted via terminal ) - - - - - - 12 - 254 - 255 - 20 - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Keep this field blank if a command prompt has to be invoked to execute the parameters. </span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This is useful for building any type of project hbIDE do not support yet.</span></p></body></html> - - - - - - 12 - 194 - 53 - 16 - - - - Name: - - - - - - 176 - 96 - 95 - 24 - - - - Down - - - - - - 12 - 448 - 149 - 24 - - - - Update - - - - - - 12 - 334 - 79 - 16 - - - - Parameters: - - - - - - 176 - 210 - 95 - 24 - - - - Browse - - - - - - 12 - 19 - 149 - 173 - - - - - - - 176 - 18 - 95 - 24 - - - - Add - - - - - - 176 - 44 - 95 - 24 - - - - Delete - - - - - - 12 - 432 - 253 - 16 - - - - Qt::Horizontal - - - - - - 12 - 4 - 105 - 16 - - - - Current Tools: - - - - - - 12 - 352 - 253 - 20 - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Parameters list may contain batch files, compilers directives, linker commands, if this tool is used to build a project. </span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Otherwise it may contain parameters passed to the executable supplied in "Command line" field.</span></p> -<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">NOTE</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">"/" or "\" characters are recognized as path separators and cannot be used as parameter delimiters for contained applications.</span></p></body></html> - - - - - - 176 - 70 - 95 - 24 - - - - Up - - - - - - 172 - 448 - 95 - 24 - - - - Close - - - - - - 12 - 212 - 149 - 20 - - - - - - - 176 - 168 - 95 - 24 - - - - Execute - - - - - - 14 - 376 - 95 - 16 - - - - Start in: - - - - - - 12 - 394 - 253 - 20 - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Before executing this utility hbIDE will make this path current and then will run the command lin. </p> -<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This will specifically help the applications which are expecting a fixed environment for their proper execution.</p></body></html> - - - - - - 14 - 418 - 109 - 19 - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This flag initiates the process in the background and all output from the designated application is displayed in the "Output Console" at the bottom of editing area.</p> -<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This feature is generally suitable for building any project.</p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The output recieved as such empowers you the same feature as if Harbour project has been compiled, i.e., double click on an error line will open the source in the editor.</p></body></html> - - - Capture Output ? - - - - - - 134 - 418 - 131 - 19 - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If you check it, "Ouput Console" will be made visible the moment you will execute this utility. </p> -<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Alternatively you can open the Output Console anytime by clicking on relevant icon on right-toolbar.</p> -<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This has the bearing on visiblity of the widget. The output will ever be routed therein no matter this box is checked or not.</p></body></html> - - - Open Output Console ? - - - - - - 284 - 164 - 307 - 111 - - - - Toolbars: - - - - - 114 - 32 - 93 - 22 - - - - - - - 246 - 28 - 53 - 19 - - - - Top - - - - - - 10 - 18 - 93 - 83 - - - - - - - 246 - 82 - 53 - 19 - - - - Right - - - - - - 246 - 12 - 53 - 16 - - - - Dockable: - - - - - - 246 - 64 - 53 - 19 - - - - Bottom - - - - - - 246 - 46 - 53 - 19 - - - - Left - - - - - - 116 - 14 - 89 - 16 - - - - Iniitial Position: - - - - - - 114 - 60 - 71 - 19 - - - - Floatable - - - - - - 114 - 82 - 71 - 19 - - - - Inactive - - - - - - 182 - 63 - 55 - 37 - - - - Update - - - - - - - 284 - 284 - 307 - 187 - - - - Toolbar Buttons: - - - - - 10 - 16 - 253 - 161 - - - - - - - 272 - 16 - 25 - 20 - - - - ... - - - - - - 272 - 46 - 25 - 20 - - - - ... - - - - - - - 284 - 8 - 307 - 147 - - - - Current Tools Assignment to Toolbar: - - - - - 10 - 20 - 199 - 22 - - - - - - - 10 - 66 - 249 - 20 - - - - - - - 12 - 48 - 81 - 16 - - - - Image: - - - - - - 270 - 66 - 25 - 20 - - - - ... - - - - - - 12 - 98 - 57 - 16 - - - - Tooltip: - - - - - - 10 - 116 - 249 - 20 - - - - - - - 246 - 22 - 57 - 19 - - - - Active - - - - - - - 10 - 280 - 257 - 47 - - - - Plugin - - - - - 12 - 16 - 139 - 22 - - - - - - - 160 - 18 - 93 - 19 - - - - Init on startup - - - - - - - diff --git a/harbour/contrib/hbide/uisrcmanager.prg b/harbour/contrib/hbide/uisrcmanager.prg deleted file mode 100644 index 9305fd55ad..0000000000 --- a/harbour/contrib/hbide/uisrcmanager.prg +++ /dev/null @@ -1,1100 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2012 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 28Feb2012 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "common.ch" -#include "hbclass.ch" -#include "hbqtgui.ch" -#include "fileio.ch" -#include "hbide.ch" -#include "hbhrb.ch" - -/*----------------------------------------------------------------------*/ - -#define PNL_UI 1 -#define PNL_OBJECTS 2 -#define PNL_TYPE 3 - -/*----------------------------------------------------------------------*/ - -#define __dockUIScr_dragEnterEvent__ 2001 -#define __dockUISrc_dropEvent__ 2002 -#define __mdiArea_subWindowActivated__ 2003 -#define __buttonBuild_clicked__ 2004 -#define __buttonOpen_clicked__ 2005 -#define __child_object__ 2006 - -/*----------------------------------------------------------------------*/ -// CLASS UISrcData -/*----------------------------------------------------------------------*/ - -CLASS UISrcData - - DATA qObj - DATA cName INIT "" - DATA hSource INIT {=>} - - METHOD new( qObj, cObj ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD UISrcData:new( qObj, cObj ) - - hb_hCaseMatch( ::hSource, .f. ) - - ::qObj := qObj - ::cName := cObj - - RETURN Self - -/*----------------------------------------------------------------------*/ -// CLASS IdeUISrcManager -/*----------------------------------------------------------------------*/ - -CLASS IdeUISrcManager INHERIT IdeObject - - DATA qU - DATA qMdiArea - DATA qMdiSub - DATA qWidget - DATA qToolbar - DATA qLayout - DATA qStatus - DATA aStatusPnls INIT {} - DATA aToolBtns INIT {} - DATA sp0 - DATA pHrb - DATA qWdg - DATA qFocus - DATA qCurrent - DATA qTree - DATA qEdit - DATA qFont - DATA qSplitter - DATA qFrame - DATA qHBLayout - DATA qHiliter - - DATA oEdit - - DATA hMethods INIT {=>} - DATA hObjects INIT {=>} - DATA cPath INIT "" - DATA cName INIT "" - DATA cExt INIT "" - DATA lChanged INIT .f. - DATA aPrg INIT {} - DATA aObjByName INIT {} - DATA cSrcFile INIT "" - DATA cSource INIT "" - DATA aSource INIT {} - DATA oProcess - DATA cCurAction INIT "" - DATA cClsPrefix INIT "uie_" - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD show() - METHOD destroy() - METHOD execEvent( nEvent, p, p1 ) - METHOD buildToolbar() - METHOD buildToolButton( qToolbar, aBtn ) - METHOD buildStatusPanels() - METHOD openUi( cUI ) - METHOD reloadIfOpen( cUI ) - METHOD buildUiWidget( cUI ) - METHOD buildWidget( cBuffer, cPath, cName, cExt, aPrg ) - METHOD runHbmk2( cUI ) - METHOD clear() - METHOD checkUpdates() - METHOD buildSource() - METHOD loadSource() - METHOD finished( nExitCode, nExitStatus ) - METHOD outputText( cText ) - METHOD loadActions( oWidget, cName ) - METHOD exposeAction() - METHOD loadMethod() - METHOD saveMethod() - METHOD buildClassSkeleton( cCls, cUiName ) - METHOD getCurrentSlot() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:new( oIde ) - - ::oIde := oIde - - hb_hKeepOrder( ::hObjects, .t. ) - hb_hCaseMatch( ::hObjects, .f. ) - - hb_hKeepOrder( ::hMethods, .t. ) - hb_hCaseMatch( ::hMethods, .f. ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:create( oIde ) - - DEFAULT oIde TO ::oIde - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:show() - LOCAL qDock - - IF ! empty( ::oUI ) - RETURN Self - ENDIF - - ::oUI := 1 - - qDock := ::oIde:oUiSrcDock:oWidget - - qDock:setAcceptDrops( .t. ) - qDock:connect( QEvent_DragEnter, {|p| ::execEvent( __dockUIScr_dragEnterEvent__, p ) } ) - qDock:connect( QEvent_Drop , {|p| ::execEvent( __dockUISrc_dropEvent__ , p ) } ) - - ::qWidget := QWidget() - - qDock:setWidget( ::qWidget ) - - /* Layout applied to dbu widget */ - ::qLayout := QGridLayout() - ::qLayout:setContentsMargins( 0,0,0,0 ) - ::qLayout:setSpacing( 0 ) - - ::qWidget:setLayout( ::qLayout ) - - /* Toolbar */ - ::buildToolbar() - ::qLayout:addWidget( ::qToolbar, 0, 0, 1, 1 ) - - ::qSplitter := QSplitter() - ::qSplitter:setOrientation( Qt_Vertical ) - ::qLayout:addWidget( ::qSplitter, 1, 0, 1, 1 ) - - /* StatusBar */ - ::qStatus := QStatusBar() - ::qStatus:setSizeGripEnabled( .f. ) - ::qLayout:addWidget( ::qStatus , 2, 0, 1, 1 ) - - ::qMdiArea := QMdiArea() - ::qMdiArea:setDocumentMode( .t. ) - ::qMdiArea:setOption( QMdiArea_DontMaximizeSubWindowOnActivation, .t. ) - ::qMdiArea:setVerticalScrollBarPolicy( Qt_ScrollBarAsNeeded ) - ::qMdiArea:setHorizontalScrollBarPolicy( Qt_ScrollBarAsNeeded ) - ::qMdiArea:setViewMode( QMdiArea_SubWindowView ) - ::qMdiArea:connect( "subWindowActivated(QMdiSubWindow*)", {|p| ::execEvent( __mdiArea_subWindowActivated__, p ) } ) - - ::qSplitter:addWidget( ::qMdiArea ) - - ::qFrame := QFrame() - ::qHBLayout := QHBoxLayout() - ::qHBLayout:setContentsMargins( 0, 0, 0, 0 ) - ::qFrame:setLayout( ::qHBLayout ) - - ::qSplitter:addWidget( ::qFrame ) - - ::qTree := QTreeWidget() - ::qTree:setMaximumWidth( 150 ) - ::qTree:setHeaderHidden( .t. ) - ::qTree:connect( "itemSelectionChanged()", {|| ::exposeAction() } ) - ::qHBLayout:addWidget( ::qTree ) - - ::qEdit := QPlainTextEdit() - ::qHBLayout:addWidget( ::qEdit ) - - ::oEdit := IdeEdit():new( ::oIde ) - ::oEdit:qEdit := ::qEdit - - ::qFont := QFont() - ::qFont:setFamily( "Courier" ) - ::qFont:setFixedPitch( .t. ) - ::qFont:setPointSize( 10 ) - ::qEdit:setFont( ::qFont ) - - ::qEdit:setLineWrapMode( QTextEdit_NoWrap ) - ::qEdit:setFont( ::oIde:oFont:oWidget ) - ::qEdit:ensureCursorVisible() - - ::qHiliter := ::oTH:setSyntaxHilighting( ::qEdit, "Bare Minimum", .t., .t. ) - ::qHiliter:hbSetInitialized( .t. ) - - /* Statusbar Panels */ - ::buildStatusPanels() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:destroy() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:execEvent( nEvent, p, p1 ) - LOCAL qList, qMime, qUrl, cExt, cUI - - SWITCH nEvent - CASE __buttonBuild_clicked__ - ::buildSource() - EXIT - - CASE __buttonOpen_clicked__ - IF ! empty( cUI := hbide_fetchAFile( ::oIde:oDlg, "Select a .UI", { { "Qt Designer .UI File", "*.ui" } }, ::oIde:cWrkFolderLast ) ) - ::buildUiWidget( cUI ) - ENDIF - EXIT - - CASE __dockUIScr_dragEnterEvent__ - p:acceptProposedAction() - EXIT - - CASE __dockUISrc_dropEvent__ - qMime := p:mimeData() - IF qMime:hasUrls() - qList := qMime:urls() - qUrl := qList:at( 0 ) - hb_fNameSplit( qUrl:toLocalFile(), , , @cExt ) - IF lower( cExt ) == ".ui" - ::buildUiWidget( qUrl:toLocalFile() ) - ENDIF - ENDIF - EXIT - - CASE __child_object__ - IF empty( ::qCurrent ) .OR. ! ( ::qCurrent == p ) - ::saveMethod() - - ::qCurrent := p - ::cCurAction := "" - - ::qFocus:setWidget( p ) - ::aStatusPnls[ PNL_OBJECTS ]:setText( "OBJ: " + p1 + "" ) - ::aStatusPnls[ PNL_TYPE ]:setText( "CLASS: " + lower(__objGetClsName( p ) ) + "" ) - p:clearFocus() - ::loadActions( p, p1 ) - ENDIF - EXIT - - CASE __mdiArea_subWindowActivated__ - EXIT - - ENDSWITCH - - RETURN .f. - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:getCurrentSlot() - LOCAL cCls := __objGetClsName( ::qCurrent ) - - SWITCH ::cCurAction - CASE "Activated" - IF cCls == "QTOOLBUTTON" .OR. "QPUSHBUTTON" - RETURN "clicked()" - ENDIF - EXIT - CASE "Icon" /* just */ - EXIT - ENDSWITCH - - RETURN "" - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:saveMethod() - LOCAL cSrc, n, n0, n1, n2, n3, cMtd, i, aSrc, cSearch, cSlot - LOCAL cMethod, cObjName, cAction - - IF empty( ::qCurrent ) - RETURN Self - ENDIF - - cObjName := ::qCurrent:objectName() - cAction := ::cCurAction - IF empty( cAction ) .OR. ! ::qEdit:document():isModified() - RETURN Self - ENDIF - - cMethod := cObjName + "_" + upper( left( cAction,1 ) ) + lower( substr( cAction, 2 ) ) - cMtd := "METHOD " + ::cClsPrefix + ::cName + ":" + cMethod + "( ... )" - cSrc := ::qEdit:toPlainText() - - n0 := ascan( ::aSource, {|e| "" $ e } ) - n1 := ascan( ::aSource, {|e| "" $ e } ) - - n2 := ascan( ::aSource, {|e| "METHOD " + cMethod $ e }, n0, n1 ) - IF n2 > 0 .AND. empty( cSrc ) - hb_adel( ::aSource, n2, .t. ) - ELSEIF n2 == 0 .AND. ! empty( cSrc ) - ::aSource := hb_aIns( ::aSource, n0+1, " " + "METHOD " + cMethod + "( ... )", .t. ) - ENDIF - - n2 := ascan( ::aSource, {|e| cMtd $ e } ) - n3 := ascan( ::aSource, {|e| "RETURN Self" $ e }, n2 ) - - IF empty( cSrc ) - IF n2 > 0 - FOR i := n3 + 1 TO n2 STEP - 1 - hb_adel( ::aSource, i, .t. ) - NEXT - ENDIF - ELSE - cSrc := strtran( cSrc, chr( 13 ) + chr( 10 ), chr( 10 ) ) - aSrc := hb_aTokens( cSrc, chr( 10 ) ) - - IF n2 > 0 - FOR i := n3-1 TO n2 + 1 STEP - 1 - hb_adel( ::aSource, i, .t. ) - NEXT - FOR i := 1 TO Len( aSrc ) - ::aSource := hb_ains( ::aSource, n2 + i, " " + aSrc[ i ], .t. ) - NEXT - ELSE - n := ascan( ::aSource, {|e| "" $ e } ) - ::aSource := hb_ains( ::aSource, ++n, cMtd, .t. ) - FOR i := 1 TO Len( aSrc ) - ::aSource := hb_ains( ::aSource, ++n, " " + aSrc[ i ], .t. ) - NEXT - ::aSource := hb_ains( ::aSource, ++n, " ", .t. ) - ::aSource := hb_ains( ::aSource, ++n, " RETURN Self", .t. ) - ::aSource := hb_ains( ::aSource, ++n, " ", .t. ) - ENDIF - ENDIF - - IF ! empty( cSlot := ::getCurrentSlot() ) - // Connections - n0 := ascan( ::aSource, {|e| "" $ e } ) - n1 := ascan( ::aSource, {|e| "" $ e }, n0 ) - cSearch := '::oUI:' + cObjName - n2 := ascan( ::aSource, {|e| cSearch $ e }, n0+1, n1-n0-1 ) - IF empty( cSrc ) - IF n2 > 0 - hb_adel( ::aSource, n2, .t. ) - ENDIF - ELSE - IF n2 == 0 - hb_ains( ::aSource, n0+1, ' ::oUI:' + cObjName + ':connect( "' + cSlot + '", {|...| ::' + cMethod + '( ... ) } )' ) - ENDIF - ENDIF - // Disconnections - n0 := ascan( ::aSource, {|e| "" $ e } ) - n1 := ascan( ::aSource, {|e| "" $ e }, n0 ) - cSearch := '::oUI:' + cObjName - n2 := ascan( ::aSource, {|e| cSearch $ e }, n0+1, n1-n0-1 ) - IF empty( cSrc ) - IF n2 > 0 - hb_adel( ::aSource, n2, .t. ) - ENDIF - ELSE - IF n2 == 0 - hb_ains( ::aSource, n0+1, ' ::oUI:' + cObjName + ':disconnect( "' + cSlot + '" )' ) - ENDIF - ENDIF - - ENDIF - - ::qEdit:document():clear() - ::buildSource() /* Temporary */ - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:loadMethod() - LOCAL cSrc := "", n0, n1, n2, n3, cMtd, i - LOCAL cObjName, cAction, cMethod - - IF empty( ::qCurrent ) - RETURN Self - ENDIF - - cObjName := ::qCurrent:objectName() - cAction := ::cCurAction - cMethod := cObjName + "_" + upper( left( cAction,1 ) ) + lower( substr( cAction, 2 ) ) - - n0 := ascan( ::aSource, {|e| "" $ e } ) - n1 := ascan( ::aSource, {|e| "" $ e } ) - - n2 := ascan( ::aSource, {|e| "METHOD " + cMethod $ e }, n0, n1 ) - IF n2 > 0 - cMtd := "METHOD " + ::cClsPrefix + ::cName + ":" + cMethod + "( ... )" - IF ( n2 := ascan( ::aSource, {|e| cMtd $ e } ) ) > 0 - n3 := ascan( ::aSource, {|e| "RETURN Self" $ e }, n2 ) - FOR i := n2 + 1 TO n3 - 1 - cSrc += substr( ::aSource[ i ], 4 ) + chr( 10 ) - NEXT - cSrc := substr( cSrc, 1, Len( cSrc ) - 1 ) - ENDIF - ENDIF - - RETURN cSrc - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:exposeAction() - LOCAL qItem := ::qTree:currentItem() - LOCAL cText := qItem:text( 0 ) - - IF cText == ::cCurAction - RETURN Self - ENDIF - - ::saveMethod() - ::cCurAction := cText - - SWITCH __objGetClsName( ::qCurrent ) - CASE "QPUSHBUTTON" - CASE "QTOOLBUTTON" - SWITCH ::cCurAction - - CASE "Activated" - ::qEdit:setPlainText( ::loadMethod() ) - ::qEdit:setFocus() - EXIT - - CASE "Icon" - ::qEdit:setPlainText( ::loadMethod() ) - ::qEdit:setFocus() - EXIT - - ENDSWITCH - - EXIT - - ENDSWITCH - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:loadActions( oWidget, cName ) - LOCAL qItem - - HB_SYMBOL_UNUSED( cName ) - - ::qTree:clear() - - SWITCH __objGetClsName( oWidget ) - CASE "QPUSHBUTTON" - CASE "QTOOLBUTTON" - qItem := QTreeWidgetItem() - qItem:setText( 0, "Activated" ) - ::qTree:addTopLevelItem( qItem ) - qItem := QTreeWidgetItem() - qItem:setText( 0, "Icon" ) - ::qTree:addTopLevelItem( qItem ) - EXIT - - ENDSWITCH - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:checkUpdates() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:clear() - - ::qCurrent := NIL - ::cCurAction := "" - ::qEdit:document():clear() - ::qTree:clear() - - ::aObjByName := {} - ::aPrg := {} - ::qFocus := NIL - ::qFocus := QFocusFrame() - - IF ! empty( ::pHrb ) - hb_hrbUnload( ::pHrb ) - ::pHrb := NIL - ENDIF - - IF HB_ISOBJECT( ::qMdiSub ) - ::qMdiArea:removeSubWindow( ::qMdiSub ) - ::qMdiSub := NIL - ENDIF - - ::hObjects := {=>} - hb_hCaseMatch( ::hObjects, .f. ) - hb_hKeepOrder( ::hObjects, .t. ) - - ::cSource := "" - ::cSrcFile := "" - ::aSource := {} - - ::cPath := "" - ::cName := "" - ::cExt := "" - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:reloadIfOpen( cUI ) - LOCAL cPath, cName, cExt - LOCAL cObjName, cAction, qList - - cUI := hbide_pathToOSPath( lower( cUI ) ) - hb_fNameSplit( cUI, @cPath, @cName, @cExt ) - IF ::cPath == cPath .AND. ::cName == cName - IF ! empty( ::qCurrent ) - cObjName := ::qCurrent:objectName() - cAction := ::cCurAction - ENDIF - - ::openUi( cUI ) - - IF ! empty( cObjName ) - IF __objHasMsg( ::qU, cObjName ) - ::execEvent( __child_object__, ::qU:&cObjName., cObjName ) - ENDIF - IF ! empty( cAction ) - qList := ::qTree:findItems( cAction, Qt_MatchExactly, 0 ) - ::qTree:setCurrentItem( qList:at( 0 ) ) - ENDIF - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:openUi( cUI ) - - ::show() - ::oIde:oUiSrcDock:show() - ::clear() - ::buildUiWidget( cUI ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:buildUiWidget( cUI ) - LOCAL cPath, cName, cExt, cBuffer, cPrg, aPrg - - hb_fNameSplit( cUI, @cPath, @cName, @cExt ) - - ::runHbmk2( cUI ) - - cPrg := cPath + "uic_" + cName + ".prg" - IF ! hb_fileExists( cPrg ) - RETURN Self - ENDIF - cBuffer := hb_memoRead( cPrg ) - - cBuffer := strtran( cBuffer, "hbqtui_", "hbide_ui_" ) - ferase( cPrg ) - - IF !( hb_eol() == Chr( 10 ) ) - cBuffer := StrTran( cBuffer, hb_eol(), Chr( 10 ) ) - ENDIF - IF !( hb_eol() == Chr( 13 ) + Chr( 10 ) ) - cBuffer := StrTran( cBuffer, Chr( 13 ) + Chr( 10 ), Chr( 10 ) ) - ENDIF - aPrg := hb_aTokens( cBuffer, chr( 10 ) ) - - ::buildWidget( cBuffer, cPath, cName, cExt, aPrg ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:buildWidget( cBuffer, cPath, cName, cExt, aPrg ) - LOCAL cCode, s, n, oObj, cCls, i, pHrb, cObj - -// MEMVAR cObj -// PRIVATE cObj - - cBuffer := hb_compileFromBuf( cBuffer, "-n2", "-w3", "-es2", "-q0", "-i" + ::oINI:getHarbourPath() + "include" ) - IF ! empty( cBuffer ) - pHrb := hb_hrbLoad( HB_HRB_BIND_OVERLOAD, cBuffer ) - IF ! empty( pHrb ) - ::checkUpdates() - ::clear() - - ::aPrg := aPrg - ::pHrb := pHrb - ::cPath := lower( cPath ) - ::cName := lower( cName ) - ::cExt := lower( cExt ) - ::cSrcFile := ::cPath + "cls_" + ::cName + ".prg" - - ::qU := eval( &( "{|q| " + "hbide_ui_" + cName + "( q ) }" ) ) - IF HB_ISOBJECT( ::qU ) - ::loadSource() - - ::qMdiSub := QMdiSubWindow() - ::qMdiSub:setWidget( ::qU:oWidget ) - ::qMdiSub:resize( ::qU:width()+8, ::qU:height()+40 ) - ::qMdiArea:addSubWindow( ::qMdiSub ) - ::qMdiSub:show() - ::qMdiSub:move( 10,10 ) - ::aStatusPnls[ PNL_UI ]:setText( "UI: " + cName + "" ) - - FOR i := 1 to Len( aPrg ) - cCode := aPrg[ i ] - IF ! ( "oRootWidget" $ cCode ) .AND. ! ( "LOCAL" $ cCode ) .AND. ! ( "oParent" $ cCode ) - IF " := " $ cCode - s := alltrim( substr( cCode, 1, at( " := ", cCode ) ) ) - n := at( '::', s ) - cObj := substr( s, n+2 ) - oObj := ::qU:&cObj - cCls := __objGetClsName( oObj ) - IF ! ( cCls $ "QBRUSH,QPALETTE,QPIXMAP,QIMAGE,QICON,QSIZEPOLICY,QFONT,QGRIDLAYOUT,QHBOXLAYOUT,QVBOXLAYOUT,QSPACERITEM,QLAYOUT,QSPLITTER,QSCROLLAREA,QTREEWIDGETITEM,QLISTWIDGETITEM" ) - aadd( ::aObjByName, cObj ) - oObj:setObjectName( cObj ) - - IF ( cCls $ "QLINEEDIT" ) - oObj:setFocusPolicy( Qt_NoFocus ) - ENDIF - - SWITCH cCls - CASE "QPLAINTEXTEDIT" - CASE "QTEXTEDIT" - oObj:connect( QEvent_FocusIn, getObject( Self, ::qU, cObj ) ) - oObj:setCursorWidth( 0 ) - EXIT - OTHERWISE - oObj:connect( QEvent_MouseButtonRelease, getObject( Self, ::qU, cObj ) ) - ENDSWITCH - ENDIF - ELSEIF "RETURN " $ cCode - EXIT - ENDIF - ENDIF - NEXT - ENDIF - ENDIF - ENDIF - - RETURN .t. - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:runHbmk2( cUI ) - LOCAL cPath, cName, cExt, cExeHbMk2, cCmdParams, cCmd, cC, cBuf, fhnd, cHbpFileName, cHbpFile, cBatch - LOCAL aHbp := {}, aHbp0 := {} - LOCAL cbRed := "", ceRed := "" - - hb_fNameSplit( cUI, @cPath, @cName, @cExt ) - - aadd( aHbp, "-hbraw" ) - aadd( aHbp, "-trace" ) - - aadd( aHbp0, "-q" ) - aadd( aHbp0, "-info" ) - aadd( aHbp0, "-rebuild" ) - aadd( aHbp0, "-s" ) - aadd( aHbp0, "-hblib" ) - aadd( aHbp0, "-workdir=" + cPath ) - aadd( aHbp0, "hbqt.hbc" ) - aadd( aHbp0, cUI ) - - ::oOutputResult:oWidget:clear() - - IF .t. - ::oOutputResult:oWidget:append( hbide_outputLine() ) - - IF ( fhnd := hb_FTempCreateEx( @cHbpFileName, NIL, NIL, ".hbp" ) ) != F_ERROR - cHbpFile := "" - FOR EACH cBuf IN aHbp0 - cHbpFile += cBuf + hb_eol() - NEXT - FWrite( fhnd, cHbpFile ) - FClose( fhnd ) - ELSE - RETURN Self - ENDIF - - ::oIDE:oEV := IdeEnvironments():new():create( ::oIDE ) - cBatch := ::oEV:prepareBatch( ::cWrkEnvironment ) - aeval( ::oEV:getHbmk2Commands( ::cWrkEnvironment ), {|e| aadd( aHbp, e ) } ) - - cExeHbMk2 := ::oINI:getHbmk2File() - cCmdParams := hbide_array2cmdParams( aHbp ) - - ::oProcess := HbpProcess():new() - // - ::oProcess:output := {|cOut| hbide_convertBuildStatusMsgToHtml( cOut, ::oOutputResult:oWidget ) } - ::oProcess:finished := {|nEC , nES| ::finished( nEC ,nES ) } - ::oProcess:workingPath := cPath - // - cCmd := hbide_getShellCommand() - cC := iif( hbide_getOS() == "nix", "", "/E:20000 /C " ) - - IF hb_fileExists( cBatch ) - cBuf := memoread( cBatch ) - cBuf += "SET " + hb_eol() - cBuf += cExeHbMk2 + " " + cHbpFileName + " " + cCmdParams + hb_eol() - hb_memowrit( cBatch, cBuf ) - ENDIF - // - ::outputText( cbRed + "Batch File " + iif( hb_fileExists( cBatch ), " : Exists", " : doesn't Exist" ) + " => " + ceRed + trim( cBatch ) ) - ::outputText( cbRed + "Batch File Contents => " + ceRed ) - ::outputText( memoread( cBatch ) ) - ::outputText( cbRed + "Command => " + ceRed + cCmd ) - ::outputText( cbRed + "Arguments => " + ceRed + cC + cBatch ) - ::outputText( hbide_outputLine() ) - // - ::oProcess:addArg( cC + cBatch ) - ::oProcess:start( cCmd ) - ::oProcess:waitForFinished() - ferase( cHbpFileName ) - ferase( cBatch ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:finished( nExitCode, nExitStatus ) - LOCAL cTmp - - ::outputText( hbide_outputLine() ) - cTmp := "Exit Code [ " + hb_ntos( nExitCode ) + " ] Exit Status [ " + hb_ntos( nExitStatus ) + " ] " +; - "Finished at [ " + time() + " ] Done in [ " + hb_ntos( seconds() - ::oProcess:started ) + " Secs ]" - ::outputText( cTmp ) - ::outputText( hbide_outputLine() ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:outputText( cText ) - ::oOutputResult:oWidget:append( "" + cText + "" ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:buildToolbar() - LOCAL nW := 25 - - ::sp0 := QLabel() - ::sp0:setMinimumWidth( nW ) - - ::qToolbar := QToolbar() - ::qToolbar:setIconSize( QSize( 16,16 ) ) - ::qToolbar:setStyleSheet( GetStyleSheet( "QToolBar", ::nAnimantionMode ) ) - - ::buildToolButton( ::qToolbar, { "Open a .UI" , "open3" , {|| ::execEvent( __buttonOpen_clicked__ ) }, .f. } ) - ::qToolbar:addWidget( ::sp0 ) - ::buildToolButton( ::qToolbar, { "Build Source", "fileprg", {|| ::execEvent( __buttonBuild_clicked__ ) }, .f. } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:buildToolButton( qToolbar, aBtn ) - LOCAL qBtn - - IF empty( aBtn ) - qToolbar:addSeparator() - ELSE - qBtn := QToolButton() - qBtn:setTooltip( aBtn[ 1 ] ) - qBtn:setAutoRaise( .t. ) - qBtn:setIcon( QIcon( hbide_image( aBtn[ 2 ] ) ) ) - IF aBtn[ 4 ] - qBtn:setCheckable( .t. ) - ENDIF - qBtn:connect( "clicked()", aBtn[ 3 ] ) - qToolBar:addWidget( qBtn ) - aadd( ::aToolBtns, qBtn ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:buildStatusPanels() - LOCAL qLabel - - qLabel := QLabel(); qLabel:setMinimumWidth( 40 ) - ::qStatus:addPermanentWidget( qLabel, 0 ) - aadd( ::aStatusPnls, qLabel ) - - qLabel := QLabel(); qLabel:setMinimumWidth( 40 ) - ::qStatus:addPermanentWidget( qLabel, 0 ) - aadd( ::aStatusPnls, qLabel ) - - qLabel := QLabel(); qLabel:setMinimumWidth( 40 ) - ::qStatus:addPermanentWidget( qLabel, 0 ) - aadd( ::aStatusPnls, qLabel ) - - qLabel := QLabel(); qLabel:setMinimumWidth( 40 ) - ::qStatus:addPermanentWidget( qLabel, 1 ) - aadd( ::aStatusPnls, qLabel ) - - RETURN Self - -/*------------------------------------------------------------------------*/ - -STATIC FUNCTION getObject( oSelf, oHbQtUi, cObj ) - RETURN {|...| oSelf:execEvent( __child_object__, oHbQtUi:&cObj., cObj, ... ) } - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:loadSource() - - IF hb_fileExists( ::cSrcFile ) - ::aSource := hbide_readSource( ::cSrcFile ) - ENDIF - ::buildSource() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:buildSource() - LOCAL qHScr, qVScr, qCursor, qCurPos, qHVal, qVVal, qEdit - - IF empty( ::aSource ) - ::aSource := ::buildClassSkeleton( 'uie_' + ::cName, ::cName ) - ENDIF - - ::cSource := "" - aeval( ::aSource, {|e| ::cSource += e + hb_eol() } ) - - hb_memowrit( ::cSrcFile, ::cSource ) - - ::oSM:editSource( ::cSrcFile, 0, 0, 0, NIL, NIL, .f., .t. ) - IF ::oEM:isOpen( ::cSrcFile ) - qEdit := ::oEM:getEditCurrent() - qHScr := qEdit:horizontalScrollBar() - qVScr := qEdit:verticalScrollBar() - qCursor := qEdit:textCursor() - - qCurPos := qCursor:position() - qHVal := qHScr:value() - qVVal := qVScr:value() - - ::oEM:reLoad( ::cSrcFile ) - - qCursor := qEdit:textCursor() - qCursor:setPosition( qCurPos ) - qEdit:setTextCursor( qCursor ) - qHScr:setValue( qHVal ) - qVScr:setValue( qVVal ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeUISrcManager:buildClassSkeleton( cCls, cUiName ) - LOCAL aSrc := {} - LOCAL cClsC := cCls + ":" - - aadd( aSrc, '/*' ) - aadd( aSrc, ' * $Id$' ) - aadd( aSrc, ' */' ) - aadd( aSrc, '' ) - aadd( aSrc, '/*' ) - aadd( aSrc, ' . Do not edit lines in this section!' ) - aadd( aSrc, ' NAME = ' + cCls ) - aadd( aSrc, ' ' ) - aadd( aSrc, ' */' ) - aadd( aSrc, '/*----------------------------------------------------------------------*/' ) - aadd( aSrc, '' ) - aadd( aSrc, '#include "hbclass.ch"' ) - aadd( aSrc, '#include "error.ch"' ) - aadd( aSrc, '#include "hbqtgui.ch"' ) - aadd( aSrc, '' ) - aadd( aSrc, '/*----------------------------------------------------------------------*/' ) - aadd( aSrc, '' ) - aadd( aSrc, 'CREATE CLASS ' + cCls ) - aadd( aSrc, '' ) - aadd( aSrc, ' VAR oParent' ) - aadd( aSrc, '' ) - aadd( aSrc, ' /* . Do not edit lines in this section! */' ) - aadd( aSrc, ' METHOD new( oParent )' ) - aadd( aSrc, ' METHOD create( oParent )' ) - aadd( aSrc, ' METHOD destroy()' ) - aadd( aSrc, ' METHOD connects()' ) - aadd( aSrc, ' METHOD disconnects()' ) - aadd( aSrc, ' ERROR HANDLER __OnError( ... )' ) - aadd( aSrc, ' /* */' ) - aadd( aSrc, '' ) - aadd( aSrc, ' /* . Do not edit lines in this section! */' ) - aadd( aSrc, ' /* */' ) - aadd( aSrc, '' ) - aadd( aSrc, ' PROTECTED:' ) - aadd( aSrc, '' ) - aadd( aSrc, ' VAR oUI' ) - aadd( aSrc, '' ) - aadd( aSrc, 'ENDCLASS' ) - aadd( aSrc, '' ) - aadd( aSrc, '/*----------------------------------------------------------------------*/' ) - aadd( aSrc, '' ) - aadd( aSrc, 'METHOD ' + cClsC + 'new( oParent )' ) - aadd( aSrc, '' ) - aadd( aSrc, ' hb_default( @oParent, ::oParent )' ) - aadd( aSrc, ' ::oParent := oParent' ) - aadd( aSrc, '' ) - aadd( aSrc, ' RETURN Self' ) - aadd( aSrc, '' ) - aadd( aSrc, '/*----------------------------------------------------------------------*/' ) - aadd( aSrc, '' ) - aadd( aSrc, 'METHOD ' + cClsC + 'create( oParent )' ) - aadd( aSrc, '' ) - aadd( aSrc, ' hb_default( @oParent, ::oParent )' ) - aadd( aSrc, ' ::oParent := oParent' ) - aadd( aSrc, '' ) - aadd( aSrc, ' ::oUI := hbqtui_' + cUiName + '( ::oParent )' ) - aadd( aSrc, '' ) - aadd( aSrc, ' ::connects()' ) - aadd( aSrc, '' ) - aadd( aSrc, ' RETURN Self' ) - aadd( aSrc, '' ) - aadd( aSrc, '/*----------------------------------------------------------------------*/' ) - aadd( aSrc, '' ) - aadd( aSrc, 'METHOD ' + cClsC + 'destroy()' ) - aadd( aSrc, '' ) - aadd( aSrc, ' IF HB_ISOBJECT( ::oUI )' ) - aadd( aSrc, ' ::disconnects()' ) - aadd( aSrc, ' ::oUI:destroy()' ) - aadd( aSrc, ' ENDIF' ) - aadd( aSrc, '' ) - aadd( aSrc, ' RETURN Self' ) - aadd( aSrc, '' ) - aadd( aSrc, '/*----------------------------------------------------------------------*/' ) - aadd( aSrc, '' ) - aadd( aSrc, 'METHOD ' + cClsC + '__OnError( ... )' ) - aadd( aSrc, ' LOCAL cMsg := __GetMessage()' ) - aadd( aSrc, ' LOCAL oError, cMtd' ) - aadd( aSrc, '' ) - aadd( aSrc, ' IF SubStr( cMsg, 1, 1 ) == "_"' ) - aadd( aSrc, ' cMsg := SubStr( cMsg, 2 )' ) - aadd( aSrc, ' ENDIF' ) - aadd( aSrc, '' ) - aadd( aSrc, ' IF Left( cMsg, 2 ) == "Q_"' ) - aadd( aSrc, ' cMtd := SubStr( cMsg, 3 )' ) - aadd( aSrc, ' IF __objHasMsg( ::oUI, cMtd )' ) - aadd( aSrc, ' RETURN ::oUI:&cMtd' ) - aadd( aSrc, ' ELSE' ) - aadd( aSrc, ' oError := ErrorNew()' ) - aadd( aSrc, '' ) - aadd( aSrc, ' oError:severity := ES_ERROR' ) - aadd( aSrc, ' oError:genCode := EG_ARG' ) - aadd( aSrc, ' oError:subSystem := "HBQT"' ) - aadd( aSrc, ' oError:subCode := 1001' ) - aadd( aSrc, ' oError:canRetry := .F.' ) - aadd( aSrc, ' oError:canDefault := .F.' ) - aadd( aSrc, ' oError:Args := hb_AParams()' ) - aadd( aSrc, ' oError:operation := ProcName()' ) - aadd( aSrc, ' oError:Description := "Control <" + substr( cMsg, 3 ) + "> does not exist"' ) - aadd( aSrc, '' ) - aadd( aSrc, ' Eval( ErrorBlock(), oError )' ) - aadd( aSrc, ' ENDIF' ) - aadd( aSrc, ' ELSEIF ! empty( ::oUI:oWidget )' ) - aadd( aSrc, ' RETURN ::oUI:oWidget:&cMsg( ... )' ) - aadd( aSrc, ' ENDIF' ) - aadd( aSrc, '' ) - aadd( aSrc, ' RETURN NIL' ) - aadd( aSrc, '' ) - aadd( aSrc, '/*----------------------------------------------------------------------*/' ) - aadd( aSrc, '' ) - aadd( aSrc, 'METHOD ' + cClsC + 'connects()' ) - aadd( aSrc, '' ) - aadd( aSrc, ' /* . Do not edit lines in this section! */' ) - aadd( aSrc, ' /* */' ) - aadd( aSrc, '' ) - aadd( aSrc, ' RETURN Self' ) - aadd( aSrc, '' ) - aadd( aSrc, '/*----------------------------------------------------------------------*/' ) - aadd( aSrc, '' ) - aadd( aSrc, 'METHOD ' + cClsC + 'disconnects()' ) - aadd( aSrc, '' ) - aadd( aSrc, ' /* . Do not edit lines in this section! */' ) - aadd( aSrc, ' /* */' ) - aadd( aSrc, '' ) - aadd( aSrc, ' RETURN Self' ) - aadd( aSrc, '' ) - aadd( aSrc, '/*----------------------------------------------------------------------*/' ) - aadd( aSrc, '/* . Do not edit method names in this section, but can edit method body! */' ) - aadd( aSrc, '/* */' ) - aadd( aSrc, '/*----------------------------------------------------------------------*/' ) - aadd( aSrc, '' ) - - RETURN aSrc - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/updown.ui b/harbour/contrib/hbide/updown.ui deleted file mode 100644 index 9e471b6d6b..0000000000 --- a/harbour/contrib/hbide/updown.ui +++ /dev/null @@ -1,71 +0,0 @@ - - - Form - - - - 0 - 0 - 135 - 24 - - - - Form - - - - 1 - - - 0 - - - 2 - - - 0 - - - 2 - - - - - ... - - - - - - - ... - - - - - - - ... - - - - - - - ... - - - - - - - ... - - - - - - - - diff --git a/harbour/contrib/hbide/updown_v.ui b/harbour/contrib/hbide/updown_v.ui deleted file mode 100644 index de60257f5a..0000000000 --- a/harbour/contrib/hbide/updown_v.ui +++ /dev/null @@ -1,116 +0,0 @@ - - - Form - - - - 0 - 0 - 94 - 116 - - - - Form - - - - 3 - - - 0 - - - 2 - - - 0 - - - 2 - - - - - - 18 - 16 - - - - ... - - - true - - - - - - - - 18 - 16 - - - - ... - - - true - - - - - - - - 18 - 16 - - - - ... - - - true - - - - - - - - 18 - 16 - - - - ... - - - true - - - - - - - - 18 - 16 - - - - ... - - - true - - - - - - - - diff --git a/harbour/contrib/hbide/wizard.prg b/harbour/contrib/hbide/wizard.prg deleted file mode 100644 index b942217a43..0000000000 --- a/harbour/contrib/hbide/wizard.prg +++ /dev/null @@ -1,182 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 18Mar2010 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbide.ch" -#include "common.ch" -#include "hbclass.ch" -#include "hbqtgui.ch" - -/*----------------------------------------------------------------------*/ - -#define PAGE_INTRO 1 -#define PAGE_X 2 - -/*----------------------------------------------------------------------*/ - -FUNCTION hbide_startOpenWizard() - STATIC oWz - - oWz := IdeWizard():new():create() - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -CLASS IdeWizard INHERIT IdeObject - - DATA aPages INIT {} - - METHOD new( oIde ) - METHOD create( oIde ) - METHOD destroy() - METHOD execEvent( nEvent, p ) - METHOD addIntroPage() - METHOD addDescPage() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD IdeWizard:new( oIde ) - - ::oIde := oIde - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeWizard:create( oIde ) - - DEFAULT oIde TO ::oIde - ::oIde := oIde - - ::oUI := QWizard() - ::oUI:setWindowTitle( "Open" ) - ::oUI:setWindowIcon( QIcon( hbide_image( "hbide" ) ) ) - - ::addIntroPage() - ::addDescPage() - - ::oUI:show() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeWizard:destroy() - LOCAL a_, obj - - IF !empty( ::oUI ) - FOR EACH a_ IN ::aPages - FOR EACH obj IN a_ DESCEND - obj := NIL - NEXT - NEXT - ::oUI := NIL - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeWizard:execEvent( nEvent, p ) - - HB_SYMBOL_UNUSED( nEvent ) - HB_SYMBOL_UNUSED( p ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeWizard:addIntroPage() - LOCAL page, label, layout - - page := QWizardPage() - page:setTitle( "Introduction" ) - - label := QLabel( "This wizard will help you register your copy " + ; - "of Super Product Two." ) - label:setWordWrap( .t. ) - - layout := QVBoxLayout() - layout:addWidget( label ) - page:setLayout( layout ) - page:setTitle( "This is waizard" ) - page:setSubTitle( "So the ?" ) - - aadd( ::aPages, { PAGE_INTRO, page, layout, label } ) - - ::oUI:setPage( Len( ::aPages ), page ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD IdeWizard:addDescPage() - - RETURN Self - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/xbpaddons/dbstruct.ui b/harbour/contrib/hbide/xbpaddons/dbstruct.ui deleted file mode 100644 index 6cb2724185..0000000000 --- a/harbour/contrib/hbide/xbpaddons/dbstruct.ui +++ /dev/null @@ -1,332 +0,0 @@ - - - FormStruct - - - - 0 - 0 - 481 - 389 - - - - Structure - - - - - 8 - 8 - 463 - 53 - - - - - - - - - 12 - 6 - 63 - 16 - - - - Field Name: - - - - - - 10 - 22 - 175 - 20 - - - - - - - 198 - 4 - 73 - 16 - - - - Type: - - - - - - 198 - 20 - 101 - 22 - - - - - - - 310 - 22 - 69 - 20 - - - - - - - 312 - 6 - 46 - 14 - - - - Size: - - - - - - 396 - 6 - 46 - 14 - - - - Decimals: - - - - - - 394 - 22 - 57 - 20 - - - - - - - - 8 - 96 - 463 - 255 - - - - - - - 18 - 70 - 25 - 20 - - - - ... - - - - - - 58 - 70 - 25 - 20 - - - - ... - - - - - - 100 - 70 - 25 - 20 - - - - ... - - - - - - 186 - 70 - 25 - 20 - - - - ... - - - - - - 436 - 70 - 25 - 20 - - - - ... - - - - - - 250 - 70 - 25 - 20 - - - - ... - - - - - - 142 - 70 - 25 - 20 - - - - ... - - - - - - 322 - 70 - 25 - 20 - - - - ... - - - - - - 364 - 70 - 25 - 20 - - - - ... - - - - - - 10 - 362 - 91 - 16 - - - - Memo Block Size: - - - - - - 298 - 358 - 173 - 25 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 8 - 4 - 65 - 16 - - - - Record Size: - - - - - - 98 - 6 - 61 - 16 - - - - 1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 102 - 360 - 77 - 22 - - - - - - - 204 - 360 - 75 - 23 - - - - Copy Struct - - - - - - diff --git a/harbour/contrib/hbide/xbpaddons/dbu.prg b/harbour/contrib/hbide/xbpaddons/dbu.prg deleted file mode 100644 index abe6ca6b13..0000000000 --- a/harbour/contrib/hbide/xbpaddons/dbu.prg +++ /dev/null @@ -1,2898 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Source file for the HBIDE/DBU - * - * Copyright 2012 Pritpal Bedi - * http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour HbpDBU Class - * - * Pritpal Bedi - * 13Sep2012 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbclass.ch" -#include "common.ch" - -#include "xbp.ch" -#include "appevent.ch" - -/*----------------------------------------------------------------------*/ - -#define __dbu_dragEnterEvent__ 2011 -#define __dbu_dropEvent__ 2012 -#define __dbStruct_closeEvent__ 2013 -#define __fieldsTable_itemSelectionChanged__ 2014 -#define __buttonCopyStruct_clicked__ 2015 -#define __buttonOpen_clicked__ 2016 -#define __buttonShowForm_clicked__ 2017 -#define __buttonDbStruct_clicked__ 2018 -#define __buttonFind_clicked__ 2019 -#define __buttonGoto_clicked__ 2020 -#define __buttonClose_clicked__ 2021 -#define __buttonViewTabbed_clicked__ 2022 -#define __buttonViewOrganized_clicked__ 2023 -#define __buttonSaveLayout_clicked__ 2024 -#define __buttonViewCascaded_clicked__ 2025 -#define __buttonViewTiled_clicked__ 2026 -#define __buttonViewMaximized_clicked__ 2027 -#define __buttonViewStackedVert_clicked__ 2028 -#define __buttonViewStackedHorz_clicked__ 2029 -#define __buttonViewZoomedIn_clicked__ 2030 -#define __buttonViewZoomedOut_clicked__ 2031 -#define __buttonAppendRecord_clicked__ 2032 -#define __buttonDelRecord_clicked__ 2033 -#define __buttonLockRecord_clicked__ 2034 -#define __buttonGoTop_clicked__ 2035 -#define __buttonGoBottom_clicked__ 2036 -#define __buttonScrollToFirst_clicked__ 2037 -#define __buttonScrollToLast_clicked__ 2038 -#define __buttonSearchInTable_clicked__ 2039 -#define __buttonZaptable_clicked__ 2040 -#define __qPanelsButton_clicked__ 2041 -#define __buttonTables_clicked__ 2042 -#define __buttonIndex_clicked__ 2043 -#define __mdiArea_subWindowActivated__ 2044 -#define __browse_navigate__ 2045 -#define __browse_keyboard__ 2046 -#define __timer_timeout__ 2047 -#define __browser_contextMenu__ 2048 -#define __mdiSubWindow_windowStateChanged__ 2049 -#define __mdiSubWindow_buttonXclicked__ 2050 - -/*----------------------------------------------------------------------*/ - -#define BRW_TYPE_DBF 1 -#define BRW_TYPE_ARRAY 2 - -#define TBL_PANEL 1 -#define TBL_NAME 2 -#define TBL_ALIAS 3 -#define TBL_DRIVER 4 -#define TBL_INDEX 5 -#define TBL_RECORD 6 -#define TBL_CURSOR 7 -#define TBL_GEOMETRY 8 -#define TBL_ROWPOS 9 -#define TBL_COLPOS 10 -#define TBL_HZSCROLL 11 -#define TBL_CONXN 12 -#define TBL_NEXT 13 - -#define TBL_VRBLS 13 - -#define SUB_ID 1 -#define SUB_WINDOW 2 -#define SUB_GEOMETRY 3 -#define SUB_BROWSER 4 -#define SUB_NIL 5 - -#define PNL_PANELS 1 -#define PNL_TABLES 2 -#define PNL_MISC 3 -#define PNL_READY 4 - -/*----------------------------------------------------------------------*/ - -CLASS HbpDBU INHERIT XbpWindow - - CLASSDATA lRegistered INIT .F. - - METHOD init( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) - METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) - METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) - METHOD destroy() - METHOD execSlot( nSlot, p ) - METHOD handleEvent( nEvent, mp1, mp2 ) - METHOD setStyleSheet( ... ) VIRTUAL - - DATA sl_brush - METHOD background( oBrush ) SETGET - - DATA qStack - DATA qLayout - DATA qVSplitter - DATA qToolBar - DATA qToolBarL - DATA qStruct - DATA qRddCombo - DATA qConxnCombo - DATA qStatus - DATA qTimer - - DATA cWrkFolderLast INIT "" - DATA cDbStructDialogGeometry INIT "" - - DATA aStatusPnls INIT {} - DATA aPanels INIT {} - DATA aIndexAct INIT {} - DATA aRdds INIT { "DBFCDX", "DBFNTX", "DBFNSX" } - DATA aConxns INIT {} - - DATA oCurBrw - DATA oCurPanel - - DATA qPanelsMenu - DATA qIndexMenu - DATA qTablesMenu - DATA qPanelsButton - DATA qIndexButton - DATA qTablesButton - DATA aPanelsAct INIT {} - - DATA lStructOpen INIT .f. - DATA lDeletedOn INIT .t. - DATA qComboAction - DATA sp0,sp1,sp2,sp3 - - DATA nPrevMode INIT 0 - - METHOD open( aDbfs ) - METHOD buildToolbar() - METHOD execEvent( nEvent, p, p1 ) - METHOD addArray( aData, aAttr ) - METHOD getPanelNames() - METHOD getPanelsInfo() - METHOD addPanels() - METHOD addPanel( cPanel ) - METHOD setPanel( cPanel ) - METHOD isPanel( cPanel ) - METHOD loadTables() - METHOD buildPanelsButton() - METHOD buildIndexButton() - METHOD addPanelsMenu( cPanel ) - METHOD showStruct() - METHOD buildUiStruct() - METHOD populateUiStruct() - METHOD populateFieldData() - METHOD updateIndexMenu( oBrw ) - METHOD buildRddsCombo() - METHOD buildConxnCombo() - METHOD loadConxnCombo( cDriver ) - ACCESS currentDriver() INLINE ::qRddCombo:currentText() - ACCESS currentConxn() INLINE ::qConxnCombo:currentText() - METHOD buildStatusPanels() - METHOD dispStatusInfo() - METHOD buildLeftToolbar() - METHOD buildTablesButton() - METHOD showTablesTree() - METHOD fetchFldsList( cAlias ) - METHOD getBrowserByAlias( cAlias ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:init( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) - - IF ! ::lRegistered - ::lRegistered := .T. - QResource():registerResource_1( hbqtres_xbp() ) - ENDIF - - ::xbpWindow:init( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) - LOCAL oLayout - - ::xbpWindow:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) - - IF HB_ISOBJECT( ::qtObject ) - ::oWidget := QWidget( ::qtObject ) - oLayout := ::qtObject:layout() - SWITCH __objGetClsName( oLayout ) - CASE "QVBOXLAYOUT" - CASE "QHBOXLAYOUT" - oLayout:addWidget( ::oWidget ) - EXIT - CASE "QGRIDLAYOUT" - oLayout:addWidget( ::oWidget, 0, 0, 1, 1 ) - EXIT - ENDSWITCH - ELSE - ::oWidget := QWidget() - ENDIF - - ::oWidget:setAcceptDrops( .t. ) - ::oWidget:connect( QEvent_DragEnter, {|p| ::execEvent( __dbu_dragEnterEvent__, p ) } ) - ::oWidget:connect( QEvent_Drop , {|p| ::execEvent( __dbu_dropEvent__ , p ) } ) - ::oWidget:hide() - - /* Layout applied to dbu widget */ - ::qLayout := QGridLayout() - ::qLayout:setContentsMargins( 0,0,0,0 ) - ::qLayout:setSpacing( 0 ) - - ::oWidget:setLayout( ::qLayout ) - - /* Toolbar */ - ::buildToolbar() - ::qLayout:addWidget( ::qToolbar:oWidget, 0, 0, 1, 2 ) - - /* Toolbar left */ - ::buildLeftToolbar() - ::qLayout:addWidget( ::qToolbarL:oWidget, 1, 0, 1, 1 ) - - /* Stacked widget */ - ::qStack := QStackedWidget() - ::qLayout:addWidget( ::qStack , 1, 1, 1, 1 ) - - /* StatusBar */ - ::qStatus := QStatusBar() - ::qStatus:setSizeGripEnabled( .f. ) - ::qLayout:addWidget( ::qStatus , 2, 0, 1, 2 ) - - /* */ - ::buildStatusPanels() - /* Panels on the stacked widget */ - ::addPanels() - - /* Spread tables onto panels */ - ::loadTables() - - /* Switch to the default panel */ - ::setPanel( "Main" ) - - /* Timer to update ststus bar */ - ::qTimer := QTimer() - ::qTimer:setInterval( 2000 ) - ::qTimer:connect( "timeout()", {|| ::dispStatusInfo() } ) - ::qTimer:start() - - IF ::visible - ::show() - ENDIF - - IF HB_ISOBJECT( oParent ) - ::oParent:AddChild( SELF ) - ::postCreate() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:execSlot( nSlot, p ) - HB_SYMBOL_UNUSED( nSlot ) - HB_SYMBOL_UNUSED( p ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:handleEvent( nEvent, mp1, mp2 ) - HB_SYMBOL_UNUSED( nEvent ) - HB_SYMBOL_UNUSED( mp1 ) - HB_SYMBOL_UNUSED( mp2 ) - RETURN HBXBP_EVENT_UNHANDLED - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:destroy() - ::oWidget:setParent( QWidget() ) - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) - ::initialize( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:background( oBrush ) - LOCAL oOldBrush := ::sl_brush - LOCAL oPanel - - IF HB_ISOBJECT( oBrush ) - ::sl_brush := oBrush - FOR EACH oPanel IN ::aPanels - oPanel:setBackground( ::sl_brush ) - NEXT - ENDIF - - RETURN oOldBrush - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:getPanelNames() - LOCAL oPanel, aNames := {}, aAttr - - FOR EACH oPanel IN ::aPanels - aAttr := {} - - aadd( aAttr, oPanel:cPanel ) - aadd( aAttr, hb_ntos( oPanel:viewMode() ) ) - aadd( aAttr, hb_ntos( oPanel:nViewStyle ) ) - - aadd( aNames, hbide_array2String( aAttr, "," ) ) - NEXT - RETURN aNames - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:getPanelsInfo() - LOCAL oBrw, oPanel, aSub - LOCAL aInfo := {}, aAttr - - FOR EACH oPanel IN ::aPanels - FOR EACH aSub IN oPanel:subWindows() - aAttr := array( TBL_VRBLS ) - aAttr[ TBL_PANEL ] := oPanel:cPanel - - oBrw := aSub[ 4 ] - - IF oBrw:nType == BRW_TYPE_DBF - aAttr[ TBL_NAME ] := oBrw:cTable - aAttr[ TBL_ALIAS ] := oBrw:cAlias - aAttr[ TBL_DRIVER ] := oBrw:cDriver - aAttr[ TBL_INDEX ] := hb_ntos( oBrw:indexOrd() ) - aAttr[ TBL_RECORD ] := hb_ntos( oBrw:recNo() ) - aAttr[ TBL_CURSOR ] := hb_ntos( oBrw:nCursorType ) - IF !HB_ISOBJECT( aSub[ SUB_GEOMETRY ] ) - aSub[ SUB_GEOMETRY ] := aSub[ SUB_WINDOW ]:geometry() - ENDIF - aAttr[ TBL_GEOMETRY ] := hb_ntos( aSub[ SUB_GEOMETRY ]:x() ) + " " + hb_ntos( aSub[ SUB_GEOMETRY ]:y() ) + " " + ; - hb_ntos( aSub[ SUB_GEOMETRY ]:width() ) + " " + hb_ntos( aSub[ SUB_GEOMETRY ]:height() ) - aAttr[ TBL_ROWPOS ] := hb_ntos( oBrw:oBrw:rowPos() ) - aAttr[ TBL_COLPOS ] := hb_ntos( oBrw:oBrw:colPos() ) - aAttr[ TBL_HZSCROLL ] := "" - aAttr[ TBL_CONXN ] := oBrw:cConxnFull - aAttr[ TBL_NEXT ] := "" - - ELSEIF oBrw:nType == BRW_TYPE_ARRAY - // - ENDIF - - aadd( aInfo, hbide_array2String( aAttr, "," ) ) - NEXT - NEXT - - RETURN aInfo - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:fetchFldsList( cAlias ) - LOCAL aFlds := {}, cA, oBrw, a_, oPanel, aBrw - - cA := upper( cAlias ) - - SWITCH cA - CASE "FIELD" - FOR EACH oPanel IN ::aPanels - FOR EACH aBrw IN oPanel:aBrowsers - oBrw := aBrw[ SUB_BROWSER ] - FOR EACH a_ IN oBrw:aStruct - aadd( aFlds, pad( a_[ 1 ], 10 ) + " (" + padc( oBrw:cTableOnly, 12 ) + ")" + str( a_:__enumIndex(),3,0 ) + ", " + a_[ 2 ] + ", " + str( a_[ 3 ],3,0 ) + ", " + hb_ntos( a_[ 4 ] ) + " [f]" ) - NEXT - NEXT - NEXT - EXIT - OTHERWISE - IF ! empty( oBrw := ::getBrowserByAlias( cA ) ) - FOR EACH a_ IN oBrw:aStruct - aadd( aFlds, pad( a_[ 1 ], 10 ) + " ( " + str( a_:__enumIndex(),3,0 ) + ", " + a_[ 2 ] + ", " + str( a_[ 3 ],3,0 ) + ", " + hb_ntos( a_[ 4 ] ) + " )" + " [f]" ) - NEXT - ENDIF - EXIT - ENDSWITCH - - RETURN aFlds - -/*------------------------------------------------------------------------*/ - -METHOD HbpDBU:getBrowserByAlias( cAlias ) - LOCAL oPanel, aBrw - - FOR EACH oPanel IN ::aPanels - FOR EACH aBrw IN oPanel:aBrowsers - IF aBrw[ SUB_BROWSER ]:cAlias == cAlias - RETURN aBrw[ SUB_BROWSER ] - ENDIF - NEXT - NEXT - RETURN NIL - -/*------------------------------------------------------------------------*/ - -METHOD HbpDBU:dispStatusInfo() - - ::aStatusPnls[ PNL_PANELS ]:setText( "Panels: " + hb_ntos( Len( ::aPanels ) ) + ":" + ::oCurPanel:cPanel ) - ::aStatusPnls[ PNL_TABLES ]:setText( "Tables: " + hb_ntos( Len( ::oCurPanel:aBrowsers ) ) ) - - ::aStatusPnls[ PNL_MISC ]:setText( "M:" ) - ::aStatusPnls[ PNL_READY ]:setText( "Ready" ) - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD HbpDBU:buildStatusPanels() - LOCAL qLabel - - qLabel := QLabel(); qLabel:setMinimumWidth( 40 ) - ::qStatus:addPermanentWidget( qLabel, 0 ) - aadd( ::aStatusPnls, qLabel ) - - qLabel := QLabel(); qLabel:setMinimumWidth( 40 ) - ::qStatus:addPermanentWidget( qLabel, 0 ) - aadd( ::aStatusPnls, qLabel ) - - qLabel := QLabel(); qLabel:setMinimumWidth( 40 ) - ::qStatus:addPermanentWidget( qLabel, 0 ) - aadd( ::aStatusPnls, qLabel ) - - qLabel := QLabel(); qLabel:setMinimumWidth( 40 ) - ::qStatus:addPermanentWidget( qLabel, 1 ) - aadd( ::aStatusPnls, qLabel ) - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD HbpDBU:addPanels() - //LOCAL cPanel, aPnl - - ::addPanel( "Main", .T. ) /* The default one */ -#if 0 /* Later */ - FOR EACH cPanel IN ::oINI:aDbuPanelNames - aPnl := hb_aTokens( cPanel, "," ) - aSize( aPnl, 2 ) - IF empty( aPnl[ 2 ] ) - aPnl[ 2 ] := "NO" - ENDIF - IF !( aPnl[ 1 ] == "Main" ) - ::addPanel( aPnl[ 1 ], aPnl[ 2 ] == "YES" ) - ENDIF - NEXT -#endif - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:addPanel( cPanel ) - LOCAL qPanel - - qPanel := HbpBrowsePanel():new( cPanel, self ) - ::qStack:addWidget( qPanel:qWidget ) - aadd( ::aPanels, qPanel ) - ::addPanelsMenu( cPanel ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:addPanelsMenu( cPanel ) - LOCAL qAct -IF HB_ISOBJECT( ::qPanelsMenu ) - qAct := ::qPanelsMenu:addAction( cPanel ) - qAct:setIcon( QIcon( Hbp_Image( "panel_7" ) ) ) - qAct:connect( "triggered(bool)", {|| ::setPanel( cPanel ) } ) - aadd( ::aPanelsAct, qAct ) -ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:isPanel( cPanel ) - RETURN ascan( ::aPanels, {|o| o:qWidget:objectName() == cPanel } ) > 0 - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:setPanel( cPanel ) - LOCAL n - - IF ( n := ascan( ::aPanels, {|o| o:qWidget:objectName() == cPanel } ) ) > 0 - ::qStack:setCurrentWidget( ::aPanels[ n ]:qWidget ) - ::oCurPanel := ::aPanels[ n ] - ::oCurPanel:prepare() - ::oCurPanel:activateBrowser() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:execEvent( nEvent, p, p1 ) - LOCAL cTable, cPath, cPanel, qMime, qList, i, cExt, qUrl, aStruct, cTmp - - HB_SYMBOL_UNUSED( p ) - HB_SYMBOL_UNUSED( p1 ) - - SWITCH nEvent - CASE __dbu_dragEnterEvent__ - p:acceptProposedAction() - EXIT - - CASE __dbu_dropEvent__ - qMime := p:mimeData() - IF qMime:hasUrls() - qList := qMime:urls() - FOR i := 0 TO qList:size() - 1 - qUrl := qList:at( i ) - hb_fNameSplit( qUrl:toLocalFile(), @cPath, @cTable, @cExt ) - IF lower( cExt ) == ".dbf" - ::oCurPanel:addBrowser( { NIL, hbide_pathToOSPath( cPath + cTable + cExt ), NIL, ; - iif( ! ( ::qRddCombo:currentText() $ "DBFCDX.DBFNTX,DBFNSX,ADS" ), "DBFCDX", ::qRddCombo:currentText() ) } ) - ENDIF - NEXT - ENDIF - EXIT - - CASE __buttonShowForm_clicked__ - IF !empty( ::oCurBrw ) - IF ::oCurBrw:qScrollArea:isHidden() - ::oCurBrw:qScrollArea:show() - ::qToolBar:setItemChecked( "Toggle", .t. ) - ELSE - ::oCurBrw:qScrollArea:hide() - ::qToolBar:setItemChecked( "Toggle", .f. ) - ENDIF - ENDIF - EXIT - - CASE __buttonClose_clicked__ - IF !empty( ::oCurBrw ) - ::oCurPanel:destroyBrw( ::oCurBrw ) - ENDIF - EXIT - - CASE __buttonOpen_clicked__ - IF .T. //::currentDriver() $ "DBFCDX,DBFNTX,DBFNSX,ADS" - IF !empty( cTable := hbide_fetchAFile( SetAppWindow(), "Select a Table", { { "Database File", "*.dbf" } }, ::cWrkFolderLast ) ) - hb_fNameSplit( cTable, @cPath ) - ::cWrkFolderLast := cPath - ::oCurPanel:addBrowser( { NIL, cTable } ) - ENDIF - ELSE - #if 0 - IF ! empty( cTable := hbide_execScriptFunction( "tableSelect", ::currentDriver(), ::currentConxn() ) ) - ::oCurPanel:addBrowser( { NIL, cTable } ) - ENDIF - #endif - ENDIF - EXIT - - CASE __qPanelsButton_clicked__ - cPanel := hbide_fetchAString( ::qToolbar:oWidget, "New...", "Name the Panel", "New Panel" ) - IF !( cPanel == "New..." ) .AND. !( cPanel == "Main" ) - IF ::isPanel( cPanel ) - MsgBox( "Panel: " + cPanel + ", already exists" ) - ELSE - ::addPanel( cPanel ) - ::setPanel( cPanel ) - ENDIF - ENDIF - EXIT - - /* Left-toolbar actions */ - CASE __buttonViewTabbed_clicked__ - ::oCurPanel:setViewMode( iif( ::oCurPanel:viewMode() == QMdiArea_TabbedView, QMdiArea_SubWindowView, QMdiArea_TabbedView ) ) - EXIT - CASE __buttonViewOrganized_clicked__ - ::oCurPanel:setViewStyle( HBPMDI_STYLE_ORGANIZED ) - EXIT - CASE __buttonSaveLayout_clicked__ - ::oCurPanel:saveGeometry() - EXIT - CASE __buttonViewCascaded_clicked__ - ::oCurPanel:setViewStyle( HBPMDI_STYLE_CASCADED ) - EXIT - CASE __buttonViewTiled_clicked__ - ::oCurPanel:setViewStyle( HBPMDI_STYLE_TILED ) - EXIT - CASE __buttonViewMaximized_clicked__ - ::oCurPanel:setViewStyle( HBPMDI_STYLE_MAXIMIZED ) - EXIT - CASE __buttonViewStackedVert_clicked__ - ::oCurPanel:setViewStyle( HBPMDI_STYLE_TILEDVERT ) - EXIT - CASE __buttonViewStackedHorz_clicked__ - ::oCurPanel:setViewStyle( HBPMDI_STYLE_TILEDHORZ ) - EXIT - CASE __buttonViewZoomedIn_clicked__ - ::oCurPanel:tilesZoom( +1 ) - EXIT - CASE __buttonViewZoomedOut_clicked__ - ::oCurPanel:tilesZoom( -1 ) - EXIT - - /* Left-toolbar Table Manipulation Actions */ - CASE __buttonDbStruct_clicked__ - IF !empty( ::oCurBrw ) - ::showStruct() - ENDIF - EXIT - - CASE __buttonTables_clicked__ - ::showTablesTree() - EXIT - - CASE __buttonIndex_clicked__ - EXIT - - CASE __dbStruct_closeEvent__ - ::cDbStructDialogGeometry := hbide_posAndSize( ::qStruct:oWidget ) - ::qStruct:close() - ::lStructOpen := .f. - EXIT - - CASE __fieldsTable_itemSelectionChanged__ - ::populateFieldData() - EXIT - - CASE __buttonFind_clicked__ - IF !empty( ::oCurBrw ) - ::oCurBrw:searchAsk() - ENDIF - EXIT - - CASE __buttonGoto_clicked__ - IF !empty( ::oCurBrw ) - ::oCurBrw:gotoAsk() - ENDIF - EXIT - - CASE __buttonAppendRecord_clicked__ - IF !empty( ::oCurBrw ) - ::oCurBrw:append() - ENDIF - EXIT - CASE __buttonDelRecord_clicked__ - IF !empty( ::oCurBrw ) - ::oCurBrw:delete( .t. ) - ENDIF - EXIT - CASE __buttonLockRecord_clicked__ - IF !empty( ::oCurBrw ) - ::oCurBrw:lock() - ENDIF - EXIT - CASE __buttonGoTop_clicked__ - IF !empty( ::oCurBrw ) - ::oCurBrw:goTop() - ENDIF - EXIT - CASE __buttonGoBottom_clicked__ - IF !empty( ::oCurBrw ) - ::oCurBrw:goBottom() - ENDIF - EXIT - CASE __buttonScrollToFirst_clicked__ - IF !empty( ::oCurBrw ) - ::oCurBrw:toColumn( 1 ) - ENDIF - EXIT - CASE __buttonScrollToLast_clicked__ - IF !empty( ::oCurBrw ) - ::oCurBrw:toColumn( Len( ::oCurBrw:aStruct ) ) - ENDIF - EXIT - CASE __buttonSearchInTable_clicked__ - IF !empty( ::oCurBrw ) - ::oCurBrw:searchAsk() - ENDIF - EXIT - CASE __buttonZaptable_clicked__ - EXIT - CASE __buttonCopyStruct_clicked__ - IF !empty( aStruct := ::oCurBrw:dbStruct() ) - i := 0 - aeval( aStruct, {|e_| iif( Len( e_[ 1 ] ) > i, i := len( e_[ 1 ] ), NIL ) } ) - i += 2 - - cTmp := " LOCAL aStruct := {" - aeval( aStruct, {|e_,n| cTmp += iif( n == 1, ' { ', space( 20 ) + ' { ' ) + ; - pad( '"' + e_[ 1 ] + '"', i ) + ', "' + e_[ 2 ] + '", ' + ; - str( e_[ 3 ], 4, 0 ) + ', ' + ; - str( e_[ 4 ], 2, 0 ) + ' }' + ; - iif( Len( aStruct ) == n, " }", ",;" ) + hb_eol() } ) - - QClipboard():setText( cTmp ) - ENDIF - EXIT - /* End - left-toolbar actions */ - - ENDSWITCH - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:showTablesTree() - LOCAL oUI, qTree, qParent, oPanel, qItm, aBrowser, q, aFld, qFont, nMax, nSz, oBrw - LOCAL a_:={} - - oUI := hbqtui_xbpTables( ::oCurPanel:qWidget ) - - qFont := QFont( "Courier New", 8 ) - qTree := oUI:treeTables - qTree:setFont( qFont ) - - FOR EACH oPanel IN ::aPanels - qParent := QTreeWidgetItem() - qParent:setText( 0, oPanel:cPanel ) - qTree:addTopLevelItem( qParent ) - aadd( a_, qParent ) - FOR EACH aBrowser IN oPanel:aBrowsers - oBrw := aBrowser[ SUB_BROWSER ] - - qItm := QTreeWidgetItem() - qItm:setText( 0, oBrw:cTable ) - - qItm:setToolTip( 0, oBrw:cTableOnly + " [ " + oBrw:cDriver + " " + ; - hb_ntos( oBrw:indexOrd() ) + "/" + hb_ntos( oBrw:numIndexes() ) + iif( oBrw:indexOrd() > 0, ":" + oBrw:ordName(), "" ) + ; - " " + hb_ntos( oBrw:recno() ) + "/" + hb_ntos( oBrw:lastRec() ) + " ] " ) - - qParent:addChild( qItm ) - nSz := 0 ; aeval( aBrowser[ SUB_BROWSER ]:aStruct, {|e_| nSz += e_[ 3 ] } ) - nMax := 12 - FOR EACH aFld IN aBrowser[ SUB_BROWSER ]:aStruct - q := QTreeWidgetItem() - q:setText( 0, pad( aFld[ 1 ], nMax ) + aFld[ 2 ] + str( aFld[ 3 ], 4, 0 ) + str( aFld[ 4 ], 2, 0 ) ) - q:setToolTip( 0, "" ) - qItm:addChild( q ) - NEXT - q := QTreeWidgetItem() - q:setText( 0, pad( "T", nMax - 2 ) + str( nSz, 7, 0 ) ) - qItm:addChild( q ) - NEXT - qParent:setExpanded( .t. ) - NEXT -// ::oIde:setPosAndSizeByIniEx( oUI:oWidget, ::oINI:cTablesDialogGeometry ) - oUI:buttonOk:connect( "clicked()", {|| oUI:done( 1 ) } ) - oUI:exec() - oUI:buttonOk:disconnect( "clicked()" ) -// ::oIde:oINI:cTablesDialogGeometry := hbide_posAndSize( oUI:oWidget ) - oUI:destroy() - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD HbpDBU:showStruct() - - IF empty( ::qStruct ) - ::buildUiStruct() - ENDIF - - IF ! ::lStructOpen - ::lStructOpen := .t. - ::populateUiStruct() -// ::oIde:setPosAndSizeByIniEx( ::qStruct:oWidget, ::oINI:cDbStructDialogGeometry ) - ::qStruct:show() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:populateFieldData() - LOCAL nRow, qItm - - IF ( nRow := ::qStruct:tableFields:currentRow() ) >= 0 - qItm := ::qStruct:tableFields:item( nRow, 1 ) - ::qStruct:editName:setText( qItm:text() ) - qItm := ::qStruct:tableFields:item( nRow, 2 ) - ::qStruct:comboType:setCurrentIndex( ascan( { "Character", "Numeric", "Date", "Logical" }, qItm:text() ) - 1 ) - qItm := ::qStruct:tableFields:item( nRow, 3 ) - ::qStruct:editSize:setText( qItm:text() ) - qItm := ::qStruct:tableFields:item( nRow, 4 ) - ::qStruct:editDec:setText( qItm:text() ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:populateUiStruct() - LOCAL qItm, fld_, n - LOCAL oTbl := ::qStruct:tableFields - LOCAL aStruct := ::oCurBrw:dbStruct() - - ::qStruct:tableFields:clearContents() - - oTbl:setRowCount( Len( aStruct ) ) - - n := 0 - FOR EACH fld_ IN aStruct - qItm := QTableWidgetItem() - qItm:setText( hb_ntos( n+1 ) ) - oTbl:setItem( n, 0, qItm ) - - qItm := QTableWidgetItem() - qItm:setText( fld_[ 1 ] ) - oTbl:setItem( n, 1, qItm ) - - qItm := QTableWidgetItem() - qItm:setText( hbide_fldType2Desc( fld_[ 2 ] ) ) - oTbl:setItem( n, 2, qItm ) - - qItm := QTableWidgetItem() - qItm:setText( hb_ntos( fld_[ 3 ] ) ) - oTbl:setItem( n, 3, qItm ) - - qItm := QTableWidgetItem() - qItm:setText( hb_ntos( fld_[ 4 ] ) ) - oTbl:setItem( n, 4, qItm ) - - oTbl:setRowHeight( n, 20 ) - n++ - NEXT - - n := 0 - aeval( aStruct, {|e_| n += e_[ 3 ] } ) - - ::qStruct:labelRecSize:setText( hb_ntos( n + 1 ) ) - - oTbl:setCurrentCell( 0,0 ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:buildUiStruct() - LOCAL oTbl, n, qItm - LOCAL hdr_:= { { "", 50 }, { "Field Name",200 }, { "Type", 100 }, { "Len", 50 }, { "Dec", 70 } } - - ::qStruct := hbqtui_xbpDbStruct( ::oWidget ) - - ::qStruct:setWindowFlags( Qt_Dialog ) - ::qStruct:setMaximumHeight( ::qStruct:height() ) - ::qStruct:setMinimumHeight( ::qStruct:height() ) - ::qStruct:setMinimumWidth( ::qStruct:width() ) - ::qStruct:setMaximumWidth( ::qStruct:width() ) - - ::qStruct:connect( QEvent_Close, {|| ::execEvent( __dbStruct_closeEvent__ ) } ) - - oTbl := ::qStruct:tableFields - oTbl:verticalHeader():hide() - oTbl:horizontalHeader():setStretchLastSection( .t. ) - oTbl:setAlternatingRowColors( .t. ) - oTbl:setColumnCount( Len( hdr_ ) ) - oTbl:setShowGrid( .t. ) - oTbl:setSelectionMode( QAbstractItemView_SingleSelection ) - oTbl:setSelectionBehavior( QAbstractItemView_SelectRows ) - FOR n := 1 TO Len( hdr_ ) - qItm := QTableWidgetItem() - qItm:setText( hdr_[ n,1 ] ) - oTbl:setHorizontalHeaderItem( n-1, qItm ) - oTbl:setColumnWidth( n-1, hdr_[ n,2 ] ) - NEXT - - ::qStruct:comboType:addItem( "Character" ) - ::qStruct:comboType:addItem( "Numeric" ) - ::qStruct:comboType:addItem( "Date" ) - ::qStruct:comboType:addItem( "Logical" ) - - oTbl:connect( "itemSelectionChanged()", {|| ::execEvent( __fieldsTable_itemSelectionChanged__ ) } ) - - ::qStruct:buttonCopyStruct:connect( "clicked()", {|| ::execEvent( __buttonCopyStruct_clicked__ ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:open( aDbfs ) - LOCAL aInfo, cTable - LOCAL nX := 0, nY := 0 - - FOR EACH cTable IN aDbfs - nX += 20; nY += 20 - // Main,C:\harbour\tests\test.dbf,TEST,DBFCDX,0,500,2,0 0 300 504,21,1,,,, - aInfo := array( TBL_VRBLS ) - aInfo[ TBL_PANEL ] := "Main" - aInfo[ TBL_NAME ] := cTable - aInfo[ TBL_GEOMETRY ] := hb_ntos( nX ) + " " + hb_ntos( nY ) + " 500 300" - - ::oCurPanel:addBrowser( aInfo ) - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:loadTables() - //LOCAL cInfo, aInfo, oCurPanel - LOCAL oCurPanel - - oCurPanel := ::oCurPanel -#if 0 - FOR EACH cInfo IN ::oINI:aDbuPanelsInfo - aInfo := hb_aTokens( cInfo, "," ) - IF ::isPanel( aInfo[ 1 ] ) - ::setPanel( aInfo[ 1 ] ) - ::oCurPanel:addBrowser( aInfo ) - ENDIF - NEXT -#endif - IF HB_ISOBJECT( oCurPanel ) - ::qStack:setCurrentWidget( oCurPanel ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:addArray( aData, aAttr ) - - HB_SYMBOL_UNUSED( aData ) - HB_SYMBOL_UNUSED( aAttr ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:buildToolbar() - LOCAL nW := 25 - LOCAL qTBar - - ::sp0 := QLabel(); ::sp0:setMinimumWidth( nW ) - ::sp1 := QLabel(); ::sp1:setMinimumWidth( nW ) - ::sp2 := QLabel(); ::sp2:setMinimumWidth( nW ) - ::sp3 := QLabel(); ::sp3:setMinimumWidth( nW ) - - qTBar := XbpToolbar():new() - qTBar:imageWidth := 16 - qTBar:imageHeight := 16 - qTBar:create() - - qTBar:buttonClick := {|oButton| iif( HB_ISBLOCK( oButton:key ), Eval( oButton:key ), NIL ) } - - ::qToolbar := qTBar - - ::buildPanelsButton() - qTBar:addItem( ::sp0 ) - ::buildRddsCombo() - ::buildConxnCombo() - qTBar:addItem( { "Open" , "Open a Table" , QIcon( Hbp_Image( "open3" ) ), {|| ::execEvent( __buttonOpen_clicked__ ) }, .F. } ) - qTBar:addItem( ::sp1 ) - qTBar:addItem( { "Toggle" , "Show/Hide Form View", QIcon( Hbp_Image( "form" ) ), {|| ::execEvent( __buttonShowForm_clicked__ ) }, .T. } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - qTBar:addItem( { "Structure", "Table Structure" , QIcon( Hbp_Image( "dbstruct" ) ), {|| ::execEvent( __buttonDbStruct_clicked__ ) }, .F. } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - ::buildIndexButton() - qTBar:addItem( { "Search" , "Search in Table" , QIcon( Hbp_Image( "find" ) ), {|| ::execEvent( __buttonFind_clicked__ ) }, .F. } ) - qTBar:addItem( { "Goto" , "Goto Record" , QIcon( Hbp_Image( "gotoline3" ) ), {|| ::execEvent( __buttonGoto_clicked__ ) }, .F. } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - qTBar:addItem( { "Close" , "Close Current Table", QIcon( Hbp_Image( "dc_delete" ) ), {|| ::execEvent( __buttonClose_clicked__ ) }, .F. } ) - qTBar:addItem( ::sp2 ) - ::buildTablesButton() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:buildLeftToolbar() - LOCAL qTBar - - qTBar := XbpToolbar():new() - qTBar:orientation := Qt_Vertical - qTBar:imageWidth := 16 - qTBar:imageHeight := 16 - qTBar:create() - qTBar:buttonClick := {|oButton| iif( HB_ISBLOCK( oButton:key ), Eval( oButton:key ), NIL ) } - - ::qToolbarL := qTBar - - qTBar:addItem( { "view_tabbed" , "Toggle Tabbed View" , QIcon( Hbp_Image( "view_tabbed" ) ), {|| ::execEvent( __buttonViewTabbed_clicked__ ) }, .f. } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - qTBar:addItem( { "view_organized" , "View as Arranged" , QIcon( Hbp_Image( "view_organized" ) ), {|| ::execEvent( __buttonViewOrganized_clicked__ ) }, .f. } ) - qTBar:addItem( { "save3" , "Save Layout" , QIcon( Hbp_Image( "save3" ) ), {|| ::execEvent( __buttonSaveLayout_clicked__ ) }, .f. } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - qTBar:addItem( { "view_cascaded" , "View as Cascaded" , QIcon( Hbp_Image( "view_cascaded" ) ), {|| ::execEvent( __buttonViewCascaded_clicked__ ) }, .f. } ) - qTBar:addItem( { "view_tiled" , "View as Tiled" , QIcon( Hbp_Image( "view_tiled" ) ), {|| ::execEvent( __buttonViewTiled_clicked__ ) }, .f. } ) - qTBar:addItem( { "fullscreen" , "View Maximized" , QIcon( Hbp_Image( "fullscreen" ) ), {|| ::execEvent( __buttonViewMaximized_clicked__ ) }, .f. } ) - qTBar:addItem( { "view_vertstacked" , "View Vertically Tiled" , QIcon( Hbp_Image( "view_vertstacked" ) ), {|| ::execEvent( __buttonViewStackedVert_clicked__ ) }, .f. } ) - qTBar:addItem( { "view_horzstacked" , "View Horizontally Tiled" , QIcon( Hbp_Image( "view_horzstacked" ) ), {|| ::execEvent( __buttonViewStackedHorz_clicked__ ) }, .f. } ) - qTBar:addItem( { "view_zoomin" , "View Zoom In" , QIcon( Hbp_Image( "view_zoomin" ) ), {|| ::execEvent( __buttonViewZoomedIn_clicked__ ) }, .f. } ) - qTBar:addItem( { "view_zoomout" , "View Zoom Out" , QIcon( Hbp_Image( "view_zoomout" ) ), {|| ::execEvent( __buttonViewZoomedOut_clicked__ ) }, .f. } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - qTBar:addItem( { "database_add" , "Append Record" , QIcon( Hbp_Image( "database_add" ) ), {|| ::execEvent( __buttonAppendRecord_clicked__ ) }, .f. } ) - qTBar:addItem( { "database_remove" , "Delete Record" , QIcon( Hbp_Image( "database_remove" ) ), {|| ::execEvent( __buttonDelRecord_clicked__ ) }, .f. } ) - qTBar:addItem( { "database_lock" , "Lock/Unlock Record" , QIcon( Hbp_Image( "database_lock" ) ), {|| ::execEvent( __buttonLockRecord_clicked__ ) }, .f. } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - qTBar:addItem( { "database_up" , "Goto Top" , QIcon( Hbp_Image( "database_up" ) ), {|| ::execEvent( __buttonGoTop_clicked__ ) }, .f. } ) - qTBar:addItem( { "database_down" , "Goto Bottom" , QIcon( Hbp_Image( "database_down" ) ), {|| ::execEvent( __buttonGoBottom_clicked__ ) }, .f. } ) - qTBar:addItem( { "database_previous", "Scroll to First Column" , QIcon( Hbp_Image( "database_previous" ) ), {|| ::execEvent( __buttonScrollToFirst_clicked__ ) }, .f. } ) - qTBar:addItem( { "database_next" , "Scroll to Last Column" , QIcon( Hbp_Image( "database_next" ) ), {|| ::execEvent( __buttonScrollToLast_clicked__ ) }, .f. } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - qTBar:addItem( { "database_search" , "Search in Table" , QIcon( Hbp_Image( "database_search" ) ), {|| ::execEvent( __buttonSearchInTable_clicked__ ) }, .f. } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - qTBar:addItem( { "database_process" , "Zap Table" , QIcon( Hbp_Image( "database_process" ) ), {|| ::execEvent( __buttonZaptable_clicked__ ) }, .f. } ) - - RETURN NIL - -/*------------------------------------------------------------------------*/ - -METHOD HbpDBU:buildPanelsButton() - - ::qPanelsMenu := QMenu() - - ::qPanelsButton := QToolButton() - ::qPanelsButton:setTooltip( "HbpDBU Panels" ) - ::qPanelsButton:setIcon( QIcon( Hbp_Image( "panel_8" ) ) ) - ::qPanelsButton:setPopupMode( QToolButton_MenuButtonPopup ) - ::qPanelsButton:setMenu( ::qPanelsMenu ) - - ::qPanelsButton:connect( "clicked()", {|| ::execEvent( __qPanelsButton_clicked__ ) } ) - - ::qToolbar:addItem( ::qPanelsButton ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:buildConxnCombo() - - ::qConxnCombo := QComboBox() - ::qConxnCombo:setToolTip( "Connection to open next table" ) - ::qToolBar:addItem( ::qConxnCombo ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:buildRddsCombo() - LOCAL cRdd - #if 0 - IF !empty( aRdds := hbide_execScriptFunction( "rdds" ) ) - aeval( aRdds, {|e| aadd( ::aRdds, e ) } ) - ENDIF - #endif - ::qRddCombo := QComboBox() - ::qRddCombo:setToolTip( "Rdd to open next table" ) - FOR EACH cRdd IN ::aRdds - cRdd := alltrim( cRdd ) - ::qRddCombo:addItem( cRdd ) - NEXT - ::qRddCombo:connect( "currentIndexChanged(QString)", {|p| ::loadConxnCombo( p ) } ) - ::qToolBar:addItem( ::qRddCombo ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:buildTablesButton() - - ::qTablesMenu := QMenu() - - ::qTablesButton := QToolButton() - ::qTablesButton:setTooltip( "Tables" ) - ::qTablesButton:setIcon( QIcon( Hbp_Image( "table" ) ) ) - ::qTablesButton:setPopupMode( QToolButton_MenuButtonPopup ) - ::qTablesButton:setMenu( ::qTablesMenu ) - - ::qTablesButton:connect( "clicked()", {|| ::execEvent( __buttonTables_clicked__ ) } ) - - ::qToolbar:addItem( ::qTablesButton ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:buildIndexButton() - - ::qIndexMenu := QMenu() - - ::qIndexButton := QToolButton() - ::qIndexButton:setTooltip( "Indexes" ) - ::qIndexButton:setIcon( QIcon( Hbp_Image( "sort" ) ) ) - ::qIndexButton:setPopupMode( QToolButton_MenuButtonPopup ) - ::qIndexButton:setMenu( ::qIndexMenu ) - - ::qIndexButton:connect( "clicked()", {|| ::execEvent( __buttonIndex_clicked__ ) } ) - - ::qToolbar:addItem( ::qIndexButton ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:loadConxnCombo( cDriver ) - LOCAL cConxn, a_ - - DEFAULT cDriver TO ::currentDriver() - - ::aConxns := {} - #if 0 - IF !empty( aConxns := hbide_execScriptFunction( "connections", cDriver ) ) - aeval( aConxns, {|e| aadd( ::aConxns, e ) } ) - ENDIF - #endif - ::qConxnCombo:clear() - FOR EACH cConxn IN ::aConxns - a_:= hb_aTokens( cConxn, ";" ) - ::qConxnCombo:addItem( alltrim( a_[ 1 ] ) ) - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_getMenuBlock( oPanel, oBrw, cIndex ) - RETURN {|| oPanel:setIndex( oBrw, cIndex ) } - -/*----------------------------------------------------------------------*/ - -METHOD HbpDBU:updateIndexMenu( oBrw ) - LOCAL qAct, aIndex, cIndex - - FOR EACH qAct IN ::aIndexAct - qAct:disconnect( "triggered(bool)" ) - qAct := NIL - NEXT - ::aIndexAct := {} - - ::qIndexMenu:clear() - - aIndex := ::oCurPanel:getIndexInfo( oBrw ) - FOR EACH cIndex IN aIndex - qAct := ::qIndexMenu:addAction( cIndex ) - qAct:connect( "triggered(bool)", hbide_getMenuBlock( ::oCurPanel, oBrw, cIndex ) ) - aadd( ::aIndexAct, qAct ) - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ -// -// Class HbpBrowsePanel -// -/*----------------------------------------------------------------------*/ - -CLASS HbpBrowsePanel - - DATA oManager - - DATA qWidget - DATA qMenuWindows - DATA qStruct - - DATA cPanel INIT "" - DATA nViewStyle INIT 0 /* 0=asWindows 1=tabbed */ - DATA lLayoutLocked INIT .f. - - DATA aBrowsers INIT {} - ACCESS subWindows() INLINE ::aBrowsers - - METHOD new( cPanel, oManager ) - METHOD destroy() - METHOD destroyBrw( oBrw ) - METHOD execEvent( nEvent, p ) - METHOD setCurrentBrowser( oBrw ) - METHOD getIndexInfo( oBrw ) - METHOD setIndex( oBrw, cIndex ) - - METHOD addBrowser( aInfo ) - METHOD prepare() - METHOD saveGeometry() - METHOD restGeometry() - METHOD activateBrowser() - METHOD setViewStyle( nStyle ) - METHOD tileVertically() - METHOD tileHorizontally() - METHOD tilesZoom( nMode ) - - ERROR HANDLER OnError( ... ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowsePanel:new( cPanel, oManager ) - - ::cPanel := cPanel - ::oManager := oManager - - ::qWidget := QMdiArea() - ::qWidget:setObjectName( ::cPanel ) - ::qWidget:setDocumentMode( .t. ) - ::qWidget:setOption( QMdiArea_DontMaximizeSubWindowOnActivation, .t. ) - ::qWidget:setVerticalScrollBarPolicy( Qt_ScrollBarAsNeeded ) - ::qWidget:setHorizontalScrollBarPolicy( Qt_ScrollBarAsNeeded ) - ::qWidget:setDocumentMode( .t. ) - ::qWidget:setTabShape( QTabWidget_Triangular ) - ::qWidget:setViewMode( QMdiArea_TabbedView ) - - ::qWidget:connect( "subWindowActivated(QMdiSubWindow*)", {|p| ::execEvent( __mdiArea_subWindowActivated__, p ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowsePanel:destroy() - LOCAL aBrw, oSub - - ::qWidget:disconnect( "subWindowActivated(QMdiSubWindow*)" ) - - FOR EACH aBrw IN ::aBrowsers - oSub := aBrw[ SUB_WINDOW ] - ::qWidget:removeSubWindow( oSub ) - aBrw[ SUB_BROWSER ]:destroy() - oSub := NIL - aBrw := NIL - NEXT - ::aBrowsers := NIL - - ::qMenuWindows := NIL - ::qStruct := NIL - ::qWidget := NIL - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowsePanel:onError( ... ) - LOCAL cMsg - - cMsg := __GetMessage() - IF SubStr( cMsg, 1, 1 ) == "_" - cMsg := SubStr( cMsg, 2 ) - ENDIF - - RETURN ::qWidget:&cMsg( ... ) - -/*------------------------------------------------------------------------*/ - -METHOD HbpBrowsePanel:setViewStyle( nStyle ) - LOCAL qObj, a_ - LOCAL nOldStyle := ::nViewStyle - - IF HB_ISNUMERIC( nStyle ) - IF nStyle != ::nViewStyle - IF ::nViewStyle == HBPMDI_STYLE_ORGANIZED - ::saveGeometry() - ENDIF - - IF ::nViewStyle == HBPMDI_STYLE_MAXIMIZED - qObj := ::qWidget:activeSubWindow() - FOR EACH a_ IN ::aBrowsers - a_[ 2 ]:setWindowState( Qt_WindowNoState ) - NEXT - ::qWidget:setActiveSubWindow( qObj ) - ENDIF - - SWITCH nStyle - CASE HBPMDI_STYLE_ORGANIZED - ::restGeometry() - EXIT - CASE HBPMDI_STYLE_CASCADED - ::qWidget:cascadeSubWindows() - EXIT - CASE HBPMDI_STYLE_TILED - ::qWidget:tileSubWindows() - EXIT - CASE HBPMDI_STYLE_MAXIMIZED - qObj := ::activeSubWindow() - FOR EACH a_ IN ::aBrowsers - a_[ 2 ]:setWindowState( Qt_WindowMaximized ) - NEXT - ::setActiveSubWindow( qObj ) - EXIT - CASE HBPMDI_STYLE_TILEDVERT - ::tileVertically() - EXIT - CASE HBPMDI_STYLE_TILEDHORZ - ::tileHorizontally() - EXIT - ENDSWITCH - - ::nViewStyle := nStyle - ::prepare() - ENDIF - ENDIF - RETURN nOldStyle - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowsePanel:tileVertically() - LOCAL qObj, qVPort, nH, nT, nW, a_ - - qObj := ::activeSubWindow() - qVPort := ::viewport() - nH := qVPort:height() / Len( ::aBrowsers ) - nW := qVPort:width() - nT := 0 - FOR EACH a_ IN ::aBrowsers - a_[ 2 ]:setGeometry( QRect( 0, nT, nW, nH ) ) - nT += nH - NEXT - ::setActiveSubWindow( qObj ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowsePanel:tileHorizontally() - LOCAL qObj, qVPort, nH, nT, nW, nL, a_ - - qObj := ::activeSubWindow() - qVPort := ::viewport() - nH := qVPort:height() - nW := qVPort:width() / Len( ::aBrowsers ) - nT := 0 - nL := 0 - FOR EACH a_ IN ::aBrowsers - a_[ 2 ]:setGeometry( QRect( nL, nT, nW, nH ) ) - nL += nW - NEXT - ::setActiveSubWindow( qObj ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowsePanel:tilesZoom( nMode ) - LOCAL qMdi, nT, nL, nH, nW, qRect, a_ - - IF ::nViewStyle == HBPMDI_STYLE_TILEDVERT .OR. ::nViewStyle == HBPMDI_STYLE_TILEDHORZ - IF ::nViewStyle == HBPMDI_STYLE_TILEDVERT - nT := 0 - FOR EACH a_ IN ::aBrowsers - qMdi := a_[ 2 ] - qRect := qMdi:geometry() - nH := qRect:height() + ( nMode * ( qRect:height() / 4 ) ) - qMdi:setGeometry( QRect( 0, nT, qRect:width(), nH ) ) - nT += nH - NEXT - ELSE - nL := 0 - FOR EACH a_ IN ::aBrowsers - qMdi := a_[ 2 ] - qRect := qMdi:geometry() - nW := qRect:width() + ( nMode * ( qRect:width() / 4 ) ) - qMdi:setGeometry( QRect( nL, 0, nW, qRect:height() ) ) - nL += nW - NEXT - ENDIF - - ::prepare() - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowsePanel:saveGeometry() - LOCAL a_ - IF ::nViewStyle == HBPMDI_STYLE_ORGANIZED - FOR EACH a_ IN ::aBrowsers - a_[ SUB_GEOMETRY ] := a_[ SUB_WINDOW ]:geometry() - NEXT - ENDIF - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD HbpBrowsePanel:restGeometry() - LOCAL a_ - FOR EACH a_ IN ::aBrowsers - IF HB_ISOBJECT( a_[ SUB_GEOMETRY ] ) - a_[ SUB_WINDOW ]:setGeometry( a_[ SUB_GEOMETRY ] ) - ENDIF - NEXT - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowsePanel:destroyBrw( oBrw ) - LOCAL n, oSub - - IF ( n := ascan( ::aBrowsers, {|e_| e_[ SUB_BROWSER ] == oBrw } ) ) > 0 - oSub := ::aBrowsers[ n, SUB_WINDOW ] - hb_adel( ::aBrowsers, n, .t. ) - - ::qWidget:removeSubWindow( oSub ) -#if 1 - oSub:setParent( QWidget() ) /* This alone releases all Windows down its hirarchy, right at this line */ - /* Without it GPFing when a single browser was being closed via X button */ -#endif - oBrw:destroy() /* this is almost non-effective */ - oBrw := NIL - ENDIF - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD HbpBrowsePanel:execEvent( nEvent, p ) - LOCAL n, oBrw - - SWITCH nEvent - CASE __mdiArea_subWindowActivated__ - IF ! empty( ::aBrowsers ) - IF ( n := ascan( ::aBrowsers, {|e_| hbqt_IsEqual( e_[ SUB_WINDOW ], p ) } ) ) > 0 - oBrw := ::aBrowsers[ n, SUB_BROWSER ] - - oBrw:configure() - oBrw:oBrw:setCurrentIndex( .t. ) - oBrw:oBrw:setFocus() - - ::oManager:updateIndexMenu( oBrw ) - ENDIF - ENDIF - EXIT - ENDSWITCH - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD HbpBrowsePanel:setIndex( oBrw, cIndex ) - IF ascan( ::aBrowsers, {|e_| e_[ SUB_BROWSER ] == oBrw } ) > 0 - RETURN oBrw:setIndex( cIndex ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowsePanel:getIndexInfo( oBrw ) - IF ascan( ::aBrowsers, {|e_| e_[ SUB_BROWSER ] == oBrw } ) > 0 - RETURN oBrw:getIndexInfo() - ENDIF - RETURN {} - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowsePanel:setCurrentBrowser( oBrw ) - IF ascan( ::aBrowsers, {|e_| e_[ SUB_BROWSER ] == oBrw } ) > 0 - ::oManager:oCurBrw := oBrw - ENDIF - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD HbpBrowsePanel:prepare() - LOCAL aSub - FOR EACH aSub IN ::aBrowsers - aSub[ SUB_BROWSER ]:configure() - NEXT - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD HbpBrowsePanel:addBrowser( aInfo ) - LOCAL oBrw - oBrw := HbpBrowse():new( ::oManager, Self, aInfo ):create() - IF empty( oBrw:oBrw ) - RETURN Self - ENDIF - aadd( ::aBrowsers, { oBrw:nID, oBrw:qMdi, oBrw:qMdi:geometry(), oBrw, NIL } ) - ::oManager:updateIndexMenu( oBrw ) - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD HbpBrowsePanel:activateBrowser() - IF Len( ::aBrowsers ) > 0 - ::qWidget:setActiveSubWindow( ::aBrowsers[ 1, SUB_WINDOW ] ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ -// -// Class HbpBrowse -// -/*----------------------------------------------------------------------*/ - -CLASS HbpBrowse - - DATA oWnd - DATA oBrw - DATA qLayout - DATA qForm - DATA qFLayout - DATA qSplitter - DATA qTimer - DATA qScrollArea - - DATA nID INIT 0 - - DATA aForm INIT {} - DATA oManager - DATA oPanel - DATA qMDI - DATA aInfo INIT {} - - DATA nType INIT BRW_TYPE_DBF - DATA cAlias INIT "" - DATA cTable INIT "" - DATA cTableOnly INIT "" - DATA aData INIT {} - DATA aStruct INIT {} - DATA aAttr INIT {} - DATA nIndex INIT 0 - DATA cDriver INIT "DBFCDX" - DATA cConxn INIT "" - DATA cConxnFull INIT "" - DATA cIndex INIT "" - DATA nOrder INIT 0 - DATA nArea INIT 0 - DATA nCursorType INIT XBPBRW_CURSOR_CELL - DATA lOpened INIT .f. - - DATA qVerSpl - DATA qClose - DATA aIndex INIT {} - - DATA xSearch - DATA lInSearch INIT .f. - - DATA aMenu INIT {} - DATA aIdx INIT {} - DATA aFlds INIT {} - DATA aSeek INIT {} - DATA aToFld INIT {} - - CLASSDATA nIdentity INIT 0 - - METHOD new( oManager, oPanel, aInfo ) - METHOD create( oManager, oPanel, aInfo ) - METHOD configure() - METHOD destroy() - METHOD execEvent( nEvent, p, p1 ) - METHOD buildBrowser() - METHOD buildColumns() - METHOD buildMdiWindow() - METHOD dataLink( nField ) - METHOD getPP( aStruct ) - - METHOD skipBlock( nHowMany ) - - METHOD use() - METHOD exists() - METHOD goTop() - METHOD goBottom() - METHOD goTo( nRec ) - METHOD lock() - METHOD goToAsk() - METHOD append() - METHOD delete( lAsk ) - METHOD recall() - METHOD recNo() - METHOD lastRec() - METHOD ordKeyCount() - METHOD ordKeyNo() - METHOD ordKeyGoto( nRec ) - ACCESS dbStruct() INLINE ::aStruct - METHOD indexOrd() - METHOD ordName( nOrder ) - METHOD IndexKey( nOrder ) - METHOD IndexKeyValue( nOrder ) - METHOD refreshAll() - METHOD getIndexInfo() - METHOD setIndex( cIndex ) - METHOD setOrder( nOrder ) - ACCESS numIndexes() INLINE Len( ::aIndex ) - - METHOD dispInfo() - METHOD search( cSearch, lSoft, lLast, nMode ) - METHOD searchAsk( nMode ) - METHOD seekAsk( nMode ) - METHOD next() - METHOD previous() - METHOD buildForm() - METHOD populateForm() - METHOD fetchAlias( cTable ) - METHOD saveField( nField, x ) - METHOD toColumn( ncIndex ) - METHOD getSome( cType, cFor ) - METHOD buildContextMenu() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:new( oManager, oPanel, aInfo ) - - ::oManager := oManager - ::oPanel := oPanel - ::aInfo := aInfo - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:destroy() - - IF ::lOpened - ( ::cAlias )->( dbCloseArea() ) - ENDIF - - IF !empty( ::qTimer ) - ::qTimer:disconnect( "timeout()" ) - ENDIF - - ::QTimer := NIL - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:create( oManager, oPanel, aInfo ) - LOCAL xVrb, cT, cName, n - LOCAL lMissing := .t. - - DEFAULT oManager TO ::oManager - DEFAULT oPanel TO ::oPanel - DEFAULT aInfo TO ::aInfo - - ::oManager := oManager - ::oPanel := oPanel - ::aInfo := aInfo - - aSize( ::aInfo, TBL_VRBLS ) - - DEFAULT ::aInfo[ TBL_PANEL ] TO ::oPanel:cPanel - DEFAULT ::aInfo[ TBL_NAME ] TO "" - DEFAULT ::aInfo[ TBL_ALIAS ] TO "" - DEFAULT ::aInfo[ TBL_DRIVER ] TO ::oManager:currentDriver() - DEFAULT ::aInfo[ TBL_INDEX ] TO "" - DEFAULT ::aInfo[ TBL_RECORD ] TO "" - DEFAULT ::aInfo[ TBL_CURSOR ] TO "" - DEFAULT ::aInfo[ TBL_GEOMETRY ] TO "" - DEFAULT ::aInfo[ TBL_ROWPOS ] TO "1" - DEFAULT ::aInfo[ TBL_COLPOS ] TO "1" - DEFAULT ::aInfo[ TBL_HZSCROLL ] TO "" - DEFAULT ::aInfo[ TBL_CONXN ] TO ::oManager:currentConxn() - DEFAULT ::aInfo[ TBL_NEXT ] TO "" - - ::cTable := hbide_pathToOSPath( ::aInfo[ TBL_NAME ] ) - hb_fNameSplit( ::cTable, , @cName ) - ::cTableOnly := cName - ::cAlias := ::aInfo[ TBL_ALIAS ] - ::cDriver := ::aInfo[ TBL_DRIVER ] - ::cConxn := ::aInfo[ TBL_CONXN ] - - IF ! ::exists() - RETURN Self - ENDIF - - IF !empty( ::oManager:aConxns ) - n := ascan( ::oManager:aConxns, {|e| e == ::cConxn } ) - ::cConxnFull := ::oManager:aConxns[ n ] - ENDIF - - IF ::nType == BRW_TYPE_DBF - IF !empty( ::cAlias ) .AND. empty( ::cTable ) - IF select( ::cAlias ) > 0 - lMissing := .f. - ENDIF - ENDIF - - IF lMissing .AND. !empty( ::cTable ) - IF ! ( ::lOpened := ::use() ) - RETURN Self - ENDIF - ENDIF - - ::aStruct := ( ::cAlias )->( DbStruct() ) - ELSE - FOR EACH xVrb IN ::aData[ 1 ] - cT := valtype( xVrb ) - aadd( ::aStruct, "Fld_" + hb_ntos( xVrb:__enumIndex() ) ) - aadd( ::aStruct, cT ) - IF cT == "N" - aadd( ::aStruct, 12 ) - aadd( ::aStruct, 2 ) - ELSEIF cT == "D" - aadd( ::aStruct, 8 ) - aadd( ::aStruct, 0 ) - ELSEIF cT == "L" - aadd( ::aStruct, 1 ) - aadd( ::aStruct, 0 ) - ELSE - aadd( ::aStruct, Len( xVrb ) ) - aadd( ::aStruct, 0 ) - ENDIF - NEXT - ENDIF - - ::buildBrowser() - ::buildColumns() - ::buildForm() - ::buildMdiWindow() - - ::oManager:oCurBrw := Self - - ::oBrw:configure() - ::oBrw:forceStable() - ::oBrw:rowPos := max( 1, val( aInfo[ TBL_ROWPOS ] ) ) - ::oBrw:colPos := max( 1, val( aInfo[ TBL_COLPOS ] ) ) - ::oBrw:forceStable() - ::setOrder( val( aInfo[ TBL_INDEX ] ) ) - ::goto( max( 1, val( aInfo[ TBL_RECORD ] ) ) ) - ::oBrw:setCurrentIndex( .t. ) - - ::oBrw:navigate := {|mp1,mp2| ::execEvent( __browse_navigate__, mp1, mp2 ) } - ::oBrw:keyboard := {|mp1,mp2| ::execEvent( __browse_keyboard__, mp1, mp2 ) } - - ::qTimer := QTimer() - ::qTimer:setInterval( 5 ) - ::qTimer:connect( "timeout()", {|| ::execEvent( __timer_timeout__ ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:buildBrowser() - LOCAL qLayout, oWnd, oXbpBrowse - - oWnd := XbpWindow():new() - oWnd:oWidget := QWidget() - - qLayout := QHBoxLayout() - oWnd:oWidget:setLayout( qLayout ) - qLayout:setContentsMargins( 0,0,0,0 ) - qLayout:setSpacing( 2 ) - - ::qSplitter := QSplitter() - ::qSplitter:setOrientation( Qt_Horizontal ) - - qLayout:addWidget( ::qSplitter ) - - /* Browse View */ - oXbpBrowse := XbpBrowse():new():create( oWnd, , { 0,0 }, oWnd:currentSize() ) - oXbpBrowse:setFontCompoundName( "10.Courier" ) - - ::qSplitter:addWidget( oXbpBrowse:oWidget ) - - oXbpBrowse:cursorMode := ::nCursorType - - oXbpBrowse:skipBlock := {|n| ::skipBlock( n ) } - oXbpBrowse:goTopBlock := {| | ::goTop() } - oXbpBrowse:goBottomBlock := {| | ::goBottom() } - // - oXbpBrowse:firstPosBlock := {| | 1 } - #if 0 - oXbpBrowse:lastPosBlock := {| | ::lastRec() } - oXbpBrowse:posBlock := {| | ::recNo() } - oXbpBrowse:goPosBlock := {|n| ::goto( n ) } - oXbpBrowse:phyPosBlock := {| | ::recNo() } - #endif - oXbpBrowse:lastPosBlock := {| | ::ordKeyCount() } - oXbpBrowse:posBlock := {| | ::ordKeyNo() } - oXbpBrowse:goPosBlock := {|n| ::ordKeyGoto( n ) } - oXbpBrowse:phyPosBlock := {| | ::ordKeyNo() } - - - oXbpBrowse:hbContextMenu := {|mp1| ::execEvent( __browser_contextMenu__, mp1 ) } - - /* Form View */ - ::qForm := QWidget() - ::qForm:setMinimumSize( QSize( 300 , Len( ::aStruct ) * 34 ) ) - ::qForm:setMaximumSize( QSize( 12000, 48000 ) ) - - ::qFLayout := QFormLayout() - ::qForm:setLayout( ::qFLayout ) - - ::qScrollArea := QScrollArea() - ::qScrollArea:setWidget( ::qForm ) - ::qScrollArea:hide() - - ::qSplitter:addWidget( ::qScrollArea ) - - ::qLayout := qLayout - ::oWnd := oWnd - ::oBrw := oXbpBrowse - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:buildColumns() - LOCAL oXbpColumn, aPresParam, a_ - - IF ::nType == BRW_TYPE_DBF - FOR EACH a_ IN ::aStruct - aPresParam := ::getPP( a_ ) - - oXbpColumn := XbpColumn():new() - oXbpColumn:dataLink := ::dataLink( a_:__enumIndex() ) - oXbpColumn:create( , , , , aPresParam ) - - ::oBrw:addColumn( oXbpColumn ) - NEXT - ELSE - FOR EACH a_ IN ::aStruct - ::getPP( a_, a_:__enumIndex() ) - - oXbpColumn := XbpColumn():new() - oXbpColumn:dataLink := ::dataLink( a_:__enumIndex() ) - oXbpColumn:create( , , , , aPresParam ) - - ::oBrw:addColumn( oXbpColumn ) - NEXT - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:buildForm() - LOCAL a_, qLbl, qEdit - - IF ::nType == BRW_TYPE_DBF - FOR EACH a_ IN ::aStruct - qLbl := QLabel(); qLbl:setText( a_[ 1 ] ) - qEdit := QLineEdit() - ::qFLayout:addRow( qLbl, qEdit ) - aadd( ::aForm, { qLbl, qEdit } ) - NEXT - ELSE - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:buildMdiWindow() - LOCAL qRect, cR - - STATIC nID := 0 - - ::nID := ++nID - - ::qMdi := QMdiSubWindow() - // - ::qMdi:setWidget( ::oWnd:oWidget ) - ::oPanel:qWidget:addSubWindow( ::qMdi ) - - ::oWnd:oWidget:show() - ::qMdi:show() - - ::qMdi:setWindowTitle( ::cTable ) - ::qMdi:setObjectName( hb_ntos( nID ) ) - ::qMdi:setWindowIcon( QIcon( Hbp_Image( "dbf_p" + hb_ntos( ::nID ) ) ) ) - - IF ! empty( ::aInfo[ TBL_GEOMETRY ] ) - qRect := hb_aTokens( ::aInfo[ TBL_GEOMETRY ], " " ) - FOR EACH cR IN qRect - cR := val( cR ) - NEXT - qRect := QRect( qRect[ 1 ], qRect[ 2 ], qRect[ 3 ], qRect[ 4 ] ) - ::qMdi:setGeometry( qRect ) - ::qMdi:resize( ::qMdi:width()+1, ::qMdi:height()+1 ) - ::qMdi:resize( ::qMdi:width()-1, ::qMdi:height()-1 ) - ELSE - ::qMdi:resize( 300, 200 ) - ENDIF - ::dispInfo() - - * ::qMdi:connect( "aboutToActivate()", {|| ::execEvent( "mdiSubWindow_aboutToActivate" ) } ) - ::qMdi:connect( "windowStateChanged(Qt::WindowStates,Qt::WindowStates)", ; - {|p,p1| ::execEvent( __mdiSubWindow_windowStateChanged__, p, p1 ) } ) - ::qMdi:connect( QEvent_Close, {|oEvent| oEvent:accept(), ::execEvent( __mdiSubWindow_buttonXclicked__ ) } ) - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD HbpBrowse:configure() - LOCAL nOff - LOCAL nRowPos := ::oBrw:rowPos() - LOCAL nColPos := ::oBrw:colPos() - - ::oBrw:configure() - - IF nRowPos > ::oBrw:rowCount() - nOff := nRowPos - ::oBrw:rowCount() - ::oBrw:rowPos := ::oBrw:rowCount() - ELSE - nOff := 0 - ENDIF - ::oBrw:colPos := nColPos - - ::oBrw:refreshAll() - ::oBrw:forceStable() - ::oBrw:setCurrentIndex( nRowPos > ::oBrw:rowCount() ) - IF nOff > 0 - SetAppEvent( xbeBRW_Navigate, XBPBRW_Navigate_Skip, nOff, ::oBrw ) - ENDIF - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD HbpBrowse:execEvent( nEvent, p, p1 ) - - HB_SYMBOL_UNUSED( p ) - HB_SYMBOL_UNUSED( p1 ) - - SWITCH nEvent - CASE __browse_navigate__ - ::dispInfo() - ::populateForm() - ::oManager:oCurBrw := Self - ::oManager:qToolbar:setItemChecked( "Toggle", ! ::qForm:isHidden() ) - EXIT - CASE __browse_keyboard__ - IF p == xbeK_CTRL_F - ::searchAsk() - ELSEIF p == xbeK_CTRL_G - ::gotoAsk() - ELSEIF p == xbeK_CTRL_E - ::oBrw:oTableView:edit( ::oBrw:getCurrentIndex() ) - ENDIF - EXIT - CASE __timer_timeout__ - ::oBrw:down() - IF ::oBrw:hitBottom - ::qTimer:stop() - ::dispInfo() - ELSEIF Left( eval( ::oBrw:getColumn( ::oBrw:colPos ):block ), Len( ::xSearch ) ) == ::xSearch - ::qTimer:stop() - ::dispInfo() - ENDIF - EXIT - CASE __mdiSubWindow_buttonXclicked__ - ::oPanel:destroyBrw( Self ) - EXIT -#if 0 - CASE __browser_ScrollToColumn__ - CASE __mdiSubWindow_aboutToActivate__ - ::oBrw:configure() - ::oBrw:setCurrentIndex( .t. ) - EXIT -#endif - CASE __mdiSubWindow_windowStateChanged__ - IF p1 == 8 - ::oPanel:setCurrentBrowser( Self ) - ENDIF - EXIT - CASE __browser_contextMenu__ - IF empty( ::aMenu ) - ::buildContextMenu() - ENDIF - hbide_execPopup( ::aMenu, p, ::qMdi ) - EXIT - ENDSWITCH - - #if 0 - activateNextSubWindow() - activatePreviousSubWindow() - closeActiveSubWindow() - closeAllSubWindows() - setActiveSubWindow( QMdiSubWindow * ) - #endif - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:buildContextMenu() - LOCAL a_, cPmt, nZeros, cIndex - - ::qMdi:setFocus( 0 ) - - IF Len( ::aIndex ) > 0 - aadd( ::aMenu, { "Set to Natural Order", {|| ::setOrder( 0 ) } } ) - aadd( ::aMenu, { "" } ) - ENDIF - - /* Indexed Order */ - ::getIndexInfo() - FOR EACH cIndex IN ::aIndex - aadd( ::aIdx, hbide_indexArray( Self, cIndex, cIndex:__enumIndex() ) ) - NEXT - IF ! empty( ::aIdx ) - aadd( ::aMenu, { ::aIdx, "Set to Indexed Order" } ) - aadd( ::aMenu, { "" } ) - ENDIF - - /* Column Scrolling */ - nZeros := iif( Len( ::aStruct ) < 10, 1, iif( len( ::aStruct ) < 100, 2, 3 ) ) - FOR EACH a_ IN ::aStruct - cPmt := strzero( a_:__enumIndex(), nZeros ) + " " + a_[ 2 ] + " . " + a_[ 1 ] - aadd( ::aFlds, hbide_fieldsArray( Self, cPmt, a_:__enumIndex() ) ) - NEXT - aadd( ::aMenu, { ::aFlds, "Scroll to Column" } ) - aadd( ::aMenu, { "Scroll to ..." , {|v| v := QInputDialog():getText( ::qMdi, "Field Name", "" ), ::toColumn( v ) } } ) - aadd( ::aMenu, { "" } ) - - /* Seeks */ - aadd( ::aSeek, { "Seek" , {|| ::seekAsk( 0 ) } } ) - aadd( ::aSeek, { "Seek Soft" , {|| ::seekAsk( 1 ) } } ) - aadd( ::aSeek, { "Seek Last" , {|| ::seekAsk( 2 ) } } ) - aadd( ::aMenu, { ::aSeek , "Seek..." } ) - aadd( ::aMenu, { "Search in Field", {|| ::searchAsk( 1 ) } } ) - aadd( ::aMenu, { "" } ) - - /* Navigation */ - aadd( ::aMenu, { "Go Top" , {|| ::goTop() } } ) - aadd( ::aMenu, { "Go Bottom" , {|| ::goBottom() } } ) - aadd( ::aMenu, { "Goto Record" , {|| ::gotoAsk() } } ) - aadd( ::aMenu, { "" } ) - - /* Manipulation */ - aadd( ::aMenu, { "Append Blank" , {|| ::append() } } ) - aadd( ::aMenu, { "Delete Record" , {|| ::delete( .t. ) } } ) - aadd( ::aMenu, { "Recall Deleted" , {|| ::recall() } } ) - aadd( ::aMenu, { "" } ) - - /* Miscellaneous */ - aadd( ::aMenu, { "Form View" , {|| ::oManager:execEvent( __buttonShowForm_clicked__ ) } } ) - - - RETURN Self - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_fieldsArray( obj, cPmt, nIndex ) - RETURN { cPmt, {|| obj:toColumn( nIndex ) } } - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_indexArray( obj, cIndex, nOrder ) - RETURN { cIndex, {|| obj:setOrder( nOrder ) } } - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:dispInfo() - LOCAL cTitle - - IF !empty( ::qMdi ) - ::qMdi:setTooltip( ::cTable ) -#if 1 - cTitle := "[ " + ::cDriver + " " + ; - hb_ntos( ::indexOrd() ) + "/" + hb_ntos( ::numIndexes() ) + iif( ::indexOrd() > 0, ":" + ::ordName(), "" ) + ; - " " + hb_ntos( ::recNo() ) + "/" + hb_ntos( ::lastRec() ) + " ] " + ; - ::cTableOnly -#else - //cTitle := HBQString( hb_ntos( ::recNo() ) ) - cTitle := hb_ntos( ::recNo() ) -#endif - - ::qMdi:setWindowTitle( cTitle ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:fetchAlias( cTable ) - LOCAL cFile - - STATIC n := 0 - n++ - - hb_fNameSplit( cTable, , @cFile ) - - RETURN upper( "C" + cFile + hb_ntos( n ) ) - -/*------------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_xtosForForm( xVrb ) - LOCAL cType := valtype( xVrb ) - - DO CASE - CASE cType == "N" ; RETURN ltrim( str( xVrb ) ) - CASE cType == "L" ; RETURN iif( xVrb, "YES", "NO" ) - CASE cType == "D" ; RETURN dtos( xVrb ) - CASE cType == "C" ; RETURN trim( xVrb ) - ENDCASE - - RETURN "" - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:populateForm() - LOCAL a_, oCol - - IF ::nType == BRW_TYPE_DBF - IF ::qForm:isVisible() - FOR EACH a_ IN ::aForm - oCol := ::oBrw:getColumn( a_:__enumIndex() ) - ::aForm[ a_:__enumIndex(), 2 ]:setText( hbide_xtosForForm( eval( oCol:block ) ) ) - NEXT - ENDIF - ELSE - - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:saveField( nField, x ) - IF ( ::cAlias )->( DbrLock() ) - ( ::cAlias )->( FieldPut( nField, x ) ) - ( ::cAlias )->( DbCommit() ) - ( ::cAlias )->( DbrUnlock() ) - ::oBrw:refreshCurrent() - ::oBrw:forceStable() - ::oBrw:SetCurrentIndex( .f. ) - ENDIF - RETURN x - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:dataLink( nField ) - LOCAL bBlock - - IF ::nType == BRW_TYPE_DBF - bBlock := {|x| iif( x == NIL, ( ::cAlias )->( fieldget( nField ) ), ::saveField( nField, x ) ) } - ELSE - bBlock := {|| ::aData[ ::nIndex, nField ] } - ENDIF - - RETURN bBlock - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:getPP( aStruct ) - LOCAL aPresParam := {} - - aadd( aPresParam, { XBP_PP_COL_HA_CAPTION , aStruct[ 1 ] } ) - aadd( aPresParam, { XBP_PP_COL_DA_ROWHEIGHT , 20 } ) - - RETURN aPresParam - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:skipBlock( nHowMany ) - LOCAL nRecs, nCurPos - LOCAL nSkipped := 0 - - IF ::nType == BRW_TYPE_DBF - IF nHowMany == 0 - ( ::cAlias )->( DBSkip( 0 ) ) - - ELSEIF nHowMany > 0 - DO WHILE nSkipped != nHowMany .AND. ::next() - nSkipped++ - ENDDO - ELSE - DO WHILE nSkipped != nHowMany .AND. ::previous() - nSkipped-- - ENDDO - ENDIF - - ELSE - nRecs := Len( ::aData ) - nCurPos := ::nIndex - - IF nHowMany >= 0 - IF ( nCurpos + nHowMany ) > nRecs - nSkipped := nRecs - nCurpos - ::nIndex := nRecs - ELSE - nSkipped := nHowMany - ::nIndex += nHowMany - ENDIF - - ELSE - IF ( nCurpos + nHowMany ) < 1 - nSkipped := 1 - nCurpos - ::nIndex := 1 - ELSE - nSkipped := nHowMany - ::nIndex += nHowMany - ENDIF - - ENDIF - - ENDIF - - RETURN nSkipped - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:next() - LOCAL nSaveRecNum := ( ::cAlias )->( recno() ) - LOCAL lMoved := .T. - - IF ( ::cAlias )->( Eof() ) - lMoved := .F. - ELSE - ( ::cAlias )->( DbSkip( 1 ) ) - IF ( ::cAlias )->( Eof() ) - lMoved := .F. - ( ::cAlias )->( DbGoTo( nSaveRecNum ) ) - ENDIF - ENDIF - - RETURN lMoved - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:previous() - LOCAL nSaveRecNum := ( ::cAlias )->( recno() ) - LOCAL lMoved := .T. - - ( ::cAlias )->( DbSkip( -1 ) ) - - IF ( ::cAlias )->( Bof() ) - ( ::cAlias )->( DbGoTo( nSaveRecNum ) ) - lMoved := .F. - ENDIF - - RETURN lMoved - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:getSome( cType, cFor ) - LOCAL nOrd := ::indexOrd() - LOCAL qWidget := QApplication():focusWidget() // ::oWnd:oWidget - - SWITCH cType - CASE "N" - RETURN QInputDialog():getDouble( qWidget, "Search for?", cFor, ; - 0, -2147483647, 2147483647, iif( nOrd > 0, 3, ::aStruct[ ::oBrw:colPos, 4 ] ) ) - CASE "D" - RETURN hbide_fetchADate( qWidget, "Search for?", cFor ) - CASE "C" - DEFAULT cFor TO "" - RETURN QInputDialog():getText( qWidget, "Search for?", cFor ) - ENDSWITCH - - RETURN "" - -/*------------------------------------------------------------------------*/ - -METHOD HbpBrowse:seekAsk( nMode ) - - IF ::indexOrd() == 0 - RETURN Self - ENDIF - - ::search( ::getSome( valtype( ::indexKeyValue() ) ), nMode == 1, nMode == 2 ) - - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD HbpBrowse:searchAsk( nMode ) - LOCAL xValue, cFor - - DEFAULT nMode TO 0 - - IF nMode == 0 - xValue := iif( ::indexOrd() > 0, ::indexKeyValue(), eval( ::oBrw:getColumn( ::oBrw:colPos ):block ) ) - cFor := iif( ::indexOrd() > 0, "Indexed: " + ::indexKey(), ::aStruct[ ::oBrw:colPos, 1 ] ) - ELSEIF nMode == 1 - xValue := eval( ::oBrw:getColumn( ::oBrw:colPos ):block ) - cFor := ::aStruct[ ::oBrw:colPos, 1 ] - ENDIF - - ::search( ::getSome( valtype( xValue ), cFor ), .f., .f., nMode ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:search( cSearch, lSoft, lLast, nMode ) - LOCAL nRec - - DEFAULT nMode TO 0 - - IF ::lInSearch - ::qTimer:stop() - ::lInSearch := .f. - ENDIF - - IF ::nType == BRW_TYPE_DBF - IF nMode == 0 - IF ( ::cAlias )->( IndexOrd() ) > 0 - - DEFAULT lLast TO .f. - DEFAULT lSoft TO .f. - - nRec := ::recNo() - IF ( ::cAlias )->( DbSeek( cSearch, lSoft, lLast ) ) - ::refreshAll() - ::dispInfo() - ELSEIF ! lSoft - ::goto( nRec ) - MsgBox( "Could not find: " + cSearch ) - ENDIF - ELSE - ::xSearch := cSearch - ::lInSearch := .t. - ::qTimer:start() - ENDIF - ELSE - ::xSearch := cSearch - ::lInSearch := .t. - ::qTimer:start() - ENDIF - ELSE - // Ascan - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:refreshAll() - LOCAL qRect - - ::oBrw:refreshAll() - ::oBrw:forceStable() - ::oBrw:setCurrentIndex( .t. ) - qRect := ::qMdi:geometry() - qRect:setHeight( qRect:height() + 3 ) - ::qMdi:setGeometry( qRect) - qRect:setHeight( qRect:height() - 3 ) - ::qMdi:setGeometry( qRect) - - ::dispInfo() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:toColumn( ncIndex ) - LOCAL nIndex - - IF valtype( ncIndex ) == "C" - ncIndex := upper( ncIndex ) - nIndex := ascan( ::aStruct, {|e_| Left( e_[ 1 ], Len( ncIndex ) ) == ncIndex } ) - ELSE - nIndex := ncIndex - ENDIF - - IF empty( nIndex ) - RETURN Self - ENDIF - - ::oBrw:colPos := nIndex - ::oBrw:refreshAll() - ::oBrw:forceStable() - ::oBrw:setCurrentIndex( .t. ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:lock() - - IF ::nType == BRW_TYPE_DBF - IF ! ( ::cAlias )->( DbrLock() ) - MsgBox( "Record could not been locked" ) - ENDIF - ELSE - MsgBox( "Record can not be locked" ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:goToAsk() - LOCAL nRec - - IF ! empty( nRec := ( QInputDialog() ):getInt( ::qMdi, "Goto", "Record_# ?", ::recno(), 1, ::lastrec() ) ) - ::goto( nRec ) - ::refreshAll() - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:ordKeyGoto( nRec ) - - IF ::nType == BRW_TYPE_DBF - ( ::cAlias )->( OrdKeyGoto( nRec ) ) - ::refreshAll() - ELSE - IF nRec > 0 .AND. nRec <= Len( ::aData ) - ::nIndex := nRec - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:goto( nRec ) - - IF ::nType == BRW_TYPE_DBF - ( ::cAlias )->( DbGoto( nRec ) ) - ::refreshAll() - ELSE - IF nRec > 0 .AND. nRec <= Len( ::aData ) - ::nIndex := nRec - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:goTop() - - IF ::nType == BRW_TYPE_DBF - ( ::cAlias )->( DbGotop() ) - ::refreshAll() - ELSE - ::nIndex := 1 - ENDIF - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:goBottom() - - IF ::nType == BRW_TYPE_DBF - ( ::cAlias )->( DbGoBottom() ) - ::refreshAll() - ELSE - ::nIndex := Len( ::aData ) - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:setOrder( nOrder ) - - IF ::nType == BRW_TYPE_DBF - ( ::cAlias )->( DbSetOrder( nOrder ) ) - ::refreshAll() - ENDIF - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:indexOrd() - - IF ::nType == BRW_TYPE_DBF - RETURN ( ::cAlias )->( IndexOrd() ) - ENDIF - - RETURN 0 - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:ordKeyNo() - - IF ::nType == BRW_TYPE_DBF - RETURN ( ::cAlias )->( OrdKeyNo() ) - ELSE - RETURN ::nIndex - ENDIF - - RETURN 0 - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:recNo() - - IF ::nType == BRW_TYPE_DBF - RETURN ( ::cAlias )->( RecNo() ) - ELSE - RETURN ::nIndex - ENDIF - - RETURN 0 - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:ordKeyCount() - - IF ::nType == BRW_TYPE_DBF - RETURN ( ::cAlias )->( ordKeyCount() ) - ELSE - RETURN Len( ::aData ) - ENDIF - - RETURN 0 - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:lastRec() - - IF ::nType == BRW_TYPE_DBF - RETURN ( ::cAlias )->( LastRec() ) - ELSE - RETURN Len( ::aData ) - ENDIF - - RETURN 0 - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:setIndex( cIndex ) - LOCAL n - - IF ( n := ascan( ::aIndex, cIndex ) ) > 0 - ( ::cAlias )->( DbSetOrder( n ) ) - ::oBrw:refreshAll() - ::oBrw:forceStable() - ::oBrw:setCurrentIndex( .t. ) - - ::dispInfo() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:getIndexInfo() - LOCAL a_:= {}, i, cKey - - IF ::nType == BRW_TYPE_DBF - FOR i := 1 to 50 - IF ( cKey := ( ::cAlias )->( IndexKey( i ) ) ) == '' - EXIT - ENDIF - aadd( a_, ( ::cAlias )->( OrdName( i ) ) + ' : ' + cKey ) - NEXT - ENDIF - - ::aIndex := a_ - - RETURN ::aIndex - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:ordName( nOrder ) - DEFAULT nOrder TO ::indexOrd() - - IF ::nType == BRW_TYPE_DBF - RETURN ( ::cAlias )->( OrdName( nOrder ) ) - ENDIF - - RETURN "" - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:indexKeyValue( nOrder ) - LOCAL xValue - - IF ::nType == BRW_TYPE_DBF - xValue := ( ::cAlias )->( &( IndexKey( nOrder ) ) ) - ENDIF - - RETURN xValue - -/*------------------------------------------------------------------------*/ - -METHOD HbpBrowse:indexKey( nOrder ) - DEFAULT nOrder TO ::indexOrd() - - IF ::nType == BRW_TYPE_DBF - RETURN ( ::cAlias )->( IndexKey( nOrder ) ) - ENDIF - - RETURN "" - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:append() - - IF ::nType == BRW_TYPE_DBF - ( ::cAlias )->( DbAppend() ) - IF ! NetErr() - ( ::cAlias )->( DbCommit() ) - ( ::cAlias )->( DbrUnlock() ) - ::refreshAll() - ENDIF - ELSE - - ENDIF - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD HbpBrowse:delete( lAsk ) - - DEFAULT lAsk TO .t. - - IF lAsk - IF ! hbide_getYesNo( "Delete Record ?", , "Deletion Process" ) - RETURN Self - ENDIF - ENDIF - - IF ::nType == BRW_TYPE_DBF - IF ( ::cAlias )->( DbRLock() ) - ( ::cAlias )->( DbDelete() ) - ( ::cAlias )->( DbCommit() ) - ( ::cAlias )->( DbRUnlock() ) - ::refreshAll() - ENDIF - ELSE - - ENDIF - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD HbpBrowse:recall() - - IF ::nType == BRW_TYPE_DBF - IF ( ::cAlias )->( Deleted() ) - IF ( ::cAlias )->( DbRLock() ) - ( ::cAlias )->( DbRecall() ) - ( ::cAlias )->( DbCommit() ) - ( ::cAlias )->( DbRUnlock() ) - ::refreshAll() - ENDIF - ENDIF - ELSE - - ENDIF - RETURN Self - -/*------------------------------------------------------------------------*/ - -METHOD HbpBrowse:use() - LOCAL bError, oErr - LOCAL lErr := .f. - - SWITCH ::cDriver - CASE "DBFCDX" - CASE "DBFNTX" - CASE "DBFNSX" - CASE "ADS" - bError := ErrorBlock( {|o| break( o ) } ) - BEGIN SEQUENCE - IF empty( ::cAlias ) - USE ( ::cTable ) SHARED NEW VIA ( ::cDriver ) - ELSE - USE ( ::cTable ) ALIAS ( ::cAlias ) SHARED NEW VIA ( ::cDriver ) - ENDIF - IF NetErr() - MsgBox( ::cTable, "Could not been opened!" ) - lErr := .t. - ENDIF - RECOVER USING oErr - MsgBox( oErr:description, "Error Opening Table" ) - RETURN Self - ENDSEQUENCE - ErrorBlock( bError ) - - EXIT - OTHERWISE - //lErr := hbide_execScriptFunction( "tableUse", ::cTable, ::cAlias, ::cDriver, ::cConxn ) /* cTable holds the information about connection */ - EXIT - ENDSWITCH - - IF lErr - RETURN .f. - ENDIF - - IF empty( ::cAlias ) - ::cAlias := alias() - ENDIF - - RETURN .t. - -/*----------------------------------------------------------------------*/ - -METHOD HbpBrowse:exists() - - SWITCH ::cDriver - CASE "DBFCDX" - CASE "DBFNSX" - CASE "DBFNTX" - CASE "ADS" - RETURN hb_fileExists( ::cTable ) - OTHERWISE - //RETURN hbide_execScriptFunction( "tableExists", ::cTable, ::cDriver, ::cConxn ) - ENDSWITCH - - RETURN .f. - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_pathToOSPath( cPath ) - LOCAL n - - cPath := strtran( cPath, "//", hb_ps() ) - cPath := strtran( cPath, "/" , hb_ps() ) - cPath := strtran( cPath, "\\", hb_ps() ) - cPath := strtran( cPath, "\" , hb_ps() ) - - IF ( n := at( ":", cPath ) ) > 0 - cPath := substr( cPath, 1, n - 1 ) + substr( cPath, n ) - ENDIF - - RETURN cPath - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_array2string( a_, cDlm ) - LOCAL s := "" - - aeval( a_, {|e| s += e + cDlm } ) - - RETURN s - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_fetchAFile( oWnd, cTitle, aFlt, cDftDir, cDftSuffix, lAllowMulti ) - LOCAL oDlg - - DEFAULT cTitle TO "Please Select a File" - DEFAULT aFlt TO { { "All Files", "*" } } - DEFAULT cDftDir TO hb_dirBase() - DEFAULT lAllowMulti TO .f. - - oDlg := XbpFileDialog():new():create( oWnd, , { 10,10 } ) - - oDlg:title := cTitle - oDlg:center := .t. - oDlg:fileFilters := aFlt - IF HB_ISSTRING( cDftSuffix ) - oDlg:oWidget:setDefaultSuffix( cDftSuffix ) - ENDIF - - RETURN oDlg:open( cDftDir, , lAllowMulti ) - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_fetchAString( qParent, cDefault, cWhat, cTitle ) - LOCAL qGo, cText - - DEFAULT cDefault TO "" - DEFAULT cWhat TO "" - DEFAULT cTitle TO "A String Value" - - qGo := QInputDialog( qParent ) - qGo:setTextValue( cDefault ) - qGo:setLabelText( cWhat ) - qGo:setWindowTitle( cTitle ) - - qGo:exec() - cText := qGo:textValue() - qGo:setParent( QWidget() ) - - RETURN cText - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_fetchADate( qParent, cTitle, cPrompt, dDefault ) - LOCAL qDate, oUI, nRet - - DEFAULT cTitle TO "A Date Value" - DEFAULT cPrompt TO "What" - - oUI := hbqtui_xbpFetchDate( qParent ) - - oUI:setWindowTitle( cTitle ) - oUI:labelPrompt:setText( cPrompt ) - IF dDefault != NIL - qDate := QDate() - qDate:setYear( year( dDefault ) ) - qDate:setMonth( month( dDefault ) ) - qDate:setDay( day( dDefault ) ) - oUI:editDate:setDate( qDate ) - ENDIF - - oUI:buttonOk:connect( "clicked()", {|| oUI:done( 1 ) } ) - oUI:buttonCancel:connect( "clicked()", {|| oUI:done( 0 ) } ) - - nRet := oUI:exec() - - oUI:buttonOk:disconnect( "clicked()" ) - oUI:buttonCancel:disconnect( "clicked()" ) - - IF nRet == 1 - qDate := oUI:editDate:date() - RETURN stod( strzero( qDate:year(), 4 ) + strzero( qDate:month(),2 ) + strzero( qDate:day(), 2 ) ) - ENDIF - - RETURN NIL - -/*------------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_getYesNo( cMsg, cInfo, cTitle, qParent ) - LOCAL oMB, nRet - - DEFAULT cTitle TO "Option Please!" - DEFAULT qParent TO SetAppWindow():oWidget - - oMB := QMessageBox( qParent ) - oMB:setText( ""+ cMsg +"" ) - IF !empty( cInfo ) - oMB:setInformativeText( cInfo ) - ENDIF - oMB:setIcon( QMessageBox_Information ) - oMB:setWindowTitle( cTitle ) - oMB:setWindowFlags( Qt_Dialog ) - oMB:setStandardButtons( QMessageBox_Yes + QMessageBox_No ) - - nRet := oMB:exec() - - oMB:setParent( QWidget() ) - - RETURN nRet == QMessageBox_Yes - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_posAndSize( qWidget ) - - RETURN hb_ntos( qWidget:x() ) + "," + hb_ntos( qWidget:y() ) + "," + ; - hb_ntos( qWidget:width() ) + "," + hb_ntos( qWidget:height() ) + "," - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbide_fldType2Desc( cType ) - - SWITCH cType - CASE "C" ; RETURN "Character" - CASE "N" ; RETURN "Numeric" - CASE "D" ; RETURN "Date" - CASE "L" ; RETURN "Logical" - ENDSWITCH - - RETURN "" - -/*----------------------------------------------------------------------*/ - diff --git a/harbour/contrib/hbide/xbpaddons/fetchdate.ui b/harbour/contrib/hbide/xbpaddons/fetchdate.ui deleted file mode 100644 index 4b4bf16db2..0000000000 --- a/harbour/contrib/hbide/xbpaddons/fetchdate.ui +++ /dev/null @@ -1,71 +0,0 @@ - - - DialogDate - - - - 0 - 0 - 194 - 104 - - - - Fetch a date - - - - - 14 - 30 - 161 - 22 - - - - true - - - - - - 14 - 68 - 75 - 24 - - - - OK - - - - - - 102 - 68 - 75 - 24 - - - - Cancel - - - - - - 14 - 8 - 159 - 16 - - - - Select a date - - - - - - diff --git a/harbour/contrib/hbide/xbpaddons/misc.prg b/harbour/contrib/hbide/xbpaddons/misc.prg deleted file mode 100644 index 0e13b1eb3c..0000000000 --- a/harbour/contrib/hbide/xbpaddons/misc.prg +++ /dev/null @@ -1,76 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2012 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Parts - * - * Pritpal Bedi - * 22Sep2012 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "common.ch" -#include "xbp.ch" - -/*----------------------------------------------------------------------*/ - -FUNCTION Hbp_Image( cName ) - - RETURN ":/xbp/resources" + "/" + cName + ".png" - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/xbpaddons/reports.prg b/harbour/contrib/hbide/xbpaddons/reports.prg deleted file mode 100644 index 8f611bc9f1..0000000000 --- a/harbour/contrib/hbide/xbpaddons/reports.prg +++ /dev/null @@ -1,2738 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2010-2012 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour-Qt IDE - * - * Pritpal Bedi - * 07Aug2010 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "common.ch" -#include "hbclass.ch" -#include "hbqtgui.ch" -#include "hbtrace.ch" -#include "xbp.ch" - -/*----------------------------------------------------------------------*/ - -#define UNIT 0.1 - -#define INI_KEY( cKey, n ) cKey + "_" + hb_ntos( n ) + "=" - -#define hbqt_screen_heightMM ( QDesktopWidget():height() / QDesktopWidget():physicalDpiY() * 25.4 ) -#define hbqt_screen_widthMM ( QDesktopWidget():width() / QDesktopWidget():physicalDpiX() * 25.4 ) - -#define HBQT_GRAPHICSVIEW_ZOOM_IN 1 -#define HBQT_GRAPHICSVIEW_ZOOM_OUT 2 -#define HBQT_GRAPHICSVIEW_ZOOM_WYSIWYG 3 -#define HBQT_GRAPHICSVIEW_ZOOM_ORIGINAL 4 - -#define HQR_BARCODE_3OF9 1 - -#define TO_MMS( n ) ( ( n ) * 10 / 25.4 ) - -#define SHP_ACT_RECTANGLE 1 -#define SHP_ACT_ROUNDRECT 2 -#define SHP_ACT_ELLIPSE 3 -#define SHP_ACT_LINEVERT 4 -#define SHP_ACT_LINEHORZ 5 -#define SHP_ACT_LINEDIAGRIGHT 6 -#define SHP_ACT_LINEDIAGLEFT 7 -#define SHP_ACT_ARC 8 -#define SHP_ACT_CHORD 9 -#define SHP_ACT_DIAMOND 10 -#define SHP_ACT_TRIANGLE 11 - -#define NUM_SHAPES 11 - -#define __graphicsScene_block__ 2001 -#define __treeObjects_clicked__ 2002 -#define __tabBar_currentChanged__ 2003 -#define __buttonNew_clicked__ 2004 -#define __buttonOpen_clicked__ 2005 -#define __buttonSave_clicked__ 2006 -#define __buttonClose_clicked__ 2007 -#define __buttonPrint_clicked__ 2008 -#define __buttonToBack_clicked__ 2009 -#define __buttonToFront_clicked__ 2010 -#define __buttonRotateL_clicked__ 2011 -#define __buttonRotateR_clicked__ 2012 -#define __buttonPortrait_clicked__ 2013 -#define __buttonLandscape_clicked__ 2014 -#define __buttonFontG_clicked__ 2015 -#define __buttonFontB_clicked__ 2016 -#define __buttonFontI_clicked__ 2017 -#define __buttonFontU_clicked__ 2018 -#define __buttonFontS_clicked__ 2019 -#define __buttonJustL_clicked__ 2020 -#define __buttonJustC_clicked__ 2021 -#define __buttonJustR_clicked__ 2022 -#define __buttonJustJ_clicked__ 2023 -#define __buttonJustT_clicked__ 2024 -#define __buttonJustM_clicked__ 2025 -#define __buttonJustB_clicked__ 2026 -#define __buttonBoxT_clicked__ 2027 -#define __buttonBoxL_clicked__ 2028 -#define __buttonBoxB_clicked__ 2029 -#define __buttonBoxR_clicked__ 2030 -#define __buttonBoxA_clicked__ 2031 -#define __buttonBoxP_clicked__ 2032 -#define __buttonBoxS_clicked__ 2033 -#define __buttonZoom_clicked__ 2034 -#define __buttonGrid_clicked__ 2035 -#define __buttonNew0_clicked__ 2036 // Tobe assined -#define __buttonShapes_clicked__ 2037 -#define __QEvent_MousePressMenu__ 2038 -#define __QEvent_MouseMoveMenu__ 2039 -#define __QEvent_MouseReleaseMenu__ 2040 - -/*----------------------------------------------------------------------*/ - -STATIC hIDs := {=>} - -/*----------------------------------------------------------------------*/ - -CLASS HbpReports INHERIT XbpWindow - - DATA lRegistered INIT .F. - - DATA oWidget - DATA qLayout - DATA qToolbar - DATA qToolbarL - DATA qToolbarAlign - DATA qStack - DATA qStatus - DATA qTabBar - DATA qWidget1 - DATA qWidget2 - DATA qWidget3 - - DATA qPaper - - DATA qSpliter - DATA qLayoutD - DATA qFrameL - DATA qScroll - DATA qFrameR - - DATA qLayL - DATA qLayR - DATA qSplL - DATA qSplR - - DATA qTabL0 - DATA qPageL01 - DATA qPageL02 - DATA qPageL01Lay - DATA qTreeObjects - - DATA qTabL1 - DATA qPageL11 - DATA qPageL12 - DATA qPageL11Lay - DATA qTreeProp - - DATA qEditDesc - - DATA qTabR1 - DATA qPageR11 - DATA qPageR11Lay - DATA qTreeData - DATA qPageR12 - DATA qPageR13 - - DATA qDesign - DATA qHRuler - DATA qVRuler - DATA qPort - DATA qView - DATA qScene - - DATA aStatusPnls INIT {} - DATA aItems INIT {} - DATA hItems INIT {=>} - DATA hObjTree INIT {=>} - DATA qCurGraphicsItem - DATA hHqrObjects INIT {=>} - - DATA aPages INIT {} - DATA aSources INIT {} - DATA aObjects INIT {} - DATA aRptPages INIT {} - DATA aRptSources INIT {} - DATA aRptObjects INIT {} - - DATA lNew INIT .t. - DATA cSaved INIT "" - - DATA nScreenDpiX INIT 96 - DATA nScreenDpiY INIT 96 - - /* Report's Properties */ - DATA symposis INIT "HBReports Designer" - DATA version INIT 0.1 - DATA title INIT "Report" - DATA author INIT "HbIDE" - DATA created INIT date() - DATA modified INIT date() - - DATA xData - DATA qPos INIT QPoint( -1,-1 ) - DATA qDrag - DATA qDropAction - DATA qByte - DATA qMime - DATA qPix - DATA qAct - DATA qShapesMenu - DATA aShapesAct INIT array( NUM_SHAPES ) - - METHOD init( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) - METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) - METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) VIRTUAL - METHOD destroy() VIRTUAL - METHOD execSlot( nSlot, p ) VIRTUAL - METHOD handleEvent( nEvent, mp1, mp2 ) VIRTUAL - METHOD setStyleSheet( ... ) VIRTUAL - - METHOD execEvent( nEvent, p, p1, p2 ) - - METHOD buildToolbar() - METHOD buildToolbarAlign() - METHOD buildToolbarLeft() - METHOD buildStacks() - METHOD buildStatusBar() - METHOD buildTabBar() - METHOD buildDesignReport() - METHOD addField( cAlias, cField, qPos, qGeo ) - METHOD addObject( cType, qPos, qGeo ) - METHOD loadReport( xData ) - METHOD saveReport( lSaveAs ) - METHOD prepareReport() - METHOD getNextID( cType ) - METHOD getImageOfType( cType ) - METHOD updateObjectsTree( cType, cParent, cName, cSubType ) - METHOD contextMenuItem( p1, p2 ) - METHOD contextMenuScene( p1 ) - METHOD addSource( cAlias, aStruct ) - METHOD clear() - METHOD buildReportStream() - METHOD toString() - METHOD openReport() - METHOD parseBuffer( cBuffer ) - METHOD presentBlankPage() - METHOD printReport( qPrinter ) - METHOD printPreview( qPrinter ) - METHOD paintRequested( qPrinter ) - METHOD zoom( nMode ) - - METHOD objectSelected( hqrObject ) - METHOD execMenuShapes() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:init( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) - - IF ! ::lRegistered - ::lRegistered := .T. - QResource():registerResource_1( hbqtres_xbp() ) - ENDIF - - ::xbpWindow:init( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) - LOCAL oLayout - - ::xbpWindow:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) - - IF HB_ISOBJECT( ::qtObject ) - ::oWidget := QWidget( ::qtObject ) - oLayout := ::qtObject:layout() - SWITCH __objGetClsName( oLayout ) - CASE "QVBOXLAYOUT" - CASE "QHBOXLAYOUT" - oLayout:addWidget( ::oWidget ) - EXIT - CASE "QGRIDLAYOUT" - oLayout:addWidget( ::oWidget, 0, 0, 1, 1 ) - EXIT - ENDSWITCH - ELSE - ::oWidget := QWidget() - ENDIF - - /* Layout applied to RM widget */ - ::qLayout := QGridLayout() - ::qLayout:setContentsMargins( 0,0,0,0 ) - ::qLayout:setSpacing( 0 ) - - ::oWidget:setLayout( ::qLayout ) - - /* Toolbar */ - ::buildToolbar() - ::qLayout:addWidget( ::qToolbar:oWidget , 0, 0, 1, 2 ) - ::buildToolbarAlign() - ::qLayout:addWidget( ::qToolbarAlign:oWidget , 1, 0, 1, 2 ) - - /* Toolbar left */ - ::buildToolbarLeft() - ::qLayout:addWidget( ::qToolbarL:oWidget , 2, 0, 2, 1 ) - - /* ::qTabBar */ - ::buildTabBar() - ::qLayout:addWidget( ::qTabBar , 2, 1, 1, 1 ) - - /* Stacked widget */ - ::buildStacks() - ::qLayout:addWidget( ::qStack , 3, 1, 1, 1 ) - - /* StatusBar */ - ::buildStatusBar() - ::qLayout:addWidget( ::qStatus , 4, 0, 1, 2 ) - - /* Document manipulation interface */ - ::buildDesignReport() - - ::qTabBar:setCurrentIndex( 2 ) - - - IF ::visible - ::show() - ENDIF - IF HB_ISOBJECT( oParent ) - ::oParent:AddChild( SELF ) - ::postCreate() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:buildDesignReport() - - ::qLayoutD := QHBoxLayout() - ::qLayoutD:setContentsMargins( 0,0,0,0 ) - ::qLayoutD:setSpacing( 1 ) - ::qWidget3:setLayout( ::qLayoutD ) - - ::qSpliter := QSplitter() - ::qSpliter:setOrientation( Qt_Horizontal ) - - ::qLayoutD:addWidget( ::qSpliter ) - - ::qFrameL := QFrame() - ::qSpliter:addWidget( ::qFrameL ) - - ::qScene := HBQGraphicsScene() - ::qScene:hbSetBlock( {|p,p1,p2| ::execEvent( __graphicsScene_block__, p, p1, p2 ) } ) - - ::qView := QGraphicsView( ::qDesign ) - ::qView:setMouseTracking( .t. ) - ::qView:setScene( ::qScene ) - // - ::qSpliter:addWidget( ::qView ) - - ::qFrameR := QFrame() - ::qSpliter:addWidget( ::qFrameR ) - - ::qLayL := QVBoxLayout() - ::qLayL:setContentsMargins( 0,0,0,0 ) - ::qLayL:setSpacing( 1 ) - ::qFrameL:setLayout( ::qLayL ) - ::qSplL := QSplitter() - ::qSplL:setOrientation( Qt_Vertical ) - ::qLayL:addWidget( ::qSplL ) - - ::qLayR := QVBoxLayout() - ::qLayR:setContentsMargins( 0,0,0,0 ) - ::qLayR:setSpacing( 1 ) - ::qFrameR:setLayout( ::qLayR ) - ::qSplR := QSplitter() - ::qSplR:setOrientation( Qt_Vertical ) - ::qLayR:addWidget( ::qSplR ) - - ::qFrameL:setMinimumWidth( 100 ) - ::qFrameR:setMinimumWidth( 100 ) - - - ::qTabL0 := QTabWidget() - ::qSplL:addWidget( ::qTabL0 ) - /* Left Pane Objects Page */ - ::qPageL01 := QWidget() - ::qTabL0:addTab( ::qPageL01, "Objects" ) - ::qPageL01Lay := QVBoxLayout() - ::qPageL01:setLayout( ::qPageL01Lay ) - ::qPageL01Lay:setContentsMargins( 0,0,0,0 ) - /* Left Pane Events page */ - ::qPageL02 := QWidget() - ::qTabL0:addTab( ::qPageL02, "Else" ) - /* Left pane Properties Treeview */ - ::qTreeObjects := QTreeWidget() - ::qPageL01Lay:addWidget( ::qTreeObjects ) - ::qTreeObjects:setHeaderHidden( .t. ) - ::qTreeObjects:setObjectName( "ObjectsTree" ) - ::qTreeObjects:setIconSize( QSize( 12,12 ) ) - ::qTreeObjects:setIndentation( 12 ) - ::qTreeObjects:connect( "itemClicked(QTreeWidgetItem*,int)", {|p,p1| ::execEvent( __treeObjects_clicked__, p, p1 ) } ) - - ::qTabL1 := QTabWidget() - ::qSplL:addWidget( ::qTabL1 ) - /* Left Pane Properties Page */ - ::qPageL11 := QWidget() - ::qTabL1:addTab( ::qPageL11, "Props" ) - ::qPageL11Lay := QVBoxLayout() - ::qPageL11:setLayout( ::qPageL11Lay ) - ::qPageL11Lay:setContentsMargins( 0,0,0,0 ) - /* Left Pane Events page */ - ::qPageL12 := QWidget() - ::qTabL1:addTab( ::qPageL12, "Events" ) - /* Left pane Properties Treeview */ - ::qTreeProp := QTreeWidget() - ::qPageL11Lay:addWidget( ::qTreeProp ) - ::qTreeProp:setHeaderHidden( .t. ) - ::qTreeProp:setObjectName( "PropertiesTree" ) - - - ::qEditDesc := QTextEdit() - ::qSplL:addWidget( ::qEditDesc ) - ::qEditDesc:setPlainText( "Interface implemented is just a proof of concept, no promises yet, please." ) - ::qEditDesc:setMaximumHeight( 120 ) - - ::qTabR1 := QTabWidget() - ::qSplR:addWidget( ::qTabR1 ) - ::qPageR11 := QWidget() - ::qTabR1:addTab( ::qPageR11, "Data" ) - ::qPageR12 := QWidget() - ::qTabR1:addTab( ::qPageR12, "Variables" ) - ::qPageR13 := QWidget() - ::qTabR1:addTab( ::qPageR13, "Functions" ) - - ::qPageR11Lay := QVBoxLayout() - ::qPageR11:setLayout( ::qPageR11Lay ) - ::qPageR11Lay:setContentsMargins( 0,0,0,0 ) - - ::qTreeData := QTreeWidget() - ::qPageR11Lay:addWidget( ::qTreeData ) - ::qTreeData:setHeaderHidden( .t. ) - ::qTreeData:setObjectName( "DataTree" ) - ::qTreeData:setDragEnabled( .t. ) - - ::loadReport() - - ::qScene:setPageSize( QPrinter_A4 ) - ::zoom( HBQT_GRAPHICSVIEW_ZOOM_WYSIWYG ) - ::qToolbarAlign:setItemChecked( "Grid", ::qScene:showGrid() ) - // - ::qScene:setLeftMagnet( .t. ) - ::qScene:setTopMagnet( .t. ) - ::qScene:setRightMagnet( .t. ) - ::qScene:setBottomMagnet( .t. ) - - ::qLayoutD:setStretch( 1,1 ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:execEvent( nEvent, p, p1, p2 ) - LOCAL qMime, i, qList, cFile, nArea, aStruct, cAlias, cPath, qRC, qIcon, cType - - SWITCH nEvent - CASE __graphicsScene_block__ - DO CASE - CASE p == 21001 - ::nScreenDpiX := p1 - ::nScreenDpiY := p2 - - CASE p == 21107 // Left button pressed nowhere on an item - IF ! empty( ::qCurGraphicsItem ) - ::qCurGraphicsItem := NIL - ::qTreeObjects:setCurrentItem( QTreeWidgetItem() ) - ENDIF - - CASE p == QEvent_GraphicsSceneContextMenu - ::contextMenuScene( p1 ) - - CASE p == QEvent_GraphicsSceneDragEnter -HB_TRACE( HB_TR_DEBUG, "QEvent_GraphicsSceneDragEnter", valtype( p1 ), p1 ) - p1:acceptProposedAction() - - CASE p == QEvent_GraphicsSceneDragMove -HB_TRACE( HB_TR_DEBUG, "QEvent_GraphicsSceneDragMove", valtype( p1 ), p1 ) - p1:acceptProposedAction() - - CASE p == QEvent_GraphicsSceneDragLeave - p1:acceptProposedAction() - - CASE p == QEvent_GraphicsSceneDrop - qMime := p1:mimeData() - IF qMime:hasFormat( "application/x-qabstractitemmodeldatalist" ) - IF p2[ 1 ] == "DataTree" - IF p2[ 2 ] != p2[ 3 ] - ::addField( p2[ 2 ], p2[ 3 ], p1:scenePos(), NIL ) - ENDIF - ENDIF - ELSEIF qMime:hasFormat( "application/x-toolbaricon" ) - ::addObject( qMime:html(), p1:scenePos(), NIL ) - ELSEIF qMime:hasFormat( "application/x-menuitem" ) - cType := qMime:html() - SWITCH cType - CASE "Rectangle" ; EXIT - CASE "Ellipse" ; EXIT - CASE "Arc" ; EXIT - CASE "Chord" ; EXIT - CASE "Triangle" ; EXIT - CASE "Diamond" ; EXIT - CASE "Rounded Rectangle" ; cType := "RoundRect" ; EXIT - CASE "Horizontal Line" ; cType := "LineH" ; EXIT - CASE "Vertical Line" ; cType := "LineV" ; EXIT - CASE "Diagonal Line Right"; cType := "LineDR" ; EXIT - CASE "Diagonal Line Left" ; cType := "LineDL" ; EXIT - ENDSWITCH - ::addObject( cType, p1:scenePos(), NIL ) - - ELSEIF qMime:hasUrls() - qList := qMime:urls() - FOR i := 0 TO qList:size() - 1 - cFile := qList:at( i ):toLocalFile() - - IF ".dbf" == right( lower( cFile ), 4 ) - hb_fNameSplit( cFile, @cPath, @cAlias ) - - BEGIN SEQUENCE - nArea := select() - USE ( cFile ) ALIAS "RPTDUMMY" NEW SHARED VIA "DBFCDX" - IF ! neterr() - aStruct := DbStruct() - DbCloseArea() - ::addSource( upper( substr( cAlias, 1, 1 ) ) + lower( substr( cAlias, 2 ) ), aStruct ) - ENDIF - select( nArea ) - END SEQUENCE - ENDIF - NEXT - ENDIF - - p1:acceptProposedAction() - p1:accept() -HB_TRACE( HB_TR_DEBUG, "QEvent_GraphicsSceneDrop", 1000, p1:dropAction() ) - ENDCASE - EXIT - - CASE __treeObjects_clicked__ - IF hb_hHasKey( ::hItems, p:text( 0 ) ) - ::qScene:clearSelection() - //::hItems[ qItem:text( 0 ) ]:setSelected( .t. ) - ::hItems[ p:text( 0 ) ]:oWidget:setSelected( .t. ) - ENDIF - EXIT - - CASE __tabBar_currentChanged__ - IF !empty( ::qStack ) .AND. p < ::qStack:count() - ::qStack:setCurrentIndex( p ) - ENDIF - EXIT - - CASE "dataTree_dropEvent" - CASE "dataTree_mouseReleseEvent" - CASE "dataTree_dragMoveEvent" - CASE "dataTree_dragEnterEvent" - EXIT - - CASE __QEvent_MouseMoveMenu__ - IF empty( ::qPos ) .OR. empty( ::qAct ) - EXIT - ENDIF - - qRC := QRect( ::qPos:x() - 5, ::qPos:y() - 5, 10, 10 ):normalized() - - IF qRC:contains( p:pos() ) - qIcon := QIcon( ::qAct:icon() ) - - ::qByte := QByteArray( ::qAct:text() ) - - ::qMime := QMimeData() - ::qMime:setData( "application/x-menuitem", ::qByte ) - ::qMime:setHtml( ::qAct:text() ) - - ::qPix := qIcon:pixmap( 16,16 ) - - ::qDrag := QDrag( hbide_setIde():oDlg:oWidget ) - ::qDrag:setMimeData( ::qMime ) - ::qDrag:setPixmap( ::qPix ) - ::qDrag:setHotSpot( QPoint( 15,15 ) ) - ::qDrag:setDragCursor( ::qPix, Qt_MoveAction ) - - ::qDropAction := ::qDrag:exec( Qt_MoveAction ) - ENDIF - ::qDrag := NIL - ::qPos := NIL - ::qAct := NIL - EXIT - CASE __QEvent_MouseReleaseMenu__ - ::qDrag := NIL - ::qPos := NIL - ::qAct := NIL - EXIT - CASE __QEvent_MousePressMenu__ - ::qPos := p:pos() - ::qAct := ::qShapesMenu:actionAt( ::qPos ) - EXIT - - CASE __buttonShapes_clicked__ - ::execMenuShapes() - EXIT - CASE __buttonLandscape_clicked__ - ::qScene:setOrientation( QPrinter_Landscape ) - EXIT - CASE __buttonPortrait_clicked__ - ::qScene:setOrientation( QPrinter_Portrait ) - EXIT - CASE __buttonRotateL_clicked__ - IF !empty( ::qCurGraphicsItem ) - ::qCurGraphicsItem:rotate( -10 ) - ENDIF - EXIT - CASE __buttonRotateR_clicked__ - IF !empty( ::qCurGraphicsItem ) - ::qCurGraphicsItem:rotate( 10 ) - ENDIF - EXIT - CASE __buttonToBack_clicked__ - EXIT - CASE __buttonToFront_clicked__ - EXIT - CASE __buttonNew_clicked__ - EXIT - CASE __buttonOpen_clicked__ - ::openReport() - EXIT - CASE __buttonSave_clicked__ - ::saveReport() - EXIT - CASE __buttonClose_clicked__ - EXIT - CASE __buttonPrint_clicked__ - ::printPreview() - EXIT - CASE __buttonGrid_clicked__ - ::qScene:setShowGrid( ::qToolbarAlign:setItemChecked( "Grid" ) ) - EXIT - CASE __buttonZoom_clicked__ - DO CASE - CASE p == 1 - ::zoom( HBQT_GRAPHICSVIEW_ZOOM_IN ) - CASE p == 2 - ::zoom( HBQT_GRAPHICSVIEW_ZOOM_OUT ) - CASE p == 3 - ::zoom( HBQT_GRAPHICSVIEW_ZOOM_WYSIWYG ) - CASE p == 4 - ::zoom( HBQT_GRAPHICSVIEW_ZOOM_ORIGINAL ) - ENDCASE - EXIT - ENDSWITCH - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:objectSelected( hqrObject ) - LOCAL cName := hqrObject:cName - - IF hb_hHasKey( ::hObjTree, cName ) - ::qCurGraphicsItem := ::hItems[ cName ] - ::qTreeObjects:setCurrentItem( ::hObjTree[ cName ] ) - ELSE - ::qCurGraphicsItem := NIL - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:presentBlankPage() - - aadd( ::aPages, { "Page_1" } ) - - ::qScene:setPageSize( QPrinter_A4 ) - ::qScene:setOrientation( QPrinter_Portrait ) - - ::updateObjectsTree( "ReportName", NIL, "Report" ) - ::updateObjectsTree( "Page", "Report", "Page_1" ) - - ::addSource( "Customer", { { "Title" ,"C",35,0 }, { "Street","C",20,0 }, { "Revenue","N",12,2 } } ) - ::addSource( "Invoice" , { { "Number","C",10,0 }, { "Date" ,"D",08,0 }, { "Amount" ,"N",12,2 } } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:openReport() - LOCAL qFileDlg, qList, cFile - - qFileDlg := QFileDialog( ::oWidget ) - - qFileDlg:setAcceptMode( QFileDialog_AcceptOpen ) - qFileDlg:setFileMode( QFileDialog_AnyFile ) - qFileDlg:setViewMode( QFileDialog_List ) - qFileDlg:setNameFilter( "HB Reports (*.hqr)" ) - - IF qFileDlg:exec() == 1 - qList := qFileDlg:selectedFiles() - cFile := qList:at( 0 ) - IF !empty( cFile ) .AND. lower( right( cFile, 4 ) ) == ".hqr" - ::loadReport( cFile ) - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:saveReport( lSaveAs ) - LOCAL cFile, cBuffer, qFileDlg, qList, cExt - LOCAL lSave := .t. - - DEFAULT lSaveAs TO .f. - - IF lSaveAs .OR. ::lNew .OR. empty( ::cSaved ) - qFileDlg := QFileDialog( ::oWidget ) - - qFileDlg:setAcceptMode( QFileDialog_AcceptSave ) - qFileDlg:setFileMode( QFileDialog_AnyFile ) - qFileDlg:setViewMode( QFileDialog_List ) - qFileDlg:setNameFilter( "HB Reports (*.hqr)" ) - - IF qFileDlg:exec() == 1 - qList := qFileDlg:selectedFiles() - cFile := qList:at( 0 ) - hb_fNameSplit( cFile, , , @cExt ) - IF empty( cExt ) - cFile += ".hqr" - ENDIF - - ::cSaved := cFile - ELSE - lSave := .f. - ENDIF - ENDIF - - IF lSave .AND. !empty( ::cSaved ) - cBuffer := ::buildReportStream() - hb_memowrit( ::cSaved, hb_strtoutf8( cBuffer ) ) - - RETURN hb_fileExists( ::cSaved ) - ENDIF - - RETURN .f. - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:prepareReport() - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:toString() - RETURN ::buildReportStream() - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:buildReportStream() - LOCAL txt_:= {}, n, a_, s, oWidget, qPos, qTran - - aadd( txt_, "[GENERAL]" ) - aadd( txt_, "" ) - aadd( txt_, "Symposis" + "=" + "HBReportsManager" ) - aadd( txt_, "Version" + "=" + hb_ntos( ::version ) ) - aadd( txt_, "Title" + "=" + ::title ) - aadd( txt_, "Author" + "=" + ::author ) - aadd( txt_, "DateCreated" + "=" + dtos( ::created ) ) - aadd( txt_, "DateModified" + "=" + dtos( ::modified ) ) - aadd( txt_, "Properties" + "=" + "" ) - aadd( txt_, "" ) - aadd( txt_, "[SOURCES]" ) - aadd( txt_, "" ) - FOR EACH a_ IN ::aSources - n := a_:__enumIndex() - aadd( txt_, INI_KEY( "source", n ) + a_[ 1 ] + "," + rmgr_a2arrayStr( a_[ 2 ] ) ) - NEXT - aadd( txt_, "" ) - aadd( txt_, "[PAGES]" ) - aadd( txt_, "" ) - FOR EACH a_ IN ::aPages - n := a_:__enumIndex() - aadd( txt_, INI_KEY( "page", n ) + rmgr_a2arrayStr( a_ ) ) - NEXT - aadd( txt_, "" ) - aadd( txt_, "[OBJECTS]" ) - aadd( txt_, "" ) - FOR EACH a_ IN ::aObjects - n := a_:__enumIndex() - IF hb_hHasKey( ::hItems, a_[ 3 ] ) - oWidget := ::hItems[ a_[ 3 ] ]:oWidget - qPos := oWidget:scenePos() - qTran := oWidget:transform() - - a_[ 5 ] := { { 0, 0, oWidget:width(), oWidget:height() }, ; - { qPos:x(), qPos:y() }, ; - { qTran:m11(), qTran:m12(), qTran:m13(), qTran:m21(), qTran:m22(), qTran:m23(), qTran:m31(), qTran:m32(), qTran:m33() }, ; - } - - aadd( txt_, INI_KEY( "object", n ) + rmgr_a2arrayStr( a_ ) ) - ENDIF - NEXT - aadd( txt_, "" ) - - s := "" - aeval( txt_, {|e| s += e + chr( 13 ) + chr( 10 ) } ) - - RETURN s - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:parseBuffer( cBuffer ) - LOCAL aTxt, s, nPart, cKey, cVal - - aTxt := hb_ATokens( StrTran( cBuffer, Chr( 13 ) ), Chr( 10 ) ) - - FOR EACH s IN aTxt - s := alltrim( s ) - IF empty( s ) - LOOP - ENDIF - - SWITCH Upper( s ) - CASE "[GENERAL]" ; nPart := "HQR_GENERAL" ; EXIT - CASE "[SOURCES]" ; nPart := "HQR_SOURCES" ; EXIT - CASE "[PAGES]" ; nPart := "HQR_PAGES" ; EXIT - CASE "[OBJECTS]" ; nPart := "HQR_OBJECTS" ; EXIT - OTHERWISE - DO CASE - CASE nPart == "HQR_GENERAL" - CASE nPart == "HQR_SOURCES" - IF rmgr_keyValuePair( s, @cKey, @cVal, "=" ) - IF rmgr_keyValuePair( cVal, @cKey, @cVal, "," ) - aadd( ::aRptSources, { "Source", rmgr_evalAsArray( cVal ) } ) - ENDIF - ENDIF - CASE nPart == "HQR_PAGES" - IF rmgr_keyValuePair( s, @cKey, @cVal, "=" ) - aadd( ::aRptPages, { "Page", rmgr_evalAsArray( cVal ) } ) - ENDIF - CASE nPart == "HQR_OBJECTS" - IF rmgr_keyValuePair( s, @cKey, @cVal, "=" ) - aadd( ::aRptObjects, rmgr_evalAsArray( cVal ) ) - ENDIF - ENDCASE - ENDSWITCH - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:loadReport( xData ) - LOCAL cBuffer, a_, d_, n, cName, cAlias, cField, oWidget - LOCAL aGeo, aPt, aTran - LOCAL qGeo, qPt, qTran - - ::clear() - - IF empty( xData ) - ::presentBlankPage() - ::lNew := .t. - - ELSE - ::lNew := .f. - - IF Len( xData ) <= 300 .AND. hb_fileExists( xData ) - ::cSaved := xData - cBuffer := hb_utf8tostr( hb_memoread( xData ) ) - - IF !empty( ::qParent ) - ::qParent:setWindowTitle( "HbReportsManager : " + ::cSaved ) - ENDIF - ELSE - ::cSaved := "" - cBuffer := xData - ENDIF - - ::parseBuffer( cBuffer ) - - ::qScene:setPageSize( QPrinter_A4 ) - ::qScene:setOrientation( QPrinter_Portrait ) - - ::updateObjectsTree( "ReportName", NIL, "Report" ) - ::updateObjectsTree( "Page", "Report", "Page_1" ) - - FOR EACH a_ IN ::aRptSources - ::addSource( a_[ 1 ], a_[ 2 ] ) - NEXT - - FOR EACH a_ IN ::aRptObjects - d_:= a_[ 5 ] ; aGeo := d_[ 1 ] ; aPt := d_[ 2 ] ; aTran := d_[ 3 ] - - qGeo := QRectF( aGeo[ 1 ], aGeo[ 2 ], aGeo[ 3 ], aGeo[ 4 ] ) - qPt := QPointF( aPt[ 1 ], aPt[ 2 ] ) - - SWITCH a_[ 1 ] - CASE "Object" - oWidget := ::addObject( a_[ 4 ], qPt, qGeo ) - EXIT - CASE "Field" - cName := a_[ 3 ] ; n := at( "...", cName ) ; cAlias := substr( cName, 1, n-1 ) - cField := substr( cName, n + 3 ) ; n := at( "_", cField ) ; cField := substr( cField, 1, n-1 ) - oWidget := ::addField( cAlias, cField, qPt, qGeo ) - EXIT - ENDSWITCH - - qTran := QTransform() - qTran : setMatrix( aTran[ 1 ], aTran[ 2 ], aTran[ 3 ], aTran[ 4 ], aTran[ 5 ], aTran[ 6 ], aTran[ 7 ], aTran[ 8 ], aTran[ 9 ] ) - oWidget : setTransform( qTran ) - NEXT - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:addObject( cType, qPos, qGeo ) - LOCAL cName, qGrad, oHqrObject, aGeo, aPos - - aPos := iif( empty( qPos ), NIL, { qPos:x(), qPos:y() } ) - aGeo := iif( empty( qGeo ), NIL, { qGeo:x(), qGeo:y(), qGeo:width(), qGeo:height() } ) - - cName := cType + "_" + hb_ntos( ::getNextID( cType ) ) - - oHqrObject := HqrGraphicsItem():new( Self, /*cParent*/, cType, cName, aPos, aGeo ) - - SWITCH cType - CASE "Image" - oHqrObject:setPixmap( QPixmap( Hbp_image( "harbour" ) ) ) - oHqrObject:setBorderWidth( 2 ) - EXIT - CASE "Chart" - EXIT - CASE "Gradient" - qGrad := QLinearGradient() - qGrad:setColorAt( 0, QColor( 195,225,255 ) ) - qGrad:setColorAt( 1, QColor( Qt_darkBlue ):darker( 150 ) ) - qGrad:setCoordinateMode( QGradient_StretchToDeviceMode ) - oHqrObject:setBrush( QBrush( qGrad ) ) - oHqrObject:setPen( QPen( Qt_NoPen ) ) - EXIT - CASE "Barcode" - oHqrObject:setText( "Harbour" ) - oHqrObject:setBarcodeType( HQR_BARCODE_3OF9 ) - EXIT - CASE "Text" - oHqrObject:setText( "Harbour" ) - EXIT - ENDSWITCH - - ::hItems[ cName ] := oHqrObject - ::updateObjectsTree( "Object", "Page_1", cName, cType ) - aadd( ::aObjects, { "Object", "Page_1", cName, cType, {} } ) - - RETURN oHqrObject:oWidget - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:addField( cAlias, cField, qPos, qGeo ) - LOCAL cName, oHqrObject, aGeo, aPos - - aPos := iif( empty( qPos ), NIL, { qPos:x(), qPos:y() } ) - aGeo := iif( empty( qGeo ), NIL, { qGeo:x(), qGeo:y(), qGeo:width(), qGeo:height() } ) - - cName := cAlias + "..." + cField - cName := cName + "_" + hb_ntos( ::getNextID( cName ) ) - - oHqrObject := HqrGraphicsItem():new( Self, /*cParent*/, "Field", cName, aPos, aGeo ) - - oHqrObject:setText( cName ) - - ::hItems[ cName ] := oHqrObject - ::updateObjectsTree( "Field", "Page_1", cName, "Field" ) - aadd( ::aObjects, { "Field", "Page_1", cName, "Field", {} } ) - - RETURN oHqrObject:oWidget - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:addSource( cAlias, aStruct ) - LOCAL qItem, qItmC, b_ - - qItem := QTreeWidgetItem() - qItem:setText( 0, cAlias ) - ::qTreeData:addTopLevelItem( qItem ) - - FOR EACH b_ IN aStruct - qItmC := QTreeWidgetItem() - qItmC:setText( 0, b_[ 1 ] ) - qItem:addChild( qItmC ) - qItem:setExpanded( .t. ) - NEXT - - aadd( ::aSources, { cAlias, aStruct } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:clear() - LOCAL oHrqObject, qObj - - FOR EACH oHrqObject IN ::hItems - qObj := oHrqObject:oWidget - ::qScene:removeItem( qObj ) - qObj := NIL - NEXT - ::hItems := {=>} - - ::qTreeObjects:clear() - ::qTreeData:clear() - - ::aObjects := {} - ::aPages := {} - ::aSources := {} - - ::aRptObjects := {} - ::aRptPages := {} - ::aRptSources := {} - - hIDs := {=>} - - ::qScene:invalidate() - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:updateObjectsTree( cType, cParent, cName, cSubType ) - LOCAL qParent, qItem - - DO CASE - CASE cType == "ReportName" - qItem := QTreeWidgetItem() ; qItem:setText( 0, cName ) - qItem:setIcon( 0, QIcon( Hbp_Image( "r-report" ) ) ) - ::qTreeObjects:addTopLevelItem( qItem ) - ::hObjTree[ cName ] := qItem - qItem:setExpanded( .t. ) - - CASE cType == "Page" .OR. cType == "Object" .OR. cType == "Field" - IF hb_hHasKey( ::hObjTree, cParent ) - qParent := ::hObjTree[ cParent ] - ENDIF - IF !empty( qParent ) - IF hb_hHasKey( ::hObjTree, cName ) - // - ENDIF - qItem := QTreeWidgetItem() ; qItem:setText( 0, cName ) - qParent:addChild( qItem ) - ::hObjTree[ cName ] := qItem - - IF cType == "Page" - qItem:setIcon( 0, QIcon( Hbp_Image( "r-page" ) ) ) - ELSEIF cType == "Object" - qItem:setIcon( 0, QIcon( ::getImageOfType( cSubType ) ) ) - ELSEIF cType == "Field" - qItem:setIcon( 0, QIcon( ::getImageOfType( "Field" ) ) ) - ENDIF - - qParent:setExpanded( .t. ) - ENDIF - ENDCASE - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:zoom( nMode ) - - SWITCH nMode - CASE HBQT_GRAPHICSVIEW_ZOOM_IN - ::qView:scale( 1.1, 1.1 ) - EXIT - CASE HBQT_GRAPHICSVIEW_ZOOM_OUT - ::qView:scale( 0.9, 0.9 ) - EXIT - CASE HBQT_GRAPHICSVIEW_ZOOM_WYSIWYG - ::qView:resetMatrix() - ::qView:scale( ::nScreenDpiX / 25.4 / 10.0, ::nScreenDpiY / 25.4 / 10.0 ) - ::qView:centerOn( 0.0, 0.0 ) - EXIT - CASE HBQT_GRAPHICSVIEW_ZOOM_ORIGINAL - ::qView:resetMatrix() - ::qView:centerOn( 0.0, 0.0 ) - EXIT - ENDSWITCH - - RETURN sELF - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:contextMenuScene( p1 ) - LOCAL qMenu, qAct, aAct := {} - - qMenu := QMenu( ::qView ) - aadd( aAct, qMenu:addAction( "Refresh" ) ) - aadd( aAct, qMenu:addAction( "Zoom+" ) ) - - IF ! empty( qAct := qMenu:exec( p1:screenPos() ) ) - SWITCH qAct:text() - CASE "Refresh" - EXIT - CASE "Zoom+" - EXIT - ENDSWITCH - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:contextMenuItem( p1, p2 ) - LOCAL qMenu, qAct, aAct := {} - - HB_SYMBOL_UNUSED( p2 ) - - qMenu := QMenu() - aadd( aAct, qMenu:addAction( "Cut" ) ) - aadd( aAct, qMenu:addAction( "Copy" ) ) - - IF ! empty( qAct := qMenu:exec( p1:screenPos() ) ) - SWITCH qAct:text() - CASE "Cut" - EXIT - CASE "Copy" - EXIT - ENDSWITCH - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:buildTabBar() - - ::qTabBar := QTabBar() - ::qTabBar:setShape( QTabBar_TriangularNorth ) - - ::qTabBar:addTab( "Code" ) - ::qTabBar:addTab( "Dialogs" ) - ::qTabBar:addTab( "Page_1" ) - - ::qTabBar:connect( "currentChanged(int)", {|p| ::execEvent( __tabBar_currentChanged__, p ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:buildStacks() - - ::qStack := QStackedWidget() - - ::qWidget1 := QWidget() - ::qStack:addWidget( ::qWidget1 ) - - ::qWidget2 := QWidget() - ::qStack:addWidget( ::qWidget2 ) - - ::qWidget3 := QWidget() - ::qStack:addWidget( ::qWidget3 ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:buildStatusBar() - LOCAL qLabel - - ::qStatus := QStatusBar() - ::qStatus:setSizeGripEnabled( .f. ) - - qLabel := QLabel(); qLabel:setMinimumWidth( 40 ) - ::qStatus:addPermanentWidget( qLabel, 0 ) - aadd( ::aStatusPnls, qLabel ) - qLabel:setText( "Ready" ) - - qLabel := QLabel(); qLabel:setMinimumWidth( 40 ) - ::qStatus:addPermanentWidget( qLabel, 0 ) - aadd( ::aStatusPnls, qLabel ) - - qLabel := QLabel(); qLabel:setMinimumWidth( 40 ) - ::qStatus:addPermanentWidget( qLabel, 0 ) - aadd( ::aStatusPnls, qLabel ) - - qLabel := QLabel(); qLabel:setMinimumWidth( 40 ) - ::qStatus:addPermanentWidget( qLabel, 1 ) - aadd( ::aStatusPnls, qLabel ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:getImageOfType( cType ) - LOCAL cImage - - DO CASE - CASE cType == "Image" ; cImage := "f-image" - CASE cType == "Barcode" ; cImage := "f_barcode" - CASE cType == "Chart" ; cImage := "f_chart" - CASE cType == "Gradient" ; cImage := "f_gradient" - CASE cType == "Text" ; cImage := "text" - CASE cType == "Field" ; cImage := "text" - CASE cType == "Rectangle" ; cImage := "rp_rectangle" - CASE cType == "RoundRect" ; cImage := "rp_roundrectangle" - CASE cType == "Ellipse" ; cImage := "rp_ellipse" - CASE cType == "LineH" ; cImage := "rp_linehorz" - CASE cType == "LineV" ; cImage := "rp_linevert" - CASE cType == "LineDR" ; cImage := "rp_linediagright" - CASE cType == "LineDL" ; cImage := "rp_linediagleft" - CASE cType == "Arc" ; cImage := "rp_arc" - CASE cType == "Chord" ; cImage := "rp_chord" - CASE cType == "Diamond" ; cImage := "rp_diamond" - CASE cType == "Triangle" ; cImage := "rp_triangle" - ENDCASE - - RETURN Hbp_Image( cImage ) - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:getNextID( cType ) - - IF ! hb_hHasKey( hIDs, cType ) - hIDs[ cType ] := 0 - ENDIF - - RETURN ++hIDs[ cType ] - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:buildToolbar() - LOCAL qTBar - - qTBar := XbpToolbar():new() - qTBar:orientation := Qt_Horizontal - qTBar:imageWidth := 16 - qTBar:imageHeight := 16 - qTBar:create() - qTBar:buttonClick := {|oButton| iif( HB_ISBLOCK( oButton:key ), Eval( oButton:key ), NIL ) } - - qTBar:addItem( { "New" , "New Report" , QIcon( Hbp_Image( "new" ) ), {|| ::execEvent( __buttonNew_clicked__ ) } } ) - qTBar:addItem( { "Open" , "Open Report" , QIcon( Hbp_Image( "open3" ) ), {|| ::execEvent( __buttonOpen_clicked__ ) } } ) - qTBar:addItem( { "Save" , "Save Report" , QIcon( Hbp_Image( "save3" ) ), {|| ::execEvent( __buttonSave_clicked__ ) } } ) - qTBar:addItem( { "Close" , "Close Report" , QIcon( Hbp_Image( "close3" ) ), {|| ::execEvent( __buttonClose_clicked__ ) } } ) - qTBar:addItem( { "Print" , "Print Report" , QIcon( Hbp_Image( "print" ) ), {|| ::execEvent( __buttonPrint_clicked__ ) } } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - qTBar:addItem( { "ToBack" , "Push to back" , QIcon( Hbp_Image( "toback" ) ), {|| ::execEvent( __buttonToBack_clicked__ ) }, .f., .f. } ) - qTBar:addItem( { "ToFront" , "Bring to front" , QIcon( Hbp_Image( "tofront" ) ), {|| ::execEvent( __buttonToFront_clicked__ ) }, .f., .f. } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - qTBar:addItem( { "RotateL" , "Rotate anti-clock wise", QIcon( Hbp_Image( "unload_1" ) ), {|| ::execEvent( __buttonRotateL_clicked__ ) }, .f., .f. } ) - qTBar:addItem( { "RotateR" , "Rotate clock wise" , QIcon( Hbp_Image( "load_1" ) ), {|| ::execEvent( __buttonRotateR_clicked__ ) }, .f., .f. } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - qTBar:addItem( { "Portrait" , "Portrait orientation" , QIcon( Hbp_Image( "r-portrait" ) ), {|| ::execEvent( __buttonPortrait_clicked__ ) }, .f., .f. } ) - qTBar:addItem( { "Landscape", "Landscape orientation" , QIcon( Hbp_Image( "r-landscape" ) ), {|| ::execEvent( __buttonLandscape_clicked__ ) }, .f., .f. } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - - ::qToolbar := qTBar - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:buildToolbarAlign() - LOCAL qTBar - - qTBar := XbpToolbar():new() - qTBar:orientation := Qt_Horizontal - qTBar:imageWidth := 16 - qTBar:imageHeight := 16 - qTBar:create() - qTBar:buttonClick := {|oButton| iif( HB_ISBLOCK( oButton:key ), Eval( oButton:key ), NIL ) } - - qTBar:addItem( { "FontG" , "Font" , QIcon( Hbp_Image( "f-generic" ) ), {|| ::execEvent( __buttonFontG_clicked__ ) }, .f., .f. } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - qTBar:addItem( { "FontB" , "Text Bold" , QIcon( Hbp_Image( "f-bold-1" ) ), {|| ::execEvent( __buttonFontB_clicked__ ) } } ) - qTBar:addItem( { "FontI" , "Text Italic" , QIcon( Hbp_Image( "f-italic-1" ) ), {|| ::execEvent( __buttonFontI_clicked__ ) } } ) - qTBar:addItem( { "FontU" , "Text Underlined" , QIcon( Hbp_Image( "f-underline-1" ) ), {|| ::execEvent( __buttonFontU_clicked__ ) } } ) - qTBar:addItem( { "FontS" , "Text Strikethrough", QIcon( Hbp_Image( "f-strike-1" ) ), {|| ::execEvent( __buttonFontS_clicked__ ) } } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - qTBar:addItem( { "JustL" , "Align left" , QIcon( Hbp_Image( "f_align_left" ) ), {|| ::execEvent( __buttonJustL_clicked__ ) } } ) - qTBar:addItem( { "JustC" , "Align center" , QIcon( Hbp_Image( "f_align_center" ) ), {|| ::execEvent( __buttonJustC_clicked__ ) } } ) - qTBar:addItem( { "JustR" , "Align right" , QIcon( Hbp_Image( "f_align_right" ) ), {|| ::execEvent( __buttonJustR_clicked__ ) } } ) - qTBar:addItem( { "JustJ" , "Align justify" , QIcon( Hbp_Image( "f_align_justify" ) ), {|| ::execEvent( __buttonJustJ_clicked__ ) } } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - qTBar:addItem( { "JustT" , "Align top" , QIcon( Hbp_Image( "f_align_top" ) ), {|| ::execEvent( __buttonJustT_clicked__ ) } } ) - qTBar:addItem( { "JustM" , "Align middle" , QIcon( Hbp_Image( "f_align_middle" ) ), {|| ::execEvent( __buttonJustM_clicked__ ) } } ) - qTBar:addItem( { "JustB" , "Align bottom" , QIcon( Hbp_Image( "f_align_bottom" ) ), {|| ::execEvent( __buttonJustB_clicked__ ) } } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - qTBar:addItem( { "BoxT" , "Box-frame top" , QIcon( Hbp_Image( "f_box_top" ) ), {|| ::execEvent( __buttonBoxT_clicked__ ) }, .t., .F. } ) - qTBar:addItem( { "BoxL" , "Box-frame left" , QIcon( Hbp_Image( "f_box_left" ) ), {|| ::execEvent( __buttonBoxL_clicked__ ) }, .t., .f. } ) - qTBar:addItem( { "BoxB" , "Box-frame bottom" , QIcon( Hbp_Image( "f_box_bottom" ) ), {|| ::execEvent( __buttonBoxB_clicked__ ) }, .t., .f. } ) - qTBar:addItem( { "BoxR" , "Box-frame right" , QIcon( Hbp_Image( "f_box_right" ) ), {|| ::execEvent( __buttonBoxR_clicked__ ) }, .t., .f. } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - qTBar:addItem( { "BoxA" , "Box-frame all" , QIcon( Hbp_Image( "f_box_all" ) ), {|| ::execEvent( __buttonBoxA_clicked__ ) } } ) - qTBar:addItem( { "BoxP" , "No box-frame" , QIcon( Hbp_Image( "f_box_plain" ) ), {|| ::execEvent( __buttonBoxP_clicked__ ) } } ) - qTBar:addItem( { "BoxS" , "Box shadowed" , QIcon( Hbp_Image( "f_box_shadow" ) ), {|| ::execEvent( __buttonBoxS_clicked__ ) } } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - qTBar:addItem( { "ZoomIn" , "Zoom In" , QIcon( Hbp_Image( "zoomin3" ) ), {|| ::execEvent( __buttonZoom_clicked__, 1 ) } } ) - qTBar:addItem( { "ZoomOut", "Zoom Out" , QIcon( Hbp_Image( "zoomout3" ) ), {|| ::execEvent( __buttonZoom_clicked__, 2 ) } } ) - qTBar:addItem( { "ZoomWYS", "Zoom WYSIWYG" , QIcon( Hbp_Image( "zoomin" ) ), {|| ::execEvent( __buttonZoom_clicked__, 3 ) } } ) - qTBar:addItem( { "ZoomOrg", "Zoom Original" , QIcon( Hbp_Image( "zoomout" ) ), {|| ::execEvent( __buttonZoom_clicked__, 4 ) } } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - qTBar:addItem( { "Grid" , "Show Grid" , QIcon( Hbp_Image( "grid" ) ), {|| ::execEvent( __buttonGrid_clicked__ ) }, .t., .f. } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - - ::qToolbarAlign := qTBar - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:buildToolbarLeft() - LOCAL qTBar - - qTBar := XbpToolbar():new() - qTBar:orientation := Qt_Vertical - qTBar:imageWidth := 16 - qTBar:imageHeight := 16 - qTBar:create() - qTBar:buttonClick := {|oButton| iif( HB_ISBLOCK( oButton:key ), Eval( oButton:key ), NIL ) } - - ::qToolbarL := qTBar - - qTBar:addItem( { "Image" , "Image" , QIcon( Hbp_Image( "f-image" ) ), {|| ::execEvent( __buttonNew_clicked__ ) }, .t., .t. } ) - qTBar:addItem( { "Chart" , "Chart" , QIcon( Hbp_Image( "f_chart" ) ), {|| ::execEvent( __buttonNew_clicked__ ) }, .t., .t. } ) - qTBar:addItem( { "Gradient", "Gradient", QIcon( Hbp_Image( "f_gradient" ) ), {|| ::execEvent( __buttonNew_clicked__ ) }, .t., .t. } ) - qTBar:addItem( { "Barcode" , "Barcode" , QIcon( Hbp_Image( "f_barcode" ) ), {|| ::execEvent( __buttonNew_clicked__ ) }, .t., .t. } ) - qTBar:addItem( { "Text" , "Text" , QIcon( Hbp_Image( "text" ) ), {|| ::execEvent( __buttonNew_clicked__ ) }, .t., .t. } ) - qTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) - qTBar:addItem( { "Shapes" , "Shapes" , QIcon( Hbp_Image( "rp_shapes" ) ), {|| ::execEvent( __buttonShapes_clicked__ ) }, .t., .f. } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:execMenuShapes() - - IF empty( ::qShapesMenu ) - ::qShapesMenu := QMenu() - - ::aShapesAct[ SHP_ACT_RECTANGLE ] := ::qShapesMenu:addAction( QIcon( Hbp_Image( "rp_rectangle" ) ), "Rectangle" ) - ::aShapesAct[ SHP_ACT_ROUNDRECT ] := ::qShapesMenu:addAction( QIcon( Hbp_Image( "rp_roundrectangle") ), "Rounded Rectangle" ) - ::aShapesAct[ SHP_ACT_ELLIPSE ] := ::qShapesMenu:addAction( QIcon( Hbp_Image( "rp_ellipse" ) ), "Ellipse" ) - ::aShapesAct[ SHP_ACT_LINEHORZ ] := ::qShapesMenu:addAction( QIcon( Hbp_Image( "rp_linehorz" ) ), "Horizontal Line" ) - ::aShapesAct[ SHP_ACT_LINEVERT ] := ::qShapesMenu:addAction( QIcon( Hbp_Image( "rp_linevert" ) ), "Vertical Line" ) - ::aShapesAct[ SHP_ACT_LINEDIAGRIGHT ] := ::qShapesMenu:addAction( QIcon( Hbp_Image( "rp_linediagright" ) ), "Diagonal Line Right" ) - ::aShapesAct[ SHP_ACT_LINEDIAGLEFT ] := ::qShapesMenu:addAction( QIcon( Hbp_Image( "rp_linediagleft" ) ), "Diagonal Line Left" ) - ::aShapesAct[ SHP_ACT_ARC ] := ::qShapesMenu:addAction( QIcon( Hbp_Image( "rp_arc" ) ), "Arc" ) - ::aShapesAct[ SHP_ACT_CHORD ] := ::qShapesMenu:addAction( QIcon( Hbp_Image( "rp_chord" ) ), "Chord" ) - ::aShapesAct[ SHP_ACT_DIAMOND ] := ::qShapesMenu:addAction( QIcon( Hbp_Image( "rp_diamond" ) ), "Diamond" ) - ::aShapesAct[ SHP_ACT_TRIANGLE ] := ::qShapesMenu:addAction( QIcon( Hbp_Image( "rp_triangle" ) ), "Triangle" ) - - ::qShapesMenu:connect( QEvent_MouseButtonPress , {|p| ::execEvent( __QEvent_MousePressMenu__ , p ) } ) - ::qShapesMenu:connect( QEvent_MouseMove , {|p| ::execEvent( __QEvent_MouseMoveMenu__ , p ) } ) - ::qShapesMenu:connect( QEvent_MouseButtonRelease, {|p| ::execEvent( __QEvent_MouseReleaseMenu__, p ) } ) - ENDIF - - ::qShapesMenu:exec( QCursor():pos() ) - - ::qToolbarL:setItemChecked( "Shapes", .f. ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -/* -STATIC FUNCTION rmgr_xtos( x ) - SWITCH valtype( x ) - CASE "C" ; RETURN x - CASE "D" ; RETURN dtos( x ) - CASE "L" ; RETURN iif( x, "YES", "NO" ) - CASE "N" ; RETURN hb_ntos( x ) - ENDSWITCH - RETURN "" - -STATIC FUNCTION rmgr_array2String( aArray ) - LOCAL a_, s, x - - s := "" - FOR EACH a_ IN aArray - FOR EACH x IN a_ - s += rmgr_xtos( x ) + " " - NEXT - s := trim( s ) + "," - NEXT - - RETURN s -*/ - -STATIC FUNCTION rmgr_a2arrayStr( aArray ) - LOCAL s, x - - s := "{" - FOR EACH x IN aArray - SWITCH valtype( x ) - CASE "C" - s += '"' + x + '"' ; EXIT - CASE "N" - s += hb_ntos( x ) ; EXIT - CASE "D" - s += "stod(" + dtos( x ) + ")" ; EXIT - CASE "L" - s += iif( x, ".t.", ".f." ) ; EXIT - CASE "A" - s += rmgr_a2arrayStr( x ) ; EXIT - OTHERWISE - s += "NIL" ; EXIT - ENDSWITCH - s += "," - NEXT - s := iif( Len( s ) == 1, s, substr( s, 1, len( s ) - 1 ) ) + "}" - - RETURN s - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION rmgr_generateNextColor() - RETURN QColor( hb_random( 0,255 ), hb_random( 0,255 ), hb_random( 0,255 ), 255 ) - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION rmgr_keyValuePair( s, cKey, cVal, cDlm ) - LOCAL n - - DEFAULT cDlm TO "=" - - IF ( n := at( cDlm, s ) ) > 0 - cKey := alltrim( substr( s, 1, n - 1 ) ) - cVal := alltrim( substr( s, n + 1 ) ) - RETURN .t. - ENDIF - RETURN .f. - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION rmgr_evalAsArray( cStr ) - LOCAL a_, bErr := ErrorBlock( {|| break() } ) - - BEGIN SEQUENCE - a_:= Eval( hb_macroBlock( cStr ) ) - RECOVER - a_:= {} - ENDSEQUENCE - - ErrorBlock( bErr ) - RETURN a_ - -/*----------------------------------------------------------------------*/ -/* */ -/* NOTE: the code below is works of someone else I do not remmeber */ -/* the name. Please let me know who that is so due credits be */ -/* given to him. I had downloaded this code many years back */ -/* and adopted to Vouch32 library and Vouch32 Active-X Server. */ - -STATIC FUNCTION fetchBarString( cCode, lCheck, nType ) - STATIC cCars := '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%' - STATIC aBarras := { '1110100010101110',; // 1 - '1011100010101110',; // 2 - '1110111000101010',; // 3 - '1010001110101110',; // 4 - '1110100011101010',; // 5 - '1011100011101010',; // 6 - '1010001011101110',; // 7 - '1110100010111010',; // 8 - '1011100010111010',; // 9 - '1010001110111010',; // 0 - '1110101000101110',; // A - '1011101000101110',; // B - '1110111010001010',; // C - '1010111000101110',; // D - '1110101110001010',; // E - '1011101110001010',; - '1010100011101110',; - '1110101000111010',; - '1011101000111010',; - '1010111000111010',; - '1110101010001110',; // K - '1011101010001110',; - '1110111010100010',; - '1010111010001110',; - '1110101110100010',; - '1011101110100010',; // p - '1010101110001110',; - '1110101011100010',; - '1011101011100010',; - '1010111011100010',; - '1110001010101110',; - '1000111010101110',; - '1110001110101010',; - '1000101110101110',; - '1110001011101010',; - '1000111011101010',; // Z - '1000101011101110',; // - - '1110001010111010',; // . - '1000111010111010',; // ' ' - '1000101110111010',; // * - '1000100010100010',; - '1000100010100010',; - '1000101000100010',; - '1010001000100010' } - - LOCAL cCar, m, n, cBarra := '', nCheck := 0 - - DEFAULT lCheck TO .f. - DEFAULT nType TO HQR_BARCODE_3OF9 - - DO CASE - CASE nType == HQR_BARCODE_3OF9 - cCode := upper( cCode ) - IF Len( cCode ) > 32 - cCode := left( cCode,32 ) - ENDIF - - cCode := '*' + cCode + '*' - FOR n := 1 TO Len( cCode ) - cCar := substr( cCode,n,1 ) - m := at( cCar, cCars ) - IF m > 0 - cBarra := cBarra + aBarras[ m ] - nCheck += ( m-1 ) - ENDIF - NEXT - - IF lCheck - cBarra += aBarras[ nCheck % 43 + 1 ] - ENDIF - ENDCASE - - RETURN cBarra - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:printPreview( qPrinter ) - LOCAL qDlg //, qInfo //, qList, i, qStr - - qPrinter := QPrinter() - -#if 0 - qInfo := QPrinterInfo( qPrinter ) - qList := qInfo:availablePrinters() - FOR i := 0 TO qList:size() - 1 - qStr := qList:at( i ) - NEXT -#endif - qPrinter:setOutputFormat( QPrinter_PdfFormat ) - qPrinter:setOrientation( ::qScene:orientation() ) - qPrinter:setPaperSize( ::qScene:pageSize() ) - // qPrinter:setFullPage( .t. ) - - qDlg := QPrintPreviewDialog( qPrinter, ::qView ) - qDlg:connect( "paintRequested(QPrinter*)", {|p| ::paintRequested( p ) } ) - - qDlg:setWindowTitle( "HBReportGenerator : " + iif( !empty( ::cSaved ), ::cSaved, "Untitled" ) ) - qDlg:move( 20, 20 ) - qDlg:resize( 400, 600 ) - qDlg:exec() - qDlg:disconnect( "paintRequested(QPrinter*)" ) - - RETURN NIL //qStr - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:paintRequested( qPrinter ) - ::printReport( qPrinter ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbpReports:printReport( qPrinter ) - LOCAL qPainter, a_, qRectF, oHqrObject, qT - - qPainter := QPainter() - qPainter:begin( qPrinter ) - - qPainter:setWindow( ::qScene:paperRect() ) - qPainter:setViewPort( 0, 0, qPrinter:width(), qPrinter:height() ) - FOR EACH a_ IN ::aObjects - IF hb_hHasKey( ::hItems, a_[ 3 ] ) - oHqrObject := ::hItems[ a_[ 3 ] ] - qRectF := oHqrObject:geometry() - qRectF := QRectF( TO_MMS( qRectF:x() ), TO_MMS( qRectF:y() ), TO_MMS( qRectF:width() ), TO_MMS( qRectF:height() ) ) - - qT := oHqrObject:transform() -//HB_TRACE( HB_TR_DEBUG, qT:m11(), qT:m12(), qT:m13(), qT:m21(), qT:m22(), qT:m23(), qT:m31(), qT:m32(), qT:m33() ) - qT:translate( 0,0 ) - qPainter:resetMatrix() - qPainter:setWorldTransform( qT ) - - oHqrObject:draw( qPainter, qRectF, .f. ) - ENDIF - NEXT - qPainter:end() - - RETURN Self - -/*----------------------------------------------------------------------*/ -// HqrGraphicsItem() Class -/*----------------------------------------------------------------------*/ - -CLASS HqrGraphicsItem - - DATA oRM - DATA oWidget - DATA cParent - - /* Constructor data */ - DATA cType INIT "" - DATA cName INIT "" - - DATA nX INIT 0 - DATA nY INIT 0 - DATA aPos INIT {} - DATA aGeometry INIT {} - - /* Runtime data */ - DATA cText INIT "" - DATA qPen - DATA qBrush - DATA qGBrush - DATA qBgBrush - DATA qPixmap - DATA qFont - DATA xData - DATA qGeometry - - DATA nBarcodeType INIT HQR_BARCODE_3OF9 - DATA nTextFlags INIT Qt_AlignCenter - DATA nBorderWidth INIT 0 - DATA nLineStyle INIT HBQT_GRAPHICSITEM_LINE_HORIZONTAL - DATA nBackgroundMode INIT Qt_TransparentMode - DATA nOpacity INIT 100 - DATA nWidth INIT 200 - DATA nHeight INIT 100 - DATA nStartAngle INIT 30 - DATA nSpanAngle INIT 120 - DATA nLineType INIT HBQT_GRAPHICSITEM_LINE_HORIZONTAL - - DATA nPointSize INIT 3.5 - - METHOD new( oRM, cParent, cType, cName, aPos, aGeometry ) - METHOD execEvent( cEvent, p, p1, p2 ) - METHOD contextMenu( p1, p2 ) - METHOD update() - - ACCESS text() INLINE ::setText() - ACCESS textFlags() INLINE ::setTextFlags() - ACCESS pen() INLINE ::setPen() - ACCESS brush() INLINE ::setBrush() - ACCESS backgroundBrush() INLINE ::setBackgroundBrush() - ACCESS font() INLINE ::setFont() - ACCESS barcodeType() INLINE ::setBarcodeType() - ACCESS gradient() INLINE ::setBrush() - ACCESS pixmap() INLINE ::setPixmap() - ACCESS borderWidth() INLINE ::setBorderWidth() - ACCESS lineStyle() INLINE ::setLineStyle() - ACCESS backgroundMode() INLINE ::setBackgroundMode() - ACCESS opacity() INLINE ::setOpacity() - ACCESS width() INLINE ::setWidth() - ACCESS height() INLINE ::setHeight() - ACCESS geometry() INLINE ::setGeometry() - ACCESS pos() INLINE ::setPos() - ACCESS lineType() INLINE ::setLineType() - - METHOD setText( ... ) SETGET - METHOD setPen( ... ) SETGET - METHOD setBrush( ... ) SETGET - METHOD setBackgroundBrush( ... ) SETGET - METHOD setFont( ... ) SETGET - METHOD setGradient( ... ) SETGET - METHOD setPixmap( ... ) SETGET - METHOD setTextFlags( ... ) SETGET - METHOD setBarcodeType( ... ) SETGET - METHOD setBorderWidth( ... ) SETGET - METHOD setLineStyle( ... ) SETGET - METHOD setBackgroundMode( ... ) SETGET - METHOD setOpacity( ... ) SETGET - METHOD setWidth( ... ) SETGET - METHOD setHeight( ... ) SETGET - METHOD setGeometry( ... ) SETGET - METHOD setPos( ... ) SETGET - METHOD setLineType( ... ) SETGET - - METHOD draw( qPainter, qRectF, lDrawSelection ) - METHOD setupPainter( qPainter, lDrawSelection ) - METHOD drawBarcode( qPainter, qRectF ) - METHOD drawImage( qPainter, qRectF ) - METHOD drawChart( qPainter, qRect ) - METHOD drawText( qPainter, qRectF ) - METHOD drawField( qPainter, qRectF ) - METHOD drawGradient( qPainter, qRectF ) - METHOD drawLine( qPainter, qRect ) - METHOD drawRect( qPainter, qRectF ) - METHOD drawRoundRect( qPainter, qRectF ) - METHOD drawEllipse( qPainter, qRectF ) - METHOD drawPie( qPainter, qRectF ) - METHOD drawArc( qPainter, qRectF ) - METHOD drawChord( qPainter, qRectF ) - METHOD drawDiamond( qPainter, qRectF ) - METHOD drawTriangle( qPainter, qRectF ) - METHOD drawSelection( qPainter, qRect ) - - ERROR HANDLER OnError( ... ) - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:new( oRM, cParent, cType, cName, aPos, aGeometry ) - - HB_TRACE( HB_TR_DEBUG, "HqrGraphicsItem:new" ) - - ::oRM := oRM - ::cParent := cParent - ::cType := cType - ::cName := cName - ::aPos := aPos - ::aGeometry := aGeometry - - SWITCH cType - CASE "Image" - ::nWidth := 300 ; ::nHeight := 300 - ::oWidget := HBQGraphicsItem( HBQT_GRAPHICSITEM_PICTURE ) - EXIT - CASE "Chart" - ::nWidth := 400 ; ::nHeight := 250 - ::oWidget := HBQGraphicsItem( HBQT_GRAPHICSITEM_CHART ) - EXIT - CASE "Gradient" - ::nWidth := 300 ; ::nHeight := 50 - ::oWidget := HBQGraphicsItem( HBQT_GRAPHICSITEM_RECT ) - EXIT - CASE "Barcode" - ::nWidth := 300 ; ::nHeight := 200 - ::oWidget := HBQGraphicsItem( HBQT_GRAPHICSITEM_BARCODE ) - EXIT - CASE "Text" - ::nWidth := 300 ; ::nHeight := 50 - ::oWidget := HBQGraphicsItem( HBQT_GRAPHICSITEM_SIMPLETEXT )//, ::oRM:qScene ) - EXIT - CASE "Field" - ::nWidth := 300 ; ::nHeight := 50 - ::oWidget := HBQGraphicsItem( HBQT_GRAPHICSITEM_SIMPLETEXT ) - EXIT - // - CASE "Rectangle" - ::nWidth := 300 ; ::nHeight := 300 - ::oWidget := HBQGraphicsItem( HBQT_GRAPHICSITEM_RECT ) - EXIT - CASE "RoundRect" - ::nWidth := 300 ; ::nHeight := 300 - ::oWidget := HBQGraphicsItem( HBQT_GRAPHICSITEM_ROUNDRECT ) - EXIT - CASE "Ellipse" - ::nWidth := 300 ; ::nHeight := 300 - ::oWidget := HBQGraphicsItem( HBQT_GRAPHICSITEM_ELLIPSE ) - EXIT - CASE "Arc" - ::nWidth := 300 ; ::nHeight := 300 - ::oWidget := HBQGraphicsItem( HBQT_GRAPHICSITEM_ARC ) - EXIT - CASE "Chord" - ::nWidth := 300 ; ::nHeight := 300 - ::oWidget := HBQGraphicsItem( HBQT_GRAPHICSITEM_CHORD ) - EXIT - CASE "LineH" - ::nWidth := 300 ; ::nHeight := 50 - ::oWidget := HBQGraphicsItem( HBQT_GRAPHICSITEM_LINE ) - ::nLineType := HBQT_GRAPHICSITEM_LINE_HORIZONTAL - EXIT - CASE "LineV" - ::nWidth := 50 ; ::nHeight := 300 - ::oWidget := HBQGraphicsItem( HBQT_GRAPHICSITEM_LINE ) - ::nLineType := HBQT_GRAPHICSITEM_LINE_VERTICAL - EXIT - CASE "LineDR" - ::nWidth := 300 ; ::nHeight := 300 - ::oWidget := HBQGraphicsItem( HBQT_GRAPHICSITEM_LINE ) - ::nLineType := HBQT_GRAPHICSITEM_LINE_BACKWARDDIAGONAL - EXIT - CASE "LineDL" - ::nWidth := 300 ; ::nHeight := 300 - ::oWidget := HBQGraphicsItem( HBQT_GRAPHICSITEM_LINE ) - ::nLineType := HBQT_GRAPHICSITEM_LINE_FORWARDDIAGONAL - EXIT - CASE "Diamond" - ::nWidth := 300 ; ::nHeight := 300 - ::oWidget := HBQGraphicsItem( HBQT_GRAPHICSITEM_ROUNDRECT ) - EXIT - CASE "Triangle" - ::nWidth := 300 ; ::nHeight := 300 - ::oWidget := HBQGraphicsItem( HBQT_GRAPHICSITEM_ROUNDRECT ) - EXIT - ENDSWITCH - - ::oWidget:setObjectType( cType ) - ::oWidget:setObjectName( cName ) - ::oWidget:setTooltip( cName ) - - ::oWidget:hbSetBlock( {|p,p1,p2| ::execEvent( "graphicsItem_block", p, p1, p2 ) } ) - - ::oRM:qScene:addItem( ::oWidget ) - - DEFAULT ::aGeometry TO { 0, 0, ::nWidth, ::nHeight } - ::setGeometry( ::aGeometry[ 1 ], ::aGeometry[ 2 ], ::aGeometry[ 3 ], ::aGeometry[ 4 ] ) - IF !empty( ::aPos ) - ::setPos( ::aPos[ 1 ], ::aPos[ 2 ] ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:onError( ... ) - LOCAL cMsg := __GetMessage() - IF SubStr( cMsg, 1, 1 ) == "_" - cMsg := SubStr( cMsg, 2 ) - ENDIF - RETURN ::oWidget:&cMsg( ... ) - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:execEvent( cEvent, p, p1, p2 ) - - HB_TRACE( HB_TR_DEBUG, "HqrGraphicsItem:execEvent", P, P1, P2 ) - - DO CASE - CASE cEvent == "graphicsItem_block" - DO CASE - CASE p == 21101 - ::oRM:objectSelected( Self ) - - CASE p == 21017 - ::draw( p1, p2 ) - - CASE p == QEvent_GraphicsSceneContextMenu - ::contextMenu( p1, p2 ) - - ENDCASE - ENDCASE - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:contextMenu( p1, p2 ) - LOCAL qMenu, qAct - - HB_SYMBOL_UNUSED( p2 ) - - qMenu := QMenu() - qMenu:addAction( "Cut" ) - qMenu:addAction( "Copy" ) - - IF ! empty( qAct := qMenu:exec( p1:screenPos() ) ) - SWITCH qAct:text() - CASE "Cut" - EXIT - CASE "Copy" - EXIT - ENDSWITCH - ENDIF - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:update() - ::oWidget:update() - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:setText( ... ) - LOCAL a_:= hb_aParams() - IF empty( a_ ) - RETURN ::cText - ENDIF - IF HB_ISSTRING( a_[ 1 ] ) - ::cText := a_[ 1 ] - ::update() - ENDIF - RETURN ::cText - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:setTextFlags( ... ) - LOCAL a_:= hb_aParams() - SWITCH Len( a_ ) - CASE 0 - EXIT - OTHERWISE - IF HB_ISNUMERIC( a_[ 1 ] ) - ::nTextFlags := a_[ 1 ] - ENDIF - ::update() - EXIT - ENDSWITCH - RETURN ::nTextFlags - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:setPen( ... ) - LOCAL a_:= hb_aParams() - SWITCH Len( a_ ) - CASE 0 - IF empty( ::qPen ) - ::qPen := QPen( Qt_black ) - ::qPen:setStyle( Qt_SolidLine ) - ENDIF - RETURN ::qPen - OTHERWISE - IF HB_ISOBJECT( a_[ 1 ] ) - ::qPen := a_[ 1 ] - ELSE - ::qPen := QPen( ... ) - ENDIF - ::update() - ENDSWITCH - RETURN ::qPen - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:setBrush( ... ) - LOCAL a_:= hb_aParams() - SWITCH Len( a_ ) - CASE 0 - IF empty( ::qBrush ) - ::qBrush := QBrush() - ENDIF - EXIT - OTHERWISE - IF HB_ISOBJECT( a_[ 1 ] ) - ::qBrush := a_[ 1 ] - ELSE - ::qBrush := QBrush( ... ) - ENDIF - ::update() - EXIT - ENDSWITCH - RETURN ::qBrush - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:setBackgroundBrush( ... ) - LOCAL a_:= hb_aParams() - SWITCH Len( a_ ) - CASE 0 - IF empty( ::qBgBrush ) - ::qBgBrush := QBrush() - ENDIF - EXIT - OTHERWISE - IF HB_ISOBJECT( a_[ 1 ] ) - ::qBgBrush := a_[ 1 ] - ELSE - ::qBgBrush := QBrush( ... ) - ENDIF - ::update() - EXIT - ENDSWITCH - RETURN ::qBgBrush - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:setFont( ... ) - LOCAL a_:= hb_aParams() - SWITCH Len( a_ ) - CASE 0 - IF empty( ::qFont ) - ::qFont := QFont( "Serif" ) - ::qFont:setPointSizeF( ::nPointSize ) - ::qFont:setStyleStrategy( QFont_PreferMatch ) - ::qFont:setStyleStrategy( QFont_ForceOutline ) - ENDIF - EXIT - OTHERWISE - IF HB_ISOBJECT( a_[ 1 ] ) - ::qFont := a_[ 1 ] - ELSE - ::qFont := QFont( ... ) - ENDIF - ::nPointSize := ::qFont:pointSize() - ::update() - EXIT - ENDSWITCH - RETURN ::qFont - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:setBarcodeType( ... ) - LOCAL a_:= hb_aParams() - SWITCH Len( a_ ) - CASE 0 - EXIT - OTHERWISE - IF HB_ISNUMERIC( a_[ 1 ] ) - ::nBarcodeType := a_[ 1 ] - ENDIF - ::update() - EXIT - ENDSWITCH - RETURN ::nBarcodeType - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:setGradient( ... ) - LOCAL a_:= hb_aParams() - SWITCH Len( a_ ) - CASE 0 - IF empty( ::qGBrush ) - ::qGBrush := QBrush() - ENDIF - EXIT - OTHERWISE - IF HB_ISOBJECT( a_[ 1 ] ) - ::qGBrush := a_[ 1 ] - ELSE - ::qGBrush := QBrush( ... ) - ENDIF - ::update() - EXIT - ENDSWITCH - RETURN ::qGBrush - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:setPixmap( ... ) - LOCAL a_:= hb_aParams() - SWITCH Len( a_ ) - CASE 0 - IF empty( ::qPixmap ) - ::qPixmap := QPixmap() - ENDIF - EXIT - OTHERWISE - IF HB_ISOBJECT( a_[ 1 ] ) - ::qPixmap := a_[ 1 ] - ELSE - ::qPixmap := QPixmap( ... ) - ENDIF - ::update() - EXIT - ENDSWITCH - RETURN ::qPixmap - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:setBorderWidth( ... ) - LOCAL a_:= hb_aParams() - SWITCH Len( a_ ) - CASE 0 - EXIT - OTHERWISE - IF HB_ISNUMERIC( a_[ 1 ] ) - ::nBorderWidth := a_[ 1 ] - ENDIF - ::update() - EXIT - ENDSWITCH - RETURN ::nBorderWidth - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:setWidth( ... ) - LOCAL a_:= hb_aParams() - SWITCH Len( a_ ) - CASE 0 - RETURN ::oWidget:width() - OTHERWISE - IF HB_ISNUMERIC( a_[ 1 ] ) - ::nWidth := a_[ 1 ] - ::oWidget:setWidth( ::nWidth ) - ENDIF - ::update() - EXIT - ENDSWITCH - RETURN ::nBorderWidth - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:setHeight( ... ) - LOCAL a_:= hb_aParams() - SWITCH Len( a_ ) - CASE 0 - RETURN ::oWidget:height() - OTHERWISE - IF HB_ISNUMERIC( a_[ 1 ] ) - ::nHeight := a_[ 1 ] - ::oWidget:setHeight( ::nHeight ) - ENDIF - ::update() - EXIT - ENDSWITCH - RETURN ::nBorderWidth - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:setGeometry( ... ) - LOCAL qRectF, qPos, a_:= hb_aParams() - SWITCH Len( a_ ) - CASE 0 - qPos := ::oWidget:pos() - RETURN QRectF( qPos:x(), qPos:y(), ::width(), ::height() ) - CASE 1 - IF HB_ISOBJECT( a_[ 1 ] ) - qRectF := a_[ 1 ] - ::oWidget:setPos( QPointF( qRectF:x(), qRectF:y() ) ) - ::oWidget:setWidth( qRectF:width() ) - ::oWidget:setHeight( qRectF:height() ) - ::update() - ENDIF - EXIT - CASE 4 - ::oWidget:setPos( QPointF( a_[ 1 ], a_[ 2 ] ) ) - ::oWidget:setWidth( a_[ 3 ] ) - ::oWidget:setHeight( a_[ 4 ] ) - ::update() - EXIT - ENDSWITCH - RETURN QRectF( 0, 0, ::nWidth, ::nHeight ) - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:setPos( ... ) - LOCAL a_:= hb_aParams() - SWITCH Len( a_ ) - CASE 0 - RETURN ::oWidget:pos() - CASE 1 - IF HB_ISOBJECT( a_[ 1 ] ) - ::oWidget:setPos( a_[ 1 ] ) - ::update() - ENDIF - EXIT - CASE 2 - ::oWidget:setPos( QPointF( a_[ 1 ], a_[ 2 ] ) ) - ::update() - EXIT - ENDSWITCH - RETURN ::oWidget:pos() - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:setLineStyle( ... ) - LOCAL a_:= hb_aParams() - SWITCH Len( a_ ) - CASE 0 - EXIT - OTHERWISE - IF HB_ISNUMERIC( a_[ 1 ] ) - ::nLineStyle := a_[ 1 ] - ENDIF - ::update() - EXIT - ENDSWITCH - RETURN ::nLineStyle - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:setBackgroundMode( ... ) - LOCAL a_:= hb_aParams() - SWITCH Len( a_ ) - CASE 0 - EXIT - OTHERWISE - IF HB_ISNUMERIC( a_[ 1 ] ) - ::nBackgroundMode := a_[ 1 ] - ENDIF - ::update() - EXIT - ENDSWITCH - RETURN ::nBackgroundMode - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:setOpacity( ... ) - LOCAL a_:= hb_aParams() - SWITCH Len( a_ ) - CASE 0 - EXIT - OTHERWISE - IF HB_ISNUMERIC( a_[ 1 ] ) - ::nOpacity := a_[ 1 ] - ENDIF - ::update() - EXIT - ENDSWITCH - RETURN ::nOpacity - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:setLineType( ... ) - LOCAL a_:= hb_aParams() - SWITCH Len( a_ ) - CASE 0 - EXIT - OTHERWISE - IF HB_ISNUMERIC( a_[ 1 ] ) - ::nLineType := a_[ 1 ] - ENDIF - ::update() - EXIT - ENDSWITCH - RETURN ::nLineType - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:setupPainter( qPainter, lDrawSelection ) - LOCAL qFont - - qPainter:setPen( ::pen() ) - qPainter:setBrush( ::brush() ) - - qFont := ::font() - - qFont:setPixelSize( iif( lDrawSelection, ::nPointSize / UNIT, TO_MMS( ::nPointSize / UNIT ) ) ) - qPainter:setFont( qFont ) - - qPainter:setBackgroundMode( ::backgroundMode() ) - qPainter:setBackground( ::backgroundBrush() ) - - qPainter:setOpacity( ::opacity() / 100.0 ) - qPainter:setRenderHint( QPainter_TextAntialiasing ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:drawSelection( qPainter, qRect ) - LOCAL a, p, lt, rt, lb, rb - LOCAL drawSelectionBorder := .t. - LOCAL iResizeHandle := 2 / UNIT - LOCAL nW, nH - - qPainter:save() - - nW := qRect:width() ; nH := qRect:height() - - IF ::oWidget:isSelected() - a := QBrush() - a:setColor( QColor( 255,0,0 ) ) - a:setStyle( Qt_SolidPattern ) - IF drawSelectionBorder - p := QPen() - p:setStyle( Qt_DashLine ) - p:setBrush( a ) - qPainter:setPen( p ) - qPainter:drawRect( qRect ) - ENDIF - lt := QPainterPath() - lt:moveTo( 0,0 ) - lt:lineTo( 0, iResizeHandle ) - lt:lineTo( iResizeHandle, 0 ) - qPainter:fillPath( lt, a ) - - rt := QPainterPath() - rt:moveTo( nW,0 ) - rt:lineTo( nW, iResizeHandle ) - rt:lineTo( nW-iResizeHandle, 0 ) - qPainter:fillPath( rt,a ) - - lb := QPainterPath() - lb:moveTo( 0, nH ) - lb:lineTo( 0, nH - iResizeHandle ) - lb:lineTo( iResizeHandle, nH ) - qPainter:fillPath( lb,a ) - - rb := QPainterPath() - rb:moveTo( nW, nH ) - rb:lineTo( nW, nH - iResizeHandle ) - rb:lineTo( nW-iResizeHandle, nH ) - qPainter:fillPath( rb,a ) - ELSE - IF drawSelectionBorder - a := QBrush() - a:setColor( QColor( 100,100,100,200 ) ) - a:setStyle( Qt_SolidPattern ) - - p := QPen() - p:setStyle( Qt_DashDotDotLine ) - p:setBrush( a ) - qPainter:setPen( p ) - qPainter:drawRect( qRect ) - ELSE - qPainter:setPen( "QColor", QColor( 0, 0, 0, 100 ) ) - - qPainter:drawLine( 0 , 0 , 0 , 2*iResizeHandle ) - qPainter:drawLine( 0 , 0 , 2*iResizeHandle , 0 ) - qPainter:drawLine( nW, 0 , nW-2*iResizeHandle, 0 ) - qPainter:drawLine( nW, 0 , nW , 2*iResizeHandle ) - qPainter:drawLine( nW, nH, nW-2*iResizeHandle, nH ) - qPainter:drawLine( nW, nH, nW , nH-2*iResizeHandle ) - qPainter:drawLine( 0 , nH, 2*iResizeHandle , nH ) - qPainter:drawLine( 0 , nH, 0 , nH-2*iResizeHandle ) - ENDIF - ENDIF - qPainter:restore() - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:draw( qPainter, qRectF, lDrawSelection ) - - DEFAULT lDrawSelection TO .t. - - ::setupPainter( qPainter, lDrawSelection ) - - SWITCH ::cType - CASE "Barcode" ; ::drawBarcode( qPainter, qRectF ) ; EXIT - CASE "Image" ; ::drawImage( qPainter, qRectF ) ; EXIT - CASE "Chart" ; ::drawChart( qPainter, qRectF ) ; EXIT - CASE "Gradient" ; ::drawGradient( qPainter, qRectF ) ; EXIT - CASE "Text" ; ::drawText( qPainter, qRectF ) ; EXIT - CASE "Field" ; ::drawField( qPainter, qRectF ) ; EXIT - CASE "Rectangle" ; ::drawRect( qPainter, qRectF ) ; EXIT - CASE "RoundRect" ; ::drawRoundRect( qPainter, qRectF ) ; EXIT - CASE "Ellipse" ; ::drawEllipse( qPainter, qRectF ) ; EXIT - CASE "LineH" ; ::drawLine( qPainter, qRectF ) ; EXIT - CASE "LineV" ; ::drawLine( qPainter, qRectF ) ; EXIT - CASE "LineDR" ; ::drawLine( qPainter, qRectF ) ; EXIT - CASE "LineDL" ; ::drawLine( qPainter, qRectF ) ; EXIT - CASE "Arc" ; ::drawArc( qPainter, qRectF ) ; EXIT - CASE "Chord" ; ::drawChord( qPainter, qRectF ) ; EXIT - CASE "Diamond" ; ::drawDiamond( qPainter, qRectF ) ; EXIT - CASE "Triangle" ; ::drawTriangle( qPainter, qRectF ) ; EXIT - ENDSWITCH - - IF lDrawSelection - ::drawSelection( qPainter, qRectF ) - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:drawRect( qPainter, qRectF ) - qPainter:drawRect( qRectF ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:drawRoundRect( qPainter, qRectF ) - qPainter:drawRoundedRect( qRectF, 10/UNIT, 10/UNIT ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:drawEllipse( qPainter, qRectF ) - qPainter:drawEllipse( qRectF ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:drawLine( qPainter, qRect ) - - SWITCH ::lineType() - CASE HBQT_GRAPHICSITEM_LINE_VERTICAL - qPainter:drawLine( qRect:x() + qRect:width() / 2, qRect:y(), qRect:x() + qRect:width() / 2, qRect:y() + qRect:height() ) - EXIT - case HBQT_GRAPHICSITEM_LINE_HORIZONTAL - qPainter:drawLine( qRect:x(), qRect:y() + qRect:height() / 2, qRect:x() + qRect:width(), qRect:y() + qRect:height() / 2 ) - EXIT - case HBQT_GRAPHICSITEM_LINE_BACKWARDDIAGONAL - qPainter:drawLine( qRect:right(), qRect:y(), qRect:x(), qRect:bottom() ) - EXIT - case HBQT_GRAPHICSITEM_LINE_FORWARDDIAGONAL - qPainter:drawLine( QPointF( qRect:x(), qRect:y() ), QPointF( qRect:right(), qRect:bottom() ) ) - EXIT - ENDSWITCH - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:drawPie( qPainter, qRectF ) - qPainter:drawPie( qRectF, ::nStartAngle * 16, ::nSpanAngle * 16 ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:drawDiamond( qPainter, qRectF ) - LOCAL p := QPainterPath() - LOCAL x := qRectF:x(), y := qRectF:y(), w := qRectF:width(), h := qRectF:height() - - p:moveTo( x, y + h / 2 ) - p:lineTo( x + w / 2, y ) - p:lineTo( x + w, y + h / 2 ) - p:lineTo( x + w / 2, y + h ) - p:lineTo( x, y + h / 2 ) - - qPainter:drawPath( p ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:drawTriangle( qPainter, qRectF ) - LOCAL p := QPainterPath() - - p:moveTo( qRectF:x(), qRectF:y() + qRectF:height() ) - p:lineTo( qRectF:x() + qRectF:width() / 2, qRectF:y() ) - p:lineTo( qRectF:x() + qRectF:width(), qRectF:y() + qRectF:height() ) - p:lineTo( qRectF:x(), qRectF:y() + qRectF:height() ) - - qPainter:drawPath( p ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:drawArc( qPainter, qRectF ) - qPainter:drawArc( qRectF, ::nStartAngle * 16, ::nSpanAngle * 16 ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:drawChord( qPainter, qRectF ) - qPainter:drawChord( qRectF, ::nStartAngle * 16, ::nSpanAngle * 16 ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:drawText( qPainter, qRectF ) - qPainter:drawText( qRectF, ::textFlags(), ::text() ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:drawField( qPainter, qRectF ) - qPainter:drawText( qRectF, ::textFlags(), ::text() ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:drawGradient( qPainter, qRectF ) - qPainter:drawRect( qRectF ) - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:drawBarcode( qPainter, qRectF ) - LOCAL rc, w, x, i, cCode - - rc := qRectF:adjusted( 5, 5, -10, -10 ) - cCode := fetchBarString( ::text() ) - w := rc:width() / Len( cCode ) - x := 0.0 - - FOR i := 1 TO Len( cCode ) - IF substr( cCode, i, 1 ) == "1" - qPainter:fillRect( QRectF( rc:x() + x, rc:y(), w, rc:height() ), QColor( Qt_black ) ) - ELSE - qPainter:fillRect( QRectF( rc:x() + x, rc:y(), w, rc:height() ), QColor( Qt_white ) ) - ENDIF - x += w - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:drawImage( qPainter, qRectF ) - LOCAL qPix, image, rc, img, point - LOCAL drawTextType := HBQT_GRAPHICSITEM_TEXT_DRAW_ABOVE - LOCAL paintType := HBQT_GRAPHICSITEM_RESIZE_PICTURE_TO_ITEM_KEEP_ASPECT_RATIO - LOCAL borderWidth := 0 - LOCAL borderColor := 0, pen, textH, sw, sh, cx, cy, cw, ch, textColor := 0 - LOCAL cText := "Picture" - LOCAL qObj := ::oWidget - - rc := qRectF:adjusted( 1, 1, -2, -2 ) - - textH := 0 - sw := 0 - sh := 0 - - IF drawTextType == HBQT_GRAPHICSITEM_TEXT_DRAW_ABOVE .OR. ::drawTextType == HBQT_GRAPHICSITEM_TEXT_DRAW_BELOW - textH := qPainter:font():pixelSize() - ENDIF - - qPix := ::pixmap() - image := qPix:toImage() - - IF image:isNull() - qPainter:drawRect( qRectF ) - ELSE - img := QImage( 0, 0 ) - point := qRectF:topLeft() - cx := 0; cy := 0; cw := qPix:width(); ch := qPix:height() - - SWITCH paintType - CASE HBQT_GRAPHICSITEM_RESIZE_PICTURE_TO_ITEM_KEEP_ASPECT_RATIO - img := QImage( image:scaled( rc:width(), rc:height() - textH, Qt_KeepAspectRatio, Qt_SmoothTransformation ) ) - EXIT - CASE HBQT_GRAPHICSITEM_RESIZE_PICTURE_TO_ITEM_IGNORE_ASPECT_RATIO - img := QImage( image:scaled( rc:width(), rc:height() - textH, Qt_IgnoreAspectRatio, Qt_SmoothTransformation ) ) - EXIT - CASE HBQT_GRAPHICSITEM_CENTER_PICTURE_TO_ITEM - point:setX( point:x() + ( rc:width() - image:width() ) / 2 ) - point:setY( point:y() + ( rc:height() - image:height() - textH ) / 2 ) - IF point:x() < 0 - cx := abs( point:x() ) - cw -= 2 * cx - point:setX( 0 ) - ENDIF - IF point:y() < 0 - cy := abs( point:y() ) - ch -= 2 * cy - point:setY( 0 ) - ENDIF - img := QImage( image:copy( cx, cy, cw, ch ) ) - EXIT - CASE HBQT_GRAPHICSITEM_RESIZE_ITEM_TO_PICTURE - img := image - sw := img:width() - qObj:width() - sh := img:height() - ( qObj:height() - textH ) - EXIT - ENDSWITCH - - IF drawTextType == HBQT_GRAPHICSITEM_TEXT_DRAW_ABOVE - point:setY( point:y() + textH ) - ENDIF - - qPainter:drawImage( point, img ) - ENDIF - qPainter:setPen( QPen( textColor ) ) - - SWITCH drawTextType - CASE HBQT_GRAPHICSITEM_TEXT_DRAW_TOP - qPainter:drawText( rc, Qt_AlignTop + Qt_AlignHCenter, cText ) - EXIT - CASE HBQT_GRAPHICSITEM_TEXT_DRAW_BOTTOM - qPainter:drawText( rc, Qt_AlignBottom + Qt_AlignHCenter, cText ) - EXIT - CASE HBQT_GRAPHICSITEM_TEXT_DRAW_ABOVE - qPainter:drawText( rc, Qt_AlignTop + Qt_AlignHCenter, cText ) - EXIT - CASE HBQT_GRAPHICSITEM_TEXT_DRAW_BELOW - qPainter:drawText( rc, Qt_AlignBottom + Qt_AlignHCenter, cText ) - EXIT - ENDSWITCH - - IF !empty( sw ) .OR. !empty( sh ) - qObj:setWidth( qObj:width() + sw ) - qObj:setHeight( qObj:height() + sh ) - ENDIF - - IF borderWidth > 0 - pen := QPen() - pen:setWidth( borderWidth ) - pen:setColor( borderColor ) - pen:setJoinStyle( Qt_MiterJoin ) - qPainter:setPen( pen ) - qPainter:setBrush( QBrush( Qt_NoBrush ) ) - qPainter:drawRect( rc:x() + borderWidth / 2, rc:y() + borderWidth / 2, ; - rc:width() - borderWidth, rc:height() - borderWidth ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HqrGraphicsItem:drawChart( qPainter, qRect ) - LOCAL qFMetrix, maxpv, minnv, absMaxVal, powVal, chartStep, powStep, maxHeight, valstep, maxLabelWidth - LOCAL pw, rc, maxval, y, i, x, cv, barWidth, lg, py, f, cMaxVal, nDec, nFHeight, nLabelWidth, br, nPlanes - LOCAL m_drawBorder := .t. - LOCAL m_showLabels := .t. - LOCAL m_showGrid := .t. - LOCAL m_barsIdentation := 1.0 / UNIT - LOCAL nColorFactor := 1.7 - - qFMetrix := qPainter:fontMetrics() - nFHeight := qFMetrix:height() - - IF empty( ::xData ) - ::xData := {} - - aadd( ::xData, { "Bananas", 040.0, rmgr_generateNextColor() } ) - aadd( ::xData, { "Oranges", 150.0, rmgr_generateNextColor() } ) - aadd( ::xData, { "Mangoes", 095.0, rmgr_generateNextColor() } ) - ENDIF - - maxpv := 0 - minnv := 0 - aeval( ::xData, {|e_| iif( e_[ 2 ] < 0, minnv := min( minnv, e_[ 2 ] ), NIL ), iif( e_[ 2 ] > 0, maxpv := max( maxpv, e_[ 2 ] ), NIL ) } ) - - absMaxVal := maxpv - minnv - cMaxVal := hb_ntos( absMaxVal ) - nDec := at( ".", cMaxVal ) - - powVal := iif( absMaxVal < 1, 10.0 ^ ( Len( substr( cMaxVal, nDec+1 ) ) + 1 ), 1 ) - maxpv *= powVal - minnv *= powVal - - maxpv := maxpv - minnv := -minnv - minnv := -minnv - - qPainter:fillRect( qRect, ::brush() ) - - IF m_drawBorder - qPainter:drawRect( qRect ) - ENDIF - - pw := iif( abs( ::pen():widthF() ) > 0, abs( ::pen():widthF() ), 1 ) - rc := qRect:adjusted( pw / 2, pw / 2, -pw, -pw ) - - f := 2 - chartStep := ( 10.0 ^ ( Len( substr( cMaxVal, 1, nDec - 1 ) ) - 1 ) ) / f - powStep := iif( chartStep < 1, 10, 1 ) - chartStep *= powStep - maxpv *= powStep - minnv *= powStep - powVal *= powStep - maxpv := maxpv + ( iif( ( maxpv % chartStep ) != 0, ( chartStep - ( maxpv % chartStep ) ), 0 ) ) / powVal - minnv := minnv - ( iif( ( - minnv % chartStep ) != 0, ( chartStep - ( - minnv % chartStep ) ), 0 ) ) / powVal - maxVal := maxpv - minnv - - maxHeight := rc:height() - nFHeight - valstep := maxHeight / ( maxVal / chartStep ) - - IF ( valstep < nFHeight ) - chartStep *= ( ( ( nFHeight / valstep ) ) + 1 ) - valstep := ( ( ( nFHeight / valstep ) ) + 1 ) * valstep - ENDIF - - nPlanes := maxVal / chartStep + 1 + iif( maxVal % chartStep != 0, 1, 0 ) - - IF m_showLabels - maxLabelWidth := 0 - FOR i := 1 TO nPlanes - nLabelWidth := qFMetrix:width( hb_ntos( Int( ( maxVal * i - chartStep * i ) / powVal ) ) ) - IF maxLabelWidth < nLabelWidth - maxLabelWidth := nLabelWidth - ENDIF - NEXT - y := 0 - FOR i := 1 TO nPlanes - qPainter:drawText( QRectF( rc:x(), rc:y() + y, maxLabelWidth, nFHeight ), ; - Qt_AlignRight + Qt_AlignVCenter, hb_ntos( Int( ( maxpv - chartStep * ( i - 1 ) ) / powVal ) ) ) - y += valstep - NEXT - - qPainter:drawLine( rc:x() + maxLabelWidth + 1 / UNIT / 4, rc:y(), rc:x() + maxLabelWidth + 1 / UNIT / 4, rc:y() + qRect:height() ) - rc := rc:adjusted( maxLabelWidth + 1 / UNIT / 4, 0, 0, 0 ) - ENDIF - - IF m_showGrid - y := nFHeight / 2 - FOR i := 1 TO nPlanes - qPainter:drawLine( rc:x(), rc:y() + y, rc:x() + rc:width(), rc:y() + y ) - y += valstep - NEXT - ENDIF - - rc := rc:adjusted( 0, nFHeight / 2, 0, 0 ) - x := m_barsIdentation - barWidth := ( rc:width() - m_barsIdentation * ( Len( ::xData ) + 1 ) ) / len( ::xData ) - py := maxHeight / maxVal - - FOR EACH cv IN ::xData - lg := QLinearGradient( QPointF( x + barWidth / 2, 0.0 ), QPointF( x + barWidth, 0.0 ) ) - // - lg:setSpread( QGradient_ReflectSpread ) - lg:setColorAt( 0, cv[ 3 ] ) - lg:setColorAt( 1, QColor( cv[ 3 ]:red() * nColorFactor, cv[ 3 ]:green() * nColorFactor, cv[ 3 ]:blue() * nColorFactor, cv[ 3 ]:alpha() ) ) - // - br := QBrush( lg ) - // - qPainter:fillRect( QRectF( rc:x() + x, rc:y() + py * maxpv - py * cv[ 2 ] * powVal, barWidth, py * cv[ 2 ] * powVal ), br ) - - IF m_showLabels - qPainter:drawText( QRectF( rc:x() + x - m_barsIdentation / 2, rc:y() + py * maxpv - iif( cv[ 2 ] >= 0, nFHeight, 0 ), ; - barWidth + m_barsIdentation, nFHeight ), Qt_AlignCenter, hb_ntos( Int( cv[ 2 ] ) ) ) - ENDIF - x += barWidth + m_barsIdentation - NEXT - - #if 0 /* Legend */ - qPainter:fillRect( qRect, ::brush() ) - qPainter:drawRect( qRect ) - qPainter:translate( qRect:topLeft() ) - qreal y := 1 / UNIT - qreal vstep := ( qRect:height() - y - 1 / UNIT * val:size() ) / Len( ::aData ) - FOR EACH cv IN ::aData - { - qPainter:fillRect( QRectF( 1 / UNIT / 2, y, m_legendColorqRectWidth, vstep ), QBrush( cv[ 3 ] ) ) - qPainter:drawText( QRectF( 1 / UNIT + m_legendColorqRectWidth, y, qRect:width() - ( 1 / UNIT + m_legendColorqRectWidth ), vstep ), - Qt_AlignVCenter + Qt_AlignLeft, cv[ 1 ] ) - y += vstep + 1 / UNIT - } - #endif - - RETURN Self - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/xbpaddons/resources/close3.png b/harbour/contrib/hbide/xbpaddons/resources/close3.png deleted file mode 100644 index 9bc6af9c81a187da45d69045f9c19c3aabafb7fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 646 zcmV;10(t$3P)KuMHHgTy>13QJ!Km4DIU=8#g-lxCCgZCbZHHm%{ z|1SR{z1^MqZ^Z)OWY1Zh#4%|UVhD|CTim#LT>$j#->HS|A=8MfL(hM)El&4e)a`rr z(!8Y&(wMOBp=^UUS1vFxc5TCDe+IGOFbB9#&T`ml}Z%YzvgaN06w9 zz;U@-y#2kgiPi{G!kU9}OG+-Zc<3gl+?opvlAaMltI&uL&Pf)8C#HdB{DV8$|hW?6EFJ+EN1SX zr|ZD3uREwKNh6m>jtsGG`!*Kp72+fy3MF+*047ycA&MHL&U)UDPqR4oigT|=1%OPY zLd{H5$a-w(I7kv@a0(monp%+B#ZOE^U7(>0%zg3+hwpG=_tw=b#1v@$IL7DpPR?9@ zNX|-eZ5z@6&r%q%rl2*}$^u5#re2=m*4y#bKah6Bv*8zH)nhu#6+(ZWXfbBFR${(X gWif$SAmKmp1=1b}L{{=k8UO$Q07*qoM6N<$f}(mTAOHXW diff --git a/harbour/contrib/hbide/xbpaddons/resources/closetab.png b/harbour/contrib/hbide/xbpaddons/resources/closetab.png deleted file mode 100644 index ef9e02086c67814fd00c89620fd0d981b997e6cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 zcmV--0f_#IP)fruJ3jc8<|8pe&b0zCL@6z2E5pzd+(iAlUs$!iqI4S^6p4AC9Nf@vzUPSy(P~ z1SuhEk+Uxp0002ovPDHLkV1ikVxH|v< diff --git a/harbour/contrib/hbide/xbpaddons/resources/database.png b/harbour/contrib/hbide/xbpaddons/resources/database.png deleted file mode 100644 index 09e60ca969374d976a405f61b7cb68839c4f6e8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 787 zcmV+u1MK{XP)QY`{Wm1JzPT5Tf5gw;veyg}OG-;7(m!8mF6 z(1t}TrJ5ncQiZm6?z;riwd>C+2D4^r@k_hI&iptt&= zTXKQ4xlJs9H9!~kQ>VzD6;ZspsnkiXfN=Z-?obR1ZU$i6z^ro%{%E|w0@QqzrNufD z7Vi$WV~5y3&fy?^ibN`p1k(>QXO(;OAdP8TFwFuy>yYf#2}Z${X(5~-pdg*FtcMXv zoZ#};4eo!JkU9H_jUP$qRs(x1K!;4pX&+LT8pSGz)MhBnZdiN~M3{-!w|BU`yGLX% z344$(spcsT3qZMiq1xsyJbur^YhEuth(^F4WMJb{=u=FAH}DO$&E0s~$Y(@!?XUm? zIx?$Uv}0m^1#&%sLCqW_6GrqY4fvwaSI!EP1*F3VYao*Sp9cAsAuZ&ytC(Bcgkx(L zo4W^y9c7U(6e~L9FRmC(($G@=JPYugC$ZG`Da)?~9Uj57;)KFzE@>84xGcc3 z%b(})MW|tfeAyt|9No%Uj1y}hJUdJV;@CgQS8`D* z1G&N_Xdn;?2FQik+k)CM80uk+Wec$yuPOIH|*lf10RafnAE33780002u z^o5JBY};HqAB)G$ek+5OO3)1g>g#Q4jTTO`O?|zI>v}|`4(YbvTdmd4N+|(Qc83>J z8PiNB6ZFQSgn+L@f>5J%NDydr2vS8zr{khGn%`q2`p!xz08m%&%=wS2HWQ;IHVqZX znQ3|=3MnPobeujjfdI4)S+>`>IsXXP>mY;xKqjwF$!zV{rG>^l&jhwR3BUjl}|eW}0Mg3}qMu8geNM>&ZC56F#o#(U(o- zM>7Mz_9#(KCt|3@s;$>rE~O1ch70|S45mrNdr9`jD4H40+`q_||9nrNeRQZfU%9k% zdU*2s@yxzsb;r42?Am`Q6;bL)5E5y)9hz=(RpNf~hlRE~?ncbU;f7MsYtUEPa*TwTZLPF-8A9-!Cz_^(vr(90#ILemH zD3;-{qW>s%V)_lWZENX$r(S?3|#y2f1f zQ_P5i6#M86;|ns>TFl;iz?Iwc%rD!x+Q7_av8*g())7|P%bdCSHhrul+L*J^qYayldjMs4G~zj45D`fuN#kSuOF~Jx5e<{MnC9AO}Y7& iYGqHZILk9ahWrmKdW3HengZVd00004L1elWs>sUw2{lWov_own=O zIc?8*eID`Q`Ok@Wo4fMa%{I;z`R&benWV!)TxrXnY+I1RCED2sB6)B9VxRu5k8Q!%R<0DF9H{|Gn2)-EbJ) zKfsiMhNhM;WEfWC*fu`teb9-?a*J~k!06;0jC~a11%*@~C-pU#oD@it$ zq>!=c&u7S|6Es^LHp(^XZVRPUEgWcs5CEuDR9@Jb&%Rl7wvT~EN(l%+AcO=ValIDB z^$miyyINX*{7u94kWvDmrk)vnYkkW(Hhb$K<(P@H9w%;^JcvcP841zuv?)1NwktLI z3q6I2qoZ#xKUq2Nc}=v|7&{M7obJtMCq@Pb*qzUjwi0xAMNx)o9!i-|{jXgi{#Mz#dDvWK}6!JOxb`{var;qWcNBC3!#TWlw#G%S# ze~Sx?m$PmpID0t0?@qJn&Krj&PsKw@o$)oHn%ko8w(vSW$*9To#w?%BeZ@dr@bQuN zIG#VsoO6X6&Vr1`)8hxDPyL{Vd#ssM%D!{+&iyeuHnFh6^CD<8cPp29qi-)e%``nR zn_4Hz$-)TLj>oe1N50*C=v8%KaNzw)xjd#@F6GTNY88hE2)ufQ++dLx_r1%3^vh@f zG)J2F?H${L#oheBNU1vB)$f%1%?s~g2tX8iPQHt?h z=X9SxdA3@sTvZXt&tX~z121^Zm%+Fzg8rKDZAbdydEaZtLc`@3?5`bdKHA;(-Ec+? k|83M$=Qk_G86h?Q1N}UM-vYRcdH?_b07*qoM6N<$g4F5D@Bjb+ diff --git a/harbour/contrib/hbide/xbpaddons/resources/database_down.png b/harbour/contrib/hbide/xbpaddons/resources/database_down.png deleted file mode 100644 index 45bef4f5535bed3988cf6575e375a193f075bba1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 960 zcmV;x13&zUP)~`8N+wy1&v_&LXXhcM4 zf*Py}i5C-ti3uip_25M>9@NB(7mWu!!2vbFgT$CnDmlgpCJSVVD5eWOLKxyicMqQ2qb`vIm*6p??rQmdbrQUah? z0-mt#tYddsq&iI$5GRUQDH5fK4l$el8PcPnIem9Cj0JOp*N1q=k^c{P6WGCB-1zg7_W2MkF4TZq9Y`V4?cmp0Awujs8 z^zU`IUQZeNQZ|!D8$5Vya<$f&6uN=qI1~#7wh#0(Hay70=q`Q=ukh*0MFJzDOoMZG zzH@7$b>>ihY%y#FH?)1nPNYp;KNTxX&yU#jLxOfpwj<3C)nEB!;XFHS$=e5CVWRH< ze^!3s=K2D9I&*Zw9{EOps6Tf-?>O_<{<<@++BwpuMi6umwnOf0{>;g(Td|Eari^Gt zAro$qPzfFcmvceyW2f}p!$Yq%8;x<9L~K;cv>J8p3W3+y&cLn`<2^^%+joX)YlV~{ zc;mo3Tw4B~`L%P1&Uiq-_}erGMu(X?K8c}8l0?yN$8_5cb9y&dmOi3jjWFsy1Hepq zn%R{P=&^RunOKWbC?#&({*TMI7MQVR+aYi@d`C0000I diff --git a/harbour/contrib/hbide/xbpaddons/resources/database_lock.png b/harbour/contrib/hbide/xbpaddons/resources/database_lock.png deleted file mode 100644 index 4bf67f58b629eaa4fc58e1b8c4ad5a6b14b26813..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 919 zcmV;I18Dq-P)`7CD^b5B*X&o16Y9AvgHS`f=v;E4c)Wip^_>ki-wZ45p@%s+K%5Idpw@Gmvh8t zUwutJmpxglR^Bc7{$($pTXXDG5riEr;y9c~!|81LC zB_+?LT*xAX03mqX8}Zj(gD_ekgaAM(%jzEwCv5(`&;7#|6~92WRNzFV$XcyJtx{kb zM(j5ZX&!Yj^XXhohX?@xs+5-Bt<dFv0F%_A&jVb5kC zhhcEXX!E@g0_)2!KL3a~`gHs54%5k)@pweP-{+{^;=#WUkx{^2UI$1bb55 z{C!)z@N}K)Z@z(&l0+vY2`Do}CATm^ANo6loh;psi|%Zrv&#tAK?l298Lh>g-G@AC z_c>XuP^*+E7YkH#1(d#t8SkLG|6m2HxZ)J1*F?$;(ovXb->7Ov{u&BvppEf|!3=4Q zh>av86_(p3j@u*#Dm

HBIDE employes the concept of keeping everything tied together. It means all complier specific environments are kept together in a convinient way and applied as per need.

\n" - "

\n" - "

So here you view/edit all the environments you employ in your applications. At the time you will build the project, a list of stated environments will be presented to choose from.

\n" - "

\n" - "

This opens up the possibility to experiment with different compilers without re-opening the IDE or setting up the envvars manually.

", 0, QApplication::UnicodeUTF8)); - */ - - IF ( n := At( "QApplication_translate", cCmd ) ) > 0 - n1 := hb_at( "(", cCmd, n ) - n2 := hb_rat( ")", cCmd ) - cArgs := SubStr( cCmd, n1 + 1, n2 - n1 - 2 ) - /* "DialogName", "[Dialog Title]\"\303\263Title\"", 0, QApplication_UnicodeUTF8 */ - - n3 := at( ",", cArgs ) - cName := SubStr( cArgs, 2, n3 - 3 ) - cArgs := SubStr( cArgs, n3 + 1 ) - /* "[Dialog Title]\"\303\263Title\"", 0, QApplication_UnicodeUTF8 */ - IF ( n4 := At( "QApplication_UnicodeUTF8", cArgs ) ) > 0 - cEnd := SubStr( cArgs, n4 ) /* "QApplication_UnicodeUTF8" */ - ELSEIF ( n4 := At( "QApplication_CodecForTr", cArgs ) ) > 0 - cEnd := SubStr( cArgs, n4 ) /* "QApplication_CodecForTr" */ - ELSE - oError := ErrorNew() - oError:severity := ES_ERROR - oError:genCode := EG_ARG - oError:subSystem := "HBMK2_PLUGIN_HBQT" - oError:subCode := 1001 - oError:canRetry := .F. - oError:canDefault := .F. - oError:Args := cCmd - oError:operation := ProcName() - oError:Description := "Unsupported QT-encoding in QApplication:translate() call" - Eval( ErrorBlock(), oError ) - ENDIF - - IF ! Empty( cEnd ) - /* Known translation */ - cArgs := Left( cArgs, n4 - 1 ) - /* "[Dialog Title]\"\303\263Title\"", 0, */ - n4 := hb_RAt( ",", cArgs ) - cArgs := Left( cArgs, n4 - 1 ) - /* "[Dialog Title]\"\303\263Title\"", 0 */ - n4 := hb_RAt( ",", cArgs ) - cDisamb := AllTrim( SubStr( cArgs, n4 + 1 ) ) - IF cDisamb == "0" - cDisamb := '""' - ENDIF - cArgs := AllTrim( Left( cArgs, n4 - 1 ) ) - // cArgs := HB_STRDECODESCAPE( SubStr( cArgs, 2, Len( cArgs ) - 2 ) ) - - IF "DOCTYPE HTML PUBLIC" $ cArgs .OR. "" $ cArgs - cArgs := StrTran( cArgs, '\"', '"' ) - cArgs := StrTran( cArgs, '\n', " " ) - cArgs := StrTran( cArgs, '""' ) - cArgs := "[" + Substr( cArgs, 2, Len( cArgs ) - 2 ) + "]" - cText := ' QApplication():translate( "' + cName + '", ' + cArgs + ', ' + cDisamb + ', ' + cEnd + " )" - ELSE - cText := ' QApplication():translate( "' + cName + '", e' + cArgs + ', ' + cDisamb + ', ' + cEnd + " )" - ENDIF - /* Finally translate to CP used by application */ - cCmd := SubStr( cCmd, 1, n - 1 ) + cText + " )" - ENDIF - ENDIF - - RETURN cCmd - -STATIC FUNCTION hbqtui_isNonImplementedMethod( cString ) - LOCAL cMethod, aMethods := {} - - AAdd( aMethods, "setAccessibleName" ) /* Add other methods which could not been implemented in HbQt */ - - FOR EACH cMethod IN aMethods - IF cMethod $ cString - RETURN .T. - ENDIF - NEXT - - RETURN .F. - -STATIC FUNCTION hbqtui_isObjectNameSet( cString ) - RETURN "objectName" $ cString .OR. ; - "ObjectName" $ cString - -STATIC FUNCTION hbqtui_isValidCmdLine( cString ) - RETURN !( Left( cString, 1 ) $ '#/*"' ) - -STATIC FUNCTION hbqtui_notAString( cString ) - RETURN !( Left( cString, 1 ) == '"' ) - -STATIC FUNCTION hbqtui_occurs( cString, cCharToFind ) - LOCAL cChar - LOCAL nCount - - nCount := 0 - FOR EACH cChar IN cString - IF cChar == cCharToFind - ++nCount - ENDIF - NEXT - - RETURN nCount - -STATIC FUNCTION hbqtui_isSupportedMethodCall( cString, aMethodCalls ) - LOCAL aMethod - - FOR EACH aMethod IN aMethodCalls - IF aMethod[ 1 ] $ cString - RETURN aMethod:__enumIndex() - ENDIF - NEXT - - RETURN 0 - -STATIC FUNCTION hbqtui_qobject_connect( cString ) - LOCAL cCall - LOCAL n, n2, n4 - LOCAL aPar - - /* QObject::connect( buttonOK, SIGNAL( clicked() ), actionName, SLOT( trigger() ) ); */ - cString := StrTran( cString, "QObject_connect", "hbqt_connect" ) - n := At( "(", cString ) - aPar := hb_aTokens( SubStr( cString, n + 1, Len( cString ) - n - 1 ), "," ) - n2 := At( "(", aPar[ 2 ] ) - n4 := At( "(", aPar[ 4 ] ) - cCall := Left( cString, n ) +; - "::" + AllTrim( aPar[ 1 ] ) + ', ' +; - '"' + SubStr( aPar[ 2 ], n2 + 1, Len( aPar[ 2 ] ) - n2 - 1 ) + '", ' +; - "::" + AllTrim( aPar[ 3 ] ) + ', ' +; - '"' + SubStr( aPar[ 4 ], n4 + 1, Len( aPar[ 4 ] ) - n4 - 1 ) + '" ) ' - - RETURN cCall - -STATIC FUNCTION hbqtui_pullColumn( cCmd, nCol ) - - IF "(0," $ cCmd - nCol := 0; RETURN .T. - ELSEIF "(1," $ cCmd - nCol := 1; RETURN .T. - ELSEIF "(2," $ cCmd - nCol := 2; RETURN .T. - ENDIF - - RETURN .F. - -STATIC FUNCTION hbqtui_pullToolTip( cCmd ) - LOCAL n - LOCAL cString := "" - - IF ( n := At( ', "', cCmd ) ) > 0 - cString := AllTrim( SubStr( cCmd, n + 2 ) ) - IF ( n := At( '", 0', cString ) ) > 0 - cString := AllTrim( SubStr( cString, 1, n ) ) - cString := StrTran( cString, '\"', '"' ) - cString := StrTran( cString, '""' ) - cString := SubStr( cString, 2, Len( cString ) - 2 ) - ENDIF - ENDIF - - RETURN cString - -STATIC PROCEDURE hbqtui_replaceConstants( /* @ */ cString ) - LOCAL aResult - LOCAL cConst - LOCAL cCmdB - LOCAL cCmdE - LOCAL cOR - LOCAL n, n1, n2, n3 - - LOCAL regDefine := hb_regexComp( "\b[A-Za-z_]+\:\:[A-Za-z0-9_]+\b" ) - - IF At( 'QString::fromUtf8("")', cString ) > 0 - cString := StrTran( cString, 'QString::fromUtf8("")', '""' ) - - ELSEIF ( n := At( "QString::fromUtf8(", cString ) ) > 0 - n2 := hb_At( '"', cString, n ) - n3 := hb_At( '"', cString, n2 + 1 ) - n1 := hb_At( ")", cString, n ) - IF n2 < n1 .AND. n1 < n3 - n1 := hb_At( ")", cString, n3 + 1 ) - ENDIF - cString := SubStr( cString, 1, n - 1 ) + substr( cString, n + len( "QString::fromUtf8(" ), n1 - ( n + len( "QString::fromUtf8(" ) ) ) + SubStr( cString, n1 + 1 ) - - ELSEIF ( n := At( "static_cast(", cString ) ) > 0 - cString := SubStr( cString, 1, n-1 ) + SubStr( cString, n + Len( "static_cast(" ) ) - n := At( "),", cString ) - IF n > 0 - cString := SubStr( cString, 1, n-1 ) + SubStr( cString, n + 1 ) - ENDIF - - ENDIF - - IF hbqtui_occurs( cString, "|" ) > 0 - - aResult := hb_regexAll( regDefine, cString ) - - IF ! Empty( aResult ) - cOR := "hb_bitOr( " - FOR n := 1 TO Len( aResult ) - cOR += aResult[ n ][ 1 ] - IF n < Len( aResult ) - cOR += "," - ENDIF - NEXT - cOR += " )" - cCmdB := SubStr( cString, 1, At( aResult[ 1 ][ 1 ], cString ) - 1 ) - cConst := aResult[ Len( aResult ) ][ 1 ] - cCmdE := SubStr( cString, At( cConst, cString ) + Len( cConst ) ) - cString := cCmdB + cOR + cCmdE - ENDIF - ENDIF - - IF "::" $ cString - DO WHILE .T. - aResult := hb_regex( regDefine, cString ) - IF Empty( aResult ) - EXIT - ENDIF - cString := StrTran( cString, aResult[ 1 ], StrTran( aResult[ 1 ], "::", "_" ) ) - ENDDO - ENDIF - - RETURN - -STATIC FUNCTION hbqtui_setObjects( cCmd, aWidgets ) - LOCAL n - LOCAL cObj - - IF ( n := AScan( aWidgets, {| tmp | ( tmp[ 2 ] + "," ) $ cCmd } ) ) > 0 - cObj := aWidgets[ n ][ 2 ] - cCmd := StrTran( cCmd, cObj + ",", 'o[ "' + cObj + '" ],' ) - ENDIF - - IF ( n := AScan( aWidgets, {| tmp | ( tmp[ 2 ] + ")" ) $ cCmd } ) ) > 0 - cObj := aWidgets[ n ][ 2 ] - cCmd := StrTran( cCmd, cObj + ")", 'o[ "' + cObj + '" ])' ) - ENDIF - - IF ( n := AScan( aWidgets, {| tmp | ( tmp[ 2 ] + "->" ) $ cCmd } ) ) > 0 - cObj := aWidgets[ n ][ 2 ] - cCmd := StrTran( cCmd, cObj + "->", 'o[ "' + cObj + '" ]:' ) - ENDIF - - RETURN cCmd - -STATIC FUNCTION hbqtui_pullText( aLines, nFrom ) - LOCAL cString := "" - LOCAL nLen := Len( aLines ) - LOCAL aKeyword := { "setText(", "setPlainText(", "setStyleSheet(", "setWhatsThis(", "setHtml(" } - - IF AScan( aKeyword, {| tmp | tmp $ aLines[ nFrom ] } ) > 0 - cString := aLines[ nFrom ] - nFrom++ - DO WHILE nFrom <= nLen - IF !( Left( aLines[ nFrom ], 1 ) == '"' ) - EXIT - ENDIF - cString += aLines[ nFrom ] - aLines[ nFrom ] := "" - nFrom++ - ENDDO - ENDIF - - RETURN cString - -STATIC FUNCTION hbqtui_pullSetToolTip( aLines, nFrom ) - LOCAL cString := "" - LOCAL nLen := Len( aLines ) - - IF "#ifndef QT_NO_TOOLTIP" $ aLines[ nFrom ] - nFrom++ - DO WHILE nFrom <= nLen - IF "#endif // QT_NO_TOOLTIP" $ aLines[ nFrom ] - EXIT - ENDIF - cString += aLines[ nFrom ] - aLines[ nFrom ] := "" - nFrom++ - ENDDO - IF ! Empty( cString ) - cString := StrTran( cString, "QString::fromUtf8" ) - cString := StrTran( cString, '\"' ) - cString := StrTran( cString, "\n", " " ) - ENDIF - ENDIF - - RETURN cString - -STATIC FUNCTION hbqtui_stripFront( /* @ */ cString, cTkn ) - LOCAL n - LOCAL nLen := Len( cTkn ) - - IF ( n := At( cTkn, cString ) ) > 0 - cString := SubStr( cString, n + nLen ) - RETURN .T. - ENDIF - - RETURN .F. - -STATIC FUNCTION hbqtui_stripRear( /* @ */ cString, cTkn ) - LOCAL n - - IF ( n := RAt( cTkn, cString ) ) > 0 - cString := SubStr( cString, 1, n - 1 ) - RETURN .T. - ENDIF - - RETURN .F. - -/*======================================================================*/ - -STATIC FUNCTION qth_to_src( cQTHFileName, cCPPFileName, cDOCFileName, cQtModule, cQtVer ) - LOCAL oSrc - - oSrc := HbQtSource():new( cQtModule, cQtVer, cQTHFileName, cCPPFileName, cDOCFileName ) - oSrc:build() - - RETURN .T. - -/*----------------------------------------------------------------------*/ - -CREATE CLASS HbQtSource - - VAR cCPPFileName, cDOCFileName - VAR hRef - - VAR cQtModule - VAR cQtVer - VAR cQtObject - - VAR aMethods INIT {} - - VAR isList INIT .F. - VAR isDestructor INIT .T. - VAR isConstructor INIT .F. - VAR isQtObjectAvailable INIT .F. - VAR isObject INIT .T. - VAR isDetached INIT .F. - VAR areMethodsClubbed INIT .T. - - VAR class_ INIT {} - VAR subCls_ INIT {} - VAR docum_ INIT {} - VAR code_ INIT {} - VAR cls_ INIT {} - VAR new_ INIT {} - VAR newW_ INIT {} - VAR old_ INIT {} - VAR enums_ INIT {} - VAR enum_ INIT {} - VAR protos_ INIT {} - VAR varbls_ INIT {} - VAR slots_ INIT {} - - VAR dummy_ INIT {} - VAR func_ INIT { { "", 0 } } - VAR txt_ INIT {} - VAR cmntd_ INIT {} - VAR doc_ INIT {} - VAR constructors_ INIT {} - - VAR nFuncs INIT 0 - VAR nCnvrtd INIT 0 - - VAR cFunc - VAR cTrMode - - VAR cInt INIT "int,qint16,quint16,short,ushort,unsigned,GLuint,GLenum,GLint,GLsizei,GLclampf" - VAR cIntLong INIT "qint32,quint32,QRgb,qgl_GLsizeiptr,qgl_GLintptr" - VAR cIntLongLong INIT "qint64,quint64,qlonglong,qulonglong,ulong" - - VAR lPaintEvent INIT .F. - VAR lBuildExtended INIT .F. - - METHOD new( cQtModule, cQtVer, cQTHFileName, cCPPFileName, cDOCFileName ) - METHOD parseProto( cProto, fBody_ ) - METHOD parseVariables( cProto ) - METHOD build() - METHOD exploreExtensions() - METHOD getConstructor() - METHOD getConstructorW() - METHOD buildCppCode( oMtd ) - METHOD buildMethodBody( oMtd ) - METHOD buildDOC() - METHOD getMethodBody( oMtd, cMtdName, aMethods ) - METHOD normalizeCmd( oMtd, v ) - METHOD getReturnAsList( oMtd, FP, cPrefix ) - METHOD getReturnMethod( oMtd, lAddRet ) - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD HbQtSource:new( cQtModule, cQtVer, cQTHFileName, cCPPFileName, cDOCFileName ) - LOCAL cQth, s, n, i, n1, b_, tmp, cOrg, fBody_ - LOCAL f - - ::hRef := { => } - hb_HKeepOrder( ::hRef, .T. ) - - IF Empty( GetEnv( "HBQT_BUILD_TR_LEVEL" ) ) - ::cTrMode := "HB_TR_DEBUG" - ELSE - ::cTrMode := Upper( GetEnv( "HBQT_BUILD_TR_LEVEL" ) ) - IF ! ( ::cTrMode $ "HB_TR_ALWAYS,HB_TR_WARNING,HB_TR_ERROR" ) - ::cTrMode := "HB_TR_DEBUG" - ENDIF - ENDIF - - hb_fNameSplit( cQTHFileName,, @tmp ) - - ::cCPPFileName := cCPPFileName - ::cDOCFileName := cDOCFileName - - ::cQtModule := cQtModule - ::cQtVer := cQtVer - - ::cQtObject := tmp - - cQth := hb_MemoRead( cQTHFileName ) - - /* Prepare to be parsed properly */ - IF !( hb_eol() == Chr( 10 ) ) - cQth := StrTran( cQth, hb_eol(), Chr( 10 ) ) - ENDIF - IF !( hb_eol() == Chr( 13 ) + Chr( 10 ) ) - cQth := StrTran( cQth, Chr( 13 ) + Chr( 10 ), Chr( 10 ) ) - ENDIF - - IF ! Empty( ::class_:= hbqtgen_PullOutSection( @cQth, "CLASS" ) ) - FOR EACH s IN ::class_ - IF ( n := at( "=", s ) ) > 0 - AAdd( ::cls_, { AllTrim( SubStr( s, 1, n - 1 ) ), AllTrim( SubStr( s, n + 1 ) ) } ) - ENDIF - NEXT - ENDIF - - /* Explore if protected methods are to be implemented */ - ::exploreExtensions() - - /* Reassign class level version information */ - IF ( n := AScan( ::cls_, {| e_ | upper( e_[ 1 ] ) == "VERSION" } ) ) > 0 - IF ! Empty( ::cls_[ n, 2 ] ) - ::cQtVer := ::cls_[ n, 2 ] - ENDIF - ENDIF - - /* Pull out SUBCLASS section */ - ::subCls_ := hbqtgen_PullOutSection( @cQth, "SUBCLASS" ) - - /* Pull out Doc Section */ - ::docum_ := hbqtgen_PullOutSection( @cQth, "DOC" ) - - /* Pull out Code Section */ - ::code_ := hbqtgen_PullOutSection( @cQth, "CODE" ) - - /* Separate constructor function */ - ::new_:= {} - f := "HB_FUNC( QT_" + Upper( ::cQtObject ) + " )" - ::cFunc := "HB_FUNC_STATIC( NEW )" - - n := AScan( ::code_, {| e | f $ e } ) - - AAdd( ::new_, ::cFunc ) - FOR i := n + 1 TO Len( ::code_ ) - AAdd( ::new_, ::code_[ i ] ) - IF RTrim( ::code_[ i ] ) == "}" - n1 := i - EXIT - ENDIF - NEXT - ::old_ :={} - FOR i := 1 TO Len( ::code_ ) - IF i < n .or. i > n1 - AAdd( ::old_, ::code_[ i ] ) - ENDIF - NEXT - ::code_ := ::old_ - - ::newW_:= aClone( ::new_ ) - ::newW_[ 1 ] := "HB_FUNC( " + Upper( ::cQtObject ) + " )" - - /* Pullout constructor methods */ - #if 0 - tmp := ::cQtObject + " (" - FOR EACH s IN ::code_ - IF ( n := at( tmp, s ) ) > 0 .AND. ! ( "~" $ s ) - AAdd( ::constructors_, SubStr( s, n ) ) - ENDIF - NEXT - #endif - - /* Pull out Enumerators */ - ::enums_:= hbqtgen_PullOutSection( @cQth, "ENUMS" ) - ::enum_:= {} - FOR EACH s IN ::enums_ - IF "enum " $ s .OR. "flags " $ s - b_:= hb_ATokens( AllTrim( s ), " " ) - AAdd( ::enum_, b_[ 2 ] ) - ENDIF - NEXT - - /* Pull out Prototypes */ -// ::protos_ := hbqtgen_PullOutSection( @cQth, "PROTOS" ) - tmp := hbqtgen_PullOutSection( @cQth, "PROTOS" ) - AEval( ::constructors_, {| e | AAdd( ::protos_, e ) } ) - AEval( tmp, {| e | AAdd( ::protos_, e ) } ) - - IF ::lBuildExtended - AAdd( ::protos_, "void hbSetEventBlock( int event, PHB_ITEM block );" ) - ENDIF - - /* Pull out Variables */ - ::varbls_ := hbqtgen_PullOutSection( @cQth, "VARIABLES" ) - - /* Pull Out Signals */ - ::slots_ := hbqtgen_PullOutSection( @cQth, "SLOTS" ) - - /* Combine signals and protos : same nature */ - AEval( ::slots_, {| e | AAdd( ::protos_, e ) } ) - - ::isList := AScan( ::cls_, {| e_ | Lower( e_[ 1 ] ) == "list" .AND. Lower( e_[ 2 ] ) == "yes" } ) > 0 - ::isDetached := AScan( ::cls_, {| e_ | Lower( e_[ 1 ] ) == "detached" .AND. Lower( e_[ 2 ] ) == "yes" } ) > 0 - ::isConstructor := AScan( ::cls_, {| e_ | Lower( e_[ 1 ] ) == "constructor" .AND. Lower( e_[ 2 ] ) == "no" } ) == 0 - ::isDestructor := AScan( ::cls_, {| e_ | Lower( e_[ 1 ] ) == "destructor" .AND. Lower( e_[ 2 ] ) == "no" } ) == 0 - ::isObject := qth_is_QObject( ::cQtObject ) - ::areMethodsClubbed := AScan( ::cls_, {| e_ | Lower( e_[ 1 ] ) == "clubmethods" .AND. Lower( e_[ 2 ] ) == "no" } ) == 0 - /* Determine Constructor - but this is hacky a bit. What could be easiest ? */ - IF ! ::isConstructor - FOR i := 3 TO Len( ::new_ ) - 1 - IF !( Left( LTrim( ::new_[ i ] ), 2 ) == "//" ) - IF "__HB_RETPTRGC__(" $ ::new_[ i ] - ::isConstructor := .T. - EXIT - ENDIF - ENDIF - NEXT - ENDIF - - FOR EACH s IN ::protos_ - cOrg := s - IF Empty( s := AllTrim( s ) ) - LOOP - ENDIF - - /* Check if proto is commented out */ - IF Left( s, 2 ) == "//" - AAdd( ::cmntd_, cOrg ) - LOOP - ENDIF - /* Check if it is not ANSI C Comment */ - IF Left( AllTrim( cOrg ), 1 ) $ "/*" - LOOP - ENDIF - /* Another comment tokens */ - IF Empty( s ) .or. Left( s, 1 ) $ "#;}" - LOOP - ENDIF - - ::nFuncs++ - - fBody_:= {} - IF right( s, 1 ) == "{" - fBody_:= hbqtgen_PullOutFuncBody( ::protos_, s:__enumIndex() ) - s := SubStr( s, 1, Len( s ) - 1 ) - ENDIF - IF ::parseProto( s, fBody_ ) - ::nCnvrtd++ - ELSE - AAdd( ::dummy_, cOrg ) - ENDIF - NEXT - - FOR EACH s IN ::varbls_ - cOrg := s - - IF Empty( s := AllTrim( s ) ) - LOOP - ENDIF - /* Check if proto is commented out */ - IF Left( s, 2 ) == "//" - AAdd( ::cmntd_, cOrg ) - LOOP - ENDIF - /* Check if it is not ANSI C Comment */ - IF Left( AllTrim( cOrg ), 1 ) $ "/*" - LOOP - ENDIF - /* Another comment tokens */ - IF Empty( s ) .or. Left( s, 1 ) $ "#;" - LOOP - ENDIF - - ::nFuncs++ - - IF ::parseVariables( s ) - ::nCnvrtd++ - ELSE - AAdd( ::dummy_, cOrg ) - ENDIF - NEXT - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbQtSource:build() - LOCAL i, s, oMtd, tmp, tmp1, n, k, aLine, uQtObject - - uQtObject := Upper( ::cQtObject ) - - ::hRef[ ::cQtObject ] := NIL - - /* Methods Body */ - FOR EACH oMtd IN ::aMethods - ::buildMethodBody( oMtd, ::aMethods ) - NEXT - - /* Pull .cpp copyright text */ - aLine := hbqtgen_BuildCopyrightText() - - /* Place ENUM definitions into the source */ - IF ! Empty( ::enums_ ) - AAdd( aLine, "/*" ) - AEval( ::enums_, {| e | iif( ! Empty( e ), AAdd( aLine, " * " + e ), NIL ) } ) - AAdd( aLine, " */ " ) - AAdd( aLine, "" ) - ENDIF - - FOR i := 3 TO Len( ::new_ ) - 1 - IF !( Left( LTrim( ::new_[ i ] ), 2 ) == "//" ) - IF "__HB_RETPTRGC__(" $ ::new_[ i ] - ::isQtObjectAvailable := .T. - ENDIF - ENDIF - NEXT - - IF ::isConstructor .AND. ::isQtObjectAvailable - FOR i := 3 TO Len( ::new_ ) - 1 - IF !( Left( LTrim( ::new_[ i ] ), 2 ) == "//" ) - IF "__HB_RETPTRGC__(" $ ::new_[ i ] - tmp1 := ::new_[ i ] - DO WHILE ( tmp := At( "hbqt_par_", tmp1 ) ) > 0 - tmp1 := SubStr( tmp1, tmp + Len( "hbqt_par_" ) ) - hbqtgen_AddRef( ::hRef, Left( tmp1, At( "(", tmp1 ) - 1 ) ) - tmp1 := SubStr( tmp1, At( "(", tmp1 ) + 1 ) - ENDDO - ENDIF - ENDIF - NEXT - ENDIF - - AAdd( aLine, "HB_EXTERN_BEGIN" ) - AAdd( aLine, "" ) - AAdd( aLine, "HB_FUNC_EXTERN( __HB" + Upper( ::cQtModule ) + " );" ) - FOR EACH s IN ::hRef - IF ! ( s:__enumKey() == "QModelIndexList" ) - AAdd( aLine, "HB_FUNC_EXTERN( HB_" + Upper( s:__enumKey() ) + " );" ) - ENDIF - NEXT - AAdd( aLine, "" ) - AAdd( aLine, "void _hb_force_link_" + ::cQtObject +"( void )" ) - AAdd( aLine, "{" ) - AAdd( aLine, " HB_FUNC_EXEC( __HB" + Upper( ::cQtModule ) + " );" ) - FOR EACH s IN ::hRef - IF ! ( s:__enumKey() == "QModelIndexList" ) - AAdd( aLine, " HB_FUNC_EXEC( HB_" + Upper( s:__enumKey() ) + " );" ) - ENDIF - NEXT - AAdd( aLine, "}" ) - AAdd( aLine, "" ) - IF ::cQtVer > "0x040500" - AAdd( aLine, "#if QT_VERSION >= " + ::cQtVer ) - ENDIF - - AAdd( aLine, "" ) - FOR EACH s IN ::hRef - AAdd( aLine, "extern HB_EXPORT void hbqt_del_" + s:__enumKey() + "( void * pObj, int iFlags );" ) - NEXT - AAdd( aLine, "" ) - - n := AScan( ::cls_, {| e_ | Left( Lower( e_[ 1 ] ), 7 ) == "inherit" .and. ! Empty( e_[ 2 ] ) } ) - IF n > 0 - s := Upper( StrTran( ::cls_[ n, 2 ], "Q", "HB_Q" ) ) - ELSE - s := "HBQTOBJECTHANDLER" - ENDIF - - AAdd( aLine, "" ) - AAdd( aLine, "extern HB_EXPORT void hbqt_register_" + lower( uQtObject ) + "();" ) - AAdd( aLine, "" ) - - FOR EACH k IN hb_aTokens( s, "," ) - k := lower( AllTrim( k ) ) - IF k == "hbqtobjecthandler" - AAdd( aLine, "HB_FUNC_EXTERN( " + Upper( k ) + " );" ) - ELSE - AAdd( aLine, "extern HB_EXPORT void hbqt_register_" + SubStr( k,4 ) + "();" ) - ENDIF - NEXT - AAdd( aLine, "" ) - - IF ::cQtVer > "0x040500" - AAdd( aLine, "#endif" ) - ENDIF - AAdd( aLine, "" ) - - FOR EACH k IN hb_aTokens( s, "," ) - AAdd( aLine, "HB_FUNC_EXTERN( " + Upper( AllTrim( k ) ) + " );" ) - NEXT - AAdd( aLine, "" ) - AAdd( aLine, "HB_EXTERN_END" ) - AAdd( aLine, "" ) - AAdd( aLine, "static void s_registerMethods( HB_USHORT uiClass );" ) - AAdd( aLine, "" ) - AAdd( aLine, "static HB_CRITICAL_NEW( s_hbqtMtx );" ) - AAdd( aLine, "#define HB_HBQT_LOCK hb_threadEnterCriticalSection( &s_hbqtMtx );" ) - AAdd( aLine, "#define HB_HBQT_UNLOCK hb_threadLeaveCriticalSection( &s_hbqtMtx );" ) - AAdd( aLine, "" ) - IF ::cQtVer > "0x040500" - AAdd( aLine, "#if QT_VERSION >= " + ::cQtVer ) - ENDIF - FOR EACH s IN ::hRef - IF s:__enumKey() == "QList" /* TOFIX: Ugly hack */ - tmp := s:__enumKey() + "< void * >" - ELSEIF s:__enumKey() == "QModelIndexList" /* TOFIX: Ugly hack */ - tmp := "QList< QModelIndex >" - ELSE - tmp := s:__enumKey() - ENDIF - AAdd( aLine, PadR( "#define hbqt_par_" + s:__enumKey() + "( n )", 64 ) + PadR( "( ( " + tmp, 48 ) + "* ) hbqt_par_ptr( n ) )" ) - NEXT - IF ::cQtVer > "0x040500" - AAdd( aLine, "#endif" ) - ENDIF - AAdd( aLine, "" ) - - IF ! Empty( ::code_ ) - IF ::cQtVer > "0x040500" - AAdd( aLine, "#if QT_VERSION >= " + ::cQtVer ) - ENDIF - n := AScan( ::code_, {| e | "gcMark" $ e } ) - IF n == 0 - AEval( ::code_, {| e | AAdd( aLine, StrTran( e, chr( 13 ) ) ) } ) - ELSE - AEval( ::code_, {| e | AAdd( aLine, StrTran( e, chr( 13 ) ) ) }, 1, n - 1 ) - ENDIF - IF ::cQtVer > "0x040500" - AAdd( aLine, "#endif" ) - ENDIF - AAdd( aLine, "" ) - ENDIF - - IF ::cQtVer > "0x040500" - AAdd( aLine, "#if QT_VERSION >= " + ::cQtVer ) - ENDIF - - IF ::cQtVer > "0x040500" - AAdd( aLine, "#endif" ) - ENDIF - AAdd( aLine, "" ) - - AAdd( aLine, "static PHB_ITEM s_oClass = NULL;" ) - AAdd( aLine, "" ) - - AAdd( aLine, "" ) - AAdd( aLine, "void hbqt_del_" + ::cQtObject + "( void * pObj, int iFlags )" ) - AAdd( aLine, "{" ) - AAdd( aLine, " Q_UNUSED( iFlags );" ) - AAdd( aLine, " if( pObj )" ) - AAdd( aLine, " {" ) - IF ::isList - AAdd( aLine, " QList< void * > * p = ( QList< void * > * ) pObj;" ) - AAdd( aLine, " int i;" ) - AAdd( aLine, " for( i = 0; i < p->size(); i++ )" ) - AAdd( aLine, " {" ) - AAdd( aLine, " if( p->at( i ) != NULL )" ) - AAdd( aLine, " {" ) - AAdd( aLine, " hb_itemRelease( p->at( i ) );" ) - AAdd( aLine, " }" ) - AAdd( aLine, " }" ) - AAdd( aLine, " delete ( ( " + ::cQtObject + "< void * >" + " * ) pObj );" ) - ELSE - IF ::isConstructor .and. ::isDestructor - AAdd( aLine, " delete ( " + ::cQtObject + " * ) pObj;" ) - ENDIF - ENDIF - AAdd( aLine, " pObj = NULL;" ) - AAdd( aLine, " }" ) - AAdd( aLine, "}" ) - AAdd( aLine, "" ) - - AAdd( aLine, "void hbqt_register_" + lower( uQtObject ) + "()" ) - AAdd( aLine, "{" ) - AAdd( aLine, ' HB_TRACE( HB_TR_DEBUG, ( "hbqt_register_' + lower( uQtObject ) + '()" ) );' ) - AAdd( aLine, " HB_HBQT_LOCK" ) - AAdd( aLine, " if( s_oClass == NULL )" ) - AAdd( aLine, " {" ) - AAdd( aLine, " s_oClass = hb_itemNew( NULL );" ) - FOR EACH k IN hb_aTokens( s, "," ) - k := lower( AllTrim( k ) ) - IF k == "hbqtobjecthandler" - AAdd( aLine, " HB_FUNC_EXEC( " + Upper( k ) + " );" ) - ELSE - AAdd( aLine, " hbqt_register_" + SubStr( k, 4 ) + "();" ) - ENDIF - NEXT - AAdd( aLine, ' PHB_ITEM oClass = hbqt_defineClassBegin( "' + uQtObject + '", s_oClass, "' + s + '" );' ) - AAdd( aLine, " if( oClass )" ) - AAdd( aLine, " {" ) - AAdd( aLine, " s_registerMethods( hb_objGetClass( hb_stackReturnItem() ) );" ) - AAdd( aLine, " hbqt_defineClassEnd( s_oClass, oClass );" ) - AAdd( aLine, " }" ) - AAdd( aLine, " }" ) - AAdd( aLine, " HB_HBQT_UNLOCK" ) - AAdd( aLine, "}" ) - AAdd( aLine, "" ) - - AAdd( aLine, "HB_FUNC( HB_" + uQtObject + " )" ) - AAdd( aLine, "{" ) - AAdd( aLine, ' HB_TRACE( HB_TR_DEBUG, ( "HB_' + uQtObject + '" ) );' ) - AAdd( aLine, " if( s_oClass == NULL )" ) - AAdd( aLine, " {" ) - AAdd( aLine, " hbqt_register_" + lower( uQtObject ) + "();" ) - AAdd( aLine, " }" ) - AAdd( aLine, ' hb_objSendMsg( s_oClass, "INSTANCE", 0 );' ) - AAdd( aLine, "}" ) - AAdd( aLine, "" ) - - /* Build PRG level constructor */ - AAdd( aLine, ::newW_[ 1 ] ) // Func definition - AAdd( aLine, ::newW_[ 2 ] ) // { - AEval( ::getConstructorW(), {| e | AAdd( aLine, e ) } ) - - /* Build the constructor */ - AAdd( aLine, ::new_[ 1 ] ) // Func definition - AAdd( aLine, ::new_[ 2 ] ) // { - AEval( ::getConstructor( 0 ), {| e | AAdd( aLine, e ) } ) - - /* Insert Functions */ - AEval( ::txt_, {| e | AAdd( aLine, StrTran( e, chr( 13 ) ) ) } ) - - AAdd( aLine, "" ) - AAdd( aLine, "static void s_registerMethods( HB_USHORT uiClass )" ) - AAdd( aLine, "{" ) - AAdd( aLine, " hb_clsAdd( uiClass, " + PadR( '"new"', 40 ) + ", HB_FUNCNAME( " + PadR( Upper( "NEW" ), 40 ) + " ) );" ) - FOR EACH oMtd IN ::aMethods - IF ! Empty( oMtd:cHBFunc ) - AAdd( aLine, " hb_clsAdd( uiClass, " + PadR( '"' + oMtd:cHBFunc + '"', 40 ) + ", HB_FUNCNAME( " + PadR( Upper( oMtd:cHBFunc ), 40 ) + " ) );" ) - ENDIF - NEXT - AAdd( aLine, "}" ) - AAdd( aLine, "" ) - AAdd( aLine, "HB_INIT_SYMBOLS_BEGIN( __HBQT_CLS_" + uQtObject + "__ )" ) - AAdd( aLine, ' { "' + uQtObject + '", { HB_FS_PUBLIC | HB_FS_LOCAL }, { HB_FUNCNAME( ' + uQtObject + " ) }, NULL }," ) - AAdd( aLine, ' { "HB_' + uQtObject + '", { HB_FS_PUBLIC | HB_FS_LOCAL }, { HB_FUNCNAME( HB_' + uQtObject + " ) }, NULL }" ) - AAdd( aLine, "HB_INIT_SYMBOLS_END( __HBQT_CLS_" + uQtObject + "__ )" ) - AAdd( aLine, "" ) - - /* Footer */ - hbqtgen_BuildFooter( @aLine ) - - /* Build Document File */ - ::buildDOC() - - /* Distribute in specific lib subfolder */ - hbqtgen_CreateTarget( ::cCPPFileName, aLine ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbQtSource:exploreExtensions() - LOCAL n - - IF ( n := AScan( ::cls_, {| e_ | Upper( e_[ 1 ] ) $ "PAINTEVENT" } ) ) > 0 - IF ! Empty( ::cls_[ n,2 ] ) - ::lPaintEvent := .T. - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbQtSource:getConstructor() - LOCAL i, s, aLine := {} - LOCAL cObjPfx := iif( ::lBuildExtended, "Q", "" ) - - IF ::cQtVer > "0x040500" - AAdd( aLine, "#if QT_VERSION >= " + ::cQtVer ) - ENDIF - IF ::isConstructor - IF ::isQtObjectAvailable - IF ::isList - AAdd( aLine, " " + cObjPfx + ::cQtObject + "< void * > * pObj = NULL;" ) - ELSE - AAdd( aLine, " " + cObjPfx + ::cQtObject + " * pObj = NULL;" ) - ENDIF - AAdd( aLine, " " ) - ENDIF - FOR i := 3 TO Len( ::new_ ) - 1 - IF !( Left( LTrim( ::new_[ i ] ), 2 ) == "//" ) - IF "__HB_RETPTRGC__(" $ ::new_[ i ] - s := ::new_[ i ] - s := RTrim( StrTran( s, "__HB_RETPTRGC__(", "pObj =" ) ) - IF ");" $ s - s := RTrim( StrTran( s, ");" ) ) + ";" - ENDIF - s := StrTran( s, "( " + ::cQtObject + "* )" ) - s := StrTran( s, "new ", "new " + cObjPfx ) - AAdd( aLine, s ) - ELSE - AAdd( aLine, ::new_[ i ] ) - ENDIF - ENDIF - NEXT - IF ::isQtObjectAvailable - AAdd( aLine, " " ) - AAdd( aLine, ' hb_itemReturnRelease( hbqt_bindSetHbObject( NULL, pObj, "' + "HB_" + upper( ::cQtObject ) + '", hbqt_del_' + ::cQtObject + ", " + qth_get_bits( ::cQtObject, ! ::isDetached ) + " ) );" ) - ENDIF - ELSE - FOR i := 3 TO Len( ::new_ ) - 1 - AAdd( aLine, ::new_[ i ] ) - NEXT - ENDIF - IF ::cQtVer > "0x040500" - AAdd( aLine, "#endif" ) - ENDIF - AAdd( aLine, ::new_[ Len( ::new_ ) ] ) // } - AAdd( aLine, "" ) - - RETURN aLine - -/*----------------------------------------------------------------------*/ - -METHOD HbQtSource:getConstructorW() - LOCAL aLine := ::getConstructor() - - AEval( aLine, {| e, i | aLine[ i ] := StrTran( e, "hbqt_bindSetHbObject", "hbqt_bindGetHbObject" ) } ) - - RETURN aLine - -/*----------------------------------------------------------------------*/ - -METHOD HbQtSource:normalizeCmd( oMtd, v ) - LOCAL FP - - oMtd:cCmd := StrTran( oMtd:cCmd, "( )", "()" ) - - IF ! oMtd:isConstructor - FP := StrTran( oMtd:cCmd, "hbqt_par_" + ::cQtObject + "( 1 )", v, 1, 1 ) - ELSE - FP := oMtd:cCmd - ENDIF - - /* Manage Re-Attached */ - IF oMtd:nAttach > 0 - FP := StrTran( FP, ", false", ", true" ) - ENDIF - - RETURN FP - -/*----------------------------------------------------------------------*/ - -METHOD HbQtSource:getReturnAsList( oMtd, FP, cPrefix ) - LOCAL cRetCast, n, n1, cCast, cParas, nStrCnt, lFar - LOCAL aLines := {} - - IF oMtd:isRetList - cRetCast := oMtd:oRet:cCast - lFar := "*" $ cRetCast - IF ( n := at( "<", cRetCast ) ) > 0 - IF ( n1 := at( ">", cRetCast ) ) > 0 - cCast := AllTrim( SubStr( cRetCast, n + 1, n1 - n - 1 ) ) - cCast := StrTran( cCast, "*" ) - cCast := StrTran( cCast, " " ) - ENDIF - ENDIF - IF ! Empty( cCast ) - cParas := oMtd:cParas - nStrCnt := 0 - DO WHILE "%%%" $ cParas - ++nStrCnt - cParas := StrTran( cParas, "%%%", StrZero( nStrCnt, 2, 0 ), 1, 1 ) - ENDDO - - AAdd( aLines, cPrefix + "QList * qList = new QList< PHB_ITEM >;" ) - AAdd( aLines, cPrefix + cRetCast + " qL = p->" + oMtd:cFun + cParas + ";" ) - AAdd( aLines, cPrefix + "int i;" ) - AAdd( aLines, cPrefix + "for( i = 0; i < qL.size(); i++ )" ) - AAdd( aLines, cPrefix + "{" ) - IF cCast == "QString" - AAdd( aLines, cPrefix + " const char * str = qL.at( i ).data();" ) - AAdd( aLines, cPrefix + " PHB_ITEM pItem = hb_itemNew( NULL );" ) - AAdd( aLines, cPrefix + " hb_itemPutCL( pItem, str, strlen( str ) );" ) - AAdd( aLines, cPrefix + " qList->append( pItem );" ) - ELSEIF cCast == "int" - AAdd( aLines, cPrefix + " /* TOFIX: how TO release pItem ? */" ) - AAdd( aLines, cPrefix + " PHB_ITEM pItem = hb_itemNew( NULL );" ) - AAdd( aLines, cPrefix + " hb_itemPutNI( pItem, qL.at( i ) );" ) - AAdd( aLines, cPrefix + " qList->append( pItem );" ) - ELSEIF cCast == "qreal" - AAdd( aLines, cPrefix + " /* TOFIX: how TO release pItem ? */" ) - AAdd( aLines, cPrefix + " PHB_ITEM pItem = hb_itemNew( NULL );" ) - AAdd( aLines, cPrefix + " hb_itemPutND( pItem, qL.at( i ) );" ) - AAdd( aLines, cPrefix + " qList->append( pItem );" ) - ELSE - IF lFar - AAdd( aLines, cPrefix + ' qList->append( hbqt_bindGetHbObject( NULL, ( void * ) qL.at( i ), "HB_' + Upper( cCast ) + '", NULL, ' + qth_get_bits( cCast, .F. ) + " ) );" ) - ELSE - AAdd( aLines, cPrefix + ' qList->append( hbqt_bindGetHbObject( NULL, new ' + cCast + '( qL.at( i ) ), "HB_' + Upper( cCast ) + '", hbqt_del_' + cCast + ", " + qth_get_bits( cCast, .T. ) + " ) );" ) - ENDIF - ENDIF - AAdd( aLines, cPrefix + "}" ) - AAdd( aLines, cPrefix + 'hb_itemReturnRelease( hbqt_bindGetHbObject( NULL, qList, "HB_QLIST", hbqt_del_QList, HBQT_BIT_OWNER ) );' ) - ENDIF - ELSE - AAdd( aLines, cPrefix + FP + ";" ) - ENDIF - - RETURN aLines - -/*----------------------------------------------------------------------*/ - -METHOD HbQtSource:getReturnMethod( oMtd, lAddRet ) - LOCAL txt_, nStrCnt, n, FP, v - - txt_:= {} - - v := "p" /* NEVER change this */ - FP := ::normalizeCmd( oMtd, v ) - - IF ! Empty( oMtd:aPre ) - FOR n := 1 TO Len( oMtd:aPre ) - AAdd( txt_, oMtd:aPre[ n, 1 ] ) - NEXT - AAdd( txt_, "" ) - ENDIF - - /* Manage detached Argument */ - IF oMtd:nDetach > 0 - AAdd( txt_, "hbqt_par_detach_ptrGC( " + hb_ntos( oMtd:nDetach ) + " );" ) - ENDIF - - nStrCnt := 0 - DO WHILE "%%%" $ FP - ++nStrCnt - FP := StrTran( FP, "%%%", StrZero( nStrCnt, 2, 0 ), 1, 1 ) - AAdd( txt_, "void * pText" + StrZero( nStrCnt, 2, 0 ) + " = NULL;" ) - ENDDO - - AEval( ::getReturnAsList( oMtd, FP, "" ), {| e | AAdd( txt_, e ) } ) - - FOR n := nStrCnt TO 1 STEP -1 - AAdd( txt_, "hb_strfree( pText" + StrZero( n, 2, 0 ) + " );" ) - NEXT - - /* Return values back to PRG */ - IF ! Empty( oMtd:aPre ) - AAdd( txt_, "" ) - FOR n := 1 TO Len( oMtd:aPre ) - AAdd( txt_, oMtd:aPre[ n, 4 ] + "( " + oMtd:aPre[ n, 3 ] + ", " + hb_ntos( oMtd:aPre[ n, 2 ] ) + " );" ) - NEXT - ENDIF - - IF lAddRet - AAdd( txt_, "return;" ) - ENDIF - - RETURN txt_ - -/*----------------------------------------------------------------------*/ - -METHOD HbQtSource:getMethodBody( oMtd, cMtdName, aMethods ) - LOCAL cTmp, n, v, ooMtd, i, nArgs, nArgGrps - LOCAL txt_:= {}, a_:= {}, b_:= {}, c_:= {}, d_:= {} - LOCAL cCrc, nMtds, lInIf, lFirst, nTySame - - HB_SYMBOL_UNUSED( cMtdName ) - - /* check for methods already been worked on */ - IF AScan( ::func_, {| e_ | e_[ 1 ] == oMtd:cFun } ) > 0 - RETURN {} - ENDIF - AAdd( ::func_, { oMtd:cFun, 0, "" } ) - - oMtd:cHBFunc := oMtd:cFun - oMtd:cCmd := StrTran( oMtd:cCmd, "( )", "()" ) - - FOR EACH ooMtd IN aMethods - IF ooMtd:cFun == oMtd:cFun - AAdd( a_, ooMtd ) - ENDIF - NEXT - - /* Display method prototypes on top of the method body */ - FOR EACH ooMtd IN a_ - AAdd( txt_, "/* " + StrTran( ooMtd:cProto, chr( 13 ) ) + " */" ) - NEXT - - v := "p" /* NEVER change this */ - - AAdd( txt_, "HB_FUNC_STATIC( " + Upper( oMtd:cHBFunc ) + " )" ) - AAdd( txt_, "{" ) - IF ! empty( oMtd:cVersion ) - AAdd( txt_, " #if QT_VERSION >= " + oMtd:cVersion ) - ELSEIF ::cQtVer > "0x040500" - AAdd( txt_, " #if QT_VERSION >= " + ::cQtVer ) - ENDIF - - /* If method is manually written in .qth - no more processing */ - IF ! Empty( oMtd:fBody_ ) - AEval( oMtd:fBody_, {| e | AAdd( txt_, e ) } ) - AAdd( txt_, "}" ) - AAdd( txt_, "" ) - RETURN txt_ - ENDIF - - /* Sort per number of arguments */ - asort( a_, , , {| e, f | StrZero( e:nArgs, 2 ) + iif( e:nArgs == 0, "", e:hArgs[ 1 ]:cTypeHB ) > StrZero( f:nArgs, 2 ) + iif( f:nArgs == 0, "", f:hArgs[ 1 ]:cTypeHB ) } ) - - /* know the maximum groups by number of parameters - first CASE */ - AEval( a_, {| o | iif( AScan( b_, o:nArgs ) == 0, AAdd( b_, o:nArgs ), NIL ) } ) - - /* also take into account optional arguments if any */ - FOR EACH ooMtd IN a_ - IF ooMtd:nArgsReal < ooMtd:nArgs - FOR i := ooMtd:nArgs - 1 TO ooMtd:nArgsReal STEP -1 - IF AScan( b_, i ) == 0 - AAdd( b_, i ) - ENDIF - NEXT - ENDIF - NEXT - - /* Build the structure number of parameters wise */ - FOR EACH nArgs IN b_ - AAdd( c_, { nArgs, {}, {}, {} } ) - n := Len( c_ ) - FOR EACH ooMtd IN a_ - IF ooMtd:nArgs == nArgs - AAdd( c_[ n, 2 ], ooMtd ) - ENDIF - NEXT - /* Again append methods with optional arguments */ - FOR EACH ooMtd IN a_ - IF ooMtd:nArgsReal < ooMtd:nArgs - FOR i := ooMtd:nArgs - 1 TO ooMtd:nArgsReal STEP -1 - IF i == nArgs - AAdd( c_[ n, 2 ], ooMtd ) - ENDIF - NEXT - ENDIF - NEXT - NEXT - - /* stack groups based on parameters descending */ - asort( c_, , , {| e, f | e[ 1 ] > f[ 1 ] } ) - - /* again sort no of arguments based methods by type of arguments */ - FOR i := 10 TO 0 STEP -1 /* consider maximum 10 arguments */ - IF ( n := AScan( c_, {| e_ | e_[ 1 ] == i } ) ) > 0 - d_:= c_[ n, 2 ] // d_ == a_ - asort( d_, , , {| e, f | __TY( e, c_[ n, 1 ] ) < __TY( f, c_[ n, 1 ] ) } ) - ENDIF - NEXT - - - cTmp := iif( ::lBuildExtended, "Q", "" ) + ::cQtObject + iif( ::isList, "< void * >", "" ) - AAdd( txt_, " " + cTmp + " * " + v + " = ( " + cTmp + " * ) hbqt_par_ptr( 0 );" ) - - AAdd( txt_, " if( " + v + " )" ) - AAdd( txt_, " {" ) - - IF Len( a_ ) == 1 .and. oMtd:nArgs == oMtd:nArgsReal /* Only one method - no overloads */ - FOR EACH b_ IN c_ - nArgs := b_[ 1 ] - a_ := b_[ 2 ] - FOR EACH oMtd IN a_ - IF oMtd:nArgs > 0 - AAdd( txt_, " " + iif( oMtd:__enumIndex() == 1, "if", "else if" ) + "( " + __TY_TYPEScpp( oMtd, nArgs, .F. ) + " )" ) - AAdd( txt_, " {" ) - ENDIF - - AEval( ::getReturnMethod( oMtd, ( oMtd:nArgs > 0 ) ), {| e | AAdd( txt_, Space( iif( oMtd:nArgs > 0, 9, 6 ) ) + e ) } ) - - IF oMtd:nArgs > 0 - AAdd( txt_, " }" ) - AAdd( txt_, " hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );" ) - ENDIF - NEXT - NEXT - - ELSE - - nArgs := 0 - AAdd( txt_, " switch( hb_pcount() )" ) - AAdd( txt_, " {" ) - - FOR EACH b_ IN c_ - nArgs := b_[ 1 ] - a_ := b_[ 2 ] - nArgGrps := Len( c_ ) - cCrc := "xxx" - nMtds := 0 - lInIf := .F. - nTySame := 0 - lFirst := nArgs > 0 - - AAdd( txt_, " case " + hb_ntos( nArgs ) + ":" ) /* number of parameters */ - AAdd( txt_, " {" ) - - FOR EACH oMtd IN a_ - IF nArgs > 0 - IF !( cCrc == __TY( oMtd, nArgs ) ) - cCrc := __TY( oMtd, nArgs ) - nMtds := 0 - nTySame := 0 - AEval( a_, {| o | iif( __TY( o,nArgs ) == cCrc, nTySame++, NIL ) } ) - lInIf := oMtd:nArgQCast > 0 .AND. oMtd:nArgQCast <= nArgs .AND. nTySame > 1 - AAdd( txt_, " " + iif( lFirst, "if( ", "else if( " ) + __TY_TYPEScpp( oMtd, nArgs, nTySame > 1 ) + " )" ) - AAdd( txt_, " {" ) - ENDIF - ENDIF - IF lFirst - lFirst := .F. - ENDIF - - nMtds++ - - IF lInIf - AAdd( txt_, " " + iif( nMtds == 1, "if( ", "else if( " ) + __TY_Method( oMtd, nArgs ) + " )" ) - AAdd( txt_, " {" ) - ENDIF - - AEval( ::getReturnMethod( oMtd, .T. ), {| e | AAdd( txt_, Space( iif( nArgs == 0, 12, 15 ) + iif( lInIf, 3, 0 ) ) + e ) } ) - - IF lInIf - AAdd( txt_, " }" ) - ENDIF - - IF nArgs > 0 .AND. ! lInIf - AAdd( txt_, " }" ) - ELSEIF nArgs > 0 .AND. lInIf .AND. nMtds == nTySame - AAdd( txt_, " }" ) - ENDIF - NEXT - IF nArgs > 0 - AAdd( txt_, " break;" ) - AAdd( txt_, " }" ) - ENDIF - NEXT - IF nArgs == 0 - AAdd( txt_, " }" ) // CASE - ENDIF - AAdd( txt_, " }" ) // SWITCH - AAdd( txt_, " hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );" ) - - ENDIF - - AAdd( txt_, " }" ) // if( p ) - IF ! empty( oMtd:cVersion ) .OR. ; - ::cQtVer > "0x040500" - AAdd( txt_, " #endif" ) - ENDIF - AAdd( txt_, "}" ) // HB_FUNC() - AAdd( txt_, "" ) - - HB_SYMBOL_UNUSED( d_ ) - HB_SYMBOL_UNUSED( nArgGrps ) - - RETURN txt_ - -/*----------------------------------------------------------------------*/ - -METHOD HbQtSource:buildMethodBody( oMtd ) - LOCAL aBdy, cFunc - - oMtd:cCmd := StrTran( oMtd:cCmd, "( )", "()" ) - - aBdy := ::getMethodBody( oMtd, "QT_" + Upper( ::cQtObject ) + "_" + Upper( oMtd:cHBFunc ), ::aMethods ) - - AEval( aBdy, {| e | AAdd( ::txt_, e ) } ) - - cFunc := iif( ::areMethodsClubbed, hbqtgen_stripLastFrom( oMtd:cHBFunc, "_" ), oMtd:cHBFunc ) - - oMtd:cDoc := "Qt_" + ::cQtObject + "_" + cFunc + "( p" + ::cQtObject + ; - iif( Empty( oMtd:cDocs ), "", ", " + oMtd:cDocs ) + " ) -> " + oMtd:cPrgRet - - AAdd( ::doc_, oMtd:cDoc ) - AAdd( ::doc_, "" ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbqtgen_prgRetNormalize( cPrgRet ) - - cPrgRet := StrTran( cPrgRet, "::", "_" ) - cPrgRet := StrTran( cPrgRet, "<", "_" ) - cPrgRet := StrTran( cPrgRet, " *>" ) - cPrgRet := StrTran( cPrgRet, "*>" ) - - RETURN cPrgRet - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbqtgen_paramCheckStrCpp( cType, nArg, cCast, lObj ) - - HB_SYMBOL_UNUSED( cCast ) - - SWITCH cType - CASE "PB" - RETURN "! HB_ISNIL( " + hb_ntos( nArg ) + " )" - CASE "P" /* TODO */ - RETURN "HB_ISPOINTER( " + hb_ntos( nArg ) + " )" - CASE "O" - IF lObj - RETURN "HB_ISOBJECT( " + hb_ntos( nArg ) + " )" - ELSE - RETURN "hbqt_par_isDerivedFrom( " + hb_ntos( nArg ) + ', "' + upper( cCast ) + '" )' - ENDIF - CASE "N*" - RETURN "HB_ISBYREF( " + hb_ntos( nArg ) + " )" - CASE "N" - RETURN "HB_ISNUM( " + hb_ntos( nArg ) + " )" - CASE "L*" - RETURN "HB_ISBYREF( " + hb_ntos( nArg ) + " )" - CASE "L" - RETURN "HB_ISLOG( " + hb_ntos( nArg ) + " )" - CASE "C" - RETURN "HB_ISCHAR( " + hb_ntos( nArg ) + " )" - ENDSWITCH - - RETURN "" -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION __TY_TYPEScpp( oM, nArgs, lObj ) - LOCAL i, s := "" - FOR i := 1 TO nArgs - s += hbqtgen_paramCheckStrCpp( oM:hArgs[ i ]:cTypeHB, i, oM:hArgs[ i ]:cCast, lObj ) + " && " - NEXT - IF " && " $ s - s := Left( s, Len( s ) - 4 ) - ENDIF - RETURN s - -/*----------------------------------------------------------------------*/ - -METHOD HbQtSource:buildDOC() - LOCAL cText, n, n1, n2, nLen, pWidget, cRet, cLib, i, cInherits - - LOCAL hEntry := { => } - - LOCAL cQT_VER := hb_ntos( hb_HexToNum( SubStr( ::cQtVer, 3, 2 ) ) ) + "." + hb_ntos( hb_HexToNum( SubStr( ::cQtVer, 5, 2 ) ) ) - - hb_HKeepOrder( hEntry, .T. ) - - n := AScan( ::cls_, {| e_ | Left( Lower( e_[ 1 ] ), 7 ) $ "inherits" .and. ! Empty( e_[ 2 ] ) } ) - cInherits := iif( n > 0, ::cls_[ n, 2 ], "" ) - - cLib := ::cQtModule - - hEntry[ "TEMPLATE" ] := "Class" - hEntry[ "NAME" ] := ::cQtObject + "()" - hEntry[ "CATEGORY" ] := "Harbour Bindings for Qt" - hEntry[ "SUBCATEGORY" ] := "GUI" - hEntry[ "EXTERNALLINK" ] := "http://doc.trolltech.com/" + cQT_VER + "/" + Lower( ::cQtObject ) + ".html" - hEntry[ "ONELINER" ] := "Creates a new " + ::cQtObject + " object." - hEntry[ "INHERITS" ] := cInherits - hEntry[ "SYNTAX" ] := ::cQtObject + "( ... )" + hb_eol() - hEntry[ "ARGUMENTS" ] := "" - hEntry[ "RETURNS" ] := "An instance of the object of type " + ::cQtObject - IF ! Empty( ::doc_ ) - hEntry[ "METHODS" ] := "" - nLen := Len( ::cQtObject ) - n := at( ::cQtObject, ::doc_[ 1 ] ) - pWidget := "p" + ::cQtObject - FOR i := 1 TO Len( ::doc_ ) - IF ! Empty( cText := ::doc_[ i ] ) - cText := SubStr( cText, n + nLen + 1 ) - cText := StrTran( cText, pWidget + ", " ) - cText := StrTran( cText, pWidget ) - cText := StrTran( cText, "( )", "()" ) - n1 := at( "->", cText ) - cRet := hbqtgen_prgRetNormalize( AllTrim( SubStr( cText, n1 + 2 ) ) ) - cText := SubStr( cText, 1, n1 - 1 ) - n2 := Max( 50, Len( cText ) ) - cText := padR( cText, n2 ) - IF ! Empty( cRet ) - hEntry[ "METHODS" ] += ":" + cText + " -> " + cRet + hb_eol() - ENDIF - ENDIF - NEXT - ENDIF - hEntry[ "DESCRIPTION" ] := "" - hEntry[ "EXAMPLES" ] := "" - FOR EACH cText IN ::docum_ - IF ! Empty( cText ) - hEntry[ "EXAMPLES" ] += cText + hb_eol() - ENDIF - NEXT - hEntry[ "TESTS" ] := "" - hEntry[ "STATUS" ] := "R" - hEntry[ "COMPLIANCE" ] := "Not Clipper compatible" - hEntry[ "PLATFORMS" ] := "Windows, Linux, Mac OS X, OS/2" - hEntry[ "VERSION" ] := cQT_VER + " or upper" - hEntry[ "FILES" ] := "Library: " + "hb" + cLib -#if 0 - hEntry[ "SEEALSO" ] := "" - hEntry[ "SEEALSO" ] += iif( Empty( cInherits ), "", cInherits + "()" ) -#endif - - RETURN hb_MemoWrit( ::cDOCFileName, __hbdoc_ToSource( { hEntry } ) ) - -/*----------------------------------------------------------------------*/ - -METHOD HbQtSource:parseVariables( cProto ) - LOCAL n, oMtd, oRet - - IF ( n := at( " ", cProto ) ) == 0 - RETURN .F. - ENDIF - - oMtd := HbqtMethod():new() - oMtd:cProto := cProto - oMtd:isVariable := .T. - - oMtd:cPre := cProto - - oMtd:cRet := AllTrim( SubStr( cProto, 1, n - 1 ) ) - oMtd:cFun := AllTrim( SubStr( cProto, n + 1 ) ) - - oRet := HbqtArgument():new( oMtd:cRet, ::cQtObject, ::enum_, "const" $ oMtd:cPas, .T. ) - oMtd:oRet := oRet - - ::buildCppCode( oMtd ) - - RETURN oMtd:lValid - -/*----------------------------------------------------------------------*/ - -#define HBQTGEN_THIS_PROPER( s ) ( Upper( Left( s, 1 ) ) + SubStr( s, 2 ) ) - -METHOD HbQtSource:parseProto( cProto, fBody_ ) - LOCAL aArg, n, nn, cHBIdx, nIndex, s, ss, cFirstParamCast, cArg - LOCAL oMtd, oRet, oArg, k, cKey, cVal - LOCAL cRef - - IF ( n := at( "(", cProto ) ) == 0 - RETURN .F. - ENDIF - IF ( nn := rat( ")", cProto ) ) == 0 - RETURN .F. - ENDIF - - /* Method Parsing */ - oMtd := HbqtMethod():new() - oMtd:cProto := cProto - oMtd:fBody_ := fBody_ - - oMtd:cPre := AllTrim( SubStr( cProto, 1, n - 1 ) ) - oMtd:cPar := AllTrim( SubStr( cProto, n + 1, nn - 1 - n ) ) - oMtd:cPas := AllTrim( SubStr( cProto, nn + 1 ) ) - - IF ( n := at( "[*", oMtd:cPas ) ) > 0 - IF ( nn := at( "*]", oMtd:cPas ) ) > 0 - oMtd:cMrk := AllTrim( SubStr( oMtd:cPas, n + 2, nn - n - 2 ) ) - oMtd:cPas := AllTrim( SubStr( oMtd:cPas, 1, n - 1 ) ) - FOR EACH k IN hb_aTokens( oMtd:cMrk, ";" ) - IF ( n := at( "=", k ) ) > 0 - cKey := AllTrim( SubStr( k, 1, n - 1 ) ) - cVal := AllTrim( SubStr( k, n + 1 ) ) - SWITCH Upper( cKey ) - CASE "D" - oMtd:nDetach := val( cVal ) - EXIT - CASE "A" - oMtd:nAttach := val( cVal ) - EXIT - CASE "V" - oMtd:cVersion := cVal - EXIT - CASE "R" - oMtd:nDetachRet := val( cVal ) - EXIT - CASE "xxx" - EXIT - ENDSWITCH - ENDIF - NEXT - ENDIF - ENDIF - IF ( n := rat( " ", oMtd:cPre ) ) > 0 - oMtd:cFun := AllTrim( SubStr( oMtd:cPre, n + 1 ) ) - oMtd:cRet := AllTrim( SubStr( oMtd:cPre, 1, n - 1 ) ) - ELSE - oMtd:cFun := oMtd:cPre - oMtd:cRet := "" - ENDIF - IF Empty( oMtd:cRet ) .AND. oMtd:cFun == ::cQtObject - oMtd:isConstructor := .T. - oMtd:cRet := oMtd:cFun - ENDIF - - /* Return Value Parsing */ - oRet := HbqtArgument():new( oMtd:cRet, ::cQtObject, ::enum_, "const" $ oMtd:cPas, .T. ) - oMtd:oRet := oRet - - IF ! Empty( oMtd:cPar ) - /* Arguments Parsing */ - aArg := hb_ATokens( oMtd:cPar, "," ) - AEval( aArg, {| e, i | aArg[ i ] := AllTrim( e ) } ) - - FOR EACH cArg IN aArg - nIndex := cArg:__enumIndex() - - oArg := HbqtArgument():new( cArg, ::cQtObject, ::enum_, .F., .F. ) - oMtd:hArgs[ nIndex ] := oArg - - oMtd:nHBIdx := nIndex // iif( oMtd:isConstructor, 0, 1 ) - cHBIdx := hb_ntos( oMtd:nHBIdx ) - oMtd:cDocNM := HBQTGEN_THIS_PROPER( oArg:cName ) - - oMtd:nArgs++ - oMtd:nArgsOpt += iif( oArg:lOptional, 1, 0 ) - - IF Empty( cFirstParamCast ) - cFirstParamCast := oArg:cCast - IF "::" $ cFirstParamCast - cFirstParamCast := SubStr( cFirstParamCast, at( "::", cFirstParamCast ) + 2 ) - ENDIF - ENDIF - - cRef := NIL - - DO CASE - CASE oArg:cCast == "..." - oArg:cBody := "..." - oArg:cDoc := "..." - oArg:cTypeHB := "..." - - CASE oArg:cCast == "PHB_ITEM" - oArg:cBody := "hb_param( " + cHBIdx + ", HB_IT_ANY )" - oArg:cDoc := "x" + oMtd:cDocNM - oArg:cTypeHB := "PB" - - CASE oArg:cCast == "T" - oArg:cBody := "hb_param( " + cHBIdx + ", HB_IT_ANY )" - oArg:cDoc := "x" + oMtd:cDocNM - oArg:cTypeHB := "P" - - CASE oArg:cCast $ ::cInt .AND. oArg:lFar - AAdd( oMtd:aPre, { oArg:cCast + " i" + oMtd:cDocNM + " = 0;", oMtd:nHBIdx, "i" + oMtd:cDocNM, "hb_storni" } ) - oArg:cBody := "&i" + oMtd:cDocNM - oArg:cDoc := "@n" + oMtd:cDocNM - oArg:cTypeHB := "N*" - - CASE oArg:cCast $ ::cIntLong .AND. oArg:lFar - AAdd( oMtd:aPre, { oArg:cCast + " i" + oMtd:cDocNM + " = 0;", oMtd:nHBIdx, "i" + oMtd:cDocNM, "hb_stornl" } ) - oArg:cBody := "&i" + oMtd:cDocNM - oArg:cDoc := "@n" + oMtd:cDocNM - oArg:cTypeHB := "N*" - - CASE oArg:cCast $ ::cIntLongLong .AND. oArg:lFar - AAdd( oMtd:aPre, { oArg:cCast + " i" + oMtd:cDocNM + " = 0;", oMtd:nHBIdx, "i" + oMtd:cDocNM, "hb_stornint" } ) - oArg:cBody := "&i" + oMtd:cDocNM - oArg:cDoc := "@n" + oMtd:cDocNM - oArg:cTypeHB := "N*" - - CASE oArg:cCast $ ::cInt - IF ! Empty( oArg:cDefault ) .AND. !( oArg:cDefault == "0" ) - oArg:cBody := "hb_parnidef( " + cHBIdx + ", " + oArg:cDefault + " )" - ELSE - oArg:cBody := "hb_parni( " + cHBIdx + " )" - ENDIF - oArg:cDoc := "n" + oMtd:cDocNM - oArg:cTypeHB := "N" - - CASE oArg:cCast $ ::cIntLong - IF ! Empty( oArg:cDefault ) .AND. !( oArg:cDefault == "0" ) - oArg:cBody := "hb_parnldef( " + cHBIdx + ", " + oArg:cDefault + " )" - ELSE - oArg:cBody := "hb_parnl( " + cHBIdx + " )" - ENDIF - oArg:cDoc := "n" + oMtd:cDocNM - oArg:cTypeHB := "N" - - CASE oArg:cCast == "WId" - oArg:cBody := "( " + oArg:cCast + " ) hb_parnint( " + cHBIdx + " )" - oArg:cDoc := "n" + oMtd:cDocNM - oArg:cTypeHB := "N" - - CASE oArg:cCast $ "qlonglong,qulonglong" - IF ! Empty( oArg:cDefault ) .AND. !( oArg:cDefault == "0" ) - oArg:cBody := "( " + oArg:cCast + " ) hb_parnintdef( " + cHBIdx + ", " + oArg:cDefault + " )" - ELSE - oArg:cBody := "( " + oArg:cCast + " ) hb_parnint( " + cHBIdx + " )" - ENDIF - oArg:cDoc := "n" + oMtd:cDocNM - oArg:cTypeHB := "N" - - CASE oArg:cCast $ ::cIntLongLong - IF ! Empty( oArg:cDefault ) .AND. !( oArg:cDefault == "0" ) - oArg:cBody := "hb_parnintdef( " + cHBIdx + ", " + oArg:cDefault + " )" - ELSE - oArg:cBody := "hb_parnint( " + cHBIdx + " )" - ENDIF - oArg:cDoc := "n" + oMtd:cDocNM - oArg:cTypeHB := "N" - - CASE oArg:cCast $ "double,qreal,float,GLfloat,qsreal" .AND. oArg:lFar - AAdd( oMtd:aPre, { oArg:cCast + " qr" + oMtd:cDocNM + " = 0;", oMtd:nHBIdx, "qr" + oMtd:cDocNM, "hb_stornd" } ) - oArg:cBody := "&qr" + oMtd:cDocNM - oArg:cDoc := "@n" + oMtd:cDocNM - oArg:cTypeHB := "N*" - - CASE oArg:cCast $ "double,qreal,float,GLfloat,qsreal" - s := "hb_parnd( " + cHBIdx + " )" - IF ! Empty( oArg:cDefault ) - oArg:cBody := "( HB_ISNUM( " + cHBIdx + " ) ? " + s + " : " + oArg:cDefault + " )" - ELSE - oArg:cBody := s - ENDIF - oArg:cDoc := "n" + oMtd:cDocNM - oArg:cTypeHB := "N" - - CASE oArg:cCast == "uchar" .AND. oArg:lFar .AND. ! oArg:lConst - /* TOFIX: Such code is not valid and should never be generated (const->non-const) [vszakats] */ - oArg:cBody := "( uchar * ) hb_parc( " + cHBIdx + " )" - oArg:cDoc := "c" + oMtd:cDocNM - oArg:cTypeHB := "C" - - CASE oArg:cCast == "uchar" .AND. oArg:lFar .AND. oArg:lConst - oArg:cBody := "( const uchar * ) hb_parc( " + cHBIdx + " )" - oArg:cDoc := "c" + oMtd:cDocNM - oArg:cTypeHB := "C" - - CASE oArg:cCast == "uchar" .AND. ! oArg:lFar .AND. ! oArg:lConst - oArg:cBody := "( uchar ) hb_parni( " + cHBIdx + " )" - oArg:cDoc := "n" + oMtd:cDocNM - oArg:cTypeHB := "N" - - CASE oArg:cCast == "char" .AND. oArg:lFar .AND. ! oArg:lConst - /* TOFIX: Such code is not valid and should never be generated (const->non-const) [vszakats] */ - oArg:cBody := "( char * ) hb_parc( " + cHBIdx + " )" - oArg:cDoc := "c" + oMtd:cDocNM - oArg:cTypeHB := "C" - - CASE oArg:cCast == "char" .AND. oArg:lFar .AND. oArg:lConst - oArg:cBody := "( const char * ) hb_parc( " + cHBIdx + " )" - oArg:cDoc := "c" + oMtd:cDocNM - oArg:cTypeHB := "C" - - CASE oArg:cCast == "char" .AND. ! oArg:lFar .AND. ! oArg:lConst - oArg:cBody := "( char ) hb_parni( " + cHBIdx + " )" - oArg:cDoc := "n" + oMtd:cDocNM - oArg:cTypeHB := "N" - - CASE "::" $ oArg:cCast .AND. oArg:lFar - AAdd( oMtd:aPre, { oArg:cCast + " i" + oMtd:cDocNM + " = ( " + oArg:cCast + " ) 0;", oMtd:nHBIdx, "i" + oMtd:cDocNM, "hb_storni" } ) - oArg:cBody := "&i" + oMtd:cDocNM - oArg:cDoc := "@n" + oMtd:cDocNM - oArg:cTypeHB := "N" - - CASE "::" $ oArg:cCast - s := "( " + oArg:cCast + " ) hb_parni( " + cHBIdx + " )" - IF ! Empty( oArg:cDefault ) .AND. !( oArg:cDefault == "0" ) - IF AScan( ::enum_, oArg:cDefault ) > 0 - ss := ::cQtObject + "::" + oArg:cDefault - ELSE - ss := iif( "::" $ oArg:cDefault, oArg:cDefault, ; - iif( isDigit( Left( oArg:cDefault, 1 ) ), oArg:cDefault, ::cQtObject + "::" + oArg:cDefault ) ) - ENDIF - ss := "( " + oArg:cCast + " ) " + ss - oArg:cBody := "( HB_ISNUM( " + cHBIdx + " ) ? " + s + " : " + ss + " )" - ELSE - oArg:cBody := s - ENDIF - oArg:cDoc := "n" + oMtd:cDocNM - oArg:cTypeHB := "N" - - CASE oArg:cCast $ "bool,GLboolean" .AND. oArg:lFar - AAdd( oMtd:aPre, { "bool i" + oMtd:cDocNM + " = 0;", oMtd:nHBIdx, "i" + oMtd:cDocNM, "hb_stornl" } ) - oArg:cBody := "&i" + oMtd:cDocNM - oArg:cDoc := "@l" + oMtd:cDocNM - oArg:cTypeHB := "L" - - CASE oArg:cCast $ "bool,GLboolean" - s := "hb_parl( " + cHBIdx + " )" - IF ! Empty( oArg:cDefault ) - oArg:cBody := iif( oArg:cDefault == "false", s, "hb_parldef( " + cHBIdx + ", true )" ) - ELSE - oArg:cBody := s - ENDIF - oArg:cDoc := "l" + oMtd:cDocNM - oArg:cTypeHB := "L" - - CASE oArg:cCast == "void" .AND. oArg:lFar /* and it must be void * */ - oArg:cBody := "hb_parptr( " + cHBIdx + " )" - oArg:cDoc := "n" + oMtd:cDocNM - oArg:cTypeHB := "N" - - CASE oArg:cCast == "QString" - IF oArg:lFar - oArg:cBody := "( QString * ) hb_parstr_utf8( " + cHBIdx + ", &pText%%%, NULL )" - ELSEIF oArg:lConst - oArg:cBody := "( QString ) hb_parstr_utf8( " + cHBIdx + ", &pText%%%, NULL )" - ELSE - oArg:cBody := "hb_parstr_utf8( " + cHBIdx + ", &pText%%%, NULL )" - ENDIF - oArg:cDoc := "c" + oMtd:cDocNM // oArg:cCast - W R O N G - oArg:cTypeHB := "C" - - CASE oArg:lFar - cRef := oArg:cCast - oArg:cBody := "hbqt_par_" + oArg:cCast + "( " + cHBIdx + " )" - IF ! Empty( oArg:cDefault ) - oArg:cBody := "( HB_ISOBJECT( " + cHBIdx + " ) ? " + oArg:cBody + " : " + oArg:cDefault + " )" - ENDIF - oArg:cDoc := "o" + oArg:cCast - oArg:cTypeHB := "O" - - CASE oArg:lAnd .AND. oArg:lConst - cRef := oArg:cCast - s := "*hbqt_par_" + oArg:cCast + "( " + cHBIdx + " )" - IF ! Empty( oArg:cDefault ) .AND. ( "(" $ oArg:cDefault ) - oArg:cBody := "( HB_ISOBJECT( " + cHBIdx + " ) ? " + s + " : " + oArg:cDefault + " )" - ELSE - oArg:cBody := s - ENDIF - oArg:cDoc := "o" + oArg:cCast - oArg:cTypeHB := "O" - - CASE oArg:lAnd - cRef := oArg:cCast - oArg:cBody := "*hbqt_par_" + oArg:cCast + "( " + cHBIdx + " )" - oArg:cDoc := "o" + oArg:cCast - oArg:cTypeHB := "O" - - CASE oArg:cCast == "QChar" - cRef := oArg:cCast - oArg:cBody := "*hbqt_par_" + oArg:cCast + "( " + cHBIdx + " )" - oArg:cDoc := "o" + oArg:cCast - oArg:cTypeHB := "O" - - OTHERWISE - oArg:cBody := "" /* Just in case */ - oArg:cDoc := "" - oArg:cTypeHB := "" - - ENDCASE - - hbqtgen_AddRef( ::hRef, cRef ) - - oMtd:cParas += oArg:cBody + ", " - oMtd:cDocs += oArg:cDoc + ", " - NEXT - ENDIF - - oMtd:nArgsReal := oMtd:nArgs - oMtd:nArgsOpt - - FOR EACH oArg IN oMtd:hArgs - IF ( Left( oArg:cCast, 1 ) == "Q" .OR. Left( oArg:cCast, 3 ) == "HBQ" ) .AND. ; - ! ( oArg:cCast $ "QString,QRgb" ) .AND. ; - ! ( "::" $ oArg:cCast ) - oMtd:nArgQCast := oArg:__enumIndex() - EXIT - ENDIF - NEXT - FOR EACH oArg IN oMtd:hArgs - IF oArg:cTypeHB $ "O" - oMtd:nArgHBObj := oArg:__enumIndex() - EXIT - ENDIF - NEXT - - IF right( oMtd:cParas, 2 ) == ", " - oMtd:cParas := SubStr( oMtd:cParas, 1, Len( oMtd:cParas ) - 2 ) - oMtd:cDocs := SubStr( oMtd:cDocs , 1, Len( oMtd:cDocs ) - 2 ) - ENDIF - - ::buildCppCode( oMtd ) - - RETURN oMtd:lValid - -/*----------------------------------------------------------------------*/ - -STATIC PROCEDURE hbqtgen_AddRef( hRef, cRef ) - - IF ! Empty( cRef ) .AND. !( ">" $ cRef ) .AND. !( cRef $ "uchar|QString|QRgb|Bool|char" ) - hRef[ cRef ] := NIL - ENDIF - - RETURN - -/*----------------------------------------------------------------------*/ - -METHOD HbQtSource:buildCppCode( oMtd ) - LOCAL oRet := oMtd:oRet - LOCAL cPara := oMtd:cParas - LOCAL cRef, cRefInList - - oMtd:cWdg := "hbqt_par_" + ::cQtObject + "( 1 )->" - oMtd:cParas := iif( oMtd:isVariable(), "", "( " + oMtd:cParas + " )" ) - oMtd:cCmn := oMtd:cWdg + oMtd:cFun + oMtd:cParas - oMtd:cDocNMRet := HBQTGEN_THIS_PROPER( oRet:cName ) - - DO CASE - CASE oMtd:isConstructor - oMtd:cCmd := "hb_itemReturnRelease( hbqt_bindGetHbObject( NULL, " + "new " + ::cQtObject + "( " + cPara + " )" + ', "' + "HB_" + Upper( ::cQtObject ) + '", hbqt_del_' + ::cQtObject + ", " + qth_get_bits( ::cQtObject, .T. ) + " ) )" - oMtd:cPrgRet := "o" + ::cQtObject - - CASE "<" $ oRet:cCast - DO CASE - CASE ! ( "QList" $ oRet:cCast ) - oMtd:cCmd := "" - oMtd:cPrgRet := "" - CASE "::" $ oRet:cCast - oMtd:cCmd := "" - oMtd:cPrgRet := "" - CASE "QPair" $ oRet:cCast - oMtd:cCmd := "" - oMtd:cPrgRet := "" - CASE "" $ oRet:cCast - oMtd:cCmd := "" - oMtd:cPrgRet := "" - OTHERWISE - cRef := "QList" - cRefInList := StrTran( oRet:cCast, "QList<" ) - cRefInList := StrTran( cRefInList, ">" ) - cRefInList := StrTran( cRefInList, "*" ) - cRefInList := StrTran( cRefInList, " " ) - oMtd:isRetList := .T. - oMtd:cCmd := "hb_itemReturnRelease( hbqt_bindGetHbObject( NULL, " + "new " + oRet:cCast + "( " + oMtd:cCmn + " )" + ', "' + "HB_" + "QList" + '", hbqt_del_' + "QList" + ", " + qth_get_bits( "QList", .T. ) + " ) )" - oMtd:cPrgRet := "o" + oMtd:cDocNMRet - ENDCASE - - CASE oRet:cCast == "T" - oMtd:cCmd := "hb_itemReturn( " + oMtd:cCmn + " )" - oMtd:cPrgRet := "o" + oMtd:cDocNMRet - - CASE oRet:cCast == "void" - oMtd:cCmd := oMtd:cCmn - oMtd:cPrgRet := "NIL" - - CASE oRet:cCast == "WId" - oMtd:cCmd := "hb_retnint( ( HB_PTRDIFF ) " + oMtd:cCmn + " )" - oMtd:cPrgRet := "n" + oMtd:cDocNMRet - - CASE oRet:cCast $ ::cInt - oMtd:cCmd := "hb_retni( " + oMtd:cCmn + " )" - oMtd:cPrgRet := "n" + oMtd:cDocNMRet - - CASE oRet:cCast $ ::cIntLong - oMtd:cCmd := "hb_retnl( " + oMtd:cCmn + " )" - oMtd:cPrgRet := "n" + oMtd:cDocNMRet - - CASE oRet:cCast $ ::cIntLongLong - oMtd:cCmd := "hb_retnint( " + oMtd:cCmn + " )" - oMtd:cPrgRet := "n" + oMtd:cDocNMRet - - CASE oRet:cCast $ "double,qreal,float" - oMtd:cCmd := "hb_retnd( " + oMtd:cCmn + " )" - oMtd:cPrgRet := "n" + oMtd:cDocNMRet - - CASE "::" $ oRet:cCast - oMtd:cCmd := "hb_retni( ( " + oRet:cCast + " ) " + oMtd:cCmn + " )" - oMtd:cPrgRet := "n" + oMtd:cDocNMRet - - CASE oRet:cCast == "bool" - oMtd:cCmd := "hb_retl( " + oMtd:cCmn + " )" - oMtd:cPrgRet := "l" + oMtd:cDocNMRet - - CASE oRet:cCast == "char" .AND. oRet:lFar - oMtd:cCmd := "hb_retc( " + oMtd:cCmn + " )" - oMtd:cPrgRet := "c" + oMtd:cDocNMRet - - CASE oRet:cCast == "char" - oMtd:cCmd := "hb_retni( " + oMtd:cCmn + " )" - oMtd:cPrgRet := "c" + oMtd:cDocNMRet - - CASE oRet:cCast == "QString" - oMtd:cCmd := "hb_retstr_utf8( " + oMtd:cCmn + ".toUtf8().data()" + " )" - oMtd:cPrgRet := "c" + oMtd:cDocNMRet - - CASE oRet:cCast == "FT_Face" - oMtd:cCmd := "hb_retc( " + oMtd:cCmn + " )" - oMtd:cPrgRet := "c" + oMtd:cDocNMRet - - CASE oRet:lFar .AND. ( oRet:cCast $ "uchar" ) - oMtd:cCmd := "hb_retc( ( const char * ) " + oMtd:cCmn + " )" - oMtd:cPrgRet := "c" + oMtd:cDocNMRet - - CASE oRet:lFar .AND. ! oRet:lConst - cRef := oRet:cCast - //oMtd:cCmd := hbqtgen_Get_Command( oRet:cCast, oMtd:cCmn, .F. ) - oMtd:cCmd := hbqtgen_Get_Command( oRet:cCast, oMtd:cCmn, .F., oMtd:nDetachRet > 0 ) - oMtd:cPrgRet := "o" + oMtd:cDocNMRet - - CASE hbqtgen_isAqtObject( oRet:cCast ) .AND. ; - oRet:lFar .AND. ; - oRet:lConst .AND. ; - "Abstract" $ oRet:cCast - cRef := oRet:cCast - - oMtd:cCmd := "hb_itemReturnRelease( hbqt_bindGetHbObject( NULL, " + "( void * ) " + oMtd:cCmn + ', "' + "HB_" + Upper( oRet:cCast ) + '", hbqt_del_' + oRet:cCast + ", " + qth_get_bits( oRet:cCast, .F. ) + " ) )" - oMtd:cPrgRet := "o" + oMtd:cDocNMRet - - CASE hbqtgen_isAqtObject( oRet:cCast ) .AND. ; - oRet:lFar .AND. ; - oRet:lConst .AND. ; - oRet:lVirt - cRef := oRet:cCast - - oMtd:cCmd := "hb_itemReturnRelease( hbqt_bindGetHbObject( NULL, " + "( void * ) " + oMtd:cCmn + ', "' + "HB_" + Upper( oRet:cCast ) + '", hbqt_del_' + oRet:cCast + ", " + qth_get_bits( oRet:cCast, .F. ) + " ) )" - oMtd:cPrgRet := "o" + oMtd:cDocNMRet - - CASE hbqtgen_isAqtObject( oRet:cCast ) .AND. ; - oRet:lFar .AND. ; - oRet:lConst .AND. ; - oRet:lConstL - cRef := oRet:cCast - oMtd:cCmd := hbqtgen_Get_Command_1( oRet:cCast, oMtd:cCmn, oMtd:nDetachRet != 9 ) - oMtd:cPrgRet := "o" + oMtd:cDocNMRet - - CASE oRet:lAnd .AND. oRet:lConst - cRef := oRet:cCast - oMtd:cCmd := hbqtgen_Get_Command( oRet:cCast, oMtd:cCmn, .T. ) - oMtd:cPrgRet := "o" + oMtd:cDocNMRet - - CASE oRet:lConst - cRef := oRet:cCast - oMtd:cCmd := hbqtgen_Get_Command( oRet:cCast, oMtd:cCmn, .T. ) - oMtd:cPrgRet := "o" + oMtd:cDocNMRet - - CASE oRet:lAnd - cRef := oRet:cCast - oMtd:cCmd := hbqtgen_Get_Command( oRet:cCast, oMtd:cCmn, .T. ) - oMtd:cPrgRet := "o" + oMtd:cDocNMRet - - OTHERWISE - /* No attribute is attached to return value */ - IF hbqtgen_isAqtObject( oRet:cCast ) - cRef := oRet:cCast - oMtd:cCmd := hbqtgen_Get_Command( oRet:cCast, oMtd:cCmn, .T. ) - oMtd:cPrgRet := "o" + oMtd:cDocNMRet - ELSE - oMtd:cError := "<<< " + oMtd:cProto + " | " + oRet:cCast + " >>>" - oMtd:cCmd := "" - oMtd:cPrgRet := "" - ENDIF - ENDCASE - - /* Lists to be disabled in parameters - TODO */ - IF "<" $ oMtd:cPar - oMtd:cCmd := "" - ENDIF - - IF ( oMtd:lValid := ! Empty( oMtd:cCmd ) ) - AAdd( ::aMethods, oMtd ) - hbqtgen_AddRef( ::hRef, cRef ) - IF ! Empty( cRefInList ) .AND. ! ( cRefInList $ "int,qreal" ) - hbqtgen_AddRef( ::hRef, cRefInList ) - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ -/* Class HbqtMethod */ -/*----------------------------------------------------------------------*/ - -CREATE CLASS HbqtMethod - - VAR name INIT "" // widget - VAR isVariable INIT .F. - VAR lValid INIT .T. - VAR nSiblings INIT 0 // names post_fixed by number - VAR isSibling INIT .F. // is nother function with same name - VAR isConstructor INIT .F. - VAR areFuncClubbed INIT .T. - VAR isRetList INIT .F. - - VAR cProto INIT "" // QWidget * widget ( QWidget * parent, const QString & name ) const [*D=4*] - - VAR cPre INIT "" // ^^^^^^^^^^^^^^^^ - VAR cPar INIT "" // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - VAR cPas INIT "" // ^^^^^ - VAR cMrk INIT "" // ^^^ - - VAR nDetach INIT 0 - VAR nAttach INIT 0 - VAR cVersion INIT "" - VAR nDetachRet INIT -1 - - VAR cFun INIT "" - VAR cRet INIT "" - - VAR cParas INIT "" - VAR cParasN INIT "" - VAR cDocs INIT "" - - VAR cDoc INIT "" // Qt_QWidget_setSize_1( nWidth, nHeight ) -> NIL - - VAR cError INIT "" - VAR cCmd INIT "" - VAR cCmdN INIT "" - VAR cCmn INIT "" - VAR cCmnN INIT "" - VAR cDocNM INIT "" - VAR cDocNMRet INIT "" - VAR cPrgRet INIT "" - VAR cWdg INIT "" - VAR cHBFunc INIT "" - - VAR aPre INIT {} - VAR aPreN INIT {} - VAR nHBIdx - VAR nHBIdxN - VAR nArgQCast INIT 0 // First argument position of type Q*Class - VAR nArgHBObj INIT 0 // First argument position of type Q*Class - - VAR oRet - VAR nArgs INIT 0 // Number of arguments contained - VAR nArgsOpt INIT 0 // Number of optional arguments contained - VAR nArgsReal INIT 0 // Number of minimum arguments to be supplied - - VAR hArgs INIT { => } - - VAR fBody_ INIT {} - - VAR cMtdDef - VAR cMtdCall - - METHOD new() - -ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD HbqtMethod:new() - hb_hKeepOrder( ::hArgs, .T. ) - RETURN Self - -/*----------------------------------------------------------------------*/ -/* Class HbqtArgument */ -/*----------------------------------------------------------------------*/ - -CREATE CLASS HbqtArgument - - VAR cRaw - VAR cNormal - VAR cName - VAR cCast INIT "" - VAR cBody - VAR cBodyN - VAR cDoc - - VAR lRet INIT .F. - - VAR cTypeHb - VAR cTypeQt - VAR cObject - - VAR lConst INIT .F. - VAR lAnd INIT .F. - VAR lFar INIT .F. - VAR lVirt INIT .F. - VAR lConstL INIT .F. - - VAR lList INIT .F. - - VAR lOptional INIT .F. - VAR cDefault - - METHOD new( cTxt, cQtObject, enum_, lConstL, lIsRetArg ) - -ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD HbqtArgument:new( cTxt, cQtObject, enum_, lConstL, lIsRetArg ) - LOCAL n - - ::cRaw := cTxt - ::lRet := lIsRetArg - ::lList := "<" $ cTxt - - ::lConst := "const" $ cTxt - ::lAnd := "&" $ cTxt - ::lFar := "*" $ cTxt - ::lVirt := "virtual" $ cTxt - ::lConstL := lConstL - - IF ( n := at( "=", cTxt ) ) > 0 - ::cDefault := AllTrim( SubStr( cTxt, n + 1 ) ) - ::lOptional := .T. - cTxt := SubStr( cTxt, 1, n - 1 ) - ENDIF - - cTxt := StrTran( cTxt, "virtual " ) - cTxt := StrTran( cTxt, "const " ) - cTxt := StrTran( cTxt, " " , " " ) - cTxt := StrTran( cTxt, " " , " " ) - IF ! ::lList - cTxt := StrTran( cTxt, "& " ) - cTxt := StrTran( cTxt, "&" ) - cTxt := StrTran( cTxt, "* " ) - cTxt := StrTran( cTxt, "*" ) - ENDIF - ::cNormal := cTxt := AllTrim( cTxt ) - - IF ::lList - ::cCast := cTxt - ::cName := ::cCast - ELSE - IF ( n := at( " ", cTxt ) ) > 0 - ::cCast := SubStr( cTxt, 1, n - 1 ) - ::cName := SubStr( cTxt, n + 1 ) - ELSE - ::cCast := cTxt - ::cName := cTxt - ENDIF - ENDIF - - IF AScan( enum_, {| e | iif( Empty( e ), .F., e == ::cCast ) } ) > 0 - ::cCast := cQtObject + "::" + ::cCast - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ -/* Helper Functions */ -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbqtgen_Get_Command_1( cWgt, cCmn, lNew ) - IF lNew == NIL - lNew := .T. - ENDIF - IF lNew - RETURN "hb_itemReturnRelease( hbqt_bindGetHbObject( NULL, " + "new " + cWgt + "( *( " + cCmn + " ) )" + ', "' + "HB_" + Upper( cWgt ) + '", hbqt_del_' + cWgt + ", " + qth_get_bits( cWgt, .T. ) + " ) )" - ELSE - RETURN "hb_itemReturnRelease( hbqt_bindGetHbObject( NULL, " + "( void * ) " + cCmn + ', "' + "HB_" + Upper( cWgt ) + '", hbqt_del_' + cWgt + ", " + qth_get_bits( cWgt, .F. ) + " ) )" - ENDIF - RETURN "" - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbqtgen_Get_Command( cWgt, cCmn, lNew, isRetDetached ) - - IF lNew == NIL - lNew := .T. - ENDIF - IF isRetDetached == NIL - isRetDetached := .F. - ENDIF - - IF lNew - RETURN "hb_itemReturnRelease( hbqt_bindGetHbObject( NULL, " + "new " + cWgt + "( " + cCmn + " )" + ', "' + "HB_" + Upper( cWgt ) + '", hbqt_del_' + cWgt + ", " + qth_get_bits( cWgt, .T. ) + " ) )" - ELSE - RETURN "hb_itemReturnRelease( hbqt_bindGetHbObject( NULL, " + cCmn + ', "' + "HB_" + Upper( cWgt ) + '", hbqt_del_' + cWgt + ", " + qth_get_bits( cWgt, isRetDetached ) + " ) )" - ENDIF - RETURN "" - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbqtgen_PullOutSection( cQth, cSec ) - LOCAL cTxt, n, nn, cTknB, cTknE - LOCAL a_:={} - - cTknB := "<" + cSec + ">" - cTknE := "" - - IF ( n := at( cTknB, cQth ) ) > 0 - IF( nn := at( cTknE, cQth ) ) > 0 - cTxt := SubStr( cQth, n + Len( cTknB ), nn - 1 - ( n + Len( cTknB ) ) ) - ENDIF - IF ! Empty( cTxt ) - a_:= hb_ATokens( cTxt, Chr( 10 ) ) - ENDIF - ENDIF - - RETURN a_ - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbqtgen_PullOutFuncBody( protos_, nFrom ) - LOCAL s, nTo := 0, a_:= {} - - FOR EACH s IN protos_ - IF s:__enumIndex() > nFrom - IF Left( s, 1 ) == "}" - nTo := s:__enumIndex() - EXIT - ENDIF - ENDIF - NEXT - IF nTo > nFrom - FOR EACH s IN protos_ - IF s:__enumIndex() > nFrom .AND. s:__enumIndex() < nTo - AAdd( a_, s ) - s := "" - ENDIF - NEXT - ENDIF - - RETURN a_ - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbqtgen_isAqtObject( cCast ) - RETURN Left( cCast, 1 ) == "Q" .OR. Left( cCast, 3 ) == "HBQ" - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbqtgen_CreateTarget( cFile, txt_ ) - LOCAL cContent := "" - - AEval( txt_, {| e | cContent += RTrim( e ) + hb_eol() } ) - - RETURN hb_MemoWrit( cFile, cContent ) - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbqtgen_BuildCopyrightText() - LOCAL txt_ := {} - - AAdd( txt_, "/* WARNING: Automatically generated source file. DO NOT EDIT! */" ) - AAdd( txt_, "" ) - AAdd( txt_, "/* Harbour QT wrapper" ) - AAdd( txt_, " Copyright 2009-2012 Pritpal Bedi " ) - AAdd( txt_, " www - http://harbour-project.org */" ) - AAdd( txt_, "" ) - AAdd( txt_, '#include "hbqt.h"' ) - AAdd( txt_, '#include "hbapiitm.h"' ) - AAdd( txt_, '#include "hbvm.h"' ) - AAdd( txt_, '#include "hbapierr.h"' ) - AAdd( txt_, '#include "hbstack.h"' ) - AAdd( txt_, '#include "hbdefs.h"' ) - AAdd( txt_, '#include "hbapicls.h"' ) - AAdd( txt_, "" ) - AAdd( txt_, "#if QT_VERSION >= 0x040500" ) - AAdd( txt_, "" ) - - RETURN txt_ - -/*----------------------------------------------------------------------*/ - -STATIC PROCEDURE hbqtgen_BuildFooter( txt_ ) - AAdd( txt_, "#endif" ) - RETURN - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION hbqtgen_stripLastFrom( cStr, cDlm ) - LOCAL n - IF ( n := rAt( cDlm, cStr ) ) > 0 - RETURN SubStr( cStr, 1, n - 1 ) - ENDIF - RETURN cStr - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION __TY( oM, nArgs ) - LOCAL i, s := "" - FOR i := 1 TO nArgs - s += PadR( oM:hArgs[ i ]:cTypeHB, 3 ) - NEXT - RETURN s - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION __TY_Method( oMtd, nArgs ) - LOCAL nArg, oArg, aIdx := {}, cRet - - FOR EACH oArg IN oMtd:hArgs - IF oArg:__enumIndex() >= oMtd:nArgQCast - IF ! ( "::" $ oArg:cCast ) .AND. ! ( oArg:cCast == "QString" ) .AND. ( Left( oArg:cCast, 1 ) == "Q" .OR. Left( oArg:cCast, 3 ) == "HBQ" ) - AAdd( aIdx, oArg:__enumIndex() ) - ENDIF - ENDIF - IF oArg:__enumIndex() == nArgs - EXIT - ENDIF - NEXT - - cRet := "" - FOR EACH nArg IN aIdx - cRet += "hbqt_par_isDerivedFrom( " + hb_ntos( nArg ) + ', "' + upper( oMtd:hArgs[ nArg ]:cCast ) + '" )' + " && " - NEXT - cRet := SubStr( cRet, 1, Len( cRet ) - 4 ) - - RETURN cRet - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION qth_is_extended( cQTHFileName ) - LOCAL lYes := .F. - LOCAL cQth, aTkn, n, s, class_, cls_:= {} - - cQth := hb_MemoRead( cQTHFileName ) - - /* Prepare to be parsed properly */ - IF !( hb_eol() == Chr( 10 ) ) - cQth := StrTran( cQth, hb_eol(), Chr( 10 ) ) - ENDIF - IF !( hb_eol() == Chr( 13 ) + Chr( 10 ) ) - cQth := StrTran( cQth, Chr( 13 ) + Chr( 10 ), Chr( 10 ) ) - ENDIF - - IF ! Empty( class_:= hbqtgen_PullOutSection( @cQth, "CLASS" ) ) - FOR EACH s IN class_ - IF ( n := at( "=", s ) ) > 0 - AAdd( cls_, { Upper( AllTrim( SubStr( s, 1, n - 1 ) ) ), Upper( AllTrim( SubStr( s, n + 1 ) ) ) } ) - ENDIF - NEXT - ENDIF - - FOR EACH aTkn IN cls_ - IF aTkn[ 1 ] $ "PAINTEVENT,xxx" - IF aTkn[ 2 ] == "YES" - lYes := .T. - ENDIF - ENDIF - NEXT - - RETURN lYes - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION qth_is_QObject( cWidget ) - STATIC aQObjects := {} - - IF lower( left( cWidget, 3 ) ) == "hbq" - cWidget := SubStr( cWidget, 3 ) - ENDIF - - /* TOFIX: add this information to .qth. - it breaks modularity and split the same king of information between - this plugin and .qth files. */ - IF empty( aQObjects ) - aadd( aQObjects, "QObject" ) - - aadd( aQObjects, "QAbstractAnimation" ) - aadd( aQObjects, "QAbstractEventDispatcher" ) - aadd( aQObjects, "QAbstractFontEngine" ) - aadd( aQObjects, "QAbstractItemDelegate" ) - aadd( aQObjects, "QAbstractItemModel" ) - aadd( aQObjects, "QAbstractMessageHandler" ) - aadd( aQObjects, "QAbstractNetworkCache" ) - aadd( aQObjects, "QAbstractState" ) - aadd( aQObjects, "QAbstractTextDocumentLayout" ) - aadd( aQObjects, "QAbstractTransition" ) - aadd( aQObjects, "QAbstractUriResolver" ) - aadd( aQObjects, "QAbstractVideoSurface" ) - aadd( aQObjects, "QAccessibleBridgePlugin" ) - aadd( aQObjects, "QAccessiblePlugin" ) - aadd( aQObjects, "QAction" ) - aadd( aQObjects, "QActionGroup" ) - aadd( aQObjects, "QAudioInput" ) - aadd( aQObjects, "QAudioOutput" ) - aadd( aQObjects, "QAxFactory" ) - aadd( aQObjects, "QAxObject" ) - aadd( aQObjects, "QAxScript" ) - aadd( aQObjects, "QAxScriptManager" ) - aadd( aQObjects, "QButtonGroup" ) - aadd( aQObjects, "QClipboard" ) - aadd( aQObjects, "QCompleter" ) - aadd( aQObjects, "QCopChannel" ) - aadd( aQObjects, "QCoreApplication" ) - aadd( aQObjects, "QDataWidgetMapper" ) - aadd( aQObjects, "QDBusAbstractAdaptor" ) - aadd( aQObjects, "QDBusAbstractInterface" ) - aadd( aQObjects, "QDBusPendingCallWatcher" ) - aadd( aQObjects, "QDBusServiceWatcher" ) - aadd( aQObjects, "QDeclarativeComponent" ) - aadd( aQObjects, "QDeclarativeContext" ) - aadd( aQObjects, "QDeclarativeEngine" ) - aadd( aQObjects, "QDeclarativeExpression" ) - aadd( aQObjects, "QDeclarativeExtensionPlugin" ) - aadd( aQObjects, "QDeclarativePropertyMap" ) - aadd( aQObjects, "QDecorationPlugin" ) - aadd( aQObjects, "QDesignerFormEditorInterface" ) - aadd( aQObjects, "QDesignerFormWindowManagerInterface" ) - aadd( aQObjects, "QDirectPainter" ) - aadd( aQObjects, "QDrag" ) - aadd( aQObjects, "QEventLoop" ) - aadd( aQObjects, "QExtensionFactory" ) - aadd( aQObjects, "QExtensionManager" ) - aadd( aQObjects, "QFileSystemWatcher" ) - aadd( aQObjects, "QFontEnginePlugin" ) - aadd( aQObjects, "QFtp" ) - aadd( aQObjects, "QFutureWatcher" ) - aadd( aQObjects, "QGenericPlugin" ) - aadd( aQObjects, "QGesture" ) - aadd( aQObjects, "QGLShader" ) - aadd( aQObjects, "QGLShaderProgram" ) - aadd( aQObjects, "QGraphicsAnchor" ) - aadd( aQObjects, "QGraphicsEffect" ) - aadd( aQObjects, "QGraphicsItemAnimation" ) - aadd( aQObjects, "QGraphicsObject" ) - aadd( aQObjects, "QGraphicsScene" ) - aadd( aQObjects, "QGraphicsTransform" ) - aadd( aQObjects, "QHelpEngineCore" ) - aadd( aQObjects, "QHelpSearchEngine" ) - aadd( aQObjects, "QHttp" ) - aadd( aQObjects, "QHttpMultiPart" ) - aadd( aQObjects, "QIconEnginePlugin" ) - aadd( aQObjects, "QIconEnginePluginV2" ) - aadd( aQObjects, "QImageIOPlugin" ) - aadd( aQObjects, "QInputContext" ) - aadd( aQObjects, "QInputContextPlugin" ) - aadd( aQObjects, "QIODevice" ) - aadd( aQObjects, "QItemSelectionModel" ) - aadd( aQObjects, "QKbdDriverPlugin" ) - aadd( aQObjects, "QLayout" ) - aadd( aQObjects, "QLibrary" ) - aadd( aQObjects, "QLocalServer" ) - aadd( aQObjects, "QMimeData" ) - aadd( aQObjects, "QMouseDriverPlugin" ) - aadd( aQObjects, "QMovie" ) - aadd( aQObjects, "QNetworkAccessManager" ) - aadd( aQObjects, "QNetworkConfigurationManager" ) - aadd( aQObjects, "QNetworkCookieJar" ) - aadd( aQObjects, "QNetworkSession" ) - aadd( aQObjects, "QObjectCleanupHandler" ) - aadd( aQObjects, "QPictureFormatPlugin" ) - aadd( aQObjects, "QPlatformCursor" ) - aadd( aQObjects, "QPluginLoader" ) - aadd( aQObjects, "QScreenDriverPlugin" ) - aadd( aQObjects, "QScriptEngine" ) - aadd( aQObjects, "QScriptEngineDebugger" ) - aadd( aQObjects, "QScriptExtensionPlugin" ) - aadd( aQObjects, "QSessionManager" ) - aadd( aQObjects, "QSettings" ) - aadd( aQObjects, "QSharedMemory" ) - aadd( aQObjects, "QShortcut" ) - aadd( aQObjects, "QSignalMapper" ) - aadd( aQObjects, "QSignalSpy" ) - aadd( aQObjects, "QSocketNotifier" ) - aadd( aQObjects, "QSound" ) - aadd( aQObjects, "QSqlDriver" ) - aadd( aQObjects, "QSqlDriverPlugin" ) - aadd( aQObjects, "QStyle" ) - aadd( aQObjects, "QStylePlugin" ) - aadd( aQObjects, "QSvgRenderer" ) - aadd( aQObjects, "QSyntaxHighlighter" ) - aadd( aQObjects, "QSystemTrayIcon" ) - aadd( aQObjects, "QTcpServer" ) - aadd( aQObjects, "QTextCodecPlugin" ) - aadd( aQObjects, "QTextDocument" ) - aadd( aQObjects, "QTextObject" ) - aadd( aQObjects, "QThread" ) - aadd( aQObjects, "QThreadPool" ) - aadd( aQObjects, "QTimeLine" ) - aadd( aQObjects, "QTimer" ) - aadd( aQObjects, "QTranslator" ) - aadd( aQObjects, "QUiLoader" ) - aadd( aQObjects, "QUndoGroup" ) - aadd( aQObjects, "QUndoStack" ) - aadd( aQObjects, "QValidator" ) - aadd( aQObjects, "QWebFrame" ) - aadd( aQObjects, "QWebHistoryInterface" ) - aadd( aQObjects, "QWebPage" ) - aadd( aQObjects, "QWebPluginFactory" ) - aadd( aQObjects, "QWidget" ) - aadd( aQObjects, "QWSClient" ) - aadd( aQObjects, "QWSInputMethod" ) - aadd( aQObjects, "QWSServer" ) - - aadd( aQObjects, "QAbstractButton" ) - aadd( aQObjects, "QAbstractSlider" ) - aadd( aQObjects, "QAbstractSpinBox" ) - aadd( aQObjects, "QAxWidget" ) - aadd( aQObjects, "QCalendarWidget" ) - aadd( aQObjects, "QComboBox" ) - aadd( aQObjects, "QDesignerActionEditorInterface" ) - aadd( aQObjects, "QDesignerFormWindowInterface" ) - aadd( aQObjects, "QDesignerObjectInspectorInterface" ) - aadd( aQObjects, "QDesignerPropertyEditorInterface" ) - aadd( aQObjects, "QDesignerWidgetBoxInterface" ) - aadd( aQObjects, "QDesktopWidget" ) - aadd( aQObjects, "QDialog" ) - aadd( aQObjects, "QDialogButtonBox" ) - aadd( aQObjects, "QDockWidget" ) - aadd( aQObjects, "QFocusFrame" ) - aadd( aQObjects, "QFrame" ) - aadd( aQObjects, "QGLWidget" ) - aadd( aQObjects, "QGroupBox" ) - aadd( aQObjects, "QHelpSearchQueryWidget" ) - aadd( aQObjects, "QHelpSearchResultWidget" ) - aadd( aQObjects, "QLineEdit" ) - aadd( aQObjects, "QMacCocoaViewContainer" ) - aadd( aQObjects, "QMacNativeWidget" ) - aadd( aQObjects, "QMainWindow" ) - aadd( aQObjects, "QMdiSubWindow" ) - aadd( aQObjects, "QMenu" ) - aadd( aQObjects, "QMenuBar" ) - aadd( aQObjects, "QPrintPreviewWidget" ) - aadd( aQObjects, "QProgressBar" ) - aadd( aQObjects, "QRubberBand" ) - aadd( aQObjects, "QSizeGrip" ) - aadd( aQObjects, "QSplashScreen" ) - aadd( aQObjects, "QSplitterHandle" ) - aadd( aQObjects, "QStatusBar" ) - aadd( aQObjects, "QSvgWidget" ) - aadd( aQObjects, "QTabBar" ) - aadd( aQObjects, "QTabWidget" ) - aadd( aQObjects, "QToolBar" ) - aadd( aQObjects, "QWebInspector" ) - aadd( aQObjects, "QWebView" ) - aadd( aQObjects, "QWizardPage" ) - aadd( aQObjects, "QWorkspace" ) - aadd( aQObjects, "QWSEmbedWidget" ) - aadd( aQObjects, "QX11EmbedContainer" ) - aadd( aQObjects, "QX11EmbedWidget" ) - - aadd( aQObjects, "QAnimationGroup" ) - aadd( aQObjects, "QPauseAnimation" ) - aadd( aQObjects, "QVariantAnimation" ) - aadd( aQObjects, "QParallelAnimationGroup" ) - aadd( aQObjects, "QSequentialAnimationGroup" ) - aadd( aQObjects, "QPropertyAnimation" ) - - aadd( aQObjects, "QItemDelegate" ) - aadd( aQObjects, "QStyledItemDelegate" ) - aadd( aQObjects, "QSqlRelationalDelegate" ) - - aadd( aQObjects, "QSqlRelationalTableModel" ) - aadd( aQObjects, "QSqlTableModel" ) - aadd( aQObjects, "QSqlQueryModel" ) - aadd( aQObjects, "QIdentityProxyModel" ) - aadd( aQObjects, "QSortFilterProxyModel" ) - aadd( aQObjects, "QHelpIndexModel" ) - aadd( aQObjects, "QStringListModel" ) - aadd( aQObjects, "QAbstractListModel" ) - aadd( aQObjects, "QAbstractProxyModel" ) - aadd( aQObjects, "QAbstractTableModel" ) - aadd( aQObjects, "QDirModel" ) - aadd( aQObjects, "QFileSystemModel" ) - aadd( aQObjects, "QHelpContentModel" ) - aadd( aQObjects, "QProxyModel" ) - aadd( aQObjects, "QStandardItemModel" ) - - aadd( aQObjects, "QNetworkDiskCache" ) - - aadd( aQObjects, "QFinalState" ) - aadd( aQObjects, "QHistoryState" ) - aadd( aQObjects, "QState" ) - aadd( aQObjects, "QStateMachine" ) - - aadd( aQObjects, "QPlainTextDocumentLayout" ) - - aadd( aQObjects, "QEventTransition" ) - aadd( aQObjects, "QSignalTransition" ) - aadd( aQObjects, "QKeyEventTransition" ) - aadd( aQObjects, "QMouseEventTransition" ) - - aadd( aQObjects, "QMenuItem" ) - aadd( aQObjects, "QWidgetAction" ) - - aadd( aQObjects, "QAxScriptEngine" ) - - aadd( aQObjects, "QApplication" ) - - aadd( aQObjects, "QDBusConnectionInterface" ) - aadd( aQObjects, "QDBusInterface" ) - - aadd( aQObjects, "QPanGesture" ) - aadd( aQObjects, "QPinchGesture" ) - aadd( aQObjects, "QSwipeGesture" ) - aadd( aQObjects, "QTapAndHoldGesture" ) - aadd( aQObjects, "QTapGesture" ) - - aadd( aQObjects, "QGraphicsBlurEffect" ) - aadd( aQObjects, "QGraphicsColorizeEffect" ) - aadd( aQObjects, "QGraphicsDropShadowEffect" ) - aadd( aQObjects, "QGraphicsOpacityEffect" ) - - aadd( aQObjects, "QDeclarativeItem" ) - aadd( aQObjects, "QGraphicsSvgItem" ) - aadd( aQObjects, "QGraphicsTextItem" ) - aadd( aQObjects, "QGraphicsWidget" ) - aadd( aQObjects, "QGraphicsProxyWidget" ) - aadd( aQObjects, "QGraphicsWebView" ) - - aadd( aQObjects, "QGraphicsRotation" ) - aadd( aQObjects, "QGraphicsScale" ) - - aadd( aQObjects, "QHelpEngine" ) - - aadd( aQObjects, "QAbstractSocket" ) - aadd( aQObjects, "QBuffer" ) - aadd( aQObjects, "QFile" ) - aadd( aQObjects, "QLocalSocket" ) - aadd( aQObjects, "QNetworkReply" ) - aadd( aQObjects, "QProcess" ) - aadd( aQObjects, "QTcpSocket" ) - aadd( aQObjects, "QUdpSocket" ) - aadd( aQObjects, "QSslSocket" ) - aadd( aQObjects, "QTemporaryFile" ) - - aadd( aQObjects, "QBoxLayout" ) - aadd( aQObjects, "QFormLayout" ) - aadd( aQObjects, "QGridLayout" ) - aadd( aQObjects, "QStackedLayout" ) - aadd( aQObjects, "QHBoxLayout" ) - aadd( aQObjects, "QVBoxLayout" ) - - aadd( aQObjects, "QTextBlockGroup" ) - aadd( aQObjects, "QTextFrame" ) - aadd( aQObjects, "QTextList" ) - aadd( aQObjects, "QTextTable" ) - - aadd( aQObjects, "QDoubleValidator" ) - aadd( aQObjects, "QIntValidator" ) - aadd( aQObjects, "QRegExpValidator" ) - - aadd( aQObjects, "QCheckBox" ) - aadd( aQObjects, "QPushButton" ) - aadd( aQObjects, "QRadioButton" ) - aadd( aQObjects, "Q3Button" ) - aadd( aQObjects, "QToolButton" ) - aadd( aQObjects, "QCommandLinkButton" ) - - aadd( aQObjects, "QDial" ) - aadd( aQObjects, "QScrollBar" ) - aadd( aQObjects, "QSlider" ) - - aadd( aQObjects, "QDateTimeEdit" ) - aadd( aQObjects, "QDoubleSpinBox" ) - aadd( aQObjects, "QSpinBox" ) - aadd( aQObjects, "QDateEdit" ) - aadd( aQObjects, "QTimeEdit" ) - - aadd( aQObjects, "QFontComboBox" ) - - aadd( aQObjects, "QAbstractPrintDialog" ) - aadd( aQObjects, "QColorDialog" ) - aadd( aQObjects, "QErrorMessage" ) - aadd( aQObjects, "QFileDialog" ) - aadd( aQObjects, "QFontDialog" ) - aadd( aQObjects, "QInputDialog" ) - aadd( aQObjects, "QMessageBox" ) - aadd( aQObjects, "QPageSetupDialog" ) - aadd( aQObjects, "QPrintPreviewDialog" ) - aadd( aQObjects, "QProgressDialog" ) - aadd( aQObjects, "QWizard" ) - aadd( aQObjects, "QPrintDialog" ) - - aadd( aQObjects, "QAbstractScrollArea" ) - aadd( aQObjects, "QLabel" ) - aadd( aQObjects, "QLCDNumber" ) - aadd( aQObjects, "QSplitter" ) - aadd( aQObjects, "QStackedWidget" ) - aadd( aQObjects, "QToolBox" ) - aadd( aQObjects, "QAbstractItemView" ) - aadd( aQObjects, "QGraphicsView" ) - aadd( aQObjects, "QMdiArea" ) - aadd( aQObjects, "QPlainTextEdit" ) - aadd( aQObjects, "QScrollArea" ) - aadd( aQObjects, "QTextEdit" ) - aadd( aQObjects, "QColumnView" ) - aadd( aQObjects, "QHeaderView" ) - aadd( aQObjects, "QListView" ) - aadd( aQObjects, "QTableView" ) - aadd( aQObjects, "QTreeView" ) - aadd( aQObjects, "QHelpIndexWidget" ) - aadd( aQObjects, "QListWidget" ) - aadd( aQObjects, "QUndoView" ) - aadd( aQObjects, "QTableWidget" ) - aadd( aQObjects, "QHelpContentWidget" ) - aadd( aQObjects, "QTreeWidget" ) - aadd( aQObjects, "QDeclarativeView" ) - aadd( aQObjects, "QTextBrowser" ) - - aadd( aQObjects, "QGLShader" ) - aadd( aQObjects, "QGLShaderProgram" ) - aadd( aQObjects, "QGLWidget" ) - - aadd( aQObjects, "QGraphicsSvgItem" ) - aadd( aQObjects, "QSvgRenderer" ) - - aadd( aQObjects, "QScriptEngine" ) - aadd( aQObjects, "QScriptExtensionPlugin" ) - - aadd( aQObjects, "QAudioInput" ) - aadd( aQObjects, "QAudioOutput" ) - - ENDIF - - RETURN ascan( aQObjects, {| e | e == cWidget } ) > 0 - -/*----------------------------------------------------------------------*/ - -#define HBQT_BIT_NONE 0 -#define HBQT_BIT_OWNER 1 -#define HBQT_BIT_QOBJECT 2 -#define HBQT_BIT_CONSTRUCTOR 4 -#define HBQT_BIT_DESTRUCTOR 8 -#define HBQT_BIT_QPOINTER 16 - -STATIC FUNCTION qth_get_bits( cWidget, lNew ) - LOCAL cBits := "HBQT_BIT_NONE" - - IF lNew - cBits += " | HBQT_BIT_OWNER" - ENDIF - IF qth_is_QObject( cWidget ) - cBits += " | HBQT_BIT_QOBJECT" - ENDIF - - RETURN cBits - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbqt/hbqt.hbc b/harbour/contrib/hbqt/hbqt.hbc deleted file mode 100644 index 9140ed1374..0000000000 --- a/harbour/contrib/hbqt/hbqt.hbc +++ /dev/null @@ -1,16 +0,0 @@ -# -# $Id$ -# - -# --------------------------------------------------------------- -# Copyright 2010 Viktor Szakats (harbour syenar.net) -# See COPYING for licensing terms. -# --------------------------------------------------------------- - -libs=hbqtcore.hbc -# libs=hbqtdesigner.hbc -libs=hbqtgui.hbc -libs=hbqtnetwork.hbc -# libs=hbqtwebkit.hbc -# libs=hbqtsql.hbc -libs=gtqtc.hbc diff --git a/harbour/contrib/hbqt/hbqt_all.hbp b/harbour/contrib/hbqt/hbqt_all.hbp deleted file mode 100644 index 3fd21d8402..0000000000 --- a/harbour/contrib/hbqt/hbqt_all.hbp +++ /dev/null @@ -1,19 +0,0 @@ -# -# $Id$ -# - -# --------------------------------------------------------------- -# Copyright 2010 Viktor Szakats (harbour syenar.net) -# See COPYING for licensing terms. -# --------------------------------------------------------------- - --hbcontainer - -# Do not change this to hbqt.hbc reference. -hbqtcore.hbc -hbqtdesigner.hbc -hbqtgui.hbc -hbqtnetwork.hbc -hbqtwebkit.hbc -# hbqtsql.hbc -gtqtc.hbc diff --git a/harbour/contrib/hbqt/hbqt_common.hbc b/harbour/contrib/hbqt/hbqt_common.hbc deleted file mode 100644 index b32ad1e4c6..0000000000 --- a/harbour/contrib/hbqt/hbqt_common.hbc +++ /dev/null @@ -1,25 +0,0 @@ -# -# $Id$ -# - -# --------------------------------------------------------------- -# Copyright 2010 Viktor Szakats (harbour syenar.net) -# See COPYING for licensing terms. -# --------------------------------------------------------------- - -stop={dos|watcom|bcc|pocc|pocc64|poccarm|msvcia64|pcc}'hbqt' doesn't support this platform/compiler (${hb_plat}/${hb_comp}). -stop={HB_WITH_QT='no'}QT deselected, build skipped. - -incpaths=. - -plugins=hbmk2_qt.hb - -{msvc}ldflags=-nodefaultlib:msvcrt.lib -defaultlib:libcmt.lib -{beos}ldflags=-L/boot/common/lib - -{allwin|os2}libpaths=${HB_WITH_QT}\..\lib - -{allgcc&!(bsd|darwin)}libs=supc++ -{allgcc&(bsd|darwin)}libs=stdc++ - -{win|os2}hbcppmm=yes diff --git a/harbour/contrib/hbqt/hbqt_common.hbm b/harbour/contrib/hbqt/hbqt_common.hbm deleted file mode 100644 index b71689b957..0000000000 --- a/harbour/contrib/hbqt/hbqt_common.hbm +++ /dev/null @@ -1,45 +0,0 @@ -# -# $Id$ -# - -# --------------------------------------------------------------- -# Copyright 2010 Viktor Szakats (harbour syenar.net) -# See COPYING for licensing terms. -# --------------------------------------------------------------- - -# Common settings for all hbqt subcomponents - --hblib --inc - --o${hb_targetname} --workdir=${hb_work}/${hb_plat}/${hb_comp}/${hb_targetname} - --w3 -es2 - --i. - --stop{dos|watcom|bcc|pocc|pocc64|poccarm|msvcia64|pcc} - --plugin=hbmk2_qt.hb - --deppkgname=qt:QtCore --depkeyhead=qt:QtCore/qglobal.h --depcontrol=qt:no{HB_BUILD_3RDEXT='no'} --depcontrol=qt:${HB_WITH_QT} -{!darwin}-depincpath=qt:/usr/include/qt4 -{!darwin}-depincpath=qt:/usr/lib/qt4/include -{!darwin}-depincpath=qt:/usr/include -{bsd}-depincpath=qt:/usr/local/include/qt4 -{darwin}-depincpath=qt:/Developer/qt/include -{darwin}-depincpath=qt:/Library/Frameworks -{darwin}-depincpath=qt:/usr/local/include -{beos}-depincpath=qt:/boot/common/include - --instfile=contrib_qt:*.hb --instfile=contrib_qt:*.hbc --instfile=contrib_qt:*.txt --instfile=contrib_qt_tests:tests/*.* - -{_HB_BUILD_INSTALL&_HB_INSTALL_CONTRIB&hblib}-instpath=contrib_qt:${_HB_INSTALL_CONTRIB}/${_HB_CONTRIB_SUBDIR}../ -{_HB_BUILD_INSTALL&_HB_INSTALL_CONTRIB&hblib}-instpath=contrib_qt_tests:${_HB_INSTALL_CONTRIB}/${_HB_CONTRIB_SUBDIR}../tests/ diff --git a/harbour/contrib/hbqt/hbqt_commons.hbm b/harbour/contrib/hbqt/hbqt_commons.hbm deleted file mode 100644 index 293b9f07d4..0000000000 --- a/harbour/contrib/hbqt/hbqt_commons.hbm +++ /dev/null @@ -1,19 +0,0 @@ -# -# $Id$ -# - -# --------------------------------------------------------------- -# Copyright 2010 Viktor Szakats (harbour syenar.net) -# See COPYING for licensing terms. -# --------------------------------------------------------------- - -# Common settings for all hbqt subcomponents (static mode) - -hbqt_common.hbm - --hbx= - --cflag=-DQT_NODLL - -# moved to the end to make --hbinfo=nested' return complete information --stop{!HB_QT_BUILD_STATIC|!allwin} diff --git a/harbour/contrib/hbqt/hbqtcore.hbc b/harbour/contrib/hbqt/hbqtcore.hbc deleted file mode 100644 index eea652896e..0000000000 --- a/harbour/contrib/hbqt/hbqtcore.hbc +++ /dev/null @@ -1,10 +0,0 @@ -# -# $Id$ -# - -# --------------------------------------------------------------- -# Copyright 2010 Viktor Szakats (harbour syenar.net) -# See COPYING for licensing terms. -# --------------------------------------------------------------- - -libs=qtcore/hbqtcore.hbc diff --git a/harbour/contrib/hbqt/hbqtdesigner.hbc b/harbour/contrib/hbqt/hbqtdesigner.hbc deleted file mode 100644 index dedd0996cb..0000000000 --- a/harbour/contrib/hbqt/hbqtdesigner.hbc +++ /dev/null @@ -1,10 +0,0 @@ -# -# $Id$ -# - -# --------------------------------------------------------------- -# Copyright 2010 Viktor Szakats (harbour syenar.net) -# See COPYING for licensing terms. -# --------------------------------------------------------------- - -libs=qtdesigner/hbqtdesigner.hbc diff --git a/harbour/contrib/hbqt/hbqtgui.hbc b/harbour/contrib/hbqt/hbqtgui.hbc deleted file mode 100644 index abe66f2623..0000000000 --- a/harbour/contrib/hbqt/hbqtgui.hbc +++ /dev/null @@ -1,10 +0,0 @@ -# -# $Id$ -# - -# --------------------------------------------------------------- -# Copyright 2010 Viktor Szakats (harbour syenar.net) -# See COPYING for licensing terms. -# --------------------------------------------------------------- - -libs=qtgui/hbqtgui.hbc diff --git a/harbour/contrib/hbqt/hbqtnetwork.hbc b/harbour/contrib/hbqt/hbqtnetwork.hbc deleted file mode 100644 index 898c573058..0000000000 --- a/harbour/contrib/hbqt/hbqtnetwork.hbc +++ /dev/null @@ -1,10 +0,0 @@ -# -# $Id$ -# - -# --------------------------------------------------------------- -# Copyright 2010 Viktor Szakats (harbour syenar.net) -# See COPYING for licensing terms. -# --------------------------------------------------------------- - -libs=qtnetwork/hbqtnetwork.hbc diff --git a/harbour/contrib/hbqt/hbqtsql.hbc b/harbour/contrib/hbqt/hbqtsql.hbc deleted file mode 100644 index 60de715b6e..0000000000 --- a/harbour/contrib/hbqt/hbqtsql.hbc +++ /dev/null @@ -1,10 +0,0 @@ -# -# $Id$ -# - -# --------------------------------------------------------------- -# Copyright 2010 Viktor Szakats (harbour syenar.net) -# See COPYING for licensing terms. -# --------------------------------------------------------------- - -libs=qtsql/hbqtsql.hbc diff --git a/harbour/contrib/hbqt/hbqtwebkit.hbc b/harbour/contrib/hbqt/hbqtwebkit.hbc deleted file mode 100644 index 5e3647880b..0000000000 --- a/harbour/contrib/hbqt/hbqtwebkit.hbc +++ /dev/null @@ -1,10 +0,0 @@ -# -# $Id$ -# - -# --------------------------------------------------------------- -# Copyright 2010 Viktor Szakats (harbour syenar.net) -# See COPYING for licensing terms. -# --------------------------------------------------------------- - -libs=qtwebkit/hbqtwebkit.hbc diff --git a/harbour/contrib/hbqt/qscintilla/hbqscintilla.ch b/harbour/contrib/hbqt/qscintilla/hbqscintilla.ch deleted file mode 100644 index 6b8020334e..0000000000 --- a/harbour/contrib/hbqt/qscintilla/hbqscintilla.ch +++ /dev/null @@ -1,953 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009 Pritpal Bedi - * - * http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * QScintilla Headers - * - * Pritpal Bedi - * 22May2010 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#ifndef _QSCINTILLA_CH -#define _QSCINTILLA_CH - -#define INVALID_POSITION -1 -#define SCI_START 2000 -#define SCI_OPTIONAL_START 3000 -#define SCI_LEXER_START 4000 -#define SCI_ADDTEXT 2001 -#define SCI_ADDSTYLEDTEXT 2002 -#define SCI_INSERTTEXT 2003 -#define SCI_CLEARALL 2004 -#define SCI_CLEARDOCUMENTSTYLE 2005 -#define SCI_GETLENGTH 2006 -#define SCI_GETCHARAT 2007 -#define SCI_GETCURRENTPOS 2008 -#define SCI_GETANCHOR 2009 -#define SCI_GETSTYLEAT 2010 -#define SCI_REDO 2011 -#define SCI_SETUNDOCOLLECTION 2012 -#define SCI_SELECTALL 2013 -#define SCI_SETSAVEPOINT 2014 -#define SCI_GETSTYLEDTEXT 2015 -#define SCI_CANREDO 2016 -#define SCI_MARKERLINEFROMHANDLE 2017 -#define SCI_MARKERDELETEHANDLE 2018 -#define SCI_GETUNDOCOLLECTION 2019 -#define SCWS_INVISIBLE 0 -#define SCWS_VISIBLEALWAYS 1 -#define SCWS_VISIBLEAFTERINDENT 2 -#define SCI_GETVIEWWS 2020 -#define SCI_SETVIEWWS 2021 -#define SCI_POSITIONFROMPOINT 2022 -#define SCI_POSITIONFROMPOINTCLOSE 2023 -#define SCI_GOTOLINE 2024 -#define SCI_GOTOPOS 2025 -#define SCI_SETANCHOR 2026 -#define SCI_GETCURLINE 2027 -#define SCI_GETENDSTYLED 2028 -#define SC_EOL_CRLF 0 -#define SC_EOL_CR 1 -#define SC_EOL_LF 2 -#define SCI_CONVERTEOLS 2029 -#define SCI_GETEOLMODE 2030 -#define SCI_SETEOLMODE 2031 -#define SCI_STARTSTYLING 2032 -#define SCI_SETSTYLING 2033 -#define SCI_GETBUFFEREDDRAW 2034 -#define SCI_SETBUFFEREDDRAW 2035 -#define SCI_SETTABWIDTH 2036 -#define SCI_GETTABWIDTH 2121 -#define SC_CP_UTF8 65001 -#define SC_CP_DBCS 1 -#define SCI_SETCODEPAGE 2037 -#define SCI_SETUSEPALETTE 2039 -#define MARKER_MAX 31 -#define SC_MARK_CIRCLE 0 -#define SC_MARK_ROUNDRECT 1 -#define SC_MARK_ARROW 2 -#define SC_MARK_SMALLRECT 3 -#define SC_MARK_SHORTARROW 4 -#define SC_MARK_EMPTY 5 -#define SC_MARK_ARROWDOWN 6 -#define SC_MARK_MINUS 7 -#define SC_MARK_PLUS 8 -#define SC_MARK_VLINE 9 -#define SC_MARK_LCORNER 10 -#define SC_MARK_TCORNER 11 -#define SC_MARK_BOXPLUS 12 -#define SC_MARK_BOXPLUSCONNECTED 13 -#define SC_MARK_BOXMINUS 14 -#define SC_MARK_BOXMINUSCONNECTED 15 -#define SC_MARK_LCORNERCURVE 16 -#define SC_MARK_TCORNERCURVE 17 -#define SC_MARK_CIRCLEPLUS 18 -#define SC_MARK_CIRCLEPLUSCONNECTED 19 -#define SC_MARK_CIRCLEMINUS 20 -#define SC_MARK_CIRCLEMINUSCONNECTED 21 -#define SC_MARK_BACKGROUND 22 -#define SC_MARK_DOTDOTDOT 23 -#define SC_MARK_ARROWS 24 -#define SC_MARK_PIXMAP 25 -#define SC_MARK_FULLRECT 26 -#define SC_MARK_LEFTRECT 27 -#define SC_MARK_AVAILABLE 28 -#define SC_MARK_CHARACTER 10000 -#define SC_MARKNUM_FOLDEREND 25 -#define SC_MARKNUM_FOLDEROPENMID 26 -#define SC_MARKNUM_FOLDERMIDTAIL 27 -#define SC_MARKNUM_FOLDERTAIL 28 -#define SC_MARKNUM_FOLDERSUB 29 -#define SC_MARKNUM_FOLDER 30 -#define SC_MARKNUM_FOLDEROPEN 31 -#define SC_MASK_FOLDERS 0xFE000000 -#define SCI_MARKERDEFINE 2040 -#define SCI_MARKERSETFORE 2041 -#define SCI_MARKERSETBACK 2042 -#define SCI_MARKERADD 2043 -#define SCI_MARKERDELETE 2044 -#define SCI_MARKERDELETEALL 2045 -#define SCI_MARKERGET 2046 -#define SCI_MARKERNEXT 2047 -#define SCI_MARKERPREVIOUS 2048 -#define SCI_MARKERDEFINEPIXMAP 2049 -#define SCI_MARKERADDSET 2466 -#define SCI_MARKERSETALPHA 2476 -#define SC_MARGIN_SYMBOL 0 -#define SC_MARGIN_NUMBER 1 -#define SC_MARGIN_BACK 2 -#define SC_MARGIN_FORE 3 -#define SC_MARGIN_TEXT 4 -#define SC_MARGIN_RTEXT 5 -#define SCI_SETMARGINTYPEN 2240 -#define SCI_GETMARGINTYPEN 2241 -#define SCI_SETMARGINWIDTHN 2242 -#define SCI_GETMARGINWIDTHN 2243 -#define SCI_SETMARGINMASKN 2244 -#define SCI_GETMARGINMASKN 2245 -#define SCI_SETMARGINSENSITIVEN 2246 -#define SCI_GETMARGINSENSITIVEN 2247 -#define STYLE_DEFAULT 32 -#define STYLE_LINENUMBER 33 -#define STYLE_BRACELIGHT 34 -#define STYLE_BRACEBAD 35 -#define STYLE_CONTROLCHAR 36 -#define STYLE_INDENTGUIDE 37 -#define STYLE_CALLTIP 38 -#define STYLE_LASTPREDEFINED 39 -#define STYLE_MAX 255 -#define SC_CHARSET_ANSI 0 -#define SC_CHARSET_DEFAULT 1 -#define SC_CHARSET_BALTIC 186 -#define SC_CHARSET_CHINESEBIG5 136 -#define SC_CHARSET_EASTEUROPE 238 -#define SC_CHARSET_GB2312 134 -#define SC_CHARSET_GREEK 161 -#define SC_CHARSET_HANGUL 129 -#define SC_CHARSET_MAC 77 -#define SC_CHARSET_OEM 255 -#define SC_CHARSET_RUSSIAN 204 -#define SC_CHARSET_CYRILLIC 1251 -#define SC_CHARSET_SHIFTJIS 128 -#define SC_CHARSET_SYMBOL 2 -#define SC_CHARSET_TURKISH 162 -#define SC_CHARSET_JOHAB 130 -#define SC_CHARSET_HEBREW 177 -#define SC_CHARSET_ARABIC 178 -#define SC_CHARSET_VIETNAMESE 163 -#define SC_CHARSET_THAI 222 -#define SC_CHARSET_8859_15 1000 -#define SCI_STYLECLEARALL 2050 -#define SCI_STYLESETFORE 2051 -#define SCI_STYLESETBACK 2052 -#define SCI_STYLESETBOLD 2053 -#define SCI_STYLESETITALIC 2054 -#define SCI_STYLESETSIZE 2055 -#define SCI_STYLESETFONT 2056 -#define SCI_STYLESETEOLFILLED 2057 -#define SCI_STYLERESETDEFAULT 2058 -#define SCI_STYLESETUNDERLINE 2059 -#define SC_CASE_MIXED 0 -#define SC_CASE_UPPER 1 -#define SC_CASE_LOWER 2 -#define SCI_STYLEGETFORE 2481 -#define SCI_STYLEGETBACK 2482 -#define SCI_STYLEGETBOLD 2483 -#define SCI_STYLEGETITALIC 2484 -#define SCI_STYLEGETSIZE 2485 -#define SCI_STYLEGETFONT 2486 -#define SCI_STYLEGETEOLFILLED 2487 -#define SCI_STYLEGETUNDERLINE 2488 -#define SCI_STYLEGETCASE 2489 -#define SCI_STYLEGETCHARACTERSET 2490 -#define SCI_STYLEGETVISIBLE 2491 -#define SCI_STYLEGETCHANGEABLE 2492 -#define SCI_STYLEGETHOTSPOT 2493 -#define SCI_STYLESETCASE 2060 -#define SCI_STYLESETCHARACTERSET 2066 -#define SCI_STYLESETHOTSPOT 2409 -#define SCI_SETSELFORE 2067 -#define SCI_SETSELBACK 2068 -#define SCI_GETSELALPHA 2477 -#define SCI_SETSELALPHA 2478 -#define SCI_GETSELEOLFILLED 2479 -#define SCI_SETSELEOLFILLED 2480 -#define SCI_SETCARETFORE 2069 -#define SCI_ASSIGNCMDKEY 2070 -#define SCI_CLEARCMDKEY 2071 -#define SCI_CLEARALLCMDKEYS 2072 -#define SCI_SETSTYLINGEX 2073 -#define SCI_STYLESETVISIBLE 2074 -#define SCI_GETCARETPERIOD 2075 -#define SCI_SETCARETPERIOD 2076 -#define SCI_SETWORDCHARS 2077 -#define SCI_BEGINUNDOACTION 2078 -#define SCI_ENDUNDOACTION 2079 -#define INDIC_PLAIN 0 -#define INDIC_SQUIGGLE 1 -#define INDIC_TT 2 -#define INDIC_DIAGONAL 3 -#define INDIC_STRIKE 4 -#define INDIC_HIDDEN 5 -#define INDIC_BOX 6 -#define INDIC_ROUNDBOX 7 -#define INDIC_MAX 31 -#define INDIC_CONTAINER 8 -#define INDIC0_MASK 0x20 -#define INDIC1_MASK 0x40 -#define INDIC2_MASK 0x80 -#define INDICS_MASK 0xE0 -#define SCI_INDICSETSTYLE 2080 -#define SCI_INDICGETSTYLE 2081 -#define SCI_INDICSETFORE 2082 -#define SCI_INDICGETFORE 2083 -#define SCI_INDICSETUNDER 2510 -#define SCI_INDICGETUNDER 2511 -#define SCI_SETWHITESPACEFORE 2084 -#define SCI_SETWHITESPACEBACK 2085 -#define SCI_SETSTYLEBITS 2090 -#define SCI_GETSTYLEBITS 2091 -#define SCI_SETLINESTATE 2092 -#define SCI_GETLINESTATE 2093 -#define SCI_GETMAXLINESTATE 2094 -#define SCI_GETCARETLINEVISIBLE 2095 -#define SCI_SETCARETLINEVISIBLE 2096 -#define SCI_GETCARETLINEBACK 2097 -#define SCI_SETCARETLINEBACK 2098 -#define SCI_STYLESETCHANGEABLE 2099 -#define SCI_AUTOCSHOW 2100 -#define SCI_AUTOCCANCEL 2101 -#define SCI_AUTOCACTIVE 2102 -#define SCI_AUTOCPOSSTART 2103 -#define SCI_AUTOCCOMPLETE 2104 -#define SCI_AUTOCSTOPS 2105 -#define SCI_AUTOCSETSEPARATOR 2106 -#define SCI_AUTOCGETSEPARATOR 2107 -#define SCI_AUTOCSELECT 2108 -#define SCI_AUTOCSETCANCELATSTART 2110 -#define SCI_AUTOCGETCANCELATSTART 2111 -#define SCI_AUTOCSETFILLUPS 2112 -#define SCI_AUTOCSETCHOOSESINGLE 2113 -#define SCI_AUTOCGETCHOOSESINGLE 2114 -#define SCI_AUTOCSETIGNORECASE 2115 -#define SCI_AUTOCGETIGNORECASE 2116 -#define SCI_USERLISTSHOW 2117 -#define SCI_AUTOCSETAUTOHIDE 2118 -#define SCI_AUTOCGETAUTOHIDE 2119 -#define SCI_AUTOCSETDROPRESTOFWORD 2270 -#define SCI_AUTOCGETDROPRESTOFWORD 2271 -#define SCI_REGISTERIMAGE 2405 -#define SCI_CLEARREGISTEREDIMAGES 2408 -#define SCI_AUTOCGETTYPESEPARATOR 2285 -#define SCI_AUTOCSETTYPESEPARATOR 2286 -#define SCI_AUTOCSETMAXWIDTH 2208 -#define SCI_AUTOCGETMAXWIDTH 2209 -#define SCI_AUTOCSETMAXHEIGHT 2210 -#define SCI_AUTOCGETMAXHEIGHT 2211 -#define SCI_SETINDENT 2122 -#define SCI_GETINDENT 2123 -#define SCI_SETUSETABS 2124 -#define SCI_GETUSETABS 2125 -#define SCI_SETLINEINDENTATION 2126 -#define SCI_GETLINEINDENTATION 2127 -#define SCI_GETLINEINDENTPOSITION 2128 -#define SCI_GETCOLUMN 2129 -#define SCI_SETHSCROLLBAR 2130 -#define SCI_GETHSCROLLBAR 2131 -#define SC_IV_NONE 0 -#define SC_IV_REAL 1 -#define SC_IV_LOOKFORWARD 2 -#define SC_IV_LOOKBOTH 3 -#define SCI_SETINDENTATIONGUIDES 2132 -#define SCI_GETINDENTATIONGUIDES 2133 -#define SCI_SETHIGHLIGHTGUIDE 2134 -#define SCI_GETHIGHLIGHTGUIDE 2135 -#define SCI_GETLINEENDPOSITION 2136 -#define SCI_GETCODEPAGE 2137 -#define SCI_GETCARETFORE 2138 -#define SCI_GETUSEPALETTE 2139 -#define SCI_GETREADONLY 2140 -#define SCI_SETCURRENTPOS 2141 -#define SCI_SETSELECTIONSTART 2142 -#define SCI_GETSELECTIONSTART 2143 -#define SCI_SETSELECTIONEND 2144 -#define SCI_GETSELECTIONEND 2145 -#define SCI_SETPRINTMAGNIFICATION 2146 -#define SCI_GETPRINTMAGNIFICATION 2147 -#define SC_PRINT_NORMAL 0 -#define SC_PRINT_INVERTLIGHT 1 -#define SC_PRINT_BLACKONWHITE 2 -#define SC_PRINT_COLOURONWHITE 3 -#define SC_PRINT_COLOURONWHITEDEFAULTBG 4 -#define SCI_SETPRINTCOLOURMODE 2148 -#define SCI_GETPRINTCOLOURMODE 2149 -#define SCFIND_WHOLEWORD 2 -#define SCFIND_MATCHCASE 4 -#define SCFIND_WORDSTART 0x00100000 -#define SCFIND_REGEXP 0x00200000 -#define SCFIND_POSIX 0x00400000 -#define SCI_FINDTEXT 2150 -#define SCI_FORMATRANGE 2151 -#define SCI_GETFIRSTVISIBLELINE 2152 -#define SCI_GETLINE 2153 -#define SCI_GETLINECOUNT 2154 -#define SCI_SETMARGINLEFT 2155 -#define SCI_GETMARGINLEFT 2156 -#define SCI_SETMARGINRIGHT 2157 -#define SCI_GETMARGINRIGHT 2158 -#define SCI_GETMODIFY 2159 -#define SCI_SETSEL 2160 -#define SCI_GETSELTEXT 2161 -#define SCI_GETTEXTRANGE 2162 -#define SCI_HIDESELECTION 2163 -#define SCI_POINTXFROMPOSITION 2164 -#define SCI_POINTYFROMPOSITION 2165 -#define SCI_LINEFROMPOSITION 2166 -#define SCI_POSITIONFROMLINE 2167 -#define SCI_LINESCROLL 2168 -#define SCI_SCROLLCARET 2169 -#define SCI_REPLACESEL 2170 -#define SCI_SETREADONLY 2171 -#define SCI_NULL 2172 -#define SCI_CANPASTE 2173 -#define SCI_CANUNDO 2174 -#define SCI_EMPTYUNDOBUFFER 2175 -#define SCI_UNDO 2176 -#define SCI_CUT 2177 -#define SCI_COPY 2178 -#define SCI_PASTE 2179 -#define SCI_CLEAR 2180 -#define SCI_SETTEXT 2181 -#define SCI_GETTEXT 2182 -#define SCI_GETTEXTLENGTH 2183 -#define SCI_GETDIRECTFUNCTION 2184 -#define SCI_GETDIRECTPOINTER 2185 -#define SCI_SETOVERTYPE 2186 -#define SCI_GETOVERTYPE 2187 -#define SCI_SETCARETWIDTH 2188 -#define SCI_GETCARETWIDTH 2189 -#define SCI_SETTARGETSTART 2190 -#define SCI_GETTARGETSTART 2191 -#define SCI_SETTARGETEND 2192 -#define SCI_GETTARGETEND 2193 -#define SCI_REPLACETARGET 2194 -#define SCI_REPLACETARGETRE 2195 -#define SCI_SEARCHINTARGET 2197 -#define SCI_SETSEARCHFLAGS 2198 -#define SCI_GETSEARCHFLAGS 2199 -#define SCI_CALLTIPSHOW 2200 -#define SCI_CALLTIPCANCEL 2201 -#define SCI_CALLTIPACTIVE 2202 -#define SCI_CALLTIPPOSSTART 2203 -#define SCI_CALLTIPSETHLT 2204 -#define SCI_CALLTIPSETBACK 2205 -#define SCI_CALLTIPSETFORE 2206 -#define SCI_CALLTIPSETFOREHLT 2207 -#define SCI_CALLTIPUSESTYLE 2212 -#define SCI_VISIBLEFROMDOCLINE 2220 -#define SCI_DOCLINEFROMVISIBLE 2221 -#define SCI_WRAPCOUNT 2235 -#define SC_FOLDLEVELBASE 0x400 -#define SC_FOLDLEVELWHITEFLAG 0x1000 -#define SC_FOLDLEVELHEADERFLAG 0x2000 -#define SC_FOLDLEVELNUMBERMASK 0x0FFF -#define SCI_SETFOLDLEVEL 2222 -#define SCI_GETFOLDLEVEL 2223 -#define SCI_GETLASTCHILD 2224 -#define SCI_GETFOLDPARENT 2225 -#define SCI_SHOWLINES 2226 -#define SCI_HIDELINES 2227 -#define SCI_GETLINEVISIBLE 2228 -#define SCI_SETFOLDEXPANDED 2229 -#define SCI_GETFOLDEXPANDED 2230 -#define SCI_TOGGLEFOLD 2231 -#define SCI_ENSUREVISIBLE 2232 -#define SC_FOLDFLAG_LINEBEFORE_EXPANDED 0x0002 -#define SC_FOLDFLAG_LINEBEFORE_CONTRACTED 0x0004 -#define SC_FOLDFLAG_LINEAFTER_EXPANDED 0x0008 -#define SC_FOLDFLAG_LINEAFTER_CONTRACTED 0x0010 -#define SC_FOLDFLAG_LEVELNUMBERS 0x0040 -#define SCI_SETFOLDFLAGS 2233 -#define SCI_ENSUREVISIBLEENFORCEPOLICY 2234 -#define SCI_SETTABINDENTS 2260 -#define SCI_GETTABINDENTS 2261 -#define SCI_SETBACKSPACEUNINDENTS 2262 -#define SCI_GETBACKSPACEUNINDENTS 2263 -#define SC_TIME_FOREVER 10000000 -#define SCI_SETMOUSEDWELLTIME 2264 -#define SCI_GETMOUSEDWELLTIME 2265 -#define SCI_WORDSTARTPOSITION 2266 -#define SCI_WORDENDPOSITION 2267 -#define SC_WRAP_NONE 0 -#define SC_WRAP_WORD 1 -#define SC_WRAP_CHAR 2 -#define SCI_SETWRAPMODE 2268 -#define SCI_GETWRAPMODE 2269 -#define SC_WRAPVISUALFLAG_NONE 0x0000 -#define SC_WRAPVISUALFLAG_END 0x0001 -#define SC_WRAPVISUALFLAG_START 0x0002 -#define SCI_SETWRAPVISUALFLAGS 2460 -#define SCI_GETWRAPVISUALFLAGS 2461 -#define SC_WRAPVISUALFLAGLOC_DEFAULT 0x0000 -#define SC_WRAPVISUALFLAGLOC_END_BY_TEXT 0x0001 -#define SC_WRAPVISUALFLAGLOC_START_BY_TEXT 0x0002 -#define SCI_SETWRAPVISUALFLAGSLOCATION 2462 -#define SCI_GETWRAPVISUALFLAGSLOCATION 2463 -#define SCI_SETWRAPSTARTINDENT 2464 -#define SCI_GETWRAPSTARTINDENT 2465 -#define SC_CACHE_NONE 0 -#define SC_CACHE_CARET 1 -#define SC_CACHE_PAGE 2 -#define SC_CACHE_DOCUMENT 3 -#define SCI_SETLAYOUTCACHE 2272 -#define SCI_GETLAYOUTCACHE 2273 -#define SCI_SETSCROLLWIDTH 2274 -#define SCI_GETSCROLLWIDTH 2275 -#define SCI_SETSCROLLWIDTHTRACKING 2516 -#define SCI_GETSCROLLWIDTHTRACKING 2517 -#define SCI_TEXTWIDTH 2276 -#define SCI_SETENDATLASTLINE 2277 -#define SCI_GETENDATLASTLINE 2278 -#define SCI_TEXTHEIGHT 2279 -#define SCI_SETVSCROLLBAR 2280 -#define SCI_GETVSCROLLBAR 2281 -#define SCI_APPENDTEXT 2282 -#define SCI_GETTWOPHASEDRAW 2283 -#define SCI_SETTWOPHASEDRAW 2284 -#define SCI_TARGETFROMSELECTION 2287 -#define SCI_LINESJOIN 2288 -#define SCI_LINESSPLIT 2289 -#define SCI_SETFOLDMARGINCOLOUR 2290 -#define SCI_SETFOLDMARGINHICOLOUR 2291 -#define SCI_LINEDOWN 2300 -#define SCI_LINEDOWNEXTEND 2301 -#define SCI_LINEUP 2302 -#define SCI_LINEUPEXTEND 2303 -#define SCI_CHARLEFT 2304 -#define SCI_CHARLEFTEXTEND 2305 -#define SCI_CHARRIGHT 2306 -#define SCI_CHARRIGHTEXTEND 2307 -#define SCI_WORDLEFT 2308 -#define SCI_WORDLEFTEXTEND 2309 -#define SCI_WORDRIGHT 2310 -#define SCI_WORDRIGHTEXTEND 2311 -#define SCI_HOME 2312 -#define SCI_HOMEEXTEND 2313 -#define SCI_LINEEND 2314 -#define SCI_LINEENDEXTEND 2315 -#define SCI_DOCUMENTSTART 2316 -#define SCI_DOCUMENTSTARTEXTEND 2317 -#define SCI_DOCUMENTEND 2318 -#define SCI_DOCUMENTENDEXTEND 2319 -#define SCI_PAGEUP 2320 -#define SCI_PAGEUPEXTEND 2321 -#define SCI_PAGEDOWN 2322 -#define SCI_PAGEDOWNEXTEND 2323 -#define SCI_EDITTOGGLEOVERTYPE 2324 -#define SCI_CANCEL 2325 -#define SCI_DELETEBACK 2326 -#define SCI_TAB 2327 -#define SCI_BACKTAB 2328 -#define SCI_NEWLINE 2329 -#define SCI_FORMFEED 2330 -#define SCI_VCHOME 2331 -#define SCI_VCHOMEEXTEND 2332 -#define SCI_ZOOMIN 2333 -#define SCI_ZOOMOUT 2334 -#define SCI_DELWORDLEFT 2335 -#define SCI_DELWORDRIGHT 2336 -#define SCI_DELWORDRIGHTEND 2518 -#define SCI_LINECUT 2337 -#define SCI_LINEDELETE 2338 -#define SCI_LINETRANSPOSE 2339 -#define SCI_LINEDUPLICATE 2404 -#define SCI_LOWERCASE 2340 -#define SCI_UPPERCASE 2341 -#define SCI_LINESCROLLDOWN 2342 -#define SCI_LINESCROLLUP 2343 -#define SCI_DELETEBACKNOTLINE 2344 -#define SCI_HOMEDISPLAY 2345 -#define SCI_HOMEDISPLAYEXTEND 2346 -#define SCI_LINEENDDISPLAY 2347 -#define SCI_LINEENDDISPLAYEXTEND 2348 -#define SCI_HOMEWRAP 2349 -#define SCI_HOMEWRAPEXTEND 2450 -#define SCI_LINEENDWRAP 2451 -#define SCI_LINEENDWRAPEXTEND 2452 -#define SCI_VCHOMEWRAP 2453 -#define SCI_VCHOMEWRAPEXTEND 2454 -#define SCI_LINECOPY 2455 -#define SCI_MOVECARETINSIDEVIEW 2401 -#define SCI_LINELENGTH 2350 -#define SCI_BRACEHIGHLIGHT 2351 -#define SCI_BRACEBADLIGHT 2352 -#define SCI_BRACEMATCH 2353 -#define SCI_GETVIEWEOL 2355 -#define SCI_SETVIEWEOL 2356 -#define SCI_GETDOCPOINTER 2357 -#define SCI_SETDOCPOINTER 2358 -#define SCI_SETMODEVENTMASK 2359 -#define EDGE_NONE 0 -#define EDGE_LINE 1 -#define EDGE_BACKGROUND 2 -#define SCI_GETEDGECOLUMN 2360 -#define SCI_SETEDGECOLUMN 2361 -#define SCI_GETEDGEMODE 2362 -#define SCI_SETEDGEMODE 2363 -#define SCI_GETEDGECOLOUR 2364 -#define SCI_SETEDGECOLOUR 2365 -#define SCI_SEARCHANCHOR 2366 -#define SCI_SEARCHNEXT 2367 -#define SCI_SEARCHPREV 2368 -#define SCI_LINESONSCREEN 2370 -#define SCI_USEPOPUP 2371 -#define SCI_SELECTIONISRECTANGLE 2372 -#define SCI_SETZOOM 2373 -#define SCI_GETZOOM 2374 -#define SCI_CREATEDOCUMENT 2375 -#define SCI_ADDREFDOCUMENT 2376 -#define SCI_RELEASEDOCUMENT 2377 -#define SCI_GETMODEVENTMASK 2378 -#define SCI_SETFOCUS 2380 -#define SCI_GETFOCUS 2381 -#define SCI_SETSTATUS 2382 -#define SCI_GETSTATUS 2383 -#define SCI_SETMOUSEDOWNCAPTURES 2384 -#define SCI_GETMOUSEDOWNCAPTURES 2385 -#define SC_CURSORNORMAL -1 -#define SC_CURSORWAIT 4 -#define SCI_SETCURSOR 2386 -#define SCI_GETCURSOR 2387 -#define SCI_SETCONTROLCHARSYMBOL 2388 -#define SCI_GETCONTROLCHARSYMBOL 2389 -#define SCI_WORDPARTLEFT 2390 -#define SCI_WORDPARTLEFTEXTEND 2391 -#define SCI_WORDPARTRIGHT 2392 -#define SCI_WORDPARTRIGHTEXTEND 2393 -#define VISIBLE_SLOP 0x01 -#define VISIBLE_STRICT 0x04 -#define SCI_SETVISIBLEPOLICY 2394 -#define SCI_DELLINELEFT 2395 -#define SCI_DELLINERIGHT 2396 -#define SCI_SETXOFFSET 2397 -#define SCI_GETXOFFSET 2398 -#define SCI_CHOOSECARETX 2399 -#define SCI_GRABFOCUS 2400 -#define CARET_SLOP 0x01 -#define CARET_STRICT 0x04 -#define CARET_JUMPS 0x10 -#define CARET_EVEN 0x08 -#define SCI_SETXCARETPOLICY 2402 -#define SCI_SETYCARETPOLICY 2403 -#define SCI_SETPRINTWRAPMODE 2406 -#define SCI_GETPRINTWRAPMODE 2407 -#define SCI_SETHOTSPOTACTIVEFORE 2410 -#define SCI_GETHOTSPOTACTIVEFORE 2494 -#define SCI_SETHOTSPOTACTIVEBACK 2411 -#define SCI_GETHOTSPOTACTIVEBACK 2495 -#define SCI_SETHOTSPOTACTIVEUNDERLINE 2412 -#define SCI_GETHOTSPOTACTIVEUNDERLINE 2496 -#define SCI_SETHOTSPOTSINGLELINE 2421 -#define SCI_GETHOTSPOTSINGLELINE 2497 -#define SCI_PARADOWN 2413 -#define SCI_PARADOWNEXTEND 2414 -#define SCI_PARAUP 2415 -#define SCI_PARAUPEXTEND 2416 -#define SCI_POSITIONBEFORE 2417 -#define SCI_POSITIONAFTER 2418 -#define SCI_COPYRANGE 2419 -#define SCI_COPYTEXT 2420 -#define SC_SEL_STREAM 0 -#define SC_SEL_RECTANGLE 1 -#define SC_SEL_LINES 2 -#define SCI_SETSELECTIONMODE 2422 -#define SCI_GETSELECTIONMODE 2423 -#define SCI_GETLINESELSTARTPOSITION 2424 -#define SCI_GETLINESELENDPOSITION 2425 -#define SCI_LINEDOWNRECTEXTEND 2426 -#define SCI_LINEUPRECTEXTEND 2427 -#define SCI_CHARLEFTRECTEXTEND 2428 -#define SCI_CHARRIGHTRECTEXTEND 2429 -#define SCI_HOMERECTEXTEND 2430 -#define SCI_VCHOMERECTEXTEND 2431 -#define SCI_LINEENDRECTEXTEND 2432 -#define SCI_PAGEUPRECTEXTEND 2433 -#define SCI_PAGEDOWNRECTEXTEND 2434 -#define SCI_STUTTEREDPAGEUP 2435 -#define SCI_STUTTEREDPAGEUPEXTEND 2436 -#define SCI_STUTTEREDPAGEDOWN 2437 -#define SCI_STUTTEREDPAGEDOWNEXTEND 2438 -#define SCI_WORDLEFTEND 2439 -#define SCI_WORDLEFTENDEXTEND 2440 -#define SCI_WORDRIGHTEND 2441 -#define SCI_WORDRIGHTENDEXTEND 2442 -#define SCI_SETWHITESPACECHARS 2443 -#define SCI_SETCHARSDEFAULT 2444 -#define SCI_AUTOCGETCURRENT 2445 -#define SCI_ALLOCATE 2446 -#define SCI_TARGETASUTF8 2447 -#define SCI_SETLENGTHFORENCODE 2448 -#define SCI_ENCODEDFROMUTF8 2449 -#define SCI_FINDCOLUMN 2456 -#define SCI_GETCARETSTICKY 2457 -#define SCI_SETCARETSTICKY 2458 -#define SCI_TOGGLECARETSTICKY 2459 -#define SCI_SETPASTECONVERTENDINGS 2467 -#define SCI_GETPASTECONVERTENDINGS 2468 -#define SCI_SELECTIONDUPLICATE 2469 -#define SC_ALPHA_TRANSPARENT 0 -#define SC_ALPHA_OPAQUE 255 -#define SC_ALPHA_NOALPHA 256 -#define SCI_SETCARETLINEBACKALPHA 2470 -#define SCI_GETCARETLINEBACKALPHA 2471 -#define CARETSTYLE_INVISIBLE 0 -#define CARETSTYLE_LINE 1 -#define CARETSTYLE_BLOCK 2 -#define SCI_SETCARETSTYLE 2512 -#define SCI_GETCARETSTYLE 2513 -#define SCI_SETINDICATORCURRENT 2500 -#define SCI_GETINDICATORCURRENT 2501 -#define SCI_SETINDICATORVALUE 2502 -#define SCI_GETINDICATORVALUE 2503 -#define SCI_INDICATORFILLRANGE 2504 -#define SCI_INDICATORCLEARRANGE 2505 -#define SCI_INDICATORALLONFOR 2506 -#define SCI_INDICATORVALUEAT 2507 -#define SCI_INDICATORSTART 2508 -#define SCI_INDICATOREND 2509 -#define SCI_SETPOSITIONCACHE 2514 -#define SCI_GETPOSITIONCACHE 2515 -#define SCI_COPYALLOWLINE 2519 -#define SCI_GETCHARACTERPOINTER 2520 -#define SCI_SETKEYSUNICODE 2521 -#define SCI_GETKEYSUNICODE 2522 -#define SCI_INDICSETALPHA 2523 -#define SCI_INDICGETALPHA 2524 -#define SCI_SETEXTRAASCENT 2525 -#define SCI_GETEXTRAASCENT 2526 -#define SCI_SETEXTRADESCENT 2527 -#define SCI_GETEXTRADESCENT 2528 -#define SCI_MARKERSYMBOLDEFINED 2529 -#define SCI_MARGINSETTEXT 2530 -#define SCI_MARGINGETTEXT 2531 -#define SCI_MARGINSETSTYLE 2532 -#define SCI_MARGINGETSTYLE 2533 -#define SCI_MARGINSETSTYLES 2534 -#define SCI_MARGINGETSTYLES 2535 -#define SCI_MARGINTEXTCLEARALL 2536 -#define SCI_MARGINSETSTYLEOFFSET 2537 -#define SCI_MARGINGETSTYLEOFFSET 2538 -#define SCI_ANNOTATIONSETTEXT 2540 -#define SCI_ANNOTATIONGETTEXT 2541 -#define SCI_ANNOTATIONSETSTYLE 2542 -#define SCI_ANNOTATIONGETSTYLE 2543 -#define SCI_ANNOTATIONSETSTYLES 2544 -#define SCI_ANNOTATIONGETSTYLES 2545 -#define SCI_ANNOTATIONGETLINES 2546 -#define SCI_ANNOTATIONCLEARALL 2547 -#define ANNOTATION_HIDDEN 0 -#define ANNOTATION_STANDARD 1 -#define ANNOTATION_BOXED 2 -#define SCI_ANNOTATIONSETVISIBLE 2548 -#define SCI_ANNOTATIONGETVISIBLE 2549 -#define SCI_ANNOTATIONSETSTYLEOFFSET 2550 -#define SCI_ANNOTATIONGETSTYLEOFFSET 2551 -#define UNDO_MAY_COALESCE 1 -#define SCI_ADDUNDOACTION 2560 -#define SCI_STARTRECORD 3001 -#define SCI_STOPRECORD 3002 -#define SCI_SETLEXER 4001 -#define SCI_GETLEXER 4002 -#define SCI_COLOURISE 4003 -#define SCI_SETPROPERTY 4004 -#define KEYWORDSET_MAX 8 -#define SCI_SETKEYWORDS 4005 -#define SCI_SETLEXERLANGUAGE 4006 -#define SCI_LOADLEXERLIBRARY 4007 -#define SCI_GETPROPERTY 4008 -#define SCI_GETPROPERTYEXPANDED 4009 -#define SCI_GETPROPERTYINT 4010 -#define SCI_GETSTYLEBITSNEEDED 4011 -#define SC_MOD_INSERTTEXT 0x1 -#define SC_MOD_DELETETEXT 0x2 -#define SC_MOD_CHANGESTYLE 0x4 -#define SC_MOD_CHANGEFOLD 0x8 -#define SC_PERFORMED_USER 0x10 -#define SC_PERFORMED_UNDO 0x20 -#define SC_PERFORMED_REDO 0x40 -#define SC_MULTISTEPUNDOREDO 0x80 -#define SC_LASTSTEPINUNDOREDO 0x100 -#define SC_MOD_CHANGEMARKER 0x200 -#define SC_MOD_BEFOREINSERT 0x400 -#define SC_MOD_BEFOREDELETE 0x800 -#define SC_MULTILINEUNDOREDO 0x1000 -#define SC_STARTACTION 0x2000 -#define SC_MOD_CHANGEINDICATOR 0x4000 -#define SC_MOD_CHANGELINESTATE 0x8000 -#define SC_MOD_CHANGEMARGIN 0x10000 -#define SC_MOD_CHANGEANNOTATION 0x20000 -#define SC_MOD_CONTAINER 0x40000 -#define SC_MODEVENTMASKALL 0x7FFFF -#define SCEN_CHANGE 768 -#define SCEN_SETFOCUS 512 -#define SCEN_KILLFOCUS 256 -#define SCK_DOWN 300 -#define SCK_UP 301 -#define SCK_LEFT 302 -#define SCK_RIGHT 303 -#define SCK_HOME 304 -#define SCK_END 305 -#define SCK_PRIOR 306 -#define SCK_NEXT 307 -#define SCK_DELETE 308 -#define SCK_INSERT 309 -#define SCK_ESCAPE 7 -#define SCK_BACK 8 -#define SCK_TAB 9 -#define SCK_RETURN 13 -#define SCK_ADD 310 -#define SCK_SUBTRACT 311 -#define SCK_DIVIDE 312 -#define SCK_WIN 313 -#define SCK_RWIN 314 -#define SCK_MENU 315 -#define SCMOD_NORM 0 -#define SCMOD_SHIFT 1 -#define SCMOD_CTRL 2 -#define SCMOD_ALT 4 -#define SCN_STYLENEEDED 2000 -#define SCN_CHARADDED 2001 -#define SCN_SAVEPOINTREACHED 2002 -#define SCN_SAVEPOINTLEFT 2003 -#define SCN_MODIFYATTEMPTRO 2004 -#define SCN_KEY 2005 -#define SCN_DOUBLECLICK 2006 -#define SCN_UPDATEUI 2007 -#define SCN_MODIFIED 2008 -#define SCN_MACRORECORD 2009 -#define SCN_MARGINCLICK 2010 -#define SCN_NEEDSHOWN 2011 -#define SCN_PAINTED 2013 -#define SCN_USERLISTSELECTION 2014 -#define SCN_URIDROPPED 2015 -#define SCN_DWELLSTART 2016 -#define SCN_DWELLEND 2017 -#define SCN_ZOOM 2018 -#define SCN_HOTSPOTCLICK 2019 -#define SCN_HOTSPOTDOUBLECLICK 2020 -#define SCN_CALLTIPCLICK 2021 -#define SCN_AUTOCSELECTION 2022 -#define SCN_INDICATORCLICK 2023 -#define SCN_INDICATORRELEASE 2024 -#define SCN_AUTOCCANCELLED 2025 -#define SCN_AUTOCCHARDELETED 2026 - - -// enum generic -#define QsciScintilla_AiMaintain 0x01 -#define QsciScintilla_AiOpening 0x02 -#define QsciScintilla_AiClosing 0x04 - -// enum AnnotationDisplay -#define QsciScintilla_AnnotationHidden ANNOTATION_HIDDEN -#define QsciScintilla_AnnotationStandard ANNOTATION_STANDARD -#define QsciScintilla_AnnotationBoxed ANNOTATION_BOXED - -// enum AutoCompletionSource -#define QsciScintilla_AcsNone 0 -#define QsciScintilla_AcsAll 1 -#define QsciScintilla_AcsDocument 2 -#define QsciScintilla_AcsAPIs 3 - -// enum BraceMatch -#define QsciScintilla_NoBraceMatch 0 -#define QsciScintilla_StrictBraceMatch 1 -#define QsciScintilla_SloppyBraceMatch 2 - -// enum CallTipsStyle -#define QsciScintilla_CallTipsNone 0 -#define QsciScintilla_CallTipsNoContext 1 -#define QsciScintilla_CallTipsNoAutoCompletionContext 2 -#define QsciScintilla_CallTipsContext 3 - -// enum EdgeMode -#define QsciScintilla_EdgeNone EDGE_NONE -#define QsciScintilla_EdgeLine EDGE_LINE -#define QsciScintilla_EdgeBackground EDGE_BACKGROUND - -// enum EolMode -#define QsciScintilla_EolWindows SC_EOL_CRLF -#define QsciScintilla_EolUnix SC_EOL_LF -#define QsciScintilla_EolMac SC_EOL_CR - -// enum FoldStyle -#define QsciScintilla_NoFoldStyle 0 -#define QsciScintilla_PlainFoldStyle 1 -#define QsciScintilla_CircledFoldStyle 2 -#define QsciScintilla_BoxedFoldStyle 3 -#define QsciScintilla_CircledTreeFoldStyle 4 -#define QsciScintilla_BoxedTreeFoldStyle 5 - -// enum MarginType -#define QsciScintilla_SymbolMargin SC_MARGIN_SYMBOL -#define QsciScintilla_SymbolMarginDefaultForegroundColor SC_MARGIN_FORE -#define QsciScintilla_SymbolMarginDefaultBackgroundColor SC_MARGIN_BACK -#define QsciScintilla_NumberMargin SC_MARGIN_NUMBER -#define QsciScintilla_TextMargin SC_MARGIN_TEXT -#define QsciScintilla_TextMarginRightJustified SC_MARGIN_RTEXT - -// enum MarkerSymbol -#define QsciScintilla_Circle SC_MARK_CIRCLE -#define QsciScintilla_Rectangle SC_MARK_ROUNDRECT -#define QsciScintilla_RightTriangle SC_MARK_ARROW -#define QsciScintilla_SmallRectangle SC_MARK_SMALLRECT -#define QsciScintilla_RightArrow SC_MARK_SHORTARROW -#define QsciScintilla_Invisible SC_MARK_EMPTY -#define QsciScintilla_DownTriangle SC_MARK_ARROWDOWN -#define QsciScintilla_Minus SC_MARK_MINUS -#define QsciScintilla_Plus SC_MARK_PLUS -#define QsciScintilla_VerticalLine SC_MARK_VLINE -#define QsciScintilla_BottomLeftCorner SC_MARK_LCORNER -#define QsciScintilla_LeftSideSplitter SC_MARK_TCORNER -#define QsciScintilla_BoxedPlus SC_MARK_BOXPLUS -#define QsciScintilla_BoxedPlusConnected SC_MARK_BOXPLUSCONNECTED -#define QsciScintilla_BoxedMinus SC_MARK_BOXMINUS -#define QsciScintilla_BoxedMinusConnected SC_MARK_BOXMINUSCONNECTED -#define QsciScintilla_RoundedBottomLeftCorner SC_MARK_LCORNERCURVE -#define QsciScintilla_LeftSideRoundedSplitter SC_MARK_TCORNERCURVE -#define QsciScintilla_CircledPlus SC_MARK_CIRCLEPLUS -#define QsciScintilla_CircledPlusConnected SC_MARK_CIRCLEPLUSCONNECTED -#define QsciScintilla_CircledMinus SC_MARK_CIRCLEMINUS -#define QsciScintilla_CircledMinusConnected SC_MARK_CIRCLEMINUSCONNECTED -#define QsciScintilla_Background SC_MARK_BACKGROUND -#define QsciScintilla_ThreeDots SC_MARK_DOTDOTDOT -#define QsciScintilla_ThreeRightArrows SC_MARK_ARROWS - -// enum WhitespaceVisibility -#define QsciScintilla_WsInvisible SCWS_INVISIBLE -#define QsciScintilla_WsVisible SCWS_VISIBLEALWAYS -#define QsciScintilla_WsVisibleAfterIndent SCWS_VISIBLEAFTERINDENT - -// enum WrapMode -#define QsciScintilla_WrapNone SC_WRAP_NONE -#define QsciScintilla_WrapWord SC_WRAP_WORD -#define QsciScintilla_WrapCharacter SC_WRAP_CHAR - -// enum WrapVisualFlag -#define QsciScintilla_WrapFlagNone 0 -#define QsciScintilla_WrapFlagByText 1 -#define QsciScintilla_WrapFlagByBorder 2 - -/* LexFlagship Syntax Identifiers */ -#define SCE_FS_DEFAULT 0 -#define SCE_FS_COMMENT 1 -#define SCE_FS_COMMENTLINE 2 -#define SCE_FS_COMMENTDOC 3 -#define SCE_FS_COMMENTLINEDOC 4 -#define SCE_FS_COMMENTDOCKEYWORD 5 -#define SCE_FS_COMMENTDOCKEYWORDERROR 6 -#define SCE_FS_KEYWORD 7 -#define SCE_FS_KEYWORD2 8 -#define SCE_FS_KEYWORD3 9 -#define SCE_FS_KEYWORD4 10 -#define SCE_FS_NUMBER 11 -#define SCE_FS_STRING 12 -#define SCE_FS_PREPROCESSOR 13 -#define SCE_FS_OPERATOR 14 -#define SCE_FS_IDENTIFIER 15 -#define SCE_FS_DATE 16 -#define SCE_FS_STRINGEOL 17 -#define SCE_FS_CONSTANT 18 -#define SCE_FS_WORDOPERATOR 19 -#define SCE_FS_DISABLEDCODE 20 -#define SCE_FS_DEFAULT_C 21 -#define SCE_FS_COMMENTDOC_C 22 -#define SCE_FS_COMMENTLINEDOC_C 23 -#define SCE_FS_KEYWORD_C 24 -#define SCE_FS_KEYWORD2_C 25 -#define SCE_FS_NUMBER_C 26 -#define SCE_FS_STRING_C 27 -#define SCE_FS_PREPROCESSOR_C 28 -#define SCE_FS_OPERATOR_C 29 -#define SCE_FS_IDENTIFIER_C 30 -#define SCE_FS_STRINGEOL_C 31 -#define SCE_FS_BRACE 32 - -#endif diff --git a/harbour/contrib/hbqt/qscintilla/hbqscintilla.hbc b/harbour/contrib/hbqt/qscintilla/hbqscintilla.hbc deleted file mode 100644 index 258b09fd98..0000000000 --- a/harbour/contrib/hbqt/qscintilla/hbqscintilla.hbc +++ /dev/null @@ -1,25 +0,0 @@ -# -# $Id$ -# - -# --------------------------------------------------------------- -# Copyright 2010 Viktor Szakats (harbour syenar.net) -# See COPYING for licensing terms. -# --------------------------------------------------------------- - -incpaths=. - -libs=../qtcore/hbqtcore.hbc -libs=../qtgui/hbqtgui.hbc - --depkeyhead=qscintilla:qsciglobal.h --depcontrol=qscintilla:${HB_WITH_QSCINTILLA} - -# NOTE: untested -{!HB_STATIC_QT}libs=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF} -{!HB_STATIC_QT&(allwin|os2)}libs=qscintilla2 QSci_Qt4 -{!HB_STATIC_QT&linux}libs=qscintilla2 -{!HB_STATIC_QT&darwin}frameworks=qscintilla2 -{HB_STATIC_QT&allwin}libs=${_HB_DYNPREF}${hb_name}s${_HB_DYNSUFF} -{HB_STATIC_QT&linux}libs=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF} -{HB_STATIC_QT&(allwin|linux)}libs=qscintilla2 diff --git a/harbour/contrib/hbqt/qscintilla/hbqscintilla.hbm b/harbour/contrib/hbqt/qscintilla/hbqscintilla.hbm deleted file mode 100644 index ee98f42a4b..0000000000 --- a/harbour/contrib/hbqt/qscintilla/hbqscintilla.hbm +++ /dev/null @@ -1,17 +0,0 @@ -# -# $Id$ -# - --i. - -qth/filelist.hbm - -hbqscintilla.hbx - -hbqt_init.cpp - -hbqt_hbqsciscintilla.cpp -hbqt_hbqsciscintilla.h - -../qtcore/hbqtcore.hbc -../qtgui/hbqtgui.hbc diff --git a/harbour/contrib/hbqt/qscintilla/hbqscintilla.hbp b/harbour/contrib/hbqt/qscintilla/hbqscintilla.hbp deleted file mode 100644 index acd0eb8b78..0000000000 --- a/harbour/contrib/hbqt/qscintilla/hbqscintilla.hbp +++ /dev/null @@ -1,11 +0,0 @@ -# -# $Id$ -# - -../hbqt_common.hbm - -hbqscintilla.hbm - --instfile=inc:hbqscintilla.hbx - -hbqscintillas.hbp diff --git a/harbour/contrib/hbqt/qscintilla/hbqscintillas.hbp b/harbour/contrib/hbqt/qscintilla/hbqscintillas.hbp deleted file mode 100644 index f33926a088..0000000000 --- a/harbour/contrib/hbqt/qscintilla/hbqscintillas.hbp +++ /dev/null @@ -1,7 +0,0 @@ -# -# $Id$ -# - -../hbqt_commons.hbm - -hbqscintilla.hbm diff --git a/harbour/contrib/hbqt/qscintilla/hbqscintillas.hbx b/harbour/contrib/hbqt/qscintilla/hbqscintillas.hbx deleted file mode 100644 index 929b1e1030..0000000000 --- a/harbour/contrib/hbqt/qscintilla/hbqscintillas.hbx +++ /dev/null @@ -1,48 +0,0 @@ -/* - * $Id$ - */ - -/* -------------------------------------------------------------------- */ -/* NOTE: Following comments are control commands for the generator. */ -/* Do not edit them unless you know what you are doing. */ -/* Syntax: // HB_FUNC_INCLUDE */ -/* // HB_FUNC_EXCLUDE */ -/* -------------------------------------------------------------------- */ - -// HB_FUNC_EXCLUDE QT_* - -/* -------------------------------------------------------------------- */ -/* WARNING: Automatically generated code below. DO NOT EDIT! */ -/* Regenerate with HB_REBUILD_EXTERN=yes while using GCC */ -/* compiler family. [vszakats] */ -/* -------------------------------------------------------------------- */ - -#ifndef __HBEXTERN_CH__HBQSCINTILLA__ -#define __HBEXTERN_CH__HBQSCINTILLA__ - -#ifdef __HBEXTERN__HBQSCINTILLA__ANNOUNCE - ANNOUNCE __HBEXTERN__HBQSCINTILLA__ -#endif - -#ifdef __HBEXTERN__HBQSCINTILLA__REQUEST - #command DYNAMIC => EXTERNAL -#endif - -DYNAMIC HBQSCISCINTILLA -DYNAMIC QSCIABSTRACTAPIS -DYNAMIC QSCIAPIS -DYNAMIC QSCICOMMAND -DYNAMIC QSCICOMMANDSET -DYNAMIC QSCIDOCUMENT -DYNAMIC QSCILEXER -DYNAMIC QSCILEXERCPP -DYNAMIC QSCILEXERFLAGSHIP -DYNAMIC QSCISCINTILLA -DYNAMIC QSCISTYLE -DYNAMIC QSCISTYLEDTEXT - -#ifdef __HBEXTERN__HBQSCINTILLA__REQUEST - #uncommand DYNAMIC => EXTERNAL -#endif - -#endif diff --git a/harbour/contrib/hbqt/qscintilla/hbqt_hbqsciscintilla.cpp b/harbour/contrib/hbqt/qscintilla/hbqt_hbqsciscintilla.cpp deleted file mode 100644 index c1668be331..0000000000 --- a/harbour/contrib/hbqt/qscintilla/hbqt_hbqsciscintilla.cpp +++ /dev/null @@ -1,109 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour-Qt wrapper generator. - * - * Copyright 2010 Pritpal Bedi - * Copyright 2009 Gancov Kostya - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ - -#include "hbqt.h" - -#if QT_VERSION >= 0x040500 - -#include "hbqt_hbqsciscintilla.h" - -/*----------------------------------------------------------------------*/ - -HBQsciScintilla::HBQsciScintilla( QWidget * parent ) : QsciScintilla( parent ) -{ -} -HBQsciScintilla::~HBQsciScintilla() -{ -} -void HBQsciScintilla::keyPressEvent( QKeyEvent * event ) -{ - switch( event->key() ) - { - case Qt::Key_Space: - if( event->modifiers() & Qt::ControlModifier ) - { - this->autoCompleteFromAPIs(); - return; - } - break; - case Qt::Key_Return: - if( event->modifiers() & Qt::ControlModifier ) - { - this->autoCompleteFromDocument(); - } - break; - case Qt::Key_ParenLeft: - if( this->isVisible() ) - { - this->callTip(); - } - break; - } - QsciScintilla::keyPressEvent( event ); -} - -void HBQsciScintilla::focusInEvent( QFocusEvent * event ) -{ - parentWidget()->setFocusProxy( this ); - QsciScintilla::focusInEvent( event ); -} - -void HBQsciScintilla::focusOutEvent( QFocusEvent * event ) -{ - cancelList(); - QsciScintilla::focusOutEvent( event ); -} - -/*----------------------------------------------------------------------*/ -#endif diff --git a/harbour/contrib/hbqt/qscintilla/hbqt_hbqsciscintilla.h b/harbour/contrib/hbqt/qscintilla/hbqt_hbqsciscintilla.h deleted file mode 100644 index 4545611074..0000000000 --- a/harbour/contrib/hbqt/qscintilla/hbqt_hbqsciscintilla.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2009 Pritpal Bedi - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#ifndef HBQT_HBQSCISCINTILLA_H -#define HBQT_HBQSCISCINTILLA_H - -#include "hbapiitm.h" - -#include -#include - -#include - -class QsciScintilla; - -class HBQsciScintilla : public QsciScintilla -{ - Q_OBJECT - -public: - HBQsciScintilla( QWidget * parent = 0 ); - ~HBQsciScintilla(); - -protected: - void keyPressEvent( QKeyEvent * event ); - void focusInEvent( QFocusEvent * event ); - void focusOutEvent( QFocusEvent * event ); - #if 0 - bool event( QEvent * event ); - void resizeEvent( QResizeEvent * event ); - void mouseDoubleClickEvent( QMouseEvent * event ); - void mousePressEvent( QMouseEvent * event ); - void mouseReleaseEvent( QMouseEvent * event ); - void mouseMoveEvent( QMouseEvent * event ); - void keyReleaseEvent( QKeyEvent * event ); - #endif -}; - -/*----------------------------------------------------------------------*/ -#endif diff --git a/harbour/contrib/hbqt/qscintilla/hbqt_init.cpp b/harbour/contrib/hbqt/qscintilla/hbqt_init.cpp deleted file mode 100644 index 7093f7940c..0000000000 --- a/harbour/contrib/hbqt/qscintilla/hbqt_init.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2009 Marcos Antonio Gambeta (marcosgambeta at gmail dot com) - * Copyright 2009 Pritpal Bedi (pritpal@vouchcac.com) - * Copyright 2010 Viktor Szakats (harbour syenar.net) - * Copyright 2010 Francesco Perillo () - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ - -#include "hbqt.h" -#include "hbqtinit.h" - -#include "hbvm.h" -#include "hbinit.h" - -#if QT_VERSION >= 0x040500 - -/*----------------------------------------------------------------------*/ - -static void hbqt_registerCallbacks( void ) -{ -} - -/*----------------------------------------------------------------------*/ - -HB_FUNC( __HBQSCINTILLA ) {;} - -static void hbqt_lib_init( void * cargo ) -{ - HB_SYMBOL_UNUSED( cargo ); - - hbqt_registerCallbacks(); -} - -static void hbqt_lib_exit( void * cargo ) -{ - HB_SYMBOL_UNUSED( cargo ); -} - -HB_CALL_ON_STARTUP_BEGIN( _hbqscintilla_init_ ) - hb_vmAtInit( hbqt_lib_init, NULL ); - hb_vmAtExit( hbqt_lib_exit, NULL ); -HB_CALL_ON_STARTUP_END( _hbqscintilla_init_ ) - -#if defined( HB_PRAGMA_STARTUP ) - #pragma startup _hbqscintilla_init_ -#elif defined( HB_DATASEG_STARTUP ) - #define HB_DATASEG_BODY HB_DATASEG_FUNC( _hbqscintilla_init_ ) - #include "hbiniseg.h" -#endif - -#endif diff --git a/harbour/contrib/hbqt/qscintilla/qth/HBQsciScintilla.qth b/harbour/contrib/hbqt/qscintilla/qth/HBQsciScintilla.qth deleted file mode 100644 index edc239132a..0000000000 --- a/harbour/contrib/hbqt/qscintilla/qth/HBQsciScintilla.qth +++ /dev/null @@ -1,92 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT Source Generator for Harbour - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * This program is free software you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ - - Header File to Generate QT Wrapper Sources - - - -QObject = Yes -Inherits = QsciScintilla -Type = -New = -Folder = qscintilla - - - - -#include "hbqt_hbqsciscintilla.h" - - -/* - * - */ -HB_FUNC( QT_HBQSCISCINTILLA ) -{ - __HB_RETPTRGC__( new HBQsciScintilla( hbqt_par_QWidget( 1 ) ) ); -} - - - - - - - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qscintilla/qth/QsciAPIs.qth b/harbour/contrib/hbqt/qscintilla/qth/QsciAPIs.qth deleted file mode 100644 index 9214955cb6..0000000000 --- a/harbour/contrib/hbqt/qscintilla/qth/QsciAPIs.qth +++ /dev/null @@ -1,71 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = -Inherits = QsciAbstractAPIs -Type = -New = -Folder = hbqscintilla - - - - - - - - - -#include - - -/* - * QsciAPIs (QsciLexer *lexer) - * virtual ~QsciAPIs () - * - */ -HB_FUNC( QT_QSCIAPIS ) -{ - __HB_RETPTRGC__( new QsciAPIs( hbqt_par_QsciLexer( 1 ) ) ); -} - - - - - - -void add (const QString &entry) -void clear () -bool load (const QString &fname) -void remove (const QString &entry) -void prepare () -void cancelPreparation () -QString defaultPreparedName () const -bool isPrepared (const QString &fname=QString()) const -bool loadPrepared (const QString &fname=QString()) -bool savePrepared (const QString &fname=QString()) const -virtual void updateAutoCompletionList (const QStringList &context, QStringList &list) -virtual void autoCompletionSelected (const QString &sel) -virtual QStringList callTips (const QStringList &context, int commas, QsciScintilla::CallTipsStyle style, QList< int > &shifts) -virtual bool event (QEvent *e) -QStringList installedAPIFiles () const - - - - - - -void apiPreparationCancelled () -void apiPreparationStarted () -void apiPreparationFinished () - diff --git a/harbour/contrib/hbqt/qscintilla/qth/QsciAbstractAPIs.qth b/harbour/contrib/hbqt/qscintilla/qth/QsciAbstractAPIs.qth deleted file mode 100644 index b055aff458..0000000000 --- a/harbour/contrib/hbqt/qscintilla/qth/QsciAbstractAPIs.qth +++ /dev/null @@ -1,58 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = -Inherits = -Type = -New = -Folder = hbqscintilla -Constructor = no - - - - - - - - - -#include - - -/* - * QsciAbstractAPIs (QsciLexer *lexer) - * virtual ~QsciAbstractAPIs () - * - */ -HB_FUNC( QT_QSCIABSTRACTAPIS ) -{ - -} - - - - - - -QsciLexer * lexer () const -virtual void updateAutoCompletionList (const QStringList &context, QStringList &list)=0 -virtual void autoCompletionSelected (const QString &selection) -virtual QStringList callTips (const QStringList &context, int commas, QsciScintilla::CallTipsStyle style, QList< int > &shifts)=0 - - - - - - - diff --git a/harbour/contrib/hbqt/qscintilla/qth/QsciCommand.qth b/harbour/contrib/hbqt/qscintilla/qth/QsciCommand.qth deleted file mode 100644 index 012ee32d0c..0000000000 --- a/harbour/contrib/hbqt/qscintilla/qth/QsciCommand.qth +++ /dev/null @@ -1,59 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherits = -Type = -New = -Folder = hbqscintilla -Constructor = no - - - - - - - - - -#include - - -/* - * - * - */ -HB_FUNC( QT_QSCICOMMAND ) -{ - -} - - - - - - -void setKey (int key) -void setAlternateKey (int altkey) -int key () const -int alternateKey () const -QString description () const -bool validKey (int key) - - - - - - - diff --git a/harbour/contrib/hbqt/qscintilla/qth/QsciCommandSet.qth b/harbour/contrib/hbqt/qscintilla/qth/QsciCommandSet.qth deleted file mode 100644 index 6380293f1a..0000000000 --- a/harbour/contrib/hbqt/qscintilla/qth/QsciCommandSet.qth +++ /dev/null @@ -1,58 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherits = -Type = -New = -Folder = hbqscintilla -Constructor = no - - - - - - - - - -#include - - -/* - * - * - */ -HB_FUNC( QT_QSCICOMMANDSET ) -{ - //__HB_RETPTRGC__( new QsciCommandSet() ); -} - - - - - - -bool readSettings (QSettings &qs, const char *prefix="/Scintilla") -bool writeSettings (QSettings &qs, const char *prefix="/Scintilla") -QList< QsciCommand * > & commands () -void clearKeys () -void clearAlternateKeys () - - - - - - - diff --git a/harbour/contrib/hbqt/qscintilla/qth/QsciDocument.qth b/harbour/contrib/hbqt/qscintilla/qth/QsciDocument.qth deleted file mode 100644 index ab5327fe97..0000000000 --- a/harbour/contrib/hbqt/qscintilla/qth/QsciDocument.qth +++ /dev/null @@ -1,60 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherits = -Type = -New = -Folder = hbqscintilla - - - - - - - - - -#include - - -/* - * QsciDocument () - * QsciDocument (const QsciDocument &) - * - */ -HB_FUNC( QT_QSCIDOCUMENT ) -{ - if( HB_ISOBJECT( 1 ) ) - { - __HB_RETPTRGC__( new QsciDocument( *hbqt_par_QsciDocument( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QsciDocument() ); - } -} - - - - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qscintilla/qth/QsciLexer.qth b/harbour/contrib/hbqt/qscintilla/qth/QsciLexer.qth deleted file mode 100644 index aca76082be..0000000000 --- a/harbour/contrib/hbqt/qscintilla/qth/QsciLexer.qth +++ /dev/null @@ -1,106 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = -Inherits = -Type = -New = -Folder = hbqscintilla -Destructor = no -Constructor = no - - - - - - - - - -#include - - -/* - * QsciLexer (QObject *parent=0) - * virtual ~QsciLexer () - * - */ -HB_FUNC( QT_QSCILEXER ) -{ - -} - - - - - - -virtual const char * language () const =0 -virtual const char * lexer () const -virtual int lexerId () const -QsciAbstractAPIs * apis () const -virtual const char * autoCompletionFillups () const -virtual QStringList autoCompletionWordSeparators () const -int autoIndentStyle () -virtual const char * blockEnd (int *style=0) const -virtual int blockLookback () const -virtual const char * blockStart (int *style=0) const -virtual const char * blockStartKeyword (int *style=0) const -virtual int braceStyle () const -virtual bool caseSensitive () const -virtual QColor color (int style) const -virtual bool eolFill (int style) const -virtual QFont font (int style) const -virtual int indentationGuideView () const -virtual const char * keywords (int set) const -virtual int defaultStyle () const -virtual QString description (int style) const =0 -virtual QColor paper (int style) const -QColor defaultColor () const -virtual QColor defaultColor (int style) const -virtual bool defaultEolFill (int style) const -QFont defaultFont () const -virtual QFont defaultFont (int style) const -QColor defaultPaper () const -virtual QColor defaultPaper (int style) const -QsciScintilla * editor () const -virtual void setEditor (QsciScintilla *editor) -bool readSettings (QSettings &qs, const char *prefix="/Scintilla") -virtual void refreshProperties () -virtual int styleBitsNeeded () const -virtual const char * wordCharacters () const -bool writeSettings (QSettings &qs, const char *prefix="/Scintilla") const - -void setAPIs (QsciAbstractAPIs *apis) -void setDefaultColor (const QColor &c) -void setDefaultFont (const QFont &f) -void setDefaultPaper (const QColor &c) - - - - -virtual void setAutoIndentStyle (int autoindentstyle) -virtual void setColor (const QColor &c, int style=-1) -virtual void setEolFill (bool eoffill, int style=-1) -virtual void setFont (const QFont &f, int style=-1) -virtual void setPaper (const QColor &c, int style=-1) - - - -void colorChanged (const QColor &c, int style) -void eolFillChanged (bool eolfilled, int style) -void fontChanged (const QFont &f, int style) -void paperChanged (const QColor &c, int style) -void propertyChanged (const char *prop, const char *val) - diff --git a/harbour/contrib/hbqt/qscintilla/qth/QsciLexerCPP.qth b/harbour/contrib/hbqt/qscintilla/qth/QsciLexerCPP.qth deleted file mode 100644 index 14f473d7f4..0000000000 --- a/harbour/contrib/hbqt/qscintilla/qth/QsciLexerCPP.qth +++ /dev/null @@ -1,104 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = -Inherits = QsciLexer -Type = -New = -Folder = hbqscintilla - - - - - - - - - -#include - - -/* - * QsciLexerCPP (QObject *parent=0, bool caseInsensitiveKeywords=false) - * virtual ~QsciLexerCPP () - * - */ -HB_FUNC( QT_QSCILEXERCPP ) -{ - if( hb_pcount() == 1 && HB_ISOBJECT( 1 ) ) - { - __HB_RETPTRGC__( new QsciLexerCPP( hbqt_par_QObject( 1 ) ) ); - } - else if( hb_pcount() == 1 && HB_ISLOG( 1 ) ) - { - __HB_RETPTRGC__( new QsciLexerCPP( 0, hb_parl( 1 ) ) ); - } - else if( hb_pcount() == 2 && HB_ISOBJECT( 1 ) && HB_ISLOG( 2 ) ) - { - __HB_RETPTRGC__( new QsciLexerCPP( hbqt_par_QObject( 1 ), hb_parl( 2 ) ) ); - } - else - { - __HB_RETPTRGC__( new QsciLexerCPP() ); - } -} - - - -enum { - Default = 0, Comment = 1, CommentLine = 2, - CommentDoc = 3, Number = 4, Keyword = 5, - DoubleQuotedString = 6, SingleQuotedString = 7, UUID = 8, - PreProcessor = 9, Operator = 10, Identifier = 11, - UnclosedString = 12, VerbatimString = 13, Regex = 14, - CommentLineDoc = 15, KeywordSet2 = 16, CommentDocKeyword = 17, - CommentDocKeywordError = 18, GlobalClass = 19 -} - - - -const char * language () const -const char * lexer () const -QStringList autoCompletionWordSeparators () const -const char * blockEnd (int *style=0) const -const char * blockStart (int *style=0) const -const char * blockStartKeyword (int *style=0) const -int braceStyle () const -const char * wordCharacters () const -QColor defaultColor (int style) const -bool defaultEolFill (int style) const -QFont defaultFont (int style) const -QColor defaultPaper (int style) const -const char * keywords (int set) const -QString description (int style) const -void refreshProperties () -bool foldAtElse () const -bool foldComments () const -bool foldCompact () const -bool foldPreprocessor () const -bool stylePreprocessor () const -void setDollarsAllowed (bool allowed) -bool dollarsAllowed () const - - - -virtual void setFoldAtElse (bool fold) -virtual void setFoldComments (bool fold) -virtual void setFoldCompact (bool fold) -virtual void setFoldPreprocessor (bool fold) -virtual void setStylePreprocessor (bool style) - - - - diff --git a/harbour/contrib/hbqt/qscintilla/qth/QsciLexerFlagship.qth b/harbour/contrib/hbqt/qscintilla/qth/QsciLexerFlagship.qth deleted file mode 100644 index ead7062f83..0000000000 --- a/harbour/contrib/hbqt/qscintilla/qth/QsciLexerFlagship.qth +++ /dev/null @@ -1,104 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = -Inherits = QsciLexer -Type = -New = -Folder = hbqscintilla - - - - - - - - - -#include - - -/* - * QsciLexerFlagship (QObject *parent=0, bool caseInsensitiveKeywords=false) - * virtual ~QsciLexerFlagship () - * - */ -HB_FUNC( QT_QSCILEXERFLAGSHIP ) -{ - if( hb_pcount() == 1 && HB_ISOBJECT( 1 ) ) - { - __HB_RETPTRGC__( new QsciLexerFlagship( hbqt_par_QObject( 1 ) ) ); - } - else if( hb_pcount() == 1 && HB_ISLOG( 1 ) ) - { - __HB_RETPTRGC__( new QsciLexerFlagship( 0, hb_parl( 1 ) ) ); - } - else if( hb_pcount() == 2 && HB_ISOBJECT( 1 ) && HB_ISLOG( 2 ) ) - { - __HB_RETPTRGC__( new QsciLexerFlagship( hbqt_par_QObject( 1 ), hb_parl( 2 ) ) ); - } - else - { - __HB_RETPTRGC__( new QsciLexerFlagship() ); - } -} - - - -enum { - Default = 0, Comment = 1, CommentLine = 2, - CommentDoc = 3, Number = 4, Keyword = 5, - DoubleQuotedString = 6, SingleQuotedString = 7, UUID = 8, - PreProcessor = 9, Operator = 10, Identifier = 11, - UnclosedString = 12, VerbatimString = 13, Regex = 14, - CommentLineDoc = 15, KeywordSet2 = 16, CommentDocKeyword = 17, - CommentDocKeywordError = 18, GlobalClass = 19 -} - - - -const char * language () const -const char * lexer () const -QStringList autoCompletionWordSeparators () const -const char * blockEnd (int *style=0) const -const char * blockStart (int *style=0) const -const char * blockStartKeyword (int *style=0) const -int braceStyle () const -const char * wordCharacters () const -QColor defaultColor (int style) const -bool defaultEolFill (int style) const -QFont defaultFont (int style) const -QColor defaultPaper (int style) const -const char * keywords (int set) const -QString description (int style) const -void refreshProperties () -bool foldAtElse () const -bool foldComments () const -bool foldCompact () const -bool foldPreprocessor () const -bool stylePreprocessor () const -void setDollarsAllowed (bool allowed) -bool dollarsAllowed () const - - - -virtual void setFoldAtElse (bool fold) -virtual void setFoldComments (bool fold) -virtual void setFoldCompact (bool fold) -virtual void setFoldPreprocessor (bool fold) -virtual void setStylePreprocessor (bool style) - - - - diff --git a/harbour/contrib/hbqt/qscintilla/qth/QsciScintilla.qth b/harbour/contrib/hbqt/qscintilla/qth/QsciScintilla.qth deleted file mode 100644 index 2fa619f36e..0000000000 --- a/harbour/contrib/hbqt/qscintilla/qth/QsciScintilla.qth +++ /dev/null @@ -1,341 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT Source Generator for Harbour - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * This program is free software you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ - - Header File to Generate QT Wrapper Sources - - - -QObject = Yes -Inherits = -Type = -New = -Folder = hbqscintilla - - - - -#include "qsciscintilla.h" - - -/* - * QsciScintilla (QWidget *parent=0) - * virtual ~QsciScintilla () - */ -HB_FUNC( QT_QSCISCINTILLA ) -{ - if( HB_ISOBJECT( 1 ) ) - { - __HB_RETPTRGC__( new QsciScintilla( hbqt_par_QWidget( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QsciScintilla() ); - } -} - - - -enum { AiMaintain = 0x01, AiOpening = 0x02, AiClosing = 0x04 } -enum AnnotationDisplay { AnnotationHidden = ANNOTATION_HIDDEN, AnnotationStandard = ANNOTATION_STANDARD, AnnotationBoxed = ANNOTATION_BOXED } -enum AutoCompletionSource { - AcsNone, AcsAll, AcsDocument, AcsAPIs -} -enum BraceMatch { NoBraceMatch, StrictBraceMatch, SloppyBraceMatch } -enum CallTipsStyle { - CallTipsNone, CallTipsNoContext, CallTipsNoAutoCompletionContext, CallTipsContext -} -enum EdgeMode { EdgeNone = EDGE_NONE, EdgeLine = EDGE_LINE, EdgeBackground = EDGE_BACKGROUND } -enum EolMode { EolWindows = SC_EOL_CRLF, EolUnix = SC_EOL_LF, EolMac = SC_EOL_CR } -enum FoldStyle { - NoFoldStyle, PlainFoldStyle, CircledFoldStyle, - BoxedFoldStyle, CircledTreeFoldStyle, BoxedTreeFoldStyle -} -enum MarginType { - SymbolMargin = SC_MARGIN_SYMBOL, SymbolMarginDefaultForegroundColor = SC_MARGIN_FORE, SymbolMarginDefaultBackgroundColor = SC_MARGIN_BACK, - NumberMargin = SC_MARGIN_NUMBER, TextMargin = SC_MARGIN_TEXT, TextMarginRightJustified = SC_MARGIN_RTEXT -} -enum MarkerSymbol { - Circle = SC_MARK_CIRCLE, Rectangle = SC_MARK_ROUNDRECT, RightTriangle = SC_MARK_ARROW, - SmallRectangle = SC_MARK_SMALLRECT, RightArrow = SC_MARK_SHORTARROW, Invisible = SC_MARK_EMPTY, - DownTriangle = SC_MARK_ARROWDOWN, Minus = SC_MARK_MINUS, Plus = SC_MARK_PLUS, - VerticalLine = SC_MARK_VLINE, BottomLeftCorner = SC_MARK_LCORNER, LeftSideSplitter = SC_MARK_TCORNER, - BoxedPlus = SC_MARK_BOXPLUS, BoxedPlusConnected = SC_MARK_BOXPLUSCONNECTED, BoxedMinus = SC_MARK_BOXMINUS, - BoxedMinusConnected = SC_MARK_BOXMINUSCONNECTED, RoundedBottomLeftCorner = SC_MARK_LCORNERCURVE, LeftSideRoundedSplitter = SC_MARK_TCORNERCURVE, - CircledPlus = SC_MARK_CIRCLEPLUS, CircledPlusConnected = SC_MARK_CIRCLEPLUSCONNECTED, CircledMinus = SC_MARK_CIRCLEMINUS, - CircledMinusConnected = SC_MARK_CIRCLEMINUSCONNECTED, Background = SC_MARK_BACKGROUND, ThreeDots = SC_MARK_DOTDOTDOT, - ThreeRightArrows = SC_MARK_ARROWS -} -enum WhitespaceVisibility { WsInvisible = SCWS_INVISIBLE, WsVisible = SCWS_VISIBLEALWAYS, WsVisibleAfterIndent = SCWS_VISIBLEAFTERINDENT } -enum WrapMode { WrapNone = SC_WRAP_NONE, WrapWord = SC_WRAP_WORD, WrapCharacter = SC_WRAP_CHAR } -enum WrapVisualFlag { WrapFlagNone, WrapFlagByText, WrapFlagByBorder } - - - - -# virtual QStringList apiContext (int pos, int &context_start, int &last_word_start) -void annotate (int line, const QString &text, int style) -void annotate (int line, const QString &text, const QsciStyle &style) -void annotate (int line, const QsciStyledText &text) -void annotate (int line, const QList< QsciStyledText > &text) -QString annotation (int line) const -AnnotationDisplay annotationDisplay () const -void clearAnnotations (int line=-1) -bool autoCompletionCaseSensitivity () const -bool autoCompletionFillupsEnabled () const -bool autoCompletionReplaceWord () const -bool autoCompletionShowSingle () const -AutoCompletionSource autoCompletionSource () const -int autoCompletionThreshold () const -bool autoIndent () const -bool backspaceUnindents () const -void beginUndoAction () -BraceMatch braceMatching () const -CallTipsStyle callTipsStyle () const -int callTipsVisible () const -void cancelList () -bool caseSensitive () const -void clearFolds () -void clearRegisteredImages () -QColor color () const -void convertEols (EolMode mode) -QsciDocument document () const -void endUndoAction () -QColor edgeColor () const -int edgeColumn () const -EdgeMode edgeMode () const -void setFont (const QFont &f) -EolMode eolMode () const -bool eolVisibility () const -virtual bool findFirst (const QString &expr, bool re, bool cs, bool wo, bool wrap, bool forward=true, int line=-1, int index=-1, bool show=true) -virtual bool findNext () -int firstVisibleLine () const -FoldStyle folding () const -void getCursorPosition (int *line, int *index) const -void getSelection (int *lineFrom, int *indexFrom, int *lineTo, int *indexTo) const -bool hasSelectedText () const -int indentation (int line) const -bool indentationGuides () const -bool indentationsUseTabs () const -int indentationWidth () const -bool isCallTipActive () const -bool isListActive () const -bool isModified () const -bool isReadOnly () const -bool isRedoAvailable () const -bool isUndoAvailable () const -bool isUtf8 () const -bool isWordCharacter (char ch) const -int lineAt (const QPoint &pos) const -void lineIndexFromPosition (int position, int *line, int *index) const -int lineLength (int line) const -int lines () const -int length () const -QsciLexer * lexer () const -bool marginLineNumbers (int margin) const -int marginMarkerMask (int margin) const -bool marginSensitivity (int margin) const -MarginType marginType (int margin) const -int marginWidth (int margin) const -int markerDefine (MarkerSymbol sym, int mnr=-1) -int markerDefine (char ch, int mnr=-1) -int markerDefine (const QPixmap &pm, int mnr=-1) -int markerAdd (int linenr, int mnr) -unsigned markersAtLine (int linenr) const -void markerDelete (int linenr, int mnr=-1) -void markerDeleteAll (int mnr=-1) -void markerDeleteHandle (int mhandle) -int markerLine (int mhandle) const -int markerFindNext (int linenr, unsigned mask) const -int markerFindPrevious (int linenr, unsigned mask) const -QColor paper () const -int positionFromLineIndex (int line, int index) const -bool read (QIODevice *io) -virtual void recolor (int start=0, int end=-1) -void registerImage (int id, const QPixmap &pm) -virtual void replace (const QString &replaceStr) -void resetFoldMarginColors () -void setFoldMarginColors (const QColor &fore, const QColor &back) -void setAnnotationDisplay (AnnotationDisplay display) -void setAutoCompletionFillupsEnabled (bool enabled) -void setAutoCompletionFillups (const char *fillups) -void setAutoCompletionWordSeparators (const QStringList &separators) -void setCallTipsBackgroundColor (const QColor &col) -void setCallTipsForegroundColor (const QColor &col) -void setCallTipsHighlightColor (const QColor &col) -void setCallTipsStyle (CallTipsStyle style) -void setCallTipsVisible (int nr) -void setDocument (const QsciDocument &document) -void setEdgeColor (const QColor &col) -void setEdgeColumn (int colnr) -void setEdgeMode (EdgeMode mode) -void setMarginText (int line, const QString &text, int style) -void setMarginText (int line, const QString &text, const QsciStyle &style) -void setMarginText (int line, const QsciStyledText &text) -void setMarginText (int line, const QList< QsciStyledText > &text) -void setMarginType (int margin, MarginType type) -void clearMarginText (int line=-1) -void setMarkerBackgroundColor (const QColor &col, int mnr=-1) -void setMarkerForegroundColor (const QColor &col, int mnr=-1) -void setMatchedBraceBackgroundColor (const QColor &col) -void setMatchedBraceForegroundColor (const QColor &col) -void setUnmatchedBraceBackgroundColor (const QColor &col) -void setUnmatchedBraceForegroundColor (const QColor &col) -void setWrapVisualFlags (WrapVisualFlag eflag, WrapVisualFlag sflag=WrapFlagNone, int sindent=0) -QString selectedText () const -bool selectionToEol () const -void setSelectionToEol (bool filled) -void showUserList (int id, const QStringList &list) -QsciCommandSet * standardCommands () const -bool tabIndents () const -int tabWidth () const -QString text () const -QString text (int line) const -int textHeight (int linenr) const -WhitespaceVisibility whitespaceVisibility () const -QString wordAtPoint (const QPoint &point) const -const char * wordCharacters () const -WrapMode wrapMode () const -bool write (QIODevice *io) const - - - -virtual void append (const QString &text) -virtual void autoCompleteFromAll () -virtual void autoCompleteFromAPIs () -virtual void autoCompleteFromDocument () -virtual void callTip () -virtual void clear () -virtual void copy () -virtual void cut () -virtual void ensureCursorVisible () -virtual void ensureLineVisible (int line) -virtual void foldAll (bool children=false) -virtual void foldLine (int line) -virtual void indent (int line) -virtual void insert (const QString &text) -virtual void insertAt (const QString &text, int line, int index) -virtual void moveToMatchingBrace () -virtual void paste () -virtual void redo () -virtual void removeSelectedText () -virtual void resetSelectionBackgroundColor () -virtual void resetSelectionForegroundColor () -virtual void selectAll (bool select=true) -virtual void selectToMatchingBrace () -virtual void setAutoCompletionCaseSensitivity (bool cs) -virtual void setAutoCompletionReplaceWord (bool replace) -virtual void setAutoCompletionShowSingle (bool single) -virtual void setAutoCompletionSource (AutoCompletionSource source) -virtual void setAutoCompletionThreshold (int thresh) -virtual void setAutoIndent (bool autoindent) -virtual void setBraceMatching (BraceMatch bm) -virtual void setBackspaceUnindents (bool unindent) -virtual void setCaretForegroundColor (const QColor &col) -virtual void setCaretLineBackgroundColor (const QColor &col) -virtual void setCaretLineVisible (bool enable) -virtual void setCaretWidth (int width) -virtual void setColor (const QColor &c) -virtual void setCursorPosition (int line, int index) -virtual void setEolMode (EolMode mode) -virtual void setEolVisibility (bool visible) -virtual void setFolding (FoldStyle fold, int margin=2) -virtual void setIndentation (int line, int indentation) -virtual void setIndentationGuides (bool enable) -virtual void setIndentationGuidesBackgroundColor (const QColor &col) -virtual void setIndentationGuidesForegroundColor (const QColor &col) -virtual void setIndentationsUseTabs (bool tabs) -virtual void setIndentationWidth (int width) -virtual void setLexer (QsciLexer *lexer=0) -virtual void setMarginsBackgroundColor (const QColor &col) -virtual void setMarginsFont (const QFont &f) -virtual void setMarginsForegroundColor (const QColor &col) -virtual void setMarginLineNumbers (int margin, bool lnrs) -virtual void setMarginMarkerMask (int margin, int mask) -virtual void setMarginSensitivity (int margin, bool sens) -virtual void setMarginWidth (int margin, int width) -virtual void setMarginWidth (int margin, const QString &s) -virtual void setModified (bool m) -virtual void setPaper (const QColor &c) -virtual void setReadOnly (bool ro) -virtual void setSelection (int lineFrom, int indexFrom, int lineTo, int indexTo) -virtual void setSelectionBackgroundColor (const QColor &col) -virtual void setSelectionForegroundColor (const QColor &col) -virtual void setTabIndents (bool indent) -virtual void setTabWidth (int width) -virtual void setText (const QString &text) -virtual void setUtf8 (bool cp) -virtual void setWhitespaceVisibility (WhitespaceVisibility mode) -virtual void setWrapMode (WrapMode mode) -virtual void undo () -virtual void unindent (int line) -virtual void zoomIn (int range) -virtual void zoomIn () -virtual void zoomOut (int range) -virtual void zoomOut () -virtual void zoomTo (int size) - - - -void cursorPositionChanged (int line, int pos) -void copyAvailable (bool yes) -void linesChanged () -void marginClicked (int margin, int line, Qt::KeyboardModifiers state) -void modificationAttempted () -void modificationChanged (bool m) -void selectionChanged () -void textChanged () -void userListActivated (int id, const QString &string) - - - - diff --git a/harbour/contrib/hbqt/qscintilla/qth/QsciStyle.qth b/harbour/contrib/hbqt/qscintilla/qth/QsciStyle.qth deleted file mode 100644 index 5397ae1c17..0000000000 --- a/harbour/contrib/hbqt/qscintilla/qth/QsciStyle.qth +++ /dev/null @@ -1,86 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = -Inherits = -Type = -New = -Folder = hbqscintilla - - - - - - - - - -#include - -/* - * QsciStyle (int style=-1) - * QsciStyle (int style, const QString &description, const QColor &color, const QColor &paper, const QFont &font, bool eol_fill=false) - * - */ -HB_FUNC( QT_QSCISTYLE ) -{ - if( HB_ISNUMERIC( 1 ) ) - { - __HB_RETPTRGC__( new QsciStyle( hb_parni( 1 ) ) ); - } - else if( hb_pcount() >= 5 ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QsciStyle( hb_parni( 1 ), hb_parstr_utf8( 2, &pText01, NULL ), *hbqt_par_QColor( 3 ), *hbqt_par_QColor( 4 ), * hbqt_par_QFont( 5 ), HB_ISLOG( 6 ) ? hb_parl( 6 ) : false ) ); - hb_strfree( pText01 ); - } - else - { - __HB_RETPTRGC__( new QsciStyle() ); - } -} - - - -enum TextCase { OriginalCase = 0, UpperCase = 1, LowerCase = 2 } - - - -int style () const -void setDescription (const QString &description) -QString description () const -void setColor (const QColor &color) -QColor color () const -void setPaper (const QColor &paper) -QColor paper () const -void setFont (const QFont &font) -QFont font () const -void setEolFill (bool fill) -bool eolFill () const -void setTextCase (TextCase text_case) -TextCase textCase () const -void setVisible (bool visible) -bool visible () const -void setChangeable (bool changeable) -bool changeable () const -void setHotspot (bool hotspot) -bool hotspot () const -void refresh () - - - - - - - diff --git a/harbour/contrib/hbqt/qscintilla/qth/QsciStyledText.qth b/harbour/contrib/hbqt/qscintilla/qth/QsciStyledText.qth deleted file mode 100644 index c1a8939156..0000000000 --- a/harbour/contrib/hbqt/qscintilla/qth/QsciStyledText.qth +++ /dev/null @@ -1,66 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherits = -Type = -New = -Folder = hbqscintilla - - - - - - - - - -#include - - -/* - * QsciStyledText (const QString &text, int style) - * QsciStyledText (const QString &text, const QsciStyle &style) - * - */ -HB_FUNC( QT_QSCISTYLEDTEXT ) -{ - if( hb_pcount() == 2 && HB_ISCHAR( 1 ) && HB_ISNUM( 2 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QsciStyledText( hb_parstr_utf8( 1, &pText01, NULL ), hb_parni( 2 ) ) ); - hb_strfree( pText01 ); - } - else if( hb_pcount() == 2 && HB_ISCHAR( 1 ) && HB_ISOBJECT( 2 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QsciStyledText( hb_parstr_utf8( 1, &pText01, NULL ), *hbqt_par_QsciStyle( 2 ) ) ); - hb_strfree( pText01 ); - } -} - - - - - - -const QString & text () const -int style () const - - - - - - - diff --git a/harbour/contrib/hbqt/qscintilla/qth/filelist.hbm b/harbour/contrib/hbqt/qscintilla/qth/filelist.hbm deleted file mode 100644 index de92b67102..0000000000 --- a/harbour/contrib/hbqt/qscintilla/qth/filelist.hbm +++ /dev/null @@ -1,21 +0,0 @@ -# -# $Id$ -# - --pflag=-qtver=0x040500 --pflag=-qtmodule=qscintilla --pflag=-qthdocdir=../doc/ - -HBQsciScintilla.qth - -QsciAbstractAPIs.qth -QsciAPIs.qth -QsciCommand.qth -QsciCommandSet.qth -QsciDocument.qth -QsciLexer.qth -QsciLexerCPP.qth -QsciLexerFlagship.qth -QsciScintilla.qth -QsciStyle.qth -QsciStyledText.qth diff --git a/harbour/contrib/hbqt/qtcore/hbqt.h b/harbour/contrib/hbqt/qtcore/hbqt.h deleted file mode 100644 index 2b68fdb4a3..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqt.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2009 Pritpal Bedi - * - * Copyright 2009 Marcos Antonio Gambeta - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#ifndef __HBQT_H -#define __HBQT_H - -#include "hbapi.h" -#include "hbapistr.h" -#include "hbthread.h" - -#if defined( HB_OS_OS2 ) -# define OS2EMX_PLAIN_CHAR -# define INCL_BASE -# define INCL_PM -# include -#endif - -#include -#include -#include - -#if !( QT_VERSION >= 0x040500 ) -# error QT library version 4.5.0 or upper is required for hbqt. -#endif - -typedef void ( * PHBQT_SLOT_FUNC )( PHB_ITEM * codeblock, void ** arguments, QStringList pList ); -typedef void * ( * PHBQT_EVENT_FUNC )( void * pObj, bool bNew ); -typedef void ( * PHBQT_DEL_FUNC )( void * pObj, int iFlags ); - -#define HBQT_BIT_NONE 0 -#define HBQT_BIT_OWNER 1 -#define HBQT_BIT_QOBJECT 2 -#define HBQT_BIT_CONSTRUCTOR 4 -#define HBQT_BIT_DESTRUCTOR 8 -#define HBQT_BIT_QPOINTER 16 - -HB_EXTERN_BEGIN - -HB_EXPORT void hbqt_events_register_createobj( QEvent::Type eventtype, QByteArray szCreateObj ); -HB_EXPORT void hbqt_events_unregister_createobj( QEvent::Type eventtype ); -HB_EXPORT void hbqt_slots_register_callback( QByteArray sig, PHBQT_SLOT_FUNC pCallback ); -HB_EXPORT void hbqt_slots_unregister_callback( QByteArray sig ); - -HB_EXPORT void * hbqt_par_ptr( int iParam ); -HB_EXPORT void hbqt_par_detach_ptrGC( int iParam ); -HB_EXPORT HB_BOOL hbqt_par_isDerivedFrom( int iParam, const char * pszClsName ); /* check if parameter iParam is class or subclass of szClsName */ -HB_EXPORT HB_BOOL hbqt_obj_isDerivedFrom( PHB_ITEM pItem, const char * pszClsName ); /* check if parameter iParam is class or subclass of szClsName */ -HB_EXPORT void * hbqt_get_ptr( PHB_ITEM pObj ); - -HB_EXPORT void hbqt_errRT_ARG( void ); -HB_EXPORT PHB_ITEM hbqt_defineClassBegin( const char * pszClsName, PHB_ITEM s_oClass, const char * pszParentClsStr ); -HB_EXPORT void hbqt_defineClassEnd( PHB_ITEM s_oClass, PHB_ITEM oClass ); - -HB_EXPORT PHB_ITEM hbqt_bindGetHbObject( PHB_ITEM pItem, void * qtObject, const char * szClassFunc, PHBQT_DEL_FUNC pDelete, int iFlags ); -HB_EXPORT PHB_ITEM hbqt_bindSetHbObject( PHB_ITEM pItem, void * qtObject, const char * szClassName, PHBQT_DEL_FUNC pDelFunc, int iFlags ); -HB_EXPORT PHB_ITEM hbqt_bindGetHbObjectByQtObject( void * qtObject ); -HB_EXPORT void * hbqt_bindGetQtObject( PHB_ITEM pObject ); -HB_EXPORT void hbqt_bindSetOwner( void * qtObject, HB_BOOL fOwner ); -HB_EXPORT void hbqt_bindDestroyHbObject( PHB_ITEM pObject ); -HB_EXPORT void hbqt_bindDestroyQtObject( void * qtObject, QObject * obj ); - -HB_EXPORT void hbqt_bindAddChild( PHB_ITEM pObject, PHB_ITEM pChild ); -HB_EXPORT void hbqt_bindDelChild( PHB_ITEM pObject, PHB_ITEM pChild ); - -HB_EXPORT void hbqt_bindAddSlot( PHB_ITEM pSenderObject, int iSignalid, PHB_ITEM pCode ); -HB_EXPORT void hbqt_bindDelSlot( PHB_ITEM pSenderObject, int iSignalid, PHB_ITEM pCode ); -HB_EXPORT PHB_ITEM hbqt_bindGetSlots( PHB_ITEM pSenderObject, int iSignalid ); - -HB_EXPORT void hbqt_bindAddEvent( PHB_ITEM pSenderObject, int iEventId, PHB_ITEM pCode ); -HB_EXPORT void hbqt_bindDelEvent( PHB_ITEM pSenderObject, int iEventId, PHB_ITEM pCode ); -HB_EXPORT PHB_ITEM hbqt_bindGetEvents( PHB_ITEM pSenderObject, int iEventId ); - -HB_EXTERN_END - -#define hbqt_par_uchar( n ) ( ( uchar * ) hb_parcx( n ) ) -#define hbqt_par_QRgb( n ) ( hb_parnint( n ) ) -#define hbqt_par_Bool( n ) ( hb_parl( n ) ) -#define hbqt_par_char( n ) ( hb_parcx( n ) ) - -#endif /* __HBQT_H */ diff --git a/harbour/contrib/hbqt/qtcore/hbqt_bind.cpp b/harbour/contrib/hbqt/qtcore/hbqt_bind.cpp deleted file mode 100644 index 35f15aa675..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqt_bind.cpp +++ /dev/null @@ -1,1159 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper source code - * - * Copyright 2012 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) - * Copyright 2012 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ - -#include "hbapi.h" -#include "hbapiitm.h" -#include "hbstack.h" -#include "hbthread.h" -#include "hbvm.h" -#include "hbapierr.h" - -#include "hbqt.h" -#include "hbqt_destroyer.h" -#include "hbqt_hbqslots.h" -#include "hbqt_hbqevents.h" - -typedef struct _HBQT_BIND -{ - void * qtObject; - void * hbObject; - PHBQT_DEL_FUNC pDelFunc; - int iFlags; - char szClassName[ HB_SYMBOL_NAME_LEN + 1 ]; - bool fEventFilterInstalled; - int iThreadId; - struct _HBQT_BIND * next; -} -HBQT_BIND, * PHBQT_BIND; - -typedef struct -{ - PHBQT_BIND s_hbqt_binds; -} HB_BIND_DATA, * PHB_BIND_DATA; - -typedef struct -{ - int iThreadId; - int iObjCreated; - int iObjDestroyed; - HBQDestroyer * pDestroyer; - HBQSlots * pReceiverSlots; - HBQEvents * pReceiverEvents; -} HB_BIND_THREADDATA, * PHB_BIND_THREADDATA; - -/* locks for MT mode, now just dummy definitions which checks - * if all locks are correctly released. - * - * #define HBQT_BIND_LOCK do { - * #define HBQT_BIND_UNLOCK } while( 0 ); - */ -static HB_CRITICAL_NEW( s_qtMtx ); -#define HBQT_BIND_LOCK do { hb_threadEnterCriticalSection( &s_qtMtx ); -#define HBQT_BIND_UNLOCK hb_threadLeaveCriticalSection( &s_qtMtx ); } while( 0 ); - -static PHB_DYNS s_dynsym_NEW = NULL; -static PHB_DYNS s_dynsym___CHILDS = NULL; -static PHB_DYNS s_dynsym___SLOTS = NULL; -static PHB_DYNS s_dynsym_SETSLOTS = NULL; -static PHB_DYNS s_dynsym___EVENTS = NULL; -static PHB_DYNS s_dynsym_SETEVENTS = NULL; - -static PHB_BIND_DATA s_bindData = NULL; -#define hbqt_bindGetData() ( ( ( PHB_BIND_DATA ) &s_bindData )->s_hbqt_binds ) - -void hbqt_bindDelSlots( PHB_ITEM pSenderObject ); -void hbqt_bindDelEvents( PHB_ITEM pSenderObject ); -int __hbqt_bindItemsInGlobalList(); - -static QList hbqt_bindGetObjectListByThread( int iThreadId ); -static void hbqt_bindRemoveBind( PHBQT_BIND bnd ); -static void hbqt_bindDestroyChildren( void * hbObject, bool fDeleteSelf ); -static QList hbqt_bindGetObjectListByThread( int iThreadId ); -static PHBQT_BIND hbqt_bindGetBindByQtObject( void * qtObject ); -static PHBQT_BIND hbqt_bindGetBindByHbObject( void * hbObject ); -static void hbqt_bindDestroyQtObjectA( void * qtObject, QObject * qObject ); - -static int s_bind_threadId = 0; - -static int hbqt_bindGetThreadId() -{ - HBQT_BIND_LOCK - s_bind_threadId++; - HBQT_BIND_UNLOCK - return s_bind_threadId; -} - -static void hbqt_bindThreadInit( void * cargo ) -{ - PHB_BIND_THREADDATA pBindThreadData = ( ( PHB_BIND_THREADDATA ) cargo ); - - pBindThreadData->iThreadId = hbqt_bindGetThreadId(); - pBindThreadData->iObjCreated = 0; - pBindThreadData->iObjDestroyed = 0; - HB_TRACE( HB_TR_DEBUG, ( "...hbqt_bindThreadInit( %i )...STARTS",pBindThreadData->iThreadId ) ); - pBindThreadData->pDestroyer = new HBQDestroyer(); - pBindThreadData->pReceiverSlots = new HBQSlots(); - pBindThreadData->pReceiverEvents = new HBQEvents(); - HB_TRACE( HB_TR_DEBUG, ( "...hbqt_bindThreadInit( %i )...ENDS",pBindThreadData->iThreadId ) ); -} - -static void hbqt_bindThreadRelease( void * cargo ) -{ - PHB_BIND_THREADDATA pBindThreadData = ( ( PHB_BIND_THREADDATA ) cargo ); - int iThreadId = pBindThreadData->iThreadId; - - HB_TRACE( HB_TR_DEBUG, ( " " ) ); - HB_TRACE( HB_TR_DEBUG, ( "...hbqt_bindThreadRelease( %i, Created: %i, Destroyed: %i )...STARTS", iThreadId, pBindThreadData->iObjCreated, pBindThreadData->iObjDestroyed ) ); - HB_TRACE( HB_TR_DEBUG, ( " " ) ); - - QList deleteIt = hbqt_bindGetObjectListByThread( iThreadId ); - - HB_TRACE( HB_TR_DEBUG, ( "..." ) ); - HB_TRACE( HB_TR_DEBUG, ( ".....hbqt_bindThreadRelease( %i, ToBeReleased: %i )", iThreadId, deleteIt.size() ) ); - HB_TRACE( HB_TR_DEBUG, ( "..." ) ); - - int iPass = 0; - - while( ! deleteIt.isEmpty() ) - { - iPass++; - - HB_TRACE( HB_TR_DEBUG, ( "........................................................" ) ); - HB_TRACE( HB_TR_DEBUG, ( ".......hbqt_bindThreadRelease( THREAD = %i, PASS = %i ).......", iThreadId, iPass ) ); - HB_TRACE( HB_TR_DEBUG, ( "........................................................" ) ); - - int i; -// for( i = deleteIt.size()-1; i >= 0 ; i-- ) /* FIFO - Many problems */ - for( i = 0; i < deleteIt.size(); i++ ) /* LIFO - Some problems */ - { - if( deleteIt.at( i ) != NULL ) - { - PHBQT_BIND bind; - - bind = hbqt_bindGetBindByHbObject( deleteIt.at( i ) ); - if( bind != NULL ) - { - HB_TRACE( HB_TR_DEBUG, ( "..." ) ); - HB_TRACE( HB_TR_DEBUG, ( ".......hbqt_bindThreadRelease( %i, #.%i, %p, %s, PASS = %i, FLAGS = %i ).......", iThreadId, i+1, bind->qtObject, bind->szClassName, iPass, bind->iFlags ) ); - HB_TRACE( HB_TR_DEBUG, ( "..." ) ); - - if( bind->iFlags & HBQT_BIT_OWNER ) - { - if( bind->iFlags & HBQT_BIT_QOBJECT ) - { - QObject * qObject = ( QObject * ) bind->qtObject; - if( qObject != NULL ) - { - if( qObject->parent() != NULL && qObject->children().size() > 0 ) - { - HB_TRACE( HB_TR_DEBUG, ( "..." ) ); - HB_TRACE( HB_TR_DEBUG, ( ".......hbqt_bindThreadRelease( %i, #.%i )... parent() != NULL && children() > 0", iThreadId, i+1 ) ); - hbqt_bindDestroyChildren( bind->hbObject, false ); - hbqt_bindDestroyQtObjectA( bind->qtObject, ( QObject * ) bind->qtObject ); - HB_TRACE( HB_TR_DEBUG, ( "..." ) ); - } - else if( qObject->parent() != NULL && qObject->children().size() == 0 ) - { - HB_TRACE( HB_TR_DEBUG, ( "..." ) ); - HB_TRACE( HB_TR_DEBUG, ( ".......hbqt_bindThreadRelease( %i, #.%i )... parent() != NULL && children() == 0", iThreadId, i+1 ) ); - hbqt_bindDestroyQtObjectA( bind->qtObject, ( QObject * ) bind->qtObject ); - HB_TRACE( HB_TR_DEBUG, ( "..." ) ); - } - else if( qObject->parent() == NULL && qObject->children().size() > 0 ) - { - HB_TRACE( HB_TR_DEBUG, ( "..." ) ); - HB_TRACE( HB_TR_DEBUG, ( ".......hbqt_bindThreadRelease( %i, #.%i )... parent() == NULL && children() > 0", iThreadId, i+1 ) ); - hbqt_bindDestroyChildren( bind->hbObject, false ); - hbqt_bindDestroyQtObjectA( bind->qtObject, ( QObject * ) bind->qtObject ); - HB_TRACE( HB_TR_DEBUG, ( "..." ) ); - } - else if( qObject->parent() == NULL && qObject->children().size() == 0 ) - { - HB_TRACE( HB_TR_DEBUG, ( "..." ) ); - HB_TRACE( HB_TR_DEBUG, ( ".......hbqt_bindThreadRelease( %i, #.%i )... parent() == NULL && children() == 0", iThreadId, i+1 ) ); - hbqt_bindDestroyQtObjectA( bind->qtObject, qObject ); - HB_TRACE( HB_TR_DEBUG, ( "..." ) ); - } - } - else - { - HB_TRACE( HB_TR_DEBUG, ( "........Qt Object Seems Destroyed..." ) ); - hbqt_bindRemoveBind( bind ); - } - } - else /* not an QObject object */ - { - HB_TRACE( HB_TR_DEBUG, ( "..." ) ); - HB_TRACE( HB_TR_DEBUG, ( ".......hbqt_bindThreadRelease( %i, #.%i )... else no_qOBJECT", iThreadId, i+1 ) ); - void * qtObject = bind->qtObject; - int iFlags = bind->iFlags; - PHBQT_DEL_FUNC pDelFunc = bind->pDelFunc; - hbqt_bindRemoveBind( bind ); - if( pDelFunc != NULL ) - { - pDelFunc( qtObject, iFlags ); - } - HB_TRACE( HB_TR_DEBUG, ( "..." ) ); - } - } - else /* Harbour is not the owner */ - { - HB_TRACE( HB_TR_DEBUG, ( "..." ) ); - HB_TRACE( HB_TR_DEBUG, ( ".......hbqt_bindThreadRelease( %i, #.%i, %p, %s ).......REMOVING BIND", iThreadId, i+1, bind->qtObject, bind->szClassName ) ); - hbqt_bindRemoveBind( bind ); - HB_TRACE( HB_TR_DEBUG, ( "..." ) ); - } - } - HB_TRACE( HB_TR_DEBUG, ( "..." ) ); - HB_TRACE( HB_TR_DEBUG, ( ".......hbqt_bindThreadRelease( %i, #.%i ).............e", iThreadId, i+1 ) ); - HB_TRACE( HB_TR_DEBUG, ( "..." ) ); - } - } - deleteIt.clear(); - deleteIt = hbqt_bindGetObjectListByThread( iThreadId ); - } - - delete pBindThreadData->pDestroyer; - delete pBindThreadData->pReceiverSlots; - delete pBindThreadData->pReceiverEvents; - - HB_TRACE( HB_TR_DEBUG, ( " " ) ); - HB_TRACE( HB_TR_DEBUG, ( "...hbqt_bindThreadRelease( %i )...ENDS", iThreadId ) ); - HB_TRACE( HB_TR_DEBUG, ( " " ) ); -} - -static HB_TSD_NEW( s_bindThreadData, sizeof( HB_BIND_THREADDATA ), hbqt_bindThreadInit, hbqt_bindThreadRelease ); -#define hbqt_bindGetThreadData() ( ( PHB_BIND_THREADDATA ) hb_stackGetTSD( &s_bindThreadData ) ) - -static void hbqt_bind_init( void * cargo ) -{ - HB_SYMBOL_UNUSED( cargo ); - - hbqt_bindGetData() = NULL; - - s_dynsym_NEW = hb_dynsymGetCase( "NEW" ); - s_dynsym___CHILDS = hb_dynsymGetCase( "__CHILDS" ); - s_dynsym___SLOTS = hb_dynsymGetCase( "__SLOTS" ); - s_dynsym_SETSLOTS = hb_dynsymGetCase( "SETSLOTS" ); - s_dynsym___EVENTS = hb_dynsymGetCase( "__EVENTS" ); - s_dynsym_SETEVENTS = hb_dynsymGetCase( "SETEVENTS" ); -} - -static void hbqt_bind_exit( void * cargo ) -{ - HB_SYMBOL_UNUSED( cargo ); -} - -static QList hbqt_bindGetObjectListByThread( int iThreadId ) -{ - QList deleteIt; - - HBQT_BIND_LOCK - PHBQT_BIND bind; - bind = hbqt_bindGetData(); - while( bind != NULL ) - { - if( bind->iThreadId == iThreadId ) - { - deleteIt << bind->hbObject; - HB_TRACE( HB_TR_DEBUG, ( "...hbqt_bindThreadRelease( %i, %p, %i, %s )", iThreadId, bind->qtObject, deleteIt.size(), bind->szClassName ) ); - } - bind = bind->next; - } - HBQT_BIND_UNLOCK - - return deleteIt; -} - -static PHBQT_BIND hbqt_bindGetBindByQtObject( void * qtObject ) -{ - PHBQT_BIND bind, r_bind; - - r_bind = NULL; - - HBQT_BIND_LOCK - bind = hbqt_bindGetData(); - while( bind != NULL ) - { - if( bind->qtObject == qtObject ) - { - r_bind = bind; - break; - } - bind = bind->next; - } - HBQT_BIND_UNLOCK - return r_bind; -} - -static PHBQT_BIND hbqt_bindGetBindByHbObject( void * hbObject ) -{ - PHBQT_BIND bind, r_bind; - - r_bind = NULL; - - HBQT_BIND_LOCK - bind = hbqt_bindGetData(); - while( bind != NULL ) - { - if( bind->hbObject == hbObject ) - { - r_bind = bind; - break; - } - bind = bind->next; - } - HBQT_BIND_UNLOCK - return r_bind; -} - -static void hbqt_bindRemoveBind( PHBQT_BIND bnd ) -{ - if( bnd != NULL ) - { - PHBQT_BIND * bind_ptr, bind; - - HBQT_BIND_LOCK - bind_ptr = &( hbqt_bindGetData() ); - while( ( bind = * bind_ptr ) != NULL ) - { - if( bind == bnd ) - { - * bind_ptr = bind->next; - hb_xfree( bind ); - hbqt_bindGetThreadData()->iObjDestroyed++; - break; - } - bind_ptr = &bind->next; - } - HBQT_BIND_UNLOCK - } -} - -static void hbqt_bindAddBind( PHBQT_BIND bind ) -{ - if( bind != NULL ) - { - HBQT_BIND_LOCK - bind->next = hbqt_bindGetData(); - hbqt_bindGetData() = bind; - hbqt_bindGetThreadData()->iObjCreated++; - HBQT_BIND_UNLOCK - } -} - -static void hbqt_bindDestroyChildren( void * hbObject, bool fDeleteSelf ) -{ - if( hbObject ) - { - PHBQT_BIND bind = hbqt_bindGetBindByHbObject( hbObject ); - if( bind != NULL ) - { - QObject * qObject = ( QObject * ) bind->qtObject; - if( qObject ) - { - QList< QObject *> children = qObject->children(); - if( children.size() > 0 ) - { - int i; - for( i = 0; i < children.size(); i++ ) - { - PHBQT_BIND bnd = hbqt_bindGetBindByQtObject( ( void * ) children.at( i ) ); - if( bnd != NULL ) - { - hbqt_bindDestroyChildren( bnd->hbObject, true ); - } - } - } - else if( fDeleteSelf ) - { - hbqt_bindDestroyQtObject( ( void * ) qObject, qObject ); - } - } - } - } -} - -PHB_ITEM hbqt_bindGetHbObject( PHB_ITEM pItem, void * qtObject, const char * szClassName, PHBQT_DEL_FUNC pDelFunc, int iFlags ) -{ - int id = hbqt_bindGetThreadData()->iThreadId; - bool isQObject = iFlags & HBQT_BIT_QOBJECT; - - if( iFlags & HBQT_BIT_QOBJECT ) - { - char * pname = ( char * ) hb_xgrab( 200 ); - char * pname1 = ( char * ) hb_xgrab( 200 ); - HB_TRACE( HB_TR_DEBUG, ( "......HARBOUR_REQUEST_BIND_OBJECT( %i, %i, %p, %s, %s, %s )", id, iFlags, qtObject, szClassName, hb_procname( 0, pname, HB_TRUE ), hb_procname( 1, pname1, HB_TRUE ) ) ); - hb_xfree( pname ); - hb_xfree( pname1 ); - } - - PHB_ITEM pObject = NULL; - - if( qtObject == NULL ) - { - return pObject; - } - - PHB_SYMB pClassFunc = hb_dynsymGetSymbol( szClassName ); - if( pClassFunc == NULL ) - { - return pObject; - } - - PHBQT_BIND bind = hbqt_bindGetBindByQtObject( qtObject ); - if( bind != NULL ) - { - return hb_arrayFromId( pItem, bind->hbObject ); - } - - if( pObject == NULL && pClassFunc && hb_vmRequestReenter() ) - { - hb_vmPushSymbol( pClassFunc ); - hb_vmPushNil(); - hb_vmDo( 0 ); - - if( HB_IS_OBJECT( hb_stackReturnItem() ) && hb_vmRequestQuery() == 0 ) - { - if( pItem == NULL ) - { - pItem = hb_itemNew( NULL ); - } - pObject = hb_stackReturnItem(); - if( pItem != pObject ) - { - hb_itemMove( pItem, pObject ); - pObject = pItem; - } - if( bind == NULL ) - { - bind = ( PHBQT_BIND ) hb_xgrab( sizeof( HBQT_BIND ) ); - memset( bind, 0, sizeof( HBQT_BIND ) ); - bind->qtObject = qtObject; - bind->pDelFunc = pDelFunc; - bind->iFlags = iFlags; - bind->fEventFilterInstalled = false; - bind->iThreadId = id; - hb_strncpy( bind->szClassName, szClassName, HB_SIZEOFARRAY( bind->szClassName ) - 1 ); - - hbqt_bindAddBind( bind ); - } - - bind->hbObject = hb_arrayId( pObject ); - - if( isQObject ) - { - QObject * obj = ( QObject * ) qtObject; - QString className = ( QString ) obj->metaObject()->className(); - - if( bind->iFlags & HBQT_BIT_OWNER ) - { - QObject::connect( obj, SIGNAL( destroyed(QObject*) ), hbqt_bindGetThreadData()->pDestroyer, SLOT( destroyer(QObject*) ) ); - } - - hb_vmPushDynSym( s_dynsym_SETSLOTS ); /* initializes __Slots hash */ - hb_vmPush( pObject ); - hb_vmSend( 0 ); - - hb_vmPushDynSym( s_dynsym_SETEVENTS ); /* initializes __Events hash */ - hb_vmPush( pObject ); - hb_vmSend( 0 ); - } - else - { - HB_TRACE( HB_TR_DEBUG, ( "......hbqt_bindGetHbObject( %p )", qtObject ) ); - } - } - hb_vmRequestRestore(); - } - - return pObject; -} - -void hbqt_bindDestroyHbObject( PHB_ITEM pObject ) -{ - void * hbObject = hb_arrayId( pObject ); - HB_TRACE( HB_TR_DEBUG, ( ".........HARBOUR_DESTROY_BEGINS..........." ) ); - if( hbObject ) - { - PHBQT_BIND bind = hbqt_bindGetBindByHbObject( hbObject ); - if( bind != NULL ) - { - void * qtObject = bind->qtObject; - int iFlags = bind->iFlags; - PHBQT_DEL_FUNC pDelFunc = bind->pDelFunc; - - bool fDelQtObject = false; - bool isQObject = iFlags & HBQT_BIT_QOBJECT; - QObject * qObject = NULL; - - if( isQObject ) - { - qObject = ( QObject * ) qtObject; - } - if( pDelFunc != NULL ) - { - if( iFlags & HBQT_BIT_OWNER ) - { - if( isQObject ) - { - if( qObject->parent() == NULL ) - { - fDelQtObject = true; - } - } - else - { - fDelQtObject = true; - } - } - } - - if( isQObject ) - { - HB_TRACE( HB_TR_DEBUG, ( ".........HARBOUR_DESTROY_BEGINS( %i, %i, %p, %s ) )", bind->iThreadId, iFlags, qtObject, bind->szClassName ) ); - } - if( iFlags & HBQT_BIT_OWNER ) - { - if( fDelQtObject ) - { - if( isQObject ) - { - HB_TRACE( HB_TR_DEBUG, ( "......... HARBOUR_DESTROYING_qt_OBJECT( %i, %i, %p, %s ) )", bind->iThreadId, iFlags, qtObject, bind->szClassName ) ); - qObject->disconnect(); - if( bind->fEventFilterInstalled ) - { - qObject->removeEventFilter( hbqt_bindGetThreadData()->pReceiverEvents ); - } - } - else - { - HB_TRACE( HB_TR_DEBUG, ( "......... HARBOUR_DESTROYING_qt_OBJECT( %i, %i, %p, %s ) )", bind->iThreadId, iFlags, qtObject, bind->szClassName ) ); - } - hbqt_bindRemoveBind( bind ); - pDelFunc( qtObject, iFlags ); - } - else - { - if( isQObject ) - { - hbqt_bindRemoveBind( bind ); /* MUST HAVE : hb_arrayFromId() returns NIL onto retained object as such */ - HB_TRACE( HB_TR_DEBUG, ( "......... HARBOUR_NOT-DESTROYING_hb_OBJECT( %i, %i, %p, %s ) )", bind->iThreadId, iFlags, qtObject, bind->szClassName ) ); - } - } - } - else - { - if( isQObject ) - { - HB_TRACE( HB_TR_DEBUG, ( "......... HARBOUR_DESTROYING_hb_OBJECT( %i, %i, %p, %s ) )", bind->iThreadId, iFlags, qtObject, bind->szClassName ) ); - } - hbqt_bindRemoveBind( bind ); - } - HB_TRACE( HB_TR_DEBUG, ( ".........HARBOUR_DESTROY_ENDS( %p )", qtObject ) ); - } - } -} - -void hbqt_bindDestroyQtObject( void * qtObject, QObject * qObject ) -{ - HB_TRACE( HB_TR_DEBUG, ( "............QT_DESTROY_BEGINS...............%p %p", qtObject, qObject ) ); - if( qtObject ) - { - qObject->disconnect(); - - PHBQT_BIND bind = hbqt_bindGetBindByQtObject( qtObject ); - if( bind != NULL ) - { - HB_TRACE( HB_TR_DEBUG, ( "............QT_DESTROYS( %i, %i, %p, %s )..............", bind->iThreadId, bind->iFlags, bind->qtObject, bind->szClassName ) ); - - if( bind->fEventFilterInstalled ) - { - qObject->removeEventFilter( hbqt_bindGetThreadData()->pReceiverEvents ); - } - hbqt_bindRemoveBind( bind ); - } - } - HB_TRACE( HB_TR_DEBUG, ( "............QT_DESTROY_ENDS...............%p %p", qtObject, qObject ) ); -} - -static void hbqt_bindDestroyQtObjectA( void * qtObject, QObject * qObject ) -{ - HB_TRACE( HB_TR_DEBUG, ( "............QT_DESTROY_BEGINS...............%p %p", qtObject, qObject ) ); - if( qtObject ) - { - qObject->disconnect(); - - PHBQT_BIND bind = hbqt_bindGetBindByQtObject( qtObject ); - if( bind != NULL ) - { - HB_TRACE( HB_TR_DEBUG, ( "............QT_DESTROYS( %i, %i, %p, %s )..............", bind->iThreadId, bind->iFlags, bind->qtObject, bind->szClassName ) ); - if( bind->fEventFilterInstalled ) - { - qObject->removeEventFilter( hbqt_bindGetThreadData()->pReceiverEvents ); - } - int iFlags = bind->iFlags; - PHBQT_DEL_FUNC pDelFunc = bind->pDelFunc; - hbqt_bindRemoveBind( bind ); - if( pDelFunc != NULL ) - { - pDelFunc( qtObject, iFlags ); - } - } - } - HB_TRACE( HB_TR_DEBUG, ( "............QT_DESTROY_ENDS...............%p %p", qtObject, qObject ) ); -} - -PHB_ITEM hbqt_bindSetHbObject( PHB_ITEM pItem, void * qtObject, const char * szClassName, PHBQT_DEL_FUNC pDelFunc, int iFlags ) -{ - int id = hbqt_bindGetThreadData()->iThreadId; - - Q_UNUSED( szClassName ); - HB_TRACE( HB_TR_DEBUG, ( "......ENTER hbqt_bindSetHbObject( %p, %s )", qtObject, szClassName ) ); - - PHB_ITEM pObject = NULL; - - if( qtObject == NULL ) - { - hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - return pObject; - } - - PHBQT_BIND bind; - - HBQT_BIND_LOCK - bind = hbqt_bindGetData(); - - pObject = hb_param( 0, HB_IT_OBJECT ); - if( pObject && hb_vmRequestQuery() == 0 ) - { - if( pItem == NULL ) - { - pItem = hb_itemNew( NULL ); - } - if( pItem != pObject ) - { - hb_itemMove( pItem, pObject ); - pObject = pItem; - } - - bind = ( PHBQT_BIND ) hb_xgrab( sizeof( HBQT_BIND ) ); - memset( bind, 0, sizeof( HBQT_BIND ) ); - - bind->qtObject = qtObject; - bind->pDelFunc = pDelFunc; - bind->iFlags = iFlags; - bind->fEventFilterInstalled = false; - bind->iThreadId = id; - hb_strncpy( bind->szClassName, szClassName, HB_SIZEOFARRAY( bind->szClassName ) - 1 ); - - bind->next = hbqt_bindGetData(); - hbqt_bindGetData() = bind; - - bind->hbObject = hb_arrayId( pObject ); - - if( iFlags & HBQT_BIT_QOBJECT ) - { - QObject * obj = ( QObject * ) qtObject; - QString className = ( QString ) obj->metaObject()->className(); - - if( bind->iFlags & HBQT_BIT_OWNER ) - { - QObject::connect( obj, SIGNAL( destroyed(QObject*) ), hbqt_bindGetThreadData()->pDestroyer, SLOT( destroyer(QObject*) ) ); - } - HB_TRACE( HB_TR_DEBUG, ( "......hbqt_bindSetHbObject_connected_to_destroy()( %p, %s )", qtObject, szClassName ) ); - - hb_vmPushDynSym( s_dynsym_SETSLOTS ); /* initializes __Slots hash */ - hb_vmPush( pObject ); - hb_vmSend( 0 ); - - hb_vmPushDynSym( s_dynsym_SETEVENTS ); /* initializes __Events hash */ - hb_vmPush( pObject ); - hb_vmSend( 0 ); - } - } - HBQT_BIND_UNLOCK - - HB_TRACE( HB_TR_DEBUG, ( "......hbqt_bindSetHbObject returns PHB_ITEM = %p", pObject ) ); - return pObject; -} - -HBQSlots * hbqt_bindGetReceiverSlotsByHbObject( PHB_ITEM pObject ) -{ - HBQSlots * pReceiverSlot = NULL; - if( pObject != NULL ) - { - void * hbObject = hb_arrayId( pObject ); - PHBQT_BIND bind = hbqt_bindGetBindByHbObject( hbObject ); - if( bind != NULL ) - { - pReceiverSlot = hbqt_bindGetThreadData()->pReceiverSlots; - } - } - return pReceiverSlot; -} - -HBQEvents * hbqt_bindGetReceiverEventsByHbObject( PHB_ITEM pObject ) -{ - HBQEvents * pReceiverEvents = NULL; - if( pObject != NULL ) - { - void * hbObject = hb_arrayId( pObject ); - PHBQT_BIND bind = hbqt_bindGetBindByHbObject( hbObject ); - if( bind != NULL ) - { - pReceiverEvents = hbqt_bindGetThreadData()->pReceiverEvents; - if( ! bind->fEventFilterInstalled ) - { - bind->fEventFilterInstalled = true; - hbqt_bindGetThreadData()->pReceiverEvents->hbInstallEventFilter( pObject ); - } - HB_TRACE( HB_TR_DEBUG, ( "hbqt_bindGetReceiverEventsByHbObject( %p )", bind->qtObject ) ); - } - } - return pReceiverEvents; -} - -PHB_ITEM hbqt_bindGetHbObjectByQtObject( void * qtObject ) -{ - PHB_ITEM pObject = NULL; - - if( qtObject != NULL ) - { - PHBQT_BIND bind; - - HBQT_BIND_LOCK - bind = hbqt_bindGetData(); - while( bind ) - { - if( bind->qtObject == qtObject ) - { - pObject = hb_arrayFromId( NULL, bind->hbObject ); - break; - } - bind = bind->next; - } - HBQT_BIND_UNLOCK - } - return pObject; -} - -void * hbqt_bindGetQtObject( PHB_ITEM pObject ) -{ - HB_TRACE( HB_TR_DEBUG, ( "hbqt_bindGetQtObject()" ) ); - - void * hbObject = hb_arrayId( pObject ); - void * qtObject = NULL; - - if( hbObject ) - { - PHBQT_BIND bind = hbqt_bindGetBindByHbObject( hbObject ); - if( bind != NULL ) - { - qtObject = bind->qtObject; - } - } - return qtObject; -} - -void hbqt_bindSetOwner( void * qtObject, HB_BOOL fOwner ) -{ - PHBQT_BIND bind = hbqt_bindGetBindByQtObject( qtObject ); - if( bind != NULL ) - { - if( fOwner == HB_TRUE ) - { - bind->iFlags = bind->iFlags | HBQT_BIT_OWNER; - } - else - { - bind->iFlags = bind->iFlags & ~( HBQT_BIT_OWNER ); - } - } -} - -void hbqt_bindAddSlot( PHB_ITEM pSenderObject, int iSignalid, PHB_ITEM pCode ) -{ - if( HB_IS_BLOCK( pCode ) && hb_vmRequestReenter() ) - { - hb_vmPushDynSym( s_dynsym___SLOTS ); - hb_vmPush( pSenderObject ); - hb_vmSend( 0 ); - if( hb_vmRequestQuery() == 0 ) - { - PHB_ITEM pArray, pIndex; - - pIndex = hb_itemPutNI( hb_stackAllocItem(), iSignalid ); - pArray = hb_hashGetItemPtr( hb_stackReturnItem(), pIndex, - HB_HASH_AUTOADD_ASSIGN ); - hb_stackPop(); - - if( pArray && HB_IS_ARRAY( pArray ) ) - hb_arrayAdd( pArray, pCode ); - else - hb_errRT_BASE( EG_BOUND, 4005, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - } - hb_vmRequestRestore(); - } -} - -void hbqt_bindDelSlot( PHB_ITEM pSenderObject, int iSignalid, PHB_ITEM pCode ) -{ - if( hb_vmRequestReenter() ) - { - hb_vmPushDynSym( s_dynsym___SLOTS ); - hb_vmPush( pSenderObject ); - hb_vmSend( 0 ); - if( hb_vmRequestQuery() == 0 ) - { - PHB_ITEM pArray, pIndex; - - pIndex = hb_itemPutNI( hb_stackAllocItem(), iSignalid ); - pArray = hb_hashGetItemPtr( hb_stackReturnItem(), pIndex, 0 ); - hb_stackPop(); - - if( pArray && HB_IS_ARRAY( pArray ) ) - { - if( pCode == NULL ) - { - HB_TRACE( HB_TR_DEBUG, ( "hbqt_bindDelSlot( PHB_ITEM pSenderObject, int iSignalid, PHB_ITEM pCode )" ) ); - hb_arraySize( pArray, 0 ); - } - else - { - void * id = hb_codeblockId( pCode ); - HB_SIZE nPos; - for( nPos = hb_arrayLen( pArray ); nPos; --nPos ) - { - if( id == hb_codeblockId( hb_arrayGetItemPtr( pArray, nPos ) ) ) - { - hb_arrayDel( pArray, nPos ); - hb_arraySize( pArray, hb_arrayLen( pArray ) - 1 ); - break; - } - } - } - } - } - hb_vmRequestRestore(); - } -} - -void hbqt_bindDelSlots( PHB_ITEM pSenderObject ) -{ - if( pSenderObject ) - { - if( hb_vmRequestReenter() ) - { - HB_TRACE( HB_TR_DEBUG, ( "hbqt_bindDelSlots( PHB_ITEM pSenderObject 0 %p )", pSenderObject ) ); - hb_vmPushDynSym( s_dynsym___SLOTS ); - hb_vmPush( pSenderObject ); - hb_vmSend( 0 ); - if( hb_vmRequestQuery() == 0 ) - { - HB_TRACE( HB_TR_DEBUG, ( "hbqt_bindDelSlots( PHB_ITEM pSenderObject )" ) ); - hb_hashClear( hb_stackReturnItem() ); - } - hb_vmRequestRestore(); - } - } -} - -PHB_ITEM hbqt_bindGetSlots( PHB_ITEM pSenderObject, int iSignalid ) -{ - PHB_ITEM pSlots = NULL; - - if( hb_vmRequestReenter() ) - { - hb_vmPushDynSym( s_dynsym___SLOTS ); - hb_vmPush( pSenderObject ); - hb_vmSend( 0 ); - if( hb_vmRequestQuery() == 0 ) - { - PHB_ITEM pArray, pIndex; - - pIndex = hb_itemPutNI( hb_stackAllocItem(), iSignalid ); - pArray = hb_hashGetItemPtr( hb_stackReturnItem(), pIndex, 0 ); - hb_stackPop(); - - if( pArray && HB_IS_ARRAY( pArray ) && hb_arrayLen( pArray ) > 0 ) - pSlots = hb_itemNew( pArray ); - } - hb_vmRequestRestore(); - } - return pSlots; -} - -void hbqt_bindAddEvent( PHB_ITEM pSenderObject, int iEventId, PHB_ITEM pCode ) -{ - if( HB_IS_BLOCK( pCode ) && hb_vmRequestReenter() ) - { - hb_vmPushDynSym( s_dynsym___EVENTS ); - hb_vmPush( pSenderObject ); - hb_vmSend( 0 ); - if( hb_vmRequestQuery() == 0 ) - { - PHB_ITEM pArray, pIndex; - - pIndex = hb_itemPutNI( hb_stackAllocItem(), iEventId ); - pArray = hb_hashGetItemPtr( hb_stackReturnItem(), pIndex, HB_HASH_AUTOADD_ASSIGN ); - hb_stackPop(); - - if( pArray && HB_IS_ARRAY( pArray ) ) - hb_arrayAdd( pArray, pCode ); - else - hb_errRT_BASE( EG_BOUND, 4005, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - } - hb_vmRequestRestore(); - } -} - -void hbqt_bindDelEvent( PHB_ITEM pSenderObject, int iEventId, PHB_ITEM pCode ) -{ - if( hb_vmRequestReenter() ) - { - hb_vmPushDynSym( s_dynsym___EVENTS ); - hb_vmPush( pSenderObject ); - hb_vmSend( 0 ); - if( hb_vmRequestQuery() == 0 ) - { - PHB_ITEM pArray, pIndex; - - pIndex = hb_itemPutNI( hb_stackAllocItem(), iEventId ); - pArray = hb_hashGetItemPtr( hb_stackReturnItem(), pIndex, 0 ); - hb_stackPop(); - - if( pArray && HB_IS_ARRAY( pArray ) ) - { - if( pCode == NULL ) - { - HB_TRACE( HB_TR_DEBUG, ( "hbqt_bindDelEvent( %i )", iEventId ) ); - hb_arraySize( pArray, 0 ); - } - else - { - void * id = hb_codeblockId( pCode ); - HB_SIZE nPos; - for( nPos = hb_arrayLen( pArray ); nPos; --nPos ) - { - if( id == hb_codeblockId( hb_arrayGetItemPtr( pArray, nPos ) ) ) - { - hb_arrayDel( pArray, nPos ); - hb_arraySize( pArray, hb_arrayLen( pArray ) - 1 ); - break; - } - } - } - } - } - hb_vmRequestRestore(); - } -} - -void hbqt_bindDelEvents( PHB_ITEM pSenderObject ) -{ - if( pSenderObject ) - { - if( hb_vmRequestReenter() ) - { - HB_TRACE( HB_TR_DEBUG, ( "hbqt_bindDelEvents( PHB_ITEM pSenderObject 0 %p )", pSenderObject ) ); - hb_vmPushDynSym( s_dynsym___EVENTS ); - hb_vmPush( pSenderObject ); - hb_vmSend( 0 ); - if( hb_vmRequestQuery() == 0 ) - { - HB_TRACE( HB_TR_DEBUG, ( "hbqt_bindDelEvents( PHB_ITEM pSenderObject )" ) ); - hb_hashClear( hb_stackReturnItem() ); - } - hb_vmRequestRestore(); - } - } -} - -PHB_ITEM hbqt_bindGetEvents( PHB_ITEM pSenderObject, int iEventId ) -{ - PHB_ITEM pEvents = NULL; - - if( hb_vmRequestReenter() ) - { - hb_vmPushDynSym( s_dynsym___EVENTS ); - hb_vmPush( pSenderObject ); - hb_vmSend( 0 ); - if( hb_vmRequestQuery() == 0 ) - { - PHB_ITEM pArray, pIndex; - - pIndex = hb_itemPutNI( hb_stackAllocItem(), iEventId ); - pArray = hb_hashGetItemPtr( hb_stackReturnItem(), pIndex, 0 ); - hb_stackPop(); - - if( pArray && HB_IS_ARRAY( pArray ) && hb_arrayLen( pArray ) > 0 ) - pEvents = hb_itemNew( pArray ); - } - hb_vmRequestRestore(); - } - return pEvents; -} - -void hbqt_bindAddChild( PHB_ITEM pObject, PHB_ITEM pChild ) -{ -#ifdef HBQT_BIND_DEBUG - QObject * qtParent = hbqt_bindGetQtObject( pObject ); - QObject * qtChild = hbqt_bindGetQtObject( pChild ); - - if( qtParent == NULL || qtChild == NULL || - HBQT_PARENT( qtChild ) != qtParent ) - { - hb_errRT_BASE( EG_BOUND, 4001, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - return; - } -#endif - - if( hb_vmRequestReenter() ) - { - PHB_ITEM pArray; - - hb_vmPushDynSym( s_dynsym___CHILDS ); - hb_vmPush( pObject ); - hb_vmSend( 0 ); - pArray = hb_stackReturnItem(); - if( hb_vmRequestQuery() == 0 ) - { - if( HB_IS_ARRAY( pArray ) ) - hb_arrayAdd( pArray, pChild ); - else - hb_errRT_BASE( EG_BOUND, 4002, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - } - hb_vmRequestRestore(); - } -} - -void hbqt_bindDelChild( PHB_ITEM pObject, PHB_ITEM pChild ) -{ -#ifdef HBQT_BIND_DEBUG - QObject * qtParent = hbqt_bindGetQtObject( pObject ); - QObject * qtChild = hbqt_bindGetQtObject( pChild ); - - if( qtParent == NULL || qtChild == NULL || - HBQT_PARENT( qtChild ) != NULL ) - { - hb_errRT_BASE( EG_BOUND, 4003, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - return; - } -#endif - - if( hb_vmRequestReenter() ) - { - hb_vmPushDynSym( s_dynsym___CHILDS ); - hb_vmPush( pObject ); - hb_vmSend( 0 ); - if( hb_vmRequestQuery() == 0 ) - { - PHB_ITEM pArray = hb_stackReturnItem(); - if( hb_arrayDel( pArray, hb_arrayScan( pArray, pChild, - NULL, NULL, HB_TRUE ) ) ) - hb_arraySize( pArray, hb_arrayLen( pArray ) - 1 ); - else - hb_errRT_BASE( EG_BOUND, 4004, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - } - hb_vmRequestRestore(); - } -} - -/* this function has to be executed from HBQT object destructor - * with Self parameter: - * __hbqt_destroy( Self ) - * alternatively it can be used directly as destructor method. - */ -HB_FUNC( __HBQT_DESTROY ) -{ - PHB_ITEM pObject = hb_stackSelfItem(); - if( pObject ) - hbqt_bindDestroyHbObject( pObject ); -} - -int __hbqt_bindItemsInGlobalList( void ) -{ - int i = 0; - PHBQT_BIND bind; - - HBQT_BIND_LOCK - bind = hbqt_bindGetData(); - while( bind ) - { - i++; - HB_TRACE( HB_TR_DEBUG, ( "_____OnExit______( %p, %s )", bind->qtObject, bind->szClassName ) ); - bind = bind->next; - } - HBQT_BIND_UNLOCK - return i; -} - -HB_FUNC( __HBQT_ITEMSINGLOBALLIST ) -{ - hb_retni( __hbqt_bindItemsInGlobalList() ); -} - -HB_CALL_ON_STARTUP_BEGIN( _hbqt_bind_init_ ) - hb_vmAtInit( hbqt_bind_init, NULL ); - hb_vmAtExit( hbqt_bind_exit, NULL ); -HB_CALL_ON_STARTUP_END( _hbqt_bind_init_ ) - -#if defined( HB_PRAGMA_STARTUP ) - #pragma startup _hbqt_bind_init_ -#elif defined( HB_DATASEG_STARTUP ) - #define HB_DATASEG_BODY HB_DATASEG_FUNC( _hbqt_bind_init_ ) - #include "hbiniseg.h" -#endif - diff --git a/harbour/contrib/hbqt/qtcore/hbqt_destroyer.cpp b/harbour/contrib/hbqt/qtcore/hbqt_destroyer.cpp deleted file mode 100644 index 21f3c8e56a..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqt_destroyer.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2012 Pritpal Bedi (bedipritpal@hotmail.com) - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ - -#include "hbqt.h" - -#include "hbapiitm.h" -#include "hbvm.h" - -#if QT_VERSION >= 0x040500 - -#include "hbqt_destroyer.h" - -/*----------------------------------------------------------------------*/ - -HBQDestroyer::HBQDestroyer() : QObject() -{ -} - -HBQDestroyer::~HBQDestroyer() -{ -} - -void HBQDestroyer::destroyer( QObject * obj ) -{ - Q_UNUSED( obj ); - HB_TRACE( HB_TR_DEBUG, ( "............HBQDestroyer::destroyer( %p )", this->sender() ) ); - - hbqt_bindDestroyQtObject( this->sender(), obj ); -} - - -/*----------------------------------------------------------------------*/ - -#endif diff --git a/harbour/contrib/hbqt/qtcore/hbqt_destroyer.h b/harbour/contrib/hbqt/qtcore/hbqt_destroyer.h deleted file mode 100644 index 054ed45d02..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqt_destroyer.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2012 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#ifndef HBQT_DESTROYER_H -#define HBQT_DESTROYER_H - -#include "hbapiitm.h" - -#include "hbqtcore.h" - -#include - -/*----------------------------------------------------------------------*/ - -class HBQDestroyer: public QObject -{ - Q_OBJECT - -public: - HBQDestroyer(); - ~HBQDestroyer(); - -public slots: - void destroyer( QObject * obj = 0 ); -}; - -/*----------------------------------------------------------------------*/ - -#endif diff --git a/harbour/contrib/hbqt/qtcore/hbqt_hbqevents.cpp b/harbour/contrib/hbqt/qtcore/hbqt_hbqevents.cpp deleted file mode 100644 index 18d95c4165..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqt_hbqevents.cpp +++ /dev/null @@ -1,288 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2009 Marcos Antonio Gambeta - * Copyright 2009 Pritpal Bedi - * Copyright 2010 Viktor Szakats (harbour syenar.net) - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ - -#include "hbqt.h" - -#include "hbapiitm.h" -#include "hbapierr.h" -#include "hbvm.h" - -#if QT_VERSION >= 0x040500 - -#include "hbqt_hbqevents.h" -#include - -HBQEvents * hbqt_bindGetReceiverEventsByHbObject( PHB_ITEM pObject ); - -HB_FUNC_EXTERN( HB_QCLOSEEVENT ); -void _hb_force_link_HBQevents( void ) -{ - HB_FUNC_EXEC( HB_QCLOSEEVENT ); -} - -static QList s_lstEvent; -static QList s_lstCreateObj; - -/*----------------------------------------------------------------------*/ - -void hbqt_events_register_createobj( QEvent::Type eventtype, QByteArray szCreateObj ) -{ - int iIndex = s_lstEvent.indexOf( eventtype ); - - if( iIndex == -1 ) - { - s_lstEvent << eventtype; - s_lstCreateObj << szCreateObj.toUpper(); - } -} - -void hbqt_events_unregister_createobj( QEvent::Type eventtype ) -{ - int iIndex = s_lstEvent.indexOf( eventtype ); - - if( iIndex > -1 ) - { - s_lstEvent.removeAt( iIndex ); - s_lstCreateObj.removeAt( iIndex ); - } -} - -/*----------------------------------------------------------------------*/ - -HBQEvents::HBQEvents() : QObject() -{ -} - -HBQEvents::~HBQEvents() -{ -} - -void HBQEvents::hbInstallEventFilter( PHB_ITEM pObj ) -{ - if( hb_itemType( pObj ) & HB_IT_OBJECT ) - { - QObject * object = ( QObject * ) hbqt_get_ptr( pObj ); - if( object ) - { - object->installEventFilter( this ); - } - } -} - -int HBQEvents::hbConnect( PHB_ITEM pObj, int event, PHB_ITEM bBlock ) -{ - HB_TRACE( HB_TR_DEBUG, ( "HBQEvents::hbConnect( %i )", event ) ); - - int nResult = -1; - - if( hb_itemType( bBlock ) & HB_IT_BLOCK ) - { - QObject * object = ( QObject * ) hbqt_get_ptr( pObj ); - if( object ) - { - char szParams[ 20 ]; - hb_snprintf( szParams, sizeof( szParams ), "EVENT_%d", event ); - object->setProperty( szParams, QVariant( event ) ); - - hbqt_bindAddEvent( pObj, event, bBlock ); - nResult = 0; - } - } - return nResult; -} - -int HBQEvents::hbDisconnect( PHB_ITEM pObj, int event ) -{ - HB_TRACE( HB_TR_DEBUG, ( "HBQEvents::hbDisconnect( %i )", event ) ); - - int nResult = -1; - - QObject * object = ( QObject * ) hbqt_get_ptr( pObj ); - if( object ) - { - char szParams[ 20 ]; - hb_snprintf( szParams, sizeof( szParams ), "EVENT_%d", event ); - object->setProperty( szParams, QVariant() ); - - hbqt_bindDelEvent( pObj, event, NULL ); - nResult = 0; - } - return nResult; -} - -bool HBQEvents::eventFilter( QObject * object, QEvent * event ) -{ - bool stopTheEventChain = false; - - if( object ) - { - QEvent::Type eventtype = event->type(); - if( ( int ) eventtype > 0 ) - { - char szParams[ 20 ]; - hb_snprintf( szParams, sizeof( szParams ), "EVENT_%d", ( int ) eventtype ); - if( object->property( szParams ).toInt() > 0 ) - { - if( hb_vmRequestReenter() ) - { - int eventId = s_lstEvent.indexOf( eventtype ); - if( eventId > -1 ) - { - PHB_ITEM hbObject = hbqt_bindGetHbObjectByQtObject( object ); - if( hbObject ) - { - PHB_ITEM pArray = hbqt_bindGetEvents( hbObject, eventtype ); - hb_itemRelease( hbObject ); - if( pArray ) - { - if( hb_vmRequestQuery() == 0 ) - { - PHB_ITEM pItem = hbqt_bindGetHbObject( NULL, ( void * ) event, ( s_lstCreateObj.at( eventId ) ), NULL, HBQT_BIT_NONE ); - if( pItem ) - { - stopTheEventChain = ( bool ) hb_itemGetL( hb_vmEvalBlockV( hb_arrayGetItemPtr( pArray, 1 ), 1, pItem ) ); - hb_itemRelease( pItem ); - } - } - hb_itemRelease( pArray ); - } - } - } - if( eventtype == QEvent::Close ) - { - stopTheEventChain = true; - } - hb_vmRequestRestore(); - } - } - } - } - return stopTheEventChain; -} - -HB_FUNC( HBQT_CONNECTEVENT ) -{ - int ret = -1; - - if( hb_pcount() == 3 && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) && HB_ISNUM( 2 ) && HB_ISBLOCK( 3 ) ) - { - HBQEvents * receiverEvents = hbqt_bindGetReceiverEventsByHbObject( hb_param( 1, HB_IT_OBJECT ) ); - if( receiverEvents ) - { - ret = receiverEvents->hbConnect( hb_param( 1, HB_IT_OBJECT ), hb_parni( 2 ), hb_param( 3, HB_IT_BLOCK ) ); - } - } - else - { - hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - } - hb_retni( ret ); -} - -HB_FUNC( HBQT_DISCONNECTEVENT ) -{ - HB_TRACE( HB_TR_DEBUG, ( "enters HBQT_DISCONNECT" ) ); - int ret = -1; - if( hb_pcount() == 2 && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) && HB_ISNUM( 2 ) ) - { - HBQEvents * receiverEvents = hbqt_bindGetReceiverEventsByHbObject( hb_param( 1, HB_IT_OBJECT ) ); - if( receiverEvents ) - { - ret = receiverEvents->hbDisconnect( hb_param( 1, HB_IT_OBJECT ), hb_parni( 2 ) ); - } - } - else - { - hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - } - HB_TRACE( HB_TR_DEBUG, ( "exits HBQT_DISCONNECT" ) ); - hb_retni( ret ); -} - -static void hbqt_events_init( void * cargo ) -{ - HB_SYMBOL_UNUSED( cargo ); -} - -static void hbqt_events_exit( void * cargo ) -{ - int i; - int iItems = s_lstCreateObj.size(); - HB_TRACE( HB_TR_DEBUG, ( "ENTERING hbqt_events_exit, len=%d", s_lstCreateObj.size() ) ); - - for( i = 0; i < iItems; i++ ) - { - HB_TRACE( HB_TR_DEBUG, ( "hbqt_events_exit, deleting item %d", i )); - s_lstEvent.removeAt( 0 ); - s_lstCreateObj.removeAt( 0 ); - } - - HB_TRACE( HB_TR_DEBUG, ( "EXITING hbqt_events_exit, len=%d", s_lstCreateObj.size() ) ); - HB_SYMBOL_UNUSED( cargo ); -} - -HB_CALL_ON_STARTUP_BEGIN( _hbqtevents_init_ ) - hb_vmAtInit( hbqt_events_init, NULL ); - hb_vmAtExit( hbqt_events_exit, NULL ); -HB_CALL_ON_STARTUP_END( _hbqtevents_init_ ) - -#if defined( HB_PRAGMA_STARTUP ) - #pragma startup _hbqtevents_init_ -#elif defined( HB_DATASEG_STARTUP ) - #define HB_DATASEG_BODY HB_DATASEG_FUNC( _hbqtevents_init_ ) - #include "hbiniseg.h" -#endif - -#endif diff --git a/harbour/contrib/hbqt/qtcore/hbqt_hbqevents.h b/harbour/contrib/hbqt/qtcore/hbqt_hbqevents.h deleted file mode 100644 index 8e5cb8489c..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqt_hbqevents.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2009 Marcos Antonio Gambeta - * - * Copyright 2009 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#ifndef HBQT_EVENTS_H -#define HBQT_EVENTS_H - -/*----------------------------------------------------------------------*/ - -#include "hbqtcore.h" - -#include -#include -#include - -class HBQEvents: public QObject -{ - Q_OBJECT - -public: - HBQEvents(); - ~HBQEvents(); - - int hbConnect( PHB_ITEM pObj, int iEvent, PHB_ITEM bBlock ); - int hbDisconnect( PHB_ITEM pObj, int iEvent ); - void hbInstallEventFilter( PHB_ITEM pObj ); - -protected: - bool eventFilter( QObject * obj, QEvent * event ); - -}; - -/*----------------------------------------------------------------------*/ - -#endif diff --git a/harbour/contrib/hbqt/qtcore/hbqt_hbqslots.cpp b/harbour/contrib/hbqt/qtcore/hbqt_hbqslots.cpp deleted file mode 100644 index 796d5490ed..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqt_hbqslots.cpp +++ /dev/null @@ -1,480 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2009 Marcos Antonio Gambeta (marcosgambeta at gmail dot com) - * Copyright 2009 Pritpal Bedi (pritpal@vouchcac.com) - * Copyright 2010 Viktor Szakats (harbour syenar.net) - * Copyright 2010 Francesco Perillo () - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ - -#include "hbqt.h" -#include "hbapierr.h" -#include "hbapiitm.h" -#include "hbvm.h" - -#if QT_VERSION >= 0x040500 - -#include "hbqt_hbqslots.h" - -HB_EXPORT HBQSlots * hbqt_bindGetReceiverSlotsByHbObject( PHB_ITEM pObject ); - -static QList s_argCombinations; -static QList s_pCallback; - -void hbqt_slots_register_callback( QByteArray sig, PHBQT_SLOT_FUNC pCallback ) -{ - HB_TRACE( HB_TR_DEBUG, ( "callback %s", ( char * ) sig.data() ) ); - - if( ! sig.isEmpty() && pCallback ) - { - int iIndex = s_argCombinations.indexOf( sig ); - - if( iIndex == -1 ) - { - s_argCombinations << sig; - s_pCallback << pCallback; - } - else - s_pCallback[ iIndex ] = pCallback; - } -} - -void hbqt_slots_unregister_callback( QByteArray sig ) -{ - if( ! sig.isEmpty() ) - { - int iIndex = s_argCombinations.indexOf( sig ); - - if( iIndex > -1 ) - { - s_argCombinations.removeAt( iIndex ); - s_pCallback.removeAt( iIndex ); - } - } -} - -/*----------------------------------------------------------------------*/ - -HBQSlots::HBQSlots() : QObject() -{ -} - -HBQSlots::~HBQSlots() -{ - HB_TRACE( HB_TR_DEBUG, ( "HBQSlots::~HBQSlots()" ) ); -} - -int HBQSlots::hbConnect( PHB_ITEM pObj, char * pszSignal, PHB_ITEM bBlock ) -{ - HB_TRACE( HB_TR_DEBUG, ( "HBQSlots::hbConnect( %s )", pszSignal ) ); - - int nResult = 1; - - if( true ) - { - QObject * object = ( QObject * ) hbqt_get_ptr( pObj ); - if( object ) - { - if( hb_itemType( bBlock ) & HB_IT_BLOCK ) - { - int i = object->property( pszSignal ).toInt(); - if( i == 0 ) - { - QString signal = pszSignal; - QByteArray theSignal = QMetaObject::normalizedSignature( signal.toAscii() ); - - if( QMetaObject::checkConnectArgs( theSignal, theSignal ) ) - { - int signalId = object->metaObject()->indexOfSignal( theSignal ); - if( signalId != -1 ) - { - int slotId = object->metaObject()->indexOfMethod( theSignal ); - if( slotId != -1 ) - { - if( QMetaObject::connect( object, signalId, this, slotId + QObject::staticMetaObject.methodCount(), Qt::AutoConnection ) ) - { - nResult = 0; - - HB_TRACE( HB_TR_DEBUG, ( "HBQSlots::hbConnect( %p, %s, %i )", object, pszSignal, signalId ) ); - hbqt_bindAddSlot( pObj, signalId, bBlock ); - } - else - nResult = 8; - } - else - nResult = 7; - } - else - nResult = 6; - } - else - nResult = 5; - } - } - else - { - nResult = 3; - } - } - else - nResult = 2; - } - HB_TRACE( HB_TR_DEBUG, ( "HBQT_SLOTS_CONNECT returns: %d", nResult ) ); - return nResult; -} - -int HBQSlots::hbDisconnect( PHB_ITEM pObj, char * pszSignal ) -{ - HB_TRACE( HB_TR_DEBUG, ( "HBQSlots::hbDisconnect( %s )", pszSignal ) ); - - int nResult = 1; - - QObject * object = ( QObject * ) hbqt_get_ptr( pObj ); - if( object ) - { - QString signal = pszSignal; - QByteArray theSignal = signal.toAscii(); - - int signalId = object->metaObject()->indexOfSignal( QMetaObject::normalizedSignature( theSignal ) ); - if( signalId != -1 ) - { - if( QMetaObject::disconnect( object, signalId, 0, 0 ) ) - { - HB_TRACE( HB_TR_DEBUG, ( "HBQSlots::hbDisconnect( %s ) %i", pszSignal, signalId ) ); - nResult = 0; - } - else - nResult = 5; - } - else - nResult = 4; - - if( nResult == 0 ) - { - HB_TRACE( HB_TR_DEBUG, ( "HBQSlots::hbDisConnect( %s ) signalId=%i, %p", pszSignal, signalId, object ) ); - hbqt_bindDelSlot( pObj, signalId, NULL ); - } - } - else - nResult = 2; - - return nResult; -} - - -int HBQSlots::qt_metacall( QMetaObject::Call c, int id, void ** arguments ) -{ - id = QObject::qt_metacall( c, id, arguments ); - if( id < 0 || c != QMetaObject::InvokeMetaMethod ) - return id; - - QObject * object = sender(); - if( object ) - { - QByteArray paramString; - const QMetaMethod meta = object->metaObject()->method( id ); - QList arrayOfTypes = meta.parameterTypes(); - int parameterCount = arrayOfTypes.size(); - QStringList pList; - - if( parameterCount > 0 ) - { - char szParams[ 20 ]; - hb_snprintf( szParams, sizeof( szParams ), "PARAM_%d", id ); - paramString = object->property( szParams ).toByteArray(); - - char szPList[ 20 ]; - hb_snprintf( szPList, sizeof( szPList ), "PLIST_%d", id ); - pList = object->property( szPList ).toStringList(); - - if( paramString.isNull() ) - { - QStringList parList; - HB_TRACE( HB_TR_DEBUG, ( "SlotsProxy signature %s", meta.signature() ) ); - - for( int i = 0; i < parameterCount; i++ ) - { - QByteArray s = arrayOfTypes.at( i ).trimmed(); - if( s.contains( "::" ) ) - { - parList += "int"; - pList += "int"; - } - else if( s.endsWith( "*" ) ) - { - parList += s; - s.chop( 1 ); - pList += "HB_" + s.toUpper(); - } - else - { - parList += s; - pList += "HB_" + s.toUpper(); - } - } - paramString = parList.join( "$" ).toAscii(); - object->setProperty( szParams, paramString ); - - object->setProperty( szPList, pList ); - - HB_TRACE( HB_TR_DEBUG, ( " %p SlotsProxy pList %s ", object, ( char * ) pList.join( "$" ).toAscii().data() ) ); - } - } - - if( hb_vmRequestReenter() ) - { - PHB_ITEM hbObject = hbqt_bindGetHbObjectByQtObject( object ); - if( hbObject ) - { - PHB_ITEM p = hbqt_bindGetSlots( hbObject, id ); - hb_itemRelease( hbObject ); - if( p ) - { - PHB_ITEM codeBlock = hb_arrayGetItemPtr( p, 1 ); - if( HB_IS_BLOCK( codeBlock ) ) - { - if( parameterCount == 0 ) - { - HB_TRACE( HB_TR_DEBUG, ( "Firing Signal( %p )", object ) ); - hb_evalBlock0( codeBlock ); - HB_TRACE( HB_TR_DEBUG, ( "Fired ( %p )", object ) ); - } - else - { - int paramId = s_argCombinations.indexOf( paramString ); - PHBQT_SLOT_FUNC pCallback = s_pCallback.at( paramId ); - if( pCallback ) - { - HB_TRACE( HB_TR_DEBUG, ( "Firing Signal( %p, %s )", object, paramString.data() ) ); - pCallback( ( PHB_ITEM * ) codeBlock, arguments, pList ); - HB_TRACE( HB_TR_DEBUG, ( "Fired ( %p )", object ) ); - } - } - } - hb_itemRelease( p ); - } - } - hb_vmRequestRestore(); - } - } - return -1; -} - -/*----------------------------------------------------------------------*/ - -int hbqt_QtConnect( QObject *sender, const char * pszSignal, QObject *receiver, const char * pszSlot ) -{ - HB_TRACE( HB_TR_DEBUG, ( "_Connect %s with slot %s", pszSignal, pszSlot ) ); - - int nResult = 1; - - if( sender && receiver ) - { - QString signal = pszSignal; - QByteArray theSignal = QMetaObject::normalizedSignature( signal.toAscii() ); - QString slot = pszSlot; - QByteArray theSlot = QMetaObject::normalizedSignature( slot.toAscii() ); - - if( QMetaObject::checkConnectArgs( theSignal, theSlot ) ) - { - int signalId = sender->metaObject()->indexOfSignal( theSignal ); - if( signalId != -1 ) - { - int slotId = receiver->metaObject()->indexOfMethod( theSlot ); - if( slotId != -1 ) - { - if( QMetaObject::connect( sender, signalId, receiver, slotId, Qt::AutoConnection ) ) - { - nResult = 0; - HB_TRACE( HB_TR_DEBUG, ( "SIGNAL2SLOT ok" ) ); - } - else - nResult = 8; - } - else - nResult = 7; - } - else - nResult = 6; - } - else - nResult = 5; - } - else - nResult = 9; // Qt objects not active - - HB_TRACE( HB_TR_DEBUG, ( "_Connect returns: %d", nResult ) ); - return nResult; -} - -int hbqt_QtDisconnect( QObject * sender, const char * pszSignal, QObject * receiver, const char * pszSlot ) -{ - HB_TRACE( HB_TR_DEBUG, ( "hbqt_QtDisconnect %s with slot %s", pszSignal, pszSlot ) ); - - int nResult = 1; - - if( sender && receiver ) - { - QString signal = pszSignal; - QByteArray theSignal = QMetaObject::normalizedSignature( signal.toAscii() ); - QString slot = pszSlot; - QByteArray theSlot = QMetaObject::normalizedSignature( slot.toAscii() ); - - if( QMetaObject::checkConnectArgs( theSignal, theSlot ) ) - { - int signalId = sender->metaObject()->indexOfSignal( theSignal ); - if( signalId != -1 ) - { - int slotId = receiver->metaObject()->indexOfMethod( theSlot ); - if( slotId != -1 ) - { - if( QMetaObject::disconnect( sender, signalId, receiver, slotId ) ) - { - nResult = 0; - HB_TRACE( HB_TR_DEBUG, ( "hbqt_QtDisconnect_OK( %p, %s, %s )", sender, pszSignal, pszSlot ) ); - } - else - nResult = 8; - } - else - nResult = 7; - } - else - nResult = 6; - } - else - nResult = 5; - } - else - nResult = 9; // Qt objects not active - - return nResult; -} - -/* HBQT_CONNECT handles now two types of connection, one Qt based, one HB based: - Qt: HBQT_CONNECT( object, signal, object, string ) - HB: HBQT_CONNECT( object, signal, codeblock ) -*/ -HB_FUNC( HBQT_CONNECT ) -{ - int ret = -1; - - if( hb_pcount() == 4 && HB_ISCHAR( 2 ) && HB_ISCHAR( 4 ) && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) && hbqt_par_isDerivedFrom( 3, "QOBJECT" ) ) - { - void * pText01 = NULL; - void * pText02 = NULL; - ret = hbqt_QtConnect( ( QObject* ) hbqt_par_ptr( 1 ), hb_parstr_utf8( 2, &pText01, NULL ), ( QObject* ) hbqt_par_ptr( 3 ), hb_parstr_utf8( 4, &pText02, NULL ) ); - hb_strfree( pText01 ); - hb_strfree( pText02 ); - } - else if( hb_pcount() == 3 && HB_ISCHAR( 2 ) && HB_ISBLOCK( 3 ) && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) ) - { - HBQSlots * receiverSlots = hbqt_bindGetReceiverSlotsByHbObject( hb_param( 1, HB_IT_OBJECT ) ); - if( receiverSlots ) - { - void * pText01 = NULL; - ret = receiverSlots->hbConnect( hb_param( 1, HB_IT_OBJECT ), ( char * ) hb_parstr_utf8( 2, &pText01, NULL ), hb_param( 3, HB_IT_BLOCK ) ); - hb_strfree( pText01 ); - } - } - else - hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - - hb_retni( ret ); -} - -HB_FUNC( HBQT_DISCONNECT ) -{ - int ret = -1; - - HB_TRACE( HB_TR_DEBUG, ( "enters HBQT_DISCONNECT" ) ); - if( hb_pcount() == 2 && HB_ISCHAR( 2 ) && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) ) - { - HBQSlots * receiverSlots = hbqt_bindGetReceiverSlotsByHbObject( hb_param( 1, HB_IT_OBJECT ) ); - if( receiverSlots ) - { - void * pText01 = NULL; - ret = receiverSlots->hbDisconnect( hb_param( 1, HB_IT_OBJECT ), ( char * ) hb_parstr_utf8( 2, &pText01, NULL ) ); - hb_strfree( pText01 ); - } - } - else - hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - - HB_TRACE( HB_TR_DEBUG, ( "exits HBQT_DISCONNECT" ) ); - hb_retni( ret ); -} - -static void hbqt_lib_init( void * cargo ) -{ - HB_SYMBOL_UNUSED( cargo ); - HB_TRACE( HB_TR_DEBUG, ( "Slots: hbqt_lib_init" ) ); -} - -static void hbqt_lib_exit( void* cargo ) -{ - HB_SYMBOL_UNUSED( cargo ); - HB_TRACE( HB_TR_DEBUG, ( "Exiting slots lib" ) ); -} - -HB_CALL_ON_STARTUP_BEGIN( _hbqtslots_init_ ) - hb_vmAtInit( hbqt_lib_init, NULL ); - hb_vmAtExit( hbqt_lib_exit, NULL ); -HB_CALL_ON_STARTUP_END( _hbqtslots_init_ ) - -#if defined( HB_PRAGMA_STARTUP ) - #pragma startup _hbqtslots_init_ -#elif defined( HB_DATASEG_STARTUP ) - #define HB_DATASEG_BODY HB_DATASEG_FUNC( _hbqtslots_init_ ) - #include "hbiniseg.h" -#endif - -#endif - diff --git a/harbour/contrib/hbqt/qtcore/hbqt_hbqslots.h b/harbour/contrib/hbqt/qtcore/hbqt_hbqslots.h deleted file mode 100644 index 4ac61d29b7..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqt_hbqslots.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2009 Marcos Antonio Gambeta - * - * Copyright 2009 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#ifndef HBQT_SLOTS_H -#define HBQT_SLOTS_H - -#include "hbapiitm.h" - -#include "hbqtcore.h" - -#include -#include -#include -#include - -/*----------------------------------------------------------------------*/ - -class HBQSlots: public QObject -{ - -public: - - HBQSlots( ); - ~HBQSlots(); - - int hbConnect( PHB_ITEM obj, char * pszSignal, PHB_ITEM block ); - int hbDisconnect( PHB_ITEM obj, char * pszSignal ); - int hbDisconnectAll( PHB_ITEM obj ); - - int qt_metacall( QMetaObject::Call call, int id, void **arguments ); -}; - -/*----------------------------------------------------------------------*/ - -#endif diff --git a/harbour/contrib/hbqt/qtcore/hbqt_hbqstring.cpp b/harbour/contrib/hbqt/qtcore/hbqt_hbqstring.cpp deleted file mode 100644 index f8fa2d08d8..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqt_hbqstring.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2010 Pritpal Bedi - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ - -#include "hbqt.h" -#include "hbapiitm.h" -#include "hbvm.h" - -#if QT_VERSION >= 0x040500 - -#include "hbqt_hbqstring.h" - -HBQString::HBQString() -{ -} - -HBQString::HBQString( const QChar * unicode, int size ) : QString( unicode, size ) -{ -} - -HBQString::HBQString( QChar ch ) : QString( ch ) -{ -} - -HBQString::HBQString( int size, QChar ch ) : QString( size, ch ) -{ -} - -HBQString::HBQString( const QLatin1String & str ) : QString( str ) -{ -} - -HBQString::HBQString( const QString & other ) : QString( other ) -{ -} - -HBQString::HBQString( const char * str ) : QString( str ) -{ -} - -HBQString::HBQString( const QByteArray & ba ) : QString( ba ) -{ -} - -HBQString::~HBQString() -{ -} - -#endif diff --git a/harbour/contrib/hbqt/qtcore/hbqt_hbqstring.h b/harbour/contrib/hbqt/qtcore/hbqt_hbqstring.h deleted file mode 100644 index 8d7ca4d842..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqt_hbqstring.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#ifndef HBQT_HBQSTRING_H -#define HBQT_HBQSTRING_H - -/*----------------------------------------------------------------------*/ - -#include "hbqtcore.h" - -#include -#include -#include - -class HBQString: public QString -{ - -public: - HBQString(); - HBQString( const QChar * unicode, int size ); - HBQString( QChar ch ); - HBQString( int size, QChar ch ); - HBQString( const QLatin1String & str ); - HBQString( const QString & other ); - HBQString( const char * str ); - HBQString( const QByteArray & ba ); - ~HBQString(); -}; - -/*----------------------------------------------------------------------*/ - -#endif diff --git a/harbour/contrib/hbqt/qtcore/hbqt_init.cpp b/harbour/contrib/hbqt/qtcore/hbqt_init.cpp deleted file mode 100644 index f308aa68ed..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqt_init.cpp +++ /dev/null @@ -1,514 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2009 Marcos Antonio Gambeta (marcosgambeta at gmail dot com) - * Copyright 2009 Pritpal Bedi (pritpal@vouchcac.com) - * Copyright 2010 Viktor Szakats (harbour syenar.net) - * Copyright 2010 Francesco Perillo () - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ - -#include "hbqt.h" -#include "hbqtinit.h" - -#include "hbapiitm.h" -#include "hbvm.h" -#include "hbinit.h" -#include "hbstack.h" - -#if QT_VERSION >= 0x040500 - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -HB_EXTERN_BEGIN - -extern void hbqt_del_QObject( void * pObj, int iFlags ); -extern void hbqt_del_QTime( void * pObj, int iFlags ); -extern void hbqt_del_QSize( void * pObj, int iFlags ); -extern void hbqt_del_QSizeF( void * pObj, int iFlags ); -extern void hbqt_del_QPoint( void * pObj, int iFlags ); -extern void hbqt_del_QRect( void * pObj, int iFlags ); -extern void hbqt_del_QRectF( void * pObj, int iFlags ); -extern void hbqt_del_QUrl( void * pObj, int iFlags ); -extern void hbqt_del_QDate( void * pObj, int iFlags ); -extern void hbqt_del_QDateTime( void * pObj, int iFlags ); -extern void hbqt_del_QTime( void * pObj, int iFlags ); -extern void hbqt_del_QModelIndex( void * pObj, int iFlags ); -extern void hbqt_del_QStringList( void * pObj, int iFlags ); -extern void hbqt_del_QList( void * pObj, int iFlags ); - -extern void hbqt_del_QEvent( void * pObj, int iFlags ); - -HB_EXTERN_END - -/*----------------------------------------------------------------------*/ - -static void hbqt_SlotsExecPointer( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , ( const char * ) pList.at( 0 ).data(), NULL, HBQT_BIT_QOBJECT ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecPointerPointer( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , ( const char * ) pList.at( 0 ).data(), NULL, HBQT_BIT_QOBJECT ); - if( p0 ) - { - PHB_ITEM p1 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 2 ] ) , ( const char * ) pList.at( 0 ).data(), NULL, HBQT_BIT_QOBJECT ); - if( p1 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmPush( p1 ); - hb_vmSend( 2 ); - hb_itemRelease( p1 ); - } - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecPointerInt( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , ( const char * ) pList.at( 0 ).data(), NULL, HBQT_BIT_QOBJECT ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 2 ] ) ); - hb_vmSend( 2 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecBool( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPushLogical( *reinterpret_cast< bool( * ) >( arguments[ 1 ] ) ); - hb_vmSend( 1 ); -} - -static void hbqt_SlotsExecDouble( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPushDouble( *reinterpret_cast< double( * ) >( arguments[ 1 ] ), 4 ); - hb_vmSend( 1 ); -} - -static void hbqt_SlotsExecInt( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 1 ] ) ); - hb_vmSend( 1 ); -} - -static void hbqt_SlotsExecIntInt( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 1 ] ) ); - hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 2 ] ) ); - hb_vmSend( 2 ); -} - -static void hbqt_SlotsExecIntIntInt( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 1 ] ) ); - hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 2 ] ) ); - hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 3 ] ) ); - hb_vmSend( 3 ); -} - -static void hbqt_SlotsExecIntIntIntInt( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 1 ] ) ); - hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 2 ] ) ); - hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 3 ] ) ); - hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 4 ] ) ); - hb_vmSend( 4 ); -} - -static void hbqt_SlotsExecString( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - QString text = *reinterpret_cast< QString( * ) >( arguments[ 1 ] ); - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPushString( text.toAscii().data(), text.toAscii().length() ); - hb_vmSend( 1 ); -} - -static void hbqt_SlotsExecModel( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QModelIndex( ( *reinterpret_cast< QModelIndex( * ) >( arguments[ 1 ] ) ) ), "HB_QMODELINDEX", hbqt_del_QModelIndex, HBQT_BIT_OWNER ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecModelModel( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QModelIndex( ( *reinterpret_cast< QModelIndex( * ) >( arguments[ 1 ] ) ) ), "HB_QMODELINDEX", hbqt_del_QModelIndex, HBQT_BIT_OWNER ); - if( p0 ) - { - PHB_ITEM p1 = hbqt_bindGetHbObject( NULL, new QModelIndex( ( *reinterpret_cast< QModelIndex( * ) >( arguments[ 1 ] ) ) ), "HB_QMODELINDEX", hbqt_del_QModelIndex, HBQT_BIT_OWNER ); - if( p1 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmPush( p1 ); - hb_vmSend( 2 ); - hb_itemRelease( p1 ); - } - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecStringList( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QStringList( ( *reinterpret_cast< QStringList( * ) >( arguments[ 1 ] ) ) ), "HB_QSTRINGLIST", hbqt_del_QStringList, HBQT_BIT_OWNER ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecQPoint( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QPoint( ( *reinterpret_cast< QPoint( * ) >( arguments[ 1 ] ) ) ), "HB_QPOINT", hbqt_del_QPoint, HBQT_BIT_OWNER ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecQUrl( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QUrl( ( *reinterpret_cast< QUrl( * ) >( arguments[ 1 ] ) ) ), "HB_QURL", hbqt_del_QUrl, HBQT_BIT_OWNER ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecQDate( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QDate( ( *reinterpret_cast< QDate( * ) >( arguments[ 1 ] ) ) ), "HB_QDATE", hbqt_del_QDate, HBQT_BIT_OWNER ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecQDateTime( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QDateTime( ( *reinterpret_cast< QDateTime( * ) >( arguments[ 1 ] ) ) ), "HB_QDATETIME", hbqt_del_QDateTime, HBQT_BIT_OWNER ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecQTime( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QTime( ( *reinterpret_cast< QTime( * ) >( arguments[ 1 ] ) ) ), "HB_QTIME", hbqt_del_QTime, HBQT_BIT_OWNER ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecQRectF( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QRectF( ( *reinterpret_cast< QRectF( * ) >( arguments[ 1 ] ) ) ), "HB_QRECTF", hbqt_del_QRectF, HBQT_BIT_OWNER ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecQRectInt( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QRect( ( *reinterpret_cast< QRect( * ) >( arguments[ 1 ] ) ) ), "HB_QRECT", hbqt_del_QRect, HBQT_BIT_OWNER ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 2 ] ) ); - hb_vmSend( 2 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecQRect( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QRect( ( *reinterpret_cast< QRect( * ) >( arguments[ 1 ] ) ) ), "HB_QRECT", hbqt_del_QRect, HBQT_BIT_OWNER ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecQSizeF( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QSizeF( ( *reinterpret_cast< QSizeF( * ) >( arguments[ 1 ] ) ) ), "HB_QSIZEF", hbqt_del_QSizeF, HBQT_BIT_OWNER ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecModelIndexIntInt( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QModelIndex( ( *reinterpret_cast< QModelIndex( * ) >( arguments[ 1 ] ) ) ), "HB_QMODELINDEX", hbqt_del_QModelIndex, HBQT_BIT_OWNER ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 2 ] ) ); - hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 3 ] ) ); - hb_vmSend( 3 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecModelIndexList( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QList< QModelIndex *>( ( *reinterpret_cast< QList< QModelIndex *> *>( arguments[ 1 ] ) ) ), "HB_QMODELINDEXLIST", hbqt_del_QList, HBQT_BIT_OWNER ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecQObject( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 1 ] ) , "HB_QOBJECT", NULL, HBQT_BIT_QOBJECT ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } -} - -/*----------------------------------------------------------------------*/ - -HB_FUNC_EXTERN( HB_QEVENT ); - -void _hbqtcore_force_link_for_event( void ) -{ - HB_FUNC_EXEC( HB_QEVENT ); -} - -static void hbqt_registerCallbacks( void ) -{ - hbqt_slots_register_callback( "qint64" , hbqt_SlotsExecInt ); - hbqt_slots_register_callback( "qint64$qint64" , hbqt_SlotsExecIntInt ); - hbqt_slots_register_callback( "int" , hbqt_SlotsExecInt ); - hbqt_slots_register_callback( "int$int" , hbqt_SlotsExecIntInt ); - hbqt_slots_register_callback( "int$int$int" , hbqt_SlotsExecIntIntInt ); - hbqt_slots_register_callback( "int$int$int$int" , hbqt_SlotsExecIntIntIntInt ); - hbqt_slots_register_callback( "bool" , hbqt_SlotsExecBool ); - hbqt_slots_register_callback( "double" , hbqt_SlotsExecDouble ); - hbqt_slots_register_callback( "pointer" , hbqt_SlotsExecPointer ); - hbqt_slots_register_callback( "pointer$pointer" , hbqt_SlotsExecPointerPointer ); - hbqt_slots_register_callback( "pointer$int" , hbqt_SlotsExecPointerInt ); - hbqt_slots_register_callback( "QDate" , hbqt_SlotsExecQDate ); - hbqt_slots_register_callback( "QDateTime" , hbqt_SlotsExecQDateTime ); - hbqt_slots_register_callback( "QModelIndex" , hbqt_SlotsExecModel ); - hbqt_slots_register_callback( "QModelIndex$int$int" , hbqt_SlotsExecModelIndexIntInt ); - hbqt_slots_register_callback( "QModelIndexList" , hbqt_SlotsExecModelIndexList ); - hbqt_slots_register_callback( "QModelIndex$QModelIndex" , hbqt_SlotsExecModelModel ); - hbqt_slots_register_callback( "QPoint" , hbqt_SlotsExecQPoint ); - hbqt_slots_register_callback( "QRect$int" , hbqt_SlotsExecQRectInt ); - hbqt_slots_register_callback( "QRect" , hbqt_SlotsExecQRect ); - hbqt_slots_register_callback( "QRectF" , hbqt_SlotsExecQRectF ); - hbqt_slots_register_callback( "QSizeF" , hbqt_SlotsExecQSizeF ); - hbqt_slots_register_callback( "QString" , hbqt_SlotsExecString ); - hbqt_slots_register_callback( "QStringList" , hbqt_SlotsExecStringList ); - hbqt_slots_register_callback( "QTime" , hbqt_SlotsExecQTime ); - hbqt_slots_register_callback( "QUrl" , hbqt_SlotsExecQUrl ); - hbqt_slots_register_callback( "QObject*" , hbqt_SlotsExecQObject ); - - hbqt_events_register_createobj( QEvent::Timer , "hb_QEvent" ); -} - -/*----------------------------------------------------------------------*/ - -static QList s_PHB_ITEM_tobedeleted; - -HB_FUNC( __HBQTCORE ) {;} - -static void hbqt_lib_init( void * cargo ) -{ - HB_SYMBOL_UNUSED( cargo ); - hbqt_registerCallbacks(); -} - -static void hbqt_lib_exit( void * cargo ) -{ - HB_SYMBOL_UNUSED( cargo ); -} - -HB_CALL_ON_STARTUP_BEGIN( _hbqtcore_init_ ) - hb_vmAtInit( hbqt_lib_init, NULL ); - hb_vmAtExit( hbqt_lib_exit, NULL ); -HB_CALL_ON_STARTUP_END( _hbqtcore_init_ ) - -#if defined( HB_PRAGMA_STARTUP ) - #pragma startup _hbqtcore_init_ -#elif defined( HB_DATASEG_STARTUP ) - #define HB_DATASEG_BODY HB_DATASEG_FUNC( _hbqtcore_init_ ) - #include "hbiniseg.h" -#endif - -#endif diff --git a/harbour/contrib/hbqt/qtcore/hbqt_misc.prg b/harbour/contrib/hbqt/qtcore/hbqt_misc.prg deleted file mode 100644 index 2ce41cc0de..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqt_misc.prg +++ /dev/null @@ -1,233 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009-2011 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ - -#include "hbclass.ch" -#include "error.ch" -#include "hbtrace.ch" - -/*----------------------------------------------------------------------*/ - -CREATE CLASS HbQtObjectHandler - - VAR __hEvents PROTECTED INIT { => } - - VAR __Slots /* TOFIX: add PROTECTED or clean this mess ANS: It is like this by design, cannot be made PROTECTED */ - VAR __Events /* TOFIX: add PROTECTED or clean this mess */ - - METHOD connect( cnEvent, bBlock ) - METHOD disconnect( cnEvent ) - METHOD setSlots() - METHOD setEvents() - - DESTRUCTOR FUNCTION __hbqt_destroy() - ERROR HANDLER onError() - - ENDCLASS - -/*----------------------------------------------------------------------*/ - -METHOD HbQtObjectHandler:setSlots() - - IF empty( ::__Slots ) - ::__Slots := { => } - hb_hDefault( ::__Slots, {} ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbQtObjectHandler:setEvents() - - IF empty( ::__Events ) - ::__Events := { => } - hb_hDefault( ::__Events, {} ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbQtObjectHandler:onError() - LOCAL cMsg := __GetMessage() - LOCAL oError - - IF SubStr( cMsg, 1, 1 ) == "_" - cMsg := SubStr( cMsg, 2 ) - ENDIF - cMsg := "Message not found :" + cMsg - - oError := ErrorNew() - - oError:severity := ES_ERROR - oError:genCode := EG_NOMETHOD - oError:subSystem := "HBQT" - oError:subCode := 1000 - oError:canRetry := .F. - oError:canDefault := .F. - oError:Args := hb_AParams() - oError:operation := ProcName() - oError:Description := cMsg - - Eval( ErrorBlock(), oError ) - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD HbQtObjectHandler:connect( cnEvent, bBlock ) - LOCAL nResult - - IF ! __objDerivedFrom( Self, "QOBJECT" ) - RETURN .f. - ENDIF - - IF ! HB_ISBLOCK( bBlock ) - RETURN .f. - ENDIF - - IF hb_hHasKey( ::__hEvents, cnEvent ) - IF HB_ISNUMERIC( ::__hEvents[ cnEvent ] ) - hbqt_disconnectEvent( Self, cnEvent ) - ELSE - hbqt_disconnect( Self, cnEvent ) - ENDIF - hb_hDel( ::__hEvents, cnEvent ) - ENDIF - - SWITCH ValType( cnEvent ) - CASE "C" - nResult := hbqt_connect( Self, cnEvent, bBlock ) - - SWITCH nResult - CASE 0 - ::__hEvents[ cnEvent ] := cnEvent - RETURN .T. - CASE 8 /* QT connect call failure */ - RETURN .F. - ENDSWITCH - EXIT - - CASE "N" - nResult := hbqt_connectEvent( Self, cnEvent, bBlock ) - - SWITCH nResult - CASE 0 - ::__hEvents[ cnEvent ] := cnEvent - RETURN .T. - CASE -3 /* bBlock not supplied */ - RETURN .F. - ENDSWITCH - EXIT - - OTHERWISE - nResult := 99 - - ENDSWITCH - - __hbqt_error( 1200 + nResult ) - RETURN .F. - -/*----------------------------------------------------------------------*/ - -METHOD HbQtObjectHandler:disconnect( cnEvent ) - LOCAL nResult := 0 - - IF ! __objDerivedFrom( Self, "QOBJECT" ) - RETURN .f. - ENDIF - - IF ! hb_hHasKey( ::__hEvents, cnEvent ) - RETURN .f. - ENDIF - - SWITCH ValType( cnEvent ) - CASE "C" - nResult := hbqt_disconnect( Self, cnEvent ) - - SWITCH nResult - CASE 0 - CASE 4 /* signal not found in object */ - CASE 5 /* disconnect failure */ - hb_hDel( ::__hEvents, cnEvent ) - RETURN .T. - CASE 1 /* wrong slot container, no connect was called yet */ - CASE 2 /* object has been already freed */ - CASE 3 /* event not found */ - RETURN .F. - ENDSWITCH - EXIT - - CASE "N" - nResult := hbqt_disconnectEvent( Self, cnEvent ) - - SWITCH nResult - CASE 0 - hb_hDel( ::__hEvents, cnEvent ) - RETURN .T. - CASE -3 /* event not found */ - CASE -2 /* event not found */ - CASE -1 /* event not found */ - RETURN .F. - ENDSWITCH - EXIT - - OTHERWISE - nResult := 99 - - ENDSWITCH - - __hbqt_error( 1300 + nResult ) - RETURN .F. - -/*----------------------------------------------------------------------*/ - diff --git a/harbour/contrib/hbqt/qtcore/hbqt_pointer.cpp b/harbour/contrib/hbqt/qtcore/hbqt_pointer.cpp deleted file mode 100644 index d62029d112..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqt_pointer.cpp +++ /dev/null @@ -1,247 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2009 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ - -#include "hbvmint.h" - -#include "hbqt.h" - -#include "hbapi.h" -#include "hbapiitm.h" -#include "hbapicls.h" -#include "hbinit.h" -#include "hbapierr.h" -#include "hbvm.h" -#include "hbapicls.h" -#include "hbstack.h" -#include "hbvm.h" - -#if QT_VERSION >= 0x040500 - -/*----------------------------------------------------------------------*/ - -void * hbqt_par_ptr( int iParam ) -{ - HB_TRACE( HB_TR_DEBUG, ( "hbqt_par_ptr( %d )", iParam ) ); - - return hbqt_bindGetQtObject( hb_param( iParam, HB_IT_OBJECT ) ); -} - -void * hbqt_get_ptr( PHB_ITEM pObj ) -{ - return hbqt_bindGetQtObject( pObj ); -} - -void hbqt_errRT_ARG( void ) -{ - hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); -} - -void hbqt_par_detach_ptrGC( int iParam ) -{ - HB_TRACE( HB_TR_DEBUG, ( "hbqt_par_detach_ptrGC( %d )", iParam ) ); - if( HB_ISOBJECT( iParam ) ) - { - hbqt_bindSetOwner( hbqt_bindGetQtObject( hb_param( iParam, HB_IT_OBJECT ) ), HB_FALSE ); - } -} - -/* TODO: Delete this. */ -HB_FUNC( HBQT_ISEQUAL ) -{ - hb_retl( hbqt_par_ptr( 1 ) == hbqt_par_ptr( 2 ) ); -} - -HB_FUNC( __HBQT_ERROR ) -{ - HB_TRACE( HB_TR_DEBUG, ( "In __HBQT_ERROR" )); - hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); -} - -HB_FUNC( __HBQT_SETUTF8 ) -{ - PHB_CODEPAGE cdp = hb_cdpFindExt( "UTF8" ); - if( cdp ) - { - hb_vmSetCDP( cdp ); - } -} - -PHB_ITEM hbqt_defineClassBegin( const char * pszClsName, PHB_ITEM s_oClass, const char * pszParentClsStr ) -{ - static PHB_DYNS s__CLSLOCKDEF = NULL; - - PHB_ITEM oClass = NULL; - - if( s__CLSLOCKDEF == NULL ) - s__CLSLOCKDEF = hb_dynsymGetCase( "__CLSLOCKDEF" ); - - hb_vmPushDynSym( s__CLSLOCKDEF ); - hb_vmPushNil(); - hb_vmPushItemRef( s_oClass ); - hb_vmDo( 1 ); - - if( hb_itemGetL( hb_stackReturnItem() ) && pszParentClsStr ) - { - static PHB_DYNS s___HBCLASS = NULL; - - char * pszSingleClsNameBuf = ( char * ) hb_xgrab( strlen( pszParentClsStr ) + 1 ); - - if( s___HBCLASS == NULL ) - s___HBCLASS = hb_dynsymGetCase( "HBCLASS" ); - - PHB_ITEM pClsName = hb_itemNew( NULL ); - PHB_ITEM pSuper = hb_itemNew( NULL ); - PHB_ITEM pSym_ClsFunc = hb_itemNew( NULL ); - - hb_itemPutC( pClsName, pszClsName ); - - HB_SIZE nPos = 0; - HB_SIZE nStart = 0; - - /* array with parent classes (at least ONE) */ - hb_arrayNew( pSuper, 0 ); - - HB_TRACE( HB_TR_DEBUG, ("%s: dCB 3", pszClsName ) ); - - while( pszParentClsStr[ nPos++ ] ) - { - if( ! pszParentClsStr[ nPos ] || ( pszParentClsStr[ nPos ] == ',' && pszParentClsStr[ nPos + 1 ] == ' ' ) ) - { - PHB_ITEM pItem = hb_itemNew( NULL ); - - memcpy( pszSingleClsNameBuf, pszParentClsStr + nStart, nPos - nStart ); - pszSingleClsNameBuf[ nPos - nStart ] = '\0'; - - hb_itemPutC( pItem, pszSingleClsNameBuf ); - hb_arrayAdd( pSuper, hb_itemPutSymbol( pItem, hb_dynsymGetCase( pszSingleClsNameBuf )->pSymbol ) ); - - hb_itemRelease( pItem ); - - nStart = nPos + 2; - } - } - - hb_xfree( pszSingleClsNameBuf ); - - hb_itemPutSymbol( pSym_ClsFunc, hb_dynsymGetCase( pszClsName )->pSymbol ); - - hb_vmPushDynSym( s___HBCLASS ); - hb_vmPushNil(); - hb_vmDo( 0 ); - - /* TODO: change this hack */ - char test[ HB_SYMBOL_NAME_LEN + 1 ]; - hb_snprintf( test, sizeof( test ), "HB_%s", pszClsName ); - - hb_itemPutSymbol( pSym_ClsFunc, hb_dynsymGetCase( test )->pSymbol ); - - hb_objSendMsg( hb_stackReturnItem(), "NEW", 3, pClsName, pSuper, pSym_ClsFunc ); - - oClass = hb_itemNew( hb_stackReturnItem() ); - - hb_itemRelease( pSym_ClsFunc ); - hb_itemRelease( pSuper ); - hb_itemRelease( pClsName ); - - hb_objSendMsg( oClass, "CREATE", 0 ); - hb_objSendMsg( oClass, "INSTANCE", 0 ); - } - - return oClass; -} - -void hbqt_defineClassEnd( PHB_ITEM s_oClass, PHB_ITEM oClass ) -{ - if( s_oClass && oClass ) - { - static PHB_DYNS s__CLSUNLOCKDEF = NULL; - - if( s__CLSUNLOCKDEF == NULL ) - s__CLSUNLOCKDEF = hb_dynsymGetCase( "__CLSUNLOCKDEF" ); - - hb_vmPushDynSym( s__CLSUNLOCKDEF ); - hb_vmPushNil(); - hb_vmPushItemRef( s_oClass ); - hb_vmPush( oClass ); - hb_vmDo( 2 ); - - hb_itemRelease( oClass ); - } -} - -HB_BOOL hbqt_obj_isDerivedFrom( PHB_ITEM pItem, const char * pszClsName ) -{ - return hb_clsIsParent( hb_objGetClass( pItem ), pszClsName ); -} - -/* Checks that the param iParam is an object and a subclass of pszClsName */ -HB_BOOL hbqt_par_isDerivedFrom( int iParam, const char * pszClsName ) -{ - PHB_ITEM pItem; - - HB_TRACE( HB_TR_DEBUG, ( "hbqt_par_isDerivedFrom( %i, %s )", iParam, pszClsName ) ); - - if( ( pItem = hb_param( iParam, HB_IT_OBJECT ) ) != NULL ) - { - if( hbqt_bindGetQtObject( pItem ) == NULL ) - hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - else - return hbqt_obj_isDerivedFrom( pItem, pszClsName ); - } - return HB_FALSE; -} - -/*----------------------------------------------------------------------*/ - -#endif - diff --git a/harbour/contrib/hbqt/qtcore/hbqt_version.cpp b/harbour/contrib/hbqt/qtcore/hbqt_version.cpp deleted file mode 100644 index bc27f07f26..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqt_version.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT version functions - * - * Copyright 2010 Viktor Szakats (harbour syenar.net) - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ - -#include "hbqt.h" - -HB_FUNC( QVERSION ) -{ - hb_retc( qVersion() ); -} - -HB_FUNC( QSHAREDBUILD ) -{ - hb_retl( qSharedBuild() ? HB_TRUE : HB_FALSE ); -} - -HB_FUNC( QT_VERSION ) -{ - hb_retnint( QT_VERSION ); -} - -HB_FUNC( QT_VERSION_STR ) -{ - hb_retc_const( QT_VERSION_STR ); -} diff --git a/harbour/contrib/hbqt/qtcore/hbqtcore.ch b/harbour/contrib/hbqt/qtcore/hbqtcore.ch deleted file mode 100644 index f2be5b937b..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqtcore.ch +++ /dev/null @@ -1,352 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009 Pritpal Bedi - * http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#ifndef _HBQTCORE_CH -#define _HBQTCORE_CH - -// This enum describes the errors that may be returned by the error() function. -#define QFile_NoError 0 // No error occurred. -#define QFile_ReadError 1 // An error occurred when reading from the file. -#define QFile_WriteError 2 // An error occurred when writing to the file. -#define QFile_FatalError 3 // A fatal error occurred. -#define QFile_ResourceError 4 // -#define QFile_OpenError 5 // The file could not be opened. -#define QFile_AbortError 6 // The operation was aborted. -#define QFile_TimeOutError 7 // A timeout occurred. -#define QFile_UnspecifiedError 8 // An unspecified error occurred. -#define QFile_RemoveError 9 // The file could not be removed. -#define QFile_RenameError 10 // The file could not be renamed. -#define QFile_PositionError 11 // The position in the file could not be changed. -#define QFile_ResizeError 12 // The file could not be resized. -#define QFile_PermissionsError 13 // The file could not be accessed. -#define QFile_CopyError 14 // The file could not be copied. - -#define QFile_NoOptions 0 // No options. - -// This enum is used by the permission() function to report the permissions and ownership of a file. The values may be OR-ed together to test multiple permissions and ownership values. -#define QFile_ReadOwner 0x4000 // The file is readable by the owner of the file. -#define QFile_WriteOwner 0x2000 // The file is writable by the owner of the file. -#define QFile_ExeOwner 0x1000 // The file is executable by the owner of the file. -#define QFile_ReadUser 0x0400 // The file is readable by the user. -#define QFile_WriteUser 0x0200 // The file is writable by the user. -#define QFile_ExeUser 0x0100 // The file is executable by the user. -#define QFile_ReadGroup 0x0040 // The file is readable by the group. -#define QFile_WriteGroup 0x0020 // The file is writable by the group. -#define QFile_ExeGroup 0x0010 // The file is executable by the group. -#define QFile_ReadOther 0x0004 // The file is readable by anyone. -#define QFile_WriteOther 0x0002 // The file is writable by anyone. -#define QFile_ExeOther 0x0001 // The file is executable by anyone. - - -#define QLibraryInfo_PrefixPath 0 // The default prefix for all paths. -#define QLibraryInfo_DocumentationPath 1 // The location for documentation upon install. -#define QLibraryInfo_HeadersPath 2 // The location for all headers. -#define QLibraryInfo_LibrariesPath 3 // The location of installed librarires. -#define QLibraryInfo_BinariesPath 4 // The location of installed Qt binaries (tools and applications). -#define QLibraryInfo_PluginsPath 5 // The location of installed Qt plugins. -#define QLibraryInfo_DataPath 6 // The location of general Qt data. -#define QLibraryInfo_TranslationsPath 7 // The location of translation information for Qt strings. -#define QLibraryInfo_SettingsPath 8 // The location for Qt settings. -#define QLibraryInfo_ExamplesPath 10 // The location for examples upon install. -#define QLibraryInfo_DemosPath 9 // The location for demos upon install. - - -// country definitions - extracted by Luigi Ferraris - -#define QLocale_AnyCountry 0 -#define QLocale_Afghanistan 1 -#define QLocale_Albania 2 -#define QLocale_Algeria 3 -#define QLocale_AmericanSamoa 4 -#define QLocale_Andorra 5 -#define QLocale_Angola 6 -#define QLocale_Anguilla 7 -#define QLocale_Antarctica 8 -#define QLocale_AntiguaAndBarbuda 9 -#define QLocale_Argentina 10 -#define QLocale_Armenia 11 -#define QLocale_Aruba 12 -#define QLocale_Australia 13 -#define QLocale_Austria 14 -#define QLocale_Azerbaijan 15 -#define QLocale_Bahamas 16 -#define QLocale_Bahrain 17 -#define QLocale_Bangladesh 18 -#define QLocale_Barbados 19 -#define QLocale_Belarus 20 -#define QLocale_Belgium 21 -#define QLocale_Belize 22 -#define QLocale_Benin 23 -#define QLocale_Bermuda 24 -#define QLocale_Bhutan 25 -#define QLocale_Bolivia 26 -#define QLocale_BosniaAndHerzegowina 27 -#define QLocale_Botswana 28 -#define QLocale_BouvetIsland 29 -#define QLocale_Brazil 30 -#define QLocale_BritishIndianOceanTerritory 31 -#define QLocale_BruneiDarussalam 32 -#define QLocale_Bulgaria 33 -#define QLocale_BurkinaFaso 34 -#define QLocale_Burundi 35 -#define QLocale_Cambodia 36 -#define QLocale_Cameroon 37 -#define QLocale_Canada 38 -#define QLocale_CapeVerde 39 -#define QLocale_CaymanIslands 40 -#define QLocale_CentralAfricanRepublic 41 -#define QLocale_Chad 42 -#define QLocale_Chile 43 -#define QLocale_China 44 -#define QLocale_ChristmasIsland 45 -#define QLocale_CocosIslands 46 -#define QLocale_Colombia 47 -#define QLocale_Comoros 48 -#define QLocale_DemocraticRepublicOfCongo 49 -#define QLocale_PeoplesRepublicOfCongo 50 -#define QLocale_CookIslands 51 -#define QLocale_CostaRica 52 -#define QLocale_IvoryCoast 53 -#define QLocale_Croatia 54 -#define QLocale_Cuba 55 -#define QLocale_Cyprus 56 -#define QLocale_CzechRepublic 57 -#define QLocale_Denmark 58 -#define QLocale_Djibouti 59 -#define QLocale_Dominica 60 -#define QLocale_DominicanRepublic 61 -#define QLocale_EastTimor 62 -#define QLocale_Ecuador 63 -#define QLocale_Egypt 64 -#define QLocale_ElSalvador 65 -#define QLocale_EquatorialGuinea 66 -#define QLocale_Eritrea 67 -#define QLocale_Estonia 68 -#define QLocale_Ethiopia 69 -#define QLocale_FalklandIslands 70 -#define QLocale_FaroeIslands 71 -#define QLocale_FijiCountry 72 -#define QLocale_Finland 73 -#define QLocale_France 74 -#define QLocale_MetropolitanFrance 75 -#define QLocale_FrenchGuiana 76 -#define QLocale_FrenchPolynesia 77 -#define QLocale_FrenchSouthernTerritories 78 -#define QLocale_Gabon 79 -#define QLocale_Gambia 80 -#define QLocale_Georgia 81 -#define QLocale_Germany 82 -#define QLocale_Ghana 83 -#define QLocale_Gibraltar 84 -#define QLocale_Greece 85 -#define QLocale_Greenland 86 -#define QLocale_Grenada 87 -#define QLocale_Guadeloupe 88 -#define QLocale_Guam 89 -#define QLocale_Guatemala 90 -#define QLocale_Guinea 91 -#define QLocale_GuineaBissau 92 -#define QLocale_Guyana 93 -#define QLocale_Haiti 94 -#define QLocale_HeardAndMcDonaldIslands 95 -#define QLocale_Honduras 96 -#define QLocale_HongKong 97 -#define QLocale_Hungary 98 -#define QLocale_Iceland 99 -#define QLocale_India 100 -#define QLocale_Indonesia 101 -#define QLocale_Iran 102 -#define QLocale_Iraq 103 -#define QLocale_Ireland 104 -#define QLocale_Israel 105 -#define QLocale_Italy 106 -#define QLocale_Jamaica 107 -#define QLocale_Japan 108 -#define QLocale_Jordan 109 -#define QLocale_Kazakhstan 110 -#define QLocale_Kenya 111 -#define QLocale_Kiribati 112 -#define QLocale_DemocraticRepublicOfKorea 113 -#define QLocale_RepublicOfKorea 114 -#define QLocale_Kuwait 115 -#define QLocale_Kyrgyzstan 116 -#define QLocale_Lao 117 -#define QLocale_Latvia 118 -#define QLocale_Lebanon 119 -#define QLocale_Lesotho 120 -#define QLocale_Liberia 121 -#define QLocale_LibyanArabJamahiriya 122 -#define QLocale_Liechtenstein 123 -#define QLocale_Lithuania 124 -#define QLocale_Luxembourg 125 -#define QLocale_Macau 126 -#define QLocale_Macedonia 127 -#define QLocale_Madagascar 128 -#define QLocale_Malawi 129 -#define QLocale_Malaysia 130 -#define QLocale_Maldives 131 -#define QLocale_Mali 132 -#define QLocale_Malta 133 -#define QLocale_MarshallIslands 134 -#define QLocale_Martinique 135 -#define QLocale_Mauritania 136 -#define QLocale_Mauritius 137 -#define QLocale_Mayotte 138 -#define QLocale_Mexico 139 -#define QLocale_Micronesia 140 -#define QLocale_Moldova 141 -#define QLocale_Monaco 142 -#define QLocale_Mongolia 143 -#define QLocale_Montserrat 144 -#define QLocale_Morocco 145 -#define QLocale_Mozambique 146 -#define QLocale_Myanmar 147 -#define QLocale_Namibia 148 -#define QLocale_NauruCountry 149 -#define QLocale_Nepal 150 -#define QLocale_Netherlands 151 -#define QLocale_NetherlandsAntilles 152 -#define QLocale_NewCaledonia 153 -#define QLocale_NewZealand 154 -#define QLocale_Nicaragua 155 -#define QLocale_Niger 156 -#define QLocale_Nigeria 157 -#define QLocale_Niue 158 -#define QLocale_NorfolkIsland 159 -#define QLocale_NorthernMarianaIslands 160 -#define QLocale_Norway 161 -#define QLocale_Oman 162 -#define QLocale_Pakistan 163 -#define QLocale_Palau 164 -#define QLocale_PalestinianTerritory 165 -#define QLocale_Panama 166 -#define QLocale_PapuaNewGuinea 167 -#define QLocale_Paraguay 168 -#define QLocale_Peru 169 -#define QLocale_Philippines 170 -#define QLocale_Pitcairn 171 -#define QLocale_Poland 172 -#define QLocale_Portugal 173 -#define QLocale_PuertoRico 174 -#define QLocale_Qatar 175 -#define QLocale_Reunion 176 -#define QLocale_Romania 177 -#define QLocale_RussianFederation 178 -#define QLocale_Rwanda 179 -#define QLocale_SaintKittsAndNevis 180 -#define QLocale_StLucia 181 -#define QLocale_StVincentAndTheGrenadines 182 -#define QLocale_Samoa 183 -#define QLocale_SanMarino 184 -#define QLocale_SaoTomeAndPrincipe 185 -#define QLocale_SaudiArabia 186 -#define QLocale_Senegal 187 -#define QLocale_Seychelles 188 -#define QLocale_SierraLeone 189 -#define QLocale_Singapore 190 -#define QLocale_Slovakia 191 -#define QLocale_Slovenia 192 -#define QLocale_SolomonIslands 193 -#define QLocale_Somalia 194 -#define QLocale_SouthAfrica 195 -#define QLocale_SouthGeorgiaAndTheSouthSandwichIslands 196 -#define QLocale_Spain 197 -#define QLocale_SriLanka 198 -#define QLocale_StHelena 199 -#define QLocale_StPierreAndMiquelon 200 -#define QLocale_Sudan 201 -#define QLocale_Suriname 202 -#define QLocale_SvalbardAndJanMayenIslands 203 -#define QLocale_Swaziland 204 -#define QLocale_Sweden 205 -#define QLocale_Switzerland 206 -#define QLocale_SyrianArabRepublic 207 -#define QLocale_Taiwan 208 -#define QLocale_Tajikistan 209 -#define QLocale_Tanzania 210 -#define QLocale_Thailand 211 -#define QLocale_Togo 212 -#define QLocale_Tokelau 213 -#define QLocale_TongaCountry 214 -#define QLocale_TrinidadAndTobago 215 -#define QLocale_Tunisia 216 -#define QLocale_Turkey 217 -#define QLocale_Turkmenistan 218 -#define QLocale_TurksAndCaicosIslands 219 -#define QLocale_Tuvalu 220 -#define QLocale_Uganda 221 -#define QLocale_Ukraine 222 -#define QLocale_UnitedArabEmirates 223 -#define QLocale_UnitedKingdom 224 -#define QLocale_UnitedStates 225 -#define QLocale_UnitedStatesMinorOutlyingIslands 226 -#define QLocale_Uruguay 227 -#define QLocale_Uzbekistan 228 -#define QLocale_Vanuatu 229 -#define QLocale_VaticanCityState 230 -#define QLocale_Venezuela 231 -#define QLocale_VietNam 232 -#define QLocale_BritishVirginIslands 233 -#define QLocale_USVirginIslands 234 -#define QLocale_WallisAndFutunaIslands 235 -#define QLocale_WesternSahara 236 -#define QLocale_Yemen 237 -#define QLocale_Yugoslavia 238 -#define QLocale_Zambia 239 -#define QLocale_Zimbabwe 240 -#define QLocale_SerbiaAndMontenegro 241 -#define QLocale_Montenegro 242 -#define QLocale_Serbia 243 -#define QLocale_SaintBarthelemy 244 -#define QLocale_SaintMartin 245 -#define QLocale_LatinAmericaAndTheCaribbean 246 - -#endif diff --git a/harbour/contrib/hbqt/qtcore/hbqtcore.h b/harbour/contrib/hbqt/qtcore/hbqtcore.h deleted file mode 100644 index e4c0f8149c..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqtcore.h +++ /dev/null @@ -1,14 +0,0 @@ -/* - * $Id$ - */ - -#ifndef __HBQTCORE_H -#define __HBQTCORE_H - -#include "hbqt.h" - -#define hbqt_par_HBQEvents( n ) ( ( HBQEvents * ) hbqt_par_ptr( n ) ) -#define hbqt_par_HBQSlots( n ) ( ( HBQSlots * ) hbqt_par_ptr( n ) ) -#define hbqt_par_HBQString( n ) ( ( HBQString * ) hbqt_par_ptr( n ) ) - -#endif /* __HBQTCORE_H */ diff --git a/harbour/contrib/hbqt/qtcore/hbqtcore.hbc b/harbour/contrib/hbqt/qtcore/hbqtcore.hbc deleted file mode 100644 index 2a78eb6c03..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqtcore.hbc +++ /dev/null @@ -1,20 +0,0 @@ -# -# $Id$ -# - -# --------------------------------------------------------------- -# Copyright 2010 Viktor Szakats (harbour syenar.net) -# See COPYING for licensing terms. -# --------------------------------------------------------------- - -incpaths=. - -libs=../hbqt_common.hbc - -{!HB_STATIC_QT}libs=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF} -{!HB_STATIC_QT&(allwin|os2)}libs=QtCore4 -{!HB_STATIC_QT&(linux|symbian|beos)}libs=QtCore -{!HB_STATIC_QT&darwin}frameworks=QtCore -{HB_STATIC_QT&allwin}libs=${_HB_DYNPREF}${hb_name}s${_HB_DYNSUFF} -{HB_STATIC_QT&linux|beos}libs=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF} -{HB_STATIC_QT&(allwin|linux|beos)}libs=QtCore diff --git a/harbour/contrib/hbqt/qtcore/hbqtcore.hbm b/harbour/contrib/hbqt/qtcore/hbqtcore.hbm deleted file mode 100644 index e2f7b785e3..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqtcore.hbm +++ /dev/null @@ -1,26 +0,0 @@ -# -# $Id$ -# - --i. - -qth/filelist.hbm - -hbqtcore.hbx - -hbqt_init.cpp -hbqt_pointer.cpp -hbqt_version.cpp - -hbqt_hbqevents.cpp -hbqt_hbqslots.cpp -hbqt_hbqstring.cpp - -hbqt_bind.cpp -hbqt_destroyer.cpp - -hbqt_misc.prg - -hbqt_hbqevents.h -hbqt_destroyer.h - diff --git a/harbour/contrib/hbqt/qtcore/hbqtcore.hbp b/harbour/contrib/hbqt/qtcore/hbqtcore.hbp deleted file mode 100644 index 6138e15e18..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqtcore.hbp +++ /dev/null @@ -1,12 +0,0 @@ -# -# $Id$ -# - -../hbqt_common.hbm - -hbqtcore.hbm - --instfile=inc:hbqtcore.ch --instfile=inc:hbqtcore.hbx - -hbqtcores.hbp diff --git a/harbour/contrib/hbqt/qtcore/hbqtcore.hbx b/harbour/contrib/hbqt/qtcore/hbqtcore.hbx deleted file mode 100644 index 29889e9695..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqtcore.hbx +++ /dev/null @@ -1,175 +0,0 @@ -/* - * $Id$ - */ - -/* -------------------------------------------------------------------- */ -/* NOTE: You can add manual override which functions to include or */ -/* exclude from automatically generated EXTERNAL/DYNAMIC list. */ -/* Syntax: // HB_FUNC_INCLUDE */ -/* // HB_FUNC_EXCLUDE */ -/* -------------------------------------------------------------------- */ - -/* -------------------------------------------------------------------- */ -/* WARNING: Automatically generated code below. DO NOT EDIT! */ -/* Regenerate using hbmk2 '-hbx=' option. */ -/* -------------------------------------------------------------------- */ - -#ifndef __HBEXTERN_CH__HBQTCORE__ -#define __HBEXTERN_CH__HBQTCORE__ - -#if defined( __HBEXTREQ__ ) .OR. defined( __HBEXTERN__HBQTCORE__ANNOUNCE ) - ANNOUNCE __HBEXTERN__HBQTCORE__ -#endif - -#if defined( __HBEXTREQ__ ) .OR. defined( __HBEXTERN__HBQTCORE__REQUEST ) - #command DYNAMIC => EXTERNAL -#endif - -DYNAMIC HBQSTRING -DYNAMIC HBQTOBJECTHANDLER -DYNAMIC HBQT_CONNECT -DYNAMIC HBQT_CONNECTEVENT -DYNAMIC HBQT_DISCONNECT -DYNAMIC HBQT_DISCONNECTEVENT -DYNAMIC HBQT_ISEQUAL -DYNAMIC HB_HBQSTRING -DYNAMIC HB_QABSTRACTITEMMODEL -DYNAMIC HB_QABSTRACTLISTMODEL -DYNAMIC HB_QABSTRACTTABLEMODEL -DYNAMIC HB_QBITARRAY -DYNAMIC HB_QBUFFER -DYNAMIC HB_QBYTEARRAY -DYNAMIC HB_QCHAR -DYNAMIC HB_QCHILDEVENT -DYNAMIC HB_QCOREAPPLICATION -DYNAMIC HB_QDATASTREAM -DYNAMIC HB_QDATE -DYNAMIC HB_QDATETIME -DYNAMIC HB_QDIR -DYNAMIC HB_QEVENT -DYNAMIC HB_QEVENTLOOP -DYNAMIC HB_QFILE -DYNAMIC HB_QFILEINFO -DYNAMIC HB_QFILESYSTEMWATCHER -DYNAMIC HB_QGENERICARGUMENT -DYNAMIC HB_QGENERICRETURNARGUMENT -DYNAMIC HB_QIODEVICE -DYNAMIC HB_QLATIN1CHAR -DYNAMIC HB_QLATIN1STRING -DYNAMIC HB_QLIBRARYINFO -DYNAMIC HB_QLINE -DYNAMIC HB_QLINEF -DYNAMIC HB_QLIST -DYNAMIC HB_QLOCALE -DYNAMIC HB_QMETACLASSINFO -DYNAMIC HB_QMETAENUM -DYNAMIC HB_QMETAMETHOD -DYNAMIC HB_QMETAOBJECT -DYNAMIC HB_QMETAPROPERTY -DYNAMIC HB_QMETATYPE -DYNAMIC HB_QMIMEDATA -DYNAMIC HB_QMODELINDEX -DYNAMIC HB_QOBJECT -DYNAMIC HB_QPOINT -DYNAMIC HB_QPOINTF -DYNAMIC HB_QPROCESS -DYNAMIC HB_QRECT -DYNAMIC HB_QRECTF -DYNAMIC HB_QREGEXP -DYNAMIC HB_QRESOURCE -DYNAMIC HB_QSETTINGS -DYNAMIC HB_QSIGNALMAPPER -DYNAMIC HB_QSIZE -DYNAMIC HB_QSIZEF -DYNAMIC HB_QSTRINGLIST -DYNAMIC HB_QSTRINGREF -DYNAMIC HB_QTEXTBOUNDARYFINDER -DYNAMIC HB_QTEXTCODEC -DYNAMIC HB_QTEXTDECODER -DYNAMIC HB_QTEXTENCODER -DYNAMIC HB_QTEXTSTREAM -DYNAMIC HB_QTHREAD -DYNAMIC HB_QTIME -DYNAMIC HB_QTIMELINE -DYNAMIC HB_QTIMER -DYNAMIC HB_QTRANSLATOR -DYNAMIC HB_QURL -DYNAMIC HB_QVARIANT -DYNAMIC QABSTRACTITEMMODEL -DYNAMIC QABSTRACTLISTMODEL -DYNAMIC QABSTRACTTABLEMODEL -DYNAMIC QBITARRAY -DYNAMIC QBUFFER -DYNAMIC QBYTEARRAY -DYNAMIC QCHAR -DYNAMIC QCHILDEVENT -DYNAMIC QCOREAPPLICATION -DYNAMIC QDATASTREAM -DYNAMIC QDATE -DYNAMIC QDATETIME -DYNAMIC QDIR -DYNAMIC QEVENT -DYNAMIC QEVENTLOOP -DYNAMIC QFILE -DYNAMIC QFILEINFO -DYNAMIC QFILESYSTEMWATCHER -DYNAMIC QGENERICARGUMENT -DYNAMIC QGENERICRETURNARGUMENT -DYNAMIC QIODEVICE -DYNAMIC QLATIN1CHAR -DYNAMIC QLATIN1STRING -DYNAMIC QLIBRARYINFO -DYNAMIC QLINE -DYNAMIC QLINEF -DYNAMIC QLIST -DYNAMIC QLOCALE -DYNAMIC QMETACLASSINFO -DYNAMIC QMETAENUM -DYNAMIC QMETAMETHOD -DYNAMIC QMETAOBJECT -DYNAMIC QMETAPROPERTY -DYNAMIC QMETATYPE -DYNAMIC QMIMEDATA -DYNAMIC QMODELINDEX -DYNAMIC QOBJECT -DYNAMIC QPOINT -DYNAMIC QPOINTF -DYNAMIC QPROCESS -DYNAMIC QRECT -DYNAMIC QRECTF -DYNAMIC QREGEXP -DYNAMIC QRESOURCE -DYNAMIC QSETTINGS -DYNAMIC QSHAREDBUILD -DYNAMIC QSIGNALMAPPER -DYNAMIC QSIZE -DYNAMIC QSIZEF -DYNAMIC QSTRINGLIST -DYNAMIC QSTRINGREF -DYNAMIC QTEXTBOUNDARYFINDER -DYNAMIC QTEXTCODEC -DYNAMIC QTEXTDECODER -DYNAMIC QTEXTENCODER -DYNAMIC QTEXTSTREAM -DYNAMIC QTHREAD -DYNAMIC QTIME -DYNAMIC QTIMELINE -DYNAMIC QTIMER -DYNAMIC QTRANSLATOR -DYNAMIC QT_QURL_SETQUERYDELIMITERS -DYNAMIC QT_VERSION -DYNAMIC QT_VERSION_STR -DYNAMIC QURL -DYNAMIC QVARIANT -DYNAMIC QVERSION -DYNAMIC __HBQTCORE -DYNAMIC __HBQT_DESTROY -DYNAMIC __HBQT_ERROR -DYNAMIC __HBQT_ITEMSINGLOBALLIST -DYNAMIC __HBQT_SETUTF8 - -#if defined( __HBEXTREQ__ ) .OR. defined( __HBEXTERN__HBQTCORE__REQUEST ) - #uncommand DYNAMIC => EXTERNAL -#endif - -#endif diff --git a/harbour/contrib/hbqt/qtcore/hbqtcores.hbp b/harbour/contrib/hbqt/qtcore/hbqtcores.hbp deleted file mode 100644 index 02fd0078c4..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqtcores.hbp +++ /dev/null @@ -1,7 +0,0 @@ -# -# $Id$ -# - -../hbqt_commons.hbm - -hbqtcore.hbm diff --git a/harbour/contrib/hbqt/qtcore/hbqtinit.h b/harbour/contrib/hbqt/qtcore/hbqtinit.h deleted file mode 100644 index 7aa7fefa68..0000000000 --- a/harbour/contrib/hbqt/qtcore/hbqtinit.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper init helper macros - * - * Copyright 2011 Viktor Szakats (harbour syenar.net) - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#define HBQT_SLOT_CALLBACK_OBJ( _name_ ) \ - static void hbqt_SlotsExec##_name_( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) \ - { \ - Q_UNUSED( pList ); \ - \ - hb_vmPushEvalSym(); \ - hb_vmPush( codeBlock ); \ - hb_vmPush( hbqt_create_objectGC( hbqt_gcAllocate_##_name_( new _name_( ( *reinterpret_cast< _name_( * ) >( arguments[ 1 ] ) ) ), true ), HB_MACRO2STRING( _name_ ) ) ); \ - hb_vmSend( 1 ); \ - } - -#define HBQT_SLOT_CALLBACK_OBJ_INT( _name_ ) \ - static void hbqt_SlotsExec##_name_##Int( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) \ - { \ - Q_UNUSED( pList ); \ - \ - hb_vmPushEvalSym(); \ - hb_vmPush( codeBlock ); \ - hb_vmPush( hbqt_create_objectGC( hbqt_gcAllocate_##_name_( new _name_( ( *reinterpret_cast< _name_( * ) >( arguments[ 1 ] ) ) ), true ), HB_MACRO2STRING( _name_ ) ) ); \ - hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 2 ] ) ); \ - hb_vmSend( 2 ); \ - } - -#define HBQT_SLOT_CALLBACK_OBJ_OBJ( _name1_, _name2_ ) \ - static void hbqt_SlotsExec##_name1_##_name2_( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) \ - { \ - Q_UNUSED( pList ); \ - \ - hb_vmPushEvalSym(); \ - hb_vmPush( codeBlock ); \ - hb_vmPush( hbqt_create_objectGC( hbqt_gcAllocate_##_name1_( new _name1_( ( *reinterpret_cast< _name1_( * ) >( arguments[ 1 ] ) ) ), true ), HB_MACRO2STRING( _name1_ ) ) ); \ - hb_vmPush( hbqt_create_objectGC( hbqt_gcAllocate_##_name2_( new _name2_( ( *reinterpret_cast< _name2_( * ) >( arguments[ 2 ] ) ) ), true ), HB_MACRO2STRING( _name2_ ) ) ); \ - hb_vmSend( 2 ); \ - } diff --git a/harbour/contrib/hbqt/qtcore/qth/HBQString.qth b/harbour/contrib/hbqt/qtcore/qth/HBQString.qth deleted file mode 100644 index 4df0750709..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/HBQString.qth +++ /dev/null @@ -1,281 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = -New = -ClubMethods = no - - - -#include "hbapi.h" -#include "hbapiitm.h" -#include "hbvm.h" - -#include -#include -#include - -#include "hbqt_hbqstring.h" - -/* - * HBQString () - * HBQString ( const QChar * unicode, int size ) - * HBQString ( QChar ch ) - * HBQString ( int size, QChar ch ) - * HBQString ( const QLatin1String & str ) - * HBQString ( const QString & other ) - * HBQString ( const char * str ) - * HBQString ( const QByteArray & ba ) - * ~HBQString () - */ -HB_FUNC( QT_HBQSTRING ) -{ - if( hb_pcount() == 1 && HB_ISCHAR( 1 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new HBQString( hb_parstr_utf8( 1, &pText01, NULL ) ) ); - hb_strfree( pText01 ); - } - else if( hb_pcount() == 1 && HB_ISPOINTER( 1 ) ) - { - __HB_RETPTRGC__( new HBQString( ( const char * ) hb_parptr( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new HBQString() ); - } -} - - - -class Null -typedef ConstIterator -typedef Iterator -enum NormalizationForm { NormalizationForm_D, NormalizationForm_C, NormalizationForm_KD, NormalizationForm_KC } -enum SectionFlag { SectionDefault, SectionSkipEmpty, SectionIncludeLeadingSep, SectionIncludeTrailingSep, SectionCaseInsensitiveSeps } -flags SectionFlags -enum SplitBehavior { KeepEmptyParts, SkipEmptyParts } -typedef const_iterator -typedef iterator - - - -QString & append ( const QString & str ) -QString & append ( const QStringRef & reference ) -QString & append ( const QLatin1String & str ) -QString & append ( const QByteArray & ba ) -//QString & append ( const char * str ) -QString & append ( QChar ch ) - -QString arg ( const QString & a, int fieldWidth = 0, const QChar & fillChar = QLatin1Char( ' ' ) ) const -QString arg ( const QString & a1, const QString & a2 ) const -QString arg ( const QString & a1, const QString & a2, const QString & a3 ) const -QString arg ( const QString & a1, const QString & a2, const QString & a3, const QString & a4 ) const -QString arg ( const QString & a1, const QString & a2, const QString & a3, const QString & a4, const QString & a5 ) const -QString arg ( const QString & a1, const QString & a2, const QString & a3, const QString & a4, const QString & a5, const QString & a6 ) const -QString arg ( const QString & a1, const QString & a2, const QString & a3, const QString & a4, const QString & a5, const QString & a6, const QString & a7 ) const -QString arg ( const QString & a1, const QString & a2, const QString & a3, const QString & a4, const QString & a5, const QString & a6, const QString & a7, const QString & a8 ) const -QString arg ( const QString & a1, const QString & a2, const QString & a3, const QString & a4, const QString & a5, const QString & a6, const QString & a7, const QString & a8, const QString & a9 ) const -QString arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const -//QString arg ( uint a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const -//QString arg ( long a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const -//QString arg ( ulong a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const -//QString arg ( qlonglong a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const -//QString arg ( qulonglong a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const -//QString arg ( short a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const -//QString arg ( ushort a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const -QString arg ( QChar a, int fieldWidth = 0, const QChar & fillChar = QLatin1Char( ' ' ) ) const -//QString arg ( char a, int fieldWidth = 0, const QChar & fillChar = QLatin1Char( ' ' ) ) const -//QString arg ( double a, int fieldWidth = 0, char format = 'g', int precision = -1, const QChar & fillChar = QLatin1Char( ' ' ) ) const - -const QChar at ( int position ) const -//iterator begin () -//const_iterator begin () const -int capacity () const -void chop ( int n ) -void clear () -int compare ( const QString & other ) const -int compare ( const QString & other, Qt::CaseSensitivity cs ) const -int compare ( const QLatin1String & other, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -int compare ( const QStringRef & ref, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -//const_iterator constBegin () const -const QChar * constData () const -//const_iterator constEnd () const -//bool contains ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -//bool contains ( QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -//bool contains ( const QRegExp & rx ) const -//bool contains ( QRegExp & rx ) const -int count ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -int count ( QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -int count ( const QRegExp & rx ) const -int count () const -//QChar * data () -const QChar * data () const -//iterator end () -//const_iterator end () const -bool endsWith ( const QString & s, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -bool endsWith ( const QLatin1String & s, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -bool endsWith ( const QChar & c, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -QString & fill ( QChar ch, int size = -1 ) -int indexOf ( const QString & str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -int indexOf ( const QLatin1String & str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -int indexOf ( QChar ch, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -int indexOf ( const QRegExp & rx, int from = 0 ) const -int indexOf ( QRegExp & rx, int from = 0 ) const -QString & insert ( int position, const QString & str ) -QString & insert ( int position, const QLatin1String & str ) -QString & insert ( int position, const QChar * unicode, int size ) -QString & insert ( int position, QChar ch ) -bool isEmpty () const -bool isNull () const -int lastIndexOf ( const QString & str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -int lastIndexOf ( const QLatin1String & str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -int lastIndexOf ( QChar ch, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -int lastIndexOf ( const QRegExp & rx, int from = -1 ) const -int lastIndexOf ( QRegExp & rx, int from = -1 ) const -QString left ( int n ) const -QString leftJustified ( int width, QChar fill = QLatin1Char( ' ' ), bool truncate = false ) const -QStringRef leftRef ( int n ) const -int length () const -int localeAwareCompare ( const QStringRef & other ) const -int localeAwareCompare ( const QString & other ) const -QString mid ( int position, int n = -1 ) const -QStringRef midRef ( int position, int n = -1 ) const -QString normalized ( NormalizationForm mode ) const -QString normalized ( NormalizationForm mode, QChar::UnicodeVersion version ) const - -QString & prepend ( const QString & str ) -QString & prepend ( const QLatin1String & str ) -QString & prepend ( const QByteArray & ba ) -//QString & prepend ( const char * str ) -QString & prepend ( QChar ch ) - -void push_back ( const QString & other ) -void push_back ( QChar ch ) -void push_front ( const QString & other ) -void push_front ( QChar ch ) -QString & remove ( int position, int n ) -QString & remove ( QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive ) -QString & remove ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) -QString & remove ( const QRegExp & rx ) -QString repeated ( int times ) const -QString & replace ( int position, int n, const QString & after ) -QString & replace ( int position, int n, const QChar * unicode, int size ) -QString & replace ( int position, int n, QChar after ) -QString & replace ( const QString & before, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive ) -QString & replace ( const QChar * before, int blen, const QChar * after, int alen, Qt::CaseSensitivity cs = Qt::CaseSensitive ) -QString & replace ( QChar ch, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive ) -QString & replace ( QChar before, QChar after, Qt::CaseSensitivity cs = Qt::CaseSensitive ) -QString & replace ( const QLatin1String & before, const QLatin1String & after, Qt::CaseSensitivity cs = Qt::CaseSensitive ) -QString & replace ( const QLatin1String & before, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive ) -QString & replace ( const QString & before, const QLatin1String & after, Qt::CaseSensitivity cs = Qt::CaseSensitive ) -QString & replace ( QChar c, const QLatin1String & after, Qt::CaseSensitivity cs = Qt::CaseSensitive ) -QString & replace ( const QRegExp & rx, const QString & after ) -void reserve ( int size ) -void resize ( int size ) -QString right ( int n ) const -QString rightJustified ( int width, QChar fill = QLatin1Char( ' ' ), bool truncate = false ) const -QStringRef rightRef ( int n ) const -QString section ( QChar sep, int start, int end = -1, SectionFlags flags = SectionDefault ) const -QString section ( const QString & sep, int start, int end = -1, SectionFlags flags = SectionDefault ) const -QString section ( const QRegExp & reg, int start, int end = -1, SectionFlags flags = SectionDefault ) const - -QString & setNum ( int n, int base = 10 ) -//QString & setNum ( uint n, int base = 10 ) -//QString & setNum ( long n, int base = 10 ) -//QString & setNum ( ulong n, int base = 10 ) -//QString & setNum ( qlonglong n, int base = 10 ) -//QString & setNum ( qulonglong n, int base = 10 ) -//QString & setNum ( short n, int base = 10 ) -//QString & setNum ( ushort n, int base = 10 ) -//QString & setNum ( double n, char format = 'g', int precision = 6 ) -//QString & setNum ( float n, char format = 'g', int precision = 6 ) - -QString & setUnicode ( const QChar * unicode, int size ) -QString & setUtf16 ( const ushort * unicode, int size ) -QString simplified () const -int size () const -QStringList split ( const QString & sep, SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -QStringList split ( const QChar & sep, SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -QStringList split ( const QRegExp & rx, SplitBehavior behavior = KeepEmptyParts ) const -//QString & sprintf ( const char * cformat, ... ) -void squeeze () -bool startsWith ( const QString & s, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -bool startsWith ( const QLatin1String & s, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -bool startsWith ( const QChar & c, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -QByteArray toAscii () const -QString toCaseFolded () const -double toDouble ( bool * ok = 0 ) const -float toFloat ( bool * ok = 0 ) const -int toInt ( bool * ok = 0, int base = 10 ) const -QByteArray toLatin1 () const -QByteArray toLocal8Bit () const -long toLong ( bool * ok = 0, int base = 10 ) const -qlonglong toLongLong ( bool * ok = 0, int base = 10 ) const -QString toLower () const -short toShort ( bool * ok = 0, int base = 10 ) const -//std::string toStdString () const -//std::wstring toStdWString () const -uint toUInt ( bool * ok = 0, int base = 10 ) const -ulong toULong ( bool * ok = 0, int base = 10 ) const -qulonglong toULongLong ( bool * ok = 0, int base = 10 ) const -ushort toUShort ( bool * ok = 0, int base = 10 ) const -QVector toUcs4 () const -QString toUpper () const -QByteArray toUtf8 () const -//int toWCharArray ( wchar_t * array ) const -QString trimmed () const -void truncate ( int position ) -const QChar * unicode () const -//const ushort * utf16 () const -//QString & vsprintf ( const char * cformat, va_list ap ) - -int compare ( const QString & s1, const QString & s2, Qt::CaseSensitivity cs ) -int compare ( const QString & s1, const QString & s2 ) -int compare ( const QString & s1, const QLatin1String & s2, Qt::CaseSensitivity cs = Qt::CaseSensitive ) -int compare ( const QLatin1String & s1, const QString & s2, Qt::CaseSensitivity cs = Qt::CaseSensitive ) -int compare ( const QString & s1, const QStringRef & s2, Qt::CaseSensitivity cs = Qt::CaseSensitive ) -QString fromAscii ( const char * str, int size = -1 ) -QString fromLatin1 ( const char * str, int size = -1 ) -QString fromLocal8Bit ( const char * str, int size = -1 ) -QString fromRawData ( const QChar * unicode, int size ) -//QString fromStdString ( const std::string & str ) -//QString fromStdWString ( const std::wstring & str ) -QString fromUcs4 ( const uint * unicode, int size = -1 ) -QString fromUtf8 ( const char * str, int size = -1 ) -QString fromUtf16 ( const ushort * unicode, int size = -1 ) -//QString fromWCharArray ( const wchar_t * string, int size = -1 ) -int localeAwareCompare ( const QString & s1, const QString & s2 ) -int localeAwareCompare ( const QString & s1, const QStringRef & s2 ) - -//QString number ( long n, int base = 10 ) -//QString number ( double n, char format = 'g', int precision = 6 ) -//QString number ( ulong n, int base = 10 ) -QString number ( int n, int base = 10 ) -//QString number ( uint n, int base = 10 ) -//QString number ( qlonglong n, int base = 10 ) -//QString number ( qulonglong n, int base = 10 ) - - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QAbstractEventDispatcher.qth b/harbour/contrib/hbqt/qtcore/qth/QAbstractEventDispatcher.qth deleted file mode 100644 index 82c5ef2823..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QAbstractEventDispatcher.qth +++ /dev/null @@ -1,72 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -Inherit = QObject -Type = Core -New = - - - -#include - - -/* - * QAbstractEventDispatcher ( QObject * parent = 0 ) - * ~QAbstractEventDispatcher () - */ -HB_FUNC( QT_QABSTRACTEVENTDISPATCHER ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) ) - { - __HB_RETPTRGC__( new QAbstractEventDispatcher( hbqt_par_QObject( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QAbstractEventDispatcher() ); - } -} - - - - - - -bool filterEvent ( void * message ) -virtual void flush () = 0 -virtual bool hasPendingEvents () = 0 -virtual void interrupt () = 0 -virtual bool processEvents ( QEventLoop::ProcessEventsFlags flags ) = 0 -virtual void registerSocketNotifier ( QSocketNotifier * notifier ) = 0 -int registerTimer ( int interval, QObject * object ) -virtual void registerTimer ( int timerId, int interval, QObject * object ) = 0 -virtual QList registeredTimers ( QObject * object ) const = 0 -EventFilter setEventFilter ( EventFilter filter ) -virtual void unregisterSocketNotifier ( QSocketNotifier * notifier ) = 0 -virtual bool unregisterTimer ( int timerId ) = 0 -virtual bool unregisterTimers ( QObject * object ) = 0 -virtual void wakeUp () = 0 - -QAbstractEventDispatcher * instance ( QThread * thread = 0 ) - - - - - - -void aboutToBlock () -void awake () - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QAbstractItemModel.qth b/harbour/contrib/hbqt/qtcore/qth/QAbstractItemModel.qth deleted file mode 100644 index 9674e7fa99..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QAbstractItemModel.qth +++ /dev/null @@ -1,104 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -Inherit = QObject -Type = Core -New = -Constructor = no - - - - - - -#include -#include -#include - - -/* - * QAbstractItemModel ( QObject * parent = 0 ) - * virtual ~QAbstractItemModel () - */ - -HB_FUNC( QT_QABSTRACTITEMMODEL ) -{ -} - - - - - - - -virtual QModelIndex buddy ( const QModelIndex & index ) const -virtual bool canFetchMore ( const QModelIndex & parent ) const -virtual int columnCount ( const QModelIndex & parent = QModelIndex() ) const = 0 -virtual QVariant data ( const QModelIndex & index, int role = Qt::DisplayRole ) const = 0 -virtual bool dropMimeData ( const QMimeData * data, Qt::DropAction action, int row, int column, const QModelIndex & parent ) -virtual void fetchMore ( const QModelIndex & parent ) -virtual Qt::ItemFlags flags ( const QModelIndex & index ) const -virtual bool hasChildren ( const QModelIndex & parent = QModelIndex() ) const -bool hasIndex ( int row, int column, const QModelIndex & parent = QModelIndex() ) const -virtual QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const -virtual QModelIndex index ( int row, int column, const QModelIndex & parent = QModelIndex() ) const = 0 -bool insertColumn ( int column, const QModelIndex & parent = QModelIndex() ) -virtual bool insertColumns ( int column, int count, const QModelIndex & parent = QModelIndex() ) -bool insertRow ( int row, const QModelIndex & parent = QModelIndex() ) -virtual bool insertRows ( int row, int count, const QModelIndex & parent = QModelIndex() ) -virtual QMap itemData ( const QModelIndex & index ) const -// virtual QModelIndexList match ( const QModelIndex & start, int role, const QVariant & value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags( Qt::MatchStartsWith | Qt::MatchWrap ) ) const -// virtual QMimeData * mimeData ( const QModelIndexList & indexes ) const [*A=1*] -virtual QStringList mimeTypes () const -virtual QModelIndex parent ( const QModelIndex & index ) const = 0 -bool removeColumn ( int column, const QModelIndex & parent = QModelIndex() ) -virtual bool removeColumns ( int column, int count, const QModelIndex & parent = QModelIndex() ) -bool removeRow ( int row, const QModelIndex & parent = QModelIndex() ) -virtual bool removeRows ( int row, int count, const QModelIndex & parent = QModelIndex() ) -virtual int rowCount ( const QModelIndex & parent = QModelIndex() ) const = 0 -virtual bool setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole ) -virtual bool setHeaderData ( int section, Qt::Orientation orientation, const QVariant & value, int role = Qt::EditRole ) -virtual bool setItemData ( const QModelIndex & index, const QMap & roles ) -void setSupportedDragActions ( Qt::DropActions actions ) -QModelIndex sibling ( int row, int column, const QModelIndex & index ) const -virtual void sort ( int column, Qt::SortOrder order = Qt::AscendingOrder ) -virtual QSize span ( const QModelIndex & index ) const -Qt::DropActions supportedDragActions () const -virtual Qt::DropActions supportedDropActions () const - - - -virtual void revert () -virtual bool submit () - - - -void columnsAboutToBeInserted ( const QModelIndex & parent, int start, int end ) -void columnsAboutToBeRemoved ( const QModelIndex & parent, int start, int end ) -void columnsInserted ( const QModelIndex & parent, int start, int end ) -void columnsRemoved ( const QModelIndex & parent, int start, int end ) -void dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) -void headerDataChanged ( Qt::Orientation orientation, int first, int last ) -void layoutAboutToBeChanged () -void layoutChanged () -void modelAboutToBeReset () -void modelReset () -void rowsAboutToBeInserted ( const QModelIndex & parent, int start, int end ) -void rowsAboutToBeRemoved ( const QModelIndex & parent, int start, int end ) -void rowsInserted ( const QModelIndex & parent, int start, int end ) -void rowsRemoved ( const QModelIndex & parent, int start, int end ) - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QAbstractListModel.qth b/harbour/contrib/hbqt/qtcore/qth/QAbstractListModel.qth deleted file mode 100644 index de6cbf12eb..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QAbstractListModel.qth +++ /dev/null @@ -1,49 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -Inherit = QAbstractItemModel -Type = Core -New = -Constructor = no - - - -#include - - -/* - * QAbstractListModel ( QObject * parent = 0 ) - * ~QAbstractListModel () - */ -HB_FUNC( QT_QABSTRACTLISTMODEL ) -{ - //__HB_RETPTRGC__( new QAbstractListModel() ); -} - - - - - - -virtual QModelIndex index ( int row, int column = 0, const QModelIndex & parent = QModelIndex() ) const - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QAbstractTableModel.qth b/harbour/contrib/hbqt/qtcore/qth/QAbstractTableModel.qth deleted file mode 100644 index 09b5f9c78a..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QAbstractTableModel.qth +++ /dev/null @@ -1,49 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -Inherit = QAbstractItemModel -Type = Core -New = -Constructor = no - - - -#include - - -/* - * QAbstractTableModel ( QObject * parent = 0 ) - * ~QAbstractTableModel () - */ -HB_FUNC( QT_QABSTRACTTABLEMODEL ) -{ - // __HB_RETPTRGC__( new QAbstractTableModel() ); -} - - - - - - -virtual QModelIndex index ( int row, int column, const QModelIndex & parent = QModelIndex() ) const - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QBitArray.qth b/harbour/contrib/hbqt/qtcore/qth/QBitArray.qth deleted file mode 100644 index 6eb036272b..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QBitArray.qth +++ /dev/null @@ -1,72 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = Core -New = - - - -#include - - -/* QBitArray () - * QBitArray ( int size, bool value = false ) - * QBitArray ( const QBitArray & other ) - */ -HB_FUNC( QT_QBITARRAY ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QBITARRAY" ) ) - { - __HB_RETPTRGC__( new QBitArray( *hbqt_par_QBitArray( 1 ) ) ); - } - else if( hb_pcount() >= 1 && HB_ISNUM( 1 ) ) - { - __HB_RETPTRGC__( new QBitArray( hb_parni( 1 ), HB_ISLOG( 2 ) ? hb_parl( 2 ) : false ) ); - } - else - { - __HB_RETPTRGC__( new QBitArray() ); - } -} - - - - - - -bool at ( int i ) const -void clear () -void clearBit ( int i ) -int count () const -int count ( bool on ) const -bool fill ( bool value, int size = -1 ) -void fill ( bool value, int begin, int end ) -bool isEmpty () const -bool isNull () const -void resize ( int size ) -void setBit ( int i ) -void setBit ( int i, bool value ) -int size () const -bool testBit ( int i ) const -bool toggleBit ( int i ) -void truncate ( int pos ) - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QBuffer.qth b/harbour/contrib/hbqt/qtcore/qth/QBuffer.qth deleted file mode 100644 index 70ec745855..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QBuffer.qth +++ /dev/null @@ -1,73 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = -Inherit = QIODevice -Type = -New = - - - - - - - - - -#include - - -/* - * QBuffer ( QObject * parent = 0 ) - * QBuffer ( QByteArray * byteArray, QObject * parent = 0 ) - * ~QBuffer () - */ -HB_FUNC( QT_QBUFFER ) -{ - if( hb_pcount() == 2 && hbqt_par_isDerivedFrom( 1, "QBYTEARRAY" ) && hbqt_par_isDerivedFrom( 2, "QOBJECT" ) ) - { - __HB_RETPTRGC__( new QBuffer( hbqt_par_QByteArray( 1 ), hbqt_par_QObject( 2 ) ) ); - } - else if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QBYTEARRAY" ) ) - { - __HB_RETPTRGC__( new QBuffer( hbqt_par_QByteArray( 1 ), 0 ) ); - } - else if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) ) - { - __HB_RETPTRGC__( new QBuffer( hbqt_par_QObject( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QBuffer() ); - } -} - - - - - - -QByteArray & buffer () -//const QByteArray & buffer () const -const QByteArray & data () const -void setBuffer ( QByteArray * byteArray ) -void setData ( const char * data, int size ) -void setData ( const QByteArray & data ) - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QByteArray.qth b/harbour/contrib/hbqt/qtcore/qth/QByteArray.qth deleted file mode 100644 index 549a8d0cd6..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QByteArray.qth +++ /dev/null @@ -1,183 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = Core -New = -ClubMethods = no - - - -#include - - -/* QByteArray () - * QByteArray ( const char * str ) - * QByteArray ( const char * data, int size ) - * QByteArray ( int size, char ch ) - * QByteArray ( const QByteArray & other ) - * ~QByteArray () - */ -HB_FUNC( QT_QBYTEARRAY ) -{ - if( hb_pcount() >= 1 && hbqt_par_isDerivedFrom( 1, "QBYTEARRAY" ) ) - { - __HB_RETPTRGC__( new QByteArray( *hbqt_par_QByteArray( 1 ) ) ); - } - else if( hb_pcount() == 1 && HB_ISCHAR( 1 ) ) - { - __HB_RETPTRGC__( new QByteArray( hb_parc( 1 ) ) ); - } - else if( hb_pcount() == 2 && HB_ISCHAR( 1 ) && HB_ISNUM( 2 ) ) - { - __HB_RETPTRGC__( new QByteArray( hb_parc( 1 ), hb_parni( 2 ) ) ); - } - else if( hb_pcount() == 2 && HB_ISNUM( 1 ) && HB_ISNUM( 2 ) ) - { - __HB_RETPTRGC__( new QByteArray( hb_parni( 1 ), hb_parni( 2 ) ) ); - } - else - { - __HB_RETPTRGC__( new QByteArray() ); - } -} - - - - - - -QByteArray & append ( const QByteArray & ba ) -QByteArray & append ( const QString & str ) -//QByteArray & append ( const char * str ) -QByteArray & append ( const char * str, int len ) -QByteArray & append ( char ch ) - -char at ( int i ) const -int capacity () const -void chop ( int n ) -void clear () -const char * constData () const -// bool contains ( const QByteArray & ba ) const -// bool contains ( const char * str ) const -// bool contains ( char ch ) const -int count ( const QByteArray & ba ) const -int count ( const char * str ) const -int count ( char ch ) const -int count () const -// char * data () -const char * data () const -bool endsWith ( const QByteArray & ba ) const -bool endsWith ( const char * str ) const -bool endsWith ( char ch ) const -QByteArray & fill ( char ch, int size = -1 ) - -int indexOf ( const QByteArray & ba, int from = 0 ) const -int indexOf ( const QString & str, int from = 0 ) const -//int indexOf ( const char * str, int from = 0 ) const -int indexOf ( char ch, int from = 0 ) const - -QByteArray & insert ( int i, const QByteArray & ba ) -QByteArray & insert ( int i, const QString & str ) -//QByteArray & insert ( int i, const char * str ) -QByteArray & insert ( int i, char ch ) - -bool isEmpty () const -bool isNull () const - -int lastIndexOf ( const QByteArray & ba, int from = -1 ) const -int lastIndexOf ( const QString & str, int from = -1 ) const -//int lastIndexOf ( const char * str, int from = -1 ) const -int lastIndexOf ( char ch, int from = -1 ) const - -QByteArray left ( int len ) const -QByteArray leftJustified ( int width, char fill = ' ', bool truncate = false ) const -int length () const -QByteArray mid ( int pos, int len = -1 ) const - -QByteArray & prepend ( const QByteArray & ba ) -QByteArray & prepend ( const char * str ) -QByteArray & prepend ( char ch ) - -void push_back ( const QByteArray & other ) -void push_back ( const char * str ) -void push_back ( char ch ) - -void push_front ( const QByteArray & other ) -void push_front ( const char * str ) -void push_front ( char ch ) - -QByteArray & remove ( int pos, int len ) -QByteArray repeated ( int times ) const - -QByteArray & replace ( int pos, int len, const QByteArray & after ) -QByteArray & replace ( int pos, int len, const char * after ) -QByteArray & replace ( const QByteArray & before, const QByteArray & after ) -QByteArray & replace ( const char * before, const QByteArray & after ) -QByteArray & replace ( const char * before, int bsize, const char * after, int asize ) -QByteArray & replace ( const QByteArray & before, const char * after ) -QByteArray & replace ( const QString & before, const QByteArray & after ) -QByteArray & replace ( const QString & before, const char * after ) -//QByteArray & replace ( const char * before, const char * after ) -QByteArray & replace ( char before, const QByteArray & after ) -QByteArray & replace ( char before, const QString & after ) -//QByteArray & replace ( char before, const char * after ) -QByteArray & replace ( char before, char after ) - -void reserve ( int size ) -void resize ( int size ) -QByteArray right ( int len ) const -QByteArray rightJustified ( int width, char fill = ' ', bool truncate = false ) const - -QByteArray & setNum ( int n, int base = 10 ) -//QByteArray & setNum ( uint n, int base = 10 ) -//QByteArray & setNum ( short n, int base = 10 ) -//QByteArray & setNum ( ushort n, int base = 10 ) -//QByteArray & setNum ( qlonglong n, int base = 10 ) -//QByteArray & setNum ( qulonglong n, int base = 10 ) -//QByteArray & setNum ( double n, char f = 'g', int prec = 6 ) -//QByteArray & setNum ( float n, char f = 'g', int prec = 6 ) - -QByteArray simplified () const -int size () const -QList split ( char sep ) const -void squeeze () -bool startsWith ( const QByteArray & ba ) const -bool startsWith ( const char * str ) const -bool startsWith ( char ch ) const -QByteArray toBase64 () const -double toDouble ( bool * ok = 0 ) const -float toFloat ( bool * ok = 0 ) const -QByteArray toHex () const -int toInt ( bool * ok = 0, int base = 10 ) const -long toLong ( bool * ok = 0, int base = 10 ) const -qlonglong toLongLong ( bool * ok = 0, int base = 10 ) const -QByteArray toLower () const -QByteArray toPercentEncoding ( const QByteArray & exclude = QByteArray(), const QByteArray & include = QByteArray(), char percent = '%' ) const -short toShort ( bool * ok = 0, int base = 10 ) const -uint toUInt ( bool * ok = 0, int base = 10 ) const -ulong toULong ( bool * ok = 0, int base = 10 ) const -qulonglong toULongLong ( bool * ok = 0, int base = 10 ) const -ushort toUShort ( bool * ok = 0, int base = 10 ) const -QByteArray toUpper () const -QByteArray trimmed () const -void truncate ( int pos ) - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QChar.qth b/harbour/contrib/hbqt/qtcore/qth/QChar.qth deleted file mode 100644 index 6ce6e7ac89..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QChar.qth +++ /dev/null @@ -1,113 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = -New = -Destructor = no - - - - - - - - - -#include - - -/* - * QChar () - * QChar ( char ch ) - * QChar ( uchar ch ) - * QChar ( QLatin1Char ch ) - * QChar ( uchar cell, uchar row ) - * QChar ( ushort code ) - * QChar ( short code ) - * QChar ( uint code ) - * QChar ( int code ) - * QChar ( SpecialCharacter ch ) - */ -HB_FUNC( QT_QCHAR ) -{ - if( hb_pcount() >= 1 && hbqt_par_isDerivedFrom( 1, "QLATIN1CHAR" ) ) - { - __HB_RETPTRGC__( new QChar( *hbqt_par_QLatin1Char( 1 ) ) ); - } - else if( hb_pcount() == 1 && HB_ISNUM( 1 ) ) - { - __HB_RETPTRGC__( new QChar( hb_parni( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QChar() ); - } -} - - - -enum Category { Mark_NonSpacing, Mark_SpacingCombining, Mark_Enclosing, Number_DecimalDigit, ..., NoCategory } -enum Decomposition { NoDecomposition, Canonical, Circle, Compat, ..., Wide } -enum Direction { DirAL, DirAN, DirB, DirBN, ..., DirWS } -enum Joining { Center, Dual, OtherJoining, Right } -enum SpecialCharacter { Null, Nbsp, ReplacementCharacter, ObjectReplacementCharacter, ..., LineSeparator } -enum UnicodeVersion { Unicode_1_1, Unicode_2_0, Unicode_2_1_2, Unicode_3_0, ..., Unicode_Unassigned } - - - -Category category () const -uchar cell () const -unsigned char combiningClass () const -QString decomposition () const -Decomposition decompositionTag () const -int digitValue () const -Direction direction () const -bool hasMirrored () const -bool isDigit () const -bool isHighSurrogate () const -bool isLetter () const -bool isLetterOrNumber () const -bool isLowSurrogate () const -bool isLower () const -bool isMark () const -bool isNull () const -bool isNumber () const -bool isPrint () const -bool isPunct () const -bool isSpace () const -bool isSymbol () const -bool isTitleCase () const -bool isUpper () const -Joining joining () const -QChar mirroredChar () const -uchar row () const -char toAscii () const -QChar toCaseFolded () const -char toLatin1 () const -QChar toLower () const -QChar toTitleCase () const -QChar toUpper () const -ushort & unicode () -//ushort unicode () const -UnicodeVersion unicodeVersion () const - - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QChildEvent.qth b/harbour/contrib/hbqt/qtcore/qth/QChildEvent.qth deleted file mode 100644 index 815c625ebb..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QChildEvent.qth +++ /dev/null @@ -1,61 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = QEvent -Type = -New = - - - -#include - - -/* - * QChildEvent ( Type type, QObject * child ) - */ -HB_FUNC( QT_QCHILDEVENT ) -{ - if( hb_pcount() == 2 && HB_ISNUM( 1 ) && hbqt_par_isDerivedFrom( 2, "QOBJECT" ) ) - { - __HB_RETPTRGC__( new QChildEvent( ( QEvent::Type ) hb_parni( 1 ), hbqt_par_QObject( 2 ) ) ); - } - else - { - hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - } -} - - - - - - -bool added () const -QObject * child () const -bool polished () const -bool removed () const - - - - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QCoreApplication.qth b/harbour/contrib/hbqt/qtcore/qth/QCoreApplication.qth deleted file mode 100644 index 0cda7ec989..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QCoreApplication.qth +++ /dev/null @@ -1,92 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -Inherit = QObject -Type = Core -New = -Constructor = No - - - - -#include -#include - -/* - * QCoreApplication ( int & argc, char ** argv ) - * ~QCoreApplication () - */ -HB_FUNC( QT_QCOREAPPLICATION ) -{ - -} - - - -enum Encoding { CodecForTr, UnicodeUTF8, DefaultCodec } - - - -// bool filterEvent ( void * message, long * result ) -virtual bool notify ( QObject * receiver, QEvent * event ) -// EventFilter setEventFilter ( EventFilter filter ) -// virtual bool winEventFilter ( MSG * msg, long * result ) - -void addLibraryPath ( const QString & path ) -QString applicationDirPath () -QString applicationFilePath () -QString applicationName () -qint64 applicationPid () -QString applicationVersion () -QStringList arguments () -bool closingDown () -int exec () -void exit ( int returnCode = 0 ) -void flush () -bool hasPendingEvents () -void installTranslator ( QTranslator * translationFile ) -QCoreApplication * instance () -QStringList libraryPaths () -QString organizationDomain () -QString organizationName () -void postEvent ( QObject * receiver, QEvent * event ) -void postEvent ( QObject * receiver, QEvent * event, int priority ) -void processEvents ( QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents ) -void processEvents ( QEventLoop::ProcessEventsFlags flags, int maxtime ) -void removeLibraryPath ( const QString & path ) -void removePostedEvents ( QObject * receiver ) -void removePostedEvents ( QObject * receiver, int eventType ) -void removeTranslator ( QTranslator * translationFile ) -bool sendEvent ( QObject * receiver, QEvent * event ) -void sendPostedEvents ( QObject * receiver, int event_type ) -void sendPostedEvents () -void setApplicationName ( const QString & application ) -void setApplicationVersion ( const QString & version ) -void setAttribute ( Qt::ApplicationAttribute attribute, bool on = true ) -void setLibraryPaths ( const QStringList & paths ) -void setOrganizationDomain ( const QString & orgDomain ) -void setOrganizationName ( const QString & orgName ) -bool startingUp () -bool testAttribute ( Qt::ApplicationAttribute attribute ) -QString translate ( const char * context, const char * sourceText, const char * disambiguation, Encoding encoding, int n ) -QString translate ( const char * context, const char * sourceText, const char * disambiguation = 0, Encoding encoding = CodecForTr ) - - - -void quit () - - - -void aboutToQuit () - diff --git a/harbour/contrib/hbqt/qtcore/qth/QDataStream.qth b/harbour/contrib/hbqt/qtcore/qth/QDataStream.qth deleted file mode 100644 index d54a32a213..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QDataStream.qth +++ /dev/null @@ -1,81 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = Core -New = -Destructor = - - - -#include - - -/* QDataStream () - * QDataStream ( QIODevice * d ) - * QDataStream ( QByteArray * a, QIODevice::OpenMode mode ) - * QDataStream ( const QByteArray & a ) - * virtual ~QDataStream () - */ -HB_FUNC( QT_QDATASTREAM ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QIODEVICE" ) ) - { - __HB_RETPTRGC__( new QDataStream( hbqt_par_QIODevice( 1 ) ) ); - } - else if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QBYTEARRAY" ) ) - { - __HB_RETPTRGC__( new QDataStream( *hbqt_par_QByteArray( 1 ) ) ); - } - else if( hb_pcount() == 2 && hbqt_par_isDerivedFrom( 1, "QBYTEARRAY" ) && HB_ISNUM( 2 ) ) - { - __HB_RETPTRGC__( new QDataStream( hbqt_par_QByteArray( 1 ), ( QIODevice::OpenMode ) hb_parni( 2 ) ) ); - } - else - { - __HB_RETPTRGC__( new QDataStream() ); - } -} - - - -enum ByteOrder { BigEndian, LittleEndian } -enum Status { Ok, ReadPastEnd, ReadCorruptData } -enum Version { Qt_1_0, Qt_2_0, Qt_2_1, Qt_3_0, ..., Qt_4_5 } - - - -bool atEnd () const -ByteOrder byteOrder () const -QIODevice * device () const -//QDataStream & readBytes ( char *& s, uint & l ) -int readRawData ( char * s, int len ) -void resetStatus () -void setByteOrder ( ByteOrder bo ) -void setDevice ( QIODevice * d ) -void setStatus ( Status status ) -void setVersion ( int v ) -int skipRawData ( int len ) -Status status () const -int version () const -//QDataStream & writeBytes ( const char * s, uint len ) -int writeRawData ( const char * s, int len ) - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QDate.qth b/harbour/contrib/hbqt/qtcore/qth/QDate.qth deleted file mode 100644 index b8e7abf35b..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QDate.qth +++ /dev/null @@ -1,76 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = Core -New = -Destructor = - - - -#include - - -/* QDate () - * QDate ( int y, int m, int d ) - */ -HB_FUNC( QT_QDATE ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QDATE" ) ) - { - __HB_RETPTRGC__( new QDate( *hbqt_par_QDate( 1 ) ) ); - } - else if( hb_pcount() == 3 && HB_ISNUM( 1 ) && HB_ISNUM( 2 ) && HB_ISNUM( 3 )) - { - __HB_RETPTRGC__( new QDate( hb_parni( 1 ), hb_parni( 2 ), hb_parni( 3 ) ) ); - } - else - { - __HB_RETPTRGC__( new QDate() ); - } -} - - - -enum MonthNameType { DateFormat, StandaloneFormat } - - - -QDate addDays ( int ndays ) const -QDate addMonths ( int nmonths ) const -QDate addYears ( int nyears ) const -int day () const -int dayOfWeek () const -int dayOfYear () const -int daysInMonth () const -int daysInYear () const -int daysTo ( const QDate & d ) const -void getDate ( int * year, int * month, int * day ) -bool isNull () const -bool isValid () const -int month () const -bool setDate ( int year, int month, int day ) -int toJulianDay () const -QString toString ( const QString & format ) const -QString toString ( Qt::DateFormat format = Qt::TextDate ) const -int weekNumber ( int * yearNumber = 0 ) const -int year () const - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QDateTime.qth b/harbour/contrib/hbqt/qtcore/qth/QDateTime.qth deleted file mode 100644 index 370357a298..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QDateTime.qth +++ /dev/null @@ -1,94 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = Core -New = - - - -#include - - -/* - * QDateTime () - * QDateTime ( const QDate & date ) - * QDateTime ( const QDate & date, const QTime & time, Qt::TimeSpec spec = Qt::LocalTime ) - * QDateTime ( const QDateTime & other ) - * ~QDateTime () - */ -HB_FUNC( QT_QDATETIME ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QDATE" ) ) - { - __HB_RETPTRGC__( new QDateTime( *hbqt_par_QDate( 1 ) ) ); - } - else if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QDATETIME" ) ) - { - __HB_RETPTRGC__( new QDateTime( *hbqt_par_QDateTime( 1 ) ) ); - } - else if( hb_pcount() >= 2 && hbqt_par_isDerivedFrom( 2, "QDATE" ) && hbqt_par_isDerivedFrom( 3, "QTIME" ) ) - { - __HB_RETPTRGC__( new QDateTime( *hbqt_par_QDate( 1 ), *hbqt_par_QTime( 2 ), HB_ISNUM( 3 ) ? ( Qt::TimeSpec ) hb_parni( 3 ) : Qt::LocalTime ) ); - } - else - { - __HB_RETPTRGC__( new QDateTime() ); - } -} - - - - - - -QDateTime addDays ( int ndays ) const -QDateTime addMSecs ( qint64 msecs ) const -QDateTime addMonths ( int nmonths ) const -QDateTime addSecs ( int s ) const -QDateTime addYears ( int nyears ) const -QDate date () const -int daysTo ( const QDateTime & other ) const -bool isNull () const -bool isValid () const -int secsTo ( const QDateTime & other ) const -void setDate ( const QDate & date ) -void setTime ( const QTime & time ) -void setTimeSpec ( Qt::TimeSpec spec ) -void setTime_t ( uint seconds ) -QTime time () const -Qt::TimeSpec timeSpec () const -QDateTime toLocalTime () const -QString toString ( const QString & format ) const -QString toString ( Qt::DateFormat format = Qt::TextDate ) const -QDateTime toTimeSpec ( Qt::TimeSpec specification ) const -uint toTime_t () const -QDateTime toUTC () const - - -QDateTime currentDateTime () -QDateTime fromString ( const QString & string, Qt::DateFormat format = Qt::TextDate ) -QDateTime fromString ( const QString & string, const QString & format ) -QDateTime fromTime_t ( uint seconds ) - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QDir.qth b/harbour/contrib/hbqt/qtcore/qth/QDir.qth deleted file mode 100644 index 3683b290c5..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QDir.qth +++ /dev/null @@ -1,126 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - -; Header File to Generate Sources -; - - -QObject = no -New = pParent - - - -#include - - -/* - * QDir ( const QDir & dir ) - * QDir ( const QString & path = QString() ) - * QDir ( const QString & path, const QString & nameFilter, SortFlags sort = SortFlags( Name | IgnoreCase ), Filters filters = AllEntries ) - * ~QDir () - */ -HB_FUNC( QT_QDIR ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QDIR" ) ) - { - __HB_RETPTRGC__( new QDir( *hbqt_par_QDir( 1 ) ) ); - } - else if( hb_pcount() == 1 && HB_ISCHAR( 1 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QDir( hb_parstr_utf8( 1, &pText01, NULL ) ) ); - hb_strfree( pText01 ); - } - else if( hb_pcount() >= 2 && HB_ISCHAR( 1 ) && HB_ISCHAR( 2 ) ) - { - void * pText01 = NULL; - void * pText02 = NULL; - __HB_RETPTRGC__( new QDir( hb_parstr_utf8( 1, &pText01, NULL ), hb_parstr_utf8( 2, &pText02, NULL ), HB_ISNUM( 3 ) ? ( QDir::SortFlag ) hb_parni( 3 ) : ( QDir::Name | QDir::IgnoreCase ), HB_ISNUM( 4 ) ? ( QDir::Filter ) hb_parni( 4 ) : QDir::AllEntries ) ); - hb_strfree( pText01 ); - hb_strfree( pText02 ); - } - else - { - __HB_RETPTRGC__( new QDir() ); - } -} - - - - -enum Filter { Dirs, AllDirs, Files, Drives, ..., CaseSensitive } -enum SortFlag { Name, Time, Size, Type, ..., LocaleAware } -flags Filters -flags SortFlags - - - -QString absoluteFilePath ( const QString & fileName ) const -QString absolutePath () const -QString canonicalPath () const -bool cd ( const QString & dirName ) -bool cdUp () -uint count () const -QString dirName () const -QList< QFileInfo > entryInfoList ( const QStringList & nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort ) const -QList< QFileInfo > entryInfoList ( Filters filters = NoFilter, SortFlags sort = NoSort ) const -QStringList entryList ( const QStringList & nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort ) const -QStringList entryList ( Filters filters = NoFilter, SortFlags sort = NoSort ) const -bool exists ( const QString & name ) const -bool exists () const -QString filePath ( const QString & fileName ) const -Filters filter () const -bool isAbsolute () const -bool isReadable () const -bool isRelative () const -bool isRoot () const -bool makeAbsolute () -bool mkdir ( const QString & dirName ) const -bool mkpath ( const QString & dirPath ) const -QStringList nameFilters () const -QString path () const -void refresh () const -QString relativeFilePath ( const QString & fileName ) const -bool remove ( const QString & fileName ) -bool rename ( const QString & oldName, const QString & newName ) -bool rmdir ( const QString & dirName ) const -bool rmpath ( const QString & dirPath ) const -void setFilter ( Filters filters ) -void setNameFilters ( const QStringList & nameFilters ) -void setPath ( const QString & path ) -void setSorting ( SortFlags sort ) -SortFlags sorting () const - - -void addSearchPath ( const QString & prefix, const QString & path ) -QString cleanPath ( const QString & path ) -QDir current () -QString currentPath () -QList< QFileInfo > drives () -QString fromNativeSeparators ( const QString & pathName ) -QDir home () -QString homePath () -bool isAbsolutePath ( const QString & path ) -bool isRelativePath ( const QString & path ) -bool match ( const QString & filter, const QString & fileName ) -bool match ( const QStringList & filters, const QString & fileName ) -QDir root () -QString rootPath () -QStringList searchPaths ( const QString & prefix ) -QChar separator () -bool setCurrent ( const QString & path ) -void setSearchPaths ( const QString & prefix, const QStringList & searchPaths ) -QDir temp () -QString tempPath () -QString toNativeSeparators ( const QString & pathName ) - diff --git a/harbour/contrib/hbqt/qtcore/qth/QEvent.qth b/harbour/contrib/hbqt/qtcore/qth/QEvent.qth deleted file mode 100644 index df0ad63148..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QEvent.qth +++ /dev/null @@ -1,64 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Type = Core -New = nType - - - -#include - - -/* - * QEvent ( Type type ) - * ~QEvent () - */ -HB_FUNC( QT_QEVENT ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QEVENT" ) ) - { - __HB_RETPTRGC__( new QEvent( *hbqt_par_QEvent( 1 ) ) ); - } - else if( hb_pcount() == 1 && HB_ISNUM( 1 ) ) - { - __HB_RETPTRGC__( new QEvent( ( QEvent::Type ) hb_parni( 1 ) ) ); - } - else - { - hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - } -} - - - -enum Type { None, AccessibilityDescription, AccessibilityHelp, AccessibilityPrepare, ..., MaxUser } - - - -void accept () -void ignore () -bool isAccepted () const -void setAccepted ( bool accepted ) -bool spontaneous () const -Type type () const - -int registerEventType ( int hint = -1 ) - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QEventLoop.qth b/harbour/contrib/hbqt/qtcore/qth/QEventLoop.qth deleted file mode 100644 index 4c98cba592..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QEventLoop.qth +++ /dev/null @@ -1,59 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -Inherit = QObject -Type = Core -New = pObject - - - -#include -#include - -/* - * QEventLoop ( QObject * parent = 0 ) - * ~QEventLoop () - */ -HB_FUNC( QT_QEVENTLOOP ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) ) - { - __HB_RETPTRGC__( new QEventLoop( hbqt_par_QObject( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QEventLoop( 0 ) ); - } -} - - - -enum ProcessEventsFlag { AllEvents, ExcludeUserInputEvents, ExcludeSocketNotifiers, WaitForMoreEvents, DeferredDeletion } -flags ProcessEventsFlags - - - -int exec ( ProcessEventsFlags flags = AllEvents ) -void exit ( int returnCode = 0 ) -bool isRunning () const -bool processEvents ( ProcessEventsFlags flags = AllEvents ) -void processEvents ( ProcessEventsFlags flags, int maxTime ) -void wakeUp () - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QFile.qth b/harbour/contrib/hbqt/qtcore/qth/QFile.qth deleted file mode 100644 index a95e91ffcc..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QFile.qth +++ /dev/null @@ -1,116 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = -Inherit = QIODevice -Type = Core -New = -Destructor = - - - -#include - - -/* QFile ( const QString & name ) - * QFile ( QObject * parent ) - * QFile ( const QString & name, QObject * parent ) - * ~QFile () - */ -HB_FUNC( QT_QFILE ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QFILE" ) ) - { - __HB_RETPTRGC__( new QFile( hbqt_par_QFile( 1 ) ) ); - } - else if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) ) - { - __HB_RETPTRGC__( new QFile( hbqt_par_QObject( 1 ) ) ); - } - else if( hb_pcount() == 1 && HB_ISCHAR( 1 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QFile( hb_parstr_utf8( 1, &pText01, NULL ) ) ); - hb_strfree( pText01 ); - } - else if( hb_pcount() == 2 && HB_ISCHAR( 1 ) && hbqt_par_isDerivedFrom( 2, "QOBJECT" ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QFile( hb_parstr_utf8( 1, &pText01, NULL ), hbqt_par_QObject( 2 ) ) ); - hb_strfree( pText01 ); - } - else - { - __HB_RETPTRGC__( new QFile() ); - } -} - - - -enum FileError { NoError, ReadError, WriteError, FatalError, ..., CopyError } -enum MemoryMapFlags { NoOptions } -enum Permission { ReadOwner, WriteOwner, ExeOwner, ReadUser, ..., ExeOther } -flags Permissions - -flags OpenMode -enum OpenModeFlag { NotOpen, ReadOnly, WriteOnly, ReadWrite, ..., Unbuffered } - - - -virtual bool atEnd () const -virtual void close () -bool copy ( const QString & newName ) -FileError error () const -bool exists () const -QString fileName () const -bool flush () -int handle () const -virtual bool isSequential () const -bool link ( const QString & linkName ) -uchar * map ( qint64 offset, qint64 size, MemoryMapFlags flags = NoOptions ) -virtual bool open ( OpenMode mode ) -// bool open ( FILE * fh, OpenMode mode ) -bool open ( int fd, OpenMode mode ) -Permissions permissions () const -bool remove () -bool rename ( const QString & newName ) -bool resize ( qint64 sz ) -void setFileName ( const QString & name ) -bool setPermissions ( Permissions permissions ) -virtual qint64 size () const -QString symLinkTarget () const -// bool unmap ( uchar * address ) -void unsetError () - -bool copy ( const QString & fileName, const QString & newName ) -//QString decodeName ( const QByteArray & localFileName ) -QString decodeName ( const char * localFileName ) -QByteArray encodeName ( const QString & fileName ) -bool exists ( const QString & fileName ) -bool link ( const QString & fileName, const QString & linkName ) -Permissions permissions ( const QString & fileName ) -bool remove ( const QString & fileName ) -bool rename ( const QString & oldName, const QString & newName ) -bool resize ( const QString & fileName, qint64 sz ) -// void setDecodingFunction ( DecoderFn function ) -// void setEncodingFunction ( EncoderFn function ) -bool setPermissions ( const QString & fileName, Permissions permissions ) -QString symLinkTarget ( const QString & fileName ) - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QFileInfo.qth b/harbour/contrib/hbqt/qtcore/qth/QFileInfo.qth deleted file mode 100644 index 093e2abba0..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QFileInfo.qth +++ /dev/null @@ -1,119 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = Core -New = -Destructor = - - - -#include -#include -#include - - -/* QFileInfo () - * QFileInfo ( const QString & file ) - * QFileInfo ( const QFile & file ) - * QFileInfo ( const QDir & dir, const QString & file ) - * QFileInfo ( const QFileInfo & fileinfo ) - * ~QFileInfo () - */ -HB_FUNC( QT_QFILEINFO ) -{ - if( hb_pcount() == 1 && HB_ISCHAR( 1 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QFileInfo( hb_parstr_utf8( 1, &pText01, NULL ) ) ); - hb_strfree( pText01 ); - } - else if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QFILE" ) ) - { - __HB_RETPTRGC__( new QFileInfo( *hbqt_par_QFile( 1 ) ) ); - } - else if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QFILEINFO" ) ) - { - __HB_RETPTRGC__( new QFileInfo( *hbqt_par_QFileInfo( 1 ) ) ); - } - if( hb_pcount() == 2 && hbqt_par_isDerivedFrom( 1, "QDIR" ) && HB_ISCHAR( 2 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QFileInfo( *hbqt_par_QDir( 1 ), hb_parstr_utf8( 2, &pText01, NULL ) ) ); - hb_strfree( pText01 ); - } - else - { - __HB_RETPTRGC__( new QFileInfo() ); - } -} - - - -flags PermissionSpec - - - -QDir absoluteDir () const -QString absoluteFilePath () const -QString absolutePath () const -QString baseName () const -QString bundleName () const -bool caching () const -QString canonicalFilePath () const -QString canonicalPath () const -QString completeBaseName () const -QString completeSuffix () const -QDateTime created () const -QDir dir () const -bool exists () const -QString fileName () const -QString filePath () const -QString group () const -uint groupId () const -bool isAbsolute () const -bool isBundle () const -bool isDir () const -bool isExecutable () const -bool isFile () const -bool isHidden () const -bool isReadable () const -bool isRelative () const -bool isRoot () const -bool isSymLink () const -bool isWritable () const -QDateTime lastModified () const -QDateTime lastRead () const -bool makeAbsolute () -QString owner () const -uint ownerId () const -QString path () const -bool permission ( QFile::Permissions permissions ) const -QFile::Permissions permissions () const -void refresh () -void setCaching ( bool enable ) -void setFile ( const QString & file ) -void setFile ( const QFile & file ) -void setFile ( const QDir & dir, const QString & file ) -qint64 size () const -QString suffix () const -QString symLinkTarget () const - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QFileSystemWatcher.qth b/harbour/contrib/hbqt/qtcore/qth/QFileSystemWatcher.qth deleted file mode 100644 index 9c7e50fe3f..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QFileSystemWatcher.qth +++ /dev/null @@ -1,68 +0,0 @@ -/* - * $Id: QFileSystemWatcher.qth 16548 2011-04-07 23:13:20Z vouchcac $ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -Inherit = QObject -Type = Core -New = -Destructor = - - - -#include - -/* QFileSystemWatcher ( QObject * parent = 0 ) - * QFileSystemWatcher ( const QStringList & paths, QObject * parent = 0 ) - * ~QFileSystemWatcher () - */ - -HB_FUNC( QT_QFILESYSTEMWATCHER ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QSTRINGLIST" ) ) - { - __HB_RETPTRGC__( new QFileSystemWatcher( *hbqt_par_QStringList( 1 ) ) ); - } - else if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) ) - { - __HB_RETPTRGC__( new QFileSystemWatcher( hbqt_par_QObject( 1 ) ) ); - } - else if( hb_pcount() == 2 && hbqt_par_isDerivedFrom( 1, "QSTRINGLIST" ) && hbqt_par_isDerivedFrom( 2, "QOBJECT" ) ) - { - __HB_RETPTRGC__( new QFileSystemWatcher( *hbqt_par_QStringList( 1 ), hbqt_par_QObject( 2 ) ) ); - } - else - { - __HB_RETPTRGC__( new QFileSystemWatcher() ); - } -} - - - - - - -void addPath ( const QString & path ) -void addPaths ( const QStringList & paths ) -QStringList directories () const -QStringList files () const -void removePath ( const QString & path ) -void removePaths ( const QStringList & paths ) - - - - - - -void directoryChanged ( const QString & path ) -void fileChanged ( const QString & path ) - diff --git a/harbour/contrib/hbqt/qtcore/qth/QGenericArgument.qth b/harbour/contrib/hbqt/qtcore/qth/QGenericArgument.qth deleted file mode 100644 index b3180e0c82..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QGenericArgument.qth +++ /dev/null @@ -1,68 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = NO -Inherit = -Type = -New = - - - - - - - - - -#include - - -/* - * QGenericArgument ( const char * name = 0, const void * data = 0 ) - * - */ -HB_FUNC( QT_QGENERICARGUMENT ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QGENERICARGUMENT" ) ) - { - __HB_RETPTRGC__( new QGenericArgument( *hbqt_par_QGenericArgument( 1 ) ) ); - } - else if( hb_pcount() == 1 && HB_ISCHAR( 1 ) ) - { - __HB_RETPTRGC__( new QGenericArgument( hb_parc( 1 ), 0 ) ); - } - else if( hb_pcount() == 2 && HB_ISCHAR( 1 ) && HB_ISPOINTER( 2 ) ) - { - __HB_RETPTRGC__( new QGenericArgument( hb_parc( 1 ), hb_parptr( 2 ) ) ); - } - else - { - __HB_RETPTRGC__( new QGenericArgument() ); - } -} - - - - - - -void * data () const -const char * name () const - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QGenericReturnArgument.qth b/harbour/contrib/hbqt/qtcore/qth/QGenericReturnArgument.qth deleted file mode 100644 index 3d97988291..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QGenericReturnArgument.qth +++ /dev/null @@ -1,66 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = QGenericArgument -Type = -New = - - - - - - - - - -#include - - -/* - * QGenericArgument ( const char * name = 0, const void * data = 0 ) - * - */ -HB_FUNC( QT_QGENERICRETURNARGUMENT ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QGENERICRETURNARGUMENT" ) ) - { - __HB_RETPTRGC__( new QGenericReturnArgument( *hbqt_par_QGenericReturnArgument( 1 ) ) ); - } - else if( hb_pcount() == 1 && HB_ISCHAR( 1 ) ) - { - __HB_RETPTRGC__( new QGenericReturnArgument( hb_parc( 1 ), 0 ) ); - } - else if( hb_pcount() == 2 && HB_ISCHAR( 1 ) && HB_ISPOINTER( 2 ) ) - { - __HB_RETPTRGC__( new QGenericReturnArgument( hb_parc( 1 ), hb_parptr( 2 ) ) ); - } - else - { - __HB_RETPTRGC__( new QGenericReturnArgument() ); - } -} - - - - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QIODevice.qth b/harbour/contrib/hbqt/qtcore/qth/QIODevice.qth deleted file mode 100644 index 53262b90a0..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QIODevice.qth +++ /dev/null @@ -1,92 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -Inherit = QObject -Type = Core -New = -Constructor = no - - - -#include - - -/* - * QIODevice () - * QIODevice ( QObject * parent ) - * ~QIODevice () - */ -HB_FUNC( QT_QIODEVICE ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) ) - { - // __HB_RETPTRGC__( new QIODevice( hbqt_par_QObject( 1 ) ) ); - } -} - - - -flags OpenMode -enum OpenModeFlag { NotOpen, ReadOnly, WriteOnly, ReadWrite, ..., Unbuffered } - - - -virtual bool atEnd () const -virtual qint64 bytesAvailable () const -virtual qint64 bytesToWrite () const -virtual bool canReadLine () const -virtual void close () -QString errorString () const -bool getChar ( char * c ) -bool isOpen () const -bool isReadable () const -virtual bool isSequential () const -bool isTextModeEnabled () const -bool isWritable () const -virtual bool open ( OpenMode mode ) -OpenMode openMode () const -qint64 peek ( char * data, qint64 maxSize ) -QByteArray peek ( qint64 maxSize ) -virtual qint64 pos () const -bool putChar ( char c ) -qint64 read ( char * data, qint64 maxSize ) -QByteArray read ( qint64 maxSize ) -QByteArray readAll () -qint64 readLine ( char * data, qint64 maxSize ) -QByteArray readLine ( qint64 maxSize = 0 ) -virtual bool reset () -virtual bool seek ( qint64 pos ) -void setTextModeEnabled ( bool enabled ) -virtual qint64 size () const -void ungetChar ( char c ) -virtual bool waitForBytesWritten ( int msecs ) -virtual bool waitForReadyRead ( int msecs ) -qint64 write ( const char * data, qint64 maxSize ) -qint64 write ( const char * data ) -qint64 write ( const QByteArray & byteArray ) - - - - - - -void aboutToClose () -void bytesWritten ( qint64 bytes ) -void readChannelFinished () -void readyRead () - - - - - \ No newline at end of file diff --git a/harbour/contrib/hbqt/qtcore/qth/QLatin1Char.qth b/harbour/contrib/hbqt/qtcore/qth/QLatin1Char.qth deleted file mode 100644 index 6991ecb6d3..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QLatin1Char.qth +++ /dev/null @@ -1,64 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = Core -New = - - - -#include - - -/* - * QLatin1Char ( char c ) - */ -HB_FUNC( QT_QLATIN1CHAR ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QLatin1Char" ) ) - { - __HB_RETPTRGC__( new QLatin1Char( *hbqt_par_QLatin1Char( 1 ) ) ); - } - else if( hb_pcount() == 1 && HB_ISCHAR( 1 ) ) - { - __HB_RETPTRGC__( new QLatin1Char( *hb_parcx( 1 ) ) ); - } - else if( hb_pcount() == 1 && HB_ISNUM( 1 ) ) - { - __HB_RETPTRGC__( new QLatin1Char( ( char ) hb_parni( 1 ) ) ); - } - else - { - hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - } -} - - - - - - -char toLatin1 () const -ushort unicode () const - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QLatin1String.qth b/harbour/contrib/hbqt/qtcore/qth/QLatin1String.qth deleted file mode 100644 index 9373250931..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QLatin1String.qth +++ /dev/null @@ -1,59 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = Core -New = - - - -#include - - -/* - * QLatin1String ( const char * str ) - */ -HB_FUNC( QT_QLATIN1STRING ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QLATIN1STRING" ) ) - { - __HB_RETPTRGC__( new QLatin1String( *hbqt_par_QLatin1String( 1 ) ) ); - } - else if( hb_pcount() == 1 && HB_ISCHAR( 1 ) ) - { - __HB_RETPTRGC__( new QLatin1String( hb_parcx( 1 ) ) ); - } - else - { - hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - } -} - - - - - - -const char * latin1 () const - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QLibraryInfo.qth b/harbour/contrib/hbqt/qtcore/qth/QLibraryInfo.qth deleted file mode 100644 index 968e6f0d56..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QLibraryInfo.qth +++ /dev/null @@ -1,71 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = -New = -Constructor = - - - - - - - - - -#include -#include - - -/* - * - * - */ -HB_FUNC( QT_QLIBRARYINFO ) -{ - HB_FUNC_EXEC( HB_QLIBRARYINFO ); -} - - - -enum LibraryLocation { PrefixPath, DocumentationPath, HeadersPath, LibrariesPath, BinariesPath, PluginsPath, ImportsPath, DataPath, TranslationsPath, SettingsPath, ExamplesPath, DemosPath } - - - -QDate buildDate (){ - #if QT_VERSION >= 0x040600 - hb_itemReturnRelease( hbqt_bindGetHbObject( NULL, new QDate( QLibraryInfo::buildDate() ), "HB_QDATE", hbqt_del_QDate, HBQT_BIT_OWNER ) ); - #endif -} -QString buildKey (){ - hb_retstr_utf8( QLibraryInfo::buildKey().toUtf8().data() ); -} -QString licensedProducts (){ - hb_retstr_utf8( QLibraryInfo::licensedProducts().toUtf8().data() ); -} -QString licensee (){ - hb_retstr_utf8( QLibraryInfo::licensee().toUtf8().data() ); -} -QString location ( LibraryLocation loc ){ - hb_retstr_utf8( QLibraryInfo::location( ( QLibraryInfo::LibraryLocation ) hb_parni( 1 ) ).toUtf8().data() ); -} - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QLine.qth b/harbour/contrib/hbqt/qtcore/qth/QLine.qth deleted file mode 100644 index 869501bb5d..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QLine.qth +++ /dev/null @@ -1,79 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = PlainObject -New = - - - -#include - - -/* - * QLine () - * QLine ( const QPoint & p1, const QPoint & p2 ) - * QLine ( int x1, int y1, int x2, int y2 ) - * QLine ( const QLine & other ) - */ -HB_FUNC( QT_QLINE ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QLINE" ) ) - { - __HB_RETPTRGC__( new QLine( *hbqt_par_QLine( 1 ) ) ); - } - else if( hb_pcount() == 2 && hbqt_par_isDerivedFrom( 1, "QPOINT" ) && hbqt_par_isDerivedFrom( 2, "QPOINT" ) ) - { - __HB_RETPTRGC__( new QLine( *hbqt_par_QPoint( 1 ), *hbqt_par_QPoint( 2 ) ) ); - } - else if( hb_pcount() == 4 && HB_ISNUM( 1 ) && HB_ISNUM( 2 ) && HB_ISNUM( 3 ) && HB_ISNUM( 4 ) ) - { - __HB_RETPTRGC__( new QLine( hb_parni( 1 ), hb_parni( 2 ), hb_parni( 3 ), hb_parni( 4 ) ) ); - } - else - { - __HB_RETPTRGC__( new QLine() ); - } -} - - - - - - -QPoint p1 () const -QPoint p2 () const -int x1 () const -int x2 () const -int y1 () const -int y2 () const -int dx () const -int dy () const -bool isNull () const -void setP1 ( const QPoint & p1 ) -void setP2 ( const QPoint & p2 ) -void setLine ( int x1, int y1, int x2, int y2 ) -void setPoints ( const QPoint & p1, const QPoint & p2 ) -void translate ( const QPoint & offset ) -void translate ( int dx, int dy ) -QLine translated ( const QPoint & offset ) const -QLine translated ( int dx, int dy ) const - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QLineF.qth b/harbour/contrib/hbqt/qtcore/qth/QLineF.qth deleted file mode 100644 index deccefbf47..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QLineF.qth +++ /dev/null @@ -1,94 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = Core -New = -Destructor = - - - -#include - - -/* QLineF () - * QLineF ( const QPointF & p1, const QPointF & p2 ) - * QLineF ( qreal x1, qreal y1, qreal x2, qreal y2 ) - * QLineF ( const QLine & line ) - */ -HB_FUNC( QT_QLINEF ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QLINEF" ) ) - { - __HB_RETPTRGC__( new QLineF( *hbqt_par_QLineF( 1 ) ) ); - } - else if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QLINE" ) ) - { - __HB_RETPTRGC__( new QLineF( *hbqt_par_QLine( 1 ) ) ); - } - else if( hb_pcount() == 2 && hbqt_par_isDerivedFrom( 1, "QPOINT" ) && hbqt_par_isDerivedFrom( 2, "QPOINT" ) ) - { - __HB_RETPTRGC__( new QLineF( *hbqt_par_QPoint( 1 ), *hbqt_par_QPoint( 2 ) ) ); - } - else if( hb_pcount() == 4 && HB_ISNUM( 1 ) && HB_ISNUM( 2 ) && HB_ISNUM( 3 ) && HB_ISNUM( 4 ) ) - { - __HB_RETPTRGC__( new QLineF( hb_parni( 1 ), hb_parni( 2 ), hb_parni( 3 ), hb_parni( 4 ) ) ); - } - else - { - __HB_RETPTRGC__( new QLineF() ); - } -} - - - -enum IntersectType { NoIntersection, UnboundedIntersection, BoundedIntersection } - - - -QPointF p1 () const -QPointF p2 () const -qreal x1 () const -qreal x2 () const -qreal y1 () const -qreal y2 () const -qreal angle () const -qreal angleTo ( const QLineF & line ) const -qreal dx () const -qreal dy () const -IntersectType intersect ( const QLineF & line, QPointF * intersectionPoint ) const -bool isNull () const -qreal length () const -QLineF normalVector () const -QPointF pointAt ( qreal t ) const -void setP1 ( const QPointF & p1 ) -void setP2 ( const QPointF & p2 ) -void setAngle ( qreal angle ) -void setLength ( qreal length ) -void setLine ( qreal x1, qreal y1, qreal x2, qreal y2 ) -void setPoints ( const QPointF & p1, const QPointF & p2 ) -QLine toLine () const -void translate ( const QPointF & offset ) -void translate ( qreal dx, qreal dy ) -QLineF translated ( const QPointF & offset ) const -QLineF translated ( qreal dx, qreal dy ) const -QLineF unitVector () const - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QList.qth b/harbour/contrib/hbqt/qtcore/qth/QList.qth deleted file mode 100644 index 041946e5a6..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QList.qth +++ /dev/null @@ -1,113 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = Core -New = -List = yes - - - -#include - - -/* - * QList () - * QList ( const QList & other ) - * ~QList () - */ -HB_FUNC( QT_QLIST ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QLIST" ) ) - { - __HB_RETPTRGC__( new QList< void * >( *hbqt_par_QList( 1 ) ) ); - } - else - { - QList< void * >* list = NULL; - __HB_RETPTRGC__( ( QList< void * >* ) list ); - } -} - - - - - - -void append ( const T & value ) -void append ( const QList & value ) -const T & at ( int i ) const -//T & back () -const T & back () const -//iterator begin () -//const_iterator begin () const -void clear () -//const_iterator constBegin () const -//const_iterator constEnd () const -//bool contains ( const T & value ) const -int count ( const T & value ) const -int count () const -bool empty () const -//iterator end () -//const_iterator end () const -bool endsWith ( const T & value ) const -//iterator erase ( iterator pos ) -//iterator erase ( iterator begin, iterator end ) -//T & first () -const T & first () const -//T & front () -const T & front () const -int indexOf ( const T & value, int from = 0 ) const -void insert ( int i, const T & value ) -//iterator insert ( iterator before, const T & value ) -bool isEmpty () const -//T & last () -const T & last () const -int lastIndexOf ( const T & value, int from = -1 ) const -int length () const -QList mid ( int pos, int length = -1 ) const -void move ( int from, int to ) -void pop_back () -void pop_front () -void prepend ( const T & value ) -void push_back ( const T & value ) -void push_front ( const T & value ) -int removeAll ( const T & value ) -void removeAt ( int i ) -void removeFirst () -void removeLast () -bool removeOne ( const T & value ) -void replace ( int i, const T & value ) -int size () const -bool startsWith ( const T & value ) const -void swap ( int i, int j ) -T takeAt ( int i ) -T takeFirst () -T takeLast () -QSet toSet () const -//std::list toStdList () const -QVector toVector () const -T value ( int i ) const -T value ( int i, const T & defaultValue ) const - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QLocale.qth b/harbour/contrib/hbqt/qtcore/qth/QLocale.qth deleted file mode 100644 index 4e4aedd042..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QLocale.qth +++ /dev/null @@ -1,129 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = Core -New = -Destructor = - - - -#include -#include - -/* QLocale () - * QLocale ( const QString & name ) - * QLocale ( QLocale::Language language, QLocale::Country country = AnyCountry ) - * QLocale ( const QLocale & other ) - */ -HB_FUNC( QT_QLOCALE ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QLOCALE" ) ) - { - __HB_RETPTRGC__( new QLocale( *hbqt_par_QLocale( 1 ) ) ); - } - else if( hb_pcount() == 1 && HB_ISCHAR( 1 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QLocale( hb_parstr_utf8( 1, &pText01, NULL ) ) ); - hb_strfree( pText01 ); - } - else if( hb_pcount() >= 1 && HB_ISNUM( 1 ) ) - { - __HB_RETPTRGC__( new QLocale( ( QLocale::Language ) hb_parni( 1 ), HB_ISNUM( 2 ) ? ( QLocale::Country ) hb_parni( 2 ) : QLocale::AnyCountry ) ); - } - else - { - __HB_RETPTRGC__( new QLocale() ); - } -} - - - -enum Country { AnyCountry, Afghanistan, Albania, Algeria, ..., Zimbabwe } -enum FormatType { LongFormat, ShortFormat, NarrowFormat } -enum Language { C, Abkhazian, Afan, Afar, ..., Chewa } -enum MeasurementSystem { MetricSystem, ImperialSystem } -enum NumberOption { OmitGroupSeparator, RejectGroupSeparator } -flags NumberOptions - - - -QString amText () const -Country country () const -QString dateFormat ( FormatType format = LongFormat ) const -QString dateTimeFormat ( FormatType format = LongFormat ) const -QString dayName ( int day, FormatType type = LongFormat ) const -QChar decimalPoint () const -QChar exponential () const -QChar groupSeparator () const -Language language () const -MeasurementSystem measurementSystem () const -QString monthName ( int month, FormatType type = LongFormat ) const -QString name () const -QChar negativeSign () const -NumberOptions numberOptions () const -QChar percent () const -QString pmText () const -QChar positiveSign () const -void setNumberOptions ( NumberOptions options ) -QString standaloneDayName ( int day, FormatType type = LongFormat ) const -QString standaloneMonthName ( int month, FormatType type = LongFormat ) const -QString timeFormat ( FormatType format = LongFormat ) const -QDate toDate ( const QString & string, FormatType format = LongFormat ) const -QDate toDate ( const QString & string, const QString & format ) const -QDateTime toDateTime ( const QString & string, FormatType format = LongFormat ) const -QDateTime toDateTime ( const QString & string, const QString & format ) const -double toDouble ( const QString & s, bool * ok = 0 ) const -float toFloat ( const QString & s, bool * ok = 0 ) const -int toInt ( const QString & s, bool * ok = 0, int base = 0 ) const -qlonglong toLongLong ( const QString & s, bool * ok = 0, int base = 0 ) const -short toShort ( const QString & s, bool * ok = 0, int base = 0 ) const - -//QString toString ( qlonglong i ) const -QString toString ( const QDate & date, const QString & format ) const -QString toString ( const QDate & date, FormatType format = LongFormat ) const -QString toString ( const QTime & time, const QString & format ) const -QString toString ( const QTime & time, FormatType format = LongFormat ) const -QString toString ( const QDateTime & dateTime, FormatType format = LongFormat ) const -QString toString ( const QDateTime & dateTime, const QString & format ) const -//QString toString ( qulonglong i ) const -//QString toString ( double i, char f = 'g', int prec = 6 ) const -//QString toString ( short i ) const -//QString toString ( ushort i ) const -QString toString ( int i ) const -//QString toString ( uint i ) const -//QString toString ( float i, char f = 'g', int prec = 6 ) const - -QTime toTime ( const QString & string, FormatType format = LongFormat ) const -QTime toTime ( const QString & string, const QString & format ) const -uint toUInt ( const QString & s, bool * ok = 0, int base = 0 ) const -qlonglong toULongLong ( const QString & s, bool * ok = 0, int base = 0 ) const -ushort toUShort ( const QString & s, bool * ok = 0, int base = 0 ) const -QChar zeroDigit () const - -QLocale c () -//QList countriesForLanguage ( Language language ) -QString countryToString ( Country country ) -QString languageToString ( Language language ) -void setDefault ( const QLocale & locale ) -QLocale system () - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QMetaClassInfo.qth b/harbour/contrib/hbqt/qtcore/qth/QMetaClassInfo.qth deleted file mode 100644 index c40a398132..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QMetaClassInfo.qth +++ /dev/null @@ -1,54 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = -New = -Constructor = No - - - - - - - - - -#include - - -/* - * QMetaClassInfo () - * - */ -HB_FUNC( QT_QMETACLASSINFO ) -{ - // __HB_RETPTRGC__( new QMetaClassInfo() ); -} - - - - - - -const char * name () const -const char * value () const - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QMetaEnum.qth b/harbour/contrib/hbqt/qtcore/qth/QMetaEnum.qth deleted file mode 100644 index 76fe1315a8..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QMetaEnum.qth +++ /dev/null @@ -1,63 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = -New = -Constructor = No - - - - - - - - - -#include - - -/* - * QMetaEnum () - * - */ -HB_FUNC( QT_QMETAENUM ) -{ - // __HB_RETPTRGC__( new QMetaEnum() ); -} - - - - - - -bool isFlag () const -bool isValid () const -const char * key ( int index ) const -int keyCount () const -int keyToValue ( const char * key ) const -int keysToValue ( const char * keys ) const -const char * name () const -const char * scope () const -int value ( int index ) const -const char * valueToKey ( int value ) const -QByteArray valueToKeys ( int value ) const - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QMetaMethod.qth b/harbour/contrib/hbqt/qtcore/qth/QMetaMethod.qth deleted file mode 100644 index 71b51e4e65..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QMetaMethod.qth +++ /dev/null @@ -1,65 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = -New = -Constructor = - - - - - - - - - -#include - - -/* - * QMetaMethod () - * - */ -HB_FUNC( QT_QMETAMETHOD ) -{ - __HB_RETPTRGC__( new QMetaMethod() ); -} - - - -enum Access { Private, Protected, Public } -enum MethodType { Method, Signal, Slot, Constructor } - - - -Access access () const -//bool invoke ( QObject * object, Qt::ConnectionType connectionType, QGenericReturnArgument returnValue, QGenericArgument val0 = QGenericArgument( 0 ), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(), QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(), QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument() ) const -//bool invoke ( QObject * object, QGenericReturnArgument returnValue, QGenericArgument val0 = QGenericArgument( 0 ), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(), QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(), QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument() ) const -//bool invoke ( QObject * object, Qt::ConnectionType connectionType, QGenericArgument val0 = QGenericArgument( 0 ), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(), QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(), QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument() ) const -//bool invoke ( QObject * object, QGenericArgument val0 = QGenericArgument( 0 ), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(), QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(), QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument() ) const -MethodType methodType () const -QList parameterNames () const -QList parameterTypes () const -const char * signature () const -const char * tag () const -const char * typeName () const - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QMetaObject.qth b/harbour/contrib/hbqt/qtcore/qth/QMetaObject.qth deleted file mode 100644 index 9dd33511b5..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QMetaObject.qth +++ /dev/null @@ -1,86 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = -New = -Constructor = No - - - - - - - - - -#include -#include - -/* - * QMetaObject () - * - */ -HB_FUNC( QT_QMETAOBJECT ) -{ - // __HB_RETPTRGC__( new QMetaObject() ); -} - - - - - - -QMetaClassInfo classInfo ( int index ) const -int classInfoCount () const -int classInfoOffset () const -const char * className () const -QMetaMethod constructor ( int index ) const -int constructorCount () const -QMetaEnum enumerator ( int index ) const -int enumeratorCount () const -int enumeratorOffset () const -int indexOfClassInfo ( const char * name ) const -int indexOfConstructor ( const char * constructor ) const -int indexOfEnumerator ( const char * name ) const -int indexOfMethod ( const char * method ) const -int indexOfProperty ( const char * name ) const -int indexOfSignal ( const char * signal ) const -int indexOfSlot ( const char * slot ) const -QMetaMethod method ( int index ) const -int methodCount () const -int methodOffset () const -//QObject * newInstance ( QGenericArgument val0 = QGenericArgument( 0 ), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(), QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(), QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument() ) const -QMetaProperty property ( int index ) const -int propertyCount () const -int propertyOffset () const -const QMetaObject * superClass () const -QMetaProperty userProperty () const - -bool checkConnectArgs ( const char * signal, const char * method ) -void connectSlotsByName ( QObject * object ) -//bool invokeMethod ( QObject * obj, const char * member, Qt::ConnectionType type, QGenericReturnArgument ret, QGenericArgument val0 = QGenericArgument( 0 ), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(), QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(), QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument() ) -//bool invokeMethod ( QObject * obj, const char * member, QGenericReturnArgument ret, QGenericArgument val0 = QGenericArgument( 0 ), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(), QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(), QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument() ) -//bool invokeMethod ( QObject * obj, const char * member, Qt::ConnectionType type, QGenericArgument val0 = QGenericArgument( 0 ), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(), QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(), QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument() ) -//bool invokeMethod ( QObject * obj, const char * member, QGenericArgument val0 = QGenericArgument( 0 ), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(), QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(), QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument() ) -QByteArray normalizedSignature ( const char * method ) -QByteArray normalizedType ( const char * type ) - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QMetaProperty.qth b/harbour/contrib/hbqt/qtcore/qth/QMetaProperty.qth deleted file mode 100644 index 1677680d5b..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QMetaProperty.qth +++ /dev/null @@ -1,73 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = NO -Inherit = -Type = -New = -Constructor = No - - - - - - - - - -#include - - -/* - * QMetaProperty () - * - */ -HB_FUNC( QT_QMETAPROPERTY ) -{ - // __HB_RETPTRGC__( new QMetaProperty() ); -} - - - - - - -QMetaEnum enumerator () const -bool hasNotifySignal () const -bool isDesignable ( const QObject * object = 0 ) const -bool isEnumType () const -bool isFlagType () const -bool isReadable () const -bool isResettable () const -bool isScriptable ( const QObject * object = 0 ) const -bool isStored ( const QObject * object = 0 ) const -bool isUser ( const QObject * object = 0 ) const -bool isValid () const -bool isWritable () const -const char * name () const -QMetaMethod notifySignal () const -int notifySignalIndex () const -QVariant read ( const QObject * object ) const -bool reset ( QObject * object ) const -QVariant::Type type () const -const char * typeName () const -int userType () const -bool write ( QObject * object, const QVariant & value ) const - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QMetaType.qth b/harbour/contrib/hbqt/qtcore/qth/QMetaType.qth deleted file mode 100644 index c1ef8622e6..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QMetaType.qth +++ /dev/null @@ -1,61 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = NO -Inherit = -Type = -New = -Constructor = No - - - - - - - - - -#include - - -/* - * QMetaType () - * - */ -HB_FUNC( QT_QMETATYPE ) -{ - // __HB_RETPTRGC__( new QMetaType() ); -} - - - -enum Type { Void, Bool, Int, UInt, ..., User } - - - -//void * construct ( int type, const void * copy = 0 ) -//void destroy ( int type, void * data ) -bool isRegistered ( int type ) -//bool load ( QDataStream & stream, int type, void * data ) -//bool save ( QDataStream & stream, int type, const void * data ) -int type ( const char * typeName ) -const char * typeName ( int type ) -void unregisterType ( const char * typeName ) - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QMimeData.qth b/harbour/contrib/hbqt/qtcore/qth/QMimeData.qth deleted file mode 100644 index 80a0f41a2f..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QMimeData.qth +++ /dev/null @@ -1,67 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = -Inherit = QObject -Type = Core -New = -Destructor = - - - -#include -#include -#include - -/* QMimeData () - * ~QMimeData () - */ -HB_FUNC( QT_QMIMEDATA ) -{ - __HB_RETPTRGC__( new QMimeData() ); -} - - - - - - -void clear () -QVariant colorData () const -QByteArray data ( const QString & mimeType ) const -virtual QStringList formats () const -bool hasColor () const -virtual bool hasFormat ( const QString & mimeType ) const -bool hasHtml () const -bool hasImage () const -bool hasText () const -bool hasUrls () const -QString html () const -QVariant imageData () const -void removeFormat ( const QString & mimeType ) -void setColorData ( const QVariant & color ) -void setData ( const QString & mimeType, const QByteArray & data ) -void setHtml ( const QString & html ) -void setImageData ( const QVariant & image ) -void setText ( const QString & text ) -void setUrls ( const QList & urls ) -QString text () const -QList urls () const - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QModelIndex.qth b/harbour/contrib/hbqt/qtcore/qth/QModelIndex.qth deleted file mode 100644 index 01e437d5d9..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QModelIndex.qth +++ /dev/null @@ -1,67 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = Core -New = - - - -#include - - -/* - * QModelIndex () - * QModelIndex ( const QModelIndex & other ) - * ~QModelIndex () - */ -HB_FUNC( QT_QMODELINDEX ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QMODELINDEX" ) ) - { - __HB_RETPTRGC__( new QModelIndex( *hbqt_par_QModelIndex( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QModelIndex() ); - } -} - - - - - - -QModelIndex child ( int row, int column ) const -int column () const -QVariant data ( int role = Qt::DisplayRole ) const -Qt::ItemFlags flags () const -qint64 internalId () const -void * internalPointer () const -bool isValid () const -const QAbstractItemModel * model () const -QModelIndex parent () const -int row () const -QModelIndex sibling ( int row, int column ) const - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QObject.qth b/harbour/contrib/hbqt/qtcore/qth/QObject.qth deleted file mode 100644 index 6e1c00effa..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QObject.qth +++ /dev/null @@ -1,87 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -New = pParent -Calls = QT_QObject - - - -#include -#include - -/* - * QObject ( QObject * parent = 0 ) - * ~QObject () - */ -HB_FUNC( QT_QOBJECT ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) ) - { - __HB_RETPTRGC__( new QObject( hbqt_par_QObject( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QObject() ); - } -} - - - -bool blockSignals ( bool block ) -QList children () const -// bool connect ( const QObject * sender, const char * signal, const char * method, Qt::ConnectionType type = Qt::AutoConnection ) const -// bool disconnect ( const char * signal = 0, const QObject * receiver = 0, const char * method = 0 ) -// bool disconnect ( const QObject * receiver, const char * method = 0 ) -void dumpObjectInfo () -void dumpObjectTree () -QList dynamicPropertyNames () const -virtual bool event ( QEvent * e ) -virtual bool eventFilter ( QObject * watched, QEvent * event ) -//T findChild ( const QString & name = QString() ) const -//QList findChildren ( const QString & name = QString() ) const -//QList findChildren ( const QRegExp & regExp ) const -bool inherits ( const char * className ) const -void installEventFilter ( QObject * filterObj ) -bool isWidgetType () const -void killTimer ( int id ) -# -virtual const QMetaObject * metaObject () const [*R=1*] -# -void moveToThread ( QThread * targetThread ) -QString objectName () const -QObject * parent () const -QVariant property ( const char * name ) const -void removeEventFilter ( QObject * obj ) -void setObjectName ( const QString & name ) -void setParent ( QObject * parent ) -bool setProperty ( const char * name, const QVariant & value ) -bool signalsBlocked () const -int startTimer ( int interval ) -QThread * thread () const - - -// bool connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::ConnectionType type = Qt::AutoConnection ) -// bool disconnect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method ) -const QMetaObject staticMetaObject -QString tr ( const char * sourceText, const char * disambiguation = 0, int n = -1 ) -QString trUtf8 ( const char * sourceText, const char * disambiguation = 0, int n = -1 ) - - - -void deleteLater () - - - -void destroyed ( QObject * obj = 0 ) - diff --git a/harbour/contrib/hbqt/qtcore/qth/QPoint.qth b/harbour/contrib/hbqt/qtcore/qth/QPoint.qth deleted file mode 100644 index abfd9a178e..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QPoint.qth +++ /dev/null @@ -1,65 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Type = PlainObject -New = - - - -#include - - -/* - * QPoint () - * QPoint ( const QPoint & point ) - * QPoint ( int x, int y ) - * ~QPoint () - */ -HB_FUNC( QT_QPOINT ) -{ - if( hb_pcount() == 2 && HB_ISNUM( 1 ) && HB_ISNUM( 2 ) ) - { - __HB_RETPTRGC__( new QPoint( hb_parni( 1 ), hb_parni( 2 ) ) ); - } - else if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QPOINT" ) ) - { - __HB_RETPTRGC__( new QPoint( *hbqt_par_QPoint( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QPoint() ); - } -} - - - - - - -bool isNull () const -int manhattanLength () const -int & rx () -int & ry () -void setX ( int x ) -void setY ( int y ) -int x () const -int y () const - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QPointF.qth b/harbour/contrib/hbqt/qtcore/qth/QPointF.qth deleted file mode 100644 index 85bc5f63f2..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QPointF.qth +++ /dev/null @@ -1,65 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Type = PlainObject -New = - - - -#include - - -/* - * QPointF () - * QPointF ( const QPoint & point ) - * QPointF ( qreal x, qreal y ) - * ~QPointF () - */ -HB_FUNC( QT_QPOINTF ) -{ - if( hb_pcount() == 2 && HB_ISNUM( 1 ) && HB_ISNUM( 2 ) ) - { - __HB_RETPTRGC__( new QPointF( ( qreal ) hb_parnd( 1 ), ( qreal ) hb_parnd( 2 ) ) ); - } - else if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QPOINT" ) ) - { - __HB_RETPTRGC__( new QPointF( *hbqt_par_QPoint( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QPointF() ); - } -} - - - - - - -bool isNull () const -qreal & rx () -qreal & ry () -void setX ( qreal x ) -void setY ( qreal y ) -QPoint toPoint () const -qreal x () const -qreal y () const - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QProcess.qth b/harbour/contrib/hbqt/qtcore/qth/QProcess.qth deleted file mode 100644 index b64b254479..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QProcess.qth +++ /dev/null @@ -1,104 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -Inherit = QIODevice -Type = Core -New = - - - -#include - - -/* - * QProcess ( QObject * parent = 0 ) - * ~QProcess () - */ -HB_FUNC( QT_QPROCESS ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) ) - { - __HB_RETPTRGC__( new QProcess( hbqt_par_QObject( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QProcess() ); - } -} - - - -# FROM QIODevice -flags OpenMode -enum OpenModeFlag { NotOpen, ReadOnly, WriteOnly, ReadWrite, ..., Unbuffered } - -enum ExitStatus { NormalExit, CrashExit } -enum ProcessChannel { StandardOutput, StandardError } -enum ProcessChannelMode { SeparateChannels, MergedChannels, ForwardedChannels } -enum ProcessError { FailedToStart, Crashed, Timedout, WriteError, ReadError, UnknownError } -enum ProcessState { NotRunning, Starting, Running } - - - -virtual void close () -void closeReadChannel ( ProcessChannel channel ) -void closeWriteChannel () -QStringList environment () const -QProcess::ProcessError error () const -int exitCode () const -QProcess::ExitStatus exitStatus () const -// Q_PID pid () const -ProcessChannelMode processChannelMode () const -QByteArray readAllStandardError () -QByteArray readAllStandardOutput () -ProcessChannel readChannel () const -void setEnvironment ( const QStringList & environment ) -void setProcessChannelMode ( ProcessChannelMode mode ) -void setReadChannel ( ProcessChannel channel ) -void setStandardErrorFile ( const QString & fileName, OpenMode mode = Truncate ) -void setStandardInputFile ( const QString & fileName ) -void setStandardOutputFile ( const QString & fileName, OpenMode mode = Truncate ) -void setStandardOutputProcess ( QProcess * destination ) -void setWorkingDirectory ( const QString & dir ) -void start ( const QString & program, const QStringList & arguments, OpenMode mode = ReadWrite ) -void start ( const QString & program, OpenMode mode = ReadWrite ) -QProcess::ProcessState state () const -bool waitForFinished ( int msecs = 30000 ) -bool waitForStarted ( int msecs = 30000 ) -QString workingDirectory () const - -int execute ( const QString & program, const QStringList & arguments ) -int execute ( const QString & program ) -bool startDetached ( const QString & program, const QStringList & arguments, const QString & workingDirectory, qint64 * pid = 0 ) -bool startDetached ( const QString & program, const QStringList & arguments ) -bool startDetached ( const QString & program ) -QStringList systemEnvironment () - - - -void kill () -void terminate () - - - -void error ( QProcess::ProcessError error ) -void finished ( int exitCode, QProcess::ExitStatus exitStatus ) -void readyReadStandardError () -void readyReadStandardOutput () -void started () -void stateChanged ( QProcess::ProcessState newState ) - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QRect.qth b/harbour/contrib/hbqt/qtcore/qth/QRect.qth deleted file mode 100644 index fe0dd2c454..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QRect.qth +++ /dev/null @@ -1,126 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Type = PlainObject -New = - - - - -#include - - -/* - * QRect () - * QRect ( const QPoint & topLeft, const QPoint & bottomRight ) - * QRect ( const QPoint & topLeft, const QSize & size ) - * QRect ( int x, int y, int width, int height ) - * ~QRect () - */ -HB_FUNC( QT_QRECT ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QRECT" ) ) - { - __HB_RETPTRGC__( new QRect( *hbqt_par_QRect( 1 ) ) ); - } - else if( hb_pcount() == 2 && hbqt_par_isDerivedFrom( 1, "QPOINT" ) && hbqt_par_isDerivedFrom( 2, "QPOINT" ) ) - { - __HB_RETPTRGC__( new QRect( *hbqt_par_QPoint( 1 ), *hbqt_par_QPoint( 2 ) ) ); - } - else if( hb_pcount() == 2 && hbqt_par_isDerivedFrom( 1, "QPOINT" ) && hbqt_par_isDerivedFrom( 2, "QSIZE" ) ) - { - __HB_RETPTRGC__( new QRect( *hbqt_par_QPoint( 1 ), *hbqt_par_QSize( 2 ) ) ); - } - else if( hb_pcount() == 4 && HB_ISNUM( 1 ) && HB_ISNUM( 2 ) && HB_ISNUM( 3 ) && HB_ISNUM( 4 ) ) - { - __HB_RETPTRGC__( new QRect( hb_parni( 1 ), hb_parni( 2 ), hb_parni( 3 ), hb_parni( 4 ) ) ); - } - else - { - __HB_RETPTRGC__( new QRect() ); - } -} - - - - - - -void adjust ( int dx1, int dy1, int dx2, int dy2 ) -QRect adjusted ( int dx1, int dy1, int dx2, int dy2 ) const -int bottom () const -QPoint bottomLeft () const -QPoint bottomRight () const -QPoint center () const -bool contains ( const QPoint & point, bool proper = false ) const -bool contains ( int x, int y, bool proper ) const -bool contains ( int x, int y ) const -bool contains ( const QRect & rectangle, bool proper = false ) const -void getCoords ( int * x1, int * y1, int * x2, int * y2 ) const -void getRect ( int * x, int * y, int * width, int * height ) const -int height () const -QRect intersected ( const QRect & rectangle ) const -bool intersects ( const QRect & rectangle ) const -bool isEmpty () const -bool isNull () const -bool isValid () const -int left () const -void moveBottom ( int y ) -void moveBottomLeft ( const QPoint & position ) -void moveBottomRight ( const QPoint & position ) -void moveCenter ( const QPoint & position ) -void moveLeft ( int x ) -void moveRight ( int x ) -void moveTo ( int x, int y ) -void moveTo ( const QPoint & position ) -void moveTop ( int y ) -void moveTopLeft ( const QPoint & position ) -void moveTopRight ( const QPoint & position ) -QRect normalized () const -int right () const -void setBottom ( int y ) -void setBottomLeft ( const QPoint & position ) -void setBottomRight ( const QPoint & position ) -void setCoords ( int x1, int y1, int x2, int y2 ) -void setHeight ( int height ) -void setLeft ( int x ) -void setRect ( int x, int y, int width, int height ) -void setRight ( int x ) -void setSize ( const QSize & size ) -void setTop ( int y ) -void setTopLeft ( const QPoint & position ) -void setTopRight ( const QPoint & position ) -void setWidth ( int width ) -void setX ( int x ) -void setY ( int y ) -QSize size () const -int top () const -QPoint topLeft () const -QPoint topRight () const -void translate ( int dx, int dy ) -void translate ( const QPoint & offset ) -QRect translated ( int dx, int dy ) const -QRect translated ( const QPoint & offset ) const -QRect united ( const QRect & rectangle ) const -int width () const -int x () const -int y () const - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QRectF.qth b/harbour/contrib/hbqt/qtcore/qth/QRectF.qth deleted file mode 100644 index ff7f16f5f3..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QRectF.qth +++ /dev/null @@ -1,127 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Type = PlainObject -New = - - - -#include - - -/* - * QRectF () - * QRectF ( const QPointF & topLeft, const QSizeF & size ) - * QRectF ( const QPointF & topLeft, const QPointF & bottomRight ) - * QRectF ( qreal x, qreal y, qreal width, qreal height ) - * QRectF ( const QRect & rectangle ) - * ~QRectF () - */ -HB_FUNC( QT_QRECTF ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QRECTF" ) ) - { - __HB_RETPTRGC__( new QRectF( *hbqt_par_QRectF( 1 ) ) ); - } - else if( hb_pcount() == 2 && hbqt_par_isDerivedFrom( 1, "QPOINT" ) && hbqt_par_isDerivedFrom( 2, "QPOINTF" ) ) - { - __HB_RETPTRGC__( new QRectF( *hbqt_par_QPointF( 1 ), *hbqt_par_QPointF( 2 ) ) ); - } - else if( hb_pcount() == 2 && hbqt_par_isDerivedFrom( 1, "QPOINT" ) && hbqt_par_isDerivedFrom( 2, "QSIZEF" ) ) - { - __HB_RETPTRGC__( new QRectF( *hbqt_par_QPointF( 1 ), *hbqt_par_QSizeF( 2 ) ) ); - } - else if( hb_pcount() == 4 && HB_ISNUM( 1 ) && HB_ISNUM( 2 ) && HB_ISNUM( 3 ) && HB_ISNUM( 4 ) ) - { - __HB_RETPTRGC__( new QRectF( hb_parnd( 1 ), hb_parnd( 2 ), hb_parnd( 3 ), hb_parnd( 4 ) ) ); - } - else - { - __HB_RETPTRGC__( new QRectF() ); - } -} - - - - - - -void adjust ( qreal dx1, qreal dy1, qreal dx2, qreal dy2 ) -QRectF adjusted ( qreal dx1, qreal dy1, qreal dx2, qreal dy2 ) const -qreal bottom () const -QPointF bottomLeft () const -QPointF bottomRight () const -QPointF center () const -bool contains ( const QPointF & point ) const -bool contains ( qreal x, qreal y ) const -bool contains ( const QRectF & rectangle ) const -void getCoords ( qreal * x1, qreal * y1, qreal * x2, qreal * y2 ) const -void getRect ( qreal * x, qreal * y, qreal * width, qreal * height ) const -qreal height () const -QRectF intersected ( const QRectF & rectangle ) const -bool intersects ( const QRectF & rectangle ) const -bool isEmpty () const -bool isNull () const -bool isValid () const -qreal left () const -void moveBottom ( qreal y ) -void moveBottomLeft ( const QPointF & position ) -void moveBottomRight ( const QPointF & position ) -void moveCenter ( const QPointF & position ) -void moveLeft ( qreal x ) -void moveRight ( qreal x ) -void moveTo ( qreal x, qreal y ) -void moveTo ( const QPointF & position ) -void moveTop ( qreal y ) -void moveTopLeft ( const QPointF & position ) -void moveTopRight ( const QPointF & position ) -QRectF normalized () const -qreal right () const -void setBottom ( qreal y ) -void setBottomLeft ( const QPointF & position ) -void setBottomRight ( const QPointF & position ) -void setCoords ( qreal x1, qreal y1, qreal x2, qreal y2 ) -void setHeight ( qreal height ) -void setLeft ( qreal x ) -void setRect ( qreal x, qreal y, qreal width, qreal height ) -void setRight ( qreal x ) -void setSize ( const QSizeF & size ) -void setTop ( qreal y ) -void setTopLeft ( const QPointF & position ) -void setTopRight ( const QPointF & position ) -void setWidth ( qreal width ) -void setX ( qreal x ) -void setY ( qreal y ) -QSizeF size () const -QRect toAlignedRect () const -QRect toRect () const -qreal top () const -QPointF topLeft () const -QPointF topRight () const -void translate ( qreal dx, qreal dy ) -void translate ( const QPointF & offset ) -QRectF translated ( qreal dx, qreal dy ) const -QRectF translated ( const QPointF & offset ) const -QRectF united ( const QRectF & rectangle ) const -qreal width () const -qreal x () const -qreal y () const - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QRegExp.qth b/harbour/contrib/hbqt/qtcore/qth/QRegExp.qth deleted file mode 100644 index 79f509ada5..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QRegExp.qth +++ /dev/null @@ -1,81 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = Core -New = -Destructor = - - - -#include -#include - -/* QRegExp () - * QRegExp ( const QString & pattern, Qt::CaseSensitivity cs = Qt::CaseSensitive, PatternSyntax syntax = RegExp ) - * QRegExp ( const QRegExp & rx ) - * ~QRegExp () - */ -HB_FUNC( QT_QREGEXP ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QREGEXP" ) ) - { - __HB_RETPTRGC__( new QRegExp( *hbqt_par_QRegExp( 1 ) ) ); - } - else if( hb_pcount() >= 1 && HB_ISCHAR( 1 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QRegExp( hb_parstr_utf8( 1, &pText01, NULL ), HB_ISNUM( 2 ) ? ( Qt::CaseSensitivity ) hb_parni( 2 ) : Qt::CaseSensitive, HB_ISNUM( 3 ) ? ( QRegExp::PatternSyntax ) hb_parni( 3 ) : QRegExp::RegExp ) ); - hb_strfree( pText01 ); - } - else - { - __HB_RETPTRGC__( new QRegExp() ); - } -} - - - -enum CaretMode { CaretAtZero, CaretAtOffset, CaretWontMatch } -enum PatternSyntax { RegExp, RegExp2, Wildcard, FixedString } - - - -QString cap ( int nth = 0 ) const -QStringList capturedTexts () const -Qt::CaseSensitivity caseSensitivity () const -QString errorString () const -bool exactMatch ( const QString & str ) const -int indexIn ( const QString & str, int offset = 0, CaretMode caretMode = CaretAtZero ) const -bool isEmpty () const -bool isMinimal () const -bool isValid () const -int lastIndexIn ( const QString & str, int offset = -1, CaretMode caretMode = CaretAtZero ) const -int matchedLength () const -int numCaptures () const -QString pattern () const -PatternSyntax patternSyntax () const -int pos ( int nth = 0 ) const -void setCaseSensitivity ( Qt::CaseSensitivity cs ) -void setMinimal ( bool minimal ) -void setPattern ( const QString & pattern ) -void setPatternSyntax ( PatternSyntax syntax ) - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QResource.qth b/harbour/contrib/hbqt/qtcore/qth/QResource.qth deleted file mode 100644 index d0d8ad6c07..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QResource.qth +++ /dev/null @@ -1,141 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = Core -New = -ClubMethods = no - - - -#include - - -/* - * QResource () - * QResource ( const QString & file = QString(), const QLocale & locale = QLocale() ) - * ~QResource () - */ -HB_FUNC( QT_QRESOURCE ) -{ - if( hb_pcount() == 2 && HB_ISCHAR( 1 ) && hbqt_par_isDerivedFrom( 2, "QLOCALE" ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QResource( hb_parstr_utf8( 1, &pText01, NULL ), *hbqt_par_QLocale( 2 ) ) ); - hb_strfree( pText01 ); - } - else if( hb_pcount() == 1 && HB_ISCHAR( 1 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QResource( hb_parstr_utf8( 1, &pText01, NULL ), QLocale() ) ); - hb_strfree( pText01 ); - } - else - { - __HB_RETPTRGC__( new QResource() ); - } -} - - - - - - -QString absoluteFilePath () const -const uchar * data () const -QString fileName () const -bool isCompressed () const -bool isValid () const -QLocale locale () const -void setFileName ( const QString & file ) -void setLocale ( const QLocale & locale ) -qint64 size () const - -bool registerResource ( const QString & rccFileName, const QString & mapRoot = QString() ) { - QResource * _resource = ( QResource * ) hbqt_par_ptr( 0 ); - if( _resource ) - { - int pcount = hb_pcount(); - if( pcount <= 2 && HB_ISCHAR( 1 ) && ( pcount < 2 || HB_ISCHAR( 2 ) ) ) - { - void * pText1 = NULL; - void * pText2 = NULL; - hb_retl( _resource->registerResource( hb_parstr_utf8( 1, &pText1, NULL ), hb_parstr_utf8( 2, &pText2, NULL ) ) ); - hb_strfree( pText1 ); - hb_strfree( pText2 ); - } - else - hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - } -} - -bool registerResource_1 ( const uchar * rccData, const QString & mapRoot = QString() ) { - QResource * _resource = ( QResource * ) hbqt_par_ptr( 0 ); - if( _resource ) - { - int pcount = hb_pcount(); - if( pcount <= 2 && HB_ISCHAR( 1 ) && ( pcount < 2 || HB_ISCHAR( 2 ) ) ) - { - void * pText = NULL; - hb_retl( _resource->registerResource( ( const uchar * ) hb_parc( 1 ), hb_parstr_utf8( 2, &pText, NULL ) ) ); - hb_strfree( pText ); - } - else - hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - } -} - -QStringList searchPaths () - -bool unregisterResource ( const QString & rccFileName, const QString & mapRoot = QString() ) { - QResource * _resource = ( QResource * ) hbqt_par_ptr( 0 ); - if( _resource ) - { - int pcount = hb_pcount(); - if( pcount <= 2 && HB_ISCHAR( 1 ) && ( pcount < 2 || HB_ISCHAR( 2 ) ) ) - { - void * pText1 = NULL; - void * pText2 = NULL; - hb_retl( _resource->unregisterResource( hb_parstr_utf8( 1, &pText1, NULL ), hb_parstr_utf8( 2, &pText2, NULL ) ) ); - hb_strfree( pText1 ); - hb_strfree( pText2 ); - } - else - hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - } -} - -bool unregisterResource_1 ( const uchar * rccData, const QString & mapRoot = QString() ) { - QResource * _resource = ( QResource * ) hbqt_par_ptr( 0 ); - if( _resource ) - { - int pcount = hb_pcount(); - if( pcount <= 2 && HB_ISCHAR( 1 ) && ( pcount < 2 || HB_ISCHAR( 2 ) ) ) - { - void * pText = NULL; - hb_retl( _resource->unregisterResource( ( const uchar * ) hb_parc( 1 ), hb_parstr_utf8( 2, &pText, NULL ) ) ); - hb_strfree( pText ); - } - else - hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - } -} - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QSettings.qth b/harbour/contrib/hbqt/qtcore/qth/QSettings.qth deleted file mode 100644 index 6386bfcd25..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QSettings.qth +++ /dev/null @@ -1,181 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -Inherit = QObject -Type = Core -New = - - - -#include -#include - -/* - * QSettings ( const QString & organization, const QString & application = QString(), QObject * parent = 0 ) - * QSettings ( Scope scope, const QString & organization, const QString & application = QString(), QObject * parent = * 0 ) - * QSettings ( Format format, Scope scope, const QString & organization, const QString & application = QString(), * QObject * parent = 0 ) - * QSettings ( const QString & fileName, Format format, QObject * parent = 0 ) - * QSettings ( QObject * parent = 0 ) - * ~QSettings () - */ -HB_FUNC( QT_QSETTINGS ) -{ - if( hb_pcount() == 3 && HB_ISCHAR( 1 ) && HB_ISCHAR( 2 ) && hbqt_par_isDerivedFrom( 3, "QOBJECT" ) ) - { - void * pText01 = NULL; - void * pText02 = NULL; - __HB_RETPTRGC__( new QSettings( hb_parstr_utf8( 1, &pText01, NULL ), hb_parstr_utf8( 2, &pText02, NULL ), hbqt_par_QObject( 3 ) ) ); - hb_strfree( pText01 ); - hb_strfree( pText02 ); - } - else if( hb_pcount() == 2 && HB_ISCHAR( 1 ) && HB_ISCHAR( 2 ) ) - { - void * pText01 = NULL; - void * pText02 = NULL; - __HB_RETPTRGC__( new QSettings( hb_parstr_utf8( 1, &pText01, NULL ), hb_parstr_utf8( 2, &pText02, NULL ), 0 ) ); - hb_strfree( pText01 ); - hb_strfree( pText02 ); - } - else if( hb_pcount() == 3 && HB_ISCHAR( 1 ) && HB_ISNUM( 2 ) && hbqt_par_isDerivedFrom( 3, "QOBJECT" ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QSettings( hb_parstr_utf8( 1, &pText01, NULL ), ( QSettings::Format ) hb_parni( 2 ), hbqt_par_QObject( 3 ) ) ); - hb_strfree( pText01 ); - } - else if( hb_pcount() == 2 && HB_ISCHAR( 1 ) && HB_ISNUM( 2 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QSettings( hb_parstr_utf8( 1, &pText01, NULL ), ( QSettings::Format ) hb_parni( 2 ), 0 ) ); - hb_strfree( pText01 ); - } - else if( hb_pcount() == 3 && HB_ISCHAR( 1 ) && HB_ISNUM( 2 ) && hbqt_par_isDerivedFrom( 3, "QOBJECT" ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QSettings( hb_parstr_utf8( 1, &pText01, NULL ), ( QSettings::Format ) hb_parni( 2 ), hbqt_par_QObject( 3 ) ) ); - hb_strfree( pText01 ); - } - else if( hb_pcount() == 4 && HB_ISNUM( 1 ) && HB_ISCHAR( 2 ) && HB_ISCHAR( 3 ) && hbqt_par_isDerivedFrom( 4, "QOBJECT" ) ) - { - void * pText01 = NULL; - void * pText02 = NULL; - __HB_RETPTRGC__( new QSettings( ( QSettings::Scope ) hb_parni( 1 ), hb_parstr_utf8( 2, &pText01, NULL ), hb_parstr_utf8( 3, &pText02, NULL ), hbqt_par_QObject( 4 ) ) ); - hb_strfree( pText01 ); - hb_strfree( pText02 ); - } - else if( hb_pcount() == 4 && HB_ISNUM( 1 ) && HB_ISCHAR( 2 ) && HB_ISCHAR( 3 ) ) - { - void * pText01 = NULL; - void * pText02 = NULL; - __HB_RETPTRGC__( new QSettings( ( QSettings::Scope ) hb_parni( 1 ), hb_parstr_utf8( 2, &pText01, NULL ), hb_parstr_utf8( 3, &pText02, NULL ), 0 ) ); - hb_strfree( pText01 ); - hb_strfree( pText02 ); - } - else if( hb_pcount() == 2 && HB_ISNUM( 1 ) && HB_ISCHAR( 2 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QSettings( ( QSettings::Scope ) hb_parni( 1 ), hb_parstr_utf8( 2, &pText01, NULL ), QString(), 0 ) ); - hb_strfree( pText01 ); - } - else if( hb_pcount() == 5 && HB_ISNUM( 1 ) && HB_ISNUM( 2 ) && HB_ISCHAR( 3 ) && HB_ISCHAR( 4 ) && hbqt_par_isDerivedFrom( 5, "QOBJECT" ) ) - { - void * pText01 = NULL; - void * pText02 = NULL; - __HB_RETPTRGC__( new QSettings( ( QSettings::Format ) hb_parni( 1 ), ( QSettings::Scope ) hb_parni( 2 ), hb_parstr_utf8( 3, &pText01, NULL ), hb_parstr_utf8( 4, &pText02, NULL ), hbqt_par_QObject( 5 ) ) ); - hb_strfree( pText01 ); - hb_strfree( pText02 ); - } - else if( hb_pcount() == 4 && HB_ISNUM( 1 ) && HB_ISNUM( 2 ) && HB_ISCHAR( 3 ) && HB_ISCHAR( 4 ) ) - { - void * pText01 = NULL; - void * pText02 = NULL; - __HB_RETPTRGC__( new QSettings( ( QSettings::Format ) hb_parni( 1 ), ( QSettings::Scope ) hb_parni( 2 ), hb_parstr_utf8( 3, &pText01, NULL ), hb_parstr_utf8( 4, &pText02, NULL ), 0 ) ); - hb_strfree( pText01 ); - hb_strfree( pText02 ); - } - else if( hb_pcount() == 5 && HB_ISNUM( 1 ) && HB_ISNUM( 2 ) && HB_ISCHAR( 3 ) && HB_ISCHAR( 4 ) && hbqt_par_isDerivedFrom( 5, "QOBJECT" ) ) - { - void * pText01 = NULL; - void * pText02 = NULL; - __HB_RETPTRGC__( new QSettings( ( QSettings::Format ) hb_parni( 1 ), ( QSettings::Scope ) hb_parni( 2 ), hb_parstr_utf8( 3, &pText01, NULL ), hb_parstr_utf8( 4, &pText02, NULL ), hbqt_par_QObject( 5 ) ) ); - hb_strfree( pText01 ); - hb_strfree( pText02 ); - } - else if( hb_pcount() == 4 && HB_ISNUM( 1 ) && HB_ISNUM( 2 ) && HB_ISCHAR( 3 ) && HB_ISCHAR( 4 ) ) - { - void * pText01 = NULL; - void * pText02 = NULL; - __HB_RETPTRGC__( new QSettings( ( QSettings::Format ) hb_parni( 1 ), ( QSettings::Scope ) hb_parni( 2 ), hb_parstr_utf8( 3, &pText01, NULL ), hb_parstr_utf8( 4, &pText02, NULL ), 0 ) ); - hb_strfree( pText01 ); - hb_strfree( pText02 ); - } - else if( hb_pcount() == 3 && HB_ISNUM( 1 ) && HB_ISNUM( 2 ) && HB_ISCHAR( 3 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QSettings( ( QSettings::Format ) hb_parni( 1 ), ( QSettings::Scope ) hb_parni( 2 ), hb_parstr_utf8( 3, &pText01, NULL ), QString(), 0 ) ); - hb_strfree( pText01 ); - } - else - { - __HB_RETPTRGC__( new QSettings() ); - } -} - - - -enum Format { NativeFormat, IniFormat, InvalidFormat } -enum Scope { UserScope, SystemScope } -enum Status { NoError, AccessError, FormatError } - - - -QStringList allKeys () const -QString applicationName () const -void beginGroup ( const QString & prefix ) -int beginReadArray ( const QString & prefix ) -void beginWriteArray ( const QString & prefix, int size = -1 ) -QStringList childGroups () const -QStringList childKeys () const -void clear () -bool contains ( const QString & key ) const -void endArray () -void endGroup () -bool fallbacksEnabled () const -QString fileName () const -Format format () const -QString group () const -QTextCodec * iniCodec () const -bool isWritable () const -QString organizationName () const -void remove ( const QString & key ) -Scope scope () const -void setArrayIndex ( int i ) -void setFallbacksEnabled ( bool b ) -void setIniCodec ( QTextCodec * codec ) -void setIniCodec ( const char * codecName ) -void setValue ( const QString & key, const QVariant & value ) -Status status () const -void sync () -QVariant value ( const QString & key, const QVariant & defaultValue = QVariant() ) const - -Format defaultFormat () -//Format registerFormat ( const QString & extension, ReadFunc readFunc, WriteFunc writeFunc, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive ) -void setDefaultFormat ( Format format ) -void setPath ( Format format, Scope scope, const QString & path ) - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QSignalMapper.qth b/harbour/contrib/hbqt/qtcore/qth/QSignalMapper.qth deleted file mode 100644 index 6a205948dd..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QSignalMapper.qth +++ /dev/null @@ -1,62 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -Inherit = QObject -New = pParent - - - -#include - - -/* - * QSignalMapper ( QObject * parent = 0 ) - * ~QSignalMapper () - */ -HB_FUNC( QT_QSIGNALMAPPER ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) ) - { - __HB_RETPTRGC__( new QSignalMapper( hbqt_par_QObject( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QSignalMapper( 0 ) ); - } -} - - - -QObject * mapping ( int id ) const -QObject * mapping ( const QString & id ) const -//QObject * mapping ( QWidget * widget ) const -QObject * mapping ( QObject * object ) const -void removeMappings ( QObject * sender ) -void setMapping ( QObject * sender, int id ) -void setMapping ( QObject * sender, const QString & text ) -//void setMapping ( QObject * sender, QWidget * widget ) -void setMapping ( QObject * sender, QObject * object ) - - - -void map () -void map ( QObject * sender ) - - - -void mapped ( int i ) -void mapped ( const QString & text ) -//void mapped ( QWidget * widget ) -void mapped ( QObject * object ) - diff --git a/harbour/contrib/hbqt/qtcore/qth/QSize.qth b/harbour/contrib/hbqt/qtcore/qth/QSize.qth deleted file mode 100644 index b9e578d22f..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QSize.qth +++ /dev/null @@ -1,71 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Type = PlainObject -New = - - - -#include - - -/* - * QSize () - * QSize ( const QSize & size ) - * QSize ( int width, int height ) - * ~QSize () - */ -HB_FUNC( QT_QSIZE ) -{ - if( hb_pcount() == 2 && HB_ISNUM( 1 ) && HB_ISNUM( 2 ) ) - { - __HB_RETPTRGC__( new QSize( hb_parni( 1 ), hb_parni( 2 ) ) ); - } - else if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QSIZE" ) ) - { - __HB_RETPTRGC__( new QSize( *hbqt_par_QSize( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QSize() ); - } -} - - - - - - -int height () const -bool isEmpty () const -bool isNull () const -bool isValid () const -int & rheight () -int & rwidth () -void scale ( int width, int height, Qt::AspectRatioMode mode ) -void scale ( const QSize & size, Qt::AspectRatioMode mode ) -void setHeight ( int height ) -void setWidth ( int width ) -void transpose () -int width () const -QSize boundedTo ( const QSize & otherSize ) const -QSize expandedTo ( const QSize & otherSize ) const - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QSizeF.qth b/harbour/contrib/hbqt/qtcore/qth/QSizeF.qth deleted file mode 100644 index f3783a72c4..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QSizeF.qth +++ /dev/null @@ -1,72 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Type = PlainObject -New = - - - -#include - - -/* - * QSizeF () - * QSizeF ( const QSize & size ) - * QSizeF ( qreal width, qreal height ) - * ~QSizeF () - */ -HB_FUNC( QT_QSIZEF ) -{ - if( hb_pcount() == 2 && HB_ISNUM( 1 ) && HB_ISNUM( 2 ) ) - { - __HB_RETPTRGC__( new QSizeF( hb_parnd( 1 ), hb_parnd( 2 ) ) ); - } - else if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QSIZEF" ) ) - { - __HB_RETPTRGC__( new QSizeF( *hbqt_par_QSizeF( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QSizeF() ); - } -} - - - - - - -QSizeF boundedTo ( const QSizeF & otherSize ) const -QSizeF expandedTo ( const QSizeF & otherSize ) const -qreal height () const -bool isEmpty () const -bool isNull () const -bool isValid () const -qreal & rheight () -qreal & rwidth () -void scale ( qreal width, qreal height, Qt::AspectRatioMode mode ) -void scale ( const QSizeF & size, Qt::AspectRatioMode mode ) -void setHeight ( qreal height ) -void setWidth ( qreal width ) -QSize toSize () const -void transpose () -qreal width () const - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QStringList.qth b/harbour/contrib/hbqt/qtcore/qth/QStringList.qth deleted file mode 100644 index 21bbd18e9a..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QStringList.qth +++ /dev/null @@ -1,110 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = QList -Type = Core -New = - - - -#include - - -/* - * QStringList () - * QStringList ( const QString & str ) - * QStringList ( const QStringList & other ) - * QStringList ( const QList & other ) - */ -HB_FUNC( QT_QSTRINGLIST ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QSTRINGLIST" ) ) - { - __HB_RETPTRGC__( new QStringList( *hbqt_par_QStringList( 1 ) ) ); - } - else if( hb_pcount() == 1 && HB_ISCHAR( 1 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QStringList( hb_parstr_utf8( 1, &pText01, NULL ) ) ); - hb_strfree( pText01 ); - } - else - { - __HB_RETPTRGC__( new QStringList() ); - } -} - - - - - - -void append ( const QString & value ) -//bool contains ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -QStringList filter ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -QStringList filter ( const QRegExp & rx ) const -int indexOf ( const QString & value, int from = 0 ) const -int indexOf ( const QRegExp & rx, int from = 0 ) const -int indexOf ( QRegExp & rx, int from = 0 ) const -QString join ( const QString & separator ) const -int lastIndexOf ( const QRegExp & rx, int from = -1 ) const -int lastIndexOf ( const QString & value, int from = -1 ) const -int lastIndexOf ( QRegExp & rx, int from = -1 ) const -int removeDuplicates () -QStringList & replaceInStrings ( const QString & before, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive ) -QStringList & replaceInStrings ( const QRegExp & rx, const QString & after ) -void sort () -QString & at ( int i ) const -QString & back () -int count ( const QString & value ) const -bool endsWith ( const QString & value ) const -//QString & first () -const QString & first () const -//QString & front () -const QString & front () const -void insert ( int i, const QString & value ) -//QString & last () -const QString & last () const - -//QList mid ( int pos, int length = -1 ) const - -void prepend ( const QString & value ) -void push_back ( const QString & value ) -void push_front ( const QString & value ) -int removeAll ( const QString & value ) -bool removeOne ( const QString & value ) -void replace ( int i, const QString & value ) - -bool startsWith ( const QString & value ) const -QString takeAt ( int i ) -QString takeFirst () -QString takeLast () - -QSet toSet () const -std::list toStdList () const -QVector toVector () const -QString value ( int i ) const -QString value ( int i, const QString & defaultValue ) const - - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QStringRef.qth b/harbour/contrib/hbqt/qtcore/qth/QStringRef.qth deleted file mode 100644 index 99f193f5e9..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QStringRef.qth +++ /dev/null @@ -1,95 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = -New = - - - -#include - - -/* - * QStringRef () - * QStringRef ( const QString * string ) - * QStringRef ( const QStringRef & other ) - * QStringRef ( const QString * string, int position, int length ) - * ~QStringRef () - */ -HB_FUNC( QT_QSTRINGREF ) -{ - if( hb_pcount() == 1 && HB_ISCHAR( 1 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QStringRef( ( const QString * ) hb_parstr_utf8( 1, &pText01, NULL ) ) ); - hb_strfree( pText01 ); - } - else if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QSTRINGREF" ) ) - { - __HB_RETPTRGC__( new QStringRef( * hbqt_par_QStringRef( 1 ) ) ); - } - else if( hb_pcount() == 3 && HB_ISCHAR( 1 ) && HB_ISNUM( 2 ) && HB_ISNUM( 3 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QStringRef( ( const QString * ) hb_parstr_utf8( 1, &pText01, NULL ), hb_parni( 2 ), hb_parni( 3 ) ) ); - hb_strfree( pText01 ); - } - else - { - __HB_RETPTRGC__( new QStringRef() ); - } -} - - - - - - -//QStringRef appendTo ( QString * string ) const -const QChar at ( int position ) const -void clear () -int compare ( const QString & other, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -int compare ( const QStringRef & other, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -//int compare ( QLatin1String other, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const -const QChar * constData () const -int count () const -const QChar * data () const -bool isEmpty () const -bool isNull () const -int length () const -int localeAwareCompare ( const QString & other ) const -int localeAwareCompare ( const QStringRef & other ) const -int position () const -int size () const -//const QString * string () const -//QString toString () const -const QChar * unicode () const - -int compare ( const QStringRef & s1, const QString & s2, Qt::CaseSensitivity cs = Qt::CaseSensitive ) -int compare ( const QStringRef & s1, const QStringRef & s2, Qt::CaseSensitivity cs = Qt::CaseSensitive ) -//int compare ( const QStringRef & s1, QLatin1String s2, Qt::CaseSensitivity cs = Qt::CaseSensitive ) -int localeAwareCompare ( const QStringRef & s1, const QString & s2 ) -int localeAwareCompare ( const QStringRef & s1, const QStringRef & s2 ) - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QTextBoundaryFinder.qth b/harbour/contrib/hbqt/qtcore/qth/QTextBoundaryFinder.qth deleted file mode 100644 index 825f89ece3..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QTextBoundaryFinder.qth +++ /dev/null @@ -1,79 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = Core -New = - - - -#include - - -/* - * QTextBoundaryFinder () - * QTextBoundaryFinder ( const QTextBoundaryFinder & other ) - * QTextBoundaryFinder ( BoundaryType type, const QString & string ) - * QTextBoundaryFinder ( BoundaryType type, const QChar * chars, int length, unsigned char * buffer = 0, int bufferSize = 0 ) - * ~QTextBoundaryFinder () - */ -HB_FUNC( QT_QTEXTBOUNDARYFINDER ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QTEXTBOUNDARYFINDER" ) ) - { - __HB_RETPTRGC__( new QTextBoundaryFinder( *hbqt_par_QTextBoundaryFinder( 1 ) ) ); - } - else if( hb_pcount() == 2 && HB_ISNUM( 1 ) && HB_ISCHAR( 2 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QTextBoundaryFinder( ( QTextBoundaryFinder::BoundaryType ) hb_parni( 1 ), hb_parstr_utf8( 2, &pText01, NULL ) ) ); - hb_strfree( pText01 ); - } - else if( hb_pcount() >= 3 && HB_ISNUM( 1 ) && hbqt_par_isDerivedFrom( 2, "QCHAR" ) && HB_ISNUM( 3 ) ) - { - __HB_RETPTRGC__( new QTextBoundaryFinder( ( QTextBoundaryFinder::BoundaryType ) hb_parni( 1 ), hbqt_par_QChar( 2 ), hb_parni( 3 ), HB_ISCHAR( 4 ) ? ( unsigned char * ) hb_parc( 4 ) : 0, hb_parni( 5 ) ) ); - } - else - { - __HB_RETPTRGC__( new QTextBoundaryFinder() ); - } -} - - - -flags BoundaryReasons -enum BoundaryReason { NotAtBoundary, StartWord, EndWord } -enum BoundaryType { Grapheme, Word, Line, Sentence } - - - -BoundaryReasons boundaryReasons () const -bool isAtBoundary () const -bool isValid () const -int position () const -void setPosition ( int position ) -QString string () const -void toEnd () -int toNextBoundary () -int toPreviousBoundary () -void toStart () -BoundaryType type () const - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QTextCodec.qth b/harbour/contrib/hbqt/qtcore/qth/QTextCodec.qth deleted file mode 100644 index 415845af8c..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QTextCodec.qth +++ /dev/null @@ -1,79 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = Core -New = -Destructor = no -Constructor = no - - - -#include - - -/* - * QTextCodec () - * - */ -HB_FUNC( QT_QTEXTCODEC ) -{ - //__HB_RETPTRGC__( new QTextCodec() ); -} - - - -enum ConversionFlag { DefaultConversion, ConvertInvalidToNull, IgnoreHeader } -flags ConversionFlags - - - -virtual QList aliases () const -bool canEncode ( QChar ch ) const -bool canEncode ( const QString & s ) const -QByteArray fromUnicode ( const QString & str ) const -//QByteArray fromUnicode ( const QChar * input, int number, ConverterState * state = 0 ) const -QTextDecoder * makeDecoder () const -QTextEncoder * makeEncoder () const -virtual int mibEnum () const = 0 -virtual QByteArray name () const = 0 -QString toUnicode ( const QByteArray & a ) const -# -//QString toUnicode ( const char * input, int size, ConverterState * state = 0 ) const -# -QString toUnicode ( const char * chars ) const - - -# Public Statics I do not know it these will work, though compile OK -QTextCodec * codecForCStrings () -QTextCodec * codecForHtml ( const QByteArray & ba, QTextCodec * defaultCodec ) -QTextCodec * codecForHtml ( const QByteArray & ba ) -QTextCodec * codecForLocale () -QTextCodec * codecForMib ( int mib ) -QTextCodec * codecForName ( const QByteArray & name ) -QTextCodec * codecForName ( const char * name ) -QTextCodec * codecForTr () -void setCodecForCStrings ( QTextCodec * codec ) -void setCodecForLocale ( QTextCodec * c ) -void setCodecForTr ( QTextCodec * c ) - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QTextDecoder.qth b/harbour/contrib/hbqt/qtcore/qth/QTextDecoder.qth deleted file mode 100644 index 16d831ae70..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QTextDecoder.qth +++ /dev/null @@ -1,57 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = Core -New = pTextCodec - - - -#include - - -/* - * QTextDecoder ( const QTextCodec * codec ) - * ~QTextDecoder () - */ -HB_FUNC( QT_QTEXTDECODER ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QTEXTCODEC" ) ) - { - __HB_RETPTRGC__( new QTextDecoder( hbqt_par_QTextCodec( 1 ) ) ); - } - else - { - hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - } -} - - - - - - -QString toUnicode ( const char * chars, int len ) -//void toUnicode ( QString * target, const char * chars, int len ) -# -//QString toUnicode ( const QByteArray & ba ) -# - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QTextEncoder.qth b/harbour/contrib/hbqt/qtcore/qth/QTextEncoder.qth deleted file mode 100644 index da04e5f826..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QTextEncoder.qth +++ /dev/null @@ -1,55 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = Core -New = - - - -#include - - -/* - * QTextEncoder ( const QTextCodec * codec ) - * ~QTextEncoder () - */ -HB_FUNC( QT_QTEXTENCODER ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QTEXTCODEC" ) ) - { - __HB_RETPTRGC__( new QTextEncoder( hbqt_par_QTextCodec( 1 ) ) ); - } - else - { - hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - } -} - - - - - - -QByteArray fromUnicode ( const QString & str ) -QByteArray fromUnicode ( const QChar * uc, int len ) -//QByteArray fromUnicode ( const QString & uc, int & lenInOut ) - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QTextStream.qth b/harbour/contrib/hbqt/qtcore/qth/QTextStream.qth deleted file mode 100644 index 0d70016774..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QTextStream.qth +++ /dev/null @@ -1,114 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Type = Core -New = cText, nIOMode - - - -#include - - -/* - * QTextStream () - * QTextStream ( QIODevice * device ) - * QTextStream ( FILE * fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite ) - * QTextStream ( QString * string, QIODevice::OpenMode openMode = QIODevice::ReadWrite ) - * QTextStream ( QByteArray * array, QIODevice::OpenMode openMode = QIODevice::ReadWrite ) - * QTextStream ( const QByteArray & array, QIODevice::OpenMode openMode = QIODevice::ReadOnly ) - * virtual ~QTextStream () - */ -HB_FUNC( QT_QTEXTSTREAM ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QIODEVICE" ) ) - { - __HB_RETPTRGC__( new QTextStream( hbqt_par_QIODevice( 1 ) ) ); - } - else if( hb_pcount() >= 1 && hbqt_par_isDerivedFrom( 1, "QBYTEARRAY" ) ) - { - __HB_RETPTRGC__( new QTextStream( hbqt_par_QByteArray( 1 ), ( QIODevice::OpenMode ) ( HB_ISNUM( 2 ) ? hb_parni( 2 ) : QIODevice::ReadWrite ) ) ); - } - else if( hb_pcount() >= 1 && HB_ISCHAR( 1 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QTextStream( hb_parstr_utf8( 1, &pText01, NULL ), ( QIODevice::OpenMode ) ( HB_ISNUM( 2 ) ? hb_parni( 2 ) : QIODevice::ReadWrite ) ) ); - hb_strfree( pText01 ); - } - else - { - __HB_RETPTRGC__( new QTextStream() ); - } -} - - - -flags NumberFlags -enum FieldAlignment { AlignLeft, AlignRight, AlignCenter, AlignAccountingStyle } -enum NumberFlag { ShowBase, ForcePoint, ForceSign, UppercaseBase, UppercaseDigits } -enum RealNumberNotation { ScientificNotation, FixedNotation, SmartNotation } -enum Status { Ok, ReadPastEnd, ReadCorruptData } - - - -QChar padChar () const -bool atEnd () const -bool autoDetectUnicode () const -QTextCodec * codec () const -QIODevice * device () const -FieldAlignment fieldAlignment () const -int fieldWidth () const -void flush () -bool generateByteOrderMark () const -int integerBase () const -QLocale locale () const -NumberFlags numberFlags () const -qint64 pos () const -QString read ( qint64 maxlen ) -QString readAll () -QString readLine ( qint64 maxlen = 0 ) -RealNumberNotation realNumberNotation () const -int realNumberPrecision () const -void reset () -void resetStatus () -bool seek ( qint64 pos ) -void setAutoDetectUnicode ( bool enabled ) -void setCodec ( QTextCodec * codec ) -void setCodec ( const char * codecName ) -void setDevice ( QIODevice * device ) -void setFieldAlignment ( FieldAlignment mode ) -void setFieldWidth ( int width ) -void setGenerateByteOrderMark ( bool generate ) -void setIntegerBase ( int base ) -void setLocale ( const QLocale & locale ) -void setNumberFlags ( NumberFlags flags ) -void setPadChar ( QChar ch ) -void setRealNumberNotation ( RealNumberNotation notation ) -void setRealNumberPrecision ( int precision ) -void setStatus ( Status status ) -# -//void setString ( QString * string, QIODevice::OpenMode openMode = QIODevice::ReadWrite ) -# -void skipWhiteSpace () -Status status () const -# -//QString * string () const -# - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QThread.qth b/harbour/contrib/hbqt/qtcore/qth/QThread.qth deleted file mode 100644 index 06522a31e0..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QThread.qth +++ /dev/null @@ -1,73 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = -Inherit = QObject -Type = Core -New = -Destructor = - - - -#include - - -/* QThread ( QObject * parent = 0 ) - * ~QThread () - */ -HB_FUNC( QT_QTHREAD ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) ) - { - __HB_RETPTRGC__( new QThread( hbqt_par_QObject( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QThread() ); - } -} - - - -enum Priority { IdlePriority, LowestPriority, LowPriority, NormalPriority, ..., InheritPriority } - - - -void exit ( int returnCode = 0 ) -bool isFinished () const -bool isRunning () const -Priority priority () const -void setPriority ( Priority priority ) -void setStackSize ( uint stackSize ) -uint stackSize () const -#bool wait ( unsigned long time = ULONG_MAX ) -bool wait ( ulong time = ULONG_MAX ) - -QThread * currentThread () -// Qt::HANDLE currentThreadId () -int idealThreadCount () -void yieldCurrentThread () - - - -void quit () -void start ( Priority priority = InheritPriority ) -void terminate () - - - -void finished () -void started () -void terminated () - diff --git a/harbour/contrib/hbqt/qtcore/qth/QTime.qth b/harbour/contrib/hbqt/qtcore/qth/QTime.qth deleted file mode 100644 index daf71bdb3e..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QTime.qth +++ /dev/null @@ -1,77 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -Type = Core -New = -Destructor = - - - -#include - - -/* QTime () - * QTime ( int h, int m, int s = 0, int ms = 0 ) - */ -HB_FUNC( QT_QTIME ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QTIME" ) ) - { - __HB_RETPTRGC__( new QTime( *hbqt_par_QTime( 1 ) ) ); - } - else if( hb_pcount() >= 2 && HB_ISNUM( 1 ) && HB_ISNUM( 2 ) ) - { - __HB_RETPTRGC__( new QTime( hb_parni( 1 ), hb_parni( 2 ), hb_parni( 3 ), hb_parni( 4 ) ) ); - } - else - { - __HB_RETPTRGC__( new QTime() ); - } -} - - - - - - -QTime addMSecs ( int ms ) const -QTime addSecs ( int s ) const -int elapsed () const -int hour () const -bool isNull () const -bool isValid () const -int minute () const -int msec () const -int msecsTo ( const QTime & t ) const -int restart () -int second () const -int secsTo ( const QTime & t ) const -bool setHMS ( int h, int m, int s, int ms = 0 ) -void start () -QString toString ( const QString & format ) const -QString toString ( Qt::DateFormat format = Qt::TextDate ) const - -QTime currentTime () -QTime fromString ( const QString & string, Qt::DateFormat format = Qt::TextDate ) -QTime fromString ( const QString & string, const QString & format ) -bool isValid ( int h, int m, int s, int ms = 0 ) - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QTimeLine.qth b/harbour/contrib/hbqt/qtcore/qth/QTimeLine.qth deleted file mode 100644 index 2b7694198c..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QTimeLine.qth +++ /dev/null @@ -1,93 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = -Inherit = QObject -Type = -New = - - - -#include - - -/* - * QTimeLine ( int duration = 1000, QObject * parent = 0 ) - * virtual ~QTimeLine () - */ -HB_FUNC( QT_QTIMELINE ) -{ - if( hb_pcount() == 2 && HB_ISNUM( 1 ) && hbqt_par_isDerivedFrom( 2, "QOBJECT" ) ) - { - __HB_RETPTRGC__( new QTimeLine( hb_parni( 1 ), hbqt_par_QObject( 2 ) ) ); - } - else if( hb_pcount() == 1 && HB_ISNUM( 1 ) ) - { - __HB_RETPTRGC__( new QTimeLine( hb_parni( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QTimeLine() ); - } -} - - - -enum CurveShape { EaseInCurve, EaseOutCurve, EaseInOutCurve, LinearCurve, SineCurve, CosineCurve } -enum Direction { Forward, Backward } -enum State { NotRunning, Paused, Running } - - - -int currentFrame () const -int currentTime () const -qreal currentValue () const -CurveShape curveShape () const -Direction direction () const -int duration () const -int endFrame () const -int frameForTime ( int msec ) const -int loopCount () const -void setCurveShape ( CurveShape shape ) -void setDirection ( Direction direction ) -void setDuration ( int duration ) -void setEndFrame ( int frame ) -void setFrameRange ( int startFrame, int endFrame ) -void setLoopCount ( int count ) -void setStartFrame ( int frame ) -void setUpdateInterval ( int interval ) -int startFrame () const -State state () const -int updateInterval () const -virtual qreal valueForTime ( int msec ) const - - - -void resume () -void setCurrentTime ( int msec ) -void setPaused ( bool paused ) -void start () -void stop () -void toggleDirection () - - - -void finished () -void frameChanged ( int frame ) -void stateChanged ( QTimeLine::State newState ) -void valueChanged ( qreal value ) - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QTimer.qth b/harbour/contrib/hbqt/qtcore/qth/QTimer.qth deleted file mode 100644 index d9fdb0b721..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QTimer.qth +++ /dev/null @@ -1,60 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -Inherit = QObject -New = pParent - - - -#include - - -/* - * QTimer ( QObject * parent = 0 ) - * ~QTimer () - */ -HB_FUNC( QT_QTIMER ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) ) - { - __HB_RETPTRGC__( new QTimer( hbqt_par_QObject( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QTimer() ); - } -} - - - -int interval () const -bool isActive () const -bool isSingleShot () const -void setInterval ( int msec ) -void setSingleShot ( bool singleShot ) -int timerId () const - -// This will never work as per Harbour's implementation of Signal/slots, so commenting out - 27Jun2012 -//void singleShot ( int msec, QObject * receiver, const char * member ) - - - -void start () -void stop () -void start ( int msec ) - - - -void timeout () - diff --git a/harbour/contrib/hbqt/qtcore/qth/QTranslator.qth b/harbour/contrib/hbqt/qtcore/qth/QTranslator.qth deleted file mode 100644 index 7843147259..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QTranslator.qth +++ /dev/null @@ -1,57 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = -Inherit = QObject -Type = Core -New = -Destructor = - - - -#include - - -/* QTranslator ( QObject * parent = 0 ) - * ~QTranslator () - */ -HB_FUNC( QT_QTRANSLATOR ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) ) - { - __HB_RETPTRGC__( new QTranslator( hbqt_par_QObject( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QTranslator() ); - } -} - - - - - - -virtual bool isEmpty () const -bool load ( const QString & filename, const QString & directory = QString(), const QString & search_delimiters = QString(), const QString & suffix = QString() ) -// bool load ( const uchar * data, int len ) -virtual QString translate ( const char * context, const char * sourceText, const char * disambiguation = 0 ) const -QString translate ( const char * context, const char * sourceText, const char * disambiguation, int n ) const - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/QUrl.qth b/harbour/contrib/hbqt/qtcore/qth/QUrl.qth deleted file mode 100644 index 9492f07ca6..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QUrl.qth +++ /dev/null @@ -1,151 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherit = -New = pParent - - - -#include -#include - - -/* - * QUrl () - * QUrl ( const QString & url ) - * QUrl ( const QUrl & other ) - * QUrl ( const QString & url, ParsingMode parsingMode ) - * ~QUrl () - */ -HB_FUNC( QT_QURL ) -{ - if( hb_pcount() == 1 && HB_ISCHAR( 1 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QUrl( hb_parstr_utf8( 1, &pText01, NULL ) ) ); - hb_strfree( pText01 ); - } - else if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QURL" ) ) - { - __HB_RETPTRGC__( new QUrl( *hbqt_par_QUrl( 1 ) ) ); - } - else if( hb_pcount() == 1 && HB_ISCHAR( 1 ) && HB_ISNUM( 2 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QUrl( hb_parstr_utf8( 1, &pText01, NULL ), ( QUrl::ParsingMode ) hb_parni( 2 ) ) ); - hb_strfree( pText01 ); - } - else - { - __HB_RETPTRGC__( new QUrl() ); - } -} -/* - * void setQueryDelimiters ( char valueDelimiter, char pairDelimiter ) - */ -HB_FUNC( QT_QURL_SETQUERYDELIMITERS ) -{ - hbqt_par_QUrl( 1 )->setQueryDelimiters( ( char ) hb_parni( 2 ), ( char ) hb_parni( 3 ) ); -} - - - -enum FormattingOption { None, RemoveScheme, RemovePassword, RemoveUserInfo, ..., StripTrailingSlash } -flags FormattingOptions -enum ParsingMode { TolerantMode, StrictMode } - - - -void addEncodedQueryItem ( const QByteArray & key, const QByteArray & value ) -void addQueryItem ( const QString & key, const QString & value ) -QList allEncodedQueryItemValues ( const QByteArray & key ) const -QStringList allQueryItemValues ( const QString & key ) const -QString authority () const -void clear () -QByteArray encodedFragment () const -QByteArray encodedHost () const -QByteArray encodedPassword () const -QByteArray encodedPath () const -QByteArray encodedQuery () const -QByteArray encodedQueryItemValue ( const QByteArray & key ) const -QList > encodedQueryItems () const -QByteArray encodedUserName () const -QString errorString () const -QString fragment () const -bool hasEncodedQueryItem ( const QByteArray & key ) const -bool hasFragment () const -bool hasQuery () const -bool hasQueryItem ( const QString & key ) const -QString host () const -bool isEmpty () const -bool isParentOf ( const QUrl & childUrl ) const -bool isRelative () const -bool isValid () const -QString password () const -QString path () const -int port () const -int port ( int defaultPort ) const -QString queryItemValue ( const QString & key ) const -QList > queryItems () const -char queryPairDelimiter () const -char queryValueDelimiter () const -void removeAllEncodedQueryItems ( const QByteArray & key ) -void removeAllQueryItems ( const QString & key ) -void removeEncodedQueryItem ( const QByteArray & key ) -void removeQueryItem ( const QString & key ) -QUrl resolved ( const QUrl & relative ) const -QString scheme () const -void setAuthority ( const QString & authority ) -void setEncodedFragment ( const QByteArray & fragment ) -void setEncodedHost ( const QByteArray & host ) -void setEncodedPassword ( const QByteArray & password ) -void setEncodedPath ( const QByteArray & path ) -void setEncodedQuery ( const QByteArray & query ) -void setEncodedQueryItems ( const QList > & query ) -void setEncodedUrl ( const QByteArray & encodedUrl ) -void setEncodedUrl ( const QByteArray & encodedUrl, ParsingMode parsingMode ) -void setEncodedUserName ( const QByteArray & userName ) -void setFragment ( const QString & fragment ) -void setHost ( const QString & host ) -void setPassword ( const QString & password ) -void setPath ( const QString & path ) -void setPort ( int port ) -# -# Shifted to CODE Section -# -//void setQueryDelimiters ( char valueDelimiter, char pairDelimiter ) -void setQueryItems ( const QList > & query ) -void setScheme ( const QString & scheme ) -void setUrl ( const QString & url ) -void setUrl ( const QString & url, ParsingMode parsingMode ) -void setUserInfo ( const QString & userInfo ) -void setUserName ( const QString & userName ) -QByteArray toEncoded ( FormattingOptions options = None ) const -QString toLocalFile () const -QString toString ( FormattingOptions options = None ) const -QString userInfo () const -QString userName () const - - -QString fromAce ( const QByteArray & domain ) -QUrl fromEncoded ( const QByteArray & input ) -QUrl fromEncoded ( const QByteArray & input, ParsingMode parsingMode ) -QUrl fromLocalFile ( const QString & localFile ) -QString fromPercentEncoding ( const QByteArray & input ) -QStringList idnWhitelist () -void setIdnWhitelist ( const QStringList & list ) -QByteArray toAce ( const QString & domain ) -QByteArray toPercentEncoding ( const QString & input, const QByteArray & exclude = QByteArray(), const QByteArray & include = QByteArray() ) - diff --git a/harbour/contrib/hbqt/qtcore/qth/QVariant.qth b/harbour/contrib/hbqt/qtcore/qth/QVariant.qth deleted file mode 100644 index d82730ff2c..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/QVariant.qth +++ /dev/null @@ -1,236 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Type = Core -New = - - - -#include -#include -#include -#include -#include -#include -#include -#include - - -/* -QVariant () -QVariant ( Qt::GlobalColor color ) -QVariant ( Type type ) -QVariant ( int typeOrUserType, const void * copy ) -QVariant ( const QVariant & p ) -QVariant ( QDataStream & s ) -QVariant ( int val ) -QVariant ( uint val ) -QVariant ( qlonglong val ) -QVariant ( qulonglong val ) -QVariant ( bool val ) -QVariant ( double val ) -QVariant ( const char * val ) -QVariant ( const QByteArray & val ) -QVariant ( const QBitArray & val ) -QVariant ( const QString & val ) -QVariant ( const QLatin1String & val ) -QVariant ( const QStringList & val ) -QVariant ( const QChar & c ) -QVariant ( const QDate & val ) -QVariant ( const QTime & val ) -QVariant ( const QDateTime & val ) -QVariant ( const QList & val ) -QVariant ( const QMap & val ) -QVariant ( const QHash & val ) -QVariant ( const QSize & val ) -QVariant ( const QSizeF & val ) -QVariant ( const QPoint & val ) -QVariant ( const QPointF & val ) -QVariant ( const QLine & val ) -QVariant ( const QLineF & val ) -QVariant ( const QRect & val ) -QVariant ( const QRectF & val ) -QVariant ( const QUrl & val ) -QVariant ( const QLocale & l ) -QVariant ( const QRegExp & regExp ) -~QVariant () - */ -HB_FUNC( QT_QVARIANT ) -{ - if( hb_pcount() == 1 && HB_ISOBJECT( 1 ) ) - { - if( hbqt_par_isDerivedFrom( 1, "QVARIANT" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QVariant( 1 ) ) ); - } - else if( hbqt_par_isDerivedFrom( 1, "QBYTEARRAY" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QByteArray( 1 ) ) ); - } - else if( hbqt_par_isDerivedFrom( 1, "QBITARRAY" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QBitArray( 1 ) ) ); - } - else if( hbqt_par_isDerivedFrom( 1, "QLATIN1STRING" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QLatin1String( 1 ) ) ); - } - else if( hbqt_par_isDerivedFrom( 1, "QSTRINGLIST" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QStringList( 1 ) ) ); - } - else if( hbqt_par_isDerivedFrom( 1, "QDATE" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QDate( 1 ) ) ); - } - else if( hbqt_par_isDerivedFrom( 1, "QTIME" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QTime( 1 ) ) ); - } - else if( hbqt_par_isDerivedFrom( 1, "QDATETIME" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QDateTime( 1 ) ) ); - } - else if( hbqt_par_isDerivedFrom( 1, "QCHAR" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QChar( 1 ) ) ); - } - else if( hbqt_par_isDerivedFrom( 1, "QSIZE" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QSize( 1 ) ) ); - } - else if( hbqt_par_isDerivedFrom( 1, "QSIZEF" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QSizeF( 1 ) ) ); - } - else if( hbqt_par_isDerivedFrom( 1, "QRECT" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QRect( 1 ) ) ); - } - else if( hbqt_par_isDerivedFrom( 1, "QRECTF" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QRectF( 1 ) ) ); - } - else if( hbqt_par_isDerivedFrom( 1, "QPOINT" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QPoint( 1 ) ) ); - } - else if( hbqt_par_isDerivedFrom( 1, "QPOINTF" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QPointF( 1 ) ) ); - } - else if( hbqt_par_isDerivedFrom( 1, "QLINE" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QLine( 1 ) ) ); - } - else if( hbqt_par_isDerivedFrom( 1, "QLINEF" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QLineF( 1 ) ) ); - } - else if( hbqt_par_isDerivedFrom( 1, "QURL" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QUrl( 1 ) ) ); - } - else if( hbqt_par_isDerivedFrom( 1, "QLOCALE" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QLocale( 1 ) ) ); - } - else if( hbqt_par_isDerivedFrom( 1, "QREGEXP" ) ) - { - __HB_RETPTRGC__( new QVariant( *hbqt_par_QRegExp( 1 ) ) ); - } - } - else if( hb_pcount() == 1 && HB_ISCHAR( 1 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QVariant( hb_parstr_utf8( 1, &pText01, NULL ) ) ); - hb_strfree( pText01 ); - } - else if( hb_pcount() == 1 && HB_ISNUM( 1 ) ) - { - __HB_RETPTRGC__( new QVariant( hb_parni( 1 ) ) ); - } - else if( hb_pcount() == 1 && HB_ISLOG( 1 ) ) - { - __HB_RETPTRGC__( new QVariant( hb_parl( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QVariant() ); - } -} - - - -enum Type { Invalid, BitArray, Bitmap, Bool, ..., UserType } - - - -bool canConvert ( Type t ) const -void clear () -bool convert ( Type t ) -bool isNull () const -bool isValid () const -void setValue ( const T & value ) -QBitArray toBitArray () const -bool toBool () const -QByteArray toByteArray () const -QChar toChar () const -QDate toDate () const -QDateTime toDateTime () const -double toDouble ( bool * ok = 0 ) const -QHash toHash () const -int toInt ( bool * ok = 0 ) const -QLine toLine () const -QLineF toLineF () const -QList toList () const -QLocale toLocale () const -qlonglong toLongLong ( bool * ok = 0 ) const -QMap toMap () const -QPoint toPoint () const -QPointF toPointF () const -QRect toRect () const -QRectF toRectF () const -QRegExp toRegExp () const -QSize toSize () const -QSizeF toSizeF () const -QString toString () const -QStringList toStringList () const -QTime toTime () const -uint toUInt ( bool * ok = 0 ) const -qulonglong toULongLong ( bool * ok = 0 ) const -QUrl toUrl () const -Type type () const -# -//const char * typeName () const -# -int userType () const -# -# No Matching Function Call -# -//T value () const -# - - -QVariant fromValue ( const T & value ) -Type nameToType ( const char * name ) -const char * typeToName ( Type typ ) - - - - - - - diff --git a/harbour/contrib/hbqt/qtcore/qth/filelist.hbm b/harbour/contrib/hbqt/qtcore/qth/filelist.hbm deleted file mode 100644 index 62dd9e5259..0000000000 --- a/harbour/contrib/hbqt/qtcore/qth/filelist.hbm +++ /dev/null @@ -1,73 +0,0 @@ -# -# $Id$ -# - --pflag=-qtver=0x040500 --pflag=-qtmodule=qtcore --pflag=-qthdocdir=../doc/ - -HBQString.qth - -# QAbstractEventDispatcher.qth -QAbstractItemModel.qth -QAbstractListModel.qth -QAbstractTableModel.qth -QBitArray.qth -QBuffer.qth -QByteArray.qth -QChar.qth -QChildEvent.qth -QCoreApplication.qth -QDataStream.qth -QDate.qth -QDateTime.qth -QDir.qth -QEvent.qth -QEventLoop.qth -QFile.qth -QFileInfo.qth -QFileSystemWatcher.qth -QGenericArgument.qth -QGenericReturnArgument.qth -QIODevice.qth -QLatin1Char.qth -QLatin1String.qth -QLine.qth -QLineF.qth -QList.qth -QLibraryInfo.qth -QLocale.qth -QMetaClassInfo.qth -QMetaEnum.qth -QMetaMethod.qth -QMetaObject.qth -QMetaProperty.qth -QMetaType.qth -QMimeData.qth -QModelIndex.qth -QObject.qth -QPoint.qth -QPointF.qth -QProcess.qth -QRect.qth -QRectF.qth -QRegExp.qth -QResource.qth -QSettings.qth -QSignalMapper.qth -QSize.qth -QSizeF.qth -QStringList.qth -QStringRef.qth -QTextBoundaryFinder.qth -QTextCodec.qth -QTextDecoder.qth -QTextEncoder.qth -QTextStream.qth -QThread.qth -QTime.qth -QTimeLine.qth -QTimer.qth -QTranslator.qth -QUrl.qth -QVariant.qth diff --git a/harbour/contrib/hbqt/qtdeclarative/hbqt_init.cpp b/harbour/contrib/hbqt/qtdeclarative/hbqt_init.cpp deleted file mode 100644 index aa4158fd8c..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/hbqt_init.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2009-12 Pritpal Bedi (bedipritpal@hotmail.com) - * Copyright 2010 Viktor Szakats (harbour syenar.net) - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ - -#include "hbqt.h" -#include "hbqtinit.h" - -#include "hbvm.h" -#include "hbinit.h" - -#if QT_VERSION >= 0x040500 - -/*----------------------------------------------------------------------*/ - -static void hbqt_registerCallbacks( void ) -{ -} - -/*----------------------------------------------------------------------*/ - -HB_FUNC( __HBQTDECLARATIVE ) {;} - -static void hbqt_lib_init( void * cargo ) -{ - HB_SYMBOL_UNUSED( cargo ); - - hbqt_registerCallbacks(); -} - -static void hbqt_lib_exit( void * cargo ) -{ - HB_SYMBOL_UNUSED( cargo ); -} - -HB_CALL_ON_STARTUP_BEGIN( _hbqtdeclarative_init_ ) - hb_vmAtInit( hbqt_lib_init, NULL ); - hb_vmAtExit( hbqt_lib_exit, NULL ); -HB_CALL_ON_STARTUP_END( _hbqtdeclarative_init_ ) - -#if defined( HB_PRAGMA_STARTUP ) - #pragma startup _hbqtdeclarative_init_ -#elif defined( HB_DATASEG_STARTUP ) - #define HB_DATASEG_BODY HB_DATASEG_FUNC( _hbqtdeclarative_init_ ) - #include "hbiniseg.h" -#endif - -#endif diff --git a/harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.ch b/harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.ch deleted file mode 100644 index f1e86b4dc4..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.ch +++ /dev/null @@ -1,56 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009-2012 Pritpal Bedi - * http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#ifndef _HBQTDECLARATIVE_CH - #define _HBQTDECLARATIVE_CH - - -#endif diff --git a/harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.hbc b/harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.hbc deleted file mode 100644 index 357f42c66f..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.hbc +++ /dev/null @@ -1,22 +0,0 @@ -# -# $Id$ -# - -# --------------------------------------------------------------- -# Copyright 2010 Viktor Szakats (harbour syenar.net) -# See COPYING for licensing terms. -# --------------------------------------------------------------- - -incpaths=. - -libs=../qtcore/hbqtcore.hbc -libs=../qtgui/hbqtgui.hbc -libs=../qtnetwork/hbqtnetwork.hbc - -{!HB_STATIC_QT}libs=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF} -{!HB_STATIC_QT&(allwin|os2)}libs=QtDeclarative4 -{!HB_STATIC_QT&(linux|beos|symbian)}libs=QtDeclarative -{!HB_STATIC_QT&darwin}frameworks=QtDeclarative -{HB_STATIC_QT&allwin}libs=${_HB_DYNPREF}${hb_name}s${_HB_DYNSUFF} -{HB_STATIC_QT&linux|beos}libs=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF} -{HB_STATIC_QT&(allwin|linux|beos)}libs=QtDeclarative diff --git a/harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.hbm b/harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.hbm deleted file mode 100644 index f72a88c9ca..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.hbm +++ /dev/null @@ -1,26 +0,0 @@ -# -# $Id$ -# - --i. - -qth/filelist.hbm - -qtdeclarative.hbx - -hbqt_init.cpp - -../qtcore/hbqtcore.hbc -../qtgui/hbqtgui.hbc -../qtnetwork/hbqtnetwork.hbc - --deppkgname=qtdeclarative:QtDeclarative --depkeyhead=qtdeclarative:QtDeclarative/QtDeclarative --depcontrol=qtdeclarative:${HB_WITH_QT} -{!darwin}-depincpath=qtdeclarative:/usr/include/qt4 -{!darwin}-depincpath=qtdeclarative:/usr/lib/qt4/include -{!darwin}-depincpath=qtdeclarative:/usr/include -{bsd}-depincpath=qt:/usr/local/include/qt4 -{darwin}-depincpath=qtdeclarative:/Developer/qt/include -{darwin}-depincpath=qtdeclarative:/Library/Frameworks -{darwin}-depincpath=qtdeclarative:/usr/local/include diff --git a/harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.hbp b/harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.hbp deleted file mode 100644 index 246f3c5059..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.hbp +++ /dev/null @@ -1,12 +0,0 @@ -# -# $Id$ -# - -../hbqt_common.hbm - -hbqtdeclarative.hbm - --instfile=inc:hbqtdeclarative.ch --instfile=inc:hbqtdeclarative.hbx - -hbqtdeclaratives.hbp diff --git a/harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.hbx b/harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.hbx deleted file mode 100644 index 1d999b9a26..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/hbqtdeclarative.hbx +++ /dev/null @@ -1,62 +0,0 @@ -/* - * $Id$ - */ - -/* -------------------------------------------------------------------- */ -/* NOTE: You can add manual override which functions to include or */ -/* exclude from automatically generated EXTERNAL/DYNAMIC list. */ -/* Syntax: // HB_FUNC_INCLUDE */ -/* // HB_FUNC_EXCLUDE */ -/* -------------------------------------------------------------------- */ - -/* -------------------------------------------------------------------- */ -/* WARNING: Automatically generated code below. DO NOT EDIT! */ -/* Regenerate using hbmk2 '-hbx=' option. */ -/* -------------------------------------------------------------------- */ - -#ifndef __HBEXTERN_CH__HBQTDECLARATIVE__ -#define __HBEXTERN_CH__HBQTDECLARATIVE__ - -#if defined( __HBEXTREQ__ ) .OR. defined( __HBEXTERN__HBQTDECLARATIVE__ANNOUNCE ) - ANNOUNCE __HBEXTERN__HBQTDECLARATIVE__ -#endif - -#if defined( __HBEXTREQ__ ) .OR. defined( __HBEXTERN__HBQTDECLARATIVE__REQUEST ) - #command DYNAMIC => EXTERNAL -#endif - -DYNAMIC HB_QDECLARATIVECOMPONENT -DYNAMIC HB_QDECLARATIVECONTEXT -DYNAMIC HB_QDECLARATIVEENGINE -DYNAMIC HB_QDECLARATIVEERROR -DYNAMIC HB_QDECLARATIVEEXPRESSION -DYNAMIC HB_QDECLARATIVEIMAGEPROVIDER -DYNAMIC HB_QDECLARATIVEITEM -DYNAMIC HB_QDECLARATIVELISTREFERENCE -DYNAMIC HB_QDECLARATIVEPARSERSTATUS -DYNAMIC HB_QDECLARATIVEPROPERTY -DYNAMIC HB_QDECLARATIVEPROPERTYMAP -DYNAMIC HB_QDECLARATIVEPROPERTYVALUESOURCE -DYNAMIC HB_QDECLARATIVESCRIPTSTRING -DYNAMIC HB_QDECLARATIVEVIEW -DYNAMIC QDECLARATIVECOMPONENT -DYNAMIC QDECLARATIVECONTEXT -DYNAMIC QDECLARATIVEENGINE -DYNAMIC QDECLARATIVEERROR -DYNAMIC QDECLARATIVEEXPRESSION -DYNAMIC QDECLARATIVEIMAGEPROVIDER -DYNAMIC QDECLARATIVEITEM -DYNAMIC QDECLARATIVELISTREFERENCE -DYNAMIC QDECLARATIVEPARSERSTATUS -DYNAMIC QDECLARATIVEPROPERTY -DYNAMIC QDECLARATIVEPROPERTYMAP -DYNAMIC QDECLARATIVEPROPERTYVALUESOURCE -DYNAMIC QDECLARATIVESCRIPTSTRING -DYNAMIC QDECLARATIVEVIEW -DYNAMIC __HBQTDECLARATIVE - -#if defined( __HBEXTREQ__ ) .OR. defined( __HBEXTERN__HBQTDECLARATIVE__REQUEST ) - #uncommand DYNAMIC => EXTERNAL -#endif - -#endif diff --git a/harbour/contrib/hbqt/qtdeclarative/hbqtdeclaratives.hbp b/harbour/contrib/hbqt/qtdeclarative/hbqtdeclaratives.hbp deleted file mode 100644 index f64574d4ab..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/hbqtdeclaratives.hbp +++ /dev/null @@ -1,7 +0,0 @@ -# -# $Id$ -# - -../hbqt_commons.hbm - -hbqtdeclarative.hbm diff --git a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeComponent.qth b/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeComponent.qth deleted file mode 100644 index 13c73d82a5..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeComponent.qth +++ /dev/null @@ -1,71 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = Yes -Inherit = QObject -Type = -New = -Version = 0x040700 - - - -#include - - -/* - * QDeclarativeComponent ( QDeclarativeEngine * engine, QObject * parent = 0 ) - * QDeclarativeComponent ( QDeclarativeEngine * engine, const QString & fileName, QObject * parent = 0 ) - * QDeclarativeComponent ( QDeclarativeEngine * engine, const QUrl & url, QObject * parent = 0 ) - * virtual ~QDeclarativeComponent () - */ -HB_FUNC( QT_QDECLARATIVECOMPONENT ) -{ - __HB_RETPTRGC__( new QDeclarativeComponent() ); -} - - - -enum Status { Null, Ready, Loading, Error } - - - -virtual QObject * beginCreate ( QDeclarativeContext * context ) -virtual void completeCreate () -virtual QObject * create ( QDeclarativeContext * context = 0 ) -QDeclarativeContext * creationContext () const -QList errors () const -bool isError () const -bool isLoading () const -bool isNull () const -bool isReady () const -void loadUrl ( const QUrl & url ) -qreal progress () const -void setData ( const QByteArray & data, const QUrl & url ) -Status status () const -QUrl url () const - - - - - - -void progressChanged ( qreal progress ) -void statusChanged ( QDeclarativeComponent::Status status ) - - - - - - - diff --git a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeContext.qth b/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeContext.qth deleted file mode 100644 index 55a2901b7c..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeContext.qth +++ /dev/null @@ -1,83 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = Yes -Inherit = QObject -Type = -New = -Version = 0x040700 - - - -#include - - -/* - * QDeclarativeContext ( QDeclarativeEngine * engine, QObject * parent = 0 ) - * QDeclarativeContext ( QDeclarativeContext * parentContext, QObject * parent = 0 ) - * virtual ~QDeclarativeContext () - */ -HB_FUNC( QT_QDECLARATIVECONTEXT ) -{ - if( hb_pcount() == 2 && hbqt_par_isDerivedFrom( 1, "QDECLARATIVEENGINE" ) && hbqt_par_isDerivedFrom( 2, "QOBJECT" ) ) - { - __HB_RETPTRGC__( new QDeclarativeContext( hbqt_par_QDeclarativeEngine( 1 ), hbqt_par_QObject( 2 ) ) ); - } - else if( hb_pcount() == 2 && hbqt_par_isDerivedFrom( 1, "QDECLARATIVECONTEXT" ) && hbqt_par_isDerivedFrom( 2, "QOBJECT" ) ) - { - __HB_RETPTRGC__( new QDeclarativeContext( hbqt_par_QDeclarativeContext( 1 ), hbqt_par_QObject( 2 ) ) ); - } - else if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QDECLARATIVEENGINE" ) ) - { - __HB_RETPTRGC__( new QDeclarativeContext( hbqt_par_QDeclarativeEngine( 1 ) ) ); - } - else if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QDECLARATIVECONTEXT" ) ) - { - __HB_RETPTRGC__( new QDeclarativeContext( hbqt_par_QDeclarativeContext( 1 ) ) ); - } - else - { - hb_errRT_BASE( EG_ARG, 9999, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - } -} - - - - - - -QUrl baseUrl () const -QObject * contextObject () const -QVariant contextProperty ( const QString & name ) const -QDeclarativeEngine * engine () const -bool isValid () const -QDeclarativeContext * parentContext () const -QUrl resolvedUrl ( const QUrl & src ) -void setBaseUrl ( const QUrl & baseUrl ) -void setContextObject ( QObject * object ) -void setContextProperty ( const QString & name, QObject * value ) -void setContextProperty ( const QString & name, const QVariant & value ) - - - - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeEngine.qth b/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeEngine.qth deleted file mode 100644 index f64fba08f1..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeEngine.qth +++ /dev/null @@ -1,88 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = Yes -Inherit = QObject -Type = -New = -Version = 0x040700 - - - -#include - - -/* - * QDeclarativeEngine ( QObject * parent = 0 ) - * virtual ~QDeclarativeEngine () - */ -HB_FUNC( QT_QDECLARATIVEENGINE ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) ) - { - __HB_RETPTRGC__( new QDeclarativeEngine( hbqt_par_QObject( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QDeclarativeEngine() ); - } -} - - - -enum ObjectOwnership { CppOwnership, JavaScriptOwnership } - - - -void addImageProvider ( const QString & providerId, QDeclarativeImageProvider * provider ) -void addImportPath ( const QString & path ) -void addPluginPath ( const QString & path ) -QUrl baseUrl () const -void clearComponentCache () -QDeclarativeImageProvider * imageProvider ( const QString & providerId ) const -QStringList importPathList () const -// bool importPlugin ( const QString & filePath, const QString & uri, QString * errorString ) -QNetworkAccessManager * networkAccessManager () const -QDeclarativeNetworkAccessManagerFactory * networkAccessManagerFactory () const -QString offlineStoragePath () const -bool outputWarningsToStandardError () const -QStringList pluginPathList () const -void removeImageProvider ( const QString & providerId ) -QDeclarativeContext * rootContext () const -void setBaseUrl ( const QUrl & url ) -void setImportPathList ( const QStringList & paths ) -void setNetworkAccessManagerFactory ( QDeclarativeNetworkAccessManagerFactory * factory ) -void setOfflineStoragePath ( const QString & dir ) -void setOutputWarningsToStandardError ( bool enabled ) -void setPluginPathList ( const QStringList & paths ) - -QDeclarativeContext * contextForObject ( const QObject * object ) -ObjectOwnership objectOwnership ( QObject * object ) -void setContextForObject ( QObject * object, QDeclarativeContext * context ) -void setObjectOwnership ( QObject * object, ObjectOwnership ownership ) - - - - - - -void quit () -void warnings ( const QList & warnings ) - - - - - - - diff --git a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeError.qth b/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeError.qth deleted file mode 100644 index f20a375c60..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeError.qth +++ /dev/null @@ -1,68 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = No -Inherit = -Type = -New = -Version = 0x040700 - - - -#include - - -/* - * - */ -HB_FUNC( QT_QDECLARATIVEERROR ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QDECLARATIVEERROR" ) ) - { - __HB_RETPTRGC__( new QDeclarativeError( *hbqt_par_QDeclarativeError( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QDeclarativeError() ); - } -} - - - - - - -int column () const -QString description () const -bool isValid () const -int line () const -void setColumn ( int column ) -void setDescription ( const QString & description ) -void setLine ( int line ) -void setUrl ( const QUrl & url ) -QString toString () const -QUrl url () const - - - - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeExpression.qth b/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeExpression.qth deleted file mode 100644 index 88ec76789e..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeExpression.qth +++ /dev/null @@ -1,68 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = Yes -Inherit = QObject -Type = -New = -Version = 0x040700 - - - -#include - - -/* - * QDeclarativeExpression () - * QDeclarativeExpression ( QDeclarativeContext * ctxt, QObject * scope, const QString & expression, QObject * parent = 0 ) - * virtual ~QDeclarativeExpression () - */ -HB_FUNC( QT_QDECLARATIVEEXPRESSION ) -{ - __HB_RETPTRGC__( new QDeclarativeExpression() ); -} - - - - - - -void clearError () -QDeclarativeContext * context () const -QDeclarativeEngine * engine () const -QDeclarativeError error () const -QVariant evaluate ( bool * valueIsUndefined = 0 ) -QString expression () const -bool hasError () const -int lineNumber () const -bool notifyOnValueChanged () const -QObject * scopeObject () const -void setExpression ( const QString & expression ) -void setNotifyOnValueChanged ( bool notifyOnChange ) -void setSourceLocation ( const QString & url, int line ) -QString sourceFile () const - - - - - - -void valueChanged () - - - - - - - diff --git a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeImageProvider.qth b/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeImageProvider.qth deleted file mode 100644 index 53354fef5b..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeImageProvider.qth +++ /dev/null @@ -1,56 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = No -Inherit = -Type = -New = -Version = 0x040700 - - - -#include - - -/* - * QDeclarativeImageProvider ( ImageType type ) - * virtual ~QDeclarativeImageProvider () - */ -HB_FUNC( QT_QDECLARATIVEIMAGEPROVIDER ) -{ - __HB_RETPTRGC__( new QDeclarativeImageProvider( ( QDeclarativeImageProvider::ImageType ) hb_parni( 1 ) ) ); -} - - - -enum ImageType { Image, Pixmap } - - - -ImageType imageType () const -virtual QImage requestImage ( const QString & id, QSize * size, const QSize & requestedSize ) -virtual QPixmap requestPixmap ( const QString & id, QSize * size, const QSize & requestedSize ) - - - - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeItem.qth b/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeItem.qth deleted file mode 100644 index ee3ecd575f..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeItem.qth +++ /dev/null @@ -1,79 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = Yes -Inherit = QGraphicsObject, QDeclarativeParserStatus -Type = -New = -Version = 0x040700 - - - -#include - - -/* - * QDeclarativeItem ( QDeclarativeItem * parent = 0 ) - * virtual ~QDeclarativeItem () - */ -HB_FUNC( QT_QDECLARATIVEITEM ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QDECLARATIVEITEM" ) ) - { - __HB_RETPTRGC__( new QDeclarativeItem( hbqt_par_QDeclarativeItem( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QDeclarativeItem() ); - } -} - - - -enum TransformOrigin { TopLeft, Top, TopRight, Left, ..., BottomRight } - - - -qreal baselineOffset () const -QDeclarativeItem * childAt ( qreal x, qreal y ) const -QRectF childrenRect () -bool clip () const -void forceActiveFocus () -qreal implicitHeight () const -qreal implicitWidth () const -bool keepMouseGrab () const -QScriptValue mapFromItem ( const QScriptValue & item, qreal x, qreal y ) const -QScriptValue mapToItem ( const QScriptValue & item, qreal x, qreal y ) const -QDeclarativeItem * parentItem () const -void setBaselineOffset ( qreal ) -void setClip ( bool ) -void setKeepMouseGrab ( bool keep ) -void setParentItem ( QDeclarativeItem * parent ) -void setSmooth ( bool smooth ) -void setTransformOrigin ( TransformOrigin origin ) -bool smooth () const -TransformOrigin transformOrigin () const - - - - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeListReference.qth b/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeListReference.qth deleted file mode 100644 index 4704645138..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeListReference.qth +++ /dev/null @@ -1,74 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = No -Inherit = -Type = -New = -Version = 0x040700 - - - -#include - - -/* - * QDeclarativeListReference () - * QDeclarativeListReference ( QObject * object, const char * property, QDeclarativeEngine * engine = 0 ) - */ -HB_FUNC( QT_QDECLARATIVELISTREFERENCE ) -{ - if( hb_pcount() == 2 && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) && HB_ISCHAR( 2 ) && hbqt_par_isDerivedFrom( 1, "QDECLARATIVEENGINE" ) ) - { - __HB_RETPTRGC__( new QDeclarativeListReference( hbqt_par_QObject( 1 ), hb_parc( 2 ), hbqt_par_QDeclarativeEngine( 3 ) ) ); - } - if( hb_pcount() == 2 && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) && HB_ISCHAR( 2 ) ) - { - __HB_RETPTRGC__( new QDeclarativeListReference( hbqt_par_QObject( 1 ), hb_parc( 2 ), 0 ) ); - } - else - { - __HB_RETPTRGC__( new QDeclarativeListReference() ); - } -} - - - - - - -bool append ( QObject * object ) const -QObject * at ( int index ) const -bool canAppend () const -bool canAt () const -bool canClear () const -bool canCount () const -bool clear () const -int count () const -bool isValid () const -const QMetaObject * listElementType () const -QObject * object () const - - - - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeParserStatus.qth b/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeParserStatus.qth deleted file mode 100644 index 109e40795d..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeParserStatus.qth +++ /dev/null @@ -1,53 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = No -Inherit = -Type = -New = -Version = 0x040700 - - - -#include - - -/* - * - */ -HB_FUNC( QT_QDECLARATIVEPARSERSTATUS ) -{ - __HB_RETPTRGC__( NULL ); -} - - - - - - -virtual void classBegin () -virtual void componentComplete () - - - - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeProperty.qth b/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeProperty.qth deleted file mode 100644 index 602313338c..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeProperty.qth +++ /dev/null @@ -1,129 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = No -Inherit = -Type = -New = -Version = 0x040700 - - - -#include - - -/* - * QDeclarativeProperty () - * QDeclarativeProperty ( QObject * obj ) - * QDeclarativeProperty ( QObject * obj, QDeclarativeContext * ctxt ) - * QDeclarativeProperty ( QObject * obj, QDeclarativeEngine * engine ) - * QDeclarativeProperty ( QObject * obj, const QString & name ) - * QDeclarativeProperty ( QObject * obj, const QString & name, QDeclarativeContext * ctxt ) - * QDeclarativeProperty ( QObject * obj, const QString & name, QDeclarativeEngine * engine ) - * QDeclarativeProperty ( const QDeclarativeProperty & other ) - */ -HB_FUNC( QT_QDECLARATIVEPROPERTY ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QDECLARATIVEPROPERTY" ) ) - { - __HB_RETPTRGC__( new QDeclarativeProperty( *hbqt_par_QDeclarativeProperty( 1 ) ) ); - } - else if( hb_pcount() >= 1 && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) ) - { - if( hb_pcount() == 1 ) - { - __HB_RETPTRGC__( new QDeclarativeProperty( hbqt_par_QObject( 1 ) ) ); - } - else if( hb_pcount() == 2 && hbqt_par_isDerivedFrom( 2, "QDECLARATIVECONTEXT" ) ) - { - __HB_RETPTRGC__( new QDeclarativeProperty( hbqt_par_QObject( 1 ), hbqt_par_QDeclarativeContext( 2 ) ) ); - } - else if( hb_pcount() == 2 && hbqt_par_isDerivedFrom( 2, "QDECLARATIVEENGINE" ) ) - { - __HB_RETPTRGC__( new QDeclarativeProperty( hbqt_par_QObject( 1 ), hbqt_par_QDeclarativeEngine( 2 ) ) ); - } - else if( hb_pcount() == 2 && HB_ISCHAR( 2 ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QDeclarativeProperty( hbqt_par_QObject( 1 ), hb_parstr_utf8( 2, &pText01, NULL ) ) ); - hb_strfree( pText01 ); - } - else if( hb_pcount() == 3 && HB_ISCHAR( 2 ) && hbqt_par_isDerivedFrom( 3, "QDECLARATIVECONTEXT" ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QDeclarativeProperty( hbqt_par_QObject( 1 ), hb_parstr_utf8( 2, &pText01, NULL ), hbqt_par_QDeclarativeContext( 3 ) ) ); - hb_strfree( pText01 ); - } - else if( hb_pcount() == 3 && HB_ISCHAR( 2 ) && hbqt_par_isDerivedFrom( 3, "QDECLARATIVEENGINE" ) ) - { - void * pText01 = NULL; - __HB_RETPTRGC__( new QDeclarativeProperty( hbqt_par_QObject( 1 ), hb_parstr_utf8( 2, &pText01, NULL ), hbqt_par_QDeclarativeEngine( 3 ) ) ); - hb_strfree( pText01 ); - } - } - else - { - __HB_RETPTRGC__( new QDeclarativeProperty() ); - } -} - - - -enum PropertyTypeCategory { InvalidCategory, List, Object, Normal } -enum Type { Invalid, Property, SignalProperty } - - - -bool connectNotifySignal ( QObject * dest, const char * slot ) const -bool connectNotifySignal ( QObject * dest, int method ) const -bool hasNotifySignal () const -int index () const -bool isDesignable () const -bool isProperty () const -bool isResettable () const -bool isSignalProperty () const -bool isValid () const -bool isWritable () const -QMetaMethod method () const -QString name () const -bool needsNotifySignal () const -QObject * object () const -QMetaProperty property () const -int propertyType () const -PropertyTypeCategory propertyTypeCategory () const -const char * propertyTypeName () const -QVariant read () const -bool reset () const -Type type () const -bool write ( const QVariant & value ) const - -QVariant read ( QObject * object, const QString & name ) -QVariant read ( QObject * object, const QString & name, QDeclarativeContext * ctxt ) -QVariant read ( QObject * object, const QString & name, QDeclarativeEngine * engine ) -bool write ( QObject * object, const QString & name, const QVariant & value ) -bool write ( QObject * object, const QString & name, const QVariant & value, QDeclarativeContext * ctxt ) -bool write ( QObject * object, const QString & name, const QVariant & value, QDeclarativeEngine * engine ) - - - - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativePropertyMap.qth b/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativePropertyMap.qth deleted file mode 100644 index ec68ddfa1e..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativePropertyMap.qth +++ /dev/null @@ -1,68 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = Yes -Inherit = QObject -Type = -New = -Version = 0x040700 - - - -#include - - -/* - * QDeclarativePropertyMap ( QObject * parent = 0 ) - * virtual ~QDeclarativePropertyMap () - */ -HB_FUNC( QT_QDECLARATIVEPROPERTYMAP ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QOBJECT" ) ) - { - __HB_RETPTRGC__( new QDeclarativePropertyMap( hbqt_par_QObject( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QDeclarativePropertyMap() ); - } -} - - - - - - -void clear ( const QString & key ) -bool contains ( const QString & key ) const -int count () const -void insert ( const QString & key, const QVariant & value ) -bool isEmpty () const -QStringList keys () const -int size () const -QVariant value ( const QString & key ) const - - - - - - -void valueChanged ( const QString & key, const QVariant & value ) - - - - - - - diff --git a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativePropertyValueSource.qth b/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativePropertyValueSource.qth deleted file mode 100644 index 6c343ba27b..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativePropertyValueSource.qth +++ /dev/null @@ -1,53 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = No -Inherit = -Type = -New = -Version = 0x040700 - - - -#include - - -/* - * QDeclarativePropertyValueSource () - * virtual ~QDeclarativePropertyValueSource () - */ -HB_FUNC( QT_QDECLARATIVEPROPERTYVALUESOURCE ) -{ - __HB_RETPTRGC__( NULL ); -} - - - - - - -virtual void setTarget ( const QDeclarativeProperty & property ) - - - - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeScriptString.qth b/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeScriptString.qth deleted file mode 100644 index 6c0bda91b1..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeScriptString.qth +++ /dev/null @@ -1,65 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = No -Inherit = -Type = -New = -Version = 0x040700 - - - -#include - - -/* - * QDeclarativeScriptString () - * QDeclarativeScriptString ( const QDeclarativeScriptString & other ) - */ -HB_FUNC( QT_QDECLARATIVESCRIPTSTRING ) -{ - if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QDECLARATIVESCRIPTSTRING" ) ) - { - __HB_RETPTRGC__( new QDeclarativeScriptString( *hbqt_par_QDeclarativeScriptString( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QDeclarativeScriptString() ); - } -} - - - - - - -QDeclarativeContext * context () const -QObject * scopeObject () const -QString script () const -void setContext ( QDeclarativeContext * context ) -void setScopeObject ( QObject * object ) -void setScript ( const QString & script ) - - - - - - - - - - - - - diff --git a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeView.qth b/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeView.qth deleted file mode 100644 index 805f7211d3..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/qth/QDeclarativeView.qth +++ /dev/null @@ -1,83 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2012 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = Yes -Inherit = QGraphicsView -Type = -New = -Version = 0x040700 - - - -#include -#include - - -/* - * QDeclarativeView ( QWidget * parent = 0 ) - * QDeclarativeView ( const QUrl & source, QWidget * parent = 0 ) - * ~QDeclarativeView () - */ -HB_FUNC( QT_QDECLARATIVEVIEW ) -{ - if( hb_pcount() == 2 && hbqt_par_isDerivedFrom( 1, "QURL" ) && hbqt_par_isDerivedFrom( 2, "QWIDGET" ) ) - { - __HB_RETPTRGC__( new QDeclarativeView( *hbqt_par_QUrl( 1 ), hbqt_par_QWidget( 2 ) ) ); - } - else if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QURL" ) ) - { - __HB_RETPTRGC__( new QDeclarativeView( *hbqt_par_QUrl( 1 ), 0 ) ); - } - else if( hb_pcount() == 1 && hbqt_par_isDerivedFrom( 1, "QWIDGET" ) ) - { - __HB_RETPTRGC__( new QDeclarativeView( hbqt_par_QWidget( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QDeclarativeView() ); - } -} - - - -enum ResizeMode { SizeViewToRootObject, SizeRootObjectToView } -enum Status { Null, Ready, Loading, Error } - - - -QDeclarativeEngine * engine () const -QList errors () const -QSize initialSize () const -ResizeMode resizeMode () const -QDeclarativeContext * rootContext () const -QGraphicsObject * rootObject () const -void setResizeMode ( ResizeMode ) -void setSource ( const QUrl & url ) -QUrl source () const -QDeclarativeView::Status status () const - - - - - - -void sceneResized ( QSize size ) -void statusChanged ( QDeclarativeView::Status status ) - - - - - - - diff --git a/harbour/contrib/hbqt/qtdeclarative/qth/filelist.hbm b/harbour/contrib/hbqt/qtdeclarative/qth/filelist.hbm deleted file mode 100644 index 4d111ce1f9..0000000000 --- a/harbour/contrib/hbqt/qtdeclarative/qth/filelist.hbm +++ /dev/null @@ -1,22 +0,0 @@ -# -# $Id$ -# - --pflag=-qtver=0x040500 --pflag=-qtmodule=qtdeclarative --pflag=-qthdocdir=../doc/ - -QDeclarativeComponent.qth -QDeclarativeContext.qth -QDeclarativeEngine.qth -QDeclarativeError.qth -QDeclarativeExpression.qth -QDeclarativeImageProvider.qth -QDeclarativeItem.qth -QDeclarativeListReference.qth -QDeclarativeParserStatus.qth -QDeclarativeProperty.qth -QDeclarativePropertyMap.qth -QDeclarativePropertyValueSource.qth -QDeclarativeScriptString.qth -QDeclarativeView.qth diff --git a/harbour/contrib/hbqt/qtdesigner/hbqt_init.cpp b/harbour/contrib/hbqt/qtdesigner/hbqt_init.cpp deleted file mode 100644 index 5a4425f266..0000000000 --- a/harbour/contrib/hbqt/qtdesigner/hbqt_init.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2009 Marcos Antonio Gambeta (marcosgambeta at gmail dot com) - * Copyright 2009 Pritpal Bedi (pritpal@vouchcac.com) - * Copyright 2010 Viktor Szakats (harbour syenar.net) - * Copyright 2010 Francesco Perillo () - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ - -#include "hbqt.h" -#include "hbqtinit.h" - -#include "hbvm.h" -#include "hbinit.h" - -#if QT_VERSION >= 0x040500 - -/*----------------------------------------------------------------------*/ - -static void hbqt_registerCallbacks( void ) -{ -} - -/*----------------------------------------------------------------------*/ - -HB_FUNC( __HBQTDESIGNER ) {;} - -static void hbqt_lib_init( void * cargo ) -{ - HB_SYMBOL_UNUSED( cargo ); - - hbqt_registerCallbacks(); -} - -static void hbqt_lib_exit( void * cargo ) -{ - HB_SYMBOL_UNUSED( cargo ); -} - -HB_CALL_ON_STARTUP_BEGIN( _hbqtdesigner_init_ ) - hb_vmAtInit( hbqt_lib_init, NULL ); - hb_vmAtExit( hbqt_lib_exit, NULL ); -HB_CALL_ON_STARTUP_END( _hbqtdesigner_init_ ) - -#if defined( HB_PRAGMA_STARTUP ) - #pragma startup _hbqtdesigner_init_ -#elif defined( HB_DATASEG_STARTUP ) - #define HB_DATASEG_BODY HB_DATASEG_FUNC( _hbqtdesigner_init_ ) - #include "hbiniseg.h" -#endif - -#endif diff --git a/harbour/contrib/hbqt/qtdesigner/hbqtdesigner.hbc b/harbour/contrib/hbqt/qtdesigner/hbqtdesigner.hbc deleted file mode 100644 index 9c836758ef..0000000000 --- a/harbour/contrib/hbqt/qtdesigner/hbqtdesigner.hbc +++ /dev/null @@ -1,21 +0,0 @@ -# -# $Id$ -# - -# --------------------------------------------------------------- -# Copyright 2010 Viktor Szakats (harbour syenar.net) -# See COPYING for licensing terms. -# --------------------------------------------------------------- - -incpaths=. - -libs=../qtcore/hbqtcore.hbc -libs=../qtgui/hbqtgui.hbc - -{!HB_STATIC_QT}libs=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF} -{!HB_STATIC_QT&(allwin|os2)}libs=QtDesigner4 -{!HB_STATIC_QT&linux|beos}libs=QtDesigner -{!HB_STATIC_QT&darwin}frameworks=QtDesigner -{HB_STATIC_QT&allwin}libs=${_HB_DYNPREF}${hb_name}s${_HB_DYNSUFF} -{HB_STATIC_QT&linux|beos}libs=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF} -{HB_STATIC_QT&(allwin|linux|beos)}libs=QtDesigner diff --git a/harbour/contrib/hbqt/qtdesigner/hbqtdesigner.hbm b/harbour/contrib/hbqt/qtdesigner/hbqtdesigner.hbm deleted file mode 100644 index bc148034f5..0000000000 --- a/harbour/contrib/hbqt/qtdesigner/hbqtdesigner.hbm +++ /dev/null @@ -1,16 +0,0 @@ -# -# $Id$ -# - --stop{symbian} - --i. - -qth/filelist.hbm - -hbqtdesigner.hbx - -hbqt_init.cpp - -../qtcore/hbqtcore.hbc -../qtgui/hbqtgui.hbc diff --git a/harbour/contrib/hbqt/qtdesigner/hbqtdesigner.hbp b/harbour/contrib/hbqt/qtdesigner/hbqtdesigner.hbp deleted file mode 100644 index d6d96b2ad1..0000000000 --- a/harbour/contrib/hbqt/qtdesigner/hbqtdesigner.hbp +++ /dev/null @@ -1,11 +0,0 @@ -# -# $Id$ -# - -../hbqt_common.hbm - -hbqtdesigner.hbm - --instfile=inc:hbqtdesigner.hbx - -hbqtdesigners.hbp diff --git a/harbour/contrib/hbqt/qtdesigner/hbqtdesigner.hbx b/harbour/contrib/hbqt/qtdesigner/hbqtdesigner.hbx deleted file mode 100644 index a004852437..0000000000 --- a/harbour/contrib/hbqt/qtdesigner/hbqtdesigner.hbx +++ /dev/null @@ -1,50 +0,0 @@ -/* - * $Id$ - */ - -/* -------------------------------------------------------------------- */ -/* NOTE: You can add manual override which functions to include or */ -/* exclude from automatically generated EXTERNAL/DYNAMIC list. */ -/* Syntax: // HB_FUNC_INCLUDE */ -/* // HB_FUNC_EXCLUDE */ -/* -------------------------------------------------------------------- */ - -/* -------------------------------------------------------------------- */ -/* WARNING: Automatically generated code below. DO NOT EDIT! */ -/* Regenerate using hbmk2 '-hbx=' option. */ -/* -------------------------------------------------------------------- */ - -#ifndef __HBEXTERN_CH__HBQTDESIGNER__ -#define __HBEXTERN_CH__HBQTDESIGNER__ - -#if defined( __HBEXTREQ__ ) .OR. defined( __HBEXTERN__HBQTDESIGNER__ANNOUNCE ) - ANNOUNCE __HBEXTERN__HBQTDESIGNER__ -#endif - -#if defined( __HBEXTREQ__ ) .OR. defined( __HBEXTERN__HBQTDESIGNER__REQUEST ) - #command DYNAMIC => EXTERNAL -#endif - -DYNAMIC HB_QDESIGNERACTIONEDITORINTERFACE -DYNAMIC HB_QDESIGNERFORMEDITORINTERFACE -DYNAMIC HB_QDESIGNERFORMWINDOWCURSORINTERFACE -DYNAMIC HB_QDESIGNERFORMWINDOWINTERFACE -DYNAMIC HB_QDESIGNERFORMWINDOWMANAGERINTERFACE -DYNAMIC HB_QDESIGNEROBJECTINSPECTORINTERFACE -DYNAMIC HB_QDESIGNERPROPERTYEDITORINTERFACE -DYNAMIC HB_QDESIGNERWIDGETBOXINTERFACE -DYNAMIC QDESIGNERACTIONEDITORINTERFACE -DYNAMIC QDESIGNERFORMEDITORINTERFACE -DYNAMIC QDESIGNERFORMWINDOWCURSORINTERFACE -DYNAMIC QDESIGNERFORMWINDOWINTERFACE -DYNAMIC QDESIGNERFORMWINDOWMANAGERINTERFACE -DYNAMIC QDESIGNEROBJECTINSPECTORINTERFACE -DYNAMIC QDESIGNERPROPERTYEDITORINTERFACE -DYNAMIC QDESIGNERWIDGETBOXINTERFACE -DYNAMIC __HBQTDESIGNER - -#if defined( __HBEXTREQ__ ) .OR. defined( __HBEXTERN__HBQTDESIGNER__REQUEST ) - #uncommand DYNAMIC => EXTERNAL -#endif - -#endif diff --git a/harbour/contrib/hbqt/qtdesigner/hbqtdesigners.hbp b/harbour/contrib/hbqt/qtdesigner/hbqtdesigners.hbp deleted file mode 100644 index 9408caaeb8..0000000000 --- a/harbour/contrib/hbqt/qtdesigner/hbqtdesigners.hbp +++ /dev/null @@ -1,7 +0,0 @@ -# -# $Id$ -# - -../hbqt_commons.hbm - -hbqtdesigner.hbm diff --git a/harbour/contrib/hbqt/qtdesigner/qth/QDesignerActionEditorInterface.qth b/harbour/contrib/hbqt/qtdesigner/qth/QDesignerActionEditorInterface.qth deleted file mode 100644 index 011db8133a..0000000000 --- a/harbour/contrib/hbqt/qtdesigner/qth/QDesignerActionEditorInterface.qth +++ /dev/null @@ -1,60 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = -Inherits = QWidget -Type = -New = -folder = hbqtdesigner -Constructor = no - - - - - - - - - -#include "hbqtgui.h" - -#include - - -/* - * QDesignerActionEditorInterface ( QWidget * parent, Qt::WindowFlags flags = 0 ) - * ~QDesignerActionEditorInterface () - * - */ -HB_FUNC( QT_QDESIGNERACTIONEDITORINTERFACE ) -{ - //__HB_RETPTRGC__( new QDesignerActionEditorInterface() ); -} - - - - - - -virtual QDesignerFormEditorInterface * core () const -virtual void manageAction ( QAction * action ) = 0 -virtual void unmanageAction ( QAction * action ) = 0 - - - -virtual void setFormWindow ( QDesignerFormWindowInterface * formWindow ) = 0 - - - - diff --git a/harbour/contrib/hbqt/qtdesigner/qth/QDesignerFormEditorInterface.qth b/harbour/contrib/hbqt/qtdesigner/qth/QDesignerFormEditorInterface.qth deleted file mode 100644 index d40f8ad7f4..0000000000 --- a/harbour/contrib/hbqt/qtdesigner/qth/QDesignerFormEditorInterface.qth +++ /dev/null @@ -1,73 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = -Inherits = QObject -Type = -New = -folder = hbqtdesigner - - - - - - - - - -#include "hbqtgui.h" - -#include - - -/* - * QDesignerFormEditorInterface ( QObject * parent = 0 ) - * virtual ~QDesignerFormEditorInterface () - * - */ -HB_FUNC( QT_QDESIGNERFORMEDITORINTERFACE ) -{ - if( HB_ISOBJECT( 1 ) ) - { - __HB_RETPTRGC__( new QDesignerFormEditorInterface( hbqt_par_QObject( 1 ) ) ); - } - else - { - __HB_RETPTRGC__( new QDesignerFormEditorInterface() ); - } -} - - - - - - -QDesignerActionEditorInterface * actionEditor () const -//QExtensionManager * extensionManager () const -QDesignerFormWindowManagerInterface * formWindowManager () const -QDesignerObjectInspectorInterface * objectInspector () const -QDesignerPropertyEditorInterface * propertyEditor () const -void setActionEditor ( QDesignerActionEditorInterface * actionEditor ) -void setObjectInspector ( QDesignerObjectInspectorInterface * objectInspector ) -void setPropertyEditor ( QDesignerPropertyEditorInterface * propertyEditor ) -void setWidgetBox ( QDesignerWidgetBoxInterface * widgetBox ) -QWidget * topLevel () const -QDesignerWidgetBoxInterface * widgetBox () const - - - - - - - diff --git a/harbour/contrib/hbqt/qtdesigner/qth/QDesignerFormWindowCursorInterface.qth b/harbour/contrib/hbqt/qtdesigner/qth/QDesignerFormWindowCursorInterface.qth deleted file mode 100644 index b34c18d169..0000000000 --- a/harbour/contrib/hbqt/qtdesigner/qth/QDesignerFormWindowCursorInterface.qth +++ /dev/null @@ -1,71 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = no -Inherits = -Type = -New = -folder = hbqtdesigner -Constructor = no - - - - - - - - - -#include "hbqtgui.h" - -#include - - -/* - * ~QDesignerFormWindowCursorInterface () - * - */ -HB_FUNC( QT_QDESIGNERFORMWINDOWCURSORINTERFACE ) -{ - //__HB_RETPTRGC__( new QDesignerFormWindowCursorInterface() ); -} - - - -enum MoveMode { MoveAnchor, KeepAnchor } -enum MoveOperation { NoMove, Start, End, Next, ..., Down } - - - -virtual QWidget * current () const = 0 -virtual QDesignerFormWindowInterface * formWindow () const = 0 -virtual bool hasSelection () const = 0 -bool isWidgetSelected ( QWidget * widget ) const -virtual bool movePosition ( MoveOperation operation, MoveMode mode = MoveAnchor ) = 0 -virtual int position () const = 0 -virtual void resetWidgetProperty ( QWidget * widget, const QString & name ) = 0 -virtual QWidget * selectedWidget ( int index ) const = 0 -virtual int selectedWidgetCount () const = 0 -virtual void setPosition ( int position, MoveMode mode = MoveAnchor ) = 0 -virtual void setProperty ( const QString & name, const QVariant & value ) = 0 -virtual void setWidgetProperty ( QWidget * widget, const QString & name, const QVariant & value ) = 0 -virtual QWidget * widget ( int index ) const = 0 -virtual int widgetCount () const = 0 - - - - - - - diff --git a/harbour/contrib/hbqt/qtdesigner/qth/QDesignerFormWindowInterface.qth b/harbour/contrib/hbqt/qtdesigner/qth/QDesignerFormWindowInterface.qth deleted file mode 100644 index 6ce2a546ed..0000000000 --- a/harbour/contrib/hbqt/qtdesigner/qth/QDesignerFormWindowInterface.qth +++ /dev/null @@ -1,114 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = -Inherits = QWidget -Type = -New = -folder = hbqtdesigner -Constructor = no - - - - - - - - - -#include "hbqtgui.h" - -#include - - -/* - * QDesignerFormWindowInterface ( QWidget * parent = 0, Qt::WindowFlags flags = 0 ) - * ~QDesignerFormWindowInterface () - * - */ -HB_FUNC( QT_QDESIGNERFORMWINDOWINTERFACE ) -{ - //__HB_RETPTRGC__( new QDesignerFormWindowInterface() ); -} - - - -flags Feature -enum FeatureFlag { EditFeature, GridFeature, TabOrderFeature, DefaultFeature } - - - -//virtual QDir absoluteDir () const = 0 -virtual void addResourceFile ( const QString & path ) = 0 -virtual QString author () const = 0 -virtual QString comment () const = 0 -virtual QString contents () const = 0 -virtual QDesignerFormEditorInterface * core () const -virtual QDesignerFormWindowCursorInterface * cursor () const = 0 -virtual void emitSelectionChanged () = 0 -virtual QString exportMacro () const = 0 -virtual Feature features () const = 0 -virtual QString fileName () const = 0 -virtual QPoint grid () const = 0 -virtual bool hasFeature ( Feature feature ) const = 0 -virtual QStringList includeHints () const = 0 -virtual bool isDirty () const = 0 -virtual bool isManaged ( QWidget * widget ) const = 0 -virtual void layoutDefault ( int * margin, int * spacing ) = 0 -//virtual void layoutFunction ( QString * margin, QString * spacing ) = 0 -virtual QWidget * mainContainer () const = 0 -virtual QString pixmapFunction () const = 0 -virtual void removeResourceFile ( const QString & path ) = 0 -virtual QStringList resourceFiles () const = 0 -virtual void setAuthor ( const QString & author ) = 0 -virtual void setComment ( const QString & comment ) = 0 -virtual void setContents ( QIODevice * device ) = 0 -virtual void setExportMacro ( const QString & exportMacro ) = 0 -virtual void setIncludeHints ( const QStringList & includeHints ) = 0 -virtual void setLayoutDefault ( int margin, int spacing ) = 0 -//virtual void setLayoutFunction ( const QString & margin, const QString & spacing ) = 0 -virtual void setMainContainer ( QWidget * mainContainer ) = 0 -virtual void setPixmapFunction ( const QString & pixmapFunction ) = 0 - -QDesignerFormWindowInterface * findFormWindow ( QWidget * widget ) -QDesignerFormWindowInterface * findFormWindow ( QObject * object ) - - - -virtual void clearSelection ( bool update = true ) = 0 -virtual void manageWidget ( QWidget * widget ) = 0 -virtual void selectWidget ( QWidget * widget, bool select = true ) = 0 -virtual void setContents ( const QString & contents ) = 0 -virtual void setDirty ( bool dirty ) = 0 -virtual void setFeatures ( Feature features ) = 0 -virtual void setFileName ( const QString & fileName ) = 0 -virtual void setGrid ( const QPoint & grid ) = 0 -virtual void unmanageWidget ( QWidget * widget ) = 0 - - - -void aboutToUnmanageWidget ( QWidget * widget ) -void activated ( QWidget * widget ) -void changed () -void featureChanged ( Feature feature ) -void fileNameChanged ( const QString & fileName ) -void geometryChanged () -void mainContainerChanged ( QWidget * mainContainer ) -void objectRemoved ( QObject * object ) -void resourceFilesChanged () -void selectionChanged () -void widgetManaged ( QWidget * widget ) -void widgetRemoved ( QWidget * widget ) -void widgetUnmanaged ( QWidget * widget ) - diff --git a/harbour/contrib/hbqt/qtdesigner/qth/QDesignerFormWindowManagerInterface.qth b/harbour/contrib/hbqt/qtdesigner/qth/QDesignerFormWindowManagerInterface.qth deleted file mode 100644 index 3f5bc045bd..0000000000 --- a/harbour/contrib/hbqt/qtdesigner/qth/QDesignerFormWindowManagerInterface.qth +++ /dev/null @@ -1,85 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = -Inherits = QObject -Type = -New = -folder = hbqtdesigner -Constructor = no - - - - - - - - - -#include "hbqtgui.h" - -#include - - -/* - * QDesignerFormWindowManagerInterface ( QObject * parent = 0 ) - * ~QDesignerFormWindowManagerInterface () - * - */ -HB_FUNC( QT_QDESIGNERFORMWINDOWMANAGERINTERFACE ) -{ - //__HB_RETPTRGC__( new QDesignerFormWindowManagerInterface() ); -} - - - - - - -virtual QAction * actionAdjustSize () const -virtual QAction * actionBreakLayout () const -virtual QAction * actionCopy () const -virtual QAction * actionCut () const -virtual QAction * actionDelete () const -QAction * actionFormLayout () const -virtual QAction * actionGridLayout () const -virtual QAction * actionHorizontalLayout () const -virtual QAction * actionLower () const -virtual QAction * actionPaste () const -virtual QAction * actionRaise () const -virtual QAction * actionRedo () const -virtual QAction * actionSelectAll () const -QAction * actionSimplifyLayout () const -virtual QAction * actionSplitHorizontal () const -virtual QAction * actionSplitVertical () const -virtual QAction * actionUndo () const -virtual QAction * actionVerticalLayout () const -virtual QDesignerFormWindowInterface * activeFormWindow () const -virtual QDesignerFormEditorInterface * core () const -virtual QDesignerFormWindowInterface * createFormWindow ( QWidget * parent = 0, Qt::WindowFlags flags = 0 ) -virtual QDesignerFormWindowInterface * formWindow ( int index ) const -virtual int formWindowCount () const - - - -virtual void addFormWindow ( QDesignerFormWindowInterface * formWindow ) -virtual void removeFormWindow ( QDesignerFormWindowInterface * formWindow ) -virtual void setActiveFormWindow ( QDesignerFormWindowInterface * formWindow ) - - - -void activeFormWindowChanged ( QDesignerFormWindowInterface * formWindow ) -void formWindowAdded ( QDesignerFormWindowInterface * formWindow ) -void formWindowRemoved ( QDesignerFormWindowInterface * formWindow ) - diff --git a/harbour/contrib/hbqt/qtdesigner/qth/QDesignerObjectInspectorInterface.qth b/harbour/contrib/hbqt/qtdesigner/qth/QDesignerObjectInspectorInterface.qth deleted file mode 100644 index fa67b541a7..0000000000 --- a/harbour/contrib/hbqt/qtdesigner/qth/QDesignerObjectInspectorInterface.qth +++ /dev/null @@ -1,58 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = -Inherits = QWidget -Type = -New = -folder = hbqtdesigner -Constructor = no - - - - - - - - - -#include "hbqtgui.h" - -#include - - -/* - * QDesignerObjectInspectorInterface ( QWidget * parent, Qt::WindowFlags flags = 0 ) - * ~QDesignerObjectInspectorInterface () - * - */ -HB_FUNC( QT_QDESIGNEROBJECTINSPECTORINTERFACE ) -{ - //__HB_RETPTRGC__( new QDesignerObjectInspectorInterface() ); -} - - - - - - -virtual QDesignerFormEditorInterface * core () const - - - -virtual void setFormWindow ( QDesignerFormWindowInterface * formWindow ) = 0 - - - - diff --git a/harbour/contrib/hbqt/qtdesigner/qth/QDesignerPropertyEditorInterface.qth b/harbour/contrib/hbqt/qtdesigner/qth/QDesignerPropertyEditorInterface.qth deleted file mode 100644 index 287edd552d..0000000000 --- a/harbour/contrib/hbqt/qtdesigner/qth/QDesignerPropertyEditorInterface.qth +++ /dev/null @@ -1,63 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = -Inherits = QWidget -Type = -New = -folder = hbqtdesigner -Constructor = no - - - - - - - - - -#include "hbqtgui.h" - -#include - - -/* - * QDesignerPropertyEditorInterface ( QWidget * parent, Qt::WindowFlags flags = 0 ) - * ~QDesignerPropertyEditorInterface () - * - */ -HB_FUNC( QT_QDESIGNERPROPERTYEDITORINTERFACE ) -{ - //__HB_RETPTRGC__( new QDesignerPropertyEditorInterface() ); -} - - - - - - -virtual QDesignerFormEditorInterface * core () const -virtual QString currentPropertyName () const = 0 -virtual bool isReadOnly () const = 0 -virtual QObject * object () const = 0 - - - -virtual void setObject ( QObject * object ) = 0 -virtual void setPropertyValue ( const QString & name, const QVariant & value, bool changed = true ) = 0 -virtual void setReadOnly ( bool readOnly ) = 0 - - - - diff --git a/harbour/contrib/hbqt/qtdesigner/qth/QDesignerWidgetBoxInterface.qth b/harbour/contrib/hbqt/qtdesigner/qth/QDesignerWidgetBoxInterface.qth deleted file mode 100644 index bd964ee1b8..0000000000 --- a/harbour/contrib/hbqt/qtdesigner/qth/QDesignerWidgetBoxInterface.qth +++ /dev/null @@ -1,60 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Qt wrapper generator control file - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - */ - - -QObject = -Inherits = QWidget -Type = -New = -folder = hbqtdesigner -Constructor = no - - - - - - - - - -#include "hbqtgui.h" - -#include - - -/* - * QDesignerWidgetBoxInterface ( QWidget * parent = 0, Qt::WindowFlags flags = 0 ) - * ~QDesignerWidgetBoxInterface () - * - */ -HB_FUNC( QT_QDESIGNERWIDGETBOXINTERFACE ) -{ - //__HB_RETPTRGC__( new QDesignerWidgetBoxInterface() ); -} - - - - - - -virtual QString fileName () const = 0 -virtual bool load () = 0 -virtual bool save () = 0 -virtual void setFileName ( const QString & fileName ) = 0 - - - - - - - diff --git a/harbour/contrib/hbqt/qtdesigner/qth/filelist.hbm b/harbour/contrib/hbqt/qtdesigner/qth/filelist.hbm deleted file mode 100644 index 176b0741b6..0000000000 --- a/harbour/contrib/hbqt/qtdesigner/qth/filelist.hbm +++ /dev/null @@ -1,16 +0,0 @@ -# -# $Id$ -# - --pflag=-qtver=0x040500 --pflag=-qtmodule=qtdesigner --pflag=-qthdocdir=../doc/ - -QDesignerActionEditorInterface.qth -QDesignerFormEditorInterface.qth -QDesignerFormWindowCursorInterface.qth -QDesignerFormWindowInterface.qth -QDesignerFormWindowManagerInterface.qth -QDesignerObjectInspectorInterface.qth -QDesignerPropertyEditorInterface.qth -QDesignerWidgetBoxInterface.qth diff --git a/harbour/contrib/hbqt/qtgui/hbqt_errorsys.prg b/harbour/contrib/hbqt/qtgui/hbqt_errorsys.prg deleted file mode 100644 index b65a9f7d7f..0000000000 --- a/harbour/contrib/hbqt/qtgui/hbqt_errorsys.prg +++ /dev/null @@ -1,229 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * The default error handler - * - * Copyright 1999 Antonio Linares - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#include "error.ch" - -#include "hbqtgui.ch" - -PROCEDURE hbqt_ErrorSys() - - ErrorBlock( {| oError | DefError( oError ) } ) - - RETURN - -STATIC FUNCTION DefError( oError ) - LOCAL cMessage - LOCAL cDOSError - LOCAL aOptions - LOCAL nChoice - LOCAL n - LOCAL cMsg := "" - - // By default, division by zero results in zero - IF oError:genCode == EG_ZERODIV .AND. ; - oError:canSubstitute - RETURN 0 - ENDIF - - // By default, retry on RDD lock error failure */ - IF oError:genCode == EG_LOCK .AND. ; - oError:canRetry - // oError:tries++ - RETURN .T. - ENDIF - - // Set NetErr() of there was a database open error - IF oError:genCode == EG_OPEN .AND. ; - oError:osCode == 32 .AND. ; - oError:canDefault - NetErr( .T. ) - RETURN .F. - ENDIF - - // Set NetErr() if there was a lock error on dbAppend() - IF oError:genCode == EG_APPENDLOCK .AND. ; - oError:canDefault - NetErr( .T. ) - RETURN .F. - ENDIF - - cMessage := ErrorMessage( oError ) - IF ! Empty( oError:osCode ) - cDOSError := "(DOS Error " + hb_NToS( oError:osCode ) + ")" - ENDIF - - // Build buttons - - aOptions := {} - - AAdd( aOptions, "Quit" ) - - IF oError:canRetry - AAdd( aOptions, "Retry" ) - ENDIF - - IF oError:canDefault - AAdd( aOptions, "Default" ) - ENDIF - - // Show alert box - - nChoice := 0 - #if 0 - DO WHILE nChoice == 0 - - IF cDOSError == NIL - nChoice := Alert( cMessage, aOptions ) - ELSE - nChoice := Alert( cMessage + ";" + cDOSError, aOptions ) - ENDIF - - ENDDO - #endif - - IF ! Empty( nChoice ) - SWITCH aOptions[ nChoice ] - CASE "Break" - Break( oError ) - CASE "Retry" - RETURN .T. - CASE "Default" - RETURN .F. - ENDSWITCH - ENDIF - - // "Quit" selected - - IF cDOSError != NIL - cMessage += " " + cDOSError - ENDIF - - cMsg += hb_eol() - cMsg += cMessage - - n := 1 - DO WHILE ! Empty( ProcName( ++n ) ) - - cMsg += hb_eol() - cMsg += "Called from " + ProcName( n ) + ; - "(" + hb_NToS( ProcLine( n ) ) + ")" - ENDDO - - hbqt_messageBox( cMsg, NIL, "HBQT Runtime Error", QMessageBox_Critical ) - - ErrorLevel( 1 ) - QUIT - - RETURN .F. - -STATIC FUNCTION ErrorMessage( oError ) - - // start error message - LOCAL cMessage := iif( oError:severity > ES_WARNING, "Error", "Warning" ) + " " - - // add subsystem name if available - IF HB_ISSTRING( oError:subsystem ) - cMessage += oError:subsystem() - ELSE - cMessage += "???" - ENDIF - - // add subsystem's error code if available - IF HB_ISNUMERIC( oError:subCode ) - cMessage += "/" + hb_NToS( oError:subCode ) - ELSE - cMessage += "/???" - ENDIF - - // add error description if available - IF HB_ISSTRING( oError:description ) - cMessage += " " + oError:description - ENDIF - - // add either filename or operation - DO CASE - CASE !Empty( oError:filename ) - cMessage += ": " + oError:filename - CASE !Empty( oError:operation ) - cMessage += ": " + oError:operation - ENDCASE - - RETURN cMessage - -/*----------------------------------------------------------------------*/ - -STATIC PROCEDURE hbqt_messageBox( cMsg, cInfo, cTitle, nIcon ) - LOCAL oMB - - IF hbqt_IsActiveApplication() - - hb_default( @cTitle, "Information" ) - hb_default( @nIcon, QMessageBox_Information ) - - oMB := QMessageBox() - oMB:setText( cMsg ) - IF !empty( cInfo ) - oMB:setInformativeText( cInfo ) - ENDIF - oMB:setIcon( nIcon ) - oMB:setWindowTitle( cTitle ) - - oMB:exec() - - ELSE - #include "hbtrace.ch" - HB_TRACE( HB_TR_ALWAYS, cMsg ) - ENDIF - - RETURN - -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbqt/qtgui/hbqt_hbqabstractitemmodel.cpp b/harbour/contrib/hbqt/qtgui/hbqt_hbqabstractitemmodel.cpp deleted file mode 100644 index 4696e7eed4..0000000000 --- a/harbour/contrib/hbqt/qtgui/hbqt_hbqabstractitemmodel.cpp +++ /dev/null @@ -1,204 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * - * Copyright 2009 Pritpal Bedi - * Copyright 2010 Carlos Bacco - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#include "hbqt.h" - -#include "hbapiitm.h" -#include "hbvm.h" -#include "hbapicls.h" - -#if QT_VERSION >= 0x040500 - -#include "hbqt_hbqabstractitemmodel.h" - -#include -#include -#include -#include -#include - - -QVariant hbqt_fetchData( PHB_ITEM block, int type, int role, int par1, int par2 ) -{ - QVariant vv; - - if( hb_vmRequestReenter() ) - { - PHB_ITEM p0 = hb_itemPutNI( NULL, type ); - PHB_ITEM p1 = hb_itemPutNI( NULL, role ); - PHB_ITEM p2 = hb_itemPutNI( NULL, par1 ); - PHB_ITEM p3 = hb_itemPutNI( NULL, par2 ); - - PHB_ITEM ret = hb_itemNew( hb_vmEvalBlockV( block, 4, p0, p1, p2, p3 ) ); - - hb_itemRelease( p0 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - hb_itemRelease( p3 ); - - if( hb_itemType( ret ) & HB_IT_STRING ) - { - void * pText01 = NULL; - vv = hb_itemGetStrUTF8( ret, &pText01, NULL ); - hb_strfree( pText01 ); - HB_TRACE( HB_TR_DEBUG, ( " fetchData[ s = %s ]", hb_itemGetCPtr( ret ) ) ); - } - else if( hb_itemType( ret ) & HB_IT_LOGICAL ) - { - vv = hb_itemGetL( ret ); - HB_TRACE( HB_TR_DEBUG, ( " fetchData[ l = %i ]", hb_itemGetL( ret ) ) ); - } - else if( hb_itemType( ret ) & HB_IT_DOUBLE ) - { - vv = hb_itemGetND( ret ); - HB_TRACE( HB_TR_DEBUG, ( " fetchData[ d = %f ]", hb_itemGetND( ret ) ) ); - } - else if( hb_itemType( ret ) & HB_IT_NUMERIC ) - { - vv = hb_itemGetNI( ret ); - HB_TRACE( HB_TR_DEBUG, ( " fetchData[ n = %i ]", hb_itemGetNI( ret ) ) ); - } - else if( hb_itemType( ret ) & HB_IT_OBJECT ) - { - void * p = hbqt_get_ptr( ret ); - - if( hbqt_obj_isDerivedFrom( ret, "QBRUSH" ) ) - vv = * ( ( QBrush * ) ( p ) ); - else if( hbqt_obj_isDerivedFrom( ret, "QCOLOR" ) ) - vv = * ( ( QColor * ) ( p ) ); - else if( hbqt_obj_isDerivedFrom( ret, "QICON" ) ) - vv = * ( ( QIcon * ) ( p ) ); - else if( hbqt_obj_isDerivedFrom( ret, "QSIZE" ) ) - vv = * ( ( QSize * ) ( p ) ); - else if( hbqt_obj_isDerivedFrom( ret, "QFONT" ) ) - vv = * ( ( QFont * ) ( p ) ); - else if( hbqt_obj_isDerivedFrom( ret, "QPIXMAP" ) ) - vv = * ( ( QPixmap * ) ( p ) ); - } - - hb_itemRelease( ret ); - hb_vmRequestRestore(); - } - - return vv; -} - -HBQAbstractItemModel::HBQAbstractItemModel( PHB_ITEM pBlock ) : QAbstractItemModel() -{ - if( pBlock ) - { - block = hb_itemNew( pBlock ); - } -} - -HBQAbstractItemModel::~HBQAbstractItemModel( void ) -{ - if( block ) - { - hb_itemRelease( block ); - block = NULL; - } -} - -Qt::ItemFlags HBQAbstractItemModel::flags( const QModelIndex & index ) const -{ - if( ! index.isValid() ) - return 0; - - QVariant ret = hbqt_fetchData( block, HBQT_QAIM_flags, 0, index.column(), index.row() ); - if( ! ret.isValid() ) - return Qt::ItemIsEnabled | Qt::ItemIsSelectable; - - return ( QFlags ) ret.toInt(); -} - -QVariant HBQAbstractItemModel::data( const QModelIndex & index, int role ) const -{ - if( ! index.isValid() ) - return QVariant(); - - return hbqt_fetchData( block, HBQT_QAIM_data, role, index.column(), index.row() ); -} - -QVariant HBQAbstractItemModel::headerData( int section, Qt::Orientation orientation, int role ) const -{ - return hbqt_fetchData( block, HBQT_QAIM_headerData, role, orientation, section ); -} - -int HBQAbstractItemModel::rowCount( const QModelIndex & /*parent = QModelIndex()*/ ) const -{ - return hbqt_fetchData( block, HBQT_QAIM_rowCount, 0, 0, 0 ).toInt(); -} - -int HBQAbstractItemModel::columnCount( const QModelIndex & /*parent = QModelIndex()*/ ) const -{ - return hbqt_fetchData( block, HBQT_QAIM_columnCount, 0, 0, 0 ).toInt(); -} - -QModelIndex HBQAbstractItemModel::index( int row, int column, const QModelIndex & parent ) const -{ - HB_SYMBOL_UNUSED( parent ); - return createIndex( row, column, row * column ); -} - -QModelIndex HBQAbstractItemModel::parent( const QModelIndex & /* child */ ) const -{ - return QModelIndex(); -} - -void HBQAbstractItemModel::reset() -{ - QAbstractItemModel::reset(); -} - -#endif diff --git a/harbour/contrib/hbqt/qtgui/hbqt_hbqabstractitemmodel.h b/harbour/contrib/hbqt/qtgui/hbqt_hbqabstractitemmodel.h deleted file mode 100644 index 04f1c902db..0000000000 --- a/harbour/contrib/hbqt/qtgui/hbqt_hbqabstractitemmodel.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * - * Copyright 2009 Pritpal Bedi - * Copyright 2010 Carlos Bacco - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#ifndef HBQT_HBQAbstractItemModel_H -#define HBQT_HBQAbstractItemModel_H - -#include "hbqtcore.h" -#include "hbqtgui.h" - -/* - * DEFINES HBQt CODEBLOCKs - * - * Format: - * HBQT_(Qt class initials)_(Qt overloaded member) - */ - -#define HBQT_QAIM_data 1001 -#define HBQT_QAIM_flags 1003 -#define HBQT_QAIM_headerData 2001 -#define HBQT_QAIM_rowCount 3001 -#define HBQT_QAIM_columnCount 3002 - -/*----------------------------------------------------------------------*/ - -#include -#include - -class HBQAbstractItemModel : public QAbstractItemModel -{ - Q_OBJECT - -public: - HBQAbstractItemModel( PHB_ITEM pBlock ); - virtual ~HBQAbstractItemModel( void ); - - PHB_ITEM block; - - Qt::ItemFlags flags( const QModelIndex & index ) const; - QVariant data( const QModelIndex & index, int role = Qt::DisplayRole ) const; - QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; - int rowCount( const QModelIndex & parent = QModelIndex() ) const; - int columnCount( const QModelIndex & parent = QModelIndex() ) const; - QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; - QModelIndex parent(const QModelIndex &child) const; - void reset(); -}; - -/*----------------------------------------------------------------------*/ - -#endif diff --git a/harbour/contrib/hbqt/qtgui/hbqt_hbqgraphicsitem.cpp b/harbour/contrib/hbqt/qtgui/hbqt_hbqgraphicsitem.cpp deleted file mode 100644 index 896315123d..0000000000 --- a/harbour/contrib/hbqt/qtgui/hbqt_hbqgraphicsitem.cpp +++ /dev/null @@ -1,808 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - /*************************************************************************** - * The parts of this source are borrowed and adopted from eXaro project * - * Copyright (C) 2008 by BogDan Vatra * - * bog_dan_ro@yahoo.com * - ***************************************************************************/ - -#include "hbqt.h" -#include "hbapiitm.h" -#include "hbvm.h" - -#if QT_VERSION >= 0x040500 - -#include "hbqt_hbqgraphicsitem.h" - -#include - -HBQGraphicsItem::HBQGraphicsItem( int type, QGraphicsItem * parent ) : QGraphicsItem( parent ) -{ - iType = type; - - block = NULL; - - iResizeMode = RESIZE_MODE_FIXED; - iResizeFlags = RESIZE_MODE_LEFT | RESIZE_MODE_TOP | RESIZE_MODE_RIGHT | RESIZE_MODE_BOTTOM; - dWidth = 20 / UNIT; /* 20 mm */ - dHeight = 20 / UNIT; /* 20 mm */ - iOpacity = 100; - iResizeHandle = 2 / UNIT; - iBGMode = Qt::TransparentMode; - iLineStyle = HBQT_GRAPHICSITEM_LINE_HORIZONTAL; - iStartAngle = 30; - iSpanAngle = 120; - QString_objectType = ""; - QString_text = iType == HBQT_GRAPHICSITEM_PICTURE ? "picture" : ""; - - bDrawSelectionBorder = true; - - QBrush_brush = iType == HBQT_GRAPHICSITEM_PICTURE ? QBrush( QPixmap( ":/empty.png" ) ) : QBrush(); - QBrush_bgBrush = QBrush(); - QPen_pen = QPen( Qt::SolidLine ); - - QFont_font = QFont( "Serif" ); - QFont_font.setPointSizeF( 3.5 ); - QFont_font.setStyleStrategy( QFont::PreferMatch ); - QFont_font.setStyleStrategy( QFont::ForceOutline ); - setFont( QFont_font ); - - setFlags( QGraphicsItem::ItemIsSelectable ); - - /* Picture */ - m_textFlags = Qt::AlignCenter; - - m_paintType = HBQT_GRAPHICSITEM_RESIZE_PICTURE_TO_ITEM_KEEP_ASPECT_RATIO; - m_frameType = HBQT_GRAPHICSITEM_IMAGE_NO_FRAME; - m_textColor = Qt::black; - m_borderColor = Qt::black; - m_borderWidth = 0; - m_drawTextType = HBQT_GRAPHICSITEM_TEXT_DRAW_NONE; - - m_barsIdentation = 1 / UNIT; - m_showLabels = true; - m_toColorFactor = 2.0; - m_drawBorder = true; - m_showGrid = true; - m_legendColorRectWidth = 5 / UNIT; - -} - -HBQGraphicsItem::~HBQGraphicsItem() -{ - if( block ) - { - hb_itemRelease( block ); - block = NULL; - } -} - -void HBQGraphicsItem::hbSetBlock( PHB_ITEM b ) -{ - if( b ) - { - block = hb_itemNew( b ); - // hb_gcUnlock( block ); - } -} - -QString HBQGraphicsItem::objectType() -{ - return QString_objectType; -} -void HBQGraphicsItem::setObjectType( const QString & type ) -{ - QString_objectType = type; -} - -QString HBQGraphicsItem::objectName() -{ - return QString_objectName; -} -void HBQGraphicsItem::setObjectName( const QString & name ) -{ - QString_objectName = name; -} - -QBrush HBQGraphicsItem::brush() -{ - return QBrush_brush; -} -void HBQGraphicsItem::setBrush( const QBrush & brush ) -{ - QBrush_brush = brush; - update(); -} - -QBrush HBQGraphicsItem::backgroundBrush() -{ - return QBrush_bgBrush; -} -void HBQGraphicsItem::setBackgroundBrush( const QBrush & brush ) -{ - QBrush_bgBrush = brush; - update(); -} - -QPen HBQGraphicsItem::pen() -{ - return QPen_pen; -} -void HBQGraphicsItem::setPen( const QPen & pen ) -{ - QPen_pen = pen; - update(); -} - -QFont HBQGraphicsItem::font() -{ - return QFont_font; -} -void HBQGraphicsItem::setFont( const QFont & font ) -{ - QFont_font = font; - update(); -} - -/* TEXT */ -QString HBQGraphicsItem::text() -{ - return QString_text; -} -void HBQGraphicsItem::setText( const QString & text ) -{ - QString_text = text; - update(); -} -int HBQGraphicsItem::sizePolicy() -{ - return m_sizePolicy; -} -void HBQGraphicsItem::setSizePolicy( int sizePolicy ) -{ - m_sizePolicy = sizePolicy; -} -int HBQGraphicsItem::textFlags() -{ - return m_textFlags; -} -void HBQGraphicsItem::setTextFlags( int textFlags ) -{ - m_textFlags = textFlags; - update(); -} - -/* LINE */ -int HBQGraphicsItem::lineStyle() -{ - return iLineStyle; -} -void HBQGraphicsItem::setLineStyle( int lineStyle ) -{ - iLineStyle = lineStyle; - update(); -} - -/* PIE */ -int HBQGraphicsItem::startAngle() -{ - return iStartAngle; -} -void HBQGraphicsItem::setStartAngle( int startAngle ) -{ - iStartAngle = startAngle; - update(); -} -int HBQGraphicsItem::spanAngle() -{ - return iSpanAngle; -} -void HBQGraphicsItem::setSpanAngle( int spanAngle ) -{ - iSpanAngle = spanAngle; - update(); -} - -/* GEOMETRY */ -qreal HBQGraphicsItem::width() const -{ - return dWidth; -} -void HBQGraphicsItem::setWidth( qreal width ) -{ - dWidth = width; - update(); -} -qreal HBQGraphicsItem::height() const -{ - return dHeight; -} -void HBQGraphicsItem::setHeight( qreal height ) -{ - dHeight = height; - update(); -} -QRectF HBQGraphicsItem::geometry() -{ - return QRectF( pos().x(), pos().y(), width(), height() ); -} -void HBQGraphicsItem::setGeometry( const QRectF & rect ) -{ - setPos( rect.x(), rect.y() ); - setWidth( rect.width() ); - setHeight( rect.height() ); -} - -/* OPACITY */ -int HBQGraphicsItem::opacity() -{ - return iOpacity; -} -void HBQGraphicsItem::setOpacity( const int opacity ) -{ - if( opacity < 0 ){ - iOpacity = 0; - } - else { - if( opacity > 100 ){ - iOpacity = 100; - } - else { - iOpacity = opacity; - } - } - update(); -} - -int HBQGraphicsItem::paintType() -{ - return m_paintType; -} -void HBQGraphicsItem::setPaintType( int paintType ) -{ - m_paintType = paintType; - update(); -} -int HBQGraphicsItem::frameType() -{ - return m_frameType; -} -void HBQGraphicsItem::setFrameType( int frameType ) -{ - m_frameType = frameType; - update(); -} -int HBQGraphicsItem::drawTextType() -{ - return m_drawTextType; -} -void HBQGraphicsItem::setDrawTextType( int drawTextType ) -{ - m_drawTextType = drawTextType; - update(); -} -QPixmap HBQGraphicsItem::pixmap() -{ - QPixmap pixmap; - return pixmap.fromImage( m_image ) ; -} -void HBQGraphicsItem::setPixmap( const QPixmap & pixmap ) -{ - m_image = QImage( pixmap.toImage() ); - update(); -} -QColor HBQGraphicsItem::textColor() -{ - return m_textColor; -} -void HBQGraphicsItem::setTextColor( const QColor & textColor ) -{ - m_textColor = textColor; - update(); -} -int HBQGraphicsItem::borderWidth() -{ - return m_borderWidth; -} -void HBQGraphicsItem::setBorderWidth( int borderWidth ) -{ - if( borderWidth < 0 ){ - m_borderWidth = 0; - } - else { - if( borderWidth > 5 ){ - m_borderWidth = 5; - } - else { - m_borderWidth = borderWidth; - } - } - update(); -} -QColor HBQGraphicsItem::borderColor() -{ - return m_borderColor; -} -void HBQGraphicsItem::setBorderColor( const QColor & borderColor ) -{ - m_borderColor = borderColor; - update(); -} - -int HBQGraphicsItem::resizeFlags() -{ - return iResizeFlags; -} -void HBQGraphicsItem::setResizeFlags( int resizeFlags ) -{ - iResizeFlags = resizeFlags; -} - -int HBQGraphicsItem::resizeHandle() -{ - return iResizeHandle; -} -void HBQGraphicsItem::setResizeHandle( int resizeHandle ) -{ - iResizeHandle = resizeHandle; -#if 0 - if( m_minWidth < iResizeHandle * 2 + 1 ) - m_minWidth = iResizeHandle * 2 + 1; - - if( m_minHeight < iResizeHandle * 2 + 1 ) - m_minHeight = iResizeHandle * 2 + 1; -#endif - update( boundingRect() ); -} - -int HBQGraphicsItem::barsIdentation() -{ - return m_barsIdentation; -} -void HBQGraphicsItem::setBarsIdentation(int barsIdentation) -{ - if( barsIdentation < 1 ) - barsIdentation = 1; - m_barsIdentation = barsIdentation; - update(); -} - -bool HBQGraphicsItem::showLabels() -{ - return m_showLabels; -} -void HBQGraphicsItem::setShowLabels( bool showLabels ) -{ - m_showLabels = showLabels; - update(); -} - -bool HBQGraphicsItem::showGrid() -{ - return m_showGrid; -} -void HBQGraphicsItem::setShowGrid( bool showGrid ) -{ - m_showGrid = showGrid; - update(); -} - -qreal HBQGraphicsItem::toColorFactor() -{ - return m_toColorFactor; -} -void HBQGraphicsItem::setToColorFactor( qreal toColorFactor ) -{ - if( toColorFactor > 10 ) - toColorFactor = 10; - if( toColorFactor < 0.1 ) - toColorFactor = 0.1; - m_toColorFactor = toColorFactor; - update(); -} - -bool HBQGraphicsItem::drawBorder() -{ - return m_drawBorder; -} -void HBQGraphicsItem::setDrawBorder( bool drawBorder ) -{ - m_drawBorder = drawBorder; - update(); -} - -QColor HBQGraphicsItem::generateNextColor() -{ - return QColor( qrand() % 255, qrand() % 255, qrand() % 255, 255 ); -} - -void HBQGraphicsItem::setBarValues( const QStringList & barValues ) -{ - m_barValues = barValues; -} - -void HBQGraphicsItem::setLegendColorRectWidth( int legendColorRectWidth ) -{ - if( legendColorRectWidth < 1 ) - legendColorRectWidth = 1; - m_legendColorRectWidth = legendColorRectWidth; - update(); -} - -/*----------------------------------------------------------------------*/ -/* Mouse Events */ -/*----------------------------------------------------------------------*/ - -void HBQGraphicsItem::contextMenuEvent( QGraphicsSceneContextMenuEvent * event ) -{ - if( block ){ - PHB_ITEM p1 = hb_itemPutNI( NULL, QEvent::GraphicsSceneContextMenu ); - PHB_ITEM p2 = hbqt_bindGetHbObject( NULL, ( void * ) event, "HB_QGRAPHICSSCENECONTEXTMENUEVENT", NULL, 0 ); - PHB_ITEM p3 = hb_itemPutC( NULL, objectName().toLatin1().data() ); - hb_vmEvalBlockV( block, 3, p1, p2, p3 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - hb_itemRelease( p3 ); - } - QGraphicsItem::contextMenuEvent( event ); -} - -void HBQGraphicsItem::mousePressEvent( QGraphicsSceneMouseEvent * event ) -{ - QRectF_geometry = geometry(); -#if 0 /* Control via user interaction - bring to front - push to back */ - foreach( QGraphicsItem * item, scene()->items() ) - { - if( item->zValue() == 1 ){ - item->setZValue( 0 ); - } - } - setZValue( 1 ); - if( objectType() == ( QString ) "Page" ){ - setZValue( 0 ); - } -#endif - - if( event->buttons() == Qt::LeftButton ){ - iResizeMode = determineResizeMode( event->pos() ); - } - else { - iResizeMode = RESIZE_MODE_FIXED; - } - - if( iResizeMode == RESIZE_MODE_FIXED ){ - setCursor( QCursor( Qt::ClosedHandCursor ) ); - } - if( objectType() == ( QString ) "Page" ){ - setCursor( QCursor( Qt::ArrowCursor ) ); - } - - QGraphicsItem::mousePressEvent( event ); - - if( event->buttons() == Qt::LeftButton ){ - /* emit( itemSelected( this, event->pos() ) ); */ - if( block ){ - PHB_ITEM p1 = hb_itemPutNI( NULL, 21101 ); - PHB_ITEM p2 = hb_itemPutC( NULL, objectName().toLatin1().data() ); - hb_vmEvalBlockV( block, 2, p1, p2 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - } - } -} - -void HBQGraphicsItem::mouseReleaseEvent( QGraphicsSceneMouseEvent * event ) -{ - QGraphicsItem::mouseReleaseEvent( event ); - iResizeMode = RESIZE_MODE_FIXED; - - QRectF nGeometry = geometry(); - if( nGeometry != QRectF_geometry ){ - /* emit( geometryChanged( this, nGeometry, QRectF_geometry ) ); */ - if( block ){ - /* Inform geometry is changed */ - } - } -} - -void HBQGraphicsItem::mouseMoveEvent( QGraphicsSceneMouseEvent * event ) -{ - if( event->buttons() == Qt::LeftButton ) - { - if( iResizeMode == RESIZE_MODE_FIXED ){ - setPos( pos() + QPoint( ( int ) ( event->scenePos().x() - event->lastScenePos().x() ), - ( int ) ( event->scenePos().y() - event->lastScenePos().y() ) ) ); - } - else - { - if( iResizeMode & RESIZE_MODE_LEFT ){ - setPos( pos().x() + event->scenePos().x() - event->lastScenePos().x(), pos().y() ); - setWidth( width() + event->lastScenePos().x() - event->scenePos().x() ); - } - if( iResizeMode & RESIZE_MODE_TOP ){ - setPos( pos().x(), pos().y() + event->scenePos().y() - event->lastScenePos().y() ); - setHeight( height() + event->lastScenePos().y() - event->scenePos().y() ); - } - if( iResizeMode & RESIZE_MODE_RIGHT ){ - scene()->invalidate( geometry() ); - setWidth( ( int ) ( width() + event->scenePos().x() - event->lastScenePos().x() ) ); - } - if( iResizeMode & RESIZE_MODE_BOTTOM ){ - scene()->invalidate( geometry() ); - setHeight( ( int ) ( height() + event->scenePos().y() - event->lastScenePos().y() ) ); - } - if( width() < 5 ){ - setWidth( 5 ); - } - if( height() < 5 ){ - setHeight( 5 ); - } - } - } - else - { - QGraphicsItem::mouseMoveEvent( event ); - } -} - -void HBQGraphicsItem::hoverEnterEvent( QGraphicsSceneHoverEvent * event ) -{ - QGraphicsItem::hoverEnterEvent( event ); -} - -int HBQGraphicsItem::determineResizeMode( const QPointF & pos ) -{ - int resizeModes = resizeFlags(); - int mode = RESIZE_MODE_FIXED; - - QRectF topRect( 0, 0, width(), iResizeHandle ); - QRectF leftRect( 0, 0, iResizeHandle, height() ); - QRectF bottomRect( 0, height() - iResizeHandle, width(), iResizeHandle ); - QRectF rightRect( width() - iResizeHandle, 0, width(), height() ); - - if( resizeModes & RESIZE_MODE_LEFT && leftRect.contains( pos ) ){ - mode |= RESIZE_MODE_LEFT; - } - if( resizeModes & RESIZE_MODE_TOP && topRect.contains( pos ) ){ - mode |= RESIZE_MODE_TOP; - } - if( resizeModes & RESIZE_MODE_RIGHT && rightRect.contains( pos ) ){ - mode |= RESIZE_MODE_RIGHT; - } - if( resizeModes & RESIZE_MODE_BOTTOM && bottomRect.contains( pos ) ){ - mode |= RESIZE_MODE_BOTTOM; - } - if( resizeModes & RESIZE_MODE_FIXEDPOS ){ - mode |= RESIZE_MODE_FIXEDPOS; - } - - return mode; -} -/*----------------------------------------------------------------------*/ -/* Drag Events */ -/*----------------------------------------------------------------------*/ - -void HBQGraphicsItem::dragEnterEvent( QGraphicsSceneDragDropEvent * event ) -{ - HB_TRACE( HB_TR_DEBUG, ( "dragEnterEvent( QGraphicsSceneDragDropEvent * event )" ) ); - if( block ) - { - #if 0 - PHB_ITEM p1 = hb_itemPutNI( NULL, ( int ) QEvent::GraphicsSceneDragEnter ); - PHB_ITEM p2 = hb_itemPutPtr( NULL, event ); - hb_vmEvalBlockV( block, 2, p1, p2 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - #endif - } - QGraphicsItem::dragEnterEvent( event ); -} -void HBQGraphicsItem::dragLeaveEvent( QGraphicsSceneDragDropEvent * event ) -{ - if( block ) - { - #if 0 - PHB_ITEM p1 = hb_itemPutNI( NULL, ( int ) QEvent::GraphicsSceneDragLeave ); - PHB_ITEM p2 = hb_itemPutPtr( NULL, event ); - hb_vmEvalBlockV( block, 2, p1, p2 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - #endif - } - QGraphicsItem::dragLeaveEvent( event ); -} -void HBQGraphicsItem::dragMoveEvent( QGraphicsSceneDragDropEvent * event ) -{ - if( block ) - { - #if 0 - PHB_ITEM p1 = hb_itemPutNI( NULL, ( int ) QEvent::GraphicsSceneDragMove ); - PHB_ITEM p2 = hb_itemPutPtr( NULL, event ); - hb_vmEvalBlockV( block, 2, p1, p2 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - #endif - } - QGraphicsItem::dragMoveEvent( event ); -} -void HBQGraphicsItem::dropEvent( QGraphicsSceneDragDropEvent * event ) -{ - if( block ) - { - #if 0 - const QMimeData * mime = event->mimeData(); - - if( mime->hasFormat( ( QString ) "application/x-qabstractitemmodeldatalist" ) ) - { - PHB_ITEM p1 = hb_itemPutNI( NULL, ( int ) QEvent::GraphicsSceneDrop ); - PHB_ITEM p2 = hb_itemPutPtr( NULL, event ); - PHB_ITEM p3 = hb_itemNew( NULL ); - - QTreeWidget * tree = dynamic_cast< QTreeWidget * >( event->source() ); - - QByteArray encoded = mime->data( "application/x-qabstractitemmodeldatalist" ); - QDataStream stream( &encoded, QIODevice::ReadOnly ); - - int row, col; - QMap< int, QVariant > roleDataMap; - stream >> row >> col >> roleDataMap; - - QTreeWidgetItem * item = tree->topLevelItem( row ); - - hb_arrayNew( p3, 3 ); - - hb_arraySetC( p3, 1, tree->objectName().toLatin1().data() ); - hb_arraySetC( p3, 2, roleDataMap.value( Qt::DisplayRole ).toString().toLatin1().data() ); - hb_arraySetC( p3, 3, item->text( 0 ).toLatin1().data() ); - - hb_vmEvalBlockV( block, 3, p1, p2, p3 ); - - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - hb_itemRelease( p3 ); - } - else - { - PHB_ITEM p1 = hb_itemPutNI( NULL, ( int ) QEvent::GraphicsSceneDrop ); - PHB_ITEM p2 = hb_itemPutPtr( NULL, event ); - hb_vmEvalBlockV( block, 2, p1, p2 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - } - #endif - } - QGraphicsItem::dropEvent( event ); -} - -/*----------------------------------------------------------------------*/ -/* Painting */ -/*----------------------------------------------------------------------*/ - -QRectF HBQGraphicsItem::boundingRect() const -{ - return QRectF( 0, 0, width(), height() ); -} -/*----------------------------------------------------------------------*/ - -void HBQGraphicsItem::prepare( QPainter * painter ) -{ - switch( iType ) - { - case HBQT_GRAPHICSITEM_SIMPLETEXT : - { - if( m_sizePolicy == HBQT_GRAPHICSITEM_TEXT_SIZEPOLICY_NONE ) - { - return; - } - QRectF rect = boundingRect(); - adjustRect( rect ); - QFontMetricsF fm( painter->font() ); - if( m_sizePolicy == HBQT_GRAPHICSITEM_TEXT_SIZEPOLICY_AUTO ) - { - qreal wd = fm.width( QString_text ); - if( wd > width() ) - { - setWidth( wd ); - } - } - else - { - QRectF rc = fm.boundingRect( rect, textFlags(), QString_text ); - if( rc.height() > rect.height() ) - { - /* setStretch( rc.height() - rect.height() ); */ - } - } - } - break; - } -} -/*----------------------------------------------------------------------*/ - -void HBQGraphicsItem::paint( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * /* widget */ ) -{ - if( block ) - { - QRectF rect = ( option->type == QStyleOption::SO_GraphicsItem ) ? boundingRect() : option->exposedRect; - - PHB_ITEM p1 = hb_itemPutNI( NULL, 21017 ); - PHB_ITEM p2 = hbqt_bindGetHbObject( NULL, ( void * ) painter, "HB_QPAINTER", NULL, 0 ); - PHB_ITEM p3 = hbqt_bindGetHbObject( NULL, ( void * ) &rect, "HB_QRECTF", NULL, 0 ); - hb_vmEvalBlockV( block, 3, p1, p2, p3 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - hb_itemRelease( p3 ); - } -} -/*----------------------------------------------------------------------*/ - -QRectF HBQGraphicsItem::adjustRect( QRectF & rect ) -{ - qreal penwidth = pen().widthF(); - rect = rect.adjusted( penwidth, penwidth, -penwidth, -penwidth ); - return rect; -} -/*----------------------------------------------------------------------*/ - -QRectF HBQGraphicsItem::adjustOption( QPainter * painter, const QStyleOptionGraphicsItem * option ) -{ - Q_UNUSED( painter ); - - QRectF rect = ( option->type == QStyleOption::SO_GraphicsItem ) ? boundingRect() : option->exposedRect; - - adjustRect( rect ); - - return rect; -} -/*----------------------------------------------------------------------*/ - -#endif diff --git a/harbour/contrib/hbqt/qtgui/hbqt_hbqgraphicsitem.h b/harbour/contrib/hbqt/qtgui/hbqt_hbqgraphicsitem.h deleted file mode 100644 index 35ee842f13..0000000000 --- a/harbour/contrib/hbqt/qtgui/hbqt_hbqgraphicsitem.h +++ /dev/null @@ -1,273 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#ifndef HBQT_HBQGRAPHICSITEM_H -#define HBQT_HBQGRAPHICSITEM_H - -#include "hbqt.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define UNIT 0.1 - -#define RESIZE_MODE_FIXED 0 -#define RESIZE_MODE_LEFT 1 -#define RESIZE_MODE_TOP 2 -#define RESIZE_MODE_RIGHT 4 -#define RESIZE_MODE_BOTTOM 8 -#define RESIZE_MODE_FIXEDPOS 16 - -#define HBQT_GRAPHICSITEM_NONE 0 -#define HBQT_GRAPHICSITEM_RECT 1 -#define HBQT_GRAPHICSITEM_LINE 2 -#define HBQT_GRAPHICSITEM_ELLIPSE 3 -#define HBQT_GRAPHICSITEM_ARC 4 -#define HBQT_GRAPHICSITEM_CHORD 5 -#define HBQT_GRAPHICSITEM_POLYGON 6 -#define HBQT_GRAPHICSITEM_PIE 7 -#define HBQT_GRAPHICSITEM_PATH 8 -#define HBQT_GRAPHICSITEM_CHART 9 -#define HBQT_GRAPHICSITEM_GRADIENT 10 -#define HBQT_GRAPHICSITEM_PICTURE 11 -#define HBQT_GRAPHICSITEM_BARCODE 12 -#define HBQT_GRAPHICSITEM_TEXT 13 -#define HBQT_GRAPHICSITEM_SIMPLETEXT 14 - -#define HBQT_GRAPHICSITEM_LINE_HORIZONTAL 0 -#define HBQT_GRAPHICSITEM_LINE_VERTICAL 1 -#define HBQT_GRAPHICSITEM_LINE_BACKWARDDIAGONAL 2 -#define HBQT_GRAPHICSITEM_LINE_FORWARDDIAGONAL 3 - -#define HBQT_GRAPHICSITEM_TEXT_DRAW_NONE 0 -#define HBQT_GRAPHICSITEM_TEXT_DRAW_TOP 1 -#define HBQT_GRAPHICSITEM_TEXT_DRAW_BOTTOM 2 -#define HBQT_GRAPHICSITEM_TEXT_DRAW_ABOVE 3 -#define HBQT_GRAPHICSITEM_TEXT_DRAW_BELOW 4 - -#define HBQT_GRAPHICSITEM_TEXT_SIZEPOLICY_NONE 0 -#define HBQT_GRAPHICSITEM_TEXT_SIZEPOLICY_AUTO 1 -#define HBQT_GRAPHICSITEM_TEXT_SIZEPOLICY_STRETCH 2 - -#define HBQT_GRAPHICSITEM_IMAGE_NO_FRAME 0 -#define HBQT_GRAPHICSITEM_IMAGE_PICTURE_BIND 1 -#define HBQT_GRAPHICSITEM_IMAGE_PICTURE_BOX 2 - -#define HBQT_GRAPHICSITEM_RESIZE_ITEM_TO_PICTURE 1 -#define HBQT_GRAPHICSITEM_CENTER_PICTURE_TO_ITEM 2 -#define HBQT_GRAPHICSITEM_RESIZE_PICTURE_TO_ITEM_KEEP_ASPECT_RATIO 3 -#define HBQT_GRAPHICSITEM_RESIZE_PICTURE_TO_ITEM_IGNORE_ASPECT_RATIO 4 - -#define hbqt_screen_heightMM (((double)QDesktopWidget().screen()->height() / (double)QDesktopWidget().screen()->physicalDpiY() )*25.4) -#define hbqt_screen_widthMM (((double)QDesktopWidget().screen()->width() / (double)QDesktopWidget().screen()->physicalDpiX() )*25.4) - - -class HBQGraphicsItem : public QGraphicsItem -{ - -public: - HBQGraphicsItem( int type = 0, QGraphicsItem * parent = 0 ); - ~HBQGraphicsItem(); - - QRectF boundingRect() const; - virtual void paint( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0 ); - - PHB_ITEM block; - - int determineResizeMode( const QPointF & pos ); - QRectF adjustRect( QRectF & rect ); - virtual void prepare( QPainter * painter ); - -private: - int iType; - bool bYes; - - QBrush QBrush_brush, QBrush_bgBrush; - QPen QPen_pen; - QFont QFont_font; - qreal dWidth, dHeight; - QRectF QRectF_geometry; - int iOpacity; - int iResizeMode; - int iResizeFlags; - bool bDrawSelectionBorder; - int iResizeHandle; - int iBGMode; - int iLineStyle; - int iStartAngle; - int iSpanAngle; - QString QString_objectType; - QString QString_objectName; - QString QString_text; - - /* Image */ - int m_paintType; - int m_frameType; - int m_drawTextType; - QImage m_image; - QColor m_textColor; - QColor m_borderColor; - int m_borderWidth; - int m_sizePolicy; - int m_textFlags; - - int m_barsIdentation; - bool m_showLabels; - qreal m_toColorFactor; - bool m_drawBorder; - bool m_showGrid; - QStringList m_barValues; - int m_legendColorRectWidth; - - QColor generateNextColor(); - QRectF adjustOption( QPainter * painter, const QStyleOptionGraphicsItem * option ); - -protected: - void dragEnterEvent( QGraphicsSceneDragDropEvent * event ); - void dragLeaveEvent( QGraphicsSceneDragDropEvent * event ); - void dragMoveEvent( QGraphicsSceneDragDropEvent * event ); - void dropEvent( QGraphicsSceneDragDropEvent * event ); - - void hoverEnterEvent( QGraphicsSceneHoverEvent * event ); - - void mousePressEvent( QGraphicsSceneMouseEvent * event ); - void mouseReleaseEvent( QGraphicsSceneMouseEvent * event ); - void mouseMoveEvent( QGraphicsSceneMouseEvent * event ); - void contextMenuEvent( QGraphicsSceneContextMenuEvent * event ); - - -public slots: - void hbSetBlock( PHB_ITEM block ); - - QPen pen(); - void setPen( const QPen & pen ); - QBrush brush(); - void setBrush( const QBrush & brush ); - QBrush backgroundBrush(); - void setBackgroundBrush( const QBrush & brush ); - QFont font(); - void setFont( const QFont & font ); - int lineStyle(); - void setLineStyle( int lineStyle ); - int startAngle(); - void setStartAngle( int startAngle ); - int spanAngle(); - void setSpanAngle( int spanAngle ); - qreal width() const; - void setWidth( qreal width ); - qreal height() const; - void setHeight( qreal height ); - int opacity(); - void setOpacity( const int opacity ); - QRectF geometry(); - void setGeometry( const QRectF & rect ); - QString objectType(); - void setObjectType( const QString & type ); - QString objectName(); - void setObjectName( const QString & name ); - QString text(); - void setText( const QString & text ); - - int paintType(); - void setPaintType( int paintType ); - int frameType(); - void setFrameType( int frameType ); - int drawTextType(); - void setDrawTextType( int drawTextType ); - QPixmap pixmap(); - void setPixmap( const QPixmap & pixmap ); - QColor textColor(); - void setTextColor( const QColor & color ); - int borderWidth(); - void setBorderWidth( int bWidth ); - QColor borderColor(); - void setBorderColor( const QColor & color ); - int sizePolicy(); - void setSizePolicy( int sizePolicy ); - int textFlags(); - void setTextFlags( int textFlags ); - int resizeFlags(); - void setResizeFlags( int resizeFlags ); - int resizeHandle(); - void setResizeHandle( int resizeHandle ); - - int barsIdentation(); - void setBarsIdentation( int barsIdentation ); - bool drawBorder(); - void setDrawBorder( bool drawBorder ); - bool showGrid(); - void setShowGrid( bool showGrid ); - bool showLabels(); - void setShowLabels( bool showLabels ); - qreal toColorFactor(); - void setToColorFactor( qreal toColorFactor ); - void setBarValues( const QStringList & list ); - void setLegendColorRectWidth( int legendColorRectWidth ); - - struct _chartValue - { - QString key; - qreal value; - QColor color; - }; -}; - -#endif diff --git a/harbour/contrib/hbqt/qtgui/hbqt_hbqgraphicsscene.cpp b/harbour/contrib/hbqt/qtgui/hbqt_hbqgraphicsscene.cpp deleted file mode 100644 index 061dc14461..0000000000 --- a/harbour/contrib/hbqt/qtgui/hbqt_hbqgraphicsscene.cpp +++ /dev/null @@ -1,763 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -/*************************************************************************** -* The parts of this source are borrowed and adopted from eXaro project * -* Copyright (C) 2008 by BogDan Vatra * -* bog_dan_ro@yahoo.com * -***************************************************************************/ - -#include "hbqt.h" -#include "hbapiitm.h" -#include "hbvm.h" - -#if QT_VERSION >= 0x040500 - -#include "hbqt_hbqgraphicsscene.h" - -HBQGraphicsScene::HBQGraphicsScene( QObject * parent ) : QGraphicsScene( parent ) -{ - block = 0; - - m_magnets = 0; - m_magnetArea = 1; - m_paperBorder = 0; - m_pageBorder = 0; - m_showGrid = false; - m_pageSize = QPrinter::A4; - m_orientation = QPrinter::Portrait; - - setPageSize( QPrinter::A4 ); - setOrientation( QPrinter::Portrait ); - - QFont m_font = QFont( "Serif" ); - m_font.setPointSizeF( 3.5 ); - m_font.setStyleStrategy( QFont::PreferMatch ); - m_font.setStyleStrategy( QFont::ForceOutline ); - setFont( m_font ); -} - -HBQGraphicsScene::~HBQGraphicsScene() -{ - if( block ) - { - hb_itemRelease( block ); - block = NULL; - } -} - -void HBQGraphicsScene::hbSetBlock( PHB_ITEM b ) -{ - if( b ) - { - block = hb_itemNew( b ); - // hb_gcUnlock( block ); - - QDesktopWidget * qWid = new QDesktopWidget(); - - PHB_ITEM p1 = hb_itemPutNI( NULL, 21001 ); - PHB_ITEM p2 = hb_itemPutNI( NULL, qWid->screen()->physicalDpiX() ); - PHB_ITEM p3 = hb_itemPutNI( NULL, qWid->screen()->physicalDpiY() ); - hb_vmEvalBlockV( block, 3, p1, p2, p3 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - hb_itemRelease( p3 ); - } -} - -QRectF HBQGraphicsScene::geometry() -{ - return m_geometry; -} -void HBQGraphicsScene::setGeometry( QRectF rect ) -{ - m_geometry = rect & sceneRect(); - drawBorder(); - emit geometryChanged( m_geometry ); -} - -void HBQGraphicsScene::updatePageRect() -{ - QPrinter p; - - p.setOutputFormat( QPrinter::PdfFormat ); - p.setOrientation( ( QPrinter::Orientation ) orientation() ); - p.setPageSize( ( QPrinter::PageSize ) pageSize() ); - p.setFullPage( true ); - setSceneRect( 0, 0, p.paperRect( QPrinter::Millimeter ).width() / UNIT, p.paperRect( QPrinter::Millimeter ).height() / UNIT ); -} - -int HBQGraphicsScene::pageSize() -{ - return m_pageSize; -} -void HBQGraphicsScene::setPageSize( int pageSize ) -{ - m_pageSize = pageSize; - updatePageRect(); - m_paperRect = sceneRect(); - setGeometry( QRect( 10 / UNIT, 10 / UNIT, sceneRect().width() - 10 / UNIT * 2, sceneRect().height() - 10 / UNIT * 2 ) ); -} - -QRectF HBQGraphicsScene::paperRect() -{ - return m_paperRect; -} -void HBQGraphicsScene::setPaperRect( QRectF paperRect ) -{ - m_paperRect = paperRect; -} - -int HBQGraphicsScene::orientation() -{ - return m_orientation; -} -void HBQGraphicsScene::setOrientation( int orientation ) -{ - m_orientation = orientation; - updatePageRect(); - m_paperRect = sceneRect(); - setGeometry( QRect( 10 / UNIT, 10 / UNIT, sceneRect().width() - 10 / UNIT * 2, sceneRect().height() - 10 / UNIT * 2 ) ); -} - -int HBQGraphicsScene::magnetArea() -{ - return m_magnetArea; -} -void HBQGraphicsScene::setMagnetArea( int magnetArea ) -{ - m_magnetArea = magnetArea; -} - -/*----------------------------------------------------------------------*/ -/* Mouse Events */ -/*----------------------------------------------------------------------*/ - -void HBQGraphicsScene::mouseMoveEvent( QGraphicsSceneMouseEvent * mouseEvent ) -{ - HBQGraphicsItem * item = NULL; - - if( itemAt( mouseEvent->scenePos() ) ) - { - item = dynamic_cast< HBQGraphicsItem * >( itemAt( mouseEvent->scenePos() ) ); - } - if( item && mouseEvent->buttons() == Qt::NoButton ) - { - if( item->objectType() == ( QString ) "Page" ) - { - item->setCursor( QCursor( Qt::ArrowCursor ) ); - } - else - { - int pc = item->determineResizeMode( item->mapFromScene( mouseEvent->scenePos() ) ); - - if( RESIZE_MODE_FIXED != pc ) - { - if( ( pc & RESIZE_MODE_TOP && pc & RESIZE_MODE_LEFT ) || ( pc & RESIZE_MODE_BOTTOM && pc & RESIZE_MODE_RIGHT ) ) - item->setCursor( QCursor( Qt::SizeFDiagCursor ) ); - else - if( ( pc & RESIZE_MODE_TOP && pc & RESIZE_MODE_RIGHT ) || ( pc & RESIZE_MODE_BOTTOM && pc & RESIZE_MODE_LEFT ) ) - item->setCursor( QCursor( Qt::SizeBDiagCursor ) ); - else - if( ( pc & RESIZE_MODE_TOP ) || ( pc & RESIZE_MODE_BOTTOM ) ) - item->setCursor( QCursor( Qt::SizeVerCursor ) ); - else - if( ( pc & RESIZE_MODE_RIGHT ) || ( pc & RESIZE_MODE_LEFT ) ) - item->setCursor( QCursor( Qt::SizeHorCursor ) ); - else - if( pc & RESIZE_MODE_FIXEDPOS ) - item->setCursor( QCursor( Qt::ArrowCursor ) ); - } - else - { - if( RESIZE_MODE_FIXED == pc ) - { - item->setCursor( QCursor( Qt::OpenHandCursor ) ); - } - } - } - } - - QGraphicsScene::mouseMoveEvent( mouseEvent ); - - if( mouseEvent->buttons() != Qt::LeftButton ) - return; - - item = 0; - - if( selectedItems().size() ) - { - item = dynamic_cast< HBQGraphicsItem * >( selectedItems()[ 0 ] ); - } - if( item && ! ( mouseEvent->modifiers() & Qt::ControlModifier ) ) - { - drawMagnets( item ); - } -} - -void HBQGraphicsScene::mousePressEvent( QGraphicsSceneMouseEvent * event ) -{ - QPointF mousePos( event->buttonDownScenePos( Qt::LeftButton ).x(), event->buttonDownScenePos( Qt::LeftButton ).y() ); - - movingItem = itemAt( mousePos.x(), mousePos.y() ); - - if( movingItem != 0 && event->button() == Qt::LeftButton ) - mouseOldPos = movingItem->pos(); - - QGraphicsScene::mousePressEvent( event ); - - if( event->buttons() == Qt::LeftButton ) - { - if( ! itemAt( event->scenePos() ) ) - { - emit itemSelected( parent(), event->scenePos() ); - } - else - { - if( itemAt( event->scenePos() ) == m_paperBorder || itemAt( event->scenePos() ) == m_pageBorder ) - { - emit itemSelected( this, event->scenePos() ); - } - } - - HBQGraphicsItem * item = dynamic_cast< HBQGraphicsItem * >( itemAt( event->scenePos() ) ); - if( ! item ) - { - if( block ) - { - PHB_ITEM p1 = hb_itemPutNI( NULL, 21107 ); - hb_vmEvalBlockV( block, 1, p1 ); - hb_itemRelease( p1 ); - } - } - } -} - -void HBQGraphicsScene::mouseReleaseEvent( QGraphicsSceneMouseEvent * event ) -{ - foreach( QGraphicsItem * item, m_gideLines ) - removeItem( item ); - - m_gideLines.clear(); - - if( movingItem != 0 && event->button() == Qt::LeftButton ) - { - if( mouseOldPos != movingItem->pos() ) - { - emit itemMoved( dynamic_cast< QObject * >( movingItem ), mouseOldPos ); - } - movingItem = 0; - } - QGraphicsScene::mouseReleaseEvent( event ); -} - -/*----------------------------------------------------------------------*/ -/* Key Events */ -/*----------------------------------------------------------------------*/ - -void HBQGraphicsScene::keyReleaseEvent( QKeyEvent * keyEvent ) -{ - foreach( QGraphicsItem * item, m_gideLines ) - removeItem( item ); - m_gideLines.clear(); - QGraphicsScene::keyReleaseEvent( keyEvent ); -} - -void HBQGraphicsScene::keyPressEvent( QKeyEvent * keyEvent ) -{ - if( keyEvent->modifiers() == Qt::NoModifier || ( keyEvent->key() != Qt::Key_Left && keyEvent->key() != Qt::Key_Right && - keyEvent->key() != Qt::Key_Up && keyEvent->key() != Qt::Key_Down ) ) - { - QGraphicsScene::keyPressEvent( keyEvent ); - return; - } - - HBQGraphicsItem * itm = 0; - - if( keyEvent->modifiers() & Qt::AltModifier ) - { - foreach( QGraphicsItem * item, selectedItems() ) - { - itm = dynamic_cast< HBQGraphicsItem * >( item ); - if( itm ) - { - QRectF curRect = itm->geometry(); - QRectF rect; - switch( keyEvent->key() ) - { - case Qt::Key_Left: - rect = QRectF( curRect.x() - 5, curRect.y(), curRect.width(), curRect.height() ); - break; - case Qt::Key_Right: - rect = QRectF( curRect.x() + 5, curRect.y(), curRect.width(), curRect.height() ); - break; - case Qt::Key_Up: - rect = QRectF( curRect.x(), curRect.y() - 5, curRect.width(), curRect.height() ); - break; - case Qt::Key_Down: - rect = QRectF( curRect.x(), curRect.y() + 5, curRect.width(), curRect.height() ); - break; - } - itm->setGeometry( rect ); - drawMagnets( itm ); - } - } - } - - if( keyEvent->modifiers() & Qt::ControlModifier ) - { - foreach( QGraphicsItem * item, selectedItems() ) - { - HBQGraphicsItem * itm = dynamic_cast< HBQGraphicsItem * >( item ); - - if( itm ) - { - QRectF curRect = itm->geometry(); - QRectF rect; - switch( keyEvent->key() ) - { - case Qt::Key_Left: - rect = QRectF( curRect.x() - 1, curRect.y(), curRect.width(), curRect.height() ); - break; - case Qt::Key_Right: - rect = QRectF( curRect.x() + 1, curRect.y(), curRect.width(), curRect.height() ); - break; - case Qt::Key_Up: - rect = QRectF( curRect.x(), curRect.y() - 1, curRect.width(), curRect.height() ); - break; - case Qt::Key_Down: - rect = QRectF( curRect.x(), curRect.y() + 1, curRect.width(), curRect.height() ); - break; - } - itm->setGeometry( rect ); - drawMagnets( itm ); - } - } - } - - if( keyEvent->modifiers() & Qt::ShiftModifier ) - { - foreach( QGraphicsItem * item, selectedItems() ) - { - HBQGraphicsItem * itm = dynamic_cast< HBQGraphicsItem * >( item ); - - if( itm ) - { - QRectF curRect = itm->geometry(); - QRectF rect; - switch( keyEvent->key() ) - { - case Qt::Key_Left: - rect = QRectF( curRect.x(), curRect.y(), curRect.width() - 1, curRect.height() ); - break; - case Qt::Key_Right: - rect = QRectF( curRect.x(), curRect.y(), curRect.width() + 1, curRect.height() ); - break; - case Qt::Key_Up: - rect = QRectF( curRect.x(), curRect.y(), curRect.width(), curRect.height() - 1 ); - break; - case Qt::Key_Down: - rect = QRectF( curRect.x(), curRect.y(), curRect.width(), curRect.height() + 1 ); - break; - } - itm->setGeometry( rect ); - drawMagnets( itm ); - } - } - } -} - -/*----------------------------------------------------------------------*/ -/* Drag & Drop */ -/*----------------------------------------------------------------------*/ - -void HBQGraphicsScene::contextMenuEvent( QGraphicsSceneContextMenuEvent * event ) -{ - HBQGraphicsItem * item = dynamic_cast< HBQGraphicsItem * >( itemAt( event->scenePos() ) ); - - if( ! item ) - { - if( block ) - { - PHB_ITEM p1 = hb_itemPutNI( NULL, QEvent::GraphicsSceneContextMenu ); - PHB_ITEM p2 = hbqt_bindGetHbObject( NULL, ( void * ) event, "HB_QGRAPHICSSCENECONTEXTMENUEVENT", NULL, 0 ); - hb_vmEvalBlockV( block, 2, p1, p2 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - } - } - QGraphicsScene::contextMenuEvent( event ); -} - -void HBQGraphicsScene::dragEnterEvent( QGraphicsSceneDragDropEvent * event ) -{ - if( block ) - { - PHB_ITEM p1 = hb_itemPutNI( NULL, ( int ) QEvent::GraphicsSceneDragEnter ); - PHB_ITEM p2 = hbqt_bindGetHbObject( NULL, ( void * ) event, "HB_QGRAPHICSSCENEDRAGDROPEVENT", NULL, 0 ); - hb_vmEvalBlockV( block, 2, p1, p2 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - } - else - { - QGraphicsScene::dragEnterEvent( event ); - } -} -void HBQGraphicsScene::dragLeaveEvent( QGraphicsSceneDragDropEvent * event ) -{ - if( block ) - { - PHB_ITEM p1 = hb_itemPutNI( NULL, ( int ) QEvent::GraphicsSceneDragLeave ); - PHB_ITEM p2 = hbqt_bindGetHbObject( NULL, ( void * ) event, "HB_QGRAPHICSSCENEDRAGDROPEVENT", NULL, 0 ); - hb_vmEvalBlockV( block, 2, p1, p2 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - } - else - { - QGraphicsScene::dragLeaveEvent( event ); - } -} -void HBQGraphicsScene::dragMoveEvent( QGraphicsSceneDragDropEvent * event ) -{ - if( block ) - { - PHB_ITEM p1 = hb_itemPutNI( NULL, ( int ) QEvent::GraphicsSceneDragMove ); - PHB_ITEM p2 = hbqt_bindGetHbObject( NULL, ( void * ) event, "HB_QGRAPHICSSCENEDRAGDROPEVENT", NULL, 0 ); - hb_vmEvalBlockV( block, 2, p1, p2 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - } - else - { - QGraphicsScene::dragMoveEvent( event ); - } -} -void HBQGraphicsScene::dropEvent( QGraphicsSceneDragDropEvent * event ) -{ - if( block ) - { - const QMimeData * mime = event->mimeData(); - - if( mime->hasFormat( ( QString ) "application/x-qabstractitemmodeldatalist" ) ) - { - PHB_ITEM p1 = hb_itemPutNI( NULL, ( int ) QEvent::GraphicsSceneDrop ); - PHB_ITEM p2 = hbqt_bindGetHbObject( NULL, ( void * ) event, "HB_QGRAPHICSSCENEDRAGDROPEVENT", NULL, 0 ); - PHB_ITEM p3 = hb_itemNew( NULL ); - - QTreeWidget * tree = dynamic_cast< QTreeWidget * >( event->source() ); - QTreeWidgetItem * curItem = dynamic_cast< QTreeWidgetItem * >( tree->currentItem() ); - if( tree->indexOfTopLevelItem( curItem ) == -1 ) - { - QTreeWidgetItem * parent = dynamic_cast< QTreeWidgetItem * >( curItem->parent() ); - - if( curItem ) - { - hb_arrayNew( p3, 3 ); - - hb_arraySetC( p3, 1, tree->objectName().toLatin1().data() ); - hb_arraySetC( p3, 2, parent->text( 0 ).toLatin1().data() ); - hb_arraySetC( p3, 3, curItem->text( 0 ).toLatin1().data() ); - - hb_vmEvalBlockV( block, 3, p1, p2, p3 ); - } - } - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - hb_itemRelease( p3 ); - } - else - { - PHB_ITEM p1 = hb_itemPutNI( NULL, ( int ) QEvent::GraphicsSceneDrop ); - PHB_ITEM p2 = hbqt_bindGetHbObject( NULL, ( void * ) event, "HB_QGRAPHICSSCENEDRAGDROPEVENT", NULL, 0 ); - hb_vmEvalBlockV( block, 2, p1, p2 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - } - } - QGraphicsScene::dropEvent( event ); -} - -/*----------------------------------------------------------------------*/ -/* General */ -/*----------------------------------------------------------------------*/ - -bool HBQGraphicsScene::showGrid() -{ - return m_showGrid; -} -void HBQGraphicsScene::setShowGrid( bool showGrid ) -{ - m_showGrid = showGrid; - drawBorder(); -} -void HBQGraphicsScene::drawBorder() -{ - QPen p; - - delete m_paperBorder; - delete m_pageBorder; - - m_paperBorder = addRect( m_paperRect ); - - p.setStyle( Qt::SolidLine ); - p.setColor( QColor( 0, 0, 255 ) ); - p.setWidth( 4 ); - m_pageBorder = addRect( geometry() ); - m_pageBorder->setPen( p ); - - if( m_showGrid ) - { - QPen p, p1; - p.setColor( QColor( 225, 225, 225 ) ); - p.setWidth( 1 ); - p.setStyle( Qt::DotLine ); - - p1.setColor( QColor( 210, 210, 210 ) ); - p1.setWidth( 1 ); - p1.setStyle( Qt::DotLine ); - - if( views().size() ) - { - p.setWidth( 1 + 1 / views()[ 0 ]->transform().m11() ); - } - for( int i = 0, n = 0; i < width(); i += ( 5.0 / UNIT ), n++ ) - { - QGraphicsLineItem * line = new QGraphicsLineItem( m_paperBorder ); - line->setPen( n % 2 == 0 ? p : p1 ); - line->setLine( i, 0, i, height() ); - } - for( int i = 0, n = 0; i < height(); i += ( 5.0 / UNIT ), n++ ) - { - QGraphicsLineItem * line = new QGraphicsLineItem( m_paperBorder ); - line->setPen( n % 2 == 0 ? p : p1 ); - line->setLine( 0, i, width(), i ); - } - } - m_pageBorder->setZValue( -1 ); - m_paperBorder->setZValue( -2 ); -} - -/*----------------------------------------------------------------------*/ -/* Magnets */ -/*----------------------------------------------------------------------*/ - -void HBQGraphicsScene::setLeftMagnet( bool magneted ) -{ - if( magneted ) - m_magnets |= Left; - else - { - int a = 0xffff; - a ^= Left; - m_magnets &= a; - } -} -void HBQGraphicsScene::setRightMagnet( bool magneted ) -{ - if( magneted ) - m_magnets |= Right; - else - { - int a = 0xffff; - a ^= Right; - m_magnets &= a; - } -} -void HBQGraphicsScene::setTopMagnet( bool magneted ) -{ - if( magneted ) - m_magnets |= Top; - else - { - int a = 0xffff; - a ^= Top; - m_magnets &= a; - } -} -void HBQGraphicsScene::setBottomMagnet( bool magneted ) -{ - if( magneted ) - m_magnets |= Bottom; - else - { - int a = 0xffff; - a ^= Bottom; - m_magnets &= a; - } -} -void HBQGraphicsScene::setHorizontalMagnet( bool magneted ) -{ - if( magneted ) - m_magnets |= Horizontal; - else - { - int a = 0xffff; - a ^= Horizontal; - m_magnets &= a; - } -} -void HBQGraphicsScene::setVerticalMagnet( bool magneted ) -{ - if( magneted ) - m_magnets |= Vertical; - else - { - int a = 0xffff; - a ^= Vertical; - m_magnets &= a; - } -} - -void HBQGraphicsScene::drawMagnets( HBQGraphicsItem * item ) -{ - foreach( QGraphicsItem * it, m_gideLines ) - removeItem( it ); - - m_gideLines.clear(); - - if( ! m_magnets ) - return; - - QPen p; - p.setWidth( 3 ); - p.setColor( Qt::cyan ); - p.setStyle( Qt::DotLine ); - - foreach( QGraphicsItem * it, items() ) - { - HBQGraphicsItem * ite = dynamic_cast< HBQGraphicsItem * >( it ); - - if( ! ite || ite == item ) - continue; - - if( ( m_magnets & Left ) && abs( item->mapToScene( QPointF( 0, 0 ) ).x() - ite->mapToScene( QPointF( 0, 0 ) ).x() ) <= m_magnetArea ) - { - item->setGeometry( QRectF( ite->mapToItem( item->parentItem(), QPointF( 0, 0 ) ).x(), item->geometry().y(), item->geometry().width(), item->geometry().height() ) ); - - if( item->mapToScene( 0, 0 ).y() < ite->mapToScene( 0, ite->geometry().height() ).y() ) - m_gideLines.push_back( addLine( item->mapToScene( 0, 0 ).x(), item->mapToScene( 0, 0 ).y(), item->mapToScene( 0, 0 ).x(), ite->mapToScene( 0, ite->geometry().height() ).y(), p ) ); - else - m_gideLines.push_back( addLine( item->mapToScene( 0, 0 ).x(), ite->mapToScene( 0, 0 ).y(), item->mapToScene( 0, 0 ).x(), item->mapToScene( 0, item->geometry().height() ).y(), p ) ); - } - - if( ( m_magnets & Left ) && abs( item->mapToScene( QPointF( 0, 0 ) ).x() - ite->mapToScene( QPointF( ite->geometry().width(), 0 ) ).x() ) <= m_magnetArea ) - { - item->setGeometry( QRectF( ite->mapToItem( item->parentItem(), QPointF( ite->geometry().width(), 0 ) ).x(), item->geometry().y(), item->geometry().width(), item->geometry().height() ) ); - - if( item->mapToScene( 0, 0 ).y() < ite->mapToScene( 0, ite->geometry().height() ).y() ) - m_gideLines.push_back( addLine( item->mapToScene( 0, 0 ).x(), item->mapToScene( 0, 0 ).y(), item->mapToScene( 0, 0 ).x(), ite->mapToScene( 0, ite->geometry().height() ).y(), p ) ); - else - m_gideLines.push_back( addLine( item->mapToScene( 0, 0 ).x(), ite->mapToScene( 0, 0 ).y(), item->mapToScene( 0, 0 ).x(), item->mapToScene( 0, item->geometry().height() ).y(), p ) ); - } - - if( ( m_magnets & Right ) && abs( item->mapToScene( item->geometry().width(), 0 ).x() - ite->mapToScene( 0, 0 ).x() ) <= m_magnetArea ) - { - item->setGeometry( QRectF( ite->mapToItem( item->parentItem(), 0, 0 ).x() - item->geometry().width(), item->geometry().y(), item->geometry().width(), item->geometry().height() ) ); - - if( item->mapToScene( item->geometry().width(), 0 ).y() < ite->mapToScene( ite->geometry().width(), ite->geometry().height() ).y() ) - m_gideLines.push_back( addLine( item->mapToScene( item->geometry().width(), 0 ).x(), item->mapToScene( item->geometry().width(), 0 ).y(), item->mapToScene( item->geometry().width(), 0 ).x(), ite->mapToScene( ite->geometry().width(), ite->geometry().height() ).y(), p ) ); - else - m_gideLines.push_back( addLine( item->mapToScene( item->geometry().width(), 0 ).x(), ite->mapToScene( ite->geometry().width(), 0 ).y(), item->mapToScene( item->geometry().width(), 0 ).x(), item->mapToScene( item->geometry().width(), item->geometry().height() ).y(), p ) ); - } - - if( ( m_magnets & Right ) && abs( item->mapToScene( item->geometry().width(), 0 ).x() - ite->mapToScene( ite->geometry().width(), 0 ).x() ) <= m_magnetArea ) - { - item->setGeometry( QRectF( ite->mapToItem( item->parentItem(), ite->geometry().width(), 0 ).x() - item->geometry().width(), item->geometry().y(), item->geometry().width(), item->geometry().height() ) ); - - if( item->mapToScene( item->geometry().width(), 0 ).y() < ite->mapToScene( ite->geometry().width(), ite->geometry().height() ).y() ) - m_gideLines.push_back( addLine( item->mapToScene( item->geometry().width(), 0 ).x(), item->mapToScene( item->geometry().width(), 0 ).y(), ite->mapToScene( ite->geometry().width(), 0 ).x(), ite->mapToScene( ite->geometry().width(), ite->geometry().height() ).y(), p ) ); - else - m_gideLines.push_back( addLine( ite->mapToScene( ite->geometry().width(), 0 ).x(), ite->mapToScene( ite->geometry().width(), 0 ).y(), item->mapToScene( item->geometry().width(), 0 ).x(), item->mapToScene( item->geometry().width(), item->geometry().height() ).y(), p ) ); - } - - if( ( m_magnets & Top ) && abs( item->mapToScene( QPointF( 0, 0 ) ).y() - ite->mapToScene( QPointF( 0, 0 ) ).y() ) <= m_magnetArea ) - { - item->setGeometry( QRectF( item->geometry().x(), ite->mapToItem( item->parentItem(), QPointF( 0, 0 ) ).y(), item->geometry().width(), item->geometry().height() ) ); - m_gideLines.push_back( addLine( item->mapToScene( 0, 0 ).x(), item->mapToScene( 0, 0 ).y(), ite->mapToScene( 0, 0 ).x(), item->mapToScene( 0, 0 ).y(), p ) ); - } - - if( ( m_magnets & Top ) && abs( item->mapToScene( QPointF( 0, 0 ) ).y() - ite->mapToScene( QPointF( 0, ite->geometry().height() ) ).y() ) <= m_magnetArea ) - { - item->setGeometry( QRectF( item->geometry().x(), ite->mapToItem( item->parentItem(), QPointF( 0, ite->geometry().height() ) ).y(), item->geometry().width(), item->geometry().height() ) ); - m_gideLines.push_back( addLine( item->mapToScene( 0, 0 ).x(), item->mapToScene( 0, 0 ).y(), ite->mapToScene( 0, 0 ).x(), item->mapToScene( 0, 0 ).y(), p ) ); - } - - if( ( m_magnets & Bottom ) && abs( item->mapToScene( QPointF( 0, item->geometry().height() ) ).y() - ite->mapToScene( QPointF( 0, ite->geometry().height() ) ).y() ) <= m_magnetArea ) - { - item->setGeometry( QRectF( item->geometry().x(), ite->mapToItem( item->parentItem(), QPointF( 0, ite->geometry().height() ) ).y() - item->geometry().height(), item->geometry().width(), item->geometry().height() ) ); - m_gideLines.push_back( addLine( item->mapToScene( 0, 0 ).x(), item->mapToScene( 0, item->geometry().height() ).y(), ite->mapToScene( 0, 0 ).x(), item->mapToScene( 0, item->geometry().height() ).y(), p ) ); - } - - if( ( m_magnets & Bottom ) && abs( item->mapToScene( QPointF( 0, item->geometry().height() ) ).y() - ite->mapToScene( QPointF( 0, 0 ) ).y() ) <= m_magnetArea ) - { - item->setGeometry( QRectF( item->geometry().x(), ite->mapToItem( item->parentItem(), QPointF( 0, 0 ) ).y() - item->geometry().height(), item->geometry().width(), item->geometry().height() ) ); - m_gideLines.push_back( addLine( item->mapToScene( 0, 0 ).x(), item->mapToScene( 0, item->geometry().height() ).y(), ite->mapToScene( 0, 0 ).x(), item->mapToScene( 0, item->geometry().height() ).y(), p ) ); - } - - if( ( m_magnets & Horizontal ) && abs( item->mapToScene( QPointF( 0, item->geometry().height() / 2 ) ).y() - ite->mapToScene( QPointF( 0, ite->geometry().height() / 2 ) ).y() ) <= m_magnetArea ) - { - item->setGeometry( QRectF( item->geometry().x(), ite->mapToItem( item->parentItem(), QPointF( 0, ite->geometry().height() / 2 ) ).y() - item->geometry().height() / 2, item->geometry().width(), item->geometry().height() ) ); - m_gideLines.push_back( addLine( item->mapToScene( 0, 0 ).x(), item->mapToScene( 0, item->geometry().height() / 2 ).y(), ite->mapToScene( 0, 0 ).x(), item->mapToScene( 0, item->geometry().height() / 2 ).y(), p ) ); - } - - if( ( m_magnets & Vertical ) && abs( item->mapToScene( QPointF( item->geometry().width() / 2, 0 ) ).x() - ite->mapToScene( QPointF( ite->geometry().width() / 2, 0 ) ).x() ) <= m_magnetArea ) - { - item->setGeometry( QRectF( ite->mapToItem( item->parentItem(), QPointF( ite->geometry().width() / 2, 0 ) ).x() - item->geometry().width() / 2, item->geometry().y(), item->geometry().width(), item->geometry().height() ) ); - m_gideLines.push_back( addLine( item->mapToScene( item->geometry().width() / 2, 0 ).x(), item->mapToScene( 0, 0 ).y(), item->mapToScene( item->geometry().width() / 2, 0 ).x(), ite->mapToScene( 0, ite->geometry().height() ).y(), p ) ); - } - } -} -/*----------------------------------------------------------------------*/ - -#endif diff --git a/harbour/contrib/hbqt/qtgui/hbqt_hbqgraphicsscene.h b/harbour/contrib/hbqt/qtgui/hbqt_hbqgraphicsscene.h deleted file mode 100644 index c5482cc297..0000000000 --- a/harbour/contrib/hbqt/qtgui/hbqt_hbqgraphicsscene.h +++ /dev/null @@ -1,160 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#ifndef HBQT_HBQGRAPHICSSCENE_H -#define HBQT_HBQGRAPHICSSCENE_H - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "hbqt_hbqgraphicsitem.h" - -#define RESIZE_MODE_FIXED 0 -#define RESIZE_MODE_LEFT 1 -#define RESIZE_MODE_TOP 2 -#define RESIZE_MODE_RIGHT 4 -#define RESIZE_MODE_BOTTOM 8 -#define RESIZE_MODE_FIXEDPOS 16 - -#define hbqt_screen_heightMM (((double)QDesktopWidget().screen()->height() / (double)QDesktopWidget().screen()->physicalDpiY() )*25.4) -#define hbqt_screen_widthMM (((double)QDesktopWidget().screen()->width() / (double)QDesktopWidget().screen()->physicalDpiX() )*25.4) - -class HBQGraphicsScene : public QGraphicsScene -{ - Q_OBJECT - -public: - enum Magnet - { - Left = 1, - Right = 2, - Top = 4, - Bottom = 8, - Vertical = 16, - Horizontal = 32 - }; - -public: - HBQGraphicsScene( QObject * parent = 0 ); - ~HBQGraphicsScene(); - - PHB_ITEM block; - - void hbSetBlock( PHB_ITEM b ); - - virtual int pageSize(); - virtual void setPageSize( int pageSize ); - QRectF paperRect(); - void setPaperRect( QRectF paperRect ); - virtual int orientation(); - virtual void setOrientation( int orientation ); - virtual QRectF geometry(); - virtual void setGeometry( QRectF rect ); - int magnetArea(); - void setMagnetArea( int magnetArea ); - virtual bool showGrid(); - virtual void setShowGrid( bool showGrid ); - -public slots: - virtual void setLeftMagnet( bool magneted ); - virtual void setRightMagnet( bool magneted ); - virtual void setTopMagnet( bool magneted ); - virtual void setBottomMagnet( bool magneted ); - virtual void setHorizontalMagnet( bool magneted ); - virtual void setVerticalMagnet( bool magneted ); - -protected: - virtual void contextMenuEvent( QGraphicsSceneContextMenuEvent * event ); - virtual void mouseMoveEvent( QGraphicsSceneMouseEvent * mouseEvent ); - virtual void mousePressEvent( QGraphicsSceneMouseEvent *event ); - virtual void mouseReleaseEvent( QGraphicsSceneMouseEvent * mouseEvent ); - virtual void keyPressEvent( QKeyEvent * keyEvent ); - virtual void keyReleaseEvent( QKeyEvent * keyEvent ); - - virtual void dragEnterEvent( QGraphicsSceneDragDropEvent * event ); - virtual void dragLeaveEvent( QGraphicsSceneDragDropEvent * event ); - virtual void dragMoveEvent( QGraphicsSceneDragDropEvent * event ); - virtual void dropEvent( QGraphicsSceneDragDropEvent * event ); - - virtual void updatePageRect(); - -signals: - void itemSelected( QObject * thisObject, QPointF cursorPos ); - void geometryChanged( QRectF newGeometry ); - void itemMoved( QObject*, QPointF ); - -private: - void drawMagnets( HBQGraphicsItem * item ); - void drawBorder(); - -private: - int m_pageSize; - int m_orientation; - QRectF m_geometry, m_paperRect; - int m_magnets, m_magnetArea; - QList< QGraphicsItem * > m_gideLines; - QGraphicsRectItem * m_paperBorder; - QGraphicsRectItem * m_pageBorder; - bool m_showGrid; - QGraphicsItem * movingItem; - QPointF mouseOldPos; -}; - -#endif - - diff --git a/harbour/contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp b/harbour/contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp deleted file mode 100644 index 603ffbd4d4..0000000000 --- a/harbour/contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp +++ /dev/null @@ -1,3033 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour-Qt wrapper generator. - * - * Copyright 2010 Pritpal Bedi - * Copyright 2009 Gancov Kostya - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/* - * The code below is puled from TextEdit.cpp of QWriter by Gancov Kotsya - * - * and adopted for Harbour's hbIDE interface. The code has been intensively - * formatted and changed to suit hbIDE and Harbour's wrappers for Qt. - * The special hilight for this adoption is , current line - * coloring and bookmarks. - * - * So a big thank you. - * - * Pritpal Bedi -*/ -/*----------------------------------------------------------------------*/ - -#include "hbqt.h" - -#include "hbapiitm.h" -#include "hbvm.h" - -#if QT_VERSION >= 0x040500 - -#include "hbqt_hbqplaintextedit.h" - -HB_EXTERN_BEGIN -extern void * hbqt_gcAllocate_QKeyEvent( void * pObj, bool bNew ); -HB_EXTERN_END - -#include - -#define selectionMode_none 0 -#define selectionMode_stream 1 -#define selectionMode_column 2 -#define selectionMode_line 3 - -#define selectionDisplay_none 0 -#define selectionDisplay_qt 1 -#define selectionDisplay_ide 2 - -#define mouseMode_none 0 -#define mouseMode_select 1 -#define mouseMode_drag 2 - -/*----------------------------------------------------------------------*/ - -HBQPlainTextEdit::HBQPlainTextEdit( QWidget * parent ) : QPlainTextEdit( parent ) -{ - m_currentLineColor.setNamedColor( "#e8e8ff" ); - m_lineAreaBkColor.setNamedColor( "#e4e4e4" ); - m_horzRulerBkColor.setNamedColor( "whitesmoke" ); - m_matchBracesAll = false; - - spaces = 3; - spacesTab = ""; - styleHightlighter = "prg"; - numberBlock = true; - lineNumberArea = new LineNumberArea( this ); - isTipActive = false; - columnBegins = -1; - columnEnds = -1; - rowBegins = -1; - rowEnds = -1; - selectionMode = selectionMode_stream; - selectionDisplay = selectionDisplay_none; - isColumnSelectionON = false; - isLineSelectionON = false; - horzRulerHeight = 20; - horzRuler = new HorzRuler( this ); - caretState = 0; - isSelectionByApplication = false; - hitTestRow = -1; - hitTestColumn = -1; - highlight = QRect( -1, -1, -1, -1 ); - isSelectionPersistent = false; - isShiftPressed = false; - isAliasCompleter = false; - isCodeCompletionActive = true; - isCompletionTipsActive = true; - isInDrag = false; - dragStartPosition = QPoint(); - clickPos = QPoint(); - iClicks = 0; - mouseMode = mouseMode_none; - m_currentBlockNumber = -1; - m_braceHiliteColor = QColor( Qt::yellow ).lighter( 160 ); - - connect( this, SIGNAL( blockCountChanged( int ) ) , this, SLOT( hbUpdateLineNumberAreaWidth( int ) ) ); - connect( this, SIGNAL( updateRequest( const QRect &, int ) ), this, SLOT( hbUpdateLineNumberArea( const QRect &, int ) ) ); - - hbUpdateLineNumberAreaWidth( 0 ); - - connect( this, SIGNAL( cursorPositionChanged() ) , this, SLOT( hbSlotCursorPositionChanged() ) ); - connect( this, SIGNAL( updateRequest( const QRect &, int ) ), this, SLOT( hbUpdateHorzRuler( const QRect &, int ) ) ); - - horzRuler->setFrameShape( QFrame::Panel ); - horzRuler->setFrameShadow( QFrame::Sunken ); - - QPalette pl( QPlainTextEdit::palette() ); - m_selectionColor = pl.color( QPalette::Highlight ); - - setContentsMargins( 0,0,0,0 ); - - QTextDocument * doc = document(); - doc->setDocumentMargin( 0 ); - - highlighter = NULL; - block = NULL; - - setAcceptDrops( true ); -} - -/*----------------------------------------------------------------------*/ - -HBQPlainTextEdit::~HBQPlainTextEdit() -{ - #if 0 - if( timer ) - timer->stop(); - #endif - - delete lineNumberArea; - delete horzRuler; - - if( block ) - hb_itemRelease( block ); -} - -/*----------------------------------------------------------------------*/ - -int HBQPlainTextEdit::hbFirstVisibleColumn() -{ - return ( horizontalScrollBar()->value() / fontMetrics().averageCharWidth() ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbGetViewportInfo() -{ - if( block ) - { - PHB_ITEM p1 = hb_itemPutNI( NULL, 21017 ); - PHB_ITEM p2 = hb_itemNew( NULL ); - - hb_arrayNew( p2, 6 ); - - int t = firstVisibleBlock().blockNumber(); - int c = hbFirstVisibleColumn(); - int rows = viewport()->height() / fontMetrics().height(); - int cols = viewport()->width() / fontMetrics().averageCharWidth(); - - hb_arraySetNI( p2, 1, t ); - hb_arraySetNI( p2, 2, c ); - hb_arraySetNI( p2, 3, rows ); - hb_arraySetNI( p2, 4, cols ); - hb_arraySetNI( p2, 5, textCursor().blockNumber() ); - hb_arraySetNI( p2, 6, textCursor().columnNumber() ); - - hb_vmEvalBlockV( block, 2, p1, p2 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbShowPrototype( const QString & tip, int rows, int cols ) -{ - Q_UNUSED( rows ); - Q_UNUSED( cols ); - - if( tip == ( QString ) "" ) - { - QToolTip::hideText(); - return; - } - QToolTip::showText( viewport()->mapToGlobal( QPoint( cursorRect().x(), cursorRect().y() ) ), tip ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbSetEventBlock( PHB_ITEM pBlock ) -{ - if( pBlock ) - { - block = hb_itemNew( pBlock ); - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbApplyKey( int key, Qt::KeyboardModifiers modifiers, const QString & txt ) -{ - QKeyEvent * ev = new QKeyEvent( QEvent::KeyPress, key, modifiers, txt ); - QPlainTextEdit::keyPressEvent( ev ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbRefresh() -{ - repaint(); -} - -/*----------------------------------------------------------------------*/ - -bool HBQPlainTextEdit::event( QEvent *event ) -{ - if( event->type() == QEvent::ToolTip ) - { - event->ignore(); - #if 0 - QHelpEvent * helpEvent = static_cast( event ); - - if( helpEvent && isTipActive ) - { - event->ignore(); - } - #endif - return false;//true; - } - return QPlainTextEdit::event( event ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbHighlightArea( int top, int left, int bottom, int right, int mode ) -{ - HB_SYMBOL_UNUSED( mode ); - - highlight.setTop( top ); - highlight.setLeft( left ); - highlight.setBottom( bottom ); - highlight.setRight( right ); - - repaint(); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbSetSelectionColor( const QColor & color ) -{ - m_selectionColor = color; - - QPalette pl( QPlainTextEdit::palette() ); - pl.setColor( QPalette::Highlight, m_selectionColor ); - pl.setColor( QPalette::HighlightedText, QColor( 0,0,0 ) ); - setPalette( pl ); -} - -/*----------------------------------------------------------------------*/ - -static bool isNavableKey( int k ) -{ - return ( k == Qt::Key_Right || k == Qt::Key_Left || k == Qt::Key_Up || k == Qt::Key_Down || - k == Qt::Key_Home || k == Qt::Key_End || k == Qt::Key_PageUp || k == Qt::Key_PageDown ); -} - -/*----------------------------------------------------------------------*/ -/* Selection Manipulation */ -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbTogglePersistentSelection() -{ - isSelectionPersistent = ! isSelectionPersistent; -} - -/*----------------------------------------------------------------------*/ - -bool HBQPlainTextEdit::isCursorInSelection() -{ - int cb = columnBegins <= columnEnds ? columnBegins : columnEnds; - int ce = columnBegins <= columnEnds ? columnEnds : columnBegins; - int rb = rowBegins <= rowEnds ? rowBegins : rowEnds; - int re = rowBegins <= rowEnds ? rowEnds : rowBegins; - - QTextCursor c = textCursor(); - int col = c.columnNumber(); - int row = c.blockNumber(); - - if( selectionMode == selectionMode_column ) - { - HB_TRACE( HB_TR_DEBUG, ( "isCursorInSelection( Modif %i %i %i %i RC %i %i Cur %i %i", rb, cb, re, ce, rowBegins, columnBegins, row, col ) ); - return( col >= cb && col <= ce && row >= rb && row <= re ); - } - else - { - if( row == rb ) - { - return( col >= cb ); - } - else if( row == re ) - { - return( col <= ce ); - } - else if( row >= rb && row <= re ) - { - return( true ); - } - } - return( false ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbPostSelectionInfo() -{ - if( block ) - { - PHB_ITEM p1 = hb_itemPutNI( NULL, 21000 ); - PHB_ITEM p2 = hb_itemNew( NULL ); - - hb_arrayNew( p2, 7 ); - - hb_arraySetNI( p2, 1, rowBegins ); - hb_arraySetNI( p2, 2, columnBegins ); - hb_arraySetNI( p2, 3, rowEnds ); - hb_arraySetNI( p2, 4, columnEnds ); - hb_arraySetNI( p2, 5, selectionMode ); - hb_arraySetNI( p2, 6, 0 ); - hb_arraySetNI( p2, 7, 0 ); - - hb_vmEvalBlockV( block, 2, p1, p2 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - } - emit selectionChanged(); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbClearSelection() -{ - rowBegins = -1; - rowEnds = -1; - columnBegins = -1; - columnEnds = -1; - hbPostSelectionInfo(); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbSelectAll() -{ - rowBegins = 0; - rowEnds = document()->blockCount(); - columnBegins = 0; - columnEnds = 0; - hbPostSelectionInfo(); - repaint(); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbSetSelectionInfo( PHB_ITEM selectionInfo ) -{ - rowBegins = hb_arrayGetNI( selectionInfo, 1 ); - columnBegins = hb_arrayGetNI( selectionInfo, 2 ); - rowEnds = hb_arrayGetNI( selectionInfo, 3 ); - columnEnds = hb_arrayGetNI( selectionInfo, 4 ); - selectionMode = hb_arrayGetNI( selectionInfo, 5 ); - hbPostSelectionInfo(); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbSetSelectionMode( int mode, bool byApplication ) -{ - if( byApplication ) - { - if( mode == 0 ) - { - isSelectionByApplication = false; - isStreamSelectionON = false; - isColumnSelectionON = false; - isLineSelectionON = false; - hbClearSelection(); - repaint(); - return; - } - - isSelectionByApplication = ! isSelectionByApplication; - - if( ! isSelectionByApplication ) - { - isStreamSelectionON = false; - isColumnSelectionON = false; - isLineSelectionON = false; - - if( mode == selectionMode_column ) - { - QTextCursor c( textCursor() ); - c.movePosition( QTextCursor::EndOfLine ); - if( c.columnNumber() > columnEnds ) - { - c.movePosition( QTextCursor::StartOfLine ); - c.movePosition( QTextCursor::Right, QTextCursor::MoveAnchor, columnEnds ); - } - setTextCursor( c ); - } - } - else - { - switch( mode ) - { - case selectionMode_stream: - { - selectionMode = selectionMode_stream; - isStreamSelectionON = true; - isColumnSelectionON = false; - isLineSelectionON = false; - - QTextCursor c( textCursor() ); - - rowBegins = c.blockNumber(); - rowEnds = rowBegins; - columnBegins = c.columnNumber(); - columnEnds = columnBegins; - break; - } - case selectionMode_column: - { - selectionMode = selectionMode_column; - isStreamSelectionON = false; - isColumnSelectionON = true; - isLineSelectionON = false; - - QTextCursor c( textCursor() ); - - rowBegins = c.blockNumber(); - rowEnds = rowBegins; - columnBegins = c.columnNumber(); - columnEnds = columnBegins; - - break; - } - case selectionMode_line: - { - selectionMode = selectionMode_line; - isStreamSelectionON = false; - isColumnSelectionON = false; - isLineSelectionON = true; - - QTextCursor c( textCursor() ); - - rowBegins = c.blockNumber(); - rowEnds = rowBegins; - columnBegins = 0; - columnEnds = 0; - break; - } - } - } - } - else - { - if( ! isSelectionByApplication ) - { - switch( mode ) - { - case selectionMode_stream: - { - if( columnBegins >= 0 ) - { - hbToStream(); - } - selectionMode = selectionMode_stream; - isColumnSelectionON = false; - isLineSelectionON = false; - break; - } - case selectionMode_column: - { - selectionMode = selectionMode_column; - isColumnSelectionON = true; - isLineSelectionON = false; - break; - } - } - } - } - hbPostSelectionInfo(); - repaint(); /* Only once when mode is changed from stream to column , so no issues */ -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbToStream() -{ - int rb = rowBegins <= rowEnds ? rowBegins : rowEnds; - int re = rowBegins <= rowEnds ? rowEnds : rowBegins; - - if( selectionMode == selectionMode_line ) - { - QTextCursor c = textCursor(); - - c.movePosition( QTextCursor::Start ); - c.movePosition( QTextCursor::Down , QTextCursor::MoveAnchor, rb ); - c.movePosition( QTextCursor::Right , QTextCursor::MoveAnchor, columnBegins ); - c.movePosition( QTextCursor::Down , QTextCursor::MoveAnchor, re - rb ); - c.movePosition( QTextCursor::EndOfLine, QTextCursor::MoveAnchor ); - int cce = c.columnNumber(); - if( cce > columnEnds ) - { - c.movePosition( QTextCursor::StartOfLine, QTextCursor::MoveAnchor ); - c.movePosition( QTextCursor::Right , QTextCursor::MoveAnchor, columnEnds ); - } - else - { - columnEnds = cce; - } - columnBegins = 0; rowBegins = rb; rowEnds = re; - setTextCursor( c ); - } - else if( selectionMode == selectionMode_column ) - { - QTextCursor c = textCursor(); - - c.movePosition( QTextCursor::Start ); - c.movePosition( QTextCursor::Down , QTextCursor::MoveAnchor, re ); - c.movePosition( QTextCursor::EndOfLine, QTextCursor::MoveAnchor ); - if( c.columnNumber() > columnEnds ) - { - c.movePosition( QTextCursor::StartOfLine, QTextCursor::MoveAnchor ); - c.movePosition( QTextCursor::Right , QTextCursor::MoveAnchor, columnEnds ); - } - columnEnds = c.columnNumber(); rowBegins = rb; rowEnds = re; - setTextCursor( c ); - } - else if( selectionMode == selectionMode_stream ) - { - QTextCursor c = textCursor(); - rowBegins = c.blockNumber(); - rowEnds = rowBegins; - columnBegins = c.columnNumber(); - columnEnds = columnBegins; - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbHitTest( const QPoint & pt ) -{ - QTextCursor ct = cursorForPosition( QPoint( 2,2 ) ); - int t = ct.blockNumber(); - int c = ct.columnNumber(); - - hitTestRow = t + ( pt.y() / fontMetrics().height() ); - hitTestColumn = c + ( pt.x() / fontMetrics().averageCharWidth() ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbCut( int k ) -{ - if( block ) - { - PHB_ITEM p1 = hb_itemPutNI( NULL, 21014 ); - PHB_ITEM p2 = hb_itemPutNI( NULL, k ); - hb_vmEvalBlockV( block, 2, p1, p2 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - } - else - { - QPlainTextEdit::cut(); - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbCopy() -{ - if( block ) - { - PHB_ITEM p1 = hb_itemPutNI( NULL, 21011 ); - hb_vmEvalBlockV( block, 1, p1 ); - hb_itemRelease( p1 ); - } - else - { - QPlainTextEdit::copy(); - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbPaste() -{ - if( block ) - { - PHB_ITEM p1 = hb_itemPutNI( NULL, 21012 ); - hb_vmEvalBlockV( block, 1, p1 ); - hb_itemRelease( p1 ); - - if( ! isSelectionPersistent ) - { - hbClearSelection(); - } - } - else - { - QPlainTextEdit::paste(); - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::dropEvent( QDropEvent *event ) -{ - if( event->dropAction() == Qt::CopyAction || event->dropAction() == Qt::MoveAction ) - { - if( event->source() == this ) - { - QPoint p( event->pos() ); - - event->ignore(); - - QTextCursor c = cursorForPosition( p ); - int row = c.blockNumber(); - int col = c.columnNumber(); - - if( ( selectionMode == selectionMode_stream || selectionMode == selectionMode_line ) && row >= rowBegins && row <= rowEnds ) - { - setTextCursor( c ); - mouseMode = mouseMode_select; - } - else if( selectionMode == selectionMode_column && row >= rowBegins && row <= rowEnds && col >= columnBegins && col <= columnEnds ) - { - setTextCursor( c ); - mouseMode = mouseMode_select; - } - else - { - mouseMode = mouseMode_none; - hbCopy(); - if( event->dropAction() != Qt::CopyAction ) - { - int rBgn = rowBegins; - int rEnd = rowEnds; - int cBgn = columnBegins; - int cEnd = columnEnds; - int linesBefore = blockCount(); - hbCut( Qt::Key_Delete ); - int linesAfter = blockCount(); - QTextCursor cc( textCursor() ); - cc.movePosition( QTextCursor::Start ); - - if( row == rBgn ) /* Only in case of column selection */ - { - cc.movePosition( QTextCursor::Down, QTextCursor::MoveAnchor, row ); - if( col > cEnd ) - { - cc.movePosition( QTextCursor::Right, QTextCursor::MoveAnchor, col - ( cEnd - cBgn ) ); - } - else if( col < cBgn ) - { - cc.movePosition( QTextCursor::Right, QTextCursor::MoveAnchor, col ); - } - } - else - { - if( rBgn > row ) - { - cc.movePosition( QTextCursor::Down, QTextCursor::MoveAnchor, row ); - } - else if( row > rEnd ) - { - cc.movePosition( QTextCursor::Down, QTextCursor::MoveAnchor, row - ( linesBefore - linesAfter ) ); - } - cc.movePosition( QTextCursor::Right, QTextCursor::MoveAnchor, col ); - } - setTextCursor( cc ); - } - else - { - setTextCursor( c ); - } - hbClearSelection(); - hbPaste(); - hbPostSelectionInfo(); - } - /* It is a hack. Without this editing caret is lost ??? */ - QMimeData * data = new QMimeData(); - QDropEvent * ev = new QDropEvent( p, Qt::CopyAction, data, 0, 0 ); - QPlainTextEdit::dropEvent( ev ); - - return; - } - } - QPlainTextEdit::dropEvent( event ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::dragMoveEvent( QDragMoveEvent *event ) -{ - if( event->mimeData()->hasText() ) - { - if( event->source() == this ) - { - event->accept(); - } - else - { - event->acceptProposedAction(); - } - } - else - { - event->ignore(); - } - QPlainTextEdit::dragMoveEvent( event ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::dragEnterEvent( QDragEnterEvent *event ) -{ - if( event->mimeData()->hasText() ) - { - if( event->source() == this ) - { - event->accept(); - } - else - { - event->acceptProposedAction(); - } - } - else - { - event->ignore(); - } - QPlainTextEdit::dragEnterEvent( event ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::mouseDoubleClickEvent( QMouseEvent *event ) -{ - QPlainTextEdit::mouseDoubleClickEvent( event ); - - QTextCursor c( textCursor() ); - if( c.hasSelection() ) - { - rowBegins = c.blockNumber(); - rowEnds = rowBegins; - columnEnds = c.columnNumber(); - columnBegins = columnEnds - ( c.selectionEnd() - c.selectionStart() ); - selectionMode = selectionMode_stream; - mouseMode = mouseMode_select; - c.clearSelection(); - setTextCursor( c ); - hbPostSelectionInfo(); - clickPos = event->pos(); - iClicks = 2; - repaint(); - } - /* Required because few actions are bound by it */ - if( block ) - { - PHB_ITEM p1 = hb_itemPutNI( NULL, QEvent::MouseButtonDblClick ); - PHB_ITEM p2 = hb_itemPutNI( NULL, event->globalX() ); - PHB_ITEM p3 = hb_itemPutNI( NULL, event->globalY() ); - hb_vmEvalBlockV( block, 3, p1, p2, p3 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - hb_itemRelease( p3 ); - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::mouseReleaseEvent( QMouseEvent *event ) -{ - if( isSelectionByApplication ) - { - if( isLineSelectionON ) - { - QPlainTextEdit::mouseReleaseEvent( event ); - rowEnds = textCursor().blockNumber(); - } - else if( isColumnSelectionON ) - { - event->accept(); - hbHitTest( event->pos() ); - rowEnds = hitTestRow; - columnEnds = hitTestColumn; - } - else if( isStreamSelectionON ) - { - QPlainTextEdit::mouseReleaseEvent( event ); - rowEnds = textCursor().blockNumber(); - columnEnds = textCursor().columnNumber(); - } - repaint(); - } - else - { - QPlainTextEdit::mouseReleaseEvent( event ); - } -#if 0 - if( block ) - { - PHB_ITEM p1 = hb_itemPutNI( NULL, QEvent::MouseButtonRelease ); - PHB_ITEM p2 = hb_itemPutNI( NULL, event->globalX() ); - PHB_ITEM p3 = hb_itemPutNI( NULL, event->globalY() ); - hb_vmEvalBlockV( block, 3, p1, p2, p3 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - hb_itemRelease( p3 ); - } -#endif -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::mousePressEvent( QMouseEvent *event ) -{ - if( isSelectionByApplication ) - { - if( isColumnSelectionON ) - { - event->accept(); - } - else - { - QPlainTextEdit::mousePressEvent( event ); - } - return; - } - else if( event->modifiers() & Qt::ShiftModifier ) - { - QTextCursor c( textCursor() ); - rowBegins = c.blockNumber(); - columnBegins = c.columnNumber(); - - QPlainTextEdit::mousePressEvent( event ); - - c = textCursor(); - rowEnds = c.blockNumber(); - columnEnds = c.columnNumber(); - c.clearSelection(); - setTextCursor( c ); - selectionMode = selectionMode_stream; - hbPostSelectionInfo(); - repaint(); - } - else - { - if( event->buttons() & Qt::LeftButton ) - { - QTextCursor c( cursorForPosition( event->pos() ) ); - - if( iClicks == 2 ) /* Handle Tripple-click */ - { - iClicks = 0; - if( ( event->pos() - clickPos ).manhattanLength() < QApplication::startDragDistance() ) - { - selectionMode = selectionMode_stream; - c.movePosition( QTextCursor::EndOfLine ); - columnBegins = 0; - columnEnds = c.columnNumber(); - hbPostSelectionInfo(); - setTextCursor( c ); - event->accept(); - repaint(); - } - else - { - QPlainTextEdit::mousePressEvent( event ); - hbClearSelection(); - } - } - else - { - QPlainTextEdit::mousePressEvent( event ); -#if 0 - if( block ) - { - PHB_ITEM p1 = hb_itemPutNI( NULL, QEvent::MouseButtonPress ); - PHB_ITEM p2 = hb_itemPutNI( NULL, event->globalX() ); - PHB_ITEM p3 = hb_itemPutNI( NULL, event->globalY() ); - hb_vmEvalBlockV( block, 3, p1, p2, p3 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - hb_itemRelease( p3 ); - } -#endif - dragStartPosition = event->pos(); - if( mouseMode == mouseMode_select && isCursorInSelection() ) - { - mouseMode = mouseMode_drag; - } - else - { - mouseMode = mouseMode_none; - hbClearSelection(); - repaint(); - } - } - } - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::mouseMoveEvent( QMouseEvent *event ) -{ - if( isSelectionByApplication ) - { - event->accept(); - return; - } - - if( selectionMode == selectionMode_line ) - { - selectionMode = selectionMode_stream; - hbPostSelectionInfo(); - } - if( event->buttons() & Qt::LeftButton ) - { - if( mouseMode == mouseMode_drag && ( event->pos() - dragStartPosition ).manhattanLength() < QApplication::startDragDistance() ) - { - QTextCursor c( cursorForPosition( event->pos() ) ); - int row = c.blockNumber(); - if( row >= rowBegins && row <= rowEnds ) - { - event->ignore(); - - QDrag * qDrag = new QDrag( this ); - QMimeData * qMimeData = new QMimeData(); - hbCopy(); - qMimeData->setText( QApplication::clipboard()->text() ); - qDrag->setMimeData( qMimeData ); - - QPixmap pmap = QPixmap::grabWidget( this->viewport(), hbGetSelectionRect() ); - pmap.setMask( pmap.createMaskFromColor( m_selectionColor, Qt::MaskInColor ) ); - pmap.setMask( pmap.createMaskFromColor( palette().color( QPalette::Base ), Qt::MaskInColor ) ); - pmap.setMask( pmap.createMaskFromColor( m_currentLineColor, Qt::MaskInColor ) ); - qDrag->setPixmap( pmap ); - qDrag->setHotSpot( QPoint( 5,5 ) ); - - qDrag->exec( Qt::MoveAction | Qt::CopyAction ); - delete qDrag; - return; - } - } - - if( columnBegins == -1 ) - { - QTextCursor c( textCursor() ); - rowBegins = c.blockNumber(); - columnBegins = c.columnNumber(); - rowEnds = rowBegins; - columnEnds = columnBegins; - mouseMode = mouseMode_select; - QPlainTextEdit::mouseMoveEvent( event ); - } - else if( mouseMode == mouseMode_select ) - { - if( event->modifiers() & Qt::AltModifier ) - { - selectionMode = selectionMode_column; - } - - extraSelections.clear(); - setExtraSelections( extraSelections ); - - if( selectionMode == selectionMode_column ) - { - QTextCursor c( cursorForPosition( QPoint( 1,1 ) ) ); - rowEnds = c.blockNumber() + ( event->y() / fontMetrics().height() ); - columnEnds = c.columnNumber() + ( event->x() / fontMetrics().averageCharWidth() ); - } - QPlainTextEdit::mouseMoveEvent( event ); - QTextCursor c = textCursor(); - if( selectionMode != selectionMode_column ) - { - rowEnds = c.blockNumber(); - columnEnds = c.columnNumber(); - } - c.clearSelection(); - setTextCursor( c ); - } - hbPostSelectionInfo(); - } -#if 0 - if( block ) - { - PHB_ITEM p1 = hb_itemPutNI( NULL, QEvent::MouseMove ); - PHB_ITEM p2 = hb_itemPutNI( NULL, event->globalX() ); - PHB_ITEM p3 = hb_itemPutNI( NULL, event->globalY() ); - hb_vmEvalBlockV( block, 3, p1, p2, p3 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - hb_itemRelease( p3 ); - } -#endif -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::keyReleaseEvent( QKeyEvent * event ) -{ - QPlainTextEdit::keyReleaseEvent( event ); - - if( ( event->modifiers() & Qt::ControlModifier ) && event->text() == "" ) - { - hbPostSelectionInfo(); - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbHandleKey( QKeyEvent * event, int k, int selMode, bool shift ) -{ - Q_UNUSED( selMode ); - Q_UNUSED( shift ); - - switch( k ) - { - case Qt::Key_Right: - { - event->ignore(); - QTextCursor c( textCursor() ); - QTextCursor cc( textCursor() ); - cc.movePosition( QTextCursor::EndOfLine ); - if( columnEnds < cc.columnNumber() ) - { - c.movePosition( QTextCursor::Right ); - setTextCursor( c ); - } - columnEnds++; - break; - } - case Qt::Key_Left: - { - event->ignore(); - QTextCursor c( textCursor() ); - if( columnEnds >= 0 ) - { - if( columnEnds <= c.columnNumber() ) - { - c.movePosition( QTextCursor::Left ); - setTextCursor( c ); - } - columnEnds--; - } - break; - } - case Qt::Key_Home: - case Qt::Key_End: - { - QPlainTextEdit::keyPressEvent( event ); - columnEnds = textCursor().columnNumber(); - break; - } - case Qt::Key_Up: - case Qt::Key_PageUp: - case Qt::Key_Down: - case Qt::Key_PageDown: - { - QPlainTextEdit::keyPressEvent( event ); - rowEnds = textCursor().blockNumber(); - break; - } - } -} - -/*----------------------------------------------------------------------*/ - -bool HBQPlainTextEdit::hbKeyPressSelection( QKeyEvent * event ) -{ - int k; - bool ctrl, shift, isNavable; - - if( isSelectionByApplication ) - { - return hbKeyPressSelectionByApplication( event ); - } - k = event->key(); - ctrl = event->modifiers() & Qt::ControlModifier; - shift = event->modifiers() & Qt::ShiftModifier; - isNavable = isNavableKey( k ); - - if( ctrl && shift && ! isNavable ) - { - return false; - } - if( ctrl && event->text().isEmpty() && ! isNavable ) - { - return false; - } - if( ctrl && ( k == Qt::Key_C || k == Qt::Key_V || k == Qt::Key_X || - k == Qt::Key_A || k == Qt::Key_Z || k == Qt::Key_Y ) ) - { - event->ignore(); - return true; - } - - bool bClear = false; - - if( shift && isNavable ) - { - if( selectionMode == selectionMode_line ) - { - selectionMode = selectionMode_stream; - hbPostSelectionInfo(); - } - - isShiftPressed = true; - - event->accept(); - QTextCursor c( textCursor() ); - c.clearSelection(); - setTextCursor( c ); - - if( columnBegins == -1 || columnEnds == -1 || rowBegins == -1 || rowEnds == -1 ) - { - rowBegins = c.blockNumber(); - columnBegins = c.columnNumber(); - rowEnds = rowBegins; - columnEnds = columnBegins; - hbPostSelectionInfo(); - } - - /* Push key back to system without the shift modifier - it will position position the cursor as intended */ - QKeyEvent * ev = new QKeyEvent( event->type(), event->key(), ctrl ? Qt::ControlModifier : Qt::NoModifier, event->text() ); - keyPressEvent( ev ); - return true; - } - - if( isShiftPressed && isNavable ) - { - isShiftPressed = false; - - if( selectionMode == selectionMode_stream ) - { - QPlainTextEdit::keyPressEvent( event ); - rowEnds = textCursor().blockNumber(); - columnEnds = textCursor().columnNumber(); - } - else if( selectionMode == selectionMode_column ) - { - hbHandleKey( event, k, selectionMode_column, true ); - } - hbPostSelectionInfo(); - repaint(); /* A Must Here , otherwise selection will not be reflected */ - return true; - } - else if( ctrl && isNavable && selectionMode == selectionMode_column && columnBegins >= 0 && columnBegins == columnEnds ) - { - hbHandleKey( event, k, selectionMode_column, false ); - columnBegins = columnEnds; - hbPostSelectionInfo(); - repaint(); - return true; - } - else if( ! ctrl && k >= ' ' && k < 127 && columnBegins >= 0 && selectionMode == selectionMode_column ) - { - if( block ) - { - PHB_ITEM p1 = hb_itemPutNI( NULL, 21013 ); - PHB_ITEM p2 = hbqt_bindGetHbObject( NULL, ( void * ) event, "HB_QKEYEVENT", NULL, 0 ) ; - hb_vmEvalBlockV( block, 2, p1, p2 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - - if( columnBegins == columnEnds ) - { - columnBegins++; - columnEnds++; - hbPostSelectionInfo(); - } - event->accept(); - repaint(); - return true; - } - else - { - bClear = true; - } - } - else if( ! ctrl && ( k == Qt::Key_Backspace || k == Qt::Key_Delete ) && columnBegins >= 0 ) - { - if( selectionMode == selectionMode_column ) - { - hbCut( k ); - if( k == Qt::Key_Backspace ) - { - columnBegins--; - columnEnds--; - } - else - { - columnEnds = columnBegins; - } - event->accept(); - hbPostSelectionInfo(); - repaint(); - return true; - } - else /* selectionMode == selectionMode_stream || selectionMode == selectionMode_line */ - { - hbCut( Qt::Key_Delete ); - repaint(); - hbPostSelectionInfo(); - if( k == Qt::Key_Delete ) - { - event->accept(); - return true; - } - } - } - else if( ! ctrl && k >= ' ' && k < 127 && columnBegins >= 0 && selectionMode == selectionMode_stream ) - { - hbCut( Qt::Key_Delete ); - hbClearSelection(); - } - else if( ! ctrl && k >= ' ' && k < 127 ) - { - bClear = true; - } - else if( isNavable ) - { - bClear = true; - } - - if( bClear ) - { - if( isSelectionPersistent ) - { - if( columnBegins >= 0 ) - { - if( columnEnds == columnBegins ) - { - hbClearSelection(); - } - hbPostSelectionInfo(); - } - } - else - { - if( columnBegins >= 0 ) - { - hbClearSelection(); - hbPostSelectionInfo(); - repaint(); - } - } - } - return false; -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::keyPressEvent( QKeyEvent * event ) -{ - extraSelections.clear(); - setExtraSelections( extraSelections ); - - if( hbHandlePopup( event ) ) - { - return; - } - if( hbKeyPressSelection( event ) ) - { - return; - } - - QPlainTextEdit::keyPressEvent( event ); - - if( ! isCodeCompletionActive ) - { - if( c ){ - c->popup()->hide(); - } - return; - } - - if( ! c ) - { - return; - } - if( isTipActive ) - { - c->popup()->hide(); - return; - } - - if( ! isAliasCompleter ) - { - hbRefreshCompleter( hbTextAlias() ); - } - - if( ( event->modifiers() & ( Qt::ControlModifier | Qt::AltModifier ) ) ) - { - c->popup()->hide(); - return; - } - const bool ctrlOrShift = event->modifiers() & ( Qt::ControlModifier | Qt::ShiftModifier ); - if( ctrlOrShift && event->text().isEmpty() ) - { - return; - } - static QString eow( " ~!@#$%^&*()+{}|:\"<>?,./;'[]\\-=" ); /* end of word */ - bool hasModifier = ( event->modifiers() != Qt::NoModifier ) && !ctrlOrShift; - QString completionPrefix = hbTextUnderCursor( true ); - /*QString completionPrefix = hbTextUnderCursor( false );*/ - - if( hasModifier || - event->text().isEmpty() || - completionPrefix.length() < ( isAliasCompleter ? 0 : 1 ) || - eow.contains( event->text().right( 1 ) ) ) - { - c->popup()->hide(); - return; - } - - if( completionPrefix != c->completionPrefix() ) - { - c->setCompletionPrefix( completionPrefix ); - c->popup()->setCurrentIndex( c->completionModel()->index( 0, 0 ) ); - } - QRect cr = cursorRect(); - - c->popup()->setMaximumWidth( viewport()->width() ); - cr.setWidth( c->popup()->sizeHintForColumn( 0 ) + c->popup()->verticalScrollBar()->sizeHint().width() ); - cr.setTop( cr.top() + horzRulerHeight + 5 ); - cr.setBottom( cr.bottom() + horzRulerHeight + 5 ); - - c->complete( cr ); /* pop it up! */ -} - -/*----------------------------------------------------------------------*/ - -bool HBQPlainTextEdit::hbKeyPressSelectionByApplication( QKeyEvent * event ) -{ - bool shift = event->modifiers() & Qt::ShiftModifier; - int k = event->key(); - - if( isNavableKey( k ) && shift ) - { - event->accept(); - QTextCursor c( textCursor() ); - c.clearSelection(); - setTextCursor( c ); - QKeyEvent * ev = new QKeyEvent( event->type(), event->key(), Qt::NoModifier, event->text() ); - keyPressEvent( ev ); - return true; - } - - if( isNavableKey( k ) ) - { - if( selectionMode == selectionMode_stream ) - { - QPlainTextEdit::keyPressEvent( event ); - - QTextCursor c( textCursor() ); - rowEnds = c.blockNumber(); - columnEnds = c.columnNumber(); - } - else if( selectionMode == selectionMode_column ) - { - switch( k ) - { - case Qt::Key_Right: - { - QTextCursor c( textCursor() ); - c.movePosition( QTextCursor::EndOfLine ); - if( c.columnNumber() <= columnEnds ) - { - setTextCursor( c ); - } - event->ignore(); - columnEnds++; - break; - } - case Qt::Key_Left: - { - QTextCursor c( textCursor() ); - int col = c.columnNumber(); - if( col < columnEnds - 1 ) - { - c.movePosition( QTextCursor::Left ); - columnEnds--; - } - else if( columnEnds - 1 >= 0 ) - { - columnEnds--; - } - event->ignore(); - break; - } - case Qt::Key_Home: - case Qt::Key_End: - { - QPlainTextEdit::keyPressEvent( event ); - columnEnds = textCursor().columnNumber(); - break; - } - case Qt::Key_Up: - case Qt::Key_PageUp: - case Qt::Key_Down: - case Qt::Key_PageDown: - QPlainTextEdit::keyPressEvent( event ); - rowEnds = textCursor().blockNumber(); - break; - default: - event->ignore(); - break; - } - } - else if( selectionMode == selectionMode_line ) - { - QPlainTextEdit::keyPressEvent( event ); - QTextCursor c( textCursor() ); - rowEnds = c.blockNumber(); - } -// repaint(); -// update(); - } - else - { - event->ignore(); - } - return true; -} - -/*----------------------------------------------------------------------*/ - -bool HBQPlainTextEdit::hbHandlePopup( QKeyEvent * event ) -{ - if( c && c->popup()->isVisible() ) - { - /* The following keys are forwarded by the completer to the widget */ - switch( event->key() ) - { - case Qt::Key_Enter : - case Qt::Key_Return : - case Qt::Key_Escape : - case Qt::Key_Tab : - case Qt::Key_Backtab : - { - event->ignore(); - return true; - } - } - } - return false; -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbRefreshCompleter( const QString & alias ) -{ - if( block ) - { - PHB_ITEM p1 = hb_itemPutNI( NULL, 21041 ); - PHB_ITEM p2 = hb_itemPutC( NULL, alias.toLatin1().data() ); - hb_vmEvalBlockV( block, 2, p1, p2 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - } -} - -/*------------------------------------------------------------------------*/ - -QString HBQPlainTextEdit::hbTextUnderCursor( bool bCodeComplete ) -{ - QTextCursor tc( textCursor() ); - if( bCodeComplete ) - { - tc.movePosition( QTextCursor::PreviousCharacter, QTextCursor::KeepAnchor, 1 ); - QString txt = tc.selectedText(); - tc.clearSelection(); - if( txt == ( QString ) ' ' ) - { - tc.select( QTextCursor::WordUnderCursor ); - txt = tc.selectedText() + ' '; - return txt; - } - else - { - tc = textCursor(); - tc.select( QTextCursor::WordUnderCursor ); - return tc.selectedText(); - } - } - else - { - tc.select( QTextCursor::WordUnderCursor ); - } - return tc.selectedText(); -} - -/*----------------------------------------------------------------------*/ - -QString HBQPlainTextEdit::hbTextAlias() -{ - QTextCursor tc( textCursor() ); - - tc.movePosition( QTextCursor::PreviousCharacter, QTextCursor::KeepAnchor, 2 ); - QString txt = tc.selectedText(); - tc.clearSelection(); - if( txt == ( QString ) "->" ) - { - tc.movePosition( QTextCursor::PreviousCharacter, QTextCursor::KeepAnchor, 1 ); - tc.select( QTextCursor::WordUnderCursor ); - txt = tc.selectedText(); - return txt; - } - return ""; -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::resizeEvent( QResizeEvent *e ) -{ - setContentsMargins( 0,0,0,0 ); - viewport()->setContentsMargins( 0,0,0,0 ); - - QPlainTextEdit::resizeEvent( e ); - - QRect cr = contentsRect(); - lineNumberArea->setGeometry( QRect( cr.left(), cr.top() + horzRulerHeight, hbLineNumberAreaWidth(), cr.height() ) ); - - horzRuler->setGeometry( QRect( cr.left(), cr.top(), cr.width(), horzRulerHeight ) ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::focusInEvent( QFocusEvent * event ) -{ - if( c ) - c->setWidget( this ); - - QPlainTextEdit::focusInEvent( event ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::paintEvent( QPaintEvent * event ) -{ - QPainter painter( viewport() ); - - QTextBlock tblock = firstVisibleBlock(); - int blockNumber = tblock.blockNumber(); - int height = ( int ) blockBoundingRect( tblock ).height(); - int top = ( int ) blockBoundingGeometry( tblock ).translated( contentOffset() ).top(); - int bottom = top + height; - int curBlock; - if( textCursor().isNull() ) - { - curBlock = blockNumber; - } - else - { - curBlock = textCursor().blockNumber(); - } - int rTop = event->rect().top(); - int rBottom = event->rect().bottom(); - int width = viewport()->width(); - - while( tblock.isValid() && top <= rBottom ) - { - if( tblock.isVisible() && bottom >= rTop ) - { - int index = bookMarksGoto.indexOf( blockNumber + 1 ); - if( index != -1 ) - { - QRect r( 0, top, width, height ); - painter.fillRect( r, brushForBookmark( index ) ); - } - else if( curBlock == blockNumber && m_currentLineColor.isValid() ) - { - if( highlightCurLine == true ) - { - QRect r = HBQPlainTextEdit::cursorRect(); - r.setX( 0 ); - r.setWidth( width ); - painter.fillRect( r, QBrush( m_currentLineColor ) ); - } - } - } - tblock = tblock.next(); - top = bottom; - bottom = top + height; - ++blockNumber; - } - painter.end(); - - this->hbPaintHighlight( event ); - this->hbPaintSelection( event ); - - QPlainTextEdit::paintEvent( event ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbPaintHighlight( QPaintEvent * event ) -{ - HB_SYMBOL_UNUSED( event ); - - if( highlight.top() > -1 ) - { - int fontHeight = fontMetrics().height(); - int t = firstVisibleBlock().blockNumber(); - int b = t + ( viewport()->height() / fontHeight ) + 1; - int rb = highlight.top(); - int re = highlight.bottom(); - - if( re >= t && rb < b ) - { - QPainter p( viewport() ); - - int top = ( ( rb <= t ) ? 0 : ( ( rb - t ) * fontHeight ) ); - int btm = ( ( re - t + 1 ) * fontHeight ) - top; - - btm = btm > viewport()->height() ? viewport()->height() : btm; - - QRect r( 0, top, viewport()->width(), btm ); - p.fillRect( r, QBrush( QColor( 255,255,0 ) ) ); - - p.end(); - } - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbPaintSelection( QPaintEvent * event ) -{ - HB_SYMBOL_UNUSED( event ); - - if( rowBegins >= 0 && rowEnds >= 0 ) - { - int cb = columnBegins <= columnEnds ? columnBegins : columnEnds; - int ce = columnBegins <= columnEnds ? columnEnds : columnBegins; - int rb = rowBegins <= rowEnds ? rowBegins : rowEnds; - int re = rowBegins <= rowEnds ? rowEnds : rowBegins; - - int ttop = ( int ) blockBoundingGeometry( firstVisibleBlock() ).translated( contentOffset() ).top(); - - int t = firstVisibleBlock().blockNumber(); - int c = hbFirstVisibleColumn(); - int fontHeight = fontMetrics().height(); - int b = t + ( ( viewport()->height() - ttop ) / fontHeight ) + 1; - - re = re > b ? b : re; - - if( re >= t && rb < b ) - { - QPainter p( viewport() ); - - int fontWidth = fontMetrics().averageCharWidth(); - - int top = ( ( rb <= t ) ? 0 : ( ( rb - t ) * fontHeight ) ) + ttop; - int btm = ( ( re - t + 1 ) * fontHeight ) - top + ttop; - btm = btm > viewport()->height() ? viewport()->height() : btm; - QBrush br( m_selectionColor ); - - switch( selectionMode ) - { - case selectionMode_column: - { - int x = ( ( cb - c ) * fontWidth ); - int w = ( cb == ce ? 1 : ( ( ce - cb ) * fontWidth ) ); - QRect r( x, top, w, btm ); - p.fillRect( r, br ); - } - break; - case selectionMode_line: - { - QRect r( 0, top, viewport()->width(), btm ); - p.fillRect( r, QBrush( m_selectionColor ) ); - } - break; - case selectionMode_stream: - { - int width = viewport()->width(); - int i; - QRect r; - for( i = ( rb >= t ? rb : t ); i <= re; i++ ) - { - if( rowBegins > rowEnds ) - { - if( i == rowEnds ) - { - if( rb == re ) - { - int x = ( ( cb - c ) * fontWidth ); - int w = ( ce - cb ) * fontWidth ; - r = QRect( x, top, w, fontHeight ); - } - else - { - int x = ( ( columnEnds - c ) * fontWidth ); - r = QRect( x, top, width + abs( x ), fontHeight ); - } - } - else if( i == rowBegins ) - { - int x = ( ( columnBegins - c ) * fontWidth ); - r = QRect( 0, top, x, fontHeight ); - } - else - { - r = QRect( 0, top, width, fontHeight ); - } - } - else - { - if( i == rowBegins ) - { - if( rb == re ) - { - int x = ( ( cb - c ) * fontWidth ); - int w = ( ce - cb ) * fontWidth; - r = QRect( x, top, w, fontHeight ); - } - else - { - int x = ( ( columnBegins - c ) * fontWidth ); - r = QRect( x, top, width + abs( x ), fontHeight ); - } - } - else if( i == rowEnds ) - { - int x = ( ( columnEnds - c ) * fontWidth ); - r = QRect( 0, top, x, fontHeight ); - } - else - { - r = QRect( 0, top, width, fontHeight ); - } - } - p.fillRect( r, br ); - top += fontHeight; - } - } - break; - } - p.end(); - } - } -} - -/*----------------------------------------------------------------------*/ - -QRect HBQPlainTextEdit::hbGetSelectionRect() -{ - QRect r = QRect(); - - if( rowBegins >= 0 && rowEnds >= 0 ) - { - int rb = rowBegins <= rowEnds ? rowBegins : rowEnds; - int re = rowBegins <= rowEnds ? rowEnds : rowBegins; - - int ttop = ( int ) blockBoundingGeometry( firstVisibleBlock() ).translated( contentOffset() ).top(); - - int t = firstVisibleBlock().blockNumber(); - int fontHeight = fontMetrics().height(); - int b = t + ( ( viewport()->height() - ttop ) / fontHeight ) + 1; - - re = re > b ? b : re; - - if( re >= t && rb < b ) - { - int top = ( ( rb <= t ) ? 0 : ( ( rb - t ) * fontHeight ) ) + ttop; - int btm = ( ( re - t + 1 ) * fontHeight ) - top + ttop; - btm = btm > viewport()->height() ? viewport()->height() : btm; - - if( selectionMode == selectionMode_column ) - { - int cb = columnBegins <= columnEnds ? columnBegins : columnEnds; - int ce = columnBegins <= columnEnds ? columnEnds : columnBegins; - int c = hbFirstVisibleColumn(); - int fontWidth = fontMetrics().averageCharWidth(); - int x = ( ( cb - c ) * fontWidth ); - int w = ( cb == ce ? 1 : ( ( ce - cb ) * fontWidth ) ); - r = QRect( x, top, w, btm ); - } - else - { - r = QRect( 0, top, viewport()->width(), btm ); - } - } - } - return r; -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbDrawCursor( QPaintEvent *event ) -{ - HB_SYMBOL_UNUSED( event ); - - QAbstractTextDocumentLayout::PaintContext pc = getPaintContext(); - { - if( caretState == 1 ) - { - QRect r( cursorRect( textCursor() ) ); - r.setLeft( r.left() + 100 ); - r.setRight( r.right() + 100 ); - - QPainter p( viewport() ); - p.fillRect( r, QBrush( QColor( caretState == 1 ? Qt::red : Qt::blue ) ) ); - p.end(); - } - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbUpdateCaret() -{ - caretState = caretState == 0 ? 1 : 0; - - QRect r( cursorRect( textCursor() ) ); - r.setX( 0 ); - r.setWidth( viewport()->width() ); - repaint( r ); -} - -/*----------------------------------------------------------------------*/ - -int HBQPlainTextEdit::lastVisibleBlockNumber() -{ - QTextBlock block = firstVisibleBlock(); - int blockNumber = block.blockNumber(); - int top = ( int ) blockBoundingGeometry( block ).translated( contentOffset() ).top(); - int height = ( int ) blockBoundingRect( block ).height(); - int vpHeight = viewport()->height(); - - while( block.isValid() && top < vpHeight ) - { - top += height; - ++blockNumber; - block = block.next(); - } - return blockNumber; -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::horzRulerPaintEvent( QPaintEvent *event ) -{ - int fontWidth = fontMetrics().averageCharWidth(); - QRect cr = event->rect(); - QPainter painter( horzRuler ); - - painter.fillRect( cr, m_horzRulerBkColor ); - painter.setPen( Qt::gray ); - painter.drawLine( cr.left(), cr.bottom(), cr.width(), cr.bottom() ); - painter.setPen( Qt::black ); - - int left = cr.left() + ( fontWidth / 2 ) + ( lineNumberArea->isVisible() ? lineNumberArea->width() : 0 ); - - QRect rc( cursorRect( textCursor() ) ); - QTextCursor cursor( cursorForPosition( QPoint( 1, rc.top() + 1 ) ) ); - - int i; - for( i = hbFirstVisibleColumn(); left < cr.width(); i++ ) - { - if( i % 10 == 0 ) - { - painter.drawLine( left, cr.bottom()-3, left, cr.bottom()-5 ); - QString number = QString::number( i ); - painter.drawText( left - fontWidth, cr.top()-2, fontWidth * 2, 17, Qt::AlignCenter, number ); - } - else if( i % 5 == 0 ) - { - painter.drawLine( left, cr.bottom()-3, left, cr.bottom()-5 ); - } - else - { - painter.drawLine( left, cr.bottom()-3, left, cr.bottom()-4 ); - } - if( i == textCursor().columnNumber() ) - { - painter.fillRect( QRect( left, cr.top() + 2, fontWidth, 11 ), QColor( 100,100,100 ) ); - } - left += fontWidth; - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::lineNumberAreaPaintEvent( QPaintEvent *event ) -{ - QPainter painter( lineNumberArea ); - painter.fillRect( event->rect(), m_lineAreaBkColor ); - - QTextBlock block = firstVisibleBlock(); - int blockNumber = block.blockNumber(); - int top = ( int ) blockBoundingGeometry( block ).translated( contentOffset() ).top(); - int bottom = top +( int ) blockBoundingRect( block ).height(); - int fontHeight = fontMetrics().height(); - - while( block.isValid() && top <= event->rect().bottom() ) - { - if( block.isVisible() && bottom >= event->rect().top() ) - { - int iNumber = blockNumber + 1; - int index = bookMarksGoto.indexOf( iNumber ); - if( index != -1 ) - { - painter.fillRect( 0, top, lineNumberArea->width()-2, fontHeight, brushForBookmark( index ) ); - } - painter.setPen( iNumber % 10 == 0 ? Qt::red : Qt::black ); - painter.drawText( 0, top, lineNumberArea->width()-2, fontHeight, Qt::AlignRight, QString::number( iNumber ) ); - } - block = block.next(); - top = bottom; - bottom = top +( int ) blockBoundingRect( block ).height(); - ++blockNumber; - } -} - -/*----------------------------------------------------------------------*/ - -QBrush HBQPlainTextEdit::brushForBookmark( int index ) -{ - QBrush br; - - if( index == 0 ) - br = QBrush( QColor( 255, 255, 127 ) ); - else if( index == 1 ) - br = QBrush( QColor( 175, 175, 255 ) ); - else if( index == 2 ) - br = QBrush( QColor( 255, 175, 175 ) ); - else if( index == 3 ) - br = QBrush( QColor( 175, 255, 175 ) ); - else if( index == 4 ) - br = QBrush( QColor( 255, 190, 125 ) ); - else if( index == 5 ) - br = QBrush( QColor( 175, 255, 255 ) ); - else - br = QBrush( m_currentLineColor ); - - return br; -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbBookmarks( int block ) -{ - int found = bookMark.indexOf( block ); - if( found == -1 ) - { - bookMark.push_back( block ); - qSort( bookMark ); - } - else - { - bookMark.remove( found ); - } - - found = -1; - int i = 0; - for( i = 0; i < bookMarksGoto.size(); i++ ) - { - if( bookMarksGoto[ i ] == block ) - { - bookMarksGoto.removeAt( i ); - found = i; - break; - } - } - - if( found == -1 ) - { - bookMarksGoto.append( block ); - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbGotoBookmark( int block ) -{ - if( bookMarksGoto.size() > 0 ) - { - int i; - for( i = 0; i < bookMarksGoto.size(); i++ ) - { - if( bookMarksGoto[ i ] == block ) - { - QTextCursor cursor( document()->findBlockByNumber( block - 1 ) ); - setTextCursor( cursor ); - break; - } - } - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbNextBookmark( int block ) -{ - if( bookMark.count() > 0 ) - { - QVector::iterator i = qUpperBound( bookMark.begin(), bookMark.end(), block ); - if( i != bookMark.end() ) - { - QTextCursor cursor( document()->findBlockByNumber( *i - 1 ) ); - setTextCursor( cursor ); - } - else - { - QTextCursor cursor( document()->findBlockByNumber( *bookMark.begin() - 1 ) ); - setTextCursor( cursor ); - } - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbPrevBookmark( int block ) -{ - if( bookMark.count() > 0 ) - { - QVector::iterator i = qUpperBound( bookMark.begin(), bookMark.end(), block ); - i -= 2; - if( i >= bookMark.begin() ) - { - QTextCursor cursor( document()->findBlockByNumber( *i - 1 ) ); - setTextCursor( cursor ); - } - else - { - QVector::iterator it = bookMark.end(); - --it; - QTextCursor cursor( document()->findBlockByNumber( *it - 1 ) ); - setTextCursor( cursor ); - } - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbNumberBlockVisible( bool b ) -{ - numberBlock = b; - if( b ) - { - lineNumberArea->show(); - hbUpdateLineNumberAreaWidth( hbLineNumberAreaWidth() ); - } - else - { - lineNumberArea->hide(); - hbUpdateLineNumberAreaWidth( 0 ); - } - update(); -} - -/*----------------------------------------------------------------------*/ - -bool HBQPlainTextEdit::hbNumberBlockVisible() -{ - return numberBlock; -} - -/*----------------------------------------------------------------------*/ - -int HBQPlainTextEdit::hbLineNumberAreaWidth() -{ - int digits = 1; - int max = qMax( 1, blockCount() ); - while( max >= 10 ) - { - max /= 10; - ++digits; - } - int width = lineNumberArea->fontMetrics().width( QLatin1Char( '9' ) ); - int space = ( width * digits ) + 2; - - return space; -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbUpdateHorzRulerHeight( int height ) -{ - horzRulerHeight = height; - setViewportMargins( hbLineNumberAreaWidth(), horzRulerHeight, 0, 0 ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbUpdateLineNumberAreaWidth( int ) -{ - if( numberBlock ) - { - setViewportMargins( hbLineNumberAreaWidth(), horzRulerHeight, 0, 0 ); - } - else - { - setViewportMargins( 0, horzRulerHeight, 0, 0 ); - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbUpdateHorzRuler( const QRect & rect, int dy ) -{ - HB_SYMBOL_UNUSED( rect ); - - setTabStopWidth( spaces * fontMetrics().averageCharWidth() ); - - if( dy == 0 ) - { - horzRuler->update(); - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbHighlightPage() -{ -#if QT_VERSION >= 0x040600 - if( highlighter ) - { - int iLastVisBlockNum = lastVisibleBlockNumber(); - QTextBlock block = firstVisibleBlock(); - if( block.isValid() ) - { - int i; - for( i = block.blockNumber(); i < iLastVisBlockNum; i++ ) - { - highlighter->rehighlightBlock( block ); - block = block.next(); - if( ! block.isValid() ) - break; - } - } - } -#endif -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbUpdateLineNumberArea( const QRect &rect, int dy ) -{ - if( dy ) - { - lineNumberArea->scroll( 0, dy ); - - if( highlighter ) - { -#if QT_VERSION >= 0x040600 - int rows = abs( dy / fontMetrics().height() ); - int i; - QTextBlock block; - - if( dy < 0 ) - { - - int iLastVisBlockNum = lastVisibleBlockNumber(); - - for( i = iLastVisBlockNum - rows; i <= iLastVisBlockNum; i++ ) - { - block = document()->findBlockByNumber( i ); - if( block.isValid() ) - { - highlighter->rehighlightBlock( block ); - } - } - } - else - { - block = firstVisibleBlock(); - for( i = 0; i < rows; i++ ) - { - highlighter->rehighlightBlock( block ); - block = block.next(); - } - } -#else - highlighter->rehighlight(); -#endif - } - } - else - lineNumberArea->update( 0, rect.y(), lineNumberArea->width(), rect.height() ); - - if( rect.contains( viewport()->rect() ) ) - { - hbUpdateLineNumberAreaWidth( 0 ); - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbSetSpaces( int newSpaces ) -{ - spaces = newSpaces; - spacesTab = ""; - - if( spaces > 0 ) - { - for( int i = 0; i < spaces; ++i ) - spacesTab += " "; - } - else - { - if( spaces == -101 ) - spacesTab = "\t"; - } -} - -/*----------------------------------------------------------------------*/ - -int HBQPlainTextEdit::hbGetIndex( const QTextCursor &crQTextCursor ) -{ - QTextBlock b; - int column = 1; - b = crQTextCursor.block(); - column = crQTextCursor.position() - b.position(); - return column; -} - -/*----------------------------------------------------------------------*/ - -int HBQPlainTextEdit::hbGetLine( const QTextCursor &crQTextCursor ) -{ - QTextBlock b,cb; - int line = 1; - cb = crQTextCursor.block(); - for( b = document()->begin();b!=document()->end();b = b.next() ) - { - if( b==cb ) - return line; - line++; - } - return line; -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbSlotCursorPositionChanged() -{ - if( m_currentBlockNumber != textCursor().blockNumber() ) - { - m_currentBlockNumber = textCursor().blockNumber(); - if( m_currentLineColor.isValid() ) - { - viewport()->update(); - } - } - - if( styleHightlighter != "none" && columnBegins == -1 ) - { - hbBraceHighlight(); - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbSetStyleHightlighter( const QString &style ) -{ - styleHightlighter = style; -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbShowHighlighter( const QString &style, bool b ) -{ - if( b ) - { - if( styleHightlighter != "none" ) - { - delete highlighter; - highlighter = 0; - } - highlighter = new HBQSyntaxHighlighter( document() ); - } - else - { - delete highlighter; - highlighter = 0; - } - styleHightlighter = style; -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbEscapeQuotes() -{ - QTextCursor cursor( textCursor() ); - QString selTxt( cursor.selectedText() ); - if( selTxt.isEmpty() ) - return; - - QString txt = selTxt.replace( QString( "'" ), QString( "\\\'" ) ); - insertPlainText( txt ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbEscapeDQuotes() -{ - QTextCursor cursor( textCursor() ); - QString selTxt( cursor.selectedText() ); - if( selTxt.isEmpty() ) - return; - - QString txt = selTxt.replace( QString( "\"" ), QString( "\\\"" ) ); - insertPlainText( txt ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbUnescapeQuotes() -{ - QTextCursor cursor( textCursor() ); - QString selTxt( cursor.selectedText() ); - if( selTxt.isEmpty() ) - return; - - QString txt = selTxt.replace( QString( "\\\'" ), QString( "'" ) ); - insertPlainText( txt ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbUnescapeDQuotes() -{ - QTextCursor cursor( textCursor() ); - QString selTxt( cursor.selectedText() ); - if( selTxt.isEmpty() ) - return; - - QString txt = selTxt.replace( QString( "\\\"" ), QString( "\"" ) ); - insertPlainText( txt ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbCaseUpper() -{ - QTextCursor cursor = textCursor(); - QString selTxt( cursor.selectedText() ); - if( selTxt.isEmpty() ) - return; - - int b = cursor.selectionStart(); - int e = cursor.selectionEnd(); - cursor.beginEditBlock(); - - insertPlainText( selTxt.toUpper() ); - - cursor.setPosition( b ); - cursor.movePosition( QTextCursor::NextCharacter, QTextCursor::KeepAnchor, e-b ); - cursor.endEditBlock(); - setTextCursor( cursor ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbCaseLower() -{ - QTextCursor cursor = textCursor(); - QString selTxt( cursor.selectedText() ); - if( selTxt.isEmpty() ) - return; - - int b = cursor.selectionStart(); - int e = cursor.selectionEnd(); - cursor.beginEditBlock(); - - insertPlainText( selTxt.toLower() ); - - cursor.setPosition( b ); - cursor.movePosition( QTextCursor::NextCharacter, QTextCursor::KeepAnchor, e-b ); - cursor.endEditBlock(); - setTextCursor( cursor ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbConvertQuotes() -{ - QTextCursor cursor = textCursor(); - QString selTxt( cursor.selectedText() ); - if( selTxt.isEmpty() ) - return; - - int b = cursor.selectionStart(); - int e = cursor.selectionEnd(); - cursor.beginEditBlock(); - - insertPlainText( selTxt.replace( QString( "\"" ), QString( "\'" ) ) ); - - cursor.setPosition( b ); - cursor.movePosition( QTextCursor::NextCharacter, QTextCursor::KeepAnchor, e-b ); - cursor.endEditBlock(); - setTextCursor( cursor ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbConvertDQuotes() -{ - QTextCursor cursor = textCursor(); - QString selTxt( cursor.selectedText() ); - if( selTxt.isEmpty() ) - return; - - int b = cursor.selectionStart(); - int e = cursor.selectionEnd(); - cursor.beginEditBlock(); - - insertPlainText( selTxt.replace( QString( "\'" ), QString( "\"" ) ) ); - - cursor.setPosition( b ); - cursor.movePosition( QTextCursor::NextCharacter, QTextCursor::KeepAnchor, e-b ); - cursor.endEditBlock(); - setTextCursor( cursor ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbReplaceSelection( const QString & txt ) -{ - QTextCursor cursor = textCursor(); - QString selTxt( cursor.selectedText() ); - if( selTxt.isEmpty() ) - return; - - int b = cursor.selectionStart(); - cursor.beginEditBlock(); - - insertPlainText( txt ); - - cursor.setPosition( b ); - cursor.movePosition( QTextCursor::NextCharacter, QTextCursor::KeepAnchor, txt.length() ); - cursor.endEditBlock(); - setTextCursor( cursor ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbStreamComment() -{ - QTextCursor cursor = textCursor(); - QString selTxt( cursor.selectedText() ); - if( selTxt.isEmpty() ) - return; - - int b = cursor.selectionStart(); - int e = cursor.selectionEnd(); - cursor.beginEditBlock(); - - insertPlainText( "/*" + selTxt + "*/" ); - - cursor.setPosition( b ); - cursor.movePosition( QTextCursor::NextCharacter, QTextCursor::KeepAnchor, e-b+4 ); - cursor.endEditBlock(); - setTextCursor( cursor ); -} - -/*----------------------------------------------------------------------*/ - -QString HBQPlainTextEdit::hbGetSelectedText() -{ - QTextCursor cursor( textCursor() ); - QString selTxt( cursor.selectedText() ); - if( selTxt.isEmpty() ) - return ""; - - QString txt = selTxt.replace( 0x2029, QString( "\n" ) ); - return txt; -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbInsertTab( int mode ) -{ - QTextCursor cursor = textCursor(); - QTextCursor c( cursor ); - - c.setPosition( cursor.position() ); - setTextCursor( c ); - - if( mode == 0 ) - { - insertPlainText( spacesTab ); - } - else - { - int icol = c.columnNumber(); - int ioff = qMin( icol, spaces ); - c.setPosition( c.position() - ioff ); - } - setTextCursor( c ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbMoveLine( int iDirection ) -{ - QTextCursor cursor = textCursor(); - QTextCursor c = cursor; - - cursor.beginEditBlock(); - - cursor.movePosition( QTextCursor::StartOfLine ); - cursor.movePosition( QTextCursor::EndOfLine, QTextCursor::KeepAnchor ); - QString textCurrentLine = cursor.selectedText(); - - if( iDirection == -1 && cursor.blockNumber() > 0 ) - { - cursor.movePosition( QTextCursor::StartOfLine ); - cursor.movePosition( QTextCursor::Up ); - cursor.movePosition( QTextCursor::EndOfLine, QTextCursor::KeepAnchor ); - QString textPrevLine = cursor.selectedText(); - setTextCursor( cursor ); - insertPlainText( textCurrentLine ); - cursor.movePosition( QTextCursor::Down ); - cursor.movePosition( QTextCursor::StartOfLine ); - cursor.movePosition( QTextCursor::EndOfLine, QTextCursor::KeepAnchor ); - setTextCursor( cursor ); - insertPlainText( textPrevLine ); - c.movePosition( QTextCursor::Up ); - } - else if( iDirection == 1 && cursor.blockNumber() < cursor.document()->blockCount() - 1 ) - { - cursor.movePosition( QTextCursor::StartOfLine ); - cursor.movePosition( QTextCursor::Down ); - cursor.movePosition( QTextCursor::EndOfLine, QTextCursor::KeepAnchor ); - QString textPrevLine = cursor.selectedText(); - setTextCursor( cursor ); - insertPlainText( textCurrentLine ); - cursor.movePosition( QTextCursor::Up ); - cursor.movePosition( QTextCursor::StartOfLine ); - cursor.movePosition( QTextCursor::EndOfLine, QTextCursor::KeepAnchor ); - setTextCursor( cursor ); - insertPlainText( textPrevLine ); - c.movePosition( QTextCursor::Down ); - } - cursor.endEditBlock(); - setTextCursor( c ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbDeleteLine() -{ - QTextCursor cursor = textCursor(); - QTextCursor c = cursor; - - cursor.beginEditBlock(); - - cursor.movePosition( QTextCursor::StartOfLine ); - cursor.movePosition( QTextCursor::EndOfLine, QTextCursor::KeepAnchor ); - cursor.movePosition( QTextCursor::Down, QTextCursor::KeepAnchor ); - - QString textUnderCursor = cursor.selectedText(); - setTextCursor( cursor ); - insertPlainText( "" ); - cursor.endEditBlock(); - - setTextCursor( c ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbBlockIndent( int steps ) -{ - QTextCursor cursor = textCursor(); - - if( cursor.hasSelection() ) - { - QTextCursor c = cursor; - QTextDocument * doc = c.document(); - - int bs = doc->findBlock( c.selectionStart() ).blockNumber(); - int be = doc->findBlock( c.selectionEnd() ).blockNumber(); - - cursor.beginEditBlock(); - - cursor.movePosition( QTextCursor::Start ); - cursor.movePosition( QTextCursor::NextBlock, QTextCursor::MoveAnchor, bs ); - - int s = abs( steps ); - int i, j; - for( i = bs; i <= be; i++ ) - { - setTextCursor( cursor ); - for( j = 0; j < s; j++ ) - { - cursor.movePosition( QTextCursor::StartOfLine ); - - if( steps < 0 ) - { - cursor.movePosition( QTextCursor::NextCharacter, QTextCursor::KeepAnchor ); - QString textUnderCursor = cursor.selectedText(); - if( textUnderCursor == " " ) - { - setTextCursor( cursor ); - insertPlainText( "" ); - } - } - else - { - setTextCursor( cursor ); - insertPlainText( " " ); - } - } - cursor.movePosition( QTextCursor::NextBlock, QTextCursor::MoveAnchor, 1 ); - } - cursor.endEditBlock(); - - setTextCursor( c ); - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbBlockComment() -{ - QTextCursor cursor = textCursor(); - QTextCursor c = cursor; - QTextDocument * doc = c.document(); - - int bs = doc->findBlock( c.selectionStart() ).blockNumber(); - int be = doc->findBlock( c.selectionEnd() ).blockNumber(); - - cursor.beginEditBlock(); - - cursor.movePosition( QTextCursor::Start ); - cursor.movePosition( QTextCursor::NextBlock, QTextCursor::MoveAnchor, bs ); - int i; - for( i = bs; i <= be; i++ ) - { - setTextCursor( cursor ); - - cursor.movePosition( QTextCursor::StartOfLine ); - cursor.movePosition( QTextCursor::NextCharacter, QTextCursor::KeepAnchor ); - cursor.movePosition( QTextCursor::NextCharacter, QTextCursor::KeepAnchor ); - QString textUnderCursor = cursor.selectedText(); - if( textUnderCursor == "//" ) - { - setTextCursor( cursor ); - insertPlainText( "" ); - } - else - { - cursor.movePosition( QTextCursor::StartOfLine ); - insertPlainText( "//" ); - } - cursor.movePosition( QTextCursor::NextBlock, QTextCursor::MoveAnchor, 1 ); - } - cursor.endEditBlock(); - setTextCursor( c ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbDuplicateLine() -{ - QTextCursor cursor = textCursor(); - QTextCursor c = cursor; - cursor.movePosition( QTextCursor::StartOfLine ); - cursor.movePosition( QTextCursor::EndOfLine, QTextCursor::KeepAnchor ); - QString textUnderCursor = cursor.selectedText(); - cursor.movePosition( QTextCursor::EndOfLine ); - setTextCursor( cursor ); - insertPlainText( "\n" + textUnderCursor ); - setTextCursor( c ); -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::hbBraceHighlight() -{ - extraSelections.clear(); - setExtraSelections( extraSelections ); - selection.format.setBackground( m_braceHiliteColor ); - - QTextCursor cursor = textCursor(); - - cursor.movePosition( QTextCursor::NextCharacter, QTextCursor::KeepAnchor ); - QString brace = cursor.selectedText(); - - if( ( brace == "{" ) || ( brace == "}" ) - || ( brace == "[" ) || ( brace == "]" ) - || ( brace == "(" ) || ( brace == ")" ) - || ( brace == "<" ) || ( brace == ">" ) ) - { - QString openBrace; - QString closeBrace; - - if( ( brace == "{" ) || ( brace == "}" ) ) - { - openBrace = "{"; - closeBrace = "}"; - } - else if( ( brace == "[" ) || ( brace == "]" ) ) - { - openBrace = "["; - closeBrace = "]"; - } - else if( ( brace == "(" ) || ( brace == ")" ) ) - { - openBrace = "("; - closeBrace = ")"; - } - else if( ( brace == "<" ) || ( brace == ">" ) ) - { - openBrace = "<"; - closeBrace = ">"; - } - matchPair( cursor, brace, openBrace, closeBrace, m_matchBracesAll, 0 ); - } - else - { - cursor = textCursor(); - cursor.select( QTextCursor::WordUnderCursor ); - QString brace = cursor.selectedText().toUpper(); - - if( brace == "IF" || brace == "ENDIF" || brace == "IFDEF" || - brace == "FOR" || brace == "NEXT" || - brace == "SWITCH" || brace == "ENDSWITCH" || - brace == "DO" || brace == "ENDCASE" || brace == "ENDDO" || - brace == "CLASS" || brace == "ENDCLASS" || - brace == "FUNCTION" || brace == "RETURN" || brace == "METHOD" || brace == "PROCEDURE" ) - { - QString openBrace; - QString closeBrace; - - if( ( brace == "IF" ) || ( brace == "ENDIF" ) ) - { - QTextCursor c( cursor ); - c.movePosition( QTextCursor::PreviousWord, QTextCursor::MoveAnchor ); - c.movePosition( QTextCursor::PreviousWord, QTextCursor::MoveAnchor ); - c.movePosition( QTextCursor::EndOfWord, QTextCursor::KeepAnchor ); - QString brc = c.selectedText(); - if( brc == "#" ) - { - c.movePosition( QTextCursor::EndOfWord, QTextCursor::KeepAnchor ); - cursor = c; - brace = "#" + brace; - if( brace == "#IF" ) - { - openBrace = "#IF"; - closeBrace = "#ENDIF"; - } - else - { - QRegExp openBrace( "(#IFDEF|#IF)" ); - openBrace.setCaseSensitivity( Qt::CaseInsensitive ); - QRegExp closeBrace( "#ENDIF" ); - closeBrace.setCaseSensitivity( Qt::CaseInsensitive ); - matchPair( cursor, QRegExp(), openBrace, closeBrace, true, 0, false ); - return; - } - } - else - { - openBrace = "IF"; - closeBrace = "ENDIF"; - } - } - else if( ( brace == "IFDEF" ) ) - { - QTextCursor c( cursor ); - c.movePosition( QTextCursor::PreviousWord, QTextCursor::MoveAnchor ); - c.movePosition( QTextCursor::PreviousWord, QTextCursor::MoveAnchor ); - c.movePosition( QTextCursor::EndOfWord, QTextCursor::KeepAnchor ); - QString brc = c.selectedText(); - if( brc == "#" ) - { - c.movePosition( QTextCursor::EndOfWord, QTextCursor::KeepAnchor ); - cursor = c; - brace = "#" + brace; - openBrace = "#IFDEF"; - closeBrace = "#ENDIF"; - } - } - else if( ( brace == "FOR" ) || ( brace == "NEXT" ) ) - { - openBrace = "FOR"; - closeBrace = "NEXT"; - } - else if( ( brace == "SWITCH" ) || ( brace == "ENDSWITCH" ) ) - { - openBrace = "SWITCH"; - closeBrace = "ENDSWITCH"; - } - else if( ( brace == "DO" ) || ( brace == "ENDCASE" ) || ( brace == "ENDDO" ) ) - { - if( brace == "DO" ) - { - cursor.movePosition( QTextCursor::NextWord, QTextCursor::KeepAnchor ); - cursor.movePosition( QTextCursor::EndOfWord, QTextCursor::KeepAnchor ); - brace = cursor.selectedText(); - if( brace == "DO CASE" ) - { - openBrace = "DO CASE"; - closeBrace = "ENDCASE"; - } - else if( brace == "DO WHILE" ) - { - openBrace = "DO WHILE"; - closeBrace = "ENDDO"; - } - } - else if( brace == "ENDCASE" ) - { - openBrace = "DO CASE"; - closeBrace = "ENDCASE"; - } - else - { - openBrace = "DO WHILE"; - closeBrace = "ENDDO"; - } - } - else if( ( brace == "FUNCTION" ) ) - { - openBrace = "FUNCTION"; - closeBrace = "RETURN"; - } - else if( ( brace == "METHOD" ) ) - { - openBrace = "METHOD"; - closeBrace = "RETURN"; - } - else if( ( brace == "PROCEDURE" ) ) - { - openBrace = "PROCEDURE"; - closeBrace = "RETURN"; - } - else if( ( brace == "RETURN" ) ) - { - QRegExp openBrace( "\\b(FUNCTION|METHOD|PROCEDURE)\\b" ); - openBrace.setCaseSensitivity( Qt::CaseInsensitive ); - QRegExp closeBrace( "\\bRETURN\\b" ); - closeBrace.setCaseSensitivity( Qt::CaseInsensitive ); - matchPair( cursor, QRegExp(), openBrace, closeBrace, true, QTextDocument::FindWholeWords, false ); - return; - } - else if( ( brace == "CLASS" ) || ( brace == "ENDCLASS" ) ) - { - openBrace = "CLASS"; - closeBrace = "ENDCLASS"; - } - matchPair( cursor, brace, openBrace, closeBrace, true, QTextDocument::FindWholeWords ); - } - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::matchPair( QTextCursor cursor, QString brace, QString openBrace, QString closeBrace, bool bBraceAll, QTextDocument::FindFlags flags ) -{ - QTextDocument *doc = document(); - QTextCursor cursorC; - QTextCursor cursorO; - QTextCursor matches; - - if( brace == openBrace ) - { - cursorC = doc->find( closeBrace, cursor, flags ); - cursorO = doc->find( openBrace, cursor, flags ); - if( cursorO.isNull() ) - { - matches = cursorC; - } - else - { - while( cursorC.position() > cursorO.position() ) - { - cursorC = doc->find( closeBrace, cursorC, flags ); - cursorO = doc->find( openBrace, cursorO, flags ); - if( cursorO.isNull() ) - break; - } - matches = cursorC; - } - } - else if( brace == closeBrace ) - { - cursorO = doc->find( openBrace, cursor, QTextDocument::FindBackward | flags ); - cursorC = doc->find( closeBrace, cursor, QTextDocument::FindBackward | flags ); - if( cursorC.isNull() ) - { - matches = cursorO; - } - else - { - while( cursorO.position() < cursorC.position() ) - { - cursorO = doc->find( openBrace, cursorO, QTextDocument::FindBackward | flags ); - cursorC = doc->find( closeBrace, cursorC, QTextDocument::FindBackward | flags ); - if( cursorC.isNull() ) - break; - } - matches = cursorO; - } - } - if( ! matches.isNull() ) - { - if( bBraceAll ) - { - selection.cursor = cursor; - extraSelections.append( selection ); - } - selection.cursor = matches; - extraSelections.append( selection ); - setExtraSelections( extraSelections ); - } -} - -/*----------------------------------------------------------------------*/ - -void HBQPlainTextEdit::matchPair( QTextCursor cursor, QRegExp brace, QRegExp openBrace, QRegExp closeBrace, bool bBraceAll, QTextDocument::FindFlags flags, bool bForward ) -{ - QTextDocument *doc = document(); - QTextCursor cursorC; - QTextCursor cursorO; - QTextCursor matches; - Q_UNUSED( brace ); - - if( bForward ) - { - cursorC = doc->find( closeBrace, cursor, flags ); - cursorO = doc->find( openBrace, cursor, flags ); - if( cursorO.isNull() ) - { - matches = cursorC; - } - else - { - while( cursorC.position() > cursorO.position() ) - { - cursorC = doc->find( closeBrace, cursorC, flags ); - cursorO = doc->find( openBrace, cursorO, flags ); - if( cursorO.isNull() ) - break; - } - matches = cursorC; - } - } - else - { - cursorO = doc->find( openBrace, cursor, QTextDocument::FindBackward | flags ); - cursorC = doc->find( closeBrace, cursor, QTextDocument::FindBackward | flags ); - if( cursorC.isNull() ) - { - matches = cursorO; - } - else - { - while( cursorO.position() < cursorC.position() ) - { - cursorO = doc->find( openBrace, cursorO, QTextDocument::FindBackward | flags ); - cursorC = doc->find( closeBrace, cursorC, QTextDocument::FindBackward | flags ); - if( cursorC.isNull() ) - break; - } - matches = cursorO; - } - } - if( ! matches.isNull() ) - { - if( bBraceAll ) - { - selection.cursor = cursor; - extraSelections.append( selection ); - } - selection.cursor = matches; - extraSelections.append( selection ); - setExtraSelections( extraSelections ); - } -} -#endif diff --git a/harbour/contrib/hbqt/qtgui/hbqt_hbqplaintextedit.h b/harbour/contrib/hbqt/qtgui/hbqt_hbqplaintextedit.h deleted file mode 100644 index af9e89bc8d..0000000000 --- a/harbour/contrib/hbqt/qtgui/hbqt_hbqplaintextedit.h +++ /dev/null @@ -1,312 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2009 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#ifndef HBQT_HBQPLAINTEXTEDIT_H -#define HBQT_HBQPLAINTEXTEDIT_H - -#include "hbqt.h" - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "hbqt_hbqsyntaxhighlighter.h" - -class LineNumberArea; -class HorzRuler; - -class HBQPlainTextEdit : public QPlainTextEdit -{ - Q_OBJECT - -public: - HBQPlainTextEdit( QWidget * parent = 0 ); - ~HBQPlainTextEdit(); - - PHB_ITEM block; - QColor m_currentLineColor; - QColor m_lineAreaBkColor; - QColor m_horzRulerBkColor; - QColor m_selectionColor; - long m_matchingBegin; - long m_matchingEnd; - bool m_matchBracesAll; - int m_currentBlockNumber; - QColor m_braceHiliteColor; - - void paintEvent( QPaintEvent * event ); - void lineNumberAreaPaintEvent( QPaintEvent * event ); - void horzRulerPaintEvent( QPaintEvent * event ); - - HBQSyntaxHighlighter * highlighter; - - QString styleHightlighter; - void hbSetStyleHightlighter( const QString & style ); - QString hbGetStyleHightlighter() { return styleHightlighter; }; - void hbShowHighlighter( const QString & style, bool b ); - - int hbGetIndex( const QTextCursor &crQTextCursor ); - int hbGetLine( const QTextCursor &crQTextCursor ); - int hbLineNumberAreaWidth(); - int hbGetSpaces() { return spaces; }; - void hbSetSpaces( int newSpaces ); - void hbBookmarks( int block ); - void hbNextBookmark( int block ); - void hbPrevBookmark( int block ); - void hbGotoBookmark( int block ); - void hbHighlightCurrentLine( bool b ) { highlightCurLine = b; update(); }; - bool hbHighlightCurrentLine() { return highlightCurLine; }; - void hbSetEventBlock( PHB_ITEM pBlock ); - int horzRulerHeight; - void hbUpdateHorzRulerHeight( int height ); - void hbSetHighLighter( HBQSyntaxHighlighter * hilighter ){ highlighter = hilighter; }; - void hbHighlightPage(); - void hbPostSelectionInfo(); - - int firstVisibleBlockNumber() { return QPlainTextEdit::firstVisibleBlock().blockNumber(); }; - int lastVisibleBlockNumber(); - -private: - QVector bookMark; - QList bookMarksGoto; - QWidget * lineNumberArea; - QFrame * horzRuler; - int spaces; - bool numberBlock; - bool highlightCurLine; - QString spacesTab; - int posOpen; - int posClose; - QList extraSelections; - QTextEdit::ExtraSelection selection; - void hbBraceHighlight(); - - int rowBegins; - int rowEnds; - int columnBegins; - int columnEnds; - int selectionMode; - int selectionDisplay; - bool isStreamSelectionON; - bool isLineSelectionON; - bool isColumnSelectionON; - bool isTipActive; - QCompleter * c; - QCompleter * cFlds; - QBrush brushForBookmark( int index ); - bool isCursorInSelection(); - QTimer * timer; - int caretState; - bool isSelectionByApplication; - int hitTestRow; - int hitTestColumn; - QRect highlight; - bool isSelectionPersistent; - bool isShiftPressed; - bool isAliasCompleter; - bool isCodeCompletionActive; - bool isCompletionTipsActive; - bool isInDrag; - QPoint dragStartPosition; - QPoint clickPos; - int iClicks; - int mouseMode; - -protected: - bool event( QEvent * event ); - void resizeEvent( QResizeEvent * event ); - void mouseDoubleClickEvent( QMouseEvent * event ); - void mousePressEvent( QMouseEvent * event ); - void mouseReleaseEvent( QMouseEvent * event ); - void mouseMoveEvent( QMouseEvent * event ); - void focusInEvent( QFocusEvent * event ); - void keyPressEvent( QKeyEvent * event ); - void keyReleaseEvent( QKeyEvent * event ); - void dragEnterEvent( QDragEnterEvent * event ); - void dragMoveEvent( QDragMoveEvent * event ); - void dropEvent( QDropEvent * event ); - void hbHandleKey( QKeyEvent * event, int k, int selMode, bool shift ); - bool hbHandlePopup( QKeyEvent * event ); - -public slots: - QString hbTextAlias(); - void hbUpdateLineNumberAreaWidth( int newBlockCount ); - void hbCaseUpper(); - void hbCaseLower(); - void hbEscapeQuotes(); - void hbEscapeDQuotes(); - void hbUnescapeQuotes(); - void hbUnescapeDQuotes(); - void hbConvertQuotes(); - void hbConvertDQuotes(); - void hbDeleteLine(); - void hbMoveLine( int iDirection ); - void hbBlockIndent( int steps ); - void hbBlockComment(); - void hbStreamComment(); - void hbDuplicateLine(); - void hbReplaceSelection( const QString & txt ); - void hbInsertTab( int mode ); - QString hbGetSelectedText(); - QString hbTextUnderCursor( bool bCodeComplete = false ); - void hbNumberBlockVisible( bool b ); - bool hbNumberBlockVisible(); - void hbShowPrototype( const QString & tip, int rows, int cols ); - void hbSetCompleter( QCompleter * completer ) { c = completer; }; - void hbSetFldsCompleter( QCompleter * completer ) { cFlds = completer; }; - void hbSetCurrentLineColor( const QColor & color ) { m_currentLineColor = color; }; - void hbSetLineAreaBkColor( const QColor & color ) { m_lineAreaBkColor = color; }; - void hbRefresh(); - void hbCut( int key ); - void hbCopy(); - void hbPaste(); - void hbToStream(); - void hbSetSelectionMode( int mode, bool on ); - void hbSetSelectionInfo( PHB_ITEM selectionInfo ); - void hbSetSelectionColor( const QColor & color ); - void hbSetMatchBraces( bool all ){ m_matchBracesAll = all; }; - void hbGetViewportInfo(); - void hbApplyKey( int key, Qt::KeyboardModifiers modifiers = 0, const QString & txt = "" ); - void hbHighlightArea( int, int, int, int, int ); - void hbTogglePersistentSelection(); - void hbHorzRulerVisible( bool visible ) { hbUpdateHorzRulerHeight( visible ? 20 : 0 ); }; - void hbSelectAll(); - void hbSetFieldsListActive( bool active ) { isAliasCompleter = active; }; - void hbRefreshCompleter( const QString & alias = "" ); - void hbToggleCodeCompetion() { isCodeCompletionActive = ! isCodeCompletionActive; }; - void hbToggleCompetionTips() { isCompletionTipsActive = ! isCompletionTipsActive; }; - void matchPair( QTextCursor cursor, QString brace, QString openBrace, QString closeBrace, bool bBraceAll, QTextDocument::FindFlags flags ); - void matchPair( QTextCursor cursor, QRegExp brace, QRegExp openBrace, QRegExp closeBrace, bool bBraceAll, QTextDocument::FindFlags flags, bool bForward ); - -private slots: - void hbSlotCursorPositionChanged(); - void hbUpdateLineNumberArea( const QRect &, int ); - void hbUpdateHorzRuler( const QRect &, int ); - void hbPaintSelection( QPaintEvent * ); - void hbPaintHighlight( QPaintEvent * ); - bool hbKeyPressSelection( QKeyEvent * ); - void hbClearSelection(); - void hbUpdateCaret(); - void hbHitTest( const QPoint & ); - bool hbKeyPressSelectionByApplication( QKeyEvent * event ); - int hbFirstVisibleColumn(); - void hbDrawCursor( QPaintEvent * ); - QRect hbGetSelectionRect(); -}; - - -class LineNumberArea : public QWidget -{ -public: - LineNumberArea( HBQPlainTextEdit * editor = 0 ) : QWidget( editor ) - { - codeEditor = editor; - } - -protected: - QSize sizeHint() const - { - return QSize( codeEditor->hbLineNumberAreaWidth(), 0 ); - } - -private: - void paintEvent( QPaintEvent *event ) - { - codeEditor->lineNumberAreaPaintEvent( event ); - } - - HBQPlainTextEdit *codeEditor; -}; - - - -class HorzRuler : public QFrame -{ -public: - HorzRuler( HBQPlainTextEdit * editor = 0 ) : QFrame( editor ) - { - codeEditor = editor; - } - -protected: - QSize sizeHint() const - { - return QSize( codeEditor->viewport()->width(), codeEditor->horzRulerHeight ); - } - -private: - void paintEvent( QPaintEvent *event ) - { - codeEditor->horzRulerPaintEvent( event ); - } - - HBQPlainTextEdit *codeEditor; -}; - -#endif diff --git a/harbour/contrib/hbqt/qtgui/hbqt_hbqsyntaxhighlighter.cpp b/harbour/contrib/hbqt/qtgui/hbqt_hbqsyntaxhighlighter.cpp deleted file mode 100644 index dd268dae70..0000000000 --- a/harbour/contrib/hbqt/qtgui/hbqt_hbqsyntaxhighlighter.cpp +++ /dev/null @@ -1,443 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2009 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#include "hbqt.h" - -#if QT_VERSION >= 0x040500 - -#include "hbqt_hbqsyntaxhighlighter.h" -#include "hbqt_hbqplaintextedit.h" - -#include -#include -#include - -HBQTextBlockUserData::HBQTextBlockUserData() : QTextBlockUserData() -{ - state = -1; -} -HBQTextBlockUserData::~HBQTextBlockUserData() -{ -} -int HBQTextBlockUserData::hbSetState( int istate ) -{ - int iCurState = state; - state = istate; - return iCurState; -} -int HBQTextBlockUserData::hbState() -{ - return state; -} -HBQTextBlockUserData * HBQTextBlockUserData::data( const QTextBlock& block ) -{ - return static_cast( block.userData() ); -} - -/*----------------------------------------------------------------------*/ - -HBQSyntaxHighlighter::HBQSyntaxHighlighter( QTextDocument * parent ) - : QSyntaxHighlighter( parent ) -{ - HighlightingRule rule; - multiLineCommentFormat.setForeground( Qt::red ); - - commentStartExpression = QRegExp( "/\\*" ); - commentEndExpression = QRegExp( "\\*/" ); - commentSingleLine = QRegExp( "//[^\n]*|^[ ]*\\*[^\n]*" ); - patternQuotation = QRegExp( "\"[^\"]*\"|\'[^\']*\'" ); -// definedConstants = QRegExp( "\b(__[A-Za-z0-9_]+__)\b" ); - definedConstants = QRegExp( "__[A-Za-z0-9_]+__" ); - - initialized = false; - type = 0; - editor = NULL; - - constantsFormat.setForeground( QColor( 255, 153, 51 ) ); - constantsFormat.setFontWeight( 1000 ); - - //entryHeaderFormat.setForeground( Qt::red ); - entryHeaderFormat.setForeground( QColor( 255, 153, 51 ) ); - entryHeaderFormat.setFontWeight( 1000 ); - //entryHeaderFormat.setBackground( Qt::gray ); - - //entryTitleFormat.setForeground( Qt::darkBlue ); - entryTitleFormat.setForeground( QColor( 45, 187, 255 ) ); - entryTitleFormat.setFontItalic( true ); - //entryTitleFormat.setFontWeight( 1000 ); - - entrySourceFormat.setForeground( Qt::darkGreen ); - entrySourceFormat.setFontWeight( 1000 ); - - entryFixedFormat.setForeground( Qt::blue ); - entryFixedFormat.setFontItalic( true ); - - entryChangedFormat.setForeground( Qt::darkGray ); - entryChangedFormat.setFontItalic( true ); - - entryOptimizedFormat.setForeground( Qt::magenta ); - entryOptimizedFormat.setFontItalic( true ); - - entryAddedFormat.setForeground( Qt::green ); - entryAddedFormat.setFontItalic( true ); - - entryRemovedFormat.setForeground( Qt::red ); - entryRemovedFormat.setFontItalic( true ); - - entryCommentFormat.setForeground( Qt::green ); - entryCommentFormat.setFontItalic( true ); - - entryTodoFormat.setForeground( Qt::blue ); - entryTodoFormat.setFontItalic( true ); - - entryMovedFormat.setForeground( Qt::magenta ); - entryMovedFormat.setFontItalic( true ); - - entryHeaderRegExp = QRegExp( "^\\$\\<[0-9]*\\>[^\n]*" ); - entryTitleRegExp = QRegExp( "^[ ]*\\#[^\n]*" ); - entrySourceRegExp = QRegExp( "^[ ]*\\*[^\n]*" ); - entryFixedRegExp = QRegExp( "^[ ]*\\! Fixed " ); - entryChangedRegExp = QRegExp( "^[ ]*\\* Changed" ); - entryOptimizedRegExp = QRegExp( "^[ ]*\\% Optimzd" ); - entryAddedRegExp = QRegExp( "^[ ]*\\+ Added " ); - entryRemovedRegExp = QRegExp( "^[ ]*\\- Removed" ); - entryCommentRegExp = QRegExp( "^[ ]*\\; Comment" ); - entryTodoRegExp = QRegExp( "^[ ]*\\@ TODO " ); - entryMovedRegExp = QRegExp( "^[ ]*\\| Moved " ); - - isEntry = QRegExp( "^[ ]*\\||^[ ]*\\@|^[ ]*\\;|^[ ]*\\-|^[ ]*\\+|^[ ]*\\%|^[ ]*\\&|^[ ]*\\!|^[ ]*\\*|^[ ]*\\#|^\\$" ); -} - -void HBQSyntaxHighlighter::hbSetRule( QString name, QString pattern, const QTextCharFormat & format ) -{ - if( pattern != "" ) - HighlightingRules.insert( name, HighlightingRule( QRegExp( pattern ), format ) ); - else - HighlightingRules.remove( name ); -} -void HBQSyntaxHighlighter::hbSetRuleWithRegExp( QString name, const QRegExp & reg, const QTextCharFormat & format ) -{ - HighlightingRules.insert( name, HighlightingRule( reg, format ) ); -} -void HBQSyntaxHighlighter::hbSetFormat( QString name, const QTextCharFormat & format ) -{ - if( ( QString ) "TerminatedStrings" == name ) - { - quotationFormat = format; - } - else - { - if( HighlightingRules.contains( name ) ) - { - HighlightingRule rule = HighlightingRules.value( name ); - QRegExp reg = rule.pattern; - HighlightingRules.insert( name, HighlightingRule( reg, format ) ); - } - else - { - HighlightingRules.remove( name ); - } - } -} -void HBQSyntaxHighlighter::hbSetMultiLineCommentFormat( const QTextCharFormat & format ) -{ - multiLineCommentFormat = format; -} -void HBQSyntaxHighlighter::hbSetSingleLineCommentFormat( const QTextCharFormat & format ) -{ - singleLineCommentFormat = format; -} - -void HBQSyntaxHighlighter::hbSetFormatColumnSelection( int start, int count, const QColor & color ) -{ - setFormat( start, count, color ); -} - -void HBQSyntaxHighlighter::highlightBlock( const QString &text ) -{ - if( type == 0 ) /* PRG C C++ Sources */ - { - if( ! initialized ) - return; - - if( editor ) - { - int iFirstBlock = editor->firstVisibleBlockNumber(); - int iLastBlock = editor->lastVisibleBlockNumber(); - int iBlock = currentBlock().blockNumber(); - - if( iBlock < iFirstBlock || iBlock > iLastBlock ) - { - return; - } - } - - int index = 0; - int length = 0; - - foreach( const HighlightingRule &rule, HighlightingRules ) - { - index = rule.pattern.indexIn( text ); - while( index >= 0 ) - { - length = rule.pattern.matchedLength(); - setFormat( index, length, rule.format ); - index = rule.pattern.indexIn( text, index + length ); - } - } - - /* Defined constants */ - index = definedConstants.indexIn( text ); - while( index >= 0 ) - { - length = definedConstants.matchedLength(); - setFormat( index, length, constantsFormat ); - index = definedConstants.indexIn( text, index + length ); - } - - /* Multi Line Comments - to ascertain if it is embedded in quotes */ - int startIndex = 0; - int startSglLine = 0; - if( previousBlockState() != 1 ) - { - startIndex = commentStartExpression.indexIn( text ); - startSglLine = commentSingleLine.indexIn( text ); - } - - /* Quoted text */ - index = patternQuotation.indexIn( text ); - while( index >= 0 ) - { - length = patternQuotation.matchedLength(); - setFormat( index, length, quotationFormat ); - if( startIndex > index && startIndex < index + length ) - { - startIndex = -1; - } - if( startSglLine > index && startSglLine < index + length ) - { - startSglLine = -1; - } - index = patternQuotation.indexIn( text, index + length ); - } - - /* Single Line Comments */ - if( startSglLine >= 0 ) - { - index = commentSingleLine.indexIn( text ); - while( index >= 0 ) - { - length = commentSingleLine.matchedLength(); - setFormat( index, length, singleLineCommentFormat ); - index = commentSingleLine.indexIn( text, index + length ); - } - } - /* Multi Line Comments - continued */ - setCurrentBlockState( 0 ); - - while( startIndex >= 0 ) - { - int commentLength; - int endIndex = commentEndExpression.indexIn( text, startIndex ); - if( endIndex == -1 ) - { - setCurrentBlockState( 1 ); - commentLength = text.length() - startIndex; - } - else - { - commentLength = endIndex - startIndex + commentEndExpression.matchedLength(); - } - setFormat( startIndex, commentLength, multiLineCommentFormat ); - startIndex = commentStartExpression.indexIn( text, startIndex + commentLength ); - } - } - else if( type == 1 ) /* ChangeLog */ - { - int index, length; - - index = isEntry.indexIn( text ); - if( index >= 0 ) - { - /* Single Line Comments */ - index = entryHeaderRegExp.indexIn( text ); - if( index >= 0 ) - { - length = entryHeaderRegExp.matchedLength(); - setFormat( index, length, entryHeaderFormat ); - } - else - { - index = entryTitleRegExp.indexIn( text ); - if( index >= 0 ) - { - length = entryTitleRegExp.matchedLength(); - setFormat( index, length, entryTitleFormat ); - } - else - { - index = entryChangedRegExp.indexIn( text ); - if( index >= 0 ) - { - length = entryChangedRegExp.matchedLength(); - setFormat( index, length, entryChangedFormat ); - } - else - { - index = entryFixedRegExp.indexIn( text ); - if( index >= 0 ) - { - length = entryFixedRegExp.matchedLength(); - setFormat( index, length, entryFixedFormat ); - } - else - { - index = entrySourceRegExp.indexIn( text ); - if( index >= 0 ) - { - length = entrySourceRegExp.matchedLength(); - setFormat( index, length, entrySourceFormat ); - } - else - { - index = entryOptimizedRegExp.indexIn( text ); - if( index >= 0 ) - { - length = entryOptimizedRegExp.matchedLength(); - setFormat( index, length, entryOptimizedFormat ); - } - else - { - index = entryAddedRegExp.indexIn( text ); - if( index >= 0 ) - { - length = entryAddedRegExp.matchedLength(); - setFormat( index, length, entryAddedFormat ); - } - else - { - index = entryRemovedRegExp.indexIn( text ); - if( index >= 0 ) - { - length = entryRemovedRegExp.matchedLength(); - setFormat( index, length, entryRemovedFormat ); - } - else - { - index = entryCommentRegExp.indexIn( text ); - if( index >= 0 ) - { - length = entryCommentRegExp.matchedLength(); - setFormat( index, length, entryCommentFormat ); - } - else - { - index = entryTodoRegExp.indexIn( text ); - if( index >= 0 ) - { - length = entryTodoRegExp.matchedLength(); - setFormat( index, length, entryTodoFormat ); - } - else - { - index = entryMovedRegExp.indexIn( text ); - if( index >= 0 ) - { - length = entryMovedRegExp.matchedLength(); - setFormat( index, length, entryMovedFormat ); - } - else - { - } - } - } - } - } - } - } - } - } - } - } - } -#if 0 - /* Multi Line Comments */ - int startIndex = 0; - if( previousBlockState() != 1 ) - { - startIndex = commentStartExpression.indexIn( text ); - } - /* Multi Line Comments - continued */ - setCurrentBlockState( 0 ); - - while( startIndex >= 0 ) - { - int commentLength; - int endIndex = commentEndExpression.indexIn( text, startIndex ); - if( endIndex == -1 ) - { - setCurrentBlockState( 1 ); - commentLength = text.length() - startIndex; - } - else - { - commentLength = endIndex - startIndex + commentEndExpression.matchedLength(); - } - setFormat( startIndex, commentLength, multiLineCommentFormat ); - startIndex = commentStartExpression.indexIn( text, startIndex + commentLength ); - } -#endif - } -} - -#endif - diff --git a/harbour/contrib/hbqt/qtgui/hbqt_hbqsyntaxhighlighter.h b/harbour/contrib/hbqt/qtgui/hbqt_hbqsyntaxhighlighter.h deleted file mode 100644 index 6531e694e7..0000000000 --- a/harbour/contrib/hbqt/qtgui/hbqt_hbqsyntaxhighlighter.h +++ /dev/null @@ -1,207 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2009 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#ifndef HBQSYNTAXHIGHLIGHTER_H -#define HBQSYNTAXHIGHLIGHTER_H - -#include "hbqt.h" - -/*----------------------------------------------------------------------*/ - -#include -#include -#include - -class QTextDocument; -class HBQPlainTextEdit; - -class HBQTextBlockUserData : public QTextBlockUserData -{ - -public: - HBQTextBlockUserData(); - ~HBQTextBlockUserData(); - - HBQTextBlockUserData * data( const QTextBlock& block ); - - int hbSetState( int state ); - int hbState(); - - int state; -}; - -/*----------------------------------------------------------------------*/ - -class HBQSyntaxHighlighter : public QSyntaxHighlighter -{ - Q_OBJECT - -public: - HBQSyntaxHighlighter( QTextDocument *parent = 0 ); - - HBQPlainTextEdit * editor; - bool initialized; - int type; - - void hbSetMultiLineCommentFormat( const QTextCharFormat & format ); - void hbSetSingleLineCommentFormat( const QTextCharFormat & format ); - void hbSetRule( QString name, QString pattern, const QTextCharFormat & format ); - void hbSetFormat( QString name, const QTextCharFormat & format ); - void hbSetFormatColumnSelection( int start, int count, const QColor & color ); - void hbSetRuleWithRegExp( QString name, const QRegExp & reg, const QTextCharFormat & format ); - void hbSetEditor( HBQPlainTextEdit * edit ){ editor = edit; }; - void hbSetEditor( QPlainTextEdit * edit ){ editor = ( HBQPlainTextEdit * ) edit; }; - void hbSetInitialized( bool bInit ){ initialized = bInit; }; - void hbSetType( int ty ){ type = ty; }; - -protected: - void highlightBlock( const QString &text ); - - struct HighlightingRule - { - QRegExp pattern; - QTextCharFormat format; - - HighlightingRule() {;} - - HighlightingRule( QRegExp _pattern, const QTextCharFormat & _format ) - { - pattern = _pattern; - format = _format; - } - }; - QMap< QString, HighlightingRule > HighlightingRules; - -protected: - - QRegExp commentStartExpression; - QRegExp commentEndExpression; - QRegExp commentSingleLine; - QRegExp patternQuotation; - QRegExp definedConstants; - - QTextCharFormat constantsFormat; - QTextCharFormat keywordFormat; - QTextCharFormat classFormat; - QTextCharFormat singleLineCommentFormat; - QTextCharFormat multiLineCommentFormat; - QTextCharFormat quotationFormat; - QTextCharFormat functionFormat; - QTextCharFormat directivesFormat; - - QTextCharFormat entryHeaderFormat; - QTextCharFormat entryTitleFormat; - QTextCharFormat entrySourceFormat; - QTextCharFormat entryFixedFormat; - QTextCharFormat entryChangedFormat; - QTextCharFormat entryOptimizedFormat; - QTextCharFormat entryAddedFormat; - QTextCharFormat entryRemovedFormat; - QTextCharFormat entryCommentFormat; - QTextCharFormat entryTodoFormat; - QTextCharFormat entryMovedFormat; - - QRegExp entryHeaderRegExp; - QRegExp entryTitleRegExp; - QRegExp entrySourceRegExp; - QRegExp entryFixedRegExp; - QRegExp entryChangedRegExp; - QRegExp entryOptimizedRegExp; - QRegExp entryAddedRegExp; - QRegExp entryRemovedRegExp; - QRegExp entryCommentRegExp; - QRegExp entryTodoRegExp; - QRegExp entryMovedRegExp; - - QRegExp isEntry; - -}; - -/*----------------------------------------------------------------------*/ -/* -class Highlighter : public QSyntaxHighlighter -{ Q_OBJECT - - public: - Highlighter(QTextDocument *parent = 0); - void SetRule(QString name,QString pattern,QTextCharFormat format); - - protected: - void highlightBlock(const QString &text); - struct HighlightingRule - { - HighlightingRule() {} - HighlightingRule(QRegExp _pattern,QTextCharFormat _format) {pattern = _pattern;format = _format;} - QRegExp pattern; - QTextCharFormat format; - }; - QMap highlightingRules; -}; - -class MultiLineCommentHighlighter : public Highlighter -{ Q_OBJECT - public: - MultiLineCommentHighlighter(QTextDocument *parent = 0); - protected: - void highlightBlock(const QString &text); - QRegExp commentStartExpression; - QRegExp commentEndExpression; - QTextCharFormat multiLineCommentFormat; -}; - -class CppHighlighter : public MultiLineCommentHighlighter -{ Q_OBJECT - public: - CppHighlighter(QTextDocument *parent = 0); -}; l -*/ -#endif diff --git a/harbour/contrib/hbqt/qtgui/hbqt_hbqtableview.cpp b/harbour/contrib/hbqt/qtgui/hbqt_hbqtableview.cpp deleted file mode 100644 index e31030a55c..0000000000 --- a/harbour/contrib/hbqt/qtgui/hbqt_hbqtableview.cpp +++ /dev/null @@ -1,161 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#include "hbqt.h" - -#include "hbapiitm.h" -#include "hbvm.h" - -#if QT_VERSION >= 0x040500 - -#include "hbqt_hbqtableview.h" - -#include - - -HBQTableView::HBQTableView( QWidget * parent ) : QTableView( parent ) -{ - block = NULL; -} - -HBQTableView::~HBQTableView() -{ - if( block ) - { - hb_itemRelease( block ); - block = NULL; - } -} - -void HBQTableView::hbSetBlock( PHB_ITEM b ) -{ - if( b ) - { - if( block ) - { - hb_itemRelease( block ); - } - block = hb_itemNew( b ); - // hb_gcUnlock( block ); - } -} - -void HBQTableView::mousePressEvent( QMouseEvent * event ) -{ - if( block ) - { - PHB_ITEM p0 = hb_itemPutNI( NULL, QEvent::MouseButtonPress ); - PHB_ITEM p1 = hbqt_bindGetHbObject( NULL, ( void * ) event, "HB_QMOUSEEVENT", NULL, 0 ); - hb_vmEvalBlockV( block, 2, p0, p1 ); - hb_itemRelease( p0 ); - hb_itemRelease( p1 ); - } - QTableView::mousePressEvent( event ); -} - -void HBQTableView::mouseDoubleClickEvent( QMouseEvent * event ) -{ - if( block ) - { - PHB_ITEM p0 = hb_itemPutNI( NULL, QEvent::MouseButtonDblClick ); - PHB_ITEM p1 = hbqt_bindGetHbObject( NULL, ( void * ) event, "HB_QMOUSEEVENT", NULL, 0 ); - hb_vmEvalBlockV( block, 2, p0, p1 ); - hb_itemRelease( p0 ); - hb_itemRelease( p1 ); - } - QTableView::mouseDoubleClickEvent( event ); -} - -void HBQTableView::wheelEvent( QWheelEvent * event ) -{ - if( block ) - { - PHB_ITEM p0 = hb_itemPutNI( NULL, QEvent::Wheel ); - PHB_ITEM p1 = hbqt_bindGetHbObject( NULL, ( void * ) event, "HB_QWHEELEVENT", NULL, 0 ); - hb_vmEvalBlockV( block, 2, p0, p1 ); - hb_itemRelease( p0 ); - hb_itemRelease( p1 ); - } - QTableView::wheelEvent( event ); -} - -void HBQTableView::scrollContentsBy( int x, int y ) -{ - if( block ) - { - PHB_ITEM p0 = hb_itemPutNI( NULL, HBQT_HBQTABLEVIEW_scrollContentsBy ); - PHB_ITEM p1 = hb_itemPutNI( NULL, x ); - PHB_ITEM p2 = hb_itemPutNI( NULL, y ); - hb_vmEvalBlockV( block, 3, p0, p1, p2 ); - hb_itemRelease( p0 ); - hb_itemRelease( p1 ); - hb_itemRelease( p2 ); - } - QTableView::scrollContentsBy( x, y ); -} - -QModelIndex HBQTableView::moveCursor( HBQTableView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers ) -{ - return QTableView::moveCursor( cursorAction, modifiers ); -} - -QModelIndex HBQTableView::navigate( int cursorAction ) -{ - return moveCursor( ( HBQTableView::CursorAction ) cursorAction, ( Qt::KeyboardModifiers ) 0 ); -} - -void HBQTableView::scrollTo( const QModelIndex & index, QAbstractItemView::ScrollHint hint ) -{ - QTableView::scrollTo( index, hint ); -} - -#endif diff --git a/harbour/contrib/hbqt/qtgui/hbqt_hbqtableview.h b/harbour/contrib/hbqt/qtgui/hbqt_hbqtableview.h deleted file mode 100644 index a8153782c3..0000000000 --- a/harbour/contrib/hbqt/qtgui/hbqt_hbqtableview.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#ifndef HBQT_HBQTABLEVIEW_H -#define HBQT_HBQTABLEVIEW_H - -#include "hbqt.h" - -#include -#include - -#define HBQT_HBQTABLEVIEW_scrollContentsBy 1 - -/*----------------------------------------------------------------------*/ - -class HBQTableView : public QTableView -{ - Q_OBJECT - -public: - HBQTableView( QWidget * parent = 0 ); - virtual ~HBQTableView(); - - PHB_ITEM block; - -public slots: - void hbSetBlock( PHB_ITEM b ); - - void mousePressEvent( QMouseEvent * event ); - void mouseDoubleClickEvent( QMouseEvent * event ); - void wheelEvent( QWheelEvent * event ); - void scrollContentsBy( int x, int y ); - - void scrollTo( const QModelIndex & index, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible ); - QModelIndex navigate( int cursorAction ); - QModelIndex moveCursor( HBQTableView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers ); -}; - -/*----------------------------------------------------------------------*/ - -#endif diff --git a/harbour/contrib/hbqt/qtgui/hbqt_init.cpp b/harbour/contrib/hbqt/qtgui/hbqt_init.cpp deleted file mode 100644 index be608c9dbb..0000000000 --- a/harbour/contrib/hbqt/qtgui/hbqt_init.cpp +++ /dev/null @@ -1,853 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2009 Marcos Antonio Gambeta (marcosgambeta at gmail dot com) - * Copyright 2009 Pritpal Bedi (pritpal@vouchcac.com) - * Copyright 2010 Viktor Szakats (harbour syenar.net) - * Copyright 2010 Francesco Perillo () - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ - -#include "hbqt.h" -#include "hbqtinit.h" - -#include "hbapierr.h" -#include "hbapiitm.h" -#include "hbvm.h" -#include "hbinit.h" - -#if QT_VERSION >= 0x040500 - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - - -HB_EXTERN_BEGIN - -extern void hbqt_del_QObject( void * pObj, int iFlags ); -extern void hbqt_del_QColor( void * pObj, int iFlags ); -extern void hbqt_del_QItemSelection( void * pObj, int iFlags ); -extern void hbqt_del_QTextCharFormat( void * pObj, int iFlags ); -extern void hbqt_del_QFont( void * pObj, int iFlags ); -extern void hbqt_del_QTextCursor( void * pObj, int iFlags ); -extern void hbqt_del_QTextBlock( void * pObj, int iFlags ); -extern void hbqt_del_QAbstractButton( void * pObj, int iFlags ); -extern void hbqt_del_QAction( void * pObj, int iFlags ); -extern void hbqt_del_QMdiSubWindow( void * pObj, int iFlags ); -extern void hbqt_del_QPrinter( void * pObj, int iFlags ); -extern void hbqt_del_QStandardItem( void * pObj, int iFlags ); -extern void hbqt_del_QListWidgetItem( void * pObj, int iFlags ); -extern void hbqt_del_QTreeWidgetItem( void * pObj, int iFlags ); -extern void hbqt_del_QTableWidgetItem( void * pObj, int iFlags ); -extern void hbqt_del_QWidget( void * pObj, int iFlags ); -extern void hbqt_del_QRect( void * pObj, int iFlags ); -// -extern void hbqt_del_QActionEvent( void * pObj, int iFlags ); -extern void hbqt_del_QContextMenuEvent( void * pObj, int iFlags ); -extern void hbqt_del_QDragEnterEvent( void * pObj, int iFlags ); -extern void hbqt_del_QDragLeaveEvent( void * pObj, int iFlags ); -extern void hbqt_del_QDropEvent( void * pObj, int iFlags ); -extern void hbqt_del_QEvent( void * pObj, int iFlags ); -extern void hbqt_del_QFocusEvent( void * pObj, int iFlags ); -extern void hbqt_del_QGraphicsSceneContextMenuEvent( void * pObj, int iFlags ); -extern void hbqt_del_QGraphicsSceneMouseEvent( void * pObj, int iFlags ); -extern void hbqt_del_QGraphicsSceneDragDropEvent( void * pObj, int iFlags ); -extern void hbqt_del_QGraphicsSceneHoverEvent( void * pObj, int iFlags ); -extern void hbqt_del_QGraphicsSceneMoveEvent( void * pObj, int iFlags ); -extern void hbqt_del_QGraphicsSceneResizeEvent( void * pObj, int iFlags ); -extern void hbqt_del_QGraphicsSceneWheelEvent( void * pObj, int iFlags ); -extern void hbqt_del_QHelpEvent( void * pObj, int iFlags ); -extern void hbqt_del_QHideEvent( void * pObj, int iFlags ); -extern void hbqt_del_QHoverEvent( void * pObj, int iFlags ); -extern void hbqt_del_QInputMethodEvent( void * pObj, int iFlags ); -extern void hbqt_del_QKeyEvent( void * pObj, int iFlags ); -extern void hbqt_del_QMouseEvent( void * pObj, int iFlags ); -extern void hbqt_del_QMoveEvent( void * pObj, int iFlags ); -extern void hbqt_del_QPaintEvent( void * pObj, int iFlags ); -extern void hbqt_del_QResizeEvent( void * pObj, int iFlags ); -extern void hbqt_del_QShortcutEvent( void * pObj, int iFlags ); -extern void hbqt_del_QShowEvent( void * pObj, int iFlags ); -extern void hbqt_del_QWheelEvent( void * pObj, int iFlags ); -extern void hbqt_del_QWindowStateChangeEvent( void * pObj, int iFlags ); -extern void hbqt_del_QCloseEvent( void * pObj, int iFlags ); - -HB_EXTERN_END - -/*----------------------------------------------------------------------*/ - -static void hbqt_SlotsExecQColor( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QColor( ( *reinterpret_cast< QColor( * ) >( arguments[ 1 ] ) ) ), "HB_QCOLOR", hbqt_del_QColor, HBQT_BIT_OWNER ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecItemSelItemSel( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QItemSelection( ( *reinterpret_cast< QItemSelection( * ) >( arguments[ 1 ] ) ) ), "HB_QITEMSELECTION", hbqt_del_QObject, HBQT_BIT_OWNER ); - if( p0 ) - { - PHB_ITEM p1 = hbqt_bindGetHbObject( NULL, new QItemSelection( ( *reinterpret_cast< QItemSelection( * ) >( arguments[ 2 ] ) ) ), "HB_QITEMSELECTION", hbqt_del_QObject, HBQT_BIT_OWNER ) ; - if( p1 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmPush( p1 ); - hb_vmSend( 2 ); - hb_itemRelease( p1 ); - } - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecQTextCharFormat( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QTextCharFormat( ( *reinterpret_cast< QTextCharFormat( * ) >( arguments[ 1 ] ) ) ), "HB_QTEXTCHARFORMAT", hbqt_del_QTextCharFormat, HBQT_BIT_OWNER ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecQFont( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QFont( ( *reinterpret_cast< QFont( * ) >( arguments[ 1 ] ) ) ), "HB_QFONT", hbqt_del_QFont, HBQT_BIT_OWNER ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecQTextCursor( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QTextCursor( ( *reinterpret_cast< QTextCursor( * ) >( arguments[ 1 ] ) ) ), "HB_QTEXTCURSOR", hbqt_del_QTextCursor, HBQT_BIT_OWNER ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecQTextBlock( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QTextBlock( *reinterpret_cast< QTextBlock( * ) >( arguments[ 1 ] ) ), "HB_QTEXTBLOCK", hbqt_del_QTextBlock, HBQT_BIT_OWNER ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } -} - -static void hbqt_SlotsExecQAbstractButton( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - QAbstractButton * obj = ( QAbstractButton * ) arguments[ 1 ]; - if( obj ) - { - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QWidget( obj ), "HB_QABSTRACTBUTTON", hbqt_del_QWidget, HBQT_BIT_OWNER | HBQT_BIT_QOBJECT ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } - } -} - -static void hbqt_SlotsExecQAction( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - QAction * obj = ( QAction * ) arguments[ 1 ]; - if( obj ) - { - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QAction( obj ), "HB_QACTION", hbqt_del_QAction, HBQT_BIT_OWNER | HBQT_BIT_QOBJECT ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } - } -} - -static void hbqt_SlotsExecQMdiSubWindow( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - void * obj = *reinterpret_cast< void*( * ) >( arguments[ 1 ] ); - if( obj ) - { - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, obj , "HB_QMDISUBWINDOW", NULL, HBQT_BIT_QOBJECT ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } - } -} - -static void hbqt_SlotsExecQTreeWidgetItem( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - void * obj = *reinterpret_cast< void*( * ) >( arguments[ 1 ] ); - if( obj ) - { - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, obj , "HB_QTREEWIDGETITEM", NULL, HBQT_BIT_NONE ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } - } -} - -static void hbqt_SlotsExecQTreeWidgetItemInt( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - void * obj = *reinterpret_cast< void*( * ) >( arguments[ 1 ] ); - if( obj ) - { - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, obj, "HB_QTREEWIDGETITEM", NULL, HBQT_BIT_NONE ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 2 ] ) ); - hb_vmSend( 2 ); - hb_itemRelease( p0 ); - } - } -} - -static void hbqt_SlotsExecQPrinter( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - void * obj = *reinterpret_cast< void*( * ) >( arguments[ 1 ] ); - if( obj ) - { - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, obj, "HB_QPRINTER", NULL, HBQT_BIT_NONE ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } - } -} - -static void hbqt_SlotsExecQStandardItem( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - void * obj = *reinterpret_cast< void*( * ) >( arguments[ 1 ] ); - if( obj ) - { - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, obj, "HB_QSTANDARDITEM", NULL, HBQT_BIT_NONE ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } - } -} - -static void hbqt_SlotsExecQListWidgetItem( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - void * obj = *reinterpret_cast< void*( * ) >( arguments[ 1 ] ); - if( obj ) - { - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, obj, "HB_QLISTWIDGETITEM", NULL, HBQT_BIT_NONE ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } - } -} - -static void hbqt_SlotsExecQListWidgetItemQListWidgetItem( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - void * obj = *reinterpret_cast< void*( * ) >( arguments[ 1 ] ); - if( obj ) - { - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, obj, "HB_QLISTWIDGETITEM", NULL, HBQT_BIT_NONE ); - if( p0 ) - { - PHB_ITEM p1 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 2 ] ) , "HB_QLISTWIDGETITEM", NULL, HBQT_BIT_NONE ); - if( p1 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmPush( p1 ); - hb_vmSend( 2 ); - hb_itemRelease( p1 ); - } - hb_itemRelease( p0 ); - } - } -} - -static void hbqt_SlotsExecQTableWidgetItem( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - void * obj = *reinterpret_cast< void*( * ) >( arguments[ 1 ] ); - if( obj ) - { - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, obj, "HB_QTABLEWIDGETITEM", NULL, HBQT_BIT_NONE ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } - } -} - -static void hbqt_SlotsExecQTableWidgetItemQTableWidgetItem( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - void * obj = *reinterpret_cast< void*( * ) >( arguments[ 1 ] ); - if( obj ) - { - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, obj, "HB_QTABLEWIDGETITEM", NULL, HBQT_BIT_NONE ); - if( p0 ) - { - PHB_ITEM p1 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 2 ] ) , "HB_QTABLEWIDGETITEM", NULL, HBQT_BIT_NONE ); - if( p1 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmPush( p1 ); - hb_vmSend( 2 ); - hb_itemRelease( p1 ); - } - hb_itemRelease( p0 ); - } - } -} - -static void hbqt_SlotsExecQTreeWidgetItemQTreeWidgetItem( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - void * obj = *reinterpret_cast< void*( * ) >( arguments[ 1 ] ); - if( obj ) - { - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, obj, "HB_QTREEWIDGETITEM", NULL, HBQT_BIT_NONE ); - if( p0 ) - { - PHB_ITEM p1 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 2 ] ) , "HB_QTREEWIDGETITEM", NULL, HBQT_BIT_NONE ); - if( p1 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmPush( p1 ); - hb_vmSend( 2 ); - hb_itemRelease( p1 ); - } - hb_itemRelease( p0 ); - } - } -} - -static void hbqt_SlotsExecQWidget( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - void * obj = *reinterpret_cast< void*( * ) >( arguments[ 1 ] ); - if( obj ) - { - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, obj, "HB_QWIDGET", NULL, HBQT_BIT_QOBJECT ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmSend( 1 ); - hb_itemRelease( p0 ); - } - } -} - -static void hbqt_SlotsExecQWidgetQWidget( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - void * obj = *reinterpret_cast< void*( * ) >( arguments[ 1 ] ); - if( obj ) - { - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, obj, "HB_QWIDGET", NULL, HBQT_BIT_QOBJECT ); - if( p0 ) - { - PHB_ITEM p1 = hbqt_bindGetHbObject( NULL, *reinterpret_cast< void*( * ) >( arguments[ 2 ] ) , "HB_QWIDGET", NULL, HBQT_BIT_QOBJECT ); - if( p1 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmPush( p1 ); - hb_vmSend( 2 ); - hb_itemRelease( p1 ); - } - hb_itemRelease( p0 ); - } - } -} - -static void hbqt_SlotsExecQWidgetInt( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - void * obj = *reinterpret_cast< void*( * ) >( arguments[ 1 ] ); - if( obj ) - { - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, obj, "HB_QWIDGET", NULL, HBQT_BIT_QOBJECT ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 2 ] ) ); - hb_vmSend( 2 ); - hb_itemRelease( p0 ); - } - } -} - -static void hbqt_SlotsExecQRectInt( PHB_ITEM * codeBlock, void ** arguments, QStringList pList ) -{ - Q_UNUSED( pList ); - PHB_ITEM p0 = hbqt_bindGetHbObject( NULL, new QRect( ( *reinterpret_cast< QRect( * ) >( arguments[ 1 ] ) ) ), "HB_QRECT", hbqt_del_QRect, HBQT_BIT_OWNER ); - if( p0 ) - { - hb_vmPushEvalSym(); - hb_vmPush( codeBlock ); - hb_vmPush( p0 ); - hb_vmPushInteger( *reinterpret_cast< int( * ) >( arguments[ 2 ] ) ); - hb_vmSend( 2 ); - hb_itemRelease( p0 ); - } -} - - -HB_FUNC_EXTERN( HB_QABSTRACTBUTTON ); -HB_FUNC_EXTERN( HB_QACTION ); -HB_FUNC_EXTERN( HB_QMDISUBWINDOW ); -HB_FUNC_EXTERN( HB_QPRINTER ); -HB_FUNC_EXTERN( HB_QSTANDARDITEM ); -HB_FUNC_EXTERN( HB_QLISTWIDGETITEM ); -HB_FUNC_EXTERN( HB_QTABLEWIDGETITEM ); -HB_FUNC_EXTERN( HB_QTREEWIDGETITEM ); - -/*----------------------------------------------------------------------*/ - -HB_FUNC_EXTERN( HB_QACTIONEVENT ); -HB_FUNC_EXTERN( HB_QCONTEXTMENUEVENT ); -HB_FUNC_EXTERN( HB_QDRAGENTEREVENT ); -HB_FUNC_EXTERN( HB_QDRAGLEAVEEVENT ); -HB_FUNC_EXTERN( HB_QDRAGMOVEEVENT ); -HB_FUNC_EXTERN( HB_QDROPEVENT ); -HB_FUNC_EXTERN( HB_QEVENT ); -HB_FUNC_EXTERN( HB_QFOCUSEVENT ); -HB_FUNC_EXTERN( HB_QFOCUSEVENT ); -HB_FUNC_EXTERN( HB_QGRAPHICSSCENECONTEXTMENUEVENT ); -HB_FUNC_EXTERN( HB_QGRAPHICSSCENEDRAGDROPEVENT ); -HB_FUNC_EXTERN( HB_QGRAPHICSSCENEHOVEREVENT ); -HB_FUNC_EXTERN( HB_QGRAPHICSSCENEMOUSEEVENT ); -HB_FUNC_EXTERN( HB_QGRAPHICSSCENEMOVEEVENT ); -HB_FUNC_EXTERN( HB_QGRAPHICSSCENERESIZEEVENT ); -HB_FUNC_EXTERN( HB_QGRAPHICSSCENEWHEELEVENT ); -HB_FUNC_EXTERN( HB_QHELPEVENT ); -HB_FUNC_EXTERN( HB_QHIDEEVENT ); -HB_FUNC_EXTERN( HB_QHOVEREVENT ); -HB_FUNC_EXTERN( HB_QINPUTMETHODEVENT ); -HB_FUNC_EXTERN( HB_QKEYEVENT ); -HB_FUNC_EXTERN( HB_QMOUSEEVENT ); -HB_FUNC_EXTERN( HB_QMOVEEVENT ); -HB_FUNC_EXTERN( HB_QPAINTEVENT ); -HB_FUNC_EXTERN( HB_QRESIZEEVENT ); -HB_FUNC_EXTERN( HB_QSHORTCUTEVENT ); -HB_FUNC_EXTERN( HB_QSHOWEVENT ); -HB_FUNC_EXTERN( HB_QWHEELEVENT ); -HB_FUNC_EXTERN( HB_QWINDOWSTATECHANGEEVENT ); - -void _hbqtgui_force_link_for_event( void ) -{ - HB_FUNC_EXEC( HB_QACTIONEVENT ); - HB_FUNC_EXEC( HB_QCONTEXTMENUEVENT ); - HB_FUNC_EXEC( HB_QDRAGENTEREVENT ); - HB_FUNC_EXEC( HB_QDRAGLEAVEEVENT ); - HB_FUNC_EXEC( HB_QDRAGMOVEEVENT ); - HB_FUNC_EXEC( HB_QDROPEVENT ); - HB_FUNC_EXEC( HB_QEVENT ); - HB_FUNC_EXEC( HB_QFOCUSEVENT ); - HB_FUNC_EXEC( HB_QFOCUSEVENT ); - HB_FUNC_EXEC( HB_QGRAPHICSSCENECONTEXTMENUEVENT ); - HB_FUNC_EXEC( HB_QGRAPHICSSCENEDRAGDROPEVENT ); - HB_FUNC_EXEC( HB_QGRAPHICSSCENEHOVEREVENT ); - HB_FUNC_EXEC( HB_QGRAPHICSSCENEMOUSEEVENT ); - HB_FUNC_EXEC( HB_QGRAPHICSSCENEMOVEEVENT ); - HB_FUNC_EXEC( HB_QGRAPHICSSCENERESIZEEVENT ); - HB_FUNC_EXEC( HB_QGRAPHICSSCENEWHEELEVENT ); - HB_FUNC_EXEC( HB_QHELPEVENT ); - HB_FUNC_EXEC( HB_QHIDEEVENT ); - HB_FUNC_EXEC( HB_QHOVEREVENT ); - HB_FUNC_EXEC( HB_QINPUTMETHODEVENT ); - HB_FUNC_EXEC( HB_QKEYEVENT ); - HB_FUNC_EXEC( HB_QMOUSEEVENT ); - HB_FUNC_EXEC( HB_QMOVEEVENT ); - HB_FUNC_EXEC( HB_QPAINTEVENT ); - HB_FUNC_EXEC( HB_QRESIZEEVENT ); - HB_FUNC_EXEC( HB_QSHOWEVENT ); - HB_FUNC_EXEC( HB_QSHORTCUTEVENT ); - HB_FUNC_EXEC( HB_QWHEELEVENT ); - HB_FUNC_EXEC( HB_QWINDOWSTATECHANGEEVENT ); - - HB_FUNC_EXEC( HB_QABSTRACTBUTTON ); - HB_FUNC_EXEC( HB_QACTION ); - HB_FUNC_EXEC( HB_QMDISUBWINDOW ); - HB_FUNC_EXEC( HB_QPRINTER ); - HB_FUNC_EXEC( HB_QSTANDARDITEM ); - HB_FUNC_EXEC( HB_QLISTWIDGETITEM ); - HB_FUNC_EXEC( HB_QTABLEWIDGETITEM ); - HB_FUNC_EXEC( HB_QTREEWIDGETITEM ); -} - -static void hbqt_registerCallbacks( void ) -{ - hbqt_slots_register_callback( "QColor" , hbqt_SlotsExecQColor ); - hbqt_slots_register_callback( "QFont" , hbqt_SlotsExecQFont ); - hbqt_slots_register_callback( "QItemSelection$QItemSelection" , hbqt_SlotsExecItemSelItemSel ); - hbqt_slots_register_callback( "QTextBlock" , hbqt_SlotsExecQTextBlock ); - hbqt_slots_register_callback( "QTextCharFormat" , hbqt_SlotsExecQTextCharFormat ); - hbqt_slots_register_callback( "QTextCursor" , hbqt_SlotsExecQTextCursor ); - - hbqt_slots_register_callback( "QAbstractButton*" , hbqt_SlotsExecQAbstractButton ); - hbqt_slots_register_callback( "QAction*" , hbqt_SlotsExecQAction ); - hbqt_slots_register_callback( "QListWidgetItem*$QListWidgetItem*" , hbqt_SlotsExecQListWidgetItemQListWidgetItem ); - hbqt_slots_register_callback( "QMdiSubWindow*" , hbqt_SlotsExecQMdiSubWindow ); - hbqt_slots_register_callback( "QPrinter*" , hbqt_SlotsExecQPrinter ); - hbqt_slots_register_callback( "QStandardItem*" , hbqt_SlotsExecQStandardItem ); - hbqt_slots_register_callback( "QTableWidgetItem*" , hbqt_SlotsExecQTableWidgetItem ); - hbqt_slots_register_callback( "QTableWidgetItem*$QTableWidgetItem*" , hbqt_SlotsExecQTableWidgetItemQTableWidgetItem ); - hbqt_slots_register_callback( "QTreeWidgetItem*$int" , hbqt_SlotsExecQTreeWidgetItemInt ); - hbqt_slots_register_callback( "QTreeWidgetItem*$QTreeWidgetItem*" , hbqt_SlotsExecQTreeWidgetItemQTreeWidgetItem ); - hbqt_slots_register_callback( "QWidget*$int" , hbqt_SlotsExecQWidgetInt ); - hbqt_slots_register_callback( "QWidget*$QWidget*" , hbqt_SlotsExecQWidgetQWidget ); - hbqt_slots_register_callback( "QTreeWidgetItem*" , hbqt_SlotsExecQTreeWidgetItem ); - hbqt_slots_register_callback( "QListWidgetItem*" , hbqt_SlotsExecQListWidgetItem ); - hbqt_slots_register_callback( "QWidget*" , hbqt_SlotsExecQWidget ); - hbqt_slots_register_callback( "QRect$int" , hbqt_SlotsExecQRectInt ); - - hbqt_events_register_createobj( QEvent::MouseButtonPress , "hb_QMouseEvent" ); - hbqt_events_register_createobj( QEvent::MouseButtonRelease , "hb_QMouseEvent" ); - hbqt_events_register_createobj( QEvent::MouseButtonDblClick , "hb_QMouseEvent" ); - hbqt_events_register_createobj( QEvent::MouseMove , "hb_QMouseEvent" ); - hbqt_events_register_createobj( QEvent::KeyPress , "hb_QKeyEvent" ); - hbqt_events_register_createobj( QEvent::KeyRelease , "hb_QKeyEvent" ); - hbqt_events_register_createobj( QEvent::FocusIn , "hb_QFocusEvent" ); - hbqt_events_register_createobj( QEvent::FocusOut , "hb_QFocusEvent" ); - hbqt_events_register_createobj( QEvent::Enter , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::Leave , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::Paint , "hb_QPaintEvent" ); - hbqt_events_register_createobj( QEvent::Move , "hb_QMoveEvent" ); - hbqt_events_register_createobj( QEvent::Resize , "hb_QResizeEvent" ); - hbqt_events_register_createobj( QEvent::Show , "hb_QShowEvent" ); - hbqt_events_register_createobj( QEvent::Hide , "hb_QHideEvent" ); - hbqt_events_register_createobj( QEvent::Close , "hb_QCloseEvent" ); - hbqt_events_register_createobj( QEvent::ParentChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::WindowActivate , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::WindowDeactivate , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ShowToParent , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::HideToParent , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::Wheel , "hb_QWheelEvent" ); - hbqt_events_register_createobj( QEvent::WindowTitleChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::WindowIconChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ApplicationWindowIconChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ApplicationFontChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ApplicationLayoutDirectionChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ApplicationPaletteChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::PaletteChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::Clipboard , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::MetaCall , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::SockAct , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ShortcutOverride , "hb_QKeyEvent" ); - hbqt_events_register_createobj( QEvent::DeferredDelete , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::DragEnter , "hb_QDragEnterEvent" ); - hbqt_events_register_createobj( QEvent::DragLeave , "hb_QDragLeaveEvent" ); - hbqt_events_register_createobj( QEvent::DragMove , "hb_QDragMoveEvent" ); - hbqt_events_register_createobj( QEvent::Drop , "hb_QDropEvent" ); - hbqt_events_register_createobj( QEvent::ChildAdded , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ChildPolished , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ChildRemoved , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::PolishRequest , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::Polish , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::LayoutRequest , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::UpdateRequest , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::UpdateLater , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ContextMenu , "hb_QContextMenuEvent" ); - hbqt_events_register_createobj( QEvent::InputMethod , "hb_QInputMethodEvent" ); - hbqt_events_register_createobj( QEvent::AccessibilityPrepare , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::TabletMove , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::LocaleChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::LanguageChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::LayoutDirectionChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::TabletPress , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::TabletRelease , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::OkRequest , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::IconDrag , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::FontChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::EnabledChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ActivationChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::StyleChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::IconTextChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ModifiedChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::WindowBlocked , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::WindowUnblocked , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::WindowStateChange , "hb_QWindowStateChangeEvent" ); - hbqt_events_register_createobj( QEvent::MouseTrackingChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ToolTip , "hb_QHelpEvent" ); - hbqt_events_register_createobj( QEvent::WhatsThis , "hb_QHelpEvent" ); - hbqt_events_register_createobj( QEvent::StatusTip , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ActionChanged , "hb_QActionEvent" ); - hbqt_events_register_createobj( QEvent::ActionAdded , "hb_QActionEvent" ); - hbqt_events_register_createobj( QEvent::ActionRemoved , "hb_QActionEvent" ); - hbqt_events_register_createobj( QEvent::FileOpen , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::Shortcut , "hb_QShortcutEvent" ); - hbqt_events_register_createobj( QEvent::WhatsThisClicked , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::AccessibilityHelp , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ToolBarChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ApplicationActivate , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ApplicationActivated , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ApplicationDeactivate , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::QueryWhatsThis , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::EnterWhatsThisMode , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::LeaveWhatsThisMode , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ZOrderChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::HoverEnter , "hb_QHoverEvent" ); - hbqt_events_register_createobj( QEvent::HoverLeave , "hb_QHoverEvent" ); - hbqt_events_register_createobj( QEvent::HoverMove , "hb_QHoverEvent" ); - hbqt_events_register_createobj( QEvent::AccessibilityDescription , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ParentAboutToChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::WinEventAct , "hb_QEvent" ); -#if defined( QT_KEYPAD_NAVIGATION ) - hbqt_events_register_createobj( QEvent::EnterEditFocus , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::LeaveEditFocus , "hb_QEvent" ); -#endif - hbqt_events_register_createobj( QEvent::MenubarUpdated , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::GraphicsSceneMouseMove , "hb_QGraphicsSceneMouseEvent" ); - hbqt_events_register_createobj( QEvent::GraphicsSceneMousePress , "hb_QGraphicsSceneMouseEvent" ); - hbqt_events_register_createobj( QEvent::GraphicsSceneMouseRelease , "hb_QGraphicsSceneMouseEvent" ); - hbqt_events_register_createobj( QEvent::GraphicsSceneMouseDoubleClick , "hb_QGraphicsSceneMouseEvent" ); - hbqt_events_register_createobj( QEvent::GraphicsSceneContextMenu , "hb_QGraphicsSceneContextMenuEvent" ); - hbqt_events_register_createobj( QEvent::GraphicsSceneHoverEnter , "hb_QGraphicsSceneHoverEvent" ); - hbqt_events_register_createobj( QEvent::GraphicsSceneHoverMove , "hb_QGraphicsSceneHoverEvent" ); - hbqt_events_register_createobj( QEvent::GraphicsSceneHoverLeave , "hb_QGraphicsSceneHoverEvent" ); - hbqt_events_register_createobj( QEvent::GraphicsSceneHelp , "hb_QHelpEvent" ); - hbqt_events_register_createobj( QEvent::GraphicsSceneDragEnter , "hb_QGraphicsSceneDragDropEvent" ); - hbqt_events_register_createobj( QEvent::GraphicsSceneDragMove , "hb_QGraphicsSceneDragDropEvent" ); - hbqt_events_register_createobj( QEvent::GraphicsSceneDragLeave , "hb_QGraphicsSceneDragDropEvent" ); - hbqt_events_register_createobj( QEvent::GraphicsSceneDrop , "hb_QGraphicsSceneDragDropEvent" ); - hbqt_events_register_createobj( QEvent::GraphicsSceneWheel , "hb_QGraphicsSceneWheelEvent" ); - hbqt_events_register_createobj( QEvent::KeyboardLayoutChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::DynamicPropertyChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::TabletEnterProximity , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::TabletLeaveProximity , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::NonClientAreaMouseMove , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::NonClientAreaMouseButtonPress , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::NonClientAreaMouseButtonRelease , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::NonClientAreaMouseButtonDblClick , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::MacSizeChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ContentsRectChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::GraphicsSceneResize , "hb_QGraphicsSceneResizeEvent" ); - hbqt_events_register_createobj( QEvent::GraphicsSceneMove , "hb_QGraphicsSceneMoveEvent" ); - hbqt_events_register_createobj( QEvent::CursorChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::ToolTipChange , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::GrabMouse , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::UngrabMouse , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::GrabKeyboard , "hb_QEvent" ); - hbqt_events_register_createobj( QEvent::UngrabKeyboard , "hb_QEvent" ); -} - -/*----------------------------------------------------------------------*/ - -static QApplication * s_app = NULL; -static HB_BOOL fIsQuitting = HB_FALSE; - -HB_FUNC_EXTERN( __HBQTCORE ); - -HB_FUNC( __HBQTGUI ) -{ - HB_FUNC_EXEC( __HBQTCORE ); -} - -HB_EXTERN_BEGIN -extern HB_EXPORT QApplication * __hbqtgui_app( void ); -HB_EXTERN_END - -QApplication * __hbqtgui_app( void ) -{ - return s_app; -} - -static void hbqt_lib_init( void * cargo ) -{ - static int s_argc; - static char ** s_argv; - - HB_SYMBOL_UNUSED( cargo ); - - s_argc = hb_cmdargARGC(); - s_argv = hb_cmdargARGV(); - - s_app = new QApplication( s_argc, s_argv ); - - if( ! s_app ) - hb_errInternal( 11001, "hbqt_lib_init(): HBQTGUI Initilization Error.", NULL, NULL ); - - hb_cmdargInit( s_argc, s_argv ); - HB_TRACE( HB_TR_DEBUG, ( "hbqt_lib_init %p", s_app ) ); - - hbqt_registerCallbacks(); - - QTextCodec * codec = QTextCodec::codecForName( "UTF8" ); - QTextCodec::setCodecForTr( codec ); - QTextCodec::setCodecForCStrings( codec ); -} - -static void hbqt_lib_exit( void * cargo ) -{ - HB_SYMBOL_UNUSED( cargo ); - fIsQuitting = HB_TRUE; -} - -HB_FUNC( HBQT_ISACTIVEAPPLICATION ) -{ - hb_retl( ! fIsQuitting ); -} - -HB_CALL_ON_STARTUP_BEGIN( _hbqtgui_init_ ) - hb_vmAtInit( hbqt_lib_init, NULL ); - hb_vmAtExit( hbqt_lib_exit, NULL ); -HB_CALL_ON_STARTUP_END( _hbqtgui_init_ ) - -#if defined( HB_PRAGMA_STARTUP ) - #pragma startup _hbqtgui_init_ -#elif defined( HB_DATASEG_STARTUP ) - #define HB_DATASEG_BODY HB_DATASEG_FUNC( _hbqtgui_init_ ) - #include "hbiniseg.h" -#endif - -#endif diff --git a/harbour/contrib/hbqt/qtgui/hbqt_utils.cpp b/harbour/contrib/hbqt/qtgui/hbqt_utils.cpp deleted file mode 100644 index 6339e7df42..0000000000 --- a/harbour/contrib/hbqt/qtgui/hbqt_utils.cpp +++ /dev/null @@ -1,219 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper main header - * - * Copyright 2009 Marcos Antonio Gambeta - * Copyright 2009 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ - -#include "hbqt.h" - -#include "hbapiitm.h" - -/*----------------------------------------------------------------------*/ -#if QT_VERSION >= 0x040500 -/*----------------------------------------------------------------------*/ - -#include - -/*----------------------------------------------------------------------*/ - -void hbqt_ret_QRect( QRect qrc ) -{ - PHB_ITEM info = hb_itemArrayNew( 4 ); - - hb_arraySetNI( info, 1, qrc.x() ); - hb_arraySetNI( info, 2, qrc.y() ); - hb_arraySetNI( info, 3, qrc.x() + qrc.width() ); - hb_arraySetNI( info, 4, qrc.y() + qrc.height() ); - - hb_itemReturnRelease( info ); -} - -/*----------------------------------------------------------------------*/ - -QRect hbqt_const_QRect( int i ) -{ - QRect qrc; - - qrc.setX( hb_parvni( i, 1 ) ); - qrc.setY( hb_parvni( i, 2 ) ); - qrc.setWidth( hb_parvni( i, 3 ) - hb_parvni( i, 1 ) + 1 ); - qrc.setHeight( hb_parvni( i, 4 ) - hb_parvni( i, 2 ) + 1 ); - - return qrc; -} - -/*----------------------------------------------------------------------*/ - -void hbqt_ret_QSize( QSize qsz ) -{ - PHB_ITEM info = hb_itemArrayNew( 2 ); - - hb_arraySetNI( info, 1, qsz.width() ); - hb_arraySetNI( info, 2, qsz.height() ); - - hb_itemReturnRelease( info ); -} - -/*----------------------------------------------------------------------*/ - -QSize hbqt_const_QSize( int i ) -{ - QSize qsz; - - qsz.setWidth( hb_parvni( i, 1 ) ); - qsz.setHeight( hb_parvni( i, 2 ) ); - - return qsz; -} - -/*----------------------------------------------------------------------*/ - -void hbqt_ret_QPoint( QPoint qpt ) -{ - PHB_ITEM info = hb_itemArrayNew( 2 ); - - hb_arraySetNI( info, 1, qpt.x() ); - hb_arraySetNI( info, 2, qpt.y() ); - - hb_itemReturnRelease( info ); -} - -/*----------------------------------------------------------------------*/ - -QPoint hbqt_const_QPoint( int i ) -{ - QPoint qpt; - - qpt.setX( hb_parvni( i, 1 ) ); - qpt.setY( hb_parvni( i, 2 ) ); - - return qpt; -} - -/*----------------------------------------------------------------------*/ - -void hbqt_ret_QRectF( QRectF qrc ) -{ - PHB_ITEM info = hb_itemArrayNew( 4 ); - - hb_arraySetND( info, 1, qrc.x() ); - hb_arraySetND( info, 2, qrc.y() ); - hb_arraySetND( info, 3, qrc.x() + qrc.width() ); - hb_arraySetND( info, 4, qrc.y() + qrc.height() ); - - hb_itemReturnRelease( info ); -} - -/*----------------------------------------------------------------------*/ - -QRectF hbqt_const_QRectF( int i ) -{ - QRectF qrc; - - qrc.setX( hb_parvnd( i, 1 ) ); - qrc.setY( hb_parvnd( i, 2 ) ); - qrc.setWidth( hb_parvnd( i, 3 ) - hb_parvnd( i, 1 ) + 1 ); - qrc.setHeight( hb_parvnd( i, 4 ) - hb_parvnd( i, 2 ) + 1 ); - - return qrc; -} - -/*----------------------------------------------------------------------*/ - -void hbqt_ret_QSizeF( QSizeF qsz ) -{ - PHB_ITEM info = hb_itemArrayNew( 2 ); - - hb_arraySetND( info, 1, qsz.width() ); - hb_arraySetND( info, 2, qsz.height() ); - - hb_itemReturnRelease( info ); -} - -/*----------------------------------------------------------------------*/ - -QSizeF hbqt_const_QSizeF( int i ) -{ - QSizeF qsz; - - qsz.setWidth( hb_parvnd( i, 1 ) ); - qsz.setHeight( hb_parvnd( i, 2 ) ); - - return qsz; -} - -/*----------------------------------------------------------------------*/ - -void hbqt_ret_QPointF( QPointF qpt ) -{ - PHB_ITEM info = hb_itemArrayNew( 2 ); - - hb_arraySetND( info, 1, qpt.x() ); - hb_arraySetND( info, 2, qpt.y() ); - - hb_itemReturnRelease( info ); -} - -/*----------------------------------------------------------------------*/ - -QPointF hbqt_const_QPointF( int i ) -{ - QPointF qpt; - - qpt.setX( hb_parvnd( i, 1 ) ); - qpt.setY( hb_parvnd( i, 2 ) ); - - return qpt; -} - -/*----------------------------------------------------------------------*/ -#endif /* #if QT_VERSION >= 0x040500 */ -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbqt/qtgui/hbqtgui.ch b/harbour/contrib/hbqt/qtgui/hbqtgui.ch deleted file mode 100644 index d8541a8deb..0000000000 --- a/harbour/contrib/hbqt/qtgui/hbqtgui.ch +++ /dev/null @@ -1,2512 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009-2011 Pritpal Bedi - * http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#ifndef _HBQTGUI_CH -#define _HBQTGUI_CH - -#define QEvent_None 0 // Not an event. -#define QEvent_Timer 1 // Regular timer events (QTimerEvent). -#define QEvent_MouseButtonPress 2 // Mouse press (QMouseEvent). -#define QEvent_MouseButtonRelease 3 // Mouse release (QMouseEvent). -#define QEvent_MouseButtonDblClick 4 // Mouse press again (QMouseEvent). -#define QEvent_MouseMove 5 // Mouse move (QMouseEvent). -#define QEvent_KeyPress 6 // Key press (QKeyEvent). -#define QEvent_KeyRelease 7 // Key release (QKeyEvent). -#define QEvent_FocusIn 8 // Widget gains keyboard focus (QFocusEvent). -#define QEvent_FocusOut 9 // Widget loses keyboard focus (QFocusEvent). -#define QEvent_Enter 10 // Mouse enters widget's boundaries. -#define QEvent_Leave 11 // Mouse leaves widget's boundaries. -#define QEvent_Paint 12 // Screen update necessary (QPaintEvent). -#define QEvent_Move 13 // Widget's position changed (QMoveEvent). -#define QEvent_Resize 14 // Widget's size changed (QResizeEvent). -#define QEvent_Show 17 // Widget was shown on screen (QShowEvent). -#define QEvent_Hide 18 // Widget was hidden (QHideEvent). -#define QEvent_Close 19 // Widget was closed (QCloseEvent). -#define QEvent_ParentChange 21 // The widget parent has changed. -#define QEvent_WindowActivate 24 // Window was activated. -#define QEvent_WindowDeactivate 25 // Window was deactivated. -#define QEvent_ShowToParent 26 // A child widget has been shown. -#define QEvent_HideToParent 27 // A child widget has been hidden. -#define QEvent_Wheel 31 // Mouse wheel rolled (QWheelEvent). -#define QEvent_WindowTitleChange 33 // The window title has changed. -#define QEvent_WindowIconChange 34 // The window's icon has changed. -#define QEvent_ApplicationWindowIconChange 35 // The application's icon has changed. -#define QEvent_ApplicationFontChange 36 // The default application font has changed. -#define QEvent_ApplicationLayoutDirectionChange 37 // The default application layout direction has changed. -#define QEvent_ApplicationPaletteChange 38 // The default application palette has changed. -#define QEvent_PaletteChange 39 // Palette of the widget changed. -#define QEvent_Clipboard 40 // The clipboard contents have changed (QClipboardEvent). -#define QEvent_MetaCall 43 // An asynchronous method invocation via QMetaObject_invokeMethod(). -#define QEvent_SockAct 50 // Socket activated, used to implement QSocketNotifier. -#define QEvent_ShortcutOverride 51 // Key press in child, for overriding shortcut key handling (QKeyEvent). -#define QEvent_DeferredDelete 52 // The object will be deleted after it has cleaned up. -#define QEvent_DragEnter 60 // The cursor enters a widget during a drag and drop operation (QDragEnterEvent). -#define QEvent_DragLeave 62 // The cursor leaves a widget during a drag and drop operation (QDragLeaveEvent). -#define QEvent_DragMove 61 // A drag and drop operation is in progress (QDragMoveEvent). -#define QEvent_Drop 63 // A drag and drop operation is completed (QDropEvent). -#define QEvent_ChildAdded 68 // An object gets a child (QChildEvent). -#define QEvent_ChildPolished 69 // A widget child gets polished (QChildEvent). -#define QEvent_ChildInserted 70 // An object gets a child (QChildEvent). Qt3Support only, use ChildAdded instead. -#define QEvent_ChildRemoved 71 // An object loses a child (QChildEvent). -#define QEvent_PolishRequest 74 // The widget should be polished. -#define QEvent_Polish 75 // The widget is polished. -#define QEvent_LayoutRequest 76 // Widget layout needs to be redone. -#define QEvent_UpdateRequest 77 // The widget should be repainted. -#define QEvent_UpdateLater 78 // The widget should be queued to be repainted at a later time. -#define QEvent_ContextMenu 82 // Context popup menu (QContextMenuEvent). -#define QEvent_InputMethod 83 // An input method is being used (QInputMethodEvent). -#define QEvent_AccessibilityPrepare 86 // Accessibility information is requested. -#define QEvent_TabletMove 87 // Wacom tablet move (QTabletEvent). -#define QEvent_LocaleChange 88 // The system locale has changed. -#define QEvent_LanguageChange 89 // The application translation changed. -#define QEvent_LayoutDirectionChange 90 // The direction of layouts changed. -#define QEvent_TabletPress 92 // Wacom tablet press (QTabletEvent). -#define QEvent_TabletRelease 93 // Wacom tablet release (QTabletEvent). -#define QEvent_OkRequest 94 // Ok button in decoration pressed. Supported only for Windows CE. -#define QEvent_IconDrag 96 // The main icon of a window has been dragged away (QIconDragEvent). -#define QEvent_FontChange 97 // Widget's font has changed. -#define QEvent_EnabledChange 98 // Widget's enabled state has changed. -#define QEvent_ActivationChange 99 // A widget's top-level window activation state has changed. -#define QEvent_StyleChange 100 // Widget's style has been changed. -#define QEvent_IconTextChange 101 // Widget's icon text has been changed. -#define QEvent_ModifiedChange 102 // Widgets modification state has been changed. -#define QEvent_WindowBlocked 103 // The window is blocked by a modal dialog. -#define QEvent_WindowUnblocked 104 // The window is unblocked after a modal dialog exited. -#define QEvent_WindowStateChange 105 // The window's state (minimized, maximized or full-screen) has changed (QWindowStateChangeEvent). -#define QEvent_MouseTrackingChange 109 // The mouse tracking state has changed. -#define QEvent_ToolTip 110 // A tooltip was requested (QHelpEvent). -#define QEvent_WhatsThis 111 // The widget should reveal "What's This?" help (QHelpEvent). -#define QEvent_StatusTip 112 // A status tip is requested (QStatusTipEvent). -#define QEvent_ActionChanged 113 // An action has been changed (QActionEvent). -#define QEvent_ActionAdded 114 // A new action has been added (QActionEvent). -#define QEvent_ActionRemoved 115 // An action has been removed (QActionEvent). -#define QEvent_FileOpen 116 // File open request (QFileOpenEvent). -#define QEvent_Shortcut 117 // Key press in child for shortcut key handling (QShortcutEvent). -#define QEvent_WhatsThisClicked 118 // A link in a widget's "What's This?" help was clicked. -#define QEvent_AccessibilityHelp 119 // Used to query accessibility help texts (QAccessibleEvent). -#define QEvent_ToolBarChange 120 // The toolbar button is toggled on Mac OS X. -#define QEvent_ApplicationActivate 121 // The application has been made available to the user. -#define QEvent_ApplicationActivated 121 // This enum has been deprecated. Use ApplicationActivate instead. -#define QEvent_ApplicationDeactivate 122 // The application has been suspended, and is unavailable to the user. -#define QEvent_QueryWhatsThis 123 // The widget should accept the event if it has "What's This?" help. -#define QEvent_EnterWhatsThisMode 124 // Send to toplevel widgets when the application enters "What's This?" mode. -#define QEvent_LeaveWhatsThisMode 125 // Send to toplevel widgets when the application leaves "What's This?" mode. -#define QEvent_ZOrderChange 126 // The widget's z-order has changed. This event is never sent to top level windows. -#define QEvent_HoverEnter 127 // The mouse cursor enters a hover widget (QHoverEvent). -#define QEvent_HoverLeave 128 // The mouse cursor leaves a hover widget (QHoverEvent). -#define QEvent_HoverMove 129 // The mouse cursor moves inside a hover widget (QHoverEvent). -#define QEvent_AccessibilityDescription 130 // Used to query accessibility description texts (QAccessibleEvent). -#define QEvent_ParentAboutToChange 131 // The widget parent is about to change. -#define QEvent_WinEventAct 132 // A Windows-specific activation event has occurred. -#define QEvent_EnterEditFocus 150 // An editor widget gains focus for editing. -#define QEvent_LeaveEditFocus 151 // An editor widget loses focus for editing. -#define QEvent_MenubarUpdated 153 // The window's menu bar has been updated. -#define QEvent_GraphicsSceneMouseMove 155 // Move mouse in a graphics scene (QGraphicsSceneMouseEvent). -#define QEvent_GraphicsSceneMousePress 156 // Mouse press in a graphics scene (QGraphicsSceneMouseEvent). -#define QEvent_GraphicsSceneMouseRelease 157 // Mouse release in a graphics scene (QGraphicsSceneMouseEvent). -#define QEvent_GraphicsSceneMouseDoubleClick 158 // Mouse press again (double click) in a graphics scene (QGraphicsSceneMouseEvent). -#define QEvent_GraphicsSceneContextMenu 159 // Context popup menu over a graphics scene (QGraphicsSceneContextMenuEvent). -#define QEvent_GraphicsSceneHoverEnter 160 // The mouse cursor enters a hover item in a graphics scene (QGraphicsSceneHoverEvent). -#define QEvent_GraphicsSceneHoverMove 161 // The mouse cursor moves inside a hover item in a graphics scene (QGraphicsSceneHoverEvent). -#define QEvent_GraphicsSceneHoverLeave 162 // The mouse cursor leaves a hover item in a graphics scene (QGraphicsSceneHoverEvent). -#define QEvent_GraphicsSceneHelp 163 // The user requests help for a graphics scene (QHelpEvent). -#define QEvent_GraphicsSceneDragEnter 164 // The cursor enters a graphics scene during a drag and drop operation. -#define QEvent_GraphicsSceneDragMove 165 // A drag and drop operation is in progress over a scene. -#define QEvent_GraphicsSceneDragLeave 166 // The cursor leaves a graphics scene during a drag and drop operation. -#define QEvent_GraphicsSceneDrop 167 // A drag and drop operation is completed over a scene. -#define QEvent_GraphicsSceneWheel 168 // Mouse wheel rolled in a graphics scene (QGraphicsSceneWheelEvent). -#define QEvent_KeyboardLayoutChange 169 // The keyboard layout has changed. -#define QEvent_DynamicPropertyChange 170 // A dynamic property was added, changed or removed from the object. User events should have values b -#define QEvent_TabletEnterProximity 171 // Wacom tablet enter proximity event (QTabletEvent), sent to QApplication. -#define QEvent_TabletLeaveProximity 172 // Wacom tablet leave proximity event (QTabletEvent), sent to QApplication. -#define QEvent_NonClientAreaMouseMove 173 // A mouse move occurred outside the client area. -#define QEvent_NonClientAreaMouseButtonPress 174 // A mouse button press occurred outside the client area. -#define QEvent_NonClientAreaMouseButtonRelease 175 // A mouse button release occurred outside the client area. -#define QEvent_NonClientAreaMouseButtonDblClick 176 // A mouse double click occurred outside the client area. -#define QEvent_MacSizeChange 177 // The user changed his widget sizes (Mac OS X only). -#define QEvent_ContentsRectChange 178 // The margins of the widget's content rect changed. -#define QEvent_GraphicsSceneResize 181 // Widget was resized (QGraphicsSceneResizeEvent). -#define QEvent_GraphicsSceneMove 182 // Widget was moved (QGraphicsSceneMoveEvent). -#define QEvent_CursorChange 183 // The widget's cursor has changed. -#define QEvent_ToolTipChange 184 // The widget's tooltip has changed. -#define QEvent_GrabMouse 186 // Item gains mouse grab (QGraphicsItem only). -#define QEvent_UngrabMouse 187 // Item loses mouse grab (QGraphicsItem only). -#define QEvent_GrabKeyboard 188 // Item gains keyboard grab (QGraphicsItem only). -#define QEvent_UngrabKeyboard 189 // Item loses keyboard grab (QGraphicsItem only). - -#define QPalette_WindowText 0 // A general foreground color. -#define QPalette_Foreground 0 // This value is obsolete. Use WindowText instead. -#define QPalette_Button 1 // The general button background color. This background can be different from Window as some styles require a different background color for buttons. -#define QPalette_Text 6 // The foreground color used with Base. This is usually the same as the WindowText, in which case it must provide good contrast with Window and Base. -#define QPalette_BrightText 7 // A text color that is very different from WindowText, and contrasts well with e.g. Dark. Typically used for text that needs to be drawn where Text or WindowText would give poor contrast, such as on pressed push buttons. Note that text colors can be used for things other than just words; text colors are usually used for text, but it's quite common to use the text color roles for lines, icons, etc. -#define QPalette_ButtonText 8 // A foreground color used with the Button color. -#define QPalette_Base 9 // Used mostly as the background color for text entry widgets, but can also be used for other painting - such as the background of combobox drop down lists and toolbar handles. It is usually white or another light color. -#define QPalette_Window 10 // A general background color. -#define QPalette_Background 10 // This value is obsolete. Use Window instead. -#define QPalette_AlternateBase 16 // Used as the alternate background color in views with alternating row colors (see QAbstractItemView_setAlternatingRowColors()). -#define QPalette_ToolTipBase 18 // Used as the background color for QToolTip and QWhatsThis. Tool tips use the Inactive color group of QPalette, because tool tips are not active windows. -#define QPalette_ToolTipText 19 // Used as the foreground color for QToolTip and QWhatsThis. Tool tips use the Inactive color group of QPalette, because tool tips are not active windows. - -#define QPalette_Disabled 1 -#define QPalette_Active 0 -#define QPalette_Inactive 2 -#define QPalette_Normal QPalette_Active -/* - * There are some color roles used mostly for 3D bevel and shadow effects. - * All of these are normally derived from Window, and used in ways that depend on that - * relationship. For example, buttons depend on it to make the bevels look attractive, - * and Motif scroll bars depend on Mid to be slightly different from Window. - */ -#define QPalette_Light 2 // Lighter than Button color. -#define QPalette_Midlight 3 // Between Button and Light. -#define QPalette_Dark 4 // Darker than Button. -#define QPalette_Mid 5 // Between Button and Dark. -#define QPalette_Shadow 11 // A very dark color. By default, the shadow color is Qt_black. -#define QPalette_Highlight 12 // A color to indicate a selected item or the current item. By default, the highlight color is Qt_darkBlue. -#define QPalette_HighlightedText 13 // A text color that contrasts with Highlight. By default, the highlighted text color is Qt_white. -#define QPalette_Link 14 // A text color used for unvisited hyperlinks. By default, the link color is Qt_blue. -#define QPalette_LinkVisited 15 // A text color used for already visited hyperlinks. By default, the linkvisited color is Qt_magenta. -#define QPalette_NoRole 17 // No role; this special role is often used to indicate that a role has not been assigned. - - -#define QAbstractSlider_SliderNoAction 0 -#define QAbstractSlider_SliderSingleStepAdd 1 -#define QAbstractSlider_SliderSingleStepSub 2 -#define QAbstractSlider_SliderPageStepAdd 3 -#define QAbstractSlider_SliderPageStepSub 4 -#define QAbstractSlider_SliderToMinimum 5 -#define QAbstractSlider_SliderToMaximum 6 -#define QAbstractSlider_SliderMove 7 - -#define QAbstractSlider_SliderRangeChange 0 -#define QAbstractSlider_SliderOrientationChange 1 -#define QAbstractSlider_SliderStepsChange 2 -#define QAbstractSlider_SliderValueChange 3 - -#define QLineEdit_Normal 0 // Display characters as they are entered. This is the default. -#define QLineEdit_NoEcho 1 // Do not display anything. This may be appropriate for passwords where even the length of the password should be kept secret. -#define QLineEdit_Password 2 // Display asterisks instead of the characters actually entered. -#define QLineEdit_PasswordEchoOnEdit 3 - -#define QMessageBox_InvalidRole -1 // The button is invalid. -#define QMessageBox_AcceptRole 0 // Clicking the button causes the dialog to be accepted (e.g. OK). -#define QMessageBox_RejectRole 1 // Clicking the button causes the dialog to be rejected (e.g. Cancel). -#define QMessageBox_DestructiveRole 2 // Clicking the button causes a destructive change (e.g. for Discarding Changes) and closes the dialog. -#define QMessageBox_ActionRole 3 // Clicking the button causes changes to the elements within the dialog. -#define QMessageBox_HelpRole 4 // The button can be clicked to request help. -#define QMessageBox_YesRole 5 // The button is a "Yes"-like button. -#define QMessageBox_NoRole 6 // The button is a "No"-like button. -#define QMessageBox_ApplyRole 8 // The button applies current changes. -#define QMessageBox_ResetRole 7 // The button resets the dialog's fields to default values. - // -#define QMessageBox_NoIcon 0 // the message box does not have any icon. -#define QMessageBox_Question 4 // an icon indicating that the message is asking a question. -#define QMessageBox_Information 1 // an icon indicating that the message is nothing out of the ordinary. -#define QMessageBox_Warning 2 // an icon indicating that the message is a warning, but can be dealt with. -#define QMessageBox_Critical 3 // an icon indicating that the message represents a critical problem. - -#define QMessageBox_Ok 0x00000400 // An "OK" button defined with the AcceptRole. -#define QMessageBox_Open 0x00002000 // A "Open" button defined with the AcceptRole. -#define QMessageBox_Save 0x00000800 // A "Save" button defined with the AcceptRole. -#define QMessageBox_Cancel 0x00400000 // A "Cancel" button defined with the RejectRole. -#define QMessageBox_Close 0x00200000 // A "Close" button defined with the RejectRole. -#define QMessageBox_Discard 0x00800000 // A "Discard" or "Don't Save" button, depending on the platform, defined with the DestructiveRole. -#define QMessageBox_Apply 0x02000000 // An "Apply" button defined with the ApplyRole. -#define QMessageBox_Reset 0x04000000 // A "Reset" button defined with the ResetRole. -#define QMessageBox_RestoreDefaults 0x08000000 // A "Restore Defaults" button defined with the ResetRole. -#define QMessageBox_Help 0x01000000 // A "Help" button defined with the HelpRole. -#define QMessageBox_SaveAll 0x00001000 // A "Save All" button defined with the AcceptRole. -#define QMessageBox_Yes 0x00004000 // A "Yes" button defined with the YesRole. -#define QMessageBox_YesToAll 0x00008000 // A "Yes to All" button defined with the YesRole. -#define QMessageBox_No 0x00010000 // A "No" button defined with the NoRole. -#define QMessageBox_NoToAll 0x00020000 // A "No to All" button defined with the NoRole. -#define QMessageBox_Abort 0x00040000 // An "Abort" button defined with the RejectRole. -#define QMessageBox_Retry 0x00080000 // A "Retry" button defined with the AcceptRole. -#define QMessageBox_Ignore 0x00100000 // An "Ignore" button defined with the AcceptRole. -#define QMessageBox_NoButton 0x00000000 // An invalid button. - -#define Qt_AlignLeft 0x0001 // Aligns with the left edge. -#define Qt_AlignRight 0x0002 // Aligns with the right edge. -#define Qt_AlignHCenter 0x0004 // Centers horizontally in the available space. -#define Qt_AlignJustify 0x0008 // Justifies the text in the available space. - // -#define Qt_AlignTop 0x0020 // Aligns with the top. -#define Qt_AlignBottom 0x0040 // Aligns with the bottom. -#define Qt_AlignVCenter 0x0080 // Centers vertically in the available space. - -#define Qt_AlignCenter hb_bitOR( Qt_AlignVCenter, Qt_AlignHCenter ) // Centers in both dimensions. - -#define Qt_AlignAbsolute 0x0010 // If the widget's layout direction is #define Qt_RightToLeft (instead of #define Qt_LeftToRight, the default), #define Qt_AlignLeft refers to the right edge and #define Qt_AlignRight to the left edge. This is normally the desired behavior. If you want #define Qt_AlignLeft to always mean "left" and #define Qt_AlignRight to always mean "right", combine the flag with #define Qt_AlignAbsolute. -#define Qt_AlignLeading Qt_AlignLeft // Synonym for #define Qt_AlignLeft. -#define Qt_AlignTrailing Qt_AlignRight // Synonym for #define Qt_AlignRight. - -#define Qt_AlignHorizontal_Mask Qt_AlignLeft + Qt_AlignRight + Qt_AlignHCenter + Qt_AlignJustify + Qt_AlignAbsolute -#define Qt_AlignVertical_Mask Qt_AlignTop + Qt_AlignBottom + Qt_AlignVCenter - -#define Qt_AnchorName 0 // the name attribute of the anchor. This attribute is used when scrolling to an anchor in the document. -#define Qt_AnchorHref 1 // the href attribute of the anchor. This attribute is used when a link is clicked to determine what content to load. - -#define Qt_AA_ImmediateWidgetCreation 0 // Ensures that widgets are created as soon as they are constructed. By default, resources for widgets are allocated on demand to improve efficiency and minimize resource usage. Setting or clearing this attribute affects widgets constructed after the change. Setting it tells Qt to create toplevel windows immediately. Therefore, if it is important to minimize resource consumption, do not set this attribute. -#define Qt_AA_MSWindowsUseDirect3DByDefault 1 // Is a Windows specific attribute, that will make the Direct3D paint engine the default Qt widget paint engine. Note that you can toggle usage of the Direct3D engine on individual QWidgets by setting/clearing the WA_MSWindowsUseDirect3D attribute on a specific widget. This functionality is experimental. -#define Qt_AA_DontShowIconsInMenus 2 // Actions with the Icon property won't be shown in any menus unless specifically set by the QAction_iconVisibleInMenu property. -// Menus that are currently open or menus already created in the native Mac OS X menubar MAY NOT pick up a change in this attribute. Changes in the QAction_iconVisibleInMenu property will always be picked up. - -#define Qt_AA_NativeWindows 3 // Ensures that widgets have native windows. -#define Qt_AA_DontCreateNativeWidgetSiblings 4 // Ensures that siblings of native widgets stay non-native unless specifically set by the #define Qt_WA_NativeWindow attribute. -#define Qt_AA_MacPluginApplication 5 // Stops the a Qt mac application from doing specific initializations that do not necessarily make sense when using Qt to author a plugin. This includes avoiding loading our nib for the main menu and not taking possession of the native menu bar. - -#define Qt_NoArrow 0 -#define Qt_UpArrow 1 -#define Qt_DownArrow 2 -#define Qt_LeftArrow 3 -#define Qt_RightArrow 4 - -// enum #define Qt_AspectRatioMode -// This enum type defines what happens to the aspect ratio when scaling an rectangle. -// -#define Qt_IgnoreAspectRatio 0 // The size is scaled freely. The aspect ratio is not preserved. -#define Qt_KeepAspectRatio 1 // The size is scaled to a rectangle as large as possible inside a given rectangle, preserving the aspect ratio. -#define Qt_KeepAspectRatioByExpanding 2 // The size is scaled to a rectangle as small as possible outside a given rectangle, preserving the aspect ratio. -// See also QSize_scale() and QImage_scaled(). - -// enum #define Qt_Axis -// This enum type defines three values to represent the three axes in the cartesian coordinate system. -#define Qt_XAxis 0 // The X axis. -#define Qt_YAxis 1 // The Y axis. -#define Qt_ZAxis 2 // The Z axis. -// See also QTransform_rotate() and QTransform_rotateRadians(). - -// enum #define Qt_BGMode - Background mode: -#define Qt_TransparentMode 0 -#define Qt_OpaqueMode 1 - -//enum #define Qt_BrushStyle -//This enum type defines the brush styles supported by Qt, i.e. the fill pattern of shapes drawn using QPainter. -// -#define Qt_NoBrush 0 // No brush pattern. -#define Qt_SolidPattern 1 // Uniform color. -#define Qt_Dense1Pattern 2 // Extremely dense brush pattern. -#define Qt_Dense2Pattern 3 // Very dense brush pattern. -#define Qt_Dense3Pattern 4 // Somewhat dense brush pattern. -#define Qt_Dense4Pattern 5 // Half dense brush pattern. -#define Qt_Dense5Pattern 6 // Somewhat sparse brush pattern. -#define Qt_Dense6Pattern 7 // Very sparse brush pattern. -#define Qt_Dense7Pattern 8 // Extremely sparse brush pattern. -#define Qt_HorPattern 9 // Horizontal lines. -#define Qt_VerPattern 10 // Vertical lines. -#define Qt_CrossPattern 11 // Crossing horizontal and vertical lines. -#define Qt_BDiagPattern 12 // Backward diagonal lines. -#define Qt_FDiagPattern 13 // Forward diagonal lines. -#define Qt_DiagCrossPattern 14 // Crossing diagonal lines. -#define Qt_LinearGradientPattern 15 // Linear gradient (set using a dedicated QBrush constructor). -#define Qt_ConicalGradientPattern 17 // Conical gradient (set using a dedicated QBrush constructor). -#define Qt_RadialGradientPattern 16 // Radial gradient (set using a dedicated QBrush constructor). -#define Qt_TexturePattern 24 // Custom pattern (see QBrush_setTexture()). - -// enum #define Qt_CaseSensitivity -// -#define Qt_CaseInsensitive 0 -#define Qt_CaseSensitive 1 - -// enum #define Qt_CheckState -// This enum describes the state of checkable items, controls, and widgets. -// -#define Qt_Unchecked 0 // The item is unchecked. -#define Qt_PartiallyChecked 1 // The item is partially checked. Items in hierarchical models may be partially checked if some, but not all, of their children are checked. -#define Qt_Checked 2 // The item is checked. -// See also QCheckBox, #define Qt_ItemFlags, and #define Qt_ItemDataRole. - -// enum #define Qt_ClipOperation -// -#define Qt_NoClip 0 // This operation turns clipping off. -#define Qt_ReplaceClip 1 // Replaces the current clip path/rect/region with the one supplied in the function call. -#define Qt_IntersectClip 2 // Intersects the current clip path/rect/region with the one supplied in the function call. -#define Qt_UniteClip 3 // Unites the current clip path/rect/region with the one supplied in the function call. - -// enum #define Qt_ConnectionType -// This enum describes the types of connection that can be used between signals and slots. In particular, it determines whether a particular signal is delivered to a slot immediately or queued for delivery at a later time. -// -#define Qt_DirectConnection 1 // When emitted, the signal is immediately delivered to the slot. -#define Qt_QueuedConnection 2 // When emitted, the signal is queued until the event loop is able to deliver it to the slot. -#define Qt_BlockingQueuedConnection 4 // Same as QueuedConnection, except that the current thread blocks until the slot has been delivered. This connection type should only be used for receivers in a different thread. Note that misuse of this type can lead to dead locks in your application. -#define Qt_AutoConnection 0 // If the signal is emitted from the thread in which the receiving object lives, the slot is invoked directly, as with #define Qt_DirectConnection; otherwise the signal is queued, as with #define Qt_QueuedConnection. -// With queued connections, the parameters must be of types that are known to Qt's meta-object system, because Qt needs to copy the arguments to store them in an event behind the scenes. If you try to use a queued connection and get the error message -// QObject_connect: Cannot queue arguments of type 'MyType' -// call qRegisterMetaType() to register the data type before you establish the connection. -// See also Thread Support in Qt, QObject_connect(), and qRegisterMetaType(). - -// enum #define Qt_ContextMenuPolicy -// This enum type defines the various policies a widget can have with respect to showing a context menu. -// -#define Qt_NoContextMenu 0 // the widget does not feature a context menu, context menu handling is deferred to the widget's parent. -#define Qt_PreventContextMenu 4 // the widget does not feature a context menu, and in contrast to NoContextMenu, the handling is not deferred to the widget's parent. This means that all right mouse button events are guaranteed to be delivered to the widget itself through mousePressEvent(), and mouseReleaseEvent(). -#define Qt_DefaultContextMenu 1 // the widget's QWidget_contextMenuEvent() handler is called. -#define Qt_ActionsContextMenu 2 // the widget displays its QWidget_actions() as context menu. -#define Qt_CustomContextMenu 3 // the widget emits the QWidget_customContextMenuRequested() signal. - -// enum #define Qt_Corner -// This enum type specifies a corner in a rectangle: -// -#define Qt_TopLeftCorner 0x00000 // The top-left corner of the rectangle. -#define Qt_TopRightCorner 0x00001 // The top-right corner of the rectangle. -#define Qt_BottomLeftCorner 0x00002 // The bottom-left corner of the rectangle. -#define Qt_BottomRightCorner 0x00003 // The bottom-right corner of the rectangle. - -// enum #define Qt_CursorShape -// This enum type defines the various cursors that can be used. -// The standard arrow cursor is the default for widgets in a normal state. -// -#define Qt_ArrowCursor 0 // The standard arrow cursor. -#define Qt_UpArrowCursor 1 // An arrow pointing upwards toward the top of the screen. -#define Qt_CrossCursor 2 // A crosshair cursor, typically used to help the user accurately select a point on the screen. -#define Qt_WaitCursor 3 // An hourglass or watch cursor, usually shown during operations that prevent the user from interacting with the application. -#define Qt_IBeamCursor 4 // A caret or ibeam cursor, indicating that a widget can accept and display text input. -#define Qt_SizeVerCursor 5 // A cursor used for elements that are used to vertically resize top-level windows. -#define Qt_SizeHorCursor 6 // A cursor used for elements that are used to horizontally resize top-level windows. -#define Qt_SizeBDiagCursor 7 // A cursor used for elements that are used to diagonally resize top-level windows at their top-right and bottom-left corners. -#define Qt_SizeFDiagCursor 8 // A cursor used for elements that are used to diagonally resize top-level windows at their top-left and bottom-right corners. -#define Qt_SizeAllCursor 9 // A cursor used for elements that are used to resize top-level windows in any direction. -#define Qt_BlankCursor 10 // A blank/invisible cursor, typically used when the cursor shape needs to be hidden. -#define Qt_SplitVCursor 11 // A cursor used for vertical splitters, indicating that a handle can be dragged horizontally to adjust the use of available space. -#define Qt_SplitHCursor 12 // A cursor used for horizontal splitters, indicating that a handle can be dragged vertically to adjust the use of available space. -#define Qt_PointingHandCursor 13 // A pointing hand cursor that is typically used for clickable elements such as hyperlinks. -#define Qt_ForbiddenCursor 14 // A slashed circle cursor, typically used during drag and drop operations to indicate that dragged content cannot be dropped on particular widgets or inside certain regions. -#define Qt_OpenHandCursor 17 // A cursor representing an open hand, typically used to indicate that the area under the cursor is the visible part of a canvas that the user can click and drag in order to scroll around. -#define Qt_ClosedHandCursor 18 // A cursor representing a closed hand, typically used to indicate that a dragging operation is in progress that involves scrolling. -#define Qt_WhatsThisCursor 15 // An arrow with a question mark, typically used to indicate the presence of What's This? help for a widget. -#define Qt_BusyCursor 16 // An hourglass or watch cursor, usually shown during operations that allow the user to interact with the application while they are performed in the background. -#define Qt_BitmapCursor 24 - -// enum #define Qt_DateFormat -#define Qt_TextDate 0 // The default Qt format, which includes the day and month name, the day number in the month, and the year in full. The day and month names will be short, localized names. This is basically equivalent to using the date format string, "ddd MMM d yyyy". See QDate_toString() for more information. -#define Qt_ISODate 1 // ISO 8601 extended format: either YYYY-MM-DD for dates or YYYY-MM-DDTHH:MM:SS for combined dates and times. -#define Qt_SystemLocaleShortDate ? // The short format used by the operating system. -#define Qt_SystemLocaleLongDate ? // The long format used by the operating system. -#define Qt_DefaultLocaleShortDate ? // The short format specified by the application's locale. -#define Qt_DefaultLocaleLongDate ? // The long format used by the application's locale. -#define Qt_SystemLocaleDate 2 // This enum value is deprecated. Use #define Qt_SystemLocaleShortDate instead (or #define Qt_SystemLocaleLongDate if you want long dates). -#define Qt_LocaleDate ? // This enum value is deprecated. Use #define Qt_DefaultLocaleShortDate instead (or #define Qt_DefaultLocaleLongDate if you want long dates). -#define Qt_LocalDate SystemLocaleDate // This enum value is deprecated. Use #define Qt_SystemLocaleShortDate instead (or #define Qt_SystemLocaleLongDate if you want long dates). -// Note: For ISODate formats, each Y, M and D represents a single digit of the year, month and day used to specify the date. Each H, M and S represents a single digit of the hour, minute and second used to specify the time. The presence of a literal T character is used to separate the date and time when both are specified. - -// enum #define Qt_DayOfWeek -// -#define Qt_Monday 1 -#define Qt_Tuesday 2 -#define Qt_Wednesday 3 -#define Qt_Thursday 4 -#define Qt_Friday 5 -#define Qt_Saturday 6 -#define Qt_Sunday 7 - -// enum #define Qt_DockWidgetArea -// flags #define Qt_DockWidgetAreas -// -#define Qt_LeftDockWidgetArea 0x1 -#define Qt_RightDockWidgetArea 0x2 -#define Qt_TopDockWidgetArea 0x4 -#define Qt_BottomDockWidgetArea 0x8 -#define Qt_AllDockWidgetAreas Qt_DockWidgetArea_Mask -#define Qt_NoDockWidgetArea 0 -// The DockWidgetAreas type is a typedef for QFlags. It stores an OR combination of DockWidgetArea values. - -// enum #define Qt_DropAction -// flags #define Qt_DropActions -// -#define Qt_CopyAction 0x1 // Copy the data to the target. -#define Qt_MoveAction 0x2 // Move the data from the source to the target. -#define Qt_LinkAction 0x4 // Create a link from the source to the target. -#define Qt_ActionMask 0xff // -#define Qt_IgnoreAction 0x0 // Ignore the action (do nothing with the data). -#define Qt_TargetMoveAction 0x8002// On Windows, this value is used when the ownership of the D&D data should be taken over by the target application, i.e., the source application should not delete the data. -// On X11 this value is used to do a move. -// TargetMoveAction is not used on the Mac. -// The DropActions type is a typedef for QFlags. It stores an OR combination of DropAction values. - -// enum #define Qt_EventPriority -// This enum can be used to specify event priorities. -// -#define Qt_HighEventPriority 1 // Events with this priority are sent before events with NormalEventPriority or LowEventPriority. -#define Qt_NormalEventPriority 0 // Events with this priority are sent after events with HighEventPriority, but before events with LowEventPriority. -#define Qt_LowEventPriority -1 // Events with this priority are sent after events with HighEventPriority or NormalEventPriority. -// Note that these values are provided purely for convenience, since event priorities can be any value between INT_MAX and INT_MIN, inclusive. For example, you can define custom priorities as being relative to each other: -// See also QCoreApplication_postEvent(). - -// enum #define Qt_FillRule -// Specifies which method should be used to fill the paths and polygons. -// -#define Qt_OddEvenFill 0 // Specifies that the region is filled using the odd even fill rule. With this rule, we determine whether a point is inside the shape by using the following method. Draw a horizontal line from the point to a location outside the shape, and count the number of intersections. If the number of intersections is an odd number, the point is inside the shape. This mode is the default. -#define Qt_WindingFill 1 // Specifies that the region is filled using the non zero winding rule. With this rule, we determine whether a point is inside the shape by using the following method. Draw a horizontal line from the point to a location outside the shape. Determine whether the direction of the line at each intersection point is up or down. The winding number is determined by summing the direction of each intersection. If the number is non zero, the point is inside the shape. This fill mode can also in most cases be considered as the intersection of closed shapes. - -// enum #define Qt_FocusPolicy -// This enum type defines the various policies a widget can have with respect to acquiring keyboard focus. -// -#define Qt_TabFocus 0x1 // the widget accepts focus by tabbing. -#define Qt_ClickFocus 0x2 // the widget accepts focus by clicking. -#define Qt_StrongFocus hb_bitOR( Qt_TabFocus, Qt_ClickFocus, 0x8 ) // the widget accepts focus by both tabbing and clicking. On Mac OS X this will also be indicate that the widget accepts tab focus when in 'Text/List focus mode'. -#define Qt_WheelFocus hb_bitOR( Qt_StrongFocus, 0x4 ) // like #define Qt_StrongFocus plus the widget accepts focus by using the mouse wheel. -#define Qt_NoFocus 0 // the widget does not accept focus. - -// enum #define Qt_FocusReason -// This enum specifies why the focus changed. It will be passed through QWidget_setFocus and can be retrieved in the QFocusEvent sent to the widget upon focus change. -// -#define Qt_MouseFocusReason 0 // A mouse action occurred. -#define Qt_TabFocusReason 1 // The Tab key was pressed. -#define Qt_BacktabFocusReason 2 // A Backtab occurred. The input for this may include the Shift or Control keys; e.g. Shift+Tab. -#define Qt_ActiveWindowFocusReason 3 // The window system made this window either active or inactive. -#define Qt_PopupFocusReason 4 // The application opened/closed a pop-up that grabbed/released the keyboard focus. -#define Qt_ShortcutFocusReason 5 // The user typed a label's buddy shortcut -#define Qt_MenuBarFocusReason 6 // The menu bar took focus. -#define Qt_OtherFocusReason 7 // Another reason, usually application-specific. -// See also Keyboard Focus. - -// enum #define Qt_GlobalColor -// Qt's predefined QColor objects: -// -#define Qt_white 3 // White (#ffffff) -#define Qt_black 2 // Black (#000000) -#define Qt_red 7 // Red (#ff0000) -#define Qt_darkRed 13 // Dark red (#800000) -#define Qt_green 8 // Green (#00ff00) -#define Qt_darkGreen 14 // Dark green (#008000) -#define Qt_blue 9 // Blue (#0000ff) -#define Qt_darkBlue 15 // Dark blue (#000080) -#define Qt_cyan 10 // Cyan (#00ffff) -#define Qt_darkCyan 16 // Dark cyan (#008080) -#define Qt_magenta 11 // Magenta (#ff00ff) -#define Qt_darkMagenta 17 // Dark magenta (#800080) -#define Qt_yellow 12 // Yellow (#ffff00) -#define Qt_darkYellow 18 // Dark yellow (#808000) -#define Qt_gray 5 // Gray (#a0a0a4) -#define Qt_darkGray 4 // Dark gray (#808080) -#define Qt_lightGray 6 // Light gray (#c0c0c0) -#define Qt_transparent 19 // a transparent black value (i.e., QColor(0, 0, 0, 0)) -#define Qt_color0 0 // 0 pixel value (for bitmaps) -#define Qt_color1 1 // 1 pixel value (for bitmaps) -// See also QColor. - -// enum #define Qt_HitTestAccuracy -// This enum contains the types of accuracy that can be used by the QTextDocument class when testing for mouse clicks on text documents. -// -#define Qt_ExactHit 0 // The point at which input occurred must coincide exactly with input-sensitive parts of the document. -#define Qt_FuzzyHit 1 // The point at which input occurred can lie close to input-sensitive parts of the document. -// This enum is defined in the header file. - -// enum #define Qt_ImageConversionFlag -// flags #define Qt_ImageConversionFlags -// The options marked "(default)" are set if no other values from the list are included (since the defaults are zero): -// Color/Mono preference (ignored for QBitmap): -// -#define Qt_AutoColor 0x00000000 // (default) - If the image has depth 1 and contains only black and white pixels, the pixmap becomes monochrome. -#define Qt_ColorOnly 0x00000003 // The pixmap is dithered/converted to the native display depth. -#define Qt_MonoOnly 0x00000002 // The pixmap becomes monochrome. If necessary, it is dithered using the chosen dithering algorithm. - -// Dithering mode preference for RGB channels: -// -#define Qt_DiffuseDither 0x00000000 // (default) - A high-quality dither. -#define Qt_OrderedDither 0x00000010 // A faster, more ordered dither. -#define Qt_ThresholdDither 0x00000020 // No dithering; closest color is used. - -// Dithering mode preference for alpha channel: -// -#define Qt_ThresholdAlphaDither 0x00000000 // (default) - No dithering. -#define Qt_OrderedAlphaDither 0x00000004 // A faster, more ordered dither. -#define Qt_DiffuseAlphaDither 0x00000008 // A high-quality dither. - -// Color matching versus dithering preference: -// -#define Qt_PreferDither 0x00000040 // (default when converting to a pixmap) - Always dither 32-bit images when the image is converted to 8 bits. -#define Qt_AvoidDither 0x00000080 // (default when converting for the purpose of saving to file) - Dither 32-bit images only if the image has more than 256 colors and it is being converted to 8 bits. -// The ImageConversionFlags type is a typedef for QFlags. It stores an OR combination of ImageConversionFlag values. - -// enum #define Qt_InputMethodQuery -// -#define Qt_ImMicroFocus 0 // The rectangle covering the area of the input cursor in widget coordinates. -#define Qt_ImFont 1 // The currently used font for text input. -#define Qt_ImCursorPosition 2 // The logical position of the cursor within the text surrounding the input area (see ImSurroundingText). If any text is selected, the position returned will be at the logical end of the selection, even if the real cursor is located at the logical start. -#define Qt_ImSurroundingText 3 // The plain text around the input area, for example the current paragraph. -#define Qt_ImCurrentSelection 4 // The currently selected text. - -// enum #define Qt_ItemDataRole -// Each item in the model has a set of data elements associated with it, each with its own role. The roles are used by the view to indicate to the model which type of data it needs. -// The general purpose roles are: -// -#define Qt_DisplayRole 0 // The key data to be rendered in the form of text. -#define Qt_DecorationRole 1 // The data to be rendered as a decoration in the form of an icon. -#define Qt_EditRole 2 // The data in a form suitable for editing in an editor. -#define Qt_ToolTipRole 3 // The data displayed in the item's tooltip. -#define Qt_StatusTipRole 4 // The data displayed in the status bar. -#define Qt_WhatsThisRole 5 // The data displayed for the item in "What's This?" mode. -#define Qt_SizeHintRole 13 // The size hint for the item that will be supplied to views. - -// Roles describing appearance and meta data: -// -#define Qt_FontRole 6 // The font used for items rendered with the default delegate. -#define Qt_TextAlignmentRole 7 // The alignment of the text for items rendered with the default delegate. -#define Qt_BackgroundRole 8 // The background brush used for items rendered with the default delegate. -#define Qt_BackgroundColorRole 8 // This role is obsolete. Use BackgroundRole instead. -#define Qt_ForegroundRole 9 // The foreground brush (text color, typically) used for items rendered with the default delegate. -#define Qt_TextColorRole 9 // This role is obsolete. Use ForegroundRole instead. -#define Qt_CheckStateRole 10 // This role is used to obtain the checked state of an item (see #define Qt_CheckState). - -// Accessibility roles: -// -#define Qt_AccessibleTextRole 11 // The text to be used by accessibility extensions and plugins, such as screen readers. -#define Qt_AccessibleDescriptionRole 12 // A description of the item for accessibility purposes. - -// User roles: -// -#define Qt_UserRole 32 // The first role that can be used for application-specific purposes. - -// enum #define Qt_ItemFlag -// flags #define Qt_ItemFlags -// This enum describes the properties of an item: -// -#define Qt_NoItemFlags 0 // It does not have any properties set. -#define Qt_ItemIsSelectable 1 // It can be selected. -#define Qt_ItemIsEditable 2 // It can be edited. -#define Qt_ItemIsDragEnabled 4 // It can be dragged. -#define Qt_ItemIsDropEnabled 8 // It can be used as a drop target. -#define Qt_ItemIsUserCheckable 16 // It can be checked or unchecked by the user. -#define Qt_ItemIsEnabled 32 // The user can interact with the item. -#define Qt_ItemIsTristate 64 // The item is checkable with three separate states. -// Note that checkable items need to be given both a suitable set of flags and an initial state, indicating whether the item is checked or not. This is handled automatically for model/view components, but needs to be explicitly set for instances of QListWidgetItem, QTableWidgetItem, and QTreeWidgetItem. -// The ItemFlags type is a typedef for QFlags. It stores an OR combination of ItemFlag values. -// See also QAbstractItemModel. - -// enum #define Qt_ItemSelectionMode -// This enum is used in QGraphicsItem, QGraphicsScene and QGraphicsView to specify how items are selected, or how to determine if a shapes and items collide. -// -#define Qt_ContainsItemShape 0x0 // The output list contains only items whose shape is fully contained inside the selection area. Items that intersect with the area's outline are not included. -#define Qt_IntersectsItemShape 0x1 // The output list contains both items whose shape is fully contained inside the selection area, and items that intersect with the area's outline. This is a common mode for rubber band selection. -#define Qt_ContainsItemBoundingRect 0x2 // The output list contains only items whose bounding rectangle is fully contained inside the selection area. Items that intersect with the area's outline are not included. -#define Qt_IntersectsItemBoundingRect 0x3 // The output list contains both items whose bounding rectangle is fully contained inside the selection area, and items that intersect with the area's outline. This method is commonly used for determining areas that need redrawing. -// See also QGraphicsScene_items(), QGraphicsScene_collidingItems(), QGraphicsView_items(), QGraphicsItem_collidesWithItem(), and QGraphicsItem_collidesWithPath(). - -// enum #define Qt_Key -// The key names used by Qt. -// -#define Qt_Key_Escape 0x01000000 -#define Qt_Key_Tab 0x01000001 -#define Qt_Key_Backtab 0x01000002 -#define Qt_Key_Backspace 0x01000003 -#define Qt_Key_Return 0x01000004 -#define Qt_Key_Enter 0x01000005 // Typically located on the keypad. -#define Qt_Key_Insert 0x01000006 -#define Qt_Key_Delete 0x01000007 -#define Qt_Key_Pause 0x01000008 -#define Qt_Key_Print 0x01000009 -#define Qt_Key_SysReq 0x0100000a -#define Qt_Key_Clear 0x0100000b -#define Qt_Key_Home 0x01000010 -#define Qt_Key_End 0x01000011 -#define Qt_Key_Left 0x01000012 -#define Qt_Key_Up 0x01000013 -#define Qt_Key_Right 0x01000014 -#define Qt_Key_Down 0x01000015 -#define Qt_Key_PageUp 0x01000016 -#define Qt_Key_PageDown 0x01000017 -#define Qt_Key_Shift 0x01000020 -#define Qt_Key_Control 0x01000021 // On Mac OS X, this corresponds to the Command keys. -#define Qt_Key_Meta 0x01000022 // On Mac OS X, this corresponds to the Control keys. On Windows keyboards, this key is mapped to the Windows key. -#define Qt_Key_Alt 0x01000023 -#define Qt_Key_AltGr 0x01001103 // On Windows, when the KeyDown event for this key is sent, the Ctrl+Alt modifiers are also set. -#define Qt_Key_CapsLock 0x01000024 -#define Qt_Key_NumLock 0x01000025 -#define Qt_Key_ScrollLock 0x01000026 -#define Qt_Key_F1 0x01000030 -#define Qt_Key_F2 0x01000031 -#define Qt_Key_F3 0x01000032 -#define Qt_Key_F4 0x01000033 -#define Qt_Key_F5 0x01000034 -#define Qt_Key_F6 0x01000035 -#define Qt_Key_F7 0x01000036 -#define Qt_Key_F8 0x01000037 -#define Qt_Key_F9 0x01000038 -#define Qt_Key_F10 0x01000039 -#define Qt_Key_F11 0x0100003a -#define Qt_Key_F12 0x0100003b -#define Qt_Key_F13 0x0100003c -#define Qt_Key_F14 0x0100003d -#define Qt_Key_F15 0x0100003e -#define Qt_Key_F16 0x0100003f -#define Qt_Key_F17 0x01000040 -#define Qt_Key_F18 0x01000041 -#define Qt_Key_F19 0x01000042 -#define Qt_Key_F20 0x01000043 -#define Qt_Key_F21 0x01000044 -#define Qt_Key_F22 0x01000045 -#define Qt_Key_F23 0x01000046 -#define Qt_Key_F24 0x01000047 -#define Qt_Key_F25 0x01000048 -#define Qt_Key_F26 0x01000049 -#define Qt_Key_F27 0x0100004a -#define Qt_Key_F28 0x0100004b -#define Qt_Key_F29 0x0100004c -#define Qt_Key_F30 0x0100004d -#define Qt_Key_F31 0x0100004e -#define Qt_Key_F32 0x0100004f -#define Qt_Key_F33 0x01000050 -#define Qt_Key_F34 0x01000051 -#define Qt_Key_F35 0x01000052 -#define Qt_Key_Super_L 0x01000053 -#define Qt_Key_Super_R 0x01000054 -#define Qt_Key_Menu 0x01000055 -#define Qt_Key_Hyper_L 0x01000056 -#define Qt_Key_Hyper_R 0x01000057 -#define Qt_Key_Help 0x01000058 -#define Qt_Key_Direction_L 0x01000059 -#define Qt_Key_Direction_R 0x01000060 -#define Qt_Key_Space 0x20 -#define Qt_Key_Any Key_Space -#define Qt_Key_Exclam 0x21 -#define Qt_Key_QuoteDbl 0x22 -#define Qt_Key_NumberSign 0x23 -#define Qt_Key_Dollar 0x24 -#define Qt_Key_Percent 0x25 -#define Qt_Key_Ampersand 0x26 -#define Qt_Key_Apostrophe 0x27 -#define Qt_Key_ParenLeft 0x28 -#define Qt_Key_ParenRight 0x29 -#define Qt_Key_Asterisk 0x2a -#define Qt_Key_Plus 0x2b -#define Qt_Key_Comma 0x2c -#define Qt_Key_Minus 0x2d -#define Qt_Key_Period 0x2e -#define Qt_Key_Slash 0x2f -#define Qt_Key_0 0x30 -#define Qt_Key_1 0x31 -#define Qt_Key_2 0x32 -#define Qt_Key_3 0x33 -#define Qt_Key_4 0x34 -#define Qt_Key_5 0x35 -#define Qt_Key_6 0x36 -#define Qt_Key_7 0x37 -#define Qt_Key_8 0x38 -#define Qt_Key_9 0x39 -#define Qt_Key_Colon 0x3a -#define Qt_Key_Semicolon 0x3b -#define Qt_Key_Less 0x3c -#define Qt_Key_Equal 0x3d -#define Qt_Key_Greater 0x3e -#define Qt_Key_Question 0x3f -#define Qt_Key_At 0x40 // 64 -#define Qt_Key_A 0x41 // 65 -#define Qt_Key_B 0x42 -#define Qt_Key_C 0x43 -#define Qt_Key_D 0x44 -#define Qt_Key_E 0x45 -#define Qt_Key_F 0x46 -#define Qt_Key_G 0x47 -#define Qt_Key_H 0x48 -#define Qt_Key_I 0x49 -#define Qt_Key_J 0x4a -#define Qt_Key_K 0x4b -#define Qt_Key_L 0x4c -#define Qt_Key_M 0x4d -#define Qt_Key_N 0x4e // 78 -#define Qt_Key_O 0x4f // 79 -#define Qt_Key_P 0x50 // 80 -#define Qt_Key_Q 0x51 // 81 -#define Qt_Key_R 0x52 // 82 -#define Qt_Key_S 0x53 // 83 -#define Qt_Key_T 0x54 -#define Qt_Key_U 0x55 -#define Qt_Key_V 0x56 -#define Qt_Key_W 0x57 -#define Qt_Key_X 0x58 -#define Qt_Key_Y 0x59 -#define Qt_Key_Z 0x5a // 90 -#define Qt_Key_BracketLeft 0x5b -#define Qt_Key_Backslash 0x5c -#define Qt_Key_BracketRight 0x5d -#define Qt_Key_AsciiCircum 0x5e -#define Qt_Key_Underscore 0x5f -#define Qt_Key_QuoteLeft 0x60 -#define Qt_Key_BraceLeft 0x7b -#define Qt_Key_Bar 0x7c -#define Qt_Key_BraceRight 0x7d -#define Qt_Key_AsciiTilde 0x7e -#define Qt_Key_nobreakspace 0x0a0 -#define Qt_Key_exclamdown 0x0a1 -#define Qt_Key_cent 0x0a2 -#define Qt_Key_sterling 0x0a3 -#define Qt_Key_currency 0x0a4 -#define Qt_Key_yen 0x0a5 -#define Qt_Key_brokenbar 0x0a6 -#define Qt_Key_section 0x0a7 -#define Qt_Key_diaeresis 0x0a8 -#define Qt_Key_copyright 0x0a9 -#define Qt_Key_ordfeminine 0x0aa -#define Qt_Key_guillemotleft 0x0ab -#define Qt_Key_notsign 0x0ac -#define Qt_Key_hyphen 0x0ad -#define Qt_Key_registered 0x0ae -#define Qt_Key_macron 0x0af -#define Qt_Key_degree 0x0b0 -#define Qt_Key_plusminus 0x0b1 -#define Qt_Key_twosuperior 0x0b2 -#define Qt_Key_threesuperior 0x0b3 -#define Qt_Key_acute 0x0b4 -#define Qt_Key_mu 0x0b5 -#define Qt_Key_paragraph 0x0b6 -#define Qt_Key_periodcentered 0x0b7 -#define Qt_Key_cedilla 0x0b8 -#define Qt_Key_onesuperior 0x0b9 -#define Qt_Key_masculine 0x0ba -#define Qt_Key_guillemotright 0x0bb -#define Qt_Key_onequarter 0x0bc -#define Qt_Key_onehalf 0x0bd -#define Qt_Key_threequarters 0x0be -#define Qt_Key_questiondown 0x0bf -#define Qt_Key_Agrave 0x0c0 -#define Qt_Key_Aacute 0x0c1 -#define Qt_Key_Acircumflex 0x0c2 -#define Qt_Key_Atilde 0x0c3 -#define Qt_Key_Adiaeresis 0x0c4 -#define Qt_Key_Aring 0x0c5 -#define Qt_Key_AE 0x0c6 -#define Qt_Key_Ccedilla 0x0c7 -#define Qt_Key_Egrave 0x0c8 -#define Qt_Key_Eacute 0x0c9 -#define Qt_Key_Ecircumflex 0x0ca -#define Qt_Key_Ediaeresis 0x0cb -#define Qt_Key_Igrave 0x0cc -#define Qt_Key_Iacute 0x0cd -#define Qt_Key_Icircumflex 0x0ce -#define Qt_Key_Idiaeresis 0x0cf -#define Qt_Key_ETH 0x0d0 -#define Qt_Key_Ntilde 0x0d1 -#define Qt_Key_Ograve 0x0d2 -#define Qt_Key_Oacute 0x0d3 -#define Qt_Key_Ocircumflex 0x0d4 -#define Qt_Key_Otilde 0x0d5 -#define Qt_Key_Odiaeresis 0x0d6 -#define Qt_Key_multiply 0x0d7 -#define Qt_Key_Ooblique 0x0d8 -#define Qt_Key_Ugrave 0x0d9 -#define Qt_Key_Uacute 0x0da -#define Qt_Key_Ucircumflex 0x0db -#define Qt_Key_Udiaeresis 0x0dc -#define Qt_Key_Yacute 0x0dd -#define Qt_Key_THORN 0x0de -#define Qt_Key_ssharp 0x0df -#define Qt_Key_division 0x0f7 -#define Qt_Key_ydiaeresis 0x0ff -#define Qt_Key_Multi_key 0x01001120 -#define Qt_Key_Codeinput 0x01001137 -#define Qt_Key_SingleCandidate 0x0100113c -#define Qt_Key_MultipleCandidate 0x0100113d -#define Qt_Key_PreviousCandidate 0x0100113e -#define Qt_Key_Mode_switch 0x0100117e -#define Qt_Key_Kanji 0x01001121 -#define Qt_Key_Muhenkan 0x01001122 -#define Qt_Key_Henkan 0x01001123 -#define Qt_Key_Romaji 0x01001124 -#define Qt_Key_Hiragana 0x01001125 -#define Qt_Key_Katakana 0x01001126 -#define Qt_Key_Hiragana_Katakana 0x01001127 -#define Qt_Key_Zenkaku 0x01001128 -#define Qt_Key_Hankaku 0x01001129 -#define Qt_Key_Zenkaku_Hankaku 0x0100112a -#define Qt_Key_Touroku 0x0100112b -#define Qt_Key_Massyo 0x0100112c -#define Qt_Key_Kana_Lock 0x0100112d -#define Qt_Key_Kana_Shift 0x0100112e -#define Qt_Key_Eisu_Shift 0x0100112f -#define Qt_Key_Eisu_toggle 0x01001130 -#define Qt_Key_Hangul 0x01001131 -#define Qt_Key_Hangul_Start 0x01001132 -#define Qt_Key_Hangul_End 0x01001133 -#define Qt_Key_Hangul_Hanja 0x01001134 -#define Qt_Key_Hangul_Jamo 0x01001135 -#define Qt_Key_Hangul_Romaja 0x01001136 -#define Qt_Key_Hangul_Jeonja 0x01001138 -#define Qt_Key_Hangul_Banja 0x01001139 -#define Qt_Key_Hangul_PreHanja 0x0100113a -#define Qt_Key_Hangul_PostHanja 0x0100113b -#define Qt_Key_Hangul_Special 0x0100113f -#define Qt_Key_Dead_Grave 0x01001250 -#define Qt_Key_Dead_Acute 0x01001251 -#define Qt_Key_Dead_Circumflex 0x01001252 -#define Qt_Key_Dead_Tilde 0x01001253 -#define Qt_Key_Dead_Macron 0x01001254 -#define Qt_Key_Dead_Breve 0x01001255 -#define Qt_Key_Dead_Abovedot 0x01001256 -#define Qt_Key_Dead_Diaeresis 0x01001257 -#define Qt_Key_Dead_Abovering 0x01001258 -#define Qt_Key_Dead_Doubleacute 0x01001259 -#define Qt_Key_Dead_Caron 0x0100125a -#define Qt_Key_Dead_Cedilla 0x0100125b -#define Qt_Key_Dead_Ogonek 0x0100125c -#define Qt_Key_Dead_Iota 0x0100125d -#define Qt_Key_Dead_Voiced_Sound 0x0100125e -#define Qt_Key_Dead_Semivoiced_Sound 0x0100125f -#define Qt_Key_Dead_Belowdot 0x01001260 -#define Qt_Key_Dead_Hook 0x01001261 -#define Qt_Key_Dead_Horn 0x01001262 -#define Qt_Key_Back 0x01000061 -#define Qt_Key_Forward 0x01000062 -#define Qt_Key_Stop 0x01000063 -#define Qt_Key_Refresh 0x01000064 -#define Qt_Key_VolumeDown 0x01000070 -#define Qt_Key_VolumeMute 0x01000071 -#define Qt_Key_VolumeUp 0x01000072 -#define Qt_Key_BassBoost 0x01000073 -#define Qt_Key_BassUp 0x01000074 -#define Qt_Key_BassDown 0x01000075 -#define Qt_Key_TrebleUp 0x01000076 -#define Qt_Key_TrebleDown 0x01000077 -#define Qt_Key_MediaPlay 0x01000080 -#define Qt_Key_MediaStop 0x01000081 -#define Qt_Key_MediaPrevious 0x01000082 -#define Qt_Key_MediaNext 0x01000083 -#define Qt_Key_MediaRecord 0x01000084 -#define Qt_Key_HomePage 0x01000090 -#define Qt_Key_Favorites 0x01000091 -#define Qt_Key_Search 0x01000092 -#define Qt_Key_Standby 0x01000093 -#define Qt_Key_OpenUrl 0x01000094 -#define Qt_Key_LaunchMail 0x010000a0 -#define Qt_Key_LaunchMedia 0x010000a1 -#define Qt_Key_Launch0 0x010000a2 -#define Qt_Key_Launch1 0x010000a3 -#define Qt_Key_Launch2 0x010000a4 -#define Qt_Key_Launch3 0x010000a5 -#define Qt_Key_Launch4 0x010000a6 -#define Qt_Key_Launch5 0x010000a7 -#define Qt_Key_Launch6 0x010000a8 -#define Qt_Key_Launch7 0x010000a9 -#define Qt_Key_Launch8 0x010000aa -#define Qt_Key_Launch9 0x010000ab -#define Qt_Key_LaunchA 0x010000ac -#define Qt_Key_LaunchB 0x010000ad -#define Qt_Key_LaunchC 0x010000ae -#define Qt_Key_LaunchD 0x010000af -#define Qt_Key_LaunchE 0x010000b0 -#define Qt_Key_LaunchF 0x010000b1 -#define Qt_Key_MediaLast 0x0100ffff -#define Qt_Key_unknown 0x01ffffff -#define Qt_Key_Call 0x01100004 -#define Qt_Key_Context1 0x01100000 -#define Qt_Key_Context2 0x01100001 -#define Qt_Key_Context3 0x01100002 -#define Qt_Key_Context4 0x01100003 -#define Qt_Key_Flip 0x01100006 -#define Qt_Key_Hangup 0x01100005 -#define Qt_Key_No 0x01010002 -#define Qt_Key_Select 0x01010000 -#define Qt_Key_Yes 0x01010001 -#define Qt_Key_Execute 0x01020003 -#define Qt_Key_Printer 0x01020002 -#define Qt_Key_Play 0x01020005 -#define Qt_Key_Sleep 0x01020004 -#define Qt_Key_Zoom 0x01020006 -#define Qt_Key_Cancel 0x01020001 -// See also QKeyEvent_key(). - -// enum #define Qt_KeyboardModifier -// flags #define Qt_KeyboardModifiers -// This enum describes the modifier keys. -// -#define Qt_NoModifier 0x00000000 // No modifier key is pressed. -#define Qt_ShiftModifier 0x02000000 // A Shift key on the keyboard is pressed. -#define Qt_ControlModifier 0x04000000 // A Ctrl key on the keyboard is pressed. -#define Qt_AltModifier 0x08000000 // An Alt key on the keyboard is pressed. -#define Qt_MetaModifier 0x10000000 // A Meta key on the keyboard is pressed. -#define Qt_KeypadModifier 0x20000000 // A keypad button is pressed. -#define Qt_GroupSwitchModifier 0x40000000 // X11 only. A Mode_switch key on the keyboard is pressed. -// Note: On Mac OS X, the ControlModifier value corresponds to the Command keys on the Macintosh keyboard, and the MetaModifier value corresponds to the Control keys. The KeypadModifier value will also be set when an arrow key is pressed as the arrow keys are considered part of the keypad. -// Note: On Windows Keyboards, #define Qt_MetaModifier and #define Qt_Key_Meta are mapped to the Windows key. -// The KeyboardModifiers type is a typedef for QFlags. It stores an OR combination of KeyboardModifier values. -// See also MouseButton and Modifier. - -// enum #define Qt_LayoutDirection -// Specifies the direction of Qt's layouts: -// -#define Qt_LeftToRight 0 // Left-to-right layout. -#define Qt_RightToLeft 1 // Right-to-left layout. -// Right-to-left layouts are necessary for certain languages, notably Arabic and Hebrew. -// See also QApplication_setLayoutDirection() and QWidget_setLayoutDirection(). - -// enum #define Qt_MaskMode -// This enum specifies the behavior of the QPixmap_createMaskFromColor() and QImage_createMaskFromColor() functions. -// -#define Qt_MaskInColor 0 // Creates a mask where all pixels matching the given color are opaque. -#define Qt_MaskOutColor 1 // Creates a mask where all pixels matching the given color are transparent. - -// enum #define Qt_MatchFlag -// flags #define Qt_MatchFlags -// This enum describes the type of matches that can be used when searching for items in a model. -// -#define Qt_MatchExactly 0 // Performs QVariant-based matching. -#define Qt_MatchFixedString 8 // Performs string-based matching. String-based comparisons are case-insensitive unless the MatchCaseSensitive flag is also specified. -#define Qt_MatchContains 1 // The search term is contained in the item. -#define Qt_MatchStartsWith 2 // The search term matches the start of the item. -#define Qt_MatchEndsWith 3 // The search term matches the end of the item. -#define Qt_MatchCaseSensitive 16 // The search is case sensitive. -#define Qt_MatchRegExp 4 // Performs string-based matching using a regular expression as the search term. -#define Qt_MatchWildcard 5 // Performs string-based matching using a string with wildcards as the search term. -#define Qt_MatchWrap 32 // Perform a search that wraps around, so that when the search reaches the last item in the model, it begins again at the first item and continues until all items have been examined. -#define Qt_MatchRecursive 64 // Searches the entire hierarchy. -// The MatchFlags type is a typedef for QFlags. It stores an OR combination of MatchFlag values. -// See also QString_compare() and QRegExp. - -// enum #define Qt_Modifier -// This enum provides shorter names for the keyboard modifier keys supported by Qt. -// Note: On Mac OS X, the CTRL value corresponds to the Command keys on the Macintosh keyboard, and the META value corresponds to the Control keys. -// -#define Qt_SHIFT Qt_ShiftModifier // The Shift keys provided on all standard keyboards. -#define Qt_META Qt_MetaModifier // The Meta keys. -#define Qt_CTRL Qt_ControlModifier // The Ctrl keys. -#define Qt_ALT Qt_AltModifier // The normal Alt keys, but not keys like AltGr. -#define Qt_UNICODE_ACCEL 0x00000000 // The shortcut is specified as a Unicode code point, not as a Qt Key. -// See also KeyboardModifier and MouseButton. - -// enum #define Qt_MouseButton -// flags #define Qt_MouseButtons -// This enum type describes the different mouse buttons. -// -#define Qt_NoButton 0x00000000 // The button state does not refer to any button (see QMouseEvent_button()). -#define Qt_LeftButton 0x00000001 // The left button is pressed, or an event refers to the left button. (The left button may be the right button on left-handed mice.) -#define Qt_RightButton 0x00000002 // The right button. -#define Qt_MidButton 0x00000004 // The middle button. -#define Qt_XButton1 0x00000008 // The first X button. -#define Qt_XButton2 0x00000010 // The second X button. -// The MouseButtons type is a typedef for QFlags. It stores an OR combination of MouseButton values. -// See also KeyboardModifier and Modifier. - -// enum #define Qt_Orientation -// flags #define Qt_Orientations -// This type is used to signify an object's orientation. -// -#define Qt_Horizontal 0x1 -#define Qt_Vertical 0x2 -// Orientation is used with QScrollBar for example. -// The Orientations type is a typedef for QFlags. It stores an OR combination of Orientation values. - -// enum #define Qt_PenCapStyle -// This enum type defines the pen cap styles supported by Qt, i.e. the line end caps that can be drawn using QPainter. -// -#define Qt_FlatCap 0x00 // a square line end that does not cover the end point of the line. -#define Qt_SquareCap 0x10 // a square line end that covers the end point and extends beyond it by half the line width. -#define Qt_RoundCap 0x20 // a rounded line end. -// See also QPen. - -// enum #define Qt_PenJoinStyle -// This enum type defines the pen join styles supported by Qt, i.e. which joins between two connected lines can be drawn using QPainter. -// -#define Qt_MiterJoin 0x00 // The outer edges of the lines are extended to meet at an angle, and this area is filled. -#define Qt_BevelJoin 0x40 // The triangular notch between the two lines is filled. -#define Qt_RoundJoin 0x80 // A circular arc between the two lines is filled. -#define Qt_SvgMiterJoin 0x100 // A miter join corresponding to the definition of a miter join in the SVG 1.2 Tiny specification. -// See also QPen. - -// enum #define Qt_PenStyle -// This enum type defines the pen styles that can be drawn using QPainter. The styles are: -// -#define Qt_NoPen 0 // no line at all. For example, QPainter_drawRect() fills but does not draw any boundary line. -#define Qt_SolidLine 1 // A plain line. -#define Qt_DashLine 2 // Dashes separated by a few pixels. -#define Qt_DotLine 3 // Dots separated by a few pixels. -#define Qt_DashDotLine 4 // Alternate dots and dashes. -#define Qt_DashDotDotLine 5 // One dash, two dots, one dash, two dots. -#define Qt_CustomDashLine 6 // A custom pattern defined using QPainterPathStroker_setDashPattern(). -// See also QPen. - -// enum #define Qt_ScrollBarPolicy -// This enum type describes the various modes of QAbstractScrollArea's scroll bars. -// -#define Qt_ScrollBarAsNeeded 0 // QAbstractScrollArea shows a scroll bar when the content is too large to fit and not otherwise. This is the default. -#define Qt_ScrollBarAlwaysOff 1 // QAbstractScrollArea never shows a scroll bar. -#define Qt_ScrollBarAlwaysOn 2 // QAbstractScrollArea always shows a scroll bar. -// The modes for the horizontal and vertical scroll bars are independent.) - -// enum #define Qt_ShortcutContext -// For a QEvent_Shortcut event to occur, the shortcut's key sequence must be entered by the user in a context where the shortcut is active. The possible contexts are these: -// -#define Qt_WidgetShortcut 0 // The shortcut is active when its parent widget has focus. -#define Qt_WidgetWithChildrenShortcut 3 // The shortcut is active when its parent widget, or any of its children has focus. Children which are top-level widgets, except pop-ups, are not affected by this shortcut context. -#define Qt_WindowShortcut 1 // The shortcut is active when its parent widget is a logical subwidget of the active top-level window. -#define Qt_ApplicationShortcut 2 // The shortcut is active when one of the applications windows are active. - -// enum #define Qt_SizeHint -// This enum is used by QGraphicsLayoutItem_sizeHint() -// -#define Qt_MinimumSize 0 // is used to specify the minimum size of a graphics layout item. -#define Qt_PreferredSize 1 // is used to specify the preferred size of a graphics layout item. -#define Qt_MaximumSize 2 // is used to specify the maximum size of a graphics layout item. -#define Qt_MinimumDescent 3 // is used to specify the minimum descent of a text string in a graphics layout item. -// See also QGraphicsLayoutItem_sizeHint(). - -// enum #define Qt_SizeMode -// This enum is used by QPainter_drawRoundedRect() and QPainterPath_addRoundedRect() functions to specify the radii of rectangle corners with respect to the dimensions of the bounding rectangles specified. -// -#define Qt_AbsoluteSize 0 // Specifies the size using absolute measurements. -#define Qt_RelativeSize 1 // Specifies the size relative to the bounding rectangle, typically using percentage measurements. - -// enum #define Qt_SortOrder -// This enum describes how the items in a widget are sorted. -// -#define Qt_AscendingOrder 0 // The items are sorted ascending e.g. starts with 'AAA' ends with 'ZZZ' in Latin-1 locales -#define Qt_DescendingOrder 1 // The items are sorted descending e.g. starts with 'ZZZ' ends with 'AAA' in Latin-1 locales - -// enum #define Qt_TextElideMode -// This enum specifies where the ellipsis should appear when displaying texts that don't fit: -// -#define Qt_ElideLeft 0 // The ellipsis should appear at the beginning of the text. -#define Qt_ElideRight 1 // The ellipsis should appear at the end of the text. -#define Qt_ElideMiddle 2 // The ellipsis should appear in the middle of the text. -#define Qt_ElideNone 3 // Ellipsis should NOT appear in the text. -// #define Qt_ElideMiddle is normally the most appropriate choice for URLs (e.g., "http://www.qtsof...ovingto/beijing/"), whereas #define Qt_ElideRight is appropriate for other strings (e.g., "Deploying Applications on Ma..."). -// See also QAbstractItemView_textElideMode, QFontMetrics_elidedText(), AlignmentFlag, and QTabBar_elideMode. - -// enum #define Qt_TextFlag -// This enum type is used to define some modifier flags. Some of these flags only make sense in the context of printing: -// -#define Qt_TextSingleLine 0x0100 // Treats all whitespace as spaces and prints just one line. -#define Qt_TextDontClip 0x0200 // If it's impossible to stay within the given bounds, it prints outside. -#define Qt_TextExpandTabs 0x0400 // Makes the U+0009 (ASCII tab) character move to the next tab stop. -#define Qt_TextShowMnemonic 0x0800 // Displays the string "&P" as P (see QButton for an example). For an ampersand, use "&&". -#define Qt_TextWordWrap 0x1000 // Breaks lines at appropriate points, e.g. at word boundaries. -#define Qt_TextWrapAnywhere 0x2000 // Breaks lines anywhere, even within words. -#define Qt_TextHideMnemonic 0x8000 // Same as #define Qt_TextShowMnemonic but doesn't draw the underlines. -#define Qt_TextDontPrint 0x4000 // Treat this text as "hidden" and don't print it. -#define Qt_IncludeTrailingSpaces Qt_TextIncludeTrailingSpaces // When this option is set, QTextLine_naturalTextWidth() and naturalTextRect() will return a value that includes the width of trailing spaces in the text; otherwise this width is excluded. -#define Qt_TextIncludeTrailingSpaces 0x08000000 // Same as IncludeTrailingSpaces -#define Qt_TextJustificationForced 0x10000 // Ensures that text lines are justified. -// You can use as many modifier flags as you want, except that #define Qt_TextSingleLine and #define Qt_TextWordWrap cannot be combined. -// Flags that are inappropriate for a given use are generally ignored. - -// enum #define Qt_TextFormat -// This enum is used in widgets that can display both plain text and rich text, e.g. QLabel. It is used for deciding whether a text string should be interpreted as one or the other. This is normally done by passing one of the enum values to a setTextFormat() function. -// -#define Qt_PlainText 0 // The text string is interpreted as a plain text string. -#define Qt_RichText 1 // The text string is interpreted as a rich text string. -#define Qt_AutoText 2 // The text string is interpreted as for #define Qt_RichText if #define Qt_mightBeRichText() returns true, otherwise as #define Qt_PlainText. -#define Qt_LogText 3 // A special, limited text format which is only used by Q3TextEdit in an optimized mode. - -// enum #define Qt_TextInteractionFlag -// flags #define Qt_TextInteractionFlags -// This enum specifies how a text displaying widget reacts to user input. -// -#define Qt_NoTextInteraction 0 // No interaction with the text is possible. -#define Qt_TextSelectableByMouse 1 // Text can be selected with the mouse and copied to the clipboard using a context menu or standard keyboard shortcuts. -#define Qt_TextSelectableByKeyboard 2 // Text can be selected with the cursor keys on the keyboard. A text cursor is shown. -#define Qt_LinksAccessibleByMouse 4 // Links can be highlighted and activated with the mouse. -#define Qt_LinksAccessibleByKeyboard 8 // Links can be focused using tab and activated with enter. -#define Qt_TextEditable 16 // The text is fully editable. -#define Qt_TextEditorInteraction hb_bitOR( Qt_TextSelectableByMouse, Qt_TextSelectableByKeyboard, Qt_TextEditable ) // The default for a text editor. -#define Qt_TextBrowserInteraction hb_bitOR( Qt_TextSelectableByMouse, Qt_LinksAccessibleByMouse, Qt_LinksAccessibleByKeyboard ) // The default for QTextBrowser. -// The TextInteractionFlags type is a typedef for QFlags. It stores an OR combination of TextInteractionFlag values. - -// enum #define Qt_TimeSpec -// -#define Qt_LocalTime 0 // Locale dependent time (Timezones and Daylight Savings Time). -#define Qt_UTC 1 // Coordinated Universal Time, replaces Greenwich Mean Time. -#define Qt_OffsetFromUTC 2 // An offset in seconds from Coordinated Universal Time. - -// enum #define Qt_ToolBarArea -// flags #define Qt_ToolBarAreas -// -#define Qt_LeftToolBarArea 0x1 -#define Qt_RightToolBarArea 0x2 -#define Qt_TopToolBarArea 0x4 -#define Qt_BottomToolBarArea 0x8 -#define Qt_AllToolBarAreas hb_bitOR( Qt_LeftToolBarArea, Qt_RightToolBarArea, Qt_TopToolBarArea, Qt_BottomToolBarArea ) -#define Qt_NoToolBarArea 0 -// The ToolBarAreas type is a typedef for QFlags. It stores an OR combination of ToolBarArea values. - -// enum #define Qt_ToolButtonStyle -// The style of the tool button, describing how the button's text and icon should be displayed. -// -#define Qt_ToolButtonIconOnly 0 // Only display the icon. -#define Qt_ToolButtonTextOnly 1 // Only display the text. -#define Qt_ToolButtonTextBesideIcon 2 // The text appears beside the icon. -#define Qt_ToolButtonTextUnderIcon 3 // The text appears under the icon. - -// enum #define Qt_TransformationMode -// This enum type defines whether image transformations (e.g., scaling) should be smooth or not. -// -#define Qt_FastTransformation 0 // The transformation is performed quickly, with no smoothing. -#define Qt_SmoothTransformation 1 // The resulting image is transformed using bilinear filtering. -// See also QImage_scaled(). - -// enum #define Qt_UIEffect -// This enum describes the available UI effects. -// By default, Qt will try to use the platform specific desktop settings for each effect. Use the QApplication_setDesktopSettingsAware() function (passing false as argument) to prevent this, and the QApplication_setEffectEnabled() to enable or disable a particular effect. -// Note that all effects are disabled on screens running at less than 16-bit color depth. -// -#define Qt_UI_AnimateMenu 1 // Show animated menus. -#define Qt_UI_FadeMenu 2 // Show faded menus. -#define Qt_UI_AnimateCombo 3 // Show animated comboboxes. -#define Qt_UI_AnimateTooltip 4 // Show tooltip animations. -#define Qt_UI_FadeTooltip 5 // Show tooltip fading effects. -#define Qt_UI_AnimateToolBox 6 // Reserved -// See also QApplication_setEffectEnabled() and QApplication_setDesktopSettingsAware(). - -// enum #define Qt_WhiteSpaceMode -// This enum describes the types of whitespace mode that are used by the QTextDocument class to meet the requirements of different kinds of textual information. -// -#define Qt_WhiteSpaceNormal 0 // The whitespace mode used to display normal word wrapped text in paragraphs. -#define Qt_WhiteSpacePre 1 // A preformatted text mode in which whitespace is reproduced exactly. -#define Qt_WhiteSpaceNoWrap 2 -// This enum is defined in the header file. - -// enum #define Qt_WidgetAttribute -// This enum type is used to specify various widget attributes. Attributes are set and cleared with QWidget_setAttribute(), and queried with QWidget_testAttribute(), although some have special convenience functions which are mentioned below. -// -#define Qt_WA_AcceptDrops 78 // Allows data from drag and drop operations to be dropped onto the widget (see QWidget_setAcceptDrops()). -#define Qt_WA_AlwaysShowToolTips 84 // Enables tooltips for inactive windows. -#define Qt_WA_ContentsPropagated 3 // This flag is superfluous and obsolete; it no longer has any effect. Since Qt 4.1, all widgets that do not set WA_PaintOnScreen propagate their contents. -#define Qt_WA_CustomWhatsThis 47 // Indicates that the widget wants to continue operating normally in "What's This?" mode. This is set by the widget's author. -#define Qt_WA_DeleteOnClose 55 // Makes Qt delete this widget when the widget has accepted the close event (see QWidget_closeEvent()). -#define Qt_WA_Disabled 0 // Indicates that the widget is disabled, i.e. it does not receive any mouse or keyboard events. There is also a getter functions QWidget_isEnabled(). This is set/cleared by the Qt kernel. -#define Qt_WA_ForceDisabled 32 // Indicates that the widget is explicitly disabled, i.e. it will remain disabled even when all its ancestors are set to the enabled state. This implies WA_Disabled. This is set/cleared by QWidget_setEnabled() and QWidget_setDisabled(). -#define Qt_WA_ForceUpdatesDisabled 59 // Indicates that updates are explicitly disabled for the widget; i.e. it will remain disabled even when all its ancestors are set to the updates-enabled state. This implies WA_UpdatesDisabled. This is set/cleared by QWidget_setUpdatesEnabled(). -#define Qt_WA_GroupLeader 72 // This attribute has been deprecated. Use QWidget_windowModality instead. -#define Qt_WA_Hover 74 // Forces Qt to generate paint events when the mouse enters or leaves the widget. This feature is typically used when implementing custom styles; see the Styles example for details. -#define Qt_WA_InputMethodEnabled 14 // Enables input methods for Asian languages. Must be set when creating custom text editing widgets. On Windows CE this flag can be used in addition to QApplication_autoSipEnabled to automatically display the SIP when entering a widget. -#define Qt_WA_KeyboardFocusChange 77 // Set on a toplevel window when the users changes focus with the keyboard (tab, backtab, or shortcut). -#define Qt_WA_KeyCompression 33 // Enables key event compression if set, and disables it if not set. By default key compression is off, so widgets receive one key press event for each key press (or more, since autorepeat is usually on). If you turn it on and your program doesn't keep up with key input, Qt may try to compress key events so that more than one character can be processed in each event. For example, a word processor widget might receive 2, 3 or more characters in each QKeyEvent_text(), if the layout recalculation takes too long for the CPU. If a widget supports multiple character unicode input, it is always safe to turn the compression on. Qt performs key event compression only for printable characters. #define Qt_Modifier keys, cursor movement keys, function keys and miscellaneous action keys (e.g. Escape, Enter, Backspace, PrintScreen) will stop key event compression, even if there are more compressible key events available. Platforms other than Mac and X11 do not support this compression, in which case turning it on will have no effect. This is set/cleared by the widget's author. -#define Qt_WA_LayoutOnEntireRect 48 // Indicates that the widget wants QLayout to operate on the entire QWidget_rect(), not only on QWidget_contentsRect(). This is set by the widget's author. -#define Qt_WA_LayoutUsesWidgetRect 92 // Ignore the layout item rect from the style when laying out this widget with QLayout. This makes a difference in QMacStyle and QPlastiqueStyle for some widgets. -#define Qt_WA_MacNoClickThrough 12 // When a widget that has this attribute set is clicked, and its window is inactive, the click will make the window active but won't be seen by the widget. Typical use of this attribute is on widgets with "destructive" actions, such as a "Delete" button. WA_MacNoClickThrough also applies to all child widgets of the widget that has it set. -#define Qt_WA_MacOpaqueSizeGrip 85 // Indicates that the native Carbon size grip should be opaque instead of transparent (the default). This attribute is only applicable to Mac OS X and is set by the widget's author. -#define Qt_WA_MacShowFocusRect 88 // Indicates that this widget should get a QFocusFrame around it. Some widgets draw their own focus halo regardless of this attribute. Not that the QWidget_focusPolicy also plays the main role in whether something is given focus or not, this only controls whether or not this gets the focus frame. This attribute is only applicable to Mac OS X. -#define Qt_WA_MacNormalSize 89 // Indicates the widget should have the normal size for widgets in Mac OS X. This attribute is only applicable to Mac OS X. -#define Qt_WA_MacSmallSize 90 // Indicates the widget should have the small size for widgets in Mac OS X. This attribute is only applicable to Mac OS X. -#define Qt_WA_MacMiniSize 91 // Indicates the widget should have the mini size for widgets in Mac OS X. This attribute is only applicable to Mac OS X. -#define Qt_WA_MacVariableSize 102 // Indicates the widget can choose between alternative sizes for widgets to avoid clipping. This attribute is only applicable to Mac OS X. -#define Qt_WA_MacBrushedMetal 46 // Indicates the widget should be drawn in the brushed metal style as supported by the windowing system. This attribute is only applicable to Mac OS X. -#define Qt_WA_Mapped 11 // Indicates that the widget is mapped on screen. This is set/cleared by the Qt kernel. -#define Qt_WA_MouseNoMask 71 // Makes the widget receive mouse events for the entire widget regardless of the currently set mask, overriding QWidget_setMask(). This is not applicable for top-level windows. -#define Qt_WA_MouseTracking 2 // Indicates that the widget has mouse tracking enabled. See QWidget_mouseTracking. -#define Qt_WA_Moved 43 // Indicates that the widget has an explicit position. This is set/cleared by QWidget_move() and by QWidget_setGeometry(). -#define Qt_WA_MSWindowsUseDirect3D 94 // Makes drawing to a widget with this attribute set use the Direct3D paint engine, if the Direct3D paint engine is available. This functionality is experimental. -#define Qt_WA_NoBackground Qt_WA_OpaquePaintEvent // This value is obsolete. Use WA_OpaquePaintEvent instead. -#define Qt_WA_NoChildEventsForParent 58 // Indicates that the widget does not want ChildAdded or ChildRemoved events sent to its parent. This is rarely necessary but can help to avoid automatic insertion widgets like splitters and layouts. This is set by a widget's author. -#define Qt_WA_NoChildEventsFromChildren 39 // Indicates that the widget does not want to receive ChildAdded or ChildRemoved events sent from its children. This is set by a widget's author. -#define Qt_WA_NoMouseReplay 54 // Used for pop-up widgets. Indicates that the most recent mouse press event should not be replayed when the pop-up widget closes. The flag is set by the widget's author and cleared by the Qt kernel every time the widget receives a new mouse event. -#define Qt_WA_NoMousePropagation 73 // Prohibits mouse events from being propagated to the widget's parent. This attribute is disabled by default. -#define Qt_WA_TransparentForMouseEvents 51 // When enabled, this attribute disables the delivery of mouse events to the widget and its children. Mouse events are delivered to other widgets as if the widget and its children were not present in the widget hierarchy; mouse clicks and other events effectively "pass through" them. This attribute is disabled by default. -#define Qt_WA_NoSystemBackground 9 // Indicates that the widget has no background, i.e. when the widget receives paint events, the background is not automatically repainted. Note: Unlike WA_OpaquePaintEvent, newly exposed areas are never filled with the background (e.g., after showing a window for the first time the user can see "through" it until the application processes the paint events). This flag is set or cleared by the widget's author. -#define Qt_WA_OpaquePaintEvent 4 // Indicates that the widget paints all its pixels when it receives a paint event. Thus, it is not required for operations like updating, resizing, scrolling and focus changes to erase the widget before generating paint events. The use of WA_OpaquePaintEvent provides a small optimization by helping to reduce flicker on systems that do not support double buffering and avoiding computational cycles necessary to erase the background prior to painting. Note: Unlike WA_NoSystemBackground, WA_OpaquePaintEvent makes an effort to avoid transparent window backgrounds. This flag is set or cleared by the widget's author. -#define Qt_WA_OutsideWSRange 49 // Indicates that the widget is outside the valid range of the window system's coordinate system. A widget outside the valid range cannot be mapped on screen. This is set/cleared by the Qt kernel. -#define Qt_WA_PaintOnScreen 8 // Indicates that the widget wants to draw directly onto the screen. Widgets with this attribute set do not participate in composition management, i.e. they cannot be semi-transparent or shine through semi-transparent overlapping widgets. Note: This flag is only supported on X11 and it disables double buffering. On Qt for Embedded Linux, the flag only works when set on a top-level widget and it relies on support from the active screen driver. This flag is set or cleared by the widget's author. To render outside of Qt's paint system, e.g., if you require native painting primitives, you need to reimplement QWidget_paintEngine() to return 0 and set this flag. -#define Qt_WA_PaintOutsidePaintEvent 13 // Makes it possible to use QPainter to paint on the widget outside paintEvent(). This flag is not supported on Windows, Mac OS X or Embedded Linux. We recommend that you use it only when porting Qt 3 code to Qt 4. -#define Qt_WA_PaintUnclipped 52 // Makes all painters operating on this widget unclipped. Children of this widget or other widgets in front of it do not clip the area the painter can paint on. This flag is only supported for widgets with the WA_PaintOnScreen flag set. The preferred way to do this in a cross platform way is to create a transparent widget that lies in front of the other widgets. -#define Qt_WA_PendingMoveEvent 34 // Indicates that a move event is pending, e.g., when a hidden widget was moved. This flag is set or cleared by the Qt kernel. -#define Qt_WA_PendingResizeEvent 35 // Indicates that a resize event is pending, e.g., when a hidden widget was resized. This flag is set or cleared by the Qt kernel. -#define Qt_WA_QuitOnClose 76 // Makes Qt quit the application when the last widget with the attribute set has accepted closeEvent(). This behavior can be modified with the QApplication_quitOnLastWindowClosed property. By default this attribute is set for all widgets of type #define Qt_Window. -#define Qt_WA_Resized 42 // Indicates that the widget has an explicit size. This flag is set or cleared by QWidget_resize() and QWidget_setGeometry(). -#define Qt_WA_RightToLeft 56 // Indicates that the layout direction for the widget is right to left. -#define Qt_WA_SetCursor 38 // Indicates that the widget has a cursor of its own. This flag is set or cleared by QWidget_setCursor() and QWidget_unsetCursor(). -#define Qt_WA_SetFont 37 // Indicates that the widget has a font of its own. This flag is set or cleared by QWidget_setFont(). -#define Qt_WA_SetPalette 36 // Indicates that the widget has a palette of its own. This flag is set or cleared by QWidget_setPalette(). -#define Qt_WA_SetStyle 86 // Indicates that the widget has a style of its own. This flag is set or cleared by QWidget_setStyle(). -#define Qt_WA_ShowModal 70 // This attribute has been deprecated. Use QWidget_windowModality instead. -#define Qt_WA_StaticContents 5 // Indicates that the widget contents are north-west aligned and static. On resize, such a widget will receive paint events only for parts of itself that are newly visible. This flag is set or cleared by the widget's author. -#define Qt_WA_StyleSheet 97 // Indicates that the widget is styled using a style sheet. -#define Qt_WA_TranslucentBackground 120 // Indicates that the widget should have a translucent background, i.e., any non-opaque regions of the widgets will be translucent because the widget will have an alpha channel. Setting this flag causes WA_NoSystemBackground to be set. This flag is set or cleared by the widget's author. -#define Qt_WA_UnderMouse 1 // Indicates that the widget is under the mouse cursor. The value is not updated correctly during drag and drop operations. There is also a getter function, QWidget_underMouse(). This flag is set or cleared by the Qt kernel. -#define Qt_WA_UpdatesDisabled 10 // Indicates that updates are blocked (including the system background). This flag is set or cleared by the Qt kernel. -// Warning: This flag must never be set or cleared by the widget's author. -#define Qt_WA_WindowModified 41 // Indicates that the window is marked as modified. On some platforms this flag will do nothing, on others (including Mac OS X and Windows) the window will take a modified appearance. This flag is set or cleared by QWidget_setWindowModified(). -#define Qt_WA_WindowPropagation 80 // Makes a toplevel window inherit font and palette from its parent. -#define Qt_WA_MacAlwaysShowToolWindow 96 // On Mac OS X, show the tool window even when the application is not active. By default, all tool windows are hidden when the application is inactive. -#define Qt_WA_SetLocale 87 // Indicates the locale should be taken into consideration in the widget. -#define Qt_WA_StyledBackground 93 // Indicates the widget should be drawn using a styled background. -#define Qt_WA_ShowWithoutActivating 98 // Show the widget without making it active. -#define Qt_WA_NativeWindow 100 // Indicates that a native window is created for the widget. Enabling this flag will also force a native window for the widget's ancestors unless #define Qt_WA_DontCreateNativeAncestors is set. -#define Qt_WA_DontCreateNativeAncestors 101 // Indicates that the widget's ancestors are kept non-native even though the widget itself is native. -#define Qt_WA_X11NetWmWindowTypeDesktop 104 // Adds _NET_WM_WINDOW_TYPE_DESKTOP to the window's _NET_WM_WINDOW_TYPE X11 window property. See http://standards.freedesktop.org/wm-spec/ for more details. This attribute has no effect on non-X11 platforms. -#define Qt_WA_X11NetWmWindowTypeDock 105 // Adds _NET_WM_WINDOW_TYPE_DOCK to the window's _NET_WM_WINDOW_TYPE X11 window property. See http://standards.freedesktop.org/wm-spec/ for more details. This attribute has no effect on non-X11 platforms. -#define Qt_WA_X11NetWmWindowTypeToolBar 106 // Adds _NET_WM_WINDOW_TYPE_TOOLBAR to the window's _NET_WM_WINDOW_TYPE X11 window property. See http://standards.freedesktop.org/wm-spec/ for more details. This attribute has no effect on non-X11 platforms. Note: Qt automaticaly sets this attribute for QToolBar. -#define Qt_WA_X11NetWmWindowTypeMenu 107 // Adds _NET_WM_WINDOW_TYPE_MENU to the window's _NET_WM_WINDOW_TYPE X11 window property. See http://standards.freedesktop.org/wm-spec/ for more details. This attribute has no effect on non-X11 platforms. Note: Qt automatically sets this attribute for QMenu when torn-off. -#define Qt_WA_X11NetWmWindowTypeUtility 108 // Adds _NET_WM_WINDOW_TYPE_UTILITY to the window's _NET_WM_WINDOW_TYPE X11 window property. See http://standards.freedesktop.org/wm-spec/ for more details. This attribute has no effect on non-X11 platforms. Note: Qt automatically sets this attribute for the #define Qt_Tool window type. -#define Qt_WA_X11NetWmWindowTypeSplash 109 // Adds _NET_WM_WINDOW_TYPE_SPLASH to the window's _NET_WM_WINDOW_TYPE X11 window property. See http://standards.freedesktop.org/wm-spec/ for more details. This attribute has no effect on non-X11 platforms. Note: Qt automatically sets this attribute for the #define Qt_SplashScreen window type. -#define Qt_WA_X11NetWmWindowTypeDialog 110 // Adds _NET_WM_WINDOW_TYPE_DIALOG to the window's _NET_WM_WINDOW_TYPE X11 window property. See http://standards.freedesktop.org/wm-spec/ for more details. This attribute has no effect on non-X11 platforms. Note: Qt automatically sets this attribute for the #define Qt_Dialog and #define Qt_Sheet window types. -#define Qt_WA_X11NetWmWindowTypeDropDownMenu 111 // Adds _NET_WM_WINDOW_TYPE_DROPDOWN_MENU to the window's _NET_WM_WINDOW_TYPE X11 window property. See http://standards.freedesktop.org/wm-spec/ for more details. This attribute has no effect on non-X11 platforms. \notw Qt automatically sets this attribute for QMenus added to a QMenuBar. -#define Qt_WA_X11NetWmWindowTypePopupMenu 112 // Adds _NET_WM_WINDOW_TYPE_POPUP_MENU to the window's _NET_WM_WINDOW_TYPE X11 window property. See http://standards.freedesktop.org/wm-spec/ for more details. This attribute has no effect on non-X11 platforms. Note: Qt automatically sets this attribute for QMenu. -#define Qt_WA_X11NetWmWindowTypeToolTip 113 // Adds _NET_WM_WINDOW_TYPE_TOOLTIP to the window's _NET_WM_WINDOW_TYPE X11 window property. See http://standards.freedesktop.org/wm-spec/ for more details. This attribute has no effect on non-X11 platforms. Note: Qt automatically sets this attribute for the #define Qt_ToolTip window type. -#define Qt_WA_X11NetWmWindowTypeNotification 114 // Adds _NET_WM_WINDOW_TYPE_NOTIFICATION to the window's _NET_WM_WINDOW_TYPE X11 window property. See http://standards.freedesktop.org/wm-spec/ for more details. This attribute has no effect on non-X11 platforms. -#define Qt_WA_X11NetWmWindowTypeCombo 115 // Adds _NET_WM_WINDOW_TYPE_COMBO to the window's _NET_WM_WINDOW_TYPE X11 window property. See http://standards.freedesktop.org/wm-spec/ for more details. This attribute has no effect on non-X11 platforms. Note: Qt automatically sets this attribute for the QComboBox pop-up. -#define Qt_WA_X11NetWmWindowTypeDND 116 // Adds _NET_WM_WINDOW_TYPE_DND to the window's _NET_WM_WINDOW_TYPE X11 window property. See http://standards.freedesktop.org/wm-spec/ for more details. This attribute has no effect on non-X11 platforms. Note: Qt automatically sets this attribute on the feedback widget used during a drag. -#define Qt_WA_MacFrameworkScaled 117 // Enables resolution independence aware mode on Mac when using Carbon. This attribute has no effect on Cocoa. The attribute is off by default and can be enabled on a per-window basis. - -// enum #define Qt_WindowFrameSection -// This enum is used to describe parts of a window frame. It is returned by QGraphicsWidget_windowFrameSectionAt() to describe what section of the window frame is under the mouse. -// -#define Qt_NoSection 0 -#define Qt_LeftSection 1 -#define Qt_TopLeftSection 2 -#define Qt_TopSection 3 -#define Qt_TopRightSection 4 -#define Qt_RightSection 5 -#define Qt_BottomRightSection 6 -#define Qt_BottomSection 7 -#define Qt_BottomLeftSection 8 -#define Qt_TitleBarArea 9 -// See also QGraphicsWidget_windowFrameEvent(), QGraphicsWidget_paintWindowFrame(), and QGraphicsWidget_windowFrameSectionAt(). - -// enum #define Qt_WindowModality -// This enum specifies the behavior of a modal window. A modal window is one that blocks input to other windows. Note that windows that are children of a modal window are not blocked. -// -#define Qt_NonModal 0 // The window is not modal and does not block input to other windows. -#define Qt_WindowModal 1 // The window is modal to a single window hierarchy and blocks input to its parent window, all grandparent windows, and all siblings of its parent and grandparent windows. -#define Qt_ApplicationModal 2 // The window is modal to the application and blocks input to all windows. -// See also QWidget_windowModality and QDialog. - -// enum #define Qt_WindowState -// flags #define Qt_WindowStates -// This enum type is used to specify the current state of a top-level window. -// The states are -// -#define Qt_WindowNoState 0x00000000 // The window has no state set (in normal state). -#define Qt_WindowMinimized 0x00000001 // The window is minimized (i.e. iconified). -#define Qt_WindowMaximized 0x00000002 // The window is maximized with a frame around it. -#define Qt_WindowFullScreen 0x00000004 // The window fills the entire screen without any frame around it. -#define Qt_WindowActive 0x00000008 // The window is the active window, i.e. it has keyboard focus. -// The WindowStates type is a typedef for QFlags. It stores an OR combination of WindowState values. - -// enum #define Qt_WindowType -// flags #define Qt_WindowFlags -// This enum type is used to specify various window-system properties for the widget. They are fairly unusual but necessary in a few cases. Some of these flags depend on whether the underlying window manager supports them. -// The main types are -// -#define Qt_Widget 0x00000000 // This is the default type for QWidget. Widgets of this type are child widgets if they have a parent, and independent windows if they have no parent. // See also #define Qt_Window and #define Qt_SubWindow. -#define Qt_Window 0x00000001 // Indicates that the widget is a window, usually with a window system frame and a title bar, irrespective of whether the widget has a parent or not. Note that it is not possible to unset this flag if the widget does not have a parent. -#define Qt_Dialog hb_bitOR( 0x00000002, Qt_Window ) // Indicates that the widget is a window that should be decorated as a dialog (i.e., typically no maximize or minimize buttons in the title bar). This is the default type for QDialog. If you want to use it as a modal dialog, it should be launched from another window, or have a parent and used with the QWidget_windowModality property. If you make it modal, the dialog will prevent other top-level windows in the application from getting any input. We refer to a top-level window that has a parent as a secondary window. -#define Qt_Sheet hb_bitOR( 0x00000004, Qt_Window ) // Indicates that the widget is a Macintosh sheet. -#define Qt_Drawer hb_bitOR( 0x00000006, Qt_Window ) // Indicates that the widget is a Macintosh drawer. -#define Qt_Popup hb_bitOR( 0x00000008, Qt_Window ) // Indicates that the widget is a pop-up top-level window, i.e. that it is modal, but has a window system frame appropriate for pop-up menus. -#define Qt_Tool hb_bitOR( 0x0000000a, Qt_Window ) // Indicates that the widget is a tool window. A tool window is often a small window with a smaller than usual title bar and decoration, typically used for collections of tool buttons. It there is a parent, the tool window will always be kept on top of it. If there isn't a parent, you may consider using #define Qt_WindowStaysOnTopHint as well. If the window system supports it, a tool window can be decorated with a somewhat lighter frame. It can also be combined with #define Qt_FramelessWindowHint. - -// On Mac OS X, tool windows correspond to the Floating class of windows. This means that the window lives on a level above normal windows; it impossible to put a normal window on top of it. By default, tool windows will disappear when the application is inactive. This can be controlled by the #define Qt_WA_MacAlwaysShowToolWindow attribute. -// -#define Qt_ToolTip hb_bitOR( 0x0000000c, Qt_Window ) // Indicates that the widget is a tooltip. This is used internally to implement tooltips. -#define Qt_SplashScreen hb_bitOR( 0x0000000e, Qt_Window ) // Indicates that the window is a splash screen. This is the default type for QSplashScreen. -#define Qt_Desktop hb_bitOR( 0x00000010, Qt_Window ) // Indicates that this widget is the desktop. This is the type for QDesktopWidget. -#define Qt_SubWindow 0x00000012 // Indicates that this widget is a sub-window, such as a QMdiSubWindow widget. - -// There are also a number of flags which you can use to customize the appearance of top-level -// windows. These have no effect on other windows: -// -#define Qt_MSWindowsFixedSizeDialogHint 0x00000100 // Gives the window a thin dialog border on Windows. This style is traditionally used for fixed-size dialogs. -#define Qt_MSWindowsOwnDC 0x00000200 // Gives the window its own display context on Windows. -#define Qt_X11BypassWindowManagerHint 0x00000400 // Bypass the window manager completely. This results in a borderless window that is not managed at all (i.e., no keyboard input unless you call QWidget_activateWindow() manually). -#define Qt_FramelessWindowHint 0x00000800 // Produces a borderless window. The user cannot move or resize a borderless window via the window system. On X11, the result of the flag is dependent on the window manager and its ability to understand Motif and/or NETWM hints. Most existing modern window managers can handle this. - -// The CustomizeWindowHint flag is used to enable customization of the window controls. -// This flag must be set to allow the WindowTitleHint, WindowSystemMenuHint, -// WindowMinimizeButtonHint, WindowMaximizeButtonHint and WindowCloseButtonHint flags to be changed. -// -#define Qt_CustomizeWindowHint 0x02000000 // Turns off the default window title hints. -#define Qt_WindowTitleHint 0x00001000 // Gives the window a title bar. -#define Qt_WindowSystemMenuHint 0x00002000 // Adds a window system menu, and possibly a close button (for example on Mac). If you need to hide or show a close button, it is more portable to use WindowCloseButtonHint. -#define Qt_WindowMinimizeButtonHint 0x00004000 // Adds a minimize button. On some platforms this implies #define Qt_WindowSystemMenuHint for it to work. -#define Qt_WindowMaximizeButtonHint 0x00008000 // Adds a maximize button. On some platforms this implies #define Qt_WindowSystemMenuHint for it to work. -#define Qt_WindowMinMaxButtonsHint hb_bitOR( Qt_WindowMinimizeButtonHint, Qt_WindowMaximizeButtonHint ) // Adds a minimize and a maximize button. On some platforms this implies #define Qt_WindowSystemMenuHint for it to work. -#define Qt_WindowCloseButtonHint 0x08000000 // Adds a close button. On some platforms this implies #define Qt_WindowSystemMenuHint for it to work. -#define Qt_WindowContextHelpButtonHint 0x00010000 // Adds a context help button to dialogs. On some platforms this implies #define Qt_WindowSystemMenuHint for it to work. -#define Qt_MacWindowToolBarButtonHint 0x10000000 // On Mac OS X adds a tool bar button (i.e., the oblong button that is on the top right of windows that have toolbars. -#define Qt_BypassGraphicsProxyWidget 0x20000000 // Prevents the window and its children from automatically embedding themselves into a QGraphicsProxyWidget if the parent widget is already embedded. You can set this flag if you want your widget to always be a toplevel widget on the desktop, regardless of whether the parent widget is embedded in a scene or not. -#define Qt_WindowShadeButtonHint 0x00020000 // -#define Qt_WindowStaysOnTopHint 0x00040000 // Informs the window system that the window should stay on top of all other windows. Note that on some window managers on X11 you also have to pass #define Qt_X11BypassWindowManagerHint for this flag to work correctly. -#define Qt_WindowStaysOnBottomHint 0x04000000 // Informs the window system that the window should stay on bottom of all other windows. Note that on X11 this hint will work only in window managers that support _NET_WM_STATE_BELOW atom. If a window always on the bottom has a parent, the parent will also be left on the bottom. This window hint is currently not implemented for Mac OS X. -#define Qt_WindowOkButtonHint 0x00080000 // Adds an OK button to the window decoration of a dialog. Only supported for Windows CE. -#define Qt_WindowCancelButtonHint 0x00100000 // Adds a Cancel button to the window decoration of a dialog. Only supported for Windows CE. -#define Qt_WindowType_Mask 0x000000ff // A mask for extracting the window type part of the window flags. - // -#define Qt_WMouseNoMask 0x00080000 // Use #define Qt_WA_MouseNoMask instead. -#define Qt_WDestructiveClose 0x00100000 // Use #define Qt_WA_DeleteOnClose instead. -#define Qt_WStaticContents 0x00200000 // Use #define Qt_WA_StaticContents instead. -#define Qt_WGroupLeader 0x00400000 // No longer needed. -#define Qt_WShowModal 0x00800000 // Use QWidget_windowModality instead. -#define Qt_WNoMousePropagation 0x01000000 // Use #define Qt_WA_NoMousePropagation instead. -#define Qt_WType_TopLevel Qt_Window // Use #define Qt_Window instead. -#define Qt_WType_Dialog Qt_Dialog // Use #define Qt_Dialog instead. -#define Qt_WType_Popup Qt_Popup // Use #define Qt_Popup instead. -#define Qt_WType_Desktop Qt_Desktop // Use #define Qt_Desktop instead. -#define Qt_WType_Mask Qt_WindowType_Mask // Use Qt_WindowType_Mask instead. -#define Qt_WStyle_Customize 0 // No longer needed. -#define Qt_WStyle_NormalBorder 0 // No longer needed. -#define Qt_WStyle_DialogBorder Qt_MSWindowsFixedSizeDialogHint // Use #define Qt_MSWindowsFixedSizeDialogHint instead. -#define Qt_WStyle_NoBorder Qt_FramelessWindowHint // Use #define Qt_FramelessWindowHint instead. -#define Qt_WStyle_Title Qt_WindowTitleHint // Use #define Qt_WindowTitleHint instead. -#define Qt_WStyle_SysMenu Qt_WindowSystemMenuHint // Use #define Qt_WindowSystemMenuHint instead. -#define Qt_WStyle_Minimize Qt_WindowMinimizeButtonHint // Use #define Qt_WindowMinimizeButtonHint instead. -#define Qt_WStyle_Maximize Qt_WindowMaximizeButtonHint // Use #define Qt_WindowMaximizeButtonHint instead. -#define Qt_WStyle_MinMax hb_bitOR( Qt_WStyle_Minimize, WStyle_Maximize ) // Use #define Qt_WindowMinMaxButtonsHint instead. -#define Qt_WStyle_Tool Qt_Tool // Use #define Qt_Tool instead. -#define Qt_WStyle_StaysOnTop Qt_WindowStaysOnTopHint // Use #define Qt_WindowStaysOnTopHint instead. -#define Qt_WStyle_ContextHelp Qt_WindowContextHelpButtonHint // Use #define Qt_WindowContextHelpButtonHint instead. -#define Qt_WPaintDesktop 0 // No longer needed. -#define Qt_WPaintClever 0 // No longer needed. -#define Qt_WX11BypassWM Qt_X11BypassWindowManagerHint // Use #define Qt_X11BypassWindowManagerHint instead. -#define Qt_WWinOwnDC Qt_MSWindowsOwnDC // Use #define Qt_MSWindowsOwnDC instead. -#define Qt_WMacSheet Qt_Sheet // Use #define Qt_Sheet instead. -#define Qt_WMacDrawer Qt_Drawer // Use #define Qt_Drawer instead. -#define Qt_WStyle_Splash Qt_SplashScreen // Use #define Qt_SplashScreen instead. -#define Qt_WNoAutoErase 0 // No longer needed. -#define Qt_WRepaintNoErase 0 // No longer needed. -#define Qt_WNorthWestGravity Qt_WStaticContents // Use #define Qt_WA_StaticContents instead. -#define Qt_WType_Modal hb_bitOR( Qt_Dialog, Qt_WShowModal ) // Use Qt_Dialog and QWidget_windowModality instead. -#define Qt_WStyle_Dialog Qt_Dialog // Use Qt_Dialog instead. -#define Qt_WStyle_NoBorderEx Qt_FramelessWindowHint // Use Qt_FramelessWindowHint instead. -#define Qt_WResizeNoErase 0 // No longer needed. -#define Qt_WMacNoSheet 0 // No longer needed. - - -//Input Methods Hints -#define Qt_ImhHiddenText 0x1 // Characters should be hidden, as is typically used when entering passwords. This is automatically set when setting QLineEdit::echoMode to Password. -#define Qt_ImhNoAutoUppercase 0x2 // The input method should not try to automatically switch to upper case when a sentence ends. -#define Qt_ImhPreferNumbers 0x4 // Numbers are preferred (but not required). -#define Qt_ImhPreferUppercase 0x8 // Upper case letters are preferred (but not required). -#define Qt_ImhPreferLowercase 0x10 // Lower case letters are preferred (but not required). -#define Qt_ImhNoPredictiveText 0x20 // Do not use predictive text (i.e. dictionary lookup) while typing. - - -// Frame Shadow -#define QFrame_Plain 0x0010 // the frame and contents appear level with the surroundings; draws using the palette QPalette::WindowText color (without any 3D effect) -#define QFrame_Raised 0x0020 // the frame and contents appear raised; draws a 3D raised line using the light and dark colors of the current color group -#define QFrame_Sunken 0x0030 // the frame and contents appear sunken; draws a 3D sunken line using the light and dark colors of the current color group -// Frame Shape -#define QFrame_NoFrame 0 // QFrame draws nothing -#define QFrame_Box 0x0001 // QFrame draws a box around its contents -#define QFrame_Panel 0x0002 // QFrame draws a panel to make the contents appear raised or sunken -#define QFrame_StyledPanel 0x0006 // draws a rectangular panel with a look that depends on the current GUI style. It can be raised or sunken. -#define QFrame_HLine 0x0004 // QFrame draws a horizontal line that frames nothing (useful as separator) -#define QFrame_VLine 0x0005 // QFrame draws a vertical line that frames nothing (useful as separator) -#define QFrame_WinPanel 0x0003 // draws a rectangular panel that can be - // raised or sunken like those in Windows 95. Specifying this shape sets the - // line width to 2 pixels. WinPanel is provided for compatibility. For GUI style - // independence we recommend using StyledPanel instead. -// Frame Style Mask -#define QFrame_Shadow_Mask 0x00f0 // The Shadow part of frameStyle() -#define QFrame_Shape_Mask 0x000f // The Shape part of frameStyle() - - -#define QStyle_SP_TitleBarMinButton 1 // Minimize button on title bars (e.g., in QWorkspace). -#define QStyle_SP_TitleBarMenuButton 0 // Menu button on a title bar. -#define QStyle_SP_TitleBarMaxButton 2 // Maximize button on title bars. -#define QStyle_SP_TitleBarCloseButton 3 // Close button on title bars. -#define QStyle_SP_TitleBarNormalButton 4 // Normal (restore) button on title bars. -#define QStyle_SP_TitleBarShadeButton 5 // Shade button on title bars. -#define QStyle_SP_TitleBarUnshadeButton 6 // Unshade button on title bars. -#define QStyle_SP_TitleBarContextHelpButton 7 // The Context help button on title bars. -#define QStyle_SP_MessageBoxInformation 9 // The "information" icon. -#define QStyle_SP_MessageBoxWarning 10 // The "warning" icon. -#define QStyle_SP_MessageBoxCritical 11 // The "critical" icon. -#define QStyle_SP_MessageBoxQuestion 12 // The "question" icon. -#define QStyle_SP_DesktopIcon 13 // The "desktop" icon. -#define QStyle_SP_TrashIcon 14 // The "trash" icon. -#define QStyle_SP_ComputerIcon 15 // The "My computer" icon. -#define QStyle_SP_DriveFDIcon 16 // The floppy icon. -#define QStyle_SP_DriveHDIcon 17 // The harddrive icon. -#define QStyle_SP_DriveCDIcon 18 // The CD icon. -#define QStyle_SP_DriveDVDIcon 19 // The DVD icon. -#define QStyle_SP_DriveNetIcon 20 // The network icon. -#define QStyle_SP_DirHomeIcon 55 // The home directory icon. -#define QStyle_SP_DirOpenIcon 21 // The open directory icon. -#define QStyle_SP_DirClosedIcon 22 // The closed directory icon. -#define QStyle_SP_DirIcon 37 // The directory icon. -#define QStyle_SP_DirLinkIcon 23 // The link to directory icon. -#define QStyle_SP_FileIcon 24 // The file icon. -#define QStyle_SP_FileLinkIcon 25 // The link to file icon. -#define QStyle_SP_FileDialogStart 28 // The "start" icon in a file dialog. -#define QStyle_SP_FileDialogEnd 29 // The "end" icon in a file dialog. -#define QStyle_SP_FileDialogToParent 30 // The "parent directory" icon in a file dialog. -#define QStyle_SP_FileDialogNewFolder 31 // The "create new folder" icon in a file dialog. -#define QStyle_SP_FileDialogDetailedView 32 // The detailed view icon in a file dialog. -#define QStyle_SP_FileDialogInfoView 33 // The file info icon in a file dialog. -#define QStyle_SP_FileDialogContentsView 34 // The contents view icon in a file dialog. -#define QStyle_SP_FileDialogListView 35 // The list view icon in a file dialog. -#define QStyle_SP_FileDialogBack 36 // The back arrow in a file dialog. -#define QStyle_SP_DockWidgetCloseButton 8 // Close button on dock windows (see also QDockWidget). -#define QStyle_SP_ToolBarHorizontalExtensionButton 26 // Extension button for horizontal toolbars. -#define QStyle_SP_ToolBarVerticalExtensionButton 27 // Extension button for vertical toolbars. -#define QStyle_SP_DialogOkButton 38 // Icon for a standard OK button in a QDialogButtonBox. -#define QStyle_SP_DialogCancelButton 39 // Icon for a standard Cancel button in a QDialogButtonBox. -#define QStyle_SP_DialogHelpButton 40 // Icon for a standard Help button in a QDialogButtonBox. -#define QStyle_SP_DialogOpenButton 41 // Icon for a standard Open button in a QDialogButtonBox. -#define QStyle_SP_DialogSaveButton 42 // Icon for a standard Save button in a QDialogButtonBox. -#define QStyle_SP_DialogCloseButton 43 // Icon for a standard Close button in a QDialogButtonBox. -#define QStyle_SP_DialogApplyButton 44 // Icon for a standard Apply button in a QDialogButtonBox. -#define QStyle_SP_DialogResetButton 45 // Icon for a standard Reset button in a QDialogButtonBox. -#define QStyle_SP_DialogDiscardButton 46 // Icon for a standard Discard button in a QDialogButtonBox. -#define QStyle_SP_DialogYesButton 47 // Icon for a standard Yes button in a QDialogButtonBox. -#define QStyle_SP_DialogNoButton 48 // Icon for a standard No button in a QDialogButtonBox. -#define QStyle_SP_ArrowUp 49 // Icon arrow pointing up. -#define QStyle_SP_ArrowDown 50 // Icon arrow pointing down. -#define QStyle_SP_ArrowLeft 51 // Icon arrow pointing left. -#define QStyle_SP_ArrowRight 52 // Icon arrow pointing right. -#define QStyle_SP_ArrowBack 53 // Equivalent to SP_ArrowLeft when the current layout direction is Qt::LeftToRight, otherwise SP_ArrowRight. -#define QStyle_SP_ArrowForward 54 // Equivalent to SP_ArrowRight when the current layout direction is Qt::LeftToRight, otherwise SP_ArrowLeft. -#define QStyle_SP_CommandLink 56 // Icon used to indicate a Vista style command link glyph. -#define QStyle_SP_VistaShield 57 // Icon used to indicate UAC prompts on Windows Vista. This will return a null pixmap or icon on all other platforms. -#define QStyle_SP_BrowserReload 58 // Icon indicating that the current page should be reloaded. -#define QStyle_SP_BrowserStop 59 // Icon indicating that the page loading should stop. -#define QStyle_SP_MediaPlay 60 // Icon indicating that media should begin playback. -#define QStyle_SP_MediaStop 61 // Icon indicating that media should stop playback. -#define QStyle_SP_MediaPause 62 // Icon indicating that media should pause playback. -#define QStyle_SP_MediaSkipForward 63 // Icon indicating that media should skip forward. -#define QStyle_SP_MediaSkipBackward 64 // Icon indicating that media should skip backward. -#define QStyle_SP_MediaSeekForward 65 // Icon indicating that media should seek forward. -#define QStyle_SP_MediaSeekBackward 66 // Icon indicating that media should seek backward. -#define QStyle_SP_MediaVolume 67 // Icon indicating a volume control. -#define QStyle_SP_MediaVolumeMuted 68 // Icon indicating a muted volume control. -#define QStyle_SP_CustomBase 0xf0000000 // Base value for custom standard pixmaps; custom values must be greater than this value. - - -#define QIcon_Normal 0 // Display the pixmap when the user is not interacting with the icon, but the functionality represented by the icon is available. -#define QIcon_Disabled 1 // Display the pixmap when the functionality represented by the icon is not available. -#define QIcon_Active 2 // Display the pixmap when the functionality represented by the icon is available and the user is interacting with the icon, for example, moving the mouse over it or clicking it. -#define QIcon_Selected 3 // Display the pixmap when the item represented by the icon is selected. - -//enum #define QIcon_State -//This enum describes the state for which a pixmap is intended to be used. The state can be: -// -#define QIcon_On 0 // Display the pixmap when the widget is in an "on" state -#define QIcon_Off 1 // Display the pixmap when the widget is in an "off" state - -#define QFont_MixedCase 0 // This is the normal text rendering option where no capitalization change is applied. -#define QFont_AllUppercase 1 // This alters the text to be rendered in all uppercase type. -#define QFont_AllLowercase 2 // This alters the text to be rendered in all lowercase type. -#define QFont_SmallCaps 3 // This alters the text to be rendered in small-caps type. -#define QFont_Capitalize 4 // This alters the text to be rendered with the first character of each word as an uppercase character. - -// enum #define QFont_SpacingType -// -#define QFont_PercentageSpacing 0 // A value of 100 will keep the spacing unchanged; a value of 200 will enlarge the spacing after a character by the width of the character itself. -#define QFont_AbsoluteSpacing 1 // A positive value increases the letter spacing by the corresponding pixels; a negative value decreases the spacing. - -// enum #define QFont_Stretch -// Predefined stretch values that follow the CSS naming convention. The higher the value, the more stretched the text is. -// -#define QFont_UltraCondensed 50 -#define QFont_ExtraCondensed 62 -#define QFont_Condensed 75 -#define QFont_SemiCondensed 87 -#define QFont_Unstretched 100 -#define QFont_SemiExpanded 112 -#define QFont_Expanded 125 -#define QFont_ExtraExpanded 150 -#define QFont_UltraExpanded 200 - -// enum #define QFont_Style -// This enum describes the different styles of glyphs that are used to display text. -// -#define QFont_StyleNormal 0 // Normal glyphs used in unstyled text. -#define QFont_StyleItalic 1 // Italic glyphs that are specifically designed for the purpose of representing italicized text. -#define QFont_StyleOblique 2 // Glyphs with an italic appearance that are typically based on the unstyled glyphs, but are not fine-tuned for the purpose of representing italicized text. - -// enum #define QFont_StyleHint -// Style hints are used by the font matching algorithm to find an appropriate default family if a selected font family is not available. -// -#define QFont_AnyStyle 5 // leaves the font matching algorithm to choose the family. This is the default. -#define QFont_SansSerif QFont_Helvetica // the font matcher prefer sans serif fonts. -#define QFont_Helvetica 0 // is a synonym for SansSerif. -#define QFont_Serif QFont_Times // the font matcher prefers serif fonts. -#define QFont_Times 1 // is a synonym for Serif. -#define QFont_TypeWriter QFont_Courier // the font matcher prefers fixed pitch fonts. -#define QFont_Courier 2 // a synonym for TypeWriter. -#define QFont_OldEnglish 3 // the font matcher prefers decorative fonts. -#define QFont_Decorative QFont_OldEnglish // is a synonym for OldEnglish. -#define QFont_System 4 // the font matcher prefers system fonts. - -// enum #define QFont_StyleStrategy -// The style strategy tells the font matching algorithm what type of fonts should be used to find an appropriate default family. -// -#define QFont_PreferDefault 0x0001 // the default style strategy. It does not prefer any type of font. -#define QFont_PreferBitmap 0x0002 // prefers bitmap fonts (as opposed to outline fonts). -#define QFont_PreferDevice 0x0004 // prefers device fonts. -#define QFont_PreferOutline 0x0008 // prefers outline fonts (as opposed to bitmap fonts). -#define QFont_ForceOutline 0x0010 // forces the use of outline fonts. -#define QFont_NoAntialias 0x0100 // don't antialias the fonts. -#define QFont_PreferAntialias 0x0080 // antialias if possible. -#define QFont_OpenGLCompatible 0x0200 // forces the use of OpenGL compatible fonts. -#define QFont_NoFontMerging 0x8000 // If a font does not contain a character requested to draw then Qt automatically chooses a similar looking for that contains the character. This flag disables this feature. - -// Any of these may be OR-ed with one of these flags: -// -#define QFont_PreferMatch 0x0020 // prefer an exact match. The font matcher will try to use the exact font size that has been specified. -#define QFont_PreferQuality 0x0040 // prefer the best quality font. The font matcher will use the nearest standard point size that the font supports. - -#define QFont_Light 25 -#define QFont_Normal 50 -#define QFont_DemiBold 63 -#define QFont_Bold 75 -#define QFont_Black 87 - - -#define QFileDialog_AcceptOpen 0 -#define QFileDialog_AcceptSave 1 - -// enum #define QFileDialog_DialogLabel -// -#define QFileDialog_LookIn 0 -#define QFileDialog_FileName 1 -#define QFileDialog_FileType 2 -#define QFileDialog_Accept 3 -#define QFileDialog_Reject 4 - -// enum #define QFileDialog_FileMode -// This enum is used to indicate what the user may select in the file dialog; -// i.e. what the dialog will return if the user clicks OK. -// -#define QFileDialog_AnyFile 0 // The name of a file, whether it exists or not. -#define QFileDialog_ExistingFile 1 // The name of a single existing file. -#define QFileDialog_Directory 2 // The name of a directory. Both files and directories are displayed. -#define QFileDialog_ExistingFiles 3 // The names of zero or more existing files. - -// The Options type is a typedef for QFlags

42gm|sbYix1aqMr$uBn1GkUJyNu<6K3cWTFrr5$wwI>UT tvz{(VP)cNx77!oC*TqMSm5+9JLHP(iTN*fy5(w5!sqx+QC;&}y|NOO?v?;#&1T0001S z`TC8Qwr?w3vn)H=mr9U|JNQ9BthSzK3hdw*A zV?3Wf#=oV{5LPfOZ`_{Zsj&jbj~>C$HNsHQ>jh-oBzN@;-_5>DME{V@$pcIjE;3b| zVrJzMea<$bfwQ0qrNm#e54d$_j(f{xHhK_GCP}BV>`0tosri8U>d)BHV!CvPt21vA z1dEKPPnKmj@{RuD#Bqc)UeOK15kf~PfkI#yf*rZN3}r?sdH0yB{KWL5Yq$}OgZYb$ z%Hwa>YHL48Q{zX2?k?2{PX;15xPf0Vl%F(}Z{GFWy{I-`Jrw__rVp)-grRR{BI7fT hKk$C3vhu4!@jr`ya2D@UdL94(002ovPDHLkV1mIK(P97q diff --git a/harbour/contrib/hbide/xbpaddons/resources/database_previous.png b/harbour/contrib/hbide/xbpaddons/resources/database_previous.png deleted file mode 100644 index 0b82732845e43747b0b82cfbe96bbfebbe31f9f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 960 zcmV;x13&zUP)2RbpXKe@9%ei=j@*QaPHIDyxZ>7?#$^jn+s8v z>7XZ@)xbAJ_$mT}-UZS>kiCisqBli_5Q4NfSwzs2V3MJzl?-%C*@JH0ZTI=%oO|v$ zzdj#v=IqBL6Y;{}K>x{XI`xd5Ogz?Sni;_C`n_Jq^J<-ryWDEEu5FadbEVD79RL6T zac=J7i@SG?Ua+iKx<8X5lZ@jB0o6u_O0!L^)uGyG;kq8C3^l%cYO7K`FQo)PZFxLv z+o`mjh+{=fG!TTEKx;y+34)MNgES26WK2X&<8UONJujsIK>c-lAy_Synb=dLIJ6BX zZ4)&Oq=alThLcJF5QZV^auHbrIgb)BIr6T36dXsDO_gGvl;iOXxWK#?~8Fmgj z4CQP(-5wj&CM~y%QmSEw8X*J#Drd=aL-~Q%*S6|YXpNK-5P(1m2}0t!9uFUt2z~cK zbz|*|R>wt334nV3(8Qai&GOXsoA;^4W0Xrt67d*|F^g+`2EOl8t2AlUo9rCU4^JPS zIJNw6^#kAU0uad`IQnWKzwOwQW4qWsl*dWiB;yt;5ux3U9=tnQoKI*u(pr zksFqwR#M3rYJIb!FLykOg+WHPIqb*}k&Ii|F^jAf<@1F(&M*CpDJ4oO<~A;k%@n4t zoX)@WR+!umYeFwvjmpC{u&3JYaKkP9(dJ;>; zS!pcs)j#hdqCr7jymFJL_l$DlxoK2H5{8;yFCb^9nO8ZkEPq0OY?Qsu%lvfjOV(=N z(+yjs`W&KRVp$5U#jS-UF8{m8-G^JWdyq`0$z~kJ?N_LE+g!N)Hg`6E#4-k1sQk%l z{TBPOC$>~K`d#FO<1+|loQN1kT!;u-3p4`55RB(18On|EpmmEIYu~a``;BB@h9leG zXSbSpr&`_oRhg1Y2HpMI3ttOFaHNetYG^-gYTumqJH4pfTbZ^$twsv##X$E=$J}!} i?hk&rQC_>M(fkj_0DEO#2VPtN0000u&9_WhXI+3vO=ZF!Z7R7lW(JPtzQ zQ9YoE@n*c}kw3w!2d`c_WU?Kqx!9+q7A|Mqlq2<}q$F?)O?M`=|zn`Cva{h}i zDVK_4ZP$6PQL7!VluP5Lk*kAZ#7UZlQQY4iZa)u#?c3cA?}xPw{~-VXfbz}vKb_sb zd-9T1DAbzuD)n-aB+KY+4e_C(6}Ytx_tI zw+tkZ3P~mfLP)YqAS9@Ij!LDVyf55GO7kIR|ic_oNHmZy|b;jEcZM#Ys zr>y#048oXPE;o=U008I>OZ~RfcF(PNo5w(+sw$v>q97#1S;`<7;Co#(nJz6aJotL$ z=_3>=00sTb8#5oSZFtA-+HNob9XaA?nvvXwht zs#M!?Cc1GHt!ulEoIJJcZJt(jgLXLFC2`9ZIXy?3WxVtU%+5b!!}o(~-q3{*GM~>M zuq?~e_wSwjwBPF;k#R_GeU-kqj%?egS&NZY3)3{Y^z)Cb`kRc|)$-JiGo(qHtgNiu z9t;Kxnl<_Q>84|!K6+@H={=L|o!CjSRE8`jpHp#chkd(7d8OrW^2kBzwF;$DNt>IS zyD@wJ{#UvbLb>zsDbLq@#$1O^)241a6jBQ{XR+4p;?yd1TpPsBfB11`n&A?yn1yOZrarc$WS3kaa{g;s-2<{q& a0l@#*;EOj{PIW^70000; diff --git a/harbour/contrib/hbide/xbpaddons/resources/database_remove.png b/harbour/contrib/hbide/xbpaddons/resources/database_remove.png deleted file mode 100644 index a8d37e00a45e382352158c266a385f6d28463dce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 958 zcmV;v13~%NULJcH(D2SjJp(scq>BW2vBIsgl)Ea>l^k6TFQ7f7eX=YpEUYd(Lx1Gy5XU;ia zzn?gE;uOh5yi_dYpUYa-u2eEH83~6nAj0m@^K8d$_Xqvkyb#=Fa3MNQKh$)w37;|zVD*6M&}w@DO1G4g&jsbHzTD0K>hN^O>e2*VC#l5Qxl`) ztrU@vLP|+CWsUL{=lB;HO0c7&FjmoEsm12QY2zglwsg$NM^EZODG=nyR5T2jAqh> zbZO$Js3EGB8AUDE8$qXUQ!W)*GdjZLc#5PMBN2;|%Ukr$d_nE>Cujg6SUNMaIs4SJ zm(3@q54GCuS>ygko=Aq2I^b(UUE8H+yEvXtB$*(2={&WMKV@Diw zd@W-kwOik_;ajz7%$mz)GuJO)pWlX;!3--LCxU^-KleSEOpesLDN=7ANB0MKX^VIw zNoek3F|lLUGiu}d^2_a3Ynyg$T6d~++YRQ0!0WY`@&`EX0+lz9Qu_QHLWNj-?J(x@ zuNdPSk&d%QoxONfY`?e6^!~jlDe(iJq31JF7=iO40=Gfw{nPX-i%7S_UGJV^;l;fO zcZeTPEGiuY;>wL%+^#h#74j7GS#p^)>0AzD-_z)yf1rKsFYe5q#2oyGdGsVs#U*;= zv1%_I`A!vL@`5dlR-m=j?hTMe2R{I%LQL#G$e7!vdi)jCU=>$L+&5k#d-zqovj4#A zPO~|$B9b4&xc3E4aL|{*Zd(MCUEyaM(hvW6-5Ex<>}{n!__8rtzqQtLoNzF;>G$SX g`9!BunUh-cKc<(2=DdI3!Tmf*#G;XhCbFZiq)hYacq}>{GKP{M49E36d*HOJzO~ouSvM-R`f9n> z*ye!~Uwr-T^Yb%>uZBlP%uF&tG8V!0eVW}qjjlzjYtigj*!BQJ3lvWO^;)BOT}lan zUU#?V{KFZL86X4g)9q+JGXKAj$ zR4z*<5v9{^qm;t+eUz_Q%;(T`oug`#KX>=B2M$8~59pfKsJ6QNvboE_afOw~@+{63 zh($(FN>Q%WIXteCFjMpfF1oIFjX>Q8Qp57g+(hO|soq&$I6Kb5Y=J~9N)QAf1QXc| zwPuHdViBZv*eDl2v-8r7ZqjL%r zEA^mb*-YiKY?iz z2#J&eO_Ox391_5Q2NJpBp!SOQn*xZ{Gg<{Q9~v5`kgpL?aPgtIg-1e!`ut zTaD7e{&TMD{vm}xd;FOfE*&>I7pol$PYJ@|2uU-+!xLjH%$#LuKF>rZjhW68&*V5N z9)_h9SNc|O4W;&FHZ0d7hSm&}qSfnj+-Os7bZPf&yayI%+cxR(oMUDtJ_s2`efp8v z?~PFCvL2HBVBjnUgWzRf1}nA*rn|yV)}(J}{=h9AY3<`$eed7H(v5PpzS{5iwzoFc hzbVX}TNP4{{s)K0iO1fYl05(b002ovPDHLkV1hy)xI6#= diff --git a/harbour/contrib/hbide/xbpaddons/resources/database_up.png b/harbour/contrib/hbide/xbpaddons/resources/database_up.png deleted file mode 100644 index 23876648c0a854883bd58d06abd77672be155611..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 955 zcmV;s14R6ZP)ZQ@tm^7&pk7|rfO`A4-D1q3n5MhD3un+b*v$H#& zzn^&j3EFZWQ>7yf+PKD zvMHNZyTe|kPQz)V>w3-f6+#FA^i)V*%4T|B-z`>WQ3@#~AOL|B5`@HYTz38|;Cs$? zWpDSZM$17;34s3m)6;Jj_Di$3?`}{DTa*e>B4LZ172;OF!1Fu~%5`ehI!6XF0}H37 zFKq7QKk~db09xkw+_}L_-~5x~qa4m=NXKoW;Sjo}p%A3QHj%?R?je_YtVt?i4?K}R zbSGr!Td}BxcJ!(Fg-7M;0=hvW9w(d0Ff=&8 z&CUJ$7?wSE(jNawd*l51+Hil*;`-)RzYq`%m;?-iM8x8H{X2#tCLf-7m+77v`m7|6 zCnwlztkCi|LdR3H+xpnZ@LTn2bw>IgwbCA~YK09UXjF$794j!BK22|Ulz%EY8XZM{ zILWhvb3EAp1`+HI>dV*fa$;hHrRNsVHHq&lI-M>lJI<<>;`Ywh{E@%P(#SjPx>>HS zUBr|%?7%QVKfEc0QsUmjf4TNojt4tMnjMJ7<0KPlj@d6!bPlLFcK`=n8Wfu=)Z1H3 zCeIc1cHl?tg~hW7-B{8LBP@i5QUZm*Fa*akGh~xv6q;+~tADaxy+*(goH_IXKM{>xp_eWr;wVkj?eD$iW?TAiSrEYI7YSBU0^mG7Fp!KoF?>;Gi0 dw0lFL_#dQZa^Go$eOmwk002ovPDHLkV1j*H#9ROX diff --git a/harbour/contrib/hbide/xbpaddons/resources/dbf_p1.png b/harbour/contrib/hbide/xbpaddons/resources/dbf_p1.png deleted file mode 100644 index 136854204a5f9dac897e57c6f4e834e8d841bb08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`4xTQKAr`&KDGLM)4oS4K{{Jt$ zdSyM6a*Vw4rZhV{g=gsr51uz~T391+w*QEpmWzZ@)`1m_SBx7TE%D)$s9hdO6 diff --git a/harbour/contrib/hbide/xbpaddons/resources/dbf_p10.png b/harbour/contrib/hbide/xbpaddons/resources/dbf_p10.png deleted file mode 100644 index 69ce1f73d8de397667483e25f08169da9a3d1f12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`cAhSdAr-fhQx*sq9Fq9Y>iuu> zl8?3g%6AwxqzTHgu?gm}u_bEgHu*4bG?+CbK=a0gKxQ{y2|u=gIWsjF8B{_81V5?o R=mna@;OXk;vd$@?2><{+AoBnK diff --git a/harbour/contrib/hbide/xbpaddons/resources/dbf_p2.png b/harbour/contrib/hbide/xbpaddons/resources/dbf_p2.png deleted file mode 100644 index 42aa4ea2754e962359a2393b406a501277d68fc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`rk*a2Ar-fhQx*sq9FpMW;rZWr z^-9B%e!)m%eu2+UhI(ck=1P)ASqD}yUNLTXw8V!~qJo)Wm6ej9obj)NKm!;&UHx3v IIVCg!0Nh|6zyJUM diff --git a/harbour/contrib/hbide/xbpaddons/resources/dbf_p3.png b/harbour/contrib/hbide/xbpaddons/resources/dbf_p3.png deleted file mode 100644 index 5038d422459ce880b81bf5334a5453c4d8e07137..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`mYyz-Ar_~T6BY;<9FpMW<@w)v zl_iAx`thbUGuzu68>fpm6>fBt;P`i#Cvnjg?!|09QVvs>*zhngIIiXv`+4f+Y@i_w Mp00i_>zopr0L!lIH`D$D0<-Y;SLDoG#u}xY2P&<3sy10%~4+4YCfbU<~m*br`7AYAv_eo8x98KqiBy LtDnm{r-UW|P);Qq diff --git a/harbour/contrib/hbide/xbpaddons/resources/dbf_p5.png b/harbour/contrib/hbide/xbpaddons/resources/dbf_p5.png deleted file mode 100644 index 100b6403078b0fed8468cfb4d0e3305e7b2864dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`=AJH&Ar_~T6BY;<9FpMW;r-uv zl_iAx`thbUGub&R7Yc|=vot=iKO>;#wbvl)zzW6?&r^qi`s{SL#iI2Lmjjs$p00i_ I>zopr01f6I#Q*>R diff --git a/harbour/contrib/hbide/xbpaddons/resources/dbf_p6.png b/harbour/contrib/hbide/xbpaddons/resources/dbf_p6.png deleted file mode 100644 index 5fe7e8d2d606595277032ed5ac9bf470950497f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Hl8kyAr-fhQx*sq9FmCt-}+zO zRoVQqm)j0Tg|j_8H9QJu7?wVqA-Ma;_Wyzj&ThOCrU@334uxrpSQr=%wd@ diff --git a/harbour/contrib/hbide/xbpaddons/resources/dbf_p7.png b/harbour/contrib/hbide/xbpaddons/resources/dbf_p7.png deleted file mode 100644 index 4ede4fc3d291862daa604f260e6710ff7b226bf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`PM$7~Ar-fhQx*sq9Fo|W|L?!L z>*FLrH@6*(3TOBD@bJ_)$jMK5#(GJkW`%@&2+xuJYHq`nD-D6nZIc;A($%~e7-nt> V5WIQh=o6r644$rjF6*2UngA9gCJ+Ds diff --git a/harbour/contrib/hbide/xbpaddons/resources/dbf_p8.png b/harbour/contrib/hbide/xbpaddons/resources/dbf_p8.png deleted file mode 100644 index 83fcaebacf5c77135132e56b7246c40e61db0d88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`)}AhoAr-fhQx*sq9Fi#gul`@% zHCZ@WPx%hRgtR<1KQ@79O_yHelx(bO(@b!7tQRa_#nH1Z4qztkS6c{x;I^)90z!1qA VASm*;@+;6Z22WQ%mvv4FO#m<1CAa_p diff --git a/harbour/contrib/hbide/xbpaddons/resources/dbstruct.png b/harbour/contrib/hbide/xbpaddons/resources/dbstruct.png deleted file mode 100644 index 88cc63608e6669fc53b2155756e4f9d826dbdfc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`XFXjULoEE06BdZf;kUe7srTec zebI-T6DFtfD6nz-vHsed!gGn+jNwS;zopr0P=5jmjD0& diff --git a/harbour/contrib/hbide/xbpaddons/resources/dc_delete.png b/harbour/contrib/hbide/xbpaddons/resources/dc_delete.png deleted file mode 100644 index 3f6c455c923095da2fadbe7c97477b9c6ef6e9d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 489 zcmVgAZYf&57& z%?i(HC%hOzosoV?Q+e3%3dM*Oo|1N`Cv8wqQAJXEijmH+Zb5F!pqf z^*XEqX7vk5xSX}&W(z(M!_O$5OCq%k%(j>Ca3N%aT6_SidRUXX><76ogzUUT$p; zaB_e>zs@7rGrYoy&&lSgUkrD9q_OAId-QpbF=X`6tEP`9osjXW%XoGn4#bYQ560CM f@+d=DWP~z*M;0re-K92h00000NkvXXu0mjft9#;7 diff --git a/harbour/contrib/hbide/xbpaddons/resources/f-bold-1.png b/harbour/contrib/hbide/xbpaddons/resources/f-bold-1.png deleted file mode 100644 index 408f25aa20b26e1d610b0f118892144f8136b9b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 604 zcmV-i0;BzjP)Qp?p%&=)?ObDr<>JRIhqPl;}DL#aOa zjX$vxs?ptF3&ahBrgH;v?rr8X-hKR%h2G75F^=y37%tWhtSi$8zoutD;Oh818ar8z z(jR$++p$^D9rffa*r5rO*IP!(i-k{c3{OL>>*px#;im{adm(AV}YqP!$PHR<4*l0ZY(v2j$6;M=fn`ulh*Vy8b9ZE^ck~%f`H~PSy`-?llSdIMFA|kK3QcDcdz->b zMYUefs_-^N*ZQLBZqju#g_htWsI6n*wN=PY--Dt(4vCq?_M>h>Gd~Los+_eF;}B`P zl7_*ThAHqE*60@?kEP)PZB}kU}#kdgvhuRx>qcFWJ4Sbo0;q&?Z<~K~k{Re>#5fepWw9qI6FuQv~wPK3psoMG6STbR7){|)Zv?Faiv-)Yr3hqIf<4be zIIg38Xi2pFO;#rO;+^-naBBvCj*ekjrYd+nrxCn=Xrec`flSWAQO?BSv4Oaz3pk9X zo)DI`J(#AU2}oEVK}84Pv8dA{MDcQiym1ub8L_2}%gjgqUQr&hG4$ zj3&bGoLw-u7UC>?!*FK4e-39E=Uf=VlRA*gEZ3K7mu=`kZWNHpccDQXV0*sYdN7e> zr_6EI3~*5QuwA6uZ^&iB3*>HvBgxfkh=%)#7iWmd+dKBE;>UUR(E_>5@dH`t_EGFf zT(kn5HhtU~ebmK}0=_AkQia%r>dHmU9>7&Dqh)lFUL1+Z`f;j=>>Q7swpH&yEc zrCvXNWE2oa0XmS&Jhj9v4sdTgsTQ+pK&wa>=doFsMe246>xzy1jGFwM8sHLgwKT5V zH!2|d3qoef%UC&|#Nx@=zc8J)WTw-R3rFM7fm~*Yj-1|~fDQ%)*uEn(^&E5{mxW;{ jq4|-^EY1aObRhQ&@%~<88G1Vt00000NkvXXu0mjftU9q6 diff --git a/harbour/contrib/hbide/xbpaddons/resources/f-italic-1.png b/harbour/contrib/hbide/xbpaddons/resources/f-italic-1.png deleted file mode 100644 index 26c57226a31ea97d155ef323911fab6fea21682a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 529 zcmV+s0`C2ZP)q)5Jl3Ya0*(oU?aARVTe~<9olyu`GkhCnY)T!cz9mE_xn8;Psu+UU9ZTTVyCnE z-Te&e&$8S0BG4x&0F>@tysUqF~hkS9+QaWL%+5dHKsW%tK)kS<67z zBNi7>e?wdxbblbR#4Z|c&63(KA3RG*P(Ko`>-O2L!{L4S%KZ@0bxn!d4lnNdH$eTb zu%=yTZ0HY?<*z?5z`d7iJH2T=D;!f_6VUHo2lYc?wUuY|*FD+LN(v)^7_@EfU)AkG zIlY~<@aTTF3hIR$Z+4Ywth^+=*~0kz7Bp=xQe~N}`+cvzI)T>FPoSRPxPdEGTP8C@ z-l*)3Bw@VsT4q|F7X+3fr?pwjHLpY0QgbN(C7-F_)6O=Bpe6D=H}0d&v76&D?i%;j-nd+`~j zdl4uvjY%rQwatD*(4 T{q8%000000NkvXXu0mjfU*hz5 diff --git a/harbour/contrib/hbide/xbpaddons/resources/f-strike-1.png b/harbour/contrib/hbide/xbpaddons/resources/f-strike-1.png deleted file mode 100644 index 1c11f214622a3ebb51227d3c846e65a3decfc454..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 459 zcmV;+0W|)JP)v|Wk$OiEGz$ShFC|deFb>%;`+@`t+RS-;g^g?;-b0Vc zALlFPtO*b2`oZ;hHyr?8hmGKF%2P^ZR)t*WjWIi6sOfi;Qkexlv#Qrg6jMPEC>esg zDFwXtnW({e1S75x4A@UW>pTae=Mu~tSFpH!3!c3QtDiy5z!nxpzl4ig%w-jwvqa|( zL6wRjR5J}fvAk=Ei1h)sV47eiSy0kS`^6eB$W41dNoi6nw&Z@l5H(6VMQVq4pt8>c z+-BOJG^wV^=ftm4jgv;sFQ6n7V~IU3o8kNmd;q6cBX2M}_p1N^002ovPDHLkV1iSP B#`ypM diff --git a/harbour/contrib/hbide/xbpaddons/resources/f-underline-1.png b/harbour/contrib/hbide/xbpaddons/resources/f-underline-1.png deleted file mode 100644 index 7dbb5d7e60a8a6c2ba9d2084a7510d7b0666ae2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 539 zcmV+$0_6RPP)%8%7H&hxF;}kxw_Z&q zm=aCtLLx=csaUxPH0>vp7wyKY=)CXK_gt8nGX*{H;XUU$=Xu_*CQ+TY$;pNF1HZ%< z4EL;Q4qF9vvc0`;R$2eH1%`Xp4&&v&pD1b={5c)_4(HI4%0!}{!5Z%l3^;cqc+q_4 z8NL1(hrUi$n8@N+80{k@cBKaf6xxEZ;g@T87_4wINGm|*_=heqA-Xq5fas1lsq zKuMEKV#eR-Z6PwdqsYJBPkg&4AnU3(emk^)TXGC7eXr2|Xa$b&J9Lk&BJlhJ!c$*_ z{stv25oA>M#CMs~Dm=P8i;p@6V$k30Cov-tI%|LooijL7d7s$xCm{W@XTo3~MU`_3 zX_wq|+SGOO-xso`Eq7CC+a&Z2VR7e~*m*&@Ycth&4~*8-<t+j7P)>wf? diff --git a/harbour/contrib/hbide/xbpaddons/resources/f_align_justify.png b/harbour/contrib/hbide/xbpaddons/resources/f_align_justify.png deleted file mode 100644 index 9cec2a008183a4f51689a915a57a2c2029192857..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`lAbP(Ar`&K2@*aJ>^m#2urAh< eSf?i;!N8Cu=e~2wDVa+^MGT&anFkImclpK4P+(^r}#U_5-8 jp`^LvDZe}O3wDMn`>c=Vy2gHi%Fwu69*~qIPN*r*4YaNe2gUQvVIX(Z4_u2@d}J8`{avMF$-O z(Vrb$S>yCfAwU47x@-Mw5s_wL;n_-`ZJr_7O&EhB9hVn$?^M3KKqG(f-KN6+)| z>NvMS;O`{>Rw|V*&(6>Ds;bIGiH9Ngei+3tMAz-%?*0)^j}O?~SkJXutz7}2bMy0g zb9e}v%HVlD>EZ|1?ZWN4@I4QmP6vVSBRiHsp-{kyeY#^=*1oJDs+hoW98{}S82ltl zOUpPqI>fMPqPS4RO``!(;dm~G>6uw9@Z9lL^)9bhr4lV*3~NCkwIPJ%^RcGs zd>+asvwE%8e0y)_HBE)Crv|%<>r51>>v}9O48$e$QLopVk(5m?W#extlVlKEyWQ?^ dH6GyK?E{1xl~eLAGp+yt002ovPDHLkV1nB$;7I@g diff --git a/harbour/contrib/hbide/xbpaddons/resources/f_box_all.png b/harbour/contrib/hbide/xbpaddons/resources/f_box_all.png deleted file mode 100644 index b496c5d276986f1ac88a5c2e5a78179032b796bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`8lEnWAr_~T6BY>l@Mk+_&=A7i uY1EMMG4Tmg(94GsY|O8jx;`B`z{s#s)Z)agSrI}&Jq(_%elF{r5}E*^QXKpM diff --git a/harbour/contrib/hbide/xbpaddons/resources/f_box_bottom.png b/harbour/contrib/hbide/xbpaddons/resources/f_box_bottom.png deleted file mode 100644 index f855a190c17627c54fe9148b12515253eade3fbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`ik>cxAr_~T6BY>l@K^J-{V?C_ n(cy!vi#Hlv&{GiQ7h+(z;jMPdN9WuYpkfA3S3j3^P6cxAr_~T6BY>l@K@_iWH_p) n5M3j&Gr>fxtwe`MhJm43SM8R=}P&i!R;1n d@QNvmfg#|6!3C$(;tZe~22WQ%mvv4FO#s5C6uj|;QXNQz&`A&Hc%;pr>mdKI;Vst0I#_jm;e9( diff --git a/harbour/contrib/hbide/xbpaddons/resources/f_box_right.png b/harbour/contrib/hbide/xbpaddons/resources/f_box_right.png deleted file mode 100644 index 52c34101af750cf9b5c40b18e22ec68c8f1fd4ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`3Z5>GAr_~T6BY>l@K^KQ*t&!D mgor$!okr&6tUCDcgas6LTG^s;my5nQ1KP&MRTcaFjvg$9V^p1E~xiO&QJ`q#XDb++bjM XAL%a`+BEAn&^!iDS3j3^P6cxAr_~T6BY>l@Ml}5_rqWH nxNW^V)Fk@igS5Uhpb?%5KP%(q2tDnm{r-UW|){GgE diff --git a/harbour/contrib/hbide/xbpaddons/resources/f_chart.png b/harbour/contrib/hbide/xbpaddons/resources/f_chart.png deleted file mode 100644 index bd64f3f7c9772541bf23f6f197cdd60923ed0ab6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 469 zcmV;`0V@89P)FfD)X>;ENG&ECiGRUjH%JV`YBrcG4I2^(VWDYM z($tT%)xOeKb-jBG?U@cQ zFi`ykgfE*&_yF|9Ib31)~VT`&A7=tqNAZ0ou_yLj--Q&@juJvsA zr?G2q#w6?V(tU+Na8UUQ^jWYeMG&xp5LU&2o}BtUS1tz%!7~S{Q2>2BIRpU^MIdCU z1U!J%_7&)T)2Vk00000 LNkvXXu0mjfFeS~x diff --git a/harbour/contrib/hbide/xbpaddons/resources/f_gradient.png b/harbour/contrib/hbide/xbpaddons/resources/f_gradient.png deleted file mode 100644 index 6eb87fce20572c0743ca2d357b18cb779490d746..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`&7LlfAr_~PPB7#;6d=OlULmkw zXiLCulgz#ULvxriby$441Uc*M^4IP;;CK`j9nSI5*vxkUx+-3#70&|zRM6Gd0J|3f_D9 zHoG|i_^6(QY4*^@p&c3b`s{Z7EkM(R2%u^-{-U2AyAV5cqs4c}s5{DGo}cxX0Gd4H zb3Q<^$E774^q&B-OVZx}2HHC{J?EJR?VwE3Rnl8}4IuW2G3Gh_8U>Vtb#I{9VZEYw zOGKxOcK|3OAqfPqU2?Z`Q$hk*){rWSR{-@LfUSoz`_;E=o>Qo5&F=N$F)odGO8)oR zrF*zW_-#?Q?pw)7;)f8+l8u)}+x$+#ayVacApd^>B{Sa^xdF7X7_>z*$lI5y+9O~j omohA`BYs}?SFObStUd<(0tUL<3592oxc~qF07*qoM6N<$g3Z{Lp8x;= diff --git a/harbour/contrib/hbide/xbpaddons/resources/form.png b/harbour/contrib/hbide/xbpaddons/resources/form.png deleted file mode 100644 index dc2dd3f0ea59728af2defea98fc9a3fd6c1e5d4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1263 zcmVnAW|}p9r~iBA1wiskQh5Hh!jL^5g+~V!w6!3B7Rc?0e4KyVu@puYK-iQcAd|M+$(y>rg?y znxCYJ?w8-2kTg1JzlP7=b?7wNzIDn70Aq~oZX6Gp`8gat%Vc}I51%Q1`u@HE?a;N+ zW8`yRjOY4){_FZxhjHMXSzsN>vcSRdc~5S5aHEvM23!WvErgo%J;#B!j}{;ZJat1S z4ssrb5u6>#(Pi}6$WX?vSpe|m2m5If{WDm*rWaNOzRE&J00;@U5rF4tcW)dlOn*K) z)RP7f?#N9{e>J&3BN72CSN1^QxgDjz4-$|fp-a!wj$__UU8qH(;=tbLm#hI?p;LP` zfLVwV1pqMmG6mck6ult~k~o1lj3K-e)r<&Jnb3o%W?CGS)g+Eda;gS)A_bK7x)eBA zgp4~Xddh~rN9ulo)$2GMzW?bWT%MXS;Wde#JVr5mGW-@yUAx(s0;!+mxvm3+6L|$< zU|;|fB9wFDZ_`sR;2#+LF?AJ=?i++S7SODd(rSzu^<56e2b>$Nqk^v|^GXF0qaHdw zjv3%41G3UFNx#xj^C3}$Lo{vW612j>%34uyu381#bK}zr1QiVOrK?O2m4QX!$1 z2c8~801STra|TXiQ3Xj0D!}C!`v%iaj$^}x`WXOCjYx2FiBJhq z)LaD;%Kzb<8x@>F3bKn;U@0KT)U_%lP*DOiAwBVEKdfJSe_JZJjgoaVfTi~WQi@P| zukQagr2<~ux*4wgTT*I~AX}CGhddJy0qws4UB+C?E$1 z^X~w6vG zKy8P(%Sq9^6I#cn2&31Lg7aflDj3Wn1*Z@MbuElc)T;p#(WZ_4u)6oYwp0+KY_&L7#b1EG^?_nau+EiRjk?@XegX?Ron~T>W)?Pma3+ Z3;<2bAM_V%6rcbA002ovPDHLkV1jpPKav0d diff --git a/harbour/contrib/hbide/xbpaddons/resources/formview.png b/harbour/contrib/hbide/xbpaddons/resources/formview.png deleted file mode 100644 index 2580d09879b292df9d2117711c13902f596553ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 475 zcmV<10VMv3P)b_&4M|zE4wQ?+@zOtgr%#COv@-oWZ9XZSxG@bWF;g89Vl-)Ksooc z?}b`=RnY@Kcn071+xC5L#lOT}QoUKA=j~fx0>9J?*Va2k^&La$0>+ODh@EO! z%4*oYD&p|Ai1WOTn`a$QZ=kho&zB&%y8ashtxK+Mn1Y4HB@)o4 zM=>%IptDINmQ8`D!w2=ch`zyL1m$toiF7(`EKHOTk1On84WVob1VeE4sH4825lzi4 ztP{~_6mGY>9J-as@RTX&68(61)v>pKfK29$bt0e7BbUpSLsuG$#Y}bywF(@^ z;WLsX(Q_Fz5A*Rj{yK?-q9}hBP)bJGVyRr`I6iB)JF*T(?T@fptJRAC$OnnRPB##Y RrVIc8002ovPDHLkV1ivs*W&;H diff --git a/harbour/contrib/hbide/xbpaddons/resources/fullscreen.png b/harbour/contrib/hbide/xbpaddons/resources/fullscreen.png deleted file mode 100644 index e98e709168ea627ce8433d97fdb6434b6051a0af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)Qg$ z!O-kivF^V^-pc{(t%Qv;Vgrz50LZ+LQmwc3r`5 z04xxF%Gdo*@80>pd)Z02;(1#y{?DJd_rG`9I(VAE9*salth1K?cPmL?ZPTYB%n!F5{$Sx|54xcPOdbRZW!_FSQEbpdy>$ObFPEo(y zfjzr=|FPq{Pt)|P}_`YDQ04inhboFyt=akR{0Fv4mfB*mh diff --git a/harbour/contrib/hbide/xbpaddons/resources/harbour.png b/harbour/contrib/hbide/xbpaddons/resources/harbour.png deleted file mode 100644 index 4beb7656f56b0ec0322113d626f639a69ff85bde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3049 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 JPDHLkV1fbqTL%CD diff --git a/harbour/contrib/hbide/xbpaddons/resources/new.png b/harbour/contrib/hbide/xbpaddons/resources/new.png deleted file mode 100644 index 27bd47cb4866fdce470f5294d24db066c164581e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`%ROBjLn>~qy`ad)WGKLTVXx5j z2U0Pas@sZWr!Mx;(iWKNdw{2Fl7iHgbcvlOOJ=93|6G~z?C+M#d5@isS#hg+wtN|v4VTW+S5t7c%$)Vkz^!h_PtB;`+j!VDr8c^J1cExlr< zAfL+Q%JR&&!KY!VZE+^^=FN>dZ#DCo?y;p!i!u{~1gaC@crgv)-?7f!G9sXoVV YH{szw7JV5tppzLqUHx3vIVCg!0O;aUnE(I) diff --git a/harbour/contrib/hbide/xbpaddons/resources/open3.png b/harbour/contrib/hbide/xbpaddons/resources/open3.png deleted file mode 100644 index e178b7ed3a790d98f990a97dba0463d5a1ef0900..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 639 zcmV-_0)YLAP)GWmM1-7ox$Ts4giD71R=jq%}CSGz1X@ zjX_XLiAXdki4tj$m>P0@oqNywd>I%xL=@5Q2meU$hbrZ6!^F zHdV^qMzHDP3Grya6{sO}Qjie3`a zKlDKG3%w@~nk-8(Qlm|l;k38oEiDpk*aT{gV$sDq(Z}s1G`><0gm^$2XZVdR^bg(@ zY|$8lAS0?d1UXI4b(pSZR4t8jegNs_ky7Aluo|F#vxn`p^nH9UA+i;@LIab-!#Ivb zYqE;+C0@FUs7X?@O3f6>OP|WQ9+RpF&n=+?QW7n3RF3Jf2`s5-J9`BoYe*s4B?VGR zbRh6ZF^)~<6c~LqM(6xXvZB z^zbE~e4G-}(vo@b&_=tfyM0O8yq`zh#z!4 zkc5RIa`Y*U`}eV2uacxbaU`i*0?@1lRpK}#b9V4)VuqFRcU*fvCfFo184%3QP|CaP z>^w~xH{g_7aGP3@CWn`5B2ywXCFZ|+L?aKmaCk32>4Xx^U&i^?(M9i_XB4cAoNYtq z<5~eKF_etK+E_;AZR$(2-2X5k*rKH!^LpeB`QQazOI0Fofp{fhy|&20;u9vf?lW9I)e+SoI#^g>GUq3QaOOAv@{|j6q}F?mdFYlE0OV$=dq#~*<_i` z%-jEenNP?1KzhWsL2PP-TO^ic!fz2lk9dUq9ft#AmM5k;VqQ>ys1RQL1KoWl#vD1s zIFk(Qo5Z0VAt%O`y(T7Eec;?Do{|b!Ro}5b5OfJCzJNt3J#cju5QXW1%g`7w-h%ld tTDeAr96S2JZKvWG^8YDIL9@?fdtRx)F=ip|mNEbU002ovPDHLkV1jiaWK{qF diff --git a/harbour/contrib/hbide/xbpaddons/resources/panel_8.png b/harbour/contrib/hbide/xbpaddons/resources/panel_8.png deleted file mode 100644 index d5f688b178ee68a0514aaec4bd575711faecdd91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 398 zcmV;90df9`P)bI<;tJo&``oSd!ytE>0?->~8O|D#7A{{Qmj=YPDKFJ659KP+t3e}DgF z|6^mH7bmMHtwCeX%wF4-`%O zf3$1a|FhfA|Nr^(H^PwK-lJg6AUsnk*!ln8_3QufW~QT2rT_2h s*uV|A99R7RRz>IkZ!6aPr+V%M041uwZMf`1C;$Ke07*qoM6N<$f&e+)X#fBK diff --git a/harbour/contrib/hbide/xbpaddons/resources/print.png b/harbour/contrib/hbide/xbpaddons/resources/print.png deleted file mode 100644 index 1326f5cca500b23e3ea3cbec68b99d5d9717f9a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmV+x0qOpUP)!-}`z-38_$47bo* zL30k(>9^GbRb4|1npU@kq*xy40;}L)hzjRz5eXh)fa4X`C-4t2+D4P_uAsGmx(}6! z>Ox6`^mKs%k9(`VU2J^UL0-6;AbxlyMk diff --git a/harbour/contrib/hbide/xbpaddons/resources/r-landscape.png b/harbour/contrib/hbide/xbpaddons/resources/r-landscape.png deleted file mode 100644 index 8e99cd54ae0a716b3fd94141efe6ab0ff30170e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJPEQxdkcwMxuN>q$V8FqAp>9|G zz0&19jV_0p+9f$EK2JS)Ev0DF-K7l44H+y9P7J3`cQKslZID^0>+ank^N@YXRECJI z$XXYd9L|DE3W{aVGK!q)KNv?_;ez?tU^PdCgHWq9)9 si1Jg0VzvW}wyX(vox`s``M#6ktj|X`h5L4?Ku0lny85}Sb4q9e0Gvrk)&Kwi diff --git a/harbour/contrib/hbide/xbpaddons/resources/r-page.png b/harbour/contrib/hbide/xbpaddons/resources/r-page.png deleted file mode 100644 index bd1af63c50b722a2849489cdc4385631fd1ea2cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 590 zcmV-U0t%k1d z>deT9$ZSPemp`uFJvd!_R9cgwyVY=&QYn{0*MDw)`p%s_ee(G8K?qsCX|2fnPHi?D zn$PD*DrAfyr4+T+1OQl%fPUWh+qbjX^l}fN`KI_naIKZDmP=xwC3a5cWx%ZKENP{l zS!d6G{a!shVz6H^1mcwKb}ItDUtEyu9OaZrgHbAtX0zF=U5FpPeEs(R<%{S25y1T9 zMChj&$vH>0L4PigWrbaWAI4g8t-XmUy++EXBY?i&P(cD$i;%IGwO-$d(8OSiQ;B86 z|B+y=lR)o1g|L%n3lIx7+E_`-V38n+Mt}6aU2Is%nHnlaNMJB-DZi(b#Ml_q5ZBs1 ze_&864iU&_AqMiD7Z6_TNdr`X!SIkeu&ZEEM}!ezpv6_aZ$ovRrT>cK5NvS9puCp~ zP#Am*z||uFu2(Cexb1tIOsDd^+wFuIcf)oaIho8VtnUB{10)_vskpdzUv$@2$oa`I zY9e;NjcvFbjlohP_*G*_qhf{+S7h{(Oi^d|p1`fM~mt`(&JI{T;_f(jn zX3c+w2L&x}Snp^uJ}{^et!5CgVqlNtKFPYLh3~_^o&pB942JWj(zCf|oH0^(+-!V} y*I=67o+W$?>g)v!><0V~uCZ--&ajzd2Seifhv{{N{!@WYWAJqKb6Mw<&;$TT0!4uU diff --git a/harbour/contrib/hbide/xbpaddons/resources/r-report.png b/harbour/contrib/hbide/xbpaddons/resources/r-report.png deleted file mode 100644 index ad8805f95ccdeb14a48120bc315b941d9f244b24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 511 zcmVo;Jr}nVQaTRy{)HREG-nAl`)vPjBZ`yrqx6nlQbPA z>yuQl!)>94Dk_PWG3cqk{vU~!@n{1d9%6pa*Vy<8!*F{z9I{!0AYh3^VmT&0lK>;Q zPcoUjiO1v9Bm5r%_aj2}`Aq4JRlIz$dXq|}#K>SUU{}Rg`19uBz4)fz@Bb14ysEqpFkMjXch zeIFA8wrw+lpOq~HZy)1IdJ5AzfuiXn<(dYSPTFu{z_Khxpw)G_`Ddut6ex75sMID7 zt4E*>CkAv~XNF-wK2&f}nyye*!8f$M3uH2xxqLpqD9f@`DwRCqlfeu=@d|~)o+L?& z*=%+$MwjPFf~=9(BuzF+j=YQHqTkZdW-Yoie+zpXX>7-clIZ{d002ovPDHLkV1mHz B>=^(6 diff --git a/harbour/contrib/hbide/xbpaddons/resources/rp_arc.png b/harbour/contrib/hbide/xbpaddons/resources/rp_arc.png deleted file mode 100644 index cd743bcda7c0e35ce6666ba7b9dccdf7c6121708..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`%APKcAr_~T6C_wonE!7~m}D|p p$#2r4|5Gy5R^&b4m0(R_V({tY`}C4=|4pEB22WQ%mvv4FO#tB<8QK5< diff --git a/harbour/contrib/hbide/xbpaddons/resources/rp_chord.png b/harbour/contrib/hbide/xbpaddons/resources/rp_chord.png deleted file mode 100644 index 28dbba3d950d62dad5d28eb37a8e25e14223b54c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`s-7;6Ar_~T6C_wonE!7~m}D|p r$#2r4|5Gy5R`hAH33R(Nnldt6TQ2_ch|a!fpaup{S3j3^P6m=w}vQJ5$E; zk;sGK&+}dMC#{{S#g_0wvXSl2@+y-cRmDJ6&0tmIi7X5o!<6s7HEX*M)X(7Q>gTe~ HDWM4f8Hyn4 diff --git a/harbour/contrib/hbide/xbpaddons/resources/rp_linediagleft.png b/harbour/contrib/hbide/xbpaddons/resources/rp_linediagleft.png deleted file mode 100644 index 8b6a314e21009e71e8102e91afd5ac8d5b3ec406..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`;+`&!Ar`&K2@8aN*k_$sp}4q> cr_fn~!6lOS^Q(rK7eFNpp00i_>zopr0KY61VE_OC diff --git a/harbour/contrib/hbide/xbpaddons/resources/rp_linediagright.png b/harbour/contrib/hbide/xbpaddons/resources/rp_linediagright.png deleted file mode 100644 index 5711980cfa4efcb776cf4a611567294ab4245934..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`5}q!OAr`&K2@(z;>O(%Scoujz d?`Nk&HRV7x44$rjF6*2UngHeJ76$+T diff --git a/harbour/contrib/hbide/xbpaddons/resources/rp_linehorz.png b/harbour/contrib/hbide/xbpaddons/resources/rp_linehorz.png deleted file mode 100644 index 547a218202d27c124b2126345bb8c7198eeb08fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`qMj~}Ar}702@JB!MK=> dM~In&i6Oz3_p_bGF;$=%22WQ%mvv4FO#quP63+kt diff --git a/harbour/contrib/hbide/xbpaddons/resources/rp_rectangle.png b/harbour/contrib/hbide/xbpaddons/resources/rp_rectangle.png deleted file mode 100644 index 24aca6bd80b76202168ee1fb19bf5478a0701742..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%_o-U3d7XHZz3xt07tGO9AgcxKU jSiz`ZAj7M`9?Zw^>6-Cb<8WU|pi%};S3j3^P6}J} kTaT2%9i9ai#uIrN9#rUGJiFshF;FRkr>mdKI;Vst0I5eA^8f$< diff --git a/harbour/contrib/hbide/xbpaddons/resources/rp_shapes.png b/harbour/contrib/hbide/xbpaddons/resources/rp_shapes.png deleted file mode 100644 index 759cff770ca787f91c5089de488044c0791a1ee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`-kvUwAr-gIPB7$RP~bUIv&-Io z_X*uLXP1x@0jdjcym~QV*}B}K1?$wkBSltB+~C7Ftyho5A?+UfzdtU*Pc}5lJ1%KR fZDS5R*C@=!?R)XkEptJ8ps@^|u6{1-oD!MeQN diff --git a/harbour/contrib/hbide/xbpaddons/resources/rp_triangle.png b/harbour/contrib/hbide/xbpaddons/resources/rp_triangle.png deleted file mode 100644 index 66cd84568a4d9369cf9eb4a497f797c97d493beb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`=AJH&Ar_~PUOLFh;K0Ll@XP%# z%i5*;IDYE6&HcH?k5N;laMHd>PbRX>+A=B3yP+h3#UuURSeHYylYQmH6nWobH7 zrPD?*Ajt~45k)ugNPLgOu;W~WKhtPKcUKoCG{E$s>r^&U>1zDVe^P6Lmp)#?tw z)JY3V@-yiK6s4tAbO$6oF-cZHys=0BBCO{bN!A^Z=a5!80^0^q!v3ATjGr50_v9_Y z*#c?;>Ke3!NRibP0MAE8n0P#m&$3Q~)TUG@#*bg-hP;QCF;c`xCy1RS@|yEUPq47` z1B*rQUj!ViBx|_Ru%~AShv$|%|E9qhLv!B&f-)et8Fim`0=}#+kr#?et^+Xh=sp93 zLrgw>MqI+(Cl6^XFA}+kB)5b~(ivg?`v+E%lFwEHFfcg8u~WnJ38;md-ca)L+gIW= zguHFHX%N)~yXqUs=HI{L=9Q}$12>{&nZh z*?tbWtDEn-9_dP(l=IQ>T6?dBlk9D-1`o$;;Y}^>aoh<_ms-VnJT~buFfQTNo)Dh; zp2coY!@ii*$OY5av+~I;Na393=_~Q!!^-Zb>Z=N_yIzZ5_JJWW@>;CbhuRB3OBp;} L{an^LB{Ts5guy#7 diff --git a/harbour/contrib/hbide/xbpaddons/resources/table.png b/harbour/contrib/hbide/xbpaddons/resources/table.png deleted file mode 100644 index 0d1e11a83410d46c6912689110b05a8e16eee606..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 920 zcmV;J184k+P)`(YZ2MPt(oFg$RqAXOr6{HS)~KtZIc zucWeB_fla+?&fR;-;e`YBve~MLWpuOLP8B~HPgD3A6iJIO0r=xzV4CCC*c^AQ2IUz zu_P7C*lbCvG~ABx-?g(<5|;5k+!&d($E6jPSsu^K+xN;p;L>C*Su_oyR zyn{IwR)!RROt#mjbBi1%YLcyMoQgnSIo%g0;qIH08=mK%%`I#RE^Cz}Y$~t=7n5oh z?A7q&;OOgptCF+pUCqipev`PpnsHbfD_`Gzb1=FZeTe(LEIsj~Bc!NX4zUR}8rr3^<$v-`8i( zUb^_hK@L8?lRu(FdQNP4c0eghe#O6=JVhdB^H`Q>+U9x{^EG>s^Km@cZQ&Fhia|~%P%qp%U#$k-}FVdQ&MBb@0By@Cxc~qF diff --git a/harbour/contrib/hbide/xbpaddons/resources/tofront.png b/harbour/contrib/hbide/xbpaddons/resources/tofront.png deleted file mode 100644 index 23559d4a1caced764db8bbcc04d3451e03fc6048..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`PM$7~Ar-gIUb@J}V8G*iv9{{J z&E05?sh#J<_^NkJS=+g=)WXH(DeJfBNsJ3Vmo}_nSkBxk_+aOCrl!9aUwAGs-N@3b WD?LBzWWo)gX$+pOelF{r5}E)L*(>n? diff --git a/harbour/contrib/hbide/xbpaddons/resources/unload_1.png b/harbour/contrib/hbide/xbpaddons/resources/unload_1.png deleted file mode 100644 index bf92c5d33e75555b084c42a909a05a503ad5e429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 721 zcmV;?0xtcDP)l9!5UA1s3mDU8DK zi(=SouFR$6Y+H#y$41cQ&k8Sm~b{inM2isOWlxJKfc| z(RrWpYRGV|x3 zS48@`5^9ejy*U%-Ne_DKFzIoFqt9tajqM3^#vJHcGK7b{%>157*49D|lH^3B7!r}! zb`CaY7iPw1mjl_xO!f#bGh(m`AB7xK6M>U*Jd&IC(H7&7@gj~^Ey09)9QFO>u#a28 zVHvUE%+viiL0)EiP;mB><3B7qQuD#wvGl<0x&p0>= z+E39AqH%y2W+i3Fa_iy8+i3M21Z$Af8iM>+Y807*aiwDmOXPi{MsQTU&lcW8#4sx@ zQ!bXZjcOX+W?X99NYh@AQu8{Lbq1pR?OK+|2gc0cxYwf*oaBi6OjmoJMVb zknm{rzF_8`tE^ZmRi>AD!!WEy=a)!YH3470C)4>K!3Spq*F=v!>}6)o#}t#Ga8(=p z@abC!Mkm9BhAHP7^=3V$d7pEDN|Ga^BrA*Zd7twyV|?$H16yJK00000NkvXXu0mjf DTdr4( diff --git a/harbour/contrib/hbide/xbpaddons/resources/view_cascaded.png b/harbour/contrib/hbide/xbpaddons/resources/view_cascaded.png deleted file mode 100644 index 66544cb4a6d0ee616b60ec2625eae2be97847ecd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 576 zcmV-G0>Ax0 zUr19?00!{$XhaX{TlVB);6sJ?K}-=>{%PhiSvG1h;g+kg9Q~1*Zp?c_P0?CGnM%8% zGPNbBBuG9P1`#9EMJlTX`Y@*5&6Pda%f9Z8j4|-uKKMPJkMo^F()J(lGG00$##MGE)jz^EJ$U{6uy4525q}d1 zTQ(HyY7%o;$zj6tJp55m@1z+EUsvJvEkpnK6*RrmD00oBaCi>KN8h7hWFGmhw>aA6 z#xc%?eQG91Zy@e~TK4~-Q^c((R4oG1?+(ZsKBY%mK^2J2Zbu?tR=?3HzqkM3#)ARW z-S1VzoYaAol$8f3W@a(|W(MBRJ~|~5{e`6!KfR3-%k4WL^dWX1grAt4q*FpaMQn;; z%!i=J;c$SEWEl787~)y^9)K9xf-eF^(g&mzWRzE&4tMl8(ag6Yw6Te`Z750>B$Fv& zBzzzcK=dyZwQ?MYOjz&2BL0^~Yg0_FKvkqU5v;vph8)vnbL?Q&AIldY6I=`TI$5b$T*iXdE1=P^7v*Kfnvu`icl>{S6l5E6=zQ2wTXQ(>%kKVj^!QS9hz zucfcOgZ~x94(pWEf@Mc%05miLLR)Cr zqu?3veOP*bgW~E8QRXPQhE5J28=%6nqpKEXxrYGx02&3Xh3T0~6bf@}ZmzJm{sT6w z;Yi&86&8fV^Uq*}lmJG+vrt&ROTM;?x|SAxZG1vo=b2f66URweW!q5uC_%6a7!q1; zW-U6zw==^OZ8u-;JfQ8`N1_tMWm1Y@K}ZCPPk;c#01iQEk{2`?5Byo)eO={rp$Eb( za3yG6AYnmCot&qd!AJZ<0SiK6>g72wS=5E}_1t3UZ4TeWgbr@^HdB6h0kv5)Dv`N3 zK}r=XLTY*KF=8z0%0%TWd|%7po0zSbl(+Z;wONQtR2TvBBhPfV@*_`GvV#+^Gr5LS zWe3V1s(_LZQB*+@RD=qnith>G&-FI~bO812&iZd#)bW*1Gk2TCN$CKa7l83gtk^#W2WOZ6ARL#R3dXTXss9a(ONklD33{)6O{tLEXAXE1W|`M>4S|NnmveM19I1t7V5_wM19XDBHv$E)D&(Cw7bKbLxh*q#aRUMt6(!NT_ z&`!jrYrOF)tsQm?{K-H>SZ+SBWyKMbsy-E`r0blZ(uP60aNoG7 zNY^Z&;GCG7rcQ%Rz-F0kPrQobAJ$o@qIHa_+QzBzi=EmnPU;(dwsNlyi4bs(@SY+)Cfs-9sdeX_b}dX5JH#|Spa34x^i_XXE0zV17Fw|OhxYeI_G zLSc7t?Kl4nI%5<`0k@3UdO0a7v}0KJN`Q`Dt^1plTkjK*SMQU4VV#_`1PBs>KmcGJ zj6gK7?LXMbYF9?EyLqy^y=23DFAc*%g_4_OhZ3%+Ks~f0r@TL2YO+yuvOi^Wbq~A9 zG%`z)l8mrXB4g4t&a5)iqvTtLE@^}aF^J6vK_G6|1|^+l2OZDX^Z3GEB*jVu8Ht(I z?vpp0*cS>4rN+SP6 z$_j*(LW2)yI(Xtn!(wCaG?{+PQOoxk(wnBKvTcHjYRq&;GeD2uS_lo8cnz!$Sy%*+44G}%gA)aQ j*tP?i+Bfj;4qfg)L0X0m1`=f800000NkvXXu0mjfLtbX0 diff --git a/harbour/contrib/hbide/xbpaddons/resources/view_tabbed.png b/harbour/contrib/hbide/xbpaddons/resources/view_tabbed.png deleted file mode 100644 index d73b3f9b6d0992235bd64f67cb28f996b2769cc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Z#-QbLn>~~y}Z%eDNyA2M`lHq ziQQK|CKkN-PhT zKiB1-Gw=C<@;`stxTkNsZew%y)??%8-#vRGyeuobv)OkCHVJ#P=e2HSPSPwcJ)HPn zbnQQbLjJqzE&cfxD??`HWy{Im-LH^2^P90<7Te2n3`r*?4!@6YP}}(AH)DSqkQQNK z>=y^p7Z0RxYILzL;{g(O^$fmAi`}=>1I1H(n)inT>5}JHf7bJ62ziS?_2z!s*}JdU ktlUmt#C!j56}LBRyPc1m?G>G|3g~YJPgg&ebxsLQ0NT`e8vpcoq&O@VDT*Fs(ES}ntGi}^&93I7@HV5`B==|X}SD})w09Ziw`(By97;G z85$N5mzme)0eK%m1g(UATDt)}?pKWM=4x;b>H<+k<|9=*(HskH~-Dg+LkU1-Or{={gF`=iuQ^h&s4exs`vG(5U zQnTrXXN&o1sm{yo3n!k)&0BTzKEL&ok~4pQ1{wpEu!EFryy3|*n|s#T4L1C}*V%>R YD;T97w66a$6KFq!r>mdKI;Vst0I8#sJ^%m! diff --git a/harbour/contrib/hbide/xbpaddons/resources/view_vertstacked.png b/harbour/contrib/hbide/xbpaddons/resources/view_vertstacked.png deleted file mode 100644 index 9ef365c077aaa6498edc298fdedbe667c2587c1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327 zcmV-N0l5B&P)o?5(57NtE|Nr#s|Nk$( z{r~^^`~Uy%eER?Y(U<@KUwr%j|J{%O|3Cl!|NrOT|6l;p%aB)CM79ASy$p?wjbs}D z(#ufa(C{BUkkA7WTOfl15u}%)xU8J)KrAUM|Hlv>8BMkqq@-n5G02!Zk!=7x9gu4P zJRM+5X|NQCFD1g$0l9%ly>vjX0pN51j7zc&0H*^r4bA^?$*CAPHYxQVh>l52!6^?) Z2LPg(?&u(PdH?_b002ovPDHLkV1l}so^=2K diff --git a/harbour/contrib/hbide/xbpaddons/resources/view_zoomin.png b/harbour/contrib/hbide/xbpaddons/resources/view_zoomin.png deleted file mode 100644 index f5871dc21c21c64bd8d562875293a9c7b2e626c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 769 zcmV+c1OEJpP)zY%KC9geZs_mWK4rq z<4TmWA~Na_a}%psn9_o-A0G68U&$v#a5geUDK2^4I2QI{o}giBKqAhmw+tmJq7DrU zxwj9tCu#`0{hrd7KX6WIWo|+PB0P^t`|~hAR)*ENCTw%xGHu@likqIImzDLb0x@gF zdc^(`VrqKv&VPg0or&0+g$T_??8!iEJA?2!gJW?AW{PW^D$t;pfdflL0rK3}1Xg{; zexyXJ6E&mZNg-F5bGDWx11^H1@W5KW_e4;WY$4qr<6z`3 z`Plcx;Lh%kl;3Y7{ze_ji)qA!IMS~10Uu?Ac0F);#I%7zcI>?b#j>Xk@=# zfy2@~?r%d;k}KWXoxE>YM^}>*+Po#Bdx?WT`9H3FYu!Y000000NkvXXu0mjfC!um9 diff --git a/harbour/contrib/hbide/xbpaddons/resources/view_zoomout.png b/harbour/contrib/hbide/xbpaddons/resources/view_zoomout.png deleted file mode 100644 index 29e9d69ee5a666382e60e98af4ccb1a1ab36df38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 772 zcmV+f1N;1mP)JmrlBxM`ZOOgnM}Vr@N(du`yROOeZ*+zW!N6RVWH{A(*N!j z%2@5qsF|)UVx-4D=5c=JSV#~3Q)-e8rnn?*dWLX~>v*!vAbZ;=%Bzp&y za9Aow?0-n4rkyQ09}qh;5W%+*fvJdX$%xJI2%mW7J!r%>>=tKLTC;zUgNb1(6j|?0 zZ~l(cB|WnEmrRa*fqiT#Qxb|F?Rtb(sHAySQRQ8%j!I+3ft zvONDAD~h{VqwhhkH!?Y~lo1LgWA|M*hd9W=qLd=6LeiLaz65v4tnEUs>tR(zFP^2{ z$WmV+d{bB(>_tSJuQ|k_92C?V7#VaKyW_byUaQ0@vz{4g)l7`aLwH}nJ?sF@27hWY zZD`b|59Q!ze?O9n>zi;nnu?X*IjjR>u-bZtVH=hBL?5T=^*RQ6R`8?s5SpY3(*55Y znEsNsZykTs)Y68!qK z{B{HlNd46IY1}{WMoU!ypUYR$taGL+djZm1;@}tC{k5|b4***L0000}dZ6WL3Sgzm~DZ!P)j%I7ijQeJ|c=W-iaP zzpTp>T~h3H!F|%AT`zf#>z&`p?afdiKJ7r+gMWgI2lqc=4McWo diff --git a/harbour/contrib/hbide/xbpaddons/resources/zoomin3.png b/harbour/contrib/hbide/xbpaddons/resources/zoomin3.png deleted file mode 100644 index e8287d0504d3e5500cdb2e9b81082730efc5e38e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 706 zcmV;z0zLhSP) zdn^-uW@r(No;K9+duu$cGuG9L-Z&9JqCr=^C+V64Mo<2copA>T_`0^fh+yf z&2A$~?0R;vXaG^NNeJaC1lCW$Lih^A6)(}{tVsH+bh$1i_qO^qOk;ipcs;!V*WzBd zmyf_#wg@}%Aat%2V+%_ZLK;QOVr@!>FtG@{RRWx*c~EE#^x~RvR5}Oy`UMzgcS4sV zQju5u4pI{%`xMzSgXXbSIF$@zUv>{DN(x4_6voLim=^TGs_ruku9bqkDcAT|6-rC;4ggtUE!ZP5TsGde*0 zGBCpLV{d*J93Q>Mp(j(&4;6#Flh~vtNL;!zT&Vj1rJ zYcMbBhOS@QIyp;rlbYZXb1lAP+A>cLm(~TGc=;7(S#7YZ9E4l%GOWt`LH>8)dDUyZ zT|jB1iFROthjwt$nz7(9EF}uq){f#p#SnI-H-nh@I35>+*@*zWt2RVaB5_G0Kar~z zD|0}PlLdWl4)oZW(DqFOTPVQPuqQT_Phv?Kix=6XEDfeTq>%$#kIp7JlaDaW#^-!a zO1M3~baJpd!GmgKKUS0%(N}E&F_&^_Gj4MYK@JxO_Ej)rTnG43-4x={J2&qhJq0P!*Z*>y|ZJWMx!wiz^CP=+N{Q@Rg)Bg~% ob*%+V?dmdKI;Vst0Bg)nf&c&j diff --git a/harbour/contrib/hbide/xbpaddons/resources/zoomout3.png b/harbour/contrib/hbide/xbpaddons/resources/zoomout3.png deleted file mode 100644 index 34b7f1425cc90cf677181f341deea43b6c9c9115..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 708 zcmV;#0z3VQP) zdn^*=5IdI>}i|tz;q3 zbVtm*#w{GC^{^tZag8Q)HZ|+pKmE~m*V5-h^rxtYCKOX6q$_oO6k7ulK3XJRK_&6! z?(|RT-Aqd9d~xW`5Mq^+NN<}%aMd_$#BHE3#R>)G#?oJ9cbQUJZ!@QM8d@Eo`3%VV z*AUsVg22W_*eix%9B~JmxROXRC{CGRS2Ti&B|tq3q;>s(plKOC)$?$v)Z%c>0xa@6 zV9J-wlV8$K(i5-z7~3?1hS4=R7mdJP-Vc_v2Ug;CFw<1nBUgh}F^+AQib4KKXGl+6 zJu=$o!L1qt37>$X%RmvOpil+qf(*oy!J%#vI}#s*{F9PNPgI$fQ}F?jEni`GTLYHt z6|AMbu#$FTzq}Jp&)&iL`4qOsC_w(HJkldj6z|GVA-HuJ-pz~fQZ2xv=?gqNm*At( z!Ar9S>%wlBaDRI@Of|#24)X z0;L(39q_4xkF^OQ=HDE|s`fn8 - - DialogTables - - - Qt::ApplicationModal - - - - 0 - 0 - 302 - 485 - - - - Opened Tables - - - true - - - true - - - - - - true - - - 1 - - - - 1 - - - - - - - - OK - - - - - - - - diff --git a/harbour/contrib/hbide/xbpaddons/xbp.qrc b/harbour/contrib/hbide/xbpaddons/xbp.qrc deleted file mode 100644 index ddadfa27da..0000000000 --- a/harbour/contrib/hbide/xbpaddons/xbp.qrc +++ /dev/null @@ -1,101 +0,0 @@ - - - resources/view_cascaded.png - resources/view_organized.png - resources/view_tabbed.png - resources/view_tiled.png - resources/view_vertstacked.png - resources/view_horzstacked.png - resources/view_zoomin.png - resources/view_zoomout.png - resources/view_refresh.png - resources/database.png - resources/database_accept.png - resources/database_add.png - resources/database_remove.png - resources/database_lock.png - resources/database_process.png - resources/database_up.png - resources/database_down.png - resources/database_previous.png - resources/database_next.png - resources/database_search.png - resources/new.png - resources/open3.png - resources/save3.png - resources/close3.png - resources/print.png - resources/load_1.png - resources/unload_1.png - resources/zoomin3.png - resources/zoomout3.png - resources/zoomout.png - resources/zoomin.png - resources/grid.png - resources/fullscreen.png - resources/formview.png - resources/dbstruct.png - resources/find.png - resources/gotoline3.png - resources/dc_delete.png - resources/panel_7.png - resources/panel_8.png - resources/sort.png - resources/closetab.png - resources/dbf_p1.png - resources/dbf_p2.png - resources/dbf_p3.png - resources/dbf_p4.png - resources/dbf_p5.png - resources/dbf_p6.png - resources/dbf_p7.png - resources/dbf_p8.png - resources/dbf_p9.png - resources/dbf_p10.png - resources/form.png - resources/table.png - resources/f_align_left.png - resources/f_align_right.png - resources/f_align_center.png - resources/f_align_justify.png - resources/f_align_top.png - resources/f_align_middle.png - resources/f_align_bottom.png - resources/f_box_top.png - resources/f_box_left.png - resources/f_box_bottom.png - resources/f_box_right.png - resources/f_box_all.png - resources/f_box_plain.png - resources/f_box_shadow.png - resources/f-generic.png - resources/f-image.png - resources/f_chart.png - resources/f_gradient.png - resources/f_barcode.png - resources/f-bold-1.png - resources/f-italic-1.png - resources/f-underline-1.png - resources/f-strike-1.png - resources/toback.png - resources/tofront.png - resources/r-page.png - resources/r-report.png - resources/r-landscape.png - resources/r-portrait.png - resources/rp_arc.png - resources/rp_chord.png - resources/rp_diamond.png - resources/rp_triangle.png - resources/rp_rectangle.png - resources/rp_roundrectangle.png - resources/rp_linevert.png - resources/rp_linehorz.png - resources/rp_linediagright.png - resources/rp_linediagleft.png - resources/rp_ellipse.png - resources/rp_shapes.png - resources/harbour.png - resources/text.png - - diff --git a/harbour/contrib/hbide/xbpaddons/xbpaddons.hbc b/harbour/contrib/hbide/xbpaddons/xbpaddons.hbc deleted file mode 100644 index cea6d90845..0000000000 --- a/harbour/contrib/hbide/xbpaddons/xbpaddons.hbc +++ /dev/null @@ -1,9 +0,0 @@ -# -# $Id$ -# - -incpaths=. - -libs=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF} - -libs=hbxbp.hbc diff --git a/harbour/contrib/hbide/xbpaddons/xbpaddons.hbp b/harbour/contrib/hbide/xbpaddons/xbpaddons.hbp deleted file mode 100644 index 0a0a5c79fe..0000000000 --- a/harbour/contrib/hbide/xbpaddons/xbpaddons.hbp +++ /dev/null @@ -1,22 +0,0 @@ -# -# $Id$ -# - --hblib --inc - --o${hb_name} - --w3 -es2 - -hbxbp.hbc - -dbu.prg -reports.prg -misc.prg - -xbp.qrc - -dbstruct.ui -fetchdate.ui -tables.ui diff --git a/harbour/contrib/hbqt/CREDITS.txt b/harbour/contrib/hbqt/CREDITS.txt deleted file mode 100644 index 29c7224ddd..0000000000 --- a/harbour/contrib/hbqt/CREDITS.txt +++ /dev/null @@ -1,92 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * QT wrapper - * - * Copyright 2009-2010 Pritpal Bedi - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/* C R E D I T S */ -/*----------------------------------------------------------------------*/ -/* - * Marcos Antonio Gambeta - * for providing first ever prototype parsing methods. Though the current - * implementation is diametrically different then what he proposed, still - * current code shaped on those footsteps. - * - * Viktor Szakats - * for directing the project with futuristic vision; - * for designing and maintaining a complex build system for hbQT, hbIDE; - * for introducing many constructs on PRG and C++ levels; - * for streamlining signal/slots and events management classes; - * - * Istvan Bisz - * for introducing QPointer<> concept in the generator; - * for testing the library on numerous accounts; - * for showing a way how a GC pointer can be detached; - * - * Francesco Perillo - * for taking keen interest in hbQT development and peeking the code; - * for providing tips here and there to improve the code quality; - * for hitting bulls eye to describe why few objects need GC detachment; - * for implementing a lot simplified SIGNALS/SLOTS mechanism; - * for porting prg class code on c++ level; - * - * Carlos Bacco - * for implementing HBQT_TYPE_Q*Class enums; - * for peeking into the code and suggesting optimization points; - * - * Przemyslaw Czerpak - * for providing tips and trick to manipulate HVM internals to the best - * of its use and always showing a path when we get stuck; - * A true tradition of a MASTER... - * - * Teo Fonrouge - * for providing building blocks how a prg level class can be ported to c++; - * -*/ -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbqt/gtqtc.hbc b/harbour/contrib/hbqt/gtqtc.hbc deleted file mode 100644 index 9213c61d55..0000000000 --- a/harbour/contrib/hbqt/gtqtc.hbc +++ /dev/null @@ -1,10 +0,0 @@ -# -# $Id$ -# - -# --------------------------------------------------------------- -# Copyright 2010 Viktor Szakats (harbour syenar.net) -# See COPYING for licensing terms. -# --------------------------------------------------------------- - -libs=gtqtc/gtqtc.hbc diff --git a/harbour/contrib/hbqt/gtqtc/gtqtc.cpp b/harbour/contrib/hbqt/gtqtc/gtqtc.cpp deleted file mode 100644 index 9b4dc5b802..0000000000 --- a/harbour/contrib/hbqt/gtqtc/gtqtc.cpp +++ /dev/null @@ -1,2655 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009-2011 Pritpal Bedi - * - * Video subsystem for Windows using GUI windows instead of Console - * Copyright 2003 Peter Rees - * Rees Software & Systems Ltd - * - * Copyright 2006 Przemyslaw Czerpak - * Adopted to new GT API - * - * www - http://www.harbour-project.org - * - * See COPYING for licensing terms. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option ) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/ ). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#include "gtqtc.h" - -#define WM_MY_UPDATE_CARET 1700 - -static int s_GtId; -static HB_GT_FUNCS SuperTable; -#define HB_GTSUPER (&SuperTable) -#define HB_GTID_PTR (&s_GtId) - -#define HB_GTWVT_GET(p) ( ( PHB_GTWVT ) HB_GTLOCAL( p ) ) - -static HB_CRITICAL_NEW( s_wvtMtx ); -#define HB_WVT_LOCK hb_threadEnterCriticalSection( &s_wvtMtx ); -#define HB_WVT_UNLOCK hb_threadLeaveCriticalSection( &s_wvtMtx ); - -static PHB_GTWVT s_wvtWindows[ WVT_MAX_WINDOWS ]; -static int s_wvtCount = 0; - -/*----------------------------------------------------------------------*/ -#if 0 -static void DebugIt( char* text, int iVal, int iVal2 ) -{ - char buf[ 100 ]; - wsprintf( buf, text, iVal, iVal2 ); - OutputDebugString( buf ); - -#if 0 - HB_SYMBOL_UNUSED( text ); - HB_SYMBOL_UNUSED( iVal ); - HB_SYMBOL_UNUSED( iVal2 ); -#endif -} -#endif -/*----------------------------------------------------------------------*/ - -static bool hb_gt_wvt_Alloc( PHB_GTWVT pWVT ) -{ - bool fOK = HB_FALSE; - - HB_WVT_LOCK - - if( s_wvtCount < WVT_MAX_WINDOWS ) - { - int iPos = 0; - do - { - if( s_wvtWindows[ iPos ] == NULL ) - { - s_wvtWindows[ iPos ] = pWVT; - pWVT->iHandle = iPos; - fOK = HB_TRUE; - ++s_wvtCount; - break; - } - ++iPos; - } - while( iPos < WVT_MAX_WINDOWS ); - } - HB_WVT_UNLOCK - - return fOK; -} - -static void hb_gt_wvt_Free( PHB_GTWVT pWVT ) -{ - if( pWVT->qWnd->_drawingArea->_basicTimer->isActive() ) - { - pWVT->qWnd->_drawingArea->_basicTimer->stop(); - } - if( pWVT->qEventLoop ) - { - pWVT->qEventLoop->exit(); - } - - pWVT->qWnd->~MainWindow(); - - s_wvtWindows[ pWVT->iHandle ] = NULL; -#if 0 - if( --s_wvtCount == 0 ) - { - Qapplication::quit(); - } -#endif - hb_xfree( pWVT ); -} - -static PHB_GTWVT hb_gt_wvt_New( PHB_GT pGT, int iCmdShow ) -{ - PHB_GTWVT pWVT; - - pWVT = ( PHB_GTWVT ) hb_xgrab( sizeof( HB_GTWVT ) ); - memset( pWVT, 0, sizeof( HB_GTWVT ) ); - pWVT->pGT = pGT; - - if( !hb_gt_wvt_Alloc( pWVT ) ) - { - hb_xfree( pWVT ); - return NULL; - } - - pWVT->iCmdShow = iCmdShow; - pWVT->ROWS = WVT_DEFAULT_ROWS; - pWVT->COLS = WVT_DEFAULT_COLS; - - /* THESE are the default font parameters, if not changed by user */ - pWVT->PTEXTSIZE.setX( WVT_DEFAULT_FONT_WIDTH ); - pWVT->PTEXTSIZE.setY( WVT_DEFAULT_FONT_HEIGHT ); - pWVT->fontWidth = WVT_DEFAULT_FONT_WIDTH; - pWVT->fontHeight = WVT_DEFAULT_FONT_HEIGHT; - pWVT->fontWeight = 0; - pWVT->fontQuality = 0; - hb_strncpy( pWVT->fontFace, WVT_DEFAULT_FONT_NAME, sizeof( pWVT->fontFace ) - 1 ); - - pWVT->CaretExist = HB_FALSE; - pWVT->CaretHidden = HB_TRUE; - pWVT->CaretSize = 0; - pWVT->CaretWidth = 0; - pWVT->MousePos.setX( 0 ); - pWVT->MousePos.setY( 0 ); - pWVT->MouseMove = HB_TRUE; - pWVT->keyPointerIn = 0; - pWVT->keyPointerOut = 0; - pWVT->keyLast = 0; - - pWVT->CenterWindow = HB_TRUE; /* Default is to always display window in centre of screen */ - - pWVT->AltF4Close = HB_FALSE; - pWVT->fInit = HB_FALSE; - pWVT->bMaximized = HB_FALSE; - pWVT->bBeingMarked = HB_FALSE; - pWVT->bBeginMarked = HB_FALSE; - - pWVT->pszSelectCopy = hb_strdup( "Mark and Copy" ); - pWVT->bSelectCopy = HB_TRUE; - pWVT->bResizable = HB_TRUE; - pWVT->bClosable = HB_TRUE; - - pWVT->ResizeMode = HB_GTI_RESIZEMODE_FONT; - - pWVT->bResizing = HB_FALSE; - pWVT->bAlreadySizing = HB_FALSE; - - return pWVT; -} - -static void hb_gt_wvt_SetWindowFlags( PHB_GTWVT pWVT, Qt::WindowFlags flags ) -{ - pWVT->qWnd->setWindowFlags( flags ); - #if 1 - QPoint pos = pWVT->qWnd->pos(); - if( pos.x() < 0 ) - pos.setX( 0 ); - if( pos.y() < 0 ) - pos.setY( 0 ); - pWVT->qWnd->move( pos ); - #endif - pWVT->qWnd->setFocus(); - pWVT->qWnd->_drawingArea->setFocus( Qt::MouseFocusReason ); - pWVT->qWnd->show(); -} - -static int hb_gt_wvt_FireEvent( PHB_GTWVT pWVT, int nEvent ) -{ - int nResult = 0; /* Unhandled */ - - if( pWVT->pGT->pNotifierBlock ) - { - if( hb_vmRequestReenter() ) - { - PHB_ITEM pEvent = hb_itemPutNI( NULL, nEvent ); - nResult = hb_itemGetNI( hb_vmEvalBlockV( ( PHB_ITEM ) pWVT->pGT->pNotifierBlock, 1, pEvent ) ); - hb_itemRelease( pEvent ); - hb_vmRequestRestore(); - } - } - return nResult; -} - -#if 0 /* I M P O R T A N T */ -static QPoint hb_gt_wvt_QGetXYFromColRow( PHB_GTWVT pWVT, int col, int row ) -{ - QPoint xy; - xy.setX( col * pWVT->PTEXTSIZE.x() ); - xy.setY( row * pWVT->PTEXTSIZE.y() ); - return xy; -} -#endif - -static QRect hb_gt_wvt_QGetXYFromColRowRect( PHB_GTWVT pWVT, QRect colrow ) -{ - QRect xy; - xy.setLeft( colrow.left() * pWVT->PTEXTSIZE.x() ); - xy.setTop( colrow.top() * pWVT->PTEXTSIZE.y() ); - xy.setRight( ( colrow.right() + 1 ) * pWVT->PTEXTSIZE.x() ); - xy.setBottom( ( colrow.bottom() + 1 ) * pWVT->PTEXTSIZE.y() ); - return xy; -} - -static void hb_gt_wvt_QUpdateCaret( PHB_GTWVT pWVT ) -{ - int iRow, iCol, iStyle, iCaretSize; - - /* Restore previous cell value */ - pWVT->qWnd->_drawingArea->displayCell( pWVT->qWnd->_drawingArea->_crtLastRow, pWVT->qWnd->_drawingArea->_crtLastCol ); - - HB_GTSELF_GETSCRCURSOR( pWVT->pGT, &iRow, &iCol, &iStyle ); - - if( iRow < 0 || iCol < 0 || iRow >= pWVT->ROWS || iCol >= pWVT->COLS ) - { - iCaretSize = 0; - } - else switch( iStyle ) - { - case SC_INSERT: - iCaretSize = pWVT->PTEXTSIZE.y() / 2; - break; - case SC_SPECIAL1: - iCaretSize = pWVT->PTEXTSIZE.y() * 3 / 4; - break; - case SC_SPECIAL2: - iCaretSize = pWVT->PTEXTSIZE.y(); - break; - case SC_NORMAL: - iCaretSize = pWVT->PTEXTSIZE.y() / 4; - break; - default: - iCaretSize = 0; - break; - } - - if( iCaretSize == 0 ) - { - if( pWVT->CaretExist && !pWVT->CaretHidden ) - { - pWVT->qWnd->_drawingArea->hideCaret(); - pWVT->CaretHidden = HB_TRUE; - } - } - else - { - if( iCaretSize != pWVT->CaretSize || pWVT->PTEXTSIZE.x() != pWVT->CaretWidth || - !pWVT->CaretExist ) - { - pWVT->CaretSize = iCaretSize; - pWVT->CaretWidth = pWVT->PTEXTSIZE.x(); - pWVT->CaretExist = pWVT->qWnd->_drawingArea->createCaret( pWVT->PTEXTSIZE.x(), pWVT->CaretSize ); - } - if( pWVT->CaretExist ) - { - pWVT->qWnd->_drawingArea->setCaretPos( iCol, iRow ); - pWVT->qWnd->_drawingArea->showCaret(); - pWVT->CaretHidden = HB_FALSE; - } - } -} - -/* - * functions for handling the input queues for the mouse and keyboard - */ -static void hb_gt_wvt_AddCharToInputQueue( PHB_GTWVT pWVT, int iKey ) -{ - int iPos = pWVT->keyPointerIn; - - if( iKey == K_MOUSEMOVE || iKey == K_NCMOUSEMOVE ) - { - /* Clipper strips repeated mouse movemnt - let's do the same */ - if( pWVT->keyLast == iKey && pWVT->keyPointerIn != pWVT->keyPointerOut ) - return; - } - /* - * When the buffer is full new event overwrite the last one - * in the buffer - it's Clipper behavior, [druzus] - */ - pWVT->Keys[ iPos ] = pWVT->keyLast = iKey; - if( ++iPos >= WVT_CHAR_QUEUE_SIZE ) - iPos = 0; - if( iPos != pWVT->keyPointerOut ) - pWVT->keyPointerIn = iPos; -} - -static bool hb_gt_wvt_GetCharFromInputQueue( PHB_GTWVT pWVT, int * iKey ) -{ - if( pWVT && pWVT->keyPointerOut != pWVT->keyPointerIn ) - { - *iKey = pWVT->Keys[ pWVT->keyPointerOut ]; - if( ++pWVT->keyPointerOut >= WVT_CHAR_QUEUE_SIZE ) - { - pWVT->keyPointerOut = 0; - } - return HB_TRUE; - } - *iKey = 0; - return HB_FALSE; -} - -int hb_gt_wvt_getKbdState( void ) -{ - int iKbdState = 0; - Qt::KeyboardModifiers kbState = QApplication::keyboardModifiers(); - - if( kbState & Qt::ShiftModifier ) iKbdState |= HB_GTI_KBD_SHIFT; - if( kbState & Qt::ControlModifier ) iKbdState |= HB_GTI_KBD_CTRL; - if( kbState & Qt::AltModifier ) iKbdState |= HB_GTI_KBD_ALT; - #if 0 /* No equivalents available in QT */ - if( kbState[VK_LWIN ] & 0x80 ) iKbdState |= HB_GTI_KBD_LWIN; - if( kbState[VK_RWIN ] & 0x80 ) iKbdState |= HB_GTI_KBD_RWIN; - if( kbState[VK_APPS ] & 0x80 ) iKbdState |= HB_GTI_KBD_MENU; - if( kbState[VK_SCROLL ] & 0x01 ) iKbdState |= HB_GTI_KBD_SCROLOCK; - if( kbState[VK_NUMLOCK ] & 0x01 ) iKbdState |= HB_GTI_KBD_NUMLOCK; - if( kbState[VK_CAPITAL ] & 0x01 ) iKbdState |= HB_GTI_KBD_CAPSLOCK; - if( kbState[VK_INSERT ] & 0x01 ) iKbdState |= HB_GTI_KBD_INSERT; - #endif - - return iKbdState; -} -#if 0 -void hb_gt_wvt_setKbdState( int iKbdState ) -{ - HB_BYTE kbState[256]; - - GetKeyboardState( kbState ); - - kbState[VK_SHIFT ] = ( iKbdState & HB_GTI_KBD_SHIFT ) ? 0x80 : 0; - kbState[VK_CONTROL] = ( iKbdState & HB_GTI_KBD_CTRL ) ? 0x80 : 0; - kbState[VK_MENU ] = ( iKbdState & HB_GTI_KBD_ALT ) ? 0x80 : 0; - kbState[VK_LWIN ] = ( iKbdState & HB_GTI_KBD_LWIN ) ? 0x80 : 0; - kbState[VK_RWIN ] = ( iKbdState & HB_GTI_KBD_RWIN ) ? 0x80 : 0; - kbState[VK_APPS ] = ( iKbdState & HB_GTI_KBD_MENU ) ? 0x80 : 0; - kbState[VK_SCROLL ] = ( iKbdState & HB_GTI_KBD_SCROLOCK ) ? 0x01 : 0; - kbState[VK_NUMLOCK] = ( iKbdState & HB_GTI_KBD_NUMLOCK ) ? 0x01 : 0; - kbState[VK_CAPITAL] = ( iKbdState & HB_GTI_KBD_CAPSLOCK ) ? 0x01 : 0; - kbState[VK_INSERT ] = ( iKbdState & HB_GTI_KBD_INSERT ) ? 0x01 : 0; - - SetKeyboardState( kbState ); -} -#endif - -#if 0 -static int hb_gt_wvt_key_ansi_to_oem( int c ) -{ - HB_BYTE pszAnsi[ 2 ]; - HB_BYTE pszOem[ 2 ]; - - pszAnsi[ 0 ] = ( CHAR ) c; - pszAnsi[ 1 ] = 0; -// CharToOemBuffA( ( LPCSTR ) pszAnsi, ( LPSTR ) pszOem, 1 ); - return * pszOem; -} -#endif - -static void hb_gt_wvt_QResetWindowSize( PHB_GTWVT pWVT ) -{ - pWVT->qWnd->_drawingArea->resetWindowSize(); - pWVT->qWnd->setWindowSize(); -} - -static bool hb_gt_wvt_QSetWindowSize( PHB_GTWVT pWVT, int iRows, int iCols ) -{ - if( HB_GTSELF_RESIZE( pWVT->pGT, iRows, iCols ) ) - { - pWVT->ROWS = ( HB_USHORT ) iRows; - pWVT->COLS = ( HB_USHORT ) iCols; - - pWVT->qWnd->_drawingArea->_iROWS = iRows; - pWVT->qWnd->_drawingArea->_iCOLS = iCols; - return HB_TRUE; - } - return HB_FALSE; -} - -static bool hb_gt_wvt_QInitWindow( PHB_GTWVT pWVT, int iRow, int iCol ) -{ - bool fRet = hb_gt_wvt_QSetWindowSize( pWVT, iRow, iCol ); - hb_gt_wvt_QResetWindowSize( pWVT ); - return fRet; -} - -static QPoint hb_gt_wvt_QGetColRowFromXY( PHB_GTWVT pWVT, int x, int y ) -{ - QPoint colrow; - colrow.setX( x / pWVT->PTEXTSIZE.x() ); - colrow.setY( y / pWVT->PTEXTSIZE.y() ); - return colrow; -} - -static QRect hb_gt_wvt_QGetColRowFromXYRect( PHB_GTWVT pWVT, QRect xy ) -{ - QRect colrow; - colrow.setLeft( xy.left() / pWVT->PTEXTSIZE.x() ); - colrow.setTop( xy.top() / pWVT->PTEXTSIZE.y() ); - colrow.setRight( xy.right() / pWVT->PTEXTSIZE.x() - - ( xy.right() % pWVT->PTEXTSIZE.x() ? 0 : 1 ) ); /* Adjust for when rectangle */ - colrow.setBottom( xy.bottom() / pWVT->PTEXTSIZE.y() - - ( xy.bottom() % pWVT->PTEXTSIZE.y() ? 0 : 1 ) ); /* EXACTLY overlaps characters */ - return colrow; -} - -#if 0 -static bool hb_gt_wvt_QValidWindowSize( int rows, int cols, QFont *qFont, int iWidth ) -{ - //QDesktopWidget *desk = new QDesktopWidget(); - //int maxWidth = desk->width(); - //int maxHeight = desk->height(); - - HB_SYMBOL_UNUSED( rows ); - HB_SYMBOL_UNUSED( cols ); - HB_SYMBOL_UNUSED( qFont ); - HB_SYMBOL_UNUSED( iWidth ); - - return HB_TRUE; -} -#endif - -static void hb_gt_wvt_QCenterWindow( PHB_GTWVT pWVT ) -{ - int iDTWidth = QDesktopWidget().screenGeometry( QDesktopWidget().primaryScreen() ).right(); - int iDTHeight = QDesktopWidget().screenGeometry( QDesktopWidget().primaryScreen() ).bottom(); - int iWidth = pWVT->qWnd->width(); - int iHeight = pWVT->qWnd->height(); - pWVT->qWnd->move( ( iDTWidth - iWidth ) / 2, ( iDTHeight - iHeight ) / 2 ); -} - -static bool hb_gt_wvt_CreateConsoleWindow( PHB_GTWVT pWVT ) -{ - pWVT->qWnd = new MainWindow(); - if( !pWVT->qWnd ) - hb_errInternal( 10001, "Failed to create QTC window", NULL, NULL ); - - pWVT->qWnd->pGT = pWVT->pGT; - pWVT->qWnd->_drawingArea->pGT = pWVT->pGT; - - hb_gt_wvt_QInitWindow( pWVT, pWVT->ROWS, pWVT->COLS ); - - /* Set icon */ - #if 0 - if( pWVT->hIcon ) - { - pWVT->qWnd->setWindowIcon( pWVT->hIcon ); - } - #endif - - /* Set default window title */ - pWVT->qWnd->setWindowTitle( "Harbour-QT Console" ); - pWVT->qWnd->_drawingArea->resetWindowSize(); - pWVT->qWnd->setWindowSize(); - - return HB_TRUE; -} - -/* ********************************************************************** */ -/* - * GT Specific Functions - */ -/* ********************************************************************** */ - -static void hb_gt_wvt_Init( PHB_GT pGT, HB_FHANDLE hFilenoStdin, HB_FHANDLE hFilenoStdout, HB_FHANDLE hFilenoStderr ) -{ - int iCmdShow = 0; - PHB_GTWVT pWVT = NULL; - - HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Init(%p,%p,%p,%p)", pGT, ( void * ) ( HB_PTRDIFF ) hFilenoStdin, ( void * ) ( HB_PTRDIFF ) hFilenoStdout, ( void * ) ( HB_PTRDIFF ) hFilenoStderr ) ); - - pWVT = hb_gt_wvt_New( pGT, iCmdShow ); - if( !pWVT ) - { - hb_errInternal( 10001, "Maximum number of QTC windows reached, cannot create another one", NULL, NULL ); - } - HB_GTLOCAL( pGT ) = ( void * ) pWVT; - if( ! pWVT->qEventLoop ) /* To be activated for stand alone console */ - { - pWVT->qEventLoop = new QEventLoop(); - } - /* SUPER GT initialization */ - HB_GTSUPER_INIT( pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr ); - HB_GTSELF_RESIZE( pGT, pWVT->ROWS, pWVT->COLS ); - HB_GTSELF_SEMICOLD( pGT ); -} - -/* ********************************************************************** */ - -static void hb_gt_wvt_Exit( PHB_GT pGT ) -{ - PHB_GTWVT pWVT; - - HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_Exit(%p)", pGT)); - - pWVT = HB_GTWVT_GET( pGT ); - HB_GTSUPER_EXIT( pGT ); - - if( pWVT ) - { - hb_gt_wvt_Free( pWVT ); - } -} - -/* ********************************************************************** */ - -static void hb_gt_wvt_Redraw( PHB_GT pGT, int iRow, int iCol, int iSize ) -{ - PHB_GTWVT pWVT; - - HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Redraw(%p,%d,%d,%d)", pGT, iRow, iCol, iSize ) ); - - pWVT = HB_GTWVT_GET( pGT ); - if( pWVT && pWVT->qWnd ) - { - QRect rect; - /* Fill in values */ - rect.setTop( iRow ); - rect.setBottom( iRow ); - rect.setLeft( iCol ); - rect.setRight( iCol + iSize - 1 ); - /* convert in pixel coordinates */ - rect = hb_gt_wvt_QGetXYFromColRowRect( pWVT, rect ); - /* Schedule a Repaint Event */ - pWVT->qWnd->_drawingArea->redrawBuffer( rect ); - pWVT->qWnd->_drawingArea->update( rect ); - } -} - -/* ********************************************************************** */ - -static void hb_gt_wvt_Refresh( PHB_GT pGT ) -{ - PHB_GTWVT pWVT; - - HB_TRACE( HB_TR_DEBUG, ("hb_gt_wvt_Refresh(%p)", pGT) ); - - HB_GTSUPER_REFRESH( pGT ); - - pWVT = HB_GTWVT_GET( pGT ); - if( pWVT ) - { - if( !pWVT->fInit ) - { - pWVT->fInit = HB_TRUE; - - #if 1 - hb_gt_wvt_CreateConsoleWindow( pWVT ); - #endif - - if( pWVT->CenterWindow ) - { - hb_gt_wvt_QCenterWindow( pWVT ); - } - pWVT->qWnd->setFocus(); -// pWVT->qWnd->_drawingArea->setFocus(); - pWVT->qWnd->show(); - pWVT->qWnd->update(); - pWVT->qWnd->_drawingArea->setFocus(); - } - hb_gt_wvt_QUpdateCaret( pWVT ); - } -} - -/* ********************************************************************** */ - -static HB_BOOL hb_gt_wvt_SetMode( PHB_GT pGT, int iRow, int iCol ) -{ - PHB_GTWVT pWVT; - bool fResult = HB_FALSE; - - HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_SetMode(%p,%d,%d)", pGT, iRow, iCol ) ); - - pWVT = HB_GTWVT_GET( pGT ); - - if( iRow <= WVT_MAX_ROWS && iCol <= WVT_MAX_COLS ) - { - if( pWVT->qWnd ) /* Is the window already open */ - { - /* - * make sure that the mode selected along with the current - * font settings will fit in the window - */ - fResult = hb_gt_wvt_QInitWindow( pWVT, iRow, iCol ); - if( pWVT->CenterWindow ) - { - hb_gt_wvt_QCenterWindow( pWVT ); - } - HB_GTSELF_REFRESH( pGT ); - } - } - return fResult; -} - -/* ********************************************************************** */ - -static const char * hb_gt_wvt_Version( PHB_GT pGT, int iType ) -{ - HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Version(%p,%d)", pGT, iType ) ); - - HB_SYMBOL_UNUSED( pGT ); - - if( iType == 0 ) - return HB_GT_DRVNAME( HB_GT_NAME ); - - return "Harbour Terminal: Multi-Platform QT based GUI console (QTC)"; -} - -/* ********************************************************************** */ - -static int hb_gt_wvt_ReadKey( PHB_GT pGT, int iEventMask ) -{ - PHB_GTWVT pWVT; - int c = 0; - bool fKey = HB_FALSE; - - //HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_ReadKey(%p,%d)", pGT, iEventMask ) ); - HB_SYMBOL_UNUSED( iEventMask ); /* we ignore the eventmask! */ - - pWVT = HB_GTWVT_GET( pGT ); - if( pWVT ) - { - if( pWVT->qEventLoop ) /* Is the window already open */ - { - pWVT->qEventLoop->processEvents( QEventLoop::AllEvents ); - hb_releaseCPU(); - } - else - { - QApplication::processEvents( QEventLoop::AllEvents ); - hb_releaseCPU(); - } - fKey = hb_gt_wvt_GetCharFromInputQueue( pWVT, &c ); - } - return fKey ? c : 0; -} - -/* ********************************************************************** */ -/* dDuration is in 'Ticks' (18.2 per second) */ -static void hb_gt_wvt_Tone( PHB_GT pGT, double dFrequency, double dDuration ) -{ - HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_Tone(%p,%lf,%lf)", pGT, dFrequency, dDuration)); - - HB_SYMBOL_UNUSED( pGT ); - HB_SYMBOL_UNUSED( dFrequency ); - HB_SYMBOL_UNUSED( dDuration ); - - /* Not exactly what this function is supposed to do, but ... */ - QApplication::beep(); -} - -/* ********************************************************************** */ - -static HB_BOOL hb_gt_wvt_mouse_IsPresent( PHB_GT pGT ) -{ - HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_mouse_IsPresent(%p)", pGT)); - - HB_SYMBOL_UNUSED( pGT ); - - return HB_TRUE; -} - -static void hb_gt_wvt_mouse_GetPos( PHB_GT pGT, int * piRow, int * piCol ) -{ - PHB_GTWVT pWVT; - - HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_mouse_GetPos(%p,%p,%p)", pGT, piRow, piCol)); - - pWVT = HB_GTWVT_GET( pGT ); - *piRow = pWVT->MousePos.y(); - *piCol = pWVT->MousePos.x(); -} - -static HB_BOOL hb_gt_wvt_mouse_ButtonState( PHB_GT pGT, int iButton ) -{ - HB_SYMBOL_UNUSED( iButton ); - HB_TRACE( HB_TR_DEBUG, ("hb_gt_wvt_mouse_ButtonState(%p,%i)", pGT, iButton) ); - - HB_SYMBOL_UNUSED( pGT ); - - switch( iButton ) - { - case 0: - return ( QApplication::mouseButtons() & Qt::LeftButton ); - case 1: - return ( QApplication::mouseButtons() & Qt::RightButton ); - case 2: - return ( QApplication::mouseButtons() & Qt::MidButton ); - } - return HB_FALSE; -} - -static int hb_gt_wvt_mouse_CountButton( PHB_GT pGT ) -{ - HB_TRACE( HB_TR_DEBUG, ("hb_gt_wvt_mouse_CountButton(%p)", pGT) ); - - HB_SYMBOL_UNUSED( pGT ); - - //return GetSystemMetrics( SM_CMOUSEBUTTONS ); - return 2; -} - -/* ********************************************************************** */ - -static HB_BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo ) -{ - PHB_GTWVT pWVT; - int iVal; - - HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Info(%p,%d,%p)", pGT, iType, pInfo ) ); - - pWVT = HB_GTWVT_GET( pGT ); - - switch( iType ) - { - case HB_GTI_FULLSCREEN: - case HB_GTI_KBDSUPPORT: - case HB_GTI_ISGRAPHIC: - pInfo->pResult = hb_itemPutL( pInfo->pResult, HB_TRUE ); - break; - - case HB_GTI_ISUNICODE: - pInfo->pResult = hb_itemPutL( pInfo->pResult, HB_TRUE ); - break; -#if 0 - case HB_GTI_INPUTFD: - pInfo->pResult = hb_itemPutNInt( pInfo->pResult, - ( HB_PTRDIFF ) GetStdHandle( STD_INPUT_HANDLE ) ); - break; - - case HB_GTI_OUTPUTFD: - pInfo->pResult = hb_itemPutNInt( pInfo->pResult, - ( HB_PTRDIFF ) GetStdHandle( STD_OUTPUT_HANDLE ) ); - break; - - case HB_GTI_ERRORFD: - pInfo->pResult = hb_itemPutNInt( pInfo->pResult, - ( HB_PTRDIFF ) GetStdHandle( STD_ERROR_HANDLE ) ); - break; -#endif - case HB_GTI_FONTSIZE: - pInfo->pResult = hb_itemPutNI( pInfo->pResult, pWVT->PTEXTSIZE.y() ); - iVal = hb_itemGetNI( pInfo->pNewVal ); - if( iVal > 0 ) - { - pWVT->fontHeight = iVal; - if( pWVT->qWnd ) - { - hb_gt_wvt_QResetWindowSize( pWVT ); - HB_GTSELF_REFRESH( pGT ); - } - } - break; - - case HB_GTI_FONTWIDTH: - pInfo->pResult = hb_itemPutNI( pInfo->pResult, pWVT->PTEXTSIZE.x() ); - iVal = hb_itemGetNI( pInfo->pNewVal ); - if( iVal > 0 ) - { - /* store font status for next operation on fontsize */ - pWVT->fontWidth = iVal; - } - break; - - case HB_GTI_FONTNAME: - pInfo->pResult = hb_itemPutC( pInfo->pResult, pWVT->fontFace ); - if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING ) /* TODO */ - hb_strncpy( pWVT->fontFace, hb_itemGetCPtr( pInfo->pNewVal ), sizeof( pWVT->fontFace ) - 1 ); - break; - - case HB_GTI_FONTWEIGHT: - pInfo->pResult = hb_itemPutNI( pInfo->pResult, pWVT->fontWeight ); - if( hb_itemType( pInfo->pNewVal ) & HB_IT_NUMERIC ) - pWVT->fontWeight = hb_itemGetNI( pInfo->pNewVal ); - break; - - case HB_GTI_FONTQUALITY: - pInfo->pResult = hb_itemPutNI( pInfo->pResult, pWVT->fontQuality ); - if( hb_itemType( pInfo->pNewVal ) & HB_IT_NUMERIC ) - pWVT->fontQuality = hb_itemGetNI( pInfo->pNewVal ) ; - break; - - case HB_GTI_SCREENHEIGHT: - pInfo->pResult = hb_itemPutNI( pInfo->pResult, pWVT->PTEXTSIZE.y() * pWVT->ROWS ); - iVal = hb_itemGetNI( pInfo->pNewVal ); - if( iVal > 0 ) - { - HB_GTSELF_SETMODE( pGT, ( HB_USHORT ) ( iVal / pWVT->PTEXTSIZE.y() ), pWVT->COLS ); - } - break; - - case HB_GTI_SCREENWIDTH: - pInfo->pResult = hb_itemPutNI( pInfo->pResult, pWVT->PTEXTSIZE.x() * pWVT->COLS ); - iVal = hb_itemGetNI( pInfo->pNewVal ); - if( iVal > 0 ) - { - HB_GTSELF_SETMODE( pGT, pWVT->ROWS, ( HB_USHORT ) ( iVal / pWVT->PTEXTSIZE.x() ) ); - } - break; - - case HB_GTI_DESKTOPWIDTH: - { - QDesktopWidget *qDesk = new QDesktopWidget(); - pInfo->pResult = hb_itemPutNI( pInfo->pResult, qDesk->width() ); - break; - } - case HB_GTI_DESKTOPHEIGHT: - { - QDesktopWidget *qDesk = new QDesktopWidget(); - pInfo->pResult = hb_itemPutNI( pInfo->pResult, qDesk->height() ); - break; - } - case HB_GTI_DESKTOPCOLS: - { - QDesktopWidget *qDesk = new QDesktopWidget(); - pInfo->pResult = hb_itemPutNI( pInfo->pResult, qDesk->width() / pWVT->PTEXTSIZE.x() ); - break; - } - case HB_GTI_DESKTOPROWS: - { - QDesktopWidget *qDesk = new QDesktopWidget(); - pInfo->pResult = hb_itemPutNI( pInfo->pResult, qDesk->height() / pWVT->PTEXTSIZE.y() ); - break; - } - case HB_GTI_WINTITLE: - if( pWVT->qWnd ) - { - pInfo->pResult = hb_itemPutStrUTF8( pInfo->pResult, pWVT->qWnd->windowTitle().toUtf8().data() ); - if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING ) - { - void * pText01 = NULL; - pWVT->qWnd->setWindowTitle( hb_itemGetStrUTF8( pInfo->pNewVal, &pText01, NULL ) ); - hb_strfree( pText01 ); - } - } - break; - - case HB_GTI_ICONFILE: - if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING ) - { - if( pWVT->qWnd ) - pWVT->qWnd->setWindowIcon( QIcon( QString( hb_itemGetCPtr( pInfo->pNewVal ) ) ) ); - } - break; - - case HB_GTI_VIEWMAXWIDTH: - pInfo->pResult = hb_itemPutNI( pInfo->pResult, pWVT->COLS ); - break; - - case HB_GTI_VIEWMAXHEIGHT: - pInfo->pResult = hb_itemPutNI( pInfo->pResult, pWVT->ROWS ); - break; - - case HB_GTI_KBDSHIFTS: - pInfo->pResult = hb_itemPutNI( pInfo->pResult, hb_gt_wvt_getKbdState() ); - if( hb_itemType( pInfo->pNewVal ) & HB_IT_NUMERIC ) - // hb_gt_wvt_setKbdState( hb_itemGetNI( pInfo->pNewVal ) ); - break; - - case HB_GTI_CURSORBLINKRATE: - pInfo->pResult = hb_itemPutNI( pInfo->pResult, QApplication::cursorFlashTime() ); - if( hb_itemType( pInfo->pNewVal ) & HB_IT_NUMERIC ) - { - QApplication::setCursorFlashTime( hb_itemGetNI( pInfo->pNewVal ) ); - } - break; - - case HB_GTI_CLIPBOARDDATA: - if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING ) - { - QClipboard *cb = QApplication::clipboard(); - cb->setText( QString( hb_itemGetCPtr( pInfo->pNewVal ) ) ); - } - else - { - QClipboard *cb = QApplication::clipboard(); - pInfo->pResult = hb_itemPutC( pInfo->pResult, cb->text().toLatin1().data() ); - } - - break; - - case HB_GTI_SCREENSIZE: - int iX, iY; - - if( !pInfo->pResult ) - { - pInfo->pResult = hb_itemNew( NULL ); - } - hb_arrayNew( pInfo->pResult, 2 ); - hb_arraySetNI( pInfo->pResult, 2, pWVT->PTEXTSIZE.y() * pWVT->ROWS ); - hb_arraySetNI( pInfo->pResult, 1, pWVT->PTEXTSIZE.x() * pWVT->COLS ); - iY = hb_arrayGetNI( pInfo->pNewVal,2 ); - iX = hb_arrayGetNI( pInfo->pNewVal,1 ); - - if( iY > 0 ) - { - bool bOldCentre = pWVT->CenterWindow; - pWVT->CenterWindow = pWVT->bMaximized ? HB_TRUE : HB_FALSE; - HB_GTSELF_SETMODE( pGT, ( HB_USHORT ) ( iY / pWVT->PTEXTSIZE.y() ), ( HB_USHORT ) ( iX / pWVT->PTEXTSIZE.x() ) ); - pWVT->CenterWindow = bOldCentre; - } - break; - - case HB_GTI_RESIZABLE: - pInfo->pResult = hb_itemPutL( pInfo->pResult, pWVT->bResizable ); - if( pInfo->pNewVal ) - { - bool bNewValue = hb_itemGetL( pInfo->pNewVal ); - if( bNewValue != pWVT->bResizable ) - { - pWVT->bResizable = bNewValue; - if( pWVT->qWnd ) - { - Qt::WindowFlags flags = pWVT->qWnd->windowFlags(); - if( pWVT->bResizable ) - { - flags = flags | Qt::WindowMaximizeButtonHint; - pWVT->qWnd->setMinimumWidth( 0 ); - pWVT->qWnd->setMaximumWidth( QDesktopWidget().width() ); - pWVT->qWnd->setMinimumHeight( 50 ); - pWVT->qWnd->setMaximumHeight( QDesktopWidget().height() ); - } - else - { - flags = flags &~ Qt::WindowMaximizeButtonHint; - pWVT->qWnd->setMinimumWidth( pWVT->qWnd->width() ); - pWVT->qWnd->setMaximumWidth( pWVT->qWnd->width() ); - pWVT->qWnd->setMinimumHeight( pWVT->qWnd->height() ); - pWVT->qWnd->setMaximumHeight( pWVT->qWnd->height() ); - } - hb_gt_wvt_SetWindowFlags( pWVT, flags ); - } - } - } - break; - - case HB_GTI_SELECTCOPY: - pInfo->pResult = hb_itemPutL( pInfo->pResult, pWVT->bSelectCopy ); - - if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING ) - { - pInfo->pResult = hb_itemPutC( pInfo->pResult, pWVT->pszSelectCopy ); - if( hb_itemGetCLen( pInfo->pNewVal ) ) - { - #if 0 - HMENU hSysMenu = pWVT->hWnd ? GetSystemMenu( pWVT->hWnd, HB_FALSE ) : NULL; - if( hSysMenu || !pWVT->hWnd ) - { - if( pWVT->pszSelectCopy ) - hb_xfree( pWVT->pszSelectCopy ); - pWVT->pszSelectCopy = hb_strdup( hb_itemGetCPtr( pInfo->pNewVal ) ); - pWVT->bSelectCopy = HB_TRUE; - } - #endif - pWVT->pszSelectCopy = hb_strdup( hb_itemGetCPtr( pInfo->pNewVal ) ); - pWVT->bSelectCopy = HB_TRUE; - } - } - else if( pInfo->pNewVal ) - { - bool bNewValue = hb_itemGetL( pInfo->pNewVal ); - if( bNewValue != pWVT->bSelectCopy ) - { - if( pWVT->qWnd ) - { - #if 0 - HMENU hSysMenu = GetSystemMenu( pWVT->hWnd, HB_FALSE ); - if( hSysMenu ) - { - EnableMenuItem( hSysMenu, SYS_EV_MARK, MF_BYCOMMAND | ( bNewValue ? MF_ENABLED : MF_GRAYED ) ); - pWVT->bSelectCopy = bNewValue; - } - #endif - pWVT->bSelectCopy = bNewValue; - } - else - pWVT->bSelectCopy = bNewValue; - } - } - break; - - case HB_GTI_CLOSABLE: - pInfo->pResult = hb_itemPutL( pInfo->pResult, pWVT->bClosable ); - if( pInfo->pNewVal ) - { - bool bNewValue = hb_itemGetL( pInfo->pNewVal ); - if( bNewValue != pWVT->bClosable ) - { - pWVT->bClosable = bNewValue; - if( pWVT->qWnd ) - { - Qt::WindowFlags flags = pWVT->qWnd->windowFlags(); - if( pWVT->bClosable ) - flags |= Qt::WindowCloseButtonHint; - else - flags = flags &~ Qt::WindowCloseButtonHint; - - hb_gt_wvt_SetWindowFlags( pWVT, flags ); - } - } - } - break; - - case HB_GTI_PALETTE: - if( hb_itemType( pInfo->pNewVal ) & HB_IT_NUMERIC ) - { - int iIndex = hb_itemGetNI( pInfo->pNewVal ); - if( iIndex >= 0 && iIndex < 16 ) - { - pInfo->pResult = hb_itemPutNL( pInfo->pResult, pWVT->qWnd->_drawingArea->_COLORS[ iIndex ] ); - if( hb_itemType( pInfo->pNewVal2 ) & HB_IT_NUMERIC ) - { - if( pWVT->qWnd ) - { - pWVT->qWnd->_drawingArea->_COLORS[ iIndex ] = hb_itemGetNL( pInfo->pNewVal2 ); - HB_GTSELF_EXPOSEAREA( pWVT->pGT, 0, 0, pWVT->ROWS, pWVT->COLS ); - } - } - } - } - else - { - int i; - if( !pInfo->pResult ) - { - pInfo->pResult = hb_itemNew( NULL ); - } - hb_arrayNew( pInfo->pResult, 16 ); - for( i = 0; i < 16; i++ ) - { - hb_arraySetNL( pInfo->pResult, i + 1, pWVT->qWnd->_drawingArea->_COLORS[ i ] ); - } - if( hb_itemType( pInfo->pNewVal ) & HB_IT_ARRAY ) - { - if( hb_arrayLen( pInfo->pNewVal ) == 16 ) - { - for( i = 0; i < 16; i++ ) - { - pWVT->qWnd->_drawingArea->_COLORS[ i ] = hb_arrayGetNL( pInfo->pNewVal, i + 1 ); - } - if( pWVT->qWnd ) - HB_GTSELF_EXPOSEAREA( pWVT->pGT, 0, 0, pWVT->ROWS, pWVT->COLS ); - } - } - } - break; - - case HB_GTI_RESIZEMODE: - pInfo->pResult = hb_itemPutNI( pInfo->pResult, pWVT->ResizeMode ); - if( hb_itemType( pInfo->pNewVal ) & HB_IT_NUMERIC ) - { - pWVT->ResizeMode = hb_itemGetNI( pInfo->pNewVal ); - } - break; - - case HB_GTI_SETPOS_XY: - case HB_GTI_SETPOS_ROWCOL: - if( pWVT->qWnd && ( hb_itemType( pInfo->pNewVal ) & HB_IT_NUMERIC ) && - ( hb_itemType( pInfo->pNewVal2 ) & HB_IT_NUMERIC ) ) - { - int x, y; - - if( iType == HB_GTI_SETPOS_ROWCOL ) - { - y = hb_itemGetNI( pInfo->pNewVal ) * pWVT->PTEXTSIZE.y(); - x = hb_itemGetNI( pInfo->pNewVal2 ) * pWVT->PTEXTSIZE.x(); - } - else - { - x = hb_itemGetNI( pInfo->pNewVal ); - y = hb_itemGetNI( pInfo->pNewVal2 ); - } - pWVT->qWnd->move( x,y ); - } - break; - - case HB_GTI_WIDGET: - { - PHB_ITEM pItem = hbqt_bindGetHbObject( NULL, pWVT->qWnd, "HB_QMAINWINDOW", NULL, HBQT_BIT_QOBJECT ); - pInfo->pResult = hb_itemNew( pItem ); - hb_itemRelease( pItem ); - } - break; - - case HB_GTI_DRAWINGAREA: - { - PHB_ITEM pItem = hbqt_bindGetHbObject( NULL, pWVT->qWnd->_drawingArea, "HB_QWIDGET", NULL, HBQT_BIT_QOBJECT ); - pInfo->pResult = hb_itemNew( pItem ); - hb_itemRelease( pItem ); - } - break; - - case HB_GTI_EVENTLOOP: - - break; - - default: - return HB_GTSUPER_INFO( pGT, iType, pInfo ); - } - - return HB_TRUE; -} - -/* ********************************************************************** */ - -static HB_BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable ) -{ - HB_TRACE(HB_TR_DEBUG, ("hb_gt_FuncInit(%p)", pFuncTable)); - - pFuncTable->Init = hb_gt_wvt_Init; - pFuncTable->Exit = hb_gt_wvt_Exit; - pFuncTable->SetMode = hb_gt_wvt_SetMode; - pFuncTable->Redraw = hb_gt_wvt_Redraw; - pFuncTable->Refresh = hb_gt_wvt_Refresh; - pFuncTable->Version = hb_gt_wvt_Version; - pFuncTable->Tone = hb_gt_wvt_Tone; - pFuncTable->Info = hb_gt_wvt_Info; - pFuncTable->ReadKey = hb_gt_wvt_ReadKey; - - pFuncTable->MouseIsPresent = hb_gt_wvt_mouse_IsPresent; - pFuncTable->MouseGetPos = hb_gt_wvt_mouse_GetPos; - pFuncTable->MouseButtonState = hb_gt_wvt_mouse_ButtonState; - pFuncTable->MouseCountButton = hb_gt_wvt_mouse_CountButton; - - return HB_TRUE; -} - -/* ********************************************************************** */ - -static const HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), - hb_gt_FuncInit, - HB_GTSUPER, - HB_GTID_PTR }; - -HB_GT_ANNOUNCE( HB_GT_NAME ) - -HB_CALL_ON_STARTUP_BEGIN( _hb_startup_gt_Init_ ) - hb_gtRegister( >Init ); -HB_CALL_ON_STARTUP_END( _hb_startup_gt_Init_ ) - -#if defined( HB_PRAGMA_STARTUP ) - #pragma startup _hb_startup_gt_Init_ -#elif defined( HB_MSC_STARTUP ) - #if defined( HB_OS_WIN_64 ) - #pragma section( HB_MSC_START_SEGMENT, long, read ) - #endif - #pragma data_seg( HB_MSC_START_SEGMENT ) - static HB_$INITSYM hb_vm_auto__hb_startup_gt_Init_ = _hb_startup_gt_Init_; - #pragma data_seg() -#endif - -/* ********************************************************************** */ - -DrawingArea::DrawingArea( QWidget *parent ) - : QWidget( parent ) -{ - setAttribute( Qt::WA_StaticContents ); - setAttribute( Qt::WA_PaintOnScreen ); - - _COLORS[ 0] = BLACK; - _COLORS[ 1] = BLUE; - _COLORS[ 2] = GREEN; - _COLORS[ 3] = CYAN; - _COLORS[ 4] = RED; - _COLORS[ 5] = MAGENTA; - _COLORS[ 6] = BROWN; - _COLORS[ 7] = WHITE; - _COLORS[ 8] = LIGHT_GRAY; - _COLORS[ 9] = BRIGHT_BLUE; - _COLORS[10] = BRIGHT_GREEN; - _COLORS[11] = BRIGHT_CYAN; - _COLORS[12] = BRIGHT_RED; - _COLORS[13] = BRIGHT_MAGENTA; - _COLORS[14] = YELLOW; - _COLORS[15] = BRIGHT_WHITE; - - _iROWS = 25; - _iCOLS = 80; - - setFocusPolicy( Qt::StrongFocus ); - setMouseTracking( HB_TRUE ); - - setAttribute( Qt::WA_InputMethodEnabled, true ); - - /* Important but give it a thought */ - //setAttribute(Qt::WA_OpaquePaintEvent); - - _bCaretOn = HB_TRUE; - _bBlinking = HB_FALSE; - _basicTimer = new QBasicTimer(); - - _bFirst = HB_TRUE; - _bSizing = HB_FALSE; - _bCopying = HB_FALSE; - - _image = new QImage(); - - _crtLastRow = 0; - _crtLastCol = 0; - - _rCopying.setRect( -1, -1, -1, -1 ); -} - -void DrawingArea::copyTextOnClipboard( void ) -{ - PHB_GTWVT pWVT = HB_GTWVT_GET( pGT ); - - QRect rectRC = hb_gt_wvt_QGetColRowFromXYRect( pWVT, _rCopying ); - QRect rectXY = hb_gt_wvt_QGetXYFromColRowRect( pWVT, rectRC ); - - repaint( rectXY ); - - /* Post to Clipboard */ - int left = rectRC.left(); - int top = rectRC.top(); - int right = rectRC.right(); - int bottom = rectRC.bottom(); - - HB_ULONG ulSize = ( ( bottom - top + 1 ) * ( right - left + 1 + 2 ) ); - char * sBuffer = ( char * ) hb_xgrab( ulSize + 1 ); - - int j, irow, icol; - for( j = 0, irow = top; irow <= bottom; irow++ ) - { - for( icol = left; icol <= right; icol++ ) - { - int iColor; - HB_BYTE bAttr; - HB_USHORT usChar; - - if( !HB_GTSELF_GETSCRCHAR( pWVT->pGT, irow, icol, &iColor, &bAttr, &usChar ) ) - break; - - sBuffer[ j++ ] = ( char ) usChar; - } - - sBuffer[ j++ ] = '\r'; - sBuffer[ j++ ] = '\n'; - } - sBuffer[ j ] = '\0'; - - if( j > 0 ) - { - QClipboard *cb = QApplication::clipboard(); - cb->setText( QString( sBuffer ) ); - } - hb_xfree( sBuffer ); - - _rCopying.setRect( -1, -1, -1, -1 ); - _rCopyingP.setRect( -1, -1, -1, -1 ); -} - -void DrawingArea::paintCopyOperation( void ) -{ - if( _rCopying.left() == -1 ) - return; - - PHB_GTWVT pWVT = HB_GTWVT_GET( pGT ); - QRect rect; - - if( _rCopying.right() < _rCopyingP.right() || _rCopying.bottom() < _rCopyingP.bottom() ) - { - _bCopying = false; - rect = hb_gt_wvt_QGetColRowFromXYRect( pWVT, _rCopyingP ); - rect = hb_gt_wvt_QGetXYFromColRowRect( pWVT, rect ); - repaint( rect ); - _bCopying = true; - } - rect = hb_gt_wvt_QGetColRowFromXYRect( pWVT, _rCopying ); - rect = hb_gt_wvt_QGetXYFromColRowRect( pWVT, rect ); - repaint( rect ); - - _rCopyingP.setRight( _rCopying.right() ); - _rCopyingP.setBottom( _rCopying.bottom() ); -} - -void DrawingArea::redrawBuffer( const QRect & rect ) -{ - PHB_GTWVT pWVT = HB_GTWVT_GET( pGT ); - QPainter painter( _image ); - QFont font( _qFont, painter.device() ); - painter.setFont( font ); - painter.setBackgroundMode( Qt::OpaqueMode ); - - HB_USHORT usChar; - HB_BYTE bAttr, bOldAttr = 0; - int iCol, iRow, len, iTop, startCol; - int bColor, bOldColor = 0; - char text[ WVT_MAX_COLS ]; - QRect rcRect = hb_gt_wvt_QGetColRowFromXYRect( pWVT, rect ); - - for( iRow = rcRect.top(); iRow <= rcRect.bottom(); ++iRow ) - { - iCol = startCol = rcRect.left(); - len = 0; - iTop = ( iRow * _fontHeight ) + _fontAscent; - text[0] = '\0'; - - while( iCol <= rcRect.right() ) - { - if( !HB_GTSELF_GETSCRCHAR( pGT, iRow, iCol, &bColor, &bAttr, &usChar ) ) - break; - - usChar = hb_cdpGetU16Ctrl( usChar ); -#if 1 - if( bAttr & HB_GT_ATTR_BOX ) - { - drawBoxCharacter( &painter, usChar, bColor, iCol * _fontWidth, iRow * _fontHeight ); - } - /* Hack to let it know if character is a Line character */ - else if( usChar >= 170 && usChar <= 223 ) - { - drawBoxCharacter( &painter, usChar, bColor, iCol * _fontWidth, iRow * _fontHeight ); - bAttr = HB_GT_ATTR_BOX; - } -#endif - if( len == 0 ) - { - bOldAttr = bAttr; - bOldColor = bColor; - } - else if( bColor != bOldColor || bAttr != bOldAttr ) - { - text[ len ] = '\0'; - if( ! bOldAttr & HB_GT_ATTR_BOX ) - { - painter.setPen( QPen( _COLORS[ bOldColor & 0x0F ] ) ); - painter.setBackground( QBrush( _COLORS[ bOldColor >> 4 ] ) ); - painter.drawText( QPoint( startCol * _fontWidth, iTop ), QString( text ) ); - } - bOldColor = bColor; - bOldAttr = bAttr; - startCol = iCol; - len = 0; - } - text[ len++ ] = ( char ) usChar; - iCol++; - } - if( len > 0 ) - { - text[ len ] = '\0'; - if( ! bOldAttr & HB_GT_ATTR_BOX ) - { - painter.setPen( QPen( _COLORS[ bOldColor & 0x0F ] ) ); - painter.setBackground( QBrush( _COLORS[ bOldColor >> 4 ] ) ); - painter.drawText( QPoint( startCol * _fontWidth, iTop ), QString( text ) ); - } - } - } -} - -void DrawingArea::paintEvent( QPaintEvent * event ) -{ - QPainter painter( this ); - - if( _bCopying ) - { - _image->invertPixels(); - painter.drawImage( event->rect(), *_image, event->rect() ); - _image->invertPixels(); - } - else - { - painter.drawImage( event->rect(), *_image, event->rect() ); - } -} - -bool DrawingArea::createCaret( int iWidth, int iHeight ) -{ - _crtWidth = iWidth; - _crtHeight = iHeight; -//HB_TRACE( HB_TR_DEBUG, ( "bool DrawingArea::createCaret() %i %i %i %i", _crtLastRow, _crtLastCol, iWidth, iHeight ) ); - _bCaretOn = HB_TRUE; - _bBlinking = HB_FALSE; - displayCell( _crtLastRow, _crtLastCol ); - displayBlock( _crtLastRow, _crtLastCol ); - if( ! _basicTimer->isActive() ) - { - _basicTimer->start( 500, this ); - } - return( HB_TRUE ); -} -void DrawingArea::hideCaret( void ) -{ -//HB_TRACE( HB_TR_DEBUG, ( "bool DrawingArea::hideCaret() %i %i", _crtLastRow, _crtLastCol ) ); - _bCaretOn = HB_FALSE; - displayCell( _crtLastRow, _crtLastCol ); -} -void DrawingArea::showCaret( void ) -{ -//HB_TRACE( HB_TR_DEBUG, ( "bool DrawingArea::showCaret() %i %i", _crtLastRow, _crtLastCol ) ); - if( ! _basicTimer->isActive() ) - { - _basicTimer->start( 500, this ); - } - displayBlock( _crtLastRow, _crtLastCol ); - _bCaretOn = HB_TRUE; -} -void DrawingArea::destroyCaret( void ) -{ - _basicTimer->stop(); - _bCaretOn = HB_FALSE; - displayCell( _crtLastRow, _crtLastCol ); -//HB_TRACE( HB_TR_DEBUG, ( "void DrawingArea::destroyCaret( void )" ) ); -} -void DrawingArea::setCaretPos( int iCol, int iRow ) -{ - _crtLastCol = iCol; - _crtLastRow = iRow; -} -void DrawingArea::displayCell( int iRow, int iCol ) -{ - QPainter painter( _image ); - painter.setBackgroundMode( Qt::OpaqueMode ); - QFont font( _qFont, painter.device() ); - painter.setFont( font ); - - HB_USHORT usChar; - HB_BYTE bAttr; - int bColor = 0; - - if( HB_GTSELF_GETSCRCHAR( pGT, iRow, iCol, &bColor, &bAttr, &usChar ) ) - { - usChar = hb_cdpGetU16Ctrl( usChar ); - - painter.setPen( QPen( _COLORS[ bColor & 0x0F ] ) ); - painter.setBackground( QBrush( _COLORS[ bColor >> 4 ] ) ); - painter.drawText( QPoint( iCol * _fontWidth, ( iRow * _fontHeight ) + _fontAscent ), QString( usChar ) ); - } - /* We need immediate painting */ - repaint( QRect( iCol * _fontWidth, iRow * _fontHeight, _fontWidth, _fontHeight ) ); -} -void DrawingArea::displayBlock( int iRow, int iCol ) -{ - QPainter painter( _image ); - #if 0 - painter.fillRect( QRect( iCol*_fontWidth, iRow * _fontHeight + ( _fontHeight - _crtHeight ), - _fontWidth, _crtHeight ), qRgb( 255,255,255 ) ); - #else - painter.setCompositionMode( QPainter::RasterOp_SourceXorDestination ); - painter.fillRect( QRect( iCol*_fontWidth, iRow*_fontHeight+(_fontHeight-_crtHeight), - _fontWidth, _crtHeight ), QBrush( qRgb( 255,255,255 ) ) ); - #endif - /* We need immediate painting */ - repaint( QRect( iCol * _fontWidth, iRow * _fontHeight, _fontWidth, _fontHeight ) ); -} -void DrawingArea::timerEvent( QTimerEvent *event ) -{ - if( event->timerId() == _basicTimer->timerId() ) - { - if( _bCaretOn ) - { - if( _bBlinking ) - { - _bBlinking = HB_FALSE; - displayCell( _crtLastRow, _crtLastCol ); - } - else - { - _bBlinking = HB_TRUE; - displayBlock( _crtLastRow, _crtLastCol ); - } - } - } - else - { - QWidget::timerEvent( event ); - } -} - -void DrawingArea::resetWindowSize( void ) -{ - PHB_GTWVT pWVT = HB_GTWVT_GET( pGT ); - - QPainter painter( this ); - - _iROWS = pWVT->ROWS; - _iCOLS = pWVT->COLS; - - _qFont = QFont(); - _qFont.setFamily( pWVT->fontFace ); - _qFont.setPixelSize( pWVT->fontHeight ); - _qFont.setFixedPitch( HB_TRUE ); - _qFont = QFont( _qFont, painter.device() ); - QFontMetrics fontMetrics( _qFont ); - _fontHeight = fontMetrics.height(); - _fontWidth = fontMetrics.averageCharWidth(); - _fontAscent = fontMetrics.ascent(); - _wndWidth = _fontWidth * _iCOLS; - _wndHeight = _fontHeight * _iROWS; - - pWVT->PTEXTSIZE.setX( _fontWidth ); - pWVT->PTEXTSIZE.setY( _fontHeight ); - - pWVT->fontWidth = _fontWidth; - pWVT->fontHeight = _fontHeight; - - resizeImage( QSize( _wndWidth, _wndHeight ) ); - _image->fill( qRgb( 198,198,198 ) ); - setFont( _qFont ); - setFocus( Qt::OtherFocusReason ); - update(); -} - -void DrawingArea::resizeImage( const QSize &newSize ) -{ - if( _image->size() == newSize ) - return; - - QImage *newImage = new QImage( newSize, QImage::Format_RGB32 ); - newImage->fill( qRgb( 255, 255, 255 ) ); - QPainter painter( newImage ); - painter.drawImage( QPoint( 0,0 ), *_image ); - /* Cleanup Memory */ - _image->~QImage(); - /* Assign new image */ - _image = newImage; -} - -void DrawingArea::resizeEvent( QResizeEvent *event ) -{ - PHB_GTWVT pWVT = HB_GTWVT_GET( pGT ); - - _bSizing = HB_TRUE; - - int iW = width(); - int iH = height(); - - if( _bFirst ) - { - _bFirst = HB_FALSE; - QWidget::resizeEvent( event ); - } - else - { - if( _wndWidth != iW || _wndHeight != iH ) - { - if( pWVT->ResizeMode == HB_GTI_RESIZEMODE_ROWS ) - { - int iRows = iH / _fontHeight; - int iCols = iW / _fontWidth; - _wndWidth = _fontWidth * iCols; - _wndHeight = _fontHeight * iRows; - - if( hb_gt_wvt_QSetWindowSize( pWVT, iRows, iCols ) ) - { - hb_gt_wvt_AddCharToInputQueue( pWVT, HB_K_RESIZE ); - hb_gt_wvt_FireEvent( pWVT, HB_GTE_RESIZED ); - resizeImage( QSize( _wndWidth, _wndHeight ) ); - redrawBuffer( _image->rect() ); - } - } - else - { - int iFH = iH / ( _iROWS ); - int iStr = _qFont.stretch(); - int fac = iStr + ( ( iW - _wndWidth ) / _iCOLS ); - - QFontMetrics fmm( _qFont ); - - QPainter painter( this ); - _qFont = QFont( _qFont, painter.device() ); - _qFont.setPointSize( 0 ); - _qFont.setPixelSize( iFH-3 ); /* 3 in cases this is not the exact value but still... */ - _qFont.setStretch( fac ); - QFontMetrics fm( _qFont ); - _fontHeight = fm.height(); - _fontWidth = fm.averageCharWidth(); - _fontAscent = fm.ascent(); - _wndWidth = _fontWidth * _iCOLS; - _wndHeight = _fontHeight * _iROWS; - - pWVT->PTEXTSIZE.setX( _fontWidth ); - pWVT->PTEXTSIZE.setY( _fontHeight ); - - pWVT->fontWidth = _fontWidth; - pWVT->fontHeight = _fontHeight; - - resizeImage( QSize( _wndWidth, _wndHeight ) ); - redrawBuffer( _image->rect() ); - hb_gt_wvt_FireEvent( pWVT, HB_GTE_RESIZED ); - } - } - else - { - QWidget::resizeEvent( event ); - } - } -} - -void DrawingArea::moveEvent( QMoveEvent *event ) -{ - QWidget::moveEvent( event ); -} - -void DrawingArea::focusInEvent( QFocusEvent *event ) -{ - PHB_GTWVT pWVT = HB_GTWVT_GET( pGT ); - hb_gt_wvt_QUpdateCaret( pWVT ); - /* We can fire this event but cannot fire OUT event, message loop gets confused */ - //hb_gt_wvt_FireEvent( pWVT, HB_GTE_SETFOCUS ); - QWidget::focusInEvent( event ); -} - -void DrawingArea::focusOutEvent( QFocusEvent *event ) -{ -//HB_TRACE( HB_TR_DEBUG, ( "void DrawingArea::focusOutEvent( QFocusEvent *event )" ) ); -// this->hideCaret(); /* Disableing for the time being */ - HB_SYMBOL_UNUSED( event ); - /* Either of IN or OUT messagess */ - /* hb_gt_wvt_FireEvent( pWVT, HB_GTE_KILLFOCUS ); */ - QWidget::focusOutEvent( event ); -} - -void DrawingArea::keyReleaseEvent( QKeyEvent *event ) -{ - HB_SYMBOL_UNUSED( event ); - QWidget::keyReleaseEvent( event ); -} - -void hb_gt_wvt_QSetMousePos( PHB_GTWVT pWVT, int x, int y ) -{ - QPoint colrow = hb_gt_wvt_QGetColRowFromXY( pWVT, x, y ); - - pWVT->MousePos.setY( colrow.y() ); - pWVT->MousePos.setX( colrow.x() ); -} - -void DrawingArea::wheelEvent( QWheelEvent *event ) -{ - PHB_GTWVT pWVT = HB_GTWVT_GET( pGT ); - int c = 0; - - switch( event->orientation() ) - { - case Qt::Vertical: - if( event->delta() < 0 ) - c = K_MWBACKWARD; - else - c = K_MWFORWARD; - break; - case Qt::Horizontal: - default: - QWidget::wheelEvent( event ); - return; - } - if( c != 0 ) - { - hb_gt_wvt_AddCharToInputQueue( pWVT, c ); - hb_gt_wvt_QSetMousePos( pWVT, event->x(), event->y() ); - } -} - -void DrawingArea::mouseDoubleClickEvent( QMouseEvent *event ) -{ - PHB_GTWVT pWVT = HB_GTWVT_GET( pGT ); - int c = 0; - - switch( event->button() ) - { - case Qt::LeftButton: - c = K_LDBLCLK; - break; - case Qt::RightButton: - c = K_RDBLCLK;; - break; - case Qt::MidButton: - c = K_MDBLCLK;; - break; - case Qt::MouseButtonMask: - case Qt::XButton1: - case Qt::XButton2: - case Qt::NoButton: - QWidget::mouseDoubleClickEvent( event ); - return; - } - if( c != 0 ) - { - hb_gt_wvt_AddCharToInputQueue( pWVT, c ); - hb_gt_wvt_QSetMousePos( pWVT, event->x(), event->y() ); - } -} - -void DrawingArea::mouseMoveEvent( QMouseEvent *event ) -{ - PHB_GTWVT pWVT = HB_GTWVT_GET( pGT ); - int c = K_MOUSEMOVE; - - if( event->buttons() & Qt::LeftButton ) - { - if( !_bCopying ) - { - _bCopying = HB_TRUE; - _rCopying.setLeft( event->x() ); - _rCopying.setTop( event->y() ); - _rCopying.setRight( event->x() ); - _rCopying.setBottom( event->y() ); - - _rCopyingP.setLeft( event->x() ); - _rCopyingP.setTop( event->y() ); - _rCopyingP.setRight( event->x() ); - _rCopyingP.setBottom( event->y() ); - } - if( _bCopying ) - { - _rCopying.setRight( event->x() ); - _rCopying.setBottom( event->y() ); - paintCopyOperation(); - } - hb_gt_wvt_QSetMousePos( pWVT, event->x(), event->y() ); - return; - } - -#if defined( __HB_GTWVT_GEN_K_MMDOWN_EVENTS ) - if( event->buttons() & Qt::LeftButton ) - c = K_MMLEFTDOWN; - else if( event->buttons() & Qt::RightButton ) - c = K_MMRIGHTDOWN; - else if( event->buttons() & Qt::MidButton ) - c = K_MMMIDDLEDOWN; -#endif - if( c != 0 ) - { - hb_gt_wvt_AddCharToInputQueue( pWVT, c ); - hb_gt_wvt_QSetMousePos( pWVT, event->x(), event->y() ); - } -} - -void DrawingArea::mousePressEvent( QMouseEvent *event ) -{ - PHB_GTWVT pWVT = HB_GTWVT_GET( pGT ); - int c = 0; - - if( _bSizing ) - { - _bSizing = HB_FALSE; - pWVT->qWnd->setWindowSize(); - } - - switch( event->button() ) - { - case Qt::LeftButton: - c = K_LBUTTONDOWN; - break; - case Qt::RightButton: - c = K_RBUTTONDOWN; - break; - case Qt::MidButton: - c = K_MBUTTONDOWN; - break; - case Qt::MouseButtonMask: - case Qt::XButton1: - case Qt::XButton2: - case Qt::NoButton: - QWidget::mousePressEvent( event ); - return; - } - if( c != 0 ) - { - hb_gt_wvt_AddCharToInputQueue( pWVT, c ); - hb_gt_wvt_QSetMousePos( pWVT, event->x(), event->y() ); - } -} - -void DrawingArea::mouseReleaseEvent( QMouseEvent *event ) -{ - PHB_GTWVT pWVT = HB_GTWVT_GET( pGT ); - int c = 0; - - if( _bSizing ) - { - _bSizing = HB_FALSE; - pWVT->qWnd->setWindowSize(); - } - if( _bCopying ) - { - _bCopying = false; - copyTextOnClipboard(); - } - - switch( event->button() ) - { - case Qt::LeftButton: - c = K_LBUTTONUP; - break; - case Qt::RightButton: - c = K_RBUTTONUP; - break; - case Qt::MidButton: - c = K_MBUTTONUP; - break; - case Qt::MouseButtonMask: - case Qt::XButton1: - case Qt::XButton2: - case Qt::NoButton: - QWidget::mouseReleaseEvent( event ); - return; - } - if( c != 0 ) - { - hb_gt_wvt_AddCharToInputQueue( pWVT, c ); - hb_gt_wvt_QSetMousePos( pWVT, event->x(), event->y() ); - } -} - -bool DrawingArea::event( QEvent *event ) -{ - if( _bSizing && ( event->type() == QEvent::Enter || event->type() == QEvent::Leave ) ) - { - _bSizing = HB_FALSE; - PHB_GTWVT pWVT = HB_GTWVT_GET( pGT ); - pWVT->qWnd->setWindowSize(); - } - return( QWidget::event( event ) ); -} - -static void hb_gt_wvt_QTranslateKey( PHB_GTWVT pWVT, Qt::KeyboardModifiers kbm, int key, int shiftkey, int altkey, int controlkey ) -{ - if( kbm & Qt::AltModifier ) - hb_gt_wvt_AddCharToInputQueue( pWVT, altkey ); - else - { - if( kbm & Qt::ControlModifier ) - hb_gt_wvt_AddCharToInputQueue( pWVT, controlkey ); - else - { - if( kbm & Qt::ShiftModifier ) - hb_gt_wvt_AddCharToInputQueue( pWVT, shiftkey ); - else - hb_gt_wvt_AddCharToInputQueue( pWVT, key ); - } - } -} - -static void hb_gt_wvt_QTranslateKeyDigit( PHB_GTWVT pWVT, Qt::KeyboardModifiers kbm, int key, int altkey ) -{ - if( kbm & Qt::AltModifier ) - hb_gt_wvt_AddCharToInputQueue( pWVT, altkey ); - else - hb_gt_wvt_AddCharToInputQueue( pWVT, key ); -} - -static void hb_gt_wvt_QTranslateKeyAlpha( PHB_GTWVT pWVT, Qt::KeyboardModifiers kbm, int key, int shiftkey, int altkey, int controlkey, QString text ) -{ - HB_SYMBOL_UNUSED( key ); - HB_SYMBOL_UNUSED( shiftkey ); - HB_SYMBOL_UNUSED( controlkey ); - - if( kbm & Qt::AltModifier ) - hb_gt_wvt_AddCharToInputQueue( pWVT, altkey ); - else - { - if( kbm & Qt::ControlModifier ) - hb_gt_wvt_AddCharToInputQueue( pWVT, controlkey ); - else - hb_gt_wvt_AddCharToInputQueue( pWVT, ( int ) *text.toLatin1().data() ); - } -} - -static void hb_gt_wvt_QTranslateKeyKP( PHB_GTWVT pWVT, Qt::KeyboardModifiers kbm, - int key, int shiftkey, int altkey, int controlkey, - int keyKP, int shiftkeyKP, int altkeyKP, int controlkeyKP ) -{ - if( kbm & Qt::KeypadModifier ) - { - key = keyKP; - shiftkey = shiftkeyKP; - altkey = altkeyKP; - controlkey = controlkeyKP; - } - - if( kbm & Qt::AltModifier ) - hb_gt_wvt_AddCharToInputQueue( pWVT, altkey ); - else - { - if( kbm & Qt::ControlModifier ) - hb_gt_wvt_AddCharToInputQueue( pWVT, controlkey ); - else - { - if( kbm & Qt::ShiftModifier ) - hb_gt_wvt_AddCharToInputQueue( pWVT, shiftkey ); - else - hb_gt_wvt_AddCharToInputQueue( pWVT, key ); - } - } -} - -void DrawingArea::keyPressEvent( QKeyEvent *event ) -{ - int c = 0; - Qt::KeyboardModifiers kbm = event->modifiers(); - PHB_GTWVT pWVT = HB_GTWVT_GET( pGT ); - - switch( event->key() ) - { - case Qt::Key_Escape : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_ESC, K_ESC, K_ALT_ESC, K_ESC ); - return; - case Qt::Key_Tab : - case Qt::Key_Backtab : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_TAB, K_SH_TAB, K_ALT_TAB, K_CTRL_TAB ); - return; - case Qt::Key_Backspace : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_BS, K_SH_BS, K_ALT_BS, K_CTRL_BS ); - return; - case Qt::Key_Return : - case Qt::Key_Enter : /* Typically located on the keypad. */ - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_ENTER, K_SH_ENTER, K_ALT_ENTER, K_CTRL_ENTER ); - return; - case Qt::Key_Insert : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_INS, K_SH_INS, K_ALT_INS, K_CTRL_INS ); - return; - case Qt::Key_Delete : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_DEL, K_SH_DEL, K_ALT_DEL, K_CTRL_DEL ); - return; - case Qt::Key_Home : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_HOME, K_SH_HOME, K_ALT_HOME, K_CTRL_HOME ); - return; - case Qt::Key_End : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_END, K_SH_END, K_ALT_END, K_CTRL_END ); - return; - case Qt::Key_Left : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_LEFT, K_SH_LEFT, K_ALT_LEFT, K_CTRL_LEFT ); - return; - case Qt::Key_Up : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_UP, K_SH_UP, K_ALT_UP, K_CTRL_UP ); - return; - case Qt::Key_Right : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_RIGHT, K_SH_RIGHT, K_ALT_RIGHT, K_CTRL_RIGHT ); - return; - case Qt::Key_Down : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_DOWN, K_SH_DOWN, K_ALT_DOWN, K_CTRL_DOWN ); - return; - case Qt::Key_PageUp : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_PGUP, K_SH_PGUP, K_ALT_PGUP, K_CTRL_PGUP ); - return; - case Qt::Key_PageDown : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_PGDN, K_SH_PGDN, K_ALT_PGDN, K_CTRL_PGDN ); - return; - case Qt::Key_F1 : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_F1, K_SH_F1, K_ALT_F1, K_CTRL_F1 ); - return; - case Qt::Key_F2 : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_F2, K_SH_F2, K_ALT_F2, K_CTRL_F2 ); - return; - case Qt::Key_F3 : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_F3, K_SH_F3, K_ALT_F3, K_CTRL_F3 ); - return; - case Qt::Key_F4 : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_F4, K_SH_F4, K_ALT_F4, K_CTRL_F4 ); - return; - case Qt::Key_F5 : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_F5, K_SH_F5, K_ALT_F5, K_CTRL_F5 ); - return; - case Qt::Key_F6 : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_F6, K_SH_F6, K_ALT_F6, K_CTRL_F6 ); - return; - case Qt::Key_F7 : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_F7, K_SH_F7, K_ALT_F7, K_CTRL_F7 ); - return; - case Qt::Key_F8 : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_F8, K_SH_F8, K_ALT_F8, K_CTRL_F8 ); - return; - case Qt::Key_F9 : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_F9, K_SH_F9, K_ALT_F9, K_CTRL_F9 ); - return; - case Qt::Key_F10 : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_F10, K_SH_F10, K_ALT_F10, K_CTRL_F10 ); - return; - case Qt::Key_F11 : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_F11, K_SH_F11, K_ALT_F11, K_CTRL_F11 ); - return; - case Qt::Key_F12 : - hb_gt_wvt_QTranslateKey( pWVT, kbm, K_F12, K_SH_F12, K_ALT_F12, K_CTRL_F12 ); - return; - case Qt::Key_Space : - c = ' ' ; break; - case Qt::Key_Exclam : - c = '!' ; break; - case Qt::Key_QuoteDbl : - hb_gt_wvt_QTranslateKey( pWVT, kbm, '"', '"', K_ALT_QUOTE, '"' ); - return; - case Qt::Key_NumberSign : - c = '#' ; break; - case Qt::Key_Dollar : - c = '$' ; break; - case Qt::Key_Percent : - c = '%' ; break; - case Qt::Key_Ampersand : - c = '&' ; break; - case Qt::Key_Apostrophe : - c = Qt::Key_Apostrophe ; break; - case Qt::Key_ParenLeft : - c = '(' ; break; - case Qt::Key_ParenRight : - c = ')' ; break; - case Qt::Key_Comma : - hb_gt_wvt_QTranslateKey( pWVT, kbm, ',', ',', K_ALT_COMMA, ',' ); - return; - case Qt::Key_Period : - hb_gt_wvt_QTranslateKey( pWVT, kbm, '.', '.', K_ALT_PERIOD, '.' ); - return; - case Qt::Key_Asterisk : - hb_gt_wvt_QTranslateKeyKP( pWVT, kbm, '*', '*', '*', '*', '*', '*', KP_ALT_ASTERISK, KP_CTRL_ASTERISK ); - return; - case Qt::Key_Plus : - hb_gt_wvt_QTranslateKeyKP( pWVT, kbm, '+', '+', '+', '+', '+', '+', KP_ALT_PLUS, KP_CTRL_PLUS ); - return; - case Qt::Key_Minus : - hb_gt_wvt_QTranslateKeyKP( pWVT, kbm, '-', '-', '-', '-', '-', '-', KP_ALT_MINUS, KP_CTRL_MINUS ); - return; - case Qt::Key_Slash : - hb_gt_wvt_QTranslateKeyKP( pWVT, kbm, '/', '/', K_ALT_SLASH, '/', '/', '/', KP_ALT_SLASH, KP_CTRL_SLASH ); - return; - case Qt::Key_0 : - hb_gt_wvt_QTranslateKeyDigit( pWVT, kbm, 0, K_ALT_0 ); - return; - case Qt::Key_1 : - hb_gt_wvt_QTranslateKeyDigit( pWVT, kbm, 1, K_ALT_1 ); - return; - case Qt::Key_2 : - hb_gt_wvt_QTranslateKeyDigit( pWVT, kbm, 2, K_ALT_2 ); - return; - case Qt::Key_3 : - hb_gt_wvt_QTranslateKeyDigit( pWVT, kbm, 3, K_ALT_3 ); - return; - case Qt::Key_4 : - hb_gt_wvt_QTranslateKeyDigit( pWVT, kbm, 4, K_ALT_4 ); - return; - case Qt::Key_5 : - hb_gt_wvt_QTranslateKeyKP( pWVT, kbm, '5', '5', K_ALT_5, '5', '5', '5', KP_ALT_5, KP_CTRL_5 ); - break; - case Qt::Key_6 : - hb_gt_wvt_QTranslateKeyDigit( pWVT, kbm, 6, K_ALT_6 ); - return; - case Qt::Key_7 : - hb_gt_wvt_QTranslateKeyDigit( pWVT, kbm, 7, K_ALT_7 ); - return; - case Qt::Key_8 : - hb_gt_wvt_QTranslateKeyDigit( pWVT, kbm, 8, K_ALT_8 ); - return; - case Qt::Key_9 : - hb_gt_wvt_QTranslateKeyDigit( pWVT, kbm, 9, K_ALT_9 ); - return; - case Qt::Key_Colon : - c = ':' ; break; - case Qt::Key_Semicolon : - c = ';' ; break; - case Qt::Key_Less : - c = '<' ; break; - case Qt::Key_Equal : - hb_gt_wvt_QTranslateKey( pWVT, kbm, '=', '=', K_ALT_EQUALS, '=' ); - return; - case Qt::Key_Greater : - c = '>' ; break; - case Qt::Key_Question : - hb_gt_wvt_QTranslateKey( pWVT, kbm, '?', '?', '?', K_CTRL_QUESTION ); - return; - case Qt::Key_At : - c = '@' ; break; - case Qt::Key_A : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'A', 'a', K_ALT_A, K_CTRL_A, event->text() ); - return; - case Qt::Key_B : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'B', 'b', K_ALT_B, K_CTRL_B, event->text() ); - return; - case Qt::Key_C : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'C', 'c', K_ALT_C, K_CTRL_C, event->text() ); - return; - case Qt::Key_D : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'D', 'd', K_ALT_D, K_CTRL_D, event->text() ); - return; - case Qt::Key_E : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'E', 'e', K_ALT_E, K_CTRL_E, event->text() ); - return; - case Qt::Key_F : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'F', 'f', K_ALT_F, K_CTRL_F, event->text() ); - return; - case Qt::Key_G : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'G', 'g', K_ALT_G, K_CTRL_G, event->text() ); - return; - case Qt::Key_H : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'H', 'h', K_ALT_H, K_CTRL_H, event->text() ); - return; - case Qt::Key_I : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'I', 'i', K_ALT_I, K_CTRL_I, event->text() ); - return; - case Qt::Key_J : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'J', 'j', K_ALT_J, K_CTRL_J, event->text() ); - return; - case Qt::Key_K : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'K', 'k', K_ALT_K, K_CTRL_K, event->text() ); - return; - case Qt::Key_L : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'L', 'l', K_ALT_L, K_CTRL_L, event->text() ); - return; - case Qt::Key_M : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'M', 'm', K_ALT_M, K_CTRL_M, event->text() ); - return; - case Qt::Key_N : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'N', 'n', K_ALT_N, K_CTRL_N, event->text() ); - return; - case Qt::Key_O : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'O', 'o', K_ALT_O, K_CTRL_O, event->text() ); - return; - case Qt::Key_P : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'P', 'p', K_ALT_P, K_CTRL_P, event->text() ); - return; - case Qt::Key_Q : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'Q', 'q', K_ALT_Q, K_CTRL_Q, event->text() ); - return; - case Qt::Key_R : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'R', 'r', K_ALT_R, K_CTRL_R, event->text() ); - return; - case Qt::Key_S : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'S', 's', K_ALT_S, K_CTRL_S, event->text() ); - return; - case Qt::Key_T : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'T', 't', K_ALT_T, K_CTRL_T, event->text() ); - return; - case Qt::Key_U : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'U', 'u', K_ALT_U, K_CTRL_U, event->text() ); - return; - case Qt::Key_V : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'V', 'v', K_ALT_V, K_CTRL_V, event->text() ); - return; - case Qt::Key_W : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'W', 'w', K_ALT_W, K_CTRL_W, event->text() ); - return; - case Qt::Key_X : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'X', 'x', K_ALT_X, K_CTRL_X, event->text() ); - return; - case Qt::Key_Y : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'Y', 'y', K_ALT_Y, K_CTRL_Y, event->text() ); - return; - case Qt::Key_Z : - hb_gt_wvt_QTranslateKeyAlpha( pWVT, kbm, 'Z', 'z', K_ALT_Z, K_CTRL_Z, event->text() ); - return; - case Qt::Key_BracketLeft : - hb_gt_wvt_QTranslateKey( pWVT, kbm, '[', '[', K_ALT_OSB, '[' ); - return; - case Qt::Key_Backslash : - hb_gt_wvt_QTranslateKey( pWVT, kbm, Qt::Key_Backslash, Qt::Key_Backslash, K_ALT_BACKSLASH, Qt::Key_Backslash ); - return; - case Qt::Key_BracketRight : - hb_gt_wvt_QTranslateKey( pWVT, kbm, ']', ']', K_ALT_CSB, ']' ); - return; - case Qt::Key_AsciiCircum : - c = '^' ; break; - case Qt::Key_Underscore : - c = '_' ; break; - case Qt::Key_QuoteLeft : - c = '`' ; break; - case Qt::Key_BraceLeft : - c = '{' ; break; - case Qt::Key_Bar : - c = '|' ; break; - case Qt::Key_BraceRight : - c = '}' ; break; - case Qt::Key_AsciiTilde : - c = '~' ; break; -#if 0 - case Qt::Key_Shift : - c = K_ ; break; - case Qt::Key_Control : /* On Mac OS X, this corresponds to the Command keys. */ - c = K_ ; break; - case Qt::Key_Meta : /* On Mac OS X, this corresponds to the Control keys. On Windows keyboards, this key is mapped to the Windows key. */ - c = K_ ; break; - case Qt::Key_Alt : - c = K_ ; break; - case Qt::Key_AltGr : /* On Windows, when the KeyDown event for this key is sent, the Ctrl+Alt modifiers are also set. */ - c = K_ ; break; - case Qt::Key_CapsLock : - c = K_ ; break; - case Qt::Key_NumLock : - c = K_ ; break; - case Qt::Key_ScrollLock : - c = K_ ; break; - case Qt::Key_Super_L : - c = K_ ; break; - case Qt::Key_Super_R : - c = K_ ; break; - case Qt::Key_Menu : - c = K_ ; break; - case Qt::Key_Hyper_L : - c = K_ ; break; - case Qt::Key_Hyper_R : - c = K_ ; break; - case Qt::Key_Help : - c = K_ ; break; - case Qt::Key_Direction_L : - c = K_ ; break; - case Qt::Key_Direction_R : - c = K_ ; break; - case Qt::Key_Pause : - c = K_PAUSE ; break; - case Qt::Key_Print : - c = K_ ; break; - case Qt::Key_SysReq : - c = K_ ; break; - case Qt::Key_Clear : - c = K_ ; break; -#endif - default : - if( ( event->key() >= 0 ) && ( event->key() <= 255 ) ) - c = event->key(); - else - { - QWidget::keyPressEvent( event ); - return ; - } - } - hb_gt_wvt_AddCharToInputQueue( pWVT, c ); -} - -/*----------------------------------------------------------------------*/ -/* - * Class MainWindow - */ -/*----------------------------------------------------------------------*/ - -MainWindow::MainWindow() -{ - Qt::WindowFlags flags = Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint | - Qt::WindowMinimizeButtonHint | Qt::WindowSystemMenuHint | - Qt::CustomizeWindowHint | Qt::WindowTitleHint | - Qt::Window ; - setWindowFlags( flags ); - setFocusPolicy( Qt::StrongFocus ); - - _drawingArea = new DrawingArea(); - setCentralWidget( _drawingArea ); -} - -MainWindow::~MainWindow( void ) -{ - delete this->_drawingArea; -} - -DrawingArea::~DrawingArea( void ) -{ - _image->~QImage(); - _basicTimer->~QBasicTimer(); -} - -void MainWindow::closeEvent( QCloseEvent *event ) -{ - PHB_GTWVT pWVT = HB_GTWVT_GET( pGT ); - - if( s_wvtCount > 1 && pWVT->iHandle == 0 ) - { - event->ignore(); - } - else - { - if( hb_gt_wvt_FireEvent( pWVT, HB_GTE_CLOSE ) == 1 ) - { - event->ignore(); - } - else - { - event->accept(); - hb_gt_wvt_AddCharToInputQueue( pWVT, K_ESC ); - } - } -} - -void MainWindow::setWindowSize( void ) -{ - resize( _drawingArea->_wndWidth, _drawingArea->_wndHeight ); -} - -void DrawingArea::drawBoxCharacter( QPainter *painter, HB_USHORT usChar, HB_BYTE bColor, int x, int y ) -{ - /* Common to all drawing operations except characters */ - int iGap = 2; - int iMidY = y + _fontHeight / 2; - int iMidX = x + _fontWidth / 2; - int iEndY = y + _fontHeight; - int iEndX = x + _fontWidth; - int x1,x2,y1,y2; - - /* painter->setPen( QPen( QBrush( _COLORS[ bColor & 0x0F ] ),1 ) ); */ - painter->setPen( QPen( _COLORS[ bColor & 0x0F ] ) ); - painter->setBackground( QBrush( _COLORS[ bColor >> 4 ] ) ); - painter->fillRect( x, y, _fontWidth, _fontHeight, QBrush( _COLORS[ bColor >> 4 ] ) ); - - switch( usChar ) - { - /* --------------------------------------------------------------------- */ - /* B_SINGLE */ - /* --------------------------------------------------------------------- */ - case 196: /* -- */ - painter->drawLine( x, iMidY, iEndX, iMidY ); /* Horz */ - break; - case 179: /* | */ - painter->drawLine( iMidX, y, iMidX, iEndY ); /* Vert */ - break; - case 191: /* top right */ - painter->drawLine( x, iMidY, iMidX, iMidY ); /* Horz */ - painter->drawLine( iMidX, iMidY, iMidX, iEndY ); /* Vert */ - break; - case 217: /* bottom right */ - painter->drawLine( x, iMidY, iMidX, iMidY ); /* Horz */ - painter->drawLine( iMidX, y, iMidX, iMidY ); /* Vert */ - break; - case 218: /* top left */ - painter->drawLine( iMidX, iMidY, iEndX, iMidY ); /* Horz */ - painter->drawLine( iMidX, iMidY, iMidX, iEndY ); /* Vert */ - break; - case 192: /* bottom left */ - painter->drawLine( iMidX, iMidY, iEndX, iMidY ); /* Horz */ - painter->drawLine( iMidX, iMidY, iMidX, y ); /* Vert */ - break; - case 193: /* bottom mid up */ - painter->drawLine( x, iMidY, iEndX, iMidY ); /* Horz */ - painter->drawLine( iMidX, y, iMidX, iMidY ); /* Vert */ - break; - case 194: /* top mid down */ - painter->drawLine( x, iMidY, iEndX, iMidY ); /* Horz */ - painter->drawLine( iMidX, iMidY, iMidX, iEndY ); /* Vert */ - break; - case 195: /* middle left */ - painter->drawLine( iMidX, iMidY, iEndX, iMidY ); /* Horz */ - painter->drawLine( iMidX, y, iMidX, iEndY ); /* Vert */ - break; - case 180: /* middle right */ - painter->drawLine( x, iMidY, iMidX, iMidY ); /* Horz */ - painter->drawLine( iMidX, y, iMidX, iEndY ); /* Vert */ - break; - case 197: /* middle cross */ - painter->drawLine( x, iMidY, iEndX, iMidY ); /* Horz */ - painter->drawLine( iMidX, y, iMidX, iEndY ); /* Vert */ - break; - /* --------------------------------------------------------------------- */ - /* B_DOUBLE_SINGLE */ - /* --------------------------------------------------------------------- */ - case 205: /* -- */ - painter->drawLine( x, iMidY-iGap, iEndX, iMidY-iGap ); /* Horz */ - painter->drawLine( x, iMidY+iGap, iEndX, iMidY+iGap ); /* Horz */ - break; - #if 0 - case 179: /* | */ - painter->drawLine( iMidX, y, iMidX, iEndY ); /* Vert */ - break; - #endif - case 184: /* top right */ - painter->drawLine( x, iMidY-iGap, iMidX, iMidY-iGap ); /* Horz */ - painter->drawLine( x, iMidY+iGap, iMidX, iMidY+iGap ); /* Horz */ - painter->drawLine( iMidX, iMidY-iGap, iMidX, iEndY ); /* Vert */ - break; - case 190: /* bottom right */ - painter->drawLine( x, iMidY-iGap, iMidX, iMidY-iGap ); /* Horz */ - painter->drawLine( x, iMidY+iGap, iMidX, iMidY+iGap ); /* Horz */ - painter->drawLine( iMidX, y, iMidX, iMidY+iGap ); /* Vert */ - break; - case 213: /* top left */ - painter->drawLine( iMidX, iMidY-iGap, iEndX, iMidY-iGap ); /* Horz */ - painter->drawLine( iMidX, iMidY+iGap, iEndX, iMidY+iGap ); /* Horz */ - painter->drawLine( iMidX, iMidY-iGap, iMidX, iEndY ); /* Vert */ - break; - case 212: /* bottom left */ - painter->drawLine( iMidX, iMidY-iGap, iEndX, iMidY-iGap ); /* Horz */ - painter->drawLine( iMidX, iMidY+iGap, iEndX, iMidY+iGap ); /* Horz */ - painter->drawLine( iMidX, iMidY+iGap, iMidX, y ); /* Vert */ - break; - case 207: /* bottom mid up */ - painter->drawLine( x, iMidY-iGap, iEndX, iMidY-iGap ); /* Horz */ - painter->drawLine( x, iMidY+iGap, iEndX, iMidY+iGap ); /* Horz */ - painter->drawLine( iMidX, y, iMidX, iMidY-iGap ); /* Vert */ - break; - case 209: /* top mid down */ - painter->drawLine( x, iMidY-iGap, iEndX, iMidY-iGap ); /* Horz */ - painter->drawLine( x, iMidY+iGap, iEndX, iMidY+iGap ); /* Horz */ - painter->drawLine( iMidX, iMidY+iGap, iMidX, iEndY ); /* Vert */ - break; - case 198: /* middle left */ - painter->drawLine( iMidX, iMidY-iGap, iEndX, iMidY-iGap ); /* Horz */ - painter->drawLine( iMidX, iMidY+iGap, iEndX, iMidY+iGap ); /* Horz */ - painter->drawLine( iMidX, y, iMidX, iEndY ); /* Vert */ - break; - case 181: /* middle right */ - painter->drawLine( x, iMidY-iGap, iMidX, iMidY-iGap ); /* Horz */ - painter->drawLine( x, iMidY+iGap, iMidX, iMidY+iGap ); /* Horz */ - painter->drawLine( iMidX, y, iMidX, iEndY ); /* Vert */ - break; - case 216: /* middle cross */ - painter->drawLine( x, iMidY-iGap, iEndX, iMidY-iGap ); /* Horz */ - painter->drawLine( x, iMidY+iGap, iEndX, iMidY+iGap ); /* Horz */ - painter->drawLine( iMidX, y, iMidX, iMidY-iGap ); /* Vert */ - painter->drawLine( iMidX, iMidY+iGap, iMidX, iEndY ); /* Vert */ - break; - /* --------------------------------------------------------------------- */ - /* B_DOUBLE */ - /* ----------------------------------------------------------------------- */ - #if 0 - case 205: /* -- */ - painter->drawLine( x, iMidY-iGap, iEndX, iMidY-iGap ); /* Horz */ - painter->drawLine( x, iMidY+iGap, iEndX, iMidY+iGap ); /* Horz */ - break; - #endif - case 186: /* | */ - painter->drawLine( iMidX-iGap, y, iMidX-iGap, iEndY ); /* Vert */ - painter->drawLine( iMidX+iGap, y, iMidX+iGap, iEndY ); /* Vert */ - break; - case 187: /* top right */ - painter->drawLine( x, iMidY-iGap, iMidX+iGap, iMidY-iGap ); /* Horz U */ - painter->drawLine( x, iMidY+iGap, iMidX-iGap, iMidY+iGap ); /* Horz L */ - painter->drawLine( iMidX+iGap, iMidY-iGap, iMidX+iGap, iEndY ); /* Vert I */ - painter->drawLine( iMidX-iGap, iMidY+iGap, iMidX-iGap, iEndY ); /* Vert O */ - break; - case 188: /* bottom right */ - x1 = iMidX-iGap, x2 = iMidX+iGap, y1 = iMidY-iGap, y2 = iMidY+iGap; - painter->drawLine( x, y1, x1, y1 ); - painter->drawLine( x, y2, x2, y2 ); - painter->drawLine( x1, y, x1, y1 ); - painter->drawLine( x2, y, x2, y2 ); - break; - case 201: /* top left */ - x1 = iMidX-iGap, x2 = iMidX+iGap, y1 = iMidY-iGap, y2 = iMidY+iGap; - painter->drawLine( x1, y1, iEndX, y1 ); - painter->drawLine( x2, y2, iEndY, y2 ); - painter->drawLine( x1, y1, x1, iEndY ); - painter->drawLine( x2, y2, x2, iEndY ); - break; - case 200: /* bottom left */ - x1 = iMidX-iGap, x2 = iMidX+iGap, y1 = iMidY-iGap, y2 = iMidY+iGap; - painter->drawLine( x1, y2, iEndX, y2 ); - painter->drawLine( x2, y1, iEndX, y1 ); - painter->drawLine( x1, y, x1, y2 ); - painter->drawLine( x2, y, x2, y1 ); - break; - case 202: /* bottom mid up */ - painter->drawLine( x, iMidY+iGap, iEndX, iMidY+iGap ); /* Horz */ - painter->drawLine( x, iMidY-iGap, iMidX-iGap, iMidY-iGap ); /* Horz */ - painter->drawLine( iMidX+iGap, iMidY-iGap, iEndX, iMidY-iGap ); /* Horz */ - painter->drawLine( iMidX-iGap, y, iMidX-iGap, iMidY-iGap ); /* Vert */ - painter->drawLine( iMidX+iGap, y, iMidX+iGap, iMidY-iGap ); /* Vert */ - break; - case 203: /* top mid down */ - painter->drawLine( x, iMidY-iGap, iEndX, iMidY-iGap ); /* Horz */ - painter->drawLine( x, iMidY+iGap, iMidX-iGap, iMidY+iGap ); /* Horz */ - painter->drawLine( iMidX+iGap, iMidY+iGap, iEndX, iMidY+iGap ); /* Horz */ - painter->drawLine( iMidX-iGap, iMidY+iGap, iMidX-iGap, iEndY ); /* Vert */ - painter->drawLine( iMidX+iGap, iMidY+iGap, iMidX+iGap, iEndY ); /* Vert */ - break; - case 204: /* middle left */ - painter->drawLine( iMidX+iGap, iMidY-iGap, iEndX, iMidY-iGap ); /* Horz */ - painter->drawLine( iMidX+iGap, iMidY+iGap, iEndX, iMidY+iGap ); /* Horz */ - painter->drawLine( iMidX-iGap, y, iMidX-iGap, iEndY ); /* Vert */ - painter->drawLine( iMidX+iGap, y, iMidX+iGap, iMidY-iGap ); /* Vert */ - painter->drawLine( iMidX+iGap, iMidY+iGap, iMidX+iGap, iEndY ); /* Vert */ - break; - case 185: /* middle right */ - painter->drawLine( x, iMidY-iGap, iMidX-iGap, iMidY-iGap ); /* Horz */ - painter->drawLine( x, iMidY+iGap, iMidX-iGap, iMidY+iGap ); /* Horz */ - painter->drawLine( iMidX+iGap, y, iMidX+iGap, iEndY ); /* Vert */ - painter->drawLine( iMidX-iGap, y, iMidX-iGap, iMidY-iGap ); /* Vert */ - painter->drawLine( iMidX-iGap, iMidY+iGap, iMidX-iGap, iEndY ); /* Vert */ - break; - case 206: /* middle cross */ - painter->drawLine( x, iMidY-iGap, iMidX-iGap, iMidY-iGap ); /* Horz */ - painter->drawLine( x, iMidY+iGap, iMidX-iGap, iMidY+iGap ); /* Horz */ - painter->drawLine( iMidX+iGap, iMidY-iGap, iEndX, iMidY-iGap ); /* Horz */ - painter->drawLine( iMidX+iGap, iMidY+iGap, iEndX, iMidY+iGap ); /* Horz */ - - painter->drawLine( iMidX-iGap, y, iMidX-iGap, iMidY-iGap ); /* Vert */ - painter->drawLine( iMidX+iGap, y, iMidX+iGap, iMidY-iGap ); /* Vert */ - painter->drawLine( iMidX-iGap, iMidY+iGap, iMidX-iGap, iEndY ); /* Vert */ - painter->drawLine( iMidX+iGap, iMidY+iGap, iMidX+iGap, iEndY ); /* Vert */ - break; - /* --------------------------------------------------------------------- */ - /* B_SINGLE_DOUBLE */ - /* --------------------------------------------------------------------- */ - #if 0 - case 196: /* -- */ - painter->drawLine( x, iMidY, iEndX, iMidY ); /* Horz */ - break; - #endif - #if 0 - case 186: /* | */ - painter->drawLine( iMidX-iGap, y, iMidX-iGap, iEndY ); /* Vert */ - painter->drawLine( iMidX+iGap, y, iMidX+iGap, iEndY ); /* Vert */ - break; - #endif - case 183: /* top right */ - painter->drawLine( x, iMidY, iMidX+iGap, iMidY ); /* Horz */ - painter->drawLine( iMidX-iGap, iMidY, iMidX-iGap, iEndY ); /* Vert */ - painter->drawLine( iMidX+iGap, iMidY, iMidX+iGap, iEndY ); /* Vert */ - break; - case 189: /* bottom right */ - painter->drawLine( x, iMidY, iMidX+iGap, iMidY ); /* Horz */ - painter->drawLine( iMidX-iGap, y, iMidX-iGap, iMidY ); /* Vert */ - painter->drawLine( iMidX+iGap, y, iMidX+iGap, iMidY ); /* Vert */ - break; - case 214: /* top left */ - painter->drawLine( iMidX-iGap, iMidY, iEndX, iMidY ); /* Horz */ - painter->drawLine( iMidX-iGap, iMidY, iMidX-iGap, iEndY ); /* Vert */ - painter->drawLine( iMidX+iGap, iMidY, iMidX+iGap, iEndY ); /* Vert */ - break; - case 211: /* bottom left */ - painter->drawLine( iMidX-iGap, iMidY, iEndX, iMidY ); /* Horz */ - painter->drawLine( iMidX-iGap, iMidY, iMidX-iGap, y ); /* Vert */ - painter->drawLine( iMidX+iGap, iMidY, iMidX+iGap, y ); /* Vert */ - break; - case 208: /* bottom mid up */ - painter->drawLine( x, iMidY, iEndX, iMidY ); /* Horz */ - painter->drawLine( iMidX-iGap, y, iMidX-iGap, iMidY ); /* Vert */ - painter->drawLine( iMidX+iGap, y, iMidX+iGap, iMidY ); /* Vert */ - break; - case 210: /* top mid down */ - painter->drawLine( x, iMidY, iEndX, iMidY ); /* Horz */ - painter->drawLine( iMidX-iGap, iMidY, iMidX-iGap, iEndY ); /* Vert */ - painter->drawLine( iMidX+iGap, iMidY, iMidX+iGap, iEndY ); /* Vert */ - break; - case 199: /* middle left */ - painter->drawLine( iMidX+iGap, iMidY, iEndX, iMidY ); /* Horz */ - painter->drawLine( iMidX-iGap, y, iMidX-iGap, iEndY ); /* Vert */ - painter->drawLine( iMidX+iGap, y, iMidX+iGap, iEndY ); /* Vert */ - break; - case 182: /* middle right */ - painter->drawLine( x, iMidY, iMidX-iGap, iMidY ); /* Horz */ - painter->drawLine( iMidX-iGap, y, iMidX-iGap, iEndY ); /* Vert */ - painter->drawLine( iMidX+iGap, y, iMidX+iGap, iEndY ); /* Vert */ - break; - case 215: /* middle cross */ - painter->drawLine( x, iMidY, iMidX-iGap, iMidY ); /* Horz */ - painter->drawLine( iMidX+iGap, iMidY, iEndX, iMidY ); /* Horz */ - painter->drawLine( iMidX-iGap, y, iMidX-iGap, iEndY ); /* Vert */ - painter->drawLine( iMidX+iGap, y, iMidX+iGap, iEndY ); /* Vert */ - break; - /* --------------------------------------------------------------------- */ - /* B_THIN B_FAT */ - /* --------------------------------------------------------------------- */ - case 219: /* Full Column */ - painter->fillRect( x, y, _fontWidth, _fontHeight, _COLORS[ bColor & 0x0F ] ); - break; - case 223: /* Upper Half Column */ - painter->fillRect( x, y, _fontWidth, _fontHeight, _COLORS[ bColor >> 4 ] ); - painter->fillRect( x, y, _fontWidth, _fontWidth, _COLORS[ bColor & 0x0F ] ); - break; - case 220: /* Lower Half Half Column */ - painter->fillRect( x, y, _fontWidth, _fontHeight, _COLORS[ bColor >> 4 ] ); - painter->fillRect( x, y+_fontHeight-_fontWidth, _fontWidth, _fontWidth, _COLORS[ bColor & 0x0F ] ); - break; - default: - painter->drawText( QPoint( x,y+_fontAscent ), QString( usChar ) ); - break; - } -} -/*----------------------------------------------------------------------*/ -#if 0 -static bool hb_gt_wvt_KeyEvent( PHB_GTWVT pWVT, UINT message, WPARAM wParam, LPARAM lParam ) -{ - switch( message ) - { - default: - { - else if( iScanCode == 70 ) /* Ctrl_Break key OR Scroll Lock Key */ - { - if( bCtrl ) /* Not scroll lock */ - { - hb_gt_wvt_AddCharToInputQueue( pWVT, HB_BREAK_FLAG ); /* Pretend Alt+C pressed */ - } - } - } - } -} -#endif -/*----------------------------------------------------------------------*/ -#if 0 -static LRESULT CALLBACK hb_gt_wvt_WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) -{ - if( pWVT ) switch( message ) - { - case WM_QUERYENDSESSION: /* Closing down computer */ - hb_vmRequestQuit(); - return 0; - - case WM_ENTERIDLE: - hb_idleState(); - return 0; - - case WM_SYSCOMMAND: - switch( wParam ) - { - case SC_MAXIMIZE: - { - /* Disable "maximize" button */ - hb_gt_wvt_FireEvent( pWVT, HB_GTE_RESIZED ); - if( pWVT->ResizeMode == HB_GTI_RESIZEMODE_ROWS ) - hb_gt_wvt_AddCharToInputQueue( pWVT, HB_K_RESIZE ); - } - - case SYS_EV_MARK: - { - pWVT->bBeginMarked = HB_TRUE; - } - } - } -} -#endif -/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbqt/gtqtc/gtqtc.h b/harbour/contrib/hbqt/gtqtc/gtqtc.h deleted file mode 100644 index 13783cdb36..0000000000 --- a/harbour/contrib/hbqt/gtqtc/gtqtc.h +++ /dev/null @@ -1,332 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * - * Copyright 2009 Pritpal Bedi - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#ifndef HB_QTC_H_ - -#define HB_QTC_H_ - -#define HB_GT_NAME QTC - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "hbset.h" -#include "hbgtcore.h" -#include "hbapicdp.h" -#include "hbapierr.h" -#include "hbapiitm.h" -#include "inkey.ch" -#include "hbvm.h" -#include "hbthread.h" -#include "hbapistr.h" - -#include "hbqt.h" - -#define WVT_CHAR_QUEUE_SIZE 4096 // 128 -#define WVT_MAX_TITLE_SIZE 128 -#define WVT_MAX_ROWS 256 -#define WVT_MAX_COLS 256 -#define WVT_MAX_WINDOWS 256 -#define WVT_DEFAULT_ROWS 25 -#define WVT_DEFAULT_COLS 80 -#define WVT_DEFAULT_FONT_HEIGHT 20 -#define WVT_DEFAULT_FONT_WIDTH 10 -#define WVT_DEFAULT_FONT_NAME "Courier New" - -#define QQRGB( r,g,b ) ( qRgb( r,g,b ) ) - -#define C_BLACK RGB( 0x0 ,0x0 ,0x0 ) -#define C_BLUE RGB( 0x0 ,0x0 ,0x85 ) -#define C_GREEN RGB( 0x0 ,0x85,0x0 ) -#define C_CYAN RGB( 0x0 ,0x85,0x85 ) -#define C_RED RGB( 0x85,0x0 ,0x0 ) -#define C_MAGENTA RGB( 0x85,0x0 ,0x85 ) -#define C_BROWN RGB( 0x85,0x85,0x0 ) -#define C_WHITE RGB( 0xC6,0xC6,0xC6 ) -#define C_LIGHT_GRAY RGB( 0x60,0x60,0x60 ) -#define C_BRIGHT_BLUE RGB( 0x00,0x00,0xFF ) -#define C_BRIGHT_GREEN RGB( 0x60,0xFF,0x60 ) -#define C_BRIGHT_CYAN RGB( 0x60,0xFF,0xFF ) -#define C_BRIGHT_RED RGB( 0xF8,0x00,0x26 ) -#define C_BRIGHT_MAGENTA RGB( 0xFF,0x60,0xFF ) -#define C_YELLOW RGB( 0xFF,0xFF,0x00 ) -#define C_BRIGHT_WHITE RGB( 0xFF,0xFF,0xFF ) - -#define BLACK QQRGB( 0x0 ,0x0 ,0x0 ) -#define BLUE QQRGB( 0x0 ,0x0 ,0x85 ) -#define GREEN QQRGB( 0x0 ,0x85,0x0 ) -#define CYAN QQRGB( 0x0 ,0x85,0x85 ) -#define RED QQRGB( 0x85,0x0 ,0x0 ) -#define MAGENTA QQRGB( 0x85,0x0 ,0x85 ) -#define BROWN QQRGB( 0x85,0x85,0x0 ) -#define WHITE QQRGB( 0xC6,0xC6,0xC6 ) -#define LIGHT_GRAY QQRGB( 0x60,0x60,0x60 ) -#define BRIGHT_BLUE QQRGB( 0x00,0x00,0xFF ) -#define BRIGHT_GREEN QQRGB( 0x60,0xFF,0x60 ) -#define BRIGHT_CYAN QQRGB( 0x60,0xFF,0xFF ) -#define BRIGHT_RED QQRGB( 0xF8,0x00,0x26 ) -#define BRIGHT_MAGENTA QQRGB( 0xFF,0x60,0xFF ) -#define YELLOW QQRGB( 0xFF,0xFF,0x00 ) -#define BRIGHT_WHITE QQRGB( 0xFF,0xFF,0xFF ) - -/* xHarbour compatible definitions */ -#if !defined( K_SH_LEFT ) -#define K_SH_LEFT K_LEFT /* Shift-Left == Left */ -#define K_SH_UP K_UP /* Shift-Up == Up */ -#define K_SH_RIGHT K_RIGHT /* Shift-Right == Right */ -#define K_SH_DOWN K_DOWN /* Shift-Down == Down */ -#define K_SH_INS K_INS /* Shift-Ins == Ins */ -#define K_SH_DEL K_DEL /* Shift-Del == Del */ -#define K_SH_HOME K_HOME /* Shift-Home == Home */ -#define K_SH_END K_END /* Shift-End == End */ -#define K_SH_PGUP K_PGUP /* Shift-PgUp == PgUp */ -#define K_SH_PGDN K_PGDN /* Shift-PgDn == PgDn */ -#define K_SH_RETURN K_RETURN /* Shift-Enter == Enter */ -#define K_SH_ENTER K_ENTER /* Shift-Enter == Enter */ -#endif - -#define SYS_EV_MARK 1000 - -/*----------------------------------------------------------------------*/ - -class MainWindow; -class DrawingArea; - -/*----------------------------------------------------------------------*/ - -typedef struct -{ - PHB_GT pGT; /* core GT pointer */ - int iHandle; /* window number */ - - QApplication *qApplctn; - MainWindow *qWnd; - QFont *qFont; - QFont *qFontBox; - QEventLoop *qEventLoop; - - int iCmdShow; - - HB_USHORT ROWS; /* number of displayable rows in window */ - HB_USHORT COLS; /* number of displayable columns in window */ - - bool CaretExist; /* TRUE if a caret has been created */ - bool CaretHidden; /* TRUE if a caret has been hiden */ - int CaretSize; /* Height of solid caret */ - int CaretWidth; /* Width of solid caret */ - - QPoint MousePos; /* the last mouse position */ - bool MouseMove; /* Flag to say whether to return mouse movement events */ - - int Keys[ WVT_CHAR_QUEUE_SIZE ]; /* Array to hold the characters & events */ - int keyPointerIn; /* Offset into key array for character to be placed */ - int keyPointerOut; /* Offset into key array of next character to read */ - int keyLast; /* last inkey code value in buffer */ - - QPoint PTEXTSIZE; /* size of the fixed width font */ - bool FixedFont; /* TRUE if current font is a fixed font */ - int FixedSize[ WVT_MAX_COLS ]; /* buffer for ExtTextOut() to emulate fixed pitch when Proportional font selected */ - int fontHeight; /* requested font height */ - int fontWidth; /* requested font width */ - int fontWeight; /* Bold level */ - int fontQuality; /* requested font quality */ - char fontFace[ WVT_MAX_COLS ]; /* requested font face name LF_FACESIZE #defined in wingdi.h */ - - bool fInit; /* logical variable indicating that window should be open */ - - QIcon qIcon; /* Title Bar and Task List icon. Can be NULL. */ - bool bIconToFree; /* Do we need to free this icon when it's not NULL? */ - - bool AltF4Close; /* Can use Alt+F4 to close application */ - bool CenterWindow; /* True if window is to be Reset into centre of window */ - - bool bMaximized; /* Flag is set when window has been maximized */ - bool bBeingMarked; /* Flag to control DOS window like copy operation */ - bool bBeginMarked; - - bool bResizable; - bool bSelectCopy; - char * pszSelectCopy; - bool bClosable; - - int ResizeMode; /* Sets the resizing mode either to FONT or ROWS */ - bool bResizing; - bool bAlreadySizing; - -} HB_GTWVT, * PHB_GTWVT; - -/*----------------------------------------------------------------------*/ - -class DrawingArea : public QWidget -{ - Q_OBJECT - -public: - DrawingArea( QWidget *parent = 0 ); - virtual ~DrawingArea( void ); - - PHB_GT pGT; -// PHB_GTWVT pWVT; - - void resetWindowSize( void ); - void redrawBuffer( const QRect & rect ); - - bool createCaret( int iWidth, int iHeight ); - void showCaret( void ); - void hideCaret( void ); - void setCaretPos( int iRow, int iCol ); - void destroyCaret(); - - void displayCell( int iRow, int iCol ); - void displayBlock( int iRow, int iCol ); - void resizeImage( const QSize &newSize ); - void drawBoxCharacter( QPainter *painter, HB_USHORT usChar, HB_BYTE bColor, int x, int y ); - void copyTextOnClipboard( void ); - void paintCopyOperation( void ); - - QImage *_image; - QFont _qFont; - - QRgb _COLORS[ 16 ]; - - int _fontHeight; - int _fontWidth; - int _fontAscent; - - int _iROWS, _iCOLS; - int _wndWidth, _wndHeight; - - bool _bCaretOn; - int _crtHeight; - int _crtWidth; - bool _bBlinking; - int _crtLastRow; - int _crtLastCol; - - bool _bFirst; - bool _bSizing; - bool _bInvertRect; - - bool _bCopying; - QRect _rCopying; - QRect _rCopyingP; - - QBasicTimer *_basicTimer; - -protected: - void keyPressEvent( QKeyEvent *event ); - void keyReleaseEvent( QKeyEvent *event ); - void mousePressEvent( QMouseEvent *event ); - void mouseMoveEvent( QMouseEvent *event ); - void mouseReleaseEvent( QMouseEvent *event ); - void mouseDoubleClickEvent( QMouseEvent * event ); - void paintEvent( QPaintEvent *event ); - void resizeEvent( QResizeEvent *event ); - void wheelEvent( QWheelEvent *event ); - void timerEvent( QTimerEvent *event ); - void focusInEvent( QFocusEvent *event ); - void focusOutEvent( QFocusEvent *event ); - void moveEvent( QMoveEvent *event ); - bool event( QEvent *event ); - -}; - -/*----------------------------------------------------------------------*/ - -class MainWindow : public QMainWindow -{ - Q_OBJECT - -public: - MainWindow(); - virtual ~MainWindow(); - - DrawingArea *_drawingArea; - PHB_GT pGT; - - void setWindowSize( void ); - -protected: - void closeEvent( QCloseEvent *event ); - -}; - -/*----------------------------------------------------------------------*/ - - - -#define HB_GTI_WIDGET 2001 -#define HB_GTI_DRAWINGAREA 2002 -#define HB_GTI_DISABLE 2003 -#define HB_GTI_EVENTLOOP 2004 - -HB_EXTERN_BEGIN -extern void * hbqt_gcAllocate_QWidget( void * pObj, bool bNew ); -extern void * hbqt_gcAllocate_QMainWindow( void * pObj, bool bNew ); -HB_EXTERN_END - -/*----------------------------------------------------------------------*/ - - -#endif /* HB_QTC_H_ */ diff --git a/harbour/contrib/hbqt/gtqtc/gtqtc.hbc b/harbour/contrib/hbqt/gtqtc/gtqtc.hbc deleted file mode 100644 index b5697d70fd..0000000000 --- a/harbour/contrib/hbqt/gtqtc/gtqtc.hbc +++ /dev/null @@ -1,23 +0,0 @@ -# -# $Id$ -# - -# --------------------------------------------------------------- -# Copyright 2010 Viktor Szakats (harbour syenar.net) -# See COPYING for licensing terms. -# --------------------------------------------------------------- - -incpaths=. - -libs=../qtcore/hbqtcore.hbc - -{!HB_STATIC_QT}libs=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF} -{!HB_STATIC_QT&(allwin|os2)}libs=QtCore4 -{!HB_STATIC_QT&(linux|beos|symbian)}libs=QtCore -{!HB_STATIC_QT&darwin}frameworks=QtCore -{HB_STATIC_QT&allwin}libs=${_HB_DYNPREF}${hb_name}s${_HB_DYNSUFF} -{HB_STATIC_QT&linux|beos}libs=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF} -{HB_STATIC_QT&(allwin|linux|beos)}libs=QtCore - -gui=yes -gt=gtnul diff --git a/harbour/contrib/hbqt/gtqtc/gtqtc.hbm b/harbour/contrib/hbqt/gtqtc/gtqtc.hbm deleted file mode 100644 index bb8f84143c..0000000000 --- a/harbour/contrib/hbqt/gtqtc/gtqtc.hbm +++ /dev/null @@ -1,15 +0,0 @@ -# -# $Id$ -# - --i. - --stop{hbdyn} - -../qtcore/hbqtcore.hbc - --hbx= - -gtqtc.cpp - -gtqtc.h diff --git a/harbour/contrib/hbqt/gtqtc/gtqtc.hbp b/harbour/contrib/hbqt/gtqtc/gtqtc.hbp deleted file mode 100644 index a0eadc3f8d..0000000000 --- a/harbour/contrib/hbqt/gtqtc/gtqtc.hbp +++ /dev/null @@ -1,9 +0,0 @@ -# -# $Id$ -# - -../hbqt_common.hbm - -gtqtc.hbm - -gtqtcs.hbp diff --git a/harbour/contrib/hbqt/gtqtc/gtqtcs.hbp b/harbour/contrib/hbqt/gtqtc/gtqtcs.hbp deleted file mode 100644 index e5965db081..0000000000 --- a/harbour/contrib/hbqt/gtqtc/gtqtcs.hbp +++ /dev/null @@ -1,7 +0,0 @@ -# -# $Id$ -# - -../hbqt_commons.hbm - -gtqtc.hbm diff --git a/harbour/contrib/hbqt/hbmk2_qt.hb b/harbour/contrib/hbqt/hbmk2_qt.hb deleted file mode 100644 index afd8647eee..0000000000 --- a/harbour/contrib/hbqt/hbmk2_qt.hb +++ /dev/null @@ -1,3653 +0,0 @@ -/* - * $Id$ - */ - -/* - * hbmk2 plugin script, implementing support for QT specific features - * - * Copyright 2010 Viktor Szakats (harbour syenar.net) - * Copyright 2010 Pritpal Bedi (qth->prg/cpp generator and hbqtui_gen_prg()) - * www - http://harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit - * their web site at http://www.gnu.org/). - * - */ - -#pragma warninglevel=3 -#pragma -km+ -#pragma -ko+ - -#include "directry.ch" -#include "hbclass.ch" -#include "error.ch" - -#define I_( x ) hb_i18n_gettext( x ) - -#if defined( __HBSCRIPT__HBMK_PLUGIN ) - -FUNCTION hbmk_plugin_qt( hbmk ) - LOCAL cRetVal := "" - - LOCAL cSrc - LOCAL cDst - LOCAL tSrc - LOCAL tDst - - LOCAL cDstCPP, cDstDOC - LOCAL tDstCPP - - LOCAL cTmp - LOCAL cPRG - - LOCAL cCommand - LOCAL nError - LOCAL lBuildIt - - SWITCH hbmk[ "cSTATE" ] - CASE "init" - - hbmk_Register_Input_File_Extension( hbmk, ".qrc" ) - hbmk_Register_Input_File_Extension( hbmk, ".ui" ) - hbmk_Register_Input_File_Extension( hbmk, ".hpp" ) - hbmk_Register_Input_File_Extension( hbmk, ".h" ) - hbmk_Register_Input_File_Extension( hbmk, ".qth" ) - - EXIT - - CASE "pre_all" - - /* Gather input parameters */ - - hbmk[ "vars" ][ "aQRC_Src" ] := {} - hbmk[ "vars" ][ "aUIC_Src" ] := {} - hbmk[ "vars" ][ "aMOC_Src" ] := {} - hbmk[ "vars" ][ "aQTH_Src" ] := {} - - hbmk[ "vars" ][ "qtmodule" ] := "" - hbmk[ "vars" ][ "qtver" ] := "" - hbmk[ "vars" ][ "qthdocdir" ] := "" - - FOR EACH cSrc IN hbmk[ "params" ] - IF Left( cSrc, 1 ) == "-" - DO CASE - CASE Left( cSrc, Len( "-qtver=" ) ) == "-qtver=" - hbmk[ "vars" ][ "qtver" ] := SubStr( cSrc, Len( "-qtver=" ) + 1 ) - CASE Left( cSrc, Len( "-qtmodule=" ) ) == "-qtmodule=" - hbmk[ "vars" ][ "qtmodule" ] := SubStr( cSrc, Len( "-qtmodule=" ) + 1 ) - CASE Left( cSrc, Len( "-qthdocdir=" ) ) == "-qthdocdir=" - hbmk[ "vars" ][ "qthdocdir" ] := SubStr( cSrc, Len( "-qthdocdir=" ) + 1 ) - ENDCASE - ELSE - SWITCH Lower( hb_FNameExt( cSrc ) ) - CASE ".qrc" - AAdd( hbmk[ "vars" ][ "aQRC_Src" ], cSrc ) - EXIT - CASE ".ui" - AAdd( hbmk[ "vars" ][ "aUIC_Src" ], cSrc ) - EXIT - CASE ".hpp" - CASE ".h" - AAdd( hbmk[ "vars" ][ "aMOC_Src" ], cSrc ) - EXIT - CASE ".qth" - AAdd( hbmk[ "vars" ][ "aQTH_Src" ], cSrc ) - EXIT - ENDSWITCH - ENDIF - NEXT - - /* Create output file lists */ - - hbmk[ "vars" ][ "aQRC_Dst" ] := {} - hbmk[ "vars" ][ "aQRC_PRG" ] := {} - FOR EACH cSrc IN hbmk[ "vars" ][ "aQRC_Src" ] - cDst := hbmk_FNameDirExtSet( "rcc_" + hb_FNameName( cSrc ), hbmk[ "cWorkDir" ], ".qrb" ) - AAdd( hbmk[ "vars" ][ "aQRC_Dst" ], cDst ) - cDst := hbmk_FNameDirExtSet( "rcc_" + hb_FNameName( cSrc ), hbmk[ "cWorkDir" ], ".prg" ) - AAdd( hbmk[ "vars" ][ "aQRC_PRG" ], cDst ) - hbmk_AddInput_PRG( hbmk, cDst ) - NEXT - - hbmk[ "vars" ][ "aUIC_Dst" ] := {} - FOR EACH cSrc IN hbmk[ "vars" ][ "aUIC_Src" ] - cDst := hbmk_FNameDirExtSet( "uic_" + hb_FNameName( cSrc ), hbmk[ "cWorkDir" ], ".prg" ) - AAdd( hbmk[ "vars" ][ "aUIC_Dst" ], cDst ) - hbmk_AddInput_PRG( hbmk, cDst ) - NEXT - - hbmk[ "vars" ][ "aMOC_Dst" ] := {} - FOR EACH cSrc IN hbmk[ "vars" ][ "aMOC_Src" ] - cDst := hbmk_FNameDirExtSet( "moc_" + hb_FNameName( cSrc ), hbmk[ "cWorkDir" ], ".cpp" ) - AAdd( hbmk[ "vars" ][ "aMOC_Dst" ], cDst ) - hbmk_AddInput_CPP( hbmk, cDst ) - NEXT - - hbmk[ "vars" ][ "aQTH_CPP" ] := {} - hbmk[ "vars" ][ "aQTH_DOC" ] := {} - FOR EACH cSrc IN hbmk[ "vars" ][ "aQTH_Src" ] - cDst := hbmk_FNameDirExtSet( hb_FNameName( cSrc ), hbmk[ "cWorkDir" ], ".cpp" ) - AAdd( hbmk[ "vars" ][ "aQTH_CPP" ], cDst ) - hbmk_AddInput_CPP( hbmk, cDst ) - cDst := hb_PathNormalize( hbmk_FNameDirExtSet( "class_" + Lower( hb_FNameName( cSrc ) ), hb_FNameDir( cSrc ) + hbmk[ "vars" ][ "qthdocdir" ] + "en" + hb_ps(), ".txt" ) ) - AAdd( hbmk[ "vars" ][ "aQTH_DOC" ], cDst ) - - IF qth_is_extended( cSrc ) - AAdd( hbmk[ "vars" ][ "aMOC_Src" ], hbmk_FNameDirExtSet( "q" + lower( hb_FNameName( cSrc ) ), hbmk[ "cWorkDir" ], ".h" ) ) - cDst := hbmk_FNameDirExtSet( "moc_q" + lower( hb_FNameName( cSrc ) ), hbmk[ "cWorkDir" ], ".cpp" ) - AAdd( hbmk[ "vars" ][ "aMOC_Dst" ], cDst ) - hbmk_AddInput_CPP( hbmk, cDst ) - ENDIF - NEXT - - /* Detect tool locations */ - - IF ! hbmk[ "lCLEAN" ] - IF ! Empty( hbmk[ "vars" ][ "aQRC_Src" ] ) - hbmk[ "vars" ][ "cRCC_BIN" ] := qt_tool_detect( hbmk, "rcc", "RCC_BIN", .F. ) - IF Empty( hbmk[ "vars" ][ "cRCC_BIN" ] ) - cRetVal := I_( "Required QT tool not found" ) - ENDIF - ENDIF - IF ! Empty( hbmk[ "vars" ][ "aUIC_Src" ] ) - hbmk[ "vars" ][ "cUIC_BIN" ] := qt_tool_detect( hbmk, "uic", "UIC_BIN" ) - IF Empty( hbmk[ "vars" ][ "cUIC_BIN" ] ) - cRetVal := I_( "Required QT tool not found" ) - ENDIF - ENDIF - IF ! Empty( hbmk[ "vars" ][ "aMOC_Src" ] ) - hbmk[ "vars" ][ "cMOC_BIN" ] := qt_tool_detect( hbmk, "moc", "MOC_BIN" ) - IF Empty( hbmk[ "vars" ][ "cMOC_BIN" ] ) - cRetVal := I_( "Required QT tool not found" ) - ENDIF - ENDIF - ENDIF - - EXIT - - CASE "pre_prg" - - IF ! hbmk[ "lCLEAN" ] .AND. ; - ! Empty( hbmk[ "vars" ][ "aQRC_Src" ] ) - - IF ! Empty( hbmk[ "vars" ][ "cRCC_BIN" ] ) - - /* Execute 'rcc' commands on input files */ - - FOR EACH cSrc, cDst, cPRG IN hbmk[ "vars" ][ "aQRC_Src" ], hbmk[ "vars" ][ "aQRC_Dst" ], hbmk[ "vars" ][ "aQRC_PRG" ] - - IF hbmk[ "lINC" ] .AND. ! hbmk[ "lREBUILD" ] - lBuildIt := ! hb_FGetDateTime( cDst, @tDst ) .OR. ; - ! hb_FGetDateTime( cSrc, @tSrc ) .OR. ; - tSrc > tDst - ELSE - lBuildIt := .T. - ENDIF - - IF lBuildIt - - cCommand := hbmk[ "vars" ][ "cRCC_BIN" ] +; - " -binary" +; - " " + hbmk_FNameEscape( hbmk_PathSepToTarget( hbmk, cSrc ), hbmk[ "nCmd_Esc" ], hbmk[ "nCmd_FNF" ] ) +; - " -o " + hbmk_FNameEscape( hbmk_PathSepToTarget( hbmk, cDst ), hbmk[ "nCmd_Esc" ], hbmk[ "nCmd_FNF" ] ) - - IF hbmk[ "lTRACE" ] - IF ! hbmk[ "lQUIET" ] - hbmk_OutStd( hbmk, I_( "'rcc' command:" ) ) - ENDIF - hbmk_OutStdRaw( hbmk, cCommand ) - ENDIF - - IF ! hbmk[ "lDONTEXEC" ] - IF ( nError := hb_processRun( cCommand ) ) != 0 - hbmk_OutErr( hbmk, hb_StrFormat( I_( "Error: Running 'rcc' executable. %1$d" ), nError ) ) - IF ! hbmk[ "lQUIET" ] - hbmk_OutErrRaw( hbmk, cCommand ) - ENDIF - IF ! hbmk[ "lIGNOREERROR" ] - cRetVal := "error" - EXIT - ENDIF - ELSE - /* Create little .prg stub which includes the binary */ - cTmp := "/* WARNING: Automatically generated source file. DO NOT EDIT! */" + hb_eol() +; - hb_eol() +; - "#pragma -km+" + hb_eol() +; - hb_eol() +; - "FUNCTION hbqtres_" + hbmk_FNameToSymbol( hb_FNameName( cSrc ) ) + "()" + hb_eol() +; - " #pragma __binarystreaminclude " + Chr( 34 ) + hb_FNameNameExt( cDst ) + Chr( 34 ) + " | RETURN %s" + hb_eol() - - IF ! hb_MemoWrit( cPRG, cTmp ) - hbmk_OutErr( hbmk, hb_StrFormat( "Error: Cannot create file: %1$s", cPRG ) ) - IF ! hbmk[ "lIGNOREERROR" ] - cRetVal := "error" - EXIT - ENDIF - ENDIF - ENDIF - ENDIF - ENDIF - NEXT - ENDIF - ENDIF - - IF ! hbmk[ "lCLEAN" ] .AND. ; - ! Empty( hbmk[ "vars" ][ "aUIC_Src" ] ) - - IF ! Empty( hbmk[ "vars" ][ "cUIC_BIN" ] ) - - /* Execute 'uic' commands on input files */ - - FOR EACH cSrc, cDst IN hbmk[ "vars" ][ "aUIC_Src" ], hbmk[ "vars" ][ "aUIC_Dst" ] - - IF hbmk[ "lINC" ] .AND. ! hbmk[ "lREBUILD" ] - lBuildIt := ! hb_FGetDateTime( cDst, @tDst ) .OR. ; - ! hb_FGetDateTime( cSrc, @tSrc ) .OR. ; - tSrc > tDst - ELSE - lBuildIt := .T. - ENDIF - - IF lBuildIt - - FClose( hb_FTempCreateEx( @cTmp ) ) - - cCommand := hbmk[ "vars" ][ "cUIC_BIN" ] +; - " " + hbmk_FNameEscape( hbmk_PathSepToTarget( hbmk, cSrc ), hbmk[ "nCmd_Esc" ], hbmk[ "nCmd_FNF" ] ) +; - " -o " + hbmk_FNameEscape( cTmp, hbmk[ "nCmd_Esc" ], hbmk[ "nCmd_FNF" ] ) - - IF hbmk[ "lTRACE" ] - IF ! hbmk[ "lQUIET" ] - hbmk_OutStd( hbmk, I_( "'uic' command:" ) ) - ENDIF - hbmk_OutStdRaw( hbmk, cCommand ) - ENDIF - - IF ! hbmk[ "lDONTEXEC" ] - IF ( nError := hb_processRun( cCommand ) ) != 0 - hbmk_OutErr( hbmk, hb_StrFormat( I_( "Error: Running 'uic' executable. %1$d" ), nError ) ) - IF ! hbmk[ "lQUIET" ] - hbmk_OutErrRaw( hbmk, cCommand ) - ENDIF - IF ! hbmk[ "lIGNOREERROR" ] - FErase( cTmp ) - cRetVal := "error" - EXIT - ENDIF - ELSE - IF ! uic_to_prg( hbmk, cTmp, cDst, hbmk_FNameToSymbol( hb_FNameName( cSrc ) ) ) - IF ! hbmk[ "lIGNOREERROR" ] - FErase( cTmp ) - cRetVal := "error" - EXIT - ENDIF - ENDIF - ENDIF - ENDIF - FErase( cTmp ) - ENDIF - NEXT - ENDIF - ENDIF - - EXIT - - CASE "pre_c" - - IF ! hbmk[ "lCLEAN" ] .AND. ; - ! Empty( hbmk[ "vars" ][ "aQTH_Src" ] ) - - IF ! Empty( hbmk[ "vars" ][ "qtmodule" ] ) .AND. ; - ! Empty( hbmk[ "vars" ][ "qtver" ] ) - - FOR EACH cSrc, cDstCPP, cDstDOC IN hbmk[ "vars" ][ "aQTH_Src" ], hbmk[ "vars" ][ "aQTH_CPP" ], hbmk[ "vars" ][ "aQTH_DOC" ] - - IF hbmk[ "lINC" ] .AND. ! hbmk[ "lREBUILD" ] - lBuildIt := ! hb_FGetDateTime( cDstCPP, @tDstCPP ) .OR. ; - ! hb_FGetDateTime( cSrc, @tSrc ) .OR. ; - tSrc > tDstCPP - ELSE - lBuildIt := .T. - ENDIF - - IF lBuildIt - IF ! hbmk[ "lDONTEXEC" ] - IF ! qth_to_src( cSrc, cDstCPP, cDstDOC, hbmk[ "vars" ][ "qtmodule" ], hbmk[ "vars" ][ "qtver" ] ) - IF ! hbmk[ "lIGNOREERROR" ] - cRetVal := "error" - EXIT - ENDIF - ENDIF - ENDIF - ENDIF - NEXT - ELSE - hbmk_OutErr( hbmk, I_( "Error: Qt module or version not specified." ) ) - cRetVal := "error" - ENDIF - ENDIF - - IF ! hbmk[ "lCLEAN" ] .AND. ; - ! Empty( hbmk[ "vars" ][ "aMOC_Src" ] ) - - IF ! Empty( hbmk[ "vars" ][ "cMOC_BIN" ] ) - - /* Execute 'moc' commands on input files */ - - FOR EACH cSrc, cDst IN hbmk[ "vars" ][ "aMOC_Src" ], hbmk[ "vars" ][ "aMOC_Dst" ] - - IF hbmk[ "lINC" ] .AND. ! hbmk[ "lREBUILD" ] - lBuildIt := ! hb_FGetDateTime( cDst, @tDst ) .OR. ; - ! hb_FGetDateTime( cSrc, @tSrc ) .OR. ; - tSrc > tDst - ELSE - lBuildIt := .T. - ENDIF - - IF lBuildIt - - cCommand := hbmk[ "vars" ][ "cMOC_BIN" ] +; - " " + hbmk_FNameEscape( hbmk_PathSepToTarget( hbmk, cSrc ), hbmk[ "nCmd_Esc" ], hbmk[ "nCmd_FNF" ] ) +; - " -o " + hbmk_FNameEscape( hbmk_PathSepToTarget( hbmk, cDst ), hbmk[ "nCmd_Esc" ], hbmk[ "nCmd_FNF" ] ) - - IF hbmk[ "lTRACE" ] - IF ! hbmk[ "lQUIET" ] - hbmk_OutStd( hbmk, I_( "'moc' command:" ) ) - ENDIF - hbmk_OutStdRaw( hbmk, cCommand ) - ENDIF - - IF ! hbmk[ "lDONTEXEC" ] .AND. ( nError := hb_processRun( cCommand ) ) != 0 - hbmk_OutErr( hbmk, hb_StrFormat( I_( "Error: Running 'moc' executable. %1$d" ), nError ) ) - IF ! hbmk[ "lQUIET" ] - hbmk_OutErrRaw( hbmk, cCommand ) - ENDIF - IF ! hbmk[ "lIGNOREERROR" ] - cRetVal := "error" - EXIT - ENDIF - ENDIF - ENDIF - NEXT - ENDIF - ENDIF - - EXIT - - CASE "post_all" - - IF ! hbmk[ "lINC" ] .OR. hbmk[ "lCLEAN" ] - AEval( hbmk[ "vars" ][ "aQRC_Dst" ], {| tmp | FErase( tmp ) } ) - AEval( hbmk[ "vars" ][ "aQRC_PRG" ], {| tmp | FErase( tmp ) } ) - AEval( hbmk[ "vars" ][ "aUIC_Dst" ], {| tmp | FErase( tmp ) } ) - AEval( hbmk[ "vars" ][ "aMOC_Dst" ], {| tmp | FErase( tmp ) } ) - AEval( hbmk[ "vars" ][ "aQTH_CPP" ], {| tmp | FErase( tmp ) } ) - AEval( hbmk[ "vars" ][ "aQTH_DOC" ], {| tmp | FErase( tmp ) } ) - ENDIF - - EXIT - - ENDSWITCH - - RETURN cRetVal - -STATIC FUNCTION qt_tool_detect( hbmk, cName, cEnvQT, lPostfix ) - LOCAL cBIN - LOCAL aEnvList - LOCAL cStdErr - - IF ! HB_ISLOGICAL( lPostfix ) - lPostfix := .T. - ENDIF - - IF lPostfix - aEnvList := { "HB_QTPATH", "HB_QTPOSTFIX" } - ELSE - aEnvList := { "HB_QTPATH" } - ENDIF - - cBIN := GetEnv( cEnvQT ) - IF Empty( cBIN ) - - IF lPostfix - cName += GetEnv( "HB_QTPOSTFIX" ) - ENDIF - cName += hbmk[ "cCCEXT" ] - - IF Empty( GetEnv( "HB_QTPATH" ) ) .OR. ; - ! hb_FileExists( cBIN := hb_DirSepAdd( GetEnv( "HB_QTPATH" ) ) + cName ) - - #if defined( __PLATFORM__WINDOWS ) .OR. defined( __PLATFORM__OS2 ) - - hb_AIns( aEnvList, 1, "HB_WITH_QT", .T. ) - - IF ! Empty( GetEnv( "HB_WITH_QT" ) ) - - IF GetEnv( "HB_WITH_QT" ) == "no" - /* Return silently. It shall fail at dependency detection inside hbmk2 */ - RETURN NIL - ELSE - IF ! hb_FileExists( cBIN := hb_PathNormalize( hb_DirSepAdd( GetEnv( "HB_WITH_QT" ) ) + "..\bin\" + cName ) ) - hbmk_OutErr( hbmk, hb_StrFormat( "Warning: HB_WITH_QT points to incomplete QT installation. '%1$s' executable not found.", cName ) ) - cBIN := "" - ENDIF - ENDIF - ELSE - cBIN := hb_DirSepAdd( hb_DirBase() ) + cName - IF ! hb_FileExists( cBIN ) - cBIN := "" - ENDIF - ENDIF - #else - cBIN := "" - #endif - - IF Empty( cBIN ) - cBIN := hbmk_FindInPath( cName, GetEnv( "PATH" ) + hb_osPathListSeparator() + "/opt/qtsdk/qt/bin" ) - IF Empty( cBIN ) - hbmk_OutErr( hbmk, hb_StrFormat( "%1$s not set, could not autodetect '%2$s' executable", hbmk_ArrayToList( aEnvList, ", " ), cName ) ) - RETURN NIL - ENDIF - ENDIF - ENDIF - IF hbmk[ "lINFO" ] - cStdErr := "" - IF ! hbmk[ "lDONTEXEC" ] - hb_processRun( cBIN + " -v",,, @cStdErr ) - IF ! Empty( cStdErr ) - cStdErr := " [" + StrTran( StrTran( cStdErr, Chr( 13 ) ), Chr( 10 ) ) + "]" - ENDIF - ENDIF - hbmk_OutStd( hbmk, hb_StrFormat( "Using QT '%1$s' executable: %2$s%3$s (autodetected)", cName, cBIN, cStdErr ) ) - ENDIF - ENDIF - - RETURN cBIN - -#else - -/* Standalone test code conversions */ -PROCEDURE Main( cSrc ) - LOCAL cTmp - LOCAL nError - LOCAL cExt - LOCAL aFile - LOCAL cFN - - IF cSrc != NIL - - hb_FNameSplit( cSrc,,, @cExt ) - - SWITCH Lower( cExt ) - CASE ".ui" - - FClose( hb_FTempCreateEx( @cTmp ) ) - - IF ( nError := hb_processRun( "uic " + cSrc + " -o " + cTmp ) ) == 0 - IF ! uic_to_prg( NIL, cTmp, cSrc + ".prg", "TEST" ) - nError := 9 - ENDIF - ELSE - OutErr( "Error: Calling 'uic' tool: " + hb_ntos( nError ) + hb_eol() ) - ENDIF - - FErase( cTmp ) - EXIT - - CASE ".qth" - - FOR EACH aFile IN Directory( cSrc ) - cFN := hb_FNameMerge( FNameDirGet( cSrc ), aFile[ F_NAME ] ) - qth_to_src( cFN, cFN + ".cpp", cFN + ".txt", "QtModule", "0x040500" ) - NEXT - - EXIT - - ENDSWITCH - ELSE - OutErr( "Missing parameter. Call with: " + hb_eol() ) - nError := 8 - ENDIF - - ErrorLevel( nError ) - - RETURN - -STATIC FUNCTION FNameDirGet( cFileName ) - LOCAL cDir - - hb_FNameSplit( cFileName, @cDir ) - - RETURN cDir - -STATIC FUNCTION hbmk_OutStd( hbmk, ... ) - HB_SYMBOL_UNUSED( hbmk ) - RETURN OutStd( ... ) - -STATIC FUNCTION hbmk_OutErr( hbmk, ... ) - HB_SYMBOL_UNUSED( hbmk ) - RETURN OutErr( ... ) - -#endif - -/* ----------------------------------------------------------------------- */ - -STATIC FUNCTION uic_to_prg( hbmk, cFileNameSrc, cFileNameDst, cName ) - LOCAL aLinesPRG - LOCAL cFile - - IF hb_FileExists( cFileNameSrc ) - IF ! Empty( cFile := hb_MemoRead( cFileNameSrc ) ) - IF ! Empty( aLinesPRG := hbqtui_gen_prg( cFile, "hbqtui_" + cName ) ) - cFile := "" - AEval( aLinesPRG, {| cLine | cFile += cLine + hb_eol() } ) - IF hb_MemoWrit( cFileNameDst, cFile ) - RETURN .T. - ELSE - hbmk_OutErr( hbmk, hb_StrFormat( "Error: Cannot create file: %1$s", cFileNameDst ) ) - ENDIF - ELSE - hbmk_OutErr( hbmk, hb_StrFormat( "Error: Intermediate file (%1$s) is not an .uic file.", cFileNameSrc ) ) - ENDIF - ELSE - hbmk_OutErr( hbmk, hb_StrFormat( "Error: Intermediate file (%1$s) empty or cannot be read.", cFileNameSrc ) ) - ENDIF - ELSE - hbmk_OutErr( hbmk, hb_StrFormat( "Error: Cannot find intermediate file: %1$s", cFileNameSrc ) ) - ENDIF - - RETURN .F. - -/* ----------------------------------------------------------------------- */ - -#define HBQTUI_STRINGIFY( cStr ) '"' + cStr + '"' -#define HBQTUI_PAD_30( cStr ) PadR( cStr, Max( Len( cStr ), 35 ) ) -#define HBQTUI_STRIP_SQ( cStr ) StrTran( StrTran( StrTran( StrTran( cStr, "[", " " ), "]", " " ), "\n", " " ), Chr( 10 ), " " ) - -STATIC FUNCTION hbqtui_gen_prg( cFile, cFuncName ) - LOCAL s - LOCAL n - LOCAL n1 - LOCAL cCls - LOCAL cNam - LOCAL lCreateFinished - LOCAL cMCls - LOCAL cMNam - LOCAL cText - LOCAL cCmd - LOCAL aReg - LOCAL aLinesPRG - LOCAL aMethodCalls := { { "QObject_connect( ", {| s | hbqtui_qobject_connect( s ) } } } - - LOCAL regEx := hb_regexComp( "\bQ[A-Za-z_]+ \b" ) - - LOCAL aLines := hb_ATokens( StrTran( cFile, Chr( 13 ) ), Chr( 10 ) ) - - LOCAL aWidgets := {} - LOCAL aCommands := {} - LOCAL aCalls := {} - - lCreateFinished := .F. - - /* Pullout the widget */ - n := AScan( aLines, {| e | "void setupUi" $ e } ) - IF n == 0 - RETURN NIL - ENDIF - s := AllTrim( aLines[ n ] ) - n := At( "*", s ) - cMCls := AllTrim( SubStr( s, 1, n - 1 ) ) - cMNam := AllTrim( SubStr( s, n + 1 ) ) - hbqtui_stripFront( @cMCls, "(" ) - hbqtui_stripRear( @cMNam, ")" ) - - AAdd( aWidgets, { cMCls, cMNam, cMCls + "()", cMCls + "()" } ) - - /* Normalize */ - FOR EACH s IN aLines - s := AllTrim( s ) - IF Right( s, 1 ) == ";" - s := SubStr( s, 1, Len( s ) - 1 ) - ENDIF - IF Left( s, 1 ) $ "/,*,{,}" - s := "" - ENDIF - NEXT - - FOR EACH s IN aLines - - IF ! Empty( s ) - - /* Replace Qt::* with actual values */ - hbqtui_replaceConstants( @s ) - - IF "setupUi" $ s - lCreateFinished := .T. - - ELSEIF Left( s, 4 ) == "if (" - /* It is the test for main widget's objectName, leave it. */ - - ELSEIF Left( s, 1 ) == "Q" .AND. ! lCreateFinished .AND. ( n := At( "*", s ) ) > 0 - HB_SYMBOL_UNUSED( n ) - /* We will deal later - just skip */ - - ELSEIF hbqtui_notAString( s ) .AND. ! Empty( aReg := hb_regex( regEx, s ) ) - cCls := RTrim( aReg[ 1 ] ) - s := AllTrim( StrTran( s, cCls, "",, 1 ) ) - IF ( n := At( "(", s ) ) > 0 - cNam := SubStr( s, 1, n - 1 ) - AAdd( aWidgets, { cCls, cNam, cCls + "()", cCls + SubStr( s, n ) } ) - ELSE - cNam := s - AAdd( aWidgets, { cCls, cNam, cCls + "()", cCls + "()" } ) - ENDIF - - ELSEIF hbqtui_isNonImplementedMethod( s ) - /* Do nothing */ - - ELSEIF ( n := hbqtui_isSupportedMethodCall( s, aMethodCalls ) ) > 0 - AAdd( aCalls, Eval( aMethodCalls[ n ][ 2 ], s ) ) - - ELSEIF ! Empty( cText := hbqtui_pullSetToolTip( aLines, s:__enumIndex() ) ) - n := At( "->", cText ) - cNam := AllTrim( SubStr( cText, 1, n - 1 ) ) - cCmd := hbqtui_formatCommand( SubStr( cText, n + 2 ), .T., aWidgets ) - AAdd( aCommands, { cNam, hbqtui_pullTranslate( cCmd ) } ) - - ELSEIF ! Empty( cText := hbqtui_pullText( aLines, s:__enumIndex() ) ) - n := At( "->", cText ) - cNam := AllTrim( SubStr( cText, 1, n - 1 ) ) - cCmd := hbqtui_formatCommand( SubStr( cText, n + 2 ), .T., aWidgets ) - AAdd( aCommands, { cNam, hbqtui_pullTranslate( cCmd ) } ) - - ELSEIF hbqtui_isValidCmdLine( s ) .AND. !( "->" $ s ) .AND. ( ( n := At( ".", s ) ) > 0 ) /* Assignment to objects on stack */ - cNam := SubStr( s, 1, n - 1 ) - cCmd := SubStr( s, n + 1 ) - cCmd := hbqtui_formatCommand( cCmd, .F., aWidgets ) - cCmd := hbqtui_setObjects( cCmd, aWidgets ) - cCmd := hbqtui_setObjects( cCmd, aWidgets ) - AAdd( aCommands, { cNam, cCmd } ) - - ELSEIF !( Left( s, 1 ) $ '#/*"' ) .AND. ; /* Assignment with properties from objects */ - ( n := At( ".", s ) ) > 0 .AND. ; - At( "->", s ) > n - cNam := SubStr( s, 1, n - 1 ) - cCmd := SubStr( s, n + 1 ) - cCmd := hbqtui_formatCommand( cCmd, .F., aWidgets ) - cCmd := hbqtui_setObjects( cCmd, aWidgets ) - cCmd := hbqtui_setObjects( cCmd, aWidgets ) - AAdd( aCommands, { cNam, cCmd } ) - - ELSEIF ( n := At( "->", s ) ) > 0 /* Assignments or calls to objects on heap */ - cNam := SubStr( s, 1, n - 1 ) - cCmd := hbqtui_formatCommand( SubStr( s, n + 2 ), .F., aWidgets ) - cCmd := hbqtui_setObjects( cCmd, aWidgets ) - AAdd( aCommands, { cNam, hbqtui_pullTranslate( cCmd ) } ) - - ELSEIF ( n := At( "= new", s ) ) > 0 - IF ( n1 := At( "*", s ) ) > 0 .AND. n1 < n - s := AllTrim( SubStr( s, n1 + 1 ) ) - ENDIF - n := At( "= new", s ) - cNam := AllTrim( SubStr( s, 1, n - 1 ) ) - cCmd := AllTrim( SubStr( s, n + Len( "= new" ) ) ) - cCmd := hbqtui_setObjects( cCmd, aWidgets ) - n := At( "(", cCmd ) - cCls := SubStr( cCmd, 1, n - 1 ) - AAdd( aWidgets, { cCls, cNam, cCls + "()", cCls + SubStr( cCmd, n ) } ) - - ENDIF - ENDIF - NEXT - - aLinesPRG := {} - - AAdd( aLinesPRG, "/* WARNING: Automatically generated source file. DO NOT EDIT! */" ) - AAdd( aLinesPRG, "" ) - AAdd( aLinesPRG, '#include "hbqtgui.ch"' ) - AAdd( aLinesPRG, '#include "hbclass.ch"' ) - AAdd( aLinesPRG, '#include "error.ch"' ) - AAdd( aLinesPRG, "" ) - AAdd( aLinesPRG, "" ) - AAdd( aLinesPRG, "FUNCTION " + cFuncName + "( oParent )" ) - AAdd( aLinesPRG, " RETURN " + StrTran( cFuncName, "hbqtui_", "ui_" ) + "():new( oParent )" ) - AAdd( aLinesPRG, "" ) - - hbqtui_buildClassCode( cFuncName, cMCls, aWidgets, aCommands, aCalls, aLinesPRG ) - - RETURN aLinesPRG - -STATIC FUNCTION hbqtui_buildClassCode( cFuncName, cMCls, aWidgets, aCommands, aCalls, aLinesPRG ) - LOCAL item, cClass, cNam, cCmd - - cClass := strtran( cFuncName, "hbqtui_", "ui_" ) - - AAdd( aLinesPRG, "" ) - AAdd( aLinesPRG, "CREATE CLASS " + cClass ) - AAdd( aLinesPRG, "" ) - AAdd( aLinesPRG, " VAR oWidget" ) - AAdd( aLinesPRG, "" ) - FOR EACH item IN aWidgets - AAdd( aLinesPRG, " VAR " + item[ 2 ] ) - NEXT - AAdd( aLinesPRG, "" ) - AAdd( aLinesPRG, " METHOD init( oParent )" ) - AAdd( aLinesPRG, " METHOD destroy() INLINE ::oWidget:setParent( QWidget() )" ) - AAdd( aLinesPRG, "" ) - AAdd( aLinesPRG, " ERROR HANDLER __OnError( ... )" ) - AAdd( aLinesPRG, "" ) - FOR EACH item IN aWidgets - IF At( "QAction", item[ 1 ] ) > 0 - AAdd( aLinesPRG, " MESSAGE " + PadR( item[ 2 ] + "_triggered()", max( 38, Len( item[ 2 ] + "_triggered()" ) ) ) + " VIRTUAL" ) - ENDIF - NEXT - AAdd( aLinesPRG, "" ) - AAdd( aLinesPRG, "ENDCLASS" ) - AAdd( aLinesPRG, "" ) - AAdd( aLinesPRG, "" ) - AAdd( aLinesPRG, "METHOD " + cClass + ":" + "init( oParent )" ) - AAdd( aLinesPRG, "" ) - SWITCH cMCls - CASE "QDialog" - AAdd( aLinesPRG, " ::oWidget := QDialog( oParent )" ) - EXIT - CASE "QWidget" - AAdd( aLinesPRG, " ::oWidget := QWidget( oParent )" ) - EXIT - CASE "QMainWindow" - AAdd( aLinesPRG, " ::oWidget := QMainWindow( oParent )" ) - EXIT - ENDSWITCH - AAdd( aLinesPRG, "" ) - - FOR EACH item IN aWidgets - IF item:__enumIndex() > 1 - AAdd( aLinesPRG, " ::" + PadR( item[ 2 ], 34 ) + " := " + hbqtui_hashToObj( item[ 4 ] ) ) - ELSE - AAdd( aLinesPRG, " ::" + PadR( item[ 2 ], 34 ) + " := " + "::oWidget" ) - AAdd( aLinesPRG, "" ) - ENDIF - NEXT - AAdd( aLinesPRG, "" ) - - FOR EACH item IN aCommands - cNam := item[ 1 ] - cCmd := item[ 2 ] - cCmd := StrTran( cCmd, "true" , ".T." ) - cCmd := StrTran( cCmd, "false", ".F." ) - - IF "setToolTip(" $ cCmd - AAdd( aLinesPRG, " ::" + HBQTUI_PAD_30( cNam ) + ": " + hbqtui_pullTranslate( cCmd ) ) - - ELSEIF "setPlainText(" $ cCmd - AAdd( aLinesPRG, " ::" + HBQTUI_PAD_30( cNam ) + ": " + cCmd ) - - ELSEIF "setStyleSheet(" $ cCmd - hbqtui_stripFront( @cCmd, "(" ) - hbqtui_stripRear( @cCmd, ")" ) - AAdd( aLinesPRG, " ::" + HBQTUI_PAD_30( cNam ) + ": setStyleSheet( " + HBQTUI_STRIP_SQ( cCmd ) + " )" ) - - ELSEIF "setText(" $ cCmd - AAdd( aLinesPRG, " ::" + HBQTUI_PAD_30( cNam ) + ": " + hbqtui_pullTranslate( cCmd ) ) - - ELSEIF "setWhatsThis(" $ cCmd - AAdd( aLinesPRG, " ::" + HBQTUI_PAD_30( cNam ) + ": " + hbqtui_pullTranslate( cCmd ) ) - - ELSEIF "header()->" $ cCmd - /* TODO: how to handle : __qtreeviewitem->header()->setVisible( .F. ) */ - ELSEIF cCmd == "pPtr" - /* Nothing TO DO */ - ELSE - AAdd( aLinesPRG, " ::" + HBQTUI_PAD_30( cNam ) + ": " + hbqtui_hashToObj( cCmd ) ) - - ENDIF - NEXT - AAdd( aLinesPRG, "" ) - - FOR EACH item IN aWidgets - IF item[ 1 ] == "QAction" - AAdd( aLinesPRG, " ::" + HBQTUI_PAD_30( item[ 2 ] ) + ": connect( " + '"triggered()", {|| ::' + item[ 2 ] + "_triggered() } )" ) - ENDIF - NEXT - - /* supported method calls */ - AAdd( aLinesPRG, "" ) - FOR EACH item IN aCalls - AAdd( aLinesPRG, " " + item ) - NEXT - - AAdd( aLinesPRG, "" ) - AAdd( aLinesPRG, " RETURN Self" ) - AAdd( aLinesPRG, "" ) - AAdd( aLinesPRG, "" ) - AAdd( aLinesPRG, "METHOD " + cClass + ":__OnError( ... )" ) - AAdd( aLinesPRG, " LOCAL cMsg := __GetMessage()" ) - AAdd( aLinesPRG, " LOCAL oError" ) - AAdd( aLinesPRG, "" ) - AAdd( aLinesPRG, ' IF SubStr( cMsg, 1, 1 ) == "_"' ) - AAdd( aLinesPRG, " cMsg := SubStr( cMsg, 2 )" ) - AAdd( aLinesPRG, " ENDIF" ) - AAdd( aLinesPRG, "" ) - AAdd( aLinesPRG, ' IF Left( cMsg, 2 ) == "Q_"' ) - AAdd( aLinesPRG, " IF __objHasMsg( Self, SubStr( cMsg, 3 ) )" ) - AAdd( aLinesPRG, " cMsg := SubStr( cMsg, 3 )" ) - AAdd( aLinesPRG, " RETURN ::&cMsg" ) - AAdd( aLinesPRG, " ELSE" ) - AAdd( aLinesPRG, " oError := ErrorNew()" ) - AAdd( aLinesPRG, " oError:severity := ES_ERROR" ) - AAdd( aLinesPRG, " oError:genCode := EG_ARG" ) - AAdd( aLinesPRG, ' oError:subSystem := "HBQT" ' ) - AAdd( aLinesPRG, " oError:subCode := 1001" ) - AAdd( aLinesPRG, " oError:canRetry := .F." ) - AAdd( aLinesPRG, " oError:canDefault := .F." ) - AAdd( aLinesPRG, " oError:Args := hb_AParams()" ) - AAdd( aLinesPRG, " oError:operation := ProcName()" ) - AAdd( aLinesPRG, ' oError:Description := "Control <" + SubStr( cMsg, 3 ) + "> does not exist"' ) - AAdd( aLinesPRG, "" ) - AAdd( aLinesPRG, " Eval( ErrorBlock(), oError )" ) - AAdd( aLinesPRG, " ENDIF" ) - AAdd( aLinesPRG, " ELSEIF ! empty( ::oWidget )" ) - AAdd( aLinesPRG, " RETURN ::oWidget:&cMsg( ... )" ) - AAdd( aLinesPRG, " ENDIF" ) - AAdd( aLinesPRG, "" ) - AAdd( aLinesPRG, " RETURN NIL" ) - AAdd( aLinesPRG, "" ) - - RETURN NIL - -STATIC FUNCTION hbqtui_hashToObj( cCmd ) - LOCAL n, n1 - - DO WHILE .T. - IF ( n := at( 'o[ "', cCmd ) ) == 0 - EXIT - ENDIF - n1 := hb_at( '" ]', cCmd, n ) - cCmd := SubStr( cCmd, 1, n - 1 ) + " ::" + SubStr( cCmd, n + 4, n1 - n - 4 ) + " " + SubStr( cCmd, n1 + 3 ) - ENDDO - - RETURN cCmd - -STATIC FUNCTION hbqtui_formatCommand( cCmd, lText, widgets ) - LOCAL regDefine - LOCAL aDefine - LOCAL n - LOCAL n1 - LOCAL cNam - LOCAL cCmd1 - - STATIC s_nn := 100 - - IF lText == NIL - lText := .T. - ENDIF - - cCmd := StrTran( cCmd, "QString()", ' "" ' ) - - IF "::" $ cCmd - regDefine := hb_regexComp( "\b[A-Za-z_]+\:\:[A-Za-z0-9_]+\b" ) - aDefine := hb_regex( regDefine, cCmd ) - IF ! Empty( aDefine ) - cCmd := StrTran( cCmd, "::", "_" ) /* Qt Defines - how to handle */ - ENDIF - ENDIF - - IF ! lText .AND. At( ".", cCmd ) > 0 - /* sizePolicy setHeightForWidth(ProjectProperties->sizePolicy().hasHeightForWidth()); */ - IF ( At( "setHeightForWidth(", cCmd ) ) > 0 - cNam := "__qsizePolicy" + hb_ntos( ++s_nn ) - n := At( "(", cCmd ) - n1 := At( ".", cCmd ) - cCmd1 := hbqtui_setObjects( SubStr( cCmd, n + 1, n1 - n - 1 ), widgets ) - cCmd1 := StrTran( cCmd1, "->", ":" ) - AAdd( widgets, { "QSizePolicy", cNam, "QSizePolicy()", "QSizePolicy(" + cCmd1 + ")" } ) - cCmd := 'setHeightForWidth(o[ "' + cNam + '" ]:' + SubStr( cCmd, n1 + 1 ) - ENDIF - ENDIF - - RETURN cCmd - -STATIC FUNCTION hbqtui_pullTranslate( cCmd ) - LOCAL n, n1, n2, n3, n4, cArgs, cText - LOCAL cName - LOCAL cEnd - LOCAL cDisamb - LOCAL oError - - /* Examples: - object->setWindowTitle(QApplication_translate("DialogName", "[Dialog Title]\"\303\263Title\"", 0, QApplication_UnicodeUTF8)) - object->setWindowTitle(QApplication::translate("FormEnvironments", "Form", 0, QApplication::UnicodeUTF8)); - object->setToolTip(QString()); - object->setWhatsThis(QApplication::translate("FormEnvironments", "\n" - "\n" - "