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
43e3d3dd
authored
Mar 31, 2022
by
Herman Ounas
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'Karl' into Herman
parents
607fda03
3879d569
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
228 additions
and
40 deletions
ceditor.c
ceditor.h
compiler.c
compiler.h
menubar.c
statusbar.c
tab.c
textview.c
textview.h
ui.c
ui.h
ceditor.c
View file @
43e3d3dd
#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
);
...
...
ceditor.h
View file @
43e3d3dd
...
@@ -4,9 +4,7 @@
...
@@ -4,9 +4,7 @@
#include <gtk/gtk.h>
#include <gtk/gtk.h>
#ifdef SOURCEVIEW
#include <gtksourceview/gtksource.h>
#include <gtksourceview/gtksource.h>
#endif
typedef
struct
typedef
struct
{
{
...
@@ -14,11 +12,15 @@ typedef struct
...
@@ -14,11 +12,15 @@ typedef struct
char
*
FailiNimi
;
// Viit faili nimele, 0 kui nime veel pole
char
*
FailiNimi
;
// Viit faili nimele, 0 kui nime veel pole
GtkWidget
*
Pealkiri
;
// Vahekaardi pealkiri
GtkWidget
*
Pealkiri
;
// Vahekaardi pealkiri
char
*
PealkiriTekst
;
// Originaalne pealkirja tekst
GtkWidget
*
Box
;
// Vahekaardi box
GtkWidget
*
Box
;
// Vahekaardi box
GtkWidget
*
TextView
;
// Vahekaardi tekstiaken
GtkWidget
*
TextView
;
// Vahekaardi tekstiaken
GtkTextView
*
Puhver
;
// Vahekaardi tekstipuhver
GtkTextView
*
Puhver
;
// Vahekaardi tekstipuhver
GtkWidget
*
ScrollWindow
;
// Tekstiakna scroll
GtkWidget
*
ScrollWindow
;
// Tekstiakna scroll
GtkWidget
*
StatusBar
;
// Status bar
GtkWidget
*
StatusBar
;
// Status bar
GtkSourceLanguageManager
*
LangManager
;
GtkSourceLanguage
*
Language
;
}
tab
;
}
tab
;
typedef
struct
typedef
struct
...
@@ -28,6 +30,7 @@ typedef struct
...
@@ -28,6 +30,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
// Viited nuppudele nende sisse/välja lülitamiseks
// Viited nuppudele nende sisse/välja lülitamiseks
GtkWidget
*
FailMenuAva
;
GtkWidget
*
FailMenuAva
;
...
@@ -42,6 +45,9 @@ typedef struct
...
@@ -42,6 +45,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
compiler.c
0 → 100644
View file @
43e3d3dd
#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
);
}
compiler.h
0 → 100644
View file @
43e3d3dd
#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
menubar.c
View file @
43e3d3dd
...
@@ -44,6 +44,7 @@ void Ava(GtkWidget *Nupp, gpointer Data)
...
@@ -44,6 +44,7 @@ void Ava(GtkWidget *Nupp, gpointer Data)
gtk_text_buffer_set_modified
(
Tab
->
Puhver
,
FALSE
);
// Tekst on muutmata
gtk_text_buffer_set_modified
(
Tab
->
Puhver
,
FALSE
);
// Tekst on muutmata
Tab
->
FailiNimi
=
Nimi
;
Tab
->
FailiNimi
=
Nimi
;
UuendaTabiPealkirja
(
Tab
,
Nimi
);
UuendaTabiPealkirja
(
Tab
,
Nimi
);
UuendaTabMuudetud
(
Tab
);
}
}
else
else
{
{
...
@@ -72,6 +73,7 @@ int SalvestaFail(ui *UI, tab *Tab)
...
@@ -72,6 +73,7 @@ int SalvestaFail(ui *UI, tab *Tab)
GtkWidget
*
Dialog
=
0
;
GtkWidget
*
Dialog
=
0
;
if
(
Tab
->
FailiNimi
)
// Fail on juba olemas
if
(
Tab
->
FailiNimi
)
// Fail on juba olemas
{
{
if
(
gtk_text_buffer_get_modified
(
Puhver
)
==
0
)
return
;
// Ära salvesta, kui midagi pole muudetud
Nimi
=
Tab
->
FailiNimi
;
Nimi
=
Tab
->
FailiNimi
;
}
}
else
// Salvestame uue faili
else
// Salvestame uue faili
...
@@ -107,7 +109,9 @@ int SalvestaFail(ui *UI, tab *Tab)
...
@@ -107,7 +109,9 @@ int SalvestaFail(ui *UI, tab *Tab)
Tab
->
FailiNimi
=
Nimi
;
Tab
->
FailiNimi
=
Nimi
;
UuendaTabiPealkirja
(
Tab
,
Nimi
);
UuendaTabiPealkirja
(
Tab
,
Nimi
);
}
}
else
g_free
(
Nimi
);
UuendaTabMuudetud
(
Tab
);
g_free
(
Sisu
);
g_free
(
Sisu
);
if
(
Dialog
)
gtk_widget_destroy
(
Dialog
);
if
(
Dialog
)
gtk_widget_destroy
(
Dialog
);
...
@@ -170,7 +174,8 @@ void SalvestaNimega(GtkWidget *Nupp, gpointer Data)
...
@@ -170,7 +174,8 @@ void SalvestaNimega(GtkWidget *Nupp, gpointer Data)
Tab
->
FailiNimi
=
Nimi
;
Tab
->
FailiNimi
=
Nimi
;
UuendaTabiPealkirja
(
Tab
,
Nimi
);
UuendaTabiPealkirja
(
Tab
,
Nimi
);
}
}
else
g_free
(
Nimi
);
UuendaTabMuudetud
(
Tab
);
}
}
else
else
{
{
...
...
statusbar.c
View file @
43e3d3dd
tab.c
View file @
43e3d3dd
...
@@ -20,12 +20,9 @@ void LisaTab(ui *UI)
...
@@ -20,12 +20,9 @@ void LisaTab(ui *UI)
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
#else
Tab
->
TextView
=
gtk_text_view_new
();
// Loo tekstiaken
#endif
Tab
->
Puhver
=
gtk_text_view_get_buffer
(
GTK_TEXT_VIEW
(
Tab
->
TextView
));
// Tekstiakna teksti puhver
Tab
->
Puhver
=
gtk_text_view_get_buffer
(
GTK_TEXT_VIEW
(
Tab
->
TextView
));
// Tekstiakna teksti puhver
Tab
->
OnMuudetud
=
0
;
// Scroll window
// Scroll window
Tab
->
ScrollWindow
=
gtk_scrolled_window_new
(
NULL
,
NULL
);
// Loo scroll aken
Tab
->
ScrollWindow
=
gtk_scrolled_window_new
(
NULL
,
NULL
);
// Loo scroll aken
...
@@ -34,8 +31,10 @@ void LisaTab(ui *UI)
...
@@ -34,8 +31,10 @@ void LisaTab(ui *UI)
gtk_scrolled_window_set_shadow_type
(
GTK_SCROLLED_WINDOW
(
Tab
->
ScrollWindow
),
GTK_SHADOW_ETCHED_IN
);
gtk_scrolled_window_set_shadow_type
(
GTK_SCROLLED_WINDOW
(
Tab
->
ScrollWindow
),
GTK_SHADOW_ETCHED_IN
);
// Status bar
// Status bar
Tab
->
StatusBar
=
gtk_statusbar_new
();
Tab
->
StatusBar
=
gtk_statusbar_new
();
// Teksti muutuse callback, uuendab rida/veergu
// Teksti muutuse callback
g_signal_connect
(
Tab
->
Puhver
,
"changed"
,
G_CALLBACK
(
UuendaRidaVeerg
),
Tab
->
StatusBar
);
g_signal_connect
(
Tab
->
Puhver
,
"changed"
,
G_CALLBACK
(
TekstMuudetud
),
Tab
);
// Modified callback
g_signal_connect
(
Tab
->
Puhver
,
"modified-changed"
,
G_CALLBACK
(
TekstModified
),
Tab
);
// 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
);
...
@@ -46,6 +45,11 @@ void LisaTab(ui *UI)
...
@@ -46,6 +45,11 @@ void LisaTab(ui *UI)
// Pealkiri
// Pealkiri
Tab
->
Pealkiri
=
gtk_label_new
(
"(uus)"
);
Tab
->
Pealkiri
=
gtk_label_new
(
"(uus)"
);
Tab
->
PealkiriTekst
=
"(uus)"
;
Tab
->
LangManager
=
gtk_source_language_manager_get_default
();
Tab
->
Language
=
gtk_source_language_manager_get_language
(
Tab
->
LangManager
,
"c"
);
gtk_source_buffer_set_language
(
Tab
->
Puhver
,
Tab
->
Language
);
// 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
);
...
@@ -84,13 +88,27 @@ void KustutaTab(ui *UI, int Indeks)
...
@@ -84,13 +88,27 @@ void KustutaTab(ui *UI, int Indeks)
// 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
->
Pealkiri
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
),
Tab
->
Pealkiri
Tekst
);
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
)
{
if
(
gtk_text_buffer_get_modified
(
Tab
->
Puhver
))
{
char
*
Tekst
=
g_strdup_printf
(
"%s *"
,
gtk_label_get_text
(
Tab
->
Pealkiri
));
gtk_label_set_label
(
GTK_LABEL
(
Tab
->
Pealkiri
),
Tekst
);
g_free
(
Tekst
);
}
else
{
gtk_label_set_label
(
GTK_LABEL
(
Tab
->
Pealkiri
),
Tab
->
PealkiriTekst
);
}
}
// 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
)
{
{
...
...
textview.c
View file @
43e3d3dd
#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
)
{
{
...
...
textview.h
View file @
43e3d3dd
...
@@ -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 @
43e3d3dd
...
@@ -38,6 +38,14 @@ void Valju(GtkWidget *Nupp, gpointer Data)
...
@@ -38,6 +38,14 @@ void Valju(GtkWidget *Nupp, gpointer Data)
if
(
Sulge
(
UI
))
gtk_main_quit
();;
if
(
Sulge
(
UI
))
gtk_main_quit
();;
}
}
// Lisa menüüsse menu item
void
LisaMenuItem
(
ui
*
UI
,
GtkWidget
*
Menu
,
GtkWidget
*
MenuItem
,
void
*
Callback
,
guint
Nupp
,
GdkModifierType
NuppMask
)
{
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
Menu
),
MenuItem
);
g_signal_connect
(
MenuItem
,
"activate"
,
G_CALLBACK
(
Callback
),
UI
);
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
()
{
{
...
@@ -63,11 +71,16 @@ ui *LooUI()
...
@@ -63,11 +71,16 @@ ui *LooUI()
LisaTab
(
UI
);
LisaTab
(
UI
);
UI
->
PraeguneTab
=
0
;
UI
->
PraeguneTab
=
0
;
// Accel group
UI
->
AccelGroup
=
gtk_accel_group_new
();
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
*
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
;
...
@@ -78,27 +91,33 @@ ui *LooUI()
...
@@ -78,27 +91,33 @@ 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üü
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
FailMenuUus
);
// Fail->Uus vahekaart
LisaMenuItem
(
UI
,
FailMenu
,
FailMenuUus
,
Uus
,
GDK_KEY_N
,
GDK_CONTROL_MASK
);
// Fail->Uus vahekaart
g_signal_connect
(
FailMenuUus
,
"activate"
,
G_CALLBACK
(
Uus
),
UI
);
MenuSeparator
(
FailMenu
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
gtk_separator_menu_item_new
());
LisaMenuItem
(
UI
,
FailMenu
,
FailMenuAva
,
Ava
,
GDK_KEY_O
,
GDK_CONTROL_MASK
);
// Fail->Ava
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
FailMenuAva
);
// Fail->Ava
LisaMenuItem
(
UI
,
FailMenu
,
FailMenuSalvesta
,
Salvesta
,
GDK_KEY_S
,
GDK_CONTROL_MASK
);
// Fail->Salvesta
g_signal_connect
(
FailMenuAva
,
"activate"
,
G_CALLBACK
(
Ava
),
UI
);
LisaMenuItem
(
UI
,
FailMenu
,
FailMenuSalvestaN
,
SalvestaNimega
,
GDK_KEY_S
,
GDK_CONTROL_MASK
|
GDK_MOD1_MASK
);
// Fail->Salvesta nimega
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
FailMenuSalvesta
);
// Fail->Salvesta
MenuSeparator
(
FailMenu
);
g_signal_connect
(
FailMenuSalvesta
,
"activate"
,
G_CALLBACK
(
Salvesta
),
UI
);
LisaMenuItem
(
UI
,
FailMenu
,
FailMenuSulgeV
,
SulgeVahekaart
,
GDK_KEY_W
,
GDK_CONTROL_MASK
);
// Fail->Sulge vahekaart
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
FailMenuSalvestaN
);
// Fail->Salvesta nimega
MenuSeparator
(
FailMenu
);
g_signal_connect
(
FailMenuSalvestaN
,
"activate"
,
G_CALLBACK
(
SalvestaNimega
),
UI
);
LisaMenuItem
(
UI
,
FailMenu
,
FailMenuValju
,
Valju
,
GDK_KEY_Q
,
GDK_CONTROL_MASK
|
GDK_SHIFT_MASK
);
// Fail->Välju
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
gtk_separator_menu_item_new
());
// Kompileeri menüü
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
FailMenuSulgeV
);
// Fail->Sulge vahekaart
LisaMenuItem
(
UI
,
KompMenu
,
KompMenuSeaded
,
KompilaatoriSeaded
,
0
,
0
);
// Kompileeri->Seaded
g_signal_connect
(
FailMenuSulgeV
,
"activate"
,
G_CALLBACK
(
SulgeVahekaart
),
UI
);
MenuSeparator
(
KompMenu
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
gtk_separator_menu_item_new
());
LisaMenuItem
(
UI
,
KompMenu
,
KompMenuKompileeri
,
NULL
,
GDK_KEY_C
,
GDK_CONTROL_MASK
|
GDK_SHIFT_MASK
);
// Kompileeri->Kompileeri
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
FailMenu
),
FailMenuValju
);
// Fail->Välju
LisaMenuItem
(
UI
,
KompMenu
,
KompMenuKaivita
,
NULL
,
GDK_KEY_R
,
GDK_CONTROL_MASK
|
GDK_SHIFT_MASK
);
// Kompileeri->Käivita
g_signal_connect
(
FailMenuValju
,
"activate"
,
G_CALLBACK
(
Valju
),
UI
);
//ToolBar
//ToolBar
UI
->
ToolBar
=
gtk_toolbar_new
();
UI
->
ToolBar
=
gtk_toolbar_new
();
...
@@ -118,5 +137,28 @@ ui *LooUI()
...
@@ -118,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
;
}
}
ui.h
View file @
43e3d3dd
...
@@ -4,12 +4,11 @@
...
@@ -4,12 +4,11 @@
#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 MenuSeparator(M) gtk_menu_shell_append(GTK_MENU_SHELL(M), gtk_separator_menu_item_new())
#define PEALKIRI "CEditor TextView"
#endif
ui
*
LooUI
();
ui
*
LooUI
();
...
...
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