Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
karudu
/
C-editor
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Pipelines
Snippets
Members
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
28835234
authored
Mar 30, 2022
by
karudu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
SourceView süntaksi värvimine, faili muutmisel näidatakse *
parent
cb6b509a
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
57 additions
and
19 deletions
ceditor.c
ceditor.h
menubar.c
statusbar.c
tab.c
textview.c
textview.h
ui.c
ceditor.c
View file @
28835234
#include "ceditor.h"
#include "ui.h"
/* TODO
Klahvikombinatsioonid
*/
int
main
(
int
argc
,
char
**
argv
)
{
gtk_init
(
&
argc
,
&
argv
);
...
...
ceditor.h
View file @
28835234
#ifndef CEDITOR_H
#define CEDITOR_H
#define SOURCEVIEW
#include <gtk/gtk.h>
#ifdef SOURCEVIEW
#include <gtksourceview/gtksource.h>
#endif
typedef
struct
{
GtkWidget
*
Aken
;
// Programmi aken
char
*
FailiNimi
;
// Viit faili nimele, 0 kui nime veel pole
int
OnMuudetud
;
// Kas teksti on muudetud
GtkWidget
*
Pealkiri
;
// Vahekaardi pealkiri
char
*
PealkiriTekst
;
// Originaalne pealkirja tekst
GtkWidget
*
Box
;
// Vahekaardi box
GtkWidget
*
TextView
;
// Vahekaardi tekstiaken
GtkTextView
*
Puhver
;
// Vahekaardi tekstipuhver
GtkWidget
*
ScrollWindow
;
// Tekstiakna scroll
GtkWidget
*
StatusBar
;
// Status bar
GtkSourceLanguageManager
*
LangManager
;
GtkSourceLanguage
*
Language
;
}
tab
;
typedef
struct
...
...
menubar.c
View file @
28835234
...
...
@@ -44,6 +44,7 @@ void Ava(GtkWidget *Nupp, gpointer Data)
gtk_text_buffer_set_modified
(
Tab
->
Puhver
,
FALSE
);
// Tekst on muutmata
Tab
->
FailiNimi
=
Nimi
;
UuendaTabiPealkirja
(
Tab
,
Nimi
);
UuendaTabMuudetud
(
Tab
);
}
else
{
...
...
@@ -72,6 +73,7 @@ int SalvestaFail(ui *UI, tab *Tab)
GtkWidget
*
Dialog
=
0
;
if
(
Tab
->
FailiNimi
)
// Fail on juba olemas
{
if
(
gtk_text_buffer_get_modified
(
Puhver
)
==
0
)
return
;
// Ära salvesta, kui midagi pole muudetud
Nimi
=
Tab
->
FailiNimi
;
}
else
// Salvestame uue faili
...
...
@@ -107,7 +109,9 @@ int SalvestaFail(ui *UI, tab *Tab)
Tab
->
FailiNimi
=
Nimi
;
UuendaTabiPealkirja
(
Tab
,
Nimi
);
}
else
g_free
(
Nimi
);
UuendaTabMuudetud
(
Tab
);
g_free
(
Sisu
);
if
(
Dialog
)
gtk_widget_destroy
(
Dialog
);
...
...
@@ -170,7 +174,8 @@ void SalvestaNimega(GtkWidget *Nupp, gpointer Data)
Tab
->
FailiNimi
=
Nimi
;
UuendaTabiPealkirja
(
Tab
,
Nimi
);
}
else
g_free
(
Nimi
);
UuendaTabMuudetud
(
Tab
);
}
else
{
...
...
statusbar.c
View file @
28835234
tab.c
View file @
28835234
...
...
@@ -20,12 +20,9 @@ void LisaTab(ui *UI)
Tab
->
Aken
=
UI
->
Aken
;
// Tekstiaken
#ifdef SOURCEVIEW
Tab
->
TextView
=
gtk_source_view_new
();
// Loo tekstiaken
#else
Tab
->
TextView
=
gtk_text_view_new
();
// Loo tekstiaken
#endif
Tab
->
Puhver
=
gtk_text_view_get_buffer
(
GTK_TEXT_VIEW
(
Tab
->
TextView
));
// Tekstiakna teksti puhver
Tab
->
OnMuudetud
=
0
;
// Scroll window
Tab
->
ScrollWindow
=
gtk_scrolled_window_new
(
NULL
,
NULL
);
// Loo scroll aken
...
...
@@ -34,8 +31,10 @@ void LisaTab(ui *UI)
gtk_scrolled_window_set_shadow_type
(
GTK_SCROLLED_WINDOW
(
Tab
->
ScrollWindow
),
GTK_SHADOW_ETCHED_IN
);
// Status bar
Tab
->
StatusBar
=
gtk_statusbar_new
();
// Teksti muutuse callback, uuendab rida/veergu
g_signal_connect
(
Tab
->
Puhver
,
"changed"
,
G_CALLBACK
(
UuendaRidaVeerg
),
Tab
->
StatusBar
);
// Teksti muutuse callback
g_signal_connect
(
Tab
->
Puhver
,
"changed"
,
G_CALLBACK
(
TekstMuudetud
),
Tab
);
// Modified callback
g_signal_connect
(
Tab
->
Puhver
,
"modified-changed"
,
G_CALLBACK
(
TekstModified
),
Tab
);
// Copy/paste lohistamise callback, uuendab samuti
g_signal_connect_object
(
Tab
->
Puhver
,
"mark_set"
,
G_CALLBACK
(
TekstMarkSet
),
Tab
->
StatusBar
,
0
);
...
...
@@ -46,6 +45,11 @@ void LisaTab(ui *UI)
// Pealkiri
Tab
->
Pealkiri
=
gtk_label_new
(
"(uus)"
);
Tab
->
PealkiriTekst
=
"(uus)"
;
Tab
->
LangManager
=
gtk_source_language_manager_get_default
();
Tab
->
Language
=
gtk_source_language_manager_get_language
(
Tab
->
LangManager
,
"c"
);
gtk_source_buffer_set_language
(
Tab
->
Puhver
,
Tab
->
Language
);
// Lisa loodud tab notebook'i
gtk_notebook_append_page
(
GTK_NOTEBOOK
(
UI
->
Notebook
),
Tab
->
Box
,
Tab
->
Pealkiri
);
...
...
@@ -84,13 +88,31 @@ void KustutaTab(ui *UI, int Indeks)
// Uuenda vahekaardi pealkirja (faili nime)
void
UuendaTabiPealkirja
(
tab
*
Tab
,
char
*
Nimi
)
{
char
*
Tekst
=
g_path_get_basename
(
Nimi
);
// Eralda faili nimi
gtk_label_set_label
(
GTK_LABEL
(
Tab
->
Pealkiri
),
Tekst
);
g_free
(
Tekst
);
Tab
->
Pealkiri
Tekst
=
g_path_get_basename
(
Nimi
);
// Eralda faili nimi
gtk_label_set_label
(
GTK_LABEL
(
Tab
->
Pealkiri
),
Tab
->
Pealkiri
Tekst
);
// Terve faili nimi tooltip'is
gtk_widget_set_tooltip_text
(
Tab
->
Pealkiri
,
Nimi
);
}
void
UuendaTabMuudetud
(
tab
*
Tab
)
{
int
Muudetud
=
gtk_text_buffer_get_modified
(
Tab
->
Puhver
);
if
(
Tab
->
OnMuudetud
==
0
)
{
char
*
Tekst
=
g_strdup_printf
(
"%s *"
,
gtk_label_get_text
(
Tab
->
Pealkiri
));
gtk_label_set_label
(
GTK_LABEL
(
Tab
->
Pealkiri
),
Tekst
);
g_free
(
Tekst
);
Tab
->
OnMuudetud
=
1
;
}
else
if
(
!
Muudetud
)
{
gtk_label_set_label
(
GTK_LABEL
(
Tab
->
Pealkiri
),
Tab
->
PealkiriTekst
);
Tab
->
OnMuudetud
=
0
;
}
}
// Kutsutakse igal vahekaardi muutmisel
void
TabMuudetud
(
GtkWidget
*
Notebook
,
GtkWidget
*
Tab
,
guint
Indeks
,
gpointer
Data
)
{
...
...
textview.c
View file @
28835234
#include "textview.h"
// Teksti muutmise callback
void
TekstMuudetud
(
GtkTextBuffer
*
Puhver
,
tab
*
Tab
)
{
UuendaRidaVeerg
(
Tab
->
Puhver
,
Tab
->
StatusBar
);
}
// Teksti modified olek muutus
void
TekstModified
(
GtkTextBuffer
*
Puhver
,
tab
*
Tab
)
{
UuendaTabMuudetud
(
Tab
);
}
// Kutsutakse copy/paste lohistamise korral, praegu lihtsalt uuendab rida/veergu
void
TekstMarkSet
(
GtkTextBuffer
*
Puhver
,
const
GtkTextIter
*
new_location
,
GtkTextMark
*
Mark
,
gpointer
Data
)
{
...
...
textview.h
View file @
28835234
...
...
@@ -3,6 +3,8 @@
#include "ceditor.h"
void
TekstMuudetud
(
GtkTextBuffer
*
Puhver
,
tab
*
Tab
);
void
TekstModified
(
GtkTextBuffer
*
Puhver
,
tab
*
Tab
);
void
TekstMarkSet
(
GtkTextBuffer
*
Puhver
,
const
GtkTextIter
*
new_location
,
GtkTextMark
*
Mark
,
gpointer
Data
);
#endif // TEXTVIEW_H
ui.c
View file @
28835234
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment