Added filechooser and rules button interaction for logrotate window

pull/46/head
parent b74e308983
commit fa048f8067

@ -8,6 +8,7 @@
<file>ubl-settings-logging-logrotate.glade</file> <file>ubl-settings-logging-logrotate.glade</file>
<file>ubl-settings-logging-journald.glade</file> <file>ubl-settings-logging-journald.glade</file>
<file>ubl-settings-logging-rules.glade</file> <file>ubl-settings-logging-rules.glade</file>
<file>ubl-settings-logging-filechooser.glade</file>
<file>ubl-settings-logging-logrotate-table.glade</file> <file>ubl-settings-logging-logrotate-table.glade</file>
</gresource> </gresource>
<gresource prefix="/com/ublinux/css"> <gresource prefix="/com/ublinux/css">

@ -43,6 +43,7 @@ set(DEPENDFILES
../ubl-settings-logging-journald.glade ../ubl-settings-logging-journald.glade
../ubl-settings-logging-logrotate.glade ../ubl-settings-logging-logrotate.glade
../ubl-settings-logging-logrotate-table.glade ../ubl-settings-logging-logrotate-table.glade
../ubl-settings-logging-filechooser.glade
../gresource.xml ../gresource.xml
../ubl-settings-logging-banner.png ../ubl-settings-logging-banner.png
../ubl-settings-logging.css ../ubl-settings-logging.css

@ -406,6 +406,157 @@ void on_file_amount_checked(GtkToggleButton *self, logrotate_configure_window *w
} }
} }
void on_rules_accept(GtkWidget *self, dictionary *dict){
GtkEntry *entry = yon_dictionary_get_data(dict->first,GtkEntry*);
logrotate_rules_window *window = yon_dictionary_get_data(dict->first->next,logrotate_rules_window*);
int owner_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UserReadCheck));
int owner_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UserWriteCheck));
int owner_exec = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UserExecuteCheck));
int group_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupReadCheck));
int group_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupWriteCheck));
int group_exec = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupExecuteCheck));
int public_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PublicReadCheck));
int public_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PublicWriteCheck));
int public_exec = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PublicExecuteCheck));
int owner = owner_read&&owner_write&&owner_exec? 7 : \
owner_read&&!owner_write&&!owner_exec ? 4 : \
!owner_read&&owner_write&&!owner_exec ? 2 : \
!owner_read&&!owner_write&&owner_exec ? 1 : \
owner_read&&owner_write&&!owner_exec ? 6 : \
owner_read&&!owner_write&&owner_exec ? 5 : \
!owner_read&&owner_write&&owner_exec ? 3 : \
0;
int group = group_read&&group_write&&group_exec? 7 : \
group_read&&!group_write&&!group_exec ? 4 : \
!group_read&&group_write&&!group_exec ? 2 : \
!group_read&&!group_write&&group_exec ? 1 : \
group_read&&group_write&&!group_exec ? 6 : \
group_read&&!group_write&&group_exec ? 5 : \
!group_read&&group_write&&group_exec ? 3 : \
0;
int public = public_read&&public_write&&public_exec? 7 : \
public_read&&!public_write&&!public_exec ? 4 : \
!public_read&&public_write&&!public_exec ? 2 : \
!public_read&&!public_write&&public_exec ? 1 : \
public_read&&public_write&&!public_exec ? 6 : \
public_read&&!public_write&&public_exec ? 5 : \
!public_read&&public_write&&public_exec ? 3 : \
0;
gtk_entry_set_text(entry,yon_char_unite(yon_char_from_int(owner),yon_char_from_int(group),yon_char_from_int(public),NULL));
gtk_widget_destroy(window->Window);
}
void on_rules_update(GtkWidget *self, logrotate_rules_window *window){
int owner_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UserReadCheck));
int owner_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UserWriteCheck));
int owner_exec = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UserExecuteCheck));
int group_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupReadCheck));
int group_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupWriteCheck));
int group_exec = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupExecuteCheck));
int public_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PublicReadCheck));
int public_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PublicWriteCheck));
int public_exec = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PublicExecuteCheck));
int owner = owner_read&&owner_write&&owner_exec? 7 : \
owner_read&&!owner_write&&!owner_exec ? 4 : \
!owner_read&&owner_write&&!owner_exec ? 2 : \
!owner_read&&!owner_write&&owner_exec ? 1 : \
owner_read&&owner_write&&!owner_exec ? 6 : \
owner_read&&!owner_write&&owner_exec ? 5 : \
!owner_read&&owner_write&&owner_exec ? 3 : \
0;
int group = group_read&&group_write&&group_exec? 7 : \
group_read&&!group_write&&!group_exec ? 4 : \
!group_read&&group_write&&!group_exec ? 2 : \
!group_read&&!group_write&&group_exec ? 1 : \
group_read&&group_write&&!group_exec ? 6 : \
group_read&&!group_write&&group_exec ? 5 : \
!group_read&&group_write&&group_exec ? 3 : \
0;
int public = public_read&&public_write&&public_exec? 7 : \
public_read&&!public_write&&!public_exec ? 4 : \
!public_read&&public_write&&!public_exec ? 2 : \
!public_read&&!public_write&&public_exec ? 1 : \
public_read&&public_write&&!public_exec ? 6 : \
public_read&&!public_write&&public_exec ? 5 : \
!public_read&&public_write&&public_exec ? 3 : \
0;
gtk_entry_set_text(GTK_ENTRY(window->FinalEntry),yon_char_unite(yon_char_from_int(owner),yon_char_from_int(group),yon_char_from_int(public),NULL));
}
void on_rules_open(GtkWidget *self,GtkEntry *entry){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_rules_path);
logrotate_rules_window *window = malloc(sizeof(logrotate_rules_window));
window->Window=yon_gtk_builder_get_widget(builder,"MainWindow");
window->UserReadCheck=yon_gtk_builder_get_widget(builder,"UserReadCheck");
window->UserWriteCheck=yon_gtk_builder_get_widget(builder,"UserWriteCheck");
window->UserExecuteCheck=yon_gtk_builder_get_widget(builder,"UserExecuteCheck");
window->GroupReadCheck=yon_gtk_builder_get_widget(builder,"GroupReadCheck");
window->GroupWriteCheck=yon_gtk_builder_get_widget(builder,"GroupWriteCheck");
window->GroupExecuteCheck=yon_gtk_builder_get_widget(builder,"GroupExecuteCheck");
window->PublicReadCheck=yon_gtk_builder_get_widget(builder,"PublicReadCheck");
window->PublicWriteCheck=yon_gtk_builder_get_widget(builder,"PublicWriteCheck");
window->PublicExecuteCheck=yon_gtk_builder_get_widget(builder,"PublicExecuteCheck");
window->FinalEntry=yon_gtk_builder_get_widget(builder,"FinalEntry");
window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton");
window->SaveButton=yon_gtk_builder_get_widget(builder,"SaveButton");
gtk_window_set_title(GTK_WINDOW(window->Window),TITLE_LABEL);
dictionary *dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"entry",entry);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL);
g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_rules_accept),dict);
g_signal_connect(G_OBJECT(window->UserReadCheck),"toggled",G_CALLBACK(on_rules_update),window);
g_signal_connect(G_OBJECT(window->UserWriteCheck),"toggled",G_CALLBACK(on_rules_update),window);
g_signal_connect(G_OBJECT(window->UserExecuteCheck),"toggled",G_CALLBACK(on_rules_update),window);
g_signal_connect(G_OBJECT(window->GroupReadCheck),"toggled",G_CALLBACK(on_rules_update),window);
g_signal_connect(G_OBJECT(window->GroupWriteCheck),"toggled",G_CALLBACK(on_rules_update),window);
g_signal_connect(G_OBJECT(window->GroupExecuteCheck),"toggled",G_CALLBACK(on_rules_update),window);
g_signal_connect(G_OBJECT(window->PublicReadCheck),"toggled",G_CALLBACK(on_rules_update),window);
g_signal_connect(G_OBJECT(window->PublicWriteCheck),"toggled",G_CALLBACK(on_rules_update),window);
g_signal_connect(G_OBJECT(window->PublicExecuteCheck),"toggled",G_CALLBACK(on_rules_update),window);
gtk_widget_show(window->Window);
}
void on_filechooser_mode_switch(GtkWidget *self, logrotate_filechooser_window *window){
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->FileOrDirCheck))){
gtk_file_chooser_set_action(GTK_FILE_CHOOSER(window->FileChooser),GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
}
gtk_file_chooser_set_action(GTK_FILE_CHOOSER(window->FileChooser),GTK_FILE_CHOOSER_ACTION_OPEN);
}
void on_filechooser_save(GtkWidget *self, dictionary *dict){
logrotate_configure_window *window = yon_dictionary_get_data(dict->first,logrotate_configure_window*);
logrotate_filechooser_window *dialog = yon_dictionary_get_data(dict->first->next,logrotate_filechooser_window*);
char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog->FileChooser));
gtk_entry_set_text(GTK_ENTRY(window->FileAmountEntry),filename);
gtk_widget_destroy(dialog->FileChooser);
}
void on_filechooser_open(GtkWidget *self, logrotate_configure_window *window){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_filechooser_path);
logrotate_filechooser_window *dialog = malloc(sizeof(logrotate_filechooser_window));
dialog->FileChooser = yon_gtk_builder_get_widget(builder,"FileChooser");
dialog->FileOrDirCheck = yon_gtk_builder_get_widget(builder,"FileOrDirCheck");
dialog->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
dialog->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
dictionary *dict = NULL;
gtk_window_set_title(GTK_WINDOW(dialog->FileChooser),TITLE_LABEL);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
yon_dictionary_add_or_create_if_exists_with_data(dict,"dialog",dialog);
g_signal_connect(G_OBJECT(dialog->FileOrDirCheck),"toggled",G_CALLBACK(on_filechooser_mode_switch),dialog);
g_signal_connect(G_OBJECT(dialog->CancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL);
g_signal_connect(G_OBJECT(dialog->AcceptButton),"clicked",G_CALLBACK(on_filechooser_save),dict);
gtk_widget_show(dialog->FileChooser);
}
void on_logrotate_save(GtkWidget *self, dictionary *dict){ void on_logrotate_save(GtkWidget *self, dictionary *dict){
logrotate_window *dialog = yon_dictionary_get_data(dict->first,logrotate_window*); logrotate_window *dialog = yon_dictionary_get_data(dict->first,logrotate_window*);
logrotate_configure_window *window = yon_dictionary_get_data(dict->first->next,logrotate_configure_window*); logrotate_configure_window *window = yon_dictionary_get_data(dict->first->next,logrotate_configure_window*);
@ -753,6 +904,11 @@ logrotate_configure_window *yon_logrotate_window_new(char *paths, logrotate_wind
g_signal_connect(G_OBJECT(window->EmailCombo),"changed",G_CALLBACK(on_combo_activate_first),window->EmailEntry); g_signal_connect(G_OBJECT(window->EmailCombo),"changed",G_CALLBACK(on_combo_activate_first),window->EmailEntry);
g_signal_connect(G_OBJECT(window->EmailCombo),"changed",G_CALLBACK(on_combo_activate_first),window->EmailContentsCombo); g_signal_connect(G_OBJECT(window->EmailCombo),"changed",G_CALLBACK(on_combo_activate_first),window->EmailContentsCombo);
g_signal_connect(G_OBJECT(window->FileAmountButton),"clicked",G_CALLBACK(on_filechooser_open),window);
g_signal_connect(G_OBJECT(window->CreateLogButton),"clicked",G_CALLBACK(on_rules_open),window->CreateLogEntry);
int usize=0; int usize=0;
config_str users = yon_ubl_get_all_users(&usize); config_str users = yon_ubl_get_all_users(&usize);
yon_gtk_combo_box_fill(window->CreateLogUserCombo,users,usize); yon_gtk_combo_box_fill(window->CreateLogUserCombo,users,usize);

@ -25,6 +25,8 @@
#define glade_journald_path "/com/ublinux/ui/ubl-settings-logging-journald.glade" #define glade_journald_path "/com/ublinux/ui/ubl-settings-logging-journald.glade"
#define glade_logrotate_path "/com/ublinux/ui/ubl-settings-logging-logrotate.glade" #define glade_logrotate_path "/com/ublinux/ui/ubl-settings-logging-logrotate.glade"
#define glade_logrotate_table_path "/com/ublinux/ui/ubl-settings-logging-logrotate-table.glade" #define glade_logrotate_table_path "/com/ublinux/ui/ubl-settings-logging-logrotate-table.glade"
#define glade_rules_path "/com/ublinux/ui/ubl-settings-logging-rules.glade"
#define glade_filechooser_path "/com/ublinux/ui/ubl-settings-logging-filechooser.glade"
#define banner_path "/com/ublinux/images/ubl-settings-logging-banner.png" #define banner_path "/com/ublinux/images/ubl-settings-logging-banner.png"
#define CssPath "/com/ublinux/css/ubl-settings-logging.css" #define CssPath "/com/ublinux/css/ubl-settings-logging.css"
#define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL) #define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL)
@ -204,12 +206,26 @@ char *journal_paths;
typedef struct { typedef struct {
GtkWidget *Window; GtkWidget *Window;
GtkWidget *MainTree; GtkWidget *UserReadCheck;
GtkWidget *ConfiguraButton; GtkWidget *UserWriteCheck;
GtkWidget *UserExecuteCheck;
GtkWidget *GroupReadCheck;
GtkWidget *GroupWriteCheck;
GtkWidget *GroupExecuteCheck;
GtkWidget *PublicReadCheck;
GtkWidget *PublicWriteCheck;
GtkWidget *PublicExecuteCheck;
GtkWidget *FinalEntry;
GtkWidget *CancelButton; GtkWidget *CancelButton;
GtkWidget *SaveButton; GtkWidget *SaveButton;
GtkListStore *list; } logrotate_rules_window;
} logrotate_tab_window;
typedef struct {
GtkWidget *FileChooser;
GtkWidget *FileOrDirCheck;
GtkWidget *CancelButton;
GtkWidget *AcceptButton;
} logrotate_filechooser_window;
typedef struct { typedef struct {
GtkWidget *Window; GtkWidget *Window;

@ -16,6 +16,7 @@
<property name="width-request">800</property> <property name="width-request">800</property>
<property name="height-request">600</property> <property name="height-request">600</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-logging</property> <property name="icon-name">com.ublinux.ubl-settings-logging</property>
<property name="type-hint">dialog</property> <property name="type-hint">dialog</property>
<property name="has-resize-grip">True</property> <property name="has-resize-grip">True</property>

@ -12,328 +12,342 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="icon-name">emblem-ok-symbolic</property> <property name="icon-name">emblem-ok-symbolic</property>
</object> </object>
<object class="GtkWindow" id="MainWindow"> <object class="GtkDialog" id="MainWindow">
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-logging</property> <property name="icon-name">com.ublinux.ubl-settings-logging</property>
<child> <property name="type-hint">dialog</property>
<object class="GtkBox" id="plugBox"> <child internal-child="vbox">
<property name="visible">True</property> <object class="GtkBox">
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">5</property> <property name="spacing">2</property>
<child> <child internal-child="action_area">
<object class="GtkFrame"> <object class="GtkButtonBox">
<property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label-xalign">0.019999999552965164</property> <property name="layout-style">end</property>
<property name="shadow-type">in</property>
<child> <child>
<object class="GtkAlignment"> <object class="GtkButton" id="CancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">True</property>
<property name="bottom-padding">5</property> <property name="receives-default">True</property>
<property name="left-padding">5</property> <property name="image">image1</property>
<property name="right-padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="UserReadCheck">
<property name="label" translatable="yes">Read</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="UserWriteCheck">
<property name="label" translatable="yes">Write</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="UserExecuteCheck">
<property name="label" translatable="yes">Execute</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child type="label"> <child>
<object class="GtkLabel"> <object class="GtkButton" id="SaveButton">
<property name="label" translatable="yes">Accept</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">True</property>
<property name="label" translatable="yes">Owner rules</property> <property name="receives-default">True</property>
<property name="image">image2</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">False</property>
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkFrame"> <object class="GtkBox" id="plugBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label-xalign">0.019999999552965164</property> <property name="margin-start">5</property>
<property name="shadow-type">in</property> <property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child> <child>
<object class="GtkAlignment"> <object class="GtkFrame">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="bottom-padding">5</property> <property name="label-xalign">0.019999999552965164</property>
<property name="left-padding">5</property> <property name="shadow-type">in</property>
<property name="right-padding">5</property>
<child> <child>
<object class="GtkBox"> <object class="GtkAlignment">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="spacing">5</property> <property name="bottom-padding">5</property>
<property name="left-padding">5</property>
<property name="right-padding">5</property>
<child> <child>
<object class="GtkCheckButton" id="GroupReadCheck"> <object class="GtkBox">
<property name="label" translatable="yes">Read</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
<property name="receives-default">False</property> <property name="spacing">5</property>
<property name="draw-indicator">True</property> <child>
<object class="GtkCheckButton" id="UserReadCheck">
<property name="label" translatable="yes">Read</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="UserWriteCheck">
<property name="label" translatable="yes">Write</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="UserExecuteCheck">
<property name="label" translatable="yes">Execute</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="GroupWriteCheck">
<property name="label" translatable="yes">Write</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="GroupExecuteCheck">
<property name="label" translatable="yes">Execute</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child> </child>
</object> </object>
</child> </child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Owner rules</property>
</object>
</child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Group rules</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label-xalign">0.019999999552965164</property>
<property name="shadow-type">in</property>
<child> <child>
<object class="GtkAlignment"> <object class="GtkFrame">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="bottom-padding">5</property> <property name="label-xalign">0.019999999552965164</property>
<property name="left-padding">5</property> <property name="shadow-type">in</property>
<property name="right-padding">5</property>
<child> <child>
<object class="GtkBox"> <object class="GtkAlignment">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="spacing">5</property> <property name="bottom-padding">5</property>
<child> <property name="left-padding">5</property>
<object class="GtkCheckButton" id="PublicReadCheck"> <property name="right-padding">5</property>
<property name="label" translatable="yes">Read</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="PublicWriteCheck">
<property name="label" translatable="yes">Write</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child> <child>
<object class="GtkCheckButton" id="PublicExecuteCheck"> <object class="GtkBox">
<property name="label" translatable="yes">Execute</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
<property name="receives-default">False</property> <property name="spacing">5</property>
<property name="draw-indicator">True</property> <child>
<object class="GtkCheckButton" id="GroupReadCheck">
<property name="label" translatable="yes">Read</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="GroupWriteCheck">
<property name="label" translatable="yes">Write</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="GroupExecuteCheck">
<property name="label" translatable="yes">Execute</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child> </child>
</object> </object>
</child> </child>
</object> <child type="label">
</child> <object class="GtkLabel">
<child type="label"> <property name="visible">True</property>
<object class="GtkLabel"> <property name="can-focus">False</property>
<property name="visible">True</property> <property name="label" translatable="yes">Group rules</property>
<property name="can-focus">False</property> </object>
<property name="label" translatable="yes">Public rules</property> </child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Value:</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="FinalEntry">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">end</property>
<property name="spacing">5</property>
<child> <child>
<object class="GtkButton" id="CancelButton"> <object class="GtkFrame">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
<property name="receives-default">True</property> <property name="label-xalign">0.019999999552965164</property>
<property name="image">image1</property> <property name="shadow-type">in</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="bottom-padding">5</property>
<property name="left-padding">5</property>
<property name="right-padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="PublicReadCheck">
<property name="label" translatable="yes">Read</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="PublicWriteCheck">
<property name="label" translatable="yes">Write</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="PublicExecuteCheck">
<property name="label" translatable="yes">Execute</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Public rules</property>
</object>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">0</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkButton" id="SaveButton"> <object class="GtkBox">
<property name="label" translatable="yes">Accept</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
<property name="receives-default">True</property> <property name="spacing">5</property>
<property name="image">image2</property> <child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Value:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="FinalEntry">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="max-length">3</property>
<property name="width-chars">3</property>
<property name="input-purpose">digits</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">3</property>
</packing> </packing>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="pack-type">end</property> <property name="position">1</property>
<property name="position">4</property>
</packing> </packing>
</child> </child>
</object> </object>

@ -946,10 +946,8 @@ translated and supported by community.</property>
</child> </child>
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="fixed-width">50</property> <property name="fixed-width">30</property>
<property name="min-width">50</property>
<property name="title" translatable="yes">Status</property> <property name="title" translatable="yes">Status</property>
<child> <child>
<object class="GtkCellRendererToggle"/> <object class="GtkCellRendererToggle"/>
@ -961,10 +959,8 @@ translated and supported by community.</property>
</child> </child>
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="fixed-width">70</property> <property name="fixed-width">30</property>
<property name="min-width">70</property>
<property name="title" translatable="yes">Autostart</property> <property name="title" translatable="yes">Autostart</property>
<child> <child>
<object class="GtkCellRendererToggle"/> <object class="GtkCellRendererToggle"/>

Loading…
Cancel
Save