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
4e267cd5
authored
Mar 16, 2022
by
karudu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Faili salvestamise dialoogid
parent
047cc8ee
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
132 additions
and
32 deletions
ceditor.c
ceditor.h
menubar.c
tab.c
tab.h
ui.c
ceditor.c
View file @
4e267cd5
...
@@ -2,7 +2,6 @@
...
@@ -2,7 +2,6 @@
#include "ui.h"
#include "ui.h"
/* TODO
/* TODO
Faili salvestamise prompt sulgemisel/uue avamisel
Klahvikombinatsioonid
Klahvikombinatsioonid
*/
*/
...
...
ceditor.h
View file @
4e267cd5
...
@@ -27,6 +27,7 @@ typedef struct
...
@@ -27,6 +27,7 @@ typedef struct
GtkWidget
*
Notebook
;
// Notebook vahekaartidega
GtkWidget
*
Notebook
;
// Notebook vahekaartidega
// Viited nuppudele nende sisse/välja lülitamiseks
// Viited nuppudele nende sisse/välja lülitamiseks
GtkWidget
*
FailMenuAva
;
GtkWidget
*
FailMenuSalvesta
;
GtkWidget
*
FailMenuSalvesta
;
GtkWidget
*
FailMenuSalvestaN
;
GtkWidget
*
FailMenuSalvestaN
;
GtkWidget
*
FailMenuSulgeV
;
GtkWidget
*
FailMenuSulgeV
;
...
...
menubar.c
View file @
4e267cd5
...
@@ -12,6 +12,7 @@ void Uus(GtkWidget *Nupp, gpointer Data)
...
@@ -12,6 +12,7 @@ void Uus(GtkWidget *Nupp, gpointer Data)
gtk_notebook_set_current_page
(
UI
->
Notebook
,
UI
->
TabidN
-
1
);
// Näita uut vahekaarti
gtk_notebook_set_current_page
(
UI
->
Notebook
,
UI
->
TabidN
-
1
);
// Näita uut vahekaarti
// Muuda need uuesti vajutatavaks, kui ennem polnud
// Muuda need uuesti vajutatavaks, kui ennem polnud
gtk_widget_set_sensitive
(
UI
->
FailMenuAva
,
TRUE
);
gtk_widget_set_sensitive
(
UI
->
FailMenuSalvesta
,
TRUE
);
gtk_widget_set_sensitive
(
UI
->
FailMenuSalvesta
,
TRUE
);
gtk_widget_set_sensitive
(
UI
->
FailMenuSalvestaN
,
TRUE
);
gtk_widget_set_sensitive
(
UI
->
FailMenuSalvestaN
,
TRUE
);
gtk_widget_set_sensitive
(
UI
->
FailMenuSulgeV
,
TRUE
);
gtk_widget_set_sensitive
(
UI
->
FailMenuSulgeV
,
TRUE
);
...
@@ -40,6 +41,7 @@ void Ava(GtkWidget *Nupp, gpointer Data)
...
@@ -40,6 +41,7 @@ void Ava(GtkWidget *Nupp, gpointer Data)
if
(
g_utf8_validate
(
Sisu
,
-
1
,
NULL
))
if
(
g_utf8_validate
(
Sisu
,
-
1
,
NULL
))
{
{
gtk_text_buffer_set_text
(
Puhver
,
Sisu
,
-
1
);
// Kopeeri fail puhvrisse
gtk_text_buffer_set_text
(
Puhver
,
Sisu
,
-
1
);
// Kopeeri fail puhvrisse
gtk_text_buffer_set_modified
(
Tab
->
Puhver
,
FALSE
);
// Tekst on muutmata
Tab
->
FailiNimi
=
Nimi
;
Tab
->
FailiNimi
=
Nimi
;
UuendaTabiPealkirja
(
Tab
,
Nimi
);
UuendaTabiPealkirja
(
Tab
,
Nimi
);
}
}
...
@@ -61,11 +63,9 @@ void Ava(GtkWidget *Nupp, gpointer Data)
...
@@ -61,11 +63,9 @@ void Ava(GtkWidget *Nupp, gpointer Data)
gtk_widget_destroy
(
Dialog
);
gtk_widget_destroy
(
Dialog
);
}
}
// Salvesta
b vahekaardi teksti praegusesse faili
// Salvesta
fail, tagastab 1 kui edukas
void
Salvesta
(
GtkWidget
*
Nupp
,
gpointer
Data
)
int
SalvestaFail
(
ui
*
UI
,
tab
*
Tab
)
{
{
ui
*
UI
=
(
ui
*
)
Data
;
tab
*
Tab
=
&
UI
->
Tabid
[
UI
->
PraeguneTab
];
GtkTextBuffer
*
Puhver
=
Tab
->
Puhver
;
GtkTextBuffer
*
Puhver
=
Tab
->
Puhver
;
char
*
Nimi
;
char
*
Nimi
;
...
@@ -87,7 +87,7 @@ void Salvesta(GtkWidget *Nupp, gpointer Data)
...
@@ -87,7 +87,7 @@ void Salvesta(GtkWidget *Nupp, gpointer Data)
else
else
{
{
gtk_widget_destroy
(
Dialog
);
gtk_widget_destroy
(
Dialog
);
return
;
return
0
;
}
}
}
}
...
@@ -96,25 +96,42 @@ void Salvesta(GtkWidget *Nupp, gpointer Data)
...
@@ -96,25 +96,42 @@ void Salvesta(GtkWidget *Nupp, gpointer Data)
gtk_text_buffer_get_end_iter
(
Puhver
,
&
TekstL
);
gtk_text_buffer_get_end_iter
(
Puhver
,
&
TekstL
);
gchar
*
Sisu
=
gtk_text_buffer_get_text
(
Puhver
,
&
TekstA
,
&
TekstL
,
TRUE
);
gchar
*
Sisu
=
gtk_text_buffer_get_text
(
Puhver
,
&
TekstA
,
&
TekstL
,
TRUE
);
gtk_text_buffer_set_modified
(
Puhver
,
FALSE
);
GError
*
Viga
=
NULL
;
GError
*
Viga
=
NULL
;
if
(
g_file_set_contents
(
Nimi
,
Sisu
,
-
1
,
&
Viga
)
==
FALSE
)
if
(
g_file_set_contents
(
Nimi
,
Sisu
,
-
1
,
&
Viga
)
==
TRUE
)
{
gtk_text_buffer_set_modified
(
Tab
->
Puhver
,
FALSE
);
// Tekst on muutmata
// Kui enne salvestamist failinime polńud, siis kasuta praegust
if
(
!
Tab
->
FailiNimi
)
{
Tab
->
FailiNimi
=
Nimi
;
UuendaTabiPealkirja
(
Tab
,
Nimi
);
}
else
g_free
(
Nimi
);
g_free
(
Sisu
);
if
(
Dialog
)
gtk_widget_destroy
(
Dialog
);
return
1
;
}
else
{
{
printf
(
"Viga faili salvestamisel: %s
\n
"
,
Viga
->
message
);
printf
(
"Viga faili salvestamisel: %s
\n
"
,
Viga
->
message
);
g_error_free
(
Viga
);
g_error_free
(
Viga
);
}
g_free
(
Nimi
);
g_free
(
Sisu
);
if
(
Dialog
)
gtk_widget_destroy
(
Dialog
);
// Kui enne salvestamist failinime polńud, siis kasuta praegust
return
0
;
if
(
!
Tab
->
FailiNimi
)
{
Tab
->
FailiNimi
=
Nimi
;
UuendaTabiPealkirja
(
Tab
,
Nimi
);
}
}
else
g_free
(
Nimi
);
}
g_free
(
Sisu
);
// Salvestab vahekaardi teksti praegusesse faili
void
Salvesta
(
GtkWidget
*
Nupp
,
gpointer
Data
)
{
ui
*
UI
=
(
ui
*
)
Data
;
tab
*
Tab
=
&
UI
->
Tabid
[
UI
->
PraeguneTab
];
if
(
Dialog
)
gtk_widget_destroy
(
Dialog
);
SalvestaFail
(
UI
,
Tab
);
}
}
// Salvestab vahekaardi teksti vabalt valitud faili
// Salvestab vahekaardi teksti vabalt valitud faili
...
@@ -140,21 +157,29 @@ void SalvestaNimega(GtkWidget *Nupp, gpointer Data)
...
@@ -140,21 +157,29 @@ void SalvestaNimega(GtkWidget *Nupp, gpointer Data)
gtk_text_buffer_set_modified
(
Puhver
,
FALSE
);
gtk_text_buffer_set_modified
(
Puhver
,
FALSE
);
GError
*
Viga
=
NULL
;
GError
*
Viga
=
NULL
;
if
(
g_file_set_contents
(
Nimi
,
Sisu
,
-
1
,
&
Viga
)
==
FALSE
)
if
(
g_file_set_contents
(
Nimi
,
Sisu
,
-
1
,
&
Viga
)
==
TRUE
)
{
if
(
g_strcmp0
(
Nimi
,
Tab
->
FailiNimi
)
==
0
)
{
printf
(
"Sama fail
\n
"
);
}
// Kui enne salvestamist failinime polńud, siis kasuta praegust
if
(
!
Tab
->
FailiNimi
)
{
Tab
->
FailiNimi
=
Nimi
;
UuendaTabiPealkirja
(
Tab
,
Nimi
);
}
else
g_free
(
Nimi
);
}
else
{
{
printf
(
"Viga faili salvestamisel: %s
\n
"
,
Viga
->
message
);
printf
(
"Viga faili salvestamisel: %s
\n
"
,
Viga
->
message
);
g_error_free
(
Viga
);
g_error_free
(
Viga
);
g_free
(
Nimi
);
}
}
// Kui enne salvestamist failinime polńud, siis kasuta praegust
if
(
!
Tab
->
FailiNimi
)
{
Tab
->
FailiNimi
=
Nimi
;
UuendaTabiPealkirja
(
Tab
,
Nimi
);
}
else
g_free
(
Nimi
);
g_free
(
Sisu
);
g_free
(
Sisu
);
}
}
gtk_widget_destroy
(
Dialog
);
gtk_widget_destroy
(
Dialog
);
...
@@ -165,10 +190,11 @@ void SulgeVahekaart(GtkWidget *Nupp, gpointer Data)
...
@@ -165,10 +190,11 @@ void SulgeVahekaart(GtkWidget *Nupp, gpointer Data)
{
{
ui
*
UI
=
(
ui
*
)
Data
;
ui
*
UI
=
(
ui
*
)
Data
;
Kustuta
Tab
(
UI
,
UI
->
PraeguneTab
);
Sulge
Tab
(
UI
,
UI
->
PraeguneTab
);
if
(
UI
->
TabidN
==
0
)
if
(
UI
->
TabidN
==
0
)
{
{
gtk_widget_set_sensitive
(
UI
->
FailMenuAva
,
FALSE
);
gtk_widget_set_sensitive
(
UI
->
FailMenuSalvesta
,
FALSE
);
gtk_widget_set_sensitive
(
UI
->
FailMenuSalvesta
,
FALSE
);
gtk_widget_set_sensitive
(
UI
->
FailMenuSalvestaN
,
FALSE
);
gtk_widget_set_sensitive
(
UI
->
FailMenuSalvestaN
,
FALSE
);
gtk_widget_set_sensitive
(
UI
->
FailMenuSulgeV
,
FALSE
);
gtk_widget_set_sensitive
(
UI
->
FailMenuSulgeV
,
FALSE
);
...
...
tab.c
View file @
4e267cd5
...
@@ -87,6 +87,8 @@ void UuendaTabiPealkirja(tab *Tab, char *Nimi)
...
@@ -87,6 +87,8 @@ void UuendaTabiPealkirja(tab *Tab, char *Nimi)
char
*
Tekst
=
g_path_get_basename
(
Nimi
);
// Eralda faili nimi
char
*
Tekst
=
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
),
Tekst
);
g_free
(
Tekst
);
g_free
(
Tekst
);
// Terve faili nimi tooltip'is
gtk_widget_set_tooltip_text
(
Tab
->
Pealkiri
,
Nimi
);
}
}
// Kutsutakse igal vahekaardi muutmisel
// Kutsutakse igal vahekaardi muutmisel
...
@@ -95,3 +97,34 @@ void TabMuudetud(GtkWidget *Notebook, GtkWidget *Tab, guint Indeks, gpointer Dat
...
@@ -95,3 +97,34 @@ void TabMuudetud(GtkWidget *Notebook, GtkWidget *Tab, guint Indeks, gpointer Dat
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
int
SulgeTab
(
ui
*
UI
,
int
Indeks
)
{
tab
*
Tab
=
&
UI
->
Tabid
[
Indeks
];
// Kui tekst on muudetud, siis küsi üle, kas salvestada
if
(
gtk_text_buffer_get_modified
(
Tab
->
Puhver
))
{
GtkWidget
*
MsgDialog
=
gtk_message_dialog_new
(
UI
->
Aken
,
GTK_DIALOG_MODAL
,
GTK_MESSAGE_QUESTION
,
GTK_BUTTONS_NONE
,
"Salvesta fail enne sulgemist?"
);
gtk_dialog_add_buttons
(
MsgDialog
,
"Jah"
,
0
,
"Ei"
,
1
,
"Loobu"
,
2
,
NULL
);
gint
Vastus
=
gtk_dialog_run
(
GTK_DIALOG
(
MsgDialog
));
gtk_widget_destroy
(
MsgDialog
);
if
(
Vastus
==
0
)
// Jah
{
// Kui fail salvestati, siis jätka, muidu ära tee midagi
if
(
SalvestaFail
(
UI
,
Tab
))
{}
else
return
0
;
}
else
if
(
Vastus
==
1
)
{}
// Ei
else
return
0
;
}
KustutaTab
(
UI
,
Indeks
);
return
1
;
}
tab.h
View file @
4e267cd5
...
@@ -9,5 +9,6 @@ void LisaTab(ui *UI);
...
@@ -9,5 +9,6 @@ void LisaTab(ui *UI);
void
KustutaTab
(
ui
*
UI
,
int
Indeks
);
void
KustutaTab
(
ui
*
UI
,
int
Indeks
);
void
UuendaTabiPealkirja
(
tab
*
Tab
,
char
*
Nimi
);
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
);
#endif // TAB_H
#endif // TAB_H
ui.c
View file @
4e267cd5
#include "ui.h"
#include "ui.h"
// Sulge programm, tagastab 1 kui kõik vahekaardid sulgeti, 0 kui mitte
int
Sulge
(
ui
*
UI
)
{
for
(
int
i
=
UI
->
TabidN
-
1
;
i
>
-
1
;
i
--
)
{
gtk_notebook_set_current_page
(
UI
->
Notebook
,
i
);
if
(
SulgeTab
(
UI
,
i
))
{
continue
;
}
else
{
gtk_notebook_set_current_page
(
UI
->
Notebook
,
UI
->
PraeguneTab
);
return
0
;
}
}
return
1
;
}
gboolean
SulgeAken
(
GtkWidget
*
Nupp
,
GdkEvent
*
Event
,
gpointer
Data
)
{
ui
*
UI
=
(
ui
*
)
Data
;
if
(
Sulge
(
UI
))
{
gtk_main_quit
();
return
FALSE
;
}
else
return
TRUE
;
}
// Väljub rakendusest
void
Valju
(
GtkWidget
*
Nupp
,
gpointer
Data
)
{
ui
*
UI
=
(
ui
*
)
Data
;
if
(
Sulge
(
UI
))
gtk_main_quit
();;
}
// Loo programmi kasutajaliides
// Loo programmi kasutajaliides
ui
*
LooUI
()
ui
*
LooUI
()
{
{
...
@@ -10,7 +48,7 @@ ui *LooUI()
...
@@ -10,7 +48,7 @@ ui *LooUI()
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
_swapped
(
G_OBJECT
(
UI
->
Aken
),
"destroy"
,
G_CALLBACK
(
gtk_main_quit
),
NULL
);
// 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
...
@@ -30,8 +68,9 @@ ui *LooUI()
...
@@ -30,8 +68,9 @@ ui *LooUI()
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
"
);
// Fail->Uus
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
;
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
...
@@ -45,8 +84,9 @@ ui *LooUI()
...
@@ -45,8 +84,9 @@ ui *LooUI()
// 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üü
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
FailMenuUus
);
// Fail->Uus
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
FailMenuUus
);
// Fail->Uus
vahekaart
g_signal_connect
(
FailMenuUus
,
"activate"
,
G_CALLBACK
(
Uus
),
UI
);
g_signal_connect
(
FailMenuUus
,
"activate"
,
G_CALLBACK
(
Uus
),
UI
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
gtk_separator_menu_item_new
());
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
FailMenuAva
);
// Fail->Ava
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
FailMenuAva
);
// Fail->Ava
g_signal_connect
(
FailMenuAva
,
"activate"
,
G_CALLBACK
(
Ava
),
UI
);
g_signal_connect
(
FailMenuAva
,
"activate"
,
G_CALLBACK
(
Ava
),
UI
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
FailMenuSalvesta
);
// Fail->Salvesta
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
FailMenuSalvesta
);
// Fail->Salvesta
...
@@ -58,7 +98,7 @@ ui *LooUI()
...
@@ -58,7 +98,7 @@ ui *LooUI()
g_signal_connect
(
FailMenuSulgeV
,
"activate"
,
G_CALLBACK
(
SulgeVahekaart
),
UI
);
g_signal_connect
(
FailMenuSulgeV
,
"activate"
,
G_CALLBACK
(
SulgeVahekaart
),
UI
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
gtk_separator_menu_item_new
());
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
gtk_separator_menu_item_new
());
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
FailMenuValju
);
// Fail->Välju
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
FailMenuValju
);
// Fail->Välju
g_signal_connect
(
FailMenuValju
,
"activate"
,
G_CALLBACK
(
gtk_main_quit
),
NULL
);
g_signal_connect
(
FailMenuValju
,
"activate"
,
G_CALLBACK
(
Valju
),
UI
);
// 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
);
...
...
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