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
This commit is contained in:
Viktor Szakats
2012-09-27 10:14:50 +00:00
parent 3aa177ad9a
commit 4e428f3bc3
1172 changed files with 11 additions and 154973 deletions

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -1,508 +0,0 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
*
* Copyright 2011 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.
*
*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*
* EkOnkar
* ( The LORD is ONE )
*
* Harbour-Qt IDE
*
* Pritpal Bedi <bedipritpal@hotmail.com>
* 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
/*----------------------------------------------------------------------*/

View File

@@ -1,286 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>FormChangelog</class>
<widget class="QWidget" name="FormChangelog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>454</width>
<height>674</height>
</rect>
</property>
<property name="windowTitle">
<string>Manage ChangeLog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>ChangeLog File</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="QLineEdit" name="editChangelog"/>
</item>
<item>
<widget class="QToolButton" name="buttonOpen">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonNew">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>User:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="editUser"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>180</height>
</size>
</property>
<property name="title">
<string> Build Log Entry</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="margin">
<number>0</number>
</property>
<item row="1" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Title</string>
</property>
</widget>
</item>
<item row="1" column="1" colspan="3">
<widget class="QComboBox" name="comboTitle">
<property name="editable">
<bool>true</bool>
</property>
<property name="insertPolicy">
<enum>QComboBox::InsertAlphabetically</enum>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Source:</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Action:</string>
</property>
</widget>
</item>
<item row="4" column="3">
<widget class="QComboBox" name="comboAction"/>
</item>
<item row="5" column="0" colspan="4">
<widget class="QPlainTextEdit" name="plainCurrentLog">
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
</item>
<item row="6" column="0" colspan="4">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QPushButton" name="buttonTitle">
<property name="text">
<string>Title</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonSource">
<property name="text">
<string>Source</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonDesc">
<property name="text">
<string>Description</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonSrcDesc">
<property name="text">
<string>Source + Desc</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="buttonClearDesc">
<property name="text">
<string>Clear Desc</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="4" column="1">
<widget class="QComboBox" name="comboSources">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="editable">
<bool>true</bool>
</property>
<property name="insertPolicy">
<enum>QComboBox::InsertAlphabetically</enum>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>200</height>
</size>
</property>
<property name="title">
<string>Current Log Entry</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="QPlainTextEdit" name="plainLogEntry">
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_5">
<property name="title">
<string/>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="margin">
<number>0</number>
</property>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="buttonCancel">
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonSave">
<property name="text">
<string>Save</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_4">
<property name="title">
<string>ChangeLog Contents</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="HBQPlainTextEdit" name="plainChangelog">
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>HBQPlainTextEdit</class>
<extends>QPlainTextEdit</extends>
<header>hbqplaintextedit.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

@@ -1,447 +0,0 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
*
* Copyright 2009-2010 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.
*
*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*
* EkOnkar
* ( The LORD is ONE )
*
* Harbour-Qt IDE
*
* Pritpal Bedi <bedipritpal@hotmail.com>
* 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
/*----------------------------------------------------------------------*/

File diff suppressed because it is too large Load Diff

View File

@@ -1,131 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Does HbIDE support editing of sa</title>
<style>
<!--
p { white-space: pre-wrap; }
-->
</style>
</head>
<body>
<table border="0" style="margin: 0px" align="center" width="95%" cellspacing="2" cellpadding="0" id="table1">
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px">
<span style="font-size: large; color: #ff0000">Does HbIDE support
editing of same source at more than one place simultaneously ?</span>
</td>
</tr>
<tr>
<td>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px">
<span style="font-size: medium; color: #000000">Yes. HbIDE provides for
splitting an editing window, horizontally and vertically, both ways.
Right-click anywhere in the editor, point to &quot;Split...&quot; and then click
on required option.</span> </td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px">
<span style="font-size: large; color: #ff0000">Does HbIDE support
session management ?</span> </td>
</tr>
<tr>
<td>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px">
<span style="font-size: medium; color: #000000">Yes. And in a unique
way. It provides to construct n number of &quot;Panels&quot; 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 &quot;New...&quot; 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.</span> </td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px">
<span style="font-size: large; color: #ff0000">Does HbIDE allows to
compile a project for different compilers and/or environments ?</span>
</td>
</tr>
<tr>
<td>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px">
<span style="font-size: medium; color: #000000">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 &quot;Compiler Environments&quot;. Follow the input fields. A template is
provided in &quot;hbide.env&quot;, 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 &quot;Projects&quot;
tree and point to &quot;Select an environment&quot; and click on listed options.
Next step is just to build the project.</span> </td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px">
<span style="font-size: large; color: #ff0000">Can we keep any other
content in hbide.ini ?</span> </td>
</tr>
<tr>
<td>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px">
<span style="font-size: medium; color: #000000">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.</span> </td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px">
<span style="font-size: large; color: #ff0000">Does HbIDE provides &quot;intellisense&quot;
? If yes, in what aspects ?</span> </td>
</tr>
<tr>
<td>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px">
<span style="font-size: medium; color: #000000">Yes. Not so powerful
yet, but &quot;yes&quot;. 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 &quot;(&quot; 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. </span></td>
</tr>
</table>
</body>
</html>

View File

@@ -1,16 +0,0 @@
<!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:14pt; font-weight:600; text-decoration: underline; color:#00aa00;">hbIDE Help</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:14pt; font-weight:600; text-decoration: underline;"></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 effort may not bring desired results but hopefully solve some of the issues supporting the project.</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;"><a href="interfaceelements.html"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">Interface Elements</span></a></p>
<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="multiviews.html"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">Multi Views</span></a></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; text-decoration: underline; color:#0000ff;"></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;">Please bear with me if things appear to be simple.</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;">Pritpal Bedi</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></body></html>

View File

@@ -1,15 +0,0 @@
<!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:14pt;">Interface Elements</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:14pt; font-weight:600; text-decoration: underline;"></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;">hbIDE interface contains</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;">1. Main Frame</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;">2. Menubar</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;">3. Toolbar</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;">4. Statusbar</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;">5. Left docking Project Tree</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;">6. Left docking Tabs Tree</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>

View File

@@ -1,10 +0,0 @@
<!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:14pt; color:#00aa7f;">Multi Views</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:14pt; font-weight:600; text-decoration: underline;"></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;">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.</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="-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="-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>

View File

@@ -1,841 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>FormDocViewer</class>
<widget class="QWidget" name="FormDocViewer">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>645</width>
<height>557</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QToolButton" name="buttonHome">
<property name="text">
<string/>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonBackward">
<property name="text">
<string/>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonForward">
<property name="text">
<string/>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonUp">
<property name="text">
<string/>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonRefresh">
<property name="text">
<string/>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonPrint">
<property name="text">
<string/>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonPdf">
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonPdfAll">
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QToolButton" name="buttonExit">
<property name="text">
<string/>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="labelInstall">
<property name="text">
<string>Harbour Installation Root:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="editInstall"/>
</item>
<item>
<widget class="QToolButton" name="buttonInstall">
<property name="text">
<string/>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="labelDocPrefix">
<property name="text">
<string>Doc folder prefix:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="editDocPrefix">
<property name="maximumSize">
<size>
<width>70</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QTabWidget" name="tabWidgetContents">
<property name="maximumSize">
<size>
<width>185</width>
<height>16777215</height>
</size>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<property name="documentMode">
<bool>false</bool>
</property>
<widget class="QWidget" name="tabContents">
<attribute name="title">
<string>Topics</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTreeWidget" name="treeDoc">
<column>
<property name="text">
<string notr="true">1</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tabByName">
<attribute name="title">
<string>Index</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLineEdit" name="editIndex"/>
</item>
<item>
<widget class="QListWidget" name="listIndex"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="tabByCategory">
<attribute name="title">
<string>Category</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QTreeWidget" name="treeCategory">
<column>
<property name="text">
<string notr="true">1</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
</widget>
<widget class="QTabWidget" name="tabWidgetElements">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tabView">
<attribute name="title">
<string>View</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_8">
<item row="0" column="0">
<widget class="QTextBrowser" name="browserView"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="tabTests">
<attribute name="title">
<string>Write</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_12">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QFrame" name="frameButtons">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>30</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::Panel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>4</number>
</property>
<item>
<widget class="QToolButton" name="buttonLoadFromCurFunc">
<property name="toolTip">
<string>Load from current function</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonLoadFromDocFile">
<property name="toolTip">
<string>Load from .txt file</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonLoadFromSource">
<property name="toolTip">
<string>Load from source ( .prg,.c,.c++ ) file</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonArgs">
<property name="toolTip">
<string>Toggle Arguments Section</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonDesc">
<property name="toolTip">
<string>Toggle Descriptions Section</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonExamples">
<property name="toolTip">
<string>Toggle Examples Section</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonTests">
<property name="toolTip">
<string>Toggle Tests Section</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QToolButton" name="buttonSave">
<property name="toolTip">
<string>Save written/updated documentation</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QScrollArea" name="scrollArea">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>414</width>
<height>665</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<property name="spacing">
<number>3</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>9</number>
</property>
<item>
<widget class="QSplitter" name="splitter_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="handleWidth">
<number>2</number>
</property>
<widget class="QFrame" name="frameGeneral">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>268</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<layout class="QGridLayout" name="gridLayout_6">
<property name="topMargin">
<number>4</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>2</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="labelTemplate">
<property name="text">
<string>Template:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="labelVersion">
<property name="text">
<string>Version:</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="labelStatus">
<property name="text">
<string>Status:</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Compliance:</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QComboBox" name="comboTemplate"/>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="editVersion">
<property name="toolTip">
<string>Version of this document contents</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLineEdit" name="editStatus">
<property name="toolTip">
<string>Status should usually be described as one character</string>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QLineEdit" name="editCompliance">
<property name="toolTip">
<string>Describe comatibility with other language</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QLabel" name="labelCategory">
<property name="text">
<string>Category:</string>
</property>
</widget>
</item>
<item row="2" column="2" colspan="2">
<widget class="QLabel" name="labelSubCategory">
<property name="text">
<string>Sub-category:</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QLineEdit" name="editCategory">
<property name="toolTip">
<string>Category should describe main area this function belongs to</string>
</property>
</widget>
</item>
<item row="3" column="2" colspan="2">
<widget class="QLineEdit" name="editSubCategory"/>
</item>
<item row="4" column="0" colspan="2">
<widget class="QLabel" name="labelName">
<property name="text">
<string>Name:</string>
</property>
</widget>
</item>
<item row="4" column="2" colspan="2">
<widget class="QLabel" name="labelExtLink">
<property name="text">
<string>External Link:</string>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<widget class="QLineEdit" name="editName">
<property name="toolTip">
<string>Name of the function, and if appropriate, with open/close parenthis.</string>
</property>
</widget>
</item>
<item row="5" column="2" colspan="2">
<widget class="QLineEdit" name="editExtLink">
<property name="toolTip">
<string>External link, i.e., http://www.trolltech.com/</string>
</property>
</widget>
</item>
<item row="6" column="0" colspan="4">
<widget class="QLabel" name="labelOneLiner">
<property name="text">
<string>One Liner:</string>
</property>
</widget>
</item>
<item row="7" column="0" colspan="4">
<widget class="QLineEdit" name="editOneLiner">
<property name="toolTip">
<string>A brief description this function accomlishes</string>
</property>
</widget>
</item>
<item row="8" column="0" colspan="4">
<widget class="QLabel" name="labelSyntax">
<property name="text">
<string>Syntax:</string>
</property>
</widget>
</item>
<item row="9" column="0" colspan="4">
<widget class="QLineEdit" name="editSyntax">
<property name="toolTip">
<string>Syntax, or prototype as to how this function will be called</string>
</property>
</widget>
</item>
<item row="10" column="0" colspan="4">
<widget class="QLabel" name="labelReturns">
<property name="text">
<string>Returns:</string>
</property>
</widget>
</item>
<item row="11" column="0" colspan="4">
<widget class="QLineEdit" name="editReturns">
<property name="toolTip">
<string>Variable name with hungarian notation with brief description as what this function returns</string>
</property>
</widget>
</item>
<item row="12" column="0" colspan="4">
<widget class="QLabel" name="labelSeeAlso">
<property name="text">
<string>See Also:</string>
</property>
</widget>
</item>
<item row="13" column="0" colspan="4">
<widget class="QLineEdit" name="editSeeAlso">
<property name="toolTip">
<string>A comma separated list of related functions/keywords </string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QFrame" name="frameArgs">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_7">
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>2</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="labelArgs">
<property name="text">
<string>Arguments:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QToolButton" name="buttonCloseArgs">
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QPlainTextEdit" name="plainArgs">
<property name="toolTip">
<string>One argument per line in the form - argName description</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QFrame" name="frameDesc">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_9">
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>2</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="labelDesc">
<property name="text">
<string>Description:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QToolButton" name="buttonCloseDesc">
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QPlainTextEdit" name="plainDesc">
<property name="toolTip">
<string>Detailed description as musch as possible to convey to the user what should be kept in mind when this function is called.</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QFrame" name="frameExamples">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_10">
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>2</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="labelExamples">
<property name="text">
<string>Examples:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QToolButton" name="buttonCloseExamples">
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QPlainTextEdit" name="plainExamples">
<property name="toolTip">
<string>A real-time source code which could be compiled out of this box.</string>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QFrame" name="frameTests">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_11">
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>2</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="labelTests">
<property name="text">
<string>Tests:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QToolButton" name="buttonCloseTests">
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QPlainTextEdit" name="plainTests">
<property name="toolTip">
<string>Compilable code out of the box which could be used to test this function</string>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
</widget>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -1,730 +0,0 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
*
* Copyright 2010 Pritpal Bedi <pritpal@vouchcac.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.
*
*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*
* EkOnkar
* ( The LORD is ONE )
*
* Harbour-Qt IDE
*
* Pritpal Bedi <bedipritpal@hotmail.com>
* 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 } )
/*----------------------------------------------------------------------*/

View File

@@ -1,688 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>FormDocWriter</class>
<widget class="QWidget" name="FormDocWriter">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>445</width>
<height>584</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>0</number>
</property>
<item row="1" column="0" rowspan="2">
<widget class="QScrollArea" name="scrollArea">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>-78</y>
<width>423</width>
<height>657</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>3</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>9</number>
</property>
<item>
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="handleWidth">
<number>2</number>
</property>
<widget class="QFrame" name="frameGeneral">
<property name="minimumSize">
<size>
<width>0</width>
<height>300</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>300</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="topMargin">
<number>4</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>2</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="labelTemplate">
<property name="text">
<string>Template:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="labelVersion">
<property name="text">
<string>Version:</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="labelStatus">
<property name="text">
<string>Status:</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Compliance:</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QComboBox" name="comboTemplate"/>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="editVersion">
<property name="toolTip">
<string>Version of this document contents</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLineEdit" name="editStatus">
<property name="toolTip">
<string>Status should usually be described as one character</string>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QLineEdit" name="editCompliance">
<property name="toolTip">
<string>Describe comatibility with other language</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QLabel" name="labelCategory">
<property name="text">
<string>Category:</string>
</property>
</widget>
</item>
<item row="2" column="2" colspan="2">
<widget class="QLabel" name="labelSubCategory">
<property name="text">
<string>Sub-category:</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QLineEdit" name="editCategory">
<property name="toolTip">
<string>Category should describe main area this function belongs to</string>
</property>
</widget>
</item>
<item row="3" column="2" colspan="2">
<widget class="QLineEdit" name="editSubCategory"/>
</item>
<item row="4" column="0" colspan="2">
<widget class="QLabel" name="labelName">
<property name="text">
<string>Name:</string>
</property>
</widget>
</item>
<item row="4" column="2" colspan="2">
<widget class="QLabel" name="labelExtLink">
<property name="text">
<string>External Link:</string>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<widget class="QLineEdit" name="editName">
<property name="toolTip">
<string>Name of the function, and if appropriate, with open/close parenthis.</string>
</property>
</widget>
</item>
<item row="5" column="2" colspan="2">
<widget class="QLineEdit" name="editExtLink">
<property name="toolTip">
<string>External link, i.e., http://www.trolltech.com/</string>
</property>
</widget>
</item>
<item row="6" column="0" colspan="4">
<widget class="QLabel" name="labelOneLiner">
<property name="text">
<string>One Liner:</string>
</property>
</widget>
</item>
<item row="7" column="0" colspan="4">
<widget class="QLineEdit" name="editOneLiner">
<property name="toolTip">
<string>A brief description this function accomlishes</string>
</property>
</widget>
</item>
<item row="8" column="0" colspan="4">
<widget class="QLabel" name="labelSyntax">
<property name="text">
<string>Syntax:</string>
</property>
</widget>
</item>
<item row="9" column="0" colspan="4">
<widget class="QLineEdit" name="editSyntax">
<property name="toolTip">
<string>Syntax, or prototype as to how this function will be called</string>
</property>
</widget>
</item>
<item row="10" column="0" colspan="4">
<widget class="QLabel" name="labelReturns">
<property name="text">
<string>Returns:</string>
</property>
</widget>
</item>
<item row="11" column="0" colspan="4">
<widget class="QLineEdit" name="editReturns">
<property name="toolTip">
<string>Variable name with hungarian notation with brief description as what this function returns</string>
</property>
</widget>
</item>
<item row="12" column="0" colspan="4">
<widget class="QLabel" name="labelSeeAlso">
<property name="text">
<string>See Also:</string>
</property>
</widget>
</item>
<item row="13" column="0" colspan="4">
<widget class="QLineEdit" name="editSeeAlso">
<property name="toolTip">
<string>A comma separated list of related functions/keywords </string>
</property>
</widget>
</item>
<item row="14" column="0" colspan="4">
<widget class="QLabel" name="labelFiles">
<property name="text">
<string>Files:</string>
</property>
</widget>
</item>
<item row="15" column="0" colspan="4">
<widget class="QLineEdit" name="editFiles">
<property name="toolTip">
<string>A comma separated list of relevant files, i.e., hbrtl.lib, hbqt.lib.</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QFrame" name="frameArgs">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>2</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="labelArgs">
<property name="text">
<string>Arguments:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QToolButton" name="buttonCloseArgs">
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QPlainTextEdit" name="plainArgs">
<property name="toolTip">
<string>One argument per line in the form - argName description</string>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QFrame" name="frameDesc">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>2</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="labelDesc">
<property name="text">
<string>Description:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QToolButton" name="buttonCloseDesc">
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QPlainTextEdit" name="plainDesc">
<property name="toolTip">
<string>Detailed description as musch as possible to convey to the user what should be kept in mind when this function is called.</string>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QFrame" name="frameExamples">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>2</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="labelExamples">
<property name="text">
<string>Examples:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QToolButton" name="buttonCloseExamples">
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QPlainTextEdit" name="plainExamples">
<property name="toolTip">
<string>A real-time source code which could be compiled out of this box.</string>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QFrame" name="frameTests">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_6">
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>2</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="labelTests">
<property name="text">
<string>Tests:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QToolButton" name="buttonCloseTests">
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QPlainTextEdit" name="plainTests">
<property name="toolTip">
<string>Compilable code out of the box which could be used to test this function</string>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QFrame" name="frameButtons">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>30</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::Panel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>4</number>
</property>
<item>
<widget class="QToolButton" name="buttonLoadFromCurFunc">
<property name="toolTip">
<string>Load from current function</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonLoadFromDocFile">
<property name="toolTip">
<string>Load from .txt file</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonLoadFromSource">
<property name="toolTip">
<string>Load from source ( .prg,.c,.c++ ) file</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonArgs">
<property name="toolTip">
<string>Toggle Arguments Section</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonDesc">
<property name="toolTip">
<string>Toggle Descriptions Section</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonExamples">
<property name="toolTip">
<string>Toggle Examples Section</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonTests">
<property name="toolTip">
<string>Toggle Tests Section</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QToolButton" name="buttonClear">
<property name="toolTip">
<string>Clear form - note that it will not save current document.</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QToolButton" name="buttonSave">
<property name="toolTip">
<string>Save written/updated documentation</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonSaveInFunc">
<property name="toolTip">
<string>Save the documentation with function in source</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,89 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>413</width>
<height>522</height>
</rect>
</property>
<property name="windowTitle">
<string>Editor</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="8">
<widget class="QPlainTextEdit" name="plainText"/>
</item>
<item row="1" column="0" colspan="4">
<widget class="QLineEdit" name="ediSearch"/>
</item>
<item row="2" column="0">
<widget class="QToolButton" name="buttonNext">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QToolButton" name="buttonPrev">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QToolButton" name="buttonFirst">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QToolButton" name="buttonLast">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="2" column="7">
<widget class="QPushButton" name="buttonClose">
<property name="text">
<string>Close</string>
</property>
</widget>
</item>
<item row="2" column="4">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="6">
<widget class="QPushButton" name="buttonSave">
<property name="text">
<string>Save</string>
</property>
</widget>
</item>
<item row="2" column="5">
<widget class="QPushButton" name="buttonSaveAs">
<property name="text">
<string>SaveAs</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -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)"

View File

@@ -1,268 +0,0 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
*
* Copyright 2009-2010 Pritpal Bedi <pritpal@vouchcac.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.
*
*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*
* EkOnkar
* ( The LORD is ONE )
*
* Harbour-Qt IDE
*
* Pritpal Bedi <pritpal@vouchcac.com>
* 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
/*------------------------------------------------------------------------*/

View File

@@ -1,804 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>EnvForm</class>
<widget class="QWidget" name="EnvForm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>554</width>
<height>488</height>
</rect>
</property>
<property name="windowTitle">
<string>Environment</string>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>14</x>
<y>10</y>
<width>39</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Name:</string>
</property>
</widget>
<widget class="QComboBox" name="comboBox">
<property name="geometry">
<rect>
<x>10</x>
<y>28</y>
<width>197</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="pushButton_2">
<property name="geometry">
<rect>
<x>430</x>
<y>28</y>
<width>51</width>
<height>24</height>
</rect>
</property>
<property name="text">
<string>Copy</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_3">
<property name="geometry">
<rect>
<x>490</x>
<y>28</y>
<width>51</width>
<height>24</height>
</rect>
</property>
<property name="text">
<string>Paste</string>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>12</x>
<y>56</y>
<width>431</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Batch Commands: will be executed before any of the compiler/linker command is invoked.</string>
</property>
</widget>
<widget class="QPlainTextEdit" name="plainTextEdit">
<property name="geometry">
<rect>
<x>10</x>
<y>74</y>
<width>531</width>
<height>53</height>
</rect>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>236</x>
<y>10</y>
<width>46</width>
<height>14</height>
</rect>
</property>
<property name="text">
<string>Type:</string>
</property>
</widget>
<widget class="QComboBox" name="comboBox_2">
<property name="geometry">
<rect>
<x>234</x>
<y>28</y>
<width>109</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>370</x>
<y>28</y>
<width>51</width>
<height>24</height>
</rect>
</property>
<property name="text">
<string>New</string>
</property>
</widget>
<widget class="QTabWidget" name="tabWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>140</y>
<width>533</width>
<height>303</height>
</rect>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>PRG Compiler</string>
</attribute>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>8</x>
<y>11</y>
<width>31</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Exe:</string>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit">
<property name="geometry">
<rect>
<x>38</x>
<y>10</y>
<width>119</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_5">
<property name="geometry">
<rect>
<x>170</x>
<y>12</y>
<width>67</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Install Path:</string>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_2">
<property name="geometry">
<rect>
<x>234</x>
<y>10</y>
<width>239</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QToolButton" name="toolButton">
<property name="geometry">
<rect>
<x>492</x>
<y>10</y>
<width>25</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
<widget class="QCheckBox" name="checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>38</y>
<width>191</width>
<height>19</height>
</rect>
</property>
<property name="text">
<string>-a Automatic memvar declaration</string>
</property>
</widget>
<widget class="QCheckBox" name="checkBox_2">
<property name="geometry">
<rect>
<x>10</x>
<y>62</y>
<width>173</width>
<height>19</height>
</rect>
</property>
<property name="text">
<string>-b Include debug info</string>
</property>
</widget>
<widget class="QCheckBox" name="checkBox_3">
<property name="geometry">
<rect>
<x>10</x>
<y>86</y>
<width>173</width>
<height>19</height>
</rect>
</property>
<property name="text">
<string>-l No line numbers </string>
</property>
</widget>
<widget class="QCheckBox" name="checkBox_4">
<property name="geometry">
<rect>
<x>10</x>
<y>110</y>
<width>175</width>
<height>19</height>
</rect>
</property>
<property name="text">
<string>-v Variables are assumed (m-&gt;)</string>
</property>
</widget>
<widget class="QCheckBox" name="checkBox_5">
<property name="geometry">
<rect>
<x>10</x>
<y>134</y>
<width>193</width>
<height>19</height>
</rect>
</property>
<property name="text">
<string>-z Supress short-cut optimizations</string>
</property>
</widget>
<widget class="QPlainTextEdit" name="plainTextEdit_2">
<property name="geometry">
<rect>
<x>10</x>
<y>174</y>
<width>465</width>
<height>93</height>
</rect>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
<widget class="QLabel" name="label_6">
<property name="geometry">
<rect>
<x>10</x>
<y>156</y>
<width>463</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>More Options</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="label_7">
<property name="geometry">
<rect>
<x>288</x>
<y>38</y>
<width>109</width>
<height>13</height>
</rect>
</property>
<property name="text">
<string>-w Warning level:</string>
</property>
</widget>
<widget class="QLabel" name="label_8">
<property name="geometry">
<rect>
<x>288</x>
<y>62</y>
<width>119</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>-es Exit severity level:</string>
</property>
</widget>
<widget class="QLabel" name="label_9">
<property name="geometry">
<rect>
<x>288</x>
<y>86</y>
<width>119</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>-m No start procedure:</string>
</property>
</widget>
<widget class="QLabel" name="label_10">
<property name="geometry">
<rect>
<x>288</x>
<y>110</y>
<width>113</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>-g Output type:</string>
</property>
</widget>
<widget class="QComboBox" name="comboBox_3">
<property name="geometry">
<rect>
<x>416</x>
<y>38</y>
<width>57</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QComboBox" name="comboBox_4">
<property name="geometry">
<rect>
<x>416</x>
<y>62</y>
<width>57</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QComboBox" name="comboBox_5">
<property name="geometry">
<rect>
<x>416</x>
<y>86</y>
<width>57</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QComboBox" name="comboBox_6">
<property name="geometry">
<rect>
<x>416</x>
<y>110</y>
<width>57</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_11">
<property name="geometry">
<rect>
<x>288</x>
<y>134</y>
<width>115</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>-k Compatibility mode:</string>
</property>
</widget>
<widget class="QComboBox" name="comboBox_7">
<property name="geometry">
<rect>
<x>416</x>
<y>134</y>
<width>57</width>
<height>22</height>
</rect>
</property>
</widget>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>C Compiler</string>
</attribute>
<widget class="QLineEdit" name="lineEdit_3">
<property name="geometry">
<rect>
<x>38</x>
<y>10</y>
<width>119</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QToolButton" name="toolButton_2">
<property name="geometry">
<rect>
<x>492</x>
<y>12</y>
<width>25</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_4">
<property name="geometry">
<rect>
<x>234</x>
<y>12</y>
<width>239</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_12">
<property name="geometry">
<rect>
<x>8</x>
<y>12</y>
<width>31</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Exe:</string>
</property>
</widget>
<widget class="QLabel" name="label_13">
<property name="geometry">
<rect>
<x>170</x>
<y>12</y>
<width>67</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Install Path:</string>
</property>
</widget>
<widget class="QPlainTextEdit" name="plainTextEdit_3">
<property name="geometry">
<rect>
<x>8</x>
<y>58</y>
<width>465</width>
<height>211</height>
</rect>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
<widget class="QLabel" name="label_14">
<property name="geometry">
<rect>
<x>8</x>
<y>38</y>
<width>463</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Compiler commands - write each one on separate line.</string>
</property>
</widget>
</widget>
<widget class="QWidget" name="tab_3">
<attribute name="title">
<string>Linker</string>
</attribute>
<widget class="QPlainTextEdit" name="plainTextEdit_4">
<property name="geometry">
<rect>
<x>68</x>
<y>10</y>
<width>449</width>
<height>59</height>
</rect>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
<widget class="QLabel" name="label_15">
<property name="geometry">
<rect>
<x>8</x>
<y>34</y>
<width>46</width>
<height>14</height>
</rect>
</property>
<property name="text">
<string>EXE</string>
</property>
</widget>
<widget class="QPlainTextEdit" name="plainTextEdit_5">
<property name="geometry">
<rect>
<x>68</x>
<y>76</y>
<width>449</width>
<height>59</height>
</rect>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
<widget class="QPlainTextEdit" name="plainTextEdit_6">
<property name="geometry">
<rect>
<x>68</x>
<y>142</y>
<width>449</width>
<height>59</height>
</rect>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
<widget class="QPlainTextEdit" name="plainTextEdit_7">
<property name="geometry">
<rect>
<x>68</x>
<y>210</y>
<width>449</width>
<height>59</height>
</rect>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
<widget class="QLabel" name="label_16">
<property name="geometry">
<rect>
<x>8</x>
<y>98</y>
<width>46</width>
<height>14</height>
</rect>
</property>
<property name="text">
<string>LIB</string>
</property>
</widget>
<widget class="QLabel" name="label_17">
<property name="geometry">
<rect>
<x>10</x>
<y>166</y>
<width>46</width>
<height>14</height>
</rect>
</property>
<property name="text">
<string>DLL</string>
</property>
</widget>
<widget class="QLabel" name="label_18">
<property name="geometry">
<rect>
<x>10</x>
<y>234</y>
<width>46</width>
<height>14</height>
</rect>
</property>
<property name="text">
<string>RES</string>
</property>
</widget>
</widget>
<widget class="QWidget" name="tab_4">
<attribute name="title">
<string>EXE Defaults</string>
</attribute>
<widget class="QLabel" name="label_19">
<property name="geometry">
<rect>
<x>8</x>
<y>10</y>
<width>511</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Runtime static default files ( libraries ) - each entry on separate line.</string>
</property>
</widget>
<widget class="QPlainTextEdit" name="plainTextEdit_8">
<property name="geometry">
<rect>
<x>8</x>
<y>32</y>
<width>511</width>
<height>237</height>
</rect>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
</widget>
<widget class="QWidget" name="tab_5">
<attribute name="title">
<string>DLL Defaults</string>
</attribute>
<widget class="QLabel" name="label_20">
<property name="geometry">
<rect>
<x>8</x>
<y>10</y>
<width>511</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>DLL import default files ( libraries ) - each entry on separate line.</string>
</property>
</widget>
<widget class="QPlainTextEdit" name="plainTextEdit_9">
<property name="geometry">
<rect>
<x>8</x>
<y>32</y>
<width>511</width>
<height>237</height>
</rect>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
</widget>
<widget class="QWidget" name="tab_6">
<attribute name="title">
<string>User Cmds</string>
</attribute>
<widget class="QLabel" name="label_21">
<property name="geometry">
<rect>
<x>8</x>
<y>10</y>
<width>509</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>EXEcutable Projects</string>
</property>
</widget>
<widget class="QPlainTextEdit" name="plainTextEdit_10">
<property name="geometry">
<rect>
<x>8</x>
<y>28</y>
<width>511</width>
<height>61</height>
</rect>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
<widget class="QPlainTextEdit" name="plainTextEdit_11">
<property name="geometry">
<rect>
<x>8</x>
<y>118</y>
<width>511</width>
<height>61</height>
</rect>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
<widget class="QLabel" name="label_22">
<property name="geometry">
<rect>
<x>8</x>
<y>100</y>
<width>509</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>LIBrary Projects</string>
</property>
</widget>
<widget class="QPlainTextEdit" name="plainTextEdit_12">
<property name="geometry">
<rect>
<x>8</x>
<y>208</y>
<width>511</width>
<height>61</height>
</rect>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
<widget class="QLabel" name="label_23">
<property name="geometry">
<rect>
<x>8</x>
<y>190</y>
<width>509</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>DLL Projects </string>
</property>
</widget>
</widget>
<widget class="QWidget" name="tab_7">
<attribute name="title">
<string>Info</string>
</attribute>
<widget class="QPlainTextEdit" name="plainTextEdit_13">
<property name="geometry">
<rect>
<x>8</x>
<y>10</y>
<width>511</width>
<height>259</height>
</rect>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
</widget>
</widget>
<widget class="QPushButton" name="pushButton_4">
<property name="geometry">
<rect>
<x>380</x>
<y>456</y>
<width>75</width>
<height>24</height>
</rect>
</property>
<property name="text">
<string>OK</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_5">
<property name="geometry">
<rect>
<x>468</x>
<y>456</y>
<width>75</width>
<height>24</height>
</rect>
</property>
<property name="text">
<string>Cancel</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -1,75 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>FormEnvironments</class>
<widget class="QWidget" name="FormEnvironments">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>367</width>
<height>519</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0" colspan="4">
<widget class="QPlainTextEdit" name="editCompilers">
<property name="toolTip">
<string/>
</property>
<property name="whatsThis">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;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.&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot;-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;&quot;&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;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.&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot;-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;&quot;&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;This opens up the possibility to experiment with different compilers without re-opening the IDE or setting up the envvars manually.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="styleSheet">
<string/>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
</item>
<item row="2" column="2" colspan="2">
<widget class="QPushButton" name="buttonCn">
<property name="text">
<string>Cancel</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QPushButton" name="buttonSaveExit">
<property name="text">
<string>Save and Close</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QPushButton" name="buttonSave">
<property name="text">
<string>Save</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
<property name="default">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -1,71 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DialogDate</class>
<widget class="QDialog" name="DialogDate">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>194</width>
<height>104</height>
</rect>
</property>
<property name="windowTitle">
<string>Fetch a date</string>
</property>
<widget class="QDateEdit" name="editDate">
<property name="geometry">
<rect>
<x>14</x>
<y>30</y>
<width>161</width>
<height>22</height>
</rect>
</property>
<property name="calendarPopup">
<bool>true</bool>
</property>
</widget>
<widget class="QPushButton" name="buttonOk">
<property name="geometry">
<rect>
<x>14</x>
<y>68</y>
<width>75</width>
<height>24</height>
</rect>
</property>
<property name="text">
<string>OK</string>
</property>
</widget>
<widget class="QPushButton" name="buttonCancel">
<property name="geometry">
<rect>
<x>102</x>
<y>68</y>
<width>75</width>
<height>24</height>
</rect>
</property>
<property name="text">
<string>Cancel</string>
</property>
</widget>
<widget class="QLabel" name="labelPrompt">
<property name="geometry">
<rect>
<x>14</x>
<y>8</y>
<width>159</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Select a date</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -1,259 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DialogFind</class>
<widget class="QDialog" name="DialogFind">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>333</width>
<height>155</height>
</rect>
</property>
<property name="windowTitle">
<string>Find and Replace</string>
</property>
<widget class="QPushButton" name="buttonFind">
<property name="geometry">
<rect>
<x>272</x>
<y>6</y>
<width>51</width>
<height>24</height>
</rect>
</property>
<property name="text">
<string>Find</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
<property name="default">
<bool>false</bool>
</property>
</widget>
<widget class="QPushButton" name="buttonReplace">
<property name="geometry">
<rect>
<x>272</x>
<y>98</y>
<width>51</width>
<height>24</height>
</rect>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text">
<string>Replace</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
<widget class="QPushButton" name="buttonClose">
<property name="geometry">
<rect>
<x>272</x>
<y>124</y>
<width>51</width>
<height>24</height>
</rect>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text">
<string>Close</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
<widget class="QComboBox" name="comboReplaceWith">
<property name="geometry">
<rect>
<x>10</x>
<y>100</y>
<width>253</width>
<height>22</height>
</rect>
</property>
<property name="editable">
<bool>true</bool>
</property>
</widget>
<widget class="QCheckBox" name="checkGlobal">
<property name="geometry">
<rect>
<x>10</x>
<y>128</y>
<width>71</width>
<height>19</height>
</rect>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text">
<string>Global</string>
</property>
</widget>
<widget class="QCheckBox" name="checkNoPrompting">
<property name="geometry">
<rect>
<x>132</x>
<y>128</y>
<width>89</width>
<height>19</height>
</rect>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text">
<string>No prompting</string>
</property>
</widget>
<widget class="QGroupBox" name="groupBox_2">
<property name="geometry">
<rect>
<x>10</x>
<y>52</y>
<width>161</width>
<height>41</height>
</rect>
</property>
<property name="title">
<string/>
</property>
<widget class="QRadioButton" name="radioFromCursor">
<property name="geometry">
<rect>
<x>8</x>
<y>4</y>
<width>141</width>
<height>19</height>
</rect>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text">
<string>Start from cursor position</string>
</property>
</widget>
<widget class="QRadioButton" name="radioEntire">
<property name="geometry">
<rect>
<x>8</x>
<y>20</y>
<width>141</width>
<height>19</height>
</rect>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text">
<string>Entire file</string>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="groupBox_3">
<property name="geometry">
<rect>
<x>180</x>
<y>52</y>
<width>81</width>
<height>41</height>
</rect>
</property>
<property name="title">
<string/>
</property>
<widget class="QRadioButton" name="radioUp">
<property name="geometry">
<rect>
<x>10</x>
<y>4</y>
<width>41</width>
<height>19</height>
</rect>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text">
<string>up</string>
</property>
</widget>
<widget class="QRadioButton" name="radioDown">
<property name="geometry">
<rect>
<x>10</x>
<y>20</y>
<width>51</width>
<height>19</height>
</rect>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text">
<string>Down</string>
</property>
</widget>
</widget>
<widget class="QCheckBox" name="checkMatchCase">
<property name="geometry">
<rect>
<x>10</x>
<y>32</y>
<width>81</width>
<height>19</height>
</rect>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text">
<string>Match case</string>
</property>
</widget>
<widget class="QCheckBox" name="checkListOnly">
<property name="geometry">
<rect>
<x>132</x>
<y>32</y>
<width>71</width>
<height>19</height>
</rect>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text">
<string>List only</string>
</property>
</widget>
<widget class="QComboBox" name="comboFindWhat">
<property name="geometry">
<rect>
<x>10</x>
<y>8</y>
<width>253</width>
<height>22</height>
</rect>
</property>
<property name="editable">
<bool>true</bool>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -1,348 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>FindReplInFiles</class>
<widget class="QDialog" name="FindReplInFiles">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>422</width>
<height>472</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="windowTitle">
<string>Find &amp; Replace in Files</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="2" column="0">
<widget class="QLabel" name="labelProjects">
<property name="maximumSize">
<size>
<width>52</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Projects:</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
<item row="2" column="1" rowspan="2" colspan="4">
<widget class="QListWidget" name="listProjects">
<property name="minimumSize">
<size>
<width>0</width>
<height>60</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>60</height>
</size>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::MultiSelection</enum>
</property>
<property name="sortingEnabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="12" column="0" colspan="5">
<widget class="Line" name="line_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="13" column="0">
<widget class="QLabel" name="labelExpr">
<property name="maximumSize">
<size>
<width>52</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Expression</string>
</property>
</widget>
</item>
<item row="13" column="1" colspan="4">
<widget class="QComboBox" name="comboExpr">
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="14" column="1" colspan="2">
<widget class="QCheckBox" name="checkRegEx">
<property name="text">
<string>RegEx</string>
</property>
</widget>
</item>
<item row="14" column="4">
<widget class="QCheckBox" name="checkListOnly">
<property name="text">
<string>List only</string>
</property>
</widget>
</item>
<item row="15" column="0">
<widget class="QLabel" name="labelRepl">
<property name="maximumSize">
<size>
<width>52</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Replace:</string>
</property>
</widget>
</item>
<item row="15" column="1" colspan="4">
<widget class="QComboBox" name="comboRepl">
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="16" column="0" colspan="5">
<widget class="Line" name="line_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="14" column="3">
<widget class="QCheckBox" name="checkMatchCase">
<property name="text">
<string>Match case</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="5">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label">
<property name="minimumSize">
<size>
<width>52</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>52</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>File types:</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkAll">
<property name="text">
<string>all</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkPrg">
<property name="text">
<string>.prg</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkC">
<property name="text">
<string>.c</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkCpp">
<property name="text">
<string>.c++</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkCh">
<property name="text">
<string>.ch</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkH">
<property name="text">
<string>.h</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkRc">
<property name="maximumSize">
<size>
<width>33</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>.rc</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0" colspan="5">
<widget class="Line" name="line_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="10" column="4">
<widget class="QCheckBox" name="checkOpenTabs">
<property name="text">
<string>Include open tabs </string>
</property>
</widget>
</item>
<item row="6" column="4">
<widget class="QCheckBox" name="checkSubProjects">
<property name="text">
<string>Include sub-projects</string>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="QCheckBox" name="checkSubFolders">
<property name="text">
<string>Include sub-folders</string>
</property>
</widget>
</item>
<item row="17" column="1" colspan="4">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QPushButton" name="buttonFind">
<property name="text">
<string>Find</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonRepl">
<property name="text">
<string>Replace</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonStop">
<property name="text">
<string>Stop</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonClose">
<property name="text">
<string>Close</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="19" column="0" colspan="5">
<widget class="QTextEdit" name="editResults">
<property name="lineWrapMode">
<enum>QTextEdit::NoWrap</enum>
</property>
</widget>
</item>
<item row="8" column="0" colspan="5">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="labelFolder">
<property name="maximumSize">
<size>
<width>52</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Folder:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboFolder">
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonFolder">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="20" column="0" colspan="5">
<widget class="QLabel" name="labelStatus">
<property name="frameShape">
<enum>QFrame::Panel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<property name="text">
<string/>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QCheckBox" name="checkFolders">
<property name="text">
<string>Include folders</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -1,414 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>FormFindInFiles</class>
<widget class="QWidget" name="FormFindInFiles">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>404</width>
<height>444</height>
</rect>
</property>
<property name="windowTitle">
<string>Find in Files</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4" stretch="0,0,0,1">
<property name="spacing">
<number>2</number>
</property>
<property name="margin">
<number>2</number>
</property>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>175</height>
</size>
</property>
<property name="title">
<string/>
</property>
<layout class="QHBoxLayout" name="horizontalLayout" stretch="1,0">
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Projects</string>
</property>
<layout class="QGridLayout" name="gridLayout" rowstretch="1,0,0,0">
<property name="verticalSpacing">
<number>2</number>
</property>
<property name="margin">
<number>2</number>
</property>
<item row="0" column="0" colspan="3">
<widget class="QListWidget" name="listProjects">
<property name="minimumSize">
<size>
<width>0</width>
<height>80</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>80</height>
</size>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::MultiSelection</enum>
</property>
<property name="sortingEnabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="checkOpenTabs">
<property name="text">
<string>Include open tabs </string>
</property>
</widget>
</item>
<item row="1" column="1" colspan="2">
<widget class="QCheckBox" name="checkSubProjects">
<property name="text">
<string>Include sub-projects</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QComboBox" name="comboFolder">
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QToolButton" name="buttonFolder">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="checkFolders">
<property name="text">
<string>Include folders</string>
</property>
</widget>
</item>
<item row="3" column="1" colspan="2">
<widget class="QCheckBox" name="checkSubFolders">
<property name="text">
<string>Include sub-folders</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="minimumSize">
<size>
<width>60</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>60</width>
<height>16777215</height>
</size>
</property>
<property name="title">
<string>File(s)</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="margin">
<number>2</number>
</property>
<item>
<widget class="QCheckBox" name="checkAll">
<property name="text">
<string>all</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkPrg">
<property name="text">
<string>.prg</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkC">
<property name="text">
<string>.c</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkCpp">
<property name="text">
<string>.cpp</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkCh">
<property name="text">
<string>.ch</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkH">
<property name="text">
<string>.h</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkRc">
<property name="maximumSize">
<size>
<width>40</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>.txt</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_4">
<property name="minimumSize">
<size>
<width>0</width>
<height>70</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>70</height>
</size>
</property>
<property name="title">
<string/>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2" stretch="1,0">
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="groupBox_6">
<property name="title">
<string/>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="margin">
<number>2</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="maximumSize">
<size>
<width>40</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Find</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="comboExpr">
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="maximumSize">
<size>
<width>40</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Replace</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="comboRepl">
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_5">
<property name="maximumSize">
<size>
<width>60</width>
<height>16777215</height>
</size>
</property>
<property name="title">
<string/>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="margin">
<number>2</number>
</property>
<item>
<widget class="QCheckBox" name="checkRegEx">
<property name="text">
<string>RegEx</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkMatchCase">
<property name="text">
<string>Case</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkListOnly">
<property name="text">
<string>List only</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_7">
<property name="minimumSize">
<size>
<width>0</width>
<height>35</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>35</height>
</size>
</property>
<property name="title">
<string/>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="spacing">
<number>4</number>
</property>
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="QPushButton" name="buttonFind">
<property name="text">
<string>Find</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonRepl">
<property name="text">
<string>Replace</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonStop">
<property name="text">
<string>Stop</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonClose">
<property name="text">
<string>Close</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_8">
<property name="title">
<string>Results</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="spacing">
<number>2</number>
</property>
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="QTextEdit" name="editResults">
<property name="lineWrapMode">
<enum>QTextEdit::NoWrap</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="labelStatus">
<property name="frameShape">
<enum>QFrame::Panel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<property name="text">
<string/>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

@@ -1,107 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>308</width>
<height>151</height>
</rect>
</property>
<property name="windowTitle">
<string>Find Project File</string>
</property>
<widget class="QLabel" name="labelFileName">
<property name="geometry">
<rect>
<x>16</x>
<y>8</y>
<width>125</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>File Name:</string>
</property>
</widget>
<widget class="QComboBox" name="comboFileName">
<property name="geometry">
<rect>
<x>16</x>
<y>28</y>
<width>277</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QGroupBox" name="groupBox">
<property name="geometry">
<rect>
<x>16</x>
<y>60</y>
<width>121</width>
<height>77</height>
</rect>
</property>
<property name="title">
<string>Search Mode</string>
</property>
<widget class="QRadioButton" name="radioNameOnly">
<property name="geometry">
<rect>
<x>16</x>
<y>24</y>
<width>97</width>
<height>19</height>
</rect>
</property>
<property name="text">
<string>File name only</string>
</property>
</widget>
<widget class="QRadioButton" name="radioAsListed">
<property name="geometry">
<rect>
<x>16</x>
<y>44</y>
<width>82</width>
<height>19</height>
</rect>
</property>
<property name="text">
<string>As listed</string>
</property>
</widget>
</widget>
<widget class="QPushButton" name="buttoOk">
<property name="geometry">
<rect>
<x>216</x>
<y>84</y>
<width>75</width>
<height>24</height>
</rect>
</property>
<property name="text">
<string>OK</string>
</property>
</widget>
<widget class="QPushButton" name="buttonCn">
<property name="geometry">
<rect>
<x>216</x>
<y>112</y>
<width>75</width>
<height>24</height>
</rect>
</property>
<property name="text">
<string>Cancel</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -1,226 +0,0 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
*
* Copyright 2010 Pritpal Bedi <pritpal@vouchcac.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.
*
*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*
* EkOnkar
* ( The LORD is ONE )
*
* Harbour-Qt IDE
*
* Pritpal Bedi <bedipritpal@hotmail.com>
* 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
/*----------------------------------------------------------------------*/

View File

@@ -1,87 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>FormFormatter</class>
<widget class="QWidget" name="FormFormatter">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>392</width>
<height>508</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="minimumSize">
<size>
<width>0</width>
<height>80</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>80</height>
</size>
</property>
<property name="title">
<string/>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="2">
<widget class="QCheckBox" name="checkSelOnly">
<property name="text">
<string>Current selection only</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="btnEditCmnds">
<property name="text">
<string>Edit list of command keywords</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="btnStart">
<property name="text">
<string>Start</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="btnCancel">
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="btnUpdSrc">
<property name="text">
<string>Update Source</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QPlainTextEdit" name="plainFormatter">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="lineWidth">
<number>3</number>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -1,104 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>486</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0" colspan="5">
<widget class="QLineEdit" name="editFunction"/>
</item>
<item row="2" column="0" colspan="5">
<widget class="QTableWidget" name="tableFuncList"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label">
<property name="maximumSize">
<size>
<width>46</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Syntax:</string>
</property>
</widget>
</item>
<item row="3" column="1" colspan="3">
<widget class="QLineEdit" name="editSyntax"/>
</item>
<item row="3" column="4">
<widget class="QLabel" name="labelEntries">
<property name="maximumSize">
<size>
<width>70</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="0" colspan="5">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="6" column="0" colspan="2">
<widget class="QPushButton" name="buttonMark">
<property name="text">
<string>Mark Projects</string>
</property>
</widget>
</item>
<item row="6" column="2">
<widget class="QPushButton" name="buttonLoad">
<property name="text">
<string>Load Tags</string>
</property>
</widget>
</item>
<item row="6" column="3">
<widget class="QPushButton" name="buttonTag">
<property name="text">
<string>Re-Tag</string>
</property>
</widget>
</item>
<item row="6" column="4">
<widget class="QPushButton" name="buttonClose">
<property name="text">
<string>Close</string>
</property>
</widget>
</item>
<item row="4" column="0" colspan="5">
<widget class="QListWidget" name="listProjects">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>100</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -1,695 +0,0 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
*
* Copyright 2010 Pritpal Bedi <pritpal@vouchcac.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.
*
*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*
* EkOnkar
* ( The LORD is ONE )
*
* Harbour-Qt IDE
*
* Pritpal Bedi <pritpal@vouchcac.com>
* 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 )
/*----------------------------------------------------------------------*/

File diff suppressed because it is too large Load Diff

View File

@@ -1,152 +0,0 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
*
* Copyright 2009 Pritpal Bedi <pritpal@vouchcac.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.
*
*/
#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

View File

@@ -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

View File

@@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

View File

@@ -1,272 +0,0 @@
<RCC>
<qresource>
<file>resources/minimize_all.png</file>
<file>resources/maximize_all.png</file>
<file>resources/maximize.png</file>
<file>resources/minimize.png</file>
<file>resources/arguments.png</file>
<file>resources/blockcomment.png</file>
<file>resources/blockindentl.png</file>
<file>resources/blockindentr.png</file>
<file>resources/bookmark.png</file>
<file>resources/browser.png</file>
<file>resources/build.png</file>
<file>resources/builderror.png</file>
<file>resources/buildlaunch.png</file>
<file>resources/buildrun.png</file>
<file>resources/buildsource.png</file>
<file>resources/check.png</file>
<file>resources/clean.png</file>
<file>resources/cleanrun.png</file>
<file>resources/close.png</file>
<file>resources/close3.png</file>
<file>resources/closeall.png</file>
<file>resources/closeexcept.png</file>
<file>resources/closetab.png</file>
<file>resources/codeskeletons.png</file>
<file>resources/column.png</file>
<file>resources/compile.png</file>
<file>resources/copy-filname.png</file>
<file>resources/copy.png</file>
<file>resources/curlinehilight.png</file>
<file>resources/cut.png</file>
<file>resources/cutb16.png</file>
<file>resources/dbl2sglquote.png</file>
<file>resources/dbstruct.png</file>
<file>resources/dc_delete.png</file>
<file>resources/dc_down.png</file>
<file>resources/dc_folder.png</file>
<file>resources/dc_function.png</file>
<file>resources/dc_home.png</file>
<file>resources/dc_left.png</file>
<file>resources/dc_pdffile.png</file>
<file>resources/dc_plus.png</file>
<file>resources/dc_print.png</file>
<file>resources/dc_quit.png</file>
<file>resources/dc_refresh.png</file>
<file>resources/dc_right.png</file>
<file>resources/dc_textdoc.png</file>
<file>resources/dc_textdocument.png</file>
<file>resources/dc_up.png</file>
<file>resources/debug.png</file>
<file>resources/decreaseindent.png</file>
<file>resources/deleteline.png</file>
<file>resources/description.png</file>
<file>resources/designer.png</file>
<file>resources/docwriter.png</file>
<file>resources/down.png</file>
<file>resources/down16.png</file>
<file>resources/duplicateline.png</file>
<file>resources/editstree.png</file>
<file>resources/envconfig.png</file>
<file>resources/example.png</file>
<file>resources/exit.png</file>
<file>resources/exit3.png</file>
<file>resources/exporthtml.png</file>
<file>resources/ffn.png</file>
<file>resources/filec.png</file>
<file>resources/fileprg.png</file>
<file>resources/find.png</file>
<file>resources/fl_c.png</file>
<file>resources/fl_dll.png</file>
<file>resources/fl_exe.png</file>
<file>resources/fl_ini.png</file>
<file>resources/fl_lib.png</file>
<file>resources/fl_prg.png</file>
<file>resources/fl_res.png</file>
<file>resources/fl_txt.png</file>
<file>resources/file-open.png</file>
<file>resources/folder.png</file>
<file>resources/font.png</file>
<file>resources/formview.png</file>
<file>resources/fullscreen.png</file>
<file>resources/go-bottom.png</file>
<file>resources/go-down.png</file>
<file>resources/go-first.png</file>
<file>resources/go-jump.png</file>
<file>resources/go-last.png</file>
<file>resources/go-next.png</file>
<file>resources/go-prev.png</file>
<file>resources/go-top.png</file>
<file>resources/go-up.png</file>
<file>resources/gotoline.png</file>
<file>resources/gotoline3.png</file>
<file>resources/gotomark.png</file>
<file>resources/grid.png</file>
<file>resources/harbour.png</file>
<file>resources/harbourhelp.png</file>
<file>resources/hb-16x16.png</file>
<file>resources/hb-32x32.png</file>
<file>resources/hbide.png</file>
<file>resources/hbidesplash.png</file>
<file>resources/hbidesplashwatermark.png</file>
<file>resources/help.png</file>
<file>resources/help1.png</file>
<file>resources/helpdoc.png</file>
<file>resources/hilight-all.png</file>
<file>resources/home3.png</file>
<file>resources/horzruler.png</file>
<file>resources/idepreferences.png</file>
<file>resources/increaseindent.png</file>
<file>resources/indent-more.png</file>
<file>resources/indent-less.png</file>
<file>resources/info.png</file>
<file>resources/infotips.png</file>
<file>resources/insert-datetime.png</file>
<file>resources/insert-external-file.png</file>
<file>resources/insert-procname.png</file>
<file>resources/insert-separator.png</file>
<file>resources/invertcase.png</file>
<file>resources/keyboardmappings.png</file>
<file>resources/launch.png</file>
<file>resources/lense.png</file>
<file>resources/list-developers.png</file>
<file>resources/list-users.png</file>
<file>resources/load_1.png</file>
<file>resources/load_2.png</file>
<file>resources/load_3.png</file>
<file>resources/Lookup.png</file>
<file>resources/matchobj.png</file>
<file>resources/minus.png</file>
<file>resources/modulelist.png</file>
<file>resources/movelinedown.png</file>
<file>resources/movelineup.png</file>
<file>resources/new.png</file>
<file>resources/new2.png</file>
<file>resources/next.png</file>
<file>resources/notepad.png</file>
<file>resources/open.png</file>
<file>resources/open2.png</file>
<file>resources/open3.png</file>
<file>resources/panel_1.png</file>
<file>resources/panel_2.png</file>
<file>resources/panel_3.png</file>
<file>resources/panel_4.png</file>
<file>resources/panel_5.png</file>
<file>resources/panel_6.png</file>
<file>resources/panel_7.png</file>
<file>resources/panel_8.png</file>
<file>resources/panel_9.png</file>
<file>resources/panel_10.png</file>
<file>resources/panel_11.png</file>
<file>resources/panel_12.png</file>
<file>resources/panel_13.png</file>
<file>resources/paste.png</file>
<file>resources/placeremovemark.png</file>
<file>resources/ppo.png</file>
<file>resources/previous.png</file>
<file>resources/print.png</file>
<file>resources/project.png</file>
<file>resources/projectadd.png</file>
<file>resources/projectdel.png</file>
<file>resources/projectstree.png</file>
<file>resources/projtree.png</file>
<file>resources/properties.png</file>
<file>resources/readonly.png</file>
<file>resources/rebuild.png</file>
<file>resources/rebuildlaunch.png</file>
<file>resources/redo.png</file>
<file>resources/richtext.png</file>
<file>resources/run.png</file>
<file>resources/runscript.png</file>
<file>resources/runnodebug.png</file>
<file>resources/save.png</file>
<file>resources/save3.png</file>
<file>resources/saveall.png</file>
<file>resources/saveas.png</file>
<file>resources/search.png</file>
<file>resources/selectall.png</file>
<file>resources/selectionline.png</file>
<file>resources/setmain.png</file>
<file>resources/sgl2dblquote.png</file>
<file>resources/sort.png</file>
<file>resources/sortdescend.png</file>
<file>resources/source_c.png</file>
<file>resources/source_cpp.png</file>
<file>resources/source_h.png</file>
<file>resources/source_o.png</file>
<file>resources/source_prg.png</file>
<file>resources/source_res.png</file>
<file>resources/source_txt.png</file>
<file>resources/source_unknown.png</file>
<file>resources/statistics.png</file>
<file>resources/spacestotabs.png</file>
<file>resources/stream.png</file>
<file>resources/streamcomment.png</file>
<file>resources/syntaxhiliter.png</file>
<file>resources/tabcmodified.png</file>
<file>resources/tabmodified.png</file>
<file>resources/tabreadonly.png</file>
<file>resources/tabs.png</file>
<file>resources/tabstospaces.png</file>
<file>resources/tabunmodified.png</file>
<file>resources/tests.png</file>
<file>resources/text.png</file>
<file>resources/thumbnail.png</file>
<file>resources/togglelinenumber.png</file>
<file>resources/tolower.png</file>
<file>resources/tools.png</file>
<file>resources/toupper.png</file>
<file>resources/trashpage.png</file>
<file>resources/undo.png</file>
<file>resources/unload_1.png</file>
<file>resources/up.png</file>
<file>resources/up16.png</file>
<file>resources/vr-16x16.png</file>
<file>resources/vr.png</file>
<file>resources/xmate.png</file>
<file>resources/zoomin.png</file>
<file>resources/zoomout.png</file>
<file>resources/zoomin3.png</file>
<file>resources/zoomout3.png</file>
<file>resources/memo.png</file>
<file>resources/hideshow.png</file>
<file>resources/cuied.png</file>
<file>resources/expand_m.png</file>
<file>resources/collapse_m.png</file>
<file>resources/view_docks.png</file>
<file>resources/b_1.png</file>
<file>resources/b_2.png</file>
<file>resources/b_3.png</file>
<file>resources/b_4.png</file>
<file>resources/b_5.png</file>
<file>resources/b_6.png</file>
<file>resources/b_7.png</file>
<file>resources/b_8.png</file>
<file>resources/b_9.png</file>
<file>resources/b_10.png</file>
<file>resources/b_11.png</file>
<file>resources/b_12.png</file>
<file>resources/b_13.png</file>
<file>resources/b_14.png</file>
<file>resources/b_15.png</file>
<file>resources/b_16.png</file>
<file>resources/b_17.png</file>
<file>resources/b_18.png</file>
<file>resources/b_19.png</file>
<file>resources/b_20.png</file>
<file>resources/split.png</file>
<file>resources/split_close.png</file>
<file>resources/split_h.png</file>
<file>resources/split_v.png</file>
<file>resources/align_at.png</file>
<file>resources/dc_method.png</file>
<file>resources/dc_class.png</file>
<file>resources/dc_procedure.png</file>
<file>resources/stringify.png</file>
<file>resources/dictionary.png</file>
<file>resources/launch_r.png</file>
<file>resources/editor.png</file>
<file>resources/configtoolbars.png</file>
<file>resources/view_cascaded.png</file>
<file>resources/view_organized.png</file>
<file>resources/view_tabbed.png</file>
<file>resources/view_tiled.png</file>
<file>resources/view_vertstacked.png</file>
<file>resources/view_horzstacked.png</file>
<file>resources/view_zoomin.png</file>
<file>resources/view_zoomout.png</file>
<file>resources/view_refresh.png</file>
<file>docs/faq.htm</file>
</qresource>
</RCC>

View File

@@ -1,371 +0,0 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
*
* Copyright 2010-2012 Pritpal Bedi <pritpal@vouchcac.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.
*
*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*
* EkOnkar
* ( The LORD is ONE )
*
* Harbour-Qt IDE
*
* Pritpal Bedi <bedipritpal@hotmail.com>
* 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
/*----------------------------------------------------------------------*/

View File

@@ -1,621 +0,0 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
*
* Copyright 2010 Pritpal Bedi <pritpal@vouchcac.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.
*
*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*
* EkOnkar
* ( The LORD is ONE )
*
* Harbour-Qt IDE
*
* Pritpal Bedi <pritpal@vouchcac.com>
* 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 '<a href="' + cHref + '"' + '>' + ' <img src="' + cImg + '"' + ;
' width="' + hb_ntos( nWidth ) + '" height="' + hb_ntos( nHeight ) + '"' + '</img>' + '</a>'
/*----------------------------------------------------------------------*/
STATIC FUNCTION hbide_htmlAnchor( cHref, cText, cTooltip )
RETURN '<a href="' + cHref + '"' + iif( empty( cTooltip ), '', ' title="' + cTooltip + '"' ) +'>' + cText + '</A>'
/*----------------------------------------------------------------------*/
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, '<html>' )
aadd( aHtm, ' <body align=center valign=center>' )
aadd( aHtm, ' <table cols="7" width="95%">' )
aadd( aHtm, ' <tr>' )
aadd( aHtm, ' <td align="left" valign="center" colspan="5">' )
aadd( aHtm, ' <img src=":/resources/project.png"' + '</img>' + '&nbsp;' + '&nbsp;' + '&nbsp;' )
aadd( aHtm, ' <font face="Times New Roman" color="#FF4719" size="7"><b><U>Projects</u></b></font>' )
aadd( aHtm, ' &nbsp;' + '&nbsp;' + '&nbsp;' )
aadd( aHtm, ' <font face="Times New Roman" size="5">' + '( ' + hbide_pathNormalized( ::oIde:cProjIni, .f. ) + ' )' + '</font>' )
aadd( aHtm, ' </td>' )
aadd( aHtm, ' </tr>' )
aadd( aHtm, ' <tr bgcolor="#F0F0F5">' )
aadd( aHtm, ' <th width="150" >Title </th>' )
aadd( aHtm, ' <th width="50" >Type </th>' )
aadd( aHtm, ' <th width="75" >Sources </th>' )
aadd( aHtm, ' <th width="300" >Location </th>' )
aadd( aHtm, ' <th width="120" >Last Modified </th>' )
AADD( aHtm, ' </tr>' )
//
::addProjectsInfo( @aHtm )
//
aadd( aHtm, ' </table>' )
aadd( aHtm, ' </body>' )
aadd( aHtm, '</html>' )
//
::qWelcomeBrowser:clear()
//
::qWelcomeBrowser:setHTML( hbide_arrayToMemo( aHtm ) )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeHome:addProjectsInfo( aHtm )
LOCAL a_, prp_, src_, dir_, cIcon
IF empty( ::aProjects )
aadd( aHtm, ' <tr>' )
aadd( aHtm, ' <td>' )
aadd( aHtm, ' ' + 'None' )
aadd( aHtm, ' </td>' )
aadd( aHtm, ' <tr>' )
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, ' <tr height="1">' )
aadd( aHtm, ' <td><b>' )
aadd( aHtm, ' ' + hbide_htmlImgAnchor( 'prj-' + prp_[ PRJ_PRP_TITLE ], ':/resources/' + cIcon + '.png' ) + '&nbsp;' )
aadd( aHtm, ' ' + hbide_htmlAnchor( 'prj-' + prp_[ PRJ_PRP_TITLE ], prp_[ PRJ_PRP_TITLE ], a_[ 1 ] ) )
aadd( aHtm, ' </b></td>' )
aadd( aHtm, ' <td align=center>' )
aadd( aHtm, ' ' + left( prp_[ PRJ_PRP_TYPE ], 3 ) )
aadd( aHtm, ' </td>' )
aadd( aHtm, ' <td align=center>' )
aadd( aHtm, ' ' + hb_ntos( Len( src_ ) ) )
aadd( aHtm, ' </td>' )
aadd( aHtm, ' <td align=left>' )
aadd( aHtm, ' ' + hbide_pathNormalized( a_[ 1 ], .f. ) )
aadd( aHtm, ' </td>' )
aadd( aHtm, ' <td align=center>' )
IF ! empty( dir_ )
aadd( aHtm, ' ' + dtoc( dir_[ 1,3 ] ) + " " + dir_[ 1,4 ] )
ELSE
aadd( aHtm, ' ' )
ENDIF
aadd( aHtm, ' </td>' )
aadd( aHtm, ' </tr>' )
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, '<html>' )
aadd( aHtm, ' <body align=center valign=center>' )
aadd( aHtm, ' <table cols="7" width="95%">' )
aadd( aHtm, ' <tr><td align=left>' )
aadd( aHtm, ' <img src="' + ':/resources/' + cIcon + '.png' + '"' + '</img>' + '&nbsp;' + '&nbsp;' + '&nbsp;' )
aadd( aHtm, ' <font color="#FF4719" size=5><u>' + cProjectTitle + '</u></font>' )
aadd( aHtm, ' </td>' )
aadd( aHtm, ' <tr bgcolor="#F0F0F5">' )
aadd( aHtm, ' <th width="150" >Source</th>' )
aadd( aHtm, ' <th width="50" >Type</th>' )
aadd( aHtm, ' <th width="60" >Size</th>' )
aadd( aHtm, ' <th width="250" >Location</th>' )
aadd( aHtm, ' <th width="120" >Last Modified</th>' )
AADD( aHtm, ' </tr>' )
//
FOR EACH aSrc IN aSrcInfo
::formatSourceInfo( @aHtm, aSrc )
NEXT
//
aadd( aHtm, ' </table>' )
aadd( aHtm, ' </body>' )
aadd( aHtm, '</html>' )
//
::qWelcomeBrowser:clear()
//
::qWelcomeBrowser:setHTML( hbide_arrayToMemo( aHtm ) )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeHome:formatSourceInfo( aHtm, aSrc )
aadd( aHtm, ' <tr>' )
aadd( aHtm, ' <td><b>' )
aadd( aHtm, ' ' + hbide_htmlImgAnchor( 'fle-' + aSrc[ 1 ], ':/resources/' + aSrc[ 5 ] + '.png' ) + '&nbsp;' )
aadd( aHtm, ' ' + hbide_htmlAnchor( 'fle-' + aSrc[ 1 ], aSrc[ 3 ], aSrc[ 1 ] ) )
aadd( aHtm, ' </b></td>' )
aadd( aHtm, ' <td>' )
aadd( aHtm, ' ' + aSrc[ 4 ] )
aadd( aHtm, ' </td>' )
aadd( aHtm, ' <td align=center>' )
aadd( aHtm, ' ' + hb_ntos( aSrc[ 6 ] ) )
aadd( aHtm, ' </td>' )
aadd( aHtm, ' <td align=left>' )
aadd( aHtm, ' ' + aSrc[ 2 ] )
aadd( aHtm, ' </td>' )
aadd( aHtm, ' <td align=center>' )
aadd( aHtm, ' ' + dtoc( aSrc[ 7 ] ) + " " + aSrc[ 8 ] )
aadd( aHtm, ' </td>' )
aadd( aHtm, ' </tr>' )
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, '<html>' )
aadd( aHtm, ' <body align=center valign=center>' )
aadd( aHtm, ' <table cols="7" width="95%">' )
FOR EACH s IN a_
aadd( aHtm, ' <tr><td></td></tr>' )
aadd( aHtm, ' <tr><td>' )
aadd( aHtm, ' <font color="red" size=4>' + s + '</font>' )
aadd( aHtm, ' </td></tr>' )
aadd( aHtm, ' <tr><td>' )
aadd( aHtm, ' <font color="black" size=3>' + b_[ s:__enumIndex() ] + '</font>' )
aadd( aHtm, ' </td></tr>' )
NEXT
aadd( aHtm, ' </table>' )
aadd( aHtm, ' </body>' )
aadd( aHtm, '</html>' )
//
::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_ }
/*----------------------------------------------------------------------*/

File diff suppressed because it is too large Load Diff

View File

@@ -1,43 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>mainWindow</class>
<widget class="QMainWindow" name="mainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>851</width>
<height>473</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="documentMode">
<bool>true</bool>
</property>
<property name="tabShape">
<enum>QTabWidget::Triangular</enum>
</property>
<property name="dockNestingEnabled">
<bool>true</bool>
</property>
<property name="dockOptions">
<set>QMainWindow::AllowNestedDocks|QMainWindow::AllowTabbedDocks|QMainWindow::AnimatedDocks</set>
</property>
<widget class="QWidget" name="drawingArea"/>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>851</width>
<height>19</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusBar"/>
</widget>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

@@ -1,250 +0,0 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
*
* Copyright 2009-2012 Pritpal Bedi <pritpal@vouchcac.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.
*
*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*
* EkOnkar
* ( The LORD is ONE )
*
* Harbour-Qt IDE
*
* Pritpal Bedi <pritpal@vouchcac.com>
* 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
/*----------------------------------------------------------------------*/

View File

@@ -1,194 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>217</width>
<height>410</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>217</width>
<height>346</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>217</width>
<height>410</height>
</size>
</property>
<property name="windowTitle">
<string>Manage Panels</string>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>16</x>
<y>12</y>
<width>69</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Create New:</string>
</property>
</widget>
<widget class="QLineEdit" name="editView">
<property name="geometry">
<rect>
<x>92</x>
<y>16</y>
<width>105</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QListWidget" name="listOrder">
<property name="geometry">
<rect>
<x>92</x>
<y>52</y>
<width>105</width>
<height>192</height>
</rect>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Drag, position and drop panels the way you want them to appear.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>16</x>
<y>48</y>
<width>46</width>
<height>13</height>
</rect>
</property>
<property name="text">
<string>Reorder:</string>
</property>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>16</x>
<y>256</y>
<width>69</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Tabs Position:</string>
</property>
</widget>
<widget class="QComboBox" name="comboPos">
<property name="geometry">
<rect>
<x>92</x>
<y>260</y>
<width>105</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="btnOK">
<property name="geometry">
<rect>
<x>16</x>
<y>376</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>OK</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
<widget class="QPushButton" name="btnCancel">
<property name="geometry">
<rect>
<x>124</x>
<y>376</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Cancel</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
<widget class="Line" name="line">
<property name="geometry">
<rect>
<x>16</x>
<y>360</y>
<width>181</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>16</x>
<y>292</y>
<width>65</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Tabs Shape:</string>
</property>
</widget>
<widget class="QComboBox" name="comboShape">
<property name="geometry">
<rect>
<x>92</x>
<y>296</y>
<width>105</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_5">
<property name="geometry">
<rect>
<x>16</x>
<y>328</y>
<width>69</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Delete Panel:</string>
</property>
</widget>
<widget class="QComboBox" name="comboDelete">
<property name="geometry">
<rect>
<x>92</x>
<y>332</y>
<width>105</width>
<height>22</height>
</rect>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -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 <pritpal@vouchcac.com>
* 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 );
}
/*----------------------------------------------------------------------*/

View File

@@ -1,230 +0,0 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
*
* Copyright 2012 Pritpal Bedi <pritpal@vouchcac.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.
*
*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*
* EkOnkar
* ( The LORD is ONE )
*
* Harbour-Qt IDE
*
* Pritpal Bedi <pritpal@vouchcac.com>
* 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
/*----------------------------------------------------------------------*/

View File

@@ -1,328 +0,0 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
*
* Copyright 2009-2010 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.
*
*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*
* EkOnkar
* ( The LORD is ONE )
*
* Harbour-Qt IDE
*
* Pritpal Bedi <pritpal@vouchcac.com>
* 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
/*----------------------------------------------------------------------*/

View File

@@ -1,94 +0,0 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
* hbide plugin.
*
* Copyright 2010 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.
*
*/
/*----------------------------------------------------------------------*/
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
/*----------------------------------------------------------------------*/

View File

@@ -1,115 +0,0 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
* hbide plugin.
*
* Copyright 2010 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.
*
*/
/*----------------------------------------------------------------------*/
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
/*----------------------------------------------------------------------*/

View File

@@ -1,92 +0,0 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
* hbide plugin.
*
* Copyright 2010 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.
*
*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------//
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
/*----------------------------------------------------------------------*/

View File

@@ -1,467 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>FormProjectPropEx</class>
<widget class="QWidget" name="FormProjectPropEx">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>324</width>
<height>434</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tabGeneral">
<attribute name="title">
<string>General</string>
</attribute>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Project Type:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="comboPrjType">
<property name="toolTip">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;A project may be of type Executable|Library|Dll.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="editable">
<bool>false</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Project Title:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="editPrjTitle">
<property name="toolTip">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;Title will be shown as a node in project tree.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Project Location:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="editPrjLoctn">
<property name="toolTip">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;Project location is the folder where project definition file .hbi will be stored. &amp;lt;Project Location&amp;gt; plus &amp;lt;Output Name&amp;gt; will comprise the full file name with .hbp extension.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Destination Folder:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QLineEdit" name="editDstFolder">
<property name="toolTip">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Destination folder is a compatibility slot and is reserved to place the &amp;lt;Output&amp;gt; .exe .a .lib. &lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;But currently this functionality will be achieved through the -o compiler flag.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="12" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Launch Parameters:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="12" column="1" colspan="2">
<widget class="QLineEdit" name="editLaunchParams"/>
</item>
<item row="13" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Launch Program:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="13" column="1" colspan="2">
<widget class="QLineEdit" name="editLaunchExe"/>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_13">
<property name="text">
<string>Backup Location:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="QLineEdit" name="editBackup"/>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="editOutName">
<property name="toolTip">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Output name is used as final name for .hbi .hbp .exe .lib .a and will be added to the paths retrieved via &amp;lt;Project Location&amp;gt;, &amp;lt;Working Folder&amp;gt;, &amp;lt;Destination Folder&amp;gt;, etc. So this is a very important component.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Output Name:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QToolButton" name="buttonChoosePrjLoc">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="10" column="2">
<widget class="QToolButton" name="buttonBackup">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="8" column="2">
<widget class="QToolButton" name="buttonChooseDest">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="11" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="14" column="1">
<widget class="QLineEdit" name="editWrkFolder">
<property name="toolTip">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;Working folder will be used to host hbmk2 compliant &lt;/span&gt;&lt;span style=&quot; font-size:8pt; font-weight:600;&quot;&gt;&amp;lt;Output Name&amp;gt;&lt;/span&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt; plus &lt;/span&gt;&lt;span style=&quot; font-size:8pt; font-weight:600;&quot;&gt;&amp;lt;hbp&amp;gt;&lt;/span&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt; and will be designated as current folder when &lt;/span&gt;&lt;span style=&quot; font-size:8pt; font-weight:600;&quot;&gt;hbmk2&lt;/span&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt; will be invoked.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="14" column="0">
<widget class="QLabel" name="labelInitFolder">
<property name="text">
<string>Start In:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="14" column="2">
<widget class="QToolButton" name="buttonChooseWd">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="7" column="1">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="1">
<widget class="QCheckBox" name="checkXhb">
<property name="text">
<string>Xharbour</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QCheckBox" name="checkXpp">
<property name="text">
<string>Xbase++</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QCheckBox" name="checkClp">
<property name="text">
<string>Clipper</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tabFiles">
<attribute name="title">
<string>HBP</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_2">
<item row="1" column="1" colspan="11">
<widget class="QPlainTextEdit" name="editSources">
<property name="toolTip">
<string/>
</property>
<property name="whatsThis">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;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. &lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot;-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;&quot;&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt; font-weight:600;&quot;&gt;NOTE:&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;Only .prg .c .cpp .rc .res files will be supplied to the hbmk2. All other files will be made visible for editing in &amp;lt;Project Tree&amp;gt;.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="styleSheet">
<string/>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QToolButton" name="buttonSelect">
<property name="toolTip">
<string>Select Sources</string>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QToolButton" name="buttonSort">
<property name="toolTip">
<string>Sort by Ascending Order</string>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QToolButton" name="buttonSortZA">
<property name="toolTip">
<string>Sort by Descending Order</string>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QToolButton" name="buttonSortOrg">
<property name="toolTip">
<string>Organize by Type and Sort Ascending</string>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="0" column="5">
<widget class="QToolButton" name="buttonUp">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="0" column="6">
<widget class="QToolButton" name="buttonDown">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tabFlags">
<attribute name="title">
<string>Flags</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QPlainTextEdit" name="editFlags">
<property name="toolTip">
<string/>
</property>
<property name="whatsThis">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;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.&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot;-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;&quot;&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;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.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="styleSheet">
<string/>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tabHbp">
<attribute name="title">
<string>Sources</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<widget class="QPlainTextEdit" name="editHbp">
<property name="toolTip">
<string/>
</property>
<property name="whatsThis">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;Here you can view in real-time the resultant &amp;lt;hbp&amp;gt; output which will be supplied to hbmk2. This view may give you insight about your source layout and many other facts.&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot;-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;&quot;&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:14pt; font-weight:600; text-decoration: underline;&quot;&gt;Enjoy&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="styleSheet">
<string/>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QPushButton" name="buttonSaveExit">
<property name="text">
<string>Save and Close</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonSave">
<property name="text">
<string>Save</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
<property name="default">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonCn">
<property name="text">
<string>Cancel</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 489 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 912 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 773 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 727 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 670 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 675 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 463 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 488 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 628 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 739 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 742 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 463 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 743 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 727 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 755 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 719 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 768 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 589 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 752 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 194 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 818 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 919 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 156 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 507 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 501 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 702 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 394 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 646 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 413 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 398 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 898 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 156 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Some files were not shown because too many files have changed in this diff Show More