mirror of
https://github.com/reactos/reactos.git
synced 2024-12-26 00:54:40 +00:00
Temporary fork of candidate base of potententially very useful development tool for ros.
svn path=/trunk/; revision=3955
This commit is contained in:
parent
b8573aace5
commit
d73cc06799
25 changed files with 11747 additions and 0 deletions
6
rosapps/devutils/vmingw/.cvsignore
Normal file
6
rosapps/devutils/vmingw/.cvsignore
Normal file
|
@ -0,0 +1,6 @@
|
|||
*.o
|
||||
*.sym
|
||||
*.coff
|
||||
*.exe
|
||||
*.ini
|
||||
*.bat
|
328
rosapps/devutils/vmingw/CList.cpp
Normal file
328
rosapps/devutils/vmingw/CList.cpp
Normal file
|
@ -0,0 +1,328 @@
|
|||
/********************************************************************
|
||||
* Class: CList.cpp. This is part of WinUI.
|
||||
*
|
||||
* Purpose: A simple way to create doubly linked lists.
|
||||
*
|
||||
* Authors: Originally coded by Claude Catonio.
|
||||
*
|
||||
* License: Original code was public domain.
|
||||
* Present revised CList classes are covered by GNU General Public License.
|
||||
*
|
||||
* Revisions:
|
||||
* Manu B. 10/05/01 Terms was translated to English.
|
||||
* Manu B. 10/16/01 Add CList::Destroy(CNode *node) method.
|
||||
* Manu B. 11/12/01 Add InsertBefore/InsertAfter methods.
|
||||
* Manu B. 11/17/01 First() & Last() now returns an integer value.
|
||||
* Manu B. 11/19/01 CNode::Destroy() returns next node by default.
|
||||
* Manu B. 12/28/01 Simplify CList, add InsertSorted().
|
||||
* Manu B. 03/13/02 Suppress CNode methods, next and prev are public.
|
||||
* Manu B. 03/28/02 Add Compare().
|
||||
*
|
||||
********************************************************************/
|
||||
#include "CList.h"
|
||||
|
||||
/********************************************************************
|
||||
* Class: CList.
|
||||
*
|
||||
* Purpose: List management.
|
||||
*
|
||||
* Revisions:
|
||||
*
|
||||
********************************************************************/
|
||||
CList::~CList(){
|
||||
//MessageBox (0, "CList", "destructor", MB_OK);
|
||||
while (first != NULL){
|
||||
current = first;
|
||||
first = first->next;
|
||||
delete current;
|
||||
}
|
||||
current = last = first;
|
||||
count = 0;
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
* Browse the list.
|
||||
********************************************************************/
|
||||
CNode * CList::First(){
|
||||
current = first;
|
||||
return current;
|
||||
}
|
||||
|
||||
CNode * CList::Last(){
|
||||
current = last;
|
||||
return current;
|
||||
}
|
||||
|
||||
CNode * CList::Prev(){
|
||||
// Empty list ?
|
||||
if (first != NULL){
|
||||
if(current->prev == NULL){
|
||||
// No previous node.
|
||||
return NULL;
|
||||
}else{
|
||||
// A previous one.
|
||||
current = current->prev;
|
||||
return current;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
CNode * CList::Next(){
|
||||
// Empty list ?
|
||||
if (first != NULL){
|
||||
if(current->next == NULL){
|
||||
// No next node.
|
||||
return NULL;
|
||||
}else{
|
||||
// A next one.
|
||||
current = current->next;
|
||||
return current;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
* Insert nodes.
|
||||
********************************************************************/
|
||||
void CList::InsertFirst(CNode *node){
|
||||
if(first == NULL){
|
||||
// Empty list.
|
||||
first = last = node;
|
||||
}else{
|
||||
// Set node pointers.
|
||||
node->prev = NULL;
|
||||
node->next = first;
|
||||
// Insert in the list.
|
||||
first->prev = node;
|
||||
first = node;
|
||||
}
|
||||
// Set current node, increment the node counter.
|
||||
current = node;
|
||||
count++;
|
||||
}
|
||||
|
||||
void CList::InsertLast(CNode *node){
|
||||
if(first == NULL){
|
||||
// Empty list.
|
||||
first = last = node;
|
||||
}else{
|
||||
// Set node pointers.
|
||||
node->prev = last;
|
||||
node->next = NULL;
|
||||
// Insert in the list.
|
||||
last->next = node;
|
||||
last = node;
|
||||
}
|
||||
// Set current node, increment the node counter.
|
||||
current = node;
|
||||
count++;
|
||||
}
|
||||
|
||||
void CList::InsertBefore(CNode *node){
|
||||
if(first == NULL){
|
||||
// Empty list.
|
||||
first = last = node;
|
||||
}else{
|
||||
if (current == first)
|
||||
first = node;
|
||||
// Set node pointers.
|
||||
node->prev = current->prev;
|
||||
node->next = current;
|
||||
// Insert in the list.
|
||||
if (node->prev)
|
||||
node->prev->next = node;
|
||||
current->prev = node;
|
||||
}
|
||||
// Set current node, increment the node counter.
|
||||
current = node;
|
||||
count++;
|
||||
}
|
||||
|
||||
void CList::InsertAfter(CNode *node){
|
||||
if(first == NULL){
|
||||
// Empty list.
|
||||
first = last = node;
|
||||
}else{
|
||||
if (current == last)
|
||||
last = node;
|
||||
// Set node pointers.
|
||||
node->prev = current;
|
||||
node->next = current->next;
|
||||
// Insert in the list.
|
||||
if (node->next)
|
||||
node->next->prev = node;
|
||||
current->next = node;
|
||||
}
|
||||
// Set current node, increment the node counter.
|
||||
current = node;
|
||||
count++;
|
||||
}
|
||||
|
||||
bool CList::InsertSorted(CNode * newNode){
|
||||
// Get the current node.
|
||||
CNode * currentNode = GetCurrent();
|
||||
int cmpResult;
|
||||
|
||||
if(!currentNode){
|
||||
// The list is empty, InsertFirst() and return.
|
||||
InsertFirst(newNode);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Compare new node and current node data to know if we must parse Up
|
||||
// or Down from current node.
|
||||
cmpResult = Compare(newNode, currentNode);
|
||||
|
||||
// Search Up -----------------------------------------------------------------
|
||||
if (cmpResult == -1){
|
||||
// Parse the list while there's a previous node.
|
||||
while (Prev()){
|
||||
currentNode = GetCurrent();
|
||||
cmpResult = Compare(newNode, currentNode);
|
||||
|
||||
if (cmpResult == 1){
|
||||
// Correct position found.
|
||||
InsertAfter(newNode);
|
||||
return true;
|
||||
}else if (cmpResult == 0){
|
||||
// Don't add a file twice.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// There's no previous node, so insert first.
|
||||
InsertFirst(newNode);
|
||||
return true;
|
||||
}
|
||||
// Search Down --------------------------------------------------------------
|
||||
else if (cmpResult == 1){
|
||||
// Parse the list while there's a next node.
|
||||
while (Next()){
|
||||
currentNode = GetCurrent();
|
||||
cmpResult = Compare(newNode, currentNode);
|
||||
|
||||
if (cmpResult == -1){
|
||||
// Correct position found.
|
||||
InsertBefore(newNode);
|
||||
return true;
|
||||
}else if (cmpResult == 0){
|
||||
// Don't add a file twice.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// There's no next node, so insert last.
|
||||
InsertLast(newNode);
|
||||
return true;
|
||||
}
|
||||
// Don't add a file twice (cmpResult == 0) -------------------------------------
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
int CList::InsertSorted_New(CNode * newNode){
|
||||
int cmpResult;
|
||||
|
||||
/* Get the current node */
|
||||
CNode * currentNode = GetCurrent();
|
||||
if(!currentNode)
|
||||
return EMPTY_LIST;
|
||||
|
||||
/* Parse up or down ? */
|
||||
cmpResult = Compare(newNode, currentNode);
|
||||
|
||||
/* -Up- */
|
||||
if (cmpResult == -1){
|
||||
// Parse the list while there's a previous node.
|
||||
while (Prev()){
|
||||
currentNode = GetCurrent();
|
||||
cmpResult = Compare(newNode, currentNode);
|
||||
|
||||
if (cmpResult == 1){
|
||||
// Correct position found.
|
||||
return INSERT_AFTER;
|
||||
}else if (cmpResult == 0){
|
||||
// Don't add a file twice.
|
||||
return FILE_FOUND;
|
||||
}
|
||||
}
|
||||
// There's no previous node, so insert first.
|
||||
return INSERT_FIRST;
|
||||
|
||||
/* -Down- */
|
||||
}else if (cmpResult == 1){
|
||||
// Parse the list while there's a next node.
|
||||
while (Next()){
|
||||
currentNode = GetCurrent();
|
||||
cmpResult = Compare(newNode, currentNode);
|
||||
|
||||
if (cmpResult == -1){
|
||||
// Correct position found.
|
||||
return INSERT_BEFORE;
|
||||
}else if (cmpResult == 0){
|
||||
// Don't add a file twice.
|
||||
return FILE_FOUND;
|
||||
}
|
||||
}
|
||||
// There's no next node, so insert last.
|
||||
return INSERT_LAST;
|
||||
}
|
||||
// Don't add a file twice (cmpResult == 0) -------------------------------------
|
||||
return FILE_FOUND;
|
||||
}
|
||||
|
||||
|
||||
/********************************************************************
|
||||
* Destroy nodes.
|
||||
********************************************************************/
|
||||
void CList::DestroyCurrent(){
|
||||
// CNode * node = current;
|
||||
Destroy(current);
|
||||
}
|
||||
|
||||
void CList::Destroy(CNode * node){
|
||||
// Empty list ?
|
||||
if (current != NULL){
|
||||
// Detach node from the list.
|
||||
if (node->next != NULL)
|
||||
node->next->prev = node->prev;
|
||||
if (node->prev != NULL)
|
||||
node->prev->next = node->next;
|
||||
|
||||
// Set current node.
|
||||
if(node->next != NULL)
|
||||
current = node->next;
|
||||
else
|
||||
current = node->prev;
|
||||
|
||||
if (current == NULL){
|
||||
// Now, the list is empty.
|
||||
first = last = NULL;
|
||||
|
||||
}else if (first == node){
|
||||
// Detached node was first.
|
||||
first = current;
|
||||
|
||||
}else if (last == node){
|
||||
// Detached node was last.
|
||||
last = current;
|
||||
}
|
||||
delete node;
|
||||
count--;
|
||||
}
|
||||
}
|
||||
|
||||
void CList::DestroyList(){
|
||||
while (first != NULL){
|
||||
current = first;
|
||||
first = first->next;
|
||||
delete current;
|
||||
}
|
||||
current = last = first;
|
||||
count = 0;
|
||||
}
|
||||
|
||||
int CList::Length(){
|
||||
return count;
|
||||
}
|
||||
|
79
rosapps/devutils/vmingw/CList.h
Normal file
79
rosapps/devutils/vmingw/CList.h
Normal file
|
@ -0,0 +1,79 @@
|
|||
/********************************************************************
|
||||
* Module: CList.h. This is part of WinUI.
|
||||
*
|
||||
* License: WinUI is covered by GNU General Public License,
|
||||
* Copyright (C) 2001 Manu B.
|
||||
* See license.htm for more details.
|
||||
*
|
||||
********************************************************************/
|
||||
#ifndef CLIST_H
|
||||
#define CLIST_H
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
/********************************************************************
|
||||
* Generic CNode.
|
||||
********************************************************************/
|
||||
class CNode
|
||||
{
|
||||
public:
|
||||
CNode() {next = prev = NULL; /*type = 0;*/};
|
||||
virtual ~CNode() {};
|
||||
|
||||
CNode * prev;
|
||||
CNode * next;
|
||||
long type;
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
/********************************************************************
|
||||
* Generic List.
|
||||
********************************************************************/
|
||||
#define FILE_FOUND 0
|
||||
#define EMPTY_LIST 1
|
||||
#define INSERT_FIRST 2
|
||||
#define INSERT_LAST 3
|
||||
#define INSERT_BEFORE 4
|
||||
#define INSERT_AFTER 5
|
||||
|
||||
class CList
|
||||
{
|
||||
public:
|
||||
CList() {first = last = current = NULL; count = 0;};
|
||||
virtual ~CList();
|
||||
|
||||
CNode * GetCurrent() {return current;};
|
||||
CNode * First();
|
||||
CNode * Last();
|
||||
CNode * Prev();
|
||||
CNode * Next();
|
||||
|
||||
void InsertFirst(CNode *node);
|
||||
void InsertLast(CNode *node);
|
||||
void InsertBefore(CNode *node);
|
||||
void InsertAfter(CNode *node);
|
||||
bool InsertSorted(CNode * newNode);
|
||||
int InsertSorted_New(CNode * newNode);
|
||||
|
||||
void DestroyCurrent();
|
||||
void Destroy(CNode * node);
|
||||
void DestroyList();
|
||||
|
||||
int Length();
|
||||
|
||||
protected:
|
||||
virtual int Compare(CNode *, CNode *) {return 0;};
|
||||
|
||||
CNode *first;
|
||||
CNode *last;
|
||||
CNode *current;
|
||||
int count;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
#endif
|
||||
|
340
rosapps/devutils/vmingw/GNU-GPL.txt
Normal file
340
rosapps/devutils/vmingw/GNU-GPL.txt
Normal file
|
@ -0,0 +1,340 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA.
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
29
rosapps/devutils/vmingw/Makefile.ros
Normal file
29
rosapps/devutils/vmingw/Makefile.ros
Normal file
|
@ -0,0 +1,29 @@
|
|||
# $Id: Makefile.ros,v 1.1 2003/01/07 17:59:20 robd Exp $
|
||||
#
|
||||
|
||||
PATH_TO_TOP = ../../../reactos
|
||||
|
||||
TARGET_TYPE = program
|
||||
|
||||
TARGET_APPTYPE = console
|
||||
|
||||
TARGET_NAME = vmingw
|
||||
|
||||
TARGET_CFLAGS = -D_WIN32_IE=0x0400
|
||||
|
||||
TARGET_SDKLIBS = user32.a comctl32.a ole32.a
|
||||
|
||||
TARGET_OBJECTS = \
|
||||
CList.o\
|
||||
editor.o\
|
||||
main.o\
|
||||
process.o\
|
||||
project.o\
|
||||
rsrc.o\
|
||||
winui.o
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
# EOF
|
BIN
rosapps/devutils/vmingw/SciLexer.dll
Normal file
BIN
rosapps/devutils/vmingw/SciLexer.dll
Normal file
Binary file not shown.
300
rosapps/devutils/vmingw/SciLexer.h
Normal file
300
rosapps/devutils/vmingw/SciLexer.h
Normal file
|
@ -0,0 +1,300 @@
|
|||
// Scintilla source code edit control
|
||||
/** @file SciLexer.h
|
||||
** Interface to the added lexer functions in the SciLexer version of the edit control.
|
||||
**/
|
||||
// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>
|
||||
// The License.txt file describes the conditions under which this software may be distributed.
|
||||
|
||||
// Most of this file is automatically generated from the Scintilla.iface interface definition
|
||||
// file which contains any comments about the definitions. HFacer.py does the generation.
|
||||
|
||||
#ifndef SCILEXER_H
|
||||
#define SCILEXER_H
|
||||
|
||||
// SciLexer features - not in standard Scintilla
|
||||
|
||||
//++Autogenerated -- start of section automatically generated from Scintilla.iface
|
||||
#define SCLEX_CONTAINER 0
|
||||
#define SCLEX_NULL 1
|
||||
#define SCLEX_PYTHON 2
|
||||
#define SCLEX_CPP 3
|
||||
#define SCLEX_HTML 4
|
||||
#define SCLEX_XML 5
|
||||
#define SCLEX_PERL 6
|
||||
#define SCLEX_SQL 7
|
||||
#define SCLEX_VB 8
|
||||
#define SCLEX_PROPERTIES 9
|
||||
#define SCLEX_ERRORLIST 10
|
||||
#define SCLEX_MAKEFILE 11
|
||||
#define SCLEX_BATCH 12
|
||||
#define SCLEX_XCODE 13
|
||||
#define SCLEX_LATEX 14
|
||||
#define SCLEX_LUA 15
|
||||
#define SCLEX_DIFF 16
|
||||
#define SCLEX_CONF 17
|
||||
#define SCLEX_PASCAL 18
|
||||
#define SCLEX_AVE 19
|
||||
#define SCLEX_ADA 20
|
||||
#define SCLEX_LISP 21
|
||||
#define SCLEX_RUBY 22
|
||||
#define SCLEX_EIFFEL 23
|
||||
#define SCLEX_EIFFELKW 24
|
||||
#define SCLEX_TCL 25
|
||||
#define SCLEX_AUTOMATIC 1000
|
||||
#define SCE_P_DEFAULT 0
|
||||
#define SCE_P_COMMENTLINE 1
|
||||
#define SCE_P_NUMBER 2
|
||||
#define SCE_P_STRING 3
|
||||
#define SCE_P_CHARACTER 4
|
||||
#define SCE_P_WORD 5
|
||||
#define SCE_P_TRIPLE 6
|
||||
#define SCE_P_TRIPLEDOUBLE 7
|
||||
#define SCE_P_CLASSNAME 8
|
||||
#define SCE_P_DEFNAME 9
|
||||
#define SCE_P_OPERATOR 10
|
||||
#define SCE_P_IDENTIFIER 11
|
||||
#define SCE_P_COMMENTBLOCK 12
|
||||
#define SCE_P_STRINGEOL 13
|
||||
#define SCE_C_DEFAULT 0
|
||||
#define SCE_C_COMMENT 1
|
||||
#define SCE_C_COMMENTLINE 2
|
||||
#define SCE_C_COMMENTDOC 3
|
||||
#define SCE_C_NUMBER 4
|
||||
#define SCE_C_WORD 5
|
||||
#define SCE_C_STRING 6
|
||||
#define SCE_C_CHARACTER 7
|
||||
#define SCE_C_UUID 8
|
||||
#define SCE_C_PREPROCESSOR 9
|
||||
#define SCE_C_OPERATOR 10
|
||||
#define SCE_C_IDENTIFIER 11
|
||||
#define SCE_C_STRINGEOL 12
|
||||
#define SCE_C_VERBATIM 13
|
||||
#define SCE_C_REGEX 14
|
||||
#define SCE_C_COMMENTLINEDOC 15
|
||||
#define SCE_C_WORD2 16
|
||||
#define SCE_H_DEFAULT 0
|
||||
#define SCE_H_TAG 1
|
||||
#define SCE_H_TAGUNKNOWN 2
|
||||
#define SCE_H_ATTRIBUTE 3
|
||||
#define SCE_H_ATTRIBUTEUNKNOWN 4
|
||||
#define SCE_H_NUMBER 5
|
||||
#define SCE_H_DOUBLESTRING 6
|
||||
#define SCE_H_SINGLESTRING 7
|
||||
#define SCE_H_OTHER 8
|
||||
#define SCE_H_COMMENT 9
|
||||
#define SCE_H_ENTITY 10
|
||||
#define SCE_H_TAGEND 11
|
||||
#define SCE_H_XMLSTART 12
|
||||
#define SCE_H_XMLEND 13
|
||||
#define SCE_H_SCRIPT 14
|
||||
#define SCE_H_ASP 15
|
||||
#define SCE_H_ASPAT 16
|
||||
#define SCE_H_CDATA 17
|
||||
#define SCE_H_QUESTION 18
|
||||
#define SCE_H_VALUE 19
|
||||
#define SCE_H_XCCOMMENT 20
|
||||
#define SCE_H_SGML 21
|
||||
#define SCE_HJ_START 40
|
||||
#define SCE_HJ_DEFAULT 41
|
||||
#define SCE_HJ_COMMENT 42
|
||||
#define SCE_HJ_COMMENTLINE 43
|
||||
#define SCE_HJ_COMMENTDOC 44
|
||||
#define SCE_HJ_NUMBER 45
|
||||
#define SCE_HJ_WORD 46
|
||||
#define SCE_HJ_KEYWORD 47
|
||||
#define SCE_HJ_DOUBLESTRING 48
|
||||
#define SCE_HJ_SINGLESTRING 49
|
||||
#define SCE_HJ_SYMBOLS 50
|
||||
#define SCE_HJ_STRINGEOL 51
|
||||
#define SCE_HJ_REGEX 52
|
||||
#define SCE_HJA_START 55
|
||||
#define SCE_HJA_DEFAULT 56
|
||||
#define SCE_HJA_COMMENT 57
|
||||
#define SCE_HJA_COMMENTLINE 58
|
||||
#define SCE_HJA_COMMENTDOC 59
|
||||
#define SCE_HJA_NUMBER 60
|
||||
#define SCE_HJA_WORD 61
|
||||
#define SCE_HJA_KEYWORD 62
|
||||
#define SCE_HJA_DOUBLESTRING 63
|
||||
#define SCE_HJA_SINGLESTRING 64
|
||||
#define SCE_HJA_SYMBOLS 65
|
||||
#define SCE_HJA_STRINGEOL 66
|
||||
#define SCE_HJA_REGEX 67
|
||||
#define SCE_HB_START 70
|
||||
#define SCE_HB_DEFAULT 71
|
||||
#define SCE_HB_COMMENTLINE 72
|
||||
#define SCE_HB_NUMBER 73
|
||||
#define SCE_HB_WORD 74
|
||||
#define SCE_HB_STRING 75
|
||||
#define SCE_HB_IDENTIFIER 76
|
||||
#define SCE_HB_STRINGEOL 77
|
||||
#define SCE_HBA_START 80
|
||||
#define SCE_HBA_DEFAULT 81
|
||||
#define SCE_HBA_COMMENTLINE 82
|
||||
#define SCE_HBA_NUMBER 83
|
||||
#define SCE_HBA_WORD 84
|
||||
#define SCE_HBA_STRING 85
|
||||
#define SCE_HBA_IDENTIFIER 86
|
||||
#define SCE_HBA_STRINGEOL 87
|
||||
#define SCE_HP_START 90
|
||||
#define SCE_HP_DEFAULT 91
|
||||
#define SCE_HP_COMMENTLINE 92
|
||||
#define SCE_HP_NUMBER 93
|
||||
#define SCE_HP_STRING 94
|
||||
#define SCE_HP_CHARACTER 95
|
||||
#define SCE_HP_WORD 96
|
||||
#define SCE_HP_TRIPLE 97
|
||||
#define SCE_HP_TRIPLEDOUBLE 98
|
||||
#define SCE_HP_CLASSNAME 99
|
||||
#define SCE_HP_DEFNAME 100
|
||||
#define SCE_HP_OPERATOR 101
|
||||
#define SCE_HP_IDENTIFIER 102
|
||||
#define SCE_HPA_START 105
|
||||
#define SCE_HPA_DEFAULT 106
|
||||
#define SCE_HPA_COMMENTLINE 107
|
||||
#define SCE_HPA_NUMBER 108
|
||||
#define SCE_HPA_STRING 109
|
||||
#define SCE_HPA_CHARACTER 110
|
||||
#define SCE_HPA_WORD 111
|
||||
#define SCE_HPA_TRIPLE 112
|
||||
#define SCE_HPA_TRIPLEDOUBLE 113
|
||||
#define SCE_HPA_CLASSNAME 114
|
||||
#define SCE_HPA_DEFNAME 115
|
||||
#define SCE_HPA_OPERATOR 116
|
||||
#define SCE_HPA_IDENTIFIER 117
|
||||
#define SCE_HPHP_DEFAULT 118
|
||||
#define SCE_HPHP_HSTRING 119
|
||||
#define SCE_HPHP_SIMPLESTRING 120
|
||||
#define SCE_HPHP_WORD 121
|
||||
#define SCE_HPHP_NUMBER 122
|
||||
#define SCE_HPHP_VARIABLE 123
|
||||
#define SCE_HPHP_COMMENT 124
|
||||
#define SCE_HPHP_COMMENTLINE 125
|
||||
#define SCE_HPHP_HSTRING_VARIABLE 126
|
||||
#define SCE_HPHP_OPERATOR 127
|
||||
#define SCE_PL_DEFAULT 0
|
||||
#define SCE_PL_ERROR 1
|
||||
#define SCE_PL_COMMENTLINE 2
|
||||
#define SCE_PL_POD 3
|
||||
#define SCE_PL_NUMBER 4
|
||||
#define SCE_PL_WORD 5
|
||||
#define SCE_PL_STRING 6
|
||||
#define SCE_PL_CHARACTER 7
|
||||
#define SCE_PL_PUNCTUATION 8
|
||||
#define SCE_PL_PREPROCESSOR 9
|
||||
#define SCE_PL_OPERATOR 10
|
||||
#define SCE_PL_IDENTIFIER 11
|
||||
#define SCE_PL_SCALAR 12
|
||||
#define SCE_PL_ARRAY 13
|
||||
#define SCE_PL_HASH 14
|
||||
#define SCE_PL_SYMBOLTABLE 15
|
||||
#define SCE_PL_REGEX 17
|
||||
#define SCE_PL_REGSUBST 18
|
||||
#define SCE_PL_LONGQUOTE 19
|
||||
#define SCE_PL_BACKTICKS 20
|
||||
#define SCE_PL_DATASECTION 21
|
||||
#define SCE_PL_HERE_DELIM 22
|
||||
#define SCE_PL_HERE_Q 23
|
||||
#define SCE_PL_HERE_QQ 24
|
||||
#define SCE_PL_HERE_QX 25
|
||||
#define SCE_PL_STRING_Q 26
|
||||
#define SCE_PL_STRING_QQ 27
|
||||
#define SCE_PL_STRING_QX 28
|
||||
#define SCE_PL_STRING_QR 29
|
||||
#define SCE_PL_STRING_QW 30
|
||||
#define SCE_L_DEFAULT 0
|
||||
#define SCE_L_COMMAND 1
|
||||
#define SCE_L_TAG 2
|
||||
#define SCE_L_MATH 3
|
||||
#define SCE_L_COMMENT 4
|
||||
#define SCE_LUA_DEFAULT 0
|
||||
#define SCE_LUA_COMMENT 1
|
||||
#define SCE_LUA_COMMENTLINE 2
|
||||
#define SCE_LUA_COMMENTDOC 3
|
||||
#define SCE_LUA_NUMBER 4
|
||||
#define SCE_LUA_WORD 5
|
||||
#define SCE_LUA_STRING 6
|
||||
#define SCE_LUA_CHARACTER 7
|
||||
#define SCE_LUA_LITERALSTRING 8
|
||||
#define SCE_LUA_PREPROCESSOR 9
|
||||
#define SCE_LUA_OPERATOR 10
|
||||
#define SCE_LUA_IDENTIFIER 11
|
||||
#define SCE_LUA_STRINGEOL 12
|
||||
#define SCE_ERR_DEFAULT 0
|
||||
#define SCE_ERR_PYTHON 1
|
||||
#define SCE_ERR_GCC 2
|
||||
#define SCE_ERR_MS 3
|
||||
#define SCE_ERR_CMD 4
|
||||
#define SCE_ERR_BORLAND 5
|
||||
#define SCE_ERR_PERL 6
|
||||
#define SCE_ERR_NET 7
|
||||
#define SCE_ERR_LUA 8
|
||||
#define SCE_ERR_DIFF_CHANGED 10
|
||||
#define SCE_ERR_DIFF_ADDITION 11
|
||||
#define SCE_ERR_DIFF_DELETION 12
|
||||
#define SCE_ERR_DIFF_MESSAGE 13
|
||||
#define SCE_BAT_DEFAULT 0
|
||||
#define SCE_BAT_COMMENT 1
|
||||
#define SCE_BAT_WORD 2
|
||||
#define SCE_BAT_LABEL 3
|
||||
#define SCE_BAT_HIDE 4
|
||||
#define SCE_BAT_COMMAND 5
|
||||
#define SCE_BAT_IDENTIFIER 6
|
||||
#define SCE_BAT_OPERATOR 7
|
||||
#define SCE_MAKE_DEFAULT 0
|
||||
#define SCE_MAKE_COMMENT 1
|
||||
#define SCE_MAKE_PREPROCESSOR 2
|
||||
#define SCE_MAKE_IDENTIFIER 3
|
||||
#define SCE_MAKE_OPERATOR 4
|
||||
#define SCE_MAKE_TARGET 5
|
||||
#define SCE_MAKE_IDEOL 9
|
||||
#define SCE_CONF_DEFAULT 0
|
||||
#define SCE_CONF_COMMENT 1
|
||||
#define SCE_CONF_NUMBER 2
|
||||
#define SCE_CONF_IDENTIFIER 3
|
||||
#define SCE_CONF_EXTENSION 4
|
||||
#define SCE_CONF_PARAMETER 5
|
||||
#define SCE_CONF_STRING 6
|
||||
#define SCE_CONF_OPERATOR 7
|
||||
#define SCE_CONF_IP 8
|
||||
#define SCE_CONF_DIRECTIVE 9
|
||||
#define SCE_AVE_DEFAULT 0
|
||||
#define SCE_AVE_COMMENT 1
|
||||
#define SCE_AVE_NUMBER 2
|
||||
#define SCE_AVE_WORD 3
|
||||
#define SCE_AVE_KEYWORD 4
|
||||
#define SCE_AVE_STATEMENT 5
|
||||
#define SCE_AVE_STRING 6
|
||||
#define SCE_AVE_ENUM 7
|
||||
#define SCE_AVE_STRINGEOL 8
|
||||
#define SCE_AVE_IDENTIFIER 9
|
||||
#define SCE_AVE_OPERATOR 10
|
||||
#define SCE_ADA_DEFAULT 0
|
||||
#define SCE_ADA_COMMENT 1
|
||||
#define SCE_ADA_NUMBER 2
|
||||
#define SCE_ADA_WORD 3
|
||||
#define SCE_ADA_STRING 4
|
||||
#define SCE_ADA_CHARACTER 5
|
||||
#define SCE_ADA_OPERATOR 6
|
||||
#define SCE_ADA_IDENTIFIER 7
|
||||
#define SCE_ADA_STRINGEOL 8
|
||||
#define SCE_LISP_DEFAULT 0
|
||||
#define SCE_LISP_COMMENT 1
|
||||
#define SCE_LISP_NUMBER 2
|
||||
#define SCE_LISP_KEYWORD 3
|
||||
#define SCE_LISP_STRING 6
|
||||
#define SCE_LISP_STRINGEOL 8
|
||||
#define SCE_LISP_IDENTIFIER 9
|
||||
#define SCE_LISP_OPERATOR 10
|
||||
#define SCE_EIFFEL_DEFAULT 0
|
||||
#define SCE_EIFFEL_COMMENTLINE 1
|
||||
#define SCE_EIFFEL_NUMBER 2
|
||||
#define SCE_EIFFEL_WORD 3
|
||||
#define SCE_EIFFEL_STRING 4
|
||||
#define SCE_EIFFEL_CHARACTER 5
|
||||
#define SCE_EIFFEL_OPERATOR 6
|
||||
#define SCE_EIFFEL_IDENTIFIER 7
|
||||
#define SCE_EIFFEL_STRINGEOL 8
|
||||
//--Autogenerated -- end of section automatically generated from Scintilla.iface
|
||||
|
||||
#endif
|
599
rosapps/devutils/vmingw/Scintilla.h
Normal file
599
rosapps/devutils/vmingw/Scintilla.h
Normal file
|
@ -0,0 +1,599 @@
|
|||
// Scintilla source code edit control
|
||||
/** @file Scintilla.h
|
||||
** Interface to the edit control.
|
||||
**/
|
||||
// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>
|
||||
// The License.txt file describes the conditions under which this software may be distributed.
|
||||
|
||||
// Most of this file is automatically generated from the Scintilla.iface interface definition
|
||||
// file which contains any comments about the definitions. HFacer.py does the generation.
|
||||
|
||||
#ifndef SCINTILLA_H
|
||||
#define SCINTILLA_H
|
||||
|
||||
// Compile-time configuration options
|
||||
#define MACRO_SUPPORT 1 // Comment out to remove macro hooks
|
||||
|
||||
#if PLAT_WIN
|
||||
#ifdef STATIC_BUILD
|
||||
void Scintilla_RegisterClasses(HINSTANCE hInstance);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Here should be placed typedefs for uptr_t, an unsigned integer type large enough to
|
||||
// hold a pointer and sptr_t, a signed integer large enough to hold a pointer.
|
||||
// May need to be changed for 64 bit platforms.
|
||||
typedef unsigned long uptr_t;
|
||||
typedef long sptr_t;
|
||||
|
||||
typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam, sptr_t lParam);
|
||||
|
||||
//++Autogenerated -- start of section automatically generated from Scintilla.iface
|
||||
#define INVALID_POSITION -1
|
||||
#define SCI_START 2000
|
||||
#define SCI_OPTIONAL_START 3000
|
||||
#define SCI_LEXER_START 4000
|
||||
#define SCI_ADDTEXT 2001
|
||||
#define SCI_ADDSTYLEDTEXT 2002
|
||||
#define SCI_INSERTTEXT 2003
|
||||
#define SCI_CLEARALL 2004
|
||||
#define SCI_CLEARDOCUMENTSTYLE 2005
|
||||
#define SCI_GETLENGTH 2006
|
||||
#define SCI_GETCHARAT 2007
|
||||
#define SCI_GETCURRENTPOS 2008
|
||||
#define SCI_GETANCHOR 2009
|
||||
#define SCI_GETSTYLEAT 2010
|
||||
#define SCI_REDO 2011
|
||||
#define SCI_SETUNDOCOLLECTION 2012
|
||||
#define SCI_SELECTALL 2013
|
||||
#define SCI_SETSAVEPOINT 2014
|
||||
#define SCI_GETSTYLEDTEXT 2015
|
||||
#define SCI_CANREDO 2016
|
||||
#define SCI_MARKERLINEFROMHANDLE 2017
|
||||
#define SCI_MARKERDELETEHANDLE 2018
|
||||
#define SCI_GETUNDOCOLLECTION 2019
|
||||
#define SCWS_INVISIBLE 0
|
||||
#define SCWS_VISIBLEALWAYS 1
|
||||
#define SCWS_VISIBLEAFTERINDENT 2
|
||||
#define SCI_GETVIEWWS 2020
|
||||
#define SCI_SETVIEWWS 2021
|
||||
#define SCI_POSITIONFROMPOINT 2022
|
||||
#define SCI_POSITIONFROMPOINTCLOSE 2023
|
||||
#define SCI_GOTOLINE 2024
|
||||
#define SCI_GOTOPOS 2025
|
||||
#define SCI_SETANCHOR 2026
|
||||
#define SCI_GETCURLINE 2027
|
||||
#define SCI_GETENDSTYLED 2028
|
||||
#define SC_EOL_CRLF 0
|
||||
#define SC_EOL_CR 1
|
||||
#define SC_EOL_LF 2
|
||||
#define SCI_CONVERTEOLS 2029
|
||||
#define SCI_GETEOLMODE 2030
|
||||
#define SCI_SETEOLMODE 2031
|
||||
#define SCI_STARTSTYLING 2032
|
||||
#define SCI_SETSTYLING 2033
|
||||
#define SCI_GETBUFFEREDDRAW 2034
|
||||
#define SCI_SETBUFFEREDDRAW 2035
|
||||
#define SCI_SETTABWIDTH 2036
|
||||
#define SCI_GETTABWIDTH 2121
|
||||
#define SC_CP_UTF8 65001
|
||||
#define SCI_SETCODEPAGE 2037
|
||||
#define SCI_SETUSEPALETTE 2039
|
||||
#define MARKER_MAX 31
|
||||
#define SC_MARK_CIRCLE 0
|
||||
#define SC_MARK_ROUNDRECT 1
|
||||
#define SC_MARK_ARROW 2
|
||||
#define SC_MARK_SMALLRECT 3
|
||||
#define SC_MARK_SHORTARROW 4
|
||||
#define SC_MARK_EMPTY 5
|
||||
#define SC_MARK_ARROWDOWN 6
|
||||
#define SC_MARK_MINUS 7
|
||||
#define SC_MARK_PLUS 8
|
||||
#define SC_MARK_VLINE 9
|
||||
#define SC_MARK_LCORNER 10
|
||||
#define SC_MARK_TCORNER 11
|
||||
#define SC_MARK_BOXPLUS 12
|
||||
#define SC_MARK_BOXPLUSCONNECTED 13
|
||||
#define SC_MARK_BOXMINUS 14
|
||||
#define SC_MARK_BOXMINUSCONNECTED 15
|
||||
#define SC_MARK_LCORNERCURVE 16
|
||||
#define SC_MARK_TCORNERCURVE 17
|
||||
#define SC_MARK_CIRCLEPLUS 18
|
||||
#define SC_MARK_CIRCLEPLUSCONNECTED 19
|
||||
#define SC_MARK_CIRCLEMINUS 20
|
||||
#define SC_MARK_CIRCLEMINUSCONNECTED 21
|
||||
#define SC_MARKNUM_FOLDEREND 25
|
||||
#define SC_MARKNUM_FOLDEROPENMID 26
|
||||
#define SC_MARKNUM_FOLDERMIDTAIL 27
|
||||
#define SC_MARKNUM_FOLDERTAIL 28
|
||||
#define SC_MARKNUM_FOLDERSUB 29
|
||||
#define SC_MARKNUM_FOLDER 30
|
||||
#define SC_MARKNUM_FOLDEROPEN 31
|
||||
#define SCI_MARKERDEFINE 2040
|
||||
#define SCI_MARKERSETFORE 2041
|
||||
#define SCI_MARKERSETBACK 2042
|
||||
#define SCI_MARKERADD 2043
|
||||
#define SCI_MARKERDELETE 2044
|
||||
#define SCI_MARKERDELETEALL 2045
|
||||
#define SCI_MARKERGET 2046
|
||||
#define SCI_MARKERNEXT 2047
|
||||
#define SCI_MARKERPREVIOUS 2048
|
||||
#define SC_MARGIN_SYMBOL 0
|
||||
#define SC_MARGIN_NUMBER 1
|
||||
#define SCI_SETMARGINTYPEN 2240
|
||||
#define SCI_GETMARGINTYPEN 2241
|
||||
#define SCI_SETMARGINWIDTHN 2242
|
||||
#define SCI_GETMARGINWIDTHN 2243
|
||||
#define SCI_SETMARGINMASKN 2244
|
||||
#define SCI_GETMARGINMASKN 2245
|
||||
#define SCI_SETMARGINSENSITIVEN 2246
|
||||
#define SCI_GETMARGINSENSITIVEN 2247
|
||||
#define STYLE_DEFAULT 32
|
||||
#define STYLE_LINENUMBER 33
|
||||
#define STYLE_BRACELIGHT 34
|
||||
#define STYLE_BRACEBAD 35
|
||||
#define STYLE_CONTROLCHAR 36
|
||||
#define STYLE_INDENTGUIDE 37
|
||||
#define STYLE_MAX 127
|
||||
#define SC_CHARSET_ANSI 0
|
||||
#define SC_CHARSET_DEFAULT 1
|
||||
#define SC_CHARSET_BALTIC 186
|
||||
#define SC_CHARSET_CHINESEBIG5 136
|
||||
#define SC_CHARSET_EASTEUROPE 238
|
||||
#define SC_CHARSET_GB2312 134
|
||||
#define SC_CHARSET_GREEK 161
|
||||
#define SC_CHARSET_HANGUL 129
|
||||
#define SC_CHARSET_MAC 77
|
||||
#define SC_CHARSET_OEM 255
|
||||
#define SC_CHARSET_RUSSIAN 204
|
||||
#define SC_CHARSET_SHIFTJIS 128
|
||||
#define SC_CHARSET_SYMBOL 2
|
||||
#define SC_CHARSET_TURKISH 162
|
||||
#define SC_CHARSET_JOHAB 130
|
||||
#define SC_CHARSET_HEBREW 177
|
||||
#define SC_CHARSET_ARABIC 178
|
||||
#define SC_CHARSET_VIETNAMESE 163
|
||||
#define SC_CHARSET_THAI 222
|
||||
#define SCI_STYLECLEARALL 2050
|
||||
#define SCI_STYLESETFORE 2051
|
||||
#define SCI_STYLESETBACK 2052
|
||||
#define SCI_STYLESETBOLD 2053
|
||||
#define SCI_STYLESETITALIC 2054
|
||||
#define SCI_STYLESETSIZE 2055
|
||||
#define SCI_STYLESETFONT 2056
|
||||
#define SCI_STYLESETEOLFILLED 2057
|
||||
#define SCI_STYLERESETDEFAULT 2058
|
||||
#define SCI_STYLESETUNDERLINE 2059
|
||||
#define SC_CASE_MIXED 0
|
||||
#define SC_CASE_UPPER 1
|
||||
#define SC_CASE_LOWER 2
|
||||
#define SCI_STYLESETCASE 2060
|
||||
#define SCI_STYLESETCHARACTERSET 2066
|
||||
#define SCI_SETSELFORE 2067
|
||||
#define SCI_SETSELBACK 2068
|
||||
#define SCI_SETCARETFORE 2069
|
||||
#define SCI_ASSIGNCMDKEY 2070
|
||||
#define SCI_CLEARCMDKEY 2071
|
||||
#define SCI_CLEARALLCMDKEYS 2072
|
||||
#define SCI_SETSTYLINGEX 2073
|
||||
#define SCI_STYLESETVISIBLE 2074
|
||||
#define SCI_GETCARETPERIOD 2075
|
||||
#define SCI_SETCARETPERIOD 2076
|
||||
#define SCI_SETWORDCHARS 2077
|
||||
#define SCI_BEGINUNDOACTION 2078
|
||||
#define SCI_ENDUNDOACTION 2079
|
||||
#define INDIC_MAX 7
|
||||
#define INDIC_PLAIN 0
|
||||
#define INDIC_SQUIGGLE 1
|
||||
#define INDIC_TT 2
|
||||
#define INDIC_DIAGONAL 3
|
||||
#define INDIC_STRIKE 4
|
||||
#define INDIC0_MASK 32
|
||||
#define INDIC1_MASK 64
|
||||
#define INDIC2_MASK 128
|
||||
#define INDICS_MASK INDIC0_MASK | INDIC1_MASK | INDIC2_MASK
|
||||
#define SCI_INDICSETSTYLE 2080
|
||||
#define SCI_INDICGETSTYLE 2081
|
||||
#define SCI_INDICSETFORE 2082
|
||||
#define SCI_INDICGETFORE 2083
|
||||
#define SCI_SETSTYLEBITS 2090
|
||||
#define SCI_GETSTYLEBITS 2091
|
||||
#define SCI_SETLINESTATE 2092
|
||||
#define SCI_GETLINESTATE 2093
|
||||
#define SCI_GETMAXLINESTATE 2094
|
||||
#define SCI_GETCARETLINEVISIBLE 2095
|
||||
#define SCI_SETCARETLINEVISIBLE 2096
|
||||
#define SCI_GETCARETLINEBACK 2097
|
||||
#define SCI_SETCARETLINEBACK 2098
|
||||
#define SCI_AUTOCSHOW 2100
|
||||
#define SCI_AUTOCCANCEL 2101
|
||||
#define SCI_AUTOCACTIVE 2102
|
||||
#define SCI_AUTOCPOSSTART 2103
|
||||
#define SCI_AUTOCCOMPLETE 2104
|
||||
#define SCI_AUTOCSTOPS 2105
|
||||
#define SCI_AUTOCSETSEPARATOR 2106
|
||||
#define SCI_AUTOCGETSEPARATOR 2107
|
||||
#define SCI_AUTOCSELECT 2108
|
||||
#define SCI_AUTOCSETCANCELATSTART 2110
|
||||
#define SCI_AUTOCGETCANCELATSTART 2111
|
||||
#define SCI_AUTOCSETFILLUPS 2112
|
||||
#define SCI_AUTOCSETCHOOSESINGLE 2113
|
||||
#define SCI_AUTOCGETCHOOSESINGLE 2114
|
||||
#define SCI_AUTOCSETIGNORECASE 2115
|
||||
#define SCI_AUTOCGETIGNORECASE 2116
|
||||
#define SCI_USERLISTSHOW 2117
|
||||
#define SCI_AUTOCSETAUTOHIDE 2118
|
||||
#define SCI_AUTOCGETAUTOHIDE 2119
|
||||
#define SCI_SETINDENT 2122
|
||||
#define SCI_GETINDENT 2123
|
||||
#define SCI_SETUSETABS 2124
|
||||
#define SCI_GETUSETABS 2125
|
||||
#define SCI_SETLINEINDENTATION 2126
|
||||
#define SCI_GETLINEINDENTATION 2127
|
||||
#define SCI_GETLINEINDENTPOSITION 2128
|
||||
#define SCI_GETCOLUMN 2129
|
||||
#define SCI_SETHSCROLLBAR 2130
|
||||
#define SCI_GETHSCROLLBAR 2131
|
||||
#define SCI_SETINDENTATIONGUIDES 2132
|
||||
#define SCI_GETINDENTATIONGUIDES 2133
|
||||
#define SCI_SETHIGHLIGHTGUIDE 2134
|
||||
#define SCI_GETHIGHLIGHTGUIDE 2135
|
||||
#define SCI_GETLINEENDPOSITION 2136
|
||||
#define SCI_GETCODEPAGE 2137
|
||||
#define SCI_GETCARETFORE 2138
|
||||
#define SCI_GETUSEPALETTE 2139
|
||||
#define SCI_GETREADONLY 2140
|
||||
#define SCI_SETCURRENTPOS 2141
|
||||
#define SCI_SETSELECTIONSTART 2142
|
||||
#define SCI_GETSELECTIONSTART 2143
|
||||
#define SCI_SETSELECTIONEND 2144
|
||||
#define SCI_GETSELECTIONEND 2145
|
||||
#define SCI_SETPRINTMAGNIFICATION 2146
|
||||
#define SCI_GETPRINTMAGNIFICATION 2147
|
||||
#define SC_PRINT_NORMAL 0
|
||||
#define SC_PRINT_INVERTLIGHT 1
|
||||
#define SC_PRINT_BLACKONWHITE 2
|
||||
#define SC_PRINT_COLOURONWHITE 3
|
||||
#define SC_PRINT_COLOURONWHITEDEFAULTBG 4
|
||||
#define SCI_SETPRINTCOLOURMODE 2148
|
||||
#define SCI_GETPRINTCOLOURMODE 2149
|
||||
#define SCFIND_WHOLEWORD 2
|
||||
#define SCFIND_MATCHCASE 4
|
||||
#define SCFIND_WORDSTART 0x00100000
|
||||
#define SCFIND_REGEXP 0x00200000
|
||||
#define SCI_FINDTEXT 2150
|
||||
#define SCI_FORMATRANGE 2151
|
||||
#define SCI_GETFIRSTVISIBLELINE 2152
|
||||
#define SCI_GETLINE 2153
|
||||
#define SCI_GETLINECOUNT 2154
|
||||
#define SCI_SETMARGINLEFT 2155
|
||||
#define SCI_GETMARGINLEFT 2156
|
||||
#define SCI_SETMARGINRIGHT 2157
|
||||
#define SCI_GETMARGINRIGHT 2158
|
||||
#define SCI_GETMODIFY 2159
|
||||
#define SCI_SETSEL 2160
|
||||
#define SCI_GETSELTEXT 2161
|
||||
#define SCI_GETTEXTRANGE 2162
|
||||
#define SCI_HIDESELECTION 2163
|
||||
#define SCI_POINTXFROMPOSITION 2164
|
||||
#define SCI_POINTYFROMPOSITION 2165
|
||||
#define SCI_LINEFROMPOSITION 2166
|
||||
#define SCI_POSITIONFROMLINE 2167
|
||||
#define SCI_LINESCROLL 2168
|
||||
#define SCI_SCROLLCARET 2169
|
||||
#define SCI_REPLACESEL 2170
|
||||
#define SCI_SETREADONLY 2171
|
||||
#define SCI_NULL 2172
|
||||
#define SCI_CANPASTE 2173
|
||||
#define SCI_CANUNDO 2174
|
||||
#define SCI_EMPTYUNDOBUFFER 2175
|
||||
#define SCI_UNDO 2176
|
||||
#define SCI_CUT 2177
|
||||
#define SCI_COPY 2178
|
||||
#define SCI_PASTE 2179
|
||||
#define SCI_CLEAR 2180
|
||||
#define SCI_SETTEXT 2181
|
||||
#define SCI_GETTEXT 2182
|
||||
#define SCI_GETTEXTLENGTH 2183
|
||||
#define SCI_GETDIRECTFUNCTION 2184
|
||||
#define SCI_GETDIRECTPOINTER 2185
|
||||
#define SCI_SETOVERTYPE 2186
|
||||
#define SCI_GETOVERTYPE 2187
|
||||
#define SCI_SETCARETWIDTH 2188
|
||||
#define SCI_GETCARETWIDTH 2189
|
||||
#define SCI_SETTARGETSTART 2190
|
||||
#define SCI_GETTARGETSTART 2191
|
||||
#define SCI_SETTARGETEND 2192
|
||||
#define SCI_GETTARGETEND 2193
|
||||
#define SCI_REPLACETARGET 2194
|
||||
#define SCI_REPLACETARGETRE 2195
|
||||
#define SCI_SEARCHINTARGET 2197
|
||||
#define SCI_SETSEARCHFLAGS 2198
|
||||
#define SCI_GETSEARCHFLAGS 2199
|
||||
#define SCI_CALLTIPSHOW 2200
|
||||
#define SCI_CALLTIPCANCEL 2201
|
||||
#define SCI_CALLTIPACTIVE 2202
|
||||
#define SCI_CALLTIPPOSSTART 2203
|
||||
#define SCI_CALLTIPSETHLT 2204
|
||||
#define SCI_CALLTIPSETBACK 2205
|
||||
#define SCI_VISIBLEFROMDOCLINE 2220
|
||||
#define SCI_DOCLINEFROMVISIBLE 2221
|
||||
#define SC_FOLDLEVELBASE 0x400
|
||||
#define SC_FOLDLEVELWHITEFLAG 0x1000
|
||||
#define SC_FOLDLEVELHEADERFLAG 0x2000
|
||||
#define SC_FOLDLEVELNUMBERMASK 0x0FFF
|
||||
#define SCI_SETFOLDLEVEL 2222
|
||||
#define SCI_GETFOLDLEVEL 2223
|
||||
#define SCI_GETLASTCHILD 2224
|
||||
#define SCI_GETFOLDPARENT 2225
|
||||
#define SCI_SHOWLINES 2226
|
||||
#define SCI_HIDELINES 2227
|
||||
#define SCI_GETLINEVISIBLE 2228
|
||||
#define SCI_SETFOLDEXPANDED 2229
|
||||
#define SCI_GETFOLDEXPANDED 2230
|
||||
#define SCI_TOGGLEFOLD 2231
|
||||
#define SCI_ENSUREVISIBLE 2232
|
||||
#define SCI_SETFOLDFLAGS 2233
|
||||
#define SCI_ENSUREVISIBLEENFORCEPOLICY 2234
|
||||
#define SCI_SETTABINDENTS 2260
|
||||
#define SCI_GETTABINDENTS 2261
|
||||
#define SCI_SETBACKSPACEUNINDENTS 2262
|
||||
#define SCI_GETBACKSPACEUNINDENTS 2263
|
||||
#define SC_TIME_FOREVER 10000000
|
||||
#define SCI_SETMOUSEDWELLTIME 2264
|
||||
#define SCI_GETMOUSEDWELLTIME 2265
|
||||
#define SCI_LINEDOWN 2300
|
||||
#define SCI_LINEDOWNEXTEND 2301
|
||||
#define SCI_LINEUP 2302
|
||||
#define SCI_LINEUPEXTEND 2303
|
||||
#define SCI_CHARLEFT 2304
|
||||
#define SCI_CHARLEFTEXTEND 2305
|
||||
#define SCI_CHARRIGHT 2306
|
||||
#define SCI_CHARRIGHTEXTEND 2307
|
||||
#define SCI_WORDLEFT 2308
|
||||
#define SCI_WORDLEFTEXTEND 2309
|
||||
#define SCI_WORDRIGHT 2310
|
||||
#define SCI_WORDRIGHTEXTEND 2311
|
||||
#define SCI_HOME 2312
|
||||
#define SCI_HOMEEXTEND 2313
|
||||
#define SCI_LINEEND 2314
|
||||
#define SCI_LINEENDEXTEND 2315
|
||||
#define SCI_DOCUMENTSTART 2316
|
||||
#define SCI_DOCUMENTSTARTEXTEND 2317
|
||||
#define SCI_DOCUMENTEND 2318
|
||||
#define SCI_DOCUMENTENDEXTEND 2319
|
||||
#define SCI_PAGEUP 2320
|
||||
#define SCI_PAGEUPEXTEND 2321
|
||||
#define SCI_PAGEDOWN 2322
|
||||
#define SCI_PAGEDOWNEXTEND 2323
|
||||
#define SCI_EDITTOGGLEOVERTYPE 2324
|
||||
#define SCI_CANCEL 2325
|
||||
#define SCI_DELETEBACK 2326
|
||||
#define SCI_TAB 2327
|
||||
#define SCI_BACKTAB 2328
|
||||
#define SCI_NEWLINE 2329
|
||||
#define SCI_FORMFEED 2330
|
||||
#define SCI_VCHOME 2331
|
||||
#define SCI_VCHOMEEXTEND 2332
|
||||
#define SCI_ZOOMIN 2333
|
||||
#define SCI_ZOOMOUT 2334
|
||||
#define SCI_DELWORDLEFT 2335
|
||||
#define SCI_DELWORDRIGHT 2336
|
||||
#define SCI_LINECUT 2337
|
||||
#define SCI_LINEDELETE 2338
|
||||
#define SCI_LINETRANSPOSE 2339
|
||||
#define SCI_LOWERCASE 2340
|
||||
#define SCI_UPPERCASE 2341
|
||||
#define SCI_LINESCROLLDOWN 2342
|
||||
#define SCI_LINESCROLLUP 2343
|
||||
#define SCI_MOVECARETINSIDEVIEW 2401
|
||||
#define SCI_LINELENGTH 2350
|
||||
#define SCI_BRACEHIGHLIGHT 2351
|
||||
#define SCI_BRACEBADLIGHT 2352
|
||||
#define SCI_BRACEMATCH 2353
|
||||
#define SCI_GETVIEWEOL 2355
|
||||
#define SCI_SETVIEWEOL 2356
|
||||
#define SCI_GETDOCPOINTER 2357
|
||||
#define SCI_SETDOCPOINTER 2358
|
||||
#define SCI_SETMODEVENTMASK 2359
|
||||
#define EDGE_NONE 0
|
||||
#define EDGE_LINE 1
|
||||
#define EDGE_BACKGROUND 2
|
||||
#define SCI_GETEDGECOLUMN 2360
|
||||
#define SCI_SETEDGECOLUMN 2361
|
||||
#define SCI_GETEDGEMODE 2362
|
||||
#define SCI_SETEDGEMODE 2363
|
||||
#define SCI_GETEDGECOLOUR 2364
|
||||
#define SCI_SETEDGECOLOUR 2365
|
||||
#define SCI_SEARCHANCHOR 2366
|
||||
#define SCI_SEARCHNEXT 2367
|
||||
#define SCI_SEARCHPREV 2368
|
||||
#define CARET_SLOP 0x01
|
||||
#define CARET_CENTER 0x02
|
||||
#define CARET_STRICT 0x04
|
||||
#define CARET_XEVEN 0x08
|
||||
#define CARET_XJUMPS 0x10
|
||||
#define SCI_SETCARETPOLICY 2369
|
||||
#define SCI_LINESONSCREEN 2370
|
||||
#define SCI_USEPOPUP 2371
|
||||
#define SCI_SELECTIONISRECTANGLE 2372
|
||||
#define SCI_SETZOOM 2373
|
||||
#define SCI_GETZOOM 2374
|
||||
#define SCI_CREATEDOCUMENT 2375
|
||||
#define SCI_ADDREFDOCUMENT 2376
|
||||
#define SCI_RELEASEDOCUMENT 2377
|
||||
#define SCI_GETMODEVENTMASK 2378
|
||||
#define SCI_SETFOCUS 2380
|
||||
#define SCI_GETFOCUS 2381
|
||||
#define SCI_SETSTATUS 2382
|
||||
#define SCI_GETSTATUS 2383
|
||||
#define SCI_SETMOUSEDOWNCAPTURES 2384
|
||||
#define SCI_GETMOUSEDOWNCAPTURES 2385
|
||||
#define SC_CURSORNORMAL -1
|
||||
#define SC_CURSORWAIT 3
|
||||
#define SCI_SETCURSOR 2386
|
||||
#define SCI_GETCURSOR 2387
|
||||
#define SCI_WORDPARTLEFT 2390
|
||||
#define SCI_WORDPARTLEFTEXTEND 2391
|
||||
#define SCI_WORDPARTRIGHT 2392
|
||||
#define SCI_WORDPARTRIGHTEXTEND 2393
|
||||
#define VISIBLE_SLOP 0x01
|
||||
#define VISIBLE_STRICT 0x04
|
||||
#define SCI_SETVISIBLEPOLICY 2394
|
||||
#define SCI_DELLINELEFT 2395
|
||||
#define SCI_DELLINERIGHT 2396
|
||||
#define SCI_GRABFOCUS 2400
|
||||
#define SCI_STARTRECORD 3001
|
||||
#define SCI_STOPRECORD 3002
|
||||
#define SCI_SETLEXER 4001
|
||||
#define SCI_GETLEXER 4002
|
||||
#define SCI_COLOURISE 4003
|
||||
#define SCI_SETPROPERTY 4004
|
||||
#define SCI_SETKEYWORDS 4005
|
||||
#define SCI_SETLEXERLANGUAGE 4006
|
||||
#define SC_MOD_INSERTTEXT 0x1
|
||||
#define SC_MOD_DELETETEXT 0x2
|
||||
#define SC_MOD_CHANGESTYLE 0x4
|
||||
#define SC_MOD_CHANGEFOLD 0x8
|
||||
#define SC_PERFORMED_USER 0x10
|
||||
#define SC_PERFORMED_UNDO 0x20
|
||||
#define SC_PERFORMED_REDO 0x40
|
||||
#define SC_LASTSTEPINUNDOREDO 0x100
|
||||
#define SC_MOD_CHANGEMARKER 0x200
|
||||
#define SC_MOD_BEFOREINSERT 0x400
|
||||
#define SC_MOD_BEFOREDELETE 0x800
|
||||
#define SC_MODEVENTMASKALL 0xF77
|
||||
#define SCEN_CHANGE 768
|
||||
#define SCEN_SETFOCUS 512
|
||||
#define SCEN_KILLFOCUS 256
|
||||
#define SCK_DOWN 300
|
||||
#define SCK_UP 301
|
||||
#define SCK_LEFT 302
|
||||
#define SCK_RIGHT 303
|
||||
#define SCK_HOME 304
|
||||
#define SCK_END 305
|
||||
#define SCK_PRIOR 306
|
||||
#define SCK_NEXT 307
|
||||
#define SCK_DELETE 308
|
||||
#define SCK_INSERT 309
|
||||
#define SCK_ESCAPE 7
|
||||
#define SCK_BACK 8
|
||||
#define SCK_TAB 9
|
||||
#define SCK_RETURN 13
|
||||
#define SCK_ADD 310
|
||||
#define SCK_SUBTRACT 311
|
||||
#define SCK_DIVIDE 312
|
||||
#define SCMOD_SHIFT 1
|
||||
#define SCMOD_CTRL 2
|
||||
#define SCMOD_ALT 4
|
||||
#define SCN_STYLENEEDED 2000
|
||||
#define SCN_CHARADDED 2001
|
||||
#define SCN_SAVEPOINTREACHED 2002
|
||||
#define SCN_SAVEPOINTLEFT 2003
|
||||
#define SCN_MODIFYATTEMPTRO 2004
|
||||
#define SCN_KEY 2005
|
||||
#define SCN_DOUBLECLICK 2006
|
||||
#define SCN_UPDATEUI 2007
|
||||
#define SCN_CHECKBRACE 2007
|
||||
#define SCN_MODIFIED 2008
|
||||
#define SCN_MACRORECORD 2009
|
||||
#define SCN_MARGINCLICK 2010
|
||||
#define SCN_NEEDSHOWN 2011
|
||||
#define SCN_POSCHANGED 2012
|
||||
#define SCN_PAINTED 2013
|
||||
#define SCN_USERLISTSELECTION 2014
|
||||
#define SCN_URIDROPPED 2015
|
||||
#define SCN_DWELLSTART 2016
|
||||
#define SCN_DWELLEND 2017
|
||||
//--Autogenerated -- end of section automatically generated from Scintilla.iface
|
||||
|
||||
// Optional module for macro recording
|
||||
#ifdef MACRO_SUPPORT
|
||||
typedef void (tMacroRecorder)(unsigned int iMessage, unsigned long wParam,
|
||||
long lParam, void *userData);
|
||||
#endif
|
||||
|
||||
// These structures are defined to be exactly the same shape as the Win32
|
||||
// CHARRANGE, TEXTRANGE, FINDTEXTEX, FORMATRANGE, and NMHDR structs.
|
||||
// So older code that treats Scintilla as a RichEdit will work.
|
||||
|
||||
struct CharacterRange {
|
||||
long cpMin;
|
||||
long cpMax;
|
||||
};
|
||||
|
||||
struct TextRange {
|
||||
struct CharacterRange chrg;
|
||||
char *lpstrText;
|
||||
};
|
||||
|
||||
struct TextToFind {
|
||||
struct CharacterRange chrg;
|
||||
char *lpstrText;
|
||||
struct CharacterRange chrgText;
|
||||
};
|
||||
|
||||
#ifdef PLATFORM_H
|
||||
|
||||
// This structure is used in printing and requires some of the graphics types
|
||||
// from Platform.h. Not needed by most client code.
|
||||
|
||||
struct RangeToFormat {
|
||||
SurfaceID hdc;
|
||||
SurfaceID hdcTarget;
|
||||
PRectangle rc;
|
||||
PRectangle rcPage;
|
||||
CharacterRange chrg;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
struct NotifyHeader {
|
||||
// hwndFrom is really an environment specifc window handle or pointer
|
||||
// but most clients of Scintilla.h do not have this type visible.
|
||||
//WindowID hwndFrom;
|
||||
void *hwndFrom;
|
||||
unsigned int idFrom;
|
||||
unsigned int code;
|
||||
};
|
||||
|
||||
struct SCNotification {
|
||||
struct NotifyHeader nmhdr;
|
||||
int position; // SCN_STYLENEEDED, SCN_MODIFIED, SCN_DWELLSTART, SCN_DWELLEND
|
||||
int ch; // SCN_CHARADDED, SCN_KEY
|
||||
int modifiers; // SCN_KEY
|
||||
int modificationType; // SCN_MODIFIED
|
||||
const char *text; // SCN_MODIFIED
|
||||
int length; // SCN_MODIFIED
|
||||
int linesAdded; // SCN_MODIFIED
|
||||
#ifdef MACRO_SUPPORT
|
||||
int message; // SCN_MACRORECORD
|
||||
uptr_t wParam; // SCN_MACRORECORD
|
||||
sptr_t lParam; // SCN_MACRORECORD
|
||||
#endif
|
||||
int line; // SCN_MODIFIED
|
||||
int foldLevelNow; // SCN_MODIFIED
|
||||
int foldLevelPrev; // SCN_MODIFIED
|
||||
int margin; // SCN_MARGINCLICK
|
||||
int listType; // SCN_USERLISTSELECTION
|
||||
int x; // SCN_DWELLSTART, SCN_DWELLEND
|
||||
int y; // SCN_DWELLSTART, SCN_DWELLEND
|
||||
};
|
||||
|
||||
#define SC_MASK_FOLDERS ((1<<SC_MARKNUM_FOLDER) | \
|
||||
(1<<SC_MARKNUM_FOLDEROPEN) | \
|
||||
(1<<SC_MARKNUM_FOLDERSUB) | \
|
||||
(1<<SC_MARKNUM_FOLDERTAIL) | \
|
||||
(1<<SC_MARKNUM_FOLDERMIDTAIL) | \
|
||||
(1<<SC_MARKNUM_FOLDEROPENMID) | \
|
||||
(1<<SC_MARKNUM_FOLDEREND))
|
||||
|
||||
// Deprecation section listing all API features that are deprecated and will
|
||||
// will be removed completely in a future version.
|
||||
// To enable these features define INCLUDE_DEPRECATED_FEATURES
|
||||
|
||||
#ifdef INCLUDE_DEPRECATED_FEATURES
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
834
rosapps/devutils/vmingw/editor.cpp
Normal file
834
rosapps/devutils/vmingw/editor.cpp
Normal file
|
@ -0,0 +1,834 @@
|
|||
/********************************************************************
|
||||
* Module: editor.cpp. This is part of Visual-MinGW.
|
||||
*
|
||||
* Purpose: Procedures to manage Scintilla editor.
|
||||
*
|
||||
* Authors: These classes are based on SciTE release 1.39.
|
||||
* http://www.scintilla.org/
|
||||
* SciTE original code by Neil Hodgson.
|
||||
* Present revised code by Manu B.
|
||||
*
|
||||
* License: Both SciTE and Scintilla are covered by
|
||||
* "License for Scintilla and SciTE" agreement terms detailed in license.htm.
|
||||
* Present revised code is covered by GNU General Public License.
|
||||
*
|
||||
* Revisions:
|
||||
*
|
||||
********************************************************************/
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include "commctrl.h"
|
||||
#include "commdlg.h"
|
||||
#include "editor.h"
|
||||
#include "rsrc.h"
|
||||
|
||||
extern CMessageBox MsgBox;
|
||||
|
||||
int Minimum(int a, int b);
|
||||
int Maximum(int a, int b);
|
||||
|
||||
int Minimum(int a, int b){
|
||||
if (a < b)
|
||||
return a;
|
||||
else
|
||||
return b;
|
||||
}
|
||||
|
||||
int Maximum(int a, int b){
|
||||
if (a > b)
|
||||
return a;
|
||||
else
|
||||
return b;
|
||||
}
|
||||
|
||||
void EnsureRangeVisible(HWND hwndCtrl, int posStart, int posEnd, bool enforcePolicy){
|
||||
int lineStart = SendMessage(hwndCtrl, SCI_LINEFROMPOSITION, Minimum(posStart, posEnd), 0);
|
||||
int lineEnd = SendMessage(hwndCtrl, SCI_LINEFROMPOSITION, Maximum(posStart, posEnd), 0);
|
||||
for (int line = lineStart; line <= lineEnd; line++){
|
||||
SendMessage(hwndCtrl,
|
||||
enforcePolicy ? SCI_ENSUREVISIBLEENFORCEPOLICY : SCI_ENSUREVISIBLE, line, 0);
|
||||
}
|
||||
}
|
||||
|
||||
int LengthDocument(HWND hwndCtrl){
|
||||
return SendMessage(hwndCtrl, SCI_GETLENGTH, 0, 0);
|
||||
}
|
||||
|
||||
CharacterRange GetSelection(HWND hwndCtrl){
|
||||
CharacterRange crange;
|
||||
crange.cpMin = SendMessage(hwndCtrl, SCI_GETSELECTIONSTART, 0, 0);
|
||||
crange.cpMax = SendMessage(hwndCtrl, SCI_GETSELECTIONEND, 0, 0);
|
||||
return crange;
|
||||
}
|
||||
|
||||
|
||||
/********************************************************************
|
||||
* Class: CChooseFontDlg.
|
||||
*
|
||||
* Purpose:
|
||||
*
|
||||
* Revisions:
|
||||
*
|
||||
********************************************************************/
|
||||
CChooseFontDlg::CChooseFontDlg(){
|
||||
ZeroMemory(&lf, sizeof(LOGFONT));
|
||||
/* lf.lfHeight;
|
||||
lf.lfWidth;
|
||||
lf.lfEscapement;
|
||||
lf.lfOrientation;
|
||||
lf.lfWeight;
|
||||
lf.lfItalic;
|
||||
lf.lfUnderline;
|
||||
lf.lfStrikeOut;
|
||||
lf.lfCharSet;
|
||||
lf.lfOutPrecision;
|
||||
lf.lfClipPrecision;
|
||||
lf.lfQuality;
|
||||
lf.lfPitchAndFamily;
|
||||
lf.lfFaceName[LF_FACESIZE];*/
|
||||
|
||||
cf.lStructSize = sizeof(CHOOSEFONT);
|
||||
cf.hwndOwner = 0;
|
||||
cf.hDC = NULL;
|
||||
cf.lpLogFont = &lf;//&(Profile.LogFont);
|
||||
cf.iPointSize = 0;
|
||||
cf.Flags = /*CF_INITTOLOGFONTSTRUCT
|
||||
|*/ CF_SCREENFONTS | CF_EFFECTS
|
||||
/*| CF_ENABLEHOOK*/;
|
||||
cf.rgbColors = 0;//Profile.rgbForeColor;
|
||||
cf.lCustData = 0;
|
||||
cf.lpfnHook = NULL;
|
||||
cf.lpTemplateName = NULL;
|
||||
cf.hInstance = NULL;
|
||||
cf.lpszStyle = NULL;
|
||||
cf.nFontType = SCREEN_FONTTYPE;
|
||||
cf.nSizeMin = 0;
|
||||
cf.nSizeMax = 0;
|
||||
}
|
||||
|
||||
CChooseFontDlg::~CChooseFontDlg(){
|
||||
}
|
||||
|
||||
bool CChooseFontDlg::Create(CWindow * pWindow){
|
||||
cf.hwndOwner = pWindow->_hWnd;
|
||||
return ChooseFont(&cf);
|
||||
}
|
||||
|
||||
|
||||
/*bool ChooseNewFont(HWND hWndListBox){
|
||||
static CHOOSEFONT cf;
|
||||
static BOOL bFirstTime = TRUE;
|
||||
HFONT hFont;
|
||||
if(bFirstTime){
|
||||
bFirstTime = false;
|
||||
}
|
||||
if(ChooseFont(&cf)){
|
||||
HDC hDC;
|
||||
hFont = CreateFontIndirect( &(Profile.LogFont) );
|
||||
hDC = GetDC( hWndListBox );
|
||||
SelectObject( hDC, hFont );
|
||||
Profile.rgbForeColor = cf.rgbColors;
|
||||
InvalidateRect( hWndListBox, NULL, TRUE );
|
||||
SendMessage( hWndListBox, WM_CTLCOLORLISTBOX, (DWORD) hDC, (LONG) hWndListBox );
|
||||
SendMessage( hWndListBox, WM_SETFONT, (DWORD) hFont, TRUE );
|
||||
ReleaseDC( hWndListBox, hDC );
|
||||
}
|
||||
return true;
|
||||
}*/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
* Class: CFindReplaceDlg.
|
||||
*
|
||||
* Purpose:
|
||||
*
|
||||
* Revisions:
|
||||
*
|
||||
********************************************************************/
|
||||
CFindReplaceDlg::CFindReplaceDlg(){
|
||||
pEditor = NULL;
|
||||
hEditor = 0;
|
||||
resId = 0;
|
||||
*findWhat = '\0';
|
||||
*replaceWhat = '\0';
|
||||
|
||||
bWholeWord = false;
|
||||
bMatchCase = true;
|
||||
bRegExp = false;
|
||||
bWrapFind = false;
|
||||
bUnSlash = false;
|
||||
bReverseFind = false;
|
||||
bHavefound = false;
|
||||
}
|
||||
|
||||
CFindReplaceDlg::~CFindReplaceDlg(){
|
||||
}
|
||||
|
||||
HWND CFindReplaceDlg::Find(CScintilla * pEditor){
|
||||
if (_hWnd || !pEditor)
|
||||
return 0;
|
||||
return CreateParam(pEditor, IDD_FIND, (long) IDD_FIND);
|
||||
}
|
||||
|
||||
HWND CFindReplaceDlg::Replace(CScintilla * pEditor){
|
||||
if (_hWnd || !pEditor)
|
||||
return 0;
|
||||
return CreateParam(pEditor, IDD_REPLACE, (long) IDD_REPLACE);
|
||||
}
|
||||
|
||||
LRESULT CALLBACK CFindReplaceDlg::CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam){
|
||||
switch(Message){
|
||||
case WM_INITDIALOG:
|
||||
return OnInitDialog((HWND) wParam, lParam);
|
||||
|
||||
case WM_COMMAND:
|
||||
OnCommand(HIWORD(wParam), LOWORD(wParam), (HWND) lParam);
|
||||
break;
|
||||
|
||||
case WM_CLOSE:
|
||||
EndDlg(0);
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL CFindReplaceDlg::OnInitDialog(HWND, LPARAM lInitParam){
|
||||
// Set pointers.
|
||||
pEditor = (CEditor *) _pParent;
|
||||
if (pEditor == NULL)
|
||||
return TRUE;
|
||||
|
||||
hEditor = pEditor->_hWnd;
|
||||
resId = lInitParam;
|
||||
|
||||
hFindWhat = GetItem(IDC_FINDWHAT);
|
||||
hWholeWord = GetItem(IDC_WHOLEWORD);
|
||||
hMatchCase = GetItem(IDC_MATCHCASE);
|
||||
hRegExp = GetItem(IDC_REGEXP);
|
||||
hWrap = GetItem(IDC_WRAP);
|
||||
hUnSlash = GetItem(IDC_UNSLASH);
|
||||
|
||||
if (resId == IDD_FIND)
|
||||
return Find_OnInitDialog();
|
||||
else if (resId == IDD_REPLACE)
|
||||
return Replace_OnInitDialog();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL CFindReplaceDlg::Find_OnInitDialog(void){
|
||||
|
||||
hUp = GetItem(IDC_DIRECTIONUP);
|
||||
hDown = GetItem(IDC_DIRECTIONDOWN);
|
||||
|
||||
SetItemText(hFindWhat, findWhat);
|
||||
//FillComboFromMemory(wFindWhat, memFinds);
|
||||
if (bWholeWord)
|
||||
::SendMessage(hWholeWord, BM_SETCHECK, BST_CHECKED, 0);
|
||||
if (bMatchCase)
|
||||
::SendMessage(hMatchCase, BM_SETCHECK, BST_CHECKED, 0);
|
||||
if (bRegExp)
|
||||
::SendMessage(hRegExp, BM_SETCHECK, BST_CHECKED, 0);
|
||||
if (bWrapFind)
|
||||
::SendMessage(hWrap, BM_SETCHECK, BST_CHECKED, 0);
|
||||
if (bUnSlash)
|
||||
::SendMessage(hUnSlash, BM_SETCHECK, BST_CHECKED, 0);
|
||||
|
||||
if (bReverseFind) {
|
||||
::SendMessage(hUp, BM_SETCHECK, BST_CHECKED, 0);
|
||||
} else {
|
||||
::SendMessage(hDown, BM_SETCHECK, BST_CHECKED, 0);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL CFindReplaceDlg::Replace_OnInitDialog(void){
|
||||
SetItemText(hFindWhat, findWhat);
|
||||
//FillComboFromMemory(wFindWhat, sci->memFinds);
|
||||
|
||||
hReplaceWith = GetItem(IDC_REPLACEWITH);
|
||||
SetItemText(hReplaceWith, replaceWhat);
|
||||
//FillComboFromMemory(wReplaceWith, sci->memReplaces);
|
||||
|
||||
if (bWholeWord)
|
||||
::SendMessage(hWholeWord, BM_SETCHECK, BST_CHECKED, 0);
|
||||
if (bMatchCase)
|
||||
::SendMessage(hMatchCase, BM_SETCHECK, BST_CHECKED, 0);
|
||||
if (bRegExp)
|
||||
::SendMessage(hRegExp, BM_SETCHECK, BST_CHECKED, 0);
|
||||
if (bWrapFind)
|
||||
::SendMessage(hWrap, BM_SETCHECK, BST_CHECKED, 0);
|
||||
if (bUnSlash)
|
||||
::SendMessage(hUnSlash, BM_SETCHECK, BST_CHECKED, 0);
|
||||
if ((findWhat) != '\0'){
|
||||
::SetFocus(hReplaceWith);
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL CFindReplaceDlg::OnCommand(WORD, WORD wID, HWND){
|
||||
if (resId == IDD_FIND)
|
||||
return Find_OnCommand(wID);
|
||||
else if (resId == IDD_REPLACE)
|
||||
return Replace_OnCommand(wID);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL CFindReplaceDlg::Find_OnCommand(WORD wID){
|
||||
switch (wID){
|
||||
case IDOK:
|
||||
char s[200];
|
||||
GetItemText(hFindWhat, s, sizeof(s));
|
||||
strcpy(findWhat, s);
|
||||
//memFinds.Insert(s);
|
||||
bWholeWord = BST_CHECKED ==
|
||||
::SendMessage(hWholeWord, BM_GETCHECK, 0, 0);
|
||||
bMatchCase = BST_CHECKED ==
|
||||
::SendMessage(hMatchCase, BM_GETCHECK, 0, 0);
|
||||
bRegExp = BST_CHECKED ==
|
||||
::SendMessage(hRegExp, BM_GETCHECK, 0, 0);
|
||||
bWrapFind = BST_CHECKED ==
|
||||
::SendMessage(hWrap, BM_GETCHECK, 0, 0);
|
||||
bUnSlash = BST_CHECKED ==
|
||||
::SendMessage(hUnSlash, BM_GETCHECK, 0, 0);
|
||||
bReverseFind = BST_CHECKED ==
|
||||
::SendMessage(hUp, BM_GETCHECK, 0, 0);
|
||||
|
||||
FindNext(bReverseFind, true);
|
||||
return TRUE;
|
||||
|
||||
case IDCANCEL:
|
||||
EndDlg(IDCANCEL);
|
||||
return FALSE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL CFindReplaceDlg::Replace_OnCommand(WORD wID){
|
||||
if (wID == IDCANCEL){
|
||||
EndDlg(IDCANCEL);
|
||||
return FALSE;
|
||||
}else{
|
||||
return HandleReplaceCommand(wID);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void CFindReplaceDlg::FindNext(bool reverseDirection, bool showWarnings){
|
||||
if (!hEditor){
|
||||
MsgBox.DisplayWarning("Can't get editor handle");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!findWhat[0]) { // nothing to found
|
||||
//Find(hEditor);
|
||||
return;
|
||||
}
|
||||
char findTarget[FR_MAX_LEN + 1];
|
||||
strcpy(findTarget, findWhat);
|
||||
|
||||
// for C conversions -> int lenFind = UnSlashAsNeeded(findTarget, unSlash, regExp);
|
||||
int lenFind = strlen(findTarget); // normal return of UnSlashAsNeeded
|
||||
|
||||
if (lenFind == 0)
|
||||
return;
|
||||
|
||||
CharacterRange cr = GetSelection(hEditor);
|
||||
int startPosition = cr.cpMax;
|
||||
int endPosition = LengthDocument(hEditor);
|
||||
|
||||
if (reverseDirection){
|
||||
startPosition = cr.cpMin - 1;
|
||||
endPosition = 0;
|
||||
}
|
||||
|
||||
int flags = (bWholeWord ? SCFIND_WHOLEWORD : 0) |
|
||||
(bMatchCase ? SCFIND_MATCHCASE : 0) |
|
||||
(bRegExp ? SCFIND_REGEXP : 0);
|
||||
|
||||
::SendMessage(hEditor, SCI_SETTARGETSTART, startPosition, 0);
|
||||
::SendMessage(hEditor, SCI_SETTARGETEND, endPosition, 0);
|
||||
::SendMessage(hEditor, SCI_SETSEARCHFLAGS, flags, 0);
|
||||
int posFind = ::SendMessage(hEditor, SCI_SEARCHINTARGET, lenFind, (LPARAM) findTarget);
|
||||
|
||||
if (posFind == -1 && bWrapFind){ // not found with wrapFind
|
||||
|
||||
// Failed to find in indicated direction
|
||||
// so search from the beginning (forward) or from the end (reverse)
|
||||
// unless wrapFind is false
|
||||
if (reverseDirection){
|
||||
startPosition = LengthDocument(hEditor);
|
||||
endPosition = 0;
|
||||
} else {
|
||||
startPosition = 0;
|
||||
endPosition = LengthDocument(hEditor);
|
||||
}
|
||||
::SendMessage(hEditor, SCI_SETTARGETSTART, startPosition, 0);
|
||||
::SendMessage(hEditor, SCI_SETTARGETEND, endPosition, 0);
|
||||
posFind = ::SendMessage(hEditor, SCI_SEARCHINTARGET, lenFind, (LPARAM) findTarget);
|
||||
}
|
||||
if (posFind == -1){ // not found
|
||||
bHavefound = false;
|
||||
if (showWarnings){
|
||||
|
||||
/*warn that not found
|
||||
WarnUser(warnNotFound);*/
|
||||
|
||||
if (strlen(findWhat) > FR_MAX_LEN)
|
||||
findWhat[FR_MAX_LEN] = '\0';
|
||||
char msg[FR_MAX_LEN + 50];
|
||||
strcpy(msg, "Cannot find the string \"");
|
||||
strcat(msg, findWhat);
|
||||
strcat(msg, "\".");
|
||||
if (_hWnd){
|
||||
MsgBox.DisplayWarning(msg);
|
||||
}else{
|
||||
MessageBox(0, msg, "Message", MB_OK);
|
||||
}
|
||||
}
|
||||
}else{ // found
|
||||
bHavefound = true;
|
||||
int start = ::SendMessage(hEditor, SCI_GETTARGETSTART, 0, 0);
|
||||
int end = ::SendMessage(hEditor, SCI_GETTARGETEND, 0, 0);
|
||||
EnsureRangeVisible(hEditor, start, end, true);
|
||||
::SendMessage(hEditor, SCI_SETSEL, start, end);
|
||||
}
|
||||
}
|
||||
|
||||
BOOL CFindReplaceDlg::HandleReplaceCommand(int cmd){
|
||||
if (!hEditor){
|
||||
MsgBox.DisplayWarning("Can't get editor handle");
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((cmd == IDOK) || (cmd == IDC_REPLACE) || (cmd == IDC_REPLACEALL) || (cmd == IDC_REPLACEINSEL)) {
|
||||
GetItemText(hFindWhat, findWhat, sizeof(findWhat));
|
||||
//props.Set("find.what", findWhat);
|
||||
//memFinds.Insert(findWhat);
|
||||
|
||||
bWholeWord = BST_CHECKED ==
|
||||
::SendMessage(hWholeWord, BM_GETCHECK, 0, 0);
|
||||
bMatchCase = BST_CHECKED ==
|
||||
::SendMessage(hMatchCase, BM_GETCHECK, 0, 0);
|
||||
bRegExp = BST_CHECKED ==
|
||||
::SendMessage(hRegExp, BM_GETCHECK, 0, 0);
|
||||
bWrapFind = BST_CHECKED ==
|
||||
::SendMessage(hWrap, BM_GETCHECK, 0, 0);
|
||||
bUnSlash = BST_CHECKED ==
|
||||
::SendMessage(hUnSlash, BM_GETCHECK, 0, 0);
|
||||
}
|
||||
if ((cmd == IDC_REPLACE) || (cmd == IDC_REPLACEALL) || (cmd == IDC_REPLACEINSEL)) {
|
||||
GetItemText(hReplaceWith, replaceWhat, sizeof(replaceWhat));
|
||||
//memReplaces.Insert(replaceWhat);
|
||||
}
|
||||
|
||||
if (cmd == IDOK) {
|
||||
FindNext(bReverseFind, true); // Find next
|
||||
} else if (cmd == IDC_REPLACE) {
|
||||
if (bHavefound){
|
||||
ReplaceOnce();
|
||||
} else {
|
||||
CharacterRange crange = GetSelection(hEditor);
|
||||
::SendMessage(hEditor, SCI_SETSEL, crange.cpMin, crange.cpMin);
|
||||
FindNext(bReverseFind, true);
|
||||
if (bHavefound){
|
||||
ReplaceOnce();
|
||||
}
|
||||
}
|
||||
} else if ((cmd == IDC_REPLACEALL) || (cmd == IDC_REPLACEINSEL)){
|
||||
ReplaceAll(cmd == IDC_REPLACEINSEL);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void CFindReplaceDlg::ReplaceOnce(void){
|
||||
if (bHavefound){
|
||||
char replaceTarget[FR_MAX_LEN + 1];
|
||||
strcpy(replaceTarget, replaceWhat);
|
||||
// for C conversions -> int replaceLen = UnSlashAsNeeded(replaceTarget, unSlash, regExp);
|
||||
int replaceLen = strlen(replaceTarget); // normal return of UnSlashAsNeeded
|
||||
|
||||
CharacterRange cr = GetSelection(hEditor);
|
||||
::SendMessage(hEditor, SCI_SETTARGETSTART, cr.cpMin, 0);
|
||||
::SendMessage(hEditor, SCI_SETTARGETEND, cr.cpMax, 0);
|
||||
int lenReplaced = replaceLen;
|
||||
if (bRegExp)
|
||||
lenReplaced = ::SendMessage(hEditor, SCI_REPLACETARGETRE, replaceLen, (LPARAM) replaceTarget);
|
||||
else // Allow \0 in replacement
|
||||
::SendMessage(hEditor, SCI_REPLACETARGET, replaceLen, (LPARAM) replaceTarget);
|
||||
::SendMessage(hEditor, SCI_SETSEL, cr.cpMin + lenReplaced, cr.cpMin);
|
||||
bHavefound = false;
|
||||
}
|
||||
FindNext(bReverseFind, true);
|
||||
}
|
||||
|
||||
void CFindReplaceDlg::ReplaceAll(bool inSelection){
|
||||
char findTarget[FR_MAX_LEN + 1];
|
||||
strcpy(findTarget, findWhat);
|
||||
|
||||
// for C conversions -> int findLen = UnSlashAsNeeded(findTarget, unSlash, regExp);
|
||||
int findLen = strlen(findTarget); // normal return of UnSlashAsNeeded
|
||||
|
||||
if (findLen == 0) {
|
||||
MessageBox(_hWnd, "Find string for \"Replace All\" must not be empty.", "Message", MB_OK | MB_ICONWARNING);
|
||||
return;
|
||||
}
|
||||
|
||||
CharacterRange cr = GetSelection(hEditor);
|
||||
int startPosition = cr.cpMin;
|
||||
int endPosition = cr.cpMax;
|
||||
if (inSelection) {
|
||||
if (startPosition == endPosition) {
|
||||
MessageBox(_hWnd, "Selection for \"Replace in Selection\" must not be empty.", "Message", MB_OK | MB_ICONWARNING);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
endPosition = LengthDocument(hEditor);
|
||||
if (bWrapFind) {
|
||||
// Whole document
|
||||
startPosition = 0;
|
||||
}
|
||||
// If not wrapFind, replace all only from caret to end of document
|
||||
}
|
||||
|
||||
char replaceTarget[FR_MAX_LEN + 1];
|
||||
strcpy(replaceTarget, replaceWhat);
|
||||
|
||||
// for C conversions -> int replaceLen = UnSlashAsNeeded(replaceTarget, unSlash, regExp);
|
||||
int replaceLen = strlen(replaceTarget); // normal return of UnSlashAsNeeded
|
||||
|
||||
int flags = (bWholeWord ? SCFIND_WHOLEWORD : 0) |
|
||||
(bMatchCase ? SCFIND_MATCHCASE : 0) |
|
||||
(bRegExp ? SCFIND_REGEXP : 0);
|
||||
::SendMessage(hEditor, SCI_SETTARGETSTART, startPosition, 0);
|
||||
::SendMessage(hEditor, SCI_SETTARGETEND, endPosition, 0);
|
||||
::SendMessage(hEditor, SCI_SETSEARCHFLAGS, flags, 0);
|
||||
int posFind = ::SendMessage(hEditor, SCI_SEARCHINTARGET, findLen, (LPARAM) findTarget);
|
||||
if ((findLen == 1) && bRegExp && (findTarget[0] == '^')) {
|
||||
// Special case for replace all start of line so it hits the first line
|
||||
posFind = startPosition;
|
||||
::SendMessage(hEditor, SCI_SETTARGETSTART, startPosition, 0);
|
||||
::SendMessage(hEditor, SCI_SETTARGETEND, startPosition, 0);
|
||||
}
|
||||
if ((posFind != -1) && (posFind <= endPosition)) {
|
||||
int lastMatch = posFind;
|
||||
::SendMessage(hEditor, SCI_BEGINUNDOACTION, 0, 0);
|
||||
while (posFind != -1) {
|
||||
int lenTarget = ::SendMessage(hEditor, SCI_GETTARGETEND, 0, 0) - ::SendMessage(hEditor, SCI_GETTARGETSTART, 0, 0);
|
||||
int lenReplaced = replaceLen;
|
||||
if (bRegExp)
|
||||
lenReplaced = ::SendMessage(hEditor, SCI_REPLACETARGETRE, replaceLen, (LPARAM) replaceTarget);
|
||||
else
|
||||
::SendMessage(hEditor, SCI_REPLACETARGET, replaceLen, (LPARAM) replaceTarget);
|
||||
// Modify for change caused by replacement
|
||||
endPosition += lenReplaced - lenTarget;
|
||||
lastMatch = posFind + lenReplaced;
|
||||
// For the special cases of start of line and end of line
|
||||
// Something better could be done but there are too many special cases
|
||||
if (lenTarget <= 0)
|
||||
lastMatch++;
|
||||
::SendMessage(hEditor, SCI_SETTARGETSTART, lastMatch, 0);
|
||||
::SendMessage(hEditor, SCI_SETTARGETEND, endPosition, 0);
|
||||
posFind = ::SendMessage(hEditor, SCI_SEARCHINTARGET, findLen, (LPARAM) findTarget);
|
||||
}
|
||||
if (inSelection)
|
||||
::SendMessage(hEditor, SCI_SETSEL, startPosition, endPosition);
|
||||
else
|
||||
::SendMessage(hEditor, SCI_SETSEL, lastMatch, lastMatch);
|
||||
::SendMessage(hEditor, SCI_ENDUNDOACTION, 0, 0);
|
||||
} else {
|
||||
if (strlen(findWhat) > FR_MAX_LEN)
|
||||
findWhat[FR_MAX_LEN] = '\0';
|
||||
char msg[FR_MAX_LEN + 50];
|
||||
strcpy(msg, "No replacements because string \"");
|
||||
strcat(msg, findWhat);
|
||||
strcat(msg, "\" was not present.");
|
||||
MessageBox(_hWnd, msg, "Message", MB_OK | MB_ICONWARNING);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/********************************************************************
|
||||
* Class: CEditor.
|
||||
*
|
||||
* Purpose:
|
||||
*
|
||||
* Revisions:
|
||||
*
|
||||
********************************************************************/
|
||||
CEditor::CEditor(){
|
||||
caretPos = 1;
|
||||
}
|
||||
|
||||
CEditor::~CEditor(){
|
||||
}
|
||||
|
||||
void CEditor::LoadFile(CFileItem * file){
|
||||
if (!file || !_hWnd)
|
||||
return;
|
||||
|
||||
if (file->nFileOffset == 0)
|
||||
return; // Untitled file.
|
||||
|
||||
SetLexer(file->type);
|
||||
::SendMessage(_hWnd, SCI_CANCEL, 0, 0);
|
||||
::SendMessage(_hWnd, SCI_SETUNDOCOLLECTION, 0, 0);
|
||||
|
||||
FILE *fp = fopen(file->szFileName, "rb");
|
||||
if (fp){
|
||||
char data[blockSize];
|
||||
int lenFile = fread(data, 1, sizeof(data), fp);
|
||||
|
||||
while (lenFile > 0){
|
||||
::SendMessage(_hWnd, SCI_ADDTEXT, lenFile, (LPARAM) data);
|
||||
lenFile = fread(data, 1, sizeof(data), fp);
|
||||
}
|
||||
|
||||
fclose(fp);
|
||||
|
||||
}else{
|
||||
MsgBox.DisplayWarning("Can't load file %s", file->szFileName);
|
||||
}
|
||||
|
||||
::SendMessage(_hWnd, SCI_SETUNDOCOLLECTION, 1, 0);
|
||||
::SendMessage(_hWnd, EM_EMPTYUNDOBUFFER, 0, 0);
|
||||
::SendMessage(_hWnd, SCI_SETSAVEPOINT, 0 , 0);
|
||||
::SendMessage(_hWnd, SCI_GOTOPOS, 0, 0);
|
||||
}
|
||||
|
||||
void GetFileType(CFileItem * file){
|
||||
if (!file)
|
||||
return;
|
||||
|
||||
if (file->nFileExtension){
|
||||
char * ext = file->szFileName + file->nFileExtension;
|
||||
// H_FILE ?
|
||||
if (!stricmp(ext, "h")){
|
||||
file->type = H_FILE;
|
||||
return;
|
||||
}else if (!stricmp(ext, "hpp")){
|
||||
file->type = H_FILE;
|
||||
return;
|
||||
}else if (!stricmp(ext, "hxx")){
|
||||
file->type = H_FILE;
|
||||
return;
|
||||
// C_FILE ?
|
||||
}else if (!stricmp(ext, "c")){
|
||||
file->type = C_FILE;
|
||||
return;
|
||||
}else if (!stricmp(ext, "cpp")){
|
||||
file->type = C_FILE;
|
||||
return;
|
||||
}else if (!stricmp(ext, "cxx")){
|
||||
file->type = C_FILE;
|
||||
return;
|
||||
// RC_FILE ?
|
||||
}else if (!stricmp(ext, "rc")){
|
||||
file->type = RC_FILE;
|
||||
return;
|
||||
}
|
||||
}
|
||||
file->type = U_FILE;
|
||||
return;
|
||||
}
|
||||
|
||||
void CEditor::SaveFile(char * fullPath){
|
||||
if (!_hWnd)
|
||||
return;
|
||||
|
||||
FILE *fp = fopen(fullPath, "wb");
|
||||
if (fp){
|
||||
char data[blockSize + 1];
|
||||
int lengthDoc = ::SendMessage(_hWnd, SCI_GETLENGTH, 0, 0);
|
||||
for (int i = 0; i < lengthDoc; i += blockSize) {
|
||||
int grabSize = lengthDoc - i;
|
||||
if (grabSize > blockSize)
|
||||
grabSize = blockSize;
|
||||
GetRange(i, i + grabSize, data);
|
||||
fwrite(data, grabSize, 1, fp);
|
||||
}
|
||||
fclose(fp);
|
||||
::SendMessage(_hWnd, SCI_SETSAVEPOINT, 0, 0);
|
||||
|
||||
}else{
|
||||
MsgBox.DisplayWarning("Can't save file %s", fullPath);
|
||||
}
|
||||
}
|
||||
|
||||
int CEditor::GetCurrentPos(void){
|
||||
int currentPos = ::SendMessage(_hWnd, SCI_GETCURRENTPOS, 0,0);
|
||||
caretPos = ::SendMessage(_hWnd, SCI_LINEFROMPOSITION, currentPos, 0) + 1;
|
||||
return caretPos;
|
||||
}
|
||||
|
||||
void CEditor::GetRange(int start, int end, char *text){
|
||||
TextRange tr;
|
||||
tr.chrg.cpMin = start;
|
||||
tr.chrg.cpMax = end;
|
||||
tr.lpstrText = text;
|
||||
::SendMessage(_hWnd, SCI_GETTEXTRANGE, 0, (LPARAM) &tr);
|
||||
}
|
||||
|
||||
void CEditor::SetAStyle(int style, COLORREF fore, COLORREF back, int size, const char *face){
|
||||
::SendMessage(_hWnd, SCI_STYLESETFORE, style, fore);
|
||||
::SendMessage(_hWnd, SCI_STYLESETBACK, style, back);
|
||||
if (size >= 1)
|
||||
::SendMessage(_hWnd, SCI_STYLESETSIZE, style, size);
|
||||
if (face)
|
||||
::SendMessage(_hWnd, SCI_STYLESETFONT, style, (LPARAM) face);
|
||||
}
|
||||
|
||||
void CEditor::DefineMarker(int marker, int markerType, COLORREF fore, COLORREF back) {
|
||||
::SendMessage(_hWnd, SCI_MARKERDEFINE, marker, markerType);
|
||||
::SendMessage(_hWnd, SCI_MARKERSETFORE, marker, fore);
|
||||
::SendMessage(_hWnd, SCI_MARKERSETBACK, marker, back);
|
||||
}
|
||||
|
||||
void CEditor::SetLexer(int fileType){
|
||||
switch (fileType){
|
||||
|
||||
case H_FILE:
|
||||
case C_FILE:
|
||||
case RC_FILE:
|
||||
SetCppLexer();
|
||||
return;
|
||||
|
||||
default:
|
||||
// Global default style.
|
||||
SetAStyle(STYLE_DEFAULT, black, white, 10, "Verdana");
|
||||
::SendMessage(_hWnd, SCI_STYLECLEARALL, 0, 0); // Copies to all other styles.
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void CEditor::SetCppLexer(void){
|
||||
::SendMessage(_hWnd, SCI_SETLEXER, SCLEX_CPP, 0);
|
||||
::SendMessage(_hWnd, SCI_SETSTYLEBITS, 5, 0);
|
||||
|
||||
::SendMessage(_hWnd, SCI_SETKEYWORDS, 0, (LPARAM) cppKeyWords);
|
||||
|
||||
// Global default style.
|
||||
SetAStyle(STYLE_DEFAULT, black, white, 10, "Verdana");
|
||||
::SendMessage(_hWnd, SCI_STYLECLEARALL, 0, 0); // Copies to all other styles.
|
||||
|
||||
// C Styles.
|
||||
SetAStyle(SCE_C_DEFAULT, black, white, 10, "Verdana"); //0
|
||||
SetAStyle(SCE_C_COMMENT, Green, white, 0, 0); //1
|
||||
SetAStyle(SCE_C_COMMENTLINE, Green, white, 0, 0); //2
|
||||
SetAStyle(SCE_C_COMMENTDOC, darkGreen, white, 0, 0); //3
|
||||
SetAStyle(SCE_C_NUMBER, Ice, white, 0, 0); //4
|
||||
SetAStyle(SCE_C_WORD, darkBlue, white, 0, 0); //5
|
||||
::SendMessage(_hWnd, SCI_STYLESETBOLD, SCE_C_WORD, 1);
|
||||
SetAStyle(SCE_C_STRING, Purple, white, 0, 0); //6
|
||||
SetAStyle(SCE_C_CHARACTER, Purple, white, 0, 0); //7
|
||||
SetAStyle(SCE_C_PREPROCESSOR, Olive, white, 0, 0); //9
|
||||
SetAStyle(SCE_C_OPERATOR, black, white, 0, 0); //10
|
||||
::SendMessage(_hWnd, SCI_STYLESETBOLD, SCE_C_OPERATOR, 1);
|
||||
// SetAStyle(SCE_C_STRINGEOL, darkBlue, white, 0, 0); //12
|
||||
// SetAStyle(SCE_C_COMMENTLINEDOC, darkBlue, white, 0, 0); //15
|
||||
// SetAStyle(SCE_C_WORD2, darkBlue, white, 0, 0); //16
|
||||
::SendMessage(_hWnd, SCI_SETPROPERTY, (long)"fold", (long)"1");
|
||||
::SendMessage(_hWnd, SCI_SETPROPERTY, (long)"fold.compact", (long)"1");
|
||||
::SendMessage(_hWnd, SCI_SETPROPERTY, (long)"fold.symbols", (long)"1");
|
||||
|
||||
::SendMessage(_hWnd, SCI_SETFOLDFLAGS, 16, 0);
|
||||
|
||||
// To put the folder markers in the line number region
|
||||
//SendEditor(SCI_SETMARGINMASKN, 0, SC_MASK_FOLDERS);
|
||||
|
||||
::SendMessage(_hWnd, SCI_SETMODEVENTMASK, SC_MOD_CHANGEFOLD, 0);
|
||||
|
||||
// Create a margin column for the folding symbols
|
||||
::SendMessage(_hWnd, SCI_SETMARGINTYPEN, 2, SC_MARGIN_SYMBOL);
|
||||
|
||||
::SendMessage(_hWnd, SCI_SETMARGINWIDTHN, 2, /*foldMargin ? foldMarginWidth :*/ 16);
|
||||
|
||||
::SendMessage(_hWnd, SCI_SETMARGINMASKN, 2, SC_MASK_FOLDERS);
|
||||
::SendMessage(_hWnd, SCI_SETMARGINSENSITIVEN, 2, 1);
|
||||
|
||||
DefineMarker(SC_MARKNUM_FOLDEROPEN, SC_MARK_MINUS, white, black);
|
||||
DefineMarker(SC_MARKNUM_FOLDER, SC_MARK_PLUS, white, black);
|
||||
DefineMarker(SC_MARKNUM_FOLDERSUB, SC_MARK_EMPTY, white, black);
|
||||
DefineMarker(SC_MARKNUM_FOLDERTAIL, SC_MARK_EMPTY, white, black);
|
||||
DefineMarker(SC_MARKNUM_FOLDEREND, SC_MARK_EMPTY, white, black);
|
||||
DefineMarker(SC_MARKNUM_FOLDEROPENMID, SC_MARK_EMPTY, white, black);
|
||||
DefineMarker(SC_MARKNUM_FOLDERMIDTAIL, SC_MARK_EMPTY, white, black);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void CEditor::GotoLine(int line, char * /*fileName*/){
|
||||
::SendMessage(_hWnd, SCI_ENSUREVISIBLEENFORCEPOLICY, line, 0);
|
||||
::SendMessage(_hWnd, SCI_GOTOLINE, line, 0);
|
||||
}
|
||||
|
||||
bool CEditor::MarginClick(int position, int modifiers){
|
||||
int lineClick = ::SendMessage(_hWnd, SCI_LINEFROMPOSITION, position, 0);
|
||||
//Platform::DebugPrintf("Margin click %d %d %x\n", position, lineClick,
|
||||
// ::SendMessage(_hWnd, SCI_GETFOLDLEVEL, lineClick) & SC_FOLDLEVELHEADERFLAG);
|
||||
/* if ((modifiers & SCMOD_SHIFT) && (modifiers & SCMOD_CTRL)) {
|
||||
FoldAll();
|
||||
} else {*/
|
||||
int levelClick = ::SendMessage(_hWnd, SCI_GETFOLDLEVEL, lineClick, 0);
|
||||
if (levelClick & SC_FOLDLEVELHEADERFLAG) {
|
||||
if (modifiers & SCMOD_SHIFT) {
|
||||
// Ensure all children visible
|
||||
::SendMessage(_hWnd, SCI_SETFOLDEXPANDED, lineClick, 1);
|
||||
Expand(lineClick, true, true, 100, levelClick);
|
||||
} else if (modifiers & SCMOD_CTRL) {
|
||||
if (::SendMessage(_hWnd, SCI_GETFOLDEXPANDED, lineClick, 0)) {
|
||||
// Contract this line and all children
|
||||
::SendMessage(_hWnd, SCI_SETFOLDEXPANDED, lineClick, 0);
|
||||
Expand(lineClick, false, true, 0, levelClick);
|
||||
} else {
|
||||
// Expand this line and all children
|
||||
::SendMessage(_hWnd, SCI_SETFOLDEXPANDED, lineClick, 1);
|
||||
Expand(lineClick, true, true, 100, levelClick);
|
||||
}
|
||||
} else {
|
||||
// Toggle this line
|
||||
::SendMessage(_hWnd, SCI_TOGGLEFOLD, lineClick, 0);
|
||||
}
|
||||
}
|
||||
/* }*/
|
||||
return true;
|
||||
}
|
||||
|
||||
void CEditor::Expand(int &line, bool doExpand, bool force, int visLevels, int level){
|
||||
int lineMaxSubord = ::SendMessage(_hWnd, SCI_GETLASTCHILD, line, level & SC_FOLDLEVELNUMBERMASK);
|
||||
line++;
|
||||
while (line <= lineMaxSubord) {
|
||||
if (force) {
|
||||
if (visLevels > 0)
|
||||
::SendMessage(_hWnd, SCI_SHOWLINES, line, line);
|
||||
else
|
||||
::SendMessage(_hWnd, SCI_HIDELINES, line, line);
|
||||
} else {
|
||||
if (doExpand)
|
||||
::SendMessage(_hWnd, SCI_SHOWLINES, line, line);
|
||||
}
|
||||
int levelLine = level;
|
||||
if (levelLine == -1)
|
||||
levelLine = ::SendMessage(_hWnd, SCI_GETFOLDLEVEL, line, 0);
|
||||
if (levelLine & SC_FOLDLEVELHEADERFLAG) {
|
||||
if (force) {
|
||||
if (visLevels > 1)
|
||||
::SendMessage(_hWnd, SCI_SETFOLDEXPANDED, line, 1);
|
||||
else
|
||||
::SendMessage(_hWnd, SCI_SETFOLDEXPANDED, line, 0);
|
||||
Expand(line, doExpand, force, visLevels - 1);
|
||||
} else {
|
||||
if (doExpand) {
|
||||
if (!::SendMessage(_hWnd, SCI_GETFOLDEXPANDED, line, 0))
|
||||
::SendMessage(_hWnd, SCI_SETFOLDEXPANDED, line, 1);
|
||||
Expand(line, true, force, visLevels - 1);
|
||||
} else {
|
||||
Expand(line, false, force, visLevels - 1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
line++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
165
rosapps/devutils/vmingw/editor.h
Normal file
165
rosapps/devutils/vmingw/editor.h
Normal file
|
@ -0,0 +1,165 @@
|
|||
/********************************************************************
|
||||
* Module: editor.h. This is part of Visual-MinGW.
|
||||
*
|
||||
* License: Visual-MinGW is covered by GNU General Public License,
|
||||
* Copyright (C) 2001 Manu B.
|
||||
* See license.htm for more details.
|
||||
*
|
||||
*******************************************************************/
|
||||
#ifndef EDITOR_H
|
||||
#define EDITOR_H
|
||||
|
||||
#include "Scintilla.h"
|
||||
#include "SciLexer.h"
|
||||
#include "winui.h"
|
||||
|
||||
#define U_FILE 3
|
||||
#define H_FILE (U_FILE+1)
|
||||
#define C_FILE (U_FILE+2)
|
||||
#define RC_FILE (U_FILE+3)
|
||||
|
||||
// Default block size.
|
||||
const int blockSize = 131072;
|
||||
|
||||
// Default colors.
|
||||
const COLORREF black = RGB(0,0,0);
|
||||
const COLORREF white = RGB(0xff,0xff,0xff);
|
||||
const COLORREF darkBlue = RGB(0, 0, 0x7f);
|
||||
const COLORREF Green = RGB(0, 0x7f, 0);
|
||||
const COLORREF darkGreen = RGB(0x3f, 0x70, 0x3f);
|
||||
const COLORREF Purple = RGB(0x7f, 0x00, 0x7f);
|
||||
const COLORREF Ice = RGB(0x00, 0x7f, 0x7f);
|
||||
const COLORREF Olive = RGB(0x7f, 0x7f, 0x00);
|
||||
|
||||
// Default Cpp keywords.
|
||||
const char cppKeyWords[] =
|
||||
"asm auto bool break case catch char class const const_cast continue "
|
||||
"default delete do double dynamic_cast else enum explicit export extern false float for "
|
||||
"friend goto if inline int long mutable namespace new operator private protected public "
|
||||
"register reinterpret_cast return short signed sizeof static static_cast struct switch "
|
||||
"template this throw true try typedef typeid typename union unsigned using "
|
||||
"virtual void volatile wchar_t while";
|
||||
|
||||
void EnsureRangeVisible(HWND hwndCtrl, int posStart, int posEnd, bool enforcePolicy);
|
||||
int LengthDocument(HWND hwndCtrl);
|
||||
CharacterRange GetSelection(HWND hwndCtrl);
|
||||
|
||||
class CFileItem : public CNode
|
||||
{
|
||||
public:
|
||||
CFileItem();
|
||||
~CFileItem();
|
||||
|
||||
// File name.
|
||||
char szFileName[MAX_PATH];
|
||||
WORD nFileOffset;
|
||||
WORD nFileExtension;
|
||||
|
||||
// Owner tree view.
|
||||
CTreeView * pTreeView;
|
||||
HTREEITEM _hItem;
|
||||
HTREEITEM _hDirItem;
|
||||
|
||||
// Owner child window.
|
||||
CMDIChild * pMdiChild;
|
||||
int show;
|
||||
bool isInProject;
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
void GetFileType(CFileItem * file);
|
||||
|
||||
class CEditor : public CScintilla
|
||||
{
|
||||
public:
|
||||
CEditor();
|
||||
~CEditor();
|
||||
|
||||
void LoadFile(CFileItem * file);
|
||||
void SaveFile(char * fullPath);
|
||||
int GetCurrentPos(void);
|
||||
void GotoLine(int line, char * fileName = NULL);
|
||||
int caretPos;
|
||||
void SetLexer(int fileType);
|
||||
void SetCppLexer(void);
|
||||
bool MarginClick(int position, int modifiers);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
void DefineMarker(int marker, int markerType, COLORREF fore, COLORREF back);
|
||||
void GetRange(int start, int end, char *text);
|
||||
void SetAStyle(int style, COLORREF fore, COLORREF back, int size, const char *face);
|
||||
void Expand(int &line, bool doExpand, bool force = false,
|
||||
int visLevels = 0, int level = -1);
|
||||
};
|
||||
|
||||
#define FR_MAX_LEN 200
|
||||
|
||||
class CFindReplaceDlg : public CDlgBase
|
||||
{
|
||||
public:
|
||||
CFindReplaceDlg();
|
||||
virtual ~CFindReplaceDlg();
|
||||
|
||||
HWND Find(CScintilla * pEditor);
|
||||
HWND Replace(CScintilla * pEditor);
|
||||
|
||||
protected:
|
||||
void FindNext(bool reverseDirection, bool showWarnings);
|
||||
virtual LRESULT CALLBACK CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
BOOL OnInitDialog(HWND hwndFocus, LPARAM lInitParam);
|
||||
BOOL Find_OnInitDialog(void);
|
||||
BOOL Replace_OnInitDialog(void);
|
||||
BOOL OnCommand(WORD wNotifyCode, WORD wID, HWND hwndCtl);
|
||||
BOOL Find_OnCommand(WORD wIDl);
|
||||
BOOL Replace_OnCommand(WORD wID);
|
||||
BOOL HandleReplaceCommand(int cmd);
|
||||
void ReplaceOnce(void);
|
||||
void ReplaceAll(bool inSelection);
|
||||
|
||||
private:
|
||||
HWND hFindWhat;
|
||||
HWND hReplaceWith;
|
||||
HWND hWholeWord;
|
||||
HWND hMatchCase;
|
||||
HWND hRegExp;
|
||||
HWND hWrap;
|
||||
HWND hUnSlash;
|
||||
HWND hUp;
|
||||
HWND hDown;
|
||||
char findWhat[FR_MAX_LEN + 1];
|
||||
char replaceWhat[FR_MAX_LEN + 1];
|
||||
|
||||
bool bWholeWord;
|
||||
bool bMatchCase;
|
||||
bool bRegExp;
|
||||
bool bWrapFind;
|
||||
bool bUnSlash;
|
||||
bool bReverseFind;
|
||||
bool bHavefound;
|
||||
|
||||
CEditor * pEditor;
|
||||
HWND hEditor;
|
||||
int resId;
|
||||
};
|
||||
|
||||
class CChooseFontDlg : public CWindow
|
||||
{
|
||||
public:
|
||||
CChooseFontDlg();
|
||||
~CChooseFontDlg();
|
||||
|
||||
bool Create(CWindow * pWindow);
|
||||
|
||||
protected:
|
||||
CHOOSEFONT cf;
|
||||
LOGFONT lf;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
#endif
|
121
rosapps/devutils/vmingw/license.htm
Normal file
121
rosapps/devutils/vmingw/license.htm
Normal file
|
@ -0,0 +1,121 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Visual-MinGW license agreement.</title>
|
||||
<meta name="generator" content="Namo WebEditor v3.0">
|
||||
</head>
|
||||
|
||||
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red" style="font-family:Arial; font-size:12;">
|
||||
|
||||
<div align="center"><table border="0" cellspacing="0" bgcolor="teal">
|
||||
<tr>
|
||||
<td width="597"><p align="center"><font size="5" color="white"><b>Visual-MinGW's
|
||||
license</b></font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="597"><table border="0" cellpadding="5" bgcolor="white">
|
||||
<tr>
|
||||
<td width="591" valign="top"><p align="center">
|
||||
<table border="0">
|
||||
<tr>
|
||||
<td width="55"><p> </td>
|
||||
<td width="518"><p><font size="2">Visual-MinGW
|
||||
is a C/C++ Integrated Development Environment.<br>
|
||||
Copyright (C) 2001 Manu B.</font></p>
|
||||
<p><font size="2">The following license
|
||||
terms applies to Visual-MinGW:</font></p>
|
||||
<p><font size="2">This program is free software;
|
||||
you can redistribute it and/or modify it
|
||||
under the<br> terms of the GNU General Public
|
||||
License version 2 as published by the Free
|
||||
<br>
|
||||
Software Foundation.</font></p>
|
||||
<p><font size="2">This program is distributed
|
||||
in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied
|
||||
warranty of MERCHANTABILITY or <br>
|
||||
FITNESS FOR A PARTICULAR PURPOSE.<br> See
|
||||
the </font><a href="GNU-GPL.txt"><font size="2">GNU
|
||||
General Public License</font></a><font size="2">
|
||||
for more details.</font></p>
|
||||
<p><font size="2">You should have received
|
||||
a copy of the </font><a href="GNU-GPL.txt"><font
|
||||
size="2">GNU General Public License</font></a><font
|
||||
size="2"><br> along with this program;
|
||||
if not, write to the Free Software<br> Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307,USA.</font></p>
|
||||
<p> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="577" colspan="2"><p><hr size="1" width="80%"
|
||||
noshade></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="55"><p> </td>
|
||||
<td width="518"><p><font size="2">Visual-MinGW
|
||||
uses Neil Hodgson's</font><font size="2">
|
||||
</font><a href="http://www.scintilla.org/"><font
|
||||
size="2">Scintilla</font></a><font size="2">
|
||||
</font><font size="2">editing component</font><font
|
||||
size="2"> a</font><font size="2">s source
|
||||
code <br>
|
||||
editor. </font></p>
|
||||
<p><font size="2">Th</font><font size="2">e
|
||||
following license terms applies to both
|
||||
</font><a href="http://www.scintilla.org/"><font
|
||||
size="2">Scintilla</font></a><font size="2">
|
||||
and </font><a href="http://www.scintilla.org/"><font
|
||||
size="2">SciTE</font></a><font size="2">.</font></p>
|
||||
<p> </td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="597"><p align="center"><font size="5" color="white"><b>License
|
||||
for Scintilla and SciTE</b></font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="597"><table border="0" cellpadding="5" bgcolor="white">
|
||||
<tr>
|
||||
<td width="591" valign="top"><table border="0">
|
||||
<tr>
|
||||
<td width="55"><p> </p>
|
||||
<p> </td>
|
||||
<td width="518"><p><font size="2">Copyright
|
||||
1998-2001 by Neil Hodgson <neilh@scintilla.org></font></p>
|
||||
<p><font size="2">All Rights Reserved </font></p>
|
||||
<p><font size="2">Permission to use, copy,
|
||||
modify, and distribute this software and
|
||||
its <br> documentation for any purpose and
|
||||
without fee is hereby granted, <br> provided
|
||||
that the above copyright notice appear in
|
||||
all copies and that <br> both that copyright
|
||||
notice and this permission notice appear
|
||||
in <br> supporting documentation. </font></p>
|
||||
<p><font size="2">NEIL HODGSON DISCLAIMS
|
||||
ALL WARRANTIES WITH REGARD TO THIS <br>
|
||||
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY <br> AND FITNESS, IN
|
||||
NO EVENT SHALL NEIL HODGSON BE LIABLE FOR
|
||||
ANY <br> SPECIAL, INDIRECT OR CONSEQUENTIAL
|
||||
DAMAGES OR ANY DAMAGES <br> WHATSOEVER RESULTING
|
||||
FROM LOSS OF USE, DATA OR PROFITS, <br>
|
||||
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
|
||||
OR OTHER <br> TORTIOUS ACTION, ARISING OUT
|
||||
OF OR IN CONNECTION WITH THE USE <br> OR
|
||||
PERFORMANCE OF THIS SOFTWARE.</font></p>
|
||||
<p> </td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></div>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
</body>
|
||||
|
||||
</html>
|
59
rosapps/devutils/vmingw/license.txt
Normal file
59
rosapps/devutils/vmingw/license.txt
Normal file
|
@ -0,0 +1,59 @@
|
|||
Visual-MinGW's license
|
||||
----------------------
|
||||
|
||||
Visual-MinGW is a C/C++ Integrated Development Environment.
|
||||
Copyright (C) 2001 Manu B.
|
||||
|
||||
The following license terms applies to Visual-MinGW:
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License version 2 as published by the Free
|
||||
Software Foundation.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE.
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,USA.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Visual-MinGW uses Neil Hodgson's Scintilla editing component as source code
|
||||
editor.
|
||||
|
||||
The following license terms applies to both Scintilla and SciTE.
|
||||
|
||||
|
||||
License for Scintilla and SciTE
|
||||
-------------------------------
|
||||
|
||||
Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>
|
||||
|
||||
All Rights Reserved
|
||||
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose and without fee is hereby granted,
|
||||
provided that the above copyright notice appear in all copies and that
|
||||
both that copyright notice and this permission notice appear in
|
||||
supporting documentation.
|
||||
|
||||
NEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
|
||||
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS, IN NO EVENT SHALL NEIL HODGSON BE LIABLE FOR ANY
|
||||
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
||||
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
|
||||
OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
2622
rosapps/devutils/vmingw/main.cpp
Normal file
2622
rosapps/devutils/vmingw/main.cpp
Normal file
File diff suppressed because it is too large
Load diff
385
rosapps/devutils/vmingw/main.h
Normal file
385
rosapps/devutils/vmingw/main.h
Normal file
|
@ -0,0 +1,385 @@
|
|||
/********************************************************************
|
||||
* Module: main.h. This is part of Visual-MinGW.
|
||||
*
|
||||
* License: Visual-MinGW is covered by GNU General Public License,
|
||||
* Copyright (C) 2001 Manu B.
|
||||
* See license.htm for more details.
|
||||
*
|
||||
********************************************************************/
|
||||
#ifndef MAIN_H
|
||||
#define MAIN_H
|
||||
|
||||
#include "CList.h"
|
||||
#include "winui.h"
|
||||
#include "editor.h"
|
||||
#include "process.h"
|
||||
|
||||
#define LVOUT_NORMAL (STDOUT_USER)
|
||||
#define LVOUT_ERROR (STDOUT_USER+1)
|
||||
#define IDASK 21
|
||||
|
||||
#define WORKSPACE 0
|
||||
#define PROJECT 1
|
||||
#define DIR 2
|
||||
|
||||
#define PRJ_FILE 0
|
||||
#define SRC_FILE 1
|
||||
#define ADD_SRC_FILE 2
|
||||
|
||||
#define FILES_TAB 0
|
||||
#define PROJECT_TAB 1
|
||||
|
||||
#define REPORT_MAIN_TAB 0
|
||||
#define REPORT_LOG_TAB 1
|
||||
|
||||
|
||||
class CChildView : public CMDIChild
|
||||
{
|
||||
public:
|
||||
CChildView();
|
||||
virtual ~CChildView();
|
||||
|
||||
bool modified;
|
||||
|
||||
bool OnCreate(LPCREATESTRUCT lParam);
|
||||
bool OnSize(UINT wParam, int width, int height);
|
||||
BOOL OnClose(void);
|
||||
BOOL OnDestroy(void);
|
||||
|
||||
BOOL OnCommand(WPARAM wParam, LPARAM lParam);
|
||||
BOOL OnNotify(int idCtrl, LPNMHDR notify);
|
||||
BOOL OnSetFocus(HWND hwndLoseFocus);
|
||||
BOOL OnActivate(HWND hwndChildDeact, HWND hwndChildAct);
|
||||
|
||||
void CmdSave(void);
|
||||
void CmdSaveAs(void);
|
||||
CEditor Editor;
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CFileList : public CList
|
||||
{
|
||||
public:
|
||||
CFileList();
|
||||
~CFileList();
|
||||
|
||||
protected:
|
||||
virtual int Compare(CNode *node1, CNode *node2);
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CProjectView : public CTreeView, public CFileList
|
||||
{
|
||||
public:
|
||||
CProjectView();
|
||||
~CProjectView();
|
||||
|
||||
CFileItem * NewFile(char * name);
|
||||
bool OpenFile(CFileItem * file);
|
||||
void RemoveFile(void);
|
||||
void RemoveModule(void);
|
||||
int DestroyFile(CFileItem * file, int decision=IDASK);
|
||||
int SaveAll(int decision);
|
||||
bool Close();
|
||||
|
||||
void CreateRoot(char * projectName);
|
||||
void DestroyRoot(void);
|
||||
CFileItem * FindFile(char * szFileName);
|
||||
char * GetFileName(CFileItem * currentNode, bool flag);
|
||||
|
||||
HWND Create(CWindow * pParent, CImageList * imgList);
|
||||
HTREEITEM CreateDirItem(HTREEITEM hParent, char * dir);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
bool CreateSubDirItem(CFileItem * file);
|
||||
HTREEITEM FindDirItem(HTREEITEM hItem, char * dir);
|
||||
HTREEITEM hRoot;
|
||||
};
|
||||
|
||||
class CFilesView : public CTreeView, public CFileList
|
||||
{
|
||||
public:
|
||||
CFilesView();
|
||||
~CFilesView();
|
||||
|
||||
bool OpenFile(CFileItem * file);
|
||||
void New (void);
|
||||
void CloseFile(CFileItem * file);
|
||||
int SaveAll(int decision);
|
||||
|
||||
HWND Create(CWindow * pParent, CImageList * imgList);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
HTREEITEM hRoot;
|
||||
};
|
||||
|
||||
class CManager : public CTabCtrl
|
||||
{
|
||||
public:
|
||||
CManager();
|
||||
~CManager();
|
||||
|
||||
void OpenFileDialog(void);
|
||||
bool OpenFile(CFileItem * file);
|
||||
int SaveAll(int silent);
|
||||
|
||||
bool NewProjectDialog(void);
|
||||
bool OpenProjectDialog(void);
|
||||
bool CloseProject(void);
|
||||
int SaveProjectFiles(int decision);
|
||||
void RemoveProjectFile(void);
|
||||
void RemoveProjectModule(void);
|
||||
|
||||
void Create(CWindow * pParent);
|
||||
bool SetPosition(HWND hInsertAfter, int x, int y, int width, int height, UINT uFlags);
|
||||
|
||||
BOOL OnNotify(int idCtrl, LPNMHDR notify);
|
||||
void Tv_OnDeleteItem(LPNMTREEVIEW notify);
|
||||
void Tv_OnSelchanged(LPNMTREEVIEW notify);
|
||||
void OnSelChanging(LPNMHDR notify);
|
||||
void OnSelChange(LPNMHDR notify);
|
||||
|
||||
CImageList ImgList;
|
||||
CFilesView FilesView;
|
||||
CProjectView ProjectView;
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
void CreateImageList(void);
|
||||
|
||||
};
|
||||
|
||||
class CLogList : public CListView
|
||||
{
|
||||
public:
|
||||
CLogList();
|
||||
~CLogList();
|
||||
|
||||
void Create(CWindow * pParent);
|
||||
bool SetPosition(HWND hInsertAfter, int x, int y, int width, int height, UINT uFlags);
|
||||
bool Append(char * line, WORD outputFlag);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
char szMsg[1024];
|
||||
};
|
||||
|
||||
class CMainList : public CListView
|
||||
{
|
||||
public:
|
||||
CMainList();
|
||||
~CMainList();
|
||||
|
||||
void Create(CWindow * pParent);
|
||||
void Lv_OnDbClick(LPNMLISTVIEW lpnmlv);
|
||||
bool Append(char * line, WORD outputFlag);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
char szLine[512];
|
||||
char szUnit[512];
|
||||
char szMsg[512];
|
||||
|
||||
bool SplitErrorLine(char * line);
|
||||
};
|
||||
|
||||
class CReport : public CTabCtrl
|
||||
{
|
||||
public:
|
||||
CReport();
|
||||
~CReport();
|
||||
|
||||
bool Append(char * line, WORD outputFlag);
|
||||
void Clear(void);
|
||||
void Create(CWindow * pParent);
|
||||
bool SetPosition(HWND hInsertAfter, int x, int y, int width, int height, UINT uFlags);
|
||||
|
||||
BOOL OnNotify(int idCtrl, LPNMHDR notify);
|
||||
void OnSelChanging(LPNMHDR notify);
|
||||
void OnSelChange(LPNMHDR notify);
|
||||
|
||||
CMainList MainList;
|
||||
CLogList LogList;
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
void CreateImageList(void);
|
||||
};
|
||||
|
||||
class CFileDlg : public CFileDlgBase
|
||||
{
|
||||
public:
|
||||
CFileDlg();
|
||||
~CFileDlg();
|
||||
|
||||
bool Open(CWindow * pWindow, char * pszFileName, DWORD nMaxFile, int fileflag);
|
||||
bool Save(CWindow * pWindow, char * pszFileName, DWORD nMaxFile, int fileflag);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CGrepDlg : public CDlgBase
|
||||
{
|
||||
public:
|
||||
CGrepDlg();
|
||||
~CGrepDlg();
|
||||
|
||||
int Create(void);
|
||||
LRESULT CALLBACK CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
BOOL OnInitDialog(HWND hwndFocus, LPARAM lInitParam);
|
||||
BOOL OnCommand(WORD wNotifyCode, WORD wID, HWND hwndCtl);
|
||||
void FindInFiles(char * findWhat, char * fileFilter);
|
||||
char gDir[MAX_PATH];
|
||||
char findWhat[200];
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
HWND hFindWhat;
|
||||
HWND hgDir;
|
||||
};
|
||||
|
||||
class CEnvDlg : public CDlgBase
|
||||
{
|
||||
public:
|
||||
CEnvDlg();
|
||||
virtual ~CEnvDlg();
|
||||
|
||||
virtual LRESULT CALLBACK CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
BOOL OnInitDialog(HWND hwndFocus, LPARAM lInitParam);
|
||||
BOOL OnCommand(WORD wNotifyCode, WORD wID, HWND hwndCtl);
|
||||
void SetEnvText(void);
|
||||
bool bIsVisible;
|
||||
bool bModified;
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
HWND hApply;
|
||||
HWND hSetCcBin;
|
||||
HWND hCcBinDir;
|
||||
HWND hBrowseCc;
|
||||
HWND hSetCmdBin;
|
||||
HWND hCmdBinDir;
|
||||
HWND hBrowseCmd;
|
||||
HWND hAutoexec;
|
||||
HWND hEnvView;
|
||||
};
|
||||
|
||||
class CPreferencesDlg : public CTabbedDlg
|
||||
{
|
||||
public:
|
||||
CPreferencesDlg();
|
||||
virtual ~CPreferencesDlg();
|
||||
|
||||
int Create(void);
|
||||
BOOL EndDlg(int nResult);
|
||||
virtual LRESULT CALLBACK CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
BOOL OnInitDialog(HWND hwndFocus, LPARAM lInitParam);
|
||||
BOOL OnCommand(WORD wNotifyCode, WORD wID, HWND hwndCtl);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
CEnvDlg EnvDlg;
|
||||
};
|
||||
|
||||
class CWinApp : public CMDIBase
|
||||
{
|
||||
public:
|
||||
CWinApp();
|
||||
~CWinApp();
|
||||
|
||||
void FirstRunTest(void);
|
||||
bool ReadIniFile(char * iniFile);
|
||||
void SaveIniFile(FILE * file);
|
||||
bool WriteIniFile(void);
|
||||
bool CustomInit(void);
|
||||
bool Release(void);
|
||||
bool SetEnv(void);
|
||||
|
||||
bool CreateUI(void);
|
||||
void CreateToolbar(void);
|
||||
void CreateSplitter(void);
|
||||
void CreateMDI(void);
|
||||
HWND CreateChild(char * caption, LPVOID lParam);
|
||||
void CreateStatusBar(void);
|
||||
|
||||
void SendCaretPos(int caretPos);
|
||||
|
||||
// Main window.
|
||||
LRESULT CALLBACK CMainWndProc(UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
BOOL OnCreate(LPCREATESTRUCT lParam);
|
||||
BOOL OnPaint(HDC wParam);
|
||||
BOOL OnSize(UINT wParam, int width, int height);
|
||||
BOOL OnDestroy(void);
|
||||
BOOL OnClose (void);
|
||||
BOOL OnNotify(int idCtrl, LPNMHDR notify);
|
||||
|
||||
BOOL OnLButtonDown(short xPos, short yPos, UINT fwKeys);
|
||||
BOOL OnMouseMove(short xPos, short yPos, UINT fwKeys);
|
||||
BOOL OnLButtonUp(short xPos, short yPos, UINT fwKeys);
|
||||
BOOL OnSetCursor(HWND hwnd, UINT nHittest, UINT wMouseMsg);
|
||||
|
||||
BOOL OnCommand(WPARAM wParam, LPARAM lParam);
|
||||
|
||||
// Child window.
|
||||
LRESULT CALLBACK CChildWndProc(CWindow * pWnd, UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
HMODULE hmod;
|
||||
char iniFileName[MAX_PATH];
|
||||
CIniFile IniFile;
|
||||
CPreferencesDlg PreferencesDlg;
|
||||
CGrepDlg GrepDlg;
|
||||
CShellDlg ShellDlg;
|
||||
CFileDlg FileDlg;
|
||||
CProcess Process;
|
||||
|
||||
CToolBar Toolbar;
|
||||
CSplitter MainSplitter;
|
||||
CSplitter ChildSplitter;
|
||||
CManager Manager;
|
||||
CReport Report;
|
||||
CStatusBar Sbar;
|
||||
|
||||
/* Preferences */
|
||||
char openFilesDir[MAX_PATH];
|
||||
char projectDir[MAX_PATH];
|
||||
bool bSetCcEnv;
|
||||
bool bSetCmdEnv;
|
||||
bool bSetDefEnv;
|
||||
char szCcBinDir[MAX_PATH];
|
||||
char szCmdBinDir[MAX_PATH];
|
||||
char includeDir[MAX_PATH];
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
bool firstRun;
|
||||
// Child windows dimensions.
|
||||
int deltaY;
|
||||
int tbarHeight;
|
||||
int sbarHeight;
|
||||
int tvWidth;
|
||||
int lvHeight;
|
||||
|
||||
int hSplitter;
|
||||
int vSplitter;
|
||||
};
|
||||
|
||||
#endif
|
682
rosapps/devutils/vmingw/process.cpp
Normal file
682
rosapps/devutils/vmingw/process.cpp
Normal file
|
@ -0,0 +1,682 @@
|
|||
/********************************************************************
|
||||
* Module: process.cpp. This is part of Visual-MinGW.
|
||||
*
|
||||
* Purpose: Procedures to invoke MinGW compiler.
|
||||
*
|
||||
* Authors: Manu B.
|
||||
*
|
||||
* License: Visual-MinGW is covered by GNU General Public License,
|
||||
* Copyright (C) 2001 Manu B.
|
||||
* See license.htm for more details.
|
||||
*
|
||||
* Note: The following article from MSDN explanes how to handle Callback
|
||||
* procedures :
|
||||
* Calling All Members: Member Functions as Callbacks.
|
||||
* by Dale Rogerson.
|
||||
* Microsoft Developer Network Technology Group.
|
||||
* April 30, 1992.
|
||||
* http://msdn.microsoft.com/archive/default.asp
|
||||
*
|
||||
* Revisions:
|
||||
*
|
||||
********************************************************************/
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <process.h>
|
||||
#include <time.h>
|
||||
#include <process.h>
|
||||
#include "process.h"
|
||||
#include "project.h"
|
||||
#include "main.h"
|
||||
#include "rsrc.h"
|
||||
|
||||
extern CCriticalSection CriticalSection;
|
||||
extern CMessageBox MsgBox;
|
||||
char errmsg[128];
|
||||
|
||||
// For winApp.isWinNT and winApp.Report.Append
|
||||
extern CWinApp winApp;
|
||||
|
||||
/********************************************************************
|
||||
* Class: CCommandDlg.
|
||||
*
|
||||
* Purpose:
|
||||
*
|
||||
* Revisions:
|
||||
*
|
||||
********************************************************************/
|
||||
CCommandDlg::CCommandDlg(){
|
||||
*cmdLine = '\0';
|
||||
}
|
||||
|
||||
CCommandDlg::~CCommandDlg(){
|
||||
}
|
||||
|
||||
HWND CCommandDlg::Create(void){
|
||||
return CreateParam(&winApp, IDD_COMMAND, 0);
|
||||
}
|
||||
|
||||
LRESULT CALLBACK CCommandDlg::CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam){
|
||||
switch(Message){
|
||||
case WM_INITDIALOG:
|
||||
return OnInitDialog((HWND) wParam, lParam);
|
||||
|
||||
case WM_COMMAND:
|
||||
OnCommand(HIWORD(wParam), LOWORD(wParam), (HWND) lParam);
|
||||
break;
|
||||
|
||||
case WM_CLOSE:
|
||||
EndDlg(0);
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL CCommandDlg::OnInitDialog(HWND, LPARAM){
|
||||
hCmdLine = GetItem(IDC_CMDLINE);
|
||||
|
||||
SetItemText(hCmdLine, cmdLine);
|
||||
// Show the dialog.
|
||||
Show();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL CCommandDlg::OnCommand(WORD, WORD wID, HWND){
|
||||
switch (wID){
|
||||
case IDOK:
|
||||
GetItemText(hCmdLine, cmdLine, sizeof(cmdLine));
|
||||
//MsgBox.DisplayString(cmdLine);
|
||||
winApp.Process.CommandLine(cmdLine);
|
||||
return TRUE;
|
||||
|
||||
case IDCANCEL:
|
||||
EndDlg(IDCANCEL);
|
||||
return FALSE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/********************************************************************
|
||||
* Class: CTask.
|
||||
*
|
||||
* Purpose:
|
||||
*
|
||||
* Revisions:
|
||||
*
|
||||
********************************************************************/
|
||||
CTask::CTask(){
|
||||
*cmdLine = '\0';
|
||||
*szFileName = '\0';
|
||||
creationFlag = 0;
|
||||
outputFlag = 0;
|
||||
}
|
||||
|
||||
CTask::~CTask(){
|
||||
}
|
||||
|
||||
|
||||
/********************************************************************
|
||||
* Class: CStack.
|
||||
*
|
||||
* Purpose:
|
||||
*
|
||||
* Revisions:
|
||||
*
|
||||
********************************************************************/
|
||||
CStack::CStack(){
|
||||
retBuf = NULL;
|
||||
}
|
||||
|
||||
CStack::~CStack(){
|
||||
DestroyList();
|
||||
if (retBuf)
|
||||
delete retBuf;
|
||||
}
|
||||
|
||||
void CStack::DetachCurrent(void){
|
||||
// Empty list ?
|
||||
if (current != NULL){
|
||||
CNode * node = current;
|
||||
|
||||
// Detach node from the list.
|
||||
if (node->next != NULL)
|
||||
node->next->prev = node->prev;
|
||||
if (node->prev != NULL)
|
||||
node->prev->next = node->next;
|
||||
|
||||
// Set current node.
|
||||
if(node->next != NULL)
|
||||
current = node->next;
|
||||
else
|
||||
current = node->prev;
|
||||
|
||||
if (current == NULL){
|
||||
// Now, the list is empty.
|
||||
first = last = NULL;
|
||||
|
||||
}else if (first == node){
|
||||
// Detached node was first.
|
||||
first = current;
|
||||
|
||||
}else if (last == node){
|
||||
// Detached node was last.
|
||||
last = current;
|
||||
}
|
||||
count--;
|
||||
}
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
* Push/Pop/Flush.
|
||||
********************************************************************/
|
||||
int CStack::Push(CTask * newTask){
|
||||
InsertLast(newTask);
|
||||
return Length();
|
||||
}
|
||||
|
||||
CTask * CStack::Pop(void){
|
||||
// Delete return buffer.
|
||||
if (retBuf){
|
||||
delete retBuf;
|
||||
retBuf = NULL;
|
||||
}
|
||||
|
||||
// Get first node. (FIFO stack)
|
||||
retBuf = (CTask*) First();
|
||||
|
||||
// The Stack is empty ?
|
||||
if (!retBuf)
|
||||
return NULL;
|
||||
|
||||
// Detach current node from the list. Return a pointer to it.
|
||||
DetachCurrent();
|
||||
return retBuf;
|
||||
}
|
||||
|
||||
void CStack::Flush(void){
|
||||
DestroyList();
|
||||
if (retBuf)
|
||||
delete retBuf;
|
||||
retBuf = NULL;
|
||||
}
|
||||
|
||||
|
||||
/********************************************************************
|
||||
* Class: CPipes.
|
||||
*
|
||||
* Purpose: Creates needed pipes, depending on creationFlag.
|
||||
* Like GNU Make does, we use an Handle array for our pipes.
|
||||
* Parent Process Side is stdXXX[0] and Child Process Side is stdXXX[1].
|
||||
*
|
||||
* Ex: PARENT ->[0]IN_PIPE[1]-> CHILD_IO ->[1]OUT_PIPE[0]-> PARENT
|
||||
* ->[1]ERR_PIPE[0]-> PARENT
|
||||
* Revisions:
|
||||
*
|
||||
********************************************************************/
|
||||
CPipes::CPipes(){
|
||||
hIn[0] = NULL;
|
||||
hIn[1] = NULL;
|
||||
hOut[0] = NULL;
|
||||
hOut[1] = NULL;
|
||||
hErr[0] = NULL;
|
||||
hErr[1] = NULL;
|
||||
}
|
||||
|
||||
CPipes::~CPipes(){
|
||||
}
|
||||
|
||||
bool CPipes::Create(WORD creationFlag, bool winNT){
|
||||
/* Create needed pipes according to creationFlag */
|
||||
/* Parent side of pipes is [0], child side is [1] */
|
||||
HANDLE hDup;
|
||||
SECURITY_ATTRIBUTES sa;
|
||||
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
|
||||
sa.bInheritHandle = TRUE;
|
||||
sa.lpSecurityDescriptor = NULL;
|
||||
|
||||
if (winNT){
|
||||
/* Create a security descriptor for Windows NT */
|
||||
SECURITY_DESCRIPTOR sd;
|
||||
if (!InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION)){
|
||||
sprintf(errmsg, "vm error: Process.cpp InitializeSecurityDescriptor(winNT) failed (e=%d)", (int)GetLastError());
|
||||
winApp.Report.Append(errmsg, LVOUT_ERROR);
|
||||
return false;
|
||||
}
|
||||
if (!SetSecurityDescriptorDacl(&sd, TRUE, NULL, FALSE)){
|
||||
sprintf(errmsg, "vm error: Process.cpp SetSecurityDescriptorDacl(winNT) failed (e=%d)", (int)GetLastError());
|
||||
winApp.Report.Append(errmsg, LVOUT_ERROR);
|
||||
return false;
|
||||
}
|
||||
sa.lpSecurityDescriptor = &sd;
|
||||
}
|
||||
|
||||
/* Input pipe */
|
||||
if (!CreatePipe(&hIn[1], &hIn[0], &sa, 0)){
|
||||
sprintf(errmsg, "vm error: Process.cpp CreatePipe(In) failed (e=%d)", (int)GetLastError());
|
||||
winApp.Report.Append(errmsg, LVOUT_ERROR);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!DuplicateHandle(GetCurrentProcess(),
|
||||
hIn[0],
|
||||
GetCurrentProcess(),
|
||||
&hDup,
|
||||
0,
|
||||
FALSE,
|
||||
DUPLICATE_SAME_ACCESS)){
|
||||
sprintf(errmsg, "vm error: Process.cpp DuplicateHandle(In) failed (e=%d)", (int)GetLastError());
|
||||
winApp.Report.Append(errmsg, LVOUT_ERROR);
|
||||
return false;
|
||||
}
|
||||
CloseHandle(hIn[0]);
|
||||
hIn[0] = hDup;
|
||||
|
||||
/* Output pipe */
|
||||
if (!CreatePipe(&hOut[0], &hOut[1], &sa, 0)){
|
||||
sprintf(errmsg, "vm error: Process.cpp CreatePipe(Out) failed (e=%d)", (int)GetLastError());
|
||||
winApp.Report.Append(errmsg, LVOUT_ERROR);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!DuplicateHandle(GetCurrentProcess(),
|
||||
hOut[0],
|
||||
GetCurrentProcess(),
|
||||
&hDup,
|
||||
0,
|
||||
FALSE,
|
||||
DUPLICATE_SAME_ACCESS)){
|
||||
sprintf(errmsg, "vm error: Process.cpp DuplicateHandle(Out) failed (e=%d)", (int)GetLastError());
|
||||
winApp.Report.Append(errmsg, LVOUT_ERROR);
|
||||
return false;
|
||||
}
|
||||
CloseHandle(hOut[0]);
|
||||
hOut[0] = hDup;
|
||||
|
||||
/* Error pipe */
|
||||
if (!(creationFlag & OUTERR_PIPE) && (creationFlag & ERR_PIPE)){
|
||||
if (!CreatePipe(&hErr[0], &hErr[1], &sa, 0)){
|
||||
sprintf(errmsg, "vm error: Process.cpp CreatePipe(Err) failed (e=%d)", (int)GetLastError());
|
||||
winApp.Report.Append(errmsg, LVOUT_ERROR);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!DuplicateHandle(GetCurrentProcess(),
|
||||
hErr[0],
|
||||
GetCurrentProcess(),
|
||||
&hDup,
|
||||
0,
|
||||
FALSE,
|
||||
DUPLICATE_SAME_ACCESS)){
|
||||
sprintf(errmsg, "vm error: Process.cpp DuplicateHandle(Err) failed (e=%d)", (int)GetLastError());
|
||||
winApp.Report.Append(errmsg, LVOUT_ERROR);
|
||||
return false;
|
||||
}
|
||||
CloseHandle(hErr[0]);
|
||||
hErr[0] = hDup;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CPipes::CloseChildSide(void){
|
||||
return Close(1);
|
||||
}
|
||||
|
||||
bool CPipes::CloseParentSide(void){
|
||||
return Close(0);
|
||||
}
|
||||
|
||||
bool CPipes::Close(int side){
|
||||
|
||||
if (side < 0 || side > 1)
|
||||
return false;
|
||||
|
||||
if (hIn[side]){
|
||||
CloseHandle(hIn[side]);
|
||||
hIn[side] = NULL;
|
||||
}
|
||||
|
||||
if (hOut[side]){
|
||||
CloseHandle(hOut[side]);
|
||||
hOut[side] = NULL;
|
||||
}
|
||||
|
||||
if (hErr[side]){
|
||||
CloseHandle(hErr[side]);
|
||||
hErr[side] = NULL;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/********************************************************************
|
||||
* Class: CProcess.
|
||||
*
|
||||
* Purpose:
|
||||
*
|
||||
* Revisions:
|
||||
*
|
||||
********************************************************************/
|
||||
CProcess::CProcess(){
|
||||
Running = false;
|
||||
exitCode = 0;
|
||||
|
||||
pi.hProcess = 0;
|
||||
pi.hThread = 0;
|
||||
pi.dwProcessId = 0;
|
||||
pi.dwThreadId = 0;
|
||||
}
|
||||
|
||||
CProcess::~CProcess(){
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
* Manage Tasks.
|
||||
********************************************************************/
|
||||
bool CProcess::isRunning(void){
|
||||
if (Running){
|
||||
MsgBox.DisplayWarning("A process is already running !");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
CTask * CProcess::AddTask(char * cmdLine, WORD creationFlag, WORD outputFlag){
|
||||
CTask * newTask = new CTask;
|
||||
|
||||
strcpy(newTask->cmdLine, cmdLine);
|
||||
newTask->creationFlag = creationFlag;
|
||||
newTask->outputFlag = outputFlag;
|
||||
Push(newTask);
|
||||
return newTask;
|
||||
}
|
||||
|
||||
bool CProcess::CmdCat(char * cmdLine){
|
||||
CTask * task = (CTask*) GetCurrent();
|
||||
if (!task)
|
||||
return false;
|
||||
|
||||
strcat(task->cmdLine, cmdLine);
|
||||
return true;
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
* RunNext/Run/RunProcess.
|
||||
********************************************************************/
|
||||
void __cdecl call_thread(void * ptr){
|
||||
/* C++ adapter */
|
||||
((CProcess *) ptr)->Run_Thread_Internal();
|
||||
}
|
||||
|
||||
void CProcess::Run(void){
|
||||
// Check if something is already running before creating a thread.
|
||||
if (!Running){
|
||||
// Call Run_Thread_Internal()
|
||||
_beginthread(call_thread, 1024 * 1024, (void *) this);
|
||||
}
|
||||
}
|
||||
|
||||
void CProcess::Run_Thread_Internal(void){
|
||||
exitCode = 0;
|
||||
/* Execute each task */
|
||||
for ( ; ; ){
|
||||
/* If previous task returns an error code, abort */
|
||||
if (exitCode != 0)
|
||||
break;
|
||||
|
||||
// Get one task to execute.
|
||||
currTask = Pop();
|
||||
|
||||
// Nothing to run.
|
||||
if (!currTask)
|
||||
break;
|
||||
|
||||
/* Show command lines ?*/
|
||||
winApp.Report.Append(currTask->cmdLine, LVOUT_NORMAL);
|
||||
|
||||
if (RunProcess(currTask)){
|
||||
winApp.Report.Append("Abort !", LVOUT_NORMAL);
|
||||
exitCode = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Successful ?
|
||||
if (exitCode == 0)
|
||||
winApp.Report.Append("Performed successfully.", LVOUT_NORMAL);
|
||||
|
||||
Flush();
|
||||
Running = false;
|
||||
return;
|
||||
}
|
||||
|
||||
bool CProcess::RunProcess(CTask * task){
|
||||
if (!task)
|
||||
return false;
|
||||
|
||||
bool usePipes = task->creationFlag;
|
||||
STARTUPINFO si = {sizeof(STARTUPINFO), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0};
|
||||
|
||||
/* PROCESS_INFORMATION */
|
||||
pi.hProcess = 0;
|
||||
pi.hThread = 0;
|
||||
pi.dwProcessId = 0;
|
||||
pi.dwThreadId = 0;
|
||||
|
||||
/* Process creation with pipes */
|
||||
if (usePipes){
|
||||
/* Create needed pipes according to creationFlag */
|
||||
if(!Pipes.Create(task->creationFlag, winApp.isWinNT)){
|
||||
Pipes.CloseChildSide();
|
||||
Pipes.CloseParentSide();
|
||||
return false;
|
||||
}
|
||||
|
||||
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
|
||||
si.wShowWindow = SW_HIDE;
|
||||
//si.wShowWindow = SW_SHOWNORMAL;
|
||||
|
||||
/* Set pipe handles */
|
||||
if (Pipes.hIn[1] != NULL && Pipes.hOut[1] != NULL){
|
||||
si.hStdInput = Pipes.hIn[1];
|
||||
si.hStdOutput = Pipes.hOut[1];
|
||||
if (Pipes.hErr[1] == NULL)
|
||||
si.hStdError = Pipes.hOut[1];
|
||||
else
|
||||
si.hStdError = Pipes.hErr[1];
|
||||
}else{
|
||||
sprintf(errmsg, "vm error: Process.cpp Invalid pipe handle");
|
||||
winApp.Report.Append(errmsg, LVOUT_ERROR);
|
||||
Pipes.CloseChildSide();
|
||||
Pipes.CloseParentSide();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/* Create the child process */
|
||||
Running = CreateProcess(NULL,
|
||||
task->cmdLine,
|
||||
NULL,
|
||||
NULL,
|
||||
usePipes,
|
||||
0,
|
||||
NULL,
|
||||
/*startDir[0] ? startDir :*/ NULL,
|
||||
&si,
|
||||
&pi);
|
||||
|
||||
if (!Running){
|
||||
/* CreateProcess failed. Close handles and return */
|
||||
Pipes.CloseChildSide();
|
||||
Pipes.CloseParentSide();
|
||||
sprintf(errmsg, "vm error: Process.cpp CreateProcess failed (e=%d)", (int)GetLastError());
|
||||
winApp.Report.Append(errmsg, LVOUT_ERROR);
|
||||
return false;
|
||||
}else{
|
||||
/* Close child process handles */
|
||||
Pipes.CloseChildSide();
|
||||
|
||||
if (!(usePipes & IN_PIPE)){
|
||||
/* Don't use the Input pipe */
|
||||
::CloseHandle(Pipes.hIn[0]);
|
||||
Pipes.hIn[0] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
//sprintf(errmsg, "vm debug: enter io loop");
|
||||
//winApp.Report.Append(errmsg, LVOUT_ERROR);
|
||||
if (usePipes){
|
||||
/* Initialize buffers */
|
||||
*outBuf = 0;
|
||||
chr = outBuf;
|
||||
bool bResult;
|
||||
for ( ; ; ){
|
||||
Sleep(100L);
|
||||
|
||||
bResult = ReadStdOut(task, Pipes.hOut[0]);
|
||||
if (bResult != NO_ERROR)
|
||||
break;
|
||||
|
||||
::GetExitCodeProcess(pi.hProcess, &exitCode);
|
||||
if (exitCode != STILL_ACTIVE){
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
//sprintf(errmsg, "vm debug: exit io loop");
|
||||
//winApp.Report.Append(errmsg, LVOUT_ERROR);
|
||||
|
||||
/* The child process is running. Perform I/O until terminated */
|
||||
::WaitForSingleObject(pi.hProcess, INFINITE);
|
||||
/* Process terminated. Get exit code. */
|
||||
::GetExitCodeProcess(pi.hProcess, &exitCode);
|
||||
if (exitCode == NO_ERROR){
|
||||
return NO_ERROR;
|
||||
}
|
||||
/* Close handles */
|
||||
Pipes.CloseParentSide();
|
||||
::CloseHandle(pi.hProcess);
|
||||
if (pi.hThread){
|
||||
::CloseHandle(pi.hThread);
|
||||
pi.hThread = NULL;
|
||||
}
|
||||
return exitCode;
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
* Pipes input/output.
|
||||
********************************************************************/
|
||||
void CProcess::WriteStdIn(HANDLE hPipe, WORD){
|
||||
if (!hPipe)
|
||||
return;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void CProcess::ReadStdErr(HANDLE hPipe, WORD){
|
||||
if (!hPipe)
|
||||
return;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
long CProcess::ReadStdOut(CTask * task, HANDLE hPipe){
|
||||
if (!task || !hPipe)
|
||||
return ERROR_INVALID_FUNCTION;
|
||||
|
||||
/* Copy each char and output lines while there is something to read */
|
||||
for ( ; ; ){
|
||||
// Copy one char, return if nothing available.
|
||||
if (!ReadOneChar(hPipe, chr))
|
||||
break;
|
||||
|
||||
// Ignore CR.
|
||||
if (*chr == '\r')
|
||||
continue;
|
||||
|
||||
if (*chr != '\n'){
|
||||
chr++;
|
||||
/* @@TODO Overflow
|
||||
if ((chr - outBuf) >= max_len)
|
||||
realloc(buffer);*/
|
||||
// End of line
|
||||
}else if (*chr =='\n'){
|
||||
*chr = '\0';
|
||||
// Output error lines to List View.
|
||||
if (task->outputFlag == STDOUT_FILE_APPEND){
|
||||
WriteFileAppend(task->szFileName, outBuf, (chr - outBuf));
|
||||
}else{
|
||||
OutputLine(task->outputFlag, outBuf, (chr - outBuf));
|
||||
}
|
||||
*outBuf = '\0';
|
||||
chr = outBuf;
|
||||
}
|
||||
}
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
int CProcess::ReadOneChar(HANDLE hPipe, char * chrin){
|
||||
DWORD bytesRead = 0;
|
||||
DWORD bytesAvail = 0;
|
||||
|
||||
if (!PeekNamedPipe(hPipe, chrin, (DWORD)1, &bytesRead, &bytesAvail, NULL))
|
||||
return 0;
|
||||
|
||||
if (bytesAvail == 0)
|
||||
return 0;
|
||||
|
||||
if (!ReadFile(hPipe, chrin, (DWORD)1, &bytesRead, NULL))
|
||||
return 0;
|
||||
|
||||
return bytesRead;
|
||||
}
|
||||
|
||||
bool CProcess::CommandLine(char * cmdLine){
|
||||
if (!Pipes.hIn[0])
|
||||
return false;
|
||||
if (!Running || !currTask || !currTask->creationFlag)
|
||||
return false;
|
||||
int len = strlen(cmdLine);
|
||||
if (len){
|
||||
strcpy(inBuf, cmdLine);
|
||||
char * s = inBuf;
|
||||
s+=len;
|
||||
*s = '\r';
|
||||
s++;
|
||||
*s = '\n';
|
||||
s++;
|
||||
*s = '\0';
|
||||
}
|
||||
DWORD written;
|
||||
|
||||
if (!WriteFile(Pipes.hIn[0], inBuf, strlen(inBuf), &written, 0))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CProcess::WriteFileAppend(char * fileName, char * line, int /*len*/){
|
||||
if (!*fileName)
|
||||
return false;
|
||||
|
||||
/* Append one line of text to a file */
|
||||
FILE * file = fopen(fileName, "a");
|
||||
if (file){
|
||||
fprintf(file, line);
|
||||
fprintf(file, "\n");
|
||||
fclose(file);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CProcess::OutputLine(WORD outputFlag, char * line, int /*len*/){
|
||||
/* Output error lines to List View */
|
||||
|
||||
CriticalSection.Enter();
|
||||
winApp.Report.Append(line, outputFlag);
|
||||
CriticalSection.Leave();
|
||||
return true;
|
||||
}
|
||||
|
146
rosapps/devutils/vmingw/process.h
Normal file
146
rosapps/devutils/vmingw/process.h
Normal file
|
@ -0,0 +1,146 @@
|
|||
/********************************************************************
|
||||
* Module: process.h. This is part of Visual-MinGW.
|
||||
*
|
||||
* License: Visual-MinGW is covered by GNU General Public License,
|
||||
* Copyright (C) 2001 Manu B.
|
||||
* See license.htm for more details.
|
||||
*
|
||||
********************************************************************/
|
||||
#ifndef PROCESS_H
|
||||
#define PROCESS_H
|
||||
#include "winui.h"
|
||||
#include "CList.h"
|
||||
|
||||
|
||||
class CCommandDlg : public CDlgBase
|
||||
{
|
||||
public:
|
||||
CCommandDlg();
|
||||
~CCommandDlg();
|
||||
|
||||
HWND Create(void);
|
||||
LRESULT CALLBACK CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
BOOL OnInitDialog(HWND hwndFocus, LPARAM lInitParam);
|
||||
BOOL OnCommand(WORD wNotifyCode, WORD wID, HWND hwndCtl);
|
||||
char cmdLine[1024];
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
HWND hCmdLine;
|
||||
};
|
||||
|
||||
/********************************************************
|
||||
creationFlag truth table
|
||||
-----------------------------------
|
||||
8 4 2 1
|
||||
------------------
|
||||
NO_PIPE 0 0 0 0
|
||||
IN_PIPE 0 0 0 1
|
||||
OUT_PIPE 0 0 1 0
|
||||
ERR_PIPE 0 1 0 0
|
||||
OUTERR_PIPE 1 0 1 0
|
||||
|
||||
*********************************************************/
|
||||
#define NO_PIPE 0x0000
|
||||
#define IN_PIPE 0x0001
|
||||
#define OUT_PIPE 0x0002
|
||||
#define ERR_PIPE 0x0004
|
||||
#define OUTERR_PIPE 0x000A
|
||||
|
||||
#define STDOUT_NONE 0
|
||||
#define STDOUT_FILE_APPEND 1
|
||||
#define STDOUT_USER 2
|
||||
|
||||
class CTask : public CNode
|
||||
{
|
||||
public:
|
||||
CTask();
|
||||
~CTask();
|
||||
|
||||
char cmdLine[MAX_PATH];
|
||||
char szFileName[MAX_PATH];
|
||||
WORD creationFlag;
|
||||
WORD outputFlag;
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
class CStack : public CList
|
||||
{
|
||||
public:
|
||||
CStack();
|
||||
~CStack();
|
||||
|
||||
int Push(CTask * newTask);
|
||||
CTask * Pop(void);
|
||||
void Flush(void);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
CTask * retBuf;
|
||||
void DetachCurrent(void);
|
||||
};
|
||||
|
||||
class CPipes
|
||||
{
|
||||
public:
|
||||
CPipes();
|
||||
~CPipes();
|
||||
|
||||
HANDLE hIn[2];
|
||||
HANDLE hOut[2];
|
||||
HANDLE hErr[2];
|
||||
|
||||
bool Create(WORD creationFlag, bool winNT);
|
||||
bool CloseChildSide(void);
|
||||
bool CloseParentSide(void);
|
||||
protected:
|
||||
|
||||
private:
|
||||
bool Close(int side);
|
||||
};
|
||||
|
||||
class CProcess : public CStack
|
||||
{
|
||||
public:
|
||||
CProcess();
|
||||
~CProcess();
|
||||
|
||||
bool CommandLine(char * cmdLine);
|
||||
bool isRunning(void);
|
||||
CTask * AddTask(char * cmdLine, WORD creationFlag, WORD outputFlag/* = STDOUT_NONE*/);
|
||||
bool CmdCat(char * cmdLine);
|
||||
void Run(void);
|
||||
void Run_Thread_Internal(void);
|
||||
|
||||
CCommandDlg CommandDlg;
|
||||
protected:
|
||||
|
||||
private:
|
||||
PROCESS_INFORMATION pi;
|
||||
bool Running;
|
||||
DWORD exitCode;
|
||||
CTask * currTask;
|
||||
CPipes Pipes;
|
||||
char * chr;
|
||||
char inBuf[1024];
|
||||
char outBuf[1024];
|
||||
char errBuf[1024];
|
||||
|
||||
bool RunProcess(CTask * task);
|
||||
|
||||
void WriteStdIn(HANDLE hPipe, WORD creationFlag);
|
||||
void ReadStdErr(HANDLE hPipe, WORD creationFlag);
|
||||
long ReadStdOut(CTask * task, HANDLE hPipe);
|
||||
int ReadOneChar(HANDLE hPipe, char * chrin);
|
||||
|
||||
bool WriteFileAppend(char * fileName, char * line, int len=-1);
|
||||
bool OutputLine(WORD outputFlag, char * line, int len=-1);
|
||||
};
|
||||
|
||||
#endif
|
1453
rosapps/devutils/vmingw/project.cpp
Normal file
1453
rosapps/devutils/vmingw/project.cpp
Normal file
File diff suppressed because it is too large
Load diff
295
rosapps/devutils/vmingw/project.h
Normal file
295
rosapps/devutils/vmingw/project.h
Normal file
|
@ -0,0 +1,295 @@
|
|||
/********************************************************************
|
||||
* Module: project.h. This is part of Visual-MinGW.
|
||||
*
|
||||
* License: Visual-MinGW is covered by GNU General Public License,
|
||||
* Copyright (C) 2001 Manu B.
|
||||
* See license.htm for more details.
|
||||
*
|
||||
********************************************************************/
|
||||
#ifndef PROJECT_H
|
||||
#define PROJECT_H
|
||||
|
||||
#include "winui.h"
|
||||
#include "main.h"
|
||||
#include "process.h"
|
||||
|
||||
#define BUILD_STATLIB 0
|
||||
#define BUILD_DLL 1
|
||||
#define BUILD_EXE 2
|
||||
#define BUILD_GUIEXE 3
|
||||
#define LANGC 0
|
||||
#define LANGCPP 1
|
||||
|
||||
class CProject;
|
||||
class CMakefile;
|
||||
|
||||
bool CheckFile(CFileItem * file);
|
||||
|
||||
class CGeneralDlg : public CDlgBase
|
||||
{
|
||||
public:
|
||||
CGeneralDlg();
|
||||
virtual ~CGeneralDlg();
|
||||
|
||||
virtual LRESULT CALLBACK CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
BOOL OnInitDialog(HWND hwndFocus, LPARAM lInitParam);
|
||||
BOOL OnCommand(WORD wNotifyCode, WORD wID, HWND hwndCtl);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
CProject *pProject;
|
||||
CMakefile *pMakefile;
|
||||
HWND hStatLib;
|
||||
HWND hDll;
|
||||
HWND hConsole;
|
||||
HWND hGuiExe;
|
||||
HWND hDbgSym;
|
||||
HWND hLangC;
|
||||
HWND hLangCpp;
|
||||
HWND hMkfName;
|
||||
HWND hMkfDir;
|
||||
HWND hUserMkf;
|
||||
HWND hTgtName;
|
||||
HWND hTgtDir;
|
||||
};
|
||||
|
||||
class CCompilerDlg : public CDlgBase
|
||||
{
|
||||
public:
|
||||
CCompilerDlg();
|
||||
virtual ~CCompilerDlg();
|
||||
|
||||
virtual LRESULT CALLBACK CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
BOOL OnInitDialog(HWND hwndFocus, LPARAM lInitParam);
|
||||
BOOL OnCommand(WORD wNotifyCode, WORD wID, HWND hwndCtl);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
CProject *pProject;
|
||||
CMakefile *pMakefile;
|
||||
HWND hCppFlags;
|
||||
HWND hWarning;
|
||||
HWND hOptimiz;
|
||||
HWND hCFlags;
|
||||
HWND hIncDirs;
|
||||
};
|
||||
|
||||
class CZipDlg : public CDlgBase
|
||||
{
|
||||
public:
|
||||
CZipDlg();
|
||||
virtual ~CZipDlg();
|
||||
|
||||
virtual LRESULT CALLBACK CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
BOOL OnInitDialog(HWND hwndFocus, LPARAM lInitParam);
|
||||
BOOL OnCommand(WORD wNotifyCode, WORD wID, HWND hwndCtl);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
CProject *pProject;
|
||||
CMakefile *pMakefile;
|
||||
HWND hZipDir;
|
||||
HWND hZipFlags;
|
||||
};
|
||||
|
||||
class CLinkerDlg : public CDlgBase
|
||||
{
|
||||
public:
|
||||
CLinkerDlg();
|
||||
virtual ~CLinkerDlg();
|
||||
|
||||
virtual LRESULT CALLBACK CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
BOOL OnInitDialog(HWND hwndFocus, LPARAM lInitParam);
|
||||
BOOL OnCommand(WORD wNotifyCode, WORD wID, HWND hwndCtl);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
CProject *pProject;
|
||||
CMakefile *pMakefile;
|
||||
HWND hLdStrip;
|
||||
HWND hLdOpts;
|
||||
HWND hLdLibs;
|
||||
HWND hLibsDirs;
|
||||
};
|
||||
|
||||
class COptionsDlg : public CTabbedDlg
|
||||
{
|
||||
public:
|
||||
COptionsDlg();
|
||||
virtual ~COptionsDlg();
|
||||
|
||||
BOOL EndDlg(int nResult);
|
||||
virtual LRESULT CALLBACK CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
BOOL OnInitDialog(HWND hwndFocus, LPARAM lInitParam);
|
||||
BOOL OnCommand(WORD wNotifyCode, WORD wID, HWND hwndCtl);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
CProject *pProject;
|
||||
CMakefile *pMakefile;
|
||||
CGeneralDlg GeneralDlg;
|
||||
CCompilerDlg CompilerDlg;
|
||||
CLinkerDlg LinkerDlg;
|
||||
CZipDlg ZipDlg;
|
||||
};
|
||||
|
||||
class CNewModuleDlg : public CDlgBase
|
||||
{
|
||||
public:
|
||||
CNewModuleDlg();
|
||||
virtual ~CNewModuleDlg();
|
||||
|
||||
virtual LRESULT CALLBACK CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
CProject *pProject;
|
||||
};
|
||||
|
||||
class CCompiler : public CIniFile
|
||||
{
|
||||
public:
|
||||
CCompiler();
|
||||
~CCompiler();
|
||||
|
||||
bool LoadData(char * fullpath);
|
||||
|
||||
char make[64];
|
||||
|
||||
char cc[16];
|
||||
char cFlags[64];
|
||||
char ldFlags[64];
|
||||
char wres[16];
|
||||
|
||||
char debug[16];
|
||||
char test[16];
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CMakefile
|
||||
{
|
||||
public:
|
||||
CMakefile();
|
||||
~CMakefile();
|
||||
|
||||
void Init(void);
|
||||
bool SwitchCurrentDir(void);
|
||||
void GetFullPath(char * prjFileName, WORD offset, char * name);
|
||||
void Build(CProjectView * Tree, CProcess* Process);
|
||||
void SrcList2Buffers(CProjectView * Tree);
|
||||
void Write(void);
|
||||
|
||||
// File.
|
||||
char szFileName[MAX_PATH];
|
||||
WORD nFileOffset;
|
||||
char mkfDir[MAX_PATH];
|
||||
|
||||
// Compiler dependent.
|
||||
char cc[4];
|
||||
char make[64];
|
||||
char wres[16];
|
||||
char test[16];
|
||||
|
||||
char target[64];
|
||||
char tgtDir[MAX_PATH];
|
||||
UINT buildWhat;
|
||||
bool debug;
|
||||
UINT lang;
|
||||
|
||||
// Compiler data.
|
||||
char cppFlags[256];
|
||||
char warning[64];
|
||||
char optimize[64];
|
||||
char cFlags[64];
|
||||
char incDirs[256];
|
||||
|
||||
// Linker data.
|
||||
char ldStrip[32];
|
||||
char ldOpts[64];
|
||||
char ldLibs[64];
|
||||
char libDirs[256];
|
||||
|
||||
// Archiver.
|
||||
char arFlags[64];
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
// Buffers.
|
||||
char objFile[64];
|
||||
char srcBuf [1024];
|
||||
char objBuf [1024];
|
||||
char resBuf [1024];
|
||||
char depBuf [256];
|
||||
};
|
||||
|
||||
class CProject //: public CIniFile
|
||||
{
|
||||
public:
|
||||
CProject();
|
||||
~CProject();
|
||||
|
||||
bool NoProject(void);
|
||||
int CloseDecision(void);
|
||||
bool New(char * fileName, WORD fileOffset);
|
||||
bool Open(char * fileName, WORD fileOffset);
|
||||
|
||||
bool RelativeToAbsolute(char * relativePath);
|
||||
bool AddFiles(void);
|
||||
|
||||
bool OptionsDlg(void);
|
||||
bool NewModuleDlg(void);
|
||||
bool NewModule(char * srcFile, bool createHeader);
|
||||
|
||||
void ZipSrcs(void);
|
||||
void Explore(HWND hwnd);
|
||||
|
||||
void Build(void);
|
||||
void RebuildAll(void);
|
||||
void RunTarget(void);
|
||||
void MakeClean(void);
|
||||
void BuildMakefile(void);
|
||||
|
||||
bool SwitchCurrentDir(void);
|
||||
|
||||
CMakefile Makefile;
|
||||
|
||||
/* May be private members */
|
||||
int numFiles;
|
||||
bool loaded;
|
||||
bool modified;
|
||||
bool buildMakefile;
|
||||
int SavePrjFile(int decision);
|
||||
|
||||
char szFileName[MAX_PATH];
|
||||
WORD nFileOffset;
|
||||
WORD nFileExtension;
|
||||
char szDirBuffer[MAX_PATH];
|
||||
|
||||
char zipDir[MAX_PATH];
|
||||
char zipFlags[256];
|
||||
|
||||
char compilerName[64];
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
void Reset();
|
||||
|
||||
CIniFile PrjFile;
|
||||
COptionsDlg _OptionsDlg;
|
||||
CNewModuleDlg _NewModuleDlg;
|
||||
|
||||
int prjVer;
|
||||
};
|
||||
|
||||
#endif
|
168
rosapps/devutils/vmingw/rsrc.h
Normal file
168
rosapps/devutils/vmingw/rsrc.h
Normal file
|
@ -0,0 +1,168 @@
|
|||
/********************************************************************
|
||||
* Module: resource.h. This is part of Visual-MinGW.
|
||||
*
|
||||
* License: Visual-MinGW is covered by GNU General Public License,
|
||||
* Copyright (C) 2001 Manu B.
|
||||
* See license.htm for more details.
|
||||
*
|
||||
********************************************************************/
|
||||
#define APP_VERSION "0.43a"
|
||||
#define FULL_APP_VERSION "0.43 alpha"
|
||||
|
||||
// Static control ----------------------------
|
||||
#define IDC_STATIC -1
|
||||
|
||||
// Bitmaps ----------------------------------
|
||||
#define IDB_TOOLBAR 10
|
||||
#define IDB_TREEVIEW 11
|
||||
|
||||
#define IDAPPLY 20
|
||||
|
||||
// Preferences Dialog -----------------------
|
||||
#define IDD_PREFERENCES 100
|
||||
#define IDC_PREF_TABS 101
|
||||
|
||||
#define IDD_ENVIRON 110
|
||||
#define IDC_SET_CCBIN 111
|
||||
#define IDC_CCBIN 112
|
||||
#define IDC_BROWSE_CC 113
|
||||
#define IDC_SET_CMDBIN 114
|
||||
#define IDC_CMDBIN 115
|
||||
#define IDC_BROWSE_CMD 116
|
||||
#define IDC_AUTOEXEC 117
|
||||
#define IDC_ENV_VIEW 118
|
||||
/*#define IDC_CC_INCDIR 101
|
||||
#define IDC_BROWSE 102*/
|
||||
|
||||
// Find Dialog -------------------------------
|
||||
#define IDD_FIND 120
|
||||
#define IDC_FINDWHAT 121
|
||||
#define IDC_WHOLEWORD 122
|
||||
#define IDC_MATCHCASE 123
|
||||
#define IDC_REGEXP 124
|
||||
#define IDC_WRAP 125
|
||||
#define IDC_UNSLASH 126
|
||||
#define IDC_DIRECTIONUP 127
|
||||
#define IDC_DIRECTIONDOWN 128
|
||||
|
||||
// Replace ----------------------------------
|
||||
#define IDD_REPLACE 130
|
||||
#define IDC_REPLACEWITH 131
|
||||
#define IDC_REPLACE 132
|
||||
#define IDC_REPLACEALL 133
|
||||
#define IDC_REPLACEINSEL 134
|
||||
|
||||
// Find in files -------------------------------
|
||||
#define IDD_GREP 135
|
||||
#define IDC_GFILTER 136
|
||||
#define IDC_GDIR 137
|
||||
#define IDC_GBROWSE 139
|
||||
|
||||
// New module ------------------------------
|
||||
#define IDD_NEW_MODULE 140
|
||||
#define IDC_HEADER 141
|
||||
|
||||
// Options ----------------------------------
|
||||
#define IDD_OPTION 150
|
||||
#define IDC_OPTION_TABS 151
|
||||
#define IDC_HELP_BTN 152
|
||||
|
||||
// General tab ---------------------------------
|
||||
#define IDD_GENERAL_PANE 160
|
||||
#define IDC_STATLIB 161
|
||||
#define IDC_DLL 162
|
||||
#define IDC_CONSOLE 163
|
||||
#define IDC_GUIEXE 164
|
||||
#define IDC_DBGSYM 165
|
||||
#define IDC_LANGC 166
|
||||
#define IDC_LANGCPP 167
|
||||
#define IDC_MKF_NAME 168
|
||||
#define IDC_MKF_DIR 169
|
||||
#define IDC_USER_MKF 170
|
||||
#define IDC_TGT_NAME 171
|
||||
#define IDC_TGT_DIR 172
|
||||
|
||||
// Compiler tab -----------------------------
|
||||
#define IDD_COMPILER 180
|
||||
#define IDC_CPPFLAGS 181
|
||||
#define IDC_WARNING 182
|
||||
#define IDC_OPTIMIZ 183
|
||||
#define IDC_CFLAGS 184
|
||||
#define IDC_INCDIRS 185
|
||||
|
||||
// Linker tab --------------------------------
|
||||
#define IDD_LINKER 190
|
||||
#define IDC_LDSTRIP 191
|
||||
#define IDC_LDOPTS 192
|
||||
#define IDC_LDLIBS 193
|
||||
#define IDC_LIBDIRS 194
|
||||
|
||||
#define IDD_ZIP 200
|
||||
#define IDC_INFOZIP 201
|
||||
#define IDC_TAR_GZIP 202
|
||||
#define IDC_TAR_BZ2 203
|
||||
#define IDC_ZIP_TEST 204
|
||||
#define IDC_ZIP_DIR 205
|
||||
#define IDC_ZIPFLAGS 206
|
||||
// About ------------------------------------
|
||||
#define IDD_ABOUT 210
|
||||
|
||||
#define IDD_COMMAND 220
|
||||
#define IDC_CMDLINE 221
|
||||
// Menu -------------------------------------
|
||||
#define ID_MENU 1000
|
||||
#define IDM_NEW 1001
|
||||
#define IDM_OPEN 1002
|
||||
//#define IDM_CLOSE 1003
|
||||
#define IDM_NEW_PROJECT 1004
|
||||
#define IDM_OPEN_PROJECT 1005
|
||||
#define IDM_SAVE_PROJECT 1006
|
||||
#define IDM_CLOSE_PROJECT 1007
|
||||
#define IDM_SAVE 1008
|
||||
#define IDM_SAVEAS 1009
|
||||
#define IDM_SAVEALL 1010
|
||||
#define IDM_PREFERENCES 1011
|
||||
#define IDM_PAGESETUP 1012
|
||||
#define IDM_PRINT 1013
|
||||
#define IDM_QUIT 1014
|
||||
|
||||
#define IDM_UNDO 1020
|
||||
#define IDM_REDO 1021
|
||||
#define IDM_CUT 1022
|
||||
#define IDM_COPY 1023
|
||||
#define IDM_PASTE 1024
|
||||
#define IDM_SELECTALL 1025
|
||||
|
||||
#define IDM_FIND 1030
|
||||
#define IDM_REPLACE 1031
|
||||
#define IDM_GREP 1032
|
||||
|
||||
#define IDM_CASCADE 1040
|
||||
#define IDM_TILEHORZ 1041
|
||||
#define IDM_TILEVERT 1042
|
||||
#define IDM_ARRANGE 1043
|
||||
|
||||
#define IDM_NEW_MODULE 1050
|
||||
#define IDM_ADD 1051
|
||||
#define IDM_REMOVE_FILE 1052
|
||||
#define IDM_REMOVE_MODULE 1053
|
||||
#define IDM_OPTION 1054
|
||||
#define IDM_ZIP_SRCS 1055
|
||||
#define IDM_EXPLORE 1056
|
||||
|
||||
#define IDM_BUILD 1060
|
||||
#define IDM_REBUILDALL 1061
|
||||
#define IDM_RUN_TARGET 1062
|
||||
#define IDM_MKCLEAN 1063
|
||||
#define IDM_MKF_BUILD 1064
|
||||
#define IDM_RUN_CMD 1065
|
||||
|
||||
#define IDM_TEST 1070
|
||||
|
||||
#define IDM_HELP 1080
|
||||
#define IDM_ABOUT 1081
|
||||
|
||||
#define ID_POPMENU 1100
|
||||
|
||||
#define ID_FIRSTCHILD 2000
|
||||
|
BIN
rosapps/devutils/vmingw/toolbar.bmp
Normal file
BIN
rosapps/devutils/vmingw/toolbar.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.8 KiB |
BIN
rosapps/devutils/vmingw/treeview.bmp
Normal file
BIN
rosapps/devutils/vmingw/treeview.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.8 KiB |
91
rosapps/devutils/vmingw/vmingw.prj
Normal file
91
rosapps/devutils/vmingw/vmingw.prj
Normal file
|
@ -0,0 +1,91 @@
|
|||
[Project]
|
||||
Signature = 40
|
||||
NumFiles = 15
|
||||
Compiler = mingw
|
||||
BuildMakefile = 0
|
||||
|
||||
[Archives]
|
||||
Directory = .\zip
|
||||
Flags = *.prj .\bin\*.dll .\src\*.* .\include\*.h -x *.o
|
||||
|
||||
[Makefile]
|
||||
MAKE = make
|
||||
CC = g++
|
||||
WRES = windres
|
||||
TEST = gcc -v
|
||||
Makefile = makefile
|
||||
MakefileDir = .\src
|
||||
Target = visual-mingw.exe
|
||||
TargetDir = ..\bin
|
||||
Build = 3
|
||||
Debug = 0
|
||||
Lang = 1
|
||||
CppFlags = -D_WIN32_IE=0x0400
|
||||
CcWarning = -W -Wall -pedantic
|
||||
CcOptimize = -O2
|
||||
CcFlags = -fvtable-thunks -fno-rtti
|
||||
IncDirs = -I ../include
|
||||
LdStrip = -s
|
||||
LdOptions =
|
||||
LdLibraries = -lcomctl32 -lole32
|
||||
LdLibDirs =
|
||||
|
||||
[File1]
|
||||
Name = .\src\ChangeLog
|
||||
Show = 0
|
||||
|
||||
[File2]
|
||||
Name = .\src\CList.cpp
|
||||
Show = 0
|
||||
|
||||
[File3]
|
||||
Name = .\src\CList.h
|
||||
Show = 0
|
||||
|
||||
[File4]
|
||||
Name = .\src\editor.cpp
|
||||
Show = 0
|
||||
|
||||
[File5]
|
||||
Name = .\src\editor.h
|
||||
Show = 0
|
||||
|
||||
[File6]
|
||||
Name = .\src\main.cpp
|
||||
Show = 0
|
||||
|
||||
[File7]
|
||||
Name = .\src\main.h
|
||||
Show = 0
|
||||
|
||||
[File8]
|
||||
Name = .\src\process.cpp
|
||||
Show = 0
|
||||
|
||||
[File9]
|
||||
Name = .\src\process.h
|
||||
Show = 0
|
||||
|
||||
[File10]
|
||||
Name = .\src\project.cpp
|
||||
Show = 0
|
||||
|
||||
[File11]
|
||||
Name = .\src\project.h
|
||||
Show = 0
|
||||
|
||||
[File12]
|
||||
Name = .\src\rsrc.h
|
||||
Show = 0
|
||||
|
||||
[File13]
|
||||
Name = .\src\rsrc.rc
|
||||
Show = 0
|
||||
|
||||
[File14]
|
||||
Name = .\src\winui.cpp
|
||||
Show = 0
|
||||
|
||||
[File15]
|
||||
Name = .\src\winui.h
|
||||
Show = 0
|
399
rosapps/devutils/vmingw/vmingw.rc
Normal file
399
rosapps/devutils/vmingw/vmingw.rc
Normal file
|
@ -0,0 +1,399 @@
|
|||
/********************************************************************
|
||||
* Module: rsrc.rc. This is part of Visual-MinGW.
|
||||
*
|
||||
* Purpose: Resource file.
|
||||
*
|
||||
* Authors: Manu B.
|
||||
*
|
||||
* License: Visual-MinGW is covered by GNU General Public License,
|
||||
* Copyright (C) 2001 Manu B.
|
||||
* See license.htm for more details.
|
||||
*
|
||||
* Revisions: 11/06/01.
|
||||
*
|
||||
********************************************************************/
|
||||
// For Borland Resource Workshop. (It doesn't like windows.h)
|
||||
#ifndef WORKSHOP_INVOKED
|
||||
#include "windows.h"
|
||||
#endif
|
||||
#include "rsrc.h"
|
||||
|
||||
ID_MENU MENU
|
||||
BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "&New" , IDM_NEW
|
||||
MENUITEM "&Open" , IDM_OPEN
|
||||
MENUITEM "&Close" , IDM_OPEN, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&New Project" , IDM_NEW_PROJECT
|
||||
MENUITEM "&Open Project" , IDM_OPEN_PROJECT
|
||||
MENUITEM "&Save Project" , IDM_SAVE_PROJECT
|
||||
MENUITEM "&Close Project" , IDM_CLOSE_PROJECT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Save\tCtrl+S" , IDM_SAVE, GRAYED
|
||||
MENUITEM "Save as" , IDM_SAVEAS, GRAYED
|
||||
MENUITEM "&Save all" , IDM_SAVEALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Preferences" , IDM_PREFERENCES
|
||||
MENUITEM "Page setup" , IDM_PAGESETUP, GRAYED
|
||||
MENUITEM "&Print" , IDM_PRINT, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Quit" , IDM_QUIT
|
||||
END
|
||||
|
||||
POPUP "&Edit", GRAYED
|
||||
BEGIN
|
||||
MENUITEM "&Undo" , IDM_UNDO
|
||||
MENUITEM "&Redo" , IDM_REDO
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Cut" , IDM_CUT
|
||||
MENUITEM "&Copy" , IDM_COPY
|
||||
MENUITEM "&Paste" , IDM_PASTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Select all" , IDM_SELECTALL
|
||||
END
|
||||
|
||||
POPUP "&Find"
|
||||
BEGIN
|
||||
MENUITEM "&Search..." , IDM_FIND, GRAYED
|
||||
MENUITEM "&Replace" , IDM_REPLACE, GRAYED
|
||||
MENUITEM "Find in files" , IDM_GREP
|
||||
END
|
||||
|
||||
POPUP "&Window", GRAYED
|
||||
BEGIN
|
||||
MENUITEM "&Cascade" , IDM_CASCADE
|
||||
MENUITEM "Tile &Horizontal" , IDM_TILEHORZ
|
||||
MENUITEM "Tile &Vertical" , IDM_TILEVERT
|
||||
MENUITEM "Arrange &Icons" , IDM_ARRANGE
|
||||
END
|
||||
|
||||
POPUP "&Project"
|
||||
BEGIN
|
||||
MENUITEM "&New Module" , IDM_NEW_MODULE
|
||||
MENUITEM "&Add files" , IDM_ADD
|
||||
MENUITEM "&Remove File" , IDM_REMOVE_FILE
|
||||
MENUITEM "&Remove Module" , IDM_REMOVE_MODULE
|
||||
MENUITEM "&Options" , IDM_OPTION
|
||||
MENUITEM "&Create archive" , IDM_ZIP_SRCS
|
||||
MENUITEM "&Explore" , IDM_EXPLORE
|
||||
END
|
||||
|
||||
POPUP "&Build"
|
||||
BEGIN
|
||||
MENUITEM "&Build" , IDM_BUILD
|
||||
MENUITEM "&Rebuild All" , IDM_REBUILDALL
|
||||
MENUITEM "&Run" , IDM_RUN_TARGET
|
||||
MENUITEM "&Make Clean" , IDM_MKCLEAN
|
||||
MENUITEM "&Build Makefile" , IDM_MKF_BUILD
|
||||
#ifdef DEBUG
|
||||
MENUITEM "&Run command" , IDM_RUN_CMD
|
||||
#endif
|
||||
END
|
||||
|
||||
#ifdef DEBUG
|
||||
POPUP "&Testing"
|
||||
BEGIN
|
||||
MENUITEM "a_new_procedure" , IDM_TEST
|
||||
END
|
||||
#endif
|
||||
|
||||
POPUP "&?"
|
||||
BEGIN
|
||||
MENUITEM "&Help" , IDM_HELP, GRAYED
|
||||
MENUITEM "&About" , IDM_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
PopupMenu MENU
|
||||
BEGIN
|
||||
POPUP "&Editer"
|
||||
BEGIN
|
||||
MENUITEM "&Remove" , IDM_REMOVE_MODULE
|
||||
END
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDM_NEW "New"
|
||||
IDM_OPEN "Open"
|
||||
IDM_SAVE "Save"
|
||||
|
||||
IDM_CUT "Cut"
|
||||
IDM_COPY "Copy"
|
||||
IDM_PASTE "Paste"
|
||||
|
||||
IDM_UNDO "Undo"
|
||||
IDM_REDO "Redo"
|
||||
IDM_FIND "Search"
|
||||
|
||||
IDM_PRINT "Print"
|
||||
END
|
||||
|
||||
IDB_TOOLBAR BITMAP DISCARDABLE "toolbar.bmp"
|
||||
IDB_TREEVIEW BITMAP DISCARDABLE "treeview.bmp"
|
||||
|
||||
IDD_PREFERENCES DIALOG 0, 0, 283, 197
|
||||
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Program Preferences"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
PUSHBUTTON "Ok", IDOK, 115, 179, 50, 14
|
||||
PUSHBUTTON "Cancel", IDCANCEL, 172, 179, 50, 14
|
||||
CONTROL "", IDC_PREF_TABS, "SysTabControl32", 0x0 | WS_CLIPSIBLINGS, 4, 4, 275, 169
|
||||
PUSHBUTTON "Apply", IDAPPLY, 229, 179, 50, 14, WS_DISABLED
|
||||
END
|
||||
|
||||
// "NOT WS_POPUP" is a workaround for windres prior version 2.11.92.
|
||||
// LCC's weditres doesn't recognize this flag.
|
||||
IDD_ENVIRON DIALOG 0, 0, 259, 148
|
||||
#ifdef __LCC__
|
||||
STYLE DS_CONTROL | WS_CHILD
|
||||
#else
|
||||
STYLE DS_CONTROL | WS_CHILD | NOT WS_POPUP
|
||||
#endif
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
GROUPBOX "Path variable", IDC_STATIC, 3, 3, 252, 140
|
||||
EDITTEXT IDC_CCBIN, 20, 26, 165, 12, ES_AUTOHSCROLL
|
||||
AUTOCHECKBOX "Compiler bin directory", IDC_SET_CCBIN, 8, 16, 86, 10
|
||||
PUSHBUTTON "Browse", IDC_BROWSE_CC, 197, 25, 45, 14
|
||||
EDITTEXT IDC_CMDBIN, 20, 55, 165, 12, ES_AUTOHSCROLL
|
||||
AUTOCHECKBOX "Default bin directory", IDC_SET_CMDBIN, 8, 45, 86, 10
|
||||
PUSHBUTTON "Browse", IDC_BROWSE_CMD, 197, 54, 45, 14
|
||||
AUTOCHECKBOX "Use default environment variables", IDC_AUTOEXEC, 8, 75, 125, 10
|
||||
EDITTEXT IDC_ENV_VIEW, 8, 88, 242, 49, ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY, WS_EX_TRANSPARENT
|
||||
END
|
||||
|
||||
IDD_FIND DIALOG 0, 0, 236, 92
|
||||
STYLE DS_MODALFRAME | WS_VISIBLE | DS_CENTER | DS_3DLOOK | WS_POPUP | WS_CAPTION
|
||||
CAPTION "Find"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
LTEXT "Fi&nd what:",-1,4,8,42,8
|
||||
COMBOBOX IDC_FINDWHAT,47,7,128,50, WS_TABSTOP | CBS_DROPDOWN | CBS_AUTOHSCROLL
|
||||
AUTOCHECKBOX "Match &whole word only", IDC_WHOLEWORD,4,26,100,10, WS_GROUP | WS_TABSTOP
|
||||
AUTOCHECKBOX "Match &case", IDC_MATCHCASE,4,38,100,10, WS_GROUP | WS_TABSTOP
|
||||
AUTOCHECKBOX "Regular &expression", IDC_REGEXP,4,50,100,10, WS_GROUP | WS_TABSTOP
|
||||
AUTOCHECKBOX "Wrap aroun&d", IDC_WRAP,4,62,100,10, WS_GROUP | WS_TABSTOP
|
||||
AUTOCHECKBOX "Transform &backslash expressions", IDC_UNSLASH,4,74,150,10, WS_GROUP | WS_TABSTOP
|
||||
GROUPBOX "Direction",1072,107,26,68,28,WS_GROUP
|
||||
AUTORADIOBUTTON "&Up",IDC_DIRECTIONUP,111,38,25,12, WS_GROUP
|
||||
AUTORADIOBUTTON "&Down",IDC_DIRECTIONDOWN,138,38,35,12
|
||||
DEFPUSHBUTTON "&Find Next",IDOK,182,5,50,14,WS_GROUP
|
||||
PUSHBUTTON "Cancel",IDCANCEL,182,23,50,14
|
||||
END
|
||||
|
||||
IDD_REPLACE DIALOG 0, 0, 260, 108
|
||||
STYLE DS_MODALFRAME | WS_VISIBLE | DS_CENTER | DS_3DLOOK | WS_POPUP | WS_CAPTION
|
||||
CAPTION "Replace"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
LTEXT "Fi&nd what:",-1,4,9,48,8
|
||||
COMBOBOX IDC_FINDWHAT,54,7,114,50,WS_TABSTOP | CBS_DROPDOWN | CBS_AUTOHSCROLL
|
||||
LTEXT "Re&place with:",-1,4,26,48,8
|
||||
COMBOBOX IDC_REPLACEWITH,54,24,114,50,WS_TABSTOP | CBS_DROPDOWN | CBS_AUTOHSCROLL
|
||||
AUTOCHECKBOX "Match &whole word only", IDC_WHOLEWORD,4,44,100,10, WS_GROUP | WS_TABSTOP
|
||||
AUTOCHECKBOX "Match &case", IDC_MATCHCASE,4,56,100,10, WS_GROUP | WS_TABSTOP
|
||||
AUTOCHECKBOX "Regular &expression", IDC_REGEXP,4,68,100,10, WS_GROUP | WS_TABSTOP
|
||||
AUTOCHECKBOX "Wrap aroun&d", IDC_WRAP,4,80,100,10, WS_GROUP | WS_TABSTOP
|
||||
AUTOCHECKBOX "Transform &backslash expressions", IDC_UNSLASH,4,92,150,10, WS_GROUP | WS_TABSTOP
|
||||
DEFPUSHBUTTON "&Find Next",IDOK,174,4,80,14,WS_GROUP
|
||||
PUSHBUTTON "&Replace",IDC_REPLACE,174,21,80,14
|
||||
PUSHBUTTON "Replace &All",IDC_REPLACEALL,174,38,80,14
|
||||
PUSHBUTTON "Replace in &Selection",IDC_REPLACEINSEL,174,55,80,14
|
||||
PUSHBUTTON "Close",IDCANCEL,174,72,80,14
|
||||
END
|
||||
|
||||
IDD_GREP DIALOG 26, 41, 226, 66
|
||||
STYLE DS_MODALFRAME | DS_CENTER | DS_3DLOOK | WS_POPUP | WS_CAPTION
|
||||
CAPTION "Find in Files"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
LTEXT "Fi&nd what:", IDC_STATIC, 5, 8, 35, 8, NOT WS_GROUP
|
||||
COMBOBOX IDC_FINDWHAT, 40, 7, 120, 50, CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
|
||||
LTEXT "F&iles:", IDC_STATIC, 5, 28, 30, 8, NOT WS_GROUP
|
||||
COMBOBOX IDC_GFILTER, 40, 27, 120, 50, CBS_DROPDOWN | WS_BORDER | WS_TABSTOP
|
||||
LTEXT "&Directory:", IDC_STATIC, 5, 48, 30, 8, NOT WS_GROUP
|
||||
DEFPUSHBUTTON "&Find", IDOK, 168, 6, 50, 14
|
||||
PUSHBUTTON "Cancel", IDCANCEL, 168, 26, 50, 14
|
||||
COMBOBOX 138, 40, 47, 120, 50, CBS_DROPDOWN | WS_BORDER | WS_TABSTOP
|
||||
PUSHBUTTON "Browse", IDC_GBROWSE, 168, 46, 50, 14
|
||||
END
|
||||
|
||||
IDD_OPTION DIALOGEX 0, 0, 252, 202
|
||||
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
EXSTYLE WS_EX_CONTROLPARENT
|
||||
CAPTION "Project options"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
CONTROL "", IDC_OPTION_TABS, "SysTabControl32", 0x8000, 4, 5, 244, 173
|
||||
PUSHBUTTON "Ok", IDOK, 79, 184, 50, 14
|
||||
PUSHBUTTON "Cancel", IDCANCEL, 141, 184, 50, 14
|
||||
PUSHBUTTON "Help", IDC_HELP_BTN, 198, 184, 50, 14
|
||||
END
|
||||
|
||||
IDD_GENERAL_PANE DIALOG 0, 0, 230, 139
|
||||
#ifdef __LCC__
|
||||
STYLE DS_CONTROL | WS_CHILD
|
||||
#else
|
||||
STYLE DS_CONTROL | WS_CHILD | NOT WS_POPUP
|
||||
#endif
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
GROUPBOX "Build what ?", IDC_STATIC, 5, 3, 107, 79
|
||||
AUTORADIOBUTTON "Static library", IDC_STATLIB, 12, 15, 59, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "Dll", IDC_DLL, 12, 28, 59, 10
|
||||
AUTORADIOBUTTON "Console executable", IDC_CONSOLE, 12, 41, 78, 10
|
||||
AUTORADIOBUTTON "GUI executable", IDC_GUIEXE, 12, 54, 65, 10
|
||||
AUTOCHECKBOX "Generate debug symbols", IDC_DBGSYM, 12, 67, 97, 10
|
||||
GROUPBOX "Language", IDC_STATIC, 5, 86, 107, 46
|
||||
AUTORADIOBUTTON "C", IDC_LANGC, 12, 101, 25, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "C++", IDC_LANGCPP, 12, 114, 29, 10
|
||||
GROUPBOX "Makefile", IDC_STATIC, 120, 3, 104, 67
|
||||
LTEXT "Name", IDC_STATIC, 124, 18, 23, 9
|
||||
EDITTEXT IDC_MKF_NAME, 156, 16, 61, 12, ES_AUTOHSCROLL
|
||||
LTEXT "Directory", IDC_STATIC, 124, 35, 30, 9
|
||||
EDITTEXT IDC_MKF_DIR, 156, 33, 61, 12, ES_AUTOHSCROLL
|
||||
AUTOCHECKBOX "User makefile", IDC_USER_MKF, 125, 52, 62, 10, WS_DISABLED
|
||||
GROUPBOX "Output file", IDC_STATIC, 120, 76, 104, 56
|
||||
LTEXT "Name", IDC_STATIC, 124, 95, 23, 9
|
||||
EDITTEXT IDC_TGT_NAME, 156, 93, 61, 12, ES_AUTOHSCROLL
|
||||
LTEXT "Directory", 133, 123, 112, 30, 9
|
||||
EDITTEXT IDC_TGT_DIR, 156, 110, 61, 12, ES_AUTOHSCROLL
|
||||
END
|
||||
|
||||
IDD_COMPILER DIALOG 0, 0, 230, 139
|
||||
#ifdef __LCC__
|
||||
STYLE DS_CONTROL | WS_CHILD
|
||||
#else
|
||||
STYLE DS_CONTROL | WS_CHILD | NOT WS_POPUP
|
||||
#endif
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
GROUPBOX "Compiler options", IDC_STATIC, 17, 11, 194, 111
|
||||
LTEXT "Preprocessor", IDC_STATIC, 22, 25, 46, 9
|
||||
EDITTEXT IDC_CPPFLAGS, 67, 24, 138, 12, ES_AUTOHSCROLL
|
||||
LTEXT "Warning", IDC_STATIC, 22, 42, 31, 9
|
||||
EDITTEXT IDC_WARNING, 67, 40, 138, 12, ES_AUTOHSCROLL
|
||||
LTEXT "Optimization", IDC_STATIC, 22, 58, 42, 9
|
||||
EDITTEXT IDC_OPTIMIZ, 67, 56, 138, 12, ES_AUTOHSCROLL
|
||||
LTEXT "C/C++", IDC_STATIC, 23, 73, 24, 9
|
||||
EDITTEXT IDC_CFLAGS, 67, 72, 138, 12, ES_AUTOHSCROLL
|
||||
LTEXT "Include directories", IDC_STATIC, 22, 92, 61, 9
|
||||
EDITTEXT IDC_INCDIRS, 22, 101, 183, 12, ES_AUTOHSCROLL
|
||||
END
|
||||
|
||||
IDD_LINKER DIALOG 0, 0, 230, 139
|
||||
#ifdef __LCC__
|
||||
STYLE DS_CONTROL | WS_CHILD
|
||||
#else
|
||||
STYLE DS_CONTROL | WS_CHILD | NOT WS_POPUP
|
||||
#endif
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
GROUPBOX "Linker", IDC_STATIC, 17, 16, 194, 103
|
||||
LTEXT "Strip", IDC_STATIC, 23, 37, 18, 9
|
||||
EDITTEXT IDC_LDSTRIP, 53, 36, 53, 12, ES_AUTOHSCROLL
|
||||
LTEXT "Options", IDC_STATIC, 23, 53, 29, 9
|
||||
EDITTEXT IDC_LDOPTS, 53, 52, 151, 12, ES_AUTOHSCROLL
|
||||
LTEXT "Libraries", IDC_STATIC, 23, 69, 34, 9
|
||||
EDITTEXT IDC_LDLIBS, 53, 68, 151, 12, ES_AUTOHSCROLL
|
||||
LTEXT "Library directories", IDC_STATIC, 23, 88, 61, 9
|
||||
EDITTEXT IDC_LIBDIRS, 22, 98, 182, 12, ES_AUTOHSCROLL
|
||||
END
|
||||
|
||||
IDD_ZIP DIALOG 0, 0, 230, 139
|
||||
#ifdef __LCC__
|
||||
STYLE DS_CONTROL | WS_CHILD
|
||||
#else
|
||||
STYLE DS_CONTROL | WS_CHILD | NOT WS_POPUP
|
||||
#endif
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
GROUPBOX "Archiver", 304, 15, 7, 87, 58
|
||||
AUTORADIOBUTTON "Info-ZIP", IDC_INFOZIP, 20, 17, 39, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Tar/Gzip", IDC_TAR_GZIP, 20, 32, 46, 10, WS_DISABLED
|
||||
AUTORADIOBUTTON "Tar/Bz2", IDC_TAR_BZ2, 20, 47, 44, 10, WS_DISABLED
|
||||
GROUPBOX "Output File", IDC_STATIC, 15, 71, 195, 56
|
||||
LTEXT "Directory", IDC_STATIC, 21, 86, 30, 9
|
||||
EDITTEXT IDC_ZIP_DIR, 56, 84, 61, 12, ES_AUTOHSCROLL
|
||||
LTEXT "Options", IDC_STATIC, 21, 109, 29, 9
|
||||
EDITTEXT IDC_ZIPFLAGS, 51, 108, 151, 12, ES_AUTOHSCROLL
|
||||
GROUPBOX "Date format", 207, 112, 7, 97, 58
|
||||
AUTORADIOBUTTON "mmddyyyy", 208, 117, 17, 53, 10
|
||||
AUTORADIOBUTTON "ddmmyyyy", 209, 117, 32, 49, 10, WS_DISABLED
|
||||
AUTORADIOBUTTON "yyyymmdd", 211, 117, 47, 50, 10, WS_DISABLED
|
||||
END
|
||||
|
||||
IDD_NEW_MODULE DIALOG 226, 122, 142, 39
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "New module"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
EDITTEXT 301, 6, 4, 84, 12, ES_AUTOHSCROLL
|
||||
AUTOCHECKBOX "Create header", IDC_HEADER, 21, 22, 58, 10
|
||||
PUSHBUTTON "Ok", IDOK, 97, 3, 40, 14
|
||||
PUSHBUTTON "Cancel", IDCANCEL, 97, 22, 40, 14
|
||||
END
|
||||
|
||||
IDD_ABOUT DIALOG 14, 26, 200, 78
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "About this software..."
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "&OK", IDOK, 140, 18, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
|
||||
ICON 500, IDC_STATIC, 16, 24, 18, 20, WS_GROUP
|
||||
GROUPBOX "Informations", IDC_STATIC, 4, 3, 192, 70
|
||||
LTEXT "Version 0.42a", IDC_STATIC, 57, 15, 67, 52
|
||||
END
|
||||
|
||||
IDD_COMMAND DIALOG 0, 0, 216, 45
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Dialog Title"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
LTEXT "Command line", IDC_STATIC, 5, 8, 48, 9
|
||||
EDITTEXT IDC_CMDLINE, 59, 7, 148, 12, ES_AUTOHSCROLL
|
||||
PUSHBUTTON "Enter", IDOK, 157, 25, 50, 14
|
||||
END
|
||||
|
||||
ACCELS ACCELERATORS
|
||||
BEGIN
|
||||
"S", IDM_SAVE, VIRTKEY, CONTROL
|
||||
END
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 0,43,0,0
|
||||
PRODUCTVERSION 0,43,0,0
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef DEBUG
|
||||
FILEFLAGS VS_FF_PRERELEASE
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS VOS_NT_WINDOWS32
|
||||
FILETYPE VFT_APP
|
||||
FILESUBTYPE VFT2_UNKNOWN
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "04090000"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Visual-MinGW project\0"
|
||||
VALUE "FileDescription", "Visual-MinGW\0"
|
||||
VALUE "FileVersion", FULL_APP_VERSION
|
||||
VALUE "InternalName", "visual-mingw\0"
|
||||
VALUE "LegalCopyright", "Copyright (C) 2001 Manu B\0"
|
||||
VALUE "OriginalFilename", "visual-mingw.exe\0"
|
||||
VALUE "ProductName", "Visual-MinGW\0"
|
||||
VALUE "ProductVersion", FULL_APP_VERSION
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 0
|
||||
END
|
||||
END
|
||||
|
2117
rosapps/devutils/vmingw/winui.cpp
Normal file
2117
rosapps/devutils/vmingw/winui.cpp
Normal file
File diff suppressed because it is too large
Load diff
529
rosapps/devutils/vmingw/winui.h
Normal file
529
rosapps/devutils/vmingw/winui.h
Normal file
|
@ -0,0 +1,529 @@
|
|||
/********************************************************************
|
||||
* Module: winui.h. This is part of WinUI.
|
||||
*
|
||||
* License: WinUI is covered by GNU General Public License,
|
||||
* Copyright (C) 2001 Manu B.
|
||||
* See license.htm for more details.
|
||||
*
|
||||
********************************************************************/
|
||||
#ifndef WINUI_H
|
||||
#define WINUI_H
|
||||
|
||||
/* These are patched headers */
|
||||
#include "commdlg.h"
|
||||
#include "commctrl.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
// OLE.
|
||||
#include <shlobj.h>
|
||||
|
||||
#include "CList.h"
|
||||
|
||||
#define SPLSTYLE_HORZ 0
|
||||
#define SPLSTYLE_VERT 1
|
||||
#define SPLMODE_1 0
|
||||
#define SPLMODE_2 1
|
||||
|
||||
char *StpCpy(char *dest, const char *src);
|
||||
size_t strcpylen(char *dest, const char *src);
|
||||
|
||||
void SplitFileName(char * dirName, char * fileName);
|
||||
bool ChangeFileExt(char * fileName, char * ext);
|
||||
|
||||
class CMessageBox
|
||||
{
|
||||
public:
|
||||
CMessageBox();
|
||||
~CMessageBox();
|
||||
|
||||
void SetParent(HWND hwnd);
|
||||
void SetCaption(char * string);
|
||||
void DisplayString(char * string, char * substring = NULL, UINT uType = MB_OK);
|
||||
void DisplayWarning(char * string, char * substring = NULL);
|
||||
void DisplayFatal(char * string, char * substring = NULL);
|
||||
void DisplayLong(long number);
|
||||
void DisplayRect(RECT * rect);
|
||||
int Ask(char * question, bool canCancel);
|
||||
int AskToSave(bool canCancel);
|
||||
|
||||
protected:
|
||||
HWND hParent;
|
||||
char msgBuf[256];
|
||||
char caption[64];
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CPath
|
||||
{
|
||||
public:
|
||||
CPath();
|
||||
~CPath();
|
||||
|
||||
bool ChangeDirectory(char * dir);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
char pathBuf[MAX_PATH];
|
||||
};
|
||||
|
||||
class CWindow
|
||||
{
|
||||
public:
|
||||
CWindow();
|
||||
virtual ~CWindow();
|
||||
|
||||
virtual HWND CreateEx(CWindow * pWindow, DWORD dwExStyle,
|
||||
LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y,
|
||||
int nWidth, int nHeight, HMENU hMenu, LPVOID lpParam);
|
||||
|
||||
HWND GetId(void);
|
||||
LONG SetLong(int nIndex, LONG dwNewLong);
|
||||
LONG GetLong(int nIndex);
|
||||
LRESULT SendMessage(UINT msg, WPARAM wParam = 0, LPARAM lParam = 0);
|
||||
|
||||
virtual bool SetPosition(HWND hInsertAfter, int x, int y, int width, int height, UINT uFlags);
|
||||
virtual bool Show(int nCmdShow = SW_SHOWNORMAL);
|
||||
virtual bool Hide(void);
|
||||
HWND SetFocus(void);
|
||||
CWindow * _pParent;
|
||||
HWND _hWnd;
|
||||
HINSTANCE _hInst;
|
||||
LPVOID _lParam;
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CWinBase : public CWindow
|
||||
{
|
||||
public:
|
||||
CWinBase();
|
||||
~CWinBase();
|
||||
|
||||
HINSTANCE hPrevInst;
|
||||
LPSTR lpCmdLine;
|
||||
int nCmdShow;
|
||||
|
||||
char appName[64];
|
||||
char msgBuf[256];
|
||||
bool isWinNT;
|
||||
|
||||
bool Init(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,
|
||||
int nCmdShow);
|
||||
bool SetName(char * name, char * version = NULL);
|
||||
void ParseCmdLine(char * outBuff);
|
||||
bool IsWinNT(void);
|
||||
|
||||
bool ChangeDirectory(char * dir);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CSDIBase : public CWinBase
|
||||
{
|
||||
public:
|
||||
CSDIBase();
|
||||
virtual ~CSDIBase();
|
||||
|
||||
virtual int Run(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
|
||||
virtual bool CustomInit(void);
|
||||
virtual bool Release(void);
|
||||
virtual bool CreateUI(void);
|
||||
bool MainRegisterEx(const char * className);
|
||||
virtual LRESULT CALLBACK CMainWndProc(UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
protected:
|
||||
WNDCLASSEX wc;
|
||||
HACCEL hAccel;
|
||||
char mainClass[16];
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CMDIChild;
|
||||
|
||||
class CMDIClient : public CWindow
|
||||
{
|
||||
public:
|
||||
CMDIClient();
|
||||
~CMDIClient();
|
||||
|
||||
void Init(int menuIndex, UINT idFirstChild);
|
||||
HWND CreateEx(CWindow * pWindow, DWORD dwExStyle, DWORD dwStyle = WS_CHILD, UINT resId = 0);
|
||||
LPARAM GetParam(LPARAM lParam);
|
||||
|
||||
bool initialized;
|
||||
char childClass[16];
|
||||
CList childList;
|
||||
|
||||
protected:
|
||||
CLIENTCREATESTRUCT ccs;
|
||||
int nPos;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class UseOle
|
||||
{
|
||||
public:
|
||||
UseOle(){oleError = OleInitialize(NULL);}
|
||||
~UseOle(){OleUninitialize();}
|
||||
HRESULT GetError(void){return oleError;}
|
||||
protected:
|
||||
HRESULT oleError;
|
||||
private:
|
||||
};
|
||||
|
||||
class CMDIBase : public CSDIBase
|
||||
{
|
||||
public:
|
||||
CMDIBase();
|
||||
virtual ~CMDIBase();
|
||||
|
||||
virtual int Run(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
|
||||
virtual bool CustomInit(void);
|
||||
virtual bool Release(void);
|
||||
virtual bool CreateUI(void);
|
||||
bool ChildRegisterEx(const char * className);
|
||||
virtual LRESULT CALLBACK CMainWndProc(UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
virtual LRESULT CALLBACK CChildWndProc(CWindow * pWnd, UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
CMDIClient MdiClient;
|
||||
|
||||
protected:
|
||||
UseOle useOle;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CMDIChild : public CNode, public CWindow
|
||||
{
|
||||
public:
|
||||
CMDIChild();
|
||||
virtual ~CMDIChild();
|
||||
|
||||
HWND CreateEx(CMDIClient * pMdiClient, DWORD dwExStyle, DWORD dwStyle, char * caption, UINT resId = 0, LPVOID lParam = NULL);
|
||||
|
||||
CMDIBase * _pFrame;
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CFileDlgBase : public CWindow
|
||||
{
|
||||
public:
|
||||
CFileDlgBase();
|
||||
~CFileDlgBase();
|
||||
|
||||
void Reset(void);
|
||||
void SetData(char * filter, char * defExt, DWORD flags);
|
||||
void SetTitle(char * title);
|
||||
void SetFilterIndex(DWORD filterIndex);
|
||||
void SetFilter(char * filter);
|
||||
void SetDefExt(char * defExt);
|
||||
void SetFlags(DWORD flags);
|
||||
void SetInitialDir(char * lpstrInitialDir);
|
||||
|
||||
WORD GetFileOffset(void);
|
||||
WORD GetFileExtension(void);
|
||||
WORD GetNextFileOffset(void);
|
||||
|
||||
bool OpenFileName(CWindow * pWindow, char * pszFileName, DWORD nMaxFile);
|
||||
bool SaveFileName(CWindow * pWindow, char * pszFileName, DWORD nMaxFile);
|
||||
OPENFILENAME ofn;
|
||||
|
||||
protected:
|
||||
|
||||
WORD nNextFileOffset;
|
||||
private:
|
||||
};
|
||||
|
||||
class CDlgBase : public CWindow
|
||||
{
|
||||
public:
|
||||
CDlgBase();
|
||||
virtual ~CDlgBase();
|
||||
|
||||
HWND Create(CWindow * pWindow, WORD wResId, RECT * Pos, LPARAM lParam);
|
||||
int CreateModal(CWindow * pWindow, WORD wResId, LPARAM lParam);
|
||||
HWND CreateParam(CWindow * pWindow, WORD wResId, LPARAM lParam);
|
||||
BOOL EndDlg(int nResult);
|
||||
virtual LRESULT CALLBACK CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
HWND GetItem(int nIDDlgItem);
|
||||
BOOL SetItemText(HWND hItem, LPCTSTR lpString);
|
||||
UINT GetItemText(HWND hItem, LPTSTR lpString, int nMaxCount);
|
||||
/* BOOL SetItemInt(HWND hItem, UINT uValue, BOOL bSigned);
|
||||
UINT GetItemInt(HWND hItem, BOOL *lpTranslated, BOOL bSigned);
|
||||
*/
|
||||
protected:
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CTabbedDlg : public CDlgBase
|
||||
{
|
||||
public:
|
||||
CTabbedDlg();
|
||||
virtual ~CTabbedDlg();
|
||||
|
||||
virtual void OnNotify(int idCtrl, LPNMHDR notify);
|
||||
virtual void OnSelChanging(LPNMHDR notify);
|
||||
virtual void OnSelChange(LPNMHDR notify);
|
||||
virtual bool SetChildPosition(HWND hChild);
|
||||
|
||||
protected:
|
||||
LPARAM GetParam(void);
|
||||
HWND _hWndTab;
|
||||
RECT Pos;
|
||||
TCITEM tcitem;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CToolBar : public CWindow
|
||||
{
|
||||
public:
|
||||
CToolBar();
|
||||
~CToolBar();
|
||||
|
||||
HWND CreateEx(CWindow * pWindow, DWORD dwExStyle, DWORD dwStyle = WS_CHILD, UINT resId = 0);
|
||||
LRESULT AddBitmap(UINT resId, int nBmp, HINSTANCE hInstance = 0);
|
||||
BOOL AddButtons(TBBUTTON * tbButtons, UINT numButtons);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CBitmap
|
||||
{
|
||||
public:
|
||||
CBitmap();
|
||||
~CBitmap();
|
||||
|
||||
HBITMAP Load(CWindow * pWindow, LPCTSTR lpBitmapName);
|
||||
HBITMAP Load(CWindow * pWindow, WORD wResId);
|
||||
BOOL Destroy(void);
|
||||
|
||||
HBITMAP hBitmap;
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CImageList
|
||||
{
|
||||
public:
|
||||
CImageList();
|
||||
~CImageList();
|
||||
|
||||
HIMAGELIST Create(int cx, int cy, UINT flags, int cInitial, int cGrow);
|
||||
int AddMasked(CBitmap * pBitmap, COLORREF crMask);
|
||||
HIMAGELIST GetId(void){return hImgList;};
|
||||
|
||||
protected:
|
||||
HIMAGELIST hImgList;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CTabCtrl : public CWindow
|
||||
{
|
||||
public:
|
||||
CTabCtrl();
|
||||
~CTabCtrl();
|
||||
|
||||
HWND CreateEx(CWindow * pWindow, DWORD dwExStyle, DWORD dwStyle = WS_CHILD, UINT resId = 0, LPVOID lParam = NULL);
|
||||
BOOL SetItem_Param(int iItem, LPARAM lParam);
|
||||
LPARAM GetItem_Param(int iItem);
|
||||
int GetCurSel(void);
|
||||
int InsertItem(int iItem, UINT mask, DWORD dwState, DWORD dwStateMask,
|
||||
LPTSTR pszText, int cchTextMax, int iImage, LPARAM lParam);
|
||||
|
||||
protected:
|
||||
TCITEM tcitem;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CTreeView : public CWindow
|
||||
{
|
||||
public:
|
||||
CTreeView();
|
||||
~CTreeView();
|
||||
|
||||
TVINSERTSTRUCT tvi;
|
||||
TVITEM _TvItem;
|
||||
HWND CreateEx(CWindow * pWindow, DWORD dwExStyle, DWORD dwStyle = WS_CHILD, UINT resId = 0, LPVOID lParam = NULL);
|
||||
HTREEITEM CreateItem(HTREEITEM hParent, HTREEITEM hInsertAfter, int iImage, LPTSTR pszText, LPARAM lParam);
|
||||
LPARAM GetSelectedItemParam(void);
|
||||
|
||||
protected:
|
||||
private:
|
||||
};
|
||||
|
||||
class CScintilla : public CWindow
|
||||
{
|
||||
public:
|
||||
CScintilla();
|
||||
~CScintilla();
|
||||
|
||||
HWND CreateEx(CWindow * pWindow, DWORD dwExStyle, DWORD dwStyle = WS_CHILD, UINT resId = 0, LPVOID lParam = NULL);
|
||||
|
||||
protected:
|
||||
private:
|
||||
};
|
||||
|
||||
class CListView : public CWindow
|
||||
{
|
||||
public:
|
||||
CListView();
|
||||
~CListView();
|
||||
|
||||
HWND CreateEx(CWindow * pWindow, DWORD dwExStyle, DWORD dwStyle = WS_CHILD, UINT resId = 0);
|
||||
void Clear(void);
|
||||
|
||||
protected:
|
||||
DWORD lastRow;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CStatusBar : public CWindow
|
||||
{
|
||||
public:
|
||||
CStatusBar();
|
||||
~CStatusBar();
|
||||
|
||||
HWND CreateEx(CWindow * pWindow, DWORD dwExStyle, DWORD dwStyle = WS_CHILD, UINT resId = 0);
|
||||
void SetParts(int nParts, int * aWidths);
|
||||
|
||||
void WriteString(char * string, int part);
|
||||
void WriteLong(long number, int part);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
int numParts;
|
||||
};
|
||||
|
||||
class CSplitter : public CWindow
|
||||
{
|
||||
public:
|
||||
CSplitter();
|
||||
~CSplitter();
|
||||
|
||||
void Init(CWindow * pane1, CWindow * pane2, bool vertical,
|
||||
int barPos, int barMode);
|
||||
bool SetPosition(HWND hInsertAfter, int x, int y, int width, int height, UINT uFlags);
|
||||
bool Show(int nCmdShow = SW_SHOWNORMAL);
|
||||
bool Hide(void);
|
||||
bool HaveMouse(HWND hwnd, short xPos, short yPos);
|
||||
void Move(int mouseX, int mouseY);
|
||||
bool OnLButtonDown(HWND hwnd, short xPos, short yPos);
|
||||
void OnMouseMove(HWND hwnd, short xPos, short yPos);
|
||||
void OnLButtonUp(HWND hwnd, short xPos, short yPos);
|
||||
bool OnSetCursor(HWND hwnd, LPARAM lParam);
|
||||
|
||||
protected:
|
||||
void SetVertPosition(void);
|
||||
void SetHorzPosition(void);
|
||||
void DrawXorBar(HDC hdc, int x1, int y1, int width, int height);
|
||||
void ClientToWindow(HWND hwnd, POINT * pt, RECT * rect);
|
||||
|
||||
CWindow * Pane1;
|
||||
CWindow * Pane2;
|
||||
int p;
|
||||
int size;
|
||||
int psize;
|
||||
bool isVertical;
|
||||
int mode;
|
||||
bool isActive;
|
||||
RECT pos;
|
||||
RECT barPos;
|
||||
int deltaPos;
|
||||
POINT initialXorPos;
|
||||
|
||||
POINT initialPos;
|
||||
POINT newPos;
|
||||
private:
|
||||
bool initialized;
|
||||
};
|
||||
|
||||
#define MAX_BLOC_SIZE 16384
|
||||
class CIniFile
|
||||
{
|
||||
public:
|
||||
CIniFile();
|
||||
~CIniFile();
|
||||
|
||||
bool Load(char * fullPath);
|
||||
void Close(void);
|
||||
bool GetString(char * data, char * key, char * section = NULL);
|
||||
int GetInt(char * key, char * section = NULL);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
|
||||
char * buffer;
|
||||
char * pcurrent;
|
||||
char * psection;
|
||||
|
||||
bool FindSection(char * pcurrent, char * section);
|
||||
bool FindData(char * s, char * key, char * data);
|
||||
long CopyData(char * data, char * s);
|
||||
char *SkipUnwanted(char *s);
|
||||
};
|
||||
|
||||
class CChrono
|
||||
{
|
||||
public:
|
||||
CChrono();
|
||||
~CChrono();
|
||||
|
||||
void Start(void);
|
||||
DWORD Stop(void);
|
||||
|
||||
protected:
|
||||
DWORD _time;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CShellDlg
|
||||
{
|
||||
public:
|
||||
CShellDlg();
|
||||
~CShellDlg();
|
||||
bool BrowseForFolder(CWindow * pWindow, LPSTR pszDisplayName, LPCSTR lpszTitle,
|
||||
UINT ulFlags, BFFCALLBACK lpfn=0, LPARAM lParam=0, int iImage=0);
|
||||
|
||||
protected:
|
||||
IMalloc* pMalloc;
|
||||
BROWSEINFO bi;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CCriticalSection
|
||||
{
|
||||
public:
|
||||
CCriticalSection();
|
||||
~CCriticalSection();
|
||||
void Enter();
|
||||
void Leave();
|
||||
private:
|
||||
CRITICAL_SECTION cs;
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Reference in a new issue