Skip to content

Commit b793788

Browse files
committed
Clicky: The "Run" button runs the current configuration buffer.
Signed-off-by: Eddie Kohler <[email protected]>
1 parent aa57fe3 commit b793788

File tree

3 files changed

+19
-9
lines changed

3 files changed

+19
-9
lines changed

apps/clicky/src/crouter.cc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,9 +318,11 @@ void crouter::run(ErrorHandler *errh)
318318
int pos = 0;
319319
while (pos != _conf.length()) {
320320
ssize_t r = write(configpipe[1], _conf.begin() + pos, _conf.length() - pos);
321-
if (r == 0 || (r == -1 && errno != EAGAIN && errno != EINTR))
321+
if (r == 0 || (r == -1 && errno != EAGAIN && errno != EINTR)) {
322+
if (r == -1)
323+
errh->message("%s while writing configuration", strerror(errno));
322324
break;
323-
else if (r != -1)
325+
} else if (r != -1)
324326
pos += r;
325327
}
326328
if (pos != _conf.length()) {

apps/clicky/src/dialogs.cc

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ static void on_view_diagram_toggled(GtkCheckMenuItem *check, gpointer user_data)
103103
static void on_toolbar_run_activate(GtkToolButton *, gpointer user_data)
104104
{
105105
wmain *rw = reinterpret_cast<wmain *>(user_data);
106+
rw->buffer_to_config();
106107
rw->run(ErrorHandler::default_handler());
107108
}
108109

@@ -423,6 +424,16 @@ void wmain::on_open_kernel()
423424
}
424425
}
425426

427+
void wmain::buffer_to_config()
428+
{
429+
GtkTextIter i1, i2;
430+
gtk_text_buffer_get_start_iter(_config_buffer, &i1);
431+
gtk_text_buffer_get_end_iter(_config_buffer, &i2);
432+
char *data = gtk_text_buffer_get_text(_config_buffer, &i1, &i2, FALSE);
433+
set_config(String(data), true);
434+
g_free(data);
435+
}
436+
426437
void wmain::on_save_file(bool save_as)
427438
{
428439
if (save_as || !_savefile) {
@@ -455,21 +466,17 @@ void wmain::on_save_file(bool save_as)
455466
}
456467
}
457468

458-
GtkTextIter i1, i2;
459-
gtk_text_buffer_get_start_iter(_config_buffer, &i1);
460-
gtk_text_buffer_get_end_iter(_config_buffer, &i2);
461-
char *data = gtk_text_buffer_get_text(_config_buffer, &i1, &i2, FALSE);
469+
buffer_to_config();
462470

463471
GError *err = NULL;
464-
if (!g_file_set_contents(_savefile.c_str(), data, -1, &err)) {
472+
String conf = config();
473+
if (!g_file_set_contents(_savefile.c_str(), conf.data(), conf.length(), &err)) {
465474
GatherErrorHandler gerrh(true);
466475
gerrh.error("Save error: %s", err->message);
467476
gerrh.run_dialog(GTK_WINDOW(_window));
468477
g_error_free(err);
469478
} else
470479
set_save_file(_savefile, true);
471-
472-
g_free(data);
473480
}
474481

475482
void wmain::on_export_diagram()

apps/clicky/src/wmain.hh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ class wmain : public crouter { public:
7878
void on_driver_changed();
7979
void config_set_driver(int driver);
8080
void config_check(bool install);
81+
void buffer_to_config();
8182

8283
const String &element_showing() const {
8384
return _eview_name;

0 commit comments

Comments
 (0)