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
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
291 additions
and
258 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 "ceditor.h"
#include "ui.h"
#include "ui.h"
/* TODO
Klahvikombinatsioonid
*/
int
main
(
int
argc
,
char
**
argv
)
int
main
(
int
argc
,
char
**
argv
)
{
{
gtk_init
(
&
argc
,
&
argv
);
gtk_init
(
&
argc
,
&
argv
);
ui
*
UI
=
LooUI
();
ui
*
UI
=
LooUI
();
gtk_widget_show_all
(
UI
->
Aken
);
// Näita akent
gtk_widget_show_all
(
UI
->
Aken
);
// Näita akent
gtk_main
();
gtk_main
();
return
0
;
return
0
;
}
}
ceditor.h
View file @
28835234
#ifndef CEDITOR_H
#ifndef CEDITOR_H
#define CEDITOR_H
#define CEDITOR_H
#define SOURCEVIEW
#include <gtk/gtk.h>
#include <gtk/gtk.h>
#ifdef SOURCEVIEW
#include <gtksourceview/gtksource.h>
#include <gtksourceview/gtksource.h>
#endif
typedef
struct
typedef
struct
{
{
GtkWidget
*
Aken
;
// Programmi aken
GtkWidget
*
Aken
;
// Programmi aken
char
*
FailiNimi
;
// Viit faili nimele, 0 kui nime veel pole
char
*
FailiNimi
;
// Viit faili nimele, 0 kui nime veel pole
int
OnMuudetud
;
// Kas teksti on muudetud
GtkWidget
*
Pealkiri
;
// Vahekaardi pealkiri
GtkWidget
*
Box
;
// Vahekaardi box
GtkWidget
*
Pealkiri
;
// Vahekaardi pealkiri
GtkWidget
*
TextView
;
// Vahekaardi tekstiaken
char
*
PealkiriTekst
;
// Originaalne pealkirja tekst
GtkTextView
*
Puhver
;
// Vahekaardi tekstipuhver
GtkWidget
*
Box
;
// Vahekaardi box
GtkWidget
*
ScrollWindow
;
// Tekstiakna scroll
GtkWidget
*
TextView
;
// Vahekaardi tekstiaken
GtkWidget
*
StatusBar
;
// Status bar
GtkTextView
*
Puhver
;
// Vahekaardi tekstipuhver
GtkWidget
*
ScrollWindow
;
// Tekstiakna scroll
GtkWidget
*
StatusBar
;
// Status bar
GtkSourceLanguageManager
*
LangManager
;
GtkSourceLanguage
*
Language
;
}
tab
;
}
tab
;
typedef
struct
typedef
struct
{
{
GtkWidget
*
Aken
;
// Programmi aken
GtkWidget
*
Aken
;
// Programmi aken
GtkWidget
*
Box
;
// Akna box
GtkWidget
*
Box
;
// Akna box
GtkWidget
*
MenuBar
;
// Ülaosa menüü
GtkWidget
*
MenuBar
;
// Ülaosa menüü
GtkWidget
*
Notebook
;
// Notebook vahekaartidega
GtkWidget
*
Notebook
;
// Notebook vahekaartidega
GtkWidget
*
ToolBar
;
//Tool bar
GtkWidget
*
ToolBar
;
//Tool bar
GtkWidget
*
AccelGroup
;
// Accel group nuppude jaoks
GtkWidget
*
AccelGroup
;
// Accel group nuppude jaoks
// Viited nuppudele nende sisse/välja lülitamiseks
// Viited nuppudele nende sisse/välja lülitamiseks
GtkWidget
*
FailMenuAva
;
GtkWidget
*
FailMenuAva
;
GtkWidget
*
FailMenuSalvesta
;
GtkWidget
*
FailMenuSalvesta
;
GtkWidget
*
FailMenuSalvestaN
;
GtkWidget
*
FailMenuSalvestaN
;
GtkWidget
*
FailMenuSulgeV
;
GtkWidget
*
FailMenuSulgeV
;
tab
*
Tabid
;
// Vahekaartide massiiv
tab
*
Tabid
;
// Vahekaartide massiiv
int
PraeguneTab
;
// Praegune valitud vahekaart
int
PraeguneTab
;
// Praegune valitud vahekaart
int
TabidN
;
// Mitu vahekaarti on avatud
int
TabidN
;
// Mitu vahekaarti on avatud
//toolbari nupud
//toolbari nupud
GtkToolItem
*
Undo
;
//undo nupp
GtkToolItem
*
Undo
;
//undo nupp
GtkToolItem
*
Redo
;
//redo nupp
GtkToolItem
*
Redo
;
//redo nupp
}
ui
;
}
ui
;
#endif // CEDITOR_H
#endif // CEDITOR_H
menubar.c
View file @
28835234
This diff is collapsed.
Click to expand it.
statusbar.c
View file @
28835234
...
@@ -3,16 +3,16 @@
...
@@ -3,16 +3,16 @@
// Uuenda näidatud rida ja veergu kursori asukoha järgi
// Uuenda näidatud rida ja veergu kursori asukoha järgi
void
UuendaRidaVeerg
(
GtkTextBuffer
*
Puhver
,
GtkStatusbar
*
StatusBar
)
void
UuendaRidaVeerg
(
GtkTextBuffer
*
Puhver
,
GtkStatusbar
*
StatusBar
)
{
{
GtkTextIter
Iter
;
GtkTextIter
Iter
;
// Leia kursori asukoht
// Leia kursori asukoht
gtk_text_buffer_get_iter_at_mark
(
Puhver
,
&
Iter
,
gtk_text_buffer_get_insert
(
Puhver
));
gtk_text_buffer_get_iter_at_mark
(
Puhver
,
&
Iter
,
gtk_text_buffer_get_insert
(
Puhver
));
// Võta selle rida ja veerg
// Võta selle rida ja veerg
gint
Rida
=
gtk_text_iter_get_line
(
&
Iter
);
gint
Rida
=
gtk_text_iter_get_line
(
&
Iter
);
gint
Veerg
=
gtk_text_iter_get_line_offset
(
&
Iter
);
gint
Veerg
=
gtk_text_iter_get_line_offset
(
&
Iter
);
gtk_statusbar_pop
(
StatusBar
,
0
);
// Võta eelmine tekst ära
gtk_statusbar_pop
(
StatusBar
,
0
);
// Võta eelmine tekst ära
gchar
*
Tekst
=
g_strdup_printf
(
"%d:%d"
,
Rida
+
1
,
Veerg
+
1
);
// Loo string rea ja veeruga
gchar
*
Tekst
=
g_strdup_printf
(
"%d:%d"
,
Rida
+
1
,
Veerg
+
1
);
// Loo string rea ja veeruga
gtk_statusbar_push
(
StatusBar
,
0
,
Tekst
);
// Näita teksti
gtk_statusbar_push
(
StatusBar
,
0
,
Tekst
);
// Näita teksti
g_free
(
Tekst
);
g_free
(
Tekst
);
}
}
tab.c
View file @
28835234
...
@@ -3,128 +3,150 @@
...
@@ -3,128 +3,150 @@
// Loo uus vahekaart ja pane see lõppu
// Loo uus vahekaart ja pane see lõppu
void
LisaTab
(
ui
*
UI
)
void
LisaTab
(
ui
*
UI
)
{
{
int
TabidN
=
UI
->
TabidN
;
int
TabidN
=
UI
->
TabidN
;
if
(
TabidN
==
0
)
if
(
TabidN
==
0
)
{
{
UI
->
Tabid
=
g_malloc
(
sizeof
(
tab
));
// Loo massiiv, kui see pole olemas
UI
->
Tabid
=
g_malloc
(
sizeof
(
tab
));
// Loo massiiv, kui see pole olemas
}
}
else
else
{
{
UI
->
Tabid
=
g_realloc
(
UI
->
Tabid
,
sizeof
(
tab
)
*
(
TabidN
+
1
));
// Lisa vahekaart massiivi
UI
->
Tabid
=
g_realloc
(
UI
->
Tabid
,
sizeof
(
tab
)
*
(
TabidN
+
1
));
// Lisa vahekaart massiivi
}
}
tab
*
Tab
=
&
UI
->
Tabid
[
TabidN
];
tab
*
Tab
=
&
UI
->
Tabid
[
TabidN
];
UI
->
TabidN
++
;
UI
->
TabidN
++
;
Tab
->
FailiNimi
=
0
;
// Faili veel pole
Tab
->
FailiNimi
=
0
;
// Faili veel pole
Tab
->
Aken
=
UI
->
Aken
;
Tab
->
Aken
=
UI
->
Aken
;
// Tekstiaken
// Tekstiaken
#ifdef SOURCEVIEW
Tab
->
TextView
=
gtk_source_view_new
();
// Loo tekstiaken
Tab
->
TextView
=
gtk_source_view_new
();
// Loo tekstiaken
Tab
->
Puhver
=
gtk_text_view_get_buffer
(
GTK_TEXT_VIEW
(
Tab
->
TextView
));
// Tekstiakna teksti puhver
#else
Tab
->
OnMuudetud
=
0
;
Tab
->
TextView
=
gtk_text_view_new
();
// Loo tekstiaken
#endif
// Scroll window
Tab
->
Puhver
=
gtk_text_view_get_buffer
(
GTK_TEXT_VIEW
(
Tab
->
TextView
));
// Tekstiakna teksti puhver
Tab
->
ScrollWindow
=
gtk_scrolled_window_new
(
NULL
,
NULL
);
// Loo scroll aken
gtk_container_add
(
GTK_CONTAINER
(
Tab
->
ScrollWindow
),
Tab
->
TextView
);
// Scroll aknasse läheb tekstiaken
// Scroll window
gtk_scrolled_window_set_policy
(
GTK_SCROLLED_WINDOW
(
Tab
->
ScrollWindow
),
GTK_POLICY_AUTOMATIC
,
GTK_POLICY_AUTOMATIC
);
// Konfigureerimine
Tab
->
ScrollWindow
=
gtk_scrolled_window_new
(
NULL
,
NULL
);
// Loo scroll aken
gtk_scrolled_window_set_shadow_type
(
GTK_SCROLLED_WINDOW
(
Tab
->
ScrollWindow
),
GTK_SHADOW_ETCHED_IN
);
gtk_container_add
(
GTK_CONTAINER
(
Tab
->
ScrollWindow
),
Tab
->
TextView
);
// Scroll aknasse läheb tekstiaken
// Status bar
gtk_scrolled_window_set_policy
(
GTK_SCROLLED_WINDOW
(
Tab
->
ScrollWindow
),
GTK_POLICY_AUTOMATIC
,
GTK_POLICY_AUTOMATIC
);
// Konfigureerimine
Tab
->
StatusBar
=
gtk_statusbar_new
();
gtk_scrolled_window_set_shadow_type
(
GTK_SCROLLED_WINDOW
(
Tab
->
ScrollWindow
),
GTK_SHADOW_ETCHED_IN
);
// Teksti muutuse callback
// Status bar
g_signal_connect
(
Tab
->
Puhver
,
"changed"
,
G_CALLBACK
(
TekstMuudetud
),
Tab
);
Tab
->
StatusBar
=
gtk_statusbar_new
();
// Modified callback
// Teksti muutuse callback, uuendab rida/veergu
g_signal_connect
(
Tab
->
Puhver
,
"modified-changed"
,
G_CALLBACK
(
TekstModified
),
Tab
);
g_signal_connect
(
Tab
->
Puhver
,
"changed"
,
G_CALLBACK
(
UuendaRidaVeerg
),
Tab
->
StatusBar
);
// Copy/paste lohistamise callback, uuendab samuti
// Copy/paste lohistamise callback, uuendab samuti
g_signal_connect_object
(
Tab
->
Puhver
,
"mark_set"
,
G_CALLBACK
(
TekstMarkSet
),
Tab
->
StatusBar
,
0
);
g_signal_connect_object
(
Tab
->
Puhver
,
"mark_set"
,
G_CALLBACK
(
TekstMarkSet
),
Tab
->
StatusBar
,
0
);
// Box
// Box
Tab
->
Box
=
gtk_box_new
(
GTK_ORIENTATION_VERTICAL
,
0
);
// Vertikaalne box, 0px vahe
Tab
->
Box
=
gtk_box_new
(
GTK_ORIENTATION_VERTICAL
,
0
);
// Vertikaalne box, 0px vahe
gtk_box_pack_start
(
GTK_BOX
(
Tab
->
Box
),
Tab
->
ScrollWindow
,
TRUE
,
TRUE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
Tab
->
Box
),
Tab
->
ScrollWindow
,
TRUE
,
TRUE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
Tab
->
Box
),
Tab
->
StatusBar
,
FALSE
,
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
Tab
->
Box
),
Tab
->
StatusBar
,
FALSE
,
FALSE
,
0
);
// Pealkiri
// Pealkiri
Tab
->
Pealkiri
=
gtk_label_new
(
"(uus)"
);
Tab
->
Pealkiri
=
gtk_label_new
(
"(uus)"
);
Tab
->
PealkiriTekst
=
"(uus)"
;
// Lisa loodud tab notebook'i
Tab
->
LangManager
=
gtk_source_language_manager_get_default
();
gtk_notebook_append_page
(
GTK_NOTEBOOK
(
UI
->
Notebook
),
Tab
->
Box
,
Tab
->
Pealkiri
);
Tab
->
Language
=
gtk_source_language_manager_get_language
(
Tab
->
LangManager
,
"c"
);
gtk_widget_show_all
(
UI
->
Notebook
);
// Värskenda, et näha oleks
gtk_source_buffer_set_language
(
Tab
->
Puhver
,
Tab
->
Language
);
UuendaRidaVeerg
(
GTK_TEXT_BUFFER
(
Tab
->
Puhver
),
GTK_STATUSBAR
(
Tab
->
StatusBar
));
// Uuenda status bar'i, et seal midagi oleks
// Lisa loodud tab notebook'i
gtk_notebook_append_page
(
GTK_NOTEBOOK
(
UI
->
Notebook
),
Tab
->
Box
,
Tab
->
Pealkiri
);
gtk_source_view_set_show_line_numbers
(
GTK_SOURCE_VIEW
(
Tab
->
TextView
),
TRUE
);
//naita reanumbrid
gtk_widget_show_all
(
UI
->
Notebook
);
// Värskenda, et näha oleks
UuendaRidaVeerg
(
GTK_TEXT_BUFFER
(
Tab
->
Puhver
),
GTK_STATUSBAR
(
Tab
->
StatusBar
));
// Uuenda status bar'i, et seal midagi oleks
gtk_source_view_set_show_line_numbers
(
GTK_SOURCE_VIEW
(
Tab
->
TextView
),
TRUE
);
//naita reanumbrid
}
}
// Kustuta vahekaarti indeksil
// Kustuta vahekaarti indeksil
void
KustutaTab
(
ui
*
UI
,
int
Indeks
)
void
KustutaTab
(
ui
*
UI
,
int
Indeks
)
{
{
// Kustuta vahekaart
// Kustuta vahekaart
gtk_notebook_remove_page
(
GTK_NOTEBOOK
(
UI
->
Notebook
),
Indeks
);
gtk_notebook_remove_page
(
GTK_NOTEBOOK
(
UI
->
Notebook
),
Indeks
);
int
TabidN
=
UI
->
TabidN
;
int
TabidN
=
UI
->
TabidN
;
// Kui massiivis on pärast kustutatud vahekaarti neid veel,
// Kui massiivis on pärast kustutatud vahekaarti neid veel,
// siis nihuta need õigele kohale
// siis nihuta need õigele kohale
for
(
int
i
=
Indeks
;
i
<
TabidN
-
1
;
i
++
)
for
(
int
i
=
Indeks
;
i
<
TabidN
-
1
;
i
++
)
{
{
UI
->
Tabid
[
i
]
=
UI
->
Tabid
[
i
+
1
];
UI
->
Tabid
[
i
]
=
UI
->
Tabid
[
i
+
1
];
}
}
if
(
TabidN
==
1
)
if
(
TabidN
==
1
)
{
{
g_free
(
UI
->
Tabid
);
// Vabasta massiiv, kui see on nüüd tühi
g_free
(
UI
->
Tabid
);
// Vabasta massiiv, kui see on nüüd tühi
}
}
else
else
{
{
UI
->
Tabid
=
g_realloc
(
UI
->
Tabid
,
sizeof
(
tab
)
*
(
TabidN
-
1
));
// Eemalda vahekaart massiivist
UI
->
Tabid
=
g_realloc
(
UI
->
Tabid
,
sizeof
(
tab
)
*
(
TabidN
-
1
));
// Eemalda vahekaart massiivist
}
}
UI
->
TabidN
--
;
UI
->
TabidN
--
;
}
}
// Uuenda vahekaardi pealkirja (faili nime)
// Uuenda vahekaardi pealkirja (faili nime)
void
UuendaTabiPealkirja
(
tab
*
Tab
,
char
*
Nimi
)
void
UuendaTabiPealkirja
(
tab
*
Tab
,
char
*
Nimi
)
{
{
char
*
Tekst
=
g_path_get_basename
(
Nimi
);
// Eralda faili nimi
Tab
->
PealkiriTekst
=
g_path_get_basename
(
Nimi
);
// Eralda faili nimi
gtk_label_set_label
(
GTK_LABEL
(
Tab
->
Pealkiri
),
Tekst
);
gtk_label_set_label
(
GTK_LABEL
(
Tab
->
Pealkiri
),
Tab
->
PealkiriTekst
);
g_free
(
Tekst
);
// Terve faili nimi tooltip'is
// Terve faili nimi tooltip'is
gtk_widget_set_tooltip_text
(
Tab
->
Pealkiri
,
Nimi
);
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
// Kutsutakse igal vahekaardi muutmisel
void
TabMuudetud
(
GtkWidget
*
Notebook
,
GtkWidget
*
Tab
,
guint
Indeks
,
gpointer
Data
)
void
TabMuudetud
(
GtkWidget
*
Notebook
,
GtkWidget
*
Tab
,
guint
Indeks
,
gpointer
Data
)
{
{
ui
*
UI
=
(
ui
*
)
Data
;
ui
*
UI
=
(
ui
*
)
Data
;
UI
->
PraeguneTab
=
Indeks
;
UI
->
PraeguneTab
=
Indeks
;
}
}
// Sulge praegune vahekaart, väljastab 1, kui vahekaart suleti, 0 kui mitte
// Sulge praegune vahekaart, väljastab 1, kui vahekaart suleti, 0 kui mitte
int
SulgeTab
(
ui
*
UI
,
int
Indeks
)
int
SulgeTab
(
ui
*
UI
,
int
Indeks
)
{
{
tab
*
Tab
=
&
UI
->
Tabid
[
Indeks
];
tab
*
Tab
=
&
UI
->
Tabid
[
Indeks
];
// Kui tekst on muudetud, siis küsi üle, kas salvestada
// Kui tekst on muudetud, siis küsi üle, kas salvestada
if
(
gtk_text_buffer_get_modified
(
Tab
->
Puhver
))
if
(
gtk_text_buffer_get_modified
(
Tab
->
Puhver
))
{
{
GtkWidget
*
MsgDialog
=
gtk_message_dialog_new
(
UI
->
Aken
,
GTK_DIALOG_MODAL
,
GTK_MESSAGE_QUESTION
,
GtkWidget
*
MsgDialog
=
gtk_message_dialog_new
(
UI
->
Aken
,
GTK_DIALOG_MODAL
,
GTK_MESSAGE_QUESTION
,
GTK_BUTTONS_NONE
,
GTK_BUTTONS_NONE
,
"Salvesta fail enne sulgemist?"
);
"Salvesta fail enne sulgemist?"
);
gtk_dialog_add_buttons
(
MsgDialog
,
"Jah"
,
0
,
"Ei"
,
1
,
"Loobu"
,
2
,
NULL
);
gtk_dialog_add_buttons
(
MsgDialog
,
"Jah"
,
0
,
"Ei"
,
1
,
"Loobu"
,
2
,
NULL
);
gint
Vastus
=
gtk_dialog_run
(
GTK_DIALOG
(
MsgDialog
));
gint
Vastus
=
gtk_dialog_run
(
GTK_DIALOG
(
MsgDialog
));
gtk_widget_destroy
(
MsgDialog
);
gtk_widget_destroy
(
MsgDialog
);
if
(
Vastus
==
0
)
// Jah
if
(
Vastus
==
0
)
// Jah
{
{
// Kui fail salvestati, siis jätka, muidu ära tee midagi
// Kui fail salvestati, siis jätka, muidu ära tee midagi
if
(
SalvestaFail
(
UI
,
Tab
))
{}
if
(
SalvestaFail
(
UI
,
Tab
))
{}
else
return
0
;
else
return
0
;
}
}
else
if
(
Vastus
==
1
)
{}
// Ei
else
if
(
Vastus
==
1
)
{}
// Ei
else
return
0
;
else
return
0
;
}
}
KustutaTab
(
UI
,
Indeks
);
KustutaTab
(
UI
,
Indeks
);
return
1
;
return
1
;
}
}
textview.c
View file @
28835234
#include "textview.h"
#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
// Kutsutakse copy/paste lohistamise korral, praegu lihtsalt uuendab rida/veergu
void
TekstMarkSet
(
GtkTextBuffer
*
Puhver
,
const
GtkTextIter
*
new_location
,
GtkTextMark
*
Mark
,
gpointer
Data
)
void
TekstMarkSet
(
GtkTextBuffer
*
Puhver
,
const
GtkTextIter
*
new_location
,
GtkTextMark
*
Mark
,
gpointer
Data
)
{
{
UuendaRidaVeerg
(
Puhver
,
GTK_STATUSBAR
(
Data
));
UuendaRidaVeerg
(
Puhver
,
GTK_STATUSBAR
(
Data
));
}
}
textview.h
View file @
28835234
...
@@ -3,6 +3,8 @@
...
@@ -3,6 +3,8 @@
#include "ceditor.h"
#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
);
void
TekstMarkSet
(
GtkTextBuffer
*
Puhver
,
const
GtkTextIter
*
new_location
,
GtkTextMark
*
Mark
,
gpointer
Data
);
#endif // TEXTVIEW_H
#endif // TEXTVIEW_H
ui.c
View file @
28835234
...
@@ -3,126 +3,126 @@
...
@@ -3,126 +3,126 @@
// Sulge programm, tagastab 1 kui kõik vahekaardid sulgeti, 0 kui mitte
// Sulge programm, tagastab 1 kui kõik vahekaardid sulgeti, 0 kui mitte
int
Sulge
(
ui
*
UI
)
int
Sulge
(
ui
*
UI
)
{
{
for
(
int
i
=
UI
->
TabidN
-
1
;
i
>
-
1
;
i
--
)
for
(
int
i
=
UI
->
TabidN
-
1
;
i
>
-
1
;
i
--
)
{
{
gtk_notebook_set_current_page
(
UI
->
Notebook
,
i
);
gtk_notebook_set_current_page
(
UI
->
Notebook
,
i
);
if
(
SulgeTab
(
UI
,
i
))
if
(
SulgeTab
(
UI
,
i
))
{
{
continue
;
continue
;
}
}
else
else
{
{
gtk_notebook_set_current_page
(
UI
->
Notebook
,
UI
->
PraeguneTab
);
gtk_notebook_set_current_page
(
UI
->
Notebook
,
UI
->
PraeguneTab
);
return
0
;
return
0
;
}
}
}
}
return
1
;
return
1
;
}
}
gboolean
SulgeAken
(
GtkWidget
*
Nupp
,
GdkEvent
*
Event
,
gpointer
Data
)
gboolean
SulgeAken
(
GtkWidget
*
Nupp
,
GdkEvent
*
Event
,
gpointer
Data
)
{
{
ui
*
UI
=
(
ui
*
)
Data
;
ui
*
UI
=
(
ui
*
)
Data
;
if
(
Sulge
(
UI
))
if
(
Sulge
(
UI
))
{
{
gtk_main_quit
();
gtk_main_quit
();
return
FALSE
;
return
FALSE
;
}
else
return
TRUE
;
}
else
return
TRUE
;
}
}
// Väljub rakendusest
// Väljub rakendusest
void
Valju
(
GtkWidget
*
Nupp
,
gpointer
Data
)
void
Valju
(
GtkWidget
*
Nupp
,
gpointer
Data
)
{
{
ui
*
UI
=
(
ui
*
)
Data
;
ui
*
UI
=
(
ui
*
)
Data
;
if
(
Sulge
(
UI
))
gtk_main_quit
();;
if
(
Sulge
(
UI
))
gtk_main_quit
();;
}
}
// Lisa menüüsse menu item
// Lisa menüüsse menu item
void
LisaMenuItem
(
ui
*
UI
,
GtkWidget
*
Menu
,
GtkWidget
*
MenuItem
,
void
*
Callback
,
guint
Nupp
,
GdkModifierType
NuppMask
)
void
LisaMenuItem
(
ui
*
UI
,
GtkWidget
*
Menu
,
GtkWidget
*
MenuItem
,
void
*
Callback
,
guint
Nupp
,
GdkModifierType
NuppMask
)
{
{
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
Menu
),
MenuItem
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
Menu
),
MenuItem
);
g_signal_connect
(
MenuItem
,
"activate"
,
G_CALLBACK
(
Callback
),
UI
);
g_signal_connect
(
MenuItem
,
"activate"
,
G_CALLBACK
(
Callback
),
UI
);
if
(
Nupp
)
gtk_widget_add_accelerator
(
MenuItem
,
"activate"
,
UI
->
AccelGroup
,
Nupp
,
NuppMask
,
GTK_ACCEL_VISIBLE
);
if
(
Nupp
)
gtk_widget_add_accelerator
(
MenuItem
,
"activate"
,
UI
->
AccelGroup
,
Nupp
,
NuppMask
,
GTK_ACCEL_VISIBLE
);
}
}
// Loo programmi kasutajaliides
// Loo programmi kasutajaliides
ui
*
LooUI
()
ui
*
LooUI
()
{
{
ui
*
UI
=
g_malloc
(
sizeof
(
ui
));
ui
*
UI
=
g_malloc
(
sizeof
(
ui
));
// Aken
// Aken
UI
->
Aken
=
gtk_window_new
(
GTK_WINDOW_TOPLEVEL
);
// Loo aken
UI
->
Aken
=
gtk_window_new
(
GTK_WINDOW_TOPLEVEL
);
// Loo aken
gtk_window_set_position
(
GTK_WINDOW
(
UI
->
Aken
),
GTK_WIN_POS_CENTER
);
// Aken ekraani keskel
gtk_window_set_position
(
GTK_WINDOW
(
UI
->
Aken
),
GTK_WIN_POS_CENTER
);
// Aken ekraani keskel
gtk_window_set_default_size
(
GTK_WINDOW
(
UI
->
Aken
),
800
,
600
);
// Akna suurus
gtk_window_set_default_size
(
GTK_WINDOW
(
UI
->
Aken
),
800
,
600
);
// Akna suurus
gtk_window_set_title
(
GTK_WINDOW
(
UI
->
Aken
),
PEALKIRI
);
// Pealkiri
gtk_window_set_title
(
GTK_WINDOW
(
UI
->
Aken
),
PEALKIRI
);
// Pealkiri
g_signal_connect
(
UI
->
Aken
,
"delete-event"
,
G_CALLBACK
(
SulgeAken
),
UI
);
// Close nupu callback
g_signal_connect
(
UI
->
Aken
,
"delete-event"
,
G_CALLBACK
(
SulgeAken
),
UI
);
// Close nupu callback
// Box
// Box
UI
->
Box
=
gtk_box_new
(
GTK_ORIENTATION_VERTICAL
,
0
);
// Vertikaalne box, 0px vahe
UI
->
Box
=
gtk_box_new
(
GTK_ORIENTATION_VERTICAL
,
0
);
// Vertikaalne box, 0px vahe
gtk_container_add
(
GTK_CONTAINER
(
UI
->
Aken
),
UI
->
Box
);
// Pane box aknasse
gtk_container_add
(
GTK_CONTAINER
(
UI
->
Aken
),
UI
->
Box
);
// Pane box aknasse
// Notebook
// Notebook
UI
->
Notebook
=
gtk_notebook_new
();
UI
->
Notebook
=
gtk_notebook_new
();
g_signal_connect
(
UI
->
Notebook
,
"switch-page"
,
G_CALLBACK
(
TabMuudetud
),
UI
);
// Tab'i muutmise callback
g_signal_connect
(
UI
->
Notebook
,
"switch-page"
,
G_CALLBACK
(
TabMuudetud
),
UI
);
// Tab'i muutmise callback
// Loo esimene tab
// Loo esimene tab
UI
->
TabidN
=
0
;
UI
->
TabidN
=
0
;
LisaTab
(
UI
);
LisaTab
(
UI
);
UI
->
PraeguneTab
=
0
;
UI
->
PraeguneTab
=
0
;
// Accel group
// Accel group
UI
->
AccelGroup
=
gtk_accel_group_new
();
UI
->
AccelGroup
=
gtk_accel_group_new
();
gtk_window_add_accel_group
(
UI
->
Aken
,
UI
->
AccelGroup
);
gtk_window_add_accel_group
(
UI
->
Aken
,
UI
->
AccelGroup
);
// Menu bar
// Menu bar
UI
->
MenuBar
=
gtk_menu_bar_new
();
// Loo menu bar
UI
->
MenuBar
=
gtk_menu_bar_new
();
// Loo menu bar
GtkWidget
*
FailMenuNupp
=
gtk_menu_item_new_with_label
(
"Fail"
);
// Fail
GtkWidget
*
FailMenuNupp
=
gtk_menu_item_new_with_label
(
"Fail"
);
// Fail
GtkWidget
*
AboutMenuNupp
=
gtk_menu_item_new_with_label
(
"About"
);
// About
GtkWidget
*
AboutMenuNupp
=
gtk_menu_item_new_with_label
(
"About"
);
// About
GtkWidget
*
FailMenu
=
gtk_menu_new
();
// Fail menüü
GtkWidget
*
FailMenu
=
gtk_menu_new
();
// Fail menüü
GtkWidget
*
FailMenuUus
=
gtk_menu_item_new_with_label
(
"Uus vahekaart"
);
// Fail->Uus vahekaart
GtkWidget
*
FailMenuUus
=
gtk_menu_item_new_with_label
(
"Uus vahekaart"
);
// Fail->Uus vahekaart
GtkWidget
*
FailMenuAva
=
gtk_menu_item_new_with_label
(
"Ava"
);
// Fail->Ava
GtkWidget
*
FailMenuAva
=
gtk_menu_item_new_with_label
(
"Ava"
);
// Fail->Ava
UI
->
FailMenuAva
=
FailMenuAva
;
UI
->
FailMenuAva
=
FailMenuAva
;
GtkWidget
*
FailMenuSalvesta
=
gtk_menu_item_new_with_label
(
"Salvesta"
);
// Fail->Salvesta
GtkWidget
*
FailMenuSalvesta
=
gtk_menu_item_new_with_label
(
"Salvesta"
);
// Fail->Salvesta
UI
->
FailMenuSalvesta
=
FailMenuSalvesta
;
UI
->
FailMenuSalvesta
=
FailMenuSalvesta
;
GtkWidget
*
FailMenuSalvestaN
=
gtk_menu_item_new_with_label
(
"Salvesta nimega"
);
// Fail->Salvesta nimega
GtkWidget
*
FailMenuSalvestaN
=
gtk_menu_item_new_with_label
(
"Salvesta nimega"
);
// Fail->Salvesta nimega
UI
->
FailMenuSalvestaN
=
FailMenuSalvestaN
;
UI
->
FailMenuSalvestaN
=
FailMenuSalvestaN
;
GtkWidget
*
FailMenuSulgeV
=
gtk_menu_item_new_with_label
(
"Sulge vahekaart"
);
// Fail->Sulge vahekaart
GtkWidget
*
FailMenuSulgeV
=
gtk_menu_item_new_with_label
(
"Sulge vahekaart"
);
// Fail->Sulge vahekaart
UI
->
FailMenuSulgeV
=
FailMenuSulgeV
;
UI
->
FailMenuSulgeV
=
FailMenuSulgeV
;
GtkWidget
*
FailMenuValju
=
gtk_menu_item_new_with_label
(
"Välju"
);
// Fail->Välju
GtkWidget
*
FailMenuValju
=
gtk_menu_item_new_with_label
(
"Välju"
);
// Fail->Välju
// Menüü nupud menu bar'i
// Menüü nupud menu bar'i
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
UI
->
MenuBar
),
FailMenuNupp
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
UI
->
MenuBar
),
FailMenuNupp
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
UI
->
MenuBar
),
AboutMenuNupp
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
UI
->
MenuBar
),
AboutMenuNupp
);
// Menüüd nuppudesse
// Menüüd nuppudesse
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
FailMenuNupp
),
FailMenu
);
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
FailMenuNupp
),
FailMenu
);
// Fail menüü
// Fail menüü
LisaMenuItem
(
UI
,
FailMenu
,
FailMenuUus
,
Uus
,
GDK_KEY_N
,
GDK_CONTROL_MASK
);
// Fail->Uus vahekaart
LisaMenuItem
(
UI
,
FailMenu
,
FailMenuUus
,
Uus
,
GDK_KEY_N
,
GDK_CONTROL_MASK
);
// Fail->Uus vahekaart
MenuSeparator
(
FailMenu
);
MenuSeparator
(
FailMenu
);
LisaMenuItem
(
UI
,
FailMenu
,
FailMenuAva
,
Ava
,
GDK_KEY_O
,
GDK_CONTROL_MASK
);
// Fail->Ava
LisaMenuItem
(
UI
,
FailMenu
,
FailMenuAva
,
Ava
,
GDK_KEY_O
,
GDK_CONTROL_MASK
);
// Fail->Ava
LisaMenuItem
(
UI
,
FailMenu
,
FailMenuSalvesta
,
Salvesta
,
GDK_KEY_S
,
GDK_CONTROL_MASK
);
// Fail->Salvesta
LisaMenuItem
(
UI
,
FailMenu
,
FailMenuSalvesta
,
Salvesta
,
GDK_KEY_S
,
GDK_CONTROL_MASK
);
// Fail->Salvesta
LisaMenuItem
(
UI
,
FailMenu
,
FailMenuSalvestaN
,
SalvestaNimega
,
GDK_KEY_S
,
GDK_CONTROL_MASK
|
GDK_MOD1_MASK
);
// Fail->Salvesta nimega
LisaMenuItem
(
UI
,
FailMenu
,
FailMenuSalvestaN
,
SalvestaNimega
,
GDK_KEY_S
,
GDK_CONTROL_MASK
|
GDK_MOD1_MASK
);
// Fail->Salvesta nimega
MenuSeparator
(
FailMenu
);
MenuSeparator
(
FailMenu
);
LisaMenuItem
(
UI
,
FailMenu
,
FailMenuSulgeV
,
SulgeVahekaart
,
GDK_KEY_W
,
GDK_CONTROL_MASK
);
// Fail->Sulge vahekaart
LisaMenuItem
(
UI
,
FailMenu
,
FailMenuSulgeV
,
SulgeVahekaart
,
GDK_KEY_W
,
GDK_CONTROL_MASK
);
// Fail->Sulge vahekaart
MenuSeparator
(
FailMenu
);
MenuSeparator
(
FailMenu
);
LisaMenuItem
(
UI
,
FailMenu
,
FailMenuValju
,
Valju
,
GDK_KEY_Q
,
GDK_CONTROL_MASK
|
GDK_SHIFT_MASK
);
// Fail->Välju
LisaMenuItem
(
UI
,
FailMenu
,
FailMenuValju
,
Valju
,
GDK_KEY_Q
,
GDK_CONTROL_MASK
|
GDK_SHIFT_MASK
);
// Fail->Välju
//ToolBar
//ToolBar
UI
->
ToolBar
=
gtk_toolbar_new
();
UI
->
ToolBar
=
gtk_toolbar_new
();
gtk_toolbar_set_style
(
GTK_TOOLBAR
(
UI
->
ToolBar
),
GTK_TOOLBAR_ICONS
);
gtk_toolbar_set_style
(
GTK_TOOLBAR
(
UI
->
ToolBar
),
GTK_TOOLBAR_ICONS
);
GtkWidget
*
UndoIcon
=
gtk_image_new_from_icon_name
(
GTK_STOCK_UNDO
,
5
);
GtkWidget
*
UndoIcon
=
gtk_image_new_from_icon_name
(
GTK_STOCK_UNDO
,
5
);
UI
->
Undo
=
gtk_tool_button_new
(
UndoIcon
,
"undo"
);
UI
->
Undo
=
gtk_tool_button_new
(
UndoIcon
,
"undo"
);
GtkWidget
*
RedoIcon
=
gtk_image_new_from_icon_name
(
GTK_STOCK_REDO
,
5
);
GtkWidget
*
RedoIcon
=
gtk_image_new_from_icon_name
(
GTK_STOCK_REDO
,
5
);
UI
->
Redo
=
gtk_tool_button_new
(
RedoIcon
,
"redo"
);
UI
->
Redo
=
gtk_tool_button_new
(
RedoIcon
,
"redo"
);
//nupud toolbarile
//nupud toolbarile
gtk_toolbar_insert
(
GTK_TOOLBAR
(
UI
->
ToolBar
),
UI
->
Undo
,
-
1
);
gtk_toolbar_insert
(
GTK_TOOLBAR
(
UI
->
ToolBar
),
UI
->
Undo
,
-
1
);
gtk_toolbar_insert
(
GTK_TOOLBAR
(
UI
->
ToolBar
),
UI
->
Redo
,
-
1
);
gtk_toolbar_insert
(
GTK_TOOLBAR
(
UI
->
ToolBar
),
UI
->
Redo
,
-
1
);
// Pane kõik õiges järjekorras box'i
// Pane kõik õiges järjekorras box'i
gtk_box_pack_start
(
GTK_BOX
(
UI
->
Box
),
UI
->
MenuBar
,
FALSE
,
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
UI
->
Box
),
UI
->
MenuBar
,
FALSE
,
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
UI
->
Box
),
UI
->
ToolBar
,
FALSE
,
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
UI
->
Box
),
UI
->
ToolBar
,
FALSE
,
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
UI
->
Box
),
UI
->
Notebook
,
TRUE
,
TRUE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
UI
->
Box
),
UI
->
Notebook
,
TRUE
,
TRUE
,
0
);
return
UI
;
return
UI
;
}
}
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