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
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
121 additions
and
21 deletions
ceditor.c
ceditor.h
menubar.c
tab.c
tab.h
ui.c
ceditor.c
View file @
4e267cd5
...
...
@@ -2,7 +2,6 @@
#include "ui.h"
/* TODO
Faili salvestamise prompt sulgemisel/uue avamisel
Klahvikombinatsioonid
*/
...
...
ceditor.h
View file @
4e267cd5
...
...
@@ -27,6 +27,7 @@ typedef struct
GtkWidget
*
Notebook
;
// Notebook vahekaartidega
// Viited nuppudele nende sisse/välja lülitamiseks
GtkWidget
*
FailMenuAva
;
GtkWidget
*
FailMenuSalvesta
;
GtkWidget
*
FailMenuSalvestaN
;
GtkWidget
*
FailMenuSulgeV
;
...
...
menubar.c
View file @
4e267cd5
...
...
@@ -12,6 +12,7 @@ void Uus(GtkWidget *Nupp, gpointer Data)
gtk_notebook_set_current_page
(
UI
->
Notebook
,
UI
->
TabidN
-
1
);
// Näita uut vahekaarti
// 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
->
FailMenuSalvestaN
,
TRUE
);
gtk_widget_set_sensitive
(
UI
->
FailMenuSulgeV
,
TRUE
);
...
...
@@ -40,6 +41,7 @@ void Ava(GtkWidget *Nupp, gpointer Data)
if
(
g_utf8_validate
(
Sisu
,
-
1
,
NULL
))
{
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
;
UuendaTabiPealkirja
(
Tab
,
Nimi
);
}
...
...
@@ -61,11 +63,9 @@ void Ava(GtkWidget *Nupp, gpointer Data)
gtk_widget_destroy
(
Dialog
);
}
// Salvesta
b vahekaardi teksti praegusesse faili
void
Salvesta
(
GtkWidget
*
Nupp
,
gpointer
Data
)
// Salvesta
fail, tagastab 1 kui edukas
int
SalvestaFail
(
ui
*
UI
,
tab
*
Tab
)
{
ui
*
UI
=
(
ui
*
)
Data
;
tab
*
Tab
=
&
UI
->
Tabid
[
UI
->
PraeguneTab
];
GtkTextBuffer
*
Puhver
=
Tab
->
Puhver
;
char
*
Nimi
;
...
...
@@ -87,7 +87,7 @@ void Salvesta(GtkWidget *Nupp, gpointer Data)
else
{
gtk_widget_destroy
(
Dialog
);
return
;
return
0
;
}
}
...
...
@@ -96,14 +96,10 @@ void Salvesta(GtkWidget *Nupp, gpointer Data)
gtk_text_buffer_get_end_iter
(
Puhver
,
&
TekstL
);
gchar
*
Sisu
=
gtk_text_buffer_get_text
(
Puhver
,
&
TekstA
,
&
TekstL
,
TRUE
);
gtk_text_buffer_set_modified
(
Puhver
,
FALSE
);
GError
*
Viga
=
NULL
;
if
(
g_file_set_contents
(
Nimi
,
Sisu
,
-
1
,
&
Viga
)
==
FALS
E
)
if
(
g_file_set_contents
(
Nimi
,
Sisu
,
-
1
,
&
Viga
)
==
TRU
E
)
{
printf
(
"Viga faili salvestamisel: %s
\n
"
,
Viga
->
message
);
g_error_free
(
Viga
);
}
gtk_text_buffer_set_modified
(
Tab
->
Puhver
,
FALSE
);
// Tekst on muutmata
// Kui enne salvestamist failinime polńud, siis kasuta praegust
if
(
!
Tab
->
FailiNimi
)
...
...
@@ -113,8 +109,29 @@ void Salvesta(GtkWidget *Nupp, gpointer Data)
}
else
g_free
(
Nimi
);
g_free
(
Sisu
);
if
(
Dialog
)
gtk_widget_destroy
(
Dialog
);
return
1
;
}
else
{
printf
(
"Viga faili salvestamisel: %s
\n
"
,
Viga
->
message
);
g_error_free
(
Viga
);
g_free
(
Nimi
);
g_free
(
Sisu
);
if
(
Dialog
)
gtk_widget_destroy
(
Dialog
);
return
0
;
}
}
// Salvestab vahekaardi teksti praegusesse faili
void
Salvesta
(
GtkWidget
*
Nupp
,
gpointer
Data
)
{
ui
*
UI
=
(
ui
*
)
Data
;
tab
*
Tab
=
&
UI
->
Tabid
[
UI
->
PraeguneTab
];
SalvestaFail
(
UI
,
Tab
);
}
// Salvestab vahekaardi teksti vabalt valitud faili
...
...
@@ -140,10 +157,11 @@ void SalvestaNimega(GtkWidget *Nupp, gpointer Data)
gtk_text_buffer_set_modified
(
Puhver
,
FALSE
);
GError
*
Viga
=
NULL
;
if
(
g_file_set_contents
(
Nimi
,
Sisu
,
-
1
,
&
Viga
)
==
FALS
E
)
if
(
g_file_set_contents
(
Nimi
,
Sisu
,
-
1
,
&
Viga
)
==
TRU
E
)
{
printf
(
"Viga faili salvestamisel: %s
\n
"
,
Viga
->
message
);
g_error_free
(
Viga
);
if
(
g_strcmp0
(
Nimi
,
Tab
->
FailiNimi
)
==
0
)
{
printf
(
"Sama fail
\n
"
);
}
// Kui enne salvestamist failinime polńud, siis kasuta praegust
...
...
@@ -153,8 +171,15 @@ void SalvestaNimega(GtkWidget *Nupp, gpointer Data)
UuendaTabiPealkirja
(
Tab
,
Nimi
);
}
else
g_free
(
Nimi
);
g_free
(
Sisu
);
}
else
{
printf
(
"Viga faili salvestamisel: %s
\n
"
,
Viga
->
message
);
g_error_free
(
Viga
);
g_free
(
Nimi
);
}
g_free
(
Sisu
);
}
gtk_widget_destroy
(
Dialog
);
...
...
@@ -165,10 +190,11 @@ void SulgeVahekaart(GtkWidget *Nupp, gpointer Data)
{
ui
*
UI
=
(
ui
*
)
Data
;
Kustuta
Tab
(
UI
,
UI
->
PraeguneTab
);
Sulge
Tab
(
UI
,
UI
->
PraeguneTab
);
if
(
UI
->
TabidN
==
0
)
{
gtk_widget_set_sensitive
(
UI
->
FailMenuAva
,
FALSE
);
gtk_widget_set_sensitive
(
UI
->
FailMenuSalvesta
,
FALSE
);
gtk_widget_set_sensitive
(
UI
->
FailMenuSalvestaN
,
FALSE
);
gtk_widget_set_sensitive
(
UI
->
FailMenuSulgeV
,
FALSE
);
...
...
tab.c
View file @
4e267cd5
...
...
@@ -87,6 +87,8 @@ 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
);
// Terve faili nimi tooltip'is
gtk_widget_set_tooltip_text
(
Tab
->
Pealkiri
,
Nimi
);
}
// Kutsutakse igal vahekaardi muutmisel
...
...
@@ -95,3 +97,34 @@ void TabMuudetud(GtkWidget *Notebook, GtkWidget *Tab, guint Indeks, gpointer Dat
ui
*
UI
=
(
ui
*
)
Data
;
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);
void
KustutaTab
(
ui
*
UI
,
int
Indeks
);
void
UuendaTabiPealkirja
(
tab
*
Tab
,
char
*
Nimi
);
void
TabMuudetud
(
GtkWidget
*
Notebook
,
GtkWidget
*
Tab
,
guint
Indeks
,
gpointer
Data
);
int
SulgeTab
(
ui
*
UI
,
int
Indeks
);
#endif // TAB_H
ui.c
View file @
4e267cd5
#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
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_default_size
(
GTK_WINDOW
(
UI
->
Aken
),
800
,
600
);
// Akna suurus
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
UI
->
Box
=
gtk_box_new
(
GTK_ORIENTATION_VERTICAL
,
0
);
// Vertikaalne box, 0px vahe
...
...
@@ -30,8 +68,9 @@ ui *LooUI()
GtkWidget
*
FailMenuNupp
=
gtk_menu_item_new_with_label
(
"Fail"
);
// Fail
GtkWidget
*
AboutMenuNupp
=
gtk_menu_item_new_with_label
(
"About"
);
// About
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
UI
->
FailMenuAva
=
FailMenuAva
;
GtkWidget
*
FailMenuSalvesta
=
gtk_menu_item_new_with_label
(
"Salvesta"
);
// Fail->Salvesta
UI
->
FailMenuSalvesta
=
FailMenuSalvesta
;
GtkWidget
*
FailMenuSalvestaN
=
gtk_menu_item_new_with_label
(
"Salvesta nimega"
);
// Fail->Salvesta nimega
...
...
@@ -45,8 +84,9 @@ ui *LooUI()
// Menüüd nuppudesse
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
FailMenuNupp
),
FailMenu
);
// 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
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
gtk_separator_menu_item_new
());
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
FailMenuAva
);
// Fail->Ava
g_signal_connect
(
FailMenuAva
,
"activate"
,
G_CALLBACK
(
Ava
),
UI
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
FailMenuSalvesta
);
// Fail->Salvesta
...
...
@@ -58,7 +98,7 @@ ui *LooUI()
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
),
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
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