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
2bb9f0a0
authored
Apr 20, 2022
by
karudu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Süntaksi värvimise stiil ja seaded + akna suurus salvestatakse
parent
ff354c82
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
141 additions
and
8 deletions
ceditor.h
settings.c
settings.h
tab.c
tab.h
ui.c
ceditor.h
View file @
2bb9f0a0
...
@@ -13,7 +13,7 @@ typedef struct
...
@@ -13,7 +13,7 @@ typedef struct
char
*
PealkiriTekst
;
// Originaalne pealkirja tekst
char
*
PealkiriTekst
;
// Originaalne pealkirja tekst
GtkWidget
*
Box
;
// Vahekaardi box
GtkWidget
*
Box
;
// Vahekaardi box
GtkWidget
*
TextView
;
// Vahekaardi tekstiaken
GtkWidget
*
TextView
;
// Vahekaardi tekstiaken
Gtk
TextView
*
Puhver
;
// Vahekaardi tekstipuhver
Gtk
SourceBuffer
*
Puhver
;
// Vahekaardi tekstipuhver
GtkWidget
*
ScrollWindow
;
// Tekstiakna scroll
GtkWidget
*
ScrollWindow
;
// Tekstiakna scroll
GtkWidget
*
StatusBar
;
// Status bar
GtkWidget
*
StatusBar
;
// Status bar
...
@@ -29,7 +29,7 @@ typedef struct
...
@@ -29,7 +29,7 @@ typedef struct
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
hotkey'de
jaoks
// Viited nuppudele nende sisse/välja lülitamiseks
// Viited nuppudele nende sisse/välja lülitamiseks
GtkWidget
*
FailMenuAva
;
GtkWidget
*
FailMenuAva
;
...
@@ -45,6 +45,10 @@ typedef struct
...
@@ -45,6 +45,10 @@ typedef struct
GtkToolItem
*
Undo
;
//undo nupp
GtkToolItem
*
Undo
;
//undo nupp
GtkToolItem
*
Redo
;
//redo nupp
GtkToolItem
*
Redo
;
//redo nupp
// SourceView stiil
GtkSourceStyleSchemeManager
*
SchemeManager
;
GtkSourceStyleSchemeChooser
*
SchemeChooser
;
GKeyFile
*
Seaded
;
// Seadete fail
GKeyFile
*
Seaded
;
// Seadete fail
char
*
SeadedNimi
;
// Seadete faili nimi
char
*
SeadedNimi
;
// Seadete faili nimi
}
ui
;
}
ui
;
...
...
settings.c
View file @
2bb9f0a0
...
@@ -25,3 +25,70 @@ void FontSeaded(GtkWidget *Nupp, gpointer Data)
...
@@ -25,3 +25,70 @@ void FontSeaded(GtkWidget *Nupp, gpointer Data)
gtk_widget_destroy
(
FontChooser
);
gtk_widget_destroy
(
FontChooser
);
}
}
void
CheckboxVajutatud
(
GtkWidget
*
Nupp
,
gpointer
Data
)
{
ui
*
UI
=
(
ui
*
)
Data
;
gboolean
Olek
=
gtk_toggle_button_get_active
(
Nupp
);
if
(
Olek
)
// Sees
{
SeaVarvimine
(
UI
,
1
);
g_key_file_set_boolean
(
UI
->
Seaded
,
"Seaded"
,
"varvi_suntaksi"
,
1
);
}
else
// Väljas
{
SeaVarvimine
(
UI
,
0
);
g_key_file_set_boolean
(
UI
->
Seaded
,
"Seaded"
,
"varvi_suntaksi"
,
0
);
}
g_key_file_save_to_file
(
UI
->
Seaded
,
UI
->
SeadedNimi
,
0
);
}
void
SeaUusStiil
(
GtkWidget
*
nupp
,
gpointer
Data
)
{
ui
*
UI
=
(
ui
*
)
Data
;
GtkSourceStyleScheme
*
Stiil
=
gtk_source_style_scheme_chooser_get_style_scheme
(
UI
->
SchemeChooser
);
SeaStiil
(
UI
,
Stiil
);
// Salvesta stiili ID ära
gchar
*
StiilID
=
gtk_source_style_scheme_get_id
(
Stiil
);
g_key_file_set_string
(
UI
->
Seaded
,
"Seaded"
,
"sourceview_stiil"
,
StiilID
);
g_key_file_save_to_file
(
UI
->
Seaded
,
UI
->
SeadedNimi
,
0
);
}
void
SVarvSeaded
(
GtkWidget
*
Nupp
,
gpointer
Data
)
{
ui
*
UI
=
(
ui
*
)
Data
;
GtkWindow
*
Aken
=
gtk_window_new
(
GTK_WINDOW_TOPLEVEL
);
gtk_window_set_default_size
(
Aken
,
300
,
100
);
gtk_window_set_title
(
Aken
,
"Süntaksi värvimine"
);
gtk_window_set_type_hint
(
Aken
,
GDK_WINDOW_TYPE_HINT_DIALOG
);
GtkBox
*
HBox1
=
gtk_box_new
(
GTK_ORIENTATION_HORIZONTAL
,
8
);
GtkLabel
*
LabelValiStiil
=
gtk_label_new
(
"Vali stiil:"
);
GtkWidget
*
ChooserButton
=
gtk_source_style_scheme_chooser_button_new
();
gtk_box_pack_start
(
HBox1
,
GTK_WIDGET
(
LabelValiStiil
),
FALSE
,
FALSE
,
8
);
gtk_box_pack_start
(
HBox1
,
GTK_WIDGET
(
ChooserButton
),
FALSE
,
FALSE
,
0
);
GtkWidget
*
Checkbox
=
gtk_check_button_new_with_label
(
"Värvi süntaksi"
);
gtk_toggle_button_set_active
(
Checkbox
,
1
);
// Kui süntaksi värvimise valik on salvestatud, siis kasuta seda
GError
*
VViga
=
NULL
;
gboolean
Varvimine
=
g_key_file_get_boolean
(
UI
->
Seaded
,
"Seaded"
,
"varvi_suntaksi"
,
&
VViga
);
if
(
!
VViga
)
gtk_toggle_button_set_active
(
Checkbox
,
Varvimine
);
else
g_error_free
(
VViga
);
g_signal_connect
(
Checkbox
,
"toggled"
,
G_CALLBACK
(
CheckboxVajutatud
),
UI
);
GtkWidget
*
ApplyButton
=
gtk_button_new_with_label
(
"Salvesta stiil"
);
GtkBox
*
box
=
gtk_box_new
(
GTK_ORIENTATION_VERTICAL
,
0
);
gtk_container_add
(
GTK_CONTAINER
(
Aken
),
box
);
gtk_box_pack_start
(
box
,
GTK_WIDGET
(
HBox1
),
FALSE
,
FALSE
,
4
);
gtk_box_pack_start
(
box
,
GTK_WIDGET
(
Checkbox
),
FALSE
,
FALSE
,
4
);
gtk_box_pack_start
(
box
,
GTK_WIDGET
(
ApplyButton
),
FALSE
,
FALSE
,
8
);
UI
->
SchemeChooser
=
ChooserButton
;
g_signal_connect
(
ApplyButton
,
"clicked"
,
G_CALLBACK
(
SeaUusStiil
),
UI
);
gtk_widget_show_all
(
Aken
);
}
settings.h
View file @
2bb9f0a0
...
@@ -4,5 +4,6 @@
...
@@ -4,5 +4,6 @@
#include "ceditor.h"
#include "ceditor.h"
void
FontSeaded
(
GtkWidget
*
Nupp
,
gpointer
Data
);
void
FontSeaded
(
GtkWidget
*
Nupp
,
gpointer
Data
);
void
SVarvSeaded
(
GtkWidget
*
Nupp
,
gpointer
Data
);
#endif // SETTINGS_H
#endif // SETTINGS_H
tab.c
View file @
2bb9f0a0
...
@@ -95,7 +95,24 @@ void SeaFont(ui *UI, char *FondiNimi)
...
@@ -95,7 +95,24 @@ void SeaFont(ui *UI, char *FondiNimi)
for
(
int
i
=
0
;
i
<
UI
->
TabidN
;
i
++
)
for
(
int
i
=
0
;
i
<
UI
->
TabidN
;
i
++
)
{
{
gtk_widget_modify_font
(
UI
->
Tabid
[
i
].
TextView
,
pango_font_description_from_string
(
FondiNimi
));
gtk_widget_modify_font
(
UI
->
Tabid
[
i
].
TextView
,
pango_font_description_from_string
(
FondiNimi
));
gtk_widget_show_all
(
UI
->
Tabid
[
i
].
TextView
);
}
}
// Sea kõikdele vahekaartidele uus SourceView stiil
void
SeaStiil
(
ui
*
UI
,
GtkSourceStyleScheme
*
Stiil
)
{
for
(
int
i
=
0
;
i
<
UI
->
TabidN
;
i
++
)
{
gtk_source_buffer_set_style_scheme
(
UI
->
Tabid
[
i
].
Puhver
,
Stiil
);
}
}
// Sea kõikdele vahekaartidele süntaksi värvimise valik
void
SeaVarvimine
(
ui
*
UI
,
gboolean
Varvi
)
{
for
(
int
i
=
0
;
i
<
UI
->
TabidN
;
i
++
)
{
gtk_source_buffer_set_highlight_syntax
(
UI
->
Tabid
[
i
].
Puhver
,
Varvi
);
}
}
}
}
...
@@ -111,8 +128,6 @@ void LisaTab(ui *UI)
...
@@ -111,8 +128,6 @@ void LisaTab(ui *UI)
{
{
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
// Kuna realloc liigutab vahekaardid mälus uude kohta, siis tuleb
// tekstipuhvrite muutmise callback'ile anda uued viidad
for
(
int
i
=
0
;
i
<
UI
->
TabidN
;
i
++
)
for
(
int
i
=
0
;
i
<
UI
->
TabidN
;
i
++
)
{
{
tab
*
Tab
=
&
UI
->
Tabid
[
i
];
tab
*
Tab
=
&
UI
->
Tabid
[
i
];
...
@@ -164,12 +179,23 @@ void LisaTab(ui *UI)
...
@@ -164,12 +179,23 @@ void LisaTab(ui *UI)
Tab
->
LangManager
=
gtk_source_language_manager_get_default
();
Tab
->
LangManager
=
gtk_source_language_manager_get_default
();
Tab
->
Language
=
gtk_source_language_manager_get_language
(
Tab
->
LangManager
,
"c"
);
Tab
->
Language
=
gtk_source_language_manager_get_language
(
Tab
->
LangManager
,
"c"
);
gtk_source_buffer_set_language
(
Tab
->
Puhver
,
Tab
->
Language
);
gtk_source_buffer_set_language
(
Tab
->
Puhver
,
Tab
->
Language
);
// Kui süntaksi värvimise valik on salvestatud, siis kasuta seda
GError
*
VViga
=
NULL
;
gboolean
Varvimine
=
g_key_file_get_boolean
(
UI
->
Seaded
,
"Seaded"
,
"varvi_suntaksi"
,
&
VViga
);
if
(
!
VViga
)
gtk_source_buffer_set_highlight_syntax
(
Tab
->
Puhver
,
Varvimine
);
else
g_error_free
(
VViga
);
gtk_source_view_set_show_line_numbers
(
GTK_SOURCE_VIEW
(
Tab
->
TextView
),
TRUE
);
// Näita reanumbreid
char
*
StiilID
=
g_key_file_get_string
(
UI
->
Seaded
,
"Seaded"
,
"sourceview_stiil"
,
NULL
);
if
(
StiilID
)
{
GtkSourceStyleScheme
*
Stiil
=
gtk_source_style_scheme_manager_get_scheme
(
UI
->
SchemeManager
,
StiilID
);
gtk_source_buffer_set_style_scheme
(
Tab
->
Puhver
,
Stiil
);
g_free
(
StiilID
);
}
// Lisa loodud tab notebook'i
// Lisa loodud tab notebook'i
gtk_notebook_append_page
(
GTK_NOTEBOOK
(
UI
->
Notebook
),
Tab
->
Box
,
Tab
->
Pealkiri
);
gtk_notebook_append_page
(
GTK_NOTEBOOK
(
UI
->
Notebook
),
Tab
->
Box
,
Tab
->
Pealkiri
);
gtk_widget_show_all
(
UI
->
Notebook
);
// Värskenda, et näha oleks
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
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
}
}
tab.h
View file @
2bb9f0a0
...
@@ -11,5 +11,7 @@ void UuendaTabiPealkirja(tab *Tab, char *Nimi);
...
@@ -11,5 +11,7 @@ void UuendaTabiPealkirja(tab *Tab, char *Nimi);
void
TabMuudetud
(
GtkWidget
*
Notebook
,
GtkWidget
*
Tab
,
guint
Indeks
,
gpointer
Data
);
void
TabMuudetud
(
GtkWidget
*
Notebook
,
GtkWidget
*
Tab
,
guint
Indeks
,
gpointer
Data
);
int
SulgeTab
(
ui
*
UI
,
int
Indeks
);
int
SulgeTab
(
ui
*
UI
,
int
Indeks
);
void
SeaFont
(
ui
*
UI
,
char
*
FondiNimi
);
void
SeaFont
(
ui
*
UI
,
char
*
FondiNimi
);
void
SeaStiil
(
ui
*
UI
,
GtkSourceStyleScheme
*
Stiil
);
void
SeaVarvimine
(
ui
*
UI
,
gboolean
Varvi
);
#endif // TAB_H
#endif // TAB_H
ui.c
View file @
2bb9f0a0
...
@@ -25,6 +25,12 @@ gboolean SulgeAken(GtkWidget *Nupp, GdkEvent *Event, gpointer Data)
...
@@ -25,6 +25,12 @@ gboolean SulgeAken(GtkWidget *Nupp, GdkEvent *Event, gpointer Data)
if
(
Sulge
(
UI
))
if
(
Sulge
(
UI
))
{
{
// Salvesta akna pikkus ja laius
int
Pikkus
,
Laius
;
gtk_window_get_size
(
UI
->
Aken
,
&
Laius
,
&
Pikkus
);
g_key_file_set_integer
(
UI
->
Seaded
,
"Seaded"
,
"akna_pikkus"
,
Pikkus
);
g_key_file_set_integer
(
UI
->
Seaded
,
"Seaded"
,
"akna_laius"
,
Laius
);
g_key_file_save_to_file
(
UI
->
Seaded
,
UI
->
SeadedNimi
,
0
);
gtk_main_quit
();
gtk_main_quit
();
return
FALSE
;
return
FALSE
;
}
else
return
TRUE
;
}
else
return
TRUE
;
...
@@ -35,7 +41,16 @@ void Valju(GtkWidget *Nupp, gpointer Data)
...
@@ -35,7 +41,16 @@ void Valju(GtkWidget *Nupp, gpointer Data)
{
{
ui
*
UI
=
(
ui
*
)
Data
;
ui
*
UI
=
(
ui
*
)
Data
;
if
(
Sulge
(
UI
))
gtk_main_quit
();;
if
(
Sulge
(
UI
))
{
// Salvesta akna pikkus ja laius
int
Pikkus
,
Laius
;
gtk_window_get_size
(
UI
->
Aken
,
&
Laius
,
&
Pikkus
);
g_key_file_set_integer
(
UI
->
Seaded
,
"Seaded"
,
"akna_pikkus"
,
Pikkus
);
g_key_file_set_integer
(
UI
->
Seaded
,
"Seaded"
,
"akna_laius"
,
Laius
);
g_key_file_save_to_file
(
UI
->
Seaded
,
UI
->
SeadedNimi
,
0
);
gtk_main_quit
();
}
}
}
// Lisa menüüsse menu item
// Lisa menüüsse menu item
...
@@ -80,6 +95,19 @@ ui *LooUI()
...
@@ -80,6 +95,19 @@ ui *LooUI()
g_error_free
(
Viga
);
g_error_free
(
Viga
);
}
}
// Loe failist akna pikkus ja laius, kui on olemas
gint
AknaPikkus
=
600
;
gint
AknaLaius
=
800
;
Viga
=
NULL
;
gint
Pikkus
=
g_key_file_get_integer
(
UI
->
Seaded
,
"Seaded"
,
"akna_pikkus"
,
&
Viga
);
if
(
!
Viga
)
AknaPikkus
=
Pikkus
;
else
g_error_free
(
Viga
);
Viga
=
NULL
;
gint
Laius
=
g_key_file_get_integer
(
UI
->
Seaded
,
"Seaded"
,
"akna_laius"
,
&
Viga
);
if
(
!
Viga
)
AknaLaius
=
Laius
;
else
g_error_free
(
Viga
);
gtk_window_set_default_size
(
UI
->
Aken
,
AknaLaius
,
AknaPikkus
);
// 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
...
@@ -88,6 +116,9 @@ ui *LooUI()
...
@@ -88,6 +116,9 @@ ui *LooUI()
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
// SourceView stiil
UI
->
SchemeManager
=
gtk_source_style_scheme_manager_get_default
();
// Loo esimene tab
// Loo esimene tab
UI
->
TabidN
=
0
;
UI
->
TabidN
=
0
;
LisaTab
(
UI
);
LisaTab
(
UI
);
...
@@ -122,6 +153,7 @@ ui *LooUI()
...
@@ -122,6 +153,7 @@ ui *LooUI()
// Seaded menüü
// Seaded menüü
GtkWidget
*
SeadedMenu
=
gtk_menu_new
();
GtkWidget
*
SeadedMenu
=
gtk_menu_new
();
GtkWidget
*
SeadedMenuFont
=
gtk_menu_item_new_with_label
(
"Teksti font"
);
// Seaded->Teksti font
GtkWidget
*
SeadedMenuFont
=
gtk_menu_item_new_with_label
(
"Teksti font"
);
// Seaded->Teksti font
GtkWidget
*
SeadedMenuSVarv
=
gtk_menu_item_new_with_label
(
"Süntaksi värvimine"
);
// Seaded->Süntaksi värvimine
// 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
),
KompMenuNupp
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
UI
->
MenuBar
),
KompMenuNupp
);
...
@@ -148,6 +180,7 @@ ui *LooUI()
...
@@ -148,6 +180,7 @@ ui *LooUI()
LisaMenuItem
(
UI
,
KompMenu
,
KompMenuKaivita
,
KaivitaProgramm
,
GDK_KEY_R
,
GDK_CONTROL_MASK
|
GDK_SHIFT_MASK
);
// Kompileeri->Käivita programm
LisaMenuItem
(
UI
,
KompMenu
,
KompMenuKaivita
,
KaivitaProgramm
,
GDK_KEY_R
,
GDK_CONTROL_MASK
|
GDK_SHIFT_MASK
);
// Kompileeri->Käivita programm
// Seaded menüü
// Seaded menüü
LisaMenuItem
(
UI
,
SeadedMenu
,
SeadedMenuFont
,
FontSeaded
,
0
,
0
);
// Seaded->Teksti font
LisaMenuItem
(
UI
,
SeadedMenu
,
SeadedMenuFont
,
FontSeaded
,
0
,
0
);
// Seaded->Teksti font
LisaMenuItem
(
UI
,
SeadedMenu
,
SeadedMenuSVarv
,
SVarvSeaded
,
0
,
0
);
//ToolBar
//ToolBar
UI
->
ToolBar
=
gtk_toolbar_new
();
UI
->
ToolBar
=
gtk_toolbar_new
();
...
...
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