Compare commits
19 Commits
Author | SHA1 | Date | |
---|---|---|---|
863fab113b | |||
83dd23b8a9 | |||
2714560c38 | |||
e48c75df72 | |||
1de1f787e7 | |||
1b3dd3ce98 | |||
0e6c34d2a0 | |||
325034bbc0 | |||
fc9b98f09e | |||
a497b028ca | |||
88b76c074d | |||
28b709bfb8 | |||
1c01dbd7cd | |||
948240f05f | |||
990828c69c | |||
72f63a8990 | |||
4d2eced7a0 | |||
6598a22981 | |||
01276b581f |
6
Makefile
6
Makefile
@@ -53,9 +53,9 @@ DEBUG:=1
|
||||
###############################################################################
|
||||
### Compilation Define ###
|
||||
###############################################################################
|
||||
ifeq ("$(DEBUG)", "0")
|
||||
ifeq ("$(DEBUG)", "0")
|
||||
DEFINE= -DEDN_DEBUG_LEVEL=1 -DNDEBUG -DVERSION_TAG_NAME="\"$(VERSION_TAG)-release\""
|
||||
else
|
||||
else
|
||||
DEFINE= -DEDN_DEBUG_LEVEL=3 -DVERSION_TAG_NAME="\"$(VERSION_TAG)-debug\""
|
||||
endif
|
||||
DEFINE+= -DVERSION_BUILD_TIME="\"$(VERSION_BUILD_TIME)\""
|
||||
@@ -294,9 +294,11 @@ install: .encadrer .versionFile $(OUTPUT_NAME_RELEASE)
|
||||
wc -l Makefile `find $(FILE_DIRECTORY)/ -name "*.cpp"` `find $(FILE_DIRECTORY)/ -name "*.h"`
|
||||
|
||||
install: .encadrer .versionFile $(OUTPUT_NAME_RELEASE)
|
||||
@echo $(CADRE_HAUT_BAS)
|
||||
@echo ' INSTALL : $(F_VIOLET)$(OUTPUT_NAME_RELEASE)=>$(PROG_NAME)$(F_NORMALE)'$(CADRE_COTERS)
|
||||
@echo $(CADRE_HAUT_BAS)
|
||||
@echo $(F_ROUGE)"
|
||||
(stripped) $(OUTPUT_NAME_RELEASE) => $(PROG_NAME) "$(F_NORMALE)
|
||||
@cp $(OUTPUT_NAME_RELEASE) $(PROG_NAME)
|
||||
@strip -s $(PROG_NAME)
|
||||
@echo $(F_VERT)"
|
||||
|
21
README
21
README
@@ -1,21 +0,0 @@
|
||||
Edn (Editeur De N'ours) is a FREE software.
|
||||
|
||||
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY.
|
||||
|
||||
Terms of license:
|
||||
|
||||
You can:
|
||||
- Redistribute the sources code and binaries.
|
||||
- Modify the Sources code.
|
||||
- Use a part of the sources (less than 50%) in an other software, just write somewhere "Edn is great" visible by the user (on your product or on your website with a link to my page).
|
||||
- Redistribute the modification only if you want.
|
||||
- Send me the bug-fix (it could be great).
|
||||
- Pay me a beer or some other things.
|
||||
- Print the source code on WC paper ...
|
||||
You can NOT:
|
||||
- Earn money with this Software (But I can).
|
||||
- Add malware in the Sources.
|
||||
- Do something bad with the sources.
|
||||
- Use it to travel in the space with a toaster.
|
||||
|
||||
I reserve the right to change this licence. If it change the version of the copy you have keep its own license
|
41
README.md
Normal file
41
README.md
Normal file
@@ -0,0 +1,41 @@
|
||||
Edn
|
||||
====
|
||||
|
||||
`Edn` (Editeur De N'ours) is a FREE software.
|
||||
|
||||
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY.
|
||||
|
||||
Instructions
|
||||
============
|
||||
|
||||
download the software :
|
||||
|
||||
git clone git://github.com/HeeroYui/edn.git
|
||||
cd edn
|
||||
|
||||
Compile software and install :
|
||||
|
||||
sudo make DEBUG=0 install
|
||||
|
||||
Run Software :
|
||||
|
||||
edn exemple.txt
|
||||
|
||||
License
|
||||
=======
|
||||
|
||||
You can:
|
||||
- Redistribute the sources code and binaries.
|
||||
- Modify the Sources code.
|
||||
- Use a part of the sources (less than 50%) in an other software, just write somewhere "Edn is great" visible by the user (on your product or on your website with a link to my page).
|
||||
- Redistribute the modification only if you want.
|
||||
- Send me the bug-fix (it could be great).
|
||||
- Pay me a beer or some other things.
|
||||
- Print the source code on WC paper ...
|
||||
You can NOT:
|
||||
- Earn money with this Software (But I can).
|
||||
- Add malware in the Sources.
|
||||
- Do something bad with the sources.
|
||||
- Use it to travel in the space with a toaster.
|
||||
|
||||
I reserve the right to change this licence. If it change the version of the copy you have keep its own license
|
@@ -47,6 +47,7 @@ Buffer::Buffer()
|
||||
Edn::String mString = "Untitle - ";
|
||||
mString += fileBasicID++;
|
||||
SetFileName(mString);
|
||||
m_haveName = false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -51,7 +51,7 @@ class BufferManager: public Singleton<BufferManager>, public MsgBroadcast
|
||||
int32_t Open(Edn::File &myFile);
|
||||
int32_t GetSelected(void) { return m_idSelected;};
|
||||
void SetSelected(int32_t id) {m_idSelected = id;};
|
||||
Buffer * Get(int32_t BufferID);
|
||||
Buffer * Get(int32_t BufferID);
|
||||
bool Exist(int32_t BufferID);
|
||||
bool Exist(Edn::File &myFile);
|
||||
int32_t GetId(Edn::File &myFile);
|
||||
|
@@ -37,6 +37,10 @@
|
||||
|
||||
const uint32_t nbLineAllocatedInBase = 300;
|
||||
|
||||
extern "C"
|
||||
{
|
||||
const char * g_pointerForTheDisplayLine[] = {"%1d", "%2d","%3d","%4d","%5d","%6d","%7d","%8d","%9d","%d"};
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -236,7 +240,33 @@ void BufferText::DrawLineNumber(DrawerManager &drawer,char *myPrint, int32_t li
|
||||
drawer.Text(myColorManager->Get(COLOR_CODE_LINE_NUMBER), 1, positionY, tmpLineNumber);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Update internal data of the pointer to display
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
/*
|
||||
void BufferText::UpdatePointerNumber(void)
|
||||
{
|
||||
// get the number of line in the buffer
|
||||
int32_t maxNumberLine = m_EdnBuf.NumberOfLines();
|
||||
//int32_t maxNumberLine = 2096;
|
||||
if (10 > maxNumberLine) { m_nbColoneForLineNumber = 1;
|
||||
} else if (100 > maxNumberLine) { m_nbColoneForLineNumber = 2;
|
||||
} else if (1000 > maxNumberLine) { m_nbColoneForLineNumber = 3;
|
||||
} else if (10000 > maxNumberLine) { m_nbColoneForLineNumber = 4;
|
||||
} else if (100000 > maxNumberLine) { m_nbColoneForLineNumber = 5;
|
||||
} else if (1000000 > maxNumberLine) { m_nbColoneForLineNumber = 6;
|
||||
} else if (1000000 > maxNumberLine) { m_nbColoneForLineNumber = 7;
|
||||
} else if (10000000 > maxNumberLine) { m_nbColoneForLineNumber = 8;
|
||||
} else if (100000000 > maxNumberLine) { m_nbColoneForLineNumber = 9;
|
||||
} else { m_nbColoneForLineNumber = 10;
|
||||
}
|
||||
}
|
||||
*/
|
||||
/**
|
||||
* @brief Display the curent buffer with all the probematic imposed by the xharset and the user contraint.
|
||||
*
|
||||
@@ -842,7 +872,7 @@ void BufferText::cursorMove(int32_t gtkKey)
|
||||
case GDK_Page_Up:
|
||||
# endif
|
||||
//EDN_INFO("keyEvent : <PAGE-UP>");
|
||||
TextDMoveUp(m_displaySize.x);
|
||||
TextDMoveUp(m_displaySize.y);
|
||||
break;
|
||||
# ifdef USE_GTK_VERSION_3_0
|
||||
case GDK_KEY_Page_Down:
|
||||
@@ -850,7 +880,7 @@ void BufferText::cursorMove(int32_t gtkKey)
|
||||
case GDK_Page_Down:
|
||||
# endif
|
||||
//EDN_INFO("keyEvent : <PAGE-DOWN>");
|
||||
TextDMoveDown(m_displaySize.x);
|
||||
TextDMoveDown(m_displaySize.y);
|
||||
break;
|
||||
# ifdef USE_GTK_VERSION_3_0
|
||||
case GDK_KEY_Begin:
|
||||
@@ -968,33 +998,47 @@ void BufferText::AddChar(char * UTF8data)
|
||||
m_EdnBuf.Insert(m_cursorPos, tmpVect);
|
||||
SetInsertPosition(m_cursorPos+1, true);
|
||||
} else {
|
||||
if (true == globals::IsSetCtrl() ) {
|
||||
m_cursorPos = m_EdnBuf.UnIndent(SELECTION_PRIMARY);
|
||||
// Indent depend of the multiline in the selection ...
|
||||
// count the number of line :
|
||||
int32_t nbSelectedLines = m_EdnBuf.CountLines(SelectionStart, SelectionEnd);
|
||||
if (0 == nbSelectedLines) {
|
||||
Edn::VectorType<int8_t> tmpVect;
|
||||
tmpVect.PushBack(0x09);
|
||||
m_EdnBuf.ReplaceSelected(SELECTION_PRIMARY, tmpVect);
|
||||
SetInsertPosition(SelectionStart+tmpVect.Size(), true);
|
||||
} else {
|
||||
m_cursorPos = m_EdnBuf.Indent(SELECTION_PRIMARY);
|
||||
if (true == globals::IsSetShift() ) {
|
||||
m_cursorPos = m_EdnBuf.UnIndent(SELECTION_PRIMARY);
|
||||
} else {
|
||||
m_cursorPos = m_EdnBuf.Indent(SELECTION_PRIMARY);
|
||||
}
|
||||
}
|
||||
}
|
||||
actionDone = true;
|
||||
} else if (UTF8data[0] == '\n') {
|
||||
Edn::VectorType<int8_t> tmpVect;
|
||||
tmpVect.PushBack('\n');
|
||||
// if Auto indent Enable ==> we get the start of the previous line and add it to tne new one
|
||||
if (true == globals::IsSetAutoIndent() ) {
|
||||
int32_t l_lineStart;
|
||||
// Get the begin of the line or the begin of the line befor selection
|
||||
if (false == haveSelectionActive) {
|
||||
l_lineStart = m_EdnBuf.StartOfLine(m_cursorPos);
|
||||
} else {
|
||||
l_lineStart = m_EdnBuf.StartOfLine(SelectionStart);
|
||||
}
|
||||
// add same characters in the temporar buffer
|
||||
for (int32_t kk=l_lineStart; kk<m_cursorPos; kk++) {
|
||||
if (' ' == m_EdnBuf[kk]) {
|
||||
tmpVect.PushBack(' ');
|
||||
} else if('\t' == m_EdnBuf[kk]) {
|
||||
tmpVect.PushBack('\t');
|
||||
if (true == globals::IsSetShift()) {
|
||||
tmpVect.PushBack('\r');
|
||||
} else {
|
||||
tmpVect.PushBack('\n');
|
||||
// if Auto indent Enable ==> we get the start of the previous line and add it to tne new one
|
||||
if (true == globals::IsSetAutoIndent() ) {
|
||||
int32_t l_lineStart;
|
||||
// Get the begin of the line or the begin of the line befor selection
|
||||
if (false == haveSelectionActive) {
|
||||
l_lineStart = m_EdnBuf.StartOfLine(m_cursorPos);
|
||||
} else {
|
||||
break;
|
||||
l_lineStart = m_EdnBuf.StartOfLine(SelectionStart);
|
||||
}
|
||||
// add same characters in the temporar buffer
|
||||
for (int32_t kk=l_lineStart; kk<m_cursorPos; kk++) {
|
||||
if (' ' == m_EdnBuf[kk]) {
|
||||
tmpVect.PushBack(' ');
|
||||
} else if('\t' == m_EdnBuf[kk]) {
|
||||
tmpVect.PushBack('\t');
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file ColoriseManager.cpp
|
||||
* @file ColorizeManager.cpp
|
||||
* @brief Editeur De N'ours : Colorising Manager
|
||||
* @author Edouard DUPIN
|
||||
* @date 14/12/2010
|
||||
@@ -57,19 +57,8 @@ void ColorizeManager::OnMessage(int32_t id, int32_t dataID)
|
||||
{
|
||||
case EDN_MSG__RELOAD_COLOR_FILE:
|
||||
{
|
||||
// Remove all current color
|
||||
int32_t i;
|
||||
// clean all Element
|
||||
for (i=0; i< listMyColor.Size(); i++) {
|
||||
if (NULL != listMyColor[i]) {
|
||||
delete(listMyColor[i]);
|
||||
listMyColor[i] = NULL;
|
||||
}
|
||||
}
|
||||
// clear the compleate list
|
||||
listMyColor.Clear();
|
||||
// Reaload File
|
||||
// TODO : Check this :
|
||||
// TODO : Check this : Pb in the recopy Edn::String element
|
||||
Edn::String plop = m_fileColor;
|
||||
LoadFile(plop.c_str());
|
||||
}
|
||||
@@ -85,6 +74,18 @@ void ColorizeManager::LoadFile(Edn::String &xmlFilename)
|
||||
|
||||
void ColorizeManager::LoadFile(const char * xmlFilename)
|
||||
{
|
||||
// Remove all old color :
|
||||
int32_t i;
|
||||
// clean all Element
|
||||
for (i=0; i< listMyColor.Size(); i++) {
|
||||
if (NULL != listMyColor[i]) {
|
||||
delete(listMyColor[i]);
|
||||
listMyColor[i] = NULL;
|
||||
}
|
||||
}
|
||||
// clear the compleate list
|
||||
listMyColor.Clear();
|
||||
|
||||
m_fileColor = xmlFilename;
|
||||
EDN_DEBUG("open file (COLOR) \"" << xmlFilename << "\" ? = \"" << m_fileColor << "\"");
|
||||
errorColor = new Colorize();
|
||||
@@ -96,22 +97,17 @@ void ColorizeManager::LoadFile(const char * xmlFilename)
|
||||
// open the curent File
|
||||
XmlDocument.LoadFile(xmlFilename);
|
||||
TiXmlElement* root = XmlDocument.FirstChildElement( "EdnColor" );
|
||||
if (NULL == root )
|
||||
{
|
||||
if (NULL == root ) {
|
||||
EDN_ERROR(PFX"(l ?) main node not find: \"EdnColor\" in \"" << xmlFilename << "\"");
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
TiXmlNode * pNode = root->FirstChild();
|
||||
while(NULL != pNode)
|
||||
{
|
||||
while(NULL != pNode) {
|
||||
if (pNode->Type()==TiXmlNode::TINYXML_COMMENT) {
|
||||
// nothing to do, just proceed to next step
|
||||
} else if (!strcmp(pNode->Value(), "gui")) {
|
||||
TiXmlNode * pGuiNode = pNode->FirstChild();
|
||||
while(NULL != pGuiNode)
|
||||
{
|
||||
while(NULL != pGuiNode) {
|
||||
if (pGuiNode->Type()==TiXmlNode::TINYXML_COMMENT) {
|
||||
// nothing to do, just proceed to next step
|
||||
} else if (!strcmp(pGuiNode->Value(), "color")) {
|
||||
@@ -233,6 +229,7 @@ void ColorizeManager::LoadFile(const char * xmlFilename)
|
||||
}
|
||||
}
|
||||
SendMessage(EDN_MSG__COLOR_HAS_CHANGE);
|
||||
SendMessage(EDN_MSG__USER_DISPLAY_CHANGE);
|
||||
}
|
||||
|
||||
Colorize *ColorizeManager::Get(const char *colorName)
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file ColoriseManager.h
|
||||
* @file ColorizeManager.h
|
||||
* @brief Editeur De N'ours : Colorising Manager (header)
|
||||
* @author Edouard DUPIN
|
||||
* @date 14/12/2010
|
||||
|
@@ -100,6 +100,10 @@ void BufferView::OnMessage(int32_t id, int32_t dataID)
|
||||
// change Title :
|
||||
gtk_widget_queue_draw(m_widget);
|
||||
break;
|
||||
case EDN_MSG__USER_DISPLAY_CHANGE:
|
||||
// Redraw all the display ...
|
||||
gtk_widget_queue_draw(m_widget);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -335,25 +339,8 @@ gint BufferView::CB_mouseButtonEvent(GtkWidget *widget, GdkEventButton *event, g
|
||||
//EDN_INFO(" plop %d / %d = %d ==> %d", (uint32_t)event->y, fontHeight, ((uint32_t)event->y / fontHeight), selectBuf);
|
||||
if ( 0 <= selectBuf) {
|
||||
self->SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, selectBuf);
|
||||
/*
|
||||
MainWindows *window = MainWindows::getInstance();
|
||||
EDN_INFO(" Event on Buffer " << selectBuf);
|
||||
// set the new seected Buffer
|
||||
window->SetSelected(selectBuf);
|
||||
*/
|
||||
}
|
||||
}/* else if (event->type == GDK_3BUTTON_PRESS) {
|
||||
EDN_INFO("mouse-event BT1 ==> Triple Clicked");
|
||||
}else if (event->type == GDK_BUTTON_RELEASE) {
|
||||
EDN_INFO("mouse-event BT1 ==> Realease");
|
||||
}*/
|
||||
} else if (event->button == 2) {
|
||||
/*
|
||||
if (event->type == GDK_BUTTON_PRESS) {
|
||||
EDN_INFO("mouse-event BT2 PRESS");
|
||||
self->m_menuContext->Show(event->x, event->y, false);
|
||||
}
|
||||
*/
|
||||
} else if (event->button == 3) {
|
||||
if (event->type == GDK_BUTTON_PRESS) {
|
||||
EDN_INFO("mouse-event BT3 PRESS");
|
||||
@@ -364,7 +351,8 @@ gint BufferView::CB_mouseButtonEvent(GtkWidget *widget, GdkEventButton *event, g
|
||||
}
|
||||
}
|
||||
} else {
|
||||
EDN_INFO("mouse-event BT? PRESS");
|
||||
// not usefull to redraw
|
||||
return true;
|
||||
}
|
||||
gtk_widget_queue_draw( widget );
|
||||
return true;
|
||||
|
@@ -179,6 +179,9 @@ void CodeView::OnMessage(int32_t id, int32_t dataID)
|
||||
case EDN_MSG__CURRENT_SET_CHARSET:
|
||||
m_bufferManager->Get(m_bufferID)->SetCharset((charset_te)dataID);
|
||||
break;
|
||||
case EDN_MSG__USER_DISPLAY_CHANGE:
|
||||
// Redraw all the display ... Done under ...
|
||||
break;
|
||||
}
|
||||
// Force redraw of the widget
|
||||
gtk_widget_queue_draw(m_widget);
|
||||
|
@@ -85,7 +85,7 @@ MainWindows::MainWindows(void) : MsgBroadcast("Main Windows", EDN_CAT_GUI)
|
||||
#else
|
||||
ExitIconeFile = "./data/imagesSources/delete-24px.png";
|
||||
#endif
|
||||
// TODO : find a good way to chenge the size of an image
|
||||
// TODO : find a good way to change the size of an image
|
||||
GtkWidget *myImageQuit = gtk_image_new_from_file(ExitIconeFile.c_str());
|
||||
GtkIconSize mySize = GTK_ICON_SIZE_SMALL_TOOLBAR;
|
||||
//EDN_DEBUG(" plop : " << mySize);
|
||||
@@ -100,9 +100,24 @@ MainWindows::MainWindows(void) : MsgBroadcast("Main Windows", EDN_CAT_GUI)
|
||||
|
||||
// add the real menu bar
|
||||
gtk_box_pack_start( GTK_BOX (hboxMenu), m_MenuBar.GetWidget(), FALSE, FALSE, 0);
|
||||
|
||||
GdkColor color;
|
||||
GtkStateType tmpppppp = GTK_STATE_NORMAL;
|
||||
//GtkStateType tmpppppp = GTK_STATE_ACTIVE;
|
||||
//GtkStateType tmpppppp = GTK_STATE_PRELIGHT;
|
||||
//GtkStateType tmpppppp = GTK_STATE_SELECTED;
|
||||
//GtkStateType tmpppppp = GTK_STATE_INSENSITIVE;
|
||||
//gdk_color_parse ("green", &color);
|
||||
//gtk_widget_modify_fg(m_MenuBar.GetWidget(), tmpppppp, &color);
|
||||
//gdk_color_parse ("blue", &color);
|
||||
//gtk_widget_modify_bg(m_MenuBar.GetWidget(), tmpppppp, &color);
|
||||
gdk_color_parse ("red", &color);
|
||||
gtk_widget_modify_text(m_MenuBar.GetWidget(), tmpppppp, &color);
|
||||
//gdk_color_parse ("orange", &color);
|
||||
gtk_widget_modify_base(m_MenuBar.GetWidget(), tmpppppp, &color);
|
||||
|
||||
// Add title
|
||||
|
||||
m_internalTitleLabel = gtk_label_new("Edn");
|
||||
gtk_box_pack_start( GTK_BOX (hboxMenu), m_internalTitleLabel, FALSE, FALSE, 0);
|
||||
#endif
|
||||
// **********************************************************
|
||||
// * Horizontal ELEMENTS : *
|
||||
@@ -150,12 +165,20 @@ void MainWindows::SetTitle(Edn::File &fileName, bool isModify)
|
||||
}
|
||||
tmp += "Edn";
|
||||
gtk_window_set_title(GTK_WINDOW(m_mainWindow), tmp.c_str());
|
||||
if (fileName.GetShortFilename() != "") {
|
||||
tmp = fileName.GetFolder();
|
||||
} else {
|
||||
tmp = "Edn";
|
||||
}
|
||||
gtk_label_set_text(GTK_LABEL(m_internalTitleLabel), tmp.c_str());
|
||||
|
||||
}
|
||||
|
||||
void MainWindows::SetNoTitle(void)
|
||||
{
|
||||
Edn::String tmp = "Edn";
|
||||
gtk_window_set_title(GTK_WINDOW(m_mainWindow), tmp.c_str());
|
||||
gtk_label_set_text(GTK_LABEL(m_internalTitleLabel), tmp.c_str());
|
||||
}
|
||||
|
||||
void MainWindows::OnMessage(int32_t id, int32_t dataID)
|
||||
@@ -175,49 +198,22 @@ void MainWindows::OnMessage(int32_t id, int32_t dataID)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case EDN_MSG__QUIT:
|
||||
OnQuit(m_mainWindow, this);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool MainWindows::OnQuit(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
EDN_INFO("quit requested");
|
||||
// dlg to confirm the quit event :
|
||||
GtkWidget *p_dialog = gtk_dialog_new_with_buttons("Exit",
|
||||
GTK_WINDOW(widget),
|
||||
GTK_DIALOG_MODAL,
|
||||
GTK_STOCK_YES, GTK_RESPONSE_YES,
|
||||
GTK_STOCK_NO, GTK_RESPONSE_NO,
|
||||
NULL);
|
||||
GtkWidget *p_label = gtk_label_new ("Do you want exit Edn?");
|
||||
gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area( GTK_DIALOG(p_dialog) )), p_label, TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_show(p_label);
|
||||
|
||||
switch (gtk_dialog_run (GTK_DIALOG (p_dialog)))
|
||||
{
|
||||
case GTK_RESPONSE_YES:
|
||||
gtk_widget_destroy (p_dialog);
|
||||
|
||||
break;
|
||||
case GTK_RESPONSE_NO:
|
||||
gtk_widget_destroy (p_dialog);
|
||||
// do not close the windows
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
|
||||
gtk_main_quit();
|
||||
return false;
|
||||
//MainWindows * self = reinterpret_cast<MainWindows*>(data);
|
||||
GeneralSendMessage(EDN_MSG__GUI_SHOW_EXIT_CONFIRMATION);
|
||||
// Close is not managed here ...
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
gboolean MainWindows::OnStateChange(GtkWidget *widget, GdkEvent* event, gpointer data)
|
||||
{
|
||||
MainWindows * self = reinterpret_cast<MainWindows*>(data);
|
||||
EDN_WARNING("State change");
|
||||
EDN_DEBUG("State change");
|
||||
EDN_INFO(" change state mask : " << event->window_state.changed_mask);
|
||||
EDN_INFO(" change state new val : " << event->window_state.new_window_state);
|
||||
if (event->window_state.changed_mask == GDK_WINDOW_STATE_MAXIMIZED) {
|
||||
@@ -233,31 +229,6 @@ gboolean MainWindows::OnStateChange(GtkWidget *widget, GdkEvent* event, gpointer
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
||||
void MainWindows::OnMenuAbout(wxCommandEvent & WXUNUSED(event))
|
||||
{
|
||||
//EDN_INFO("MainWindows::OnMenuAbout (event)");
|
||||
wxAboutDialogInfo info;
|
||||
info.SetName(wxT("edn"));
|
||||
info.SetVersion(wxT("0.1.0 pre-Beta"));
|
||||
info.SetDescription(wxT("Editeur De N'ours, l'Editeur Desoxyribo-Nucleique\n"
|
||||
"Source Code Editor"));
|
||||
info.SetCopyright(wxT( "Copyright 2010 Edouard DUPIN, all right reserved\n"
|
||||
"This software is distributed in the hope that it will be useful, but WITHOUT\n"
|
||||
"ANY WARRANTY\n\n"
|
||||
"Licence summary : \n"
|
||||
" You can modify and redistribute the sources code and binaries.\n"
|
||||
" You can send me the bug-fix\n"
|
||||
" You can not earn money with this Software (if the source extract from Edn\n"
|
||||
" represent less than 50% of original Sources)\n"
|
||||
"Term of the licence in in the file licence.txt"));
|
||||
wxAboutBox(info);
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -58,6 +58,7 @@ class MainWindows: public Singleton<MainWindows>, public MsgBroadcast
|
||||
void SetNoTitle(void);
|
||||
// main windows widget :
|
||||
GtkWidget * m_mainWindow;
|
||||
GtkWidget * m_internalTitleLabel;
|
||||
BufferView m_BufferView;
|
||||
CodeView m_CodeView;
|
||||
MenuBar m_MenuBar;
|
||||
|
@@ -28,6 +28,7 @@
|
||||
#include "MenuBar.h"
|
||||
#include "ClipBoard.h"
|
||||
#include "charset.h"
|
||||
#include "ColorizeManager.h"
|
||||
|
||||
#define MENU_MSG
|
||||
const char * MSG_TogleDisplayChar = "Request a Togle of char displaying";
|
||||
@@ -36,6 +37,8 @@ const char * MSG_TogleAutoIndent = "Request a Togle of Auto Indent";
|
||||
const char * MSG_SetCharsetIso559_1 = "Set ISO 5589-1";
|
||||
const char * MSG_SetCharsetIso559_15 = "Set ISO 5589-15";
|
||||
const char * MSG_SetCharsetUTF8 = "Set UTF 8";
|
||||
const char * MSG_LoadColorBlack = "Load Color Black";
|
||||
const char * MSG_LoadColorWhite = "Load Color White";
|
||||
#define MSG_LINK(data)
|
||||
|
||||
|
||||
@@ -74,6 +77,26 @@ static void CB_menuInternal(GtkMenuItem *menu_item, gpointer data)
|
||||
GeneralSendMessage(EDN_MSG__CURRENT_SET_CHARSET, EDN_CHARSET_ISO_8859_15);
|
||||
} else if (myPointer == MSG_SetCharsetUTF8) {
|
||||
GeneralSendMessage(EDN_MSG__CURRENT_SET_CHARSET, EDN_CHARSET_UTF8);
|
||||
} else if (myPointer == MSG_LoadColorWhite) {
|
||||
ColorizeManager * myColorSystem = ColorizeManager::getInstance();
|
||||
Edn::String homedir;
|
||||
# ifdef NDEBUG
|
||||
homedir = "/usr/share/edn/";
|
||||
# else
|
||||
homedir = "./data/";
|
||||
# endif
|
||||
homedir += "color_white.xml";
|
||||
myColorSystem->LoadFile(homedir);
|
||||
} else if (myPointer == MSG_LoadColorBlack) {
|
||||
ColorizeManager * myColorSystem = ColorizeManager::getInstance();
|
||||
Edn::String homedir;
|
||||
# ifdef NDEBUG
|
||||
homedir = "/usr/share/edn/";
|
||||
# else
|
||||
homedir = "./data/";
|
||||
# endif
|
||||
homedir += "color_black.xml";
|
||||
myColorSystem->LoadFile(homedir);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,6 +187,11 @@ class MenuBarMain
|
||||
m_message.PushBack(message);
|
||||
// create ITEM
|
||||
GtkWidget *tmpWidget = gtk_image_menu_item_new_from_stock( title, AccelKey::getInstance()->GetAccel() );
|
||||
GdkColor color;
|
||||
gdk_color_parse ("red", &color);
|
||||
gtk_widget_modify_fg(tmpWidget, GTK_STATE_NORMAL, &color);
|
||||
gtk_widget_modify_bg(tmpWidget, GTK_STATE_NORMAL, &color);
|
||||
gtk_widget_modify_text(tmpWidget, GTK_STATE_NORMAL, &color);
|
||||
// set grisage :
|
||||
gtk_widget_set_sensitive(tmpWidget, enable);
|
||||
// add to the menu :
|
||||
@@ -209,7 +237,7 @@ MenuBar::MenuBar(void) : MsgBroadcast("Menu bar", EDN_CAT_GUI)
|
||||
tmp->AddGen(GTK_STOCK_SAVE, "ctrl+s", EDN_MSG__CURRENT_SAVE, true);
|
||||
tmp->AddGen(GTK_STOCK_SAVE_AS, "ctrl+shift+s", EDN_MSG__CURRENT_SAVE_AS, true);
|
||||
tmp->AddSeparator();
|
||||
tmp->AddGen(GTK_STOCK_QUIT, "ctrl+shift+q", EDN_MSG__QUIT, true);
|
||||
tmp->AddGen(GTK_STOCK_QUIT, "ctrl+shift+q", EDN_MSG__GUI_SHOW_EXIT_CONFIRMATION, true);
|
||||
m_listMenu.PushBack(tmp);
|
||||
|
||||
tmp = new MenuBarMain("_Edit", m_mainWidget);
|
||||
@@ -254,6 +282,9 @@ MenuBar::MenuBar(void) : MsgBroadcast("Menu bar", EDN_CAT_GUI)
|
||||
tmp->AddInternal("Set charset Internationnal (UTF 8)", NULL, MSG_SetCharsetUTF8, true);
|
||||
tmp->AddSeparator();
|
||||
tmp->AddGen( "Reload Color File", NULL, EDN_MSG__RELOAD_COLOR_FILE, true);
|
||||
tmp->AddSeparator();
|
||||
tmp->AddInternal("Set Color Black", NULL, MSG_LoadColorBlack, true);
|
||||
tmp->AddInternal("Set Color White", NULL, MSG_LoadColorWhite, true);
|
||||
m_listMenu.PushBack(tmp);
|
||||
/*
|
||||
tmp = new MenuBarMain("Project", m_mainWidget);
|
||||
|
@@ -196,11 +196,11 @@ void Search::Display(GtkWindow *parent)
|
||||
Edn::String myDataString = "";
|
||||
SearchData::SetSearch(myDataString);
|
||||
gtk_entry_set_text(GTK_ENTRY(m_searchEntry), myDataString.c_str());
|
||||
//if (0 == strlen(myDataString.c_str())) {
|
||||
if (0 == strlen(myDataString.c_str())) {
|
||||
m_haveSearchData = false;
|
||||
//} else {
|
||||
// m_haveSearchData = true;
|
||||
//}
|
||||
} else {
|
||||
m_haveSearchData = true;
|
||||
}
|
||||
|
||||
SearchData::GetReplace(myDataString);
|
||||
gtk_entry_set_text(GTK_ENTRY(m_replaceEntry), myDataString.c_str());
|
||||
@@ -212,17 +212,14 @@ void Search::Display(GtkWindow *parent)
|
||||
|
||||
gtk_widget_set_sensitive(m_BtPrevious, m_haveSearchData);
|
||||
gtk_widget_set_sensitive(m_BtNext, m_haveSearchData);
|
||||
if (false == m_haveSearchData) {
|
||||
gtk_widget_set_sensitive(m_BtReplace, false);
|
||||
gtk_widget_set_sensitive(m_BtReplaceAndNext, false);
|
||||
} else {
|
||||
gtk_widget_set_sensitive(m_BtReplace, m_haveReplaceData);
|
||||
gtk_widget_set_sensitive(m_BtReplaceAndNext, m_haveReplaceData);
|
||||
}
|
||||
// basic no search data
|
||||
gtk_widget_set_sensitive(m_BtReplace, false);
|
||||
gtk_widget_set_sensitive(m_BtReplaceAndNext, false);
|
||||
|
||||
|
||||
// set focus on a specific widget :
|
||||
gtk_window_set_focus(parent, m_searchEntry);
|
||||
|
||||
//gtk_window_set_focus(parent, m_searchEntry);
|
||||
gtk_widget_grab_focus(m_searchEntry);
|
||||
|
||||
// display the dialogue box
|
||||
gtk_widget_show_all(m_localDialog);
|
||||
@@ -331,8 +328,8 @@ void Search::OnEntrySearchChange(GtkWidget *widget, gpointer data)
|
||||
gtk_widget_set_sensitive(self->m_BtReplace, false);
|
||||
gtk_widget_set_sensitive(self->m_BtReplaceAndNext, false);
|
||||
} else {
|
||||
gtk_widget_set_sensitive(self->m_BtReplace, self->m_haveReplaceData);
|
||||
gtk_widget_set_sensitive(self->m_BtReplaceAndNext, self->m_haveReplaceData);
|
||||
gtk_widget_set_sensitive(self->m_BtReplace, true);
|
||||
gtk_widget_set_sensitive(self->m_BtReplaceAndNext, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -351,7 +348,12 @@ void Search::OnEntryReplaceChange(GtkWidget *widget, gpointer data)
|
||||
} else {
|
||||
self->m_haveReplaceData = true;
|
||||
}
|
||||
gtk_widget_set_sensitive(self->m_BtReplace, self->m_haveReplaceData);
|
||||
gtk_widget_set_sensitive(self->m_BtReplaceAndNext, self->m_haveReplaceData);
|
||||
if (false == self->m_haveSearchData) {
|
||||
gtk_widget_set_sensitive(self->m_BtReplace, false);
|
||||
gtk_widget_set_sensitive(self->m_BtReplaceAndNext, false);
|
||||
} else {
|
||||
gtk_widget_set_sensitive(self->m_BtReplace, true);
|
||||
gtk_widget_set_sensitive(self->m_BtReplaceAndNext, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -93,10 +93,8 @@ void WindowsManager::OnMessage(int32_t id, int32_t dataID)
|
||||
|
||||
GtkWidget *dialog = gtk_file_chooser_dialog_new( "Open File", NULL,
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||
GTK_STOCK_CANCEL, // button text
|
||||
GTK_RESPONSE_CANCEL, // response id
|
||||
GTK_STOCK_OPEN, // button text
|
||||
GTK_RESPONSE_ACCEPT, // response id
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
|
||||
NULL); // end button/response list
|
||||
// this element did not apear in the miniature of the windows
|
||||
gtk_window_set_skip_pager_hint(GTK_WINDOW(dialog), TRUE);
|
||||
@@ -137,10 +135,8 @@ void WindowsManager::OnMessage(int32_t id, int32_t dataID)
|
||||
tmpString += myBuffer->GetFileName().GetShortFilename().c_str();
|
||||
GtkWidget *dialog = gtk_file_chooser_dialog_new( tmpString.c_str(), NULL,
|
||||
GTK_FILE_CHOOSER_ACTION_SAVE,
|
||||
GTK_STOCK_CANCEL, // button text
|
||||
GTK_RESPONSE_CANCEL, // response id
|
||||
GTK_STOCK_SAVE, // button text
|
||||
GTK_RESPONSE_ACCEPT, // response id
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
|
||||
NULL); // end button/response list
|
||||
// this element did not apear in the miniature of the windows
|
||||
gtk_window_set_skip_pager_hint(GTK_WINDOW(dialog), TRUE);
|
||||
@@ -159,54 +155,40 @@ void WindowsManager::OnMessage(int32_t id, int32_t dataID)
|
||||
break;
|
||||
case EDN_MSG__GUI_SHOW_ABOUT:
|
||||
{
|
||||
// dlg to confirm the quit event :
|
||||
GtkWidget *myDialog = gtk_dialog_new_with_buttons("About",
|
||||
NULL,
|
||||
GTK_DIALOG_MODAL,
|
||||
GTK_STOCK_QUIT, GTK_RESPONSE_NO,
|
||||
NULL);
|
||||
// this element did not apear in the miniature of the windows
|
||||
gtk_window_set_skip_pager_hint(GTK_WINDOW(myDialog), TRUE);
|
||||
GtkWidget *myContentArea = gtk_dialog_get_content_area( GTK_DIALOG(myDialog));
|
||||
GtkWidget *myLabel = gtk_label_new("");
|
||||
gtk_label_set_markup (GTK_LABEL (myLabel),
|
||||
"<b>Name :</b> Edn\n"
|
||||
"<b>Version :</b> " VERSION_TAG_NAME "\n"
|
||||
"<b>Build Time :</b> " VERSION_BUILD_TIME "\n\n"
|
||||
"<b>Description :</b> Editeur De N'ours, l'Editeur Desoxyribo-Nucleique\n"
|
||||
" Source Code Editor\n\n"
|
||||
"<b>Copyright 2010 Edouard DUPIN, all right reserved</b>\n\n"
|
||||
"<b>Terms of license : </b>\n"
|
||||
"This software is distributed in the hope that it will be useful, but \n"
|
||||
"WITHOUT ANY WARRANTY\n"
|
||||
" <b>You can:</b>\n"
|
||||
" * Redistribute the sources code and binaries.\n"
|
||||
" * Modify the Sources code.\n"
|
||||
" * Use a part of the sources (less than 50%) in an other software,\n"
|
||||
" just write somewhere \"Edn is great\" visible by the user (on \n"
|
||||
" your product or on your website with a link to my page).\n"
|
||||
" * Redistribute the modification only if you want.\n"
|
||||
" * Send me the bug-fix (it could be great).\n"
|
||||
" * Pay me a beer or some other things.\n"
|
||||
" Print the source code on WC paper ...\n"
|
||||
" <b>You can NOT:</b>\n"
|
||||
" * Earn money with this Software (But I can).\n"
|
||||
" * Add malware in the Sources.\n"
|
||||
" * Do something bad with the sources.\n"
|
||||
" * Use it to travel in the space with a toaster.\n"
|
||||
"I reserve the right to change this licence. If it change the version of \n"
|
||||
"the copy you have keep its own license.\n\n"
|
||||
"<b>Sources : </b> git://github.com/HeeroYui/edn.git ");
|
||||
gtk_box_pack_start(GTK_BOX(myContentArea), myLabel, TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_show_all(myContentArea);
|
||||
int32_t result = gtk_dialog_run (GTK_DIALOG (myDialog));
|
||||
GtkWidget *myDialog = gtk_about_dialog_new();
|
||||
gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(myDialog), "Edn");
|
||||
gtk_about_dialog_set_version( GTK_ABOUT_DIALOG(myDialog), VERSION_TAG_NAME);
|
||||
gtk_about_dialog_set_comments( GTK_ABOUT_DIALOG(myDialog), "Editeur De N'ours\n"
|
||||
"L'Editeur Desoxyribo-Nucleique.\n"
|
||||
"Source Code Editor\n"
|
||||
"Build Time : " VERSION_BUILD_TIME);
|
||||
gtk_about_dialog_set_copyright( GTK_ABOUT_DIALOG(myDialog), "Copyright 2010 Edouard DUPIN, all right reserved");
|
||||
gtk_about_dialog_set_license( GTK_ABOUT_DIALOG(myDialog), "This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY\n\n"
|
||||
"You can:\n"
|
||||
" * Redistribute the sources code and binaries.\n"
|
||||
" * Modify the Sources code.\n"
|
||||
" * Use a part of the sources (less than 50%) in an other software, just write somewhere \"Edn is great\" visible by the user (on your product or on your website with a link to my page).\n"
|
||||
" * Redistribute the modification only if you want.\n"
|
||||
" * Send me the bug-fix (it could be great).\n"
|
||||
" * Pay me a beer or some other things.\n"
|
||||
" * Print the source code on WC paper ...\n\n"
|
||||
"You can NOT:\n"
|
||||
" * Earn money with this Software (But I can).\n"
|
||||
" * Add malware in the Sources.\n"
|
||||
" * Do something bad with the sources.\n"
|
||||
" * Use it to travel in the space with a toaster.\n\n"
|
||||
"I reserve the right to change this licence. If it change the version of the copy you have keep its own license.");
|
||||
gtk_about_dialog_set_wrap_license(GTK_ABOUT_DIALOG(myDialog), true);
|
||||
# if USE_GTK_VERSION_3_0
|
||||
gtk_about_dialog_set_license_type(GTK_ABOUT_DIALOG(myDialog), GTK_LICENSE_CUSTOM);
|
||||
# endif
|
||||
gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(myDialog), "http://HeeroYui.github.com/edn");
|
||||
gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(myDialog), "Edn on github");
|
||||
const char * listAutor[] = {"Edouard DUPIN", NULL};
|
||||
gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(myDialog), listAutor);
|
||||
// Display About
|
||||
gtk_dialog_run(GTK_DIALOG(myDialog));
|
||||
gtk_widget_destroy(myDialog);
|
||||
switch (result)
|
||||
{
|
||||
case GTK_RESPONSE_NO:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case EDN_MSG__GUI_SHOW_GOTO_LINE:
|
||||
@@ -250,5 +232,89 @@ void WindowsManager::OnMessage(int32_t id, int32_t dataID)
|
||||
gtk_widget_destroy(myDialog);
|
||||
}
|
||||
break;
|
||||
case EDN_MSG__GUI_SHOW_EXIT_CONFIRMATION:
|
||||
{
|
||||
EDN_INFO("quit requested");
|
||||
// dlg to confirm the quit event :
|
||||
GtkWidget *p_dialog = gtk_dialog_new_with_buttons("Exit",
|
||||
GTK_WINDOW(m_mainWindow->GetWidget()),
|
||||
GTK_DIALOG_MODAL,
|
||||
GTK_STOCK_YES, GTK_RESPONSE_YES,
|
||||
GTK_STOCK_NO, GTK_RESPONSE_NO,
|
||||
NULL);
|
||||
GtkWidget *p_label = gtk_label_new ("Do you want exit Edn ?");
|
||||
gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area( GTK_DIALOG(p_dialog) )), p_label, TRUE, TRUE, 0);
|
||||
gtk_widget_show(p_label);
|
||||
|
||||
switch (gtk_dialog_run (GTK_DIALOG (p_dialog)))
|
||||
{
|
||||
case GTK_RESPONSE_YES:
|
||||
gtk_widget_destroy (p_dialog);
|
||||
p_dialog = NULL;
|
||||
{
|
||||
BufferManager * myBufferMng = BufferManager::getInstance();
|
||||
for (int32_t iii=0 ; iii<myBufferMng->Size() ; iii++) {
|
||||
if (true==myBufferMng->Exist(iii) ) {
|
||||
Buffer * myBuffer = myBufferMng->Get(iii);
|
||||
if (NULL != myBuffer) {
|
||||
if (true == myBuffer->IsModify()) {
|
||||
if (true == myBuffer->HaveName()) {
|
||||
p_dialog = gtk_dialog_new_with_buttons("Save Before Exit",
|
||||
GTK_WINDOW(m_mainWindow->GetWidget()),
|
||||
GTK_DIALOG_MODAL,
|
||||
GTK_STOCK_SAVE, GTK_RESPONSE_YES,
|
||||
GTK_STOCK_SAVE_AS, GTK_RESPONSE_ACCEPT,
|
||||
GTK_STOCK_NO, GTK_RESPONSE_NO,
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
NULL);
|
||||
} else {
|
||||
p_dialog = gtk_dialog_new_with_buttons("Save Before Exit",
|
||||
GTK_WINDOW(m_mainWindow->GetWidget()),
|
||||
GTK_DIALOG_MODAL,
|
||||
GTK_STOCK_SAVE_AS, GTK_RESPONSE_ACCEPT,
|
||||
GTK_STOCK_NO, GTK_RESPONSE_NO,
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
NULL);
|
||||
}
|
||||
char tmpName[1024];
|
||||
sprintf(tmpName, "Save file \"%s\" ?", myBuffer->GetFileName().GetCompleateName().c_str());
|
||||
p_label = gtk_label_new(tmpName);
|
||||
gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area( GTK_DIALOG(p_dialog) )), p_label, TRUE, TRUE, 0);
|
||||
gtk_widget_show(p_label);
|
||||
|
||||
switch (gtk_dialog_run (GTK_DIALOG (p_dialog)))
|
||||
{
|
||||
case GTK_RESPONSE_YES:
|
||||
myBuffer->Save();
|
||||
break;
|
||||
case GTK_RESPONSE_ACCEPT:
|
||||
OnMessage(EDN_MSG__GUI_SHOW_SAVE_AS, iii);
|
||||
break;
|
||||
case GTK_RESPONSE_NO:
|
||||
// nothing to do ...
|
||||
break;
|
||||
case GTK_RESPONSE_CANCEL:
|
||||
gtk_widget_destroy (p_dialog);
|
||||
return;
|
||||
break;
|
||||
}
|
||||
gtk_widget_destroy (p_dialog);
|
||||
p_dialog = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
gtk_main_quit();
|
||||
break;
|
||||
case GTK_RESPONSE_NO:
|
||||
gtk_widget_destroy (p_dialog);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
@@ -233,7 +233,7 @@ void Highlight::Parse(int32_t start,
|
||||
if (metaData[kkk].beginStart <= resultat.endStop) {
|
||||
// Remove element
|
||||
//EDN_INFO("Erase element=" << kkk);
|
||||
metaData.Erase(kkk, kkk+1);
|
||||
metaData.EraseLen(kkk, kkk+1);
|
||||
// Increase the end of search
|
||||
if (kkk < metaData.Size()) {
|
||||
// just befor the end of the next element
|
||||
|
@@ -170,7 +170,7 @@ void CTagsManager::AddToHistory(int32_t bufferID)
|
||||
for(int32_t iii= m_historyPos; iii < m_historyList.Size(); iii++) {
|
||||
delete(m_historyList[iii]);
|
||||
}
|
||||
m_historyList.Erase(m_historyPos, m_historyList.Size() - m_historyPos);
|
||||
m_historyList.EraseLen(m_historyPos, m_historyList.Size() - m_historyPos);
|
||||
}
|
||||
// add the current element
|
||||
BufferManager *myBufferManager = BufferManager::getInstance();
|
||||
|
@@ -61,17 +61,10 @@ static cairo_font_face_t * m_cairoFont[2][2] = {{NULL, NULL},{ NULL, NULL}};
|
||||
static cairo_font_face_t * m_cairoFont[2][2] = {{NULL, NULL},{ NULL, NULL}};
|
||||
void Display::Init(void)
|
||||
{
|
||||
/*
|
||||
charWidth = gdk_char_width(myFont[FONT_ITALIC_YES][FONT_BOLD_NO], 'Z');
|
||||
EDN_INFO("Font Width = %d", charWidth);
|
||||
charHeignt = gdk_char_height(myFont[FONT_ITALIC_YES][FONT_BOLD_NO], 'Z');
|
||||
EDN_INFO("Font Height = %d", charHeignt);
|
||||
*/
|
||||
|
||||
m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_NO] = cairo_toy_font_face_create(POLICE_NAME, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
|
||||
m_cairoFont[FONT_ITALIC_YES][FONT_BOLD_NO] = cairo_toy_font_face_create(POLICE_NAME, CAIRO_FONT_SLANT_ITALIC, CAIRO_FONT_WEIGHT_NORMAL);
|
||||
m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_YES] = cairo_toy_font_face_create(POLICE_NAME, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
|
||||
m_cairoFont[FONT_ITALIC_YES][FONT_BOLD_YES] = cairo_toy_font_face_create(POLICE_NAME, CAIRO_FONT_SLANT_ITALIC, CAIRO_FONT_WEIGHT_BOLD);
|
||||
m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_NO] = cairo_toy_font_face_create(POLICE_NAME, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
|
||||
m_cairoFont[FONT_ITALIC_YES][FONT_BOLD_NO] = cairo_toy_font_face_create(POLICE_NAME, CAIRO_FONT_SLANT_ITALIC, CAIRO_FONT_WEIGHT_NORMAL);
|
||||
m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_YES] = cairo_toy_font_face_create(POLICE_NAME, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
|
||||
m_cairoFont[FONT_ITALIC_YES][FONT_BOLD_YES] = cairo_toy_font_face_create(POLICE_NAME, CAIRO_FONT_SLANT_ITALIC, CAIRO_FONT_WEIGHT_BOLD);
|
||||
if ( NULL == m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_NO]) {
|
||||
EDN_ASSERT(FALSE, "basic font ERROR");
|
||||
}
|
||||
@@ -96,10 +89,10 @@ void Display::Init(void)
|
||||
void Display::UnInit(void)
|
||||
{
|
||||
// clean the builder...
|
||||
free(m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_NO]);
|
||||
free(m_cairoFont[FONT_ITALIC_YES][FONT_BOLD_NO]);
|
||||
free(m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_YES]);
|
||||
free(m_cairoFont[FONT_ITALIC_YES][FONT_BOLD_YES]);
|
||||
cairo_font_face_destroy(m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_NO]);
|
||||
cairo_font_face_destroy(m_cairoFont[FONT_ITALIC_YES][FONT_BOLD_NO]);
|
||||
cairo_font_face_destroy(m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_YES]);
|
||||
cairo_font_face_destroy(m_cairoFont[FONT_ITALIC_YES][FONT_BOLD_YES]);
|
||||
}
|
||||
|
||||
|
||||
@@ -289,7 +282,7 @@ void DrawerManager::SpaceText(color_ts & SelectColor, int32_t x, int32_t y,int32
|
||||
void DrawerManager::Flush(void)
|
||||
{
|
||||
if (true == m_haveWork) {
|
||||
//EDN_WARNING("flush : \"" << m_dataToDisplay << "\"");
|
||||
//EDN_WARNING("flush : \"" << m_dataToDisplay << "\"" << " bold=" << m_selectColor->GetBold() << " italic=" << m_selectColor->GetItalic());
|
||||
m_haveWork = false;
|
||||
|
||||
cairo_set_font_face(m_cairo, Display::GetFont(m_selectColor->GetBold(), m_selectColor->GetItalic()));
|
||||
|
@@ -90,17 +90,17 @@ void EdnBuf::RegenerateHighLightAt(int32_t pos, int32_t nbDeleted, int32_t nbAdd
|
||||
m_HLDataPass1.Erase(0);
|
||||
//EDN_DEBUG("1 * Erase 0");
|
||||
} else {
|
||||
m_HLDataPass1.Erase(0,stopId);
|
||||
m_HLDataPass1.EraseLen(0,stopId);
|
||||
//EDN_DEBUG("2 * Erase 0->" << stopId);
|
||||
}
|
||||
} else if(-1 == stopId) {
|
||||
//EDN_DEBUG("3 * Erase " << startId+1 << "-> end");
|
||||
m_HLDataPass1.Erase(startId+1, m_HLDataPass1.Size() - startId);
|
||||
m_HLDataPass1.EraseLen(startId+1, m_HLDataPass1.Size() - startId);
|
||||
stopId = -1;
|
||||
} else {
|
||||
int32_t currentSize = m_HLDataPass1.Size();
|
||||
//EDN_DEBUG("4 * Erase " << startId+1 << "->" << stopId << " in " << currentSize << " elements" );
|
||||
m_HLDataPass1.Erase(startId+1, stopId - startId);
|
||||
m_HLDataPass1.EraseLen(startId+1, stopId - startId);
|
||||
if (stopId == currentSize-1) {
|
||||
stopId = -1;
|
||||
}
|
||||
|
@@ -79,8 +79,8 @@ static char * GetMessageChar(messageType_te Id)
|
||||
{
|
||||
switch(Id)
|
||||
{
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__QUIT)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__BUFFER_CHANGE_CURRENT)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__USER_DISPLAY_CHANGE)
|
||||
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__GUI_SHOW_MAIN_WINDOWS)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__GUI_SHOW_SEARCH)
|
||||
@@ -90,6 +90,7 @@ static char * GetMessageChar(messageType_te Id)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__GUI_SHOW_SAVE_AS)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__GUI_SHOW_GOTO_LINE)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__GUI_SHOW_ABOUT)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__GUI_SHOW_EXIT_CONFIRMATION)
|
||||
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__BUFFER_REMOVE)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__BUFFER_REMOVE_ALL)
|
||||
|
@@ -38,9 +38,8 @@
|
||||
// the ID we'll use to identify our event
|
||||
typedef enum {
|
||||
EDN_MSG__NONE = 0,
|
||||
// Programm is Quitting... close all if needed ...
|
||||
EDN_MSG__QUIT,
|
||||
EDN_MSG__BUFFER_CHANGE_CURRENT, // set the new current BUFFER ...
|
||||
EDN_MSG__USER_DISPLAY_CHANGE, // User change the display ==> need to reload all the display depending on color internal
|
||||
|
||||
// DESTINATION : GUI_MANAGER
|
||||
MSG_TO_GUI_MANAGER__START,
|
||||
@@ -53,6 +52,7 @@ typedef enum {
|
||||
EDN_MSG__GUI_SHOW_SAVE_AS,
|
||||
EDN_MSG__GUI_SHOW_GOTO_LINE,
|
||||
EDN_MSG__GUI_SHOW_ABOUT,
|
||||
EDN_MSG__GUI_SHOW_EXIT_CONFIRMATION,
|
||||
MSG_TO_GUI_MANAGER__STOP,
|
||||
|
||||
// DESTINATION : GUI
|
||||
@@ -201,7 +201,7 @@ class MsgBroadcastCore: public Singleton<MsgBroadcastCore>
|
||||
|
||||
private:
|
||||
Edn::VectorType<MsgBroadcast*> m_listMessage;
|
||||
uint32_t m_messageID;
|
||||
uint32_t m_messageID;
|
||||
Edn::VectorType<messageElement_ts> m_listOfMessage;
|
||||
};
|
||||
|
||||
|
@@ -471,7 +471,7 @@ void Edn::String::Remove(int32_t currentID, int32_t len)
|
||||
return;
|
||||
}
|
||||
// TODO : check the size of the data
|
||||
m_data.Erase(currentID, len);
|
||||
m_data.EraseLen(currentID, len);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -474,7 +474,33 @@ template<typename MY_TYPE=int32_t> class VectorType
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Remove one element
|
||||
* @brief Remove N elements
|
||||
*
|
||||
* @param[in] pos Position to remove the data
|
||||
* @param[in] posEnd Last position number
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void Erase(int32_t pos, int32_t posEnd)
|
||||
{
|
||||
if (pos>m_size) {
|
||||
EDN_ERROR(" can not Erase Element at this position : " << pos << " > " << m_size);
|
||||
return;
|
||||
}
|
||||
if (posEnd>m_size) {
|
||||
posEnd = m_size;
|
||||
}
|
||||
int32_t nbElement = m_size - pos;
|
||||
int32_t tmpSize = m_size;
|
||||
// move curent data
|
||||
memmove((m_data + pos), (m_data + pos + nbElement), (tmpSize - (pos+nbElement))*sizeof(MY_TYPE) );
|
||||
// Request resize of the current buffer
|
||||
Resize(m_size-nbElement);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Remove N element
|
||||
*
|
||||
* @param[in] pos Position to remove the data
|
||||
* @param[in] nbElement number of element to remove
|
||||
@@ -482,10 +508,10 @@ template<typename MY_TYPE=int32_t> class VectorType
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void Erase(int32_t pos, int32_t nbElement)
|
||||
void EraseLen(int32_t pos, int32_t nbElement)
|
||||
{
|
||||
if (pos>m_size) {
|
||||
EDN_ERROR(" can not Erase Element at this position : " << pos << " > " << m_size);
|
||||
EDN_ERROR(" can not Erase Len Element at this position : " << pos << " > " << m_size);
|
||||
return;
|
||||
}
|
||||
if (pos+nbElement>m_size) {
|
||||
|
@@ -593,18 +593,18 @@ void ConvertInput(GdkEventKey *event, char* Utf8Out, bool &controlKey, bool &mov
|
||||
# elif USE_GTK_VERSION_2_0
|
||||
case GDK_KP_Tab:
|
||||
# endif
|
||||
// shift + TAB ... same as a tab here ...
|
||||
case 0xfe20: //GDK_ISO_Left_Tab
|
||||
case 65289:
|
||||
key = (int32_t)'\t';
|
||||
break;
|
||||
# ifdef USE_GTK_VERSION_3_0
|
||||
case GDK_KEY_KP_Enter:
|
||||
key = GDK_KEY_Return;
|
||||
break;
|
||||
# elif USE_GTK_VERSION_2_0
|
||||
case GDK_KP_Enter:
|
||||
key = GDK_Return;
|
||||
break;
|
||||
# endif
|
||||
key = '\n';
|
||||
break;
|
||||
# ifdef USE_GTK_VERSION_3_0
|
||||
case GDK_KEY_KP_F1:
|
||||
case GDK_KEY_F1:
|
||||
@@ -1038,17 +1038,129 @@ void ConvertInput(GdkEventKey *event, char* Utf8Out, bool &controlKey, bool &mov
|
||||
# endif
|
||||
key = 0x08;
|
||||
break;
|
||||
|
||||
# ifdef USE_GTK_VERSION_3_0
|
||||
case GDK_KEY_dead_grave:
|
||||
case GDK_KEY_dead_acute:
|
||||
case GDK_KEY_dead_circumflex:
|
||||
case GDK_KEY_dead_tilde:
|
||||
case GDK_KEY_dead_macron:
|
||||
case GDK_KEY_dead_breve:
|
||||
case GDK_KEY_dead_abovedot:
|
||||
case GDK_KEY_dead_diaeresis:
|
||||
case GDK_KEY_dead_abovering:
|
||||
case GDK_KEY_dead_doubleacute:
|
||||
case GDK_KEY_dead_caron:
|
||||
case GDK_KEY_dead_cedilla:
|
||||
case GDK_KEY_dead_ogonek:
|
||||
case GDK_KEY_dead_iota:
|
||||
case GDK_KEY_dead_voiced_sound:
|
||||
case GDK_KEY_dead_semivoiced_sound:
|
||||
case GDK_KEY_dead_belowdot:
|
||||
case GDK_KEY_dead_hook:
|
||||
case GDK_KEY_dead_horn:
|
||||
case GDK_KEY_dead_stroke:
|
||||
case GDK_KEY_dead_abovecomma:
|
||||
case GDK_KEY_dead_abovereversedcomma:
|
||||
case GDK_KEY_dead_doublegrave:
|
||||
case GDK_KEY_dead_belowring:
|
||||
case GDK_KEY_dead_belowmacron:
|
||||
case GDK_KEY_dead_belowcircumflex:
|
||||
case GDK_KEY_dead_belowtilde:
|
||||
case GDK_KEY_dead_belowbreve:
|
||||
case GDK_KEY_dead_belowdiaeresis:
|
||||
case GDK_KEY_dead_invertedbreve:
|
||||
case GDK_KEY_dead_belowcomma:
|
||||
case GDK_KEY_dead_currency:
|
||||
case GDK_KEY_dead_a:
|
||||
case GDK_KEY_dead_A:
|
||||
case GDK_KEY_dead_e:
|
||||
case GDK_KEY_dead_E:
|
||||
case GDK_KEY_dead_i:
|
||||
case GDK_KEY_dead_I:
|
||||
case GDK_KEY_dead_o:
|
||||
case GDK_KEY_dead_O:
|
||||
case GDK_KEY_dead_u:
|
||||
case GDK_KEY_dead_U:
|
||||
case GDK_KEY_dead_small_schwa:
|
||||
case GDK_KEY_dead_capital_schwa:
|
||||
# elif USE_GTK_VERSION_2_0
|
||||
case GDK_dead_grave:
|
||||
case GDK_dead_acute:
|
||||
case GDK_dead_circumflex:
|
||||
key = '^';
|
||||
break;
|
||||
case GDK_dead_tilde:
|
||||
case GDK_dead_macron:
|
||||
case GDK_dead_breve:
|
||||
case GDK_dead_abovedot:
|
||||
case GDK_dead_diaeresis:
|
||||
case GDK_dead_abovering:
|
||||
case GDK_dead_doubleacute:
|
||||
case GDK_dead_caron:
|
||||
case GDK_dead_cedilla:
|
||||
case GDK_dead_ogonek:
|
||||
case GDK_dead_iota:
|
||||
case GDK_dead_voiced_sound:
|
||||
case GDK_dead_semivoiced_sound:
|
||||
case GDK_dead_belowdot:
|
||||
case GDK_dead_hook:
|
||||
case GDK_dead_horn:
|
||||
case GDK_dead_stroke:
|
||||
case GDK_dead_abovecomma:
|
||||
case GDK_dead_abovereversedcomma:
|
||||
case GDK_dead_doublegrave:
|
||||
case GDK_dead_belowring:
|
||||
case GDK_dead_belowmacron:
|
||||
case GDK_dead_belowcircumflex:
|
||||
case GDK_dead_belowtilde:
|
||||
case GDK_dead_belowbreve:
|
||||
case GDK_dead_belowdiaeresis:
|
||||
case GDK_dead_invertedbreve:
|
||||
case GDK_dead_belowcomma:
|
||||
case GDK_dead_currency:
|
||||
key = '?';
|
||||
break;
|
||||
case GDK_dead_a:
|
||||
EDN_INFO("dead a");
|
||||
//key = 'a';
|
||||
break;
|
||||
case GDK_dead_A:
|
||||
case GDK_dead_e:
|
||||
case GDK_dead_E:
|
||||
case GDK_dead_i:
|
||||
case GDK_dead_I:
|
||||
case GDK_dead_o:
|
||||
case GDK_dead_O:
|
||||
case GDK_dead_u:
|
||||
case GDK_dead_U:
|
||||
case GDK_dead_small_schwa:
|
||||
case GDK_dead_capital_schwa:
|
||||
# endif
|
||||
key = '?';
|
||||
break;
|
||||
# ifdef USE_GTK_VERSION_3_0
|
||||
case GDK_KEY_Caps_Lock:
|
||||
# elif USE_GTK_VERSION_2_0
|
||||
case GDK_Caps_Lock:
|
||||
# endif
|
||||
controlKey = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
// Transform in unicode the input :
|
||||
//EDN_INFO("key : " << key);
|
||||
int32_t unichar = gdk_keyval_to_unicode(key);
|
||||
//EDN_INFO("unichar : " << unichar);
|
||||
if (unichar == 0) {
|
||||
Utf8Out[0] = (char)key;
|
||||
Utf8Out[1] = '\0';
|
||||
//EDN_INFO("NON UTF8 : " << Utf8Out);
|
||||
} else {
|
||||
// Generate UTF8 form UniCode
|
||||
convertUnicodeToUtf8(unichar, Utf8Out);
|
||||
//EDN_INFO("UTF8 : " << Utf8Out);
|
||||
#if 0
|
||||
printf(" convertUnicodeToUtf8 : \"0x%08x\" ==> unichar=%d %s\n", key, unichar, Utf8Out);
|
||||
for (int32_t uu=0; uu < strlen(Utf8Out); uu++) {
|
||||
|
192
avancement.boo
192
avancement.boo
@@ -1,130 +1,70 @@
|
||||
# For the first realease 1.0 :
|
||||
* Syst<73>mes :
|
||||
- Affichage ligne par ligne
|
||||
- Correction du bug de hl(sub patern empty)
|
||||
- Verifier si le hldisplay reaserch marche avec l'id et pas l'id-1
|
||||
- Gestion correct des charsets
|
||||
* Gui :
|
||||
- Confirmer avant de fermer
|
||||
- Demander de sauver
|
||||
- Controle des droits
|
||||
- Hl-gui management
|
||||
- Event quand un fichier ouvert a changer
|
||||
- Affichage des fichiers binaires
|
||||
- Ctags phase 1
|
||||
- Project manager phase 1
|
||||
|
||||
# action a faire (ordonner par r<>vision) :
|
||||
* 0.1.X :
|
||||
- gui : demander l'enregistrement avant de fermer (quand c'est n<>cessaire)
|
||||
- Edn::VectorType : Rewrite the erase fuction to support start => stop and Erase len methode ...
|
||||
* 0.2.X :
|
||||
- gui : Mise en place d'un display ligne par ligne
|
||||
- gui : Demander la cr<63>ation de nouveaux fichier quand il n'existe pas (a l'ouverture en ligne de commande)
|
||||
- sys : Mise en place des colorisation de base pour le
|
||||
* java script
|
||||
* SQL
|
||||
- gui : ascenceur quand n<>cessaire
|
||||
- Catch Shift+TAB
|
||||
- Correction du bug des entr<74> bizard tel que les chapot et les guillemets
|
||||
- pb de s<>lection quand la ligne est pleine et la premi<6D>re ligne s<>ctionn<6E>e.
|
||||
- PB de copier coller sur les <20><><EFBFBD> ...
|
||||
* 0.3.X :
|
||||
- Charset UTF-8 et iso 8859-15 correcte
|
||||
- Transformation de charset a la vol<6F>e
|
||||
- Charset par defaut
|
||||
- D<EFBFBD>tection de charset (<28> mettre dans les todo de charset)
|
||||
==> regarder les librairies open sources
|
||||
* 0.4.X :
|
||||
- SEARCH : get selected text in the search windows
|
||||
- SEARCH : Select the search windows when call crtl+F
|
||||
- gui : ordonner les fichier ouvert par nom ...
|
||||
* 0.5.X :
|
||||
- project : list of current files open
|
||||
- gui : Parameters : et en autre la taille de la police ... et voir pour la r<>cup<75>rer sur le system... et ce serait cool...
|
||||
- sys : replace ALL
|
||||
|
||||
# Text Editor
|
||||
|
||||
- 90% Indent group with Tabulation and shift+tabulation
|
||||
- 100% Basic smart indent : Recopy the start of the previous line when return (copy '\t' and ' ')
|
||||
- 0% Replace Tab with space when press the key
|
||||
- 0% Request save user when quit the software
|
||||
- 0% Hide/Display scroll element when not usefull
|
||||
- 10% Regular expression search
|
||||
- 80% Colorisation syntaxique
|
||||
- 80% Copier / coller ==> probleme sur les caract<63>res sp<73>ciaux comme <20> <20> <20> ...
|
||||
- 10% Search
|
||||
- 10% Replace
|
||||
- 80% Undo / Redo ajout de caract<63>res autre que " ", "\t" et "\n"
|
||||
- 0% Selectionner en colone
|
||||
- 0% Supression multiple de ligne par la commande ctrl+D
|
||||
- 0% Multi-file search ==> display it in a result buffer (clickable only)
|
||||
- 0% basic UTF8 string management ==> bad with the curent buffer
|
||||
- 0% Replace in all elements of the project file or a part
|
||||
- 0% Multiple Text Editor in the same Time
|
||||
- 0% Support des Macros ==> In python ??? or other ...
|
||||
|
||||
# Ctags :
|
||||
- 100% Parse (use the ctags parser)
|
||||
- 100% Find
|
||||
- 50% Jump
|
||||
- 10% History of move (with display)
|
||||
|
||||
# Buffer Viewer :
|
||||
- 100% Right menu
|
||||
- 100% Display buffer in color
|
||||
- 100% Display buffer Saved / not Saved
|
||||
- 0% Image of the type of buffer (optionnal)
|
||||
|
||||
# Configuration :
|
||||
- 0% Creer une IHM pour les configurations de base
|
||||
- 0% Creer une IHM pour l'edition du hightliner syntaxique (quand il marchera...)
|
||||
- 0% Creer une IHM pour les couleurs (voir la lier avec l'IHM pour le hightliner)
|
||||
- 0% saugegarde automatique de la configuration ou sur demande...
|
||||
|
||||
# Project manager :
|
||||
- 0% Faire un editeur des dossiers du projet a ouvrir ==> automatiquement ajouter dans les Ctags
|
||||
- 0% Base
|
||||
- 0% Save All
|
||||
- 0% TreeView
|
||||
|
||||
# Tree View :
|
||||
- 0% View
|
||||
- 0% Open File
|
||||
- 0% Jump to the curent File
|
||||
- 0% Hide CVS / Git / SVN elements
|
||||
|
||||
# Diff :
|
||||
- 0% generate a Diff between files
|
||||
- 0% same in binary
|
||||
|
||||
# Git :
|
||||
- 0% Diff with the current wersion commited (local)
|
||||
- 0% Git branch local display (as gitk --all) ...
|
||||
- 0% view git chawan history ... (git Log)
|
||||
|
||||
# CVS :
|
||||
- 0% check the version with CVS
|
||||
- 0% commit
|
||||
- 0% display the Branch
|
||||
- 0% Select a new repository ...
|
||||
|
||||
# Publication :
|
||||
- 0% faire une publication du logiciel sur le Web... (need a stable version)
|
||||
- 0% faire un package
|
||||
|
||||
# Repository :
|
||||
- 0% create my own repository (@home)
|
||||
- 0% manage right with Git
|
||||
- 0% create a website fot it (@home)
|
||||
- 0% reserve edn.org
|
||||
|
||||
# plugin : (never i think ...)
|
||||
- 0% Comprendre comment faire un system avec des plugin (interne et simple)...
|
||||
- 0% En c++ compiler seulement, pas d'interface pyton ou autre c'est trop moche.
|
||||
|
||||
* 0.2.X :
|
||||
- gui : Amelioration du full-screen et du display de base (sans l'entete de la fenetre)
|
||||
- gui : Mise en place d'un display ligne par ligne
|
||||
- gui : ascenceur quand n<>cessaire
|
||||
- gui : Demander la cr<63>ation de nouveaux fichier quand il n'existe pas (a l'ouverture en ligne de commande)
|
||||
- sys : Mise en place des colorisation de base pour le
|
||||
* java script
|
||||
* SQL
|
||||
- sys : replace TAB with space when Tab is pressed
|
||||
- sys : Catch F[1-12] ==> for user personal event
|
||||
- BUG : Correction du bug des entr<74> bizard tel que les chapot et les guillemets
|
||||
- BUG : de s<>lection quand la ligne est pleine et la premi<6D>re ligne s<>ctionn<6E>e. ==> regarder apr<70>s avoir fait le display ligne par ligne...
|
||||
- BUG : de copier coller sur les <20><><EFBFBD> ...
|
||||
- BUG : les caract<63>re multiples type chapot ...
|
||||
- BUG : italique non g<>n<EFBFBD>r<EFBFBD>
|
||||
* 0.3.X :
|
||||
- SEARCH : get selected text in the search windows
|
||||
- SEARCH : Select the search windows when call crtl+F
|
||||
- sys : personal property file in the ~/.edn ou ~/.gnome/edn
|
||||
- gui : Ordonner les fichier ouvert par nom ...
|
||||
- gui : parameter gui : et en autre la taille de la police ... et voir pour la r<>cup<75>rer sur le system... et ce serait cool...
|
||||
- gui : Color list selection
|
||||
- gui : Hightlight gui management
|
||||
* 0.4.X :
|
||||
- sys : Charset UTF-8 et iso 8859-15 correcte
|
||||
- sys : Transformation de charset a la vol<6F>e
|
||||
- sys : Charset par defaut
|
||||
- Sys : D<EFBFBD>tection de charset (<28> mettre dans les todo de charset)
|
||||
==> regarder les librairies open sources
|
||||
* 0.5.X :
|
||||
- prj : list of current files open
|
||||
- prj : open ctags file
|
||||
- sys : replace ALL
|
||||
- sys : Undo / Redo ajout de caract<63>res autre que " ", "\t" et "\n"
|
||||
* 0.6.X :
|
||||
- sys : right management ...
|
||||
- HL : Normalyse all the system of regular expression with <> chapot ...
|
||||
- HL : sub parsing of the reg exp
|
||||
- sys : update all language
|
||||
* 0.7.X :
|
||||
- sys : Select in colones
|
||||
- sys : Select all the same search in the current buffer ... ( HL en vert ou jaune ...)
|
||||
- sys : Multi-file search ==> display it in a result buffer (clickable only)
|
||||
* 0.9.X :
|
||||
- int : Redo all the doxygen ...
|
||||
* 1.0.X :
|
||||
- gui : open file in binary
|
||||
- sys : compare binary files
|
||||
- sys : compare normal files
|
||||
* 1.1.X :
|
||||
- gui : Display content of a folder
|
||||
- gui : add a treeview display
|
||||
- sys : evenement losqu'un fichier est modifier a l'exterieur...
|
||||
- sys : image du type de fichier dans le buffer list view
|
||||
* 1.2.X :
|
||||
- PRJ : treeview des dossier a ouvrir
|
||||
- PRJ : GUI de management
|
||||
- PRJ : Save all in project
|
||||
- SYS : Save all modify files
|
||||
* 1.3.X :
|
||||
- sys : version system management (git, cvs, ...)
|
||||
* 1.4.X :
|
||||
- SYS : Macro generation and acquisition
|
||||
* 1.5.X :
|
||||
- GDB : Acces interne pour un debuggeur ==> comme cgdb ... avec l'acces assembleur en plus
|
||||
|
||||
# note utiles :
|
||||
http://majutsushi.github.com/tagbar/ ==> je devrais regarder ca pour savoir ce que je peux faire avec du ctags
|
||||
CTags : Set the parsing methode : "ctags -R --fields=+n Sources/"
|
||||
CTags : Set the parsing methode : "ctags -R --fields=+n Sources/ /usr/include/gtk-3.0/"
|
||||
|
@@ -18,7 +18,7 @@
|
||||
<color name="SelectedText" FG="#AAAAAA" BG="#225a09"/>
|
||||
<color name="error" FG="#FF0000"/>
|
||||
<color name="doubleQuoteText" FG="#00fF00"/>
|
||||
|
||||
|
||||
<!-- hightline description : -->
|
||||
<color name="type" FG="#56bf10" bold="yes"/>
|
||||
<color name="storageKeyword" FG="#5c8fed"/>
|
||||
|
@@ -39,7 +39,7 @@
|
||||
</rule>
|
||||
<rule name="my comment">
|
||||
<color>comment</color>
|
||||
<start>//</start>
|
||||
<start>(//|@)</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
</rule>
|
||||
|
@@ -30,7 +30,7 @@
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<start>\@for|done|do|while|in|if|then|else|fi\@</start>
|
||||
<start>\@for|done|do|while|in|if|elif|then|else|fi\@</start>
|
||||
</rule>
|
||||
<rule name="my Variable">
|
||||
<color>keyword</color>
|
||||
|
@@ -28,7 +28,7 @@
|
||||
</rule>
|
||||
<rule name="global inclusion">
|
||||
<color>preprocesseur</color>
|
||||
<start>global </start>
|
||||
<start>global( |\t)+</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
</rule>
|
||||
|
Reference in New Issue
Block a user