static void browseForFile(WMWidget * self, void *clientData) { _Panel *panel = (_Panel *) clientData; WMFilePanel *filePanel; char *text, *oldprog, *newprog; filePanel = WMGetOpenPanel(WMWidgetScreen(self)); text = WMGetTextFieldText(panel->commandT); oldprog = wtrimspace(text); wfree(text); if (oldprog[0] == 0 || oldprog[0] != '/') { wfree(oldprog); oldprog = wstrdup("/"); } else { char *ptr = oldprog; while (*ptr && !isspace(*ptr)) ptr++; *ptr = 0; } WMSetFilePanelCanChooseDirectories(filePanel, False); if (WMRunModalFilePanelForDirectory(filePanel, panel->parent, oldprog, _("Select Program"), NULL) == True) { newprog = WMGetFilePanelFileName(filePanel); WMSetTextFieldText(panel->commandT, newprog); updateMenuItem(panel, panel->currentItem, panel->commandT); wfree(newprog); } wfree(oldprog); }
void wWorkspaceRename(WScreen *scr, int workspace, const char *name) { char buf[MAX_WORKSPACENAME_WIDTH + 1]; char *tmp; if (workspace >= w_global.workspace.count) return; /* trim white spaces */ tmp = wtrimspace(name); if (strlen(tmp) == 0) { snprintf(buf, sizeof(buf), _("Workspace %i"), workspace + 1); } else { strncpy(buf, tmp, MAX_WORKSPACENAME_WIDTH); } buf[MAX_WORKSPACENAME_WIDTH] = 0; wfree(tmp); /* update workspace */ wfree(w_global.workspace.array[workspace]->name); w_global.workspace.array[workspace]->name = wstrdup(buf); if (w_global.clip.ws_menu) { if (strcmp(w_global.clip.ws_menu->entries[workspace + MC_WORKSPACE1]->text, buf) != 0) { wfree(w_global.clip.ws_menu->entries[workspace + MC_WORKSPACE1]->text); w_global.clip.ws_menu->entries[workspace + MC_WORKSPACE1]->text = wstrdup(buf); wMenuRealize(w_global.clip.ws_menu); } } if (w_global.workspace.menu) { if (strcmp(w_global.workspace.menu->entries[workspace + MC_WORKSPACE1]->text, buf) != 0) { wfree(w_global.workspace.menu->entries[workspace + MC_WORKSPACE1]->text); w_global.workspace.menu->entries[workspace + MC_WORKSPACE1]->text = wstrdup(buf); wMenuRealize(w_global.workspace.menu); } } if (w_global.clip.icon) wClipIconPaint(); WMPostNotificationName(WMNWorkspaceNameChanged, scr, (void *)(uintptr_t) workspace); }
static ItemData *parseCommand(WMPropList * item) { ItemData *data = wmalloc(sizeof(ItemData)); WMPropList *p; char *command = NULL; char *parameter = NULL; char *shortcut = NULL; int i = 1; p = WMGetFromPLArray(item, i++); command = WMGetFromPLString(p); if (strcmp(command, "SHORTCUT") == 0) { p = WMGetFromPLArray(item, i++); shortcut = WMGetFromPLString(p); p = WMGetFromPLArray(item, i++); command = WMGetFromPLString(p); } p = WMGetFromPLArray(item, i++); if (p) parameter = WMGetFromPLString(p); if (strcmp(command, "EXEC") == 0 || strcmp(command, "SHEXEC") == 0) { data->type = ExecInfo; data->param.exec.command = wstrdup(parameter); if (shortcut) data->param.exec.shortcut = wstrdup(shortcut); } else if (strcmp(command, "OPEN_MENU") == 0) { char *p; /* * dir menu, menu file * dir WITH * |pipe */ p = parameter; while (isspace(*p) && *p) p++; if (*p == '|') { if (*(p + 1) == '|') { p++; data->param.pipe.cached = 0; } else { data->param.pipe.cached = 1; } data->type = PipeInfo; data->param.pipe.command = wtrimspace(p + 1); } else { char *s; p = wstrdup(p); s = strstr(p, "WITH"); if (s) { char **tokens; char **ctokens; int tokn; int i, j; data->type = DirectoryInfo; *s = '\0'; s += 5; while (*s && isspace(*s)) s++; data->param.directory.command = wstrdup(s); wtokensplit(p, &tokens, &tokn); wfree(p); ctokens = wmalloc(sizeof(char *) * tokn); for (i = 0, j = 0; i < tokn; i++) { if (strcmp(tokens[i], "-noext") == 0) { data->param.directory.stripExt = 1; } else { ctokens[j++] = tokens[i]; } } data->param.directory.directory = wtokenjoin(ctokens, j); wfree(ctokens); wtokenfree(tokens, tokn); } else { data->type = ExternalInfo; data->param.external.path = p; } } } else if (strcmp(command, "OPEN_PLMENU") == 0) { char *p; p = parameter; while (isspace(*p) && *p) p++; if (*p == '|') { if (*(p + 1) == '|') { p++; data->param.pipe.cached = 0; } else { data->param.pipe.cached = 1; } data->type = PLPipeInfo; data->param.pipe.command = wtrimspace(p + 1); } } else if (strcmp(command, "WORKSPACE_MENU") == 0) { data->type = WSMenuInfo; } else if (strcmp(command, "WINDOWS_MENU") == 0) { data->type = WWindowListInfo; } else { int cmd; if (strcmp(command, "ARRANGE_ICONS") == 0) { cmd = 0; } else if (strcmp(command, "HIDE_OTHERS") == 0) { cmd = 1; } else if (strcmp(command, "SHOW_ALL") == 0) { cmd = 2; } else if (strcmp(command, "EXIT") == 0) { cmd = 3; } else if (strcmp(command, "SHUTDOWN") == 0) { cmd = 4; } else if (strcmp(command, "RESTART") == 0) { if (parameter) { cmd = 6; } else { cmd = 5; } } else if (strcmp(command, "SAVE_SESSION") == 0) { cmd = 7; } else if (strcmp(command, "CLEAR_SESSION") == 0) { cmd = 8; } else if (strcmp(command, "REFRESH") == 0) { cmd = 9; } else if (strcmp(command, "INFO_PANEL") == 0) { cmd = 10; } else if (strcmp(command, "LEGAL_PANEL") == 0) { cmd = 11; } else { wwarning(_("unknown command '%s' in menu"), command); wfree(data); return NULL; } data->type = CommandInfo; data->param.command.command = cmd; if (shortcut) data->param.command.shortcut = wstrdup(shortcut); if (parameter) data->param.command.parameter = wstrdup(parameter); } return data; }