Commit 3879d569 by karudu

Kompilaatori seadistamise aken, seadete fail

parent 28835234
...@@ -8,7 +8,6 @@ typedef struct ...@@ -8,7 +8,6 @@ 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 *Pealkiri; // Vahekaardi pealkiri
char *PealkiriTekst; // Originaalne pealkirja tekst char *PealkiriTekst; // Originaalne pealkirja tekst
...@@ -44,6 +43,9 @@ typedef struct ...@@ -44,6 +43,9 @@ typedef struct
//toolbari nupud //toolbari nupud
GtkToolItem *Undo; //undo nupp GtkToolItem *Undo; //undo nupp
GtkToolItem *Redo; //redo nupp GtkToolItem *Redo; //redo nupp
GKeyFile *Seaded; // Seadete fail
char *SeadedNimi; // Seadete faili nimi
} ui; } ui;
#endif // CEDITOR_H #endif // CEDITOR_H
#include "compiler.h"
// Salvesta kompilaatori seaded ja sulge aken
void SalvestaSeaded(GtkWidget *Nupp, gpointer Data)
{
puhvrid *Puhvrid = (puhvrid *)Data;
g_key_file_set_string(Puhvrid->Seaded, "Kompilaator", "nimi", gtk_entry_buffer_get_text(Puhvrid->PuhverNimi));
g_key_file_set_string(Puhvrid->Seaded, "Kompilaator", "seaded", gtk_entry_buffer_get_text(Puhvrid->PuhverSeaded));
g_key_file_set_string(Puhvrid->Seaded, "Kompilaator", "asukoht", gtk_entry_buffer_get_text(Puhvrid->PuhverAsukoht));
g_key_file_save_to_file(Puhvrid->Seaded, Puhvrid->SeadedNimi, 0);
gtk_widget_destroy(GTK_WIDGET(Puhvrid->Aken));
g_free(Puhvrid);
}
// Sulge aken
void SulgeSeaded(GtkWidget *Nupp, gpointer Data)
{
puhvrid *Puhvrid = (puhvrid *)Data;
gtk_widget_destroy(GTK_WIDGET(Puhvrid->Aken));
g_free(Puhvrid);
}
// Kompilaatori seadete aken
void KompilaatoriSeaded(GtkWidget *Nupp, gpointer Data)
{
ui *UI = (ui *)Data;
GtkWindow *Aken = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(Aken, 400, 180); // Akna suurus
gtk_window_set_title(Aken, "Kompilaatori seaded"); // Pealkiri
gtk_window_set_type_hint(Aken, GDK_WINDOW_TYPE_HINT_DIALOG);
GtkBox *Box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add(GTK_CONTAINER(Aken), Box); // Pane box aknasse
GtkBox *HBox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8);
GtkBox *HBox2 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8);
GtkBox *HBox3 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8);
GtkBox *HBox4 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8);
GtkLabel *LabelNimi = gtk_label_new("Nimi");
GtkLabel *LabelSeaded = gtk_label_new("Seaded");
GtkLabel *LabelAsukoht = gtk_label_new("Asukoht");
GtkEntry *EntryNimi = gtk_entry_new();
gtk_entry_set_width_chars(EntryNimi, 40);
GtkEntry *EntrySeaded = gtk_entry_new();
gtk_entry_set_width_chars(EntrySeaded, 40);
GtkEntry *EntryAsukoht = gtk_entry_new();
gtk_entry_set_width_chars(EntryAsukoht, 40);
GtkEntryBuffer *PuhverNimi = gtk_entry_get_buffer(EntryNimi);
GtkEntryBuffer *PuhverSeaded = gtk_entry_get_buffer(EntrySeaded);
GtkEntryBuffer *PuhverAsukoht = gtk_entry_get_buffer(EntryAsukoht);
gtk_box_pack_start(HBox1, GTK_WIDGET(LabelNimi), FALSE, FALSE, 8);
gtk_box_pack_start(HBox1, GTK_WIDGET(EntryNimi), FALSE, FALSE, 33);
gtk_box_pack_start(HBox2, GTK_WIDGET(LabelSeaded), FALSE, FALSE, 8);
gtk_box_pack_start(HBox2, GTK_WIDGET(EntrySeaded), FALSE, FALSE, 11);
gtk_box_pack_start(HBox3, GTK_WIDGET(LabelAsukoht), FALSE, FALSE, 8);
gtk_box_pack_start(HBox3, GTK_WIDGET(EntryAsukoht), FALSE, FALSE, 4);
char *Nimi = g_key_file_get_string(UI->Seaded, "Kompilaator", "nimi", NULL);
if(Nimi) gtk_entry_buffer_set_text(PuhverNimi, Nimi, -1);
char *Seaded = g_key_file_get_string(UI->Seaded, "Kompilaator", "seaded", NULL);
if(Seaded) gtk_entry_buffer_set_text(PuhverSeaded, Seaded, -1);
char *Asukoht = g_key_file_get_string(UI->Seaded, "Kompilaator", "asukoht", NULL);
if(Asukoht) gtk_entry_buffer_set_text(PuhverAsukoht, Asukoht, -1);
puhvrid *Puhvrid = malloc(sizeof(puhvrid));
Puhvrid->Aken = Aken;
Puhvrid->Seaded = UI->Seaded;
Puhvrid->SeadedNimi = UI->SeadedNimi;
Puhvrid->PuhverNimi = PuhverNimi;
Puhvrid->PuhverSeaded = PuhverSeaded;
Puhvrid->PuhverAsukoht = PuhverAsukoht;
GtkButton *NuppSalvesta = gtk_button_new_with_label("Salvesta");
GtkButton *NuppValju = gtk_button_new_with_label("Välju");
g_signal_connect(NuppSalvesta, "clicked", G_CALLBACK(SalvestaSeaded), Puhvrid);
g_signal_connect(NuppValju, "clicked", G_CALLBACK(SulgeSeaded), Puhvrid);
gtk_box_pack_start(HBox4, GTK_WIDGET(NuppSalvesta), FALSE, FALSE, 100);
gtk_box_pack_start(HBox4, GTK_WIDGET(NuppValju), FALSE, FALSE, 8);
gtk_box_pack_start(Box, GTK_WIDGET(HBox1), FALSE, FALSE, 4);
gtk_box_pack_start(Box, GTK_WIDGET(HBox2), FALSE, FALSE, 4);
gtk_box_pack_start(Box, GTK_WIDGET(HBox3), FALSE, FALSE, 4);
gtk_box_pack_start(Box, GTK_WIDGET(HBox4), FALSE, FALSE, 8);
gtk_widget_show_all(Aken);
}
#ifndef COMPILER_H
#define COMPILER_H
#include "ceditor.h"
typedef struct
{
GtkWindow *Aken;
GKeyFile *Seaded;
char *SeadedNimi;
GtkEntryBuffer *PuhverNimi;
GtkEntryBuffer *PuhverSeaded;
GtkEntryBuffer *PuhverAsukoht;
} puhvrid;
void KompilaatoriSeaded(GtkWidget *Nupp, gpointer Data);
#endif // COMPILER_H
...@@ -97,19 +97,15 @@ void UuendaTabiPealkirja(tab *Tab, char *Nimi) ...@@ -97,19 +97,15 @@ void UuendaTabiPealkirja(tab *Tab, char *Nimi)
void UuendaTabMuudetud(tab *Tab) void UuendaTabMuudetud(tab *Tab)
{ {
int Muudetud = gtk_text_buffer_get_modified(Tab->Puhver); if(gtk_text_buffer_get_modified(Tab->Puhver))
if(Tab->OnMuudetud == 0)
{ {
char *Tekst = g_strdup_printf("%s *", gtk_label_get_text(Tab->Pealkiri)); char *Tekst = g_strdup_printf("%s *", gtk_label_get_text(Tab->Pealkiri));
gtk_label_set_label(GTK_LABEL(Tab->Pealkiri), Tekst); gtk_label_set_label(GTK_LABEL(Tab->Pealkiri), Tekst);
g_free(Tekst); g_free(Tekst);
Tab->OnMuudetud = 1;
} }
else if(!Muudetud) else
{ {
gtk_label_set_label(GTK_LABEL(Tab->Pealkiri), Tab->PealkiriTekst); gtk_label_set_label(GTK_LABEL(Tab->Pealkiri), Tab->PealkiriTekst);
Tab->OnMuudetud = 0;
} }
} }
......
...@@ -78,8 +78,9 @@ ui *LooUI() ...@@ -78,8 +78,9 @@ ui *LooUI()
// 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 *KompMenuNupp = gtk_menu_item_new_with_label("Kompileeri"); // Kompileeri
GtkWidget *FailMenu = gtk_menu_new(); // Fail menüü // Fail menüü
GtkWidget *FailMenu = gtk_menu_new();
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;
...@@ -90,11 +91,18 @@ ui *LooUI() ...@@ -90,11 +91,18 @@ ui *LooUI()
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
// Kompileeri menüü
GtkWidget *KompMenu = gtk_menu_new();
GtkWidget *KompMenuSeaded = gtk_menu_item_new_with_label("Seaded"); // Kompileeri->Seaded
GtkWidget *KompMenuKompileeri = gtk_menu_item_new_with_label("Kompileeri"); // Kompileeri->Kompileeri
GtkWidget *KompMenuKaivita = gtk_menu_item_new_with_label("Käivita"); // Kompileeri->Käivita
// 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), KompMenuNupp);
// 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);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(KompMenuNupp), KompMenu);
// 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);
...@@ -105,6 +113,11 @@ ui *LooUI() ...@@ -105,6 +113,11 @@ ui *LooUI()
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
// Kompileeri menüü
LisaMenuItem(UI, KompMenu, KompMenuSeaded, KompilaatoriSeaded, 0, 0); // Kompileeri->Seaded
MenuSeparator(KompMenu);
LisaMenuItem(UI, KompMenu, KompMenuKompileeri, NULL, GDK_KEY_C, GDK_CONTROL_MASK|GDK_SHIFT_MASK); // Kompileeri->Kompileeri
LisaMenuItem(UI, KompMenu, KompMenuKaivita, NULL, GDK_KEY_R, GDK_CONTROL_MASK|GDK_SHIFT_MASK); // Kompileeri->Käivita
//ToolBar //ToolBar
UI->ToolBar = gtk_toolbar_new(); UI->ToolBar = gtk_toolbar_new();
...@@ -124,5 +137,28 @@ ui *LooUI() ...@@ -124,5 +137,28 @@ ui *LooUI()
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);
// Seadete fail
UI->Seaded = g_key_file_new();
char *SeadedKaust = g_build_filename(g_get_home_dir(), "ceditor", NULL);
char *SeadedNimi = g_build_filename(SeadedKaust, "settings.ini", NULL);
UI->SeadedNimi = strdup(SeadedNimi);
GError *Viga = NULL;
// Ava seadete fail
if(!g_key_file_load_from_file(UI->Seaded, SeadedNimi, G_KEY_FILE_NONE, &Viga))
{
// Ei õnnestunud avada
if(Viga->code == G_FILE_ERROR_NOENT) // Faili pole olemas, loo see
{
g_mkdir_with_parents(SeadedKaust, 0700);
g_key_file_save_to_file(UI->Seaded, SeadedNimi, NULL);
}
else
{
printf("Viga settings.ini avamisel: %s\n", Viga->message);
}
g_error_free(Viga);
}
return UI; return UI;
} }
...@@ -4,12 +4,9 @@ ...@@ -4,12 +4,9 @@
#include "ceditor.h" #include "ceditor.h"
#include "tab.h" #include "tab.h"
#include "menubar.h" #include "menubar.h"
#include "compiler.h"
#ifdef SOURCEVIEW #define PEALKIRI "CEditor"
#define PEALKIRI "CEditor SourceView"
#else
#define PEALKIRI "CEditor TextView"
#endif
#define MenuSeparator(M) gtk_menu_shell_append(GTK_MENU_SHELL(M), gtk_separator_menu_item_new()) #define MenuSeparator(M) gtk_menu_shell_append(GTK_MENU_SHELL(M), gtk_separator_menu_item_new())
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment